00001 #include <grass/dbmi.h>
00002
00003
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 }