API Documentation
Public Member Functions | List of all members
nkScripts::Environment Class Referencefinal

Defines an environment in which scripts can execute. More...

Public Member Functions

 Environment () noexcept
 
 ~Environment ()
 
const ExecutionResultgetLastExecutionResult () const
 
nkMemory::StringView getName () const
 
void setEnvironmentFor (INTERPRETER interpretType)
 
void setName (nkMemory::StringView name)
 
bool execute (const Script &script)
 
void requestGarbageCollection ()
 
void setVar (nkMemory::StringView name, bool value)
 
void setVar (nkMemory::StringView name, int value)
 
void setVar (nkMemory::StringView name, float value)
 
void setVar (nkMemory::StringView name, double value)
 
void setVar (nkMemory::StringView name, const char *value)
 
void setVar (nkMemory::StringView name, nkMemory::StringView value)
 
void setVar (nkMemory::StringView name, const ScriptObjectReference &value)
 
void setObject (nkMemory::StringView name, nkMemory::StringView userTypeName, void *value)
 
bool isVarSet (nkMemory::StringView name)
 
bool getVar (nkMemory::StringView name, bool defaultValue)
 
int getVar (nkMemory::StringView name, int defaultValue)
 
float getVar (nkMemory::StringView name, float defaultValue)
 
double getVar (nkMemory::StringView name, double defaultValue)
 
nkMemory::StringView getVar (nkMemory::StringView name, const char *defaultValue)
 
nkMemory::StringView getVar (nkMemory::StringView name, nkMemory::StringView defaultValue)
 
ScriptObjectReference getVar (nkMemory::StringView name)
 
void * getObject (nkMemory::StringView name, nkMemory::StringView userTypeName=nullptr)
 
ScriptObjectReference getScriptFunction (nkMemory::StringView name)
 
FunctionsetFunc (nkMemory::StringView name)
 
bool isFuncSet (nkMemory::StringView name)
 
FunctiongetFunc (nkMemory::StringView name)
 
UserTypesetUserType (nkMemory::StringView name)
 
bool isUserTypeSet (nkMemory::StringView name)
 
UserTypegetUserType (nkMemory::StringView name)
 
NamespacesetNamespace (nkMemory::StringView name)
 
bool isNamespaceSet (nkMemory::StringView name)
 
NamespacegetNamespace (nkMemory::StringView name)
 
bool callScriptFunction (const ScriptObjectReference &reference, const DataStack &args, DataStack &expectedOutput)
 
nkMemory::Buffer serializeScriptObject (const ScriptObjectReference &reference, bool forwardUserDataOwnership=false)
 
ScriptObjectReference deserializeScriptObject (nkMemory::BufferView< unsigned char > object)
 

Detailed Description

Defines an environment in which scripts can execute.

It can be seen as a context in which structures and objects can be defined and accessed.

Constructor & Destructor Documentation

◆ Environment()

nkScripts::Environment::Environment ( )
noexcept

Constructor.

◆ ~Environment()

nkScripts::Environment::~Environment ( )

Destructor.

Member Function Documentation

◆ getLastExecutionResult()

const ExecutionResult& nkScripts::Environment::getLastExecutionResult ( ) const
Returns
The last execution result.

◆ getName()

nkMemory::StringView nkScripts::Environment::getName ( ) const
Returns
The name attached to the environment.

◆ setEnvironmentFor()

void nkScripts::Environment::setEnvironmentFor ( INTERPRETER  interpretType)

Sets the interpreter the environment should be ready for.

Parameters
interpretTypeThe type of interpreter to use.

◆ setName()

void nkScripts::Environment::setName ( nkMemory::StringView  name)

Sets the name of the environment.

Parameters
nameThe name to set.
Remarks
In theory, this should not be called from external code, but only from the EnvironmentManager.

◆ execute()

bool nkScripts::Environment::execute ( const Script script)

Requests the execution of a script within the environment.

Parameters
scriptThe script to execute.
Returns
Whether the execution went fine (true) or not (false). If an error occurred, result can be checked through getLastExecutionResult().

◆ requestGarbageCollection()

void nkScripts::Environment::requestGarbageCollection ( )

Requests a garbage collection within the environment.

◆ setVar() [1/7]

void nkScripts::Environment::setVar ( nkMemory::StringView  name,
bool  value 
)

Sets a variable within the environment.

Parameters
nameThe name of the variable to set.
valueThe value to assign to it.

◆ setVar() [2/7]

void nkScripts::Environment::setVar ( nkMemory::StringView  name,
int  value 
)

Sets a variable within the environment.

Parameters
nameThe name of the variable to set.
valueThe value to assign to it.

◆ setVar() [3/7]

void nkScripts::Environment::setVar ( nkMemory::StringView  name,
float  value 
)

Sets a variable within the environment.

Parameters
nameThe name of the variable to set.
valueThe value to assign to it.

◆ setVar() [4/7]

void nkScripts::Environment::setVar ( nkMemory::StringView  name,
double  value 
)

Sets a variable within the environment.

Parameters
nameThe name of the variable to set.
valueThe value to assign to it.

◆ setVar() [5/7]

void nkScripts::Environment::setVar ( nkMemory::StringView  name,
const char *  value 
)

Sets a variable within the environment.

Parameters
nameThe name of the variable to set.
valueThe value to assign to it.

◆ setVar() [6/7]

void nkScripts::Environment::setVar ( nkMemory::StringView  name,
nkMemory::StringView  value 
)

Sets a variable within the environment.

Parameters
nameThe name of the variable to set.
valueThe value to assign to it.

◆ setVar() [7/7]

void nkScripts::Environment::setVar ( nkMemory::StringView  name,
const ScriptObjectReference value 
)

Sets a variable within the environment.

Parameters
nameThe name of the variable to set.
valueThe value to assign to it.

◆ setObject()

void nkScripts::Environment::setObject ( nkMemory::StringView  name,
nkMemory::StringView  userTypeName,
void *  value 
)

Sets an object within the environment.

Parameters
nameThe name of the object to set.
userTypeNameThe type name of the user data to set.
valueThe user data to assign to it.

◆ isVarSet()

bool nkScripts::Environment::isVarSet ( nkMemory::StringView  name)

Checks whether a variable is existing in the environment.

Parameters
nameThe name of the variable to check.

◆ getVar() [1/7]

bool nkScripts::Environment::getVar ( nkMemory::StringView  name,
bool  defaultValue 
)

Retrieves a variable, if it exists.

Parameters
nameThe name of the variable to retrieve the value from.
defaultValueThe default value to return if no variable of this name exists, or if the variable is not from requested type.
Returns
The variable value in the environment if it exists and is of requested type.
Remarks
It is possible to access a variable through a path, for instance "v.type.valid".

◆ getVar() [2/7]

int nkScripts::Environment::getVar ( nkMemory::StringView  name,
int  defaultValue 
)

Retrieves a variable, if it exists.

Parameters
nameThe name of the variable to retrieve the value from.
defaultValueThe default value to return if no variable of this name exists, or if the variable is not from requested type.
Returns
The variable value in the environment if it exists and is of requested type.
Remarks
It is possible to access a variable through a path, for instance "v.type.x".

◆ getVar() [3/7]

float nkScripts::Environment::getVar ( nkMemory::StringView  name,
float  defaultValue 
)

Retrieves a variable, if it exists.

Parameters
nameThe name of the variable to retrieve the value from.
defaultValueThe default value to return if no variable of this name exists, or if the variable is not from requested type.
Returns
The variable value in the environment if it exists and is of requested type.
Remarks
It is possible to access a variable through a path, for instance "v.type.offset".

◆ getVar() [4/7]

double nkScripts::Environment::getVar ( nkMemory::StringView  name,
double  defaultValue 
)

Retrieves a variable, if it exists.

Parameters
nameThe name of the variable to retrieve the value from.
defaultValueThe default value to return if no variable of this name exists, or if the variable is not from requested type.
Returns
The variable value in the environment if it exists and is of requested type.
Remarks
It is possible to access a variable through a path, for instance "v.type.offset".

◆ getVar() [5/7]

nkMemory::StringView nkScripts::Environment::getVar ( nkMemory::StringView  name,
const char *  defaultValue 
)

Retrieves a variable, if it exists.

Parameters
nameThe name of the variable to retrieve the value from.
defaultValueThe default value to return if no variable of this name exists, or if the variable is not from requested type.
Returns
The variable value in the environment if it exists and is of requested type.
Remarks
It is possible to access a variable through a path, for instance "v.type.name".

◆ getVar() [6/7]

nkMemory::StringView nkScripts::Environment::getVar ( nkMemory::StringView  name,
nkMemory::StringView  defaultValue 
)

Retrieves a variable, if it exists.

Parameters
nameThe name of the variable to retrieve the value from.
defaultValueThe default value to return if no variable of this name exists, or if the variable is not from requested type.
Returns
The variable value in the environment if it exists and is of requested type.
Remarks
It is possible to access a variable through a path, for instance "v.type.name".

◆ getVar() [7/7]

ScriptObjectReference nkScripts::Environment::getVar ( nkMemory::StringView  name)

Retrieves a variable, if it exists.

Parameters
nameThe name of the variable to retrieve the value from.
Returns
A reference over the variable in the environment.
Remarks
It is possible to access a variable through a path, for instance "v.type.object".

◆ getObject()

void* nkScripts::Environment::getObject ( nkMemory::StringView  name,
nkMemory::StringView  userTypeName = nullptr 
)

Retrieves an object if it exists.

Parameters
nameThe name of the variable to retrieve the object from.
userTypeNameIf needed, the type name can be specified to ensure pointer returned is of the right type.
Returns
A pointer over the user data linked, if it exists and is of the type specified.
Remarks
It is possible to leave the type name empty, preventing the retrieval from checking the user data type before returning it. It is also possible to access a variable through a path, for instance "v.type.describer".

◆ getScriptFunction()

ScriptObjectReference nkScripts::Environment::getScriptFunction ( nkMemory::StringView  name)

Retrieves a reference over a function defined in the scripting environment.

Parameters
nameThe name of the function to retrieve.
Returns
A reference over the requested function, if it exists.
Remarks
It is possible to access a function through a path, for instance "v.type.getName".

◆ setFunc()

Function* nkScripts::Environment::setFunc ( nkMemory::StringView  name)

Sets a function within the environment.

Parameters
nameThe name of the function to set.
Returns
The function information holder to populate.
Remarks
The environment owns the Function memory. External code should not delete it.

◆ isFuncSet()

bool nkScripts::Environment::isFuncSet ( nkMemory::StringView  name)

Checks whether a function is existing within the environment.

Parameters
nameThe name of the function to check.
Returns
Whether the function exists (true) or no (false).

◆ getFunc()

Function* nkScripts::Environment::getFunc ( nkMemory::StringView  name)
Parameters
nameThe name of the function to retrieve.
Returns
The function requested if it exists, nullptr else.

◆ setUserType()

UserType* nkScripts::Environment::setUserType ( nkMemory::StringView  name)

Sets a user type within the environment.

Parameters
nameThe name of the user type to set. It is possible to shortcut into namespaces using a syntax like ns0.ns1.UserTypeName.
Returns
The user type information holder to populate.
Remarks
The environment owns the UserType memory. External code should not delete it.

◆ isUserTypeSet()

bool nkScripts::Environment::isUserTypeSet ( nkMemory::StringView  name)

Checks whether a user type is existing within the environment.

Parameters
nameThe name of the user type to check. It is possible to shortcut into namespaces using a syntax like ns0.ns1.UserTypeName.
Returns
Whether the user type exists (true) or not (false).

◆ getUserType()

UserType* nkScripts::Environment::getUserType ( nkMemory::StringView  name)
Parameters
nameThe name of the user type to retrieve. It is possible to shortcut into namespaces using a syntax like ns0.ns1.UserTypeName.
Returns
The user type requested if it exists, nullptr else.

◆ setNamespace()

Namespace* nkScripts::Environment::setNamespace ( nkMemory::StringView  name)

Sets a namespace within the environment.

Parameters
nameThe name of the namespace to set. It is possible to shortcut into namespaces using a syntax like ns0.ns1.ns2.
Remarks
The environment owns the Namespace memory. External code should not delete it.

◆ isNamespaceSet()

bool nkScripts::Environment::isNamespaceSet ( nkMemory::StringView  name)

Checks whether a namespace is existing within the environment.

Parameters
nameThe name of the namespace to check. It is possible to shortcut into namespaces using a syntax like ns0.ns1.ns2.
Returns
Whether the namespace exists (true) or not (false).

◆ getNamespace()

Namespace* nkScripts::Environment::getNamespace ( nkMemory::StringView  name)
Parameters
nameThe name of the namespace to retrieve. It is possible to shortcut into namespaces using a syntax like ns0.ns1.ns2.
Returns
The namespace requested if it exists, nullptr else.

◆ callScriptFunction()

bool nkScripts::Environment::callScriptFunction ( const ScriptObjectReference reference,
const DataStack args,
DataStack expectedOutput 
)

Calls a script function from the C++ environment.

Parameters
referenceThe function reference, in the environment.
argsThe arguments to provide to the function, in a stack.
expectedOutputA ready stack that will receive the output of the called function.
Returns
If the function could successfully be called (true) or not (false).

◆ serializeScriptObject()

nkMemory::Buffer nkScripts::Environment::serializeScriptObject ( const ScriptObjectReference reference,
bool  forwardUserDataOwnership = false 
)

Serializes an object from the environment into a binary buffer. This can be used to pass a script object from one environment to another, for instance.

Parameters
referenceThe reference in the environment of the object to serialize.
forwardUserDataOwnershipWhether the user data, defined by user types, should also forward their ownership to the serialization object (true) or not (false). \ This will ultimately transmit the ownsership to the environment where it is deserialized.
Returns
The binary buffer containing the serialized data.

◆ deserializeScriptObject()

ScriptObjectReference nkScripts::Environment::deserializeScriptObject ( nkMemory::BufferView< unsigned char >  object)

Deserializes a binary buffer into a new object within the environment.

Parameters
objectThe serialized binary buffer to deserialize.
Returns
A reference over the object created within the environment, using the serialized information.

The documentation for this class was generated from the following file: