From 77cd7380d951b136c7c505ef9ca580643fcfc9e1 Mon Sep 17 00:00:00 2001 From: Bent Bisballe Nyeng Date: Sat, 29 Jun 2013 22:04:47 +0200 Subject: Move ConfigParser to its own file. --- src/Makefile.am | 2 ++ src/Makefile.am.drumgizmo | 1 + src/configparser.cc | 73 +++++++++++++++++++++++++++++++++++++++++++++++ src/configparser.h | 49 +++++++++++++++++++++++++++++++ src/drumgizmo.cc | 46 +---------------------------- 5 files changed, 126 insertions(+), 45 deletions(-) create mode 100644 src/configparser.cc create mode 100644 src/configparser.h 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 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 + +#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 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() ""; } -#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 values; - std::string *str; -}; bool DrumGizmo::setConfigString(std::string cfg) { -- cgit v1.2.3