Browse Source Download (without any required ccan dependencies)

Module:

stringmap

Summary:

Macros for mapping strings to things

Dependencies:

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)