support { type dimension } c-type syntax in STRUCT: definitions
							parent
							
								
									c3002ed0f0
								
							
						
					
					
						commit
						80a5bf7138
					
				| 
						 | 
				
			
			@ -1,7 +1,7 @@
 | 
			
		|||
! (c)Joe Groff bsd license
 | 
			
		||||
USING: accessors assocs classes classes.struct combinators
 | 
			
		||||
kernel math prettyprint.backend prettyprint.custom
 | 
			
		||||
prettyprint.sections see.private sequences words ;
 | 
			
		||||
prettyprint.sections see.private sequences strings words ;
 | 
			
		||||
IN: classes.struct.prettyprint
 | 
			
		||||
 | 
			
		||||
<PRIVATE
 | 
			
		||||
| 
						 | 
				
			
			@ -18,7 +18,7 @@ IN: classes.struct.prettyprint
 | 
			
		|||
    <flow \ { pprint-word
 | 
			
		||||
    {
 | 
			
		||||
        [ name>> text ]
 | 
			
		||||
        [ c-type>> text ]
 | 
			
		||||
        [ c-type>> dup string? [ text ] [ pprint* ] if ]
 | 
			
		||||
        [ read-only>> [ \ read-only pprint-word ] when ]
 | 
			
		||||
        [ initial>> [ \ initial: pprint-word pprint* ] when* ]
 | 
			
		||||
    } cleave
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -187,7 +187,7 @@ STRUCT: struct-test-array-slots
 | 
			
		|||
] unit-test
 | 
			
		||||
 | 
			
		||||
STRUCT: struct-test-optimization
 | 
			
		||||
    { x int[3] } { y int } ;
 | 
			
		||||
    { x { "int" 3 } } { y int } ;
 | 
			
		||||
 | 
			
		||||
[ t ] [ [ struct-test-optimization memory>struct y>> ] { memory>struct y>> } inlined? ] unit-test
 | 
			
		||||
[ t ] [
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -232,10 +232,13 @@ ERROR: invalid-struct-slot token ;
 | 
			
		|||
    c-type c-type-boxed-class
 | 
			
		||||
    dup \ byte-array = [ drop \ c-ptr ] when ;
 | 
			
		||||
 | 
			
		||||
: scan-c-type ( -- c-type )
 | 
			
		||||
    scan dup "{" = [ drop \ } parse-until >array ] when ;
 | 
			
		||||
 | 
			
		||||
: parse-struct-slot ( -- slot )
 | 
			
		||||
    struct-slot-spec new
 | 
			
		||||
    scan >>name
 | 
			
		||||
    scan [ >>c-type ] [ struct-slot-class >>class ] bi
 | 
			
		||||
    scan-c-type [ >>c-type ] [ struct-slot-class >>class ] bi
 | 
			
		||||
    \ } parse-until [ dup empty? ] [ peel-off-attributes ] until drop ;
 | 
			
		||||
    
 | 
			
		||||
: parse-struct-slots ( slots -- slots' more? )
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue