martincameron / micromod

Music player libraries for MOD, S3M and XM formats.
BSD 3-Clause "New" or "Revised" License
159 stars 28 forks source link

Use struct instead of global variables in C? #15

Open v1993 opened 5 years ago

v1993 commented 5 years ago

I think about writting C++ wrapper around C version. However, it looks like C version use global variables and can have only one state.

I suggest making it in pseudo-OOP way, like

struct micromod_obj {
    signed char *module_data;
    …
}

long micromod_initialise_obj( struct micromod_obj obj, signed char *data, long sampling_rate );

and so on. You can keep compatiblity by declaring static struct micromod_obj micromod_instance; and making exsiting functions just wrappers around it, like:

long micromod_initialise( signed char *data, long sampling_rate ) {
    return micromod_initialise_obj( micromod_instance, data, sampling_rate );
}

What do you think? I'll try to do it myself meanwhile.