25 lines
		
	
	
		
			681 B
		
	
	
	
		
			Factor
		
	
	
		
		
			
		
	
	
			25 lines
		
	
	
		
			681 B
		
	
	
	
		
			Factor
		
	
	
|  | ! Copyright (C) 2009 Slava Pestov. | ||
|  | ! See http://factorcode.org/license.txt for BSD license. | ||
|  | USING: kernel namespaces assocs accessors words sequences classes.tuple ;
 | ||
|  | IN: smalltalk.classes | ||
|  | 
 | ||
|  | SYMBOL: classes | ||
|  | 
 | ||
|  | classes [ H{ } clone ] initialize
 | ||
|  | 
 | ||
|  | : create-class ( class -- class )
 | ||
|  |     "smalltalk.classes" create ;
 | ||
|  | 
 | ||
|  | ERROR: no-class name ;
 | ||
|  | 
 | ||
|  | : lookup-class ( class -- class )
 | ||
|  |     classes get ?at [ ] [ no-class ] if ;
 | ||
|  | 
 | ||
|  | : define-class ( class superclass ivars -- class-word )
 | ||
|  |     [ create-class ] [ lookup-class ] [ ] tri*
 | ||
|  |     [ define-tuple-class ] [ 2drop dup dup name>> classes get set-at ] 3bi ;
 | ||
|  | 
 | ||
|  | : define-foreign ( class name -- )
 | ||
|  |     classes get set-at ;
 | ||
|  | 
 | ||
|  | tuple "Object" define-foreign |