[PD-cvs] externals/grill/pool/source pool.cpp,1.14,1.15
Thomas Grill
xovo at users.sourceforge.net
Tue Apr 19 15:08:40 CEST 2005
Update of /cvsroot/pure-data/externals/grill/pool/source
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11080/source
Modified Files:
pool.cpp
Log Message:
added saving/loading of spaces and other special characters (escaping)
more symbol escaping
Index: pool.cpp
===================================================================
RCS file: /cvsroot/pure-data/externals/grill/pool/source/pool.cpp,v
retrieving revision 1.14
retrieving revision 1.15
diff -C2 -d -r1.14 -r1.15
*** pool.cpp 25 Mar 2005 04:53:43 -0000 1.14
--- pool.cpp 19 Apr 2005 13:08:32 -0000 1.15
***************
*** 476,480 ****
char tmp[1024];
char *m = tmp; // write position
!
// go to next whitespace
for(bool escaped = false;; ++c)
--- 476,488 ----
char tmp[1024];
char *m = tmp; // write position
!
! bool issymbol;
! if(*c == '"') {
! issymbol = true;
! ++c;
! }
! else
! issymbol = false;
!
// go to next whitespace
for(bool escaped = false;; ++c)
***************
*** 487,493 ****
escaped = true;
}
else if(!*c || (isspace(*c) && !escaped)) {
! *m = 0;
! break;
}
else {
--- 495,508 ----
escaped = true;
}
+ else if(*c == '"' && issymbol && !escaped) {
+ // end of string
+ ++c;
+ FLEXT_ASSERT(!*c || isspace(*c));
+ *m = 0;
+ break;
+ }
else if(!*c || (isspace(*c) && !escaped)) {
! *m = 0;
! break;
}
else {
***************
*** 500,504 ****
float fres;
// first try float
! if(sscanf(tmp,"%f",&fres) == 1) {
if(a) {
int ires = (int)fres; // try a cast
--- 515,519 ----
float fres;
// first try float
! if(!issymbol && sscanf(tmp,"%f",&fres) == 1) {
if(a) {
int ires = (int)fres; // try a cast
***************
*** 558,561 ****
--- 573,577 ----
case A_SYMBOL: {
const char *c = flext::GetString(flext::GetSymbol(a));
+ os << '"';
for(; *c; ++c) {
if(isspace(*c) || *c == '\\' || *c == ',')
***************
*** 563,566 ****
--- 579,583 ----
os << *c;
}
+ os << '"';
break;
}
More information about the Pd-cvs
mailing list