112 def loop(self,name,expression,enums,below):
113 if self.
debug: print(
"Hello from impl.loop")
117 self.
code += f
"for (int {enum.i} = {0}; {enum.i} < {enum.E-enum.S}; {enum.i}++)" +
" {\n"
121 enums[name] = enum.RETURN()
122 self.
loop(name,expression,enums,below-1)
126 self.
code += name + enum.index() +
" = " + self.
express(expression,enum,enums) +
";\n"
134 for i
in range(len(expression)):
139 elif char ==
"[" and expression[i+1] ==
"]":
140 temp_enum = expression[var_start:i]
141 if temp_enum
in enums:
142 temp_enum =
Enumerator().fetch(enums[temp_enum])
145 temp_enum.shift(enum)
146 string += temp_enum.index()
147 elif char ==
"]" and expression[i-1] ==
"[":
153 def stencil(self,out_name,names,stencil,scales,var_list,enums,below,special=None,enum=None):
154 if self.
debug: print(
"Hello from impl.stencil")
158 self.
code += f
"for (int {enum.i} = {enum.S}; {enum.i} < {enum.E}; {enum.i}++)" +
" {\n"
162 enums[out_name] = enum.RETURN()
163 self.
stencil(out_name,names,stencil,scales,var_list,enums,below-1)
167 lhs = out_name + enum.index()
178 if type(scales) == list:
179 scale = scales[scale_i]
185 self.
code += f
"{abs(scale)} * " + names[
int(temp)] +
"["
195 elif char.isnumeric():
200 self.
code += enum.iterators[dim]
204 self.
code += enum.iterators[dim] + temp + char