36 #include <gwenhywfar/debug.h>
55 idt->freeEntries=GWEN_IDTABLE_MAXENTRIES;
76 for (i=0; i<GWEN_IDTABLE_MAXENTRIES; i++) {
77 if (idt->entries[i]==0) {
94 for (i=0; i<GWEN_IDTABLE_MAXENTRIES; i++) {
95 if (idt->entries[i]==
id) {
110 for (i=0; i<GWEN_IDTABLE_MAXENTRIES; i++) {
111 if (idt->entries[i]==
id) {
124 return GWEN_IDTABLE_MAXENTRIES==idt->freeEntries;
131 return idt->freeEntries==0;
138 return GWEN_IDTABLE_MAXENTRIES-idt->freeEntries;
148 for (i=0; i<GWEN_IDTABLE_MAXENTRIES; i++) {
149 if (idt->entries[i]!=0) {
151 return idt->entries[i];
164 for (i=idt->current+1; i<GWEN_IDTABLE_MAXENTRIES; i++) {
165 if (idt->entries[i]!=0) {
167 return idt->entries[i];
170 idt->current=GWEN_IDTABLE_MAXENTRIES;
181 for (i=0; i<GWEN_IDTABLE_MAXENTRIES; i++) {
182 if (idt->entries[i]!=0) {
184 return idt->entries[i];
198 for (i=(*tabIdx)+1; i<GWEN_IDTABLE_MAXENTRIES; i++) {
199 if (idt->entries[i]!=0) {
201 return idt->entries[i];
216 idl->idTables=GWEN_IdTable_List_new();
224 GWEN_IdTable_List_free(idl->idTables);
237 idt=GWEN_IdTable_List_First(idl->idTables);
242 idt=GWEN_IdTable_List_Next(idt);
247 GWEN_IdTable_List_Add(idt, idl->idTables);;
263 idt=GWEN_IdTable_List_First(idl->idTables);
272 idt=GWEN_IdTable_List_Next(idt);
284 idt=GWEN_IdTable_List_First(idl->idTables);
289 idt=GWEN_IdTable_List_Next(idt);
301 idt=GWEN_IdTable_List_First(idl->idTables);
306 next=GWEN_IdTable_List_Next(idt);
308 GWEN_IdTable_List_Del(idt);
322 idt=GWEN_IdTable_List_First(idl->idTables);
328 next=GWEN_IdTable_List_Next(idt);
361 idt=GWEN_IdTable_List_Next(idt);
368 idt=GWEN_IdTable_List_Next(idt);
386 idt=GWEN_IdTable_List_First(idl->idTables);
391 next=GWEN_IdTable_List_Next(idt);
400 ptr=(uint32_t*)malloc(
sizeof(uint32_t)*cnt);
403 for (i=0; i<cnt; i++) {
414 GWEN_IdTable_List_Clear(idl->idTables);
422 for (i=0; i<(cnt-1); i++) {
423 if (ptr[i]>ptr[i+1]) {
437 for (i=0; i<cnt; i++) {
449 GWEN_IdTable_List_Clear(idl->idTables);
463 idt=GWEN_IdTable_List_First(idl->idTables);
465 if (idt->freeEntries!=GWEN_IDTABLE_MAXENTRIES) {
468 for (i=0; i<GWEN_IDTABLE_MAXENTRIES; i++) {
469 if (idt->entries[i]!=0)
473 idt=GWEN_IdTable_List_Next(idt);
488 idt=GWEN_IdTable_List_First(idl->idTables);
495 next=GWEN_IdTable_List_Next(idt);
498 *pos=(tabNum*GWEN_IDTABLE_MAXENTRIES)+tabIdx;
518 tabNum=(*pos)/GWEN_IDTABLE_MAXENTRIES;
519 tabIdx=(*pos)%GWEN_IDTABLE_MAXENTRIES;
523 idt=GWEN_IdTable_List_First(idl->idTables);
524 while(i--) idt=GWEN_IdTable_List_Next(idt);
531 next=GWEN_IdTable_List_Next(idt);
534 *pos=(tabNum*GWEN_IDTABLE_MAXENTRIES)+tabIdx;
void GWEN_IdList_Clean(GWEN_IDLIST *idl)
GWEN_IDLIST * GWEN_IdList_new(void)
int GWEN_IdTable_IsEmpty(const GWEN_IDTABLE *idt)
void GWEN_IdList_free(GWEN_IDLIST *idl)
uint32_t GWEN_IdList_GetNextId(GWEN_IDLIST *idl)
void GWEN_IdTable_free(GWEN_IDTABLE *idt)
#define GWEN_FREE_OBJECT(varname)
int GWEN_IdList_HasId(const GWEN_IDLIST *idl, uint32_t id)
uint32_t GWEN_IdTable_GetNextId2(const GWEN_IDTABLE *idt, uint32_t *tabIdx)
GWEN_IDTABLE * GWEN_IdTable_new(void)
uint32_t GWEN_IdTable_GetFirstId2(const GWEN_IDTABLE *idt, uint32_t *tabIdx)
uint32_t GWEN_IdTable_GetNextId(GWEN_IDTABLE *idt)
void GWEN_IdList_Clear(GWEN_IDLIST *idl)
int GWEN_IdTable_AddId(GWEN_IDTABLE *idt, uint32_t id)
#define GWEN_NEW_OBJECT(typ, varname)
uint32_t GWEN_IdTable_GetFirstId(GWEN_IDTABLE *idt)
int GWEN_IdTable_DelId(GWEN_IDTABLE *idt, uint32_t id)
struct GWEN_IDLIST GWEN_IDLIST
GWEN_IDLIST * GWEN_IdList_dup(const GWEN_IDLIST *idl)
int GWEN_IdList_DelId(GWEN_IDLIST *idl, uint32_t id)
uint32_t GWEN_IdList_GetNextId2(const GWEN_IDLIST *idl, uint32_t *pos)
uint32_t GWEN_IdList_GetFirstId2(const GWEN_IDLIST *idl, uint32_t *pos)
unsigned int GWEN_IdTable_GetCount(const GWEN_IDTABLE *idt)
#define GWEN_LIST_INIT(t, element)
int GWEN_IdList_Sort(GWEN_IDLIST *idl)
uint32_t GWEN_IdList_GetFirstId(GWEN_IDLIST *idl)
#define GWEN_LIST_FUNCTIONS(t, pr)
#define GWEN_LIST_FINI(t, element)
int GWEN_IdTable_IsFull(const GWEN_IDTABLE *idt)
int GWEN_IdList_AddId(GWEN_IDLIST *idl, uint32_t id)
int GWEN_IdTable_HasId(const GWEN_IDTABLE *idt, uint32_t id)