Reko.Environments.Windows.MsMangledNameParser.ParsePointer C# (CSharp) Method

ParsePointer() public method

public ParsePointer ( List compoundArgs ) : SerializedType
compoundArgs List
return SerializedType
        public SerializedType ParsePointer(List<Argument_v1> compoundArgs)
        {
            int size = 4;       //$TODO: should follow platform pointer size, really.
            SerializedType type;
            if (PeekAndDiscard('E')) // 64-bit pointer
            {
                size = 8;
            }
            switch (str[i++])
            {
            case 'A': type = ParseDataTypeCode(new List<Argument_v1>()); break;       //$BUG: assumes 32-bitness
            case 'B': type = ParseDataTypeCode(new List<Argument_v1>()); break;       // const ptr
            case 'C': type = ParseDataTypeCode(new List<Argument_v1>()); break;       // volatile ptr
            case 'D': type = ParseDataTypeCode(new List<Argument_v1>()); break;       // const volatile ptr
            case '6': type = ParseFunctionTypeCode(); break;     // fn ptr
            case '8': return ParseMemberFunctionPointerCode(size, compoundArgs);
            default: Error("Unsupported pointer code 'P{0}'.", str[i - 1]); return null;
            }
            var pType = new PointerType_v1
            {
                DataType = type,
                PointerSize = size,
            };
            compoundArgs.Add(new Argument_v1 { Type = pType });
            return pType;
        }