diff --git a/src/Tools/ScriptHeadersExporter.cpp b/src/Tools/ScriptHeadersExporter.cpp index cef41fa..b85d34b 100644 --- a/src/Tools/ScriptHeadersExporter.cpp +++ b/src/Tools/ScriptHeadersExporter.cpp @@ -18,10 +18,9 @@ static void PrintObjectTypeDef(asITypeInfo* type, const std::filesystem::path& d std::fstream fs; fs.open((dir / name).concat(".astypedef"), std::fstream::out); - if ((type->GetFlags() & asOBJ_VALUE) != 0 && (type->GetFlags() & asOBJ_ASHANDLE) == 0){ + if ((type->GetFlags() & asOBJ_VALUE) != 0 && (type->GetFlags() & asOBJ_ASHANDLE) == 0) { fs << "valuetype"; - } - else{ + } else { fs << "type"; } @@ -117,24 +116,27 @@ static void PrintScriptObject(asITypeInfo* type, const std::filesystem::path& di auto name = std::string(method->GetName()); if (name == "opAssign") continue; + if (name == "GetOwner") { + fs << "\tref@ __owner;" << std::endl << std::endl; + } auto decl = std::string(method->GetDeclaration(false, true, true)); replace(decl, "&in", " &in"); replace(decl, "&out", " &out"); + replace(decl, "ref", "ref@"); fs << "\t" << decl; - if (isAbstract){ - if (method->GetReturnTypeId() == 0){ + if (isAbstract) { + if (method->GetReturnTypeId() == 0) { fs << "{};" << std::endl; - } - else{ - if (method->GetReturnTypeId() == asTYPEID_BOOL){ + } else { + if (name == "GetOwner") { + fs << "{ return __owner; };" << std::endl; + } else if (method->GetReturnTypeId() == asTYPEID_BOOL) { fs << "{ return false; };" << std::endl; - } - else{ + } else { fs << "{ return 0; };" << std::endl; } } - } - else + } else fs << ";" << std::endl; } } @@ -187,7 +189,7 @@ void ScriptHeadersExporter::Export(const std::string& outPath) { } auto globalFuncs = engine->GetGlobalFunctionCount(); - if (globalFuncs > 0){ + if (globalFuncs > 0) { std::fstream fs; fs.open((dir / "globals").concat(".astypedef"), std::fstream::out); @@ -196,5 +198,4 @@ void ScriptHeadersExporter::Export(const std::string& outPath) { fs << "func " << func->GetDeclaration(false, false, true) << ";" << std::endl; } } - } \ No newline at end of file