| 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 |
|---|