]> gitweb.factorcode.org Git - factor.git/blobdiff - basis/interval-maps/interval-maps.factor
factor: Rename start -> subseq-start, start* -> subseq-start-from.
[factor.git] / basis / interval-maps / interval-maps.factor
index a089fa3972ff63491b21d00af2ece8e39e90b104..38c613b9c43a036c48f47aac22eb2c3cc4a97746 100644 (file)
@@ -4,16 +4,13 @@ USING: accessors arrays assocs binary-search grouping kernel
 locals make math math.order sequences sequences.private sorting ;
 IN: interval-maps
 
+! Intervals are triples of { start end value }
 TUPLE: interval-map { array array read-only } ;
 
 <PRIVATE
 
-ALIAS: start first-unsafe
-ALIAS: end second-unsafe
-ALIAS: value third-unsafe
-
 : find-interval ( key interval-map -- interval-node )
-    array>> [ start <=> ] with search nip ; inline
+    array>> [ first-unsafe <=> ] with search nip ; inline
 
 : interval-contains? ( key interval-node -- ? )
     first2-unsafe between? ; inline
@@ -22,7 +19,7 @@ ALIAS: value third-unsafe
     [ [ dup number? [ dup 2array ] when ] dip ] { } assoc-map-as ;
 
 : disjoint? ( node1 node2 -- ? )
-    [ end ] [ start ] bi* < ;
+    [ second-unsafe ] [ first-unsafe ] bi* < ;
 
 : ensure-disjoint ( intervals -- intervals )
     dup [ disjoint? ] monotonic?
@@ -42,14 +39,14 @@ PRIVATE>
     check-interval-map
     [ drop ] [ find-interval ] 2bi
     [ nip ] [ interval-contains? ] 2bi
-    [ value t ] [ drop f f ] if ; inline
+    [ third-unsafe t ] [ drop f f ] if ; inline
 
 : interval-at ( key map -- value ) interval-at* drop ; inline
 
 : interval-key? ( key map -- ? ) interval-at* nip ; inline
 
 : interval-values ( map -- values )
-    check-interval-map array>> [ value ] map ;
+    check-interval-map array>> [ third-unsafe ] map ;
 
 : <interval-map> ( specification -- map )
     all-intervals [ first-unsafe second-unsafe ] sort-with