Mercurial > repos > rhope
annotate runtime/fib.c @ 57:2174878a6e4b
Avoid unnecessary nested switch
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Thu, 08 Oct 2009 02:12:25 -0400 |
parents | d2f9b0a9403d |
children | 4c22fe798779 |
rev | line source |
---|---|
56
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
1 #include <stdio.h> |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
2 #include "builtin.h" |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
3 #include "object.h" |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
4 #include "context.h" |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
5 #include "func.h" |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
6 #include "integer.h" |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
7 #include "bool.h" |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
8 |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
9 typedef enum { |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
10 FUNC__LT_, |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
11 FUNC__LT__AT_Int32, |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
12 FUNC__MN_, |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
13 FUNC__MN__AT_Int32, |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
14 FUNC__PL_, |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
15 FUNC__PL__AT_Int32, |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
16 FUNC_Fib, |
57
2174878a6e4b
Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents:
56
diff
changeset
|
17 FUNC_Fib_1, |
2174878a6e4b
Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents:
56
diff
changeset
|
18 FUNC_Fib_2, |
2174878a6e4b
Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents:
56
diff
changeset
|
19 FUNC_Fib_3, |
2174878a6e4b
Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents:
56
diff
changeset
|
20 FUNC_Fib_4, |
2174878a6e4b
Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents:
56
diff
changeset
|
21 FUNC_Fib_5, |
2174878a6e4b
Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents:
56
diff
changeset
|
22 FUNC_Fib_6, |
2174878a6e4b
Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents:
56
diff
changeset
|
23 FUNC_Fib_7, |
56
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
24 FUNC_If, |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
25 FUNC_If_AT_Yes_SP_No, |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
26 FUNC_Main, |
57
2174878a6e4b
Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents:
56
diff
changeset
|
27 FUNC_Main_1, |
2174878a6e4b
Avoid unnecessary nested switch
Mike Pavone <pavone@retrodev.com>
parents:
56
diff
changeset
|
28 FUNC_Main_2, |
56
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
29 FUNC_Print, |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
30 END |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
31 } funcids; |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
32 |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
33 typedef struct { |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
34 struct object *____result__0__0; |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
35 struct object *____result__0__1; |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
36 struct object *____result__10__0; |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
37 struct object *____result__11__0; |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
38 struct object *____result__1__0; |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
39 struct object *____result__5__0; |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
40 struct object *____result__6__0; |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
41 struct object *____result__7__0; |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
42 struct object *out; |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
43 } lt_Fib; |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
44 |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
45 typedef struct { |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
46 struct object *____result__0__0; |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
47 struct object *____result__1__0; |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
48 } lt_Main; |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
49 |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
50 object * _const_Whole_SP_Number__1; |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
51 object * _const_Whole_SP_Number__2; |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
52 object * _const_Whole_SP_Number__30; |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
53 |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
54 void rhope(uint32_t func) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
55 { |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
56 uint16_t resume,idx; |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
57 context * ct; |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
58 calldata * cdata, *temp_cdata; |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
59 FuncDef(Fib) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
60 FuncDef(Main) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
61 |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
62 ct = new_context(); |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
63 cdata = alloc_cdata(ct, NULL, 0); |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
64 cdata->num_params = 0; |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
65 cdata->func = END; |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
66 resume = 0; |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
67 _dispatch: |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
68 switch(func) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
69 { |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
70 Method(_LT_) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
71 MethodDispatch(TYPE_INT32,_LT_,Int32) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
72 EndMethod |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
73 |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
74 MethodImplNoLocals(_LT_,Int32,TYPE_INT32, |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
75 NumParams 2) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
76 |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
77 Param(1, TYPE_INT32) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
78 |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
79 if(((t_Int32 *)cdata->params[0])->num < ((t_Int32 *)cdata->params[-1])->num) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
80 { |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
81 release_ref(cdata->params[0]); |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
82 Ret(0, Yes) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
83 } else { |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
84 release_ref(cdata->params[0]); |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
85 Ret(0, No) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
86 } |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
87 |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
88 release_ref(cdata->params[-1]); |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
89 EndFuncNoLocals |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
90 |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
91 Method(_MN_) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
92 MethodDispatch(TYPE_INT32,_MN_,Int32) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
93 EndMethod |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
94 |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
95 MethodImplNoLocals(_MN_,Int32,TYPE_INT32, |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
96 NumParams 2) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
97 |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
98 Param(1, TYPE_INT32) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
99 |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
100 cdata->params[0] = copy_object(cdata->params[0]); |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
101 ((t_Int32 *)cdata->params[0])->num -= ((t_Int32 *)cdata->params[-1])->num; |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
102 |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
103 release_ref(cdata->params[-1]); |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
104 EndFuncNoLocals |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
105 |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
106 Method(_PL_) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
107 MethodDispatch(TYPE_INT32,_PL_,Int32) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
108 EndMethod |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
109 |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
110 MethodImplNoLocals(_PL_,Int32,TYPE_INT32, |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
111 NumParams 2) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
112 |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
113 Param(1, TYPE_INT32) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
114 |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
115 cdata->params[0] = copy_object(cdata->params[0]); |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
116 ((t_Int32 *)cdata->params[0])->num += ((t_Int32 *)cdata->params[-1])->num; |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
117 |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
118 release_ref(cdata->params[-1]); |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
119 EndFuncNoLocals |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
120 |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
121 Func(Fib, |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
122 NumParams 1) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
123 lv_Fib->____result__0__0 = NULL; |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
124 lv_Fib->____result__0__1 = NULL; |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
125 lv_Fib->____result__1__0 = NULL; |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
126 lv_Fib->____result__5__0 = NULL; |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
127 lv_Fib->____result__6__0 = NULL; |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
128 lv_Fib->____result__7__0 = NULL; |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
129 lv_Fib->____result__10__0 = NULL; |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
130 lv_Fib->____result__11__0 = NULL; |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
131 lv_Fib->out = NULL; |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
132 |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
133 PrepCall(2) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
134 SetParam(0, add_ref(cdata->lastframe->params[0])) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
135 SetParam(1, add_ref(_const_Whole_SP_Number__2)) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
136 Call(_LT_, |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
137 NumParams 2, 1, Fib) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
138 lv_Fib->____result__1__0 = cdata->params[0]; |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
139 FreeCall |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
140 |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
141 PrepCall(2) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
142 SetParam(0, add_ref(lv_Fib->____result__1__0)) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
143 Call(If, |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
144 NumParams 1, 2, Fib) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
145 lv_Fib->____result__0__0 = cdata->params[0]; |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
146 lv_Fib->____result__0__1 = cdata->params[-1]; |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
147 FreeCall |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
148 |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
149 if(lv_Fib->____result__0__1) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
150 { |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
151 PrepCall(2) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
152 SetParam(0, add_ref(cdata->lastframe->params[0])) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
153 SetParam(1, add_ref(_const_Whole_SP_Number__1)) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
154 Call(_MN_, |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
155 NumParams 2, 3, Fib) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
156 lv_Fib->____result__7__0 = cdata->params[0]; |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
157 FreeCall |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
158 } |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
159 if(lv_Fib->____result__0__1) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
160 { |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
161 PrepCall(2) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
162 SetParam(0, add_ref(cdata->lastframe->params[0])) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
163 SetParam(1, add_ref(_const_Whole_SP_Number__2)) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
164 Call(_MN_, |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
165 NumParams 2, 4, Fib) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
166 lv_Fib->____result__11__0 = cdata->params[0]; |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
167 FreeCall |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
168 } |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
169 if(lv_Fib->____result__0__0) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
170 { |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
171 lv_Fib->out = add_ref(_const_Whole_SP_Number__1); |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
172 } |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
173 if(lv_Fib->____result__0__1) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
174 { |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
175 PrepCall(1) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
176 SetParam(0, add_ref(lv_Fib->____result__7__0)) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
177 Call(Fib, |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
178 NumParams 1, 5, Fib) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
179 lv_Fib->____result__6__0 = cdata->params[0]; |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
180 FreeCall |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
181 } |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
182 if(lv_Fib->____result__0__1) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
183 { |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
184 PrepCall(1) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
185 SetParam(0, add_ref(lv_Fib->____result__11__0)) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
186 Call(Fib, |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
187 NumParams 1, 6, Fib) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
188 lv_Fib->____result__10__0 = cdata->params[0]; |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
189 FreeCall |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
190 } |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
191 if(lv_Fib->____result__0__1) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
192 { |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
193 PrepCall(2) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
194 SetParam(0, add_ref(lv_Fib->____result__6__0)) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
195 SetParam(1, add_ref(lv_Fib->____result__10__0)) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
196 Call(_PL_, |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
197 NumParams 2, 7, Fib) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
198 lv_Fib->____result__5__0 = cdata->params[0]; |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
199 FreeCall |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
200 } |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
201 if(lv_Fib->____result__0__1) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
202 { |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
203 lv_Fib->out = add_ref(lv_Fib->____result__5__0); |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
204 } |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
205 if(lv_Fib->____result__0__0) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
206 { |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
207 release_ref(lv_Fib->____result__0__0); |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
208 } |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
209 if(lv_Fib->____result__0__1) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
210 { |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
211 release_ref(lv_Fib->____result__0__1); |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
212 } |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
213 if(lv_Fib->____result__1__0) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
214 { |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
215 release_ref(lv_Fib->____result__1__0); |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
216 } |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
217 if(lv_Fib->____result__5__0) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
218 { |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
219 release_ref(lv_Fib->____result__5__0); |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
220 } |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
221 if(lv_Fib->____result__6__0) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
222 { |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
223 release_ref(lv_Fib->____result__6__0); |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
224 } |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
225 if(lv_Fib->____result__7__0) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
226 { |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
227 release_ref(lv_Fib->____result__7__0); |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
228 } |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
229 if(lv_Fib->____result__10__0) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
230 { |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
231 release_ref(lv_Fib->____result__10__0); |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
232 } |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
233 if(lv_Fib->____result__11__0) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
234 { |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
235 release_ref(lv_Fib->____result__11__0); |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
236 } |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
237 release_ref(cdata->params[0]); |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
238 Ret(0, lv_Fib->out) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
239 EndFunc(Fib) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
240 |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
241 Method(If) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
242 MethodDispatch(TYPE_BOOLEAN,If,Yes_SP_No) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
243 EndMethod |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
244 |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
245 MethodImplNoLocals(If,Yes_SP_No,TYPE_BOOLEAN, |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
246 NumParams 1) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
247 |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
248 if(((t_Boolean *)(cdata->params[0]))->val) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
249 { |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
250 Ret(1, NULL) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
251 } else { |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
252 Ret(1, cdata->params[0]); |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
253 Ret(0, NULL) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
254 } |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
255 EndFuncNoLocals |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
256 |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
257 Func(Main, |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
258 NumParams 0) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
259 |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
260 lv_Main->____result__0__0 = NULL; |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
261 lv_Main->____result__1__0 = NULL; |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
262 |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
263 PrepCall(1) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
264 SetParam(0, add_ref(_const_Whole_SP_Number__30)) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
265 Call(Fib, |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
266 NumParams 1, 1, Main) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
267 lv_Main->____result__1__0 = cdata->params[0]; |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
268 FreeCall |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
269 |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
270 PrepCall(1) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
271 SetParam(0, add_ref(lv_Main->____result__1__0)) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
272 Call(Print, |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
273 NumParams 1, 2, Main) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
274 lv_Main->____result__0__0 = cdata->params[0]; |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
275 FreeCall |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
276 |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
277 if(lv_Main->____result__0__0) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
278 { |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
279 release_ref(lv_Main->____result__0__0); |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
280 } |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
281 if(lv_Main->____result__1__0) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
282 { |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
283 release_ref(lv_Main->____result__1__0); |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
284 } |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
285 EndFunc(Main) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
286 |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
287 FuncNoLocals(Print, |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
288 NumParams 1) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
289 |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
290 if(get_blueprint(cdata->params[0])->type_id == TYPE_INT32) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
291 { |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
292 printf("%d\n", ((t_Int32 *)(cdata->params[0]))->num); |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
293 } else { |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
294 puts("Don't know how to print this type"); |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
295 } |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
296 release_ref(cdata->params[0]); |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
297 Ret(0, make_Int32(0)) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
298 EndFuncNoLocals |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
299 |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
300 case END: |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
301 return; |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
302 } |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
303 _exception: |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
304 puts("whoops, exception!"); |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
305 } |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
306 |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
307 int main(int argc, char ** argv) |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
308 { |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
309 register_builtin_types(); |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
310 |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
311 _const_Whole_SP_Number__1 = make_Int32(1); |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
312 _const_Whole_SP_Number__2 = make_Int32(2); |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
313 _const_Whole_SP_Number__30 = make_Int32(30); |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
314 |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
315 rhope(FUNC_Main); |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
316 return 0; |
d2f9b0a9403d
Initial experiment with goto and switch
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
317 } |