factor/library/generic/builtin.factor

47 lines
1.2 KiB
Factor
Raw Normal View History

2005-02-18 20:37:01 -05:00
! Copyright (C) 2004, 2005 Slava Pestov.
! See http://factor.sf.net/license.txt for BSD license.
IN: generic
USING: errors hashtables kernel lists math namespaces parser
sequences strings vectors words ;
! Builtin metaclass for builtin types: fixnum, word, cons, etc.
SYMBOL: builtin
! Global vector mapping type numbers to builtin class objects.
SYMBOL: builtins
builtin [
"builtin-type" word-prop unit
] "builtin-supertypes" set-word-prop
builtin [
( generic vtable definition class -- )
rot set-vtable drop
] "add-method" set-word-prop
2005-07-28 18:20:31 -04:00
: builtin-predicate ( class predicate -- )
[
\ type , over "builtin-type" word-prop , \ eq? ,
] make-list define-predicate ;
: register-builtin ( class -- )
dup "builtin-type" word-prop builtins get set-nth ;
: define-builtin ( symbol type# predicate slotspec -- )
>r >r >r
dup intern-symbol
dup r> "builtin-type" set-word-prop
dup builtin define-class
2005-07-28 18:20:31 -04:00
dup r> builtin-predicate
dup r> intern-slots 2dup "slots" set-word-prop
define-slots
register-builtin ;
: builtin-type ( n -- symbol ) builtins get nth ;
PREDICATE: word builtin metaclass builtin = ;
: type-tag ( type -- tag )
#! Given a type number, return the tag number.
dup 6 > [ drop 3 ] when ;