factor/core/classes/builtin/builtin.factor

34 lines
857 B
Factor
Raw Normal View History

2008-04-03 22:19:20 -04:00
! Copyright (C) 2004, 2008 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
USING: classes words kernel kernel.private namespaces
2008-06-30 02:44:58 -04:00
sequences math math.private ;
2008-04-03 22:19:20 -04:00
IN: classes.builtin
SYMBOL: builtins
PREDICATE: builtin-class < class
"metaclass" word-prop builtin-class eq? ;
: type>class ( n -- class ) builtins get-global nth ;
: class>type ( class -- n ) "type" word-prop ; foldable
2008-04-03 22:19:20 -04:00
: bootstrap-type>class ( n -- class ) builtins get nth ;
M: hi-tag class hi-tag type>class ;
M: object class tag type>class ;
2008-05-02 03:51:38 -04:00
M: builtin-class rank-class drop 0 ;
: builtin-instance? ( object n -- ? )
#! 7 == tag-mask get
#! 3 == hi-tag tag-number
2008-06-30 02:44:58 -04:00
dup 7 fixnum<= [ swap tag eq? ] [
swap dup tag 3 eq?
[ hi-tag eq? ] [ 2drop f ] if
] if ; inline
M: builtin-class instance?
class>type builtin-instance? ;