public string GetTypeNameFromSymbol(PdbSymbol type) { if (type == null) { return(""); } PdbSymbolTag tag = type.SymTag; string name = type.Name; if (name != null) { return(name); } if (tag == PdbSymbolTag.PointerType) { return(GetTypeNameFromSymbol(type.Type) + "*"); } else if (tag == PdbSymbolTag.BaseType) { ulong size = type.Length; PdbSymbolBaseType baseType = type.BaseType; switch (baseType) { case PdbSymbolBaseType.Char: return("char"); case PdbSymbolBaseType.WChar: return("char"); case PdbSymbolBaseType.Int: return(size == 2 ? "s16" : size == 4 ? "s32" : size == 8 ? "s64" : ""); case PdbSymbolBaseType.UInt: return(size == 2 ? "u16" : size == 4 ? "u32" : size == 8 ? "u64" : ""); case PdbSymbolBaseType.Float: return("float"); case PdbSymbolBaseType.Bool: return("bool"); case PdbSymbolBaseType.Long: return("s64"); case PdbSymbolBaseType.ULong: return("u64"); } return(""); } else if (tag == PdbSymbolTag.ArrayType) { } else if (tag == PdbSymbolTag.FunctionType) { } else if (tag == PdbSymbolTag.CustomType) { } return(""); }
public Type GetTypeFromSymbol(PdbSymbol type) { PdbSymbolTag tag = type.SymTag; if (tag == PdbSymbolTag.PointerType) { return(typeof(IntPtr)); } else if (tag == PdbSymbolTag.BaseType) { ulong size = type.Length; PdbSymbolBaseType baseType = type.BaseType; switch (baseType) { case PdbSymbolBaseType.Char: return(typeof(char)); case PdbSymbolBaseType.WChar: return(typeof(char)); case PdbSymbolBaseType.Int: return(size == 2 ? typeof(short) : size == 4 ? typeof(int) : size == 8 ? typeof(long) : null); case PdbSymbolBaseType.UInt: return(size == 2 ? typeof(ushort) : size == 4 ? typeof(uint) : size == 8 ? typeof(ulong) : null); case PdbSymbolBaseType.Float: return(typeof(float)); case PdbSymbolBaseType.Bool: return(typeof(bool)); case PdbSymbolBaseType.Long: return(typeof(long)); case PdbSymbolBaseType.ULong: return(typeof(ulong)); } return(null); } else if (tag == PdbSymbolTag.ArrayType) { } else if (tag == PdbSymbolTag.FunctionType) { } else if (tag == PdbSymbolTag.CustomType) { } return(null); }