1 | IF $(argc) != 4 |
---|
2 | ERROR Wrong number of parameters[$(argc)]. Usage: aisc aisc_com.pa xxx.aisc outfile |
---|
3 | ENDIF |
---|
4 | |
---|
5 | DATA AISC { $(#FILE $(argv[2])) }; |
---|
6 | DUMPDATA DUMP/aisc_com.pa__$(argv[2]).dump |
---|
7 | |
---|
8 | OPEN save $(argv[3]) |
---|
9 | MOVETO $(AISC/PROJECT) |
---|
10 | |
---|
11 | OUT save |
---|
12 | MOVETO $(DATA/.) |
---|
13 | |
---|
14 | P /* ----------------------------------------------------------------- |
---|
15 | P * Created automagically from ../$(argv[2]) |
---|
16 | P * using aisc-script '../AISC/aisc_com.pa' |
---|
17 | P * DO NOT EDIT THIS FILE!!! |
---|
18 | P * ----------------------------------------------------------------- */$n |
---|
19 | |
---|
20 | P #ifndef _LIMITS_H |
---|
21 | P #include <limits.h> |
---|
22 | P #endif |
---|
23 | P #ifndef AISC_GLOBAL_H |
---|
24 | P #include <aisc_global.h> |
---|
25 | P #endif |
---|
26 | |
---|
27 | P #ifndef AISC_MAX_OBJECT |
---|
28 | P # define AISC_MAX_OBJECT $(MAX_OBJECT) |
---|
29 | P # define AISC_MAX_ATTR $(MAX_KEY) |
---|
30 | P # define MAX_AISC_SET_GET $(MAX_PAR_CNT) |
---|
31 | P # define AISC_MAX_STRING_LEN $(MAX_STRING_LEN) |
---|
32 | P # define AISC_MESSAGE_BUFFER_LEN ((AISC_MAX_STRING_LEN/4+3)*($(MAX_PAR_CNT)+2)) |
---|
33 | P # define AISC_MAGIC_NUMBER $(MAGIC_NUMBER)00 |
---|
34 | -- |
---|
35 | P struct aisc_com; |
---|
36 | -- |
---|
37 | P const int AISC_GET $|= AISC_MAGIC_NUMBER+0; |
---|
38 | P const int AISC_SET $|= AISC_MAGIC_NUMBER+1; |
---|
39 | P const int AISC_NSET $|= AISC_MAGIC_NUMBER+2; |
---|
40 | P const int AISC_CREATE $|= AISC_MAGIC_NUMBER+3; |
---|
41 | P const int AISC_FIND $|= AISC_MAGIC_NUMBER+4; |
---|
42 | P const int AISC_COPY $|= AISC_MAGIC_NUMBER+5; |
---|
43 | P const int AISC_DELETE $|= AISC_MAGIC_NUMBER+6; |
---|
44 | P const int AISC_INIT $|= AISC_MAGIC_NUMBER+7; |
---|
45 | P const int AISC_DEBUG_INFO $|= AISC_MAGIC_NUMBER+8; |
---|
46 | -- |
---|
47 | P const int AISC_CCOM_OK $|= AISC_MAGIC_NUMBER+0; |
---|
48 | P const int AISC_CCOM_ERROR $|= AISC_MAGIC_NUMBER+1; |
---|
49 | P const int AISC_CCOM_MESSAGE $|= AISC_MAGIC_NUMBER+2; |
---|
50 | -- |
---|
51 | P #endif |
---|
52 | -- |
---|
53 | FOR $(ENUM) |
---|
54 | IF $(SKEY) |
---|
55 | CREATE $(my_attribute[$(ENUM)]) $(OBJECT_KEY)_ATTR_$(SKEY) |
---|
56 | ENDIF |
---|
57 | ENDFOR |
---|
58 | -- |
---|
59 | P #define $(OBJECT_KEY)_ATTR_INT(a,b) $|(((a)+(b))|0x1000000) |
---|
60 | FOR $(ENUM) |
---|
61 | IF $(SKEY) |
---|
62 | P #define $(OBJECT_KEY)_ATTR_$(SKEY)(a,b) $|(((a)+(b))|0x1000000) |
---|
63 | ENDIF |
---|
64 | ENDFOR |
---|
65 | P #define $(OBJECT_KEY)_ATTR_DOUBLE(a,b) $|(((a)+(b))|0x2000000) |
---|
66 | P #define $(OBJECT_KEY)_ATTR_STRING(a,b) $|(((a)+(b))|0x3000000) |
---|
67 | CREATE $(my_attribute[char]) $(OBJECT_KEY)_ATTR_INT |
---|
68 | CREATE $(my_attribute[int]) $(OBJECT_KEY)_ATTR_INT |
---|
69 | CREATE $(my_attribute[func]) $(OBJECT_KEY)_ATTR_INT |
---|
70 | CREATE $(my_attribute[t_key]) $(OBJECT_KEY)_ATTR_INT |
---|
71 | CREATE $(my_attribute[dllheader_ext]) $(OBJECT_KEY)_ATTR_INT |
---|
72 | CREATE $(my_attribute[double]) $(OBJECT_KEY)_ATTR_DOUBLE |
---|
73 | CREATE $(my_attribute[aisc_string]) $(OBJECT_KEY)_ATTR_STRING |
---|
74 | CREATE $(my_attribute[bytestring]) $(OBJECT_KEY)_ATTR_BYTES |
---|
75 | FOR $(STRUCT) |
---|
76 | IF $(JOINED) |
---|
77 | ELSEIF $(SKEY) |
---|
78 | P #define $(OBJECT_KEY)_ATTR_$(SKEY)(a,b) $|(((a)+(b))|0x4000000) |
---|
79 | CREATE $(my_attribute[$(STRUCT)]) $(OBJECT_KEY)_ATTR_$(SKEY) |
---|
80 | ENDIF |
---|
81 | ENDFOR |
---|
82 | P #define $(OBJECT_KEY)_ATTR_BYTES(a,b) $|(((a)+(b))|0x5000000) |
---|
83 | -- |
---|
84 | P enum Aisc_Object_Type { |
---|
85 | INDENT +1 |
---|
86 | FOR $(STRUCT) |
---|
87 | IF $(JOINED) |
---|
88 | ELSEIF $(SKEY) |
---|
89 | P $(OBJECT_KEY)_$(SKEY) $|= 0x10000*$(SKEYC), |
---|
90 | ENDIF |
---|
91 | ENDFOR |
---|
92 | P $(OBJECT_KEY)_MAX $|= 0x10000*$(MAX_OBJECT), |
---|
93 | P $(OBJECT_KEY)_INDEX $|= 0x10000*0x1ff |
---|
94 | INDENT -1 |
---|
95 | P }; |
---|
96 | -- |
---|
97 | FOR $(STRUCT) |
---|
98 | IF $(JOINED) |
---|
99 | ELSEIF $(SKEY) |
---|
100 | P struct T_$(OBJECT_KEY)_$(SKEY) : public AISC_Object { |
---|
101 | INDENT +1 |
---|
102 | P T_$(OBJECT_KEY)_$(SKEY)() : AISC_Object($(OBJECT_KEY)_$(SKEY)) {} |
---|
103 | P void assign(const T_$(OBJECT_KEY)_$(SKEY)& o) { set(o.type(), o.get()); } |
---|
104 | INDENT -1 |
---|
105 | P }; |
---|
106 | ENDIF |
---|
107 | ENDFOR |
---|
108 | -- |
---|
109 | |
---|
110 | CREATE $(A) |
---|
111 | CREATE $(add) 0 |
---|
112 | CREATE $(str) 0 |
---|
113 | CREATE $(skey) 0 |
---|
114 | CREATE $(struct) 0 |
---|
115 | CREATE $(com) |
---|
116 | |
---|
117 | FOR $(STRUCT) |
---|
118 | IF $(SKEY) |
---|
119 | PUSH |
---|
120 | IF $(JOINED) |
---|
121 | ELSE |
---|
122 | P enum $(OBJECT_KEY)_$(SKEY)_Attribute { // $(SKEY) |
---|
123 | INDENT +1 |
---|
124 | ENDIF |
---|
125 | SET $(skey) $(SKEY) |
---|
126 | SET $(struct) $(STRUCT) |
---|
127 | CALL insert_struct_attributes,0,$(SKEY)_,// |
---|
128 | IF $(JOIN_NEXT) |
---|
129 | ELSE |
---|
130 | P $(SKEY)_FORCELONG $|= LONG_MAX |
---|
131 | INDENT -1 |
---|
132 | P }; |
---|
133 | -- |
---|
134 | ENDIF |
---|
135 | POP |
---|
136 | ENDIF |
---|
137 | ENDFOR |
---|
138 | CLOSE save |
---|
139 | |
---|
140 | EXIT |
---|
141 | |
---|
142 | FUNCTION insert_struct_attributes,a,s,c |
---|
143 | FOR $({/TYPE) |
---|
144 | IF $(KEY) |
---|
145 | IF $(TYPE) = dllh |
---|
146 | P $(s)PRED $|= $\ |
---|
147 | P $(my_attribute[$(struct)])$\ |
---|
148 | P $|($(OBJECT_KEY)_$(skey), $(+ $(a)+$(KEYC))), $|// DO |
---|
149 | |
---|
150 | P $(s)NEXT $|= $\ |
---|
151 | P $(my_attribute[$(struct)])$\ |
---|
152 | P $|($(OBJECT_KEY)_$(skey), $(+ 1+$(+ $(a)+$(KEYC)))), $|$(c) |
---|
153 | |
---|
154 | SET $(add) $(+ $(a)+$(KEYC)) |
---|
155 | SET $(add) $(+ 2+$(add)) |
---|
156 | SET $(str) $(s)$(KEY) |
---|
157 | PUSH |
---|
158 | MOVETO $(/AISC/DATA/STRUCT.dll_header) |
---|
159 | CALL insert_struct_attributes,$(add),$(str),$(c) H |
---|
160 | POP |
---|
161 | ELSEIF $(REF) ~ s |
---|
162 | SET $(add) $(+ $(a),$(KEYC)) |
---|
163 | SET $(str) $(s)$(KEY) |
---|
164 | SET $(com) $(c) S |
---|
165 | PUSH |
---|
166 | MOVETO $(/AISC/DATA/STRUCT.$(TYPE)) |
---|
167 | CALL insert_struct_attributes,$(add),$(str),$(com) |
---|
168 | POP |
---|
169 | ELSE |
---|
170 | IF $(REF) ~ d |
---|
171 | SET $(com) $(c) DL |
---|
172 | ELSEIF $(REF) ~ v |
---|
173 | SET $(com) $(c) [$(SIZE)] |
---|
174 | ELSEIF $(REF) ~ * |
---|
175 | SET $(com) $(c) [] |
---|
176 | ELSEIF $(TYPE) = func |
---|
177 | SET $(com) $(c) FUNC |
---|
178 | ELSE |
---|
179 | SET $(com) $(c) |
---|
180 | ENDIF |
---|
181 | IF $(my_attribute[$(TYPE)]) |
---|
182 | P $(s)$(KEY) $|= $\ |
---|
183 | P $(my_attribute[$(TYPE)])$\ |
---|
184 | P $|($(OBJECT_KEY)_$(skey), $(+ $(a)+$(KEYC))), $|$(com) |
---|
185 | ELSE |
---|
186 | ERROR TYPE $(TYPE) unknown, no key build |
---|
187 | ENDIF |
---|
188 | IF $(REF) ~ d |
---|
189 | P $(s)$(KEY)_CNT $|= $\ |
---|
190 | P $(my_attribute[int])$\ |
---|
191 | P $|($(OBJECT_KEY)_$(skey), $(+ 1,$(+ $(a)+$(KEYC)))), $|$(com) |
---|
192 | ENDIF |
---|
193 | ENDIF |
---|
194 | ENDIF |
---|
195 | ENDFOR |
---|
196 | RETURN |
---|