/ entropy-gathering / items-dict.c
items-dict.c
1 #include <stdlib.h> 2 #include "items-dict.h" 3 4 static int sorted = 0; 5 int comp(const void *a, const void *b) 6 { 7 return ((DESC *)a)->code - ((DESC *)b)->code; 8 } 9 10 const DESC *dict_desc(int dictnum, uint16_t code) 11 { 12 int i, bot, top; 13 14 if (!sorted) { 15 for (i = 0; i < sizeof(dicts) / sizeof(dicts[0]); i++) 16 qsort(dicts[i].dict, dicts[i].dict_sz / dicts[i].dict_membsz, 17 dicts[i].dict_membsz, comp); 18 } 19 20 bot = 0; 21 top = dicts[dictnum].dict_sz / dicts[dictnum].dict_membsz; 22 while (top > bot) { 23 i = (bot + top) / 2; 24 if (code == dicts[dictnum].dict[i].code) 25 break; 26 if (code > dicts[dictnum].dict[i].code) 27 bot = i; 28 else 29 top = i; 30 } 31 return &dicts[dictnum].dict[i]; 32 }