Merge branch 'master' of git://factorcode.org/git/factor
commit
042f6bf88e
|
@ -69,10 +69,10 @@ IN: hashtables
|
||||||
: hash-deleted+ ( hash -- )
|
: hash-deleted+ ( hash -- )
|
||||||
dup hash-deleted 1+ swap set-hash-deleted ; inline
|
dup hash-deleted 1+ swap set-hash-deleted ; inline
|
||||||
|
|
||||||
: (set-hash) ( value key hash -- )
|
: (set-hash) ( value key hash -- new? )
|
||||||
2dup new-key@
|
2dup new-key@
|
||||||
[ rot hash-count+ ] [ rot drop ] if
|
[ rot hash-count+ set-nth-pair t ]
|
||||||
set-nth-pair ; inline
|
[ rot drop set-nth-pair f ] if ; inline
|
||||||
|
|
||||||
: find-pair-next >r 2 fixnum+fast r> ; inline
|
: find-pair-next >r 2 fixnum+fast r> ; inline
|
||||||
|
|
||||||
|
@ -94,10 +94,10 @@ IN: hashtables
|
||||||
: find-pair ( array quot -- key value ? ) 0 rot (find-pair) ; inline
|
: find-pair ( array quot -- key value ? ) 0 rot (find-pair) ; inline
|
||||||
|
|
||||||
: (rehash) ( hash array -- )
|
: (rehash) ( hash array -- )
|
||||||
[ swap pick (set-hash) f ] find-pair 2drop 2drop ;
|
[ swap pick (set-hash) drop f ] find-pair 2drop 2drop ;
|
||||||
|
|
||||||
: hash-large? ( hash -- ? )
|
: hash-large? ( hash -- ? )
|
||||||
dup hash-count 1 fixnum+fast 3 fixnum*fast
|
dup hash-count 3 fixnum*fast
|
||||||
swap hash-array array-capacity > ;
|
swap hash-array array-capacity > ;
|
||||||
|
|
||||||
: hash-stale? ( hash -- ? )
|
: hash-stale? ( hash -- ? )
|
||||||
|
@ -149,7 +149,7 @@ M: hashtable assoc-size ( hash -- n )
|
||||||
(rehash) ;
|
(rehash) ;
|
||||||
|
|
||||||
M: hashtable set-at ( value key hash -- )
|
M: hashtable set-at ( value key hash -- )
|
||||||
dup ?grow-hash (set-hash) ;
|
dup >r (set-hash) [ r> ?grow-hash ] [ r> drop ] if ;
|
||||||
|
|
||||||
: associate ( value key -- hash )
|
: associate ( value key -- hash )
|
||||||
2 <hashtable> [ set-at ] keep ;
|
2 <hashtable> [ set-at ] keep ;
|
||||||
|
|
|
@ -51,12 +51,11 @@ TUPLE: buffer size ptr fill pos ;
|
||||||
: buffer>> ( buffer -- string )
|
: buffer>> ( buffer -- string )
|
||||||
dup (buffer>>) 0 rot buffer-reset ;
|
dup (buffer>>) 0 rot buffer-reset ;
|
||||||
|
|
||||||
: (buffer-until) ( start end alien separators -- n )
|
: search-buffer-until ( start end alien separators -- n )
|
||||||
[ >r swap alien-unsigned-1 r> memq? ] 2curry find* drop ;
|
[ >r swap alien-unsigned-1 r> memq? ] 2curry find* drop ;
|
||||||
|
|
||||||
: buffer-until ( separators buffer -- string separator )
|
: finish-buffer-until ( buffer n -- string separator )
|
||||||
tuck { buffer-pos buffer-fill buffer-ptr } get-slots roll
|
[
|
||||||
(buffer-until) [
|
|
||||||
over buffer-pos -
|
over buffer-pos -
|
||||||
over buffer>
|
over buffer>
|
||||||
swap buffer-pop
|
swap buffer-pop
|
||||||
|
@ -64,6 +63,10 @@ TUPLE: buffer size ptr fill pos ;
|
||||||
buffer>> f
|
buffer>> f
|
||||||
] if* ;
|
] if* ;
|
||||||
|
|
||||||
|
: buffer-until ( separators buffer -- string separator )
|
||||||
|
tuck { buffer-pos buffer-fill buffer-ptr } get-slots roll
|
||||||
|
search-buffer-until finish-buffer-until ;
|
||||||
|
|
||||||
: buffer-length ( buffer -- n )
|
: buffer-length ( buffer -- n )
|
||||||
dup buffer-fill swap buffer-pos - ;
|
dup buffer-fill swap buffer-pos - ;
|
||||||
|
|
||||||
|
|
|
@ -149,4 +149,4 @@ float-arrays combinators.private ;
|
||||||
|
|
||||||
\ >be { { fixnum bignum } fixnum } "specializer" set-word-prop
|
\ >be { { fixnum bignum } fixnum } "specializer" set-word-prop
|
||||||
|
|
||||||
\ (buffer-until) { fixnum fixnum simple-alien string } "specializer" set-word-prop
|
\ search-buffer-until { fixnum fixnum simple-alien string } "specializer" set-word-prop
|
||||||
|
|
|
@ -39,7 +39,7 @@ vectors words assocs combinators sorting ;
|
||||||
|
|
||||||
: score ( full fuzzy -- n )
|
: score ( full fuzzy -- n )
|
||||||
dup [
|
dup [
|
||||||
[ [ length ] 2apply - 15 swap [-] 3 / ] 2keep
|
[ [ length ] 2apply - 15 swap [-] 3 /f ] 2keep
|
||||||
runs [
|
runs [
|
||||||
[ 0 [ pick score-1 max ] reduce nip ] keep
|
[ 0 [ pick score-1 max ] reduce nip ] keep
|
||||||
length * +
|
length * +
|
||||||
|
@ -50,7 +50,7 @@ vectors words assocs combinators sorting ;
|
||||||
|
|
||||||
: rank-completions ( results -- newresults )
|
: rank-completions ( results -- newresults )
|
||||||
sort-keys <reversed>
|
sort-keys <reversed>
|
||||||
[ 0 [ first max ] reduce 3 / ] keep
|
[ 0 [ first max ] reduce 3 /f ] keep
|
||||||
[ first < ] curry* subset
|
[ first < ] curry* subset
|
||||||
[ second ] map ;
|
[ second ] map ;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue