39 lines
		
	
	
		
			957 B
		
	
	
	
		
			Factor
		
	
	
		
		
			
		
	
	
			39 lines
		
	
	
		
			957 B
		
	
	
	
		
			Factor
		
	
	
|  | ! Copyright (C) 2007 Slava Pestov. | ||
|  | ! See http://factorcode.org/license.txt for BSD license. | ||
|  | USING: alien arrays alien.c-types alien.structs | ||
|  | sequences math kernel generator.registers | ||
|  | namespaces libc ;
 | ||
|  | IN: alien.arrays | ||
|  | 
 | ||
|  | UNION: value-type array struct-type ;
 | ||
|  | 
 | ||
|  | M: array c-type ;
 | ||
|  | 
 | ||
|  | M: array heap-size unclip heap-size [ * ] reduce ;
 | ||
|  | 
 | ||
|  | M: array c-type-align first c-type c-type-align ;
 | ||
|  | 
 | ||
|  | M: array c-type-stack-align? drop f ;
 | ||
|  | 
 | ||
|  | M: array unbox-parameter drop "void*" unbox-parameter ;
 | ||
|  | 
 | ||
|  | M: array unbox-return drop "void*" unbox-return ;
 | ||
|  | 
 | ||
|  | M: array box-parameter drop "void*" box-parameter ;
 | ||
|  | 
 | ||
|  | M: array box-return drop "void*" box-return ;
 | ||
|  | 
 | ||
|  | M: array stack-size drop "void*" stack-size ;
 | ||
|  | 
 | ||
|  | M: value-type c-type-reg-class drop T{ int-regs } ;
 | ||
|  | 
 | ||
|  | M: value-type c-type-prep drop f ;
 | ||
|  | 
 | ||
|  | M: value-type c-type-getter | ||
|  |     drop [ swap <displaced-alien> ] ;
 | ||
|  | 
 | ||
|  | M: value-type c-type-setter ( type -- quot )
 | ||
|  |     [ | ||
|  |         dup c-type-getter % \ swap , heap-size , \ memcpy , | ||
|  |     ] [ ] make ;
 |