From 9ea47867269df8e510dec1580e3a52075a9c8976 Mon Sep 17 00:00:00 2001
From: Thomas Grill <xovo@users.sourceforge.net>
Date: Sun, 24 Nov 2002 21:55:56 +0000
Subject: *** empty log message ***

svn path=/trunk/; revision=230
---
 externals/grill/pool/main.cpp  |   4 +
 externals/grill/pool/pool.cpp  | 225 ++++-------------------
 externals/grill/pool/pool.cw   | Bin 58761 -> 603 bytes
 externals/grill/pool/pool.dsp  |  10 +-
 externals/grill/pool/pool.h    |  25 ++-
 externals/grill/pool/pool.help | Bin 5345 -> 304 bytes
 externals/grill/pool/pool.pd   | 402 ++++++++++++++++++++---------------------
 7 files changed, 265 insertions(+), 401 deletions(-)

diff --git a/externals/grill/pool/main.cpp b/externals/grill/pool/main.cpp
index 5d0cef10..c8297e9c 100644
--- a/externals/grill/pool/main.cpp
+++ b/externals/grill/pool/main.cpp
@@ -10,6 +10,8 @@ WARRANTIES, see the file, "license.txt," in this distribution.
 
 #include "pool.h"
 
+#define POOL_VERSION "0.1.0"
+
 class pool:
 	public flext_base
 {
@@ -189,6 +191,8 @@ pool::pool(I argc,const A *argv):
 	AddOutList();
 	AddOutAnything();
 
+	FLEXT_ADDMETHOD_(0,"pool",m_pool);
+
 	FLEXT_ADDMETHOD_(0,"set",m_set);
 	FLEXT_ADDMETHOD_(0,"add",m_add);
 	FLEXT_ADDMETHOD_(0,"reset",m_reset);
diff --git a/externals/grill/pool/pool.cpp b/externals/grill/pool/pool.cpp
index 629ab7fb..b45f0e87 100644
--- a/externals/grill/pool/pool.cpp
+++ b/externals/grill/pool/pool.cpp
@@ -78,8 +78,8 @@ poolval *poolval::Dup() const
 }
 
 
-pooldir::pooldir(const A &d):
-	dirs(NULL),vals(NULL),nxt(NULL)
+pooldir::pooldir(const A &d,pooldir *p):
+	parent(p),dirs(NULL),vals(NULL),nxt(NULL)
 {
 	CopyAtom(&dir,&d);
 }
@@ -108,7 +108,7 @@ pooldir *pooldir::AddDir(I argc,const A *argv)
 	}
 
 	if(c || !ix) {
-		pooldir *nd = new pooldir(argv[0]);
+		pooldir *nd = new pooldir(argv[0],this);
 		nd->nxt = ix;
 
 		if(prv) prv->nxt = nd;
@@ -147,9 +147,9 @@ pooldir *pooldir::GetDir(I argc,const A *argv,BL rmv)
 	}
 }
 
-BL pooldir::DelDir(const AtomList &d)
+BL pooldir::DelDir(I argc,const A *argv)
 {
-	pooldir *pd = GetDir(d,true);
+	pooldir *pd = GetDir(argc,argv,true);
 	if(pd && pd != this) {
 		delete pd;
 		return true;
@@ -193,6 +193,24 @@ V pooldir::SetVal(const A &key,AtomList *data,BL over)
 	}
 }
 
+poolval *pooldir::RefVal(const A &key)
+{
+	I c = 1;
+	poolval *ix = vals;
+	for(; ix; ix = ix->nxt) {
+		c = compare(key,ix->key);
+		if(c <= 0) break;
+	}
+
+	return c || !ix?NULL:ix;
+}
+
+flext::AtomList *pooldir::PeekVal(const A &key)
+{
+	poolval *ix = RefVal(key);
+	return ix?ix->data:NULL;
+}
+
 flext::AtomList *pooldir::GetVal(const A &key,BL cut)
 {
 	I c = 1;
@@ -228,6 +246,18 @@ I pooldir::CntAll()
 	return cnt;
 }
 
+I pooldir::GetKeys(AtomList &keys)
+{
+	I cnt = CntAll();
+	keys(cnt);
+
+	poolval *ix = vals;
+	for(I i = 0; ix; ++i,ix = ix->nxt) 
+		SetAtom(keys[i],ix->key);
+
+	return cnt;
+}
+
 I pooldir::GetAll(A *&keys,AtomList *&lst,BL cut)
 {
 	I cnt = CntAll();
@@ -458,188 +488,3 @@ BL pooldir::SvDir(ostream &os,I depth,const AtomList &dir)
 
 
 
-pooldata::pooldata(const S *s):
-	sym(s),nxt(NULL),refs(0),
-	root(nullatom)
-{
-	LOG1("new pool %s",sym?flext_base::GetString(sym):"<private>");
-}
-
-pooldata::~pooldata()
-{
-	LOG1("free pool %s",sym?flext_base::GetString(sym):"<private>");
-}
-
-t_atom pooldata::nullatom = { A_NULL };
-
-
-V pooldata::Reset()
-{
-	root.Clear(true);
-}
-
-BL pooldata::MkDir(const AtomList &d)
-{
-	root.AddDir(d);
-	return true;
-}
-
-BL pooldata::ChkDir(const AtomList &d)
-{
-	return root.GetDir(d) != NULL;
-}
-
-BL pooldata::RmDir(const AtomList &d)
-{
-	return root.DelDir(d);
-}
-
-BL pooldata::Set(const AtomList &d,const A &key,AtomList *data,BL over)
-{
-	pooldir *pd = root.GetDir(d);
-	if(!pd) return false;
-	pd->SetVal(key,data,over);
-	return true;
-}
-
-BL pooldata::Clr(const AtomList &d,const A &key)
-{
-	pooldir *pd = root.GetDir(d);
-	if(!pd) return false;
-	pd->ClrVal(key);
-	return true;
-}
-
-BL pooldata::ClrAll(const AtomList &d,BL rec,BL dironly)
-{
-	pooldir *pd = root.GetDir(d);
-	if(!pd) return false;
-	pd->Clear(rec,dironly);
-	return true;
-}
-
-flext::AtomList *pooldata::Get(const AtomList &d,const A &key)
-{
-	pooldir *pd = root.GetDir(d);
-	return pd?pd->GetVal(key):NULL;
-}
-
-I pooldata::CntAll(const AtomList &d)
-{
-	pooldir *pd = root.GetDir(d);
-	return pd?pd->CntAll():0;
-}
-
-I pooldata::GetAll(const AtomList &d,A *&keys,AtomList *&lst)
-{
-	pooldir *pd = root.GetDir(d);
-	if(pd)
-		return pd->GetAll(keys,lst);
-	else {
-		keys = NULL; lst = NULL;
-		return 0;
-	}
-}
-
-I pooldata::GetSub(const AtomList &d,const t_atom **&dirs)
-{
-	pooldir *pd = root.GetDir(d);
-	if(pd)
-		return pd->GetSub(dirs);
-	else {
-		dirs = NULL;
-		return 0;
-	}
-}
-
-
-BL pooldata::Paste(const AtomList &d,const pooldir *clip,I depth,BL repl,BL mkdir)
-{
-	pooldir *pd = root.GetDir(d);
-	if(pd)
-		return pd->Paste(clip,depth,repl,mkdir);
-	else
-		return false;
-}
-
-pooldir *pooldata::Copy(const AtomList &d,const A &key,BL cut)
-{
-	pooldir *pd = root.GetDir(d);
-	if(pd) {
-		AtomList *val = pd->GetVal(key,cut);
-		if(val) {
-			pooldir *ret = new pooldir(nullatom);
-			ret->SetVal(key,val);
-			return ret;
-		}
-		else
-			return NULL;
-	}
-	else
-		return NULL;
-}
-
-pooldir *pooldata::CopyAll(const AtomList &d,I depth,BL cut)
-{
-	pooldir *pd = root.GetDir(d);
-	if(pd) {
-		pooldir *ret = new pooldir(nullatom);
-		if(pd->Copy(ret,depth,cut))
-			return ret;
-		else {
-			delete ret;
-			return NULL;
-		}
-	}
-	else
-		return NULL;
-}
-
-
-static const C *CnvFlnm(C *dst,const C *src,I sz)
-{
-#if defined(PD) && defined(NT)
-	I cnt = strlen(src);
-	if(cnt >= sz-1) return NULL;
-	for(I i = 0; i < cnt; ++i)
-		dst[i] = src[i] != '/'?src[i]:'\\';
-	dst[i] = 0;
-	return dst;
-#else
-	return src;
-#endif
-}
-
-BL pooldata::LdDir(const AtomList &d,const C *flnm,I depth,BL mkdir)
-{
-	pooldir *pd = root.GetDir(d);
-	if(pd) {
-		C tmp[1024];
-		const C *t = CnvFlnm(tmp,flnm,sizeof tmp);
-		if(t) {
-			ifstream fl(t);
-			return fl.good() && pd->LdDir(fl,depth,mkdir);
-		}
-		else return false;
-	}
-	else
-		return false;
-}
-
-BL pooldata::SvDir(const AtomList &d,const C *flnm,I depth,BL absdir)
-{
-	pooldir *pd = root.GetDir(d);
-	if(pd) {
-		C tmp[1024];
-		const C *t = CnvFlnm(tmp,flnm,sizeof tmp);
-		if(t) {
-			ofstream fl(t);
-			return fl.good() && pd->SvDir(fl,depth,absdir?d:AtomList());
-		}
-		else return false;
-	}
-	else
-		return false;
-}
-
-
diff --git a/externals/grill/pool/pool.cw b/externals/grill/pool/pool.cw
index 66e93306..5a7b3a70 100755
Binary files a/externals/grill/pool/pool.cw and b/externals/grill/pool/pool.cw differ
diff --git a/externals/grill/pool/pool.dsp b/externals/grill/pool/pool.dsp
index dbe09386..0c39ebb3 100644
--- a/externals/grill/pool/pool.dsp
+++ b/externals/grill/pool/pool.dsp
@@ -53,7 +53,7 @@ BSC32=bscmake.exe
 # ADD BSC32 /nologo
 LINK32=link.exe
 # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
-# ADD LINK32 kernel32.lib user32.lib pd.lib flext-pdwin.lib /nologo /dll /machine:I386 /libpath:"c:\programme\audio\pd\bin" /libpath:"f:\prog\max\flext\pd-msvc"
+# ADD LINK32 kernel32.lib user32.lib pd.lib flext-pdwin.lib /nologo /dll /machine:I386 /out:"pd-msvc/pool.dll" /libpath:"c:\programme\audio\pd\bin" /libpath:"f:\prog\max\flext\pd-msvc"
 
 !ELSEIF  "$(CFG)" == "pool - Win32 Debug"
 
@@ -89,6 +89,10 @@ LINK32=link.exe
 # Name "pool - Win32 Debug"
 # Begin Source File
 
+SOURCE=.\data.cpp
+# End Source File
+# Begin Source File
+
 SOURCE=.\main.cpp
 # End Source File
 # Begin Source File
@@ -99,5 +103,9 @@ SOURCE=.\pool.cpp
 
 SOURCE=.\pool.h
 # End Source File
+# Begin Source File
+
+SOURCE=.\readme.txt
+# End Source File
 # End Target
 # End Project
diff --git a/externals/grill/pool/pool.h b/externals/grill/pool/pool.h
index 21fe4eb3..3c698b1f 100644
--- a/externals/grill/pool/pool.h
+++ b/externals/grill/pool/pool.h
@@ -17,8 +17,6 @@ WARRANTIES, see the file, "license.txt," in this distribution.
 #error You need at least flext version 0.4.0
 #endif
 
-#define POOL_VERSION "0.0.5"
-
 #include <iostream.h>
 
 typedef void V;
@@ -44,28 +42,36 @@ public:
 	poolval *nxt;
 };
 
-	class pooldir:
+class pooldir:
 	public flext
 {
 public:
-	pooldir(const A &dir);
+	pooldir(const A &dir,pooldir *parent);
 	~pooldir();
 
 	V Clear(BL rec,BL dironly = false);
+	BL Empty() const { return !dirs && !vals; }
+	BL HasDirs() const { return dirs != NULL; }
+	BL HasVals() const { return vals != NULL; }
 
 	pooldir *GetDir(I argc,const A *argv,BL cut = false);
 	pooldir *GetDir(const AtomList &d,BL cut = false) { return GetDir(d.Count(),d.Atoms(),cut); }
-	BL DelDir(const AtomList &d);
+	BL DelDir(I argc,const A *argv);
+	BL DelDir(const AtomList &d) { return DelDir(d.Count(),d.Atoms()); }
 	pooldir *AddDir(I argc,const A *argv);
 	pooldir *AddDir(const AtomList &d) { return AddDir(d.Count(),d.Atoms()); }
 
 	V SetVal(const A &key,AtomList *data,BL over = true);
 	V ClrVal(const A &key) { SetVal(key,NULL); }
+	AtomList *PeekVal(const A &key);
 	AtomList *GetVal(const A &key,BL cut = false);
 	I CntAll();
 	I GetAll(A *&keys,AtomList *&lst,BL cut = false);
-	I GetSub(const t_atom **&dirs);
+	I GetKeys(AtomList &keys);
+	I GetSub(const A **&dirs);
 
+	poolval *RefVal(const A &key);
+	
 	BL Paste(const pooldir *p,I depth,BL repl,BL mkdir);
 	BL Copy(pooldir *p,I depth,BL cur);
 
@@ -75,11 +81,11 @@ public:
 	A dir;
 	pooldir *nxt;
 
-	pooldir *dirs;
+	pooldir *parent,*dirs;
 	poolval *vals;
 };
 
-	class pooldata:
+class pooldata:
 	public flext
 {
 public:
@@ -97,6 +103,7 @@ public:
 	BL Set(const AtomList &d,const A &key,AtomList *data,BL over = true);
 	BL Clr(const AtomList &d,const A &key);
 	BL ClrAll(const AtomList &d,BL rec,BL dironly = false);
+	AtomList *Peek(const AtomList &d,const A &key);
 	AtomList *Get(const AtomList &d,const A &key);
 	I CntAll(const AtomList &d);
 	I GetAll(const AtomList &d,A *&keys,AtomList *&lst);
@@ -118,7 +125,7 @@ public:
 	pooldir root;
 
 private:
-	static t_atom nullatom;
+	static const A nullatom;
 };
 
 #endif
diff --git a/externals/grill/pool/pool.help b/externals/grill/pool/pool.help
index 24d189b7..d0d17dc7 100755
Binary files a/externals/grill/pool/pool.help and b/externals/grill/pool/pool.help differ
diff --git a/externals/grill/pool/pool.pd b/externals/grill/pool/pool.pd
index ffd49615..0726e6f6 100644
--- a/externals/grill/pool/pool.pd
+++ b/externals/grill/pool/pool.pd
@@ -1,201 +1,201 @@
-#N canvas 25 23 966 669 12;
-#X obj 273 441 pool;
-#X msg 236 52 set 1 2 3;
-#X obj 272 563 print K;
-#X msg 602 156 getall;
-#X msg 236 81 set A k g;
-#X obj 251 594 print V;
-#X obj 290 532 print D;
-#X msg 236 111 set A l m;
-#X msg 239 140 set 2 34;
-#X msg 238 171 set 3 17;
-#X msg 423 50 clr A;
-#X msg 427 126 get A;
-#X msg 427 158 get 2;
-#X msg 20 79 echodir \$1;
-#X obj 20 58 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
-;
-#X obj 20 160 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
-;
-#X msg 20 181 absdir \$1;
-#X text 422 30 clear value;
-#X text 423 104 get value;
-#X obj 309 505 print C;
-#X text 375 504 command;
-#X text 357 531 directory (abs or rel to current);
-#X text 320 594 data value;
-#X text 338 562 data key;
-#X msg 26 279 pool pool1;
-#X msg 27 308 pool;
-#X text 69 308 set to private;
-#X msg 27 370 reset;
-#X text 26 349 clear all pool data;
-#X msg 608 56 clrall;
-#X text 599 34 clear all values in dir;
-#X text 602 135 get all values in dir;
-#X text 314 442 pool name can be given as argument;
-#X text 598 81 clear all values and dirs;
-#X msg 606 103 clrrec;
-#X msg 600 203 getrec;
-#X text 600 181 get all values in dir and subdirs;
-#X text 652 232 bang at EOL;
-#X text 661 150 bang at EOL;
-#X text 655 202 depth may be given;
-#X text 22 258 data is shared among pool objects;
-#X text 23 237 set pool name;
-#X text 20 36 at each command;
-#X text 20 20 echo current dir;
-#X text 233 27 set values;
-#X text 15 141 (default on);
-#X text 7 125 report absolute dirs;
-#X msg 28 417 help;
-#X text 70 418 get some info;
-#X text 658 219 default=-1 (= infinite);
-#X msg 604 283 cntall;
-#X text 663 281 count all values in dir;
-#X msg 604 309 cntrec;
-#X text 665 307 ... and subdirs;
-#X text 661 321 (depth may be given);
-#X msg 237 226 add 3 14;
-#X text 235 205 set but don't replace;
-#N canvas 0 0 421 528 dirs 0;
-#X msg 109 27 mkdir fld1;
-#X msg 111 122 chdir;
-#X msg 110 217 updir;
-#X msg 111 354 getsub -1;
-#X text 110 7 make absolute dir;
-#X text 109 51 make relative dir;
-#X msg 110 72 mksub fld2;
-#X text 109 104 change to absolute dir;
-#X msg 110 165 chsub fld2;
-#X text 108 146 change to relative dir;
-#X text 106 198 change to upper dir;
-#X text 107 250 remove absolute dir;
-#X msg 108 269 rmdir fld1;
-#X msg 110 308 rmsub fld2;
-#X text 109 289 remove relative dir;
-#X text 109 336 get subdirs;
-#X text 239 379 -1 ... infinite;
-#X text 161 213 depth may be given;
-#X text 162 229 default=1;
-#X text 192 348 depth may be given;
-#X text 192 365 default=1;
-#X text 108 377 count subdirs;
-#X msg 111 398 cntsub -1;
-#X obj 11 239 outlet;
-#X msg 111 458 getdir;
-#X text 110 438 get current dir;
-#X text 172 457 always absolute;
-#X connect 0 0 23 0;
-#X connect 1 0 23 0;
-#X connect 2 0 23 0;
-#X connect 3 0 23 0;
-#X connect 6 0 23 0;
-#X connect 8 0 23 0;
-#X connect 12 0 23 0;
-#X connect 13 0 23 0;
-#X connect 22 0 23 0;
-#X connect 24 0 23 0;
-#X restore 713 494 pd dirs;
-#X text 710 468 directory operations;
-#N canvas 0 0 467 434 file 0;
-#X text 117 207 save dir and subdirs;
-#X text 117 165 save data in current dir;
-#X msg 117 184 svdir c:/temp/pool.dat;
-#X msg 117 226 svrec c:/temp/pool.dat;
-#X msg 116 272 lddir c:/temp/pool.dat;
-#X msg 116 319 ldrec c:/temp/pool.dat;
-#X text 117 253 load data into current dir;
-#X text 115 300 load data into current dir and below;
-#X text 132 340 depth (default -1) and;
-#X text 134 356 mkdir flag (default 1) can be given;
-#X obj 22 188 outlet;
-#X text 117 37 save all;
-#X text 117 81 load all (add to existing data);
-#X msg 118 100 load c:/temp/pool.dat;
-#X msg 120 54 save c:/temp/pool.dat;
-#X text 22 12 file operations;
-#X connect 2 0 10 0;
-#X connect 3 0 10 0;
-#X connect 4 0 10 0;
-#X connect 5 0 10 0;
-#X connect 13 0 10 0;
-#X connect 14 0 10 0;
-#X restore 714 549 pd file;
-#X text 712 526 file operations;
-#X text 712 583 clipboard operations;
-#N canvas 0 0 529 577 clip 0;
-#X obj 17 183 outlet;
-#X text 97 56 copy value associated to key into clipboard;
-#X msg 100 77 copy A;
-#X msg 98 119 cut B;
-#X text 96 101 cut value associated to key into clipboard;
-#X msg 96 401 paste;
-#X msg 98 179 copyall;
-#X text 95 158 copy all values in current dir into clipboard;
-#X msg 97 221 cutall;
-#X text 95 201 cut all values in current dir into clipboard;
-#X text 94 263 copy all values in current dir into clipboard;
-#X text 94 306 cut all values in current dir into clipboard;
-#X msg 97 284 copyrec;
-#X text 194 285 depth may be given (default=-1);
-#X text 193 326 depth may be given (default=-1);
-#X msg 96 326 cutrec 1;
-#X text 194 345 1..only with first level subdirs;
-#X text 96 379 paste clipboard contents into current directory;
-#X text 167 397 depth (default -1) and;
-#X text 169 413 mkdir flag (default 1) can be given;
-#X text 171 448 depth (default -1) and;
-#X text 173 466 mkdir flag (default 1) can be given;
-#X msg 95 453 pasteadd;
-#X text 95 431 paste but don't replace;
-#X msg 94 521 clrclip;
-#X text 160 523 clear clipboard (free memory);
-#X text 22 12 clipboard operations (this is an internal clipboard...)
-;
-#X connect 2 0 0 0;
-#X connect 3 0 0 0;
-#X connect 5 0 0 0;
-#X connect 6 0 0 0;
-#X connect 8 0 0 0;
-#X connect 12 0 0 0;
-#X connect 15 0 0 0;
-#X connect 22 0 0 0;
-#X connect 24 0 0 0;
-#X restore 714 606 pd clip;
-#X text 712 437 more commands:;
-#X obj 780 494 s \$0-pool;
-#X obj 778 549 s \$0-pool;
-#X obj 778 606 s \$0-pool;
-#X obj 349 392 r \$0-pool;
-#X connect 0 0 5 0;
-#X connect 0 1 2 0;
-#X connect 0 2 6 0;
-#X connect 0 3 19 0;
-#X connect 1 0 0 0;
-#X connect 3 0 0 0;
-#X connect 4 0 0 0;
-#X connect 7 0 0 0;
-#X connect 8 0 0 0;
-#X connect 9 0 0 0;
-#X connect 10 0 0 0;
-#X connect 11 0 0 0;
-#X connect 12 0 0 0;
-#X connect 13 0 0 0;
-#X connect 14 0 13 0;
-#X connect 15 0 16 0;
-#X connect 16 0 0 0;
-#X connect 24 0 0 0;
-#X connect 25 0 0 0;
-#X connect 27 0 0 0;
-#X connect 29 0 0 0;
-#X connect 34 0 0 0;
-#X connect 35 0 0 0;
-#X connect 47 0 0 0;
-#X connect 50 0 0 0;
-#X connect 52 0 0 0;
-#X connect 55 0 0 0;
-#X connect 57 0 64 0;
-#X connect 59 0 65 0;
-#X connect 62 0 66 0;
-#X connect 67 0 0 0;
+#N canvas 25 23 974 677 12;
+#X obj 260 478 pool;
+#X msg 295 108 set 1 2 3;
+#X obj 272 600 print K;
+#X msg 607 211 getall;
+#X msg 295 137 set A k g;
+#X obj 251 631 print V;
+#X obj 290 569 print D;
+#X msg 295 167 set A l m;
+#X msg 298 196 set 2 34;
+#X msg 297 227 set 3 17;
+#X msg 428 105 clr A;
+#X msg 432 181 get A;
+#X msg 432 213 get 2;
+#X msg 40 132 echodir \$1;
+#X obj 40 111 tgl 15 0 empty empty empty 0 -6 32 8 -262144 -1 -1 0
+1;
+#X obj 40 213 tgl 15 0 empty empty empty 0 -6 32 8 -262144 -1 -1 0
+1;
+#X msg 40 234 absdir \$1;
+#X text 427 85 clear value;
+#X text 428 159 get value;
+#X obj 309 542 print C;
+#X text 381 542 command;
+#X text 363 569 directory (abs or rel to current);
+#X text 326 632 data value;
+#X text 344 600 data key;
+#X msg 41 314 pool pool1;
+#X msg 42 343 pool;
+#X text 86 343 set to private;
+#X msg 42 405 reset;
+#X text 41 384 clear all pool data;
+#X msg 613 111 clrall;
+#X text 604 89 clear all values in dir;
+#X text 607 190 get all values in dir;
+#X text 314 479 pool name can be given as argument;
+#X text 603 136 clear all values and dirs;
+#X msg 611 158 clrrec;
+#X msg 605 258 getrec;
+#X text 605 236 get all values in dir and subdirs;
+#X text 670 289 bang at EOL;
+#X text 673 208 bang at EOL;
+#X text 670 257 depth may be given;
+#X text 43 291 set pool name;
+#X text 40 89 at each command;
+#X text 40 73 echo current dir;
+#X text 292 83 set values;
+#X text 35 194 (default on);
+#X text 27 178 report absolute dirs;
+#X msg 43 452 help;
+#X text 86 453 get some info;
+#X text 670 274 default=-1 (= infinite);
+#X msg 609 338 cntall;
+#X text 675 336 count all values in dir;
+#X msg 609 364 cntrec;
+#X text 677 362 ... and subdirs;
+#X text 673 376 (depth may be given);
+#X msg 296 282 add 3 14;
+#X text 294 261 set but don't replace;
+#N canvas 0 0 510 536 dirs 0;
+#X msg 109 27 mkdir fld1;
+#X msg 111 122 chdir;
+#X msg 110 217 updir;
+#X msg 111 354 getsub -1;
+#X text 110 7 make absolute dir;
+#X text 109 51 make relative dir;
+#X msg 110 72 mksub fld2;
+#X text 109 104 change to absolute dir;
+#X msg 110 165 chsub fld2;
+#X text 108 146 change to relative dir;
+#X text 106 198 change to upper dir;
+#X text 107 250 remove absolute dir;
+#X msg 108 269 rmdir fld1;
+#X msg 110 308 rmsub fld2;
+#X text 109 289 remove relative dir;
+#X text 109 336 get subdirs;
+#X text 251 380 -1 ... infinite;
+#X text 167 213 depth may be given;
+#X text 168 229 default=1;
+#X text 209 349 depth may be given;
+#X text 207 365 default=1;
+#X text 108 377 count subdirs;
+#X msg 111 398 cntsub -1;
+#X msg 111 458 getdir;
+#X text 110 438 get current dir;
+#X text 176 458 always absolute;
+#X obj 11 239 s \$0-pool;
+#X connect 0 0 26 0;
+#X connect 1 0 26 0;
+#X connect 2 0 26 0;
+#X connect 3 0 26 0;
+#X connect 6 0 26 0;
+#X connect 8 0 26 0;
+#X connect 12 0 26 0;
+#X connect 13 0 26 0;
+#X connect 22 0 26 0;
+#X connect 23 0 26 0;
+#X restore 718 511 pd dirs;
+#X text 715 485 directory operations;
+#N canvas 0 0 469 436 file 0;
+#X text 117 207 save dir and subdirs;
+#X text 117 165 save data in current dir;
+#X msg 117 184 svdir c:/temp/pool.dat;
+#X msg 117 226 svrec c:/temp/pool.dat;
+#X msg 116 272 lddir c:/temp/pool.dat;
+#X msg 116 319 ldrec c:/temp/pool.dat;
+#X text 117 253 load data into current dir;
+#X text 115 300 load data into current dir and below;
+#X text 132 340 depth (default -1) and;
+#X text 134 356 mkdir flag (default 1) can be given;
+#X text 117 37 save all;
+#X text 117 81 load all (add to existing data);
+#X msg 118 100 load c:/temp/pool.dat;
+#X msg 120 54 save c:/temp/pool.dat;
+#X text 22 12 file operations;
+#X obj 22 188 s \$0-pool;
+#X connect 2 0 15 0;
+#X connect 3 0 15 0;
+#X connect 4 0 15 0;
+#X connect 5 0 15 0;
+#X connect 12 0 15 0;
+#X connect 13 0 15 0;
+#X restore 719 566 pd file;
+#X text 717 543 file operations;
+#X text 717 600 clipboard operations;
+#N canvas 0 0 535 583 clip 0;
+#X text 97 56 copy value associated to key into clipboard;
+#X msg 100 77 copy A;
+#X msg 98 119 cut B;
+#X text 96 101 cut value associated to key into clipboard;
+#X msg 96 401 paste;
+#X msg 98 179 copyall;
+#X text 95 158 copy all values in current dir into clipboard;
+#X msg 97 221 cutall;
+#X text 95 201 cut all values in current dir into clipboard;
+#X text 94 263 copy all values in current dir into clipboard;
+#X text 94 306 cut all values in current dir into clipboard;
+#X msg 97 284 copyrec;
+#X text 194 285 depth may be given (default=-1);
+#X text 193 326 depth may be given (default=-1);
+#X msg 96 326 cutrec 1;
+#X text 194 345 1..only with first level subdirs;
+#X text 96 379 paste clipboard contents into current directory;
+#X text 167 397 depth (default -1) and;
+#X text 169 413 mkdir flag (default 1) can be given;
+#X text 183 448 depth (default -1) and;
+#X text 185 466 mkdir flag (default 1) can be given;
+#X msg 95 453 pasteadd;
+#X text 95 431 paste but don't replace;
+#X msg 94 521 clrclip;
+#X text 171 520 clear clipboard (free memory);
+#X text 22 12 clipboard operations (this is an internal clipboard...)
+;
+#X obj 4 193 s \$0-pool;
+#X connect 1 0 26 0;
+#X connect 2 0 26 0;
+#X connect 4 0 26 0;
+#X connect 5 0 26 0;
+#X connect 7 0 26 0;
+#X connect 11 0 26 0;
+#X connect 14 0 26 0;
+#X connect 21 0 26 0;
+#X connect 23 0 26 0;
+#X restore 719 623 pd clip;
+#X text 717 454 more commands:;
+#X obj 349 429 r \$0-pool;
+#X text 174 500 data is shared among pool objects with the same name
+;
+#X obj 26 10 cnv 15 850 40 empty empty pool 10 22 32 24 -260818 -1
+0;
+#X text 337 32 http://www.parasitaere-kapazitaeten.net;
+#X text 337 12 a hierarchical storage object \, (C)2002 Thomas Grill
+;
+#X connect 0 0 5 0;
+#X connect 0 1 2 0;
+#X connect 0 2 6 0;
+#X connect 0 3 19 0;
+#X connect 1 0 0 0;
+#X connect 3 0 0 0;
+#X connect 4 0 0 0;
+#X connect 7 0 0 0;
+#X connect 8 0 0 0;
+#X connect 9 0 0 0;
+#X connect 10 0 0 0;
+#X connect 11 0 0 0;
+#X connect 12 0 0 0;
+#X connect 13 0 0 0;
+#X connect 14 0 13 0;
+#X connect 15 0 16 0;
+#X connect 16 0 0 0;
+#X connect 24 0 0 0;
+#X connect 25 0 0 0;
+#X connect 27 0 0 0;
+#X connect 29 0 0 0;
+#X connect 34 0 0 0;
+#X connect 35 0 0 0;
+#X connect 46 0 0 0;
+#X connect 49 0 0 0;
+#X connect 51 0 0 0;
+#X connect 54 0 0 0;
+#X connect 63 0 0 0;
-- 
cgit v1.2.1