• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdesdk API Reference
  • KDE Home
  • Contact Us
 

okteta

  • sources
  • kde-4.12
  • kdesdk
  • okteta
  • kasten
  • controllers
  • view
  • structures
  • parsers
osdparser.h
Go to the documentation of this file.
1 /*
2  * This file is part of the Okteta Kasten Framework, made within the KDE community.
3  *
4  * Copyright 2010, 2011, 2012 Alex Richardson <alex.richardson@gmx.de>
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) version 3, or any
10  * later version accepted by the membership of KDE e.V. (or its
11  * successor approved by the membership of KDE e.V.), which shall
12  * act as a proxy defined in Section 6 of version 3 of the license.
13  *
14  * This library is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17  * Lesser General Public License for more details.
18  *
19  * You should have received a copy of the GNU Lesser General Public
20  * License along with this library. If not, see <http://www.gnu.org/licenses/>.
21  */
22 
23 #ifndef OSDPARSER_H_
24 #define OSDPARSER_H_
25 
26 #include "abstractstructureparser.h"
27 #include "parserutils.h"
28 #include "../datatypes/primitive/enumdefinition.h"
29 
30 #include <QDomElement>
31 
32 class QDomDocument;
33 
34 class StringDataInformation;
35 class ArrayDataInformation;
36 class AbstractBitfieldDataInformation;
37 class EnumDataInformation;
38 class DataInformation;
39 class StructureDataInformation;
40 class UnionDataInformation;
41 class PrimitiveDataInformation;
42 class ScriptLogger;
43 
44 struct OsdParserInfo : public ParserInfo {
45  inline OsdParserInfo(const QString& name, ScriptLogger* logger, DataInformation* parent,
46  QScriptEngine* engine, QVector<EnumDefinition::Ptr> enums)
47  : ParserInfo(name, logger, parent, engine), enums(enums) {}
48  inline OsdParserInfo(const OsdParserInfo& i) : ParserInfo(i), enums(i.enums) {}
49  inline ~OsdParserInfo() {}
50  QVector<EnumDefinition::Ptr> enums;
51 };
52 
53 class OsdParser : public AbstractStructureParser
54 {
55  Q_DISABLE_COPY(OsdParser)
56 public:
58  OsdParser(const QString& pluginName, const QString& absolutePath);
60  OsdParser(const QString& xml);
61  virtual ~OsdParser();
62 
63  virtual QStringList parseStructureNames() const;
64  virtual QVector<TopLevelDataInformation*> parseStructures() const;
65 
66  static DataInformation* parseElement(const QDomElement& node, const OsdParserInfo& info);
67 private:
68  static PrimitiveDataInformation* primitiveFromXML(const QDomElement& xmlElem, const OsdParserInfo& info);
69  static PointerDataInformation* pointerFromXML(const QDomElement& xmlElem, const OsdParserInfo& info);
70  static AbstractBitfieldDataInformation* bitfieldFromXML(const QDomElement& xmlElem, const OsdParserInfo& info);
71  static EnumDataInformation* enumFromXML(const QDomElement& elem, bool isFlags, const OsdParserInfo& info);
72  static StringDataInformation* stringFromXML(const QDomElement& xmlElem, const OsdParserInfo& info);
73  static UnionDataInformation* unionFromXML(const QDomElement& xmlElem, const OsdParserInfo& info);
74  static StructureDataInformation* structFromXML(const QDomElement& xmlElem, const OsdParserInfo& info);
75  static ArrayDataInformation* arrayFromXML(const QDomElement& xmlElem, const OsdParserInfo& info);
76  static TaggedUnionDataInformation* taggedUnionFromXML(const QDomElement& xmlElem, const OsdParserInfo& info);
82  static DataInformation* parseType(const QDomElement& xmlElem, const OsdParserInfo& info, const QString& name);
83  static DataInformation* parseChildElement(const QDomElement& xmlElem, const OsdParserInfo& info, const QString& name);
84 
85  static EnumDefinition::Ptr findEnum(const QString& defName, const OsdParserInfo& info);
86 
87  static QVector<EnumDefinition::Ptr> parseEnums(const QDomElement& rootElem, ScriptLogger* logger);
88 
89  QDomDocument openDoc(ScriptLogger* logger) const;
90  QDomDocument openDocFromFile(ScriptLogger* logger) const;
91  QDomDocument openDocFromString(ScriptLogger* logger) const;
92 
95  static QString readProperty(const QDomElement& elem, const QString& attrib, const QString& defaultVal = QString());
97  const QString mXmlString;
98 };
99 
100 class OsdChildrenParser : public ChildrenParser {
101 public:
102  OsdChildrenParser(const OsdParserInfo& info, QDomElement firstChild);
103  virtual ~OsdChildrenParser();
104  virtual DataInformation* next();
105  virtual bool hasNext();
106  virtual void setParent(DataInformation* newParent);
107 protected:
108  OsdParserInfo mInfo;
109  QDomElement mElem;
110 };
111 
112 class SingleElementOsdChildrenParser : public OsdChildrenParser {
113 public:
114  SingleElementOsdChildrenParser(const OsdParserInfo& info, QDomElement element);
115  virtual ~SingleElementOsdChildrenParser();
116  virtual DataInformation* next();
117  virtual bool hasNext();
118 protected:
119  bool mParsed;
120 };
121 
122 #endif /* OSDPARSER_H_ */
DataInformation
Interface that must be implemented by all datatypes.
Definition: datainformation.h:67
OsdChildrenParser
Definition: osdparser.h:100
OsdChildrenParser::mElem
QDomElement mElem
Definition: osdparser.h:109
SingleElementOsdChildrenParser::mParsed
bool mParsed
Definition: osdparser.h:119
OsdParser
Definition: osdparser.h:53
abstractstructureparser.h
OsdParserInfo::enums
QVector< EnumDefinition::Ptr > enums
Definition: osdparser.h:50
OsdParser::parseStructures
virtual QVector< TopLevelDataInformation * > parseStructures() const
Definition: osdparser.cpp:148
OsdChildrenParser::hasNext
virtual bool hasNext()
Definition: osdparser.cpp:582
PointerDataInformation
Definition: pointerdatainformation.h:30
SingleElementOsdChildrenParser::next
virtual DataInformation * next()
Definition: osdparser.cpp:607
ParserInfo::engine
QScriptEngine * engine
Definition: parserutils.h:61
OsdChildrenParser::mInfo
OsdParserInfo mInfo
Definition: osdparser.h:108
OsdParser::~OsdParser
virtual ~OsdParser()
Definition: osdparser.cpp:58
OsdChildrenParser::OsdChildrenParser
OsdChildrenParser(const OsdParserInfo &info, QDomElement firstChild)
Definition: osdparser.cpp:557
SingleElementOsdChildrenParser::hasNext
virtual bool hasNext()
Definition: osdparser.cpp:614
EnumDataInformation
Definition: enumdatainformation.h:29
ChildrenParser
Definition: parserutils.h:72
QVector< EnumDefinition::Ptr >
OsdParser::parseElement
static DataInformation * parseElement(const QDomElement &node, const OsdParserInfo &info)
Definition: osdparser.cpp:440
parserutils.h
TaggedUnionDataInformation
A class holding the data of a struct for Okteta.
Definition: taggeduniondatainformation.h:31
EnumDefinition::Ptr
QSharedDataPointer< EnumDefinition > Ptr
Definition: enumdefinition.h:40
ArrayDataInformation
Definition: arraydatainformation.h:36
SingleElementOsdChildrenParser::~SingleElementOsdChildrenParser
virtual ~SingleElementOsdChildrenParser()
Definition: osdparser.cpp:603
ParserInfo::logger
ScriptLogger * logger
Definition: parserutils.h:59
ParserInfo::parent
DataInformation * parent
Definition: parserutils.h:60
ScriptLogger
NOT THREAD SAFE!
Definition: scriptlogger.h:35
OsdParserInfo::OsdParserInfo
OsdParserInfo(const OsdParserInfo &i)
Definition: osdparser.h:48
ParserInfo
For use by the parsers so that the functions don't have as many parameters.
Definition: parserutils.h:48
OsdChildrenParser::~OsdChildrenParser
virtual ~OsdChildrenParser()
Definition: osdparser.cpp:578
UnionDataInformation
A class holding the data of a union for Okteta.
Definition: uniondatainformation.h:28
SingleElementOsdChildrenParser
Definition: osdparser.h:112
OsdChildrenParser::setParent
virtual void setParent(DataInformation *newParent)
Definition: osdparser.cpp:591
OsdParser::OsdParser
OsdParser(const QString &pluginName, const QString &absolutePath)
construct a parser which opens parses absolutePath
Definition: osdparser.cpp:48
OsdChildrenParser::next
virtual DataInformation * next()
Definition: osdparser.cpp:562
OsdParserInfo::OsdParserInfo
OsdParserInfo(const QString &name, ScriptLogger *logger, DataInformation *parent, QScriptEngine *engine, QVector< EnumDefinition::Ptr > enums)
Definition: osdparser.h:45
OsdParserInfo::~OsdParserInfo
~OsdParserInfo()
Definition: osdparser.h:49
OsdParser::parseStructureNames
virtual QStringList parseStructureNames() const
Definition: osdparser.cpp:118
ParserInfo::name
QString name
Definition: parserutils.h:58
OsdParserInfo
Definition: osdparser.h:44
AbstractBitfieldDataInformation
Definition: abstractbitfielddatainformation.h:28
PrimitiveDataInformation
A base class for all primitive data elements (e.g.
Definition: primitivedatainformation.h:34
StringDataInformation
Definition: stringdatainformation.h:39
SingleElementOsdChildrenParser::SingleElementOsdChildrenParser
SingleElementOsdChildrenParser(const OsdParserInfo &info, QDomElement element)
Definition: osdparser.cpp:596
StructureDataInformation
A class holding the data of a struct for Okteta.
Definition: structuredatainformation.h:28
AbstractStructureParser
Definition: abstractstructureparser.h:36
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 23:04:08 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

okteta

Skip menu "okteta"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdesdk API Reference

Skip menu "kdesdk API Reference"
  • kapptemplate
  • kcachegrind
  • kompare
  • lokalize
  • okteta
  • umbrello
  •   umbrello

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal