struct CCL::Scripting::IContext

Overview

Context for script execution, usually one per thread. More…

#include <iscriptengine.h>

struct IContext: public CCL::IUnknown
{
    // methods

    virtual IEngine&CCL_API getEngine () const = 0;
    virtual tresult CCL_API setOption (StringID id, VariantRef value) = 0;
    virtual void CCL_API attachModule (ModuleRef module) = 0;
    virtual void CCL_API detachModule (ModuleRef module) = 0;
    virtual tresult CCL_API setReporter (Alert::IReporter* reporter) = 0;
    virtual tresult CCL_API registerObject (CStringRef name, IObject* nativeObject) = 0;

    virtual IObject*CCL_API createObject (
        CStringRef className,
        const Variant args [] = nullptr,
        int argCount = 0
    ) = 0;

    virtual tresult CCL_API registerGlobalFunction (
        CStringRef methodName,
        CCL::IObject* nativeObject
    ) = 0;

    virtual tresult CCL_API executeScript (
        Variant& returnValue,
        const IScript& script
    ) = 0;

    virtual IObject*CCL_API compileScript (const IScript& script) = 0;
    virtual void CCL_API garbageCollect (tbool force) = 0;
    virtual tbool CCL_API removeReference (IUnknown* nativeObject) = 0;
    virtual void CCL_API dump () = 0;
    DECLARE_STRINGID_MEMBER (kStubObjectsEnabled);
};

Inherited Members

public:
    // methods

    virtual tresult CCL_API queryInterface (UIDRef iid, void** ptr) = 0;
    virtual unsigned int CCL_API retain () = 0;
    virtual unsigned int CCL_API release () = 0;

Detailed Documentation

Context for script execution, usually one per thread.

Methods

virtual IEngine&CCL_API getEngine () const = 0

Get engine owning this context.

virtual tresult CCL_API setOption (StringID id, VariantRef value) = 0

Set context option.

virtual void CCL_API attachModule (ModuleRef module) = 0

Attach module to context.

virtual void CCL_API detachModule (ModuleRef module) = 0

Detach module from context.

virtual tresult CCL_API setReporter (Alert::IReporter* reporter) = 0

Set alert reporter.

virtual tresult CCL_API registerObject (CStringRef name, IObject* nativeObject) = 0

Register global object (shared by context).

virtual IObject*CCL_API createObject (
    CStringRef className,
    const Variant args [] = nullptr,
    int argCount = 0
) = 0

Create script object.

For JavaScript, class name can be “Object”, “Array”, “Int8Array”, etc.

virtual tresult CCL_API registerGlobalFunction (
    CStringRef methodName,
    CCL::IObject* nativeObject
) = 0

Register object method as global function.

virtual tresult CCL_API executeScript (
    Variant& returnValue,
    const IScript& script
) = 0

Execute script directly.

virtual IObject*CCL_API compileScript (const IScript& script) = 0

Compile script, can be executed later via IObject::invokeMethod.

virtual void CCL_API garbageCollect (tbool force) = 0

Check garbage collection.

virtual tbool CCL_API removeReference (IUnknown* nativeObject) = 0

Remove reference to given native object from context.

virtual void CCL_API dump () = 0

Dump context information to debug output.

DECLARE_STRINGID_MEMBER (kStubObjectsEnabled)

< enable host strings, i.e. use CCL::String instead of IStringValue

< enable memory allocation logging (debug build)