token.c

Go to the documentation of this file.
00001 #include <grass/dbmi.h>
00002 
00003 /* these routines manage a mapping between tokens (ints) and memory addresses */
00004 #define NONE ( (dbAddress) NULL )
00005 
00006 static dbAddress *list = NONE;
00007 static dbToken count = 0;
00008 
00015 dbAddress db_find_token(dbToken token)
00016 {
00017     if (token >= 0 && token < count)
00018         return list[token];
00019     return (NONE);
00020 }
00021 
00028 void db_drop_token(dbToken token)
00029 {
00030     if (token >= 0 && token < count)
00031         list[token] = NONE;
00032 }
00033 
00040 dbToken db_new_token(dbAddress address)
00041 {
00042     dbToken token;
00043     dbAddress *p;
00044 
00045     for (token = 0; token < count; token++)
00046         if (list[token] == NONE) {
00047             list[token] = address;
00048             return token;
00049         }
00050 
00051     p = (dbAddress *) db_realloc((void *)list, sizeof(*list) * (count + 1));
00052     if (p == NULL)
00053         return -1;
00054 
00055     list = p;
00056     token = count++;
00057     list[token] = address;
00058     return (token);
00059 }

Generated on Thu Jul 16 13:20:15 2009 for GRASS Programmer's Manual by  doxygen 1.5.6