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*/;
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*/;
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*/;
21 val_t
range___Range___has(val_t self
, val_t param0
) {
22 struct trace_t trace
= {NULL
, LOCATE_range___Range___has
, 30};
26 trace
.prev
= tracehead
; tracehead
= &trace
;
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::<=*/;
35 variable1
= variable2
;
37 return_label0
: while(false);
38 tracehead
= trace
.prev
;
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};
46 trace
.prev
= tracehead
; tracehead
= &trace
;
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::==*/)))));
55 variable1
= variable2
;
57 return_label1
: while(false);
58 tracehead
= trace
.prev
;
61 val_t
range___Range___count(val_t self
, val_t param0
) {
62 struct trace_t trace
= {NULL
, LOCATE_range___Range___count
, 34};
65 trace
.prev
= tracehead
; tracehead
= &trace
;
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);
72 variable1
= TAG_Int(0);
75 return_label2
: while(false);
76 tracehead
= trace
.prev
;
79 val_t
range___Range___iterator(val_t self
) {
80 struct trace_t trace
= {NULL
, LOCATE_range___Range___iterator
, 43};
82 trace
.prev
= tracehead
; tracehead
= &trace
;
83 variable0
= NEW_range___IteratorRange___init( self
); /*new IteratorRange[E]*/
85 return_label3
: while(false);
86 tracehead
= trace
.prev
;
89 val_t
range___Range___length(val_t self
) {
90 struct trace_t trace
= {NULL
, LOCATE_range___Range___length
, 45};
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*/;
104 variable0
= TAG_Int(0);
107 return_label4
: while(false);
108 tracehead
= trace
.prev
;
111 val_t
range___Range___is_empty(val_t self
) {
112 struct trace_t trace
= {NULL
, LOCATE_range___Range___is_empty
, 55};
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::>=*/;
120 return_label5
: while(false);
121 tracehead
= trace
.prev
;
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};
129 trace
.prev
= tracehead
; tracehead
= &trace
;
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
;
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};
146 trace
.prev
= tracehead
; tracehead
= &trace
;
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
;
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*/;
164 val_t
range___IteratorRange___is_ok(val_t self
) {
165 struct trace_t trace
= {NULL
, LOCATE_range___IteratorRange___is_ok
, 82};
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::<*/;
174 return_label8
: while(false);
175 tracehead
= trace
.prev
;
178 void range___IteratorRange___next(val_t self
) {
179 struct trace_t trace
= {NULL
, LOCATE_range___IteratorRange___next
, 84};
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
;
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};
192 trace
.prev
= tracehead
; tracehead
= &trace
;
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
;