stage4/generate_c/generate_c_sfc.cc
changeset 1041 56ebe2a31b5b
parent 1030 9aba95daf81a
equal deleted inserted replaced
1040:e8563dcaefca 1041:56ebe2a31b5b
   441       switch (wanted_sfcgeneration) {
   441       switch (wanted_sfcgeneration) {
   442         case transitiontest_sg:
   442         case transitiontest_sg:
   443           for(int i = 0; i < symbol->n; i++) {
   443           for(int i = 0; i < symbol->n; i++) {
   444             s4o.print(GET_VAR);
   444             s4o.print(GET_VAR);
   445             s4o.print("(");
   445             s4o.print("(");
   446             print_step_argument(symbol->elements[i], "X");
   446             print_step_argument(symbol->get_element(i), "X");
   447             s4o.print(")");
   447             s4o.print(")");
   448             if (i < symbol->n - 1) {
   448             if (i < symbol->n - 1) {
   449               s4o.print(" && ");
   449               s4o.print(" && ");
   450             }
   450             }
   451           }
   451           }
   452           break;
   452           break;
   453         case stepset_sg:
   453         case stepset_sg:
   454           for(int i = 0; i < symbol->n; i++) {
   454           for(int i = 0; i < symbol->n; i++) {
   455             print_set_step(symbol->elements[i]);
   455             print_set_step(symbol->get_element(i));
   456           }
   456           }
   457           break;
   457           break;
   458         case stepreset_sg:
   458         case stepreset_sg:
   459           for(int i = 0; i < symbol->n; i++) {
   459           for(int i = 0; i < symbol->n; i++) {
   460             print_reset_step(symbol->elements[i]);
   460             print_reset_step(symbol->get_element(i));
   461           }
   461           }
   462           break;
   462           break;
   463         default:
   463         default:
   464           break;
   464           break;
   465       }
   465       }
   708     void *visit(sequential_function_chart_c *symbol) {
   708     void *visit(sequential_function_chart_c *symbol) {
   709       int i;
   709       int i;
   710       
   710       
   711       generate_c_sfc_elements->reset_transition_number();
   711       generate_c_sfc_elements->reset_transition_number();
   712       for(i = 0; i < symbol->n; i++) {
   712       for(i = 0; i < symbol->n; i++) {
   713         symbol->elements[i]->accept(*this);
   713         symbol->get_element(i)->accept(*this);
   714         generate_c_sfc_elements->generate(symbol->elements[i], generate_c_sfc_elements_c::transitionlist_sg);
   714         generate_c_sfc_elements->generate(symbol->get_element(i), generate_c_sfc_elements_c::transitionlist_sg);
   715       }
   715       }
   716       
   716       
   717       s4o.print(s4o.indent_spaces +"INT i;\n");
   717       s4o.print(s4o.indent_spaces +"INT i;\n");
   718       s4o.print(s4o.indent_spaces +"TIME elapsed_time, current_time;\n\n");
   718       s4o.print(s4o.indent_spaces +"TIME elapsed_time, current_time;\n\n");
   719       
   719       
   851       
   851       
   852       /* generate transition reset steps */
   852       /* generate transition reset steps */
   853       s4o.print(s4o.indent_spaces + "// Transitions reset steps\n");
   853       s4o.print(s4o.indent_spaces + "// Transitions reset steps\n");
   854       generate_c_sfc_elements->reset_transition_number();
   854       generate_c_sfc_elements->reset_transition_number();
   855       for(i = 0; i < symbol->n; i++) {
   855       for(i = 0; i < symbol->n; i++) {
   856         generate_c_sfc_elements->generate(symbol->elements[i], generate_c_sfc_elements_c::stepreset_sg);
   856         generate_c_sfc_elements->generate(symbol->get_element(i), generate_c_sfc_elements_c::stepreset_sg);
   857       }
   857       }
   858       s4o.print("\n");
   858       s4o.print("\n");
   859       
   859       
   860       /* generate transition set steps */
   860       /* generate transition set steps */
   861       s4o.print(s4o.indent_spaces + "// Transitions set steps\n");
   861       s4o.print(s4o.indent_spaces + "// Transitions set steps\n");
   862       generate_c_sfc_elements->reset_transition_number();
   862       generate_c_sfc_elements->reset_transition_number();
   863       for(i = 0; i < symbol->n; i++) {
   863       for(i = 0; i < symbol->n; i++) {
   864         generate_c_sfc_elements->generate(symbol->elements[i], generate_c_sfc_elements_c::stepset_sg);
   864         generate_c_sfc_elements->generate(symbol->get_element(i), generate_c_sfc_elements_c::stepset_sg);
   865       }
   865       }
   866       s4o.print("\n");
   866       s4o.print("\n");
   867       
   867       
   868       /* generate step association */
   868       /* generate step association */
   869       s4o.print(s4o.indent_spaces + "// Steps association\n");
   869       s4o.print(s4o.indent_spaces + "// Steps association\n");
   870       for(i = 0; i < symbol->n; i++) {
   870       for(i = 0; i < symbol->n; i++) {
   871         generate_c_sfc_elements->generate(symbol->elements[i], generate_c_sfc_elements_c::actionassociation_sg);
   871         generate_c_sfc_elements->generate(symbol->get_element(i), generate_c_sfc_elements_c::actionassociation_sg);
   872       }
   872       }
   873       s4o.print("\n");
   873       s4o.print("\n");
   874       
   874       
   875       /* generate action state evaluation */
   875       /* generate action state evaluation */
   876       s4o.print(s4o.indent_spaces + "// Actions state evaluation\n");
   876       s4o.print(s4o.indent_spaces + "// Actions state evaluation\n");
   965             s4o.print(s4o.indent_spaces + "}\n");
   965             s4o.print(s4o.indent_spaces + "}\n");
   966           }
   966           }
   967         }
   967         }
   968       }
   968       }
   969       for(i = 0; i < symbol->n; i++) {
   969       for(i = 0; i < symbol->n; i++) {
   970         generate_c_sfc_elements->generate(symbol->elements[i], generate_c_sfc_elements_c::actionbody_sg);
   970         generate_c_sfc_elements->generate(symbol->get_element(i), generate_c_sfc_elements_c::actionbody_sg);
   971       }
   971       }
   972       s4o.print("\n");
   972       s4o.print("\n");
   973       
   973       
   974       return NULL;
   974       return NULL;
   975     }
   975     }