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 
00016 db_find_token  (dbToken token)
00017 
00018 {
00019     if (token >= 0 && token < count)
00020         return list[token];
00021     return (NONE);
00022 }
00023 
00030 void
00031 db_drop_token  (dbToken token)
00032 
00033 {
00034     if (token >= 0 && token < count)
00035         list[token] = NONE;
00036 }
00037 
00044 dbToken
00045 db_new_token  (dbAddress address)
00046 
00047 {
00048     dbToken token;
00049     dbAddress *p;
00050 
00051     for (token = 0; token < count; token++)
00052         if (list[token] == NONE)
00053         {
00054             list[token] = address;
00055             return token;
00056         }
00057     
00058     p = (dbAddress *) db_realloc ((void *)list, sizeof(*list) * (count+1));
00059     if (p == NULL)
00060         return -1;
00061     
00062     list = p;
00063     token = count++;
00064     list[token] = address;
00065     return (token);
00066 }

Generated on Sun Apr 6 17:31:38 2008 for GRASS by  doxygen 1.5.5