From 3e6c580c197929c126613fcfc546308abdc18c09 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Sun, 19 Jun 2011 21:16:32 +0000 Subject: Add a real URI map implementation. git-svn-id: http://svn.drobilla.net/lad/trunk/jalv@3406 a436a847-0d15-0410-975c-d299462d15a1 --- src/symap.h | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 src/symap.h (limited to 'src/symap.h') 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 + + 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 LV2 URI Map + @see LV2 URI Unmap +*/ + +#ifndef SYMAP_H +#define SYMAP_H + +#include + +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 */ -- cgit v1.2.1