From 460c52653ab0dcca6f19a4f492ed2c5e4e963ab0 Mon Sep 17 00:00:00 2001 From: toma Date: Wed, 25 Nov 2009 17:56:58 +0000 Subject: 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 --- kode/kxml_compiler/parser.h | 134 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100644 kode/kxml_compiler/parser.h (limited to 'kode/kxml_compiler/parser.h') diff --git a/kode/kxml_compiler/parser.h b/kode/kxml_compiler/parser.h new file mode 100644 index 00000000..b9ff542c --- /dev/null +++ b/kode/kxml_compiler/parser.h @@ -0,0 +1,134 @@ +/* + This file is part of KDE. + + Copyright (c) 2004 Cornelius Schumacher + + 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 +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include + +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 List; + + Reference() : substituted( false ) {} + + QString name; + Pattern pattern; + + bool substituted; +}; + +class Attribute +{ + public: + typedef QValueList List; + + QString name; + QValueList choices; + QString defaultValue; + Pattern pattern; +}; + +class Element +{ + public: + typedef QValueList 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 mDefinitionMap; +}; + +#endif -- cgit v1.2.3