String ConvertTypeToString(TypeInfo &ti, TypeInfo *subType=NULL) { if(!ti.name || !ti.name[0]) return String() << TEXT("void"); else if(ti.type == DataType_Object) { Class *cls = FindClass(ti.name); assert(cls); while(cls->IsPureScriptClass()) cls = cls->GetParent(); return String() << cls->GetName() << TEXT("*"); } else if(ti.type == DataType_String) return String() << TEXT("String"); else if(ti.type == DataType_List) return String() << TEXT("List<") << ConvertTypeToString(*subType) << TEXT(">"); else if(ti.type == DataType_Type) return String() << TEXT("TypeDataInfo"); else if(scmp(ti.name, TEXT("bool")) == 0) return String() << TEXT("BOOL"); else if(scmp(ti.name, TEXT("icolor")) == 0) return String() << TEXT("DWORD"); else if(scmp(ti.name, TEXT("handle")) == 0) return String() << TEXT("HANDLE"); else return String() << ti.name; }