]> gitweb.factorcode.org Git - factor.git/commitdiff
classes.builtin: Add the BUILTIN: keyword which lets builtin classes show up in sourc...
authorDoug Coleman <doug.coleman@gmail.com>
Sun, 10 Mar 2013 19:04:34 +0000 (12:04 -0700)
committerDoug Coleman <doug.coleman@gmail.com>
Sun, 10 Mar 2013 19:05:38 +0000 (12:05 -0700)
13 files changed:
basis/see/see.factor
core/alien/alien.factor
core/arrays/arrays.factor
core/bootstrap/syntax.factor
core/byte-arrays/byte-arrays.factor
core/classes/builtin/builtin.factor
core/classes/tuple/parser/parser.factor
core/kernel/kernel.factor
core/math/math.factor
core/quotations/quotations.factor
core/strings/strings.factor
core/syntax/syntax.factor
core/words/words.factor

index b022c244bab904c825010c2807638cb57ad1ca49..7450d827fea524bbfb7e885667aed6c4b6048971 100644 (file)
@@ -204,9 +204,8 @@ M: tuple-class see-class*
 M: word see-class* drop ;
 
 M: builtin-class see-class*
-    "! Built-in class" comment.
     <block
-    \ PRIMITIVE: pprint-word
+    \ BUILTIN: pprint-word
     [ pprint-word ]
     [ <block "slots" word-prop [ pprint-slot ] each pprint-; block> ] bi
     block> ;
index 64401816220a1f88fe90bae3c6d763c91e7fc01c..43617f451e4eaf6d0b51cfd9dbedf628aba23988 100755 (executable)
@@ -4,6 +4,9 @@ USING: accessors byte-arrays byte-vectors continuations.private
 init kernel kernel.private math namespaces sequences ;
 IN: alien
 
+BUILTIN: alien { underlying c-ptr read-only initial: f } expired ;
+BUILTIN: dll { path byte-array read-only initial: B{ } } ;
+
 PREDICATE: pinned-alien < alien underlying>> not ;
 
 UNION: pinned-c-ptr pinned-alien POSTPONE: f ;
index 085a6a582be3e48a0cdf8d0b4faa6b10e219b3af..384f0af67817e43d6e3ef0ae9107de93019b5e12 100644 (file)
@@ -3,6 +3,8 @@
 USING: accessors kernel math sequences sequences.private ;
 IN: arrays
 
+BUILTIN: array { length array-capacity read-only initial: 0 } ;
+
 M: array clone (clone) ; inline
 M: array length length>> ; inline
 M: array nth-unsafe [ integer>fixnum ] dip array-nth ; inline
index d63d74e2a6f50513e7192d3bfd62033ea807b299..651beae2347234f16fba90400197c150325352c9 100644 (file)
@@ -42,6 +42,7 @@ IN: bootstrap.syntax
         "SBUF\""
         "SINGLETON:"
         "SINGLETONS:"
+        "BUILTIN:"
         "SYMBOL:"
         "SYMBOLS:"
         "CONSTANT:"
index d4d2d95cf2a7f188a183d6bdcdcd7629f99f6a80..85bf0c45dafffb337b2badcdbc8dc55c74a4772e 100644 (file)
@@ -4,6 +4,9 @@ USING: accessors alien.accessors kernel math sequences
 sequences.private ;
 IN: byte-arrays
 
+BUILTIN: byte-array
+{ length array-capacity read-only initial: 0 } ;
+
 M: byte-array clone (clone) ; inline
 M: byte-array length length>> ; inline
 M: byte-array nth-unsafe swap integer>fixnum alien-unsigned-1 ; inline
index ad07e007563b8e6ab690b3c075914d90548bb404..72178f62f2728bf4072c956e81a41e692098ea25 100644 (file)
@@ -9,6 +9,11 @@ SYMBOL: builtins
 PREDICATE: builtin-class < class
     "metaclass" word-prop builtin-class eq? ;
 
+ERROR: not-a-builtin object ;
+
+: check-builtin ( class -- )
+    dup builtin-class? [ drop ] [ not-a-builtin ] if ;
+
 : class>type ( class -- n ) "type" word-prop ; foldable
 
 : type>class ( n -- class ) builtins get-global nth ; foldable
index 3ecf70a84d6111b47bd3596a3988560376283eda..8f523635e0db0e7d41684ce28c56b8d4158adfab 100644 (file)
@@ -54,8 +54,7 @@ ERROR: invalid-slot-name name ;
 : parse-tuple-slots ( -- )
     ";" parse-tuple-slots-delim ;
 
-: parse-tuple-definition ( -- class superclass slots )
-    scan-new-class
+: (parse-tuple-definition) ( word -- class superclass slots )
     scan-token {
         { ";" [ tuple f ] }
         { "<" [ scan-word [ parse-tuple-slots ] { } make ] }
@@ -64,6 +63,10 @@ ERROR: invalid-slot-name name ;
     dup check-duplicate-slots
     3dup check-slot-shadowing ;
 
+: parse-tuple-definition ( -- class superclass slots )
+    scan-new-class (parse-tuple-definition) ;
+
+
 ERROR: bad-literal-tuple ;
 
 ERROR: bad-slot-name class slot ;
index 710a89985641e53137548783ed519fda968af3e1..01e3e5929d5df83b6317a2f78a8f6535b0a84a03 100644 (file)
@@ -3,6 +3,10 @@
 USING: kernel.private slots.private math.private ;
 IN: kernel
 
+BUILTIN: callstack ;
+BUILTIN: tuple ;
+BUILTIN: wrapper { wrapped read-only } ;
+
 DEFER: dip
 DEFER: 2dip
 DEFER: 3dip
index b7ef811d3aad9d4e09e79e8ccb7517b87cbf0d5a..fa81ce3e2a0f78f70f189eb7fe24121038b1d498 100644 (file)
@@ -3,6 +3,10 @@
 USING: kernel ;
 IN: math
 
+BUILTIN: fixnum ;
+BUILTIN: bignum ;
+BUILTIN: float ;
+
 GENERIC: >fixnum ( x -- n ) foldable
 GENERIC: >bignum ( x -- n ) foldable
 GENERIC: >integer ( x -- n ) foldable
index 7e7a77d4e1f1abe7873b24a0626869cc3625ee39..2c59f3f41ae4cc783143d697aade580081b0b440 100644 (file)
@@ -4,6 +4,11 @@ USING: accessors arrays kernel kernel.private math sequences
 sequences.private slots.private ;
 IN: quotations
 
+BUILTIN: quotation
+    { array array read-only initial: { } }
+    cached-effect
+    cache-counter ;
+
 <PRIVATE
 
 : uncurry ( curry -- obj quot )
index 83a44d0f14c2cd1e021d0ae3b14873cf1a89d151..285eb34edfba131a09723641cc15bf0ebe146677 100644 (file)
@@ -5,6 +5,8 @@ kernel.private math math.private sequences sequences.private
 slots.private ;
 IN: strings
 
+BUILTIN: string { length array-capacity read-only initial: 0 } aux ;
+
 <PRIVATE
 
 : string-hashcode ( str -- n ) 3 slot ; inline
index 78a14f68fca251e21dcee7352cf3cd6410f33d3b..0eaece8a9d34500ec1a9c3770b74f62930d22eea 100644 (file)
@@ -1,8 +1,8 @@
 ! Copyright (C) 2004, 2010 Slava Pestov.
 ! See http://factorcode.org/license.txt for BSD license.
 USING: accessors arrays byte-arrays byte-vectors
-classes.algebra.private classes.intersection classes.maybe
-classes.mixin classes.parser classes.predicate
+classes.algebra.private classes.builtin classes.intersection
+classes.maybe classes.mixin classes.parser classes.predicate
 classes.singleton classes.tuple classes.tuple.parser
 classes.union combinators compiler.units definitions
 effects.parser generic generic.hook generic.math generic.parser
@@ -116,6 +116,12 @@ IN: bootstrap.syntax
         scan-new-word parse-definition define-syntax
     ] define-core-syntax
 
+    "BUILTIN:" [
+        scan-word-name
+        current-vocab lookup-word
+        (parse-tuple-definition) 2drop check-builtin
+    ] define-core-syntax
+
     "SYMBOL:" [
         scan-new-word define-symbol
     ] define-core-syntax
index c17f2657537ed6066f7ea0ae1053f225008b00c4..aaeb35659115fd5afd2bff7835eb92adfa693452 100644 (file)
@@ -6,6 +6,11 @@ slots.private strings vocabs ;
 FROM: assocs => change-at ;
 IN: words
 
+BUILTIN: word
+{ hashcode fixnum initial: 0 } name vocabulary
+{ def quotation initial: [ ] } props pic-def pic-tail-def
+{ sub-primitive read-only } ;
+
 : word ( -- word ) \ word get-global ;
 
 : set-word ( word -- ) \ word set-global ;