]> gitweb.factorcode.org Git - factor.git/commitdiff
New slots are now in the core
authorSlava Pestov <slava@factorcode.org>
Thu, 20 Mar 2008 20:30:59 +0000 (15:30 -0500)
committerSlava Pestov <slava@factorcode.org>
Thu, 20 Mar 2008 20:30:59 +0000 (15:30 -0500)
49 files changed:
core/alien/structs/structs-docs.factor
core/alien/structs/structs.factor
core/bootstrap/primitives.factor
core/slots/deprecated/deprecated.factor [new file with mode: 0755]
core/slots/slots-docs.factor [changed mode: 0644->0755]
core/slots/slots.factor
core/tuples/tuples.factor
core/vocabs/vocabs.factor
extra/cairo/lib/lib.factor [changed mode: 0644->0755]
extra/cairo/png/png.factor [changed mode: 0644->0755]
extra/calendar/calendar.factor
extra/concurrency/distributed/distributed.factor
extra/db/db.factor
extra/db/postgresql/lib/lib.factor
extra/digraphs/digraphs.factor [changed mode: 0644->0755]
extra/help/help.factor
extra/help/markup/markup.factor
extra/http/http.factor
extra/http/server/actions/actions.factor
extra/http/server/auth/basic/basic.factor
extra/http/server/auth/login/login.factor
extra/http/server/auth/providers/assoc/assoc.factor
extra/http/server/auth/providers/db/db.factor
extra/http/server/auth/providers/providers.factor
extra/http/server/callbacks/callbacks.factor
extra/http/server/components/components-tests.factor
extra/http/server/components/components.factor
extra/http/server/db/db.factor
extra/http/server/server-tests.factor
extra/http/server/server.factor
extra/http/server/sessions/sessions.factor
extra/http/server/sessions/storage/assoc/assoc.factor
extra/http/server/sessions/storage/db/db.factor
extra/http/server/static/static.factor
extra/http/server/validators/validators.factor
extra/io/launcher/launcher.factor
extra/io/paths/paths.factor
extra/io/unix/launcher/launcher.factor
extra/io/windows/launcher/launcher.factor
extra/io/windows/nt/pipes/pipes.factor
extra/locals/locals.factor
extra/random/blum-blum-shub/blum-blum-shub.factor [changed mode: 0644->0755]
extra/random/dummy/dummy.factor [changed mode: 0644->0755]
extra/random/mersenne-twister/mersenne-twister.factor
extra/semantic-db/hierarchy/hierarchy.factor [changed mode: 0644->0755]
extra/semantic-db/semantic-db.factor [changed mode: 0644->0755]
extra/serialize/serialize.factor
extra/smtp/smtp.factor
extra/windows/com/syntax/syntax.factor [changed mode: 0644->0755]

index fe19f29766091f3c48a3a44e115569b26f0fdc94..6c7775de2bb289d3d6d23159ccaabd84ba23152a 100755 (executable)
@@ -1,6 +1,65 @@
 IN: alien.structs
 USING: alien.c-types strings help.markup help.syntax
-alien.syntax sequences io arrays ;
+alien.syntax sequences io arrays slots.deprecated
+kernel words slots assocs namespaces ;
+
+! Deprecated code
+: ($spec-reader-values) ( slot-spec class -- element )
+    dup ?word-name swap 2array
+    over slot-spec-name
+    rot slot-spec-type 2array 2array
+    [ { $instance } swap add ] assoc-map ;
+
+: $spec-reader-values ( slot-spec class -- )
+    ($spec-reader-values) $values ;
+
+: $spec-reader-description ( slot-spec class -- )
+    [
+        "Outputs the value stored in the " ,
+        { $snippet } rot slot-spec-name add ,
+        " slot of " ,
+        { $instance } swap add ,
+        " instance." ,
+    ] { } make $description ;
+
+: $spec-reader ( reader slot-specs class -- )
+    >r slot-of-reader r>
+    over [
+        2dup $spec-reader-values
+        2dup $spec-reader-description
+    ] when 2drop ;
+
+GENERIC: slot-specs ( help-type -- specs )
+
+M: word slot-specs "slots" word-prop ;
+
+: $slot-reader ( reader -- )
+    first dup "reading" word-prop [ slot-specs ] keep
+    $spec-reader ;
+
+: $spec-writer-values ( slot-spec class -- )
+    ($spec-reader-values) reverse $values ;
+
+: $spec-writer-description ( slot-spec class -- )
+    [
+        "Stores a new value to the " ,
+        { $snippet } rot slot-spec-name add ,
+        " slot of " ,
+        { $instance } swap add ,
+        " instance." ,
+    ] { } make $description ;
+
+: $spec-writer ( writer slot-specs class -- )
+    >r slot-of-writer r>
+    over [
+        2dup $spec-writer-values
+        2dup $spec-writer-description
+        dup ?word-name 1array $side-effects
+    ] when 2drop ;
+
+: $slot-writer ( reader -- )
+    first dup "writing" word-prop [ slot-specs ] keep
+    $spec-writer ;
 
 M: string slot-specs c-type struct-type-fields ;
 
index aec09621cb325dc122f98ea191c4a9aa0570178d..e5de8ab83e7d0e20837a6f9b755a675e40840bc1 100755 (executable)
@@ -2,7 +2,7 @@
 ! See http://factorcode.org/license.txt for BSD license.
 USING: arrays generic hashtables kernel kernel.private math
 namespaces parser sequences strings words libc slots
-alien.c-types cpu.architecture ;
+slots.deprecated alien.c-types cpu.architecture ;
 IN: alien.structs
 
 : align-offset ( offset type -- offset )
index 354ea672ebe2c4dc3960a192d60a4b4d14e46d14..825ee05584aa6ee4bf82cd357f6aa4027299b745 100755 (executable)
@@ -1,12 +1,12 @@
 ! Copyright (C) 2004, 2008 Slava Pestov.
 ! See http://factorcode.org/license.txt for BSD license.
-IN: bootstrap.primitives
 USING: alien arrays byte-arrays generic hashtables
 hashtables.private io kernel math namespaces parser sequences
 strings vectors words quotations assocs layouts classes tuples
 kernel.private vocabs vocabs.loader source-files definitions
-slots classes.union compiler.units bootstrap.image.private
-io.files ;
+slots.deprecated classes.union compiler.units
+bootstrap.image.private io.files ;
+IN: bootstrap.primitives
 
 "Creating primitives and basic runtime structures..." print flush
 
@@ -32,6 +32,9 @@ H{ } clone dictionary set
 H{ } clone changed-words set
 H{ } clone root-cache set
 
+! Vocabulary for slot accessors
+"accessors" create-vocab drop
+
 ! Trivial recompile hook. We don't want to touch the code heap
 ! during stage1 bootstrap, it would just waste time.
 [ drop { } ] recompile-hook set
diff --git a/core/slots/deprecated/deprecated.factor b/core/slots/deprecated/deprecated.factor
new file mode 100755 (executable)
index 0000000..cc93aee
--- /dev/null
@@ -0,0 +1,95 @@
+! Copyright (C) 2005, 2008 Slava Pestov.\r
+! See http://factorcode.org/license.txt for BSD license.\r
+USING: arrays kernel kernel.private math namespaces\r
+sequences strings words effects generic generic.standard\r
+classes slots.private combinators slots ;\r
+IN: slots.deprecated\r
+\r
+: reader-effect ( class spec -- effect )\r
+    >r ?word-name 1array r> slot-spec-name 1array <effect> ;\r
+\r
+PREDICATE: word slot-reader "reading" word-prop >boolean ;\r
+\r
+: set-reader-props ( class spec -- )\r
+    2dup reader-effect\r
+    over slot-spec-reader\r
+    swap "declared-effect" set-word-prop\r
+    slot-spec-reader swap "reading" set-word-prop ;\r
+\r
+: define-reader ( class spec -- )\r
+    dup slot-spec-reader [\r
+        [ set-reader-props ] 2keep\r
+        dup slot-spec-offset\r
+        over slot-spec-reader\r
+        rot slot-spec-type reader-quot\r
+        define-slot-word\r
+    ] [\r
+        2drop\r
+    ] if ;\r
+\r
+: writer-effect ( class spec -- effect )\r
+    slot-spec-name swap ?word-name 2array 0 <effect> ;\r
+\r
+PREDICATE: word slot-writer "writing" word-prop >boolean ;\r
+\r
+: set-writer-props ( class spec -- )\r
+    2dup writer-effect\r
+    over slot-spec-writer\r
+    swap "declared-effect" set-word-prop\r
+    slot-spec-writer swap "writing" set-word-prop ;\r
+\r
+: define-writer ( class spec -- )\r
+    dup slot-spec-writer [\r
+        [ set-writer-props ] 2keep\r
+        dup slot-spec-offset\r
+        swap slot-spec-writer\r
+        [ set-slot ]\r
+        define-slot-word\r
+    ] [\r
+        2drop\r
+    ] if ;\r
+\r
+: define-slot ( class spec -- )\r
+    2dup define-reader define-writer ;\r
+\r
+: define-slots ( class specs -- )\r
+    [ define-slot ] with each ;\r
+\r
+: reader-word ( class name vocab -- word )\r
+    >r >r "-" r> 3append r> create ;\r
+\r
+: writer-word ( class name vocab -- word )\r
+    >r [ swap "set-" % % "-" % % ] "" make r> create ;\r
+\r
+: (simple-slot-word) ( class name -- class name vocab )\r
+    over word-vocabulary >r >r word-name r> r> ;\r
+\r
+: simple-reader-word ( class name -- word )\r
+    (simple-slot-word) reader-word ;\r
+\r
+: simple-writer-word ( class name -- word )\r
+    (simple-slot-word) writer-word ;\r
+\r
+: short-slot ( class name # -- spec )\r
+    >r object bootstrap-word over r> f f <slot-spec>\r
+    2over simple-reader-word over set-slot-spec-reader\r
+    -rot simple-writer-word over set-slot-spec-writer ;\r
+\r
+: long-slot ( spec # -- spec )\r
+    >r [ dup array? [ first2 create ] when ] map first4 r>\r
+    -rot <slot-spec> ;\r
+\r
+: simple-slots ( class slots base -- specs )\r
+    over length [ + ] with map [\r
+        {\r
+            { [ over not ] [ 2drop f ] }\r
+            { [ over string? ] [ >r dupd r> short-slot ] }\r
+            { [ over array? ] [ long-slot ] }\r
+        } cond\r
+    ] 2map [ ] subset nip ;\r
+\r
+: slot-of-reader ( reader specs -- spec/f )\r
+    [ slot-spec-reader eq? ] with find nip ;\r
+\r
+: slot-of-writer ( writer specs -- spec/f )\r
+    [ slot-spec-writer eq? ] with find nip ;\r
old mode 100644 (file)
new mode 100755 (executable)
index d57c405..8a1fb16
@@ -12,15 +12,11 @@ $nl
 "The " { $snippet "\"slots\"" } " word property of built-in and tuple classes holds an array of " { $emphasis "slot specifiers" } " describing the slot layout of each instance."
 { $subsection slot-spec }
 "Each slot has a reader word; mutable slots have an optional writer word. All tuple slots are mutable, but some slots on built-in classes are not."
-{ $subsection slot-spec-reader }
-{ $subsection slot-spec-writer }
-"Given a reader or writer word and a class, it is possible to find the slot specifier corresponding to this word:"
-{ $subsection slot-of-reader }
-{ $subsection slot-of-writer }
-"Reader and writer words form classes:"
-{ $subsection slot-reader }
-{ $subsection slot-writer }
-"Slot readers and writers type check, then call unsafe primitives:"
+{ $subsection reader-word }
+{ $subsection writer-word }
+{ $subsection setter-word }
+{ $subsection changer-word }
+"Slot methods type check, then call unsafe primitives:"
 { $subsection slot }
 { $subsection set-slot } ;
 
@@ -59,17 +55,7 @@ $low-level-note ;
 
 HELP: reader-effect
 { $values { "class" class } { "spec" slot-spec } { "effect" "an instance of " { $link effect } } }
-{ $description "The stack effect of slot reader words is " { $snippet "( obj -- value )" } "." } ;
-
-HELP: reader-quot
-{ $values { "decl" class } { "quot" "a quotation with stack effect " { $snippet "( obj n -- value )" } } }
-{ $description "Outputs a quotation which reads the " { $snippet "n" } "th slot of an object and declares it as an instance of a class." } ;
-
-HELP: slot-reader
-{ $class-description "The class of slot reader words." }
-{ $examples
-    { $example "USING: classes prettyprint slots ;" "TUPLE: circle center radius ;" "\\ circle-center slot-reader? ." "t" }
-} ;
+{ $description "The stack effect of slot reader words is " { $snippet "( object -- value )" } "." } ;
 
 HELP: define-reader
 { $values { "class" class } { "spec" slot-spec } }
@@ -80,32 +66,21 @@ HELP: writer-effect
 { $values { "class" class } { "spec" slot-spec } { "effect" "an instance of " { $link effect } } }
 { $description "The stack effect of slot writer words is " { $snippet "( value obj -- )" } "." } ;
 
-HELP: slot-writer
-{ $class-description "The class of slot writer words." }
-{ $examples
-    { $example "USING: classes prettyprint slots ;" "TUPLE: circle center radius ;" "\\ set-circle-center slot-writer? ." "t" }
-} ;
-
 HELP: define-writer
 { $values { "class" class } { "spec" slot-spec } }
 { $description "Defines a generic word " { $snippet "writer" } " to write a new value to a slot in instances of " { $snippet "class" } "." }
 $low-level-note ;
 
-HELP: define-slot
+HELP: define-slot-methods
 { $values { "class" class } { "spec" slot-spec } }
 { $description "Defines a pair of generic words for reading and writing a slot value in instances of " { $snippet "class" } "." }
 $low-level-note ;
 
-HELP: define-slots
+HELP: define-accessors
 { $values { "class" class } { "specs" "a sequence of " { $link slot-spec } " instances" } }
-{ $description "Defines a set of slot reader/writer words." }
+{ $description "Defines slot methods." }
 $low-level-note ;
 
-HELP: simple-slots
-{ $values { "class" class } { "slots" "a sequence of strings" } { "base" "a slot number" } { "specs" "a sequence of " { $link slot-spec } " instances" } }
-{ $description "Constructs a slot specification for " { $link define-slots } " where each slot is named by an element of " { $snippet "slots" } " prefixed by the name of the class. Slots are numbered consecutively starting from " { $snippet "base" } ". Reader and writer words are defined in the current vocabulary, with the reader word having the same name as the slot, and the writer word name prefixed by " { $snippet "\"set-\"" } "." }
-{ $notes "This word is used by " { $link define-tuple-class } " and " { $link POSTPONE: TUPLE: } "." } ;
-
 HELP: slot ( obj m -- value )
 { $values { "obj" object } { "m" "a non-negative fixnum" } { "value" object } }
 { $description "Reads the object stored at the " { $snippet "n" } "th slot of " { $snippet "obj" } "." }
@@ -116,18 +91,6 @@ HELP: set-slot ( value obj n -- )
 { $description "Writes " { $snippet "value" } " to the " { $snippet "n" } "th slot of " { $snippet "obj" } "." }
 { $warning "This word is in the " { $vocab-link "slots.private" } " vocabulary because it does not perform type or bounds checks, and slot numbers are implementation detail." } ;
 
-HELP: slot-of-reader
-{ $values { "reader" slot-reader } { "specs" "a sequence of " { $link slot-spec } " instances" } { "spec/f" "a " { $link slot-spec } " or " { $link f } } }
-{ $description "Outputs the " { $link slot-spec } " whose " { $link slot-spec-reader } " is equal to " { $snippet "reader" } "." } ;
-
-HELP: slot-of-writer
-{ $values { "writer" slot-writer } { "specs" "a sequence of " { $link slot-spec } " instances" } { "spec/f" "a " { $link slot-spec } " or " { $link f } } }
-{ $description "Outputs the " { $link slot-spec } " whose " { $link slot-spec-writer } " is equal to " { $snippet "writer" } "." } ;
-
-HELP: reader-word
-{ $values { "class" string } { "name" string } { "vocab" string } { "word" word } }
-{ $description "Creates a word named " { $snippet { $emphasis "class" } "-" { $emphasis "name" } } " in the " { $snippet "vocab" } " vocabulary." } ;
-
-HELP: writer-word
-{ $values { "class" string } { "name" string } { "vocab" string } { "word" word } }
-{ $description "Creates a word named " { $snippet "set-" { $emphasis "class" } "-" { $emphasis "name" } } " in the " { $snippet "vocab" } " vocabulary." } ;
+HELP: slot-named
+{ $values { "name" string } { "specs" "a sequence of " { $link slot-spec } " instances" } { "spec/f" "a " { $link slot-spec } " or " { $link f } } }
+{ $description "Outputs the " { $link slot-spec } " with the given name." } ;
index 7e9046573f5018d26907b24a323fa7f61e55e87f..025cf97420d7447ae54bccac75d2604a6df14dcd 100755 (executable)
@@ -16,9 +16,6 @@ C: <slot-spec> slot-spec
 : define-slot-word ( class slot word quot -- )
     rot >fixnum add* define-typecheck ;
 
-: reader-effect ( class spec -- effect )
-    >r ?word-name 1array r> slot-spec-name 1array <effect> ;
-
 : reader-quot ( decl -- quot )
     [
         \ slot ,
@@ -26,91 +23,62 @@ C: <slot-spec> slot-spec
         [ drop ] [ 1array , \ declare , ] if
     ] [ ] make ;
 
-PREDICATE: word slot-reader "reading" word-prop >boolean ;
-
-: set-reader-props ( class spec -- )
-    2dup reader-effect
-    over slot-spec-reader
-    swap "declared-effect" set-word-prop
-    slot-spec-reader swap "reading" set-word-prop ;
-
-: define-reader ( class spec -- )
-    dup slot-spec-reader [
-        [ set-reader-props ] 2keep
-        dup slot-spec-offset
-        over slot-spec-reader
-        rot slot-spec-type reader-quot
-        define-slot-word
-    ] [
-        2drop
-    ] if ;
-
-: writer-effect ( class spec -- effect )
-    slot-spec-name swap ?word-name 2array 0 <effect> ;
-
-PREDICATE: word slot-writer "writing" word-prop >boolean ;
-
-: set-writer-props ( class spec -- )
-    2dup writer-effect
-    over slot-spec-writer
-    swap "declared-effect" set-word-prop
-    slot-spec-writer swap "writing" set-word-prop ;
-
-: define-writer ( class spec -- )
-    dup slot-spec-writer [
-        [ set-writer-props ] 2keep
-        dup slot-spec-offset
-        swap slot-spec-writer
-        [ set-slot ]
-        define-slot-word
-    ] [
-        2drop
-    ] if ;
-
-: define-slot ( class spec -- )
-    2dup define-reader define-writer ;
-
-: define-slots ( class specs -- )
-    [ define-slot ] with each ;
-
-: reader-word ( class name vocab -- word )
-    >r >r "-" r> 3append r> create ;
-
-: writer-word ( class name vocab -- word )
-    >r [ swap "set-" % % "-" % % ] "" make r> create ;
-
-: (simple-slot-word) ( class name -- class name vocab )
-    over word-vocabulary >r >r word-name r> r> ;
-
-: simple-reader-word ( class name -- word )
-    (simple-slot-word) reader-word ;
-
-: simple-writer-word ( class name -- word )
-    (simple-slot-word) writer-word ;
-
-: short-slot ( class name # -- spec )
-    >r object bootstrap-word over r> f f <slot-spec>
-    2over simple-reader-word over set-slot-spec-reader
-    -rot simple-writer-word over set-slot-spec-writer ;
-
-: long-slot ( spec # -- spec )
-    >r [ dup array? [ first2 create ] when ] map first4 r>
-    -rot <slot-spec> ;
-
-: simple-slots ( class slots base -- specs )
-    over length [ + ] with map [
-        {
-            { [ over not ] [ 2drop f ] }
-            { [ over string? ] [ >r dupd r> short-slot ] }
-            { [ over array? ] [ long-slot ] }
-        } cond
-    ] 2map [ ] subset nip ;
-
-: slot-of-reader ( reader specs -- spec/f )
-    [ slot-spec-reader eq? ] with find nip ;
-
-: slot-of-writer ( writer specs -- spec/f )
-    [ slot-spec-writer eq? ] with find nip ;
-
 : slot-named ( string specs -- spec/f )
     [ slot-spec-name = ] with find nip ;
+
+: create-accessor ( name effect -- word )
+    >r "accessors" create dup r>
+    "declared-effect" set-word-prop ;
+
+: reader-effect T{ effect f { "object" } { "value" } } ; inline
+
+: reader-word ( name -- word )
+    ">>" append reader-effect create-accessor ;
+
+: define-reader ( class slot name -- )
+    reader-word object reader-quot define-slot-word ;
+
+: writer-effect T{ effect f { "value" "object" } { } } ; inline
+
+: writer-word ( name -- word )
+    "(>>" swap ")" 3append writer-effect create-accessor ;
+
+: define-writer ( class slot name -- )
+    writer-word [ set-slot ] define-slot-word ;
+
+: setter-effect T{ effect f { "object" "value" } { "value" } } ; inline
+
+: setter-word ( name -- word )
+    ">>" prepend setter-effect create-accessor ;
+
+: define-setter ( name -- )
+    dup setter-word dup deferred? [
+        [ \ over , swap writer-word , ] [ ] make define-inline
+    ] [ 2drop ] if ;
+
+: changer-effect T{ effect f { "object" "quot" } { "object" } } ; inline
+
+: changer-word ( name -- word )
+    "change-" prepend changer-effect create-accessor ;
+
+: define-changer ( name -- )
+    dup changer-word dup deferred? [
+        [
+            [ over >r >r ] %
+            over reader-word ,
+            [ r> call r> swap ] %
+            swap setter-word ,
+        ] [ ] make define-inline
+    ] [ 2drop ] if ;
+
+: define-slot-methods ( class slot name -- )
+    dup define-changer
+    dup define-setter
+    3dup define-reader
+    define-writer ;
+
+: define-accessors ( class specs -- )
+    [
+        dup slot-spec-offset swap slot-spec-name
+        define-slot-methods
+    ] with each ;
index e48a80365942a6bc8de5946087b1ad4d937357ff..d2d3d01c37ba126153109e94539158f0efd677b3 100755 (executable)
@@ -3,7 +3,8 @@
 USING: arrays definitions hashtables kernel
 kernel.private math namespaces sequences sequences.private
 strings vectors words quotations memory combinators generic
-classes classes.private slots slots.private compiler.units ;
+classes classes.private slots slots.deprecated slots.private
+compiler.units ;
 IN: tuples
 
 M: tuple delegate 3 slot ;
@@ -85,7 +86,8 @@ PRIVATE>
     dupd 4 simple-slots
     2dup [ slot-spec-name ] map "slot-names" set-word-prop
     2dup delegate-slot-spec add* "slots" set-word-prop
-    define-slots ;
+    2dup define-slots
+    define-accessors ;
 
 TUPLE: check-tuple class ;
 
index 807e08f73b08eeedc0e374cd7f257e18b4cffebe..cf7018b65202d61acdc01e926dafae7f9c493be7 100755 (executable)
@@ -7,8 +7,7 @@ IN: vocabs
 SYMBOL: dictionary
 
 TUPLE: vocab
-name root
-words
+name words
 main help
 source-loaded? docs-loaded? ;
 
old mode 100644 (file)
new mode 100755 (executable)
index 9e226ee..1b96997
@@ -1,7 +1,7 @@
 ! Copyright (C) 2008 Doug Coleman.
 ! See http://factorcode.org/license.txt for BSD license.
 USING: alien.c-types cairo.ffi continuations destructors
-kernel libc locals math combinators.cleave shuffle new-slots
+kernel libc locals math combinators.cleave shuffle
 accessors ;
 IN: cairo.lib
 
old mode 100644 (file)
new mode 100755 (executable)
index b9da140..55828cd
@@ -1,6 +1,6 @@
 ! Copyright (C) 2008 Doug Coleman.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: arrays combinators.cleave kernel new-slots
+USING: arrays combinators.cleave kernel
 accessors math ui.gadgets ui.render opengl.gl byte-arrays
 namespaces opengl cairo.ffi cairo.lib ;
 IN: cairo.png
index 7347363e5b5904ac6bd1d2f9a5031fdd2e061239..06425975d42663172182edf4ddc8546303fa5744 100755 (executable)
@@ -3,7 +3,7 @@
 
 USING: arrays kernel math math.functions namespaces sequences
 strings tuples system vocabs.loader calendar.backend threads
-new-slots accessors combinators locals ;
+accessors combinators locals ;
 IN: calendar
 
 TUPLE: timestamp year month day hour minute second gmt-offset ;
index c0787a96a2880575c95d397f7d09cbb370276ccc..c007e9f152d0ead5d78be07c390fae80e46bc9d0 100755 (executable)
@@ -3,7 +3,7 @@
 USING: serialize sequences concurrency.messaging
 threads io io.server qualified arrays
 namespaces kernel io.encodings.binary combinators.cleave
-new-slots accessors ;
+accessors ;
 QUALIFIED: io.sockets
 IN: concurrency.distributed
 
index ac46be4422eef06f9fd56cc19999f9136e2adc73..f9e946fc20b94eb41136430523771e72b1df1981 100755 (executable)
@@ -2,7 +2,7 @@
 ! See http://factorcode.org/license.txt for BSD license.
 USING: arrays assocs classes continuations kernel math
 namespaces sequences sequences.lib tuples words strings
-tools.walker new-slots accessors ;
+tools.walker accessors ;
 IN: db
 
 TUPLE: db
index 928b51dc59fe2489161f8e83e265eb500d30dd0e..270be886c5b8a41e19fcd618270e84b593cc4f1a 100755 (executable)
@@ -4,7 +4,7 @@ USING: arrays continuations db io kernel math namespaces
 quotations sequences db.postgresql.ffi alien alien.c-types
 db.types tools.walker ascii splitting math.parser
 combinators combinators.cleave libc shuffle calendar.format
-byte-arrays destructors prettyprint new-slots accessors
+byte-arrays destructors prettyprint accessors
 strings serialize io.encodings.binary io.streams.byte-array ;
 IN: db.postgresql.lib
 
old mode 100644 (file)
new mode 100755 (executable)
index 5c6fa9b..1776c91
@@ -1,6 +1,6 @@
 ! Copyright (C) 2008 Alex Chapman
 ! See http://factorcode.org/license.txt for BSD license.
-USING: accessors assocs kernel new-slots sequences vectors ;
+USING: accessors assocs kernel sequences vectors ;
 IN: digraphs
 
 TUPLE: digraph ;
index 4cb8cfe854623ac11df982ca006224ee54ebd925..9e4d02802b70d87f055c7729b014296a71ba4c53 100755 (executable)
@@ -25,10 +25,6 @@ GENERIC: word-help* ( word -- content )
 
 M: word word-help* drop f ;
 
-M: slot-reader word-help* drop \ $slot-reader ;
-
-M: slot-writer word-help* drop \ $slot-writer ;
-
 M: predicate word-help* drop \ $predicate ;
 
 : all-articles ( -- seq )
index 47a40d694805dd113ea4928e0c2c5e8dcf108ca9..9c3615f629c017c6a6ffad2aa292d269ed7ecb36 100755 (executable)
@@ -296,63 +296,6 @@ M: string ($instance)
         { $link with-pprint } " combinator."
     } $notes ;
 
-: ($spec-reader-values) ( slot-spec class -- element )
-    dup ?word-name swap 2array
-    over slot-spec-name
-    rot slot-spec-type 2array 2array
-    [ { $instance } swap add ] assoc-map ;
-
-: $spec-reader-values ( slot-spec class -- )
-    ($spec-reader-values) $values ;
-
-: $spec-reader-description ( slot-spec class -- )
-    [
-        "Outputs the value stored in the " ,
-        { $snippet } rot slot-spec-name add ,
-        " slot of " ,
-        { $instance } swap add ,
-        " instance." ,
-    ] { } make $description ;
-
-: $spec-reader ( reader slot-specs class -- )
-    >r slot-of-reader r>
-    over [
-        2dup $spec-reader-values
-        2dup $spec-reader-description
-    ] when 2drop ;
-
-GENERIC: slot-specs ( help-type -- specs )
-
-M: word slot-specs "slots" word-prop ;
-
-: $slot-reader ( reader -- )
-    first dup "reading" word-prop [ slot-specs ] keep
-    $spec-reader ;
-
-: $spec-writer-values ( slot-spec class -- )
-    ($spec-reader-values) reverse $values ;
-
-: $spec-writer-description ( slot-spec class -- )
-    [
-        "Stores a new value to the " ,
-        { $snippet } rot slot-spec-name add ,
-        " slot of " ,
-        { $instance } swap add ,
-        " instance." ,
-    ] { } make $description ;
-
-: $spec-writer ( writer slot-specs class -- )
-    >r slot-of-writer r>
-    over [
-        2dup $spec-writer-values
-        2dup $spec-writer-description
-        dup ?word-name 1array $side-effects
-    ] when 2drop ;
-
-: $slot-writer ( reader -- )
-    first dup "writing" word-prop [ slot-specs ] keep
-    $spec-writer ;
-
 GENERIC: elements* ( elt-type element -- )
 
 M: simple-element elements* [ elements* ] with each ;
index 421a40963907d4c043a3151218c126dbbeec9b22..0bb983c53d16d599e16cdae5245ffba7dd7b4d15 100755 (executable)
@@ -3,7 +3,7 @@
 USING: fry hashtables io io.streams.string kernel math
 namespaces math.parser assocs sequences strings splitting ascii
 io.encodings.utf8 io.encodings.string namespaces unicode.case
-combinators vectors sorting new-slots accessors calendar
+combinators vectors sorting accessors calendar
 calendar.format quotations arrays combinators.cleave
 combinators.lib byte-arrays ;
 IN: http
index 287f6dd90707c4e2d94c5be1960d6677b9247c4b..f39980037db263e834bd803634eb3c4b5e7f79ef 100755 (executable)
@@ -1,6 +1,6 @@
 ! Copyright (C) 2008 Slava Pestov.\r
 ! See http://factorcode.org/license.txt for BSD license.\r
-USING: accessors new-slots sequences kernel assocs combinators\r
+USING: accessors sequences kernel assocs combinators\r
 http.server http.server.validators http hashtables namespaces\r
 combinators.cleave fry continuations locals ;\r
 IN: http.server.actions\r
index 2ea74febba07fb3d748081e9f04cc16b9e870fc0..04c0e62d0734c70c5aa9cc216e60dbdcbe77bfd1 100755 (executable)
@@ -1,6 +1,6 @@
 ! Copyright (c) 2007 Chris Double.\r
 ! See http://factorcode.org/license.txt for BSD license.\r
-USING: accessors new-slots quotations assocs kernel splitting\r
+USING: accessors quotations assocs kernel splitting\r
 base64 html.elements io combinators http.server\r
 http.server.auth.providers http.server.auth.providers.null\r
 http sequences ;\r
index 275fb0ff63236a6e610c40dcb1568a9de1df8ee6..8c61a9dd47b85b4584a067752b02a0b51e2961d7 100755 (executable)
@@ -1,6 +1,6 @@
 ! Copyright (c) 2008 Slava Pestov\r
 ! See http://factorcode.org/license.txt for BSD license.\r
-USING: accessors new-slots quotations assocs kernel splitting\r
+USING: accessors quotations assocs kernel splitting\r
 base64 html.elements io combinators http.server\r
 http.server.auth.providers http.server.auth.providers.null\r
 http.server.actions http.server.components http.server.sessions\r
index e8ab908406ba3b283a57fa499c48b74c417969d1..18ec8da62a375e046efa07755b5202f369e37a8a 100755 (executable)
@@ -1,7 +1,7 @@
 ! Copyright (C) 2008 Slava Pestov.\r
 ! See http://factorcode.org/license.txt for BSD license.\r
 IN: http.server.auth.providers.assoc\r
-USING: new-slots accessors assocs kernel\r
+USING: accessors assocs kernel\r
 http.server.auth.providers ;\r
 \r
 TUPLE: users-in-memory assoc ;\r
index aec64d3384cf238b62ddfc1161107f17fdaaac9d..1e84e544b8d23826bedcd372106d35d5811dbaaf 100755 (executable)
@@ -1,6 +1,6 @@
 ! Copyright (C) 2008 Slava Pestov.\r
 ! See http://factorcode.org/license.txt for BSD license.\r
-USING: db db.tuples db.types new-slots accessors\r
+USING: db db.tuples db.types accessors\r
 http.server.auth.providers kernel continuations\r
 singleton ;\r
 IN: http.server.auth.providers.db\r
index cdad4815a678042ac071c9b981cf631e5b8b70fd..eda3babf0f8d3e82807d24df9498490ee0c67155 100755 (executable)
@@ -1,6 +1,6 @@
 ! Copyright (C) 2008 Slava Pestov.\r
 ! See http://factorcode.org/license.txt for BSD license.\r
-USING: kernel new-slots accessors random math.parser locals\r
+USING: kernel accessors random math.parser locals\r
 sequences math crypto.sha2 ;\r
 IN: http.server.auth.providers\r
 \r
index eb264279cbf0acb8b24762cad3825d40acd938f9..ab629ae2362acb9cce2fc430e7c1cb12ab32ac58 100755 (executable)
@@ -2,7 +2,7 @@
 ! Copyright (C) 2006, 2008 Slava Pestov.\r
 ! See http://factorcode.org/license.txt for BSD license.\r
 USING: html http http.server io kernel math namespaces\r
-continuations calendar sequences assocs new-slots hashtables\r
+continuations calendar sequences assocs hashtables\r
 accessors arrays alarms quotations combinators\r
 combinators.cleave fry assocs.lib ;\r
 IN: http.server.callbacks\r
index 09d31202c5152d6a6e8b6e052b5178ef956c5864..d372865b7e95d1d1f47aae29176a2e630330280c 100755 (executable)
@@ -1,6 +1,6 @@
 IN: http.server.components.tests\r
 USING: http.server.components http.server.validators\r
-namespaces tools.test kernel accessors new-slots\r
+namespaces tools.test kernel accessors\r
 tuple-syntax mirrors http.server.actions ;\r
 \r
 validation-failed? off\r
index 8581335f3d0bad6b7d9b23e0b2f75e0ab44b969b..516abe79a50392dbecc0163f68625564f4842070 100755 (executable)
@@ -1,6 +1,6 @@
 ! Copyright (C) 2008 Slava Pestov
 ! See http://factorcode.org/license.txt for BSD license.
-USING: new-slots html.elements http.server.validators accessors
+USING: html.elements http.server.validators accessors
 namespaces kernel io math.parser assocs classes words tuples
 arrays sequences io.files http.server.templating.fhtml
 http.server.actions splitting mirrors hashtables
index 4a2315b4fdb12116e4ddf441de23f9cdd06bf966..0b2e9bccc31ddb73b164688c6bbe1351df3dd2da 100755 (executable)
@@ -1,6 +1,6 @@
 ! Copyright (C) 2008 Slava Pestov.\r
 ! See http://factorcode.org/license.txt for BSD license.\r
-USING: db http.server kernel new-slots accessors\r
+USING: db http.server kernel accessors\r
 continuations namespaces destructors combinators.cleave ;\r
 IN: http.server.db\r
 \r
index e992a1b6fac0b2f447ef2640591061059f9ba440..346a31f30fe383c7b10b6b9893d5d26e947196c6 100755 (executable)
@@ -1,5 +1,5 @@
 USING: http.server tools.test kernel namespaces accessors
-new-slots io http math sequences assocs ;
+io http math sequences assocs ;
 IN: http.server.tests
 
 [
index 7448752c608abd04b770a8293124c2cf59e89605..6b3ae5273039622480f56b31429689d3e4f38ea2 100755 (executable)
@@ -2,7 +2,7 @@
 ! See http://factorcode.org/license.txt for BSD license.
 USING: assocs kernel namespaces io io.timeouts strings splitting
 threads http sequences prettyprint io.server logging calendar
-new-slots html.elements accessors math.parser combinators.lib
+html.elements accessors math.parser combinators.lib
 tools.vocabs debugger html continuations random combinators
 destructors io.encodings.latin1 fry combinators.cleave ;
 IN: http.server
index f45f10d25fc8f5b9465edd8c2487d13e57f24f7b..aea1bef930cd078c7036d4b353d06314f2bdc64f 100755 (executable)
@@ -1,7 +1,7 @@
 ! Copyright (C) 2008 Doug Coleman, Slava Pestov.
 ! See http://factorcode.org/license.txt for BSD license.
 USING: assocs calendar kernel math.parser namespaces random
-new-slots accessors http http.server
+accessors http http.server
 http.server.sessions.storage http.server.sessions.storage.assoc
 quotations hashtables sequences fry combinators.cleave
 html.elements symbols continuations destructors ;
index 1339e3c8678e5f41bb41d968fd530ea344d250d7..f72f34e4d2e1c23cf03728b07c1eaa5e6afb2509 100755 (executable)
@@ -1,6 +1,6 @@
 ! Copyright (C) 2008 Slava Pestov.\r
 ! See http://factorcode.org/license.txt for BSD license.\r
-USING: assocs assocs.lib new-slots accessors\r
+USING: assocs assocs.lib accessors\r
 http.server.sessions.storage combinators.cleave alarms kernel\r
 fry http.server ;\r
 IN: http.server.sessions.storage.assoc\r
index 07cd22bc628911acf948c821016b1bf5b53d4312..4d87aea5a380528c12da6a03bbbcfa510356dee5 100755 (executable)
@@ -1,6 +1,6 @@
 ! Copyright (C) 2008 Slava Pestov.\r
 ! See http://factorcode.org/license.txt for BSD license.\r
-USING: assocs new-slots accessors http.server.sessions.storage\r
+USING: assocs accessors http.server.sessions.storage\r
 alarms kernel http.server db.tuples db.types singleton\r
 combinators.cleave math.parser ;\r
 IN: http.server.sessions.storage.db\r
index b0012427769adce658bdaa106db71c1b43823d95..37c3a63d765b174f348d31433a3a8964a82f6086 100755 (executable)
@@ -3,7 +3,7 @@
 USING: calendar html io io.files kernel math math.parser http\r
 http.server namespaces parser sequences strings assocs\r
 hashtables debugger http.mime sorting html.elements logging\r
-calendar.format new-slots accessors io.encodings.binary\r
+calendar.format accessors io.encodings.binary\r
 combinators.cleave fry ;\r
 IN: http.server.static\r
 \r
index f2d1f568e6837d61366956db8eb4cbf13e34d2bf..b3710f6439b5cad705aa8431737fe3d08e4fff46 100755 (executable)
@@ -1,7 +1,7 @@
 ! Copyright (C) 2006, 2008 Slava Pestov
 ! See http://factorcode.org/license.txt for BSD license.
 USING: kernel continuations sequences math namespaces
-math.parser assocs new-slots regexp fry unicode.categories
+math.parser assocs regexp fry unicode.categories
 combinators.cleave sequences ;
 IN: http.server.validators
 
index e133416101b0c1d4f91a993980e84a1db97c384c..9c7d64934e947d50032b4bc2b0b54741f23bbe30 100755 (executable)
@@ -3,7 +3,7 @@
 USING: io io.backend io.timeouts system kernel namespaces
 strings hashtables sequences assocs combinators vocabs.loader
 init threads continuations math io.encodings io.streams.duplex
-io.nonblocking new-slots accessors ;
+io.nonblocking accessors ;
 IN: io.launcher
 
 
index 163194195defef88848ded652e481e08a92770d4..6c73669e9fda5fbf9723a5fb03e39c71cbfc0ac7 100755 (executable)
@@ -1,4 +1,4 @@
-USING: io.files kernel sequences new-slots accessors
+USING: io.files kernel sequences accessors
 dlists arrays sequences.lib ;
 IN: io.paths
 
index 7b4831a2c5d5fa2aae2e622731418a25364b8f86..a1e42fddf225ab818618cb59fa16a505daebf0d4 100755 (executable)
@@ -4,7 +4,7 @@ USING: io io.backend io.launcher io.nonblocking io.unix.backend
 io.unix.files io.nonblocking sequences kernel namespaces math
 system alien.c-types debugger continuations arrays assocs
 combinators unix.process strings threads unix
-io.unix.launcher.parser io.encodings.latin1 accessors new-slots ;
+io.unix.launcher.parser io.encodings.latin1 accessors ;
 IN: io.unix.launcher
 
 ! Search unix first
index 3e49f1dc10aed37fc20826d12851c6fcf159e5c6..ca8f5f3e59ad25c81cef586162cc1afef66b2409 100755 (executable)
@@ -5,7 +5,7 @@ io.windows io.windows.nt.pipes libc io.nonblocking
 io.streams.duplex windows.types math windows.kernel32 windows
 namespaces io.launcher kernel sequences windows.errors assocs
 splitting system threads init strings combinators
-io.backend new-slots accessors concurrency.flags ;
+io.backend accessors concurrency.flags ;
 IN: io.windows.launcher
 
 TUPLE: CreateProcess-args
index 6fd38e74b203fa3a5a65e10cf69e3a005e4c76a5..f2aca0470d3acb5bda478759cf55d03059839e5b 100755 (executable)
@@ -3,7 +3,7 @@
 USING: alien alien.c-types arrays destructors io io.windows libc
 windows.types math windows.kernel32 windows namespaces kernel
 sequences windows.errors assocs math.parser system random
-combinators new-slots accessors ;
+combinators accessors ;
 IN: io.windows.nt.pipes
 
 ! This code is based on
index cc1785ff62c1502e57093682030cc2b4506e8352..640ae0c9ea25eadb958b65d5b47f4a133b82897e 100755 (executable)
@@ -5,7 +5,7 @@ inference.transforms parser words quotations debugger macros
 arrays macros splitting combinators prettyprint.backend
 definitions prettyprint hashtables combinators.lib
 prettyprint.sections sequences.private effects generic
-compiler.units combinators.cleave new-slots accessors ;
+compiler.units combinators.cleave accessors ;
 IN: locals
 
 ! Inspired by
old mode 100644 (file)
new mode 100755 (executable)
index e1ba482..2e59b62
@@ -1,6 +1,6 @@
 USING: kernel math sequences namespaces
 math.miller-rabin combinators.cleave combinators.lib
-math.functions new-slots accessors random ;
+math.functions accessors random ;
 IN: random.blum-blum-shub
 
 ! TODO: take (log log M) bits instead of 1 bit
old mode 100644 (file)
new mode 100755 (executable)
index af6e236..1260745
@@ -1,4 +1,4 @@
-USING: kernel random math new-slots accessors  ;
+USING: kernel random math accessors  ;
 IN: random.dummy
 
 TUPLE: random-dummy i ;
index 73f241a37035b0351f0b940033fa384de190fb91..bf2ff78f2defce679c98c2fbd4ab763b5aac8073 100755 (executable)
@@ -4,7 +4,7 @@
 ! http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/MT2002/CODES/mt19937ar.c
 
 USING: arrays kernel math namespaces sequences system init
-new-slots accessors math.ranges combinators.cleave random ;
+accessors math.ranges combinators.cleave random ;
 IN: random.mersenne-twister
 
 <PRIVATE
old mode 100644 (file)
new mode 100755 (executable)
index be0789b..69c7bab
@@ -1,6 +1,6 @@
 ! Copyright (C) 2008 Alex Chapman
 ! See http://factorcode.org/license.txt for BSD license.
-USING: accessors db.tuples hashtables kernel new-slots
+USING: accessors db.tuples hashtables kernel
 semantic-db semantic-db.relations sequences sequences.deep ;
 IN: semantic-db.hierarchy
 
old mode 100644 (file)
new mode 100755 (executable)
index e8075c0..27e0159
@@ -1,6 +1,6 @@
 ! Copyright (C) 2008 Alex Chapman
 ! See http://factorcode.org/license.txt for BSD license.
-USING: accessors arrays continuations db db.tuples db.types db.sqlite kernel math math.parser new-slots sequences ;
+USING: accessors arrays continuations db db.tuples db.types db.sqlite kernel math math.parser sequences ;
 IN: semantic-db
 
 TUPLE: node id content ;
index 36d5e40b774211023ef46e8d5c6150493457ad81..7bcc3369627b9e7a51534ea7e83cd47c19d4bc9b 100755 (executable)
@@ -11,7 +11,7 @@ io.binary strings classes words sbufs tuples arrays vectors
 byte-arrays bit-arrays quotations hashtables assocs help.syntax
 help.markup float-arrays splitting io.streams.byte-array
 io.encodings.string io.encodings.utf8 io.encodings.binary
-combinators combinators.cleave new-slots accessors locals
+combinators combinators.cleave accessors locals
 prettyprint compiler.units sequences.private tuples.private ;
 IN: serialize
 
index 58eb42305e989fae8b1bd7c192f759beea94f456..13db422621b6d2f1959ff010a3ff8297a916ea78 100755 (executable)
@@ -4,7 +4,7 @@
 USING: namespaces io io.timeouts kernel logging io.sockets
 sequences combinators sequences.lib splitting assocs strings
 math.parser random system calendar io.encodings.ascii
-calendar.format new-slots accessors ;
+calendar.format accessors ;
 IN: smtp
 
 SYMBOL: smtp-domain
old mode 100644 (file)
new mode 100755 (executable)
index 32e7433..5884c18
@@ -1,6 +1,6 @@
 USING: alien alien.c-types kernel windows.ole32\r
 combinators.lib parser splitting sequences.lib\r
-sequences namespaces new-slots combinators.cleave\r
+sequences namespaces combinators.cleave\r
 assocs quotations shuffle accessors words macros\r
 alien.syntax fry ;\r
 IN: windows.com.syntax\r