private string ResolveType()

in SharpGen.Platform/CppParser.cs [1044:1081]


        private string ResolveType(string typeId)
        {
            var xType = _mapIdToXElement[typeId];

            while (true)
            {
                var name = xType.AttributeValue("name");
                var nextType = xType.AttributeValue("type");
                switch (xType.Name.LocalName)
                {
                    case CastXml.TagFundamentalType:
                        return ConvertFundamentalType(name);
                    case CastXml.TagClass:
                    case CastXml.TagEnumeration:
                    case CastXml.TagStruct:
                    case CastXml.TagUnion:
                        return name;
                    case CastXml.TagTypedef:
                        if (_boundTypes.Contains(name))
                        {
                            return name;
                        }
                        xType = _mapIdToXElement[nextType];
                        break;
                    case CastXml.TagPointerType:
                    case CastXml.TagArrayType:
                    case CastXml.TagReferenceType:
                    case CastXml.TagCvQualifiedType:
                        xType = _mapIdToXElement[nextType];
                        break;
                    case CastXml.TagFunctionType:
                        // TODO, handle different calling convention
                        return "__function__stdcall";
                    default:
                        throw new InvalidOperationException(string.Format(CultureInfo.InvariantCulture, "Unexpected tag type [{0}]", xType.Name.LocalName));
                }
            }
        }