[PD-cvs] externals/grill/pool/source data.cpp, 1.5, 1.6 main.cpp, 1.9, 1.10 pool.cpp, 1.17, 1.18 pool.h, 1.8, 1.9

Thomas Grill xovo at users.sourceforge.net
Tue Jun 7 16:14:53 CEST 2005


Update of /cvsroot/pure-data/externals/grill/pool/source
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27423/source

Modified Files:
	data.cpp main.cpp pool.cpp pool.h 
Log Message:
added saving/loading of spaces and other special characters (escaping)
use AtomListStatic where feasible
better method for discriminating numbers and symbols - by Frank Barknecht


Index: data.cpp
===================================================================
RCS file: /cvsroot/pure-data/externals/grill/pool/source/data.cpp,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** data.cpp	4 Jan 2005 05:00:38 -0000	1.5
--- data.cpp	7 Jun 2005 14:14:50 -0000	1.6
***************
*** 33,37 ****
  const A pooldata::nullatom = { A_NULL };
  
! I pooldata::GetAll(const AtomList &d,A *&keys,AtomList *&lst)
  {
  	pooldir *pd = root.GetDir(d);
--- 33,37 ----
  const A pooldata::nullatom = { A_NULL };
  
! I pooldata::GetAll(const AtomList &d,A *&keys,Atoms *&lst)
  {
  	pooldir *pd = root.GetDir(d);
***************
*** 144,148 ****
  		if(t) {
  			ofstream file(t);
! 			AtomList tmp;
  			if(absdir) tmp = d;
  			return file.good() && pd->SvDir(file,depth,tmp);
--- 144,148 ----
  		if(t) {
  			ofstream file(t);
! 			Atoms tmp;
  			if(absdir) tmp = d;
  			return file.good() && pd->SvDir(file,depth,tmp);
***************
*** 191,195 ****
  		if(t) {
  			ofstream file(t);
! 			AtomList tmp;
  			if(absdir) tmp = d;
              if(file.good()) {
--- 191,195 ----
  		if(t) {
  			ofstream file(t);
! 			Atoms tmp;
  			if(absdir) tmp = d;
              if(file.good()) {

Index: main.cpp
===================================================================
RCS file: /cvsroot/pure-data/externals/grill/pool/source/main.cpp,v
retrieving revision 1.9
retrieving revision 1.10
diff -C2 -d -r1.9 -r1.10
*** main.cpp	25 Mar 2005 04:53:43 -0000	1.9
--- main.cpp	7 Jun 2005 14:14:50 -0000	1.10
***************
*** 142,146 ****
  	I vcnt,dcnt;
  	pooldata *pl;
! 	AtomList curdir;
  	pooldir *clip;
  	const S *holdname;
--- 142,146 ----
  	I vcnt,dcnt;
  	pooldata *pl;
! 	Atoms curdir;
  	pooldir *clip;
  	const S *holdname;
***************
*** 391,394 ****
--- 391,395 ----
  V pool::m_reset() 
  {
+     curdir();
  	pl->Reset();
  }
***************
*** 409,413 ****
  		post("%s - %s: invalid directory name",thisName(),GetString(thisTag()));
  	else {
! 		AtomList ndir;
  		if(abs) ndir(argc,argv);
  		else (ndir = curdir).Append(argc,argv);
--- 410,414 ----
  		post("%s - %s: invalid directory name",thisName(),GetString(thisTag()));
  	else {
! 		Atoms ndir;
  		if(abs) ndir(argc,argv);
  		else (ndir = curdir).Append(argc,argv);
***************
*** 428,432 ****
  		post("%s - %s: invalid directory name",thisName(),GetString(thisTag()));
  	else {
! 		AtomList prv(curdir);
  		if(abs) curdir(argc,argv);
  		else curdir.Append(argc,argv);
--- 429,433 ----
  		post("%s - %s: invalid directory name",thisName(),GetString(thisTag()));
  	else {
! 		Atoms prv(curdir);
  		if(abs) curdir(argc,argv);
  		else curdir.Append(argc,argv);
***************
*** 455,459 ****
  	}
  
! 	AtomList prv(curdir);
  
  	if(lvls > curdir.Count()) {
--- 456,460 ----
  	}
  
! 	Atoms prv(curdir);
  
  	if(lvls > curdir.Count()) {
***************
*** 506,510 ****
  	}
  	else 
! 		if(!pl->Seti(curdir,GetAInt(argv[0]),new AtomList(argc-1,argv+1)))
  			post("%s - %s: value couldn't be set",thisName(),GetString(thisTag()));
  
--- 507,511 ----
  	}
  	else 
! 		if(!pl->Seti(curdir,GetAInt(argv[0]),new Atoms(argc-1,argv+1)))
  			post("%s - %s: value couldn't be set",thisName(),GetString(thisTag()));
  
***************
*** 618,622 ****
  I pool::getrec(const t_symbol *tag,I level,BL order,get_t how,const AtomList &rdir)
  {
! 	AtomList gldir(curdir);
  	gldir.Append(rdir);
  
--- 619,623 ----
  I pool::getrec(const t_symbol *tag,I level,BL order,get_t how,const AtomList &rdir)
  {
! 	Atoms gldir(curdir);
  	gldir.Append(rdir);
  
***************
*** 632,636 ****
          case get_norm: {
  		    A *k;
! 		    AtomList *r;
  		    I cnt = pl->GetAll(gldir,k,r);
  		    if(!k) 
--- 633,637 ----
          case get_norm: {
  		    A *k;
! 		    Atoms *r;
  		    I cnt = pl->GetAll(gldir,k,r);
  		    if(!k) 
***************
*** 658,662 ****
  			I lv = level > 0?level-1:-1;
  			for(I i = 0; i < cnt; ++i) {
! 				ret += getrec(tag,lv,order,how,AtomList(rdir).Append(*r[i]));
  			}
  			delete[] r;
--- 659,663 ----
  			I lv = level > 0?level-1:-1;
  			for(I i = 0; i < cnt; ++i) {
! 				ret += getrec(tag,lv,order,how,Atoms(rdir).Append(*r[i]));
  			}
  			delete[] r;
***************
*** 723,727 ****
  I pool::getsub(const S *tag,I level,BL order,get_t how,const AtomList &rdir)
  {
! 	AtomList gldir(curdir);
  	gldir.Append(rdir);
  	
--- 724,728 ----
  I pool::getsub(const S *tag,I level,BL order,get_t how,const AtomList &rdir)
  {
! 	Atoms gldir(curdir);
  	gldir.Append(rdir);
  	
***************
*** 736,740 ****
  		I lv = level > 0?level-1:-1;
  		for(I i = 0; i < cnt; ++i) {
! 			AtomList ndir(absdir?gldir:rdir);
  			ndir.Append(*r[i]);
              ++ret;
--- 737,741 ----
  		I lv = level > 0?level-1:-1;
  		for(I i = 0; i < cnt; ++i) {
! 			Atoms ndir(absdir?gldir:rdir);
  			ndir.Append(*r[i]);
              ++ret;
***************
*** 748,752 ****
  
  			if(level != 0)
! 				ret += getsub(tag,lv,order,how,AtomList(rdir).Append(*r[i]));
  		}
  		delete[] r;
--- 749,753 ----
  
  			if(level != 0)
! 				ret += getsub(tag,lv,order,how,Atoms(rdir).Append(*r[i]));
  		}
  		delete[] r;
***************
*** 873,877 ****
  	}
  
! 	AtomList svdir(curdir);
      if(fromroot) curdir.Clear();
  
--- 874,878 ----
  	}
  
! 	Atoms svdir(curdir);
      if(fromroot) curdir.Clear();
  

Index: pool.cpp
===================================================================
RCS file: /cvsroot/pure-data/externals/grill/pool/source/pool.cpp,v
retrieving revision 1.17
retrieving revision 1.18
diff -C2 -d -r1.17 -r1.18
*** pool.cpp	19 Apr 2005 20:55:56 -0000	1.17
--- pool.cpp	7 Jun 2005 14:14:51 -0000	1.18
***************
*** 79,83 ****
  poolval *poolval::Dup() const
  {
! 	return new poolval(key,data?new AtomList(*data):NULL); 
  }
  
--- 79,83 ----
  poolval *poolval::Dup() const
  {
! 	return new poolval(key,data?new Atoms(*data):NULL); 
  }
  
***************
*** 315,319 ****
  		}
  		else
! 			ret = new AtomList(*ix->data);
  		return ret;
  	}
--- 315,319 ----
  		}
  		else
! 			ret = new Atoms(*ix->data);
  		return ret;
  	}
***************
*** 362,370 ****
  }
  
! I pooldir::GetAll(A *&keys,AtomList *&lst,BL cut)
  {
  	I cnt = CntAll();
  	keys = new A[cnt];
! 	lst = new AtomList[cnt];
  
  	for(I i = 0,vix = 0; vix < vsize; ++vix) {
--- 362,370 ----
  }
  
! I pooldir::GetAll(A *&keys,Atoms *&lst,BL cut)
  {
  	I cnt = CntAll();
  	keys = new A[cnt];
! 	lst = new Atoms[cnt];
  
  	for(I i = 0,vix = 0; vix < vsize; ++vix) {
***************
*** 414,418 ****
  	for(I vi = 0; vi < p->vsize; ++vi) {
  		for(poolval *ix = p->vals[vi].v; ix; ix = ix->nxt) {
! 			SetVal(ix->key,new AtomList(*ix->data),repl);
  		}
  	}
--- 414,418 ----
  	for(I vi = 0; vi < p->vsize; ++vi) {
  		for(poolval *ix = p->vals[vi].v; ix; ix = ix->nxt) {
! 			SetVal(ix->key,new Atoms(*ix->data),repl);
  		}
  	}
***************
*** 447,451 ****
  		for(I vi = 0; vi < vsize; ++vi) {
  			for(poolval *ix = vals[vi].v; ix; ix = ix->nxt) {
! 				p->SetVal(ix->key,new AtomList(*ix->data));
  			}
  		}
--- 447,451 ----
  		for(I vi = 0; vi < vsize; ++vi) {
  			for(poolval *ix = vals[vi].v; ix; ix = ix->nxt) {
! 				p->SetVal(ix->key,new Atoms(*ix->data));
  			}
  		}
***************
*** 603,607 ****
  {
  	for(I i = 1; !is.eof(); ++i) {
! 		AtomList d,k,*v = new AtomList;
  		BL r = 
              ReadAtoms(is,d,',') && 
--- 603,607 ----
  {
  	for(I i = 1; !is.eof(); ++i) {
! 		Atoms d,k,*v = new Atoms;
  		BL r = 
              ReadAtoms(is,d,',') && 
***************
*** 657,661 ****
  		for(I di = 0; di < dsize; ++di) {
  			for(pooldir *ix = dirs[di].d; ix; ix = ix->nxt) {
! 				ix->SvDir(os,nd,AtomList(dir).Append(ix->dir));
  			}
  		}
--- 657,661 ----
  		for(I di = 0; di < dsize; ++di) {
  			for(pooldir *ix = dirs[di].d; ix; ix = ix->nxt) {
! 				ix->SvDir(os,nd,Atoms(dir).Append(ix->dir));
  			}
  		}
***************
*** 784,788 ****
  BL pooldir::LdDirXMLRec(istream &is,I depth,BL mkdir,AtomList &d)
  {
!     AtomList k,v;
      bool inval = false,inkey = false,indata = false;
      int cntval = 0;
--- 784,788 ----
  BL pooldir::LdDirXMLRec(istream &is,I depth,BL mkdir,AtomList &d)
  {
!     Atoms k,v;
      bool inval = false,inkey = false,indata = false;
      int cntval = 0;
***************
*** 837,841 ****
                      post("pool - XML load: dir key must be given prior to subdirs, ignoring items");
  
!                 AtomList dnext(d.Count()+1);
                  // copy existing dir
                  dnext.Set(d.Count(),d.Atoms(),0,false);
--- 837,841 ----
                      post("pool - XML load: dir key must be given prior to subdirs, ignoring items");
  
!                 Atoms dnext(d.Count()+1);
                  // copy existing dir
                  dnext.Set(d.Count(),d.Atoms(),0,false);
***************
*** 881,885 ****
  		        		    pooldir *nd = mkdir?AddDir(d):GetDir(d);
          				    if(nd) 
!                                 nd->SetVal(k[0],new AtomList(v));
                              else
                                  post("pool - XML load: value key must be exactly one word, value not stored");
--- 881,885 ----
  		        		    pooldir *nd = mkdir?AddDir(d):GetDir(d);
          				    if(nd) 
!                                 nd->SetVal(k[0],new Atoms(v));
                              else
                                  post("pool - XML load: value key must be exactly one word, value not stored");
***************
*** 930,934 ****
          if(tag == "pool") {
              if(tag.type == xmltag::t_start) {
!                 AtomList empty; // must be a separate definition for gcc
                  LdDirXMLRec(is,depth,mkdir,empty);
              }
--- 930,934 ----
          if(tag == "pool") {
              if(tag.type == xmltag::t_start) {
!                 Atoms empty; // must be a separate definition for gcc
                  LdDirXMLRec(is,depth,mkdir,empty);
              }
***************
*** 981,985 ****
  		for(I di = 0; di < dsize; ++di) {
  			for(pooldir *ix = dirs[di].d; ix; ix = ix->nxt) {
! 				ix->SvDirXML(os,nd,AtomList(dir).Append(ix->dir),ind+lvls);
  			}
  		}
--- 981,985 ----
  		for(I di = 0; di < dsize; ++di) {
  			for(pooldir *ix = dirs[di].d; ix; ix = ix->nxt) {
! 				ix->SvDirXML(os,nd,Atoms(dir).Append(ix->dir),ind+lvls);
  			}
  		}

Index: pool.h
===================================================================
RCS file: /cvsroot/pure-data/externals/grill/pool/source/pool.h,v
retrieving revision 1.8
retrieving revision 1.9
diff -C2 -d -r1.8 -r1.9
*** pool.h	4 Jan 2005 05:00:39 -0000	1.8
--- pool.h	7 Jun 2005 14:14:51 -0000	1.9
***************
*** 16,21 ****
  #include <flext.h>
  
! #if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 406)
! #error You need at least flext version 0.4.6
  #endif
  
--- 16,21 ----
  #include <flext.h>
  
! #if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 500)
! #error You need at least flext version 0.5.0
  #endif
  
***************
*** 33,36 ****
--- 33,38 ----
  typedef t_symbol S;
  
+ typedef flext::AtomListStatic<8> Atoms;
+ 
  class poolval:
  	public flext
***************
*** 76,80 ****
  	AtomList *GetVal(const A &key,BL cut = false);
  	I CntAll() const;
! 	I GetAll(A *&keys,AtomList *&lst,BL cut = false);
  	I PrintAll(char *buf,int len) const;
  	I GetKeys(AtomList &keys);
--- 78,82 ----
  	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);
***************
*** 219,223 ****
  
  	I PrintAll(const AtomList &d);
! 	I GetAll(const AtomList &d,A *&keys,AtomList *&lst);
  
      I CntSub(const AtomList &d)
--- 221,225 ----
  
  	I PrintAll(const AtomList &d);
! 	I GetAll(const AtomList &d,A *&keys,Atoms *&lst);
  
      I CntSub(const AtomList &d)





More information about the Pd-cvs mailing list