Mono.Debugger.Backend.DwarfFrameReader.ReadEncodedValue C# (CSharp) Method

ReadEncodedValue() private method

private ReadEncodedValue ( DwarfBinaryReader reader, int encoding ) : long
reader DwarfBinaryReader
encoding int
return long
        private long ReadEncodedValue(DwarfBinaryReader reader, int encoding)
        {
            long base_addr;
            switch (encoding & 0x70) {
            case 0:
                base_addr = 0;
                break;
            case (byte) DW_EH_PE.pcrel:
                base_addr = vma + reader.Position;
                break;
            default:
                throw new DwarfException (
                    reader.Bfd, "Unknown encoding `{0:x}' in CIE",
                    encoding);
            }

            long value;
            switch (encoding & 0x0f) {
            case (byte) DW_EH_PE.udata4:
                value = reader.ReadUInt32 ();
                break;
            case (byte) DW_EH_PE.sdata4:
                value = reader.ReadInt32 ();
                break;
            default:
                throw new DwarfException (
                    reader.Bfd, "Unknown encoding `{0:x}' in CIE",
                    encoding);
            }

            return base_addr + value;
        }