This commit is contained in:
Zihan Chen
2017-01-24 22:32:35 -08:00
parent b51346dbf4
commit 738a47e605
8 changed files with 404 additions and 242 deletions
+50 -1
View File
@@ -20579,7 +20579,12 @@ namespace vl
FOREACH(ITypeDescriptor*, td, tds)
{
writer.WriteString(L"\t\t\tIMPL_CPP_TYPE_INFO(");
writer.WriteString(ConvertType(td));
WString type = ConvertType(td);
if (type.Length() > 2 && type.Sub(0, 2) == L"::")
{
type = type.Sub(2, type.Length() - 2);
}
writer.WriteString(type);
writer.WriteLine(L")");
}
writer.WriteLine(L"");
@@ -20648,6 +20653,50 @@ namespace vl
writer.WriteString(ConvertType(td));
writer.WriteLine(L")");
if (td->GetTypeDescriptorFlags() == TypeDescriptorFlags::Class)
{
auto methodGroup = td->GetConstructorGroup();
vint methodCount = methodGroup->GetMethodCount();
for (vint j = 0; j < methodCount; j++)
{
auto methodInfo = methodGroup->GetMethod(j);
vint parameterCount = methodInfo->GetParameterCount();
writer.WriteString(L"\t\t\t\tCLASS_MEMBER_CONSTRUCTOR(");
writer.WriteString(ConvertType(methodInfo->GetReturn()));
writer.WriteString(L"(");
for (vint k = 0; k < parameterCount; k++)
{
if (k > 0)
{
writer.WriteString(L", ");
}
writer.WriteString(ConvertArgumentType(methodInfo->GetParameter(k)->GetType()));
}
writer.WriteString(L")");
if (parameterCount > 0)
{
writer.WriteString(L", {");
for (vint k = 0; k < parameterCount; k++)
{
if (k > 0)
{
writer.WriteString(L" _");
}
writer.WriteString(L" L\"");
writer.WriteString(ConvertName(methodInfo->GetParameter(k)->GetName()));
writer.WriteString(L"\"");
}
writer.WriteLine(L" })");
}
else
{
writer.WriteLine(L", NO_PARAMETER)");
}
}
}
vint methodGroupCount = td->GetMethodGroupCount();
for (vint i = 0; i < methodGroupCount; i++)
{