FromDiaSymbol() public static method

public static FromDiaSymbol ( IDiaSymbol sym ) : Offset
sym IDiaSymbol
return Offset
示例#1
0
        public CStruct TranslateStruct(IDiaSymbol sym)
        {
            IDiaEnumSymbols symbols;

            sym.findChildren(SymTagEnum.SymTagData, null, 0, out symbols);

            CStruct res        = new CStruct();
            Offset  lastOffset = Offset.Neg;

            foreach (IDiaSymbol subSym in symbols)
            {
                Offset thisOffset = Offset.FromDiaSymbol(subSym);
                if (thisOffset.IsLessThanOrEqualTo(lastOffset))
                {
                    symbols.Reset();
                    return(TranslateStruct2(symbols));
                }

                string name = subSym.name;
                CType  type = TranslateMember(subSym);
                res.Add(type, name, thisOffset);

                lastOffset = thisOffset;
            }

            return(res);
        }
示例#2
0
        public static Offset BottomOffsetFromDiaSymbol(IDiaSymbol symbol)
        {
            Offset obj = Offset.FromDiaSymbol(symbol);

            switch ((LocationTypeEnum)symbol.locationType)
            {
            case LocationTypeEnum.LocIsThisRel:
                obj._bytes += (int)symbol.type.length;
                break;

            case LocationTypeEnum.LocIsBitField:
                obj._bits += (int)symbol.length;
                obj.Normalize();
                break;
            }
            return(obj);
        }
示例#3
0
        public CUnion TranslateUnion(IDiaSymbol sym)
        {
            IDiaEnumSymbols symbols;

            sym.findChildren(SymTagEnum.SymTagData, null, 0, out symbols);

            CUnion res = new CUnion();

            foreach (IDiaSymbol subSym in symbols)
            {
                Offset thisOffset = Offset.FromDiaSymbol(subSym);
                if (!thisOffset.IsEqualTo(Offset.Zero))
                {
                    symbols.Reset();
                    return(TranslateUnion2(symbols));
                }

                string name = subSym.name;
                CType  type = TranslateMember(subSym);
                res.Add(type, name);
            }
            return(res);
        }