Subversion Repositories Kolibri OS

Rev

Rev 109 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 109 Rev 122
Line 86... Line 86...
86
    if ~ field eq .
86
    if ~ field eq .
87
     name#field type def
87
     name#field type def
88
     sizeof.#name#field = $ - name#field
88
     sizeof.#name#field = $ - name#field
89
    else
89
    else
90
     label name#.#type
90
     rb sizeof.#type
91
     rb sizeof.#type
-
 
92
    end if
91
    end if
93
    local value
92
    local value
94
    match any, list \{ list equ list, \}
93
    match any, list \{ list equ list, \}
95
    list equ list 
94
    list equ list 
96
   common
95
   common
Line 126... Line 125...
126
enable@substruct
125
enable@substruct
Line 127... Line 126...
127
 
126
 
128
macro define@union parent,name,[field,type,def]
127
macro define@union parent,name,[field,type,def]
129
 { common
128
 { common
130
    virtual at parent#.#name
129
    virtual at 0
131
   forward
130
   forward
132
    if ~ field eq .
131
    if ~ field eq .
133
     virtual at parent#.#name
132
     virtual at 0
134
      parent#field type def
133
      parent#field type def
135
      sizeof.#parent#field = $ - parent#field
134
      sizeof.#parent#field = $ - parent#field
136
     end virtual
135
     end virtual
137
     if sizeof.#parent#field > $ - parent#.#name
136
     if sizeof.#parent#field > $
138
      rb sizeof.#parent#field - ($ - parent#.#name)
-
 
139
     end if
-
 
140
    else
-
 
141
     label name#.#type at parent#.#name
-
 
142
     if sizeof.#type > $ - parent#.#name
-
 
143
      rb sizeof.#type - ($ - parent#.#name)
137
      rb sizeof.#parent#field - $
-
 
138
     end if
-
 
139
    else if sizeof.#type > $
144
     end if
140
     rb sizeof.#type - $
145
    end if
141
    end if
146
   common
142
   common
147
    sizeof.#name = $ - parent#.#name
143
    sizeof.#name = $
148
    end virtual
144
    end virtual
149
    struc name [value] \{ \common
145
    struc name [value] \{ \common
150
    label .\#name
146
    label .\#name
151
    last@union equ
147
    last@union equ
Line 159... Line 155...
159
   common rb sizeof.#name - ($ - .\#name) \} }
155
   common rb sizeof.#name - ($ - .\#name) \} }
160
 
156
 
Line 161... Line 157...
161
macro define@substruct parent,name,[field,type,def]
157
macro define@substruct parent,name,[field,type,def]
162
 { common
158
 { common
163
    virtual at parent#.#name
159
    virtual at 0
164
   forward
160
   forward
165
    if ~ field eq .
161
    if ~ field eq .
166
     parent#field type def
162
     parent#field type def
167
     sizeof.#parent#field = $ - parent#field
163
     sizeof.#parent#field = $ - parent#field
168
    else
164
    else
169
     label name#.#type
-
 
170
     rb sizeof.#type
165
     rb sizeof.#type
171
    end if
166
    end if
-
 
167
    local value
172
   common
168
   common
173
    sizeof.#name = $ - parent#.#name
169
    sizeof.#name = $
174
    end virtual
170
    end virtual
175
    struc name value \{
171
    struc name value \{
176
    label .\#name
172
    label .\#name
177
   forward
173
   forward
178
     match , value \\{ field type def \\}
174
     match , value \\{ field type def \\}