• 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
  • primitive
primitivedatainformation.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 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 PRIMITIVEDATAINFORMATION_H_
23 #define PRIMITIVEDATAINFORMATION_H_
24 
25 #include "../datainformation.h"
26 #include "../primitivedatatype.h"
27 #include "../../allprimitivetypes.h"
28 
29 union AllPrimitiveTypes;
30 
34 class PrimitiveDataInformation : public DataInformation
35 {
36  friend class PrimitiveDataInformationTest; //that unit test needs to change mWasAbleToRead
37 public:
38  explicit PrimitiveDataInformation(const QString& name, DataInformation* parent = 0);
39  virtual ~PrimitiveDataInformation();
40  virtual PrimitiveDataInformation* clone() const = 0;
41 
42  virtual Qt::ItemFlags flags(int column, bool fileLoaded = true) const;
43 
44  virtual bool isPrimitive() const;
45  virtual AllPrimitiveTypes value() const = 0;
46  virtual void setValue(AllPrimitiveTypes newValue) = 0;
47  virtual QScriptValue valueAsQScriptValue() const = 0;
48  virtual PrimitiveDataType type() const = 0;
49 
50  virtual unsigned int childCount() const { return 0; }
51  virtual DataInformation* childAt(unsigned int) const { Q_ASSERT(false); return 0; }
52  virtual bool canHaveChildren() const { return false; }
53  virtual BitCount64 childPosition(const DataInformation*, Okteta::Address) const { Q_ASSERT(false); return 0; }
54  virtual int indexOf(const DataInformation* const) const {Q_ASSERT(false); return -1; }
55 
57  static QString basePrefix(int base);
58  static const QString binaryPrefix;
59  static const QString octalPrefix;
60  static const QString hexPrefix;
61 protected:
62  virtual BitCount32 offset(unsigned int index) const;
63  PrimitiveDataInformation(const PrimitiveDataInformation& d);
64 };
65 
76 class PrimitiveDataInformationWrapper : public PrimitiveDataInformation
77 {
78 protected:
79  PrimitiveDataInformationWrapper(const PrimitiveDataInformationWrapper& d);
80 public:
82  PrimitiveDataInformationWrapper(const QString& name, PrimitiveDataInformation* valueType,
83  DataInformation* parent = 0);
84  virtual ~PrimitiveDataInformationWrapper() {}
85 
86  //delegate all these to the underlying object:
87 
88  virtual bool setData(const QVariant& value, Okteta::AbstractByteArrayModel* out,
89  Okteta::Address address, BitCount64 bitsRemaining, quint8 bitOffset)
90  { return mValue->setData(value, out, address, bitsRemaining, bitOffset); }
91 
92 
93 
94  virtual BitCount32 size() const { return mValue->size(); }
95 
96  virtual void setWidgetData(QWidget* w) const {mValue->setWidgetData(w); }
97 
98  virtual QVariant dataFromWidget(const QWidget* w) const { return mValue->dataFromWidget(w); }
99 
100  virtual QWidget* createEditWidget(QWidget* parent) const { return mValue->createEditWidget(parent); }
101 
102  virtual AllPrimitiveTypes value() const { return mValue->value(); }
103 
104  virtual void setValue(AllPrimitiveTypes newValue) { mValue->setValue(newValue); }
105 
106  //classes derived from this are not true primitive types (they provide additional information)
107  virtual PrimitiveDataType type() const { return Type_Invalid; }
108 
109 
110  virtual QScriptValue valueAsQScriptValue() const;
111 
112  //we have to do slightly more than just forward with this method
113  virtual qint64 readData(Okteta::AbstractByteArrayModel* input, Okteta::Address address,
114  BitCount64 bitsRemaining, quint8* bitOffset);
115 protected:
116  QScopedPointer<PrimitiveDataInformation> mValue;
117 };
118 
119 
120 inline BitCount32 PrimitiveDataInformation::offset(unsigned int index) const
121 {
122  Q_UNUSED(index)
123  Q_ASSERT_X(false, "PrimitiveDataInformation::offset", "This should never be called");
124  return 0;
125 }
126 
127 inline bool PrimitiveDataInformation::isPrimitive() const
128 {
129  return true;
130 }
131 
132 inline PrimitiveDataInformation::PrimitiveDataInformation(const QString& name,
133  DataInformation* parent)
134  : DataInformation(name, parent)
135 {
136 }
137 
138 inline PrimitiveDataInformation::PrimitiveDataInformation(const PrimitiveDataInformation& d)
139  : DataInformation(d)
140 {
141 }
142 
143 inline QString PrimitiveDataInformation::basePrefix(int base)
144 {
145  switch (base) {
146  case 10: return QString();
147  case 2: return binaryPrefix;
148  case 8: return octalPrefix;
149  case 16: return hexPrefix;
150  default:
151  Q_ASSERT_X(false, "PrimitiveDataInformation::basePrefix()", "Invalid argument!");
152  return QString();
153  }
154 }
155 
156 
157 #endif /* PRIMITIVEDATAINFORMATION_H_ */
PrimitiveDataInformation::binaryPrefix
static const QString binaryPrefix
Definition: primitivedatainformation.h:58
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
DataInformation::name
QString name() const
Definition: datainformation.h:258
PrimitiveDataInformationWrapper::createEditWidget
virtual QWidget * createEditWidget(QWidget *parent) const
create a QWidget for the QItemDelegate
Definition: primitivedatainformation.h:100
PrimitiveDataInformation::childPosition
virtual BitCount64 childPosition(const DataInformation *, Okteta::Address) const
Definition: primitivedatainformation.h:53
PrimitiveDataInformationWrapper::setWidgetData
virtual void setWidgetData(QWidget *w) const
initialize the delegate widget with the correct data
Definition: primitivedatainformation.h:96
PrimitiveDataInformationWrapper::dataFromWidget
virtual QVariant dataFromWidget(const QWidget *w) const
get the needed data from the widget
Definition: primitivedatainformation.h:98
PrimitiveDataInformation::PrimitiveDataInformationTest
friend class PrimitiveDataInformationTest
Definition: primitivedatainformation.h:36
BitCount64
quint64 BitCount64
Definition: datainformationbase.h:42
PrimitiveDataInformationWrapper::type
virtual PrimitiveDataType type() const
Definition: primitivedatainformation.h:107
PrimitiveDataInformation::value
virtual AllPrimitiveTypes value() const =0
QWidget
PrimitiveDataInformationWrapper::value
virtual AllPrimitiveTypes value() const
Definition: primitivedatainformation.h:102
BitCount32
quint32 BitCount32
Definition: datainformationbase.h:37
PrimitiveDataInformation::type
virtual PrimitiveDataType type() const =0
PrimitiveDataType
Definition: primitivedatatype.h:54
PrimitiveDataInformation::PrimitiveDataInformation
PrimitiveDataInformation(const QString &name, DataInformation *parent=0)
Definition: primitivedatainformation.h:132
PrimitiveDataInformationWrapper::setValue
virtual void setValue(AllPrimitiveTypes newValue)
Definition: primitivedatainformation.h:104
PrimitiveDataInformationWrapper::valueAsQScriptValue
virtual QScriptValue valueAsQScriptValue() const
Definition: primitivedatainformation.cpp:59
PrimitiveDataInformationWrapper::size
virtual BitCount32 size() const
the size in bits of this element
Definition: primitivedatainformation.h:94
PrimitiveDataInformation::canHaveChildren
virtual bool canHaveChildren() const
true for unions and structs and arrays
Definition: primitivedatainformation.h:52
PrimitiveDataInformation::octalPrefix
static const QString octalPrefix
Definition: primitivedatainformation.h:59
PrimitiveDataInformationWrapper::mValue
QScopedPointer< PrimitiveDataInformation > mValue
Definition: primitivedatainformation.h:116
PrimitiveDataInformation::flags
virtual Qt::ItemFlags flags(int column, bool fileLoaded=true) const
Definition: primitivedatainformation.cpp:31
PrimitiveDataInformationWrapper::PrimitiveDataInformationWrapper
PrimitiveDataInformationWrapper(const PrimitiveDataInformationWrapper &d)
Definition: primitivedatainformation.cpp:44
PrimitiveDataInformation::isPrimitive
virtual bool isPrimitive() const
Definition: primitivedatainformation.h:127
PrimitiveDataInformation::childCount
virtual unsigned int childCount() const
Definition: primitivedatainformation.h:50
PrimitiveDataInformation::~PrimitiveDataInformation
virtual ~PrimitiveDataInformation()
Definition: primitivedatainformation.cpp:40
PrimitiveDataInformation::valueAsQScriptValue
virtual QScriptValue valueAsQScriptValue() const =0
PrimitiveDataInformationWrapper::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: primitivedatainformation.cpp:64
PrimitiveDataInformationWrapper::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: primitivedatainformation.h:88
PrimitiveDataInformationWrapper
A base class for data types which just wrap an underlying primitive data type.
Definition: primitivedatainformation.h:76
PrimitiveDataInformation::setValue
virtual void setValue(AllPrimitiveTypes newValue)=0
PrimitiveDataInformationWrapper::~PrimitiveDataInformationWrapper
virtual ~PrimitiveDataInformationWrapper()
Definition: primitivedatainformation.h:84
PrimitiveDataInformation::hexPrefix
static const QString hexPrefix
Definition: primitivedatainformation.h:60
PrimitiveDataInformation::clone
virtual PrimitiveDataInformation * clone() const =0
Type_Invalid
!! DO NOT CHANGE ORDER OF ITEMS !!!
Definition: primitivedatatype.h:31
DataInformation::parent
DataInformationBase * parent() const
Definition: datainformation.h:309
AllPrimitiveTypes
This union holds the value of one primitive datatype.
Definition: allprimitivetypes.h:70
PrimitiveDataInformation::indexOf
virtual int indexOf(const DataInformation *const) const
Find the index of a DataInformation in this object, needed to calculate the row.
Definition: primitivedatainformation.h:54
PrimitiveDataInformation::basePrefix
static QString basePrefix(int base)
Definition: primitivedatainformation.h:143
PrimitiveDataInformation::childAt
virtual DataInformation * childAt(unsigned int) const
Definition: primitivedatainformation.h:51
PrimitiveDataInformation::offset
virtual BitCount32 offset(unsigned int index) const
Definition: primitivedatainformation.h:120
PrimitiveDataInformation
A base class for all primitive data elements (e.g.
Definition: primitivedatainformation.h:34
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