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);
  CScriptHandle &opAssign(void *ref, int typeId);

  // Compare equalness
  bool opEquals(const CScriptHandle &o) const;
  bool opEquals(void *ref, int typeId) const;

  // Dynamic cast to desired handle type
  void opCast(void **outRef, int typeId);
};

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 )
    {
      ...
    }
  }