AngelScript

weakref object

Path: /sdk/add_on/weakref/

The `weakref` type is a template type for holding weak references to objects, i.e. the references that will not keep the referred object alive.

The type is registered with `RegisterScriptWeakRef(asIScriptEngine*)`.

See Also
  Weak references

# Public C++ interface

class CScriptWeakRef
{
public:
// Constructors
CScriptWeakRef(asIObjectType *type);
CScriptWeakRef(const CScriptWeakRef &other);
CScriptWeakRef(void *ref, asIObjectType *type);
// Memory management
void AddRef() const;
void Release() const;
// Copy the stored value from another weakref object
CScriptWeakRef &operator=(const CScriptWeakRef &other);
// Compare equalness
bool operator==(const CScriptWeakRef &o) const;
bool operator!=(const CScriptWeakRef &o) const;
// Returns the object if it is still alive
void *Get() const;
// Returns the type of the reference held
asIObjectType *GetRefType() const;
};

# Example usage in script

In the scripts it can be used as follows:

      class MyClass {}
      MyClass @obj1 = MyClass();

      // Keep a weakref to the object
      weakref<MyClass> r1(obj1);

      // Keep a weakref to a readonly object
      const_weakref<MyClass> r2(obj1);

      // As long as there is a strong reference to the object,
      // the weakref will be able to return a handle to the object
      MyClass @obj2 = r1.get();
      assert( obj2 !is null );

      // After all strong references are removed the
      // weakref will only return null
      @obj1 = null;
      @obj2 = null;

      const MyClass @obj3 = r2.get();
      assert( obj3 is null );