Rework RBTree to use RBNode in the compare function
This commit is contained in:
+3
-3
@@ -251,11 +251,11 @@ uc_rb_remove(RBTree *root, RBNode *node)
|
||||
}
|
||||
|
||||
RBNode*
|
||||
uc_rb_find(RBTree *root, const void *val)
|
||||
uc_rb_find(RBTree *root, const RBNode *val)
|
||||
{
|
||||
RBNode *n = root->node;
|
||||
while (n) {
|
||||
int d = root->compare(val,n->data);
|
||||
int d = root->compare(val,n);
|
||||
if (d < 0)
|
||||
n = n->left;
|
||||
else if (d > 0)
|
||||
@@ -274,7 +274,7 @@ uc_rb_insert(RBTree *root, RBNode *child)
|
||||
int d;
|
||||
while (*p) {
|
||||
parent = *p;
|
||||
d = root->compare(child->data, parent->data);
|
||||
d = root->compare(child, parent);
|
||||
if (d < 0)
|
||||
p = &(*p)->left;
|
||||
else if (d > 0)
|
||||
|
||||
+4
-3
@@ -1,12 +1,13 @@
|
||||
#include <assert.h>
|
||||
#include "ucore/timers.h"
|
||||
#include "ucore/clock.h"
|
||||
#include "ucore/utils.h"
|
||||
|
||||
|
||||
static int timers_cmp(const void *a_, const void *b_)
|
||||
static int timers_cmp(const RBNode *a_, const RBNode *b_)
|
||||
{
|
||||
const struct UCTimer *a = a_;
|
||||
const struct UCTimer *b = b_;
|
||||
const struct UCTimer *a = CONST_CONTAINER_OF(a_, struct UCTimer, rb_node);
|
||||
const struct UCTimer *b = CONST_CONTAINER_OF(b_, struct UCTimer, rb_node);
|
||||
|
||||
if (timercmp(&a->timeout, &b->timeout, <)) {
|
||||
return -1;
|
||||
|
||||
Reference in New Issue
Block a user