• 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
  • datatypes
datainformationbase.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 2011 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 #ifndef DATAINFORMATIONBASE_H
23 #define DATAINFORMATIONBASE_H
24 
25 class EnumDataInformation;
26 class StringDataInformation;
27 class DataInformationBase;
28 class DataInformation;
29 class DummyDataInformation;
30 class UnionDataInformation;
31 class TaggedUnionDataInformation;
32 class StructureDataInformation;
33 class AbstractBitfieldDataInformation;
34 class PrimitiveDataInformation;
35 class ArrayDataInformation;
36 class TopLevelDataInformation;
37 class PointerDataInformation;
38 
39 #include <QtGlobal>
40 
41 typedef quint32 BitCount32;
42 typedef quint64 BitCount64;
43 
44 class DataInformationBase
45 {
46 public:
47  DataInformationBase();
48  virtual ~DataInformationBase();
49  virtual bool isTopLevel() const = 0;
50  TopLevelDataInformation* asTopLevel();
51  DataInformation* asDataInformation();
52  const TopLevelDataInformation* asTopLevel() const;
53  const DataInformation* asDataInformation() const;
54  virtual bool isArray() const;
55  ArrayDataInformation* asArray();
56  const ArrayDataInformation* asArray() const;
57  virtual bool isPrimitive() const;
58  PrimitiveDataInformation* asPrimitive();
59  const PrimitiveDataInformation* asPrimitive() const;
60  virtual bool isEnum() const;
61  EnumDataInformation* asEnum();
62  const EnumDataInformation* asEnum() const;
63  virtual bool isBitfield() const;
64  AbstractBitfieldDataInformation* asBitfield();
65  const AbstractBitfieldDataInformation* asBitfield() const;
66  virtual bool isStruct() const;
67  StructureDataInformation* asStruct();
68  const StructureDataInformation* asStruct() const;
69  virtual bool isUnion() const;
70  UnionDataInformation* asUnion();
71  const UnionDataInformation* asUnion() const;
72  virtual bool isString() const;
73  StringDataInformation* asString();
74  const StringDataInformation* asString() const;
75  virtual bool isPointer() const;
76  PointerDataInformation* asPointer();
77  const PointerDataInformation* asPointer() const;
78  virtual bool isTaggedUnion() const;
79  TaggedUnionDataInformation* asTaggedUnion();
80  const TaggedUnionDataInformation* asTaggedUnion() const;
81  virtual bool isDummy() const;
82  DummyDataInformation* asDummy();
83  const DummyDataInformation* asDummy() const;
84 };
85 
86 #define CAST_FUNCS_2(typename, name) inline typename* DataInformationBase::as##name() {\
87  return is##name() ? reinterpret_cast<typename*>(this) : 0; }\
88  inline const typename* DataInformationBase::as##name() const {\
89  return is##name() ? reinterpret_cast<const typename*>(this) : 0; }
90 
91 #define CAST_FUNCS(type) CAST_FUNCS_2(type##DataInformation, type)
92 //we have to use reinterpret_cast<> since it does not seem to be possible to declare inheritance
93 //and including other headers would be overkill
94 
95 CAST_FUNCS(Array)
96 CAST_FUNCS(Union)
97 CAST_FUNCS_2(StructureDataInformation, Struct)
98 CAST_FUNCS(Enum)
99 CAST_FUNCS(Primitive)
100 CAST_FUNCS(Dummy)
101 CAST_FUNCS_2(AbstractBitfieldDataInformation, Bitfield)
102 CAST_FUNCS(String)
103 CAST_FUNCS(Pointer)
104 CAST_FUNCS(TaggedUnion)
105 
106 //this is not handled by the macro
107 inline DataInformation* DataInformationBase::asDataInformation()
108 {
109  return isTopLevel() ? 0 : reinterpret_cast<DataInformation*>(this);
110 }
111 
112 inline const DataInformation* DataInformationBase::asDataInformation() const
113 {
114  return isTopLevel() ? 0 : reinterpret_cast<const DataInformation*>(this);
115 }
116 
117 #undef CAST_FUNCS_2
118 #undef CAST_FUNCS
119 
120 #endif // DATAINFORMATIONBASE_H
DataInformation
Interface that must be implemented by all datatypes.
Definition: datainformation.h:67
DataInformationBase::asEnum
EnumDataInformation * asEnum()
DummyDataInformation
Definition: dummydatainformation.h:30
DataInformationBase::asPointer
PointerDataInformation * asPointer()
PointerDataInformation
Definition: pointerdatainformation.h:30
BitCount64
quint64 BitCount64
Definition: datainformationbase.h:42
DataInformationBase::isString
virtual bool isString() const
Definition: datainformationbase.cpp:70
CAST_FUNCS_2
#define CAST_FUNCS_2(typename, name)
Definition: datainformationbase.h:86
DataInformationBase::asBitfield
AbstractBitfieldDataInformation * asBitfield()
DataInformationBase::isStruct
virtual bool isStruct() const
Definition: datainformationbase.cpp:55
EnumDataInformation
Definition: enumdatainformation.h:29
BitCount32
quint32 BitCount32
Definition: datainformationbase.h:37
DataInformationBase::asArray
ArrayDataInformation * asArray()
TaggedUnionDataInformation
A class holding the data of a struct for Okteta.
Definition: taggeduniondatainformation.h:31
DataInformationBase::~DataInformationBase
virtual ~DataInformationBase()
Definition: datainformationbase.cpp:30
ArrayDataInformation
Definition: arraydatainformation.h:36
DataInformationBase::isEnum
virtual bool isEnum() const
Definition: datainformationbase.cpp:50
TopLevelDataInformation
Definition: topleveldatainformation.h:46
DataInformationBase::asString
StringDataInformation * asString()
DataInformationBase::isTopLevel
virtual bool isTopLevel() const =0
DataInformationBase::asTopLevel
TopLevelDataInformation * asTopLevel()
Definition: datainformationbase.cpp:85
DataInformationBase::asPrimitive
PrimitiveDataInformation * asPrimitive()
UnionDataInformation
A class holding the data of a union for Okteta.
Definition: uniondatainformation.h:28
CAST_FUNCS
#define CAST_FUNCS(type)
Definition: datainformationbase.h:91
DataInformationBase::DataInformationBase
DataInformationBase()
Definition: datainformationbase.cpp:25
DataInformationBase::asDummy
DummyDataInformation * asDummy()
DataInformationBase::asDataInformation
DataInformation * asDataInformation()
Definition: datainformationbase.h:107
DataInformationBase::asStruct
StructureDataInformation * asStruct()
DataInformationBase::asUnion
UnionDataInformation * asUnion()
DataInformationBase::isDummy
virtual bool isDummy() const
Definition: datainformationbase.cpp:40
DataInformationBase
Definition: datainformationbase.h:44
DataInformationBase::isUnion
virtual bool isUnion() const
Definition: datainformationbase.cpp:60
DataInformationBase::isTaggedUnion
virtual bool isTaggedUnion() const
Definition: datainformationbase.cpp:80
AbstractBitfieldDataInformation
Definition: abstractbitfielddatainformation.h:28
DataInformationBase::isBitfield
virtual bool isBitfield() const
Definition: datainformationbase.cpp:65
PrimitiveDataInformation
A base class for all primitive data elements (e.g.
Definition: primitivedatainformation.h:34
DataInformationBase::isPrimitive
virtual bool isPrimitive() const
Definition: datainformationbase.cpp:45
DataInformationBase::asTaggedUnion
TaggedUnionDataInformation * asTaggedUnion()
StringDataInformation
Definition: stringdatainformation.h:39
DataInformationBase::isPointer
virtual bool isPointer() const
Definition: datainformationbase.cpp:75
DataInformationBase::isArray
virtual bool isArray() const
Definition: datainformationbase.cpp:35
StructureDataInformation
A class holding the data of a struct for Okteta.
Definition: structuredatainformation.h:28
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 23:04:07 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