94 symbol->accept(*this); |
94 symbol->accept(*this); |
95 break; |
95 break; |
96 } |
96 } |
97 } |
97 } |
98 |
98 |
99 void print_step_argument(symbol_c *step_name, const char* argument) { |
99 void print_step_argument(symbol_c *step_name, const char* argument, bool setter=false) { |
100 print_variable_prefix(); |
100 print_variable_prefix(); |
|
101 if (setter) s4o.print(","); |
101 s4o.print("__step_list["); |
102 s4o.print("__step_list["); |
102 s4o.print(SFC_STEP_ACTION_PREFIX); |
103 s4o.print(SFC_STEP_ACTION_PREFIX); |
103 step_name->accept(*this); |
104 step_name->accept(*this); |
104 s4o.print("]."); |
105 s4o.print("]."); |
105 s4o.print(argument); |
106 s4o.print(argument); |
106 } |
107 } |
107 |
108 |
108 void print_action_argument(symbol_c *action_name, const char* argument) { |
109 void print_action_argument(symbol_c *action_name, const char* argument, bool setter=false) { |
109 print_variable_prefix(); |
110 print_variable_prefix(); |
|
111 if (setter) s4o.print(","); |
110 s4o.print("__action_list["); |
112 s4o.print("__action_list["); |
111 s4o.print(SFC_STEP_ACTION_PREFIX); |
113 s4o.print(SFC_STEP_ACTION_PREFIX); |
112 action_name->accept(*this); |
114 action_name->accept(*this); |
113 s4o.print("]."); |
115 s4o.print("]."); |
114 s4o.print(argument); |
116 s4o.print(argument); |
120 |
122 |
121 void print_reset_step(symbol_c *step_name) { |
123 void print_reset_step(symbol_c *step_name) { |
122 s4o.print(s4o.indent_spaces); |
124 s4o.print(s4o.indent_spaces); |
123 s4o.print(SET_VAR); |
125 s4o.print(SET_VAR); |
124 s4o.print("("); |
126 s4o.print("("); |
125 print_step_argument(step_name, "state"); |
127 print_step_argument(step_name, "state", true); |
126 s4o.print(",0);\n"); |
128 s4o.print(",0);\n"); |
127 } |
129 } |
128 |
130 |
129 void print_set_step(symbol_c *step_name) { |
131 void print_set_step(symbol_c *step_name) { |
130 s4o.print(s4o.indent_spaces); |
132 s4o.print(s4o.indent_spaces); |
131 s4o.print(SET_VAR); |
133 s4o.print(SET_VAR); |
132 s4o.print("("); |
134 s4o.print("("); |
133 print_step_argument(step_name, "state"); |
135 print_step_argument(step_name, "state", true); |
134 s4o.print(",1);\n" + s4o.indent_spaces); |
136 s4o.print(",1);\n" + s4o.indent_spaces); |
135 print_step_argument(step_name, "elapsed_time"); |
137 print_step_argument(step_name, "elapsed_time"); |
136 s4o.print(" = __time_to_timespec(1, 0, 0, 0, 0, 0);\n"); |
138 s4o.print(" = __time_to_timespec(1, 0, 0, 0, 0, 0);\n"); |
137 } |
139 } |
138 |
140 |
281 s4o.print(s4o.indent_spaces + "}\n"); |
283 s4o.print(s4o.indent_spaces + "}\n"); |
282 s4o.print(s4o.indent_spaces); |
284 s4o.print(s4o.indent_spaces); |
283 s4o.print(SET_VAR); |
285 s4o.print(SET_VAR); |
284 s4o.print("("); |
286 s4o.print("("); |
285 print_variable_prefix(); |
287 print_variable_prefix(); |
286 s4o.print("__transition_list["); |
288 s4o.print(",__transition_list["); |
287 print_transition_number(); |
289 print_transition_number(); |
288 s4o.print("],0);\n"); |
290 s4o.print("],0);\n"); |
289 s4o.indent_left(); |
291 s4o.indent_left(); |
290 s4o.print(s4o.indent_spaces + "}\n"); |
292 s4o.print(s4o.indent_spaces + "}\n"); |
291 break; |
293 break; |
335 s4o.print(s4o.indent_spaces); |
337 s4o.print(s4o.indent_spaces); |
336 symbol->transition_condition_il->accept(*generate_c_il); |
338 symbol->transition_condition_il->accept(*generate_c_il); |
337 s4o.print(SET_VAR); |
339 s4o.print(SET_VAR); |
338 s4o.print("("); |
340 s4o.print("("); |
339 print_variable_prefix(); |
341 print_variable_prefix(); |
|
342 s4o.print(","); |
340 if (wanted_sfcgeneration == transitiontestdebug_sg) |
343 if (wanted_sfcgeneration == transitiontestdebug_sg) |
341 s4o.print("__debug_"); |
344 s4o.print("__debug_"); |
342 else |
345 else |
343 s4o.print("__"); |
346 s4o.print("__"); |
344 s4o.print("transition_list["); |
347 s4o.print("transition_list["); |
345 print_transition_number(); |
348 print_transition_number(); |
346 s4o.print("],"); |
349 s4o.print("],"); |
347 generate_c_il->print_backup_variable(); |
350 generate_c_il->print_backup_variable(); |
|
351 generate_c_il->reset_default_variable_name(); |
348 s4o.print(");\n"); |
352 s4o.print(");\n"); |
349 } |
353 } |
350 // Transition condition is in ST |
354 // Transition condition is in ST |
351 if (symbol->transition_condition_st != NULL) { |
355 if (symbol->transition_condition_st != NULL) { |
352 s4o.print(s4o.indent_spaces); |
356 s4o.print(s4o.indent_spaces); |
353 s4o.print(SET_VAR); |
357 s4o.print(SET_VAR); |
354 s4o.print("("); |
358 s4o.print("("); |
355 print_variable_prefix(); |
359 print_variable_prefix(); |
|
360 s4o.print(","); |
356 if (wanted_sfcgeneration == transitiontestdebug_sg) |
361 if (wanted_sfcgeneration == transitiontestdebug_sg) |
357 s4o.print("__debug_"); |
362 s4o.print("__debug_"); |
358 else |
363 else |
359 s4o.print("__"); |
364 s4o.print("__"); |
360 s4o.print("transition_list["); |
365 s4o.print("transition_list["); |
368 s4o.indent_right(); |
373 s4o.indent_right(); |
369 s4o.print(s4o.indent_spaces); |
374 s4o.print(s4o.indent_spaces); |
370 s4o.print(SET_VAR); |
375 s4o.print(SET_VAR); |
371 s4o.print("("); |
376 s4o.print("("); |
372 print_variable_prefix(); |
377 print_variable_prefix(); |
373 s4o.print("__debug_transition_list["); |
378 s4o.print(",__debug_transition_list["); |
374 print_transition_number(); |
379 print_transition_number(); |
375 s4o.print("],"); |
380 s4o.print("],"); |
376 s4o.print(GET_VAR); |
381 s4o.print(GET_VAR); |
377 s4o.print("("); |
382 s4o.print("("); |
378 print_variable_prefix(); |
383 print_variable_prefix(); |
840 symbol_c *var_decl = search_var_instance_decl->get_decl(pt->symbol); |
845 symbol_c *var_decl = search_var_instance_decl->get_decl(pt->symbol); |
841 if (var_decl != NULL) { |
846 if (var_decl != NULL) { |
842 unsigned int vartype = search_var_instance_decl->get_vartype(); |
847 unsigned int vartype = search_var_instance_decl->get_vartype(); |
843 |
848 |
844 s4o.print(s4o.indent_spaces); |
849 s4o.print(s4o.indent_spaces); |
845 if (vartype == search_var_instance_decl_c::external_vt) { |
850 if (vartype == search_var_instance_decl_c::external_vt) |
846 s4o.print(SET_EXTERNAL); |
851 s4o.print(SET_EXTERNAL); |
847 s4o.print("("); |
852 else if (vartype == search_var_instance_decl_c::located_vt) |
848 pt->symbol->accept(*this); |
853 s4o.print(SET_LOCATED); |
849 s4o.print(","); |
854 else |
850 } |
855 s4o.print(SET_VAR); |
851 else { |
856 s4o.print("("); |
852 if (vartype == search_var_instance_decl_c::located_vt) |
857 print_variable_prefix(); |
853 s4o.print(SET_LOCATED); |
858 s4o.print(","); |
854 else |
859 pt->symbol->accept(*this); |
855 s4o.print(SET_VAR); |
|
856 s4o.print("("); |
|
857 } |
|
858 print_variable_prefix(); |
|
859 pt->symbol->accept(*this); |
|
860 s4o.print(","); |
860 s4o.print(","); |
861 print_variable_prefix(); |
861 print_variable_prefix(); |
862 s4o.print("__action_list["); |
862 s4o.print("__action_list["); |
863 s4o.print(SFC_STEP_ACTION_PREFIX); |
863 s4o.print(SFC_STEP_ACTION_PREFIX); |
864 pt->symbol->accept(*this); |
864 pt->symbol->accept(*this); |