annotate final_main/src/rbtreeContext.h @ 0:83f997abf3b5

first commit
author e155702
date Thu, 14 Feb 2019 16:51:50 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
83f997abf3b5 first commit
e155702
parents:
diff changeset
1 // DataSegments for Red-Black Tree
83f997abf3b5 first commit
e155702
parents:
diff changeset
2 union Data {
83f997abf3b5 first commit
e155702
parents:
diff changeset
3 struct Comparable { // interface
83f997abf3b5 first commit
e155702
parents:
diff changeset
4 enum Code compare;
83f997abf3b5 first commit
e155702
parents:
diff changeset
5 union Data* data;
83f997abf3b5 first commit
e155702
parents:
diff changeset
6 } compare;
83f997abf3b5 first commit
e155702
parents:
diff changeset
7 struct Count {
83f997abf3b5 first commit
e155702
parents:
diff changeset
8 enum Code next;
83f997abf3b5 first commit
e155702
parents:
diff changeset
9 long i;
83f997abf3b5 first commit
e155702
parents:
diff changeset
10 } count;
83f997abf3b5 first commit
e155702
parents:
diff changeset
11 struct Tree {
83f997abf3b5 first commit
e155702
parents:
diff changeset
12 enum Code next;
83f997abf3b5 first commit
e155702
parents:
diff changeset
13 struct Node* root;
83f997abf3b5 first commit
e155702
parents:
diff changeset
14 struct Node* current;
83f997abf3b5 first commit
e155702
parents:
diff changeset
15 struct Node* deleted;
83f997abf3b5 first commit
e155702
parents:
diff changeset
16 int result;
83f997abf3b5 first commit
e155702
parents:
diff changeset
17 } tree;
83f997abf3b5 first commit
e155702
parents:
diff changeset
18 struct Node {
83f997abf3b5 first commit
e155702
parents:
diff changeset
19 // need to tree
83f997abf3b5 first commit
e155702
parents:
diff changeset
20 enum Code next;
83f997abf3b5 first commit
e155702
parents:
diff changeset
21 int key; // comparable data segment
83f997abf3b5 first commit
e155702
parents:
diff changeset
22 int value;
83f997abf3b5 first commit
e155702
parents:
diff changeset
23 struct Node* left;
83f997abf3b5 first commit
e155702
parents:
diff changeset
24 struct Node* right;
83f997abf3b5 first commit
e155702
parents:
diff changeset
25 // need to balancing
83f997abf3b5 first commit
e155702
parents:
diff changeset
26 enum Color {
83f997abf3b5 first commit
e155702
parents:
diff changeset
27 Red,
83f997abf3b5 first commit
e155702
parents:
diff changeset
28 Black,
83f997abf3b5 first commit
e155702
parents:
diff changeset
29 } color;
83f997abf3b5 first commit
e155702
parents:
diff changeset
30 } node;
83f997abf3b5 first commit
e155702
parents:
diff changeset
31 struct Allocate {
83f997abf3b5 first commit
e155702
parents:
diff changeset
32 enum Code next;
83f997abf3b5 first commit
e155702
parents:
diff changeset
33 long size;
83f997abf3b5 first commit
e155702
parents:
diff changeset
34 } allocate;
83f997abf3b5 first commit
e155702
parents:
diff changeset
35 };
83f997abf3b5 first commit
e155702
parents:
diff changeset
36
83f997abf3b5 first commit
e155702
parents:
diff changeset
37
83f997abf3b5 first commit
e155702
parents:
diff changeset
38 // Meta DataSegment
83f997abf3b5 first commit
e155702
parents:
diff changeset
39 struct Context {
83f997abf3b5 first commit
e155702
parents:
diff changeset
40 enum Code next;
83f997abf3b5 first commit
e155702
parents:
diff changeset
41 int codeNum;
83f997abf3b5 first commit
e155702
parents:
diff changeset
42 __code (**code) (struct Context*);
83f997abf3b5 first commit
e155702
parents:
diff changeset
43 void* heapStart;
83f997abf3b5 first commit
e155702
parents:
diff changeset
44 void* heap;
83f997abf3b5 first commit
e155702
parents:
diff changeset
45 long heapLimit;
83f997abf3b5 first commit
e155702
parents:
diff changeset
46 int dataNum;
83f997abf3b5 first commit
e155702
parents:
diff changeset
47 stack_ptr code_stack;
83f997abf3b5 first commit
e155702
parents:
diff changeset
48 stack_ptr node_stack;
83f997abf3b5 first commit
e155702
parents:
diff changeset
49 union Data **data;
83f997abf3b5 first commit
e155702
parents:
diff changeset
50 };