OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
analyse.c
Go to the documentation of this file.
1//Copyright> OpenRadioss
2//Copyright> Copyright (C) 1986-2025 Altair Engineering Inc.
3//Copyright>
4//Copyright> This program is free software: you can redistribute it and/or modify
5//Copyright> it under the terms of the GNU Affero General Public License as published by
6//Copyright> the Free Software Foundation, either version 3 of the License, or
7//Copyright> (at your option) any later version.
8//Copyright>
9//Copyright> This program is distributed in the hope that it will be useful,
10//Copyright> but WITHOUT ANY WARRANTY; without even the implied warranty of
11//Copyright> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12//Copyright> GNU Affero General Public License for more details.
13//Copyright>
14//Copyright> You should have received a copy of the GNU Affero General Public License
15//Copyright> along with this program. If not, see <https://www.gnu.org/licenses/>.
16//Copyright>
17//Copyright>
18//Copyright> Commercial Alternative: Altair Radioss Software
19//Copyright>
20//Copyright> As an alternative to this open-source version, Altair also offers Altair Radioss
21//Copyright> software under a commercial license. Contact Altair to discuss further if the
22//Copyright> commercial version may interest you: https://www.altair.com/radioss/.
23/*********************************************************************
24 * INCLUDES
25 *********************************************************************/
26#include <stdio.h>
27#include <string.h>
28#include <stdlib.h>
29
30#include <signal.h>
31
32
33/*********************************************************************
34 * PORTAGE
35 *********************************************************************/
36#include "analyse_portage.h"
37
38/********************************************************************/
39#include "analyse_name.inc"
40#include "analyse_define.h"
41
42#include "analyse_print.h"
43#include "analyse_memory.h"
44#include "analyse_getall.h"
45#include "analyse_string.h"
46#include "analyse_fill_info.h"
47#include "analyse_error.h"
48#include "analyse_check.h" /* analyse_check_file_read */
49#include "analyse_GUI.h"
50
51#include "analyse_structure.h"
52
53#include "analyse.h"
54
55#define SIZE_STEP 1000
56
57static int LANGUAGE;
58
59static int *int_stack=NULL;
60static int int_stack_size=0;
61static int int_stack_current=0;
62static int int_stack_scan=0;
63
64static float *float_stack=NULL;
65static int float_stack_size=0;
67static int float_stack_scan=0;
68
70
74
76
79
80
83
84/*********************************************************************
85 *
86 * LOCAL PROTOTYPING
87 *
88 ********************************************************************/
89static analyse_node_t *search_for_node_with_id(int name_id);
90static void store_info_in_node_list(analyse_info_t *analyse_info);
91
92static void remove_node_data(analyse_node_t *node_scan);
93static void remove_node_structure(analyse_node_t *node_scan);
94
95static void remove_all_in_node_recursiv(analyse_node_t *node_scan);
96static void remove_data_in_node_recursiv(analyse_node_t *node_scan);
97
98static void manage_Core (int s);
99
100static void analyse_tree_enter(int name_id);
101static void analyse_tree_close(int name_id);
102static void analyse_tree_exit(int name_id);
103static void analyse_init(int prgrm, int GUI_mode, int prgrm_language);
104
105
106
107/*********************************************************************
108 *********************************************************************
109 *
110 * LOCAL FUNCTIONS
111 *
112 *********************************************************************
113 *********************************************************************/
115{
116 analyse_node_t *node_scan;
117
118 node_scan = current_node;
119
120 while ( node_scan->info.calling_id != name_id)
121 {
122 if (node_scan->parent == NULL)
123 return NULL;
124
125 node_scan = node_scan->parent;
126 }
127
128 return node_scan;
129}
130
131static void store_info_in_node_list(analyse_info_t *analyse_info)
132{
133 if ( first_free_in_list != NULL)
134 {
135 first_free_in_list->info = *analyse_info;
136
137 first_free_in_list->parent = NULL;
138 first_free_in_list->child = NULL;
139 first_free_in_list->next = NULL;
140 first_free_in_list->prev = NULL;
141
144 }
145 else
146 {
148
150
151 last_node_in_list->list_next->list_prev = last_node_in_list;
152 last_node_in_list->list_next->info = *analyse_info;
153
155 }
156}
157
158
159static void remove_node_data(analyse_node_t *node_scan)
160{
161 int nb_to_move, i;
162
163 /* Free float datas */
164 if (node_scan->info.nb_float_data != 0)
165 {
166 nb_to_move = float_stack_scan - (node_scan->info.float_data_offset_start + node_scan->info.nb_float_data);
167
168 for(i=0; i <nb_to_move; i++)
169 {
171 }
172
175
176 node_scan->info.nb_float_data=0;
177 }
178
179 /* Free int datas */
180 if (node_scan->info.nb_int_data != 0)
181 {
182 nb_to_move = int_stack_scan - (node_scan->info.int_data_offset_start + node_scan->info.nb_int_data);
183
184 for(i=0; i <nb_to_move; i++)
185 {
186 int_stack[node_scan->info.int_data_offset_start+i] = int_stack[node_scan->info.int_data_offset_start + node_scan->info.nb_int_data+i];
187 }
188
191
192 node_scan->info.nb_int_data=0;
193 }
194
195}
196
197
199{
200 /* Free structure in list */
201 if (node_scan == last_node_in_list)
202 {
204 }
205 else
206 {
207 if (node_scan->list_prev != NULL)
208 node_scan->list_prev->list_next = node_scan->list_next;
209
210 if (node_scan->list_next != NULL)
211 node_scan->list_next->list_prev = node_scan->list_prev;
212
213 node_scan->list_prev = last_node_in_list;
214 node_scan->list_next = last_node_in_list->list_next;
215
216 last_node_in_list->list_next = node_scan;
217 }
218
219 first_free_in_list = node_scan;
220
221}
222
223
225{
226 if (node_scan == NULL)
227 return;
228
230 node_scan->next=NULL;
231
233 node_scan->child = NULL;
234
235 remove_node_data(node_scan);
236 remove_node_structure(node_scan);
237
238 if (node_scan->prev != NULL)
239 node_scan->prev->next=NULL;
240}
241
243{
244 if (node_scan == NULL)
245 return;
246
249
250 remove_node_data(node_scan);
251}
252
253
254/************************/
255static void manage_Core (int s)
256{
257 int nb_int;
258 int *tab_int=NULL;
259
260 char stop_message[]="\n\n %s STOPPED due to CORE DUMPED";
261 char *message;
262
263/* setIgnoreCore (0); */
264
265 /* Create Message */
266 message = (char *)analyse_malloc((strlen(analyse_tree->info.calling_name)+strlen(stop_message)+1)*sizeof(char));
267 sprintf(message,stop_message,analyse_tree->info.calling_name);
268
269
270 /* Print Message On SCREEN and IN L00 FILE */
271 analyse_convert_string_to_int(message, &nb_int, &tab_int);
272
273 wistdo(&nb_int, tab_int);
274 wiout(&nb_int, tab_int);
275
276 analyse_free(tab_int);
277
278 /* start GUI */
280 analyse_free(message);
281
283
284 /* quit Program */
285 analyse_quit();
286
287}
288
289
290
291/*
292 analyse_stack_float
293*/
295{
297 {
298 float_stack = (float *)analyse_realloc( (void *)float_stack, (float_stack_size + SIZE_STEP)*sizeof(float));
299
301 }
302
305
306
307}
308
309void anstckf(float *r)
310{
312}
313
314void anstckf_(float *r)
315{
317}
318
319void anstckf__(float *r)
320{
322}
323
324void _FCALL ANSTCKF(float *r)
325{
327}
328
329
330
331/*
332 analyse_stack_int
333*/
335{
337 {
338 int_stack = (int *)analyse_realloc( (void *)int_stack, (int_stack_size + SIZE_STEP)*sizeof(int));
339
341 }
342
345
346}
347
348void anstcki(int *i)
349{
351}
352
353void anstcki_(int *i)
354{
356}
357
358void _FCALL ANSTCKI(int *i)
359{
361}
362
363
364int analyse_get_datas(int name_id, int *nb_int, int **tab_int, int *nb_float, float **tab_float)
365{
366
367 analyse_node_t *node_scan;
368
369 node_scan=search_for_node_with_id(name_id);
370
371 if (node_scan == NULL)
372 {
373 if (nb_int!= NULL) *nb_int=0;
374 if (tab_int !=NULL) *tab_int=NULL;
375
376 if (nb_float != NULL) *nb_float=0;
377 if (tab_float != NULL) *tab_float=NULL;
378
379 return -1;
380 }
381
382 if (nb_int != NULL) *nb_int=node_scan->info.nb_int_data;
383 if (tab_int != NULL) *tab_int = int_stack + node_scan->info.int_data_offset_start;
384
385 if (nb_float != NULL) *nb_float=node_scan->info.nb_float_data;
386 if (tab_float != NULL) *tab_float = float_stack + node_scan->info.float_data_offset_start;
387
388 return 0;
389}
390
391
392/*
393 analyse_tree_enter
394*/
395static void analyse_tree_enter(int name_id)
396{
397 analyse_node_t *node_scan;
398 analyse_info_t analyse_info;
399
400
401 analyse_info_init(&analyse_info);
402 analyse_info.calling_id = name_id;
403 analyse_fill_info(&analyse_info);
404
405#ifdef ANALYSE_DEBUG
406 printf(" Enter analyse_tree_enter with %s\n", analyse_info.calling_name);
407#endif
408
411
413
416
418
419 /* transfer info to a node which is necessary last_node_in_list */
420 store_info_in_node_list(&analyse_info);
421
423
424 if (current_node->child == NULL)
425 {
427 }
428 else
429 {
430
431 if (current_node->child == current_node_child_sav) {
432 node_scan = node_scan_sav;
433 } else {
435 node_scan = current_node->child;
436 }
437 while (node_scan->next != NULL) node_scan = node_scan->next;
438 node_scan_sav = node_scan;
439
440 node_scan->next = last_node_in_list;
441 last_node_in_list->prev = node_scan;
442 }
443
445
447
448}
449
450void anenter(int *name_id)
451{
452 analyse_tree_enter(*name_id);
453}
454
455void anenter_(int *name_id)
456{
457 analyse_tree_enter(*name_id);
458}
459
460void _FCALL ANENTER(int *name_id)
461{
462 analyse_tree_enter(*name_id);
463}
464
465
466
467
468
469/*
470 analyse_tree_close
471*/
472static void analyse_tree_close(int name_id)
473{
474 analyse_node_t *node_scan;
475 char tline[180];
476
477 node_scan=search_for_node_with_id(name_id);
478
479 if (node_scan == NULL)
480 {
481 sprintf(tline, "Unable to close Function id %d", name_id);
483 return;
484 }
485
487
488 remove_node_data(node_scan);
489
490 current_node = node_scan->parent;
491
493}
494
495void anclose(int *name_id)
496{
497 analyse_tree_close(*name_id);
498}
499
500void anclose_(int *name_id)
501{
502 analyse_tree_close(*name_id);
503}
504
505void anclose__(int *name_id)
506{
507 analyse_tree_close(*name_id);
508}
509void _FCALL ANCLOSE(int *name_id)
510{
511 analyse_tree_close(*name_id);
512}
513
514
515
516
517/*
518 analyse_tree_exit
519*/
520static void analyse_tree_exit(int name_id)
521{
522 analyse_node_t *node_scan;
523 char tline[180];
524
525 node_scan=search_for_node_with_id(name_id);
526
527 if (node_scan == NULL)
528 {
529 sprintf(tline, "Unable to close Function id %i", name_id);
531 return;
532 }
533
535
536 remove_node_data(node_scan);
537 remove_node_structure(node_scan);
538
539
540 if (node_scan->prev != NULL)
541 node_scan->prev->next = node_scan->next;
542
543 if (node_scan->next != NULL)
544 node_scan->next->prev = node_scan->prev;
545
546 /* if first node, then transfer childness to next one, even if null */
547 if (node_scan->prev == NULL)
548 node_scan->parent->child = node_scan->next;
549
550 current_node = node_scan->parent;
551
553
554}
555
556void anexit(int *name_id)
557{
558 analyse_tree_exit(*name_id);
559}
560
561void anexit_(int *name_id)
562{
563 analyse_tree_exit(*name_id);
564}
565
566void anexit__(int *name_id)
567{
568 analyse_tree_exit(*name_id);
569}
570void _FCALL ANEXIT(int *name_id)
571{
572 analyse_tree_exit(*name_id);
573}
574
575
576
577/*
578 analyse_call_error
579*/
580void analyse_call_error(int type, int id, int mode)
581{
582 int nb_int;
583 int *tab_int=NULL;
584
585 int nb_int_line;
586 int *tab_int_line=NULL;
587
588 char *title;
589 char *description;
590
591 int nb_err, nb_warn;
592
593 char stop_message[]="\n\n %s STOPPED due to INPUT ERROR";
594 char gene_message[]="\n******************************\n%s stopped with :\n %d Error(s)\n %d Warning(s)\n******************************\n";
595
596 char error_id_message[]="ERROR id : %d";
597 char warning_id_message[]="WARNING id : %d";
598 char info_id_message[]="INFO id : %d";
599 char unknown_id_message[]="??? id : %d";
600
601 char id_message_real[20];
602 char *message;
603
604 /* Get tab for a new line */
605 analyse_convert_string_to_int("\n", &nb_int_line, &tab_int_line);
606
607
608 /* ADD ERROR in IERR */
609 if (type == AN_ERROR)
610 {
611 anaderr();
612 analyse_tree_enter(AN_ERROR);
613 analyse_error_return_message(analyse_error_list, AN_ERROR, LANGUAGE, id, &title, &description, NULL);
614 }
615 else if (type == AN_WARNING)
616 {
617 anadwar();
618 analyse_tree_enter(AN_WARNING);
619 analyse_error_return_message(analyse_error_list, AN_WARNING, LANGUAGE, id, &title, &description, NULL);
620 }
621 else
622 {
623 analyse_tree_enter(AN_INFO);
624 analyse_error_return_message(analyse_error_list, AN_INFO, LANGUAGE, id, &title, &description, NULL);
625 }
626
627 /* Count Error */
629
630 /* Print Error Id + Title */
631 if (type == AN_ERROR)
632 sprintf(id_message_real, error_id_message, id);
633 else if (type == AN_WARNING)
634 sprintf(id_message_real, warning_id_message, id);
635 else if (type == AN_INFO)
636 sprintf(id_message_real, info_id_message, id);
637 else
638 sprintf(id_message_real, unknown_id_message, id);
639
640 analyse_GUI_add_error_message(id_message_real);
642
643 switch(mode)
644 {
645 case ANSTOP:
646 case ANINFO: /* title+description on screen, title+description in file */
647 case ANINFO_BLIND_1: /* only title on screen, title + description in file */
648 /* Id */
649 analyse_convert_string_to_int(id_message_real, &nb_int, &tab_int);
650
651 wiout(&nb_int_line, tab_int_line);
652 /* wistdo(&nb_int_line, tab_int_line); */
653
654 wiout(&nb_int, tab_int);
655 if (mode == ANINFO )
656 wistdo(&nb_int, tab_int);
657
658 analyse_free(tab_int);
659
660 /* Title */
661 analyse_convert_string_to_int(title, &nb_int, &tab_int);
662 wistdo(&nb_int, tab_int);
663 wiout(&nb_int, tab_int);
664
665 analyse_free(tab_int);
666 break;
667
668 case ANINFO_BLIND_2: /* nothing on screen, title + description in file */
669 case ANINFO_BLIND_3: /* nothing on screen, title in file */
670
671 /* Id */
672 analyse_convert_string_to_int(id_message_real, &nb_int, &tab_int);
673
674 wiout(&nb_int_line, tab_int_line);
675 wiout(&nb_int, tab_int);
676
677 analyse_free(tab_int);
678
679 /* Title */
680 analyse_convert_string_to_int(title, &nb_int, &tab_int);
681 wiout(&nb_int, tab_int);
682
683 analyse_free(tab_int);
684 break;
685
686
687 case ANINFO_BLIND_4: /* nothing on screen, nothing in file */
688 default :
689 break;
690 }
691 analyse_free(title);
692
693
694 /* Print Error Description */
695 analyse_GUI_add_error_message(description);
696
697 switch(mode)
698 {
699 case ANSTOP:
700 case ANINFO: /* title+description on screen, title+description in file */
701 analyse_convert_string_to_int(description, &nb_int, &tab_int);
702
703 wiout(&nb_int, tab_int);
704 wistdo(&nb_int, tab_int);
705
706 wiout(&nb_int_line, tab_int_line);
707 /* wistdo(&nb_int_line, tab_int_line); */
708
709 analyse_free(tab_int);
710 break;
711
712 case ANINFO_BLIND_1: /* only title on screen, title + description in file */
713 analyse_convert_string_to_int(description, &nb_int, &tab_int);
714
715 wiout(&nb_int, tab_int);
716
717 wiout(&nb_int_line, tab_int_line);
718 /* wistdo(&nb_int_line, tab_int_line); */
719
720 analyse_free(tab_int);
721 break;
722
723 case ANINFO_BLIND_2: /* nothing on screen, title + description in file */
724 analyse_convert_string_to_int(description, &nb_int, &tab_int);
725
726 wiout(&nb_int, tab_int);
727
728 wiout(&nb_int_line, tab_int_line);
729
730 analyse_free(tab_int);
731 break;
732
733 case ANINFO_BLIND_3: /* nothing on screen, title in file */
734 wiout(&nb_int_line, tab_int_line);
735 break;
736
737 case ANINFO_BLIND_4: /* nothing on screen, nothing in file */
738 default :
739 break;
740 }
741 analyse_free(description);
742
743
744 /* Error Management */
745 switch(mode)
746 {
747 case ANSTOP:
748 /* Stopped due to Input Errors */
749 message = (char *)analyse_malloc((strlen(analyse_tree->info.calling_name)+strlen(stop_message)+1)*sizeof(char));
750 sprintf(message,stop_message,analyse_tree->info.calling_name);
751
752 /* Print Stop Message On SCREEN, IN L00 FILE and in GUI*/
753 analyse_convert_string_to_int(message, &nb_int, &tab_int);
754
755 wistdo(&nb_int, tab_int);
756 wiout(&nb_int, tab_int);
757
758 analyse_free(tab_int);
759
761 analyse_free(message);
762
763 /* Prepare GUI Message and start GUI*/
764 angetnb(&nb_err, &nb_warn);
765 message = (char *)analyse_malloc((strlen(analyse_tree->info.calling_name)+strlen(gene_message)+ 10+10+1)*sizeof(char));
766 sprintf(message,gene_message,analyse_tree->info.calling_name, nb_err, nb_warn);
767
769 analyse_free(message);
770
772
773 /* quit Program */
774 analyse_quit();
775 break;
776
777 case ANINFO:
778 case ANINFO_BLIND_1:
779 case ANINFO_BLIND_2:
780 case ANINFO_BLIND_3:
781 case ANINFO_BLIND_4:
782 if (type == AN_ERROR)
783 analyse_tree_close(AN_ERROR);
784 else if (type == AN_WARNING)
785 analyse_tree_close(AN_WARNING);
786 else
787 analyse_tree_close(AN_INFO);
788 break;
789
790 default :
791 break;
792 }
793
794 analyse_free(tab_int_line);
795}
796
797
798/*
799 Check
800*/
801
803{
804 if (id == -1)
805 {
807 }
808 else
809 {
810 analyse_tree_enter(AN_CHECK);
812 analyse_tree_close(AN_CHECK);
813 }
814}
815
816
817void ancheck(int *id)
818{
820}
821
822void ancheck_(int *id)
823{
825}
826
827void ancheck__(int *id)
828{
830}
831
832void _FCALL ANCHECK(int *id)
833{
835}
836
837
838/*
839 analyse_init
840*/
841static void analyse_init(int prgrm, int GUI_mode, int prgrm_language)
842{
843 char *filename;
844 char *path;
845 char *tmp;
846 char *env;
847 char *var;
848 int len_path;
849
850 char *starter_filename="$RADIR/rad_err/starter_message_description.txt";
851 char *radioss_filename="$RADIR/rad_err/radioss_message_description.txt";
852 char *program_filename="$RADIR/rad_err/program_message_description.txt";
853
854 int length;
855
857
859
860 LANGUAGE = prgrm_language;
861
862 if (prgrm == AN_STARTER)
863 {
864 #ifdef _WIN64
865 analyse_tree->info.calling_name=_strdup("Starter");
866 #else
867 analyse_tree->info.calling_name=strdup("Starter");
868 #endif
869 filename = starter_filename;
870 }
871 else if(prgrm == AN_RADIOSS)
872 {
873 #ifdef _WIN64
874 analyse_tree->info.calling_name=_strdup("Radioss");
875 #else
876 analyse_tree->info.calling_name=strdup("Radioss");
877 #endif
878 filename = radioss_filename;
879 }
880 else
881 {
882 #ifdef _WIN64
883 analyse_tree->info.calling_name=_strdup("Program");
884 #else
885 analyse_tree->info.calling_name=strdup("Program");
886 #endif
887 filename = program_filename;
888 }
889
890 if (filename[0]=='$')
891 {
892 tmp=strchr(filename,'/');
893 length = (int)(tmp-filename);
894 var = (char*)analyse_malloc(length*sizeof(char));
895 #ifdef _WIN64
896 strncpy_s(var,length, filename+1, length-1);
897 #else
898 strncpy(var, filename+1, length-1);
899 #endif
900 var[length-1]='\0';
901
902 env = getenv(var);
903 analyse_free(var);
904
905 if (env == NULL)
906 {
907 path = NULL;
908 }
909 else
910 {
911 len_path = (strlen(env)+strlen(tmp)+1)*sizeof(char);
912 path = (char*)analyse_malloc(len_path);
913 #ifdef _WIN64
914 strcpy_s(path,len_path,"");
915 strcat_s(path,len_path,env);
916 strcat_s(path,len_path,tmp);
917 #else
918 strcpy(path,"");
919 strcat(path,env);
920 strcat(path,tmp);
921 #endif
922 }
923 }
924 else
925 {
926 #ifdef _WIN64
927 path = _strdup(filename);
928 #else
929 path = strdup(filename);
930 #endif
931 }
932
933
936
938 analyse_free(path);
939
940 analyse_GUI_window_create(GUI_mode);
941
942/* setIgnoreCore (1); */
943}
944
945void aninit(int *prgrm, int *GUI_mode)
946{
947 analyse_init(*prgrm, *GUI_mode, ANALYSE_ENGLISH);
948}
949
950void aninit_(int *prgrm, int *GUI_mode)
951{
952 analyse_init(*prgrm, *GUI_mode, ANALYSE_ENGLISH);
953}
954
955void aninit__(int *prgrm, int *GUI_mode)
956{
957 analyse_init(*prgrm, *GUI_mode, ANALYSE_ENGLISH);
958}
959
960void _FCALL ANINIT(int *prgrm, int *GUI_mode)
961{
962 analyse_init(*prgrm, *GUI_mode, ANALYSE_ENGLISH);
963}
964
965
966/*
967 analyse_quit
968*/
969void analyse_quit( void )
970{
971 anend();
972}
973
974/**************************** Cls41l04 +++ ********************************/
975/*
976 count Messages
977 -> analyse_count_set
978 -> analyse_count_get
979*/
980void ancnts(int *id, int *value)
981{
983}
984
985void ancnts_(int *id, int *value)
986{
988}
989
990void ancnts__(int *id, int *value)
991{
993}
994
995void _FCALL ANCNTS(int *id, int *value)
996{
998}
999
1000
1001void ancntg(int *id, int *global_cnt, int *tmp_cnt)
1002{
1003 analyse_error_get_cnt(analyse_error_list, *id, global_cnt, tmp_cnt);
1004}
1005
1006void ancntg_(int *id, int *global_cnt, int *tmp_cnt)
1007{
1008 analyse_error_get_cnt(analyse_error_list, *id, global_cnt, tmp_cnt);
1009}
1010
1011void ancntg__(int *id, int *global_cnt, int *tmp_cnt)
1012{
1013 analyse_error_get_cnt(analyse_error_list, *id, global_cnt, tmp_cnt);
1014}
1015
1016void _FCALL ANCNTG(int *id, int *global_cnt, int *tmp_cnt)
1017{
1018 analyse_error_get_cnt(analyse_error_list, *id, global_cnt, tmp_cnt);
1019}
1020/**************************** Cls41l04 --- ********************************/
1021/**************************** Cls41l31 +++ ********************************/
1022void analyse_write_f(char *message)
1023{
1024 int nb_int;
1025 int *tab_int=NULL;
1026
1027 analyse_convert_string_to_int(message, &nb_int, &tab_int);
1028
1029// wif(&nb_int, tab_int);
1030
1031 analyse_free(tab_int);
1032}
1033/**************************** Cls41l31 --- ********************************/
1034/* lm50c18 +++ */
1035
1037
1038void my_exit (int *i)
1039{
1040 qaclose_();
1041 exit(*i);
1042}
1043
1044void my_exit_ (int *i)
1045{ my_exit(i); }
1046
1047void my_exit__ (int *i)
1048{ my_exit(i); }
1049
1050void _FCALL MY_EXIT (int *i)
1051{ my_exit(i); }
1052
1053/* lm50c18 --- */
1054/************************************************************************/
1055
1056
void anstcki_(int *i)
Definition analyse.c:353
static void remove_node_structure(analyse_node_t *node_scan)
Definition analyse.c:198
void ancheck(int *id)
Definition analyse.c:817
void _FCALL ANENTER(int *name_id)
Definition analyse.c:460
void ancheck_(int *id)
Definition analyse.c:822
void analyse_write_f(char *message)
Definition analyse.c:1022
void analyse_quit(void)
Definition analyse.c:969
static int int_stack_size
Definition analyse.c:60
static void remove_data_in_node_recursiv(analyse_node_t *node_scan)
Definition analyse.c:242
void _FCALL ANCHECK(int *id)
Definition analyse.c:832
void aninit_(int *prgrm, int *GUI_mode)
Definition analyse.c:950
void my_exit__(int *i)
Definition analyse.c:1047
void analyse_stack_float(float r)
Definition analyse.c:294
void _FCALL ANEXIT(int *name_id)
Definition analyse.c:570
void anstckf__(float *r)
Definition analyse.c:319
static analyse_node_t * first_free_in_list
Definition analyse.c:73
static analyse_check_t * analyse_check_list
Definition analyse.c:78
static float * float_stack
Definition analyse.c:64
static analyse_node_t * current_node_child_sav
Definition analyse.c:81
void anclose_(int *name_id)
Definition analyse.c:500
void _FCALL ANCLOSE(int *name_id)
Definition analyse.c:509
static void remove_node_data(analyse_node_t *node_scan)
Definition analyse.c:159
void aninit__(int *prgrm, int *GUI_mode)
Definition analyse.c:955
void my_exit_(int *i)
Definition analyse.c:1044
void ancnts_(int *id, int *value)
Definition analyse.c:985
void my_exit(int *i)
Definition analyse.c:1038
void anexit(int *name_id)
Definition analyse.c:556
void _FCALL ANINIT(int *prgrm, int *GUI_mode)
Definition analyse.c:960
void _FCALL MY_EXIT(int *i)
Definition analyse.c:1050
void ancntg_(int *id, int *global_cnt, int *tmp_cnt)
Definition analyse.c:1006
void ancnts__(int *id, int *value)
Definition analyse.c:990
static analyse_error_info_t * analyse_error_list
Definition analyse.c:75
void anclose__(int *name_id)
Definition analyse.c:505
static int float_stack_current
Definition analyse.c:66
void anexit_(int *name_id)
Definition analyse.c:561
void ancnts(int *id, int *value)
Definition analyse.c:980
void analyse_stack_int(int i)
Definition analyse.c:334
static void analyse_init(int prgrm, int GUI_mode, int prgrm_language)
Definition analyse.c:841
void _FCALL ANSTCKF(float *r)
Definition analyse.c:324
void analyse_call_check(int id)
Definition analyse.c:802
static int int_stack_current
Definition analyse.c:61
void qaclose_()
static analyse_node_t * node_scan_sav
Definition analyse.c:82
void _FCALL ANSTCKI(int *i)
Definition analyse.c:358
static int * int_stack
Definition analyse.c:59
static analyse_check_group_t * analyse_check_group_list
Definition analyse.c:77
static void analyse_tree_exit(int name_id)
Definition analyse.c:520
analyse_node_t * analyse_tree
Definition analyse.c:69
int analyse_get_datas(int name_id, int *nb_int, int **tab_int, int *nb_float, float **tab_float)
Definition analyse.c:364
#define SIZE_STEP
Definition analyse.c:55
void anstcki(int *i)
Definition analyse.c:348
static int float_stack_scan
Definition analyse.c:67
void anexit__(int *name_id)
Definition analyse.c:566
void _FCALL ANCNTG(int *id, int *global_cnt, int *tmp_cnt)
Definition analyse.c:1016
void anstckf(float *r)
Definition analyse.c:309
void anclose(int *name_id)
Definition analyse.c:495
void aninit(int *prgrm, int *GUI_mode)
Definition analyse.c:945
static void analyse_tree_close(int name_id)
Definition analyse.c:472
void _FCALL ANCNTS(int *id, int *value)
Definition analyse.c:995
void ancntg(int *id, int *global_cnt, int *tmp_cnt)
Definition analyse.c:1001
void ancntg__(int *id, int *global_cnt, int *tmp_cnt)
Definition analyse.c:1011
void anenter(int *name_id)
Definition analyse.c:450
static int float_stack_size
Definition analyse.c:65
static analyse_node_t * search_for_node_with_id(int name_id)
Definition analyse.c:114
void anenter_(int *name_id)
Definition analyse.c:455
void analyse_call_error(int type, int id, int mode)
Definition analyse.c:580
void ancheck__(int *id)
Definition analyse.c:827
static int int_stack_scan
Definition analyse.c:62
void anstckf_(float *r)
Definition analyse.c:314
static void analyse_tree_enter(int name_id)
Definition analyse.c:395
static int LANGUAGE
Definition analyse.c:57
static void remove_all_in_node_recursiv(analyse_node_t *node_scan)
Definition analyse.c:224
static analyse_node_t * current_node
Definition analyse.c:71
static void manage_Core(int s)
Definition analyse.c:255
static analyse_node_t * last_node_in_list
Definition analyse.c:72
static void store_info_in_node_list(analyse_info_t *analyse_info)
Definition analyse.c:131
void analyse_GUI_add_error_message(char *error_message)
Definition analyse_GUI.c:68
void analyse_GUI_window_create(int GUI_mode)
Definition analyse_GUI.c:75
void analyse_GUI_tree_rebuild(void)
Definition analyse_GUI.c:61
void analyse_GUI_start_loop(void)
Definition analyse_GUI.c:52
struct analyse_check_group_s analyse_check_group_t
void analyse_check_file_write(analyse_check_t *check_list, analyse_check_group_t *check_group_list, int language)
void analyse_check_store(analyse_check_t *check_list, int language, int check_id)
struct analyse_check_s analyse_check_t
#define ANALYSE_ENGLISH
void analyse_error_return_message(analyse_error_info_t *error_list, int error_warning_type, int language, int id, char **title, char **description, char **comment)
void analyse_error_file_read(analyse_error_info_t **error, char *error_description_filename)
void analyse_error_cnt(analyse_error_info_t *error_list, int id)
void analyse_error_get_cnt(analyse_error_info_t *error_list, int id, int *global_cnt, int *tmp_cnt)
struct analyse_error_info_s analyse_error_info_t
void analyse_error_set_tmp_cnt(analyse_error_info_t *error_list, int id, int value)
void analyse_fill_info(analyse_info_t *analyse_info)
void * analyse_malloc(size_t size)
void analyse_free(void *block)
void * analyse_realloc(void *block, size_t size)
#define anend
#define angetnb
#define anaderr
#define wiout
#define anadwar
#define wistdo
void Analyse_Print_Error_Level(char *text, int level)
void analyse_convert_string_to_int(char *message, int *nb_int, int **tab_int)
void analyse_info_init(analyse_info_t *analyse_info)
void analyse_node_init(analyse_node_t *analyse_node)
struct analyse_info_s analyse_info_t
struct analyse_node_s analyse_node_t
#define _FCALL
struct analyse_node_s * list_next
struct analyse_node_s * next
analyse_info_t info
struct analyse_node_s * parent
struct analyse_node_s * child
struct analyse_node_s * list_prev
struct analyse_node_s * prev