• 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
datainformationfactory.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 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 DATAINFORMATIONFACTORY_H_
24 #define DATAINFORMATIONFACTORY_H_
25 
26 #include <QScriptValue>
27 #include <QSharedPointer>
28 
29 #include "../datatypes/primitive/bitfield/abstractbitfielddatainformation.h"
30 #include "../datatypes/primitive/primitivedatainformation.h"
31 #include "../datatypes/primitive/enumdefinition.h"
32 #include "../datatypes/primitive/flagdatainformation.h"
33 #include "../datatypes/primitive/enumdatainformation.h"
34 #include "../datatypes/primitive/pointerdatainformation.h"
35 #include "../datatypes/array/arraydatainformation.h"
36 #include "../datatypes/strings/stringdatainformation.h"
37 #include "../datatypes/taggeduniondatainformation.h"
38 #include "../datatypes/uniondatainformation.h"
39 #include "../datatypes/structuredatainformation.h"
40 
41 #include "../script/scriptlogger.h"
42 #include "parserutils.h"
43 
44 struct CommonParsedData : public ParserInfo {
45  inline explicit CommonParsedData(const ParserInfo& i)
46  : ParserInfo(i), endianess(DataInformation::EndianessInherit) {}
47  QScriptValue updateFunc;
48  QScriptValue validationFunc;
49  QScriptValue toStringFunc;
50  QString customTypeName;
51  DataInformation::DataInformationEndianess endianess;
52 private:
53  Q_DISABLE_COPY(CommonParsedData)
54 };
55 
56 struct BitfieldParsedData : public ParserInfo {
57  inline explicit BitfieldParsedData(const ParserInfo& i) : ParserInfo(i) {}
58  QString type;
59  ParsedNumber<int> width;
60 private:
61  Q_DISABLE_COPY(BitfieldParsedData)
62 };
63 
64 struct PrimitiveParsedData : public ParserInfo {
65  inline explicit PrimitiveParsedData(const ParserInfo& i) : ParserInfo(i) {}
66  QString type;
67 private:
68  Q_DISABLE_COPY(PrimitiveParsedData)
69 };
70 
71 struct EnumParsedData : public ParserInfo {
72  inline explicit EnumParsedData(const ParserInfo& i) : ParserInfo(i) {}
73  QString type;
74  QString enumName;
75  EnumDefinition::Ptr enumDef; //TODO QMap<QString, QScriptValue> instead
77  QScriptValue enumValuesObject;
78 private:
79  Q_DISABLE_COPY(EnumParsedData)
80 };
81 
82 struct StringParsedData : public ParserInfo {
83  inline explicit StringParsedData(const ParserInfo& i) : ParserInfo(i) {}
84  QString encoding;
85  ParsedNumber<quint32> termination;
86  ParsedNumber<quint32> maxCharCount;
87  ParsedNumber<quint32> maxByteCount;
88 
89 private:
90  Q_DISABLE_COPY(StringParsedData)
91 };
92 
93 struct ArrayParsedData : public ParserInfo {
94  inline explicit ArrayParsedData(const ParserInfo& i) : ParserInfo(i), arrayType(0) {}
95  QScriptValue length;
96  DataInformation* arrayType;
97 private:
98  Q_DISABLE_COPY(ArrayParsedData)
99 };
100 
101 struct PointerParsedData : public ParserInfo {
102  inline explicit PointerParsedData(const ParserInfo& i) : ParserInfo(i), valueType(0), pointerTarget(0) {}
103  DataInformation* valueType;
104  DataInformation* pointerTarget;
105 private:
106  Q_DISABLE_COPY(PointerParsedData)
107 };
108 
109 struct TaggedUnionParsedData : public ParserInfo {
110  struct Alternatives {
111  QString name;
112  QScriptValue selectIf;
113  QSharedPointer<ChildrenParser> fields;
114  };
115  inline explicit TaggedUnionParsedData(const ParserInfo& i) : ParserInfo(i) {}
116  QScopedPointer<ChildrenParser> children;
117  QVector<Alternatives> alternatives;
118  QScopedPointer<ChildrenParser> defaultFields;
119 private:
120  Q_DISABLE_COPY(TaggedUnionParsedData)
121 };
122 
123 struct StructOrUnionParsedData : public ParserInfo {
124  inline explicit StructOrUnionParsedData(const ParserInfo& i) : ParserInfo(i) {}
125  QScopedPointer<ChildrenParser> children;
126 private:
127  Q_DISABLE_COPY(StructOrUnionParsedData)
128 };
129 
130 namespace DataInformationFactory
131 {
132 AbstractBitfieldDataInformation* newBitfield(const BitfieldParsedData& pd);
133 PrimitiveDataInformation* newPrimitive(const PrimitiveParsedData& pd);
134 EnumDataInformation* newEnum(const EnumParsedData& pd);
135 FlagDataInformation* newFlags(const EnumParsedData& pd);
136 ArrayDataInformation* newArray(const ArrayParsedData& pd);
137 StringDataInformation* newString(const StringParsedData& pd);
138 PointerDataInformation* newPointer(const PointerParsedData& pd);
139 UnionDataInformation* newUnion(const StructOrUnionParsedData& pd);
140 StructureDataInformation* newStruct(const StructOrUnionParsedData& pd);
141 TaggedUnionDataInformation* newTaggedUnion(const TaggedUnionParsedData& pd);
142 
143 bool commonInitialization(DataInformation* data, const CommonParsedData& pd);
144 }
145 
146 #endif /* DATAINFORMATIONFACTORY_H_ */
DataInformation
Interface that must be implemented by all datatypes.
Definition: datainformation.h:67
DataInformationFactory::commonInitialization
bool commonInitialization(DataInformation *data, const CommonParsedData &pd)
Definition: datainformationfactory.cpp:300
DataInformationFactory::newString
StringDataInformation * newString(const StringParsedData &pd)
Definition: datainformationfactory.cpp:249
FlagDataInformation
Definition: flagdatainformation.h:29
BitfieldParsedData::type
QString type
Definition: datainformationfactory.h:58
PointerDataInformation
Definition: pointerdatainformation.h:30
DataInformationFactory::newPointer
PointerDataInformation * newPointer(const PointerParsedData &pd)
Definition: datainformationfactory.cpp:346
TaggedUnionParsedData::Alternatives
Definition: datainformationfactory.h:110
EnumParsedData::enumName
QString enumName
Definition: datainformationfactory.h:74
DataInformationFactory::newFlags
FlagDataInformation * newFlags(const EnumParsedData &pd)
Definition: datainformationfactory.cpp:198
PointerParsedData::pointerTarget
DataInformation * pointerTarget
Definition: datainformationfactory.h:104
StructOrUnionParsedData::children
QScopedPointer< ChildrenParser > children
Definition: datainformationfactory.h:125
ParsedNumber< int >
PrimitiveParsedData::type
QString type
Definition: datainformationfactory.h:66
EnumDataInformation
Definition: enumdatainformation.h:29
EnumParsedData::EnumParsedData
EnumParsedData(const ParserInfo &i)
Definition: datainformationfactory.h:72
TaggedUnionParsedData::Alternatives::selectIf
QScriptValue selectIf
Definition: datainformationfactory.h:112
DataInformation::DataInformationEndianess
DataInformationEndianess
Definition: datainformation.h:86
QVector
Definition: scriptvalueconverter.h:30
DataInformationFactory::newTaggedUnion
TaggedUnionDataInformation * newTaggedUnion(const TaggedUnionParsedData &pd)
Definition: datainformationfactory.cpp:373
parserutils.h
CommonParsedData::toStringFunc
QScriptValue toStringFunc
Definition: datainformationfactory.h:49
TaggedUnionParsedData::Alternatives::fields
QSharedPointer< ChildrenParser > fields
Definition: datainformationfactory.h:113
StructOrUnionParsedData::StructOrUnionParsedData
StructOrUnionParsedData(const ParserInfo &i)
Definition: datainformationfactory.h:124
ArrayParsedData::length
QScriptValue length
Definition: datainformationfactory.h:95
TaggedUnionDataInformation
A class holding the data of a struct for Okteta.
Definition: taggeduniondatainformation.h:31
EnumParsedData
Definition: datainformationfactory.h:71
StringParsedData::encoding
QString encoding
Definition: datainformationfactory.h:84
TaggedUnionParsedData::TaggedUnionParsedData
TaggedUnionParsedData(const ParserInfo &i)
Definition: datainformationfactory.h:115
EnumDefinition::Ptr
QSharedDataPointer< EnumDefinition > Ptr
Definition: enumdefinition.h:40
ArrayDataInformation
Definition: arraydatainformation.h:36
BitfieldParsedData
Definition: datainformationfactory.h:56
StringParsedData::termination
ParsedNumber< quint32 > termination
Definition: datainformationfactory.h:85
CommonParsedData
Definition: datainformationfactory.h:44
DataInformationFactory::newPrimitive
PrimitiveDataInformation * newPrimitive(const PrimitiveParsedData &pd)
Definition: datainformationfactory.cpp:68
StringParsedData::maxCharCount
ParsedNumber< quint32 > maxCharCount
Definition: datainformationfactory.h:86
DataInformationFactory::newUnion
UnionDataInformation * newUnion(const StructOrUnionParsedData &pd)
Definition: datainformationfactory.cpp:290
ParserInfo
For use by the parsers so that the functions don't have as many parameters.
Definition: parserutils.h:48
StringParsedData::StringParsedData
StringParsedData(const ParserInfo &i)
Definition: datainformationfactory.h:83
ArrayParsedData::ArrayParsedData
ArrayParsedData(const ParserInfo &i)
Definition: datainformationfactory.h:94
DataInformationFactory::newEnum
EnumDataInformation * newEnum(const EnumParsedData &pd)
Definition: datainformationfactory.cpp:193
EnumParsedData::type
QString type
Definition: datainformationfactory.h:73
UnionDataInformation
A class holding the data of a union for Okteta.
Definition: uniondatainformation.h:28
PointerParsedData::PointerParsedData
PointerParsedData(const ParserInfo &i)
Definition: datainformationfactory.h:102
PointerParsedData::valueType
DataInformation * valueType
Definition: datainformationfactory.h:103
BitfieldParsedData::BitfieldParsedData
BitfieldParsedData(const ParserInfo &i)
Definition: datainformationfactory.h:57
PrimitiveParsedData
Definition: datainformationfactory.h:64
CommonParsedData::updateFunc
QScriptValue updateFunc
Definition: datainformationfactory.h:47
BitfieldParsedData::width
ParsedNumber< int > width
Definition: datainformationfactory.h:59
TaggedUnionParsedData
Definition: datainformationfactory.h:109
CommonParsedData::customTypeName
QString customTypeName
Definition: datainformationfactory.h:50
DataInformationFactory::newStruct
StructureDataInformation * newStruct(const StructOrUnionParsedData &pd)
Definition: datainformationfactory.cpp:295
PointerParsedData
Definition: datainformationfactory.h:101
PrimitiveParsedData::PrimitiveParsedData
PrimitiveParsedData(const ParserInfo &i)
Definition: datainformationfactory.h:65
CommonParsedData::CommonParsedData
CommonParsedData(const ParserInfo &i)
Definition: datainformationfactory.h:45
TaggedUnionParsedData::alternatives
QVector< Alternatives > alternatives
Definition: datainformationfactory.h:117
DataInformationFactory::newArray
ArrayDataInformation * newArray(const ArrayParsedData &pd)
Definition: datainformationfactory.cpp:203
CommonParsedData::validationFunc
QScriptValue validationFunc
Definition: datainformationfactory.h:48
StructOrUnionParsedData
Definition: datainformationfactory.h:123
EnumParsedData::enumValuesObject
QScriptValue enumValuesObject
only used if enumDef is null, to allow sharing (only possible in OSD)
Definition: datainformationfactory.h:77
ArrayParsedData::arrayType
DataInformation * arrayType
Definition: datainformationfactory.h:96
AbstractBitfieldDataInformation
Definition: abstractbitfielddatainformation.h:28
PrimitiveDataInformation
A base class for all primitive data elements (e.g.
Definition: primitivedatainformation.h:34
ArrayParsedData
Definition: datainformationfactory.h:93
TaggedUnionParsedData::defaultFields
QScopedPointer< ChildrenParser > defaultFields
Definition: datainformationfactory.h:118
StringParsedData::maxByteCount
ParsedNumber< quint32 > maxByteCount
Definition: datainformationfactory.h:87
CommonParsedData::endianess
DataInformation::DataInformationEndianess endianess
Definition: datainformationfactory.h:51
StringParsedData
Definition: datainformationfactory.h:82
StringDataInformation
Definition: stringdatainformation.h:39
TaggedUnionParsedData::children
QScopedPointer< ChildrenParser > children
Definition: datainformationfactory.h:116
EnumParsedData::enumDef
EnumDefinition::Ptr enumDef
Definition: datainformationfactory.h:75
TaggedUnionParsedData::Alternatives::name
QString name
Definition: datainformationfactory.h:111
StructureDataInformation
A class holding the data of a struct for Okteta.
Definition: structuredatainformation.h:28
DataInformationFactory::newBitfield
AbstractBitfieldDataInformation * newBitfield(const BitfieldParsedData &pd)
Definition: datainformationfactory.cpp:32
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