On Monday 02 June 2003 19.48, Chris Grigg wrote: [...] > >class AudioBuffer > >{ > > bool IsZero() const; > > void SetZero( bool ); > > float* GetPointer(); > > float* GetRawPointer(); > >}; [...] > Very likeable. But... don't we have a C-language-implementable > mandate? If so, care to comment on C-language implementation? How OO do you want it? :-) --- Version 1 --------------------------------------------- typedef struct { int is_zero; float *data; } GMPI_buffer; #define gmpi_buffer_is_zero(x) ((x)->is_zero) #define gmpi_buffer_set_zero(x, y) ((x)->is_zero = (y)) static inline float *gmpi_buffer_get_pointer(GMPI_buffer *b) { if(gmpi_buffer_is_zero(b)) gmpi_zero_fill_buffer(b); return b->data; } #define gmpi_buffer_get_raw_pointer(x) ((x)->data) --- Version 2 --------------------------------------------- typedef struct { int is_zero; float *data; } GMPI_buffer; #define gmpi_buffer_is_zero(x) ((x)->is_zero) #define gmpi_buffer_set_zero(x, y) ((x)->is_zero = (y)) #define gmpi_buffer_get_raw_pointer(x) ((x)->data) In the host interface struct: float *(*buffer_get_pointer)(GMPI_buffer *b); --- Version 3 --------------------------------------------- typedef struct GMPI_buffer { int is_zero; float *data; float *(*get_pointer)(struct GMPI_buffer *b); } GMPI_buffer; #define gmpi_buffer_is_zero(x) ((x)->is_zero) #define gmpi_buffer_set_zero(x, y) ((x)->is_zero = (y)) #define gmpi_buffer_get_pointer(x) ((x)->get_pointer(x)) #define gmpi_buffer_get_raw_pointer(x) ((x)->data) ----------------------------------------------------------- Could be typos and stuff in there. You get the idea, though. Of course, if we ignore really old compilers and assume that we have either C99 or something that can "#define inline __inline__" or whatever, as needed, we can ditch all the creepy macros and use static inlines for everything instead. I just used #defines here because it's a more compact way of explaining the basic idea. //David Olofson - Programmer, Composer, Open Source Advocate .- The Return of Audiality! --------------------------------. | Free/Open Source Audio Engine for use in Games or Studio. | | RT and off-line synth. Scripting. Sample accurate timing. | `-----------------------------------> http://audiality.org -' --- http://olofson.net --- http://www.reologica.se --- ---------------------------------------------------------------------- Generalized Music Plugin Interface (GMPI) public discussion list Participation in this list is contingent upon your abiding by the following rules: Please stay on topic. You are responsible for your own words. Please respect your fellow subscribers. Please do not redistribute anyone else's words without their permission. Archive: //www.freelists.org/archives/gmpi Email gmpi-request@xxxxxxxxxxxxx w/ subject "unsubscribe" to unsubscribe