forked from Mirrors/openclonk
Remove unused C4ScriptFnDef::FunctionC4V
Also move C4AulDefFunc and C4ScriptFnDef to the same header the template helper classes are in. Like them, these classes are a mostly invisible implementation detail of the engine script functions.
parent
09a5247e9c
commit
9d30869e87
|
@ -2286,7 +2286,7 @@ void InitGameFunctionMap(C4AulScriptEngine *pEngine)
|
|||
}
|
||||
// add all def script funcs
|
||||
for (C4ScriptFnDef *pDef = &C4ScriptGameFnMap[0]; pDef->Identifier; pDef++)
|
||||
pEngine->AddFunc(pDef->Identifier, pDef);
|
||||
new C4AulDefFunc(pEngine, pDef);
|
||||
#define F(f) AddFunc(pEngine, #f, Fn##f)
|
||||
// AddFunc(pEngine, "SetSaturation", FnSetSaturation); //public: 0
|
||||
AddFunc(pEngine, "Smoke", FnSmoke);
|
||||
|
@ -2586,18 +2586,16 @@ C4ScriptConstDef C4ScriptGameConstMap[]=
|
|||
|
||||
C4ScriptFnDef C4ScriptGameFnMap[]=
|
||||
{
|
||||
{ "FindObject", 1, C4V_Object, { C4V_Array ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any}, FnFindObject },
|
||||
{ "FindObjects", 1, C4V_Array, { C4V_Array ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any}, FnFindObjects },
|
||||
{ "ObjectCount", 1, C4V_Int, { C4V_Array ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any}, FnObjectCount },
|
||||
{ "GameCall", 1, C4V_Any, { C4V_String ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any}, FnGameCall },
|
||||
{ "GameCallEx", 1, C4V_Any, { C4V_String ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any}, FnGameCallEx },
|
||||
{ "Call", 1, C4V_Any, { C4V_String ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any}, FnCall },
|
||||
{ "PlayerMessage", 1, C4V_Int, { C4V_Int ,C4V_String ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any}, FnPlayerMessage },
|
||||
{ "Message", 1, C4V_Bool, { C4V_String ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any}, FnMessage },
|
||||
{ "AddMessage", 1, C4V_Bool, { C4V_String ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any}, FnAddMessage },
|
||||
{ "EffectCall", 1, C4V_Any, { C4V_Object ,C4V_PropList,C4V_String ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any}, FnEffectCall },
|
||||
|
||||
{ "FindObject", 1, C4V_Object, { C4V_Array ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any}, 0, FnFindObject },
|
||||
{ "FindObjects", 1, C4V_Array, { C4V_Array ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any}, 0, FnFindObjects },
|
||||
{ "ObjectCount", 1, C4V_Int, { C4V_Array ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any}, 0, FnObjectCount },
|
||||
{ "GameCall", 1, C4V_Any, { C4V_String ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any}, 0, FnGameCall },
|
||||
{ "GameCallEx", 1, C4V_Any, { C4V_String ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any}, 0, FnGameCallEx },
|
||||
{ "Call", 1, C4V_Any, { C4V_String ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any}, 0, FnCall },
|
||||
{ "PlayerMessage", 1, C4V_Int, { C4V_Int ,C4V_String ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any}, 0, FnPlayerMessage },
|
||||
{ "Message", 1, C4V_Bool, { C4V_String ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any}, 0, FnMessage },
|
||||
{ "AddMessage", 1, C4V_Bool, { C4V_String ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any}, 0, FnAddMessage },
|
||||
{ "EffectCall", 1, C4V_Any, { C4V_Object ,C4V_PropList,C4V_String ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any}, 0, FnEffectCall },
|
||||
|
||||
{ NULL, 0 ,C4V_Nil ,{ C4V_Nil ,C4V_Nil ,C4V_Nil ,C4V_Nil ,C4V_Nil ,C4V_Nil ,C4V_Nil ,C4V_Nil ,C4V_Nil ,C4V_Nil} ,0, 0 }
|
||||
|
||||
{ NULL, 0, C4V_Nil, { C4V_Nil ,C4V_Nil ,C4V_Nil ,C4V_Nil ,C4V_Nil ,C4V_Nil ,C4V_Nil ,C4V_Nil ,C4V_Nil ,C4V_Nil}, 0 }
|
||||
};
|
||||
|
|
|
@ -45,24 +45,6 @@ struct C4ScriptConstDef
|
|||
long Data; // raw data
|
||||
};
|
||||
|
||||
|
||||
|
||||
// ** a definition of a script-function.
|
||||
// includes two versions of the Function to be called:
|
||||
// * the first (C4V) takes 10 parameters
|
||||
// * the second (C4V2) takes an array of 10 parameters
|
||||
// only one may be set.
|
||||
struct C4ScriptFnDef
|
||||
{
|
||||
const char* Identifier; // the name of the func in the script
|
||||
bool Public;
|
||||
C4V_Type RetType; // type returned. ignored when C4V
|
||||
C4V_Type ParType[10];// type of the parameters. error when wrong parameter type.
|
||||
C4Value (*FunctionC4V)(C4PropList * _this, C4Value*, C4Value*, C4Value*, C4Value*, C4Value*,
|
||||
C4Value*, C4Value*, C4Value*, C4Value*, C4Value*);
|
||||
C4Value (*FunctionC4V2)(C4PropList * _this, C4Value *);
|
||||
};
|
||||
|
||||
// add functions to engine
|
||||
void InitGameFunctionMap(C4AulScriptEngine *pEngine);
|
||||
void InitObjectFunctionMap(C4AulScriptEngine *pEngine);
|
||||
|
|
|
@ -139,18 +139,6 @@ StdStrBuf C4AulFunc::GetFullName()
|
|||
return r;
|
||||
}
|
||||
|
||||
C4AulDefFunc::C4AulDefFunc(C4AulScript *pOwner, const char *pName, C4ScriptFnDef* pDef):
|
||||
C4AulFunc(pOwner, pName) // constructor
|
||||
{
|
||||
Def = pDef;
|
||||
Owner->GetPropList()->SetPropertyByS(Name, C4VFunction(this));
|
||||
}
|
||||
|
||||
C4AulDefFunc::~C4AulDefFunc()
|
||||
{
|
||||
assert(!Owner);
|
||||
}
|
||||
|
||||
C4AulScript::C4AulScript()
|
||||
{
|
||||
// not compiled
|
||||
|
@ -264,14 +252,6 @@ C4AulScriptFunc::C4AulScriptFunc(C4AulScript *pOwner, const C4AulScriptFunc &Fro
|
|||
ParType[i] = FromFunc.ParType[i];
|
||||
}
|
||||
|
||||
|
||||
void C4AulScript::AddFunc(const char *pIdtf, C4ScriptFnDef* Def)
|
||||
{
|
||||
// create def func
|
||||
new C4AulDefFunc(this, pIdtf, Def);
|
||||
}
|
||||
|
||||
|
||||
/*--- C4AulScriptEngine ---*/
|
||||
|
||||
C4AulScriptEngine::C4AulScriptEngine():
|
||||
|
|
|
@ -221,22 +221,6 @@ public:
|
|||
friend class C4ScriptHost;
|
||||
};
|
||||
|
||||
// defined function class
|
||||
class C4AulDefFunc : C4AulFunc
|
||||
{
|
||||
public:
|
||||
C4ScriptFnDef* Def;
|
||||
|
||||
C4AulDefFunc(C4AulScript *pOwner, const char *pName, C4ScriptFnDef* pDef);
|
||||
~C4AulDefFunc();
|
||||
|
||||
virtual bool GetPublic() { return !!Def->Public; }
|
||||
virtual C4V_Type* GetParType() { return Def->ParType; }
|
||||
virtual C4V_Type GetRetType() { return Def->RetType; }
|
||||
|
||||
virtual C4Value Exec(C4PropList * p, C4Value pPars[], bool fPassErrors=false); // execute func
|
||||
};
|
||||
|
||||
class C4AulFuncMap
|
||||
{
|
||||
public:
|
||||
|
@ -310,8 +294,6 @@ public:
|
|||
virtual C4PropList * GetPropList() { return 0; }
|
||||
virtual C4ScriptHost * GetScriptHost() { return 0; }
|
||||
|
||||
void AddFunc(const char *pIdtf, C4ScriptFnDef* Def); // add def def func to table
|
||||
|
||||
C4Value DirectExec(C4Object *pObj, const char *szScript, const char *szContext, bool fPassErrors = false, C4AulScriptContext* context = NULL); // directly parse uncompiled script (WARG! CYCLES!)
|
||||
virtual void ResetProfilerTimes(); // zero all profiler times of owned functions
|
||||
virtual void CollectProfilerTimes(class C4AulProfiler &rProfiler);
|
||||
|
|
|
@ -355,4 +355,31 @@ TEMPLATE(10)
|
|||
#undef CONV_FROM_C4V
|
||||
#undef TEMPLATE
|
||||
|
||||
|
||||
// a definition of a function exported to script
|
||||
struct C4ScriptFnDef
|
||||
{
|
||||
const char* Identifier; // the name of the func in the script
|
||||
bool Public;
|
||||
C4V_Type RetType; // type returned. ignored when C4V
|
||||
C4V_Type ParType[10];// type of the parameters. error when wrong parameter type.
|
||||
C4Value (*FunctionC4V)(C4PropList * _this, C4Value *);
|
||||
};
|
||||
|
||||
// defined function class
|
||||
class C4AulDefFunc : C4AulFunc
|
||||
{
|
||||
public:
|
||||
C4ScriptFnDef* Def;
|
||||
|
||||
C4AulDefFunc(C4AulScript *pOwner, C4ScriptFnDef* pDef);
|
||||
~C4AulDefFunc();
|
||||
|
||||
virtual bool GetPublic() { return !!Def->Public; }
|
||||
virtual C4V_Type* GetParType() { return Def->ParType; }
|
||||
virtual C4V_Type GetRetType() { return Def->RetType; }
|
||||
|
||||
virtual C4Value Exec(C4PropList * p, C4Value pPars[], bool fPassErrors=false);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -1053,19 +1053,6 @@ C4Value C4AulScriptFunc::Exec(C4PropList * p, C4Value pPars[], bool fPassErrors)
|
|||
return AulExec.Exec(this, p, pPars, fPassErrors);
|
||||
}
|
||||
|
||||
C4Value C4AulDefFunc::Exec(C4PropList * p, C4Value pPars[], bool fPassErrors)
|
||||
{
|
||||
// Determine function call format to use
|
||||
if (Def->FunctionC4V2)
|
||||
return Def->FunctionC4V2(p, pPars);
|
||||
if (Def->FunctionC4V)
|
||||
return Def->FunctionC4V(p, &pPars[0], &pPars[1], &pPars[2], &pPars[3], &pPars[4], &pPars[5], &pPars[6], &pPars[7], &pPars[8], &pPars[9]);
|
||||
|
||||
assert(Def->FunctionC4V2 || Def->FunctionC4V);
|
||||
return C4Value();
|
||||
}
|
||||
|
||||
|
||||
class C4DirectExecScript: public C4ScriptHost
|
||||
{
|
||||
public:
|
||||
|
|
|
@ -150,6 +150,23 @@ bool C4ValueToMatrix(const C4ValueArray& array, StdMeshMatrix* matrix)
|
|||
return true;
|
||||
}
|
||||
|
||||
C4AulDefFunc::C4AulDefFunc(C4AulScript *pOwner, C4ScriptFnDef* pDef):
|
||||
C4AulFunc(pOwner, pDef->Identifier), Def(pDef)
|
||||
{
|
||||
Owner->GetPropList()->SetPropertyByS(Name, C4VFunction(this));
|
||||
}
|
||||
|
||||
C4AulDefFunc::~C4AulDefFunc()
|
||||
{
|
||||
assert(!Owner);
|
||||
}
|
||||
|
||||
C4Value C4AulDefFunc::Exec(C4PropList * p, C4Value pPars[], bool fPassErrors)
|
||||
{
|
||||
assert(Def->FunctionC4V);
|
||||
return Def->FunctionC4V(p, pPars);
|
||||
}
|
||||
|
||||
//=============================== C4Script Functions ====================================
|
||||
|
||||
static C4PropList *Fnthis(C4PropList * _this)
|
||||
|
@ -569,11 +586,11 @@ C4ScriptConstDef C4ScriptConstMap[]=
|
|||
|
||||
C4ScriptFnDef C4ScriptFnMap[]=
|
||||
{
|
||||
{ "Log", 1, C4V_Bool, { C4V_String ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any}, 0, FnLog },
|
||||
{ "DebugLog", 1, C4V_Bool, { C4V_String ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any}, 0, FnDebugLog },
|
||||
{ "Format", 1, C4V_String, { C4V_String ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any}, 0, FnFormat },
|
||||
{ "Log", 1, C4V_Bool, { C4V_String ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any}, FnLog },
|
||||
{ "DebugLog", 1, C4V_Bool, { C4V_String ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any}, FnDebugLog },
|
||||
{ "Format", 1, C4V_String, { C4V_String ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any ,C4V_Any}, FnFormat },
|
||||
|
||||
{ NULL, 0, C4V_Nil, { C4V_Nil ,C4V_Nil ,C4V_Nil ,C4V_Nil ,C4V_Nil ,C4V_Nil ,C4V_Nil ,C4V_Nil ,C4V_Nil ,C4V_Nil}, 0, 0 }
|
||||
{ NULL, 0, C4V_Nil, { C4V_Nil ,C4V_Nil ,C4V_Nil ,C4V_Nil ,C4V_Nil ,C4V_Nil ,C4V_Nil ,C4V_Nil ,C4V_Nil ,C4V_Nil}, 0 }
|
||||
};
|
||||
|
||||
void InitCoreFunctionMap(C4AulScriptEngine *pEngine)
|
||||
|
@ -587,7 +604,7 @@ void InitCoreFunctionMap(C4AulScriptEngine *pEngine)
|
|||
|
||||
// add all def script funcs
|
||||
for (C4ScriptFnDef *pDef = &C4ScriptFnMap[0]; pDef->Identifier; pDef++)
|
||||
pEngine->AddFunc(pDef->Identifier, pDef);
|
||||
new C4AulDefFunc(pEngine, pDef);
|
||||
#define F(f) AddFunc(pEngine, #f, Fn##f)
|
||||
F(Abs);
|
||||
F(Min);
|
||||
|
|
Loading…
Reference in New Issue