home *** CD-ROM | disk | FTP | other *** search
/ Amiga ACS 1998 #4 / amigaacscoverdisc1998-041998.iso / utilities / shareware / dev / ppcsmalleiffel / source.lha / bin_c / pretty15.c < prev    next >
Encoding:
C/C++ Source or Header  |  1998-01-16  |  51.5 KB  |  1,807 lines

  1. /*
  2. -- ANSI C code generated by :
  3. -- SmallEiffel The GNU Eiffel Compiler -- Release (- 0.82)      --
  4. -- Copyright (C), 1994-98 - LORIA - UHP - CRIN - INRIA - FRANCE --
  5. -- Dominique COLNET and Suzanne COLLIN -    colnet@loria.fr     --
  6. --                 http://www.loria.fr/SmallEiffel              --
  7. */
  8. #include "pretty.h"
  9. void r953make(T953* C,T0* a1){
  10. int _i2=0;
  11. int _i=0;
  12. C->_list=a1;
  13. _i=(((T855*)((T855*)a1)))->_upper/*8*/;
  14. while (!((_i)==(0))) {
  15. _i2=r953index_of(C,r855item(((T855*)a1),_i));
  16. /*IF*/if ((_i2)!=(_i)) {
  17. r683add_position(X776start_position(r855item(((T855*)a1),_i2)));
  18. r683add_position(X776start_position(r855item(((T855*)a1),_i)));
  19. /*[IRF3.6fatal_error*/{T0* b1=((T0*)ms1_953);
  20. r683fatal_error(((T683*)(oBC364eh)),b1);
  21. }/*]*/
  22. }
  23. /*FI*/_i=(_i)-(1);
  24. }
  25. }
  26. /*No:FEATURE_NAME_LIST.item*/
  27. void r953pretty_print(T953* C){
  28. int _icount=0;
  29. int _i=0;
  30. _i=1;
  31. while (!((_i)>(/*(IRF4.6count*/(((T855*)((T855*)((((T953*)C))->_list/*0*/))))->_upper/*8*//*)*/))) {
  32. /*[IRF3.3set_indent_level*/((((T238*)(((T238*)(oBC364fmt)))))->_indent_level)=(3);
  33. /*]*/
  34. X776definition_pretty_print(r855item(((T855*)((((T953*)C))->_list/*0*/)),_i));
  35. _i=(_i)+(1);
  36. _icount=(_icount)+(1);
  37. /*IF*/if ((_i)<=(/*(IRF4.6count*/(((T855*)((T855*)((((T953*)C))->_list/*0*/))))->_upper/*8*//*)*/)) {
  38. r238put_string(((T238*)(oBC364fmt)),((T0*)ms2_953));
  39. /*IF*/if ((_icount)>(4)) {
  40. /*[IRF3.3set_indent_level*/((((T238*)(((T238*)(oBC364fmt)))))->_indent_level)=(3);
  41. /*]*/
  42. r238indent(((T238*)(oBC364fmt)));
  43. _icount=0;
  44. }
  45. /*FI*/}
  46. /*FI*/}
  47. }
  48. /*No:FEATURE_NAME_LIST.list*/
  49. int r953has(T953* C,T0* a1){
  50. int R=0;
  51. R=(r953index_of(C,a1))>(0);
  52. return R;
  53. }
  54. /*No:FEATURE_NAME_LIST.count*/
  55. /*No:FEATURE_NAME_LIST.fatal_error*/
  56. int r953index_of(T953* C,T0* a1){
  57. int R=0;
  58. T0* _fn_key=NULL;
  59. _fn_key=X776to_key(a1);
  60. R=(((T855*)((T855*)((((T953*)C))->_list/*0*/))))->_upper/*8*/;
  61. while (!(((R)==(0))||((_fn_key)==((void*)(X776to_key(/*(IRF4.6item*/r855item(((T855*)((((T953*)C))->_list/*0*/)),R)/*)*/)))))) {
  62. R=(R)-(1);
  63. }
  64. return R;
  65. }
  66. /*No:IFTHEN.fz_is_not_boolean*/
  67. void r809make(T809* C,T0* a1,T0* a2){
  68. C->_expression=a1;
  69. C->_then_compound=a2;
  70. }
  71. /*No:IFTHEN.nb_errors*/
  72. /*No:IFTHEN.expression*/
  73. T0* r809to_runnable(T809* C,T0* a1){
  74. T0* R=NULL;
  75. T0* _t=NULL;
  76. T0* _tc=NULL;
  77. T0* _e=NULL;
  78. /*IF*/if (((((T809*)C))->_run_compound/*8*/)==((void*)(NULL))) {
  79. C->_run_compound=a1;
  80. _e=X662to_runnable((((T809*)C))->_expression/*0*/,/*(IRF4.6current_type*/(((T592*)((T592*)((((T809*)C))->_run_compound/*8*/))))->_current_type/*4*//*)*/);
  81. /*IF*/if ((_e)==((void*)(NULL))) {
  82. r809error(X662start_position((((T809*)C))->_expression/*0*/),((T0*)ms8_809));
  83. }
  84. else {
  85. C->_expression=_e;
  86. _t=X662result_type((((T809*)C))->_expression/*0*/);
  87. /*IF*/if (!(X291is_boolean(_t))) {
  88. /*[IRF3.6append*/{T0* b1=((T0*)ms9_809);
  89. r7append(((T7*)(oBC683explanation)),b1);
  90. }/*]*/
  91. r683add_type(X662result_type((((T809*)C))->_expression/*0*/),((T0*)ms73_470));
  92. r683add_position(X662start_position((((T809*)C))->_expression/*0*/));
  93. r683print_as_error(((T683*)(oBC364eh)));
  94. }
  95. /*FI*/}
  96. /*FI*//*IF*/if (((((T809*)C))->_then_compound/*4*/)!=((void*)(NULL))) {
  97. _tc=r592to_runnable(((T592*)((((T809*)C))->_then_compound/*4*/)),/*(IRF4.6current_type*/(((T592*)((T592*)((((T809*)C))->_run_compound/*8*/))))->_current_type/*4*//*)*/);
  98. /*IF*/if ((_tc)!=((void*)(NULL))) {
  99. C->_then_compound=_tc;
  100. }
  101. /*FI*/}
  102. /*FI*//*IF*/if ((/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0)) {
  103. R=(T0*)C;
  104. }
  105. /*FI*/}
  106. else {
  107. {T809*n=malloc(sizeof(*n));
  108. *n=M809;
  109. r809make(n,(((T809*)C))->_expression/*0*/,(((T809*)C))->_then_compound/*4*/);
  110. R=(T0*)n;
  111. }
  112. R=r809to_runnable(((T809*)R),a1);
  113. }
  114. /*FI*/return R;
  115. }
  116. void r809pretty_print(T809* C){
  117. r238level_incr(((T238*)(oBC364fmt)));
  118. /*[IRF3.3set_semi_colon_flag*/((((T238*)(((T238*)(oBC364fmt)))))->_semi_colon_flag)=(0);
  119. /*]*/
  120. X662pretty_print((((T809*)C))->_expression/*0*/);
  121. r238level_decr(((T238*)(oBC364fmt)));
  122. r238keyword(((T238*)(oBC364fmt)),((T0*)ms7_809));
  123. r238indent(((T238*)(oBC364fmt)));
  124. /*IF*/if (((((T809*)C))->_then_compound/*4*/)!=((void*)(NULL))) {
  125. r592pretty_print(((T592*)((((T809*)C))->_then_compound/*4*/)));
  126. }
  127. /*FI*/}
  128. /*No:IFTHEN.then_compound*/
  129. /*No:IFTHEN.current_type*/
  130. /*No:IFTHEN.run_compound*/
  131. void r809error(T0* a1,T0* a2){
  132. r683add_position(a1);
  133. r683error(((T683*)(oBC364eh)),a2);
  134. }
  135. /*No:CST_ATT_INTEGER.arguments*/
  136. T0* r689try_to_undefine(T689* C,T0* a1,T0* a2){
  137. T0* R=NULL;
  138. X776undefine_in(a1,a2);
  139. R=r689try_to_undefine_aux(C,a1,a2);
  140. /*IF*/if ((R)!=((void*)(NULL))) {
  141. /*X249*//*[IRF3.3set_clients*/((((T853*)(((T853*)R))))->_clients)=((((T689*)C))->_clients/*20*/);
  142. /*]*/
  143. }
  144. else {
  145. r605fatal_undefine(((T605*)a2),a1);
  146. }
  147. /*FI*/return R;
  148. }
  149. /*No:CST_ATT_INTEGER.is_deferred*/
  150. void r689pretty_tail(T689* C){
  151. r238put_string(((T238*)(oBC364fmt)),((T0*)ms1_418));
  152. /*[IRF3.6pretty_print*/{T342* C1=((T342*)(/*(IRF4.3value*/(((T689*)C))->_value_mem/*24*//*)*/));
  153. r238put_string(((T238*)(oBC364fmt)),/*(IRF4.6to_string*/r2to_string(((int)((((T342*)C1))->_value/*12*/)))/*)*/);
  154. }/*]*/
  155. }
  156. void r689add_into(T689* C,T0* a1){
  157. T0* _fn=NULL;
  158. int _i=0;
  159. C->_base_class=r627base_class(((T627*)(X776start_position(/*(IRF4.6item*/r855item(((T855*)((((T953*)((T953*)((((T689*)C))->_names/*8*/))))->_list/*0*/)),1)/*)*/))));
  160. _i=1;
  161. while (!((_i)>(/*(IRF4.6count*/(((T855*)((T855*)((((T953*)((T953*)((((T689*)C))->_names/*8*/))))->_list/*0*/))))->_upper/*8*//*)*/))) {
  162. _fn=/*(IRF4.6item*/r855item(((T855*)((((T953*)((T953*)((((T689*)C))->_names/*8*/))))->_list/*0*/)),_i)/*)*/;
  163. /*IF*/if (r237has(((T237*)a1),X776to_key(_fn))) {
  164. _fn=/*X359*/((T0*)/*(IRF4.6first_name*//*(IRF4.6item*/r855item(((T855*)((((T953*)((T953*)((((T398*)((T398*)(r237at(((T237*)a1),X776to_key(_fn))))))->_names/*8*/))))->_list/*0*/)),1)/*)*//*)*/);
  165. r683add_position(X776start_position(_fn));
  166. r683add_position(X776start_position(/*(IRF4.6item*/r855item(((T855*)((((T953*)((T953*)((((T689*)C))->_names/*8*/))))->_list/*0*/)),_i)/*)*/));
  167. r683error(((T683*)(oBC364eh)),((T0*)ms11_359));
  168. /*[IRF3.6append*/{T0* b1=X776to_string(_fn);
  169. r7append(((T7*)(oBC683explanation)),b1);
  170. }/*]*/
  171. r683error(((T683*)(oBC364eh)),((T0*)ms67_470));
  172. }
  173. else {
  174. r237put(((T237*)a1),(T0*)C,X776to_key(_fn));
  175. }
  176. /*FI*/_i=(_i)+(1);
  177. }
  178. }
  179. T0* r689try_to_undefine_aux(T689* C,T0* a1,T0* a2){
  180. T0* R=NULL;
  181. r683add_position(r689start_position(C));
  182. r689error(X776start_position(a1),((T0*)ms1_308));
  183. r605fatal_undefine(((T605*)a2),a1);
  184. return R;
  185. }
  186. void r689make(T689* C,T0* a1,T0* a2,T0* a3){
  187. r689make_e_feature(C,a1,a2);
  188. C->_value_mem=a3;
  189. }
  190. /*No:CST_ATT_INTEGER.nb_errors*/
  191. void r689pretty_print_one_name(T0* a1){
  192. /*IF*/if (X776is_frozen(a1)) {
  193. r238keyword(((T238*)(oBC364fmt)),((T0*)ms10_359));
  194. }
  195. /*FI*/X776definition_pretty_print(a1);
  196. }
  197. /*No:CST_ATT_INTEGER.set_header_comment*/
  198. T0* r689start_position(T689* C){
  199. T0* R=NULL;
  200. R=X776start_position(/*(IRF4.6first_name*//*(IRF4.6item*/r855item(((T855*)((((T953*)((T953*)((((T689*)C))->_names/*8*/))))->_list/*0*/)),1)/*)*//*)*/);
  201. return R;
  202. }
  203. T0* r689to_run_feature(T689* C,T0* a1,T0* a2){
  204. T0* R=NULL;
  205. T0* _rc=NULL;
  206. _rc=X291run_class(a1);
  207. R=r368at(((T368*)_rc),a2);
  208. if(NULL!=(R))switch(((T0*)R)->id) {
  209. case 808: 
  210. break;
  211. default:
  212. R=NULL;
  213. };/*IF*/if ((R)==((void*)(NULL))) {
  214. {T808*n=malloc(sizeof(*n));
  215. *n=M808;
  216. r808make(n,a1,a2,(T0*)C);
  217. R=(T0*)n;
  218. }
  219. }
  220. /*FI*/return R;
  221. }
  222. /*No:CST_ATT_INTEGER.ensure_assertion*/
  223. /*No:CST_ATT_INTEGER.code_require*/
  224. /*No:CST_ATT_INTEGER.result_type*/
  225. /*No:CST_ATT_INTEGER.em1*/
  226. void r689pretty_print(T689* C){
  227. r689pretty_print_profile(C);
  228. r689pretty_tail(C);
  229. r238put_character(((T238*)(oBC364fmt)),'\73');
  230. /*IF*/if (((((T689*)C))->_header_comment/*16*/)!=((void*)(NULL))) {
  231. /*[IRF3.3set_indent_level*/((((T238*)(((T238*)(oBC364fmt)))))->_indent_level)=(2);
  232. /*]*/
  233. r238indent(((T238*)(oBC364fmt)));
  234. /*[IRF3.3set_indent_level*/((((T238*)(((T238*)(oBC364fmt)))))->_indent_level)=(1);
  235. /*]*/
  236. r393pretty_print(((T393*)((((T689*)C))->_header_comment/*16*/)));
  237. }
  238. /*FI*/}
  239. /*No:CST_ATT_INTEGER.set_clients*/
  240. /*No:CST_ATT_INTEGER.em2*/
  241. /*No:CST_ATT_INTEGER.require_assertion*/
  242. /*No:CST_ATT_INTEGER.value*/
  243. /*No:CST_ATT_INTEGER.names*/
  244. /*No:CST_ATT_INTEGER.value_mem*/
  245. void r689pretty_print_profile(T689* C){
  246. r689pretty_print_names(C);
  247. /*[IRF3.3set_indent_level*/((((T238*)(((T238*)(oBC364fmt)))))->_indent_level)=(2);
  248. /*]*/
  249. /*[IRF3.1pretty_print_arguments*//*]*/
  250. /*[IRF3.3set_indent_level*/((((T238*)(((T238*)(oBC364fmt)))))->_indent_level)=(3);
  251. /*]*/
  252. /*IF*/if (((((T689*)C))->_result_type/*12*/)!=((void*)(NULL))) {
  253. r238put_string(((T238*)(oBC364fmt)),((T0*)ms8_359));
  254. X291pretty_print((((T689*)C))->_result_type/*12*/);
  255. }
  256. /*FI*/}
  257. void r689pretty_print_names(T689* C){
  258. int _i=0;
  259. _i=1;
  260. r689pretty_print_one_name(/*(IRF4.6item*/r855item(((T855*)((((T953*)((T953*)((((T689*)C))->_names/*8*/))))->_list/*0*/)),_i)/*)*/);
  261. _i=(_i)+(1);
  262. while (!((_i)>(/*(IRF4.6count*/(((T855*)((T855*)((((T953*)((T953*)((((T689*)C))->_names/*8*/))))->_list/*0*/))))->_upper/*8*//*)*/))) {
  263. r238put_string(((T238*)(oBC364fmt)),((T0*)ms9_359));
  264. r689pretty_print_one_name(/*(IRF4.6item*/r855item(((T855*)((((T953*)((T953*)((((T689*)C))->_names/*8*/))))->_list/*0*/)),_i)/*)*/);
  265. _i=(_i)+(1);
  266. }
  267. }
  268. int r689can_hide(T689* C,T0* a1,T0* a2){
  269. int R=0;
  270. /*IF*/if (((((T689*)C))->_result_type/*12*/)!=((void*)(/*X359*/((T0*)(((T398*)((T398*)a1)))->_result_type/*12*/)))) {
  271. /*IF*/if ((((((T689*)C))->_result_type/*12*/)==((void*)(NULL)))||((/*X359*/((T0*)(((T398*)((T398*)a1)))->_result_type/*12*/))==((void*)(NULL)))) {
  272. r683add_position(X359start_position(a1));
  273. r689error(r689start_position(C),((T0*)ms5_359));
  274. }
  275. /*FI*/}
  276. /*FI*//*IF*/if ((/*(IRF4.1arguments*/NULL/*)*/)!=((void*)(X359arguments(a1)))) {
  277. /*IF*/{/*AT*/r683add_position(X359start_position(a1));
  278. r689error(r689start_position(C),((T0*)ms6_359));
  279. }
  280. /*FI*/}
  281. /*FI*//*IF*/if ((/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0)) {
  282. /*IF*/if (((((T689*)C))->_result_type/*12*/)!=((void*)(NULL))) {
  283. /*IF*/if (!(X291is_a_in((((T689*)C))->_result_type/*12*/,/*X359*/((T0*)(((T398*)((T398*)a1)))->_result_type/*12*/),a2))) {
  284. /*[IRF3.6append*/{T0* b1=((T0*)ms13_359);
  285. r7append(((T7*)(oBC683explanation)),b1);
  286. }/*]*/
  287. /*[IRF3.6append*/{T0* b1=X291run_time_mark((((T368*)((T368*)a2)))->_current_type/*0*/);
  288. r7append(((T7*)(oBC683explanation)),b1);
  289. }/*]*/
  290. r683error(((T683*)(oBC364eh)),((T0*)ms67_470));
  291. }
  292. /*FI*/}
  293. /*FI*/}
  294. /*FI*//*IF*/if ((/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0)) {
  295. /*IF*//*AF*//*AE*/
  296. /*FI*/}
  297. /*FI*/R=(/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0);
  298. return R;
  299. }
  300. /*No:CST_ATT_INTEGER.header_comment*/
  301. int r689is_merge_with(T689* C,T0* a1,T0* a2){
  302. int R=0;
  303. /*IF*/if (((((T689*)C))->_result_type/*12*/)!=((void*)(/*X359*/((T0*)(((T398*)((T398*)a1)))->_result_type/*12*/)))) {
  304. /*IF*/if ((((((T689*)C))->_result_type/*12*/)==((void*)(NULL)))||((/*X359*/((T0*)(((T398*)((T398*)a1)))->_result_type/*12*/))==((void*)(NULL)))) {
  305. r683add_position(X359start_position(a1));
  306. r689error(r689start_position(C),((T0*)ms2_359));
  307. }
  308. /*FI*/}
  309. /*FI*//*IF*/if ((/*(IRF4.1arguments*/NULL/*)*/)!=((void*)(X359arguments(a1)))) {
  310. /*IF*/{/*AT*/r683add_position(X359start_position(a1));
  311. r689error(r689start_position(C),((T0*)ms3_359));
  312. }
  313. /*FI*/}
  314. /*FI*//*IF*/if (((((T689*)C))->_result_type/*12*/)!=((void*)(NULL))) {
  315. /*IF*/if (!(X291is_a_in((((T689*)C))->_result_type/*12*/,/*X359*/((T0*)(((T398*)((T398*)a1)))->_result_type/*12*/),a2))) {
  316. r683error(((T683*)(oBC364eh)),((T0*)ms12_359));
  317. }
  318. /*FI*/}
  319. /*FI*//*IF*//*AF*//*AE*/
  320. /*FI*/R=(/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0);
  321. return R;
  322. }
  323. /*No:CST_ATT_INTEGER.fz_dot*/
  324. /*No:CST_ATT_INTEGER.first_name*/
  325. /*No:CST_ATT_INTEGER.clients*/
  326. void r689collect_for(int a1){
  327. /*IF*/if ((a1)==(1001)) {
  328. /*IF*//*AF*//*AE*/
  329. /*FI*/}
  330. else {
  331. /*IF*//*AF*//*AE*/
  332. /*FI*/}
  333. /*FI*/}
  334. void r689error(T0* a1,T0* a2){
  335. r683add_position(a1);
  336. r683error(((T683*)(oBC364eh)),a2);
  337. }
  338. /*No:CST_ATT_INTEGER.base_class*/
  339. /*No:CST_ATT_INTEGER.pretty_print_arguments*/
  340. void r689make_e_feature(T689* C,T0* a1,T0* a2){
  341. C->_names=a1;
  342. C->_result_type=a2;
  343. }
  344. /*No:BASE_CLASS.fz_is_invalid*/
  345. /*No:BASE_CLASS.set_end_comment*/
  346. /*No:BASE_CLASS.id*/
  347. void r605add_feature_clause(T605* C,T0* a1){
  348. /*IF*/if (((((T605*)C))->_feature_clause_list/*48*/)==((void*)(NULL))) {
  349. {T913*n=malloc(sizeof(*n));
  350. *n=M913;
  351. /*[IRF3.3make*/((((T913*)(n)))->_list)=(se_ma764(1,a1));
  352. /*]*/
  353. C->_feature_clause_list=(T0*)n;
  354. }
  355. }
  356. else {
  357. /*[IRF3.5add_last*/r764add_last(((T764*)((((T913*)((T913*)((((T605*)C))->_feature_clause_list/*48*/))))->_list/*0*/)),a1);
  358. /*]*/
  359. }
  360. /*FI*/}
  361. void r605set_parent_list(T605* C,T0* a1,T0* a2,T0* a3){
  362. {T673*n=malloc(sizeof(*n));
  363. *n=M673;
  364. r673make(n,(T0*)C,a1,a2,a3);
  365. C->_parent_list=(T0*)n;
  366. }
  367. }
  368. /*No:BASE_CLASS.is_deferred*/
  369. int r605has_creation(T605* C,T0* a1){
  370. int R=0;
  371. T0* _cn=NULL;
  372. T0* _bc=NULL;
  373. T0* _cc=NULL;
  374. /*IF*/if (((((T605*)C))->_creation_clause_list/*44*/)==((void*)(NULL))) {
  375. /*[IRF3.6append*/{T0* b1=(((T451*)((T451*)((((T605*)C))->_base_class_name/*24*/))))->_to_string/*0*/;
  376. r7append(((T7*)(oBC683explanation)),b1);
  377. }/*]*/
  378. /*[IRF3.6append*/{T0* b1=((T0*)ms7_605);
  379. r7append(((T7*)(oBC683explanation)),b1);
  380. }/*]*/
  381. r683add_position(X776start_position(a1));
  382. r683print_as_error(((T683*)(oBC364eh)));
  383. }
  384. else {
  385. _cc=r378get_clause(((T378*)((((T605*)C))->_creation_clause_list/*44*/)),a1);
  386. /*IF*/if ((_cc)==((void*)(NULL))) {
  387. /*[IRF3.6append*/{T0* b1=((T0*)ms143_470);
  388. r7append(((T7*)(oBC683explanation)),b1);
  389. }/*]*/
  390. /*[IRF3.6append*/{T0* b1=X776to_string(a1);
  391. r7append(((T7*)(oBC683explanation)),b1);
  392. }/*]*/
  393. /*[IRF3.6append*/{T0* b1=((T0*)ms8_605);
  394. r7append(((T7*)(oBC683explanation)),b1);
  395. }/*]*/
  396. /*[IRF3.6append*/{T0* b1=(((T451*)((T451*)((((T605*)C))->_base_class_name/*24*/))))->_to_string/*0*/;
  397. r7append(((T7*)(oBC683explanation)),b1);
  398. }/*]*/
  399. r605error(X776start_position(a1),((T0*)ms67_470));
  400. }
  401. else {
  402. R=1;
  403. _bc=X776origin_base_class(a1);
  404. /*IF*/if ((_bc)!=((void*)(NULL))) {
  405. _cn=(((T605*)((T605*)_bc)))->_base_class_name/*24*/;
  406. R=r636gives_permission_to(((T636*)((((T583*)((T583*)_cc)))->_clients/*4*/)),_cn);
  407. }
  408. /*FI*/}
  409. /*FI*/}
  410. /*FI*//*IF*/if (!(R)) {
  411. r605error(X776start_position(a1),((T0*)ms9_605));
  412. }
  413. /*FI*/return R;
  414. }
  415. void r605add_creation_clause(T605* C,T0* a1){
  416. /*IF*/if (((((T605*)C))->_creation_clause_list/*44*/)==((void*)(NULL))) {
  417. {T378*n=malloc(sizeof(*n));
  418. *n=M378;
  419. /*[IRF3.3make*/((((T378*)(n)))->_list)=(se_ma235(1,a1));
  420. /*]*/
  421. C->_creation_clause_list=(T0*)n;
  422. }
  423. }
  424. else {
  425. /*[IRF3.5add_last*/r235add_last(((T235*)((((T378*)((T378*)((((T605*)C))->_creation_clause_list/*44*/))))->_list/*0*/)),a1);
  426. /*]*/
  427. }
  428. /*FI*/}
  429. /*No:BASE_CLASS.us_copy*/
  430. /*No:BASE_CLASS.feature_clause_list*/
  431. void r605get_started(T605* C){
  432. C->_id=r410item(((T410*)(r605id_provider())),(((T451*)((T451*)((((T605*)C))->_base_class_name/*24*/))))->_to_string/*0*/);
  433. /*IF*/if (((((T605*)C))->_feature_clause_list/*48*/)!=((void*)(NULL))) {
  434. r913get_started(((T913*)((((T605*)C))->_feature_clause_list/*48*/)),(((T605*)C))->_feature_dictionary/*60*/);
  435. }
  436. /*FI*//*IF*/if (((((T605*)C))->_parent_list/*40*/)!=((void*)(NULL))) {
  437. r673get_started(((T673*)((((T605*)C))->_parent_list/*40*/)));
  438. }
  439. /*FI*//*IF*/if (((((T605*)C))->_end_comment/*56*/)!=((void*)(NULL))) {
  440. r393good_end(((T393*)((((T605*)C))->_end_comment/*56*/)),(((T605*)C))->_base_class_name/*24*/);
  441. }
  442. /*FI*//*IF*/if (((((T605*)C))->_parent_list/*40*/)!=((void*)(NULL))) {
  443. r863clear(((T863*)(oBC605visited)));
  444. r863add_last(((T863*)(oBC605visited)),(T0*)C);
  445. r673inherit_cycle_check(((T673*)((((T605*)C))->_parent_list/*40*/)));
  446. }
  447. /*FI*//*IF*/if (((r590all_check(((T590*)(oBC364run_control))))&&((((T605*)C))->_is_deferred/*16*/))&&(((((T605*)C))->_creation_clause_list/*44*/)!=((void*)(NULL)))) {
  448. r683add_position((((T451*)((T451*)((((T605*)C))->_base_class_name/*24*/))))->_start_position/*4*/);
  449. r605warning(r378start_position(((T378*)((((T605*)C))->_creation_clause_list/*44*/))),((T0*)ms6_605));
  450. }
  451. /*FI*/}
  452. /*No:BASE_CLASS.fz_end*/
  453. int r605is_subclass_of(T605* C,T0* a1){
  454. int R=0;
  455. /*IF*/if (r863fast_has(((T863*)((((T605*)C))->_isom/*64*/)),a1)) {
  456. R=1;
  457. }
  458. else {
  459. /*IF*/if (r605is_any(((T605*)a1))) {
  460. R=1;
  461. }
  462. else {
  463. r863clear(((T863*)(oBC605visited)));
  464. R=r605is_subclass_of_aux(C,a1);
  465. }
  466. /*FI*//*IF*/if (R) {
  467. r863add_last(((T863*)((((T605*)C))->_isom/*64*/)),a1);
  468. }
  469. /*FI*/}
  470. /*FI*/return R;
  471. }
  472. int fBC364class_any=0;
  473. T0*oBC364class_any=NULL;
  474. T0* r605class_any(void){
  475. if (fBC364class_any==0){
  476. T0* R=NULL;
  477. fBC364class_any=1;
  478. R=r605class_with(((T0*)ms1_473));
  479. oBC364class_any=R;}
  480. return oBC364class_any;}
  481. int r605has_feature(T605* C,T0* a1){
  482. int R=0;
  483. r446make(((T446*)(r605mem_fn())),a1,NULL);
  484. R=r605has(C,r605mem_fn());
  485. return R;
  486. }
  487. int fBC605mem_fn=0;
  488. T0*oBC605mem_fn=NULL;
  489. T0* r605mem_fn(void){
  490. if (fBC605mem_fn==0){
  491. T0* R=NULL;
  492. fBC605mem_fn=1;
  493. {T446*n=malloc(sizeof(*n));
  494. *n=M446;
  495. r446make(n,((T0*)ms27_605),NULL);
  496. R=(T0*)n;
  497. }
  498. oBC605mem_fn=R;}
  499. return oBC605mem_fn;}
  500. int r605is_subclass_of_aux(T605* C,T0* a1){
  501. int R=0;
  502. /*IF*/if (r863fast_has(((T863*)(oBC605visited)),(T0*)C)) {
  503. }
  504. else {
  505. r863add_last(((T863*)(oBC605visited)),(T0*)C);
  506. /*IF*/if (((((T605*)C))->_parent_list/*40*/)!=((void*)(NULL))) {
  507. R=r673has_parent(((T673*)((((T605*)C))->_parent_list/*40*/)),a1);
  508. }
  509.  else if (!(r863fast_has(((T863*)(oBC605visited)),r605class_any()))) {
  510. R=r605is_subclass_of_aux(((T605*)(r605class_any())),a1);
  511. }
  512. /*FI*/}
  513. /*FI*/return R;
  514. }
  515. /*No:BASE_CLASS.end_comment*/
  516. void r605add_index_clause(T605* C,T0* a1){
  517. /*IF*/if (((((T605*)C))->_index_list/*8*/)==((void*)(NULL))) {
  518. {T688*n=malloc(sizeof(*n));
  519. *n=M688;
  520. /*[IRF3.3make*/((((T688*)(n)))->_list)=(se_ma848(1,a1));
  521. /*]*/
  522. C->_index_list=(T0*)n;
  523. }
  524. }
  525. else {
  526. r848add_last(((T848*)((((T688*)((T688*)((((T605*)C))->_index_list/*8*/))))->_list/*0*/)),a1);
  527. }
  528. /*FI*/}
  529. /*No:BASE_CLASS.obsolete_type_string*/
  530. T0* r605class_with(T0* a1){
  531. T0* R=NULL;
  532. R=r604get_class(a1);
  533. return R;
  534. }
  535. /*No:BASE_CLASS.has_creation_clause*/
  536. void r605make(T605* C){
  537. {T863*n=malloc(sizeof(*n));
  538. *n=M863;
  539. r863with_capacity(n,6,1);
  540. C->_isom=(T0*)n;
  541. }
  542. C->_path=r902item((((T676*)((T676*)(oBC364parser_buffer))))->_path/*0*/);
  543. {T451*n=malloc(sizeof(*n));
  544. *n=M451;
  545. r451make_unknown(n);
  546. C->_base_class_name=(T0*)n;
  547. }
  548. {T237*n=malloc(sizeof(*n));
  549. *n=M237;
  550. r237with_capacity(n,32);
  551. C->_feature_dictionary=(T0*)n;
  552. }
  553. }
  554. /*No:BASE_CLASS.parent_list*/
  555. /*No:BASE_CLASS.error_vtec1*/
  556. /*No:BASE_CLASS.path*/
  557. /*No:BASE_CLASS.next_parent_for*/
  558. void r605check_expanded_with(T605* C,T0* a1){
  559. T0* _rf=NULL;
  560. /*IF*/if ((((T605*)C))->_is_deferred/*16*/) {
  561. r683add_type(a1,((T0*)ms72_470));
  562. /*[IRF3.6fatal_error*/{T0* b1=((T0*)ms1_605);
  563. r683fatal_error(((T683*)(oBC364eh)),b1);
  564. }/*]*/
  565. }
  566. /*FI*//*IF*/if (((((T605*)C))->_creation_clause_list/*44*/)!=((void*)(NULL))) {
  567. r378check_expanded_with(((T378*)((((T605*)C))->_creation_clause_list/*44*/)),a1);
  568. }
  569. /*FI*/_rf=r605expanded_initializer(C,a1);
  570. }
  571. /*No:BASE_CLASS.isom*/
  572. /*No:BASE_CLASS.first_parent_for*/
  573. /*No:BASE_CLASS.index_list*/
  574. /*No:BASE_CLASS.set_heading_comment1*/
  575. void r605inherit_cycle_check(T605* C){
  576. int _i=0;
  577. r863add_last(((T863*)(oBC605visited)),(T0*)C);
  578. /*IF*/if ((r863first(((T863*)(oBC605visited))))==((void*)(C))) {
  579. /*[IRF3.6append*/{T0* b1=((T0*)ms19_605);
  580. r7append(((T7*)(oBC683explanation)),b1);
  581. }/*]*/
  582. _i=1;
  583. while (!((_i)>((((T863*)((T863*)(oBC605visited))))->_upper/*8*/))) {
  584. /*[IRF3.6append*/{T0* b1=(((T451*)((T451*)((((T605*)((T605*)(r863item(((T863*)(oBC605visited)),_i)))))->_base_class_name/*24*/))))->_to_string/*0*/;
  585. r7append(((T7*)(oBC683explanation)),b1);
  586. }/*]*/
  587. /*IF*/if ((_i)<((((T863*)((T863*)(oBC605visited))))->_upper/*8*/)) {
  588. /*[IRF3.6append*/{T0* b1=((T0*)ms20_605);
  589. r7append(((T7*)(oBC683explanation)),b1);
  590. }/*]*/
  591. }
  592. /*FI*/_i=(_i)+(1);
  593. }
  594. /*[IRF3.6fatal_error*/{T0* b1=((T0*)ms21_605);
  595. r683fatal_error(((T683*)(oBC364eh)),b1);
  596. }/*]*/
  597. }
  598.  else if (((((T605*)C))->_parent_list/*40*/)!=((void*)(NULL))) {
  599. r673inherit_cycle_check(((T673*)((((T605*)C))->_parent_list/*40*/)));
  600. }
  601. /*FI*/}
  602. T0* r605new_name_of(T605* C,T0* a1,T0* a2){
  603. T0* R=NULL;
  604. /*IF*/if ((C)==((void*)(a1))) {
  605. R=a2;
  606. }
  607. else {
  608. R=r605up_to_original(((T605*)a1),(T0*)C,a2);
  609. /*IF*/if ((R)==((void*)(NULL))) {
  610. r683add_position(X776start_position(a2));
  611. /*[IRF3.6append*/{T0* b1=((T0*)ms143_470);
  612. r7append(((T7*)(oBC683explanation)),b1);
  613. }/*]*/
  614. /*[IRF3.6append*/{T0* b1=X776to_string(a2);
  615. r7append(((T7*)(oBC683explanation)),b1);
  616. }/*]*/
  617. /*[IRF3.6append*/{T0* b1=((T0*)ms2_605);
  618. r7append(((T7*)(oBC683explanation)),b1);
  619. }/*]*/
  620. /*[IRF3.6append*/{T0* b1=(((T451*)((T451*)((((T605*)((T605*)a1)))->_base_class_name/*24*/))))->_to_string/*0*/;
  621. r7append(((T7*)(oBC683explanation)),b1);
  622. }/*]*/
  623. /*[IRF3.6append*/{T0* b1=((T0*)ms3_605);
  624. r7append(((T7*)(oBC683explanation)),b1);
  625. }/*]*/
  626. /*[IRF3.6append*/{T0* b1=(((T451*)((T451*)((((T605*)C))->_base_class_name/*24*/))))->_to_string/*0*/;
  627. r7append(((T7*)(oBC683explanation)),b1);
  628. }/*]*/
  629. /*[IRF3.6fatal_error*/{T0* b1=((T0*)ms4_605);
  630. r683fatal_error(((T683*)(oBC364eh)),b1);
  631. }/*]*/
  632. }
  633. /*FI*/}
  634. /*FI*/return R;
  635. }
  636. void r605set_is_expanded(T605* C){
  637. /*IF*/if ((((T605*)C))->_is_deferred/*16*/) {
  638. /*[IRF3.6error_vtec1*/{T605* C1=C;
  639. r605error((((T451*)((T451*)((((T605*)C1))->_base_class_name/*24*/))))->_start_position/*4*/,((T0*)ms33_605));
  640. }/*]*/
  641. }
  642. /*FI*/C->_is_expanded=1;
  643. }
  644. int r605super_has(T605* C,T0* a1){
  645. int R=0;
  646. /*IF*/if (((((T605*)C))->_parent_list/*40*/)==((void*)(NULL))) {
  647. /*IF*/if (r605is_general(C)) {
  648. R=0;
  649. }
  650. else {
  651. R=r605has(((T605*)(r605class_any())),a1);
  652. }
  653. /*FI*/}
  654. else {
  655. R=r673has(((T673*)((((T605*)C))->_parent_list/*40*/)),a1);
  656. }
  657. /*FI*/return R;
  658. }
  659. void r605pretty_print(T605* C){
  660. /*[IRF3.3set_indent_level*/((((T238*)(((T238*)(oBC364fmt)))))->_indent_level)=(0);
  661. /*]*/
  662. /*IF*/if (((((T605*)C))->_index_list/*8*/)!=((void*)(NULL))) {
  663. r688pretty_print(((T688*)((((T605*)C))->_index_list/*8*/)));
  664. r238indent(((T238*)(oBC364fmt)));
  665. }
  666. /*FI*//*IF*/if (((((T605*)C))->_heading_comment1/*12*/)!=((void*)(NULL))) {
  667. r393pretty_print(((T393*)((((T605*)C))->_heading_comment1/*12*/)));
  668. r238indent(((T238*)(oBC364fmt)));
  669. }
  670. /*FI*//*IF*/if ((((T605*)C))->_is_deferred/*16*/) {
  671. r238keyword(((T238*)(oBC364fmt)),((T0*)ms29_605));
  672. }
  673.  else if ((((T605*)C))->_is_expanded/*20*/) {
  674. r238keyword(((T238*)(oBC364fmt)),((T0*)ms14_470));
  675. }
  676. /*FI*/r238keyword(((T238*)(oBC364fmt)),((T0*)ms30_605));
  677. /*[IRF3.6pretty_print*/{T451* C1=((T451*)((((T605*)C))->_base_class_name/*24*/));
  678. r238put_string(((T238*)(oBC364fmt)),(((T451*)C1))->_to_string/*0*/);
  679. }/*]*/
  680. /*IF*/if (/*(IRF4.7is_generic*/((((T605*)C))->_formal_generic_list/*28*/)!=(NULL)/*)*/) {
  681. r881pretty_print(((T881*)((((T605*)C))->_formal_generic_list/*28*/)));
  682. }
  683. /*FI*/r238indent(((T238*)(oBC364fmt)));
  684. /*IF*/if (((((T605*)C))->_obsolete_type_string/*36*/)!=((void*)(NULL))) {
  685. r238keyword(((T238*)(oBC364fmt)),((T0*)ms31_605));
  686. r805pretty_print(((T805*)((((T605*)C))->_obsolete_type_string/*36*/)));
  687. }
  688. /*FI*/r238indent(((T238*)(oBC364fmt)));
  689. /*IF*/if (((((T605*)C))->_heading_comment2/*32*/)!=((void*)(NULL))) {
  690. r393pretty_print(((T393*)((((T605*)C))->_heading_comment2/*32*/)));
  691. }
  692. /*FI*//*IF*/if (((((T605*)C))->_parent_list/*40*/)!=((void*)(NULL))) {
  693. r673pretty_print(((T673*)((((T605*)C))->_parent_list/*40*/)));
  694. }
  695. /*FI*//*IF*/if (((((T605*)C))->_creation_clause_list/*44*/)!=((void*)(NULL))) {
  696. r378pretty_print(((T378*)((((T605*)C))->_creation_clause_list/*44*/)));
  697. }
  698. /*FI*//*IF*/if (((((T605*)C))->_feature_clause_list/*48*/)!=((void*)(NULL))) {
  699. r913pretty_print(((T913*)((((T605*)C))->_feature_clause_list/*48*/)));
  700. }
  701. /*FI*//*IF*/if (((((T605*)C))->_invariant_assertion/*52*/)!=((void*)(NULL))) {
  702. r699pretty_print(((T699*)((((T605*)C))->_invariant_assertion/*52*/)));
  703. }
  704. /*FI*//*[IRF3.3set_indent_level*/((((T238*)(((T238*)(oBC364fmt)))))->_indent_level)=(0);
  705. /*]*/
  706. /*IF*/if (r238zen_mode(((T238*)(oBC364fmt)))) {
  707. r238skip(((T238*)(oBC364fmt)),0);
  708. }
  709. else {
  710. r238skip(((T238*)(oBC364fmt)),1);
  711. }
  712. /*FI*/r238keyword(((T238*)(oBC364fmt)),((T0*)ms12_470));
  713. /*IF*/if ((((((T605*)C))->_end_comment/*56*/)!=((void*)(NULL)))&&(!(r393dummy(((T393*)((((T605*)C))->_end_comment/*56*/)))))) {
  714. r393pretty_print(((T393*)((((T605*)C))->_end_comment/*56*/)));
  715. }
  716.  else if (!(r238zen_mode(((T238*)(oBC364fmt))))) {
  717. r238put_string(((T238*)(oBC364fmt)),((T0*)ms32_605));
  718. r238put_string(((T238*)(oBC364fmt)),(((T451*)((T451*)((((T605*)C))->_base_class_name/*24*/))))->_to_string/*0*/);
  719. }
  720. /*FI*/r238put_character(((T238*)(oBC364fmt)),'\n');
  721. }
  722. T0* r605up_to_original(T605* C,T0* a1,T0* a2){
  723. T0* R=NULL;
  724. /*IF*/if (r605proper_has(C,a2)) {
  725. /*IF*/if (((((T605*)C))->_parent_list/*40*/)==((void*)(NULL))) {
  726. R=r605new_name_of_original(((T605*)a1),(T0*)C,a2);
  727. }
  728. else {
  729. R=r673up_to_original(((T673*)((((T605*)C))->_parent_list/*40*/)),a1,a2);
  730. /*IF*/if ((R)==((void*)(NULL))) {
  731. R=r605new_name_of_original(((T605*)a1),(T0*)C,a2);
  732. }
  733. /*FI*/}
  734. /*FI*/}
  735.  else if (((((T605*)C))->_parent_list/*40*/)!=((void*)(NULL))) {
  736. R=r673up_to_original(((T673*)((((T605*)C))->_parent_list/*40*/)),a1,a2);
  737. }
  738.  else if (r605is_general(C)) {
  739. }
  740. else {
  741. R=r605up_to_original(((T605*)(r605class_any())),a1,a2);
  742. }
  743. /*FI*/return R;
  744. }
  745. void r605collect_invariant(T605* C,T0* a1){
  746. /*IF*/if (((((T605*)C))->_parent_list/*40*/)!=((void*)(NULL))) {
  747. r673collect_invariant(((T673*)((((T605*)C))->_parent_list/*40*/)),a1);
  748. }
  749. /*FI*//*IF*/if (((((T605*)C))->_invariant_assertion/*52*/)!=((void*)(NULL))) {
  750. /*[IRF3.6collect_invariant*/{T0* b1=(((T605*)C))->_invariant_assertion/*52*/;
  751. r699add_into(((T699*)b1),oBC368ci_collector);
  752. }/*]*/
  753. }
  754. /*FI*/}
  755. /*No:BASE_CLASS.set_heading_comment2*/
  756. int r605has(T605* C,T0* a1){
  757. int R=0;
  758. /*IF*/if (r237has(((T237*)((((T605*)C))->_feature_dictionary/*60*/)),X776to_key(a1))) {
  759. R=1;
  760. }
  761. else {
  762. R=r605super_has(C,a1);
  763. }
  764. /*FI*/return R;
  765. }
  766. int fBC364id_provider=0;
  767. T0*oBC364id_provider=NULL;
  768. T0* r605id_provider(void){
  769. if (fBC364id_provider==0){
  770. T0* R=NULL;
  771. fBC364id_provider=1;
  772. {T410*n=malloc(sizeof(*n));
  773. *n=M410;
  774. r410make(n);
  775. R=(T0*)n;
  776. }
  777. oBC364id_provider=R;}
  778. return oBC364id_provider;}
  779. T0* r605run_class(T605* C){
  780. T0* R=NULL;
  781. T0* _type=NULL;
  782. T0* _name=NULL;
  783. T0* _rcd=NULL;
  784. _name=(((T451*)((T451*)((((T605*)C))->_base_class_name/*24*/))))->_to_string/*0*/;
  785. /*IF*/if ((!((((T605*)C))->_is_deferred/*16*/))&&(!(/*(IRF4.7is_generic*/((((T605*)C))->_formal_generic_list/*28*/)!=(NULL)/*)*/))) {
  786. _rcd=oBC604run_class_dictionary;
  787. /*IF*/if (r250has(((T250*)_rcd),_name)) {
  788. R=r250at(((T250*)_rcd),_name);
  789. }
  790. else {
  791. {T657*n=malloc(sizeof(*n));
  792. *n=M657;
  793. /*[IRF3.3make*/((((T657*)(n)))->_base_class_name)=((((T605*)C))->_base_class_name/*24*/);
  794. /*]*/
  795. _type=(T0*)n;
  796. }
  797. R=r657run_class(((T657*)_type));
  798. }
  799. /*FI*/}
  800. else {
  801. r605error(NULL,((T0*)ms18_605));
  802. }
  803. /*FI*/return R;
  804. }
  805. /*No:BASE_CLASS.fz_09*/
  806. int r605has_redefine(T605* C,T0* a1){
  807. int R=0;
  808. /*IF*/if (((((T605*)C))->_parent_list/*40*/)!=((void*)(NULL))) {
  809. R=r673has_redefine(((T673*)((((T605*)C))->_parent_list/*40*/)),a1);
  810. }
  811. /*FI*/return R;
  812. }
  813. T0* r605look_up_for(T605* C,T0* a1,T0* a2){
  814. T0* R=NULL;
  815. int _i=0;
  816. T0* _super_fn=NULL;
  817. T0* _fnl=NULL;
  818. T0* _cst_att=NULL;
  819. T0* _fn_key=NULL;
  820. T0* _super=NULL;
  821. _fn_key=X776to_key(a2);
  822. /*IF*/if (r237has(((T237*)((((T605*)C))->_feature_dictionary/*60*/)),_fn_key)) {
  823. R=r237at(((T237*)((((T605*)C))->_feature_dictionary/*60*/)),_fn_key);
  824. _super=r605super_look_up_for(C,a1,a2);
  825. /*IF*/if ((_super)!=((void*)(NULL))) {
  826. _cst_att=_super;
  827. if(NULL!=(_cst_att))switch(((T0*)_cst_att)->id) {
  828. case 380: case 588: case 398: case 689: case 554: case 580: case 835: case 118: 
  829. break;
  830. default:
  831. _cst_att=NULL;
  832. };/*IF*/if ((_cst_att)!=((void*)(NULL))) {
  833. r683add_position(X359start_position(_super));
  834. r683add_position(X359start_position(R));
  835. /*[IRF3.6fatal_error*/{T0* b1=((T0*)ms22_605);
  836. r683fatal_error(((T683*)(oBC364eh)),b1);
  837. }/*]*/
  838. }
  839. /*FI*/_fnl=/*X359*/((T0*)(((T398*)((T398*)_super)))->_names/*8*/);
  840. _i=/*(IRF4.6count*/(((T855*)((T855*)((((T953*)((T953*)_fnl)))->_list/*0*/))))->_upper/*8*//*)*/;
  841. while (!((_i)<(1))) {
  842. _super_fn=/*(IRF4.6item*/r855item(((T855*)((((T953*)((T953*)_fnl)))->_list/*0*/)),_i)/*)*/;
  843. /*IF*/if (X776is_frozen(_super_fn)) {
  844. /*IF*/if ((X776to_key(_super_fn))==((void*)(_fn_key))) {
  845. r683add_position(X776start_position(_super_fn));
  846. r683add_position(X359start_position(R));
  847. /*[IRF3.6fatal_error*/{T0* b1=((T0*)ms23_605);
  848. r683fatal_error(((T683*)(oBC364eh)),b1);
  849. }/*]*/
  850. }
  851. /*FI*/}
  852. /*FI*/_i=(_i)-(1);
  853. }
  854. /*IF*/if (!(X359can_hide(R,_super,a1))) {
  855. r683add_position(X359start_position(_super));
  856. r683add_position(X359start_position(R));
  857. /*[IRF3.6append*/{T0* b1=((T0*)ms24_605);
  858. r7append(((T7*)(oBC683explanation)),b1);
  859. }/*]*/
  860. r683print_as_warning(((T683*)(oBC364eh)));
  861. }
  862. /*FI*//*IF*/if (X359is_deferred(_super)) {
  863. }
  864.  else if (r605has_redefine(C,a2)) {
  865. }
  866. else {
  867. r683add_position(X359start_position(R));
  868. r683add_position(X359start_position(_super));
  869. /*[IRF3.6append*/{T0* b1=((T0*)ms25_605);
  870. r7append(((T7*)(oBC683explanation)),b1);
  871. }/*]*/
  872. /*[IRF3.6append*/{T0* b1=(((T451*)((T451*)((((T605*)C))->_base_class_name/*24*/))))->_to_string/*0*/;
  873. r7append(((T7*)(oBC683explanation)),b1);
  874. }/*]*/
  875. /*[IRF3.6append*/{T0* b1=((T0*)ms26_605);
  876. r7append(((T7*)(oBC683explanation)),b1);
  877. }/*]*/
  878. r683print_as_error(((T683*)(oBC364eh)));
  879. }
  880. /*FI*/}
  881. /*FI*/}
  882. else {
  883. R=r605super_look_up_for(C,a1,a2);
  884. }
  885. /*FI*/return R;
  886. }
  887. T0* r605get_copy(T605* C){
  888. T0* R=NULL;
  889. R=r237at(((T237*)((((T605*)C))->_feature_dictionary/*60*/)),((T0*)ms64_473));
  890. return R;
  891. }
  892. T0* r605expanded_initializer(T605* C,T0* a1){
  893. T0* R=NULL;
  894. /*IF*/if (((((T605*)C))->_creation_clause_list/*44*/)!=((void*)(NULL))) {
  895. R=r378expanded_initializer(((T378*)((((T605*)C))->_creation_clause_list/*44*/)),a1);
  896. }
  897. /*FI*/return R;
  898. }
  899. void r605fatal_undefine(T605* C,T0* a1){
  900. /*[IRF3.6append*/{T0* b1=((T0*)ms34_605);
  901. r7append(((T7*)(oBC683explanation)),b1);
  902. }/*]*/
  903. /*[IRF3.6append*/{T0* b1=X776to_string(a1);
  904. r7append(((T7*)(oBC683explanation)),b1);
  905. }/*]*/
  906. /*[IRF3.6append*/{T0* b1=((T0*)ms35_605);
  907. r7append(((T7*)(oBC683explanation)),b1);
  908. }/*]*/
  909. /*[IRF3.6append*/{T0* b1=(((T451*)((T451*)((((T605*)C))->_base_class_name/*24*/))))->_to_string/*0*/;
  910. r7append(((T7*)(oBC683explanation)),b1);
  911. }/*]*/
  912. /*[IRF3.6fatal_error*/{T0* b1=((T0*)ms36_605);
  913. r683fatal_error(((T683*)(oBC364eh)),b1);
  914. }/*]*/
  915. }
  916. T0* r605super_look_up_for(T605* C,T0* a1,T0* a2){
  917. T0* R=NULL;
  918. /*IF*/if (((((T605*)C))->_parent_list/*40*/)==((void*)(NULL))) {
  919. /*IF*/if (r605is_general(C)) {
  920. R=NULL;
  921. }
  922. else {
  923. R=r605look_up_for(((T605*)(r605class_any())),a1,a2);
  924. }
  925. /*FI*/}
  926. else {
  927. R=r673look_up_for(((T673*)((((T605*)C))->_parent_list/*40*/)),a1,a2);
  928. }
  929. /*FI*/return R;
  930. }
  931. /*No:BASE_CLASS.invariant_assertion*/
  932. void r605set_invariant(T605* C,T0* a1,T0* a2,T0* a3){
  933. /*IF*/if (((a2)!=((void*)(NULL)))||((a3)!=((void*)(NULL)))) {
  934. {T699*n=malloc(sizeof(*n));
  935. *n=M699;
  936. r699make(n,a1,a2,a3);
  937. C->_invariant_assertion=(T0*)n;
  938. }
  939. }
  940. /*FI*/}
  941. /*No:BASE_CLASS.fz_dot*/
  942. /*No:BASE_CLASS.set_formal_generic_list*/
  943. T0* r605clients_for(T605* C,T0* a1){
  944. T0* R=NULL;
  945. /*IF*/if (r605proper_has(C,a1)) {
  946. R=X359clients(r237at(((T237*)((((T605*)C))->_feature_dictionary/*60*/)),X776to_key(a1)));
  947. }
  948.  else if (r605is_general(C)) {
  949. }
  950.  else if (((((T605*)C))->_parent_list/*40*/)==((void*)(NULL))) {
  951. R=r605clients_for(((T605*)(r605class_any())),a1);
  952. }
  953. else {
  954. R=r673clients_for(((T673*)((((T605*)C))->_parent_list/*40*/)),a1);
  955. }
  956. /*FI*/return R;
  957. }
  958. /*No:BASE_CLASS.is_generic*/
  959. T0*oBC605going_up_trace=NULL;
  960. /*No:BASE_CLASS.heading_comment1*/
  961. void r605set_is_deferred(T605* C){
  962. /*IF*/if ((((T605*)C))->_is_expanded/*20*/) {
  963. /*[IRF3.6error_vtec1*/{T605* C1=C;
  964. r605error((((T451*)((T451*)((((T605*)C1))->_base_class_name/*24*/))))->_start_position/*4*/,((T0*)ms33_605));
  965. }/*]*/
  966. }
  967. /*FI*/C->_is_deferred=1;
  968. }
  969. int r605proper_has(T605* C,T0* a1){
  970. int R=0;
  971. R=r237has(((T237*)((((T605*)C))->_feature_dictionary/*60*/)),X776to_key(a1));
  972. return R;
  973. }
  974. T0* r605going_up(T605* C,T0* a1,T0* a2,T0* a3){
  975. T0* R=NULL;
  976. /*IF*/if (((((T605*)C))->_parent_list/*40*/)==((void*)(NULL))) {
  977. R=r605going_up(((T605*)(r605class_any())),a1,a2,a3);
  978. }
  979. else {
  980. R=r673going_up(((T673*)((((T605*)C))->_parent_list/*40*/)),a1,a2,a3);
  981. }
  982. /*FI*/return R;
  983. }
  984. /*No:BASE_CLASS.set_obsolete_type_string*/
  985. /*No:BASE_CLASS.formal_generic_list*/
  986. void r605collect_for(T605* C,int a1,T0* a2){
  987. T0* _fn_key=NULL;
  988. _fn_key=X776to_key(a2);
  989. /*IF*/if (r237has(((T237*)((((T605*)C))->_feature_dictionary/*60*/)),_fn_key)) {
  990. X359collect_for(r237at(((T237*)((((T605*)C))->_feature_dictionary/*60*/)),_fn_key),a1);
  991. }
  992. /*FI*//*IF*/if (((((T605*)C))->_parent_list/*40*/)==((void*)(NULL))) {
  993. /*IF*/if (r605is_general(C)) {
  994. }
  995. else {
  996. r605collect_for(((T605*)(r605class_any())),a1,a2);
  997. }
  998. /*FI*/}
  999. else {
  1000. r673collect_for(((T673*)((((T605*)C))->_parent_list/*40*/)),a1,a2);
  1001. }
  1002. /*FI*/}
  1003. int r605is_a_vncg(T605* C,T0* a1,T0* a2){
  1004. int R=0;
  1005. /*IF*/if (((((T605*)C))->_parent_list/*40*/)!=((void*)(NULL))) {
  1006. R=r673is_a_vncg(((T673*)((((T605*)C))->_parent_list/*40*/)),X291run_type(a1),X291run_type(a2));
  1007. }
  1008. /*FI*/return R;
  1009. }
  1010. void r605error(T0* a1,T0* a2){
  1011. r683add_position(a1);
  1012. r683error(((T683*)(oBC364eh)),a2);
  1013. }
  1014. /*No:BASE_CLASS.fatal_error*/
  1015. int r605is_any(T605* C){
  1016. int R=0;
  1017. R=(((T0*)ms1_473))==((void*)((((T451*)((T451*)((((T605*)C))->_base_class_name/*24*/))))->_to_string/*0*/));
  1018. return R;
  1019. }
  1020. /*No:BASE_CLASS.heading_comment2*/
  1021. int r605is_general(T605* C){
  1022. int R=0;
  1023. R=(((T0*)ms14_473))==((void*)((((T451*)((T451*)((((T605*)C))->_base_class_name/*24*/))))->_to_string/*0*/));
  1024. return R;
  1025. }
  1026. /*No:BASE_CLASS.feature_dictionary*/
  1027. T0* r605new_name_of_original(T605* C,T0* a1,T0* a2){
  1028. T0* R=NULL;
  1029. /*IF*/if ((C)==((void*)(a1))) {
  1030. R=a2;
  1031. }
  1032.  else if (r605is_general(C)) {
  1033. R=a2;
  1034. }
  1035. else {
  1036. /*IF*/if (((((T605*)C))->_parent_list/*40*/)==((void*)(NULL))) {
  1037. R=r605new_name_of(((T605*)(r605class_any())),a1,a2);
  1038. }
  1039. else {
  1040. /*[IRF3.3clear*/((((T854*)(((T854*)(oBC605going_up_trace)))))->_upper)=(-(1));
  1041. /*]*/
  1042. R=r673going_up(((T673*)((((T605*)C))->_parent_list/*40*/)),oBC605going_up_trace,a1,a2);
  1043. }
  1044. /*FI*/}
  1045. /*FI*/return R;
  1046. }
  1047. T0*oBC605visited=NULL;
  1048. /*No:BASE_CLASS.base_class_name*/
  1049. /*No:BASE_CLASS.is_expanded*/
  1050. /*No:BASE_CLASS.fz_expanded*/
  1051. /*No:BASE_CLASS.creation_clause_list*/
  1052. /*No:BASE_CLASS.us_any*/
  1053. /*No:BASE_CLASS.us_general*/
  1054. void r605warning(T0* a1,T0* a2){
  1055. r683add_position(a1);
  1056. r683warning(((T683*)(oBC364eh)),a2);
  1057. }
  1058. int r958has_creation(T958* C,T0* a1){
  1059. int R=0;
  1060. R=X291has_creation((((T958*)C))->_run_type/*8*/,a1);
  1061. return R;
  1062. }
  1063. /*No:TYPE_LIKE_CURRENT.is_anchored*/
  1064. int r958is_array(T958* C){
  1065. int R=0;
  1066. R=X291is_array((((T958*)C))->_run_type/*8*/);
  1067. return R;
  1068. }
  1069. int r958is_a(T958* C,T0* a1){
  1070. int R=0;
  1071. R=X291is_a((((T958*)C))->_run_type/*8*/,a1);
  1072. return R;
  1073. }
  1074. int r958is_pointer(T958* C){
  1075. int R=0;
  1076. R=X291is_pointer((((T958*)C))->_run_type/*8*/);
  1077. return R;
  1078. }
  1079. /*No:TYPE_LIKE_CURRENT.run_type*/
  1080. int r958is_string(T958* C){
  1081. int R=0;
  1082. R=X291is_string((((T958*)C))->_run_type/*8*/);
  1083. return R;
  1084. }
  1085. /*No:TYPE_LIKE_CURRENT.is_like_feature*/
  1086. /*No:TYPE_LIKE_CURRENT.is_like_current*/
  1087. void r958make(T958* C,T0* a1,T0* a2){
  1088. C->_start_position=a1;
  1089. C->_like_what=a2;
  1090. if(NULL!=(C->_like_what))switch(((T0*)C->_like_what)->id) {
  1091. case 358: 
  1092. break;
  1093. default:
  1094. C->_like_what=NULL;
  1095. };}
  1096. /*No:TYPE_LIKE_CURRENT.us_like_current*/
  1097. /*No:TYPE_LIKE_CURRENT.start_position*/
  1098. /*No:TYPE_LIKE_CURRENT.like_what*/
  1099. int r958is_character(T958* C){
  1100. int R=0;
  1101. R=X291is_character((((T958*)C))->_run_type/*8*/);
  1102. return R;
  1103. }
  1104. T0* r958written_mark(void){
  1105. T0* R=NULL;
  1106. R=((T0*)ms145_473);
  1107. return R;
  1108. }
  1109. T0* r958to_runnable(T958* C,T0* a1){
  1110. T0* R=NULL;
  1111. /*IF*/if (((((T958*)C))->_run_type/*8*/)==((void*)(NULL))) {
  1112. C->_run_type=X291run_type(a1);
  1113. R=(T0*)C;
  1114. }
  1115. else {
  1116. {T958*n=malloc(sizeof(*n));
  1117. *n=M958;
  1118. r958make(n,(((T958*)C))->_start_position/*4*/,(((T958*)C))->_like_what/*12*/);
  1119. R=(T0*)n;
  1120. }
  1121. R=r958to_runnable(((T958*)R),a1);
  1122. }
  1123. /*FI*/return R;
  1124. }
  1125. /*No:TYPE_LIKE_CURRENT.is_run_type*/
  1126. /*No:TYPE_LIKE_CURRENT.is_formal_generic*/
  1127. T0* r958generic_list(T958* C){
  1128. T0* R=NULL;
  1129. /*IF*/if (r958is_generic(C)) {
  1130. R=X291generic_list((((T958*)C))->_run_type/*8*/);
  1131. }
  1132. else {
  1133. r958fatal_error_generic_list(C);
  1134. }
  1135. /*FI*/return R;
  1136. }
  1137. int r958is_real(T958* C){
  1138. int R=0;
  1139. R=X291is_real((((T958*)C))->_run_type/*8*/);
  1140. return R;
  1141. }
  1142. int r958is_bit(T958* C){
  1143. int R=0;
  1144. R=X291is_bit((((T958*)C))->_run_type/*8*/);
  1145. return R;
  1146. }
  1147. void r958fatal_error_generic_list(T958* C){
  1148. r683add_type((T0*)C,((T0*)ms12_291));
  1149. r683print_as_fatal_error(((T683*)(oBC364eh)));
  1150. }
  1151. /*No:TYPE_LIKE_CURRENT.pretty_print*/
  1152. T0* r958smallest_ancestor(T958* C,T0* a1){
  1153. T0* R=NULL;
  1154. R=X291smallest_ancestor((((T958*)C))->_run_type/*8*/,a1);
  1155. return R;
  1156. }
  1157. int r958is_boolean(T958* C){
  1158. int R=0;
  1159. R=X291is_boolean((((T958*)C))->_run_type/*8*/);
  1160. return R;
  1161. }
  1162. int r958is_double(T958* C){
  1163. int R=0;
  1164. R=X291is_double((((T958*)C))->_run_type/*8*/);
  1165. return R;
  1166. }
  1167. T0* r958run_class(T958* C){
  1168. T0* R=NULL;
  1169. R=r604run_class((((T958*)C))->_run_type/*8*/);
  1170. return R;
  1171. }
  1172. T0* r958run_time_mark(T958* C){
  1173. T0* R=NULL;
  1174. /*IF*/if (((((T958*)C))->_run_type/*8*/)!=((void*)(NULL))) {
  1175. R=X291run_time_mark((((T958*)C))->_run_type/*8*/);
  1176. }
  1177. /*FI*/return R;
  1178. }
  1179. int r958is_a_in(T958* C,T0* a1,T0* a2){
  1180. int R=0;
  1181. T0* _ct=NULL;
  1182. T0* _t2=NULL;
  1183. T0* _t1=NULL;
  1184. /*IF*/if ((r958written_mark())==((void*)(X291written_mark(a1)))) {
  1185. R=1;
  1186. }
  1187. else {
  1188. _ct=(((T368*)((T368*)a2)))->_current_type/*0*/;
  1189. _t1=r958to_runnable(C,_ct);
  1190. _t2=X291to_runnable(a1,_ct);
  1191. /*IF*/if ((X291run_time_mark(_t1))==((void*)(X291run_time_mark(_t2)))) {
  1192. R=1;
  1193. }
  1194. else {
  1195. R=X291is_a(_t1,_t2);
  1196. }
  1197. /*FI*/}
  1198. /*FI*/return R;
  1199. }
  1200. T0* r958look_up_for(T958* C,T0* a1,T0* a2){
  1201. T0* R=NULL;
  1202. R=r605look_up_for(((T605*)(r958base_class(C))),a1,a2);
  1203. return R;
  1204. }
  1205. T0* r958expanded_initializer(T958* C){
  1206. T0* R=NULL;
  1207. R=X291expanded_initializer((((T958*)C))->_run_type/*8*/);
  1208. return R;
  1209. }
  1210. /*No:TYPE_LIKE_CURRENT.fz_dot*/
  1211. int r958is_generic(T958* C){
  1212. int R=0;
  1213. R=X291is_generic((((T958*)C))->_run_type/*8*/);
  1214. return R;
  1215. }
  1216. /*No:TYPE_LIKE_CURRENT.used_as_reference*/
  1217. int r958is_reference(T958* C){
  1218. int R=0;
  1219. R=X291is_reference((((T958*)C))->_run_type/*8*/);
  1220. return R;
  1221. }
  1222. T0* r958base_class(T958* C){
  1223. T0* R=NULL;
  1224. T0* _bcn=NULL;
  1225. _bcn=r958base_class_name(C);
  1226. /*IF*/if ((_bcn)!=((void*)(NULL))) {
  1227. R=r451base_class(((T451*)_bcn));
  1228. }
  1229. else {
  1230. /*[IRF3.6append*/{T0* b1=((T0*)ms3_291);
  1231. r7append(((T7*)(oBC683explanation)),b1);
  1232. }/*]*/
  1233. r683add_type((T0*)C,((T0*)ms67_470));
  1234. r683print_as_fatal_error(((T683*)(oBC364eh)));
  1235. }
  1236. /*FI*/return R;
  1237. }
  1238. int r958is_any(T958* C){
  1239. int R=0;
  1240. R=X291is_any((((T958*)C))->_run_type/*8*/);
  1241. return R;
  1242. }
  1243. T0* r958base_class_name(T958* C){
  1244. T0* R=NULL;
  1245. R=X291base_class_name((((T958*)C))->_run_type/*8*/);
  1246. return R;
  1247. }
  1248. int r958is_expanded(T958* C){
  1249. int R=0;
  1250. R=X291is_expanded((((T958*)C))->_run_type/*8*/);
  1251. return R;
  1252. }
  1253. int r958is_basic_eiffel_expanded(T958* C){
  1254. int R=0;
  1255. R=X291is_basic_eiffel_expanded((((T958*)C))->_run_type/*8*/);
  1256. return R;
  1257. }
  1258. int r958is_none(T958* C){
  1259. int R=0;
  1260. R=X291is_none((((T958*)C))->_run_type/*8*/);
  1261. return R;
  1262. }
  1263. int r958is_integer(T958* C){
  1264. int R=0;
  1265. R=X291is_integer((((T958*)C))->_run_type/*8*/);
  1266. return R;
  1267. }
  1268. /*No:ECHO.make*/
  1269. /*No:ECHO.verbose*/
  1270. T0*oBC1std_error=NULL;
  1271. T0*oBC1std_output=NULL;
  1272. void r306sfr_connect(T306* C,T0* a1,T0* a2){
  1273. r306put_string(C,((T0*)ms3_306));
  1274. r306put_string(C,a2);
  1275. r306put_string(C,((T0*)ms4_306));
  1276. r675connect_to(((T675*)a1),a2);
  1277. }
  1278. void r306put_string(T306* C,T0* a1){
  1279. /*IF*/if ((((T306*)C))->_verbose/*0*/) {
  1280. r830put_string(((T830*)(oBC1std_output)),a1);
  1281. /*[IRF3.6flush*/{T830* C1=((T830*)(oBC1std_output));
  1282. fflush(stdout);
  1283. }/*]*/
  1284. }
  1285. /*FI*/}
  1286. void r306put_integer(T306* C,int a1){
  1287. /*IF*/if ((((T306*)C))->_verbose/*0*/) {
  1288. r830put_integer(((T830*)(oBC1std_output)),a1);
  1289. /*[IRF3.6flush*/{T830* C1=((T830*)(oBC1std_output));
  1290. fflush(stdout);
  1291. }/*]*/
  1292. }
  1293. /*FI*/}
  1294. void r306w_put_string(T0* a1){
  1295. r441put_string(((T441*)(oBC1std_error)),a1);
  1296. /*[IRF3.6flush*/{T441* C1=((T441*)(oBC1std_error));
  1297. fflush(stderr);
  1298. }/*]*/
  1299. }
  1300. void r306put_character(T306* C,char a1){
  1301. /*IF*/if ((((T306*)C))->_verbose/*0*/) {
  1302. /*[IRF3.6put_character*/{T830* C1=((T830*)(oBC1std_output));
  1303. char b1=a1;
  1304. putc(b1,((FILE*)(stdout)));
  1305. }/*]*/
  1306. /*[IRF3.6flush*/{T830* C1=((T830*)(oBC1std_output));
  1307. fflush(stdout);
  1308. }/*]*/
  1309. }
  1310. /*FI*/}
  1311. void r306w_put_character(char a1){
  1312. /*[IRF3.6put_character*/{T441* C1=((T441*)(oBC1std_error));
  1313. char b1=a1;
  1314. putc(b1,((FILE*)(stderr)));
  1315. }/*]*/
  1316. /*[IRF3.6flush*/{T441* C1=((T441*)(oBC1std_error));
  1317. fflush(stderr);
  1318. }/*]*/
  1319. }
  1320. void r306w_put_integer(int a1){
  1321. r441put_integer(((T441*)(oBC1std_error)),a1);
  1322. /*[IRF3.6flush*/{T441* C1=((T441*)(oBC1std_error));
  1323. fflush(stderr);
  1324. }/*]*/
  1325. }
  1326. T0* r368at(T368* C,T0* a1){
  1327. T0* R=NULL;
  1328. T0* _to_key=NULL;
  1329. _to_key=X776to_key(a1);
  1330. /*IF*/if (r199has(((T199*)((((T368*)C))->_feature_dictionary/*24*/)),_to_key)) {
  1331. R=r199at(((T199*)((((T368*)C))->_feature_dictionary/*24*/)),_to_key);
  1332. }
  1333. /*FI*/return R;
  1334. }
  1335. /*No:RUN_CLASS.id*/
  1336. T0* r368get_or_fatal_error(T368* C,T0* a1){
  1337. T0* R=NULL;
  1338. R=r368get_feature(C,a1);
  1339. /*IF*/if ((R)==((void*)(NULL))) {
  1340. r683add_position(X776start_position(a1));
  1341. /*[IRF3.6append*/{T0* b1=((T0*)ms6_368);
  1342. r7append(((T7*)(oBC683explanation)),b1);
  1343. }/*]*/
  1344. /*[IRF3.6append*/{T0* b1=X776to_string(a1);
  1345. r7append(((T7*)(oBC683explanation)),b1);
  1346. }/*]*/
  1347. /*[IRF3.6append*/{T0* b1=((T0*)ms7_368);
  1348. r7append(((T7*)(oBC683explanation)),b1);
  1349. }/*]*/
  1350. r683add_type((((T368*)C))->_current_type/*0*/,((T0*)ms67_470));
  1351. r683print_as_fatal_error(((T683*)(oBC364eh)));
  1352. }
  1353. /*FI*/return R;
  1354. }
  1355. /*No:RUN_CLASS.fz_bad_assertion*/
  1356. /*No:RUN_CLASS.running*/
  1357. T0* r368runnable(T0* a1,T0* a2,T0* a3){
  1358. T0* R=NULL;
  1359. T0* _a=NULL;
  1360. int _i=0;
  1361. /*IF*/if (!(r608empty(((T608*)a1)))) {
  1362. R=r608twin(((T608*)a1));
  1363. _i=(((T608*)((T608*)R)))->_upper/*8*/;
  1364. while (!((_i)==(0))) {
  1365. r604push(((T604*)(oBC364small_eiffel)),a3);
  1366. _a=r348to_runnable(((T348*)(r608item(((T608*)R),_i))),a2);
  1367. /*IF*/if ((_a)==((void*)(NULL))) {
  1368. r368error(r348start_position(((T348*)(r608item(((T608*)R),_i)))),((T0*)ms57_470));
  1369. }
  1370. else {
  1371. /*[IRF3.6put*/{T608* C1=((T608*)R);
  1372. T0* b1=_a;
  1373. int b2=_i;
  1374. ((((T608*)C1))->_storage/*0*/)[(b2)-((((T608*)C1))->_lower/*12*/)]=(b1);
  1375. }/*]*/
  1376. }
  1377. /*FI*/r604pop(((T604*)(oBC364small_eiffel)));
  1378. _i=(_i)-(1);
  1379. }
  1380. }
  1381. /*FI*/return R;
  1382. }
  1383. void r368set_at_run_time(T368* C){
  1384. int _i=0;
  1385. T0* _rc=NULL;
  1386. T0* _rcd=NULL;
  1387. /*IF*/if (!((((T368*)C))->_at_run_time/*8*/)) {
  1388. C->_at_run_time=1;
  1389. C->_compile_to_c_done=0;
  1390. r368add_running(C,(T0*)C);
  1391. r604incr_magic_count(((T604*)(oBC364small_eiffel)));
  1392. /*IF*/if (X291is_reference((((T368*)C))->_current_type/*0*/)) {
  1393. _rcd=oBC604run_class_dictionary;
  1394. _i=1;
  1395. while (!((_i)>((((T250*)((T250*)_rcd)))->_count/*40*/))) {
  1396. _rc=r250item(((T250*)_rcd),_i);
  1397. /*IF*/if (r368is_a(C,_rc)) {
  1398. r368add_running(((T368*)_rc),(T0*)C);
  1399. }
  1400. /*FI*/_i=(_i)+(1);
  1401. }
  1402. }
  1403. /*FI*/}
  1404. /*FI*/}
  1405. int r368is_a(T368* C,T0* a1){
  1406. int R=0;
  1407. T0* _t2=NULL;
  1408. T0* _t1=NULL;
  1409. /*IF*/if ((a1)==((void*)(C))) {
  1410. R=1;
  1411. }
  1412. else {
  1413. _t1=(((T368*)C))->_current_type/*0*/;
  1414. _t2=(((T368*)((T368*)a1)))->_current_type/*0*/;
  1415. /*IF*/if ((X291is_basic_eiffel_expanded(_t1))&&(X291is_basic_eiffel_expanded(_t2))) {
  1416. }
  1417. else {
  1418. R=X291is_a(_t1,_t2);
  1419. /*IF*/if (!(R)) {
  1420. /*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)(((T7*)(oBC683explanation)))))->_count)=(0);
  1421. /*]*/
  1422. r38clear(((T38*)(oBC683positions)));
  1423. /*]*/
  1424. }
  1425. /*FI*/}
  1426. /*FI*/}
  1427. /*FI*/return R;
  1428. }
  1429. /*No:RUN_CLASS.actuals_clients*/
  1430. /*No:RUN_CLASS.at_run_time*/
  1431. T0* r368get_rf(T368* C,T0* a1){
  1432. T0* R=NULL;
  1433. T0* _tfg=NULL;
  1434. T0* _constraint=NULL;
  1435. T0* _trt=NULL;
  1436. T0* _wbc2=NULL;
  1437. T0* _wbc=NULL;
  1438. T0* _fn2=NULL;
  1439. T0* _fn1=NULL;
  1440. int _is_current=0;
  1441. T0* _target=NULL;
  1442. _target=/*X135*/((T0*)(((T121*)((T121*)a1)))->_target/*8*/);
  1443. _trt=X662result_type(_target);
  1444. _is_current=X662is_current(_target);
  1445. _fn1=X135feature_name(a1);
  1446. _wbc=r627base_class(((T627*)(X776start_position(_fn1))));
  1447. /*IF*/if ((_is_current)||(X291is_like_current(_trt))) {
  1448. _fn2=r605new_name_of(((T605*)(X291base_class(_trt))),_wbc,_fn1);
  1449. /*IF*/if ((_fn2)!=((void*)(_fn1))) {
  1450. r683add_position(X776start_position(_fn1));
  1451. R=r368get_or_fatal_error(C,_fn2);
  1452. /*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)(((T7*)(oBC683explanation)))))->_count)=(0);
  1453. /*]*/
  1454. r38clear(((T38*)(oBC683positions)));
  1455. /*]*/
  1456. }
  1457. else {
  1458. R=r368get_or_fatal_error(C,_fn1);
  1459. }
  1460. /*FI*/}
  1461.  else if (X291is_formal_generic(_trt)) {
  1462. _tfg=_trt;
  1463. if(NULL!=(_tfg))switch(((T0*)_tfg)->id) {
  1464. case 283: 
  1465. break;
  1466. default:
  1467. _tfg=NULL;
  1468. };_constraint=r283constraint(((T283*)_tfg));
  1469. /*IF*/if ((_constraint)==((void*)(NULL))) {
  1470. R=r368get_or_fatal_error(C,_fn1);
  1471. }
  1472.  else if (!(X291is_a(_trt,_constraint))) {
  1473. r683print_as_error(((T683*)(oBC364eh)));
  1474. r683add_position(X776start_position(X135feature_name(a1)));
  1475. /*[IRF3.6append*/{T0* b1=((T0*)ms3_368);
  1476. r7append(((T7*)(oBC683explanation)),b1);
  1477. }/*]*/
  1478. r683print_as_fatal_error(((T683*)(oBC364eh)));
  1479. }
  1480. else {
  1481. _wbc2=r627base_class(((T627*)(X291start_position(_constraint))));
  1482. /*IF*/if (((_wbc2)==((void*)(_wbc)))||(r605is_subclass_of(((T605*)_wbc),_wbc2))) {
  1483. _fn2=r605new_name_of(((T605*)(X291base_class(_trt))),X291base_class(_constraint),_fn1);
  1484. R=r368get_or_fatal_error(C,_fn2);
  1485. }
  1486. else {
  1487. R=r368get_or_fatal_error(C,_fn1);
  1488. }
  1489. /*FI*/}
  1490. /*FI*/}
  1491. else {
  1492. R=r368get_or_fatal_error(C,_fn1);
  1493. }
  1494. /*FI*/X496add_client(R,(T0*)C);
  1495. /*IF*/if ((((/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0))&&(!(_is_current)))&&(!(X496is_exported_in(R,(((T605*)((T605*)_wbc)))->_base_class_name/*24*/)))) {
  1496. r683add_position(X496start_position(R));
  1497. /*[IRF3.6append*/{T0* b1=((T0*)ms4_368);
  1498. r7append(((T7*)(oBC683explanation)),b1);
  1499. }/*]*/
  1500. /*[IRF3.6append*/{T0* b1=X776to_string(_fn1);
  1501. r7append(((T7*)(oBC683explanation)),b1);
  1502. }/*]*/
  1503. r368error(X776start_position(X135feature_name(a1)),((T0*)ms5_368));
  1504. }
  1505. /*FI*/return R;
  1506. }
  1507. T0* r368get_feature(T368* C,T0* a1){
  1508. T0* R=NULL;
  1509. T0* _bc=NULL;
  1510. T0* _fn_key=NULL;
  1511. T0* _f=NULL;
  1512. _fn_key=X776to_key(a1);
  1513. /*IF*/if (r199has(((T199*)((((T368*)C))->_feature_dictionary/*24*/)),_fn_key)) {
  1514. R=r199at(((T199*)((((T368*)C))->_feature_dictionary/*24*/)),_fn_key);
  1515. }
  1516. else {
  1517. _bc=r368base_class(C);
  1518. _f=r605look_up_for(((T605*)_bc),(T0*)C,a1);
  1519. /*IF*/if ((_f)==((void*)(NULL))) {
  1520. r368efnf(C,_bc,a1);
  1521. }
  1522. else {
  1523. R=X359to_run_feature(_f,(((T368*)C))->_current_type/*0*/,a1);
  1524. /*IF*/if ((R)!=((void*)(NULL))) {
  1525. r368store_feature(C,R);
  1526. }
  1527. else {
  1528. r368efnf(C,_bc,a1);
  1529. }
  1530. /*FI*/}
  1531. /*FI*/}
  1532. /*FI*/return R;
  1533. }
  1534. T0* r368class_with(T0* a1){
  1535. T0* R=NULL;
  1536. R=r604get_class(a1);
  1537. return R;
  1538. }
  1539. void r368efnf(T368* C,T0* a1,T0* a2){
  1540. /*[IRF3.6append*/{T0* b1=((T0*)ms9_368);
  1541. r7append(((T7*)(oBC683explanation)),b1);
  1542. }/*]*/
  1543. /*[IRF3.6append*/{T0* b1=X291run_time_mark((((T368*)C))->_current_type/*0*/);
  1544. r7append(((T7*)(oBC683explanation)),b1);
  1545. }/*]*/
  1546. /*[IRF3.6append*/{T0* b1=((T0*)ms10_368);
  1547. r7append(((T7*)(oBC683explanation)),b1);
  1548. }/*]*/
  1549. /*[IRF3.6append*/{T0* b1=X776to_string(a2);
  1550. r7append(((T7*)(oBC683explanation)),b1);
  1551. }/*]*/
  1552. /*[IRF3.6append*/{T0* b1=((T0*)ms11_368);
  1553. r7append(((T7*)(oBC683explanation)),b1);
  1554. }/*]*/
  1555. /*[IRF3.6append*/{T0* b1=(((T451*)((T451*)((((T605*)((T605*)a1)))->_base_class_name/*24*/))))->_to_string/*0*/;
  1556. r7append(((T7*)(oBC683explanation)),b1);
  1557. }/*]*/
  1558. r368error(X776start_position(a2),((T0*)ms67_470));
  1559. }
  1560. void r368make(T368* C,T0* a1){
  1561. int _i=0;
  1562. T0* _r=NULL;
  1563. T0* _rc=NULL;
  1564. T0* _rcd=NULL;
  1565. T0* _run_string=NULL;
  1566. C->_compile_to_c_done=1;
  1567. C->_current_type=a1;
  1568. {T187*n=malloc(sizeof(*n));
  1569. *n=M187;
  1570. r187with_capacity(n,16);
  1571. C->_actuals_clients=(T0*)n;
  1572. }
  1573. _run_string=X291run_time_mark(a1);
  1574. C->_id=r410item(((T410*)(r368id_provider())),_run_string);
  1575. /*IF*/if ((((T604*)((T604*)(oBC364small_eiffel))))->_is_ready/*0*/) {
  1576. r368warning(NULL,((T0*)ms1_368));
  1577. }
  1578. /*FI*//*IF*/if (r250has(((T250*)(oBC604run_class_dictionary)),_run_string)) {
  1579. r368warning(NULL,((T0*)ms2_368));
  1580. }
  1581. /*FI*/r250put(((T250*)(oBC604run_class_dictionary)),(T0*)C,_run_string);
  1582. {T199*n=malloc(sizeof(*n));
  1583. *n=M199;
  1584. r199with_capacity(n,64);
  1585. C->_feature_dictionary=(T0*)n;
  1586. }
  1587. r604incr_magic_count(((T604*)(oBC364small_eiffel)));
  1588. /*IF*/if (X291is_expanded(a1)) {
  1589. r368set_at_run_time(C);
  1590. r605check_expanded_with(((T605*)(X291base_class(a1))),a1);
  1591. }
  1592. else {
  1593. _rcd=oBC604run_class_dictionary;
  1594. _i=1;
  1595. while (!((_i)>((((T250*)((T250*)_rcd)))->_count/*40*/))) {
  1596. _rc=r250item(((T250*)_rcd),_i);
  1597. /*IF*/if ((((((T368*)((T368*)_rc)))->_at_run_time/*8*/)&&(X291is_reference((((T368*)((T368*)_rc)))->_current_type/*0*/)))&&(r368is_a(((T368*)_rc),(T0*)C))) {
  1598. r368add_running(C,_rc);
  1599. }
  1600. /*FI*/_i=(_i)+(1);
  1601. }
  1602. }
  1603. /*FI*//*IF*/if (r590invariant_check(((T590*)(oBC364run_control)))) {
  1604. r608clear(((T608*)(oBC368ci_collector)));
  1605. r605collect_invariant(((T605*)(r368base_class(C))),(T0*)C);
  1606. _r=r368runnable(oBC368ci_collector,(((T368*)C))->_current_type/*0*/,NULL);
  1607. /*IF*/if ((_r)!=((void*)(NULL))) {
  1608. {T699*n=malloc(sizeof(*n));
  1609. *n=M699;
  1610. r699from_runnable(n,_r);
  1611. C->_invariant_assertion=(T0*)n;
  1612. }
  1613. }
  1614. /*FI*/}
  1615. /*FI*/}
  1616. /*No:RUN_CLASS.nb_errors*/
  1617. void r368store_feature(T368* C,T0* a1){
  1618. T0* _rf_key=NULL;
  1619. _rf_key=X776to_key(/*X496*/((T0*)(((T808*)((T808*)a1)))->_name/*16*/));
  1620. /*IF*/if (r199has(((T199*)((((T368*)C))->_feature_dictionary/*24*/)),_rf_key)) {
  1621. }
  1622. else {
  1623. r199put(((T199*)((((T368*)C))->_feature_dictionary/*24*/)),a1,_rf_key);
  1624. r604incr_magic_count(((T604*)(oBC364small_eiffel)));
  1625. }
  1626. /*FI*/}
  1627. /*No:RUN_CLASS.compile_to_c_done*/
  1628. T0*oBC368ci_collector=NULL;
  1629. void r368add_running(T368* C,T0* a1){
  1630. /*IF*/if (((((T368*)C))->_running/*12*/)==((void*)(NULL))) {
  1631. C->_running=se_ma396(1,a1);
  1632. }
  1633. else {
  1634. /*IF*/if (!(r396fast_has(((T396*)((((T368*)C))->_running/*12*/)),a1))) {
  1635. r396add_last(((T396*)((((T368*)C))->_running/*12*/)),a1);
  1636. }
  1637. /*FI*/}
  1638. /*FI*/}
  1639. void r368add_client(T368* C,T0* a1){
  1640. int _i=0;
  1641. _i=r187fast_index_of(((T187*)((((T368*)C))->_actuals_clients/*28*/)),a1);
  1642. /*IF*/if ((_i)>((((T187*)((T187*)((((T368*)C))->_actuals_clients/*28*/))))->_upper/*8*/)) {
  1643. r187add_last(((T187*)((((T368*)C))->_actuals_clients/*28*/)),a1);
  1644. }
  1645. /*FI*/}
  1646. /*No:RUN_CLASS.collect_invariant*/
  1647. T0* r368get_feature_with(T368* C,T0* a1){
  1648. T0* R=NULL;
  1649. T0* _sfn=NULL;
  1650. /*IF*/if (r199has(((T199*)((((T368*)C))->_feature_dictionary/*24*/)),a1)) {
  1651. R=r199at(((T199*)((((T368*)C))->_feature_dictionary/*24*/)),a1);
  1652. }
  1653. else {
  1654. {T446*n=malloc(sizeof(*n));
  1655. *n=M446;
  1656. r446make(n,a1,NULL);
  1657. _sfn=(T0*)n;
  1658. }
  1659. R=r368get_feature(C,_sfn);
  1660. }
  1661. /*FI*/return R;
  1662. }
  1663. T0* r368id_provider(void){
  1664. if (fBC364id_provider==0){
  1665. T0* R=NULL;
  1666. fBC364id_provider=1;
  1667. {T410*n=malloc(sizeof(*n));
  1668. *n=M410;
  1669. r410make(n);
  1670. R=(T0*)n;
  1671. }
  1672. oBC364id_provider=R;}
  1673. return oBC364id_provider;}
  1674. /*No:RUN_CLASS.current_type*/
  1675. T0* r368get_copy(T368* C){
  1676. T0* R=NULL;
  1677. R=r368get_rf_with(C,/*X359*/((T0*)/*(IRF4.6first_name*//*(IRF4.6item*/r855item(((T855*)((((T953*)((T953*)((((T398*)((T398*)(r605get_copy(((T605*)(r368class_general())))))))->_names/*8*/))))->_list/*0*/)),1)/*)*//*)*/));
  1678. return R;
  1679. }
  1680. /*No:RUN_CLASS.invariant_assertion*/
  1681. /*No:RUN_CLASS.fz_dot*/
  1682. int fBC364class_general=0;
  1683. T0*oBC364class_general=NULL;
  1684. T0* r368class_general(void){
  1685. if (fBC364class_general==0){
  1686. T0* R=NULL;
  1687. fBC364class_general=1;
  1688. R=r368class_with(((T0*)ms14_473));
  1689. oBC364class_general=R;}
  1690. return oBC364class_general;}
  1691. void r368error(T0* a1,T0* a2){
  1692. r683add_position(a1);
  1693. r683error(((T683*)(oBC364eh)),a2);
  1694. }
  1695. T0* r368base_class(T368* C){
  1696. T0* R=NULL;
  1697. R=X291base_class((((T368*)C))->_current_type/*0*/);
  1698. return R;
  1699. }
  1700. /*No:RUN_CLASS.feature_dictionary*/
  1701. T0* r368get_rf_with(T368* C,T0* a1){
  1702. T0* R=NULL;
  1703. T0* _wbc=NULL;
  1704. T0* _fn2=NULL;
  1705. _wbc=r627base_class(((T627*)(X776start_position(a1))));
  1706. _fn2=r605new_name_of(((T605*)(r368base_class(C))),_wbc,a1);
  1707. /*IF*/if ((_fn2)!=((void*)(a1))) {
  1708. r683add_position(X776start_position(a1));
  1709. R=r368get_or_fatal_error(C,_fn2);
  1710. /*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)(((T7*)(oBC683explanation)))))->_count)=(0);
  1711. /*]*/
  1712. r38clear(((T38*)(oBC683positions)));
  1713. /*]*/
  1714. }
  1715. else {
  1716. R=r368get_or_fatal_error(C,_fn2);
  1717. }
  1718. /*FI*/return R;
  1719. }
  1720. /*No:RUN_CLASS.us_general*/
  1721. void r368warning(T0* a1,T0* a2){
  1722. r683add_position(a1);
  1723. r683warning(((T683*)(oBC364eh)),a2);
  1724. }
  1725. int r636gives_permission_to_any(T636* C){
  1726. int R=0;
  1727. /*IF*/if (/*(IRF4.7is_omitted*/((((T636*)C))->_start_position/*0*/)==(NULL)/*)*/) {
  1728. R=1;
  1729. }
  1730.  else if (((((T636*)C))->_list/*4*/)==((void*)(NULL))) {
  1731. }
  1732. else {
  1733. R=r33gives_permission_to_any(((T33*)((((T636*)C))->_list/*4*/)));
  1734. }
  1735. /*FI*/return R;
  1736. }
  1737. void r636merge(T636* C,T0* a1,T0* a2,T0* a3){
  1738. C->_start_position=a1;
  1739. {T33*n=malloc(sizeof(*n));
  1740. *n=M33;
  1741. r33merge(n,a2,a3);
  1742. C->_list=(T0*)n;
  1743. }
  1744. }
  1745. void r636make(T636* C,T0* a1,T0* a2){
  1746. C->_start_position=a1;
  1747. /*IF*/if ((a2)!=((void*)(NULL))) {
  1748. {T33*n=malloc(sizeof(*n));
  1749. *n=M33;
  1750. r33make(n,a2);
  1751. C->_list=(T0*)n;
  1752. }
  1753. }
  1754. /*FI*/}
  1755. /*No:CLIENT_LIST.start_position*/
  1756. /*No:CLIENT_LIST.is_omitted*/
  1757. int r636gives_permission_to(T636* C,T0* a1){
  1758. int R=0;
  1759. /*IF*/if (/*(IRF4.7is_omitted*/((((T636*)C))->_start_position/*0*/)==(NULL)/*)*/) {
  1760. R=1;
  1761. }
  1762.  else if (((((T636*)C))->_list/*4*/)==((void*)(NULL))) {
  1763. }
  1764. else {
  1765. R=r33gives_permission_to(((T33*)((((T636*)C))->_list/*4*/)),a1);
  1766. }
  1767. /*FI*//*IF*/if (!(R)) {
  1768. r683add_position((((T636*)C))->_start_position/*0*/);
  1769. /*[IRF3.6append*/{T0* b1=(((T451*)((T451*)a1)))->_to_string/*0*/;
  1770. r7append(((T7*)(oBC683explanation)),b1);
  1771. }/*]*/
  1772. /*[IRF3.6append*/{T0* b1=((T0*)ms4_636);
  1773. r7append(((T7*)(oBC683explanation)),b1);
  1774. }/*]*/
  1775. }
  1776. /*FI*/return R;
  1777. }
  1778. void r636pretty_print(T636* C){
  1779. /*IF*/if (/*(IRF4.7is_omitted*/((((T636*)C))->_start_position/*0*/)==(NULL)/*)*/) {
  1780. /*IF*/if (r238zen_mode(((T238*)(oBC364fmt)))) {
  1781. }
  1782. else {
  1783. r238put_string(((T238*)(oBC364fmt)),((T0*)ms1_636));
  1784. }
  1785. /*FI*/}
  1786. else {
  1787. /*IF*/if (((((T636*)C))->_list/*4*/)==((void*)(NULL))) {
  1788. /*IF*/if (r238zen_mode(((T238*)(oBC364fmt)))) {
  1789. r238put_string(((T238*)(oBC364fmt)),((T0*)ms2_636));
  1790. }
  1791. else {
  1792. r238put_string(((T238*)(oBC364fmt)),((T0*)ms3_636));
  1793. }
  1794. /*FI*/}
  1795. else {
  1796. r238put_character(((T238*)(oBC364fmt)),'\173');
  1797. /*[IRF3.3set_indent_level*/((((T238*)(((T238*)(oBC364fmt)))))->_indent_level)=(2);
  1798. /*]*/
  1799. r33pretty_print(((T33*)((((T636*)C))->_list/*4*/)));
  1800. r238put_character(((T238*)(oBC364fmt)),'\175');
  1801. }
  1802. /*FI*/}
  1803. /*FI*/}
  1804. /*No:CLIENT_LIST.list*/
  1805. /*No:CLIENT_LIST.omitted*/
  1806.  
  1807.