Lines Matching refs:level
58 zskiplistNode *zslCreateNode(int level, double score, robj *obj) { in zslCreateNode() argument
59 zskiplistNode *zn = zmalloc(sizeof(*zn)+level*sizeof(struct zskiplistLevel)); in zslCreateNode()
70 zsl->level = 1; in zslCreate()
74 zsl->header->level[j].forward = NULL; in zslCreate()
75 zsl->header->level[j].span = 0; in zslCreate()
88 zskiplistNode *node = zsl->header->level[0].forward, *next; in zslFree()
92 next = node->level[0].forward; in zslFree()
104 int level = 1; in zslRandomLevel() local
106 level += 1; in zslRandomLevel()
107 return (level<ZSKIPLIST_MAXLEVEL) ? level : ZSKIPLIST_MAXLEVEL; in zslRandomLevel()
113 int i, level; in zslInsert() local
117 for (i = zsl->level-1; i >= 0; i--) { in zslInsert()
119 rank[i] = i == (zsl->level-1) ? 0 : rank[i+1]; in zslInsert()
120 while (x->level[i].forward && in zslInsert()
121 (x->level[i].forward->score < score || in zslInsert()
122 (x->level[i].forward->score == score && in zslInsert()
123 compareStringObjects(x->level[i].forward->obj,obj) < 0))) { in zslInsert()
124 rank[i] += x->level[i].span; in zslInsert()
125 x = x->level[i].forward; in zslInsert()
133 level = zslRandomLevel(); in zslInsert()
134 if (level > zsl->level) { in zslInsert()
135 for (i = zsl->level; i < level; i++) { in zslInsert()
138 update[i]->level[i].span = zsl->length; in zslInsert()
140 zsl->level = level; in zslInsert()
142 x = zslCreateNode(level,score,obj); in zslInsert()
143 for (i = 0; i < level; i++) { in zslInsert()
144 x->level[i].forward = update[i]->level[i].forward; in zslInsert()
145 update[i]->level[i].forward = x; in zslInsert()
148 x->level[i].span = update[i]->level[i].span - (rank[0] - rank[i]); in zslInsert()
149 update[i]->level[i].span = (rank[0] - rank[i]) + 1; in zslInsert()
153 for (i = level; i < zsl->level; i++) { in zslInsert()
154 update[i]->level[i].span++; in zslInsert()
158 if (x->level[0].forward) in zslInsert()
159 x->level[0].forward->backward = x; in zslInsert()
169 for (i = 0; i < zsl->level; i++) { in zslDeleteNode()
170 if (update[i]->level[i].forward == x) { in zslDeleteNode()
171 update[i]->level[i].span += x->level[i].span - 1; in zslDeleteNode()
172 update[i]->level[i].forward = x->level[i].forward; in zslDeleteNode()
174 update[i]->level[i].span -= 1; in zslDeleteNode()
177 if (x->level[0].forward) { in zslDeleteNode()
178 x->level[0].forward->backward = x->backward; in zslDeleteNode()
182 while(zsl->level > 1 && zsl->header->level[zsl->level-1].forward == NULL) in zslDeleteNode()
183 zsl->level--; in zslDeleteNode()
193 for (i = zsl->level-1; i >= 0; i--) { in zslDelete()
194 while (x->level[i].forward && in zslDelete()
195 (x->level[i].forward->score < score || in zslDelete()
196 (x->level[i].forward->score == score && in zslDelete()
197 compareStringObjects(x->level[i].forward->obj,obj) < 0))) in zslDelete()
198 x = x->level[i].forward; in zslDelete()
203 x = x->level[0].forward; in zslDelete()
231 x = zsl->header->level[0].forward; in zslIsInRange()
247 for (i = zsl->level-1; i >= 0; i--) { in zslFirstInRange()
249 while (x->level[i].forward && in zslFirstInRange()
250 !zslValueGteMin(x->level[i].forward->score,range)) in zslFirstInRange()
251 x = x->level[i].forward; in zslFirstInRange()
255 x = x->level[0].forward; in zslFirstInRange()
273 for (i = zsl->level-1; i >= 0; i--) { in zslLastInRange()
275 while (x->level[i].forward && in zslLastInRange()
276 zslValueLteMax(x->level[i].forward->score,range)) in zslLastInRange()
277 x = x->level[i].forward; in zslLastInRange()
298 for (i = zsl->level-1; i >= 0; i--) { in zslDeleteRangeByScore()
299 while (x->level[i].forward && (range->minex ? in zslDeleteRangeByScore()
300 x->level[i].forward->score <= range->min : in zslDeleteRangeByScore()
301 x->level[i].forward->score < range->min)) in zslDeleteRangeByScore()
302 x = x->level[i].forward; in zslDeleteRangeByScore()
307 x = x->level[0].forward; in zslDeleteRangeByScore()
313 zskiplistNode *next = x->level[0].forward; in zslDeleteRangeByScore()
330 for (i = zsl->level-1; i >= 0; i--) { in zslDeleteRangeByLex()
331 while (x->level[i].forward && in zslDeleteRangeByLex()
332 !zslLexValueGteMin(x->level[i].forward->obj,range)) in zslDeleteRangeByLex()
333 x = x->level[i].forward; in zslDeleteRangeByLex()
338 x = x->level[0].forward; in zslDeleteRangeByLex()
342 zskiplistNode *next = x->level[0].forward; in zslDeleteRangeByLex()
360 for (i = zsl->level-1; i >= 0; i--) { in zslDeleteRangeByRank()
361 while (x->level[i].forward && (traversed + x->level[i].span) < start) { in zslDeleteRangeByRank()
362 traversed += x->level[i].span; in zslDeleteRangeByRank()
363 x = x->level[i].forward; in zslDeleteRangeByRank()
369 x = x->level[0].forward; in zslDeleteRangeByRank()
371 zskiplistNode *next = x->level[0].forward; in zslDeleteRangeByRank()
392 for (i = zsl->level-1; i >= 0; i--) { in zslGetRank()
393 while (x->level[i].forward && in zslGetRank()
394 (x->level[i].forward->score < score || in zslGetRank()
395 (x->level[i].forward->score == score && in zslGetRank()
396 compareStringObjects(x->level[i].forward->obj,o) <= 0))) { in zslGetRank()
397 rank += x->level[i].span; in zslGetRank()
398 x = x->level[i].forward; in zslGetRank()
416 for (i = zsl->level-1; i >= 0; i--) { in zslGetElementByRank()
417 while (x->level[i].forward && (traversed + x->level[i].span) <= rank) in zslGetElementByRank()
419 traversed += x->level[i].span; in zslGetElementByRank()
420 x = x->level[i].forward; in zslGetElementByRank()
574 x = zsl->header->level[0].forward; in zslIsInLexRange()
590 for (i = zsl->level-1; i >= 0; i--) { in zslFirstInLexRange()
592 while (x->level[i].forward && in zslFirstInLexRange()
593 !zslLexValueGteMin(x->level[i].forward->obj,range)) in zslFirstInLexRange()
594 x = x->level[i].forward; in zslFirstInLexRange()
598 x = x->level[0].forward; in zslFirstInLexRange()
616 for (i = zsl->level-1; i >= 0; i--) { in zslLastInLexRange()
618 while (x->level[i].forward && in zslLastInLexRange()
619 zslLexValueLteMax(x->level[i].forward->obj,range)) in zslLastInLexRange()
620 x = x->level[i].forward; in zslLastInLexRange()
1147 node = zs->zsl->header->level[0].forward; in zsetConvert()
1156 next = node->level[0].forward; in zsetConvert()
1673 it->sl.node = it->sl.zs->zsl->header->level[0].forward; in zuiInitIterator()
1789 it->sl.node = it->sl.node->level[0].forward; in zuiNext()
2266 ln = zsl->header->level[0].forward; in zrangeGenericCommand()
2277 ln = reverse ? ln->backward : ln->level[0].forward; in zrangeGenericCommand()
2442 ln = ln->level[0].forward; in genericZrangebyscoreCommand()
2465 ln = ln->level[0].forward; in genericZrangebyscoreCommand()
2790 ln = ln->level[0].forward; in genericZrangebylexCommand()
2809 ln = ln->level[0].forward; in genericZrangebylexCommand()