• 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
primitivearraydata.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, 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 #ifndef PRIMITIVEARRAYDATA_H
23 #define PRIMITIVEARRAYDATA_H
24 
25 #include "abstractarraydata.h"
26 #include "../datainformation.h"
27 #include "../dummydatainformation.h"
28 #include "../topleveldatainformation.h"
29 #include "../primitive/primitivetemplateinfo.h"
30 
31 template<PrimitiveDataTypeEnum type>
32 class PrimitiveArrayData : public AbstractArrayData
33 {
34  Q_DISABLE_COPY(PrimitiveArrayData)
35 public:
36  typedef typename PrimitiveInfo<type>::valueType T;
37  typedef typename PrimitiveInfo<type>::Methods DisplayClass;
38 
39  explicit PrimitiveArrayData(unsigned int initialLength, PrimitiveDataInformation* childType,
40  ArrayDataInformation* parent);
41  virtual ~PrimitiveArrayData();
42 
43  virtual qint64 readData(Okteta::AbstractByteArrayModel* input, Okteta::Address address,
44  BitCount64 bitsRemaining);
45  virtual bool setChildData(uint row, QVariant value, Okteta::AbstractByteArrayModel* out,
46  Okteta::Address address, BitCount64 bitsRemaining);
47 
48  virtual DataInformation* childAt(unsigned int idx);
49  virtual QVariant dataAt(uint index, int column, int role);
50  AllPrimitiveTypes valueAt(int index) const;
51  virtual int indexOf(const DataInformation* data) const;
52  virtual unsigned int length() const;
53  virtual void setLength(uint newLength);
54  virtual BitCount64 offset(const DataInformation* child) const;
55  virtual BitCount32 size() const;
56  virtual PrimitiveDataType primitiveType() const;
57  virtual BitCount32 sizeAt(uint index);
58  virtual Qt::ItemFlags childFlags(int row, int column, bool fileLoaded);
59 
60  virtual QScriptValue toScriptValue(uint index, QScriptEngine* engine, ScriptHandlerInfo* handlerInfo);
61  virtual QString typeName() const;
62 
63  virtual bool isComplex() const;
64 
65 
66  virtual QWidget* createChildEditWidget(uint index, QWidget* parent) const;
67  virtual QVariant dataFromChildWidget(uint index, const QWidget* w) const;
68  virtual void setChildWidgetData(uint index, QWidget* w) const;
69 
70  static void writeOneItem(T value, Okteta::Address addr, Okteta::AbstractByteArrayModel* out, bool littleEndian);
71 protected:
73  void readDataNativeOrder(uint numItems, Okteta::AbstractByteArrayModel* input, Okteta::Address addr);
75  void readDataNonNativeOrder(uint numItems, Okteta::AbstractByteArrayModel* input, Okteta::Address addr);
76  virtual void setNewParentForChildren();
77 
78  QVector<T> mData;
79  uint mNumReadValues; //the number of values read before EOF
80  DummyDataInformation mDummy;
81 };
82 
83 
84 template<PrimitiveDataTypeEnum type>
85 inline PrimitiveArrayData<type>::~PrimitiveArrayData()
86 {
87 }
88 
89 template<PrimitiveDataTypeEnum type>
90 inline BitCount64 PrimitiveArrayData<type>::offset(const DataInformation* data) const
91 {
92  Q_ASSERT(data->isDummy());
93  const uint index = data->asDummy()->dummyIndex();
94  Q_ASSERT(index < length());
95  return index * sizeof(T) * 8;
96 }
97 
98 template<PrimitiveDataTypeEnum type>
99 inline DataInformation* PrimitiveArrayData<type>::childAt(unsigned int idx)
100 {
101  Q_ASSERT(idx < length());
102  Q_UNUSED(idx);
103  mDummy.setDummyIndex(idx);
104  mDummy.setName(QString::number(idx));
105  return &mDummy;
106 }
107 
108 template<PrimitiveDataTypeEnum type>
109 inline void PrimitiveArrayData<type>::setNewParentForChildren()
110 {
111 }
112 
113 template<PrimitiveDataTypeEnum type>
114 inline unsigned int PrimitiveArrayData<type>::length() const
115 {
116  return mData.size();
117 }
118 
119 template<PrimitiveDataTypeEnum type>
120 inline BitCount32 PrimitiveArrayData<type>::size() const
121 {
122  return mData.size() * sizeof(T) * 8;
123 }
124 
125 template<PrimitiveDataTypeEnum type>
126 void PrimitiveArrayData<type>::setLength(uint newLength)
127 {
128  mData.resize(newLength);
129  mData.squeeze();
130 }
131 
132 template<PrimitiveDataTypeEnum type>
133 inline PrimitiveDataType PrimitiveArrayData<type>::primitiveType() const
134 {
135  return type;
136 }
137 
138 template<PrimitiveDataTypeEnum type>
139 inline BitCount32 PrimitiveArrayData<type>::sizeAt(uint index)
140 {
141  Q_ASSERT(index < length());
142  Q_UNUSED(index)
143  return sizeof(T) * 8;
144 }
145 
146 template<PrimitiveDataTypeEnum type>
147 inline Qt::ItemFlags PrimitiveArrayData<type>::childFlags(int row, int column, bool fileLoaded)
148 {
149  Q_ASSERT(row >= 0 && uint(row) < length());
150  Q_UNUSED(row)
151  if (column == 2 && fileLoaded)
152  return Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable;
153  else
154  return Qt::ItemIsSelectable | Qt::ItemIsEnabled;
155 }
156 
157 template<PrimitiveDataTypeEnum type>
158 bool PrimitiveArrayData<type>::isComplex() const
159 {
160  return false;
161 }
162 
163 template<PrimitiveDataTypeEnum type>
164 AllPrimitiveTypes PrimitiveArrayData<type>::valueAt(int index) const
165 {
166  Q_ASSERT(index >= 0 && index < mData.size());
167  return AllPrimitiveTypes(mData.at(index));
168 }
169 
170 #endif // PRIMITIVEARRAYDATA_H
DummyDataInformation::dummyIndex
uint dummyIndex() const
Definition: dummydatainformation.h:60
PrimitiveArrayData::setLength
virtual void setLength(uint newLength)
Definition: primitivearraydata.h:126
DataInformation
Interface that must be implemented by all datatypes.
Definition: datainformation.h:67
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
PrimitiveArrayData::primitiveType
virtual PrimitiveDataType primitiveType() const
the primitive type or Type_Invalid for structs etc
Definition: primitivearraydata.h:133
PrimitiveArrayData::T
PrimitiveInfo< type >::valueType T
Definition: primitivearraydata.h:36
DummyDataInformation
Definition: dummydatainformation.h:30
PrimitiveArrayData::setChildWidgetData
virtual void setChildWidgetData(uint index, QWidget *w) const
Definition: primitivearraydata.cpp:249
BitCount64
quint64 BitCount64
Definition: datainformationbase.h:42
PrimitiveArrayData::mDummy
DummyDataInformation mDummy
Definition: primitivearraydata.h:80
QWidget
PrimitiveArrayData::setNewParentForChildren
virtual void setNewParentForChildren()
Definition: primitivearraydata.h:109
PrimitiveArrayData::mNumReadValues
uint mNumReadValues
Definition: primitivearraydata.h:79
PrimitiveInfo::valueType
void valueType
Definition: primitivetemplateinfo.h:56
QVector
Definition: scriptvalueconverter.h:30
BitCount32
quint32 BitCount32
Definition: datainformationbase.h:37
PrimitiveArrayData::dataFromChildWidget
virtual QVariant dataFromChildWidget(uint index, const QWidget *w) const
Definition: primitivearraydata.cpp:241
PrimitiveArrayData::mData
QVector< T > mData
Definition: primitivearraydata.h:78
AbstractArrayData::childType
DataInformation * childType() const
Definition: abstractarraydata.h:94
PrimitiveArrayData::childFlags
virtual Qt::ItemFlags childFlags(int row, int column, bool fileLoaded)
Definition: primitivearraydata.h:147
AbstractArrayData
Definition: abstractarraydata.h:46
PrimitiveArrayData::PrimitiveArrayData
PrimitiveArrayData(unsigned int initialLength, PrimitiveDataInformation *childType, ArrayDataInformation *parent)
Definition: primitivearraydata.cpp:36
PrimitiveArrayData::dataAt
virtual QVariant dataAt(uint index, int column, int role)
Definition: primitivearraydata.cpp:177
ArrayDataInformation
Definition: arraydatainformation.h:36
PrimitiveDataType
Definition: primitivedatatype.h:54
PrimitiveArrayData::length
virtual unsigned int length() const
Definition: primitivearraydata.h:114
PrimitiveArrayData::indexOf
virtual int indexOf(const DataInformation *data) const
Definition: primitivearraydata.cpp:208
PrimitiveInfo::Methods
void Methods
Definition: primitivetemplateinfo.h:58
PrimitiveArrayData::size
virtual BitCount32 size() const
Definition: primitivearraydata.h:120
PrimitiveArrayData::typeName
virtual QString typeName() const
Definition: primitivearraydata.cpp:201
PrimitiveArrayData::~PrimitiveArrayData
virtual ~PrimitiveArrayData()
Definition: primitivearraydata.h:85
PrimitiveArrayData
Definition: primitivearraydata.h:32
PrimitiveArrayData::createChildEditWidget
virtual QWidget * createChildEditWidget(uint index, QWidget *parent) const
Definition: primitivearraydata.cpp:233
PrimitiveArrayData::readDataNonNativeOrder
void readDataNonNativeOrder(uint numItems, Okteta::AbstractByteArrayModel *input, Okteta::Address addr)
reads numItems items from the input, sizes must have been checked before calling this method!! ...
Definition: primitivearraydata.cpp:85
PrimitiveArrayData::setChildData
virtual bool setChildData(uint row, QVariant value, Okteta::AbstractByteArrayModel *out, Okteta::Address address, BitCount64 bitsRemaining)
Definition: primitivearraydata.cpp:103
DataInformationBase::asDummy
DummyDataInformation * asDummy()
ScriptHandlerInfo
Definition: scripthandlerinfo.h:39
PrimitiveArrayData::toScriptValue
virtual QScriptValue toScriptValue(uint index, QScriptEngine *engine, ScriptHandlerInfo *handlerInfo)
Definition: primitivearraydata.cpp:219
PrimitiveArrayData::offset
virtual BitCount64 offset(const DataInformation *child) const
Definition: primitivearraydata.h:90
PrimitiveArrayData::writeOneItem
static void writeOneItem(T value, Okteta::Address addr, Okteta::AbstractByteArrayModel *out, bool littleEndian)
Definition: primitivearraydata.cpp:133
DataInformationBase::isDummy
virtual bool isDummy() const
Definition: datainformationbase.cpp:40
PrimitiveArrayData::sizeAt
virtual BitCount32 sizeAt(uint index)
Definition: primitivearraydata.h:139
AllPrimitiveTypes
This union holds the value of one primitive datatype.
Definition: allprimitivetypes.h:70
PrimitiveArrayData::readData
virtual qint64 readData(Okteta::AbstractByteArrayModel *input, Okteta::Address address, BitCount64 bitsRemaining)
Definition: primitivearraydata.cpp:46
PrimitiveArrayData::DisplayClass
PrimitiveInfo< type >::Methods DisplayClass
Definition: primitivearraydata.h:37
PrimitiveArrayData::valueAt
AllPrimitiveTypes valueAt(int index) const
Definition: primitivearraydata.h:164
PrimitiveArrayData::readDataNativeOrder
void readDataNativeOrder(uint numItems, Okteta::AbstractByteArrayModel *input, Okteta::Address addr)
reads numItems items from the input, sizes must have been checked before calling this method!! ...
Definition: primitivearraydata.cpp:71
PrimitiveArrayData::childAt
virtual DataInformation * childAt(unsigned int idx)
Definition: primitivearraydata.h:99
PrimitiveDataInformation
A base class for all primitive data elements (e.g.
Definition: primitivedatainformation.h:34
abstractarraydata.h
PrimitiveArrayData::isComplex
virtual bool isComplex() const
Definition: primitivearraydata.h:158
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