예제 #1
0
        public static object ReadLeaf(LeImageReader rdr)
        {
            var b  = rdr.ReadByte();
            var lt = (LeafType)b;

            switch (lt)
            {
            default:
                throw new NotImplementedException($"CodeView leaf type {lt} {(int)lt:X2} not implemented yet.");

            case LeafType.Int8:
                return(rdr.ReadSByte());

            case LeafType.UInt16:
                return(rdr.ReadLeUInt16());

            case LeafType.ARRAY:
                return(ReadArray(rdr));

            case LeafType.INDEX:    // Type index
                return(rdr.ReadLeUInt16());

            case LeafType.LABEL:
                return(ReadLabel(rdr));

            case LeafType.LIST:
                return(ReadList(rdr));

            case LeafType.POINTER:
                return(ReadPointer(rdr));

            case LeafType.PROCEDURE:
                return(ReadProcedure(rdr));

            case LeafType.STRING:
                return(ReadString(rdr));

            case LeafType.STRUCTURE:
                return(ReadStructure(rdr));

            case LeafType.Nil:
            case LeafType.C_FAR:
            case LeafType.C_NEAR:
            case LeafType.FAR:
            case LeafType.NEAR:
            case LeafType.UNPACKED:
            case (LeafType)0x81:    //$REVIEW: void?
                return(lt);
            }
        }