]> gitweb.factorcode.org Git - factor.git/commitdiff
classes.tuple: adding ?offset-of-slot that returns n/f.
authorJohn Benediktsson <mrjbq7@gmail.com>
Sat, 17 Feb 2018 20:56:27 +0000 (12:56 -0800)
committerJohn Benediktsson <mrjbq7@gmail.com>
Sat, 17 Feb 2018 20:56:27 +0000 (12:56 -0800)
core/classes/tuple/tuple-docs.factor
core/classes/tuple/tuple.factor

index 8d17d6171f2f62a5565bfb987d36bc98fe2e90ef..4ee30d1d8be7ba8c286e5320b7fbc0adb38f132d 100644 (file)
@@ -454,17 +454,24 @@ HELP: boa
 HELP: bad-superclass
 { $error-description "Thrown if an attempt is made to subclass a class that is not a tuple class, or a tuple class declared " { $link POSTPONE: final } "." } ;
 
+HELP: ?offset-of-slot
+{ $values { "name" string } { "tuple" tuple } { "n" { $maybe integer } } }
+{ $description "Returns the offset of a tuple slot accessed by " { $snippet "name" } ", or " { $link f } " if no slot with that name." } ;
+
 HELP: offset-of-slot
 { $values { "name" string } { "tuple" tuple } { "n" integer } }
-{ $description "Returns the offset of a tuple slot accessed by " { $snippet "name" } "." } ;
+{ $description "Returns the offset of a tuple slot accessed by " { $snippet "name" } "." }
+{ $errors "Throws a " { $link no-slot } " error if no slot with that name." } ;
 
 HELP: get-slot-named
 { $values { "name" string } { "tuple" tuple } { "value" object } }
-{ $description "Returns the " { $snippet "value" } " stored in a tuple slot accessed by " { $snippet "name" } "." } ;
+{ $description "Returns the " { $snippet "value" } " stored in a tuple slot accessed by " { $snippet "name" } "." }
+{ $errors "Throws a " { $link no-slot } " error if no slot with that name." } ;
 
 HELP: set-slot-named
 { $values { "value" object } { "name" string } { "tuple" tuple } }
-{ $description "Stores the " { $snippet "value" } " into a tuple slot accessed by " { $snippet "name" } "." } ;
+{ $description "Stores the " { $snippet "value" } " into a tuple slot accessed by " { $snippet "name" } "." }
+{ $errors "Throws a " { $link no-slot } " error if no slot with that name." } ;
 
 HELP: set-slots
 { $values { "assoc" assoc } { "tuple" tuple } }
index f903d0088bb729e10f7081f1bf4a6f3cfc85fc43..e260e3530ec326059943b46463c33775d3101a5a 100644 (file)
@@ -24,9 +24,11 @@ ERROR: not-a-tuple object ;
 
 ERROR: no-slot name tuple ;
 
+: ?offset-of-slot ( name tuple -- n/f )
+    class-of all-slots slot-named [ offset>> ] [ f ] if* ;
+
 : offset-of-slot ( name tuple -- n )
-    2dup class-of all-slots slot-named
-    [ 2nip offset>> ] [ no-slot ] if* ;
+    2dup ?offset-of-slot [ 2nip ] [ no-slot ] if* ;
 
 : get-slot-named ( name tuple -- value )
     [ nip ] [ offset-of-slot ] 2bi slot ;