]> gitweb.factorcode.org Git - factor.git/blob - basis/hash-sets/wrapped/wrapped.factor
Switch to https urls
[factor.git] / basis / hash-sets / wrapped / wrapped.factor
1 ! Copyright (C) 2013 John Benediktsson
2 ! See https://factorcode.org/license.txt for BSD license
3
4 USING: accessors arrays hash-sets kernel sequences sets
5 vocabs.loader ;
6
7 IN: hash-sets.wrapped
8
9 TUPLE: wrapped-hash-set
10     { underlying hash-set read-only } ;
11
12 GENERIC: wrap-key ( key wrapped-hash -- wrapped-key )
13
14 <PRIVATE
15
16 : wrapper@ ( key wrapped-hash -- wrapped-key hash-set )
17     [ wrap-key ] [ nip underlying>> ] 2bi ; inline
18
19 PRIVATE>
20
21 M: wrapped-hash-set adjoin
22     wrapper@ adjoin ; inline
23
24 M: wrapped-hash-set ?adjoin
25     wrapper@ ?adjoin ; inline
26
27 M: wrapped-hash-set in?
28     wrapper@ in? ; inline
29
30 M: wrapped-hash-set clear-set
31     underlying>> clear-set ; inline
32
33 M: wrapped-hash-set delete
34     wrapper@ delete ; inline
35
36 M: wrapped-hash-set ?delete
37     wrapper@ ?delete ; inline
38
39 M: wrapped-hash-set cardinality
40     underlying>> cardinality ; inline
41
42 M: wrapped-hash-set members
43     underlying>> members [ underlying>> ] map! ;
44
45 M: wrapped-hash-set equal?
46     over wrapped-hash-set? [ [ underlying>> ] same? ] [ 2drop f ] if ;
47
48 INSTANCE: wrapped-hash-set set
49
50 { "hash-sets.wrapped" "prettyprint" } "hash-sets.wrapped.prettyprint" require-when