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));
}
}
}