Honestly I think that's enought for most application ... but in my case it is not !
The missing function name will miss me.
My application have global script and script triggered by event (like a browser).
The script that are triggered are named "not pure" because it is encapsulated with some code that is injected at runtime.
AcceuilEng_MOUSE_0 is triggered on a mouse hot spot click in page AcceuilEng.
When the user define the script his got an emply blank page where ... he write the script.
But in some case, he can use a trick to add it's own functions in the script.
The trick is to enter the ending code encapsulation, the declare your function with the correct beginning code encapsulation.
The code encapsulation is at the beginning :
void thefunctionname(){asBStrSetTransaction(1);{
The code encapsulation is at the ending :
}asBStrFreeTransaction(1);}
Example :
The user enter a script on mouse hot spot click in page AcceuilEng.
He (or she) enter a script like that :
TheOtherCode();
and nothing else.
The application then translate this to :
void AcceuilEng_MOUSE_O(){asBStrSetTransaction(1);{TheOtherCode();}asBStrFreeTransaction(1);}
Now the tricky user wants something special and use the trick in its code and enter :
TheOtherCode();gogo(1, 5);}asBStrFreeTransaction(1);}int gogo(int i, int j){ return i * j;}void TrickyEnd(){asBStrSetTransaction(1);{
If the user enter a compilation error in its gogo function the actual AS outputs :
Building...Compiling function 'gogo' in "AcceuilFra_OnBeforeParse" Error : (9, 1) Function 'TheBuggyCall' not foundCompleted. (errors: 1, warnings: 0)
but in 1.9.x it will (I think if I have well understood !) output :
AcceuilFra_OnBeforeParse (9, 1) : Error : Function 'TheBuggyCall' not found
gogo is missing !
But once again, I think it's enought for most applications.