summaryrefslogtreecommitdiff
path: root/src/script/api/squirrel_export.awk
diff options
context:
space:
mode:
Diffstat (limited to 'src/script/api/squirrel_export.awk')
-rw-r--r--src/script/api/squirrel_export.awk15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/script/api/squirrel_export.awk b/src/script/api/squirrel_export.awk
index ed190deaf..cb9774db7 100644
--- a/src/script/api/squirrel_export.awk
+++ b/src/script/api/squirrel_export.awk
@@ -35,6 +35,17 @@ function dump_class_templates(name)
print " template <> inline const " name " &GetParam(ForceType<const " name " &>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(" name " *)instance; }"
if (name == "ScriptEvent") {
print " template <> inline int Return<" name " *>(HSQUIRRELVM vm, " name " *res) { if (res == NULL) { sq_pushnull(vm); return 1; } Squirrel::CreateClassInstanceVM(vm, \"" realname "\", res, NULL, DefSQDestructorCallback<" name ">, true); return 1; }"
+ } else if (name == "ScriptText") {
+ print ""
+ print " template <> inline Text *GetParam(ForceType<Text *>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) {"
+ print " if (sq_gettype(vm, index) == OT_INSTANCE) {"
+ print " return GetParam(ForceType<ScriptText *>(), vm, index, ptr);"
+ print " }"
+ print " if (sq_gettype(vm, index) == OT_STRING) {"
+ print " return new RawText(GetParam(ForceType<const char *>(), vm, index, ptr));"
+ print " }"
+ print " return NULL;"
+ print " }"
} else {
print " template <> inline int Return<" name " *>(HSQUIRRELVM vm, " name " *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, \"" realname "\", res, NULL, DefSQDestructorCallback<" name ">, true); return 1; }"
}
@@ -324,7 +335,7 @@ BEGIN {
print "void SQ" api_cls "_Register(Squirrel *engine)"
print "{"
print " DefSQClass<" cls ", ST_" toupper(api) "> SQ" api_cls "(\"" api_cls "\");"
- if (super_cls == "ScriptObject" || super_cls == "AIAbstractList::Valuator") {
+ if (super_cls == "Text" || super_cls == "ScriptObject" || super_cls == "AIAbstractList::Valuator") {
print " SQ" api_cls ".PreRegister(engine);"
} else {
print " SQ" api_cls ".PreRegister(engine, \"" api_super_cls "\");"
@@ -516,6 +527,8 @@ BEGIN {
types = types "a"
} else if (match(params[len], "^struct Array")) {
types = types "a"
+ } else if (match(params[len], "^Text")) {
+ types = types "."
} else {
types = types "x"
}