AngelScript
ref object

Path: /sdk/add_on/scripthandle/

The ref type is a generic container that can hold any handle. It is a value type, but behaves very much like an object handle.

The type is registered with RegisterScriptHandle(asIScriptEngine*).

See Also
Registering a generic handle type

Public C++ interface

class CScriptHandle
{
public:
// Constructors
CScriptHandle();
CScriptHandle(const CScriptHandle &other);
CScriptHandle(void *ref, int typeId);
~CScriptHandle();
// Copy the stored reference from another handle object
CScriptHandle &operator=(const CScriptHandle &other);
// Set the reference
void Set(void *ref, int typeId);
// Compare equalness
bool operator==(const CScriptHandle &o) const;
bool operator!=(const CScriptHandle &o) const;
bool opEquals(void *ref, int typeId) const;
// Dynamic cast to desired handle type
void Cast(void **outRef, int typeId);
// Returns the type of the reference held
asIObjectType *GetType();
};

Example usage

In the scripts it can be used as follows:

  ref@ unknown;
  // Store a handle in the ref variable
  object obj;
  @unknown = @obj;
  // Compare equalness
  if( unknown != null ) 
  {
    // Dynamically cast the handle to wanted type
    object @obj2 = cast<object>(unknown);
    if( obj2 != null )
    {
      ...
    }
  }