| 1 | IF $(argc) = 5,6 |
|---|
| 2 | ELSE |
|---|
| 3 | ERROR Falsche Parameteranzahl: Syntax aisc xxx.pa xxx.aisc outfile extern_file |
|---|
| 4 | ENDIF |
|---|
| 5 | |
|---|
| 6 | DATA AISC { $(#FILE $(argv[2])) }; |
|---|
| 7 | OPEN save $(argv[3]) |
|---|
| 8 | |
|---|
| 9 | TABSTOP 8 |
|---|
| 10 | TAB 0 0 |
|---|
| 11 | TAB 1 8 |
|---|
| 12 | TAB 2 16 |
|---|
| 13 | TAB 3 24 |
|---|
| 14 | TAB 4 32 |
|---|
| 15 | TAB 5 40 |
|---|
| 16 | TAB 6 48 |
|---|
| 17 | TAB 7 56 |
|---|
| 18 | TAB 8 64 |
|---|
| 19 | TAB 9 72 |
|---|
| 20 | |
|---|
| 21 | |
|---|
| 22 | MOVETO $(AISC/PROJECT) |
|---|
| 23 | CREATE $(pre) = $(OBJECT_KEY)_ |
|---|
| 24 | CREATE $(max_key) = $(MAX_KEY) |
|---|
| 25 | CREATE $(max_obj) = $(MAX_OBJECT) |
|---|
| 26 | |
|---|
| 27 | OUT save |
|---|
| 28 | |
|---|
| 29 | MOVETO $(DATA/.) |
|---|
| 30 | |
|---|
| 31 | P /********************************************************************* |
|---|
| 32 | P * Created automagically from $(argv[2]) and $(argv[4]) |
|---|
| 33 | P * using aisc-script 'aisc_global.pa' |
|---|
| 34 | P * DO NOT EDIT THIS FILE!!! |
|---|
| 35 | P *********************************************************************/$n |
|---|
| 36 | |
|---|
| 37 | P #include "aisc_func_types.h"$n |
|---|
| 38 | |
|---|
| 39 | P #ifdef __cplusplus |
|---|
| 40 | P #define __P(destroy_func) extern "C" aisc_callback_func_proto(destroy_func); |
|---|
| 41 | P #else |
|---|
| 42 | P #define __P(destroy_func) aisc_callback_func_proto(destroy_func); |
|---|
| 43 | P #endif |
|---|
| 44 | |
|---|
| 45 | ########### generate object names struct ########### |
|---|
| 46 | CREATE $(i) |
|---|
| 47 | FOR $(i) = 0 TO $(max_obj) |
|---|
| 48 | CREATE $(list2[$(i)]) = $10, |
|---|
| 49 | ENDFOR |
|---|
| 50 | FOR $(i) = 0 TO $(max_key) |
|---|
| 51 | CREATE $(list[$(i)]) = $10, |
|---|
| 52 | ENDFOR |
|---|
| 53 | P const char *aisc_object_names[] = { |
|---|
| 54 | FOR $(STRUCT) |
|---|
| 55 | IF $(SKEY) |
|---|
| 56 | SET $(list2[$(SKEYC)]) = $1"$(pre)$(SKEY)", |
|---|
| 57 | ENDIF |
|---|
| 58 | ENDFOR |
|---|
| 59 | FOR $(i) = 0 TO $(max_obj) |
|---|
| 60 | P $(list2[$(i)]) |
|---|
| 61 | ENDFOR |
|---|
| 62 | P $10$n};$n |
|---|
| 63 | |
|---|
| 64 | ############# generate attribute names structs ################# |
|---|
| 65 | CREATE $(nummer) |
|---|
| 66 | CREATE $(aisc_string) |
|---|
| 67 | FOR $(STRUCT) |
|---|
| 68 | IF $(SKEY) |
|---|
| 69 | GOSUB clearlist |
|---|
| 70 | SET $(nummer) = 0 |
|---|
| 71 | SET $(aisc_string) = $(pre)$(SKEY)_ |
|---|
| 72 | P static const char *$(pre)$(STRUCT)_attribut_names[] = { |
|---|
| 73 | GOSUB make_attr_names |
|---|
| 74 | GOSUB printlist |
|---|
| 75 | P $10$n};$n |
|---|
| 76 | ENDIF |
|---|
| 77 | ENDFOR |
|---|
| 78 | P $n |
|---|
| 79 | |
|---|
| 80 | ############## generate attribut names struct list ############# |
|---|
| 81 | GOSUB clearobjlist |
|---|
| 82 | P const char *aisc_attribut_names_list[] = { |
|---|
| 83 | FOR $(STRUCT) |
|---|
| 84 | IF $(SKEY) |
|---|
| 85 | SET $(list2[$(SKEYC)]) = $1(const char *)$(pre)$(STRUCT)_attribut_names |
|---|
| 86 | ENDIF |
|---|
| 87 | ENDFOR |
|---|
| 88 | GOSUB printobjlist |
|---|
| 89 | P $10$n};$n |
|---|
| 90 | |
|---|
| 91 | ############# generate function structs ################### |
|---|
| 92 | |
|---|
| 93 | P typedef int* (*talking_function)(int *x, ...); |
|---|
| 94 | P typedef talking_function *talking_function_ptr; |
|---|
| 95 | |
|---|
| 96 | FOR $(STRUCT) |
|---|
| 97 | P extern talking_function aisc_talking_functions_create_$(STRUCT)[]; |
|---|
| 98 | P //extern int *((*(aisc_talking_functions_create_$(STRUCT)[]))()); |
|---|
| 99 | P extern int *((*(aisc_talking_functions_get_$(STRUCT)[]))()); |
|---|
| 100 | P extern int *((*(aisc_talking_functions_find_$(STRUCT)[]))()); |
|---|
| 101 | P extern int *((*(aisc_talking_functions_copy_$(STRUCT)[]))()); |
|---|
| 102 | P extern int ((*(aisc_talking_functions_set_$(STRUCT)[]))()); |
|---|
| 103 | P __P(destroy_$(STRUCT))$n |
|---|
| 104 | ENDFOR |
|---|
| 105 | |
|---|
| 106 | ################## generate d flags ##################### |
|---|
| 107 | P int aisc_d_flags[] = { |
|---|
| 108 | FOR $(i) = 0 TO $(max_key) |
|---|
| 109 | SET $(list[$(i)]) = $10, |
|---|
| 110 | ENDFOR |
|---|
| 111 | FOR $(STRUCT) |
|---|
| 112 | IF $(SKEY) |
|---|
| 113 | SET $(i) = 0 |
|---|
| 114 | FOR $({/TYPE) |
|---|
| 115 | IF $(TYPE) = dllh |
|---|
| 116 | SET $(i) = 1 |
|---|
| 117 | ENDIF |
|---|
| 118 | ENDFOR |
|---|
| 119 | SET $(list[$(SKEYC)]) = $1$(i),$6/* $(SKEY) */ |
|---|
| 120 | ENDIF |
|---|
| 121 | ENDFOR |
|---|
| 122 | FOR $(i) = 0 TO $(max_key) |
|---|
| 123 | P $(list[$(i)]) |
|---|
| 124 | ENDFOR |
|---|
| 125 | P $10$n};$n |
|---|
| 126 | |
|---|
| 127 | ################## generate get tables ##################### |
|---|
| 128 | P int *((**(aisc_talking_functions_get[]))()) = { |
|---|
| 129 | FOR $(i) = 0 TO $(max_key) |
|---|
| 130 | SET $(list[$(i)]) = $10, |
|---|
| 131 | ENDFOR |
|---|
| 132 | FOR $(STRUCT) |
|---|
| 133 | IF $(SKEY) |
|---|
| 134 | SET $(list[$(SKEYC)]) = $1aisc_talking_functions_get_$(STRUCT), |
|---|
| 135 | ENDIF |
|---|
| 136 | ENDFOR |
|---|
| 137 | FOR $(i) = 0 TO $(max_key) |
|---|
| 138 | P $(list[$(i)]) |
|---|
| 139 | ENDFOR |
|---|
| 140 | P $10$n};$n |
|---|
| 141 | |
|---|
| 142 | ################## generate set tables ##################### |
|---|
| 143 | P int ((**(aisc_talking_functions_set[]))()) = { |
|---|
| 144 | FOR $(i) = 0 TO $(max_key) |
|---|
| 145 | SET $(list[$(i)]) = $10, |
|---|
| 146 | ENDFOR |
|---|
| 147 | FOR $(STRUCT) |
|---|
| 148 | IF $(SKEY) |
|---|
| 149 | SET $(list[$(SKEYC)]) = $1aisc_talking_functions_set_$(STRUCT), |
|---|
| 150 | ENDIF |
|---|
| 151 | ENDFOR |
|---|
| 152 | FOR $(i) = 0 TO $(max_key) |
|---|
| 153 | P $(list[$(i)]) |
|---|
| 154 | ENDFOR |
|---|
| 155 | P $10$n};$n |
|---|
| 156 | |
|---|
| 157 | ################## generate find tables ##################### |
|---|
| 158 | P int *((**(aisc_talking_functions_find[]))()) = { |
|---|
| 159 | FOR $(i) = 0 TO $(max_key) |
|---|
| 160 | SET $(list[$(i)]) = $10, |
|---|
| 161 | ENDFOR |
|---|
| 162 | FOR $(STRUCT) |
|---|
| 163 | IF $(SKEY) |
|---|
| 164 | SET $(list[$(SKEYC)]) = $1aisc_talking_functions_find_$(STRUCT), |
|---|
| 165 | ENDIF |
|---|
| 166 | ENDFOR |
|---|
| 167 | FOR $(i) = 0 TO $(max_key) |
|---|
| 168 | P $(list[$(i)]) |
|---|
| 169 | ENDFOR |
|---|
| 170 | P $10$n};$n |
|---|
| 171 | |
|---|
| 172 | ################## generate copy tables ##################### |
|---|
| 173 | P int *((**(aisc_talking_functions_copy[]))()) = { |
|---|
| 174 | FOR $(i) = 0 TO $(max_key) |
|---|
| 175 | SET $(list[$(i)]) = $10, |
|---|
| 176 | ENDFOR |
|---|
| 177 | FOR $(STRUCT) |
|---|
| 178 | IF $(SKEY) |
|---|
| 179 | SET $(list[$(SKEYC)]) = $1aisc_talking_functions_copy_$(STRUCT), |
|---|
| 180 | ENDIF |
|---|
| 181 | ENDFOR |
|---|
| 182 | FOR $(i) = 0 TO $(max_key) |
|---|
| 183 | P $(list[$(i)]) |
|---|
| 184 | ENDFOR |
|---|
| 185 | P $10$n};$n |
|---|
| 186 | |
|---|
| 187 | ################## generate create tables ##################### |
|---|
| 188 | #P int *((**(aisc_talking_functions_create[]))()) = { |
|---|
| 189 | P talking_function* aisc_talking_functions_create[] = { |
|---|
| 190 | FOR $(i) = 0 TO $(max_key) |
|---|
| 191 | SET $(list[$(i)]) = $10, |
|---|
| 192 | ENDFOR |
|---|
| 193 | FOR $(STRUCT) |
|---|
| 194 | IF $(SKEY) |
|---|
| 195 | SET $(list[$(SKEYC)]) = $1aisc_talking_functions_create_$(STRUCT), |
|---|
| 196 | ENDIF |
|---|
| 197 | ENDFOR |
|---|
| 198 | FOR $(i) = 0 TO $(max_key) |
|---|
| 199 | P $(list[$(i)]) |
|---|
| 200 | ENDFOR |
|---|
| 201 | P $10$n};$n |
|---|
| 202 | |
|---|
| 203 | ################## generate delete tables ##################### |
|---|
| 204 | #P int ((*(aisc_talking_functions_delete[]))()) = { |
|---|
| 205 | P aisc_callback_func aisc_talking_functions_delete[] = { |
|---|
| 206 | FOR $(i) = 0 TO $(max_key) |
|---|
| 207 | SET $(list[$(i)]) = $10, |
|---|
| 208 | ENDFOR |
|---|
| 209 | FOR $(STRUCT) |
|---|
| 210 | IF $(SKEY) |
|---|
| 211 | SET $(list[$(SKEYC)]) = $1destroy_$(STRUCT), |
|---|
| 212 | ENDIF |
|---|
| 213 | ENDFOR |
|---|
| 214 | FOR $(i) = 0 TO $(max_key) |
|---|
| 215 | P $(list[$(i)]) |
|---|
| 216 | ENDFOR |
|---|
| 217 | P $10$n};$n |
|---|
| 218 | |
|---|
| 219 | ##################### FINISH ########################## |
|---|
| 220 | |
|---|
| 221 | P #undef __P |
|---|
| 222 | |
|---|
| 223 | CLOSE save |
|---|
| 224 | EXIT |
|---|
| 225 | |
|---|
| 226 | ###################### FUNCTIONS ############################ |
|---|
| 227 | ###################### FUNCTIONS ############################ |
|---|
| 228 | ###################### FUNCTIONS ############################ |
|---|
| 229 | |
|---|
| 230 | ################ make_attr_names (rek.) #################### |
|---|
| 231 | FUNCTION make_attr_names |
|---|
| 232 | CREATE $(nr) = $(nummer) |
|---|
| 233 | CREATE $(s) = $(aisc_string) |
|---|
| 234 | FOR $({/TYPE) |
|---|
| 235 | IF $(KEY) |
|---|
| 236 | IF $(REF) ~ s |
|---|
| 237 | PUSH |
|---|
| 238 | SET $(nummer) = $(+ $(nr)+$(KEYC) ) |
|---|
| 239 | SET $(aisc_string) = $(s)$(KEY)_ |
|---|
| 240 | MOVETO $(/AISC/DATA/STRUCT.$(TYPE)) |
|---|
| 241 | GOSUB make_attr_names |
|---|
| 242 | POP |
|---|
| 243 | ELSEIF $(REF) ~ d |
|---|
| 244 | SET $(list[$(+ $(+ $(nr)+1)+$(KEYC))])=$1"$(s)$(KEY)CNT" |
|---|
| 245 | SET $(list[$(+ $(nr)+$(KEYC))]) = $1"$(s)$(KEY)" |
|---|
| 246 | ELSEIF $(TYPE) = dllh |
|---|
| 247 | PUSH |
|---|
| 248 | SET $(nummer) = $(+ 2+$(+ $(nr)+$(KEYC) )) |
|---|
| 249 | SET $(aisc_string) = $(s)$(KEY) |
|---|
| 250 | MOVETO $(/AISC/DATA/STRUCT.dll_header) |
|---|
| 251 | GOSUB make_attr_names |
|---|
| 252 | POP |
|---|
| 253 | SET $(list[$(+ $(nr)+0)]) = $1"$(s)PREVIOUS" |
|---|
| 254 | SET $(list[$(+ $(nr)+1)]) = $1"$(s)NEXT" |
|---|
| 255 | ELSE |
|---|
| 256 | SET $(list[$(+ $(nr)+$(KEYC))]) = $1"$(s)$(KEY)" |
|---|
| 257 | ENDIF |
|---|
| 258 | ENDIF |
|---|
| 259 | ENDFOR |
|---|
| 260 | RETURN |
|---|
| 261 | |
|---|
| 262 | ############### SUB CLEAR LIST ######################### |
|---|
| 263 | FUNCTION clearlist |
|---|
| 264 | FOR $(i) = 0 TO $(max_key) |
|---|
| 265 | SET $(list[$(i)]) = $10 |
|---|
| 266 | ENDFOR |
|---|
| 267 | RETURN |
|---|
| 268 | ############### SUB PRINT LIST ######################### |
|---|
| 269 | FUNCTION printlist |
|---|
| 270 | FOR $(i) = 0 TO $(max_key) |
|---|
| 271 | P $1$(list[$(i)]), |
|---|
| 272 | ENDFOR |
|---|
| 273 | RETURN |
|---|
| 274 | |
|---|
| 275 | ############### SUB CLEAR LIST ######################### |
|---|
| 276 | FUNCTION clearobjlist |
|---|
| 277 | FOR $(i) = 0 TO $(max_obj) |
|---|
| 278 | SET $(list2[$(i)]) = $10 |
|---|
| 279 | ENDFOR |
|---|
| 280 | RETURN |
|---|
| 281 | ############### SUB PRINT OBJ LIST ######################### |
|---|
| 282 | FUNCTION printobjlist |
|---|
| 283 | FOR $(i) = 0 TO $(max_obj) |
|---|
| 284 | P $1$(list2[$(i)]), |
|---|
| 285 | ENDFOR |
|---|
| 286 | RETURN |
|---|
| 287 | |
|---|