1 | |
---|
2 | IF $(argc) = 5,6 |
---|
3 | ELSE |
---|
4 | ERROR Falsche Parameteranzahl: Syntax aisc xxx.pa xxx.aisc outfile exeternfile [import_proto] |
---|
5 | ENDIF |
---|
6 | # ************** LOAD DATA ************** |
---|
7 | DATA AISC { $(#FILE $(argv[2])) }; |
---|
8 | OPEN save $(argv[3]) |
---|
9 | # ************** TABSTOPS *************** |
---|
10 | TABSTOP 8 |
---|
11 | CREATE $(i) |
---|
12 | FOR $(i) = 0 TO 9 |
---|
13 | TAB $(i) $(* 8,$(i)) |
---|
14 | ENDFOR |
---|
15 | # ************** SET CURSOR ********** |
---|
16 | MOVETO $(AISC/PROJECT) |
---|
17 | OUT save |
---|
18 | MOVETO $(DATA/.) |
---|
19 | P /********************************************************************* |
---|
20 | P * Created automagically from $(argv[2]) |
---|
21 | P * using aisc-script 'aisc_debug_globals.pa' |
---|
22 | P * DO NOT EDIT THIS FILE!!! |
---|
23 | P *********************************************************************/$n |
---|
24 | # ************** PRINT INCLUDES ********** |
---|
25 | #P #include <stdio.h> |
---|
26 | P #include <aisc_com.h> |
---|
27 | P #include <client.h> |
---|
28 | P #include <stdio.h> |
---|
29 | P extern int aisc_core_on_error; |
---|
30 | P extern aisc_com *aisc_client_link; |
---|
31 | P #ifdef __cplusplus |
---|
32 | P extern "C" { |
---|
33 | P char *aisc_debug_local(aisc_com *,enum Attributes_Header_List, void *,const char *, ...); |
---|
34 | P } |
---|
35 | P #else |
---|
36 | P char *aisc_debug_local(); |
---|
37 | P #endif |
---|
38 | # ************** BUILD CALLING FUNCTION FOR EACH STRUCTURE ********** |
---|
39 | CREATE $(str) 0 |
---|
40 | CREATE $(keys) |
---|
41 | FOR $(STRUCT) |
---|
42 | IF $(SKEY) |
---|
43 | P $n$n/* ********** $(SDOCU|$(STRUCT)) ***************/ |
---|
44 | P static char *aisc_debug_$(STRUCT)(aisc_com *link,void *object) |
---|
45 | P { |
---|
46 | PUSH |
---|
47 | SET $(keys) |
---|
48 | # ************** BUILD KEY_LIST ********** |
---|
49 | CALL struct_attr,$(SKEY)_ |
---|
50 | POP |
---|
51 | P $1return aisc_debug_local(link,$(OBJECT_KEY)_$(SKEY),object, |
---|
52 | P $1"$(keys)undef", |
---|
53 | P $1$(keys)(long)0); |
---|
54 | P }$n |
---|
55 | ENDIF |
---|
56 | ENDFOR |
---|
57 | |
---|
58 | # ************** BUILD MAIN DEBUG FUNCTION ********** |
---|
59 | P const char *md2(void *object) |
---|
60 | P { |
---|
61 | P $1static int key;$n$1char *s;$n$1aisc_com *link; |
---|
62 | P $1link = aisc_client_link;aisc_core_on_error = 0; |
---|
63 | P $1if (aisc_get(link,$(OBJECT_KEY)_COMMON, (long)object, |
---|
64 | P $1COMMON_KEY, &key,NULL)) |
---|
65 | P $2{ aisc_core_on_error = 1; |
---|
66 | P $2return "unknown object"; |
---|
67 | P $1}; |
---|
68 | P $1switch(key) { |
---|
69 | FOR $(STRUCT) |
---|
70 | IF $(JOINED) |
---|
71 | ELSEIF $(SKEY) |
---|
72 | P $2 case $(OBJECT_KEY)_$(SKEY):$5s=aisc_debug_$(STRUCT)(link,object);break; |
---|
73 | ENDIF |
---|
74 | ENDFOR |
---|
75 | P $2 default:$5s = 0; break; |
---|
76 | P $1}; |
---|
77 | P $1 aisc_core_on_error = 1; |
---|
78 | P $1 return s; |
---|
79 | P } |
---|
80 | CLOSE save |
---|
81 | |
---|
82 | EXIT |
---|
83 | |
---|
84 | # ************** BUILD KEY_LIST ********** |
---|
85 | FUNCTION struct_attr,s |
---|
86 | FOR $({/TYPE) |
---|
87 | IF $(KEY) |
---|
88 | IF $(REF) ~ %,*,v |
---|
89 | ELSEIF $(TYPE) = dllh |
---|
90 | SET $(keys) $(keys)$(s)PRED,$(s)NEXT, |
---|
91 | SET $(str) $(s)$(KEY) |
---|
92 | PUSH |
---|
93 | MOVETO $(/AISC/DATA/STRUCT.dll_header) |
---|
94 | CALL struct_attr $(str) |
---|
95 | POP |
---|
96 | ELSEIF $(REF) ~ s |
---|
97 | SET $(str) $(s)$(KEY) |
---|
98 | PUSH |
---|
99 | MOVETO $(/AISC/DATA/STRUCT.$(TYPE)) |
---|
100 | CALL struct_attr $(str) |
---|
101 | POP |
---|
102 | ELSEIF $(REF) ~ e,t,d |
---|
103 | SET $(keys) $(keys)$(s)$(KEY), |
---|
104 | ENDIF |
---|
105 | ENDIF |
---|
106 | ENDFOR |
---|
107 | RETURN |
---|