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