Mercurial > repos > rhope
comparison cbackend.rhope @ 62:b218af069da7
merge
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Sat, 10 Oct 2009 16:43:37 -0400 |
parents | 789a146a48e1 |
children | aabda74c7a88 |
comparison
equal
deleted
inserted
replaced
61:fa24ef3b026f | 62:b218af069da7 |
---|---|
152 array <- "" | 152 array <- "" |
153 } | 153 } |
154 }{ | 154 }{ |
155 typename <- "Array" | 155 typename <- "Array" |
156 } | 156 } |
157 primitive <- No | |
157 }{ | 158 }{ |
158 typename <- [type]Name >> | 159 ,regulartype <- [("Naked","Raw Pointer")]Find[variant] |
160 { | |
161 [("Int32","Int16","Int8")]Find[[type]Name >>] | |
162 { | |
163 primitive <- Yes | |
164 [[type]Name >>]Slice[3] {} | |
165 { typename <- [["int"]Append[~]]Append["_t"] } | |
166 }{ | |
167 ,regulartype <- [("UInt32","UInt16","UInt8")]Find[[type]Name >>] | |
168 { | |
169 primitive <- Yes | |
170 [[type]Name >>]Slice[4] {} | |
171 { typename <- [["uint"]Append[~]]Append["_t"] } | |
172 } | |
173 } | |
174 } | |
175 | |
176 Val[regulartype] | |
177 { | |
178 typename <- [type]Name >> | |
179 primitive <- No | |
180 } | |
159 } | 181 } |
160 }{ | 182 }{ |
161 typename <- type | 183 typename <- type |
162 param <- "Any Type" | 184 param <- "Any Type" |
163 variant <- "boxed" | 185 variant <- "boxed" |
186 primitive <- No | |
164 } | 187 } |
165 Val[typename] | 188 Val[typename] |
166 { array <- "" } | 189 { array <- "" } |
167 If[[typename] = ["Any Type"]] | 190 If[[typename] = ["Any Type"]] |
168 { | 191 { |
169 out <- "struct object *" | 192 out <- "struct object *" |
170 }{ | 193 }{ |
171 [("Naked","Raw Pointer")]Find[variant] | 194 [("Naked","Raw Pointer")]Find[variant] |
172 { | 195 { |
173 prefix <- "nt_" | 196 If[primitive] |
197 { | |
198 prefix <- "" | |
199 }{ | |
200 prefix <- "nt_" | |
201 } | |
174 }{ | 202 }{ |
175 prefix <- "t_" | 203 prefix <- "t_" |
176 } | 204 } |
177 | 205 |
178 If[[variant]=["Naked"]] | 206 If[[variant]=["Naked"]] |
180 postfix <- "" | 208 postfix <- "" |
181 }{ | 209 }{ |
182 postfix <- " *" | 210 postfix <- " *" |
183 } | 211 } |
184 } | 212 } |
185 out <- [[prefix]Append[Escape Rhope Name[typename]]]Append[postfix] | 213 If[primitive] |
214 { | |
215 escaped <- Val[typename] | |
216 }{ | |
217 escaped <- Escape Rhope Name[typename] | |
218 } | |
219 out <- [[prefix]Append[escaped]]Append[postfix] | |
186 } | 220 } |
187 | 221 |
188 _Type Def C Type[text,field:out] | 222 _Type Def C Type[text,field:out] |
189 { | 223 { |
190 name <- [field]Index[0] | 224 name <- [field]Index[0] |
480 | 514 |
481 Copy@C Function[func,pdest:out] | 515 Copy@C Function[func,pdest:out] |
482 { | 516 { |
483 dest <- [pdest]Make Op[func] | 517 dest <- [pdest]Make Op[func] |
484 out <- [func]Add Statement[ [dest]Append[[[" = copy_object("]Append[dest]]Append[")"]] ] | 518 out <- [func]Add Statement[ [dest]Append[[[" = copy_object("]Append[dest]]Append[")"]] ] |
519 } | |
520 | |
521 Box@C Function[func,pdest,psource,type:out] | |
522 { | |
523 dest <- [pdest]Make Op[func] | |
524 source <- [psource]Make Op[func] | |
525 out <- [func]Add Statement[ | |
526 [[[[[dest | |
527 ]Append[" = naked_to_boxed("] | |
528 ]Append[ [[func]Type Registry >>]Type ID[[type]Name >>] ] | |
529 ]Append[", &"] | |
530 ]Append[source] | |
531 ]Append[")"] ] | |
532 } | |
533 | |
534 Unbox@C Function[func,pdest,psource:out] | |
535 { | |
536 dest <- [pdest]Make Op[func] | |
537 source <- [psource]Make Op[func] | |
538 out <- [func]Add Statement[ | |
539 [[[["boxed_to_naked(" | |
540 ]Append[source] | |
541 ]Append[", &"] | |
542 ]Append[dest] | |
543 ]Append[")"] ] | |
485 } | 544 } |
486 | 545 |
487 _Function Arg C[func,val,inputnum:out] | 546 _Function Arg C[func,val,inputnum:out] |
488 { | 547 { |
489 out <- [func]Add Statement[ | 548 out <- [func]Add Statement[ |