diff options
author | William Joye <wjoye@cfa.harvard.edu> | 2019-02-15 18:19:17 (GMT) |
---|---|---|
committer | William Joye <wjoye@cfa.harvard.edu> | 2019-02-15 18:19:17 (GMT) |
commit | b863b050cd0148499e6725724829e066890f518c (patch) | |
tree | 7828a9e8d84da3f73abe446fc50a9c0b0c11528a /tcllib/support/devel/sak/util/registry.tcl | |
parent | 7f1623e3f658b2dc4ddad0f1b9309a156de82065 (diff) | |
download | blt-b863b050cd0148499e6725724829e066890f518c.zip blt-b863b050cd0148499e6725724829e066890f518c.tar.gz blt-b863b050cd0148499e6725724829e066890f518c.tar.bz2 |
update tcllib
Diffstat (limited to 'tcllib/support/devel/sak/util/registry.tcl')
-rw-r--r-- | tcllib/support/devel/sak/util/registry.tcl | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/tcllib/support/devel/sak/util/registry.tcl b/tcllib/support/devel/sak/util/registry.tcl new file mode 100644 index 0000000..933fcad --- /dev/null +++ b/tcllib/support/devel/sak/util/registry.tcl @@ -0,0 +1,59 @@ +# -*- tcl -*- +# (C) 2006 Andreas Kupries <andreas_kupries@users.sourceforge.net> +## +# ### + +getpackage pregistry registry/registry.tcl + +namespace eval ::sak::registry {} + +proc ::sak::registry::local {args} { + return [uplevel 1 [linsert $args 0 [Setup]]] + # return <$_local {expand}$args> +} + +proc ::sak::registry::Setup {} { + variable _local + variable state + variable statedir + + if {![file exists $statedir]} { + file mkdir $statedir + } + + if {$_local == {}} { + set _local [pregistry %AUTO% \ + -tie [list file $state]] + } + + return $_local +} + +proc ::sak::registry::Refresh {} { + variable _local + $_local destroy + set _local {} + Setup + return +} + +namespace eval ::sak::registry { + variable _here [file dirname [info script]] + + variable statedir [file join ~ .Tcllib] + variable state [file join $statedir Registry] + variable _local {} +} + +## +# ### + +package provide sak::registry 1.0 + +# ### +## Data structures +# +## Core is a tree (struct::tree), keys are lists, mapping to a node, +## starting from the root. Attributes are node attributes. A prefix is +## used to distinguish them from the attributes used for internal +## purposes. |