Mercurial > hg > Papers > 2017 > mitsuki-thesis
diff final_main/chapter5.tex @ 7:10c4d21cc7f4
update
author | mir3636 |
---|---|
date | Tue, 14 Feb 2017 22:02:53 +0900 |
parents | 5b368e14bb64 |
children | b35c8fcff7d5 |
line wrap: on
line diff
--- a/final_main/chapter5.tex Tue Feb 14 18:48:26 2017 +0900 +++ b/final_main/chapter5.tex Tue Feb 14 22:02:53 2017 +0900 @@ -70,24 +70,7 @@ } \end{lstlisting} -\begin{lstlisting}[frame=lrbt,label=stack_c,caption={\footnotesize SingleLinkedStack.c}] -#include "../context.h" - -Stack* createSingleLinkedStack(struct Context* context) { - struct Stack* stack = &ALLOCATE(context, Stack)->Stack; - struct SingleLinkedStack* singleLinkedStack = &ALLOCATE(context, SingleLinkedStack)->SingleLinkedStack; - stack->stack = (union Data*)singleLinkedStack; - singleLinkedStack->top = NULL; - stack->push = C_pushSingleLinkedStack; - stack->pop = C_popSingleLinkedStack; - stack->pop2 = C_pop2SingleLinkedStack; - stack->get = C_getSingleLinkedStack; - stack->get2 = C_get2SingleLinkedStack; - stack->isEmpty = C_isEmptySingleLinkedStack; - stack->clear = C_clearSingleLinkedStack; - return stack; -} - +\begin{lstlisting}[frame=lrbt,label=stack_c,caption={\footnotesize 生成される stub}] __code clearSingleLinkedStack(struct Context *context,struct SingleLinkedStack* stack,enum Code next) { stack->top = NULL; goto meta(context, next); @@ -98,73 +81,6 @@ enum Code next = Gearef(context, Stack)->next; goto clearSingleLinkedStack(context, stack, next); } - -__code pushSingleLinkedStack(struct Context *context,struct SingleLinkedStack* stack,union Data* data, enum Code next) { - Element* element = &ALLOCATE(context, Element)->Element; - element->next = stack->top; - element->data = data; - stack->top = element; - goto meta(context, next); -} - -__code pushSingleLinkedStack_stub(struct Context* context) { - SingleLinkedStack* stack = (SingleLinkedStack*)GearImpl(context, Stack, stack); - Data* data = Gearef(context, Stack)->data; - enum Code next = Gearef(context, Stack)->next; - goto pushSingleLinkedStack(context, stack, data, next); -} - -__code popSingleLinkedStack(struct Context *context,struct SingleLinkedStack* stack, enum Code next,union Data **O_data) { - Data* data; - if (stack->top) { - data = stack->top->data; - stack->top = stack->top->next; - } else { - data = NULL; - } - *O_data = data; - goto meta(context, next); -} - -__code popSingleLinkedStack_stub(struct Context* context) { - SingleLinkedStack* stack = (SingleLinkedStack*)GearImpl(context, Stack, stack); - enum Code next = Gearef(context, Stack)->next; - Data** O_data = &Gearef(context, Stack)->data; - goto popSingleLinkedStack(context, stack, next, O_data); -} - -__code getSingleLinkedStack(struct Context *context,struct SingleLinkedStack* stack, enum Code next,union Data **O_data) { - Data* data; - if (stack->top) - data = stack->top->data; - else - data = NULL; - *O_data = data; - goto meta(context, next); -} - -__code getSingleLinkedStack_stub(struct Context* context) { - SingleLinkedStack* stack = (SingleLinkedStack*)GearImpl(context, Stack, stack); - enum Code next = Gearef(context, Stack)->next; - Data** O_data = &Gearef(context, Stack)->data; - goto getSingleLinkedStack(context, stack, next, O_data); -} - -__code isEmptySingleLinkedStack(struct Context *context,struct SingleLinkedStack* stack, enum Code next, enum Code whenEmpty) { - if (stack->top) - goto meta(context, next); - else - goto meta(context, whenEmpty); -} - - -__code isEmptySingleLinkedStack_stub(struct Context* context) { - SingleLinkedStack* stack = (SingleLinkedStack*)GearImpl(context, Stack, stack); - enum Code next = Gearef(context, Stack)->next; - enum Code whenEmpty = Gearef(context, Stack)->whenEmpty; - goto isEmptySingleLinkedStack(context, stack, next, whenEmpty); -} - \end{lstlisting} \section{Context の生成}