+static OSGK_ScriptResult dpGlobal_create (OSGK_ScriptObjectCreateParams* params,
+ void** objTag)
+{
+ if (!osgk_browser_get_user_data (params->browser, USERDATAKEY_CL_GECKO_T, objTag))
+ return srFailed;
+ return srSuccess;
+}
+
+static OSGK_ScriptResult dpGlobal_query (void* objTag, void* methTag,
+ size_t numParams,
+ OSGK_ScriptVariant** params,
+ OSGK_ScriptVariant** returnVal)
+{
+ clgecko_t *instance = (clgecko_t *) objTag;
+ OSGK_ScriptVariant* strVal;
+ OSGK_ScriptResult result = srFailed;
+ prvm_prog_t * saveProg;
+
+ /* Can happen when created from console */
+ if (instance->ownerProg < 0) return srFailed;
+
+ /* Require exactly one param, for now */
+ if (numParams != 1) return srFailed;
+
+ strVal = osgk_variant_convert (params[0], svtString);
+ if (strVal == 0) return srFailed;
+
+ saveProg = prog;
+ PRVM_SetProg(instance->ownerProg);
+
+ if (prog->funcoffsets.Gecko_Query)
+ {
+ OSGK_String* paramStr, *resultStr;
+
+ if (!osgk_variant_get_string (strVal, ¶mStr)) return srFailed;
+ PRVM_G_INT(OFS_PARM0) = PRVM_SetTempString (instance->name);
+ PRVM_G_INT(OFS_PARM1) = PRVM_SetTempString (osgk_string_get (paramStr));
+ PRVM_ExecuteProgram(prog->funcoffsets.Gecko_Query,"Gecko_Query() required");
+ resultStr = osgk_string_create (PRVM_G_STRING (OFS_RETURN));
+ *returnVal = osgk_variant_create_string (cl_geckoembedding, resultStr);
+ osgk_release (resultStr);
+
+ result = srSuccess;
+ }
+
+ prog = saveProg;
+
+ return result;
+}
+