]> gitweb.factorcode.org Git - factor.git/blob - core/classes/builtin/builtin.factor
change ERROR: words from throw-foo back to foo.
[factor.git] / core / classes / builtin / builtin.factor
1 ! Copyright (C) 2004, 2010 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: classes classes.algebra.private classes.private kernel
4 kernel.private make namespaces sequences words ;
5 IN: classes.builtin
6
7 SYMBOL: builtins
8
9 PREDICATE: builtin-class < class
10     "metaclass" word-prop builtin-class eq? ;
11
12 ERROR: not-a-builtin object ;
13
14 : check-builtin ( class -- )
15     dup builtin-class? [ drop ] [ not-a-builtin ] if ;
16
17 : class>type ( class -- n ) "type" word-prop ; foldable
18
19 : type>class ( n -- class ) builtins get-global nth ; foldable
20
21 : bootstrap-type>class ( n -- class ) builtins get nth ;
22
23 M: object class-of tag type>class ; inline
24
25 M: builtin-class rank-class drop 0 ;
26
27 M: builtin-class instance? [ tag ] [ class>type ] bi* eq? ;
28
29 M: builtin-class (flatten-class) dup ,, ;
30
31 M: builtin-class (classes-intersect?) eq? ;
32
33 : full-cover ( -- ) builtins get [ (flatten-class) ] each ;
34
35 M: anonymous-complement (flatten-class) drop full-cover ;