VariadicFunctions.c 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259
  1. #include <stdlib.h>
  2. #include <string.h>
  3. #include "sc_types.h"
  4. #include "VariadicFunctions.h"
  5. #include "VariadicFunctionsRequired.h"
  6. /*! \file Implementation of the state machine 'VariadicFunctions'
  7. */
  8. /* prototypes of all internal functions */
  9. static sc_boolean variadicFunctions_check_main_region_StateA_tr0_tr0(const VariadicFunctions* handle);
  10. static void variadicFunctions_effect_main_region_StateA_tr0(VariadicFunctions* handle);
  11. static void variadicFunctions_enact_main_region_StateA(VariadicFunctions* handle);
  12. static void variadicFunctions_enact_main_region_StateB(VariadicFunctions* handle);
  13. static void variadicFunctions_enseq_main_region_StateA_default(VariadicFunctions* handle);
  14. static void variadicFunctions_enseq_main_region_StateB_default(VariadicFunctions* handle);
  15. static void variadicFunctions_enseq_main_region_default(VariadicFunctions* handle);
  16. static void variadicFunctions_exseq_main_region_StateA(VariadicFunctions* handle);
  17. static void variadicFunctions_exseq_main_region_StateB(VariadicFunctions* handle);
  18. static void variadicFunctions_exseq_main_region(VariadicFunctions* handle);
  19. static void variadicFunctions_react_main_region_StateA(VariadicFunctions* handle);
  20. static void variadicFunctions_react_main_region_StateB(VariadicFunctions* handle);
  21. static void variadicFunctions_react_main_region__entry_Default(VariadicFunctions* handle);
  22. static void variadicFunctions_clearInEvents(VariadicFunctions* handle);
  23. static void variadicFunctions_clearOutEvents(VariadicFunctions* handle);
  24. void variadicFunctions_init(VariadicFunctions* handle)
  25. {
  26. sc_integer i;
  27. for (i = 0; i < VARIADICFUNCTIONS_MAX_ORTHOGONAL_STATES; ++i)
  28. {
  29. handle->stateConfVector[i] = VariadicFunctions_last_state;
  30. }
  31. handle->stateConfVectorPosition = 0;
  32. variadicFunctions_clearInEvents(handle);
  33. variadicFunctions_clearOutEvents(handle);
  34. }
  35. void variadicFunctions_enter(VariadicFunctions* handle)
  36. {
  37. /* Default enter sequence for statechart VariadicFunctions */
  38. variadicFunctions_enseq_main_region_default(handle);
  39. }
  40. void variadicFunctions_exit(VariadicFunctions* handle)
  41. {
  42. /* Default exit sequence for statechart VariadicFunctions */
  43. variadicFunctions_exseq_main_region(handle);
  44. }
  45. sc_boolean variadicFunctions_isActive(const VariadicFunctions* handle)
  46. {
  47. sc_boolean result;
  48. if (handle->stateConfVector[0] != VariadicFunctions_last_state)
  49. {
  50. result = bool_true;
  51. }
  52. else
  53. {
  54. result = bool_false;
  55. }
  56. return result;
  57. }
  58. /*
  59. * Always returns 'false' since this state machine can never become final.
  60. */
  61. sc_boolean variadicFunctions_isFinal(const VariadicFunctions* handle)
  62. {
  63. return bool_false;
  64. }
  65. static void variadicFunctions_clearInEvents(VariadicFunctions* handle)
  66. {
  67. }
  68. static void variadicFunctions_clearOutEvents(VariadicFunctions* handle)
  69. {
  70. }
  71. void variadicFunctions_runCycle(VariadicFunctions* handle)
  72. {
  73. variadicFunctions_clearOutEvents(handle);
  74. for (handle->stateConfVectorPosition = 0;
  75. handle->stateConfVectorPosition < VARIADICFUNCTIONS_MAX_ORTHOGONAL_STATES;
  76. handle->stateConfVectorPosition++)
  77. {
  78. switch (handle->stateConfVector[handle->stateConfVectorPosition])
  79. {
  80. case VariadicFunctions_main_region_StateA :
  81. {
  82. variadicFunctions_react_main_region_StateA(handle);
  83. break;
  84. }
  85. case VariadicFunctions_main_region_StateB :
  86. {
  87. variadicFunctions_react_main_region_StateB(handle);
  88. break;
  89. }
  90. default:
  91. break;
  92. }
  93. }
  94. variadicFunctions_clearInEvents(handle);
  95. }
  96. sc_boolean variadicFunctions_isStateActive(const VariadicFunctions* handle, VariadicFunctionsStates state)
  97. {
  98. sc_boolean result = bool_false;
  99. switch (state)
  100. {
  101. case VariadicFunctions_main_region_StateA :
  102. result = (sc_boolean) (handle->stateConfVector[0] == VariadicFunctions_main_region_StateA
  103. );
  104. break;
  105. case VariadicFunctions_main_region_StateB :
  106. result = (sc_boolean) (handle->stateConfVector[0] == VariadicFunctions_main_region_StateB
  107. );
  108. break;
  109. default:
  110. result = bool_false;
  111. break;
  112. }
  113. return result;
  114. }
  115. /* implementations of all internal functions */
  116. static sc_boolean variadicFunctions_check_main_region_StateA_tr0_tr0(const VariadicFunctions* handle)
  117. {
  118. return bool_true;
  119. }
  120. static void variadicFunctions_effect_main_region_StateA_tr0(VariadicFunctions* handle)
  121. {
  122. variadicFunctions_exseq_main_region_StateA(handle);
  123. variadicFunctionsInternal_myInternalVarOperation(handle, 0.0, 0.2);
  124. variadicFunctions_enseq_main_region_StateB_default(handle);
  125. }
  126. /* Entry action for state 'StateA'. */
  127. static void variadicFunctions_enact_main_region_StateA(VariadicFunctions* handle)
  128. {
  129. /* Entry action for state 'StateA'. */
  130. variadicFunctionsIface_myVarOperation(handle);
  131. variadicFunctionsIface_myVarOperation(handle, "one");
  132. variadicFunctionsIface_myVarOperation(handle, "one", "two", "three");
  133. }
  134. /* Entry action for state 'StateB'. */
  135. static void variadicFunctions_enact_main_region_StateB(VariadicFunctions* handle)
  136. {
  137. /* Entry action for state 'StateB'. */
  138. variadicFunctionsIfaceIF2_myVarOperation2(handle, 1);
  139. variadicFunctionsIfaceIF2_myVarOperation2(handle, 1, 2);
  140. variadicFunctionsIfaceIF2_myVarOperation2(handle, 1, 2, 3, 4);
  141. }
  142. /* 'default' enter sequence for state StateA */
  143. static void variadicFunctions_enseq_main_region_StateA_default(VariadicFunctions* handle)
  144. {
  145. /* 'default' enter sequence for state StateA */
  146. variadicFunctions_enact_main_region_StateA(handle);
  147. handle->stateConfVector[0] = VariadicFunctions_main_region_StateA;
  148. handle->stateConfVectorPosition = 0;
  149. }
  150. /* 'default' enter sequence for state StateB */
  151. static void variadicFunctions_enseq_main_region_StateB_default(VariadicFunctions* handle)
  152. {
  153. /* 'default' enter sequence for state StateB */
  154. variadicFunctions_enact_main_region_StateB(handle);
  155. handle->stateConfVector[0] = VariadicFunctions_main_region_StateB;
  156. handle->stateConfVectorPosition = 0;
  157. }
  158. /* 'default' enter sequence for region main region */
  159. static void variadicFunctions_enseq_main_region_default(VariadicFunctions* handle)
  160. {
  161. /* 'default' enter sequence for region main region */
  162. variadicFunctions_react_main_region__entry_Default(handle);
  163. }
  164. /* Default exit sequence for state StateA */
  165. static void variadicFunctions_exseq_main_region_StateA(VariadicFunctions* handle)
  166. {
  167. /* Default exit sequence for state StateA */
  168. handle->stateConfVector[0] = VariadicFunctions_last_state;
  169. handle->stateConfVectorPosition = 0;
  170. }
  171. /* Default exit sequence for state StateB */
  172. static void variadicFunctions_exseq_main_region_StateB(VariadicFunctions* handle)
  173. {
  174. /* Default exit sequence for state StateB */
  175. handle->stateConfVector[0] = VariadicFunctions_last_state;
  176. handle->stateConfVectorPosition = 0;
  177. }
  178. /* Default exit sequence for region main region */
  179. static void variadicFunctions_exseq_main_region(VariadicFunctions* handle)
  180. {
  181. /* Default exit sequence for region main region */
  182. /* Handle exit of all possible states (of VariadicFunctions.main_region) at position 0... */
  183. switch(handle->stateConfVector[ 0 ])
  184. {
  185. case VariadicFunctions_main_region_StateA :
  186. {
  187. variadicFunctions_exseq_main_region_StateA(handle);
  188. break;
  189. }
  190. case VariadicFunctions_main_region_StateB :
  191. {
  192. variadicFunctions_exseq_main_region_StateB(handle);
  193. break;
  194. }
  195. default: break;
  196. }
  197. }
  198. /* The reactions of state StateA. */
  199. static void variadicFunctions_react_main_region_StateA(VariadicFunctions* handle)
  200. {
  201. /* The reactions of state StateA. */
  202. variadicFunctions_effect_main_region_StateA_tr0(handle);
  203. }
  204. /* The reactions of state StateB. */
  205. static void variadicFunctions_react_main_region_StateB(VariadicFunctions* handle)
  206. {
  207. /* The reactions of state StateB. */
  208. }
  209. /* Default react sequence for initial entry */
  210. static void variadicFunctions_react_main_region__entry_Default(VariadicFunctions* handle)
  211. {
  212. /* Default react sequence for initial entry */
  213. variadicFunctions_enseq_main_region_StateA_default(handle);
  214. }