AngelScript
Loading...
Searching...
No Matches
Helper functions

Path: /sdk/add_on/scripthelper/

These helper functions simplify the implementation of common tasks. They can be used as is or can serve as the starting point for your own framework.

Public C++ interface

// Compare relation between two objects of the same type.
// Uses the object's opCmp method to perform the comparison.
// Returns a negative value if the comparison couldn't be performed.
int CompareRelation(asIScriptEngine *engine, void *leftObj, void *rightObj, int typeId, int &result);
// Compare equality between two objects of the same type.
// Uses the object's opEquals method to perform the comparison, or if that doesn't exist the opCmp method.
// Returns a negative value if the comparison couldn't be performed.
int CompareEquality(asIScriptEngine *engine, void *leftObj, void *rightObj, int typeId, bool &result);
// Compile and execute simple statements.
// The module is optional. If given the statements can access the entities compiled in the module.
// The caller can optionally provide its own context, for example if a context should be reused.
int ExecuteString(asIScriptEngine *engine, const char *code, asIScriptModule *mod = 0, asIScriptContext *ctx = 0);
// Compile and execute simple statements with option of return value.
// The module is optional. If given the statements can access the entities compiled in the module.
// The caller can optionally provide its own context, for example if a context should be reused.
int ExecuteString(asIScriptEngine *engine, const char *code, void *ret, int retTypeId, asIScriptModule *mod = 0, asIScriptContext *ctx = 0);
// Format the details of the script exception into a human readable text.
// Whenever the asIScriptContext::Execute method returns asEXECUTION_EXCEPTION, the application
// can call this function to get more information about that exception in a human readable form.
// The information obtained includes the current function, the script source section,
// program position in the source section, and the exception description itself.
std::string GetExceptionInfo(asIScriptContext *ctx, bool showStack = false);
// Write registered application interface to file.
// This function creates a file with the configuration for the offline compiler, asbuild, in the samples.
// If you wish to use the offline compiler you should call this function from you application after the
// application interface has been fully registered. This way you will not have to create the configuration
// file manually.
int WriteConfigToFile(asIScriptEngine *engine, const char *filename);
// Write the registered application interface to a text stream.
int WriteConfigToStream(asIScriptEngine *engine, std::ostream &strm);
// Loads an interface from a text stream and configures the engine with it. This will not
// set the correct function pointers, so it is not possible to use this engine to execute
// scripts, but it can be used to compile scripts and save the byte code.
int ConfigEngineFromStream(asIScriptEngine *engine, std::istream &strm, const char *nameOfStream = "config", asIStringFactory *stringFactory = 0);
The interface to the virtual machine.
The engine interface.
The interface to the script modules.
The interface for the string factory.

Example

To compare two script objects the application can execute the following code:

void Compare(asIScriptObject *a, asIScriptObject *b)
{
asIScriptEngine *engine = a->GetEngine();
int typeId = a->GetTypeId();
int cmp;
int r = CompareRelation(engine, a, b, typeId, cmp);
if( r < 0 )
{
cout << "The relation between a and b cannot be established b" << endl;
}
else
{
if( cmp < 0 )
cout << "a is smaller than b" << endl;
else if( cmp == 0 )
cout << "a is equal to b" << endl;
else
cout << "a is greater than b" << endl;
}
}
The interface for an instance of a script object.
virtual int GetTypeId() const =0
Returns the type id of the object.
virtual asIScriptEngine * GetEngine() const =0
Return the script engine.