diff options
| author | assiduous <assiduous@diligentgraphics.com> | 2020-08-29 05:55:13 +0000 |
|---|---|---|
| committer | assiduous <assiduous@diligentgraphics.com> | 2020-08-29 05:55:13 +0000 |
| commit | 8d27da44b4de114e98eeabe9eff699f1e475ba93 (patch) | |
| tree | 46ee3fe753dd71d0a91ac5172dac269a9840d78a /Primitives/interface | |
| parent | Fixed iOS build issue (diff) | |
| download | DiligentCore-8d27da44b4de114e98eeabe9eff699f1e475ba93.tar.gz DiligentCore-8d27da44b4de114e98eeabe9eff699f1e475ba93.zip | |
Added C API for IReferenceCounters
Diffstat (limited to 'Primitives/interface')
| -rw-r--r-- | Primitives/interface/ReferenceCounters.h | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/Primitives/interface/ReferenceCounters.h b/Primitives/interface/ReferenceCounters.h index 1f6a77c5..8dd2070d 100644 --- a/Primitives/interface/ReferenceCounters.h +++ b/Primitives/interface/ReferenceCounters.h @@ -120,6 +120,46 @@ public: #else +struct IObject; +struct IReferenceCounters; + +// clang-format off + +typedef struct IReferenceCountersMethods +{ + ReferenceCounterValueType (*AddStrongRef) (struct IReferenceCounters*); + ReferenceCounterValueType (*ReleaseStrongRef) (struct IReferenceCounters*); + ReferenceCounterValueType (*AddWeakRef) (struct IReferenceCounters*); + ReferenceCounterValueType (*ReleaseWeakRef) (struct IReferenceCounters*); + void (*GetObject) (struct IReferenceCounters*, struct IObject** ppObject); + ReferenceCounterValueType (*GetNumStrongRefs) (struct IReferenceCounters*); + ReferenceCounterValueType (*GetNumWeakRefs) (struct IReferenceCounters*); +} IReferenceCountersMethods; + +typedef struct IReferenceCountersVtbl +{ + IReferenceCountersMethods ReferenceCounters; +} IReferenceCountersVtbl; + +// clang-format on + +typedef struct IReferenceCounters +{ + struct IReferenceCountersVtbl* pVtbl; +} IReferenceCounters; + +// clang-format off + +# define IReferenceCounters_AddStrongRef(This) CALL_IFACE_METHOD(ReferenceCounters, AddStrongRef, This) +# define IReferenceCounters_ReleaseStrongRef(This) CALL_IFACE_METHOD(ReferenceCounters, ReleaseStrongRef, This) +# define IReferenceCounters_AddWeakRef(This) CALL_IFACE_METHOD(ReferenceCounters, AddWeakRef, This) +# define IReferenceCounters_ReleaseWeakRef(This) CALL_IFACE_METHOD(ReferenceCounters, ReleaseWeakRef, This) +# define IReferenceCounters_GetObject(This, ...) CALL_IFACE_METHOD(ReferenceCounters, GetObject, This, __VA_ARGS__) +# define IReferenceCounters_GetNumStrongRefs(This) CALL_IFACE_METHOD(ReferenceCounters, GetNumStrongRefs, This) +# define IReferenceCounters_GetNumWeakRefs(This) CALL_IFACE_METHOD(ReferenceCounters, GetNumWeakRefs, This) + +// clang-format on + #endif DILIGENT_END_NAMESPACE // namespace Diligent |
