diff options
Diffstat (limited to 'externals/grill/pool')
-rw-r--r-- | externals/grill/pool/main.cpp | 50 | ||||
-rw-r--r-- | externals/grill/pool/pool.pd | 8 | ||||
-rw-r--r-- | externals/grill/pool/pool.vcproj | 8 | ||||
-rw-r--r-- | externals/grill/pool/readme.txt | 5 |
4 files changed, 53 insertions, 18 deletions
diff --git a/externals/grill/pool/main.cpp b/externals/grill/pool/main.cpp index 135872b3..0cf73ccd 100644 --- a/externals/grill/pool/main.cpp +++ b/externals/grill/pool/main.cpp @@ -9,6 +9,7 @@ WARRANTIES, see the file, "license.txt," in this distribution. */ #include "pool.h" +#include <string> #define POOL_VERSION "0.2.0pre" @@ -139,6 +140,8 @@ private: static pooldata *GetPool(const S *s); static V RmvPool(pooldata *p); + std::string MakeFilename(const C *fn) const; + FLEXT_CALLVAR_V(mg_pool,ms_pool) FLEXT_ATTRVAR_B(absdir) FLEXT_ATTRVAR_B(echo) @@ -209,7 +212,7 @@ pooldata *pool::head,*pool::tail; V pool::setup(t_classid c) { post(""); - post("pool %s - hierarchical storage object,(C)2002-2003 Thomas Grill",POOL_VERSION); + post("pool %s - hierarchical storage object, (C)2002-2003 Thomas Grill",POOL_VERSION); post(""); head = tail = NULL; @@ -874,8 +877,11 @@ V pool::load(I argc,const A *argv,BL xml) if(!flnm) post("%s - %s: no filename given",thisName(),sym); - else if(!(xml?pl->LoadXML(flnm):pl->Load(flnm))) - post("%s - %s: error loading data",thisName(),sym); + else { + string fl(MakeFilename(flnm)); + if(!(xml?pl->LoadXML(fl.c_str()):pl->Load(fl.c_str()))) + post("%s - %s: error loading data",thisName(),sym); + } echodir(); } @@ -891,8 +897,11 @@ V pool::save(I argc,const A *argv,BL xml) if(!flnm) post("%s - %s: no filename given",thisName(),sym); - else if(!(xml?pl->SaveXML(flnm):pl->Save(flnm))) - post("%s - %s: error saving data",thisName(),sym); + else { + string fl(MakeFilename(flnm)); + if(!(xml?pl->SaveXML(fl.c_str()):pl->Save(fl.c_str()))) + post("%s - %s: error saving data",thisName(),sym); + } echodir(); } @@ -908,8 +917,11 @@ V pool::lddir(I argc,const A *argv,BL xml) if(!flnm) post("%s - %s: invalid filename",thisName(),sym); - else if(!(xml?pl->LdDirXML(curdir,flnm,0):pl->LdDir(curdir,flnm,0))) - post("%s - %s: directory couldn't be loaded",thisName(),sym); + else { + string fl(MakeFilename(flnm)); + if(!(xml?pl->LdDirXML(curdir,fl.c_str(),0):pl->LdDir(curdir,fl.c_str(),0))) + post("%s - %s: directory couldn't be loaded",thisName(),sym); + } echodir(); } @@ -941,7 +953,8 @@ V pool::ldrec(I argc,const A *argv,BL xml) if(!flnm) post("%s - %s: invalid filename",thisName(),sym); else { - if(!(xml?pl->LdDirXML(curdir,flnm,depth,mkdir):pl->LdDir(curdir,flnm,depth,mkdir))) + string fl(MakeFilename(flnm)); + if(!(xml?pl->LdDirXML(curdir,fl.c_str(),depth,mkdir):pl->LdDir(curdir,fl.c_str(),depth,mkdir))) post("%s - %s: directory couldn't be saved",thisName(),sym); } @@ -960,7 +973,8 @@ V pool::svdir(I argc,const A *argv,BL xml) if(!flnm) post("%s - %s: invalid filename",thisName(),sym); else { - if(!(xml?pl->SvDirXML(curdir,flnm,0,absdir):pl->SvDir(curdir,flnm,0,absdir))) + string fl(MakeFilename(flnm)); + if(!(xml?pl->SvDirXML(curdir,fl.c_str(),0,absdir):pl->SvDir(curdir,fl.c_str(),0,absdir))) post("%s - %s: directory couldn't be saved",thisName(),sym); } @@ -979,7 +993,8 @@ V pool::svrec(I argc,const A *argv,BL xml) if(!flnm) post("%s - %s: invalid filename",thisName(),sym); else { - if(!(xml?pl->SvDirXML(curdir,flnm,-1,absdir):pl->SvDir(curdir,flnm,-1,absdir))) + string fl(MakeFilename(flnm)); + if(!(xml?pl->SvDirXML(curdir,fl.c_str(),-1,absdir):pl->SvDir(curdir,fl.c_str(),-1,absdir))) post("%s - %s: directory couldn't be saved",thisName(),sym); } @@ -1051,3 +1066,18 @@ V pool::RmvPool(pooldata *p) } } +std::string pool::MakeFilename(const C *fn) const +{ +#if FLEXT_SYS == FLEXT_SYS_PD + C *sl = strrchr(fn,'/'); + if(!sl) sl = strrchr(fn,'\\'); + if(!sl) { + const C *p = GetString(canvas_getdir(thisCanvas())); + return string(p)+'/'+fn; + } + else + return fn; +#else + return fn; +#endif +} diff --git a/externals/grill/pool/pool.pd b/externals/grill/pool/pool.pd index 3319914b..eab56fc3 100644 --- a/externals/grill/pool/pool.pd +++ b/externals/grill/pool/pool.pd @@ -1,4 +1,4 @@ -#N canvas 12 3 934 690 12;
+#N canvas 12 3 936 692 12;
#X msg 295 108 set 1 2 3;
#X obj 308 619 print K;
#X msg 607 211 getall;
@@ -94,7 +94,7 @@ #X connect 23 0 26 0;
#X restore 718 511 pd dirs;
#X text 715 485 directory operations;
-#N canvas 0 0 819 451 file 0;
+#N canvas 0 0 821 453 file 0;
#X text 117 207 save dir and subdirs;
#X text 117 165 save data in current dir;
#X text 117 253 load data into current dir;
@@ -127,6 +127,8 @@ #X msg 473 228 svxrec pool.xml;
#X msg 472 274 ldxdir pool.xml;
#X msg 472 321 ldxrec pool.xml;
+#X text 26 398 If the file name is given without a path specification
+the folder containing the current patcher will be used.;
#X connect 20 0 9 0;
#X connect 21 0 9 0;
#X connect 22 0 9 0;
@@ -202,6 +204,7 @@ Grill; #X text 332 457 can be given for optimal performance;
#X msg 428 218 get 3;
#X msg 299 227 set 3 -1 1;
+#X msg 41 518 getmethods;
#X connect 0 0 72 0;
#X connect 2 0 72 0;
#X connect 3 0 72 0;
@@ -236,3 +239,4 @@ Grill; #X connect 72 4 64 0;
#X connect 75 0 72 0;
#X connect 76 0 72 0;
+#X connect 77 0 72 0;
diff --git a/externals/grill/pool/pool.vcproj b/externals/grill/pool/pool.vcproj index 3b04751b..6370595d 100644 --- a/externals/grill/pool/pool.vcproj +++ b/externals/grill/pool/pool.vcproj @@ -24,7 +24,7 @@ Name="VCCLCompilerTool" Optimization="2" InlineFunctionExpansion="1" - AdditionalIncludeDirectories="c:\programme\audio\pd\src,f:\prog\max\flext\source" + AdditionalIncludeDirectories="f:\prog\pd\pd-cvs\src,f:\prog\max\flext\source" PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;FLEXT_SYS=2" StringPooling="TRUE" RuntimeLibrary="4" @@ -45,7 +45,7 @@ OutputFile="pd-msvc/pool.dll" LinkIncremental="1" SuppressStartupBanner="TRUE" - AdditionalLibraryDirectories="c:\programme\audio\pd\bin,f:\prog\max\flext\pd-msvc" + AdditionalLibraryDirectories="f:\prog\pd\pd-cvs\bin,f:\prog\max\flext\pd-msvc" ProgramDatabaseFile=".\pd-msvc/r/pool.pdb" ImportLibrary=".\pd-msvc/r/pool.lib" TargetMachine="1"/> @@ -89,7 +89,7 @@ <Tool Name="VCCLCompilerTool" Optimization="0" - AdditionalIncludeDirectories="c:\programme\audio\pd\src,f:\prog\max\flext\source" + AdditionalIncludeDirectories="f:\prog\pd\pd-cvs\src,f:\prog\max\flext\source" PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;FLEXT_SYS=2" BasicRuntimeChecks="3" RuntimeLibrary="5" @@ -111,7 +111,7 @@ OutputFile=".\pd-msvc/d/pool.dll" LinkIncremental="1" SuppressStartupBanner="TRUE" - AdditionalLibraryDirectories="c:\programme\audio\pd\bin,f:\prog\max\flext\pd-msvc" + AdditionalLibraryDirectories="f:\prog\pd\pd-cvs\bin,f:\prog\max\flext\pd-msvc" GenerateDebugInformation="TRUE" ProgramDatabaseFile=".\pd-msvc/d/pool.pdb" ImportLibrary=".\pd-msvc/d/pool.lib" diff --git a/externals/grill/pool/readme.txt b/externals/grill/pool/readme.txt index 4812eb28..2985a3a1 100644 --- a/externals/grill/pool/readme.txt +++ b/externals/grill/pool/readme.txt @@ -46,8 +46,8 @@ pd - darwin (MacOSX): --------------------- o GCC: edit "config-pd-darwin.txt" & run "sh build-pd-darwin.sh" -Max/MSP - MacOS9: ------------------ +Max/MSP - MacOS9/X: +------------------- o CodeWarrior: edit "pool.cw" and build ---------------------------------------------------------------------------- @@ -62,6 +62,7 @@ Version history: - extensive use of hashing for keys and directories - database can be saved/loaded as XML data - fixed bug with stored numbers starting with - or + +- file names without paths will use the folder of the current patcher 0.1.0: - first public release |