#ifdef __cplusplus extern "C" { #endif #pragma once #include "HROOT-coreType.h" #include "STDDeletable.h" #include "stdcxxType.h" #define TVIRTUALMUTEX_DECL_VIRT(Type) \ int Type##_CleanUp ( Type##_p p );\ Type##_p Type##_Factory ( Type##_p p, bool recursive );\ int Type##_Lock ( Type##_p p );\ int Type##_TryLock ( Type##_p p );\ int Type##_UnLock ( Type##_p p ); #define TVIRTUALMUTEX_DECL_NONVIRT(Type) \ #define TVIRTUALMUTEX_DECL_ACCESSOR(Type) \ #define TVIRTUALMUTEX_DEF_VIRT(Type) \ int Type##_CleanUp ( Type##_p p ) {\ return ((TYPECASTMETHOD(Type, CleanUp, TVirtualMutex))(p))->CleanUp();\ }\ \ Type##_p Type##_Factory ( Type##_p p, bool recursive ) {\ return from_nonconst_to_nonconst((Type*)((TYPECASTMETHOD(Type, Factory, TVirtualMutex))(p))->Factory(recursive));\ }\ \ int Type##_Lock ( Type##_p p ) {\ return ((TYPECASTMETHOD(Type, Lock, TVirtualMutex))(p))->Lock();\ }\ \ int Type##_TryLock ( Type##_p p ) {\ return ((TYPECASTMETHOD(Type, TryLock, TVirtualMutex))(p))->TryLock();\ }\ \ int Type##_UnLock ( Type##_p p ) {\ return ((TYPECASTMETHOD(Type, UnLock, TVirtualMutex))(p))->UnLock();\ } #define TVIRTUALMUTEX_DEF_NONVIRT(Type) \ #define TVIRTUALMUTEX_DEF_ACCESSOR(Type) \ DELETABLE_DECL_VIRT(TVirtualMutex) TVIRTUALMUTEX_DECL_VIRT(TVirtualMutex) TVIRTUALMUTEX_DECL_NONVIRT(TVirtualMutex) TVIRTUALMUTEX_DECL_ACCESSOR(TVirtualMutex) #ifdef __cplusplus } #endif