aboutsummaryrefslogtreecommitdiffstats
path: root/Alc/backends/base.h
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2013-10-27 16:37:40 -0700
committerChris Robinson <[email protected]>2013-10-27 16:37:40 -0700
commite54983694bc43a0f1a7ebb4ed0aeb78a1f2d36ab (patch)
tree33d3c29c847dd3440c9abb44719421852db2f36f /Alc/backends/base.h
parent3ed425d7ef2f9e3e06e579c5965ad6188ce1c19e (diff)
Add missing header to git
Diffstat (limited to 'Alc/backends/base.h')
-rw-r--r--Alc/backends/base.h62
1 files changed, 62 insertions, 0 deletions
diff --git a/Alc/backends/base.h b/Alc/backends/base.h
new file mode 100644
index 00000000..9cc0d66b
--- /dev/null
+++ b/Alc/backends/base.h
@@ -0,0 +1,62 @@
+#ifndef AL_BACKENDS_BASE_H
+#define AL_BACKENDS_BASE_H
+
+#include "alMain.h"
+
+
+struct ALCbackendVtable;
+
+typedef struct ALCbackend {
+ const struct ALCbackendVtable *vtbl;
+
+ ALCdevice *mDevice;
+} ALCbackend;
+
+struct ALCbackendVtable {
+ void (*const Destruct)(ALCbackend *state);
+
+ ALCenum (*const open)(ALCbackend*, const ALCchar*);
+ void (*const close)(ALCbackend*);
+
+ ALCboolean (*reset)(ALCbackend*);
+ ALCboolean (*start)(ALCbackend*);
+ void (*stop)(ALCbackend*);
+
+ ALint64 (*getLatency)(ALCbackend*);
+
+ void (*const Delete)(ALCbackend *state);
+};
+
+#define DEFINE_ALCBACKEND_VTABLE(T) \
+static void T##_ALCbackend_Destruct(ALCbackend *obj) \
+{ T##_Destruct(STATIC_UPCAST(T, ALCbackend, obj)); } \
+static ALCenum T##_ALCbackend_open(ALCbackend *obj, const ALCchar *p1) \
+{ return T##_open(STATIC_UPCAST(T, ALCbackend, obj), p1); } \
+static void T##_ALCbackend_close(ALCbackend *obj) \
+{ T##_close(STATIC_UPCAST(T, ALCbackend, obj)); } \
+static ALCboolean T##_ALCbackend_reset(ALCbackend *obj) \
+{ return T##_reset(STATIC_UPCAST(T, ALCbackend, obj)); } \
+static ALCboolean T##_ALCbackend_start(ALCbackend *obj) \
+{ return T##_start(STATIC_UPCAST(T, ALCbackend, obj)); } \
+static void T##_ALCbackend_stop(ALCbackend *obj) \
+{ T##_stop(STATIC_UPCAST(T, ALCbackend, obj)); } \
+static ALint64 T##_ALCbackend_getLatency(ALCbackend *obj) \
+{ return T##_getLatency(STATIC_UPCAST(T, ALCbackend, obj)); } \
+static void T##_ALCbackend_Delete(ALCbackend *obj) \
+{ T##_Delete(STATIC_UPCAST(T, ALCbackend, obj)); } \
+ \
+static const struct ALCbackendVtable T##_ALCbackend_vtable = { \
+ T##_ALCbackend_Destruct, \
+ \
+ T##_ALCbackend_open, \
+ T##_ALCbackend_close, \
+ T##_ALCbackend_reset, \
+ T##_ALCbackend_start, \
+ T##_ALCbackend_stop, \
+ T##_ALCbackend_getLatency, \
+ \
+ T##_ALCbackend_Delete, \
+}
+
+
+#endif /* AL_BACKENDS_BASE_H */