diff options
author | David Robillard <d@drobilla.net> | 2011-06-19 21:16:32 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2011-06-19 21:16:32 +0000 |
commit | 3e6c580c197929c126613fcfc546308abdc18c09 (patch) | |
tree | a1028e6f9818eea897f4b0b4f428020095a6de0e /src/symap.h | |
parent | 80b8b487093bf94cbcbba0b7e652374417370408 (diff) | |
download | jalv-3e6c580c197929c126613fcfc546308abdc18c09.tar.gz jalv-3e6c580c197929c126613fcfc546308abdc18c09.tar.bz2 jalv-3e6c580c197929c126613fcfc546308abdc18c09.zip |
Add a real URI map implementation.
git-svn-id: http://svn.drobilla.net/lad/trunk/jalv@3406 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/symap.h')
-rw-r--r-- | src/symap.h | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/src/symap.h b/src/symap.h new file mode 100644 index 0000000..15a271a --- /dev/null +++ b/src/symap.h @@ -0,0 +1,70 @@ +/* + Copyright 2011 David Robillard <http://drobilla.net> + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +*/ + +/** + @file symap.h API for Symap, a basic symbol map (string interner). + + Particularly useful and intended for implementation of the LV2 URI map and + URI unmap extensions. + + @see <a href="http://lv2plug.in/ns/ext/uri-map/">LV2 URI Map</a> + @see <a href="http://lv2plug.in/ns/ext/uri-unmap/">LV2 URI Unmap</a> +*/ + +#ifndef SYMAP_H +#define SYMAP_H + +#include <stdint.h> + +struct SymapImpl; + +typedef struct SymapImpl Symap; + +/** + Create a new symbol map. +*/ +Symap* +symap_new(); + +/** + Free a symbol map. +*/ +void +symap_free(Symap* map); + +/** + Map a string to a symbol ID if it is already mapped, otherwise return 0. +*/ +uint32_t +symap_try_map(Symap* map, const char* sym); + +/** + Map a string to a symbol ID. + + Note that 0 is never a valid symbol ID. +*/ +uint32_t +symap_map(Symap* map, const char* sym); + +/** + Unmap a symbol ID back to a symbol, or NULL if no such ID exists. + + Note that 0 is never a valid symbol ID. +*/ +const char* +symap_unmap(Symap* map, uint32_t id); + +#endif /* SYMAP_H */ |