747f23b928b5ba91f811ccb197aa1740d4d3d780
[nit.git] / c_src / range._sep.c
1 /* This C file is generated by NIT to compile module range. */
2 #include "range._sep.h"
3 val_t range___Range___first(val_t self) {
4 struct trace_t trace = {NULL, LOCATE_range___Range___first, 22};
5 trace.prev = tracehead; tracehead = &trace;
6 tracehead = trace.prev;
7 return ATTR_range___Range____first( self) /*Range::_first*/;
8 }
9 val_t range___Range___last(val_t self) {
10 struct trace_t trace = {NULL, LOCATE_range___Range___last, 24};
11 trace.prev = tracehead; tracehead = &trace;
12 tracehead = trace.prev;
13 return ATTR_range___Range____last( self) /*Range::_last*/;
14 }
15 val_t range___Range___after(val_t self) {
16 struct trace_t trace = {NULL, LOCATE_range___Range___after, 27};
17 trace.prev = tracehead; tracehead = &trace;
18 tracehead = trace.prev;
19 return ATTR_range___Range____after( self) /*Range::_after*/;
20 }
21 val_t range___Range___has(val_t self, val_t param0) {
22 struct trace_t trace = {NULL, LOCATE_range___Range___has, 30};
23 val_t variable0;
24 val_t variable1;
25 val_t variable2;
26 trace.prev = tracehead; tracehead = &trace;
27 variable0 = param0;
28 variable1 = ATTR_range___Range____first( self) /*Range::_first*/;
29 variable1 = ((kernel___Comparable_____geq_t)CALL( variable0 /*item*/,COLOR_kernel___Comparable_____geq))( variable0 /*item*/, variable1) /*Discrete::>=*/;
30 variable2 = variable1;
31 if (UNTAG_Bool(variable2)) { /* and */
32 variable2 = ATTR_range___Range____last( self) /*Range::_last*/;
33 variable2 = ((kernel___Comparable_____leq_t)CALL( variable0 /*item*/,COLOR_kernel___Comparable_____leq))( variable0 /*item*/, variable2) /*Discrete::<=*/;
34 }
35 variable1 = variable2;
36 goto return_label0;
37 return_label0: while(false);
38 tracehead = trace.prev;
39 return variable1;
40 }
41 val_t range___Range___has_only(val_t self, val_t param0) {
42 struct trace_t trace = {NULL, LOCATE_range___Range___has_only, 32};
43 val_t variable0;
44 val_t variable1;
45 val_t variable2;
46 trace.prev = tracehead; tracehead = &trace;
47 variable0 = param0;
48 variable1 = ATTR_range___Range____first( self) /*Range::_first*/;
49 variable1 = TAG_Bool((variable1 == variable0 /*item*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, variable0 /*item*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1, variable0 /*item*/) /*Discrete::==*/)))));
50 variable2 = variable1;
51 if (UNTAG_Bool(variable2)) { /* and */
52 variable2 = ATTR_range___Range____last( self) /*Range::_last*/;
53 variable2 = TAG_Bool(( variable0 /*item*/ == variable2) || (( variable0 /*item*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*item*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*item*/,variable2)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*item*/,COLOR_kernel___Object_____eqeq))( variable0 /*item*/, variable2) /*Discrete::==*/)))));
54 }
55 variable1 = variable2;
56 goto return_label1;
57 return_label1: while(false);
58 tracehead = trace.prev;
59 return variable1;
60 }
61 val_t range___Range___count(val_t self, val_t param0) {
62 struct trace_t trace = {NULL, LOCATE_range___Range___count, 34};
63 val_t variable0;
64 val_t variable1;
65 trace.prev = tracehead; tracehead = &trace;
66 variable0 = param0;
67 variable1 = ((range___Range___has_t)CALL( self,COLOR_abstract_collection___Collection___has))( self, variable0 /*item*/) /*Range::has*/;
68 if (UNTAG_Bool(variable1)) { /*if*/
69 variable1 = TAG_Int(1);
70 goto return_label2;
71 } else { /*if*/
72 variable1 = TAG_Int(0);
73 goto return_label2;
74 }
75 return_label2: while(false);
76 tracehead = trace.prev;
77 return variable1;
78 }
79 val_t range___Range___iterator(val_t self) {
80 struct trace_t trace = {NULL, LOCATE_range___Range___iterator, 43};
81 val_t variable0;
82 trace.prev = tracehead; tracehead = &trace;
83 variable0 = NEW_range___IteratorRange___init( self); /*new IteratorRange[E]*/
84 goto return_label3;
85 return_label3: while(false);
86 tracehead = trace.prev;
87 return variable0;
88 }
89 val_t range___Range___length(val_t self) {
90 struct trace_t trace = {NULL, LOCATE_range___Range___length, 45};
91 val_t variable0;
92 val_t variable1;
93 val_t variable2;
94 trace.prev = tracehead; tracehead = &trace;
95 variable1 = ATTR_range___Range____first( self) /*Range::_first*/;
96 variable2 = ATTR_range___Range____after( self) /*Range::_after*/;
97 variable1 = ((kernel___Discrete___distance_t)CALL(variable1,COLOR_kernel___Discrete___distance))(variable1, variable2) /*Discrete::distance*/;
98 variable0 = variable1;
99 variable1 = TAG_Bool(UNTAG_Int( variable0 /*nb*/)>UNTAG_Int( TAG_Int(0)));
100 if (UNTAG_Bool(variable1)) { /*if*/
101 variable0 = variable0 /*nb*/;
102 goto return_label4;
103 } else { /*if*/
104 variable0 = TAG_Int(0);
105 goto return_label4;
106 }
107 return_label4: while(false);
108 tracehead = trace.prev;
109 return variable0;
110 }
111 val_t range___Range___is_empty(val_t self) {
112 struct trace_t trace = {NULL, LOCATE_range___Range___is_empty, 55};
113 val_t variable0;
114 val_t variable1;
115 trace.prev = tracehead; tracehead = &trace;
116 variable0 = ATTR_range___Range____first( self) /*Range::_first*/;
117 variable1 = ATTR_range___Range____after( self) /*Range::_after*/;
118 variable0 = ((kernel___Comparable_____geq_t)CALL(variable0,COLOR_kernel___Comparable_____geq))(variable0, variable1) /*Discrete::>=*/;
119 goto return_label5;
120 return_label5: while(false);
121 tracehead = trace.prev;
122 return variable0;
123 }
124 void range___Range___init(val_t self, val_t param0, val_t param1, int* init_table) {
125 struct trace_t trace = {NULL, LOCATE_range___Range___init, 57};
126 val_t variable0;
127 val_t variable1;
128 val_t variable2;
129 trace.prev = tracehead; tracehead = &trace;
130 variable0 = param0;
131 variable1 = param1;
132 if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_Range].i]) return;
133 ATTR_range___Range____first( self) /*Range::_first*/ = variable0 /*from*/;
134 ATTR_range___Range____last( self) /*Range::_last*/ = variable1 /*to*/;
135 variable2 = ((kernel___Discrete___succ_t)CALL( variable1 /*to*/,COLOR_kernel___Discrete___succ))( variable1 /*to*/) /*Discrete::succ*/;
136 ATTR_range___Range____after( self) /*Range::_after*/ = variable2;
137 init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_Range].i] = 1;
138 tracehead = trace.prev;
139 return;
140 }
141 void range___Range___without_last(val_t self, val_t param0, val_t param1, int* init_table) {
142 struct trace_t trace = {NULL, LOCATE_range___Range___without_last, 66};
143 val_t variable0;
144 val_t variable1;
145 val_t variable2;
146 trace.prev = tracehead; tracehead = &trace;
147 variable0 = param0;
148 variable1 = param1;
149 if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_Range].i]) return;
150 ATTR_range___Range____first( self) /*Range::_first*/ = variable0 /*from*/;
151 variable2 = ((kernel___Discrete___prec_t)CALL( variable1 /*to*/,COLOR_kernel___Discrete___prec))( variable1 /*to*/) /*Discrete::prec*/;
152 ATTR_range___Range____last( self) /*Range::_last*/ = variable2;
153 ATTR_range___Range____after( self) /*Range::_after*/ = variable1 /*to*/;
154 init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_Range].i] = 1;
155 tracehead = trace.prev;
156 return;
157 }
158 val_t range___IteratorRange___item(val_t self) {
159 struct trace_t trace = {NULL, LOCATE_range___IteratorRange___item, 80};
160 trace.prev = tracehead; tracehead = &trace;
161 tracehead = trace.prev;
162 return ATTR_range___IteratorRange____item( self) /*IteratorRange::_item*/;
163 }
164 val_t range___IteratorRange___is_ok(val_t self) {
165 struct trace_t trace = {NULL, LOCATE_range___IteratorRange___is_ok, 82};
166 val_t variable0;
167 val_t variable1;
168 trace.prev = tracehead; tracehead = &trace;
169 variable0 = ATTR_range___IteratorRange____item( self) /*IteratorRange::_item*/;
170 variable1 = ATTR_range___IteratorRange____range( self) /*IteratorRange::_range*/;
171 variable1 = ((range___Range___after_t)CALL(variable1,COLOR_range___Range___after))(variable1) /*Range::after*/;
172 variable0 = ((kernel___Comparable_____l_t)CALL(variable0,COLOR_kernel___Comparable_____l))(variable0, variable1) /*Discrete::<*/;
173 goto return_label8;
174 return_label8: while(false);
175 tracehead = trace.prev;
176 return variable0;
177 }
178 void range___IteratorRange___next(val_t self) {
179 struct trace_t trace = {NULL, LOCATE_range___IteratorRange___next, 84};
180 val_t variable0;
181 trace.prev = tracehead; tracehead = &trace;
182 variable0 = ATTR_range___IteratorRange____item( self) /*IteratorRange::_item*/;
183 variable0 = ((kernel___Discrete___succ_t)CALL(variable0,COLOR_kernel___Discrete___succ))(variable0) /*Discrete::succ*/;
184 ATTR_range___IteratorRange____item( self) /*IteratorRange::_item*/ = variable0;
185 tracehead = trace.prev;
186 return;
187 }
188 void range___IteratorRange___init(val_t self, val_t param0, int* init_table) {
189 struct trace_t trace = {NULL, LOCATE_range___IteratorRange___init, 86};
190 val_t variable0;
191 val_t variable1;
192 trace.prev = tracehead; tracehead = &trace;
193 variable0 = param0;
194 if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_IteratorRange].i]) return;
195 ATTR_range___IteratorRange____range( self) /*IteratorRange::_range*/ = variable0 /*r*/;
196 variable1 = ((range___Range___first_t)CALL( variable0 /*r*/,COLOR_abstract_collection___Collection___first))( variable0 /*r*/) /*Range::first*/;
197 ATTR_range___IteratorRange____item( self) /*IteratorRange::_item*/ = variable1;
198 init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_IteratorRange].i] = 1;
199 tracehead = trace.prev;
200 return;
201 }