/* Create a word database object. */ TCWDB *tcwdbnew(void){ TCWDB *wdb = tcmalloc(sizeof(*wdb)); wdb->mmtx = tcmalloc(sizeof(pthread_rwlock_t)); if(pthread_rwlock_init(wdb->mmtx, NULL) != 0) tcmyfatal("pthread_rwlock_init failed"); wdb->idx = tcbdbnew(); if(!tcbdbsetmutex(wdb->idx)) tcmyfatal("tcbdbsetmutex failed"); wdb->open = false; wdb->cc = NULL; wdb->icsiz = WDBCCDEFICSIZ; wdb->lcnum = 0; wdb->dtokens = NULL; wdb->dids = NULL; wdb->etnum = WDBDEFETNUM; wdb->opts = 0; wdb->fwmmax = WDBDEFFWMMAX; wdb->synccb = NULL; wdb->syncopq = NULL; wdb->addcb = NULL; wdb->addopq = NULL; return wdb; }
/* Re-allocate a region on memory. */ void *tcrealloc(void *ptr, size_t size){ assert(size > 0); char *p = realloc(ptr, size); if(!p) tcmyfatal("out of memory"); return p; }
/* Allocate a region on memory. */ void *tcmalloc(size_t size){ assert(size > 0 && size < INT_MAX); char *p = malloc(size); if(!p) tcmyfatal("out of memory"); return p; }