VirtualMachineScopeInterface Class Reference

#include <vm.h>

Inheritance diagram for VirtualMachineScopeInterface:

Public Member Functions

MAXON_METHOD Result< void > Init (const String &identifier, const String &code, ERRORHANDLING errorHandling, const VmDebuggerConnectionRef *debug=nullptr)
 
MAXON_METHOD Result< void > Add (const String &name, const Data &data)
 
MAXON_METHOD Result< DataGet (const String &name)
 
MAXON_METHOD Result< void > Execute ()
 
MAXON_METHOD Result< Data * > PrivateInvoke (const String &name, BlockArray< Data > &helperStack, const DataType &expected=DataType::NullValue(), const Block< Data * > *arguments=nullptr)
 
MAXON_METHOD Result< void > ErrorHandling ()
 
MAXON_METHOD Result< void > _PrivateInit (const LibraryRef &lib)
 

Private Member Functions

 MAXON_INTERFACE (VirtualMachineScopeInterface, MAXON_REFERENCE_NORMAL, "net.maxon.python.interface.virtualmachinescope")
 

Member Function Documentation

◆ MAXON_INTERFACE()

MAXON_INTERFACE ( VirtualMachineScopeInterface  ,
MAXON_REFERENCE_NORMAL  ,
"net.maxon.python.interface.virtualmachinescope"   
)
private

◆ Init()

MAXON_METHOD Result<void> Init ( const String identifier,
const String code,
ERRORHANDLING  errorHandling,
const VmDebuggerConnectionRef *  debug = nullptr 
)

Initialized the virtual machine scope. Needs to be executed before any other function of the interface is used.

Parameters
[in]identifierHuman readable unique identifier. Depending on the engine, some exception handlers might print this into their exception to make it easier to understand where the exception comes from.
[in]codeCode to be executed.
[in]errorHandlingAdjust how the virtual machine should treat an exception.
[in]debugOptional virtual machine debugger connection, to debug the code.

◆ Add()

MAXON_METHOD Result<void> Add ( const String name,
const Data data 
)

Add an object to the scope. The Data object will be converted through the underlying library implementation. So the Data object must be representable in the target virtual machine.

Parameters
[in]nameVariable name of the object in the scope.
[in]dataObject that will be added to the scope.
Returns
Return state, depending on VirtualMachineScopeInterface::Init(errorHandling).

◆ Get()

MAXON_METHOD Result<Data> Get ( const String name)

Returns an object from the scope.

Parameters
[in]nameVariable name of the object in the scope.
Returns
Requested object or error.

◆ Execute()

MAXON_METHOD Result<void> Execute ( )

Execute the virtual machine scope. Before, and after executing the code, the optionally given debugger code from the VmDebuggerConnection will be executed.

Returns
Return state, depending on VirtualMachineScopeInterface::Init(errorHandling).

◆ PrivateInvoke()

MAXON_METHOD Result<Data*> PrivateInvoke ( const String name,
BlockArray< Data > &  helperStack,
const DataType expected = DataType::NullValue(),
const Block< Data * > *  arguments = nullptr 
)

Executes a callable object from the scope. Must only be called after VirtualMachineScopeInterface.Execute.

Parameters
[in]nameName of the callable object, e.g a function name
[in]helperStackA temporary helper stack for the return value.
[in]expected(Optional) Datatype of the returned object, otherwise the type of the object will be chosen automatically.
[in]arguments(Optional) Arguments which will be passed to the callable object.

◆ ErrorHandling()

MAXON_METHOD Result<void> ErrorHandling ( )

Normally to reset the error state of the internal virtual machine. E.g. In Python PyErr_Print is executed. Normally used after VirtualMachineScopeInterface.Execute or VirtualMachineScopeInterface.PrivateInvoke failed, but only if scope is initialized with ERRORHANDLING.REDIRECT.

Returns
OK if the error was handled, otherwise an exception is returned.

◆ _PrivateInit()

MAXON_METHOD Result<void> _PrivateInit ( const LibraryRef &  lib)

Private.