aboutsummaryrefslogtreecommitdiff
path: root/externals/grill/pool/source/pool.h
diff options
context:
space:
mode:
Diffstat (limited to 'externals/grill/pool/source/pool.h')
-rw-r--r--externals/grill/pool/source/pool.h171
1 files changed, 83 insertions, 88 deletions
diff --git a/externals/grill/pool/source/pool.h b/externals/grill/pool/source/pool.h
index f69ad2ea..3382d843 100644
--- a/externals/grill/pool/source/pool.h
+++ b/externals/grill/pool/source/pool.h
@@ -1,11 +1,13 @@
/*
-
pool - hierarchical storage object for PD and Max/MSP
-Copyright (c) 2002-2006 Thomas Grill (gr@grrrr.org)
+Copyright (c) 2002-2008 Thomas Grill (gr@grrrr.org)
For information on usage and redistribution, and for a DISCLAIMER OF ALL
WARRANTIES, see the file, "license.txt," in this distribution.
+$LastChangedRevision: 26 $
+$LastChangedDate: 2008-01-03 16:14:29 +0100 (Thu, 03 Jan 2008) $
+$LastChangedBy: thomas $
*/
#ifndef __POOL_H
@@ -23,28 +25,21 @@ WARRANTIES, see the file, "license.txt," in this distribution.
using namespace std;
-typedef void V;
-typedef int I;
-typedef unsigned long UL;
-typedef float F;
-typedef char C;
-typedef bool BL;
-typedef t_atom A;
-typedef t_symbol S;
typedef flext::AtomListStatic<8> Atoms;
+
class poolval:
public flext
{
public:
- poolval(const A &key,AtomList *data);
+ poolval(const t_atom &key,AtomList *data);
~poolval();
poolval &Set(AtomList *data);
poolval *Dup() const;
- A key;
+ t_atom key;
AtomList *data;
poolval *nxt;
};
@@ -53,59 +48,59 @@ class pooldir:
public flext
{
public:
- pooldir(const A &dir,pooldir *parent,I vcnt,I dcnt);
+ pooldir(const t_atom &dir,pooldir *parent,int vcnt,int dcnt);
~pooldir();
- V Clear(BL rec,BL dironly = false);
- V Reset(BL realloc = true);
-
- 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(I argc,const A *argv);
- BL DelDir(const AtomList &d) { return DelDir(d.Count(),d.Atoms()); }
- pooldir *AddDir(I argc,const A *argv,I vcnt = 0,I dcnt = 0);
- pooldir *AddDir(const AtomList &d,I vcnt = 0,I dcnt = 0) { return AddDir(d.Count(),d.Atoms(),vcnt,dcnt); }
-
- V SetVal(const A &key,AtomList *data,BL over = true);
- BL SetVali(I ix,AtomList *data);
- V ClrVal(const A &key) { SetVal(key,NULL); }
- BL ClrVali(I ix) { return SetVali(ix,NULL); }
- AtomList *PeekVal(const A &key);
- AtomList *GetVal(const A &key,BL cut = false);
- I CntAll() const;
- I GetAll(A *&keys,Atoms *&lst,BL cut = false);
- I PrintAll(char *buf,int len) const;
- I GetKeys(AtomList &keys);
- I CntSub() const;
- I GetSub(const A **&dirs);
-
- poolval *RefVal(const A &key);
- poolval *RefVali(I ix);
+ void Clear(bool rec,bool dironly = false);
+ void Reset(bool realloc = true);
+
+ bool Empty() const { return !dirs && !vals; }
+ bool HasDirs() const { return dirs != NULL; }
+ bool HasVals() const { return vals != NULL; }
+
+ pooldir *GetDir(int argc,const t_atom *argv,bool cut = false);
+ pooldir *GetDir(const AtomList &d,bool cut = false) { return GetDir(d.Count(),d.Atoms(),cut); }
+ bool DelDir(int argc,const t_atom *argv);
+ bool DelDir(const AtomList &d) { return DelDir(d.Count(),d.Atoms()); }
+ pooldir *AddDir(int argc,const t_atom *argv,int vcnt = 0,int dcnt = 0);
+ pooldir *AddDir(const AtomList &d,int vcnt = 0,int dcnt = 0) { return AddDir(d.Count(),d.Atoms(),vcnt,dcnt); }
+
+ void SetVal(const t_atom &key,AtomList *data,bool over = true);
+ bool SetVali(int ix,AtomList *data);
+ void ClrVal(const t_atom &key) { SetVal(key,NULL); }
+ bool ClrVali(int ix) { return SetVali(ix,NULL); }
+ AtomList *PeekVal(const t_atom &key);
+ AtomList *GetVal(const t_atom &key,bool cut = false);
+ int CntAll() const;
+ int GetAll(t_atom *&keys,Atoms *&lst,bool cut = false);
+ int PrintAll(char *buf,int len) const;
+ int GetKeys(AtomList &keys);
+ int CntSub() const;
+ int GetSub(const t_atom **&dirs);
+
+ poolval *RefVal(const t_atom &key);
+ poolval *RefVali(int ix);
- BL Paste(const pooldir *p,I depth,BL repl,BL mkdir);
- BL Copy(pooldir *p,I depth,BL cur);
+ bool Paste(const pooldir *p,int depth,bool repl,bool mkdir);
+ bool Copy(pooldir *p,int depth,bool cur);
- BL LdDir(istream &is,I depth,BL mkdir);
- BL LdDirXML(istream &is,I depth,BL mkdir);
- BL SvDir(ostream &os,I depth,const AtomList &dir = AtomList());
- BL SvDirXML(ostream &os,I depth,const AtomList &dir = AtomList(),I ind = 0);
+ bool LdDir(istream &is,int depth,bool mkdir);
+ bool LdDirXML(istream &is,int depth,bool mkdir);
+ bool SvDir(ostream &os,int depth,const AtomList &dir = AtomList());
+ bool SvDirXML(ostream &os,int depth,const AtomList &dir = AtomList(),int ind = 0);
int VSize() const { return vsize; }
int DSize() const { return dsize; }
protected:
- int VIdx(const A &v) const { return FoldBits(AtomHash(v),vbits); }
- int DIdx(const A &d) const { return FoldBits(AtomHash(d),dbits); }
+ int VIdx(const t_atom &v) const { return FoldBits(AtomHash(v),vbits); }
+ int DIdx(const t_atom &d) const { return FoldBits(AtomHash(d),dbits); }
- A dir;
+ t_atom dir;
pooldir *nxt;
pooldir *parent;
- const I vbits,dbits,vsize,dsize;
+ const int vbits,dbits,vsize,dsize;
static unsigned int FoldBits(unsigned long h,int bits);
static int Int2Bits(unsigned long n);
@@ -117,7 +112,7 @@ protected:
direntry *dirs;
private:
- BL LdDirXMLRec(istream &is,I depth,BL mkdir,AtomList &d);
+ bool LdDirXMLRec(istream &is,int depth,bool mkdir,AtomList &d);
};
@@ -125,33 +120,33 @@ class pooldata:
public flext
{
public:
- pooldata(const S *s = NULL,I vcnt = 0,I dcnt = 0);
+ pooldata(const t_symbol *s = NULL,int vcnt = 0,int dcnt = 0);
~pooldata();
bool Private() const { return sym == NULL; }
- V Push() { ++refs; }
- BL Pop() { return --refs > 0; }
+ void Push() { ++refs; }
+ bool Pop() { return --refs > 0; }
- V Reset() { root.Reset(); }
+ void Reset() { root.Reset(); }
- BL MkDir(const AtomList &d,I vcnt = 0,I dcnt = 0)
+ bool MkDir(const AtomList &d,int vcnt = 0,int dcnt = 0)
{
root.AddDir(d,vcnt,dcnt);
return true;
}
- BL ChkDir(const AtomList &d)
+ bool ChkDir(const AtomList &d)
{
return root.GetDir(d) != NULL;
}
- BL RmDir(const AtomList &d)
+ bool RmDir(const AtomList &d)
{
return root.DelDir(d);
}
- BL Set(const AtomList &d,const A &key,AtomList *data,BL over = true)
+ bool Set(const AtomList &d,const t_atom &key,AtomList *data,bool over = true)
{
pooldir *pd = root.GetDir(d);
if(!pd) return false;
@@ -159,7 +154,7 @@ public:
return true;
}
- BL Seti(const AtomList &d,I ix,AtomList *data)
+ bool Seti(const AtomList &d,int ix,AtomList *data)
{
pooldir *pd = root.GetDir(d);
if(!pd) return false;
@@ -167,7 +162,7 @@ public:
return true;
}
- BL Clr(const AtomList &d,const A &key)
+ bool Clr(const AtomList &d,const t_atom &key)
{
pooldir *pd = root.GetDir(d);
if(!pd) return false;
@@ -175,7 +170,7 @@ public:
return true;
}
- BL Clri(const AtomList &d,I ix)
+ bool Clri(const AtomList &d,int ix)
{
pooldir *pd = root.GetDir(d);
if(!pd) return false;
@@ -183,7 +178,7 @@ public:
return true;
}
- BL ClrAll(const AtomList &d,BL rec,BL dironly = false)
+ bool ClrAll(const AtomList &d,bool rec,bool dironly = false)
{
pooldir *pd = root.GetDir(d);
if(!pd) return false;
@@ -191,68 +186,68 @@ public:
return true;
}
- AtomList *Peek(const AtomList &d,const A &key)
+ AtomList *Peek(const AtomList &d,const t_atom &key)
{
pooldir *pd = root.GetDir(d);
return pd?pd->PeekVal(key):NULL;
}
- AtomList *Get(const AtomList &d,const A &key)
+ AtomList *Get(const AtomList &d,const t_atom &key)
{
pooldir *pd = root.GetDir(d);
return pd?pd->GetVal(key):NULL;
}
- poolval *Ref(const AtomList &d,const A &key)
+ poolval *Ref(const AtomList &d,const t_atom &key)
{
pooldir *pd = root.GetDir(d);
return pd?pd->RefVal(key):NULL;
}
- poolval *Refi(const AtomList &d,I ix)
+ poolval *Refi(const AtomList &d,int ix)
{
pooldir *pd = root.GetDir(d);
return pd?pd->RefVali(ix):NULL;
}
- I CntAll(const AtomList &d)
+ int CntAll(const AtomList &d)
{
pooldir *pd = root.GetDir(d);
return pd?pd->CntAll():0;
}
- I PrintAll(const AtomList &d);
- I GetAll(const AtomList &d,A *&keys,Atoms *&lst);
+ int PrintAll(const AtomList &d);
+ int GetAll(const AtomList &d,t_atom *&keys,Atoms *&lst);
- I CntSub(const AtomList &d)
+ int CntSub(const AtomList &d)
{
pooldir *pd = root.GetDir(d);
return pd?pd->CntSub():0;
}
- I GetSub(const AtomList &d,const t_atom **&dirs);
+ int GetSub(const AtomList &d,const t_atom **&dirs);
- BL Paste(const AtomList &d,const pooldir *clip,I depth = -1,BL repl = true,BL mkdir = true);
- pooldir *Copy(const AtomList &d,const A &key,BL cut);
- pooldir *CopyAll(const AtomList &d,I depth,BL cut);
+ bool Paste(const AtomList &d,const pooldir *clip,int depth = -1,bool repl = true,bool mkdir = true);
+ pooldir *Copy(const AtomList &d,const t_atom &key,bool cut);
+ pooldir *CopyAll(const AtomList &d,int depth,bool cut);
- BL LdDir(const AtomList &d,const C *flnm,I depth,BL mkdir = true);
- BL SvDir(const AtomList &d,const C *flnm,I depth,BL absdir);
- BL Load(const C *flnm) { AtomList l; return LdDir(l,flnm,-1); }
- BL Save(const C *flnm) { AtomList l; return SvDir(l,flnm,-1,true); }
- BL LdDirXML(const AtomList &d,const C *flnm,I depth,BL mkdir = true);
- BL SvDirXML(const AtomList &d,const C *flnm,I depth,BL absdir);
- BL LoadXML(const C *flnm) { AtomList l; return LdDirXML(l,flnm,-1); }
- BL SaveXML(const C *flnm) { AtomList l; return SvDirXML(l,flnm,-1,true); }
+ bool LdDir(const AtomList &d,const char *flnm,int depth,bool mkdir = true);
+ bool SvDir(const AtomList &d,const char *flnm,int depth,bool absdir);
+ bool Load(const char *flnm) { AtomList l; return LdDir(l,flnm,-1); }
+ bool Save(const char *flnm) { AtomList l; return SvDir(l,flnm,-1,true); }
+ bool LdDirXML(const AtomList &d,const char *flnm,int depth,bool mkdir = true);
+ bool SvDirXML(const AtomList &d,const char *flnm,int depth,bool absdir);
+ bool LoadXML(const char *flnm) { AtomList l; return LdDirXML(l,flnm,-1); }
+ bool SaveXML(const char *flnm) { AtomList l; return SvDirXML(l,flnm,-1,true); }
- I refs;
- const S *sym;
+ int refs;
+ const t_symbol *sym;
pooldata *nxt;
pooldir root;
private:
- static const A nullatom;
+ static const t_atom nullatom;
};
#endif