diff options
| author | Bent Bisballe Nyeng <deva@aasimon.org> | 2013-06-29 22:04:47 +0200 | 
|---|---|---|
| committer | Bent Bisballe Nyeng <deva@aasimon.org> | 2013-06-29 22:04:47 +0200 | 
| commit | 77cd7380d951b136c7c505ef9ca580643fcfc9e1 (patch) | |
| tree | 636542262bf877c57676a33cd1d40ac15941c484 | |
| parent | a3c8cfd881371b5675b1e714f9953685299e8879 (diff) | |
Move ConfigParser to its own file.
| -rw-r--r-- | src/Makefile.am | 2 | ||||
| -rw-r--r-- | src/Makefile.am.drumgizmo | 1 | ||||
| -rw-r--r-- | src/configparser.cc | 73 | ||||
| -rw-r--r-- | src/configparser.h | 49 | ||||
| -rw-r--r-- | src/drumgizmo.cc | 46 | 
5 files changed, 126 insertions, 45 deletions
| diff --git a/src/Makefile.am b/src/Makefile.am index 75c209c..197485b 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -8,6 +8,7 @@ EXTRA_DIST = \  	channel.h \  	channelmixer.h \  	configuration.h \ +	configparser.h \  	drumgizmo.h \  	drumkit.h \  	drumkitloader.h \ @@ -37,6 +38,7 @@ EXTRA_DIST = \  	channel.cc \  	channelmixer.cc \  	configuration.cc \ +	configparser.cc \  	drumgizmo.cc \  	drumkit.cc \  	drumkitloader.cc \ diff --git a/src/Makefile.am.drumgizmo b/src/Makefile.am.drumgizmo index b1ad862..606ed27 100644 --- a/src/Makefile.am.drumgizmo +++ b/src/Makefile.am.drumgizmo @@ -4,6 +4,7 @@ DRUMGIZMO_SOURCES = \  	$(top_srcdir)/src/channel.cc \  	$(top_srcdir)/src/channelmixer.cc \  	$(top_srcdir)/src/configuration.cc \ +	$(top_srcdir)/src/configparser.cc \  	$(top_srcdir)/src/drumgizmo.cc \  	$(top_srcdir)/src/drumkit.cc \  	$(top_srcdir)/src/drumkitloader.cc \ diff --git a/src/configparser.cc b/src/configparser.cc new file mode 100644 index 0000000..b04f6fc --- /dev/null +++ b/src/configparser.cc @@ -0,0 +1,73 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/*************************************************************************** + *            configparser.cc + * + *  Sat Jun 29 21:55:02 CEST 2013 + *  Copyright 2013 Bent Bisballe Nyeng + *  deva@aasimon.org + ****************************************************************************/ + +/* + *  This file is part of DrumGizmo. + * + *  DrumGizmo is free software; you can redistribute it and/or modify + *  it under the terms of the GNU General Public License as published by + *  the Free Software Foundation; either version 2 of the License, or + *  (at your option) any later version. + * + *  DrumGizmo 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 for more details. + * + *  You should have received a copy of the GNU General Public License + *  along with DrumGizmo; if not, write to the Free Software + *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA. + */ +#include "configparser.h" + +#include "saxparser.h" + +class ConfigParser : public SAXParser { +public: +  ConfigParser() +  { +    str = NULL; +  } + +  void characterData(std::string &data) +  { +    if(str) str->append(data); +  } + +  void startTag(std::string name, attr_t attr) +  { +    if(name == "value" && attr.find("name") != attr.end()) { +      values[attr["name"]] = ""; +      str = &values[attr["name"]]; +    } +  } + +  void endTag(std::string name) +  { +    if(name == "value") str = NULL; +  } + +  std::string value(std::string name, std::string def = "") +  { +    if(values.find(name) == values.end()) return def; +    return values[name]; +  } + +  void parseError(char *buf, size_t len, std::string error, int lineno) +  { +    std::string buffer; +    buffer.append(buf, len); +    ERR(configparser, "sax parser error '%s' at line %d. " +        "Buffer: [%d bytes]<%s>\n", +        error.c_str(), lineno, len, buffer.c_str()); +  } + +  std::map<std::string, std::string> values; +  std::string *str; +}; diff --git a/src/configparser.h b/src/configparser.h new file mode 100644 index 0000000..e67babd --- /dev/null +++ b/src/configparser.h @@ -0,0 +1,49 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/*************************************************************************** + *            configparser.h + * + *  Sat Jun 29 21:55:02 CEST 2013 + *  Copyright 2013 Bent Bisballe Nyeng + *  deva@aasimon.org + ****************************************************************************/ + +/* + *  This file is part of DrumGizmo. + * + *  DrumGizmo is free software; you can redistribute it and/or modify + *  it under the terms of the GNU General Public License as published by + *  the Free Software Foundation; either version 2 of the License, or + *  (at your option) any later version. + * + *  DrumGizmo 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 for more details. + * + *  You should have received a copy of the GNU General Public License + *  along with DrumGizmo; if not, write to the Free Software + *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA. + */ +#ifndef __DRUMGIZMO_CONFIGPARSER_H__ +#define __DRUMGIZMO_CONFIGPARSER_H__ + +#include <map> + +#include "saxparser.h" + +class ConfigParser : public SAXParser { +public: +  ConfigParser(); + +  void characterData(std::string &data); +  void startTag(std::string name, attr_t attr); +  void endTag(std::string name); +  std::string value(std::string name, std::string def = ""); +  void parseError(char *buf, size_t len, std::string error, int lineno); + +private: +  std::map<std::string, std::string> values; +  std::string *str; +}; + +#endif/*__DRUMGIZMO_CONFIGPARSER_H__*/ diff --git a/src/drumgizmo.cc b/src/drumgizmo.cc index cd0196c..4732c27 100644 --- a/src/drumgizmo.cc +++ b/src/drumgizmo.cc @@ -39,6 +39,7 @@  #include "drumkitparser.h"  #include "audioinputenginemidi.h"  #include "configuration.h" +#include "configparser.h"  DrumGizmo::DrumGizmo(AudioOutputEngine *o, AudioInputEngine *i)    : MessageReceiver(MSGRCV_ENGINE), @@ -448,51 +449,6 @@ std::string DrumGizmo::configString()      "</config>";  } -#include "saxparser.h" - -class ConfigParser : public SAXParser { -public: -  ConfigParser() -  { -    str = NULL; -  } - -  void characterData(std::string &data) -  { -    if(str) str->append(data); -  } - -  void startTag(std::string name, attr_t attr) -  { -    if(name == "value" && attr.find("name") != attr.end()) { -      values[attr["name"]] = ""; -      str = &values[attr["name"]]; -    } -  } - -  void endTag(std::string name) -  { -    if(name == "value") str = NULL; -  } - -  std::string value(std::string name, std::string def = "") -  { -    if(values.find(name) == values.end()) return def; -    return values[name]; -  } - -  void parseError(char *buf, size_t len, std::string error, int lineno) -  { -    std::string buffer; -    buffer.append(buf, len); -    ERR(configparser, "sax parser error '%s' at line %d. " -        "Buffer: [%d bytes]<%s>\n", -        error.c_str(), lineno, len, buffer.c_str()); -  } - -  std::map<std::string, std::string> values; -  std::string *str; -};  bool DrumGizmo::setConfigString(std::string cfg)  { | 
