Mercurial > hg > Members > innparusu > Gears
comparison src/llrb/llrb.c @ 75:97387904add9
refactoring
author | Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 17 Nov 2015 15:53:51 +0900 |
parents | 724b65b1cfaf |
children | 7ad6d1502a03 |
comparison
equal
deleted
inserted
replaced
74:724b65b1cfaf | 75:97387904add9 |
---|---|
114 __code insertNode(struct Context* context, struct Tree* tree, struct Node* node, struct Node* newNode) { | 114 __code insertNode(struct Context* context, struct Tree* tree, struct Node* node, struct Node* newNode) { |
115 node->color = Red; | 115 node->color = Red; |
116 *newNode = *node; | 116 *newNode = *node; |
117 | 117 |
118 if (tree->root == 0) { | 118 if (tree->root == 0) { |
119 newNode->color = Black; | 119 tree->current = newNode; |
120 tree->root = newNode; | 120 goto meta(context, SetRoot); |
121 tree->current = 0; | 121 } |
122 | 122 |
123 stack_pop(context->code_stack, &context->next); | |
124 goto meta(context, context->next); | |
125 } | |
126 | |
127 goto meta(context, Balance1); | 123 goto meta(context, Balance1); |
128 } | 124 } |
129 | 125 |
130 __code insertNode_stub(struct Context* context) { | 126 __code insertNode_stub(struct Context* context) { |
131 goto insertNode(context, &context->data[Tree]->tree, &context->data[Node]->node, &context->data[context->dataNum]->node); | 127 goto insertNode(context, &context->data[Tree]->tree, &context->data[Node]->node, &context->data[context->dataNum]->node); |
186 | 182 |
187 if (stack_pop(context->node_stack, &tree->current) == 0) { | 183 if (stack_pop(context->node_stack, &tree->current) == 0) { |
188 compare(context, tree, tree->current->key, node->key); | 184 compare(context, tree, tree->current->key, node->key); |
189 goto meta(context, ChangeRef); | 185 goto meta(context, ChangeRef); |
190 } | 186 } |
191 | 187 |
192 newNode->color = Black; | 188 goto meta(context, SetRoot); |
193 tree->root = newNode; | 189 } |
190 | |
191 __code fixUp_stub(struct Context* context) { | |
192 goto fixUp(context, &context->data[Tree]->tree, &context->data[Node]->node, context->data[Tree]->tree.current); | |
193 } | |
194 | |
195 __code setRoot(struct Context* context, struct Tree* tree, struct Node* node) { | |
196 tree->root = node; | |
197 tree->root->color = Black; | |
194 tree->current = 0; | 198 tree->current = 0; |
195 | 199 |
196 stack_pop(context->code_stack, &context->next); | 200 stack_pop(context->code_stack, &context->next); |
197 goto meta(context, context->next); | 201 goto meta(context, context->next); |
198 } | 202 } |
199 | 203 |
200 __code fixUp_stub(struct Context* context) { | 204 __code setRoot_stub(struct Context* context) { |
201 goto fixUp(context, &context->data[Tree]->tree, &context->data[Node]->node, context->data[Tree]->tree.current); | 205 goto setRoot(context, &context->data[Tree]->tree, context->data[Tree]->tree.current); |
202 } | 206 } |
203 | 207 |
204 __code changeReference(struct Context* context, struct Tree* tree, struct Node* node, int result) { | 208 __code changeReference(struct Context* context, struct Tree* tree, struct Node* node, int result) { |
205 if (result == 1) { | 209 if (result == 1) { |
206 node->right = tree->prev; | 210 node->right = tree->prev; |