1 ! Copyright (C) 2013 John Benediktsson
2 ! See http://factorcode.org/license.txt for BSD license
4 USING: accessors assocs combinators hashtables
5 hashtables.wrapped kernel math math.hashcodes parser
13 { underlying number read-only } ;
15 C: <number-wrapper> number-wrapper
17 M: number-wrapper equal?
19 [ [ underlying>> ] bi@ number= ]
20 [ 2drop f ] if ; inline
22 M: number-wrapper hashcode*
23 nip underlying>> number-hashcode ; inline
27 TUPLE: number-hashtable < wrapped-hashtable ;
29 : <number-hashtable> ( n -- shashtable )
30 <hashtable> number-hashtable boa ; inline
32 M: number-hashtable wrap-key drop <number-wrapper> ;
34 M: number-hashtable clone
35 underlying>> clone number-hashtable boa ; inline
37 : >number-hashtable ( assoc -- shashtable )
38 [ assoc-size <number-hashtable> ] keep assoc-union! ;
40 M: number-hashtable new-assoc drop <number-hashtable> ;
42 SYNTAX: NH{ \ } [ >number-hashtable ] parse-literal ;
44 { "hashtables.numbers" "prettyprint" } "hashtables.numbers.prettyprint" require-when