]> gitweb.factorcode.org Git - factor.git/blob - basis/search-deques/search-deques.factor
Support multiline entries in the UI Listener
[factor.git] / basis / search-deques / search-deques.factor
1 ! Copyright (C) 2008 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors assocs deques kernel ;
4 IN: search-deques
5
6 TUPLE: search-deque assoc deque ;
7
8 C: <search-deque> search-deque
9
10 M: search-deque deque-empty? deque>> deque-empty? ;
11
12 M: search-deque peek-front* deque>> peek-front* ;
13
14 M: search-deque peek-back* deque>> peek-back* ;
15
16 M: search-deque push-front*
17     2dup assoc>> at* [ 2nip ] [
18         drop
19         [ deque>> push-front* dup ] [ assoc>> set-at ] 2bi
20     ] if ;
21
22 M: search-deque push-back*
23     2dup assoc>> at* [ 2nip ] [
24         drop
25         [ deque>> push-back* dup ] [ assoc>> set-at ] 2bi
26     ] if ;
27
28 M: search-deque pop-front*
29     [ deque>> pop-front ] [ assoc>> ] bi delete-at ;
30
31 M: search-deque pop-back*
32     [ deque>> pop-back ] [ assoc>> ] bi delete-at ;
33
34 M: search-deque delete-node
35     [ deque>> delete-node ]
36     [ [ node-value ] [ assoc>> ] bi* delete-at ] 2bi ;
37
38 M: search-deque clear-deque
39     [ deque>> clear-deque ] [ assoc>> clear-assoc ] bi ;
40
41 M: search-deque deque-member?
42     assoc>> key? ;
43
44 INSTANCE: search-deque deque