source: branches/port5/AISC_COM/AISC/aisc_com.pa

Last change on this file was 5390, checked in by westram, 17 years ago
  • TAB-Ex
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 8.2 KB
Line 
1
2IF $(argc) = 4
3ELSE
4        ERROR   Falsche Parameteranzahl: Syntax aisc xxx.pa xxx.aisc outfile
5ENDIF
6
7DATA AISC { $(#FILE $(argv[2])) };
8OPEN save $(argv[3])
9MOVETO $(AISC/PROJECT)
10
11IF $(MYTABSTOP)
12        TABSTOP $(MYTABSTOP)
13ELSE
14        TABSTOP 8
15ENDIF   
16TAB     0       0
17TAB     1       8
18TAB     2       16
19TAB     3       24
20TAB     4       32
21TAB     5       40
22TAB     6       48
23TAB     7       56
24TAB     8       64
25TAB     9       70
26
27OUT save
28MOVETO $(DATA/.)
29
30P /*********************************************************************
31P  * Created automagically from $(argv[2])
32P  * using aisc-script 'aisc_com.pa'
33P  * DO NOT EDIT THIS FILE!!!
34P  *********************************************************************/$n
35
36P #ifndef AISC_MAX_OBJECT
37P #define AISC_MAX_OBJECT $(MAX_OBJECT)
38P #define AISC_MAX_ATTR $(MAX_KEY)
39P #define MAX_AISC_SET_GET $(MAX_PAR_CNT)
40P #define AISC_MAX_STRING_LEN $(MAX_STRING_LEN)
41P #define AISC_MESSAGE_BUFFER_LEN ((AISC_MAX_STRING_LEN/4+3)*($(MAX_PAR_CNT)+2))
42P #define AISC_MAGIC_NUMBER $(MAGIC_NUMBER)00
43
44P $ntypedef struct struct_aisc_com {
45P $1int$2socket;
46P $1int$2message_type;
47P $1char$2*message;
48P $1int$2*message_queue;
49P $1int$2magic;
50P $1char$2*error;$n} aisc_com;
51
52P #ifndef _AISC_BYTESTRING
53P #define _AISC_BYTESTRING
54P $ntypedef struct struct_bytestring {
55P $1char$2*data;
56P $1int$2size;$n} bytestring;
57P #endif
58
59
60P #ifdef __cplusplus
61P const int $1AISC_GET$3= (int)AISC_MAGIC_NUMBER$6+ 0;
62P const int $1AISC_SET$3= (int)AISC_MAGIC_NUMBER$6+ 1;
63P const int $1AISC_NSET$3= (int)AISC_MAGIC_NUMBER$6+ 2;
64P const int $1AISC_CREATE$3= (int)AISC_MAGIC_NUMBER$6+ 3;
65P const int $1AISC_FIND$3= (int)AISC_MAGIC_NUMBER$6+ 4;
66P const int $1AISC_COPY$3= (int)AISC_MAGIC_NUMBER$6+ 5;
67P const int $1AISC_DELETE$3= (int)AISC_MAGIC_NUMBER$6+ 6;
68P const int $1AISC_INIT$3= (int)AISC_MAGIC_NUMBER$6+ 7;
69P const int $1AISC_DEBUG_INFO$3= (int)AISC_MAGIC_NUMBER$6+ 8;
70P #else
71P $nenum aisc_command_list {
72P $1AISC_GET$3= AISC_MAGIC_NUMBER$6+ 0,
73P $1AISC_SET$3= AISC_MAGIC_NUMBER$6+ 1,
74P $1AISC_NSET$3= AISC_MAGIC_NUMBER$6+ 2,
75P $1AISC_CREATE$3= AISC_MAGIC_NUMBER$6+ 3,
76P $1AISC_FIND$3= AISC_MAGIC_NUMBER$6+ 4,
77P $1AISC_COPY$3= AISC_MAGIC_NUMBER$6+ 5,
78P $1AISC_DELETE$3= AISC_MAGIC_NUMBER$6+ 6,
79P $1AISC_INIT$3= AISC_MAGIC_NUMBER$6+ 7,
80P $1AISC_DEBUG_INFO$3= AISC_MAGIC_NUMBER$6+ 8,
81P       };
82P #endif
83
84P #ifdef __cplusplus
85P       const int $1AISC_CCOM_OK$3= AISC_MAGIC_NUMBER$6+ 0;
86P       const int $1AISC_CCOM_ERROR$3= AISC_MAGIC_NUMBER$6+ 1;
87P       const int $1AISC_CCOM_MESSAGE$3= AISC_MAGIC_NUMBER$6+ 2;
88P #else
89P       $nenum aisc_client_command_list {
90P               AISC_CCOM_OK$3= AISC_MAGIC_NUMBER$6+ 0,
91P               AISC_CCOM_ERROR$3= AISC_MAGIC_NUMBER$6+ 1,
92P               AISC_CCOM_MESSAGE$3= AISC_MAGIC_NUMBER$6+ 2,
93P       };
94P #endif
95P #endif
96
97FOR $(ENUM)
98        IF $(SKEY)
99                CREATE $(my_attribute[$(ENUM)]) $(OBJECT_KEY)_ATTR_$(SKEY)
100        ENDIF
101#       P       typedef enum enum_$(ENUM) {
102#       FOR $({/VAR)
103#               IF $(VAL)
104#                       P $2$(VAR)$3=$4 $(VAL),$\
105#               ELSE
106#                       P $2$(VAR),$\
107#               ENDIF
108#               P $6/* $(DOCU)$8*/
109#       ENDFOR
110#       P       } $(ENUM);
111ENDFOR
112P $n
113
114
115FOR $(STRUCT)
116        IF $(JOINED)
117        ELSEIF $(SKEY)
118                P typedef long T_$(OBJECT_KEY)_$(SKEY);
119        ENDIF
120ENDFOR
121P $n$n
122P #define $(OBJECT_KEY)_ATTR_INT(a,b)$6( (a+b) | 0x1000000 )
123FOR $(ENUM)
124        IF $(SKEY)
125                P #define $(OBJECT_KEY)_ATTR_$(SKEY)(a,b)$6( (a+b) | 0x1000000 )
126        ENDIF
127ENDFOR
128
129P #define $(OBJECT_KEY)_ATTR_DOUBLE(a,b)$6( (a+b) | 0x2000000 )
130P #define $(OBJECT_KEY)_ATTR_STRING(a,b)$6( (a+b) | 0x3000000 )
131CREATE $(my_attribute[char]) $(OBJECT_KEY)_ATTR_INT
132CREATE $(my_attribute[int]) $(OBJECT_KEY)_ATTR_INT
133CREATE $(my_attribute[func]) $(OBJECT_KEY)_ATTR_INT
134CREATE $(my_attribute[t_key]) $(OBJECT_KEY)_ATTR_INT
135CREATE $(my_attribute[dllheader_ext]) $(OBJECT_KEY)_ATTR_INT
136CREATE $(my_attribute[double]) $(OBJECT_KEY)_ATTR_DOUBLE
137CREATE $(my_attribute[aisc_string]) $(OBJECT_KEY)_ATTR_STRING
138CREATE $(my_attribute[bytestring]) $(OBJECT_KEY)_ATTR_BYTES
139FOR $(STRUCT)
140        IF $(JOINED)
141        ELSEIF $(SKEY)
142                P #define $(OBJECT_KEY)_ATTR_$(SKEY)(a,b)$6( (a+b) | 0x4000000 )
143                CREATE $(my_attribute[$(STRUCT)]) $(OBJECT_KEY)_ATTR_$(SKEY)
144        ENDIF
145ENDFOR
146P #define $(OBJECT_KEY)_ATTR_BYTES(a,b)$6( (a+b) | 0x5000000 )
147
148P $n$ntypedef enum Attributes_Header_List {
149FOR $(STRUCT)
150        IF $(JOINED)
151        ELSEIF $(SKEY)
152                P $1$(OBJECT_KEY)_$(SKEY)$5=$6$(SKEYC)*0x10000,
153        ENDIF
154ENDFOR
155P       $1$(OBJECT_KEY)_MAX$5=$6$(MAX_OBJECT)*0x10000,
156P       $1$(OBJECT_KEY)_INDEX$5=$60x1ff0000
157P       } Aisc_Objekt_Type;$n$n
158
159CREATE $(A)
160CREATE $(add) 0
161CREATE $(str) 0
162CREATE $(skey) 0
163CREATE $(struct) 0
164CREATE $(com)
165        FOR $(STRUCT)
166                IF $(SKEY)
167                        PUSH
168                        IF $(JOINED)
169                        ELSE
170                                P       /************$2$(SKEY)$4*************/
171                                P       typedef enum {
172                        ENDIF
173                        SET $(skey) $(SKEY)
174                        SET $(struct) $(STRUCT)
175                        CALL struct_attr,0,$1$(SKEY)_,/*
176                        IF $(JOIN_NEXT)
177                        ELSE
178                                P $1$(SKEY)_LASTATTR$4= 0
179                                P } $(OBJECT_KEY)_$(SKEY)_Attribute;$n
180                        ENDIF
181                        POP
182                ENDIF
183        ENDFOR
184CLOSE save
185
186EXIT
187
188FUNCTION struct_attr,a,s,c
189        FOR $({/TYPE)
190                IF $(KEY)
191                        IF $(TYPE) = dllh
192                                P $(s)PRED$4= $\
193                                P $(my_attribute[$(struct)])$\
194                                P $6($(OBJECT_KEY)_$(skey),$8$(+ $(a)+$(KEYC))),$9/* DO */
195                                P $(s)NEXT$4= $\
196                                P $(my_attribute[$(struct)])$\
197                                P $6($(OBJECT_KEY)_$(skey),$8$(+ 1+$(+ $(a)+$(KEYC)))),$9$(c) */
198
199                                SET $(add) $(+ $(a)+$(KEYC))
200                                SET $(add) $(+ 2+$(add))
201                                SET $(str) $(s)$(KEY)
202                                PUSH
203                                MOVETO $(/AISC/DATA/STRUCT.dll_header)
204                                CALL struct_attr,$(add),$(str),$(c) H
205                                POP
206
207                        ELSEIF $(REF) ~ s
208                                SET $(add) $(+ $(a),$(KEYC))
209                                SET $(str) $(s)$(KEY)
210                                SET $(com) $(c) S
211                                PUSH
212                                MOVETO $(/AISC/DATA/STRUCT.$(TYPE))
213                                CALL struct_attr,$(add),$(str),$(com)
214                                POP
215                        ELSE
216                                IF $(REF) ~ d
217                                        SET $(com) $(c) DL
218                                ELSEIF $(REF) ~ v
219                                        SET $(com) $(c) [$(SIZE)]
220                                ELSEIF $(REF) ~ *
221                                        SET $(com) $(c) []
222                                ELSEIF $(TYPE) = func
223                                        SET $(com) $(c) FUNC
224                                ELSE
225                                        SET $(com) $(c)
226                                ENDIF
227                                IF $(my_attribute[$(TYPE)])
228                                        P $(s)$(KEY)$4= $\
229                                        P $(my_attribute[$(TYPE)])$\
230                                        P $6($(OBJECT_KEY)_$(skey),$8$(+ $(a)+$(KEYC))),$9$(com) */
231                                ELSE
232                                        ERROR TYPE $(TYPE) unknown, no key build
233                                ENDIF
234                                IF $(REF) ~ d
235                                        P $(s)$(KEY)_CNT$4= $\
236                                        P $(my_attribute[int])$\
237                                        P $6($(OBJECT_KEY)_$(skey),$8$(+ 1,$(+ $(a)+$(KEYC)))),$9$(com) */
238                                ENDIF
239                        ENDIF
240                ENDIF
241        ENDFOR
242RETURN
Note: See TracBrowser for help on using the repository browser.