Mercurial > hg > CbC > old > akasha
view src/insert_verification/main.c @ 11:b13d2c8d4b47
Fix iterator
author | Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp> |
---|---|
date | Wed, 16 Mar 2016 17:19:50 +0900 |
parents | e864ede359cc |
children | f0a1f02e8493 |
line wrap: on
line source
#include <stdio.h> #include "akashaLLRBContext.h" #include "akashaCS.h" void printTree(struct Node* node, int n) { if (node != 0) { printTree(node->left, n+1); for (int i=0;i<n;i++) printf(" "); printf("key=%d value=%d color=%s\t%p\n", node->key, node->value,/* n, */node->color==0? "R":"B", node); printTree(node->right, n+1); } } __code insertOnce_stub(struct Context* context) { goto insertOnce(context, &context->data[Node]->node); } __code insertOnce(struct Context* context, struct Node* node) { node->key = rand()%100+1; node->value = 100; context->next = ShowTree; goto meta(context, Put); } __code showTree_stub(struct Context* context) { goto showTree(context, &context->data[Tree]->tree); } __code showTree(struct Context* context, struct Tree* tree) { printTree(tree->root, 0); puts(""); goto meta(context, Exit); } __code verifySpecification(struct Context* context) { } __code iterateInsertion_stub(struct Context* context) { goto iterateInsertion(context, &context->data[Iter]->iterator, &context->data[Node]->node); } __code iterateInsertion(struct Context* context, struct Iterator* iter, struct Node* node) { node->key = iter->head->val; node->value = iter->head->val; iter->head = iter->head->next; if (iter->head == iter->last) { goto meta(context, ShowTree); } //printf("Trying insertion %d", node->key); context->next = IterateInsertion; goto meta(context, Put); } int main(int argc, char const* argv[]) { goto startCode(IterateInsertion); }