Go to the documentation of this file.
33 #ifndef DILIGENT_C_INTERFACE
35 # define DILIGENT_C_INTERFACE 0
37 # define DILIGENT_C_INTERFACE 1
43 # define DILIGENT_CALL_TYPE __cdecl
45 # define DILIGENT_CALL_TYPE
48 #if DILIGENT_C_INTERFACE
50 # define DILIGENT_BEGIN_NAMESPACE(Name)
51 # define DILIGENT_END_NAMESPACE
53 # define DILIGENT_TYPED_ENUM(EnumName, EnumType) \
54 typedef EnumType EnumName; \
57 # define DILIGENT_DERIVE(TypeName) \
59 struct TypeName _##TypeName;
61 # define DEFAULT_INITIALIZER(x)
63 # define DILIGENT_GLOBAL_FUNCTION(FuncName) Diligent_##FuncName
65 # define DILIGENT_BEGIN_INTERFACE(Iface, Base) \
66 typedef struct Iface \
68 struct Iface##Vtbl* pVtbl; \
72 # define DEFAULT_VALUE(x)
74 # define CALL_IFACE_METHOD(Iface, Method, This, ...) (This)->pVtbl->Iface.Method((I##Iface*)(This), ##__VA_ARGS__)
77 # define DILIGENT_CONCATENATE0(X, Y) X##Y
78 # define DILIGENT_CONCATENATE(X, Y) DILIGENT_CONCATENATE0(X, Y)
82 # define DILIGENT_BEGIN_NAMESPACE(Name) \
86 # define DILIGENT_END_NAMESPACE }
88 # define DILIGENT_TYPED_ENUM(EnumName, EnumType) enum EnumName : EnumType
90 # define DILIGENT_DERIVE(TypeName) : public TypeName \
93 # define DEFAULT_INITIALIZER(x) = x
95 # define DILIGENT_GLOBAL_FUNCTION(FuncName) FuncName
97 # define DILIGENT_BEGIN_INTERFACE(Name, Base) struct Name : public Base
99 # define DEFAULT_VALUE(x) = x
103 #if DILIGENT_C_INTERFACE
104 # define DILIGENT_CPP_INTERFACE 0
106 # define DILIGENT_CPP_INTERFACE 1