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