From 8d27da44b4de114e98eeabe9eff699f1e475ba93 Mon Sep 17 00:00:00 2001 From: assiduous Date: Fri, 28 Aug 2020 22:55:13 -0700 Subject: Added C API for IReferenceCounters --- Primitives/interface/ReferenceCounters.h | 40 ++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) (limited to 'Primitives/interface') 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 -- cgit v1.2.3