diff options
Diffstat (limited to 'server/src/macrotool/fieldnamescanner.cc')
-rw-r--r-- | server/src/macrotool/fieldnamescanner.cc | 158 |
1 files changed, 0 insertions, 158 deletions
diff --git a/server/src/macrotool/fieldnamescanner.cc b/server/src/macrotool/fieldnamescanner.cc deleted file mode 100644 index 9c436fb..0000000 --- a/server/src/macrotool/fieldnamescanner.cc +++ /dev/null @@ -1,158 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim: set et sw=2 ts=2: */ -/*************************************************************************** - * fieldnamescanner.cc - * - * Wed Jan 26 09:21:58 CET 2011 - * Copyright 2011 Bent Bisballe Nyeng - * deva@aasimon.org - ****************************************************************************/ - -/* - * This file is part of Pracro. - * - * Pracro 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. - * - * Pracro 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 Pracro; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. - */ -#include "fieldnamescanner.h" - -#include <stdio.h> - -#include "util.h" - -#include "macroparser.h" -#include "templateparser.h" -#include "configuration.h" -#include "exception.h" -#include "macrolist.h" - -#include "debug.h" - -fieldnames_t getFields(Widget &widget) -{ - fieldnames_t fieldnames; - - if(widget.attributes.find("name") != widget.attributes.end()) { - fieldnames.push_back(widget.attributes["name"]); - //printf("\t\t%s\n", widget.attributes["name"].c_str()); - } - - std::vector< Widget >::iterator i = widget.widgets.begin(); - while(i != widget.widgets.end()) { - fieldnames_t f = getFields(*i); - fieldnames.insert(fieldnames.end(), f.begin(), f.end()); - i++; - } - - return fieldnames; -} - -templates_t scanfieldnames(std::set<std::string> &filter) -{ - templates_t templates; - - // TemplateList templatelist(Conf::xml_basedir + "/templates"); - MacroList macrolist(Conf::xml_basedir + "/macros"); - - // Iterate templates: - std::vector<std::string> templatefiles = getTemplates(); - std::vector<std::string>::iterator tfs = templatefiles.begin(); - while(tfs != templatefiles.end()) { - std::string templ = tfs->substr(0, tfs->length() - 4); - fieldnames_t fieldnames; - DEBUG(scanner, "%s:\n", tfs->c_str()); - TemplateParser parser(Conf::xml_basedir + "/templates/" + *tfs); - try { - parser.parse(); - Template *t = parser.getTemplate(); - if(!t) ERR(scanner, "Missing template!\n"); - // Iterate macros: - std::vector<Macro>::iterator ms = t->macros.begin(); - while(ms != t->macros.end()) { - if(ms->isHeader == false) { - std::string macro = ms->attributes["name"]; - DEBUG(scanner, "Name '%s'\n", macro.c_str()); - std::string macrofile = macrolist.getLatestVersion(macro); - DEBUG(scanner, "File '%s'\n", macrofile.c_str()); - - // Iterate fields: - MacroParser parser(macrofile); - try { - parser.parse(); - Macro *m = parser.getMacro(); - fieldnames_t f = getFields(m->widgets); - fieldnames.insert(fieldnames.end(), f.begin(), f.end()); - } catch( Exception &e ) { - ERR(scanner, "Error reading macro: %s: %s\n", - macrofile.c_str(), e.what()); - } - } - - ms++; - } - } catch( Exception &e ) { - ERR(scanner, "Error reading template: %s: %s\n", tfs->c_str(), e.what()); - } - - fieldnames_t nodubs; - fieldnames_t::iterator fi = fieldnames.begin(); - while(fi != fieldnames.end()) { - bool hasdub = false; - fieldnames_t::iterator di = nodubs.begin(); - while(di != nodubs.end()) { - if(*di == *fi) { - hasdub = true; - break; - } - di++; - } - - if(!hasdub && filter.find(*fi) != filter.end()) nodubs.push_back(*fi); - fi++; - } - - templates[templ] = nodubs; - tfs++; - } - - return templates; -} - -#ifdef TEST_FIELDNAMESCANNER -//deps: util.cc ../configuration.cc ../debug.cc ../log.cc ../templateparser.cc ../exception.cc ../saxparser.cc ../macrolist.cc ../entitylist.cc ../inotify.cc ../mutex.cc ../macroheaderparser.cc ../versionstr.cc ../macroparser.cc -//cflags: -I.. -I../.. $(EXPAT_CFLAGS) $(PTHREAD_CFLAGS) -//libs: $(EXPAT_LIBS) $(PTHREAD_LIBS) -#include "test.h" - -TEST_BEGIN; -Conf::xml_basedir = "../../xml"; -std::set<std::string> filter; -filter.insert("dims"); -filter.insert("test1"); -templates_t t = scanfieldnames(filter); - -templates_t::iterator ti = t.begin(); -while(ti != t.end()) { - printf("%s\n", ti->first.c_str()); - fieldnames_t::iterator fi = ti->second.begin(); - while(fi != ti->second.end()) { - printf("\t%s\n", (*fi).c_str()); - fi++; - } - ti++; -} - -TEST_END; - -#endif/*TEST_FIELDNAMESCANNER*/ |