Mercurial > hg > Gears > GearsAgda
comparison src/parallel_execution/rb_tree.c @ 127:fe1fbfec7d01
stack clear
author | kono |
---|---|
date | Thu, 29 Sep 2016 22:22:36 +0900 |
parents | c7ac153f86dd |
children | 2bb5e4f0fd35 |
comparison
equal
deleted
inserted
replaced
126:c7ac153f86dd | 127:fe1fbfec7d01 |
---|---|
108 &context->data[Traverse]->traverse.nodeStack->data->node, | 108 &context->data[Traverse]->traverse.nodeStack->data->node, |
109 newnewNode, | 109 newnewNode, |
110 context->data[Traverse]->traverse.result); | 110 context->data[Traverse]->traverse.result); |
111 } | 111 } |
112 | 112 |
113 __code insertNode(struct Context* context, struct Traverse* traverse, struct Tree* tree, struct Node* node, struct Node* newNode) { | 113 __code insertNode(struct Context* context, struct Traverse* traverse, struct Node* node, struct Node* newNode) { |
114 *newNode = *node; | 114 *newNode = *node; |
115 newNode->color = Red; | 115 newNode->color = Red; |
116 traverse->current = newNode; | 116 traverse->current = newNode; |
117 tree->root->color = Black; | |
118 goto meta(context, InsertCase1); | 117 goto meta(context, InsertCase1); |
119 } | 118 } |
120 | 119 |
121 __code insertNode_stub(struct Context* context) { | 120 __code insertNode_stub(struct Context* context) { |
122 goto insertNode(context, | 121 goto insertNode(context, |
123 &context->data[Traverse]->traverse, | 122 &context->data[Traverse]->traverse, |
124 &context->data[Tree]->tree, | |
125 &context->data[Node]->node, | 123 &context->data[Node]->node, |
126 context->data[Traverse]->traverse.newNode); | 124 context->data[Traverse]->traverse.newNode); |
127 } | 125 } |
128 | 126 |
129 __code insertCase1(struct Context* context, struct Element* nodeStack) { | 127 __code insertCase1(struct Context* context, struct Tree* tree,struct Element* nodeStack) { |
130 if (nodeStack!=NULL) { | 128 if (nodeStack!=NULL) { |
131 goto meta(context, InsertCase2); | 129 goto meta(context, InsertCase2); |
132 } | 130 } |
131 tree->root->color = Black; | |
133 goto meta(context, StackClear); | 132 goto meta(context, StackClear); |
134 } | 133 } |
135 | 134 |
136 __code insert1_stub(struct Context* context) { | 135 __code insert1_stub(struct Context* context) { |
137 goto insertCase1(context, context->data[Traverse]->traverse.nodeStack); | 136 goto insertCase1(context, |
137 &context->data[Tree]->tree, | |
138 context->data[Traverse]->traverse.nodeStack); | |
138 } | 139 } |
139 | 140 |
140 __code insertCase2(struct Context* context, struct Node* parent) { | 141 __code insertCase2(struct Context* context, struct Node* parent) { |
141 if (parent->color == Black) { | 142 if (parent->color == Black) { |
142 goto meta(context, StackClear); | 143 goto meta(context, StackClear); |
329 parent); | 330 parent); |
330 } | 331 } |
331 | 332 |
332 __code stackClear(struct Context* context, stack_ptr node_stack, struct Traverse* traverse) { | 333 __code stackClear(struct Context* context, stack_ptr node_stack, struct Traverse* traverse) { |
333 traverse->current = 0; | 334 traverse->current = 0; |
335 traverse->nodeStack = NULL; | |
334 | 336 |
335 goto meta(context, context->next); | 337 goto meta(context, context->next); |
336 } | 338 } |
337 | 339 |
338 __code stackClear_stub(struct Context* context) { | 340 __code stackClear_stub(struct Context* context) { |