|
Comprehensive C Archive Network |
|---|
| Upload Code | Download Code | About |
| Browse Source | Download (without any required ccan dependencies) |
Module:stringmap |
Summary:Macros for mapping strings to things |
Dependencies:ccan/block_pool |
Description:stringmap provides a generic string map via macros. It also supports byte strings with null characters. Features which are sorely lacking in this version of stringmap are deletion and traversal. |
Example:
#include <ccan/stringmap/stringmap.h>
static const char *get_string(void) {
static char buffer[4096];
char *tail;
if (!fgets(buffer, sizeof(buffer), stdin))
return NULL;
tail = strchr(buffer, 0);
if (tail>buffer && tail[-1]=='\n')
*--tail = 0;
if (!*buffer)
return NULL;
return buffer;
}
int main(void) {
stringmap(int) map = stringmap_new(NULL);
const char *string;
while ((string = get_string()) != NULL) {
int *count = stringmap_lookup(map, string);
if (!count) {
printf("\"%s\" is new\n", string);
count = stringmap_enter(map, string);
}
(*count) ++;
printf("\"%s\" has been entered %d times\n", string, *count);
}
stringmap_free(map);
return 0;
}
|
License:BSD (3 clause) |