summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/object.c55
1 files changed, 54 insertions, 1 deletions
diff --git a/src/object.c b/src/object.c
index 7aaaa6e..4526bc5 100644
--- a/src/object.c
+++ b/src/object.c
@@ -1,21 +1,74 @@
+#include <string.h>
+#include <errno.h>
+
#include <xas/object.h>
+void xas_object_init(xas_object *object) {
+ memset(object, '\0', sizeof(xas_object));
+}
+
int xas_object_start(xas_object *object) {
+ if (object->start == NULL) {
+ errno = ENOSYS;
+
+ return -1;
+ }
+
return object->start(object);
}
int xas_object_stop(xas_object *object) {
+ if (object->stop == NULL) {
+ errno = ENOSYS;
+
+ return -1;
+ }
+
return object->stop(object);
}
int xas_object_set_gain(xas_object *object, float gain) {
+ if (object->set_gain == NULL) {
+ errno = ENOSYS;
+
+ return -1;
+ }
+
return object->set_gain(object, gain);
}
+int xas_object_set_bank(xas_object *object, size_t bank) {
+ if (object->set_bank == NULL) {
+ errno = ENOSYS;
+
+ return -1;
+ }
+
+ return object->set_bank(object, bank);
+}
+
+int xas_object_set_freq(xas_object *object, size_t freq) {
+ if (object->set_freq == NULL) {
+ errno = ENOSYS;
+
+ return -1;
+ }
+
+ return object->set_freq(object, freq);
+}
+
xas_audio_stream *xas_object_stream_new(xas_object *object) {
+ if (object->stream_new == NULL) {
+ errno = ENOSYS;
+
+ return NULL;
+ }
+
return object->stream_new(object);
}
void xas_object_destroy(xas_object *object) {
- object->destroy(object);
+ if (object->destroy) {
+ object->destroy(object);
+ }
}