From e40fc849149dd97c248866a4a1d026dda5e57b62 Mon Sep 17 00:00:00 2001 From: Robert Jonsson Date: Mon, 7 Mar 2011 19:01:11 +0000 Subject: clean3 --- .../synti/zynaddsubfx/Misc/XMLwrapper.h | 175 +++++++++++++++++++++ 1 file changed, 175 insertions(+) create mode 100644 attic/muse_qt4_evolution/synti/zynaddsubfx/Misc/XMLwrapper.h (limited to 'attic/muse_qt4_evolution/synti/zynaddsubfx/Misc/XMLwrapper.h') diff --git a/attic/muse_qt4_evolution/synti/zynaddsubfx/Misc/XMLwrapper.h b/attic/muse_qt4_evolution/synti/zynaddsubfx/Misc/XMLwrapper.h new file mode 100644 index 00000000..765622a2 --- /dev/null +++ b/attic/muse_qt4_evolution/synti/zynaddsubfx/Misc/XMLwrapper.h @@ -0,0 +1,175 @@ +/* + ZynAddSubFX - a software synthesizer + + XML.h - XML wrapper + Copyright (C) 2003-2005 Nasca Octavian Paul + Author: Nasca Octavian Paul + + This program is free software; you can redistribute it and/or modify + it under the terms of version 2 of the GNU General Public License + as published by the Free Software Foundation. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License (version 2) for more details. + + You should have received a copy of the GNU General Public License (version 2) + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +*/ + +#include +#ifndef REALTYPE +#define REALTYPE float +#endif + +#ifndef XML_WRAPPER_H +#define XML_WRAPPER_H + +#define TMPSTR_SIZE 50 + +//the maxim tree depth +#define STACKSIZE 100 + +class XMLwrapper{ + public: + XMLwrapper(); + ~XMLwrapper(); + + /********************************/ + /* SAVE to XML */ + /********************************/ + + //returns 0 if ok or -1 if the file cannot be saved + int saveXMLfile(char *filename); + + //returns the new allocated string that contains the XML data (used for clipboard) + //the string is NULL terminated + char *getXMLdata(); + + //add simple parameter (name and value) + void addpar(char *name,int val); + void addparreal(char *name,REALTYPE val); + + //add boolean parameter (name and boolean value) + //if the value is 0 => "yes", else "no" + void addparbool(char *name,int val); + + //add string parameter (name and string) + void addparstr(char *name,char *val); + + //add a branch + void beginbranch(char *name); + void beginbranch(char *name, int id); + + //this must be called after each branch (nodes that contains child nodes) + void endbranch(); + + /********************************/ + /* LOAD from XML */ + /********************************/ + + //returns 0 if ok or -1 if the file cannot be loaded + int loadXMLfile(const char *filename); + + //used by the clipboard + bool putXMLdata(char *xmldata); + + //enter into the branch + //returns 1 if is ok, or 0 otherwise + int enterbranch(char *name); + + + //enter into the branch with id + //returns 1 if is ok, or 0 otherwise + int enterbranch(char *name, int id); + + //exits from a branch + void exitbranch(); + + //get the the branch_id and limits it between the min and max + //if min==max==0, it will not limit it + //if there isn't any id, will return min + //this must be called only imediately after enterbranch() + int getbranchid(int min, int max); + + //it returns the parameter and limits it between min and max + //if min==max==0, it will not limit it + //if no parameter will be here, the defaultpar will be returned + int getpar(char *name,int defaultpar,int min,int max); + + //the same as getpar, but the limits are 0 and 127 + int getpar127(char *name,int defaultpar); + + int getparbool(char *name,int defaultpar); + + void getparstr(char *name,char *par,int maxstrlen); + REALTYPE getparreal(char *name,REALTYPE defaultpar); + REALTYPE getparreal(char *name,REALTYPE defaultpar,REALTYPE min,REALTYPE max); + + bool minimal;//false if all parameters will be stored (used only for clipboard) + + struct { + bool PADsynth_used; + }information; + + //opens a file and parse only the "information" data on it + //returns "true" if all went ok or "false" on errors + bool checkfileinformation(char *filename); + + private: + + int dosavefile(char *filename,int compression,char *xmldata); + char *doloadfile(const char *filename); + + + mxml_node_t *tree;//all xml data + mxml_node_t *root;//xml data used by zynaddsubfx + mxml_node_t *node;//current node + mxml_node_t *info;//this node is used to store the information about the data + + //adds params like this: + // + //returns the node + mxml_node_t *addparams0(char *name); + + //adds params like this: + // + //returns the node + mxml_node_t *addparams1(char *name,char *par1,char *val1); + + //adds params like this: + // + //returns the node + mxml_node_t *addparams2(char *name,char *par1,char *val1,char *par2, char *val2); + + char *int2str(int x); + char *real2str(REALTYPE x); + + int str2int(const char *str); + REALTYPE str2real(const char *str); + + char tmpstr[TMPSTR_SIZE]; + + + //this is used to store the parents + mxml_node_t *parentstack[STACKSIZE]; + int stackpos; + + + void push(mxml_node_t *node); + mxml_node_t *pop(); + mxml_node_t *peek(); + + //theese are used to store the values + struct{ + struct { + int major,minor; + }xml_version; + }values; + +}; + +#endif -- cgit v1.2.3