#include "AtxInterfaces.h"
#include "AtxDefs.h"
#include "AtxTypes.h"
#include "AtxDebug.h"
Go to the source code of this file.
Defines | |
| #define | ATX_DESTROY_OBJECT(object) |
| Macro to destroy an object through the ATX_Destroyable interface. | |
| #define | ATX_IMPLEMENT_DESTROYABLE_INTERFACE(_class) |
Functions | |
|
ATX_END_INTERFACE_DEFINITION ATX_Result | ATX_Destroyable_Destroy (ATX_Destroyable *self) |
Variables | |
| ATX_Result(* | Destroy )(ATX_Destroyable *self) |
| Interface implemented by objects that can be destroyed. | |
| #define ATX_DESTROY_OBJECT | ( | object | ) |
Value:
do { \ if (object) { \ ATX_Destroyable* destroyable = ATX_CAST(object, ATX_Destroyable); \ ATX_ASSERT(destroyable != NULL); \ ATX_Destroyable_Destroy(destroyable); \ object = NULL; \ } \ } while(0)
This macro will first try to get an ATX_Destroyable intrerface for an object. If the object does not implement the ATX_Destroyable interface, an exception is thrown. If the object implements the ATX_Destroyble interface, the macro calls the Destroy() method. As a side effect, this macro clears its object reference argument, making it a NULL object reference.
| #define ATX_IMPLEMENT_DESTROYABLE_INTERFACE | ( | _class | ) |
Value:
ATX_IMPLEMENT_GET_INTERFACE_ADAPTER(_class, ATX_Destroyable) \ static const ATX_DestroyableInterface \ _class##_ATX_DestroyableInterface = { \ ATX_GET_INTERFACE_ADAPTER(_class, ATX_Destroyable), \ _class##_Destroy \ };
| ATX_Result(* Destroy)(ATX_Destroyable *self) |
Interface implemented by objects that can be destroyed.
Destroys the object instance. After destroying an instance, that instance can no longer be used (clients can no longer call any of the methods on that instance)
| self | Pointer the the object on which this method is called |