1 ! Copyright (C) 2009 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors arrays assocs classes combinators.smart
4 continuations destructors fry io io.styles kernel namespaces
5 prettyprint sequences sets sorting ;
10 : class-tally ( set -- assoc' )
11 members [ class-of ] collect-by ;
13 : (disposables.) ( set -- )
14 class-tally >alist [ first2 [ length ] keep 3array ] map [ second ] sort-with
15 standard-table-style [
17 [ "Disposable class" write ] with-cell
18 [ "Instances" write ] with-cell
26 [ [ "[ List instances ]" swap write-object ] with-cell ]
33 : sort-disposables ( seq -- seq' )
34 [ disposable? ] partition [ [ id>> ] sort-with ] dip append ;
39 disposables get (disposables.) ;
41 : disposables-of-class. ( class -- )
42 [ disposables get members sort-disposables ] dip
43 '[ _ instance? ] filter stack. ;
45 : leaks ( quot -- disposables )
47 t debug-leaks? set-global
49 [ call disposables get clone ] dip
50 ] [ f debug-leaks? set-global ] finally
54 leaks (disposables.) ; inline