36 #include <gwenhywfar/debug.h> 56 idt->freeEntries=GWEN_IDTABLE_MAXENTRIES;
79 for (i=0; i<GWEN_IDTABLE_MAXENTRIES; i++) {
80 if (idt->entries[i]==0) {
98 for (i=0; i<GWEN_IDTABLE_MAXENTRIES; i++) {
99 if (idt->entries[i]==
id) {
115 for (i=0; i<GWEN_IDTABLE_MAXENTRIES; i++) {
116 if (idt->entries[i]==
id) {
130 return GWEN_IDTABLE_MAXENTRIES==idt->freeEntries;
138 return idt->freeEntries==0;
146 return GWEN_IDTABLE_MAXENTRIES-idt->freeEntries;
157 for (i=0; i<GWEN_IDTABLE_MAXENTRIES; i++) {
158 if (idt->entries[i]!=0) {
160 return idt->entries[i];
174 for (i=idt->current+1; i<GWEN_IDTABLE_MAXENTRIES; i++) {
175 if (idt->entries[i]!=0) {
177 return idt->entries[i];
180 idt->current=GWEN_IDTABLE_MAXENTRIES;
192 for (i=0; i<GWEN_IDTABLE_MAXENTRIES; i++) {
193 if (idt->entries[i]!=0) {
195 return idt->entries[i];
210 for (i=(*tabIdx)+1; i<GWEN_IDTABLE_MAXENTRIES; i++) {
211 if (idt->entries[i]!=0) {
213 return idt->entries[i];
229 idl->idTables=GWEN_IdTable_List_new();
238 GWEN_IdTable_List_free(idl->idTables);
252 idt=GWEN_IdTable_List_First(idl->idTables);
257 idt=GWEN_IdTable_List_Next(idt);
262 GWEN_IdTable_List_Add(idt, idl->idTables);;
279 idt=GWEN_IdTable_List_First(idl->idTables);
288 idt=GWEN_IdTable_List_Next(idt);
301 idt=GWEN_IdTable_List_First(idl->idTables);
306 idt=GWEN_IdTable_List_Next(idt);
319 idt=GWEN_IdTable_List_First(idl->idTables);
324 next=GWEN_IdTable_List_Next(idt);
326 GWEN_IdTable_List_Del(idt);
341 idt=GWEN_IdTable_List_First(idl->idTables);
347 next=GWEN_IdTable_List_Next(idt);
381 idt=GWEN_IdTable_List_Next(idt);
388 idt=GWEN_IdTable_List_Next(idt);
407 idt=GWEN_IdTable_List_First(idl->idTables);
412 next=GWEN_IdTable_List_Next(idt);
421 ptr=(uint32_t *)malloc(
sizeof(uint32_t)*cnt);
424 for (i=0; i<cnt; i++) {
435 GWEN_IdTable_List_Clear(idl->idTables);
443 for (i=0; i<(cnt-1); i++) {
444 if (ptr[i]>ptr[i+1]) {
458 for (i=0; i<cnt; i++) {
471 GWEN_IdTable_List_Clear(idl->idTables);
486 idt=GWEN_IdTable_List_First(idl->idTables);
488 if (idt->freeEntries!=GWEN_IDTABLE_MAXENTRIES) {
491 for (i=0; i<GWEN_IDTABLE_MAXENTRIES; i++) {
492 if (idt->entries[i]!=0)
496 idt=GWEN_IdTable_List_Next(idt);
512 idt=GWEN_IdTable_List_First(idl->idTables);
519 next=GWEN_IdTable_List_Next(idt);
522 *pos=(tabNum*GWEN_IDTABLE_MAXENTRIES)+tabIdx;
543 tabNum=(*pos)/GWEN_IDTABLE_MAXENTRIES;
544 tabIdx=(*pos)%GWEN_IDTABLE_MAXENTRIES;
548 idt=GWEN_IdTable_List_First(idl->idTables);
550 idt=GWEN_IdTable_List_Next(idt);
557 next=GWEN_IdTable_List_Next(idt);
560 *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)