GRASS Programmer's Manual
6.4.1(2011)
|
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 }