#ifndef _XAS_OBJECT_H #define _XAS_OBJECT_H #include typedef struct _xas_object_coord { float x, y, z; } xas_object_coord; typedef struct _xas_object xas_object; typedef int (*xas_object_start_callback)(xas_object *object, size_t index); typedef int (*xas_object_stop_callback)(xas_object *object, size_t index); typedef int (*xas_object_set_type_callback)(xas_object *object, size_t index, int type); typedef int (*xas_object_set_gain_callback)(xas_object *object, size_t index, float gain); typedef int (*xas_object_set_freq_callback)(xas_object *object, size_t index, size_t freq); typedef int (*xas_object_set_entry_callback)(xas_object *object, size_t index, size_t entry); typedef int (*xas_object_set_flags_callback)(xas_object *object, size_t index, int flags); typedef int (*xas_object_set_point_callback)(xas_object *object, size_t index, xas_object_coord point); typedef int (*xas_object_set_heading_callback)(xas_object *object, size_t index, xas_object_coord heading); typedef int (*xas_object_set_speed_callback)(xas_object *object, size_t index, float speed); typedef xas_audio_stream *(*xas_object_stream_new_callback)(xas_object *object); typedef void (*xas_object_destroy_callback)(xas_object *object); typedef struct _xas_object_call_table { xas_object_start_callback start; xas_object_stop_callback stop; xas_object_set_type_callback set_type; xas_object_set_gain_callback set_gain; xas_object_set_entry_callback set_entry; xas_object_set_freq_callback set_freq; xas_object_set_flags_callback set_flags; xas_object_set_point_callback set_point; xas_object_set_heading_callback set_heading; xas_object_set_speed_callback set_speed; xas_object_stream_new_callback stream_new; xas_object_destroy_callback destroy; } xas_object_call_table; struct _xas_object { xas_object_call_table *table; }; int xas_object_start(xas_object *object, size_t index); int xas_object_stop(xas_object *object, size_t index); int xas_object_set_type(xas_object *object, size_t index, int type); int xas_object_set_gain(xas_object *object, size_t index, float gain); int xas_object_set_entry(xas_object *object, size_t index, size_t entry); int xas_object_set_freq(xas_object *object, size_t index, size_t freq); int xas_object_set_flags(xas_object *object, size_t index, int flags); int xas_object_set_point(xas_object *object, size_t index, xas_object_coord point); int xas_object_set_heading(xas_object *object, size_t index, xas_object_coord heading); int xas_object_set_speed(xas_object *object, size_t index, float speed); xas_audio_stream *xas_object_stream_new(xas_object *object); void xas_object_destroy(xas_object *object); #endif /* _XAS_OBJECT_H */