zynaddsubfx

ZynAddSubFX open source synthesizer
Log | Files | Refs | Submodules | LICENSE

commit 6e114bec1aeba28ac764467ad3b48600266819fb
parent 54ceb82e758f6ac48a0edbac683609ff496b0d55
Author: fundamental <mark.d.mccurry@gmail.com>
Date:   Fri, 11 Sep 2009 11:00:08 -0400

Replaced 3 methods with 1 vararg one

Replaced the three private addparams methods in XMLwrapper with one variable
argument addparams method

Diffstat:
MChangeLog | 2++
Msrc/Misc/XMLwrapper.cpp | 51++++++++++++++++++++++++++-------------------------
Msrc/Misc/XMLwrapper.h | 28++++++++++------------------
3 files changed, 38 insertions(+), 43 deletions(-)

diff --git a/ChangeLog b/ChangeLog @@ -897,3 +897,5 @@ - Moved PADsynth_used from public struct to has/set methods in XMLwrapper - Created wrapper functions, so that XMLwrapper can be somewhat usable when const + - Removed multiple addparam methods and replaced it with one + variable argument function diff --git a/src/Misc/XMLwrapper.cpp b/src/Misc/XMLwrapper.cpp @@ -114,7 +114,7 @@ XMLwrapper::XMLwrapper() mxmlElementSetAttr(root,"ZynAddSubFX-author","Nasca Octavian Paul"); //make the empty branch that will contain the information parameters - info=addparams0("INFORMATION"); + info=addparams("INFORMATION",0); //save zynaddsubfx specifications beginbranch("BASE_PARAMETERS"); @@ -220,18 +220,18 @@ int XMLwrapper::dosavefile(const char *filename,int compression,const char *xmld void XMLwrapper::addpar(const string &name,int val) { - addparams2("par","name",name.c_str(),"value",int2str(val)); + addparams("par",2,"name",name.c_str(),"value",int2str(val)); }; void XMLwrapper::addparreal(const string &name,REALTYPE val) { - addparams2("par_real","name",name.c_str(),"value",real2str(val)); + addparams("par_real",2,"name",name.c_str(),"value",real2str(val)); }; void XMLwrapper::addparbool(const string &name,int val) { - if (val!=0) addparams2("par_bool","name",name.c_str(),"value","yes"); - else addparams2("par_bool","name",name.c_str(),"value","no"); + if (val!=0) addparams("par_bool",2,"name",name.c_str(),"value","yes"); + else addparams("par_bool",2,"name",name.c_str(),"value","no"); }; void XMLwrapper::addparstr(const string &name,const string &val) @@ -247,7 +247,7 @@ void XMLwrapper::beginbranch(const string &name) if(verbose) cout << "beginbranch()" << name << endl; push(node); - node=addparams0(name.c_str()); + node=addparams(name.c_str(),0); }; void XMLwrapper::beginbranch(const string &name,int id) @@ -255,7 +255,7 @@ void XMLwrapper::beginbranch(const string &name,int id) if(verbose) cout << "beginbranch(" << id << ")" << name << endl; push(node); - node=addparams1(name.c_str(),"id",int2str(id)); + node=addparams(name.c_str(),1,"id",int2str(id)); }; void XMLwrapper::endbranch() @@ -496,27 +496,28 @@ REALTYPE XMLwrapper::str2real(const char *str) const return(result); }; - -mxml_node_t *XMLwrapper::addparams0(const char *name) const +mxml_node_t *XMLwrapper::addparams(const char *name, unsigned int params, ...) const { - mxml_node_t *element=mxmlNewElement(node,name); - return(element); -}; + /**@todo make this function send out a good error message if something goes + * wrong**/ + mxml_node_t *element=mxmlNewElement(node, name); -mxml_node_t *XMLwrapper::addparams1(const char *name,const char *par1,const char *val1) const -{ - mxml_node_t *element=mxmlNewElement(node,name); - mxmlElementSetAttr(element,par1,val1); - return(element); -}; + if(params){ + va_list variableList; + va_start(variableList, params); -mxml_node_t *XMLwrapper::addparams2(const char *name,const char *par1,const char *val1,const char *par2, const char *val2) const -{ - mxml_node_t *element=mxmlNewElement(node,name); - mxmlElementSetAttr(element,par1,val1); - mxmlElementSetAttr(element,par2,val2); - return(element); -}; + const char *ParamName; + const char *ParamValue; + while(params--){ + ParamName = va_arg(variableList, const char *); + ParamValue = va_arg(variableList, const char *); + if(verbose) + cout << "addparams()[" << params <<"]=" << name << " " << ParamName <<"=\"" << ParamValue << "\"" << endl; + mxmlElementSetAttr(element, ParamName, ParamValue); + } + } + return element; +} void XMLwrapper::push(mxml_node_t *node) { diff --git a/src/Misc/XMLwrapper.h b/src/Misc/XMLwrapper.h @@ -239,25 +239,17 @@ private: mxml_node_t *info;/**<Node used to store the information about the data*/ /** - * Adds params like this: - * <name>. - * @returns The node + * Create mxml_node_t with specified name and parameters + * + * Results should look like: + * <name optionalParam1="value1" optionalParam2="value2" ...> + * + * @param name The name of the xml node + * @param params The number of the attributes + * @param ... const char * pairs that are in the format attribute_name, + * attribute_value */ - mxml_node_t *addparams0(const char *name) const; - - /** - * Adds params like this: - * <name par1="val1">. - * @returns The node - */ - mxml_node_t *addparams1(const char *name,const char *par1,const char *val1) const; - - /** - * Adds params like this: - * <name par1="val1" par2="val2">. - * @returns the node - */ - mxml_node_t *addparams2(const char *name,const char *par1,const char *val1,const char *par2, const char *val2) const; + mxml_node_t *addparams(const char *name, unsigned int params, ...) const; /** * Convert integer to string