def process_iter(exp)
out = []
raise UnsupportedNodeError if exp[0][1].nil?
@env.scope do
enum = exp[0][1][1]
call = process exp.shift
var = process(exp.shift).intern
body = process exp.shift
index = "index_#{var}"
body += ";" unless body =~ /[;}]\Z/
body.gsub!(/\n\n+/, "\n")
out << "unsigned long #{index};"
out << "for (#{index} = 0; #{enum}[#{index}] != NULL; ++#{index}) {"
out << "#{self.class.c_type @env.lookup(var)} #{var} = #{enum}[#{index}];"
out << body
out << "}"
end
return out.join("\n")
end