factor/extra/store/store.factor

34 lines
873 B
Factor
Raw Normal View History

2007-09-20 18:09:08 -04:00
! Copyright (C) 2006, 2007 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license.
2007-12-10 02:50:50 -05:00
USING: assocs io io.files kernel namespaces serialize init ;
2007-09-20 18:09:08 -04:00
IN: store
TUPLE: store path data ;
C: <store> store
: save-store ( store -- )
2007-12-10 03:00:10 -05:00
get-global dup store-data swap store-path
<file-writer> [ serialize ] with-stream ;
2007-09-20 18:09:08 -04:00
: load-store ( path -- store )
dup exists? [
2007-12-10 03:00:10 -05:00
dup <file-reader> [ deserialize ] with-stream
2007-09-20 18:09:08 -04:00
] [
H{ } clone
] if <store> ;
2007-12-10 02:50:50 -05:00
: define-store ( path id -- )
over >r
[ >r resource-path load-store r> set-global ] 2curry
r> add-init-hook ;
2007-12-10 03:00:10 -05:00
: get-persistent ( key store -- value )
get-global store-data at ;
: set-persistent ( value key store -- )
2007-12-10 03:46:48 -05:00
[ get-global store-data set-at ] keep save-store ;
2007-12-10 03:00:10 -05:00
: init-persistent ( value key store -- )
2dup get-persistent [ 3drop ] [ set-persistent ] if ;