On Sun, 2007-12-02 at 21:08 -0500, Dave Robillard wrote: > On Mon, 2007-12-03 at 02:29 +0100, Lars Luthman wrote: > > For the URI<->int mapping, I've changed my mind and vote for a separate > > Feature that you have to explicitly list in the RDF file. It may be > > useful for other extensions where you need to have arbitrarily > > extendable stuff that you want to match to your known data reasonably > > fast. The actual mapping would be done by the host by passing a > > NULL-terminated URI array as the data for that Feature, where the index > > of an URI in the array is the associated integer value. Or maybe we > > should pass the size of the array as well and require that it's sorted > > in lexicographical order, so a clever plugin can do a binary search? Not > > really important, it will only happen at instantiation time anyway. > > Fully agreed. int<->URI mapping is generic and widely useful. This > does have me thinking about range though.. you can have an awful lot of > URIs in a system. I guess the generic extension can map to, say, > uint32_t, but the event extension can specifically say the event type > URIs need to fit in uint16_t? Maybe doesn't matter but I think allowing > a huge number of URIs is a good idea if it's just a single (or half) > word, just in case.
I doubt anyone is ever going to use more than a couple of tens of URIs with this. It's really only for things that will be compared and processed in a realtime thread, non-time-critical code might as well use strings directly. I'm fine with limiting the total number of URIs (or symbols or names or whatever) to 2^16 in the URI mapping extension itself to avoid annoying and inelegant constraints in the event port extension. > If it is just for URIs, we could maybe take advantage of prefixes and > save some space in that table? lv2:Plugin is a lot nicer to deal with > in all cases than http://lv2plug.in/ns/spec/lv2core#Plugin.... Hm. Feels a bit hacky. Memory isn't really an issue unless you use tens of thousands of these which seems a bit unlikely, and if it's just for code prettification you might as well use a macro. #define LV2(sfx) "http://lv2plug.in/ns/spec/lv2core#" sfx const char* my_uri_map[] = { LV2("Plugin"), LV2("Baaah"), NULL }; --ll
signature.asc
Description: This is a digitally signed message part
_______________________________________________ Linux-audio-dev mailing list [email protected] http://lists.linuxaudio.org/mailman/listinfo/linux-audio-dev
