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:
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