• 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
  • array
arraydatainformation.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 2009, 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 ARRAYDATAINFORMATION_H_
24 #define ARRAYDATAINFORMATION_H_
25 
26 #include "../dummydatainformation.h"
27 #include "abstractarraydata.h"
28 
29 #include <QVariant>
30 #include <QScriptValue>
31 
32 class DummyDataInformation;
33 class AbstractArrayData;
34 class PrimitiveDataInformation;
35 
36 class ArrayDataInformation : public DataInformationWithDummyChildren
37 {
38  friend class PrimitiveArrayTest;
39  DATAINFORMATION_CLONE_DECL(ArrayDataInformation, DataInformationWithDummyChildren);
40 public:
45  ArrayDataInformation(const QString& name, uint length, DataInformation* childType,
46  DataInformation* parent = 0, const QScriptValue& lengthFuntion = QScriptValue());
47  virtual ~ArrayDataInformation();
48 public:
49  uint length() const;
50  virtual QWidget* createEditWidget(QWidget* parent) const;
51  virtual QVariant dataFromWidget(const QWidget* w) const;
52  virtual void setWidgetData(QWidget* w) const;
53 
54  virtual QWidget* createChildEditWidget(uint index, QWidget* parent) const;
55  virtual QVariant dataFromChildWidget(uint index, const QWidget* w) const;
56  virtual void setChildWidgetData(uint index, QWidget* w) const;
57 
58  virtual BitCount32 size() const;
59 
60  virtual qint64 readData(Okteta::AbstractByteArrayModel* input, Okteta::Address address,
61  BitCount64 bitsRemaining, quint8* bitOffset);
62  virtual bool setData(const QVariant& value, Okteta::AbstractByteArrayModel* out,
63  Okteta::Address address, BitCount64 bitsRemaining, quint8 bitOffset);
64  virtual bool setChildData(uint row, const QVariant& value, Okteta::AbstractByteArrayModel* out,
65  Okteta::Address address, BitCount64 bitsRemaining, quint8 bitOffset);
66 
67  virtual Qt::ItemFlags childFlags(int row, int column, bool fileLoaded = true) const;
68  virtual QVariant childData(int row, int column, int role) const;
69  virtual DataInformation* childAt(unsigned int idx) const;
70  virtual unsigned int childCount() const;
71  virtual bool canHaveChildren() const;
72  virtual QString childTypeName(uint index) const;
73  virtual int indexOf(const DataInformation* const data) const;
74  BitCount32 childSize(uint index) const;
75 
76  virtual bool isArray() const;
77 
78  bool setArrayLength(uint newLength);
82  void setArrayType(DataInformation* newChildtype);
83  DataInformation* arrayType() const;
84 
85  QScriptValue childType() const;
86  QScriptValue lengthFunction() const;
87  void setLengthFunction(QScriptValue newFunc);
88  QScriptValue childToScriptValue(uint index, QScriptEngine* engine, ScriptHandlerInfo* handlerInfo) const;
89  virtual BitCount64 childPosition(const DataInformation* child, Okteta::Address start) const;
90 private:
91  virtual QScriptClass* scriptClass(ScriptHandlerInfo* handlerInfo) const;
92  virtual QString typeNameImpl() const;
93 private:
94  QScopedPointer<AbstractArrayData> mData;
95  static const uint MAX_LEN = 10000;
96 };
97 
98 inline uint ArrayDataInformation::length() const
99 {
100  return mData->length();
101 }
102 
103 inline QString ArrayDataInformation::typeNameImpl() const
104 {
105  return mData->typeName();
106 }
107 
108 inline BitCount32 ArrayDataInformation::size() const
109 {
110  return mData->size();
111 }
112 
113 inline bool ArrayDataInformation::isArray() const
114 {
115  return true;
116 }
117 
118 inline DataInformation* ArrayDataInformation::childAt(unsigned int idx) const
119 {
120  return mData->childAt(idx);
121 }
122 
123 inline unsigned int ArrayDataInformation::childCount() const
124 {
125  return mData->length();
126 }
127 
128 inline bool ArrayDataInformation::canHaveChildren() const
129 {
130  return true;
131 }
132 
133 inline int ArrayDataInformation::indexOf(const DataInformation*const data) const
134 {
135  return mData->indexOf(data);
136 }
137 
138 inline BitCount32 ArrayDataInformation::childSize(uint index) const
139 {
140  return mData->sizeAt(index);
141 }
142 
143 inline Qt::ItemFlags ArrayDataInformation::childFlags(int row, int column, bool fileLoaded) const
144 {
145  return mData->childFlags(row, column, fileLoaded);
146 }
147 
148 inline QWidget* ArrayDataInformation::createChildEditWidget(uint index, QWidget* parent) const
149 {
150  return mData->createChildEditWidget(index, parent);
151 }
152 
153 inline QVariant ArrayDataInformation::dataFromChildWidget(uint index, const QWidget* w) const
154 {
155  return mData->dataFromChildWidget(index, w);
156 }
157 
158 inline void ArrayDataInformation::setChildWidgetData(uint index, QWidget* w) const
159 {
160  mData->setChildWidgetData(index, w);
161 }
162 
163 inline QString ArrayDataInformation::childTypeName(uint index) const
164 {
165  return mData->dataAt(index, DataInformation::ColumnType, Qt::DisplayRole).toString();
166 }
167 
168 inline DataInformation* ArrayDataInformation::arrayType() const
169 {
170  return mData->childType();
171 }
172 
173 inline QScriptValue ArrayDataInformation::lengthFunction() const
174 {
175  return mAdditionalData.get(AdditionalData::ArrayLengthFunction).value<QScriptValue>();
176 }
177 
178 inline void ArrayDataInformation::setLengthFunction(QScriptValue newFunc)
179 {
180  setAdditionalFunction(AdditionalData::ArrayLengthFunction, newFunc, "array length function");
181 }
182 
183 #endif /* ARRAYDATAINFORMATION_H_ */
ArrayDataInformation::childSize
BitCount32 childSize(uint index) const
Definition: arraydatainformation.h:138
DataInformation
Interface that must be implemented by all datatypes.
Definition: datainformation.h:67
ArrayDataInformation::childType
QScriptValue childType() const
Definition: arraydatainformation.cpp:116
DataInformationWithDummyChildren
This class declares all methods that are needed if there can be dummy children.
Definition: dummydatainformation.h:73
Okteta::Address
qint32 Address
Definition: address.h:34
Okteta::AbstractByteArrayModel
could it be useful to hide the data access behind an iterator? * class KDataBufferIterator { public: ...
Definition: abstractbytearraymodel.h:79
DataInformation::name
QString name() const
Definition: datainformation.h:258
ArrayDataInformation::setArrayLength
bool setArrayLength(uint newLength)
Definition: arraydatainformation.cpp:68
DummyDataInformation
Definition: dummydatainformation.h:30
QScriptClass
BitCount64
quint64 BitCount64
Definition: datainformationbase.h:42
ArrayDataInformation::size
virtual BitCount32 size() const
the size in bits of this element
Definition: arraydatainformation.h:108
ArrayDataInformation::readData
virtual qint64 readData(Okteta::AbstractByteArrayModel *input, Okteta::Address address, BitCount64 bitsRemaining, quint8 *bitOffset)
Reads the necessary data from input and returns the number of bytes read.
Definition: arraydatainformation.cpp:152
ArrayDataInformation::childFlags
virtual Qt::ItemFlags childFlags(int row, int column, bool fileLoaded=true) const
Definition: arraydatainformation.h:143
QWidget
ArrayDataInformation::setData
virtual bool setData(const QVariant &value, Okteta::AbstractByteArrayModel *out, Okteta::Address address, BitCount64 bitsRemaining, quint8 bitOffset)
Writes the current data contained in this object to out.
Definition: arraydatainformation.cpp:186
AdditionalData::get
QVariant get(AdditionalDataType entry) const
Definition: additionaldata.h:50
ArrayDataInformation::childData
virtual QVariant childData(int row, int column, int role) const
the data of child at index row.
Definition: arraydatainformation.cpp:121
DataInformation::ColumnType
Definition: datainformation.h:84
ArrayDataInformation::PrimitiveArrayTest
friend class PrimitiveArrayTest
Definition: arraydatainformation.h:38
ArrayDataInformation::createChildEditWidget
virtual QWidget * createChildEditWidget(uint index, QWidget *parent) const
create a QWidget for the QItemDelegate
Definition: arraydatainformation.h:148
BitCount32
quint32 BitCount32
Definition: datainformationbase.h:37
ArrayDataInformation::lengthFunction
QScriptValue lengthFunction() const
Definition: arraydatainformation.h:173
ArrayDataInformation::setLengthFunction
void setLengthFunction(QScriptValue newFunc)
Definition: arraydatainformation.h:178
ArrayDataInformation::length
uint length() const
Definition: arraydatainformation.h:98
AbstractArrayData
Definition: abstractarraydata.h:46
ArrayDataInformation
Definition: arraydatainformation.h:36
ArrayDataInformation::setArrayType
void setArrayType(DataInformation *newChildtype)
Sets the new array type.
Definition: arraydatainformation.cpp:83
ArrayDataInformation::createEditWidget
virtual QWidget * createEditWidget(QWidget *parent) const
create a QWidget for the QItemDelegate
Definition: arraydatainformation.cpp:127
ArrayDataInformation::canHaveChildren
virtual bool canHaveChildren() const
true for unions and structs and arrays
Definition: arraydatainformation.h:128
ArrayDataInformation::isArray
virtual bool isArray() const
Definition: arraydatainformation.h:113
ArrayDataInformation::setChildWidgetData
virtual void setChildWidgetData(uint index, QWidget *w) const
initialize the delegate widget with the correct data
Definition: arraydatainformation.h:158
ArrayDataInformation::indexOf
virtual int indexOf(const DataInformation *const data) const
Find the index of a DataInformation in this object, needed to calculate the row.
Definition: arraydatainformation.h:133
ArrayDataInformation::setWidgetData
virtual void setWidgetData(QWidget *w) const
initialize the delegate widget with the correct data
Definition: arraydatainformation.cpp:139
ArrayDataInformation::childPosition
virtual BitCount64 childPosition(const DataInformation *child, Okteta::Address start) const
Definition: arraydatainformation.cpp:144
ArrayDataInformation::ArrayDataInformation
ArrayDataInformation(const QString &name, uint length, DataInformation *childType, DataInformation *parent=0, const QScriptValue &lengthFuntion=QScriptValue())
creates a new array with initial length length.
Definition: arraydatainformation.cpp:36
ArrayDataInformation::childAt
virtual DataInformation * childAt(unsigned int idx) const
Definition: arraydatainformation.h:118
AdditionalData::ArrayLengthFunction
Definition: additionaldata.h:35
DataInformation::child
virtual DataInformation * child(const QString &name) const
Looks for a child of this object with given name.
Definition: datainformation.cpp:228
DataInformation::mAdditionalData
AdditionalData mAdditionalData
Definition: datainformation.h:237
ArrayDataInformation::childCount
virtual unsigned int childCount() const
Definition: arraydatainformation.h:123
DataInformation::data
virtual QVariant data(int column, int role) const
get the necessary data (for the model)
Definition: datainformation.cpp:156
ScriptHandlerInfo
Definition: scripthandlerinfo.h:39
ArrayDataInformation::setChildData
virtual bool setChildData(uint row, const QVariant &value, Okteta::AbstractByteArrayModel *out, Okteta::Address address, BitCount64 bitsRemaining, quint8 bitOffset)
Definition: arraydatainformation.cpp:173
ArrayDataInformation::dataFromWidget
virtual QVariant dataFromWidget(const QWidget *w) const
get the needed data from the widget
Definition: arraydatainformation.cpp:133
DataInformation::parent
DataInformationBase * parent() const
Definition: datainformation.h:309
DATAINFORMATION_CLONE_DECL
#define DATAINFORMATION_CLONE_DECL(type, supertype)
Implement the clone() method and add the copy constructor declaration After this macro visibility wil...
Definition: datainformation.h:42
DataInformation::setAdditionalFunction
void setAdditionalFunction(AdditionalData::AdditionalDataType entry, const QScriptValue &value, const char *name)
Definition: datainformation.cpp:139
DataInformation::row
int row() const
Definition: datainformation.cpp:249
PrimitiveDataInformation
A base class for all primitive data elements (e.g.
Definition: primitivedatainformation.h:34
ArrayDataInformation::childTypeName
virtual QString childTypeName(uint index) const
Definition: arraydatainformation.h:163
ArrayDataInformation::childToScriptValue
QScriptValue childToScriptValue(uint index, QScriptEngine *engine, ScriptHandlerInfo *handlerInfo) const
Definition: arraydatainformation.cpp:198
ArrayDataInformation::~ArrayDataInformation
virtual ~ArrayDataInformation()
Definition: arraydatainformation.cpp:64
abstractarraydata.h
ArrayDataInformation::dataFromChildWidget
virtual QVariant dataFromChildWidget(uint index, const QWidget *w) const
get the needed data from the widget
Definition: arraydatainformation.h:153
ArrayDataInformation::arrayType
DataInformation * arrayType() const
Definition: arraydatainformation.h:168
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 23:04:06 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