diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | 460c52653ab0dcca6f19a4f492ed2c5e4e963ab0 (patch) | |
tree | 67208f7c145782a7e90b123b982ca78d88cc2c87 /kode/kxml_compiler/parser.h | |
download | tdepim-460c52653ab0dcca6f19a4f492ed2c5e4e963ab0.tar.gz tdepim-460c52653ab0dcca6f19a4f492ed2c5e4e963ab0.zip |
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdepim@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kode/kxml_compiler/parser.h')
-rw-r--r-- | kode/kxml_compiler/parser.h | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/kode/kxml_compiler/parser.h b/kode/kxml_compiler/parser.h new file mode 100644 index 000000000..b9ff542c0 --- /dev/null +++ b/kode/kxml_compiler/parser.h @@ -0,0 +1,134 @@ +/* + This file is part of KDE. + + Copyright (c) 2004 Cornelius Schumacher <schumacher@kde.org> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ +#ifndef PARSER_H +#define PARSER_H + +#include <kode/code.h> +#include <kode/printer.h> +#include <kode/typedef.h> + +#include <kaboutdata.h> +#include <kapplication.h> +#include <kdebug.h> +#include <klocale.h> +#include <kcmdlineargs.h> +#include <kglobal.h> +#include <kconfig.h> +#include <ksimpleconfig.h> +#include <kstandarddirs.h> + +#include <qfile.h> +#include <qtextstream.h> +#include <qdom.h> +#include <qregexp.h> +#include <qmap.h> + +#include <iostream> + +class Pattern +{ + public: + Pattern(); + + bool isEmpty(); + + QString asString(); + + void merge( Pattern p ); + + bool optional; + bool zeroOrMore; + bool oneOrMore; + bool choice; +}; + +class Reference +{ + public: + typedef QValueList<Reference *> List; + + Reference() : substituted( false ) {} + + QString name; + Pattern pattern; + + bool substituted; +}; + +class Attribute +{ + public: + typedef QValueList<Attribute *> List; + + QString name; + QValueList<QString> choices; + QString defaultValue; + Pattern pattern; +}; + +class Element +{ + public: + typedef QValueList<Element *> List; + + Element(); + + QString name; + Element::List elements; + Attribute::List attributes; + Reference::List references; + Pattern pattern; + bool hasText; + bool isEmpty; +}; + +class Parser +{ + public: + Parser(); + + Element *parse( const QDomElement &docElement ); + + Reference *parseReference( const QDomElement &referenceElement ); + bool parseAttribute( const QDomElement &attributeElement, + Attribute *a ); + bool parseElement( const QDomElement &elementElement, Element *e, + Pattern pattern ); + + void substituteReferences( Element *s ); + + void doIndent( int cols ); + + void dumpPattern( Pattern pattern ); + void dumpReferences( const Reference::List &references, + int indent ); + void dumpAttributes( const Attribute::List &attributes, + int indent ); + void dumpElements( const Element::List &elements, int indent ); + void dumpElement( Element *element, int indent ); + void dumpTree( Element *s ); + void dumpDefinitionMap(); + + private: + QMap<QString,Element::List> mDefinitionMap; +}; + +#endif |