• Home
  • Raw
  • Download

Lines Matching refs:dict

71 #define xmlDictComputeKey(dict, name, len)                              \  argument
72 (((dict)->size == MIN_DICT_SIZE) ? \
73 xmlDictComputeFastKey(name, len, (dict)->seed) : \
74 xmlDictComputeBigKey(name, len, (dict)->seed))
76 #define xmlDictComputeQKey(dict, prefix, plen, name, len) \ argument
78 (xmlDictComputeKey(dict, name, len)) : \
79 (((dict)->size == MIN_DICT_SIZE) ? \
80 xmlDictComputeFastQKey(prefix, plen, name, len, (dict)->seed) : \
81 xmlDictComputeBigQKey(prefix, plen, name, len, (dict)->seed)))
84 #define xmlDictComputeKey(dict, name, len) \ argument
85 xmlDictComputeFastKey(name, len, (dict)->seed)
86 #define xmlDictComputeQKey(dict, prefix, plen, name, len) \ argument
87 xmlDictComputeFastQKey(prefix, plen, name, len, (dict)->seed)
119 struct _xmlDictEntry *dict; member
242 xmlDictAddString(xmlDictPtr dict, const xmlChar *name, unsigned int namelen) { in xmlDictAddString() argument
251 pool = dict->strings; in xmlDictAddString()
263 if ((dict->limit > 0) && (limit > dict->limit)) { in xmlDictAddString()
278 pool->next = dict->strings; in xmlDictAddString()
279 dict->strings = pool; in xmlDictAddString()
306 xmlDictAddQString(xmlDictPtr dict, const xmlChar *prefix, unsigned int plen, in xmlDictAddQString() argument
314 if (prefix == NULL) return(xmlDictAddString(dict, name, namelen)); in xmlDictAddQString()
319 pool = dict->strings; in xmlDictAddQString()
331 if ((dict->limit > 0) && (limit > dict->limit)) { in xmlDictAddQString()
346 pool->next = dict->strings; in xmlDictAddQString()
347 dict->strings = pool; in xmlDictAddQString()
576 xmlDictPtr dict; in xmlDictCreate() local
586 dict = xmlMalloc(sizeof(xmlDict)); in xmlDictCreate()
587 if (dict) { in xmlDictCreate()
588 dict->ref_counter = 1; in xmlDictCreate()
589 dict->limit = 0; in xmlDictCreate()
591 dict->size = MIN_DICT_SIZE; in xmlDictCreate()
592 dict->nbElems = 0; in xmlDictCreate()
593 dict->dict = xmlMalloc(MIN_DICT_SIZE * sizeof(xmlDictEntry)); in xmlDictCreate()
594 dict->strings = NULL; in xmlDictCreate()
595 dict->subdict = NULL; in xmlDictCreate()
596 if (dict->dict) { in xmlDictCreate()
597 memset(dict->dict, 0, MIN_DICT_SIZE * sizeof(xmlDictEntry)); in xmlDictCreate()
599 dict->seed = __xmlRandom(); in xmlDictCreate()
601 dict->seed = 0; in xmlDictCreate()
603 return(dict); in xmlDictCreate()
605 xmlFree(dict); in xmlDictCreate()
623 xmlDictPtr dict = xmlDictCreate(); in xmlDictCreateSub() local
625 if ((dict != NULL) && (sub != NULL)) { in xmlDictCreateSub()
629 dict->seed = sub->seed; in xmlDictCreateSub()
630 dict->subdict = sub; in xmlDictCreateSub()
631 xmlDictReference(dict->subdict); in xmlDictCreateSub()
633 return(dict); in xmlDictCreateSub()
645 xmlDictReference(xmlDictPtr dict) { in xmlDictReference() argument
650 if (dict == NULL) return -1; in xmlDictReference()
652 dict->ref_counter++; in xmlDictReference()
667 xmlDictGrow(xmlDictPtr dict, size_t size) { in xmlDictGrow() argument
678 if (dict == NULL) in xmlDictGrow()
689 oldsize = dict->size; in xmlDictGrow()
690 olddict = dict->dict; in xmlDictGrow()
696 dict->dict = xmlMalloc(size * sizeof(xmlDictEntry)); in xmlDictGrow()
697 if (dict->dict == NULL) { in xmlDictGrow()
698 dict->dict = olddict; in xmlDictGrow()
701 memset(dict->dict, 0, size * sizeof(xmlDictEntry)); in xmlDictGrow()
702 dict->size = size; in xmlDictGrow()
717 okey = xmlDictComputeKey(dict, olddict[i].name, olddict[i].len); in xmlDictGrow()
718 key = okey % dict->size; in xmlDictGrow()
720 if (dict->dict[key].valid == 0) { in xmlDictGrow()
721 memcpy(&(dict->dict[key]), &(olddict[i]), sizeof(xmlDictEntry)); in xmlDictGrow()
722 dict->dict[key].next = NULL; in xmlDictGrow()
723 dict->dict[key].okey = okey; in xmlDictGrow()
732 entry->next = dict->dict[key].next; in xmlDictGrow()
734 dict->dict[key].next = entry; in xmlDictGrow()
760 okey = xmlDictComputeKey(dict, iter->name, iter->len); in xmlDictGrow()
761 key = okey % dict->size; in xmlDictGrow()
762 if (dict->dict[key].valid == 0) { in xmlDictGrow()
763 memcpy(&(dict->dict[key]), iter, sizeof(xmlDictEntry)); in xmlDictGrow()
764 dict->dict[key].next = NULL; in xmlDictGrow()
765 dict->dict[key].valid = 1; in xmlDictGrow()
766 dict->dict[key].okey = okey; in xmlDictGrow()
769 iter->next = dict->dict[key].next; in xmlDictGrow()
771 dict->dict[key].next = iter; in xmlDictGrow()
800 xmlDictFree(xmlDictPtr dict) { in xmlDictFree() argument
807 if (dict == NULL) in xmlDictFree()
816 dict->ref_counter--; in xmlDictFree()
817 if (dict->ref_counter > 0) { in xmlDictFree()
824 if (dict->subdict != NULL) { in xmlDictFree()
825 xmlDictFree(dict->subdict); in xmlDictFree()
828 if (dict->dict) { in xmlDictFree()
829 for(i = 0; ((i < dict->size) && (dict->nbElems > 0)); i++) { in xmlDictFree()
830 iter = &(dict->dict[i]); in xmlDictFree()
838 dict->nbElems--; in xmlDictFree()
843 xmlFree(dict->dict); in xmlDictFree()
845 pool = dict->strings; in xmlDictFree()
851 xmlFree(dict); in xmlDictFree()
865 xmlDictLookup(xmlDictPtr dict, const xmlChar *name, int len) { in xmlDictLookup() argument
872 if ((dict == NULL) || (name == NULL)) in xmlDictLookup()
880 if (((dict->limit > 0) && (l >= dict->limit)) || in xmlDictLookup()
887 okey = xmlDictComputeKey(dict, name, l); in xmlDictLookup()
888 key = okey % dict->size; in xmlDictLookup()
889 if (dict->dict[key].valid == 0) { in xmlDictLookup()
892 for (insert = &(dict->dict[key]); insert->next != NULL; in xmlDictLookup()
918 if (dict->subdict) { in xmlDictLookup()
922 if (((dict->size == MIN_DICT_SIZE) && in xmlDictLookup()
923 (dict->subdict->size != MIN_DICT_SIZE)) || in xmlDictLookup()
924 ((dict->size != MIN_DICT_SIZE) && in xmlDictLookup()
925 (dict->subdict->size == MIN_DICT_SIZE))) in xmlDictLookup()
926 skey = xmlDictComputeKey(dict->subdict, name, l); in xmlDictLookup()
930 key = skey % dict->subdict->size; in xmlDictLookup()
931 if (dict->subdict->dict[key].valid != 0) { in xmlDictLookup()
934 for (tmp = &(dict->subdict->dict[key]); tmp->next != NULL; in xmlDictLookup()
959 key = okey % dict->size; in xmlDictLookup()
962 ret = xmlDictAddString(dict, name, l); in xmlDictLookup()
966 entry = &(dict->dict[key]); in xmlDictLookup()
982 dict->nbElems++; in xmlDictLookup()
985 (dict->size <= ((MAX_DICT_HASH / 2) / MAX_HASH_LEN))) { in xmlDictLookup()
986 if (xmlDictGrow(dict, MAX_HASH_LEN * 2 * dict->size) != 0) in xmlDictLookup()
1005 xmlDictExists(xmlDictPtr dict, const xmlChar *name, int len) { in xmlDictExists() argument
1010 if ((dict == NULL) || (name == NULL)) in xmlDictExists()
1017 if (((dict->limit > 0) && (l >= dict->limit)) || in xmlDictExists()
1024 okey = xmlDictComputeKey(dict, name, l); in xmlDictExists()
1025 key = okey % dict->size; in xmlDictExists()
1026 if (dict->dict[key].valid == 0) { in xmlDictExists()
1029 for (insert = &(dict->dict[key]); insert->next != NULL; in xmlDictExists()
1055 if (dict->subdict) { in xmlDictExists()
1059 if (((dict->size == MIN_DICT_SIZE) && in xmlDictExists()
1060 (dict->subdict->size != MIN_DICT_SIZE)) || in xmlDictExists()
1061 ((dict->size != MIN_DICT_SIZE) && in xmlDictExists()
1062 (dict->subdict->size == MIN_DICT_SIZE))) in xmlDictExists()
1063 skey = xmlDictComputeKey(dict->subdict, name, l); in xmlDictExists()
1067 key = skey % dict->subdict->size; in xmlDictExists()
1068 if (dict->subdict->dict[key].valid != 0) { in xmlDictExists()
1071 for (tmp = &(dict->subdict->dict[key]); tmp->next != NULL; in xmlDictExists()
1113 xmlDictQLookup(xmlDictPtr dict, const xmlChar *prefix, const xmlChar *name) { in xmlDictQLookup() argument
1120 if ((dict == NULL) || (name == NULL)) in xmlDictQLookup()
1123 return(xmlDictLookup(dict, name, -1)); in xmlDictQLookup()
1132 okey = xmlDictComputeQKey(dict, prefix, plen, name, l); in xmlDictQLookup()
1133 key = okey % dict->size; in xmlDictQLookup()
1134 if (dict->dict[key].valid == 0) { in xmlDictQLookup()
1137 for (insert = &(dict->dict[key]); insert->next != NULL; in xmlDictQLookup()
1149 if (dict->subdict) { in xmlDictQLookup()
1153 if (((dict->size == MIN_DICT_SIZE) && in xmlDictQLookup()
1154 (dict->subdict->size != MIN_DICT_SIZE)) || in xmlDictQLookup()
1155 ((dict->size != MIN_DICT_SIZE) && in xmlDictQLookup()
1156 (dict->subdict->size == MIN_DICT_SIZE))) in xmlDictQLookup()
1157 skey = xmlDictComputeQKey(dict->subdict, prefix, plen, name, l); in xmlDictQLookup()
1161 key = skey % dict->subdict->size; in xmlDictQLookup()
1162 if (dict->subdict->dict[key].valid != 0) { in xmlDictQLookup()
1164 for (tmp = &(dict->subdict->dict[key]); tmp->next != NULL; in xmlDictQLookup()
1175 key = okey % dict->size; in xmlDictQLookup()
1178 ret = xmlDictAddQString(dict, prefix, plen, name, l); in xmlDictQLookup()
1182 entry = &(dict->dict[key]); in xmlDictQLookup()
1197 dict->nbElems++; in xmlDictQLookup()
1200 (dict->size <= ((MAX_DICT_HASH / 2) / MAX_HASH_LEN))) in xmlDictQLookup()
1201 xmlDictGrow(dict, MAX_HASH_LEN * 2 * dict->size); in xmlDictQLookup()
1218 xmlDictOwns(xmlDictPtr dict, const xmlChar *str) { in xmlDictOwns() argument
1221 if ((dict == NULL) || (str == NULL)) in xmlDictOwns()
1223 pool = dict->strings; in xmlDictOwns()
1229 if (dict->subdict) in xmlDictOwns()
1230 return(xmlDictOwns(dict->subdict, str)); in xmlDictOwns()
1244 xmlDictSize(xmlDictPtr dict) { in xmlDictSize() argument
1245 if (dict == NULL) in xmlDictSize()
1247 if (dict->subdict) in xmlDictSize()
1248 return(dict->nbElems + dict->subdict->nbElems); in xmlDictSize()
1249 return(dict->nbElems); in xmlDictSize()
1263 xmlDictSetLimit(xmlDictPtr dict, size_t limit) { in xmlDictSetLimit() argument
1266 if (dict == NULL) in xmlDictSetLimit()
1268 ret = dict->limit; in xmlDictSetLimit()
1269 dict->limit = limit; in xmlDictSetLimit()
1283 xmlDictGetUsage(xmlDictPtr dict) { in xmlDictGetUsage() argument
1287 if (dict == NULL) in xmlDictGetUsage()
1289 pool = dict->strings; in xmlDictGetUsage()