annotate Paper/src/stackimpl.cbc @ 0:a5facba1adbc

first
author ryokka
date Fri, 13 Apr 2018 18:07:04 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
ryokka
parents:
diff changeset
1 Stack* createSingleLinkedStack(struct Context* context) {
ryokka
parents:
diff changeset
2 struct Stack* stack = new Stack();
ryokka
parents:
diff changeset
3 struct SingleLinkedStack* singleLinkedStack = new SingleLinkedStack();
ryokka
parents:
diff changeset
4 stack->stack = (union Data*)singleLinkedStack;
ryokka
parents:
diff changeset
5 singleLinkedStack->top = NULL;
ryokka
parents:
diff changeset
6 stack->push = C_pushSingleLinkedStack;
ryokka
parents:
diff changeset
7 stack->pop = C_popSingleLinkedStack;
ryokka
parents:
diff changeset
8 stack->pop2 = C_pop2SingleLinkedStack;
ryokka
parents:
diff changeset
9 stack->get = C_getSingleLinkedStack;
ryokka
parents:
diff changeset
10 stack->get2 = C_get2SingleLinkedStack;
ryokka
parents:
diff changeset
11 stack->isEmpty = C_isEmptySingleLinkedStack;
ryokka
parents:
diff changeset
12 stack->clear = C_clearSingleLinkedStack;
ryokka
parents:
diff changeset
13 return stack;
ryokka
parents:
diff changeset
14 }
ryokka
parents:
diff changeset
15
ryokka
parents:
diff changeset
16 __code clearSingleLinkedStack(struct SingleLinkedStack* stack,__code next(...)) {
ryokka
parents:
diff changeset
17 stack->top = NULL;
ryokka
parents:
diff changeset
18 goto next(...);
ryokka
parents:
diff changeset
19 }
ryokka
parents:
diff changeset
20
ryokka
parents:
diff changeset
21 __code pushSingleLinkedStack(struct SingleLinkedStack* stack,union Data* data, __code next(...)) {
ryokka
parents:
diff changeset
22 Element* element = new Element();
ryokka
parents:
diff changeset
23 element->next = stack->top;
ryokka
parents:
diff changeset
24 element->data = data;
ryokka
parents:
diff changeset
25 stack->top = element;
ryokka
parents:
diff changeset
26 goto next(...);
ryokka
parents:
diff changeset
27 }