• 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
structtool.cpp
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  * Copyright 2009 Friedrich W. H. Kossebau <kossebau@kde.org>
6  *
7  * This library is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Lesser General Public
9  * License as published by the Free Software Foundation; either
10  * version 2.1 of the License, or (at your option) version 3, or any
11  * later version accepted by the membership of KDE e.V. (or its
12  * successor approved by the membership of KDE e.V.), which shall
13  * act as a proxy defined in Section 6 of version 3 of the license.
14  *
15  * This library is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18  * Lesser General Public License for more details.
19  *
20  * You should have received a copy of the GNU Lesser General Public
21  * License along with this library. If not, see <http://www.gnu.org/licenses/>.
22  */
23 
24 #include "structtool.h"
25 #include "structuredefinitionfile.h"
26 #include "structuresmanager.h"
27 // lib
28 #include <bytearraydocument.h>
29 #include <bytearrayview.h>
30 // Okteta core
31 #include <character.h>
32 #include <charcodec.h>
33 #include <abstractbytearraymodel.h>
34 // KDE
35 #include <KLocale>
36 #include <KDebug>
37 #include <KGlobal>
38 #include <KStandardDirs>
39 //Qt
40 #include <QModelIndex>
41 
42 
43 #include "script/scripthandler.h"
44 #include "datatypes/datainformation.h"
45 #include "structviewpreferences.h"
46 
47 
48 namespace Kasten2
49 {
50 
51 class StructToolPrivate
52 {
53 public:
54  StructToolPrivate() : mByteArrayView(0), mByteArrayModel(0), mCursorIndex(0),
55  mByteOrder(StructViewPreferences::byteOrder()), mManager(new StructuresManager()),
56  mWritingData(false), mCurrentItemDataChanged(false) {}
57 
58  // source
59  ByteArrayView* mByteArrayView;
60  Okteta::AbstractByteArrayModel* mByteArrayModel;
61  Okteta::Address mCursorIndex;
62 
63  // settings
64  QSysInfo::Endian mByteOrder;
65  QScopedPointer<StructuresManager> mManager;
66  TopLevelDataInformation::List mData;
67  TopLevelDataInformation::List mInvalidData;
68  bool mWritingData :1;
69  bool mCurrentItemDataChanged :1;
70 };
71 
72 StructTool::StructTool()
73  : d(new StructToolPrivate())
74 {
75  //leave mLoadedFiles empty for now, since otherwise loading slot will not work
76  setObjectName(QLatin1String("StructTool"));
77  d->mManager->reloadPaths();
78  setSelectedStructuresInView();
79  // mUtf8Codec = QTextCodec::codecForName("UTF-8");
80 
81  connect(this, SIGNAL(byteOrderChanged()), this, SLOT(onByteOrderChanged()));
82 }
83 
84 void StructTool::onByteOrderChanged()
85 {
86  updateData(Okteta::ArrayChangeMetricsList());
87 }
88 
89 StructTool::~StructTool()
90 {
91 }
92 
93 void StructTool::setByteOrder(QSysInfo::Endian order)
94 {
95  if (order != StructViewPreferences::byteOrder() || order != d->mByteOrder)
96  {
97  emit byteOrderChanged();
98  StructViewPreferences::setByteOrder(order);
99  d->mByteOrder = order;
100  updateData(Okteta::ArrayChangeMetricsList());
101  }
102 }
103 
104 QString StructTool::title() const
105 {
106  return i18nc("@title:window", "Structures");
107 }
108 
109 void StructTool::setTargetModel(AbstractModel* model)
110 {
111  //just a copy of the code in poddecodertool.h
112  if (d->mByteArrayView)
113  d->mByteArrayView->disconnect(this);
114  if (d->mByteArrayModel)
115  d->mByteArrayModel->disconnect(this);
116 
117  d->mByteArrayView = model ? model->findBaseModel<ByteArrayView*>() : 0;
118  ByteArrayDocument* document = d->mByteArrayView ?
119  qobject_cast<ByteArrayDocument*>(d->mByteArrayView->baseModel()) : 0;
120  d->mByteArrayModel = document ? document->content() : 0;
121 
122  if (d->mByteArrayModel && d->mByteArrayView)
123  {
124  d->mCursorIndex = d->mByteArrayView->cursorPosition();
125  connect(d->mByteArrayView, SIGNAL(cursorPositionChanged(Okteta::Address)),
126  SLOT(onCursorPositionChange(Okteta::Address)));
127  connect(d->mByteArrayModel, SIGNAL(contentsChanged(Okteta::ArrayChangeMetricsList)),
128  SLOT(onContentsChange(Okteta::ArrayChangeMetricsList)));
129  }
130  emit byteArrayModelChanged(d->mByteArrayModel);
131  updateData(Okteta::ArrayChangeMetricsList());
132 }
133 
134 void StructTool::onCursorPositionChange(Okteta::Address pos)
135 {
136  if (d->mCursorIndex != pos)
137  {
138  d->mCursorIndex = pos;
139  updateData(Okteta::ArrayChangeMetricsList());
140  emit cursorIndexChanged();
141  }
142 }
143 
144 void StructTool::setByteOrder(int order)
145 {
146  if (order == QSysInfo::LittleEndian)
147  setByteOrder(QSysInfo::LittleEndian);
148  else if (order == QSysInfo::BigEndian)
149  setByteOrder(QSysInfo::BigEndian);
150  else
151  {
152  kWarning() << "invalid byte order set:" << order;
153  }
154 }
155 
156 void StructTool::onContentsChange(const Okteta::ArrayChangeMetricsList& list)
157 {
158  kDebug() << "contents changed";
159  for (int i = 0; i < list.size(); ++i) {
160  const Okteta::ArrayChangeMetrics& acm = list.at(i);
161  kDebug() << "change: t=" << acm.type() << "o=" << acm.offset() << "a2=" << acm.removeLength() << "a3=" << acm.insertLength();
162  }
163  updateData(list);
164 }
165 
166 bool StructTool::setData(const QVariant& value, int role, DataInformation* item, uint row)
167 {
168  Q_UNUSED(row)
169  if (!d->mByteArrayModel)
170  return false;
171  if (role != Qt::EditRole)
172  return false;
173  Q_CHECK_PTR(item);
174 
175  TopLevelDataInformation* topLevel = item->topLevelDataInformation();
176  const Okteta::Address structureStart = startAddress(topLevel);
177  d->mWritingData = true;
178  bool ret = false;
179  BitCount64 position = item->positionInFile(structureStart);
180  const quint64 remainingBits = qMax(d->mByteArrayModel->size() * 8 - qint64(position), qint64(0));
181  quint8 bitOffs = position % 8;
182  ret = item->setData(value, d->mByteArrayModel, Okteta::Address(position / 8), remainingBits, bitOffs);
183  d->mWritingData = false; //finished
184  //XXX: this is inefficient, best would be to only update the changed value
185  updateData(Okteta::ArrayChangeMetricsList()); //update once after writing
186  return ret;
187 }
188 
189 void StructTool::updateData(const Okteta::ArrayChangeMetricsList& list)
190 {
191  if (d->mWritingData)
192  {
193  kWarning() << "currently writing data, won't update";
194  return;
195  }
196  if (!d->mByteArrayModel)
197  return;
198 
199  for (int i = 0; i < d->mData.size(); i++)
200  {
201  const TopLevelDataInformation::Ptr& dat = d->mData.at(i);
202  dat->read(d->mByteArrayModel, d->mCursorIndex, list, false);
203  if (d->mCurrentItemDataChanged)
204  emit dataChanged(i, d->mData.at(i)->actualDataInformation());
205  d->mCurrentItemDataChanged = false;
206  }
207 }
208 
209 //model interface:
210 QVariant StructTool::headerData(int column, int role)
211 {
212  if (role == Qt::DisplayRole)
213  {
214  switch (column)
215  {
216  case DataInformation::ColumnName:
217  return i18nc("name of a data structure", "Name");
218  case DataInformation::ColumnType:
219  return i18nc("type of a data structure", "Type");
220  case DataInformation::ColumnValue:
221  return i18nc("value of a data structure (primitive type)", "Value");
222  default:
223  return QVariant();
224  }
225  }
226  return QVariant();
227 }
228 
229 int StructTool::childCount() const
230 {
231  return d->mData.size();
232 }
233 
234 DataInformation* StructTool::childAt(int idx) const
235 {
236  if (idx >= d->mData.size() || idx < 0)
237  {
238  return 0;
239  }
240  //don't expose the topLevelDataInformation, since this may cause crashes
241  return d->mData.at(idx)->actualDataInformation();
242 }
243 
244 void StructTool::addChildItem(TopLevelDataInformation* child)
245 {
246  Q_CHECK_PTR(child);
247  child->setParent(this);
248  if (child->isValid())
249  {
250  child->setIndex(d->mData.size());
251  connect(child, SIGNAL(dataChanged()), this, SLOT(onChildItemDataChanged()));
252  connect(child, SIGNAL(childrenAboutToBeInserted(DataInformation*,uint,uint)),
253  this, SIGNAL(childrenAboutToBeInserted(DataInformation*,uint,uint)));
254  connect(child, SIGNAL(childrenInserted(const DataInformation*,uint,uint)),
255  this, SIGNAL(childrenInserted(const DataInformation*,uint,uint)));
256  connect(child, SIGNAL(childrenAboutToBeRemoved(DataInformation*,uint,uint)),
257  this, SIGNAL(childrenAboutToBeRemoved(DataInformation*,uint,uint)));
258  connect(child, SIGNAL(childrenRemoved(const DataInformation*,uint,uint)),
259  this, SIGNAL(childrenRemoved(const DataInformation*,uint,uint)));
260  connect(this, SIGNAL(byteArrayModelChanged(Okteta::AbstractByteArrayModel*)),
261  child, SLOT(newModelActivated(Okteta::AbstractByteArrayModel*)));
262  d->mData.append(QSharedPointer<TopLevelDataInformation>(child));
263  //ensure that locking gets set up properly
264  if (d->mByteArrayModel)
265  child->newModelActivated(d->mByteArrayModel);
266  }
267  else
268  {
269  child->setIndex(d->mInvalidData.size());
270  d->mInvalidData.append(QSharedPointer<TopLevelDataInformation>(child));
271  }
272 }
273 
274 void StructTool::setSelectedStructuresInView()
275 {
276  d->mData.clear();
277  d->mInvalidData.clear();
278  emit dataCleared();
279 
280  QRegExp regex(QLatin1String("'(.+)':'(.+)'"));
281  QStringList loadedStructs = StructViewPreferences::loadedStructures();
282  kDebug() << "loadedStructs " << loadedStructs;
283  for (int i = 0; i < loadedStructs.size(); ++i)
284  {
285  const QString& s = loadedStructs.at(i);
286  int pos = regex.indexIn(s);
287  if (pos > -1)
288  {
289  QString pluginName = regex.cap(1);
290  QString name = regex.cap(2);
291  //kDebug() << "pluginName=" << path << " structureName=" << name;
292  StructureDefinitionFile* def = d->mManager->definition(pluginName);
293  if (!def)
294  continue;
295  if (!def->isValid())
296  continue;
297  //should be valid now
298  if (name == QLatin1String("*"))
299  {
300  //add all of them
301  QVector<TopLevelDataInformation*> structs = def->structures();
302  for (int i = 0; i < structs.size(); ++i)
303  addChildItem(structs.at(i));
304  }
305  else
306  {
307  TopLevelDataInformation* data = def->structure(name);
308  if (data)
309  addChildItem(data);
310  else
311  kDebug() << "Could not find structure with name" << name << "in" << pluginName;
312  }
313  }
314  }
315  for (int i = 0; i < d->mData.count(); ++i)
316  {
317  emit dataChanged(i, d->mData.at(i)->actualDataInformation());
318  }
319  updateData(Okteta::ArrayChangeMetricsList());
320 
321 }
322 
323 Okteta::Address StructTool::startAddress(const TopLevelDataInformation* data)
324 {
325  if (data->isLockedFor(d->mByteArrayModel))
326  return Okteta::Address(data->lockPositionFor(d->mByteArrayModel));
327  else
328  return d->mCursorIndex;
329 }
330 
331 void StructTool::mark(const QModelIndex& idx)
332 {
333  if (!d->mByteArrayModel || !d->mByteArrayView || !idx.isValid())
334  return;
335  const DataInformation* data = static_cast<const DataInformation*>(idx.internalPointer());
336  if (!data)
337  return;
338  Q_CHECK_PTR(data->topLevelDataInformation());
339  const Okteta::Address baseAddress = startAddress(data->topLevelDataInformation());
340  //FIXME support marking of partial bytes
341  int length = data->size() / 8;
342  const int maxLen = d->mByteArrayModel->size() - baseAddress;
343  length = qMin(length, maxLen);
344  const Okteta::Address startOffset = Okteta::Address(data->positionInFile(baseAddress) / 8);
345  const Okteta::AddressRange markingRange = Okteta::AddressRange::fromWidth(startOffset, length);
346  d->mByteArrayView->setMarking(markingRange, true);
347 }
348 
349 void StructTool::unmark(/*const QModelIndex& idx*/)
350 {
351  if (d->mByteArrayView)
352  d->mByteArrayView->setMarking(Okteta::AddressRange());
353 }
354 
355 void StructTool::validateAllStructures()
356 {
357  if (!d->mByteArrayModel)
358  return; //no point validating
359  const int size = d->mData.size();
360  for (int i = 0; i < size; ++i)
361  {
362  d->mData.at(i)->validate();
363  }
364 }
365 
366 int StructTool::columnCount() const
367 {
368  return DataInformation::COLUMN_COUNT;
369 }
370 
371 bool StructTool::isFileLoaded() const
372 {
373  return d->mByteArrayModel != NULL;
374 }
375 
376 void StructTool::lockStructure(const QModelIndex& idx)
377 {
378  if (!d->mByteArrayModel) //no point without ByteArrayModel
379  return;
380  if (!idx.isValid() || !idx.internalPointer())
381  return;
382  DataInformation* data = static_cast<DataInformation*>(idx.internalPointer());
383  TopLevelDataInformation* top = data->topLevelDataInformation();
384  Q_ASSERT(top);
385  if (top)
386  top->lockPositionToOffset(d->mCursorIndex, d->mByteArrayModel);
387 }
388 
389 void StructTool::unlockStructure(const QModelIndex& idx)
390 {
391  if (!d->mByteArrayModel) //no point without ByteArrayModel
392  return;
393  if (!idx.isValid() || !idx.internalPointer())
394  return;
395  DataInformation* data = static_cast<DataInformation*>(idx.internalPointer());
396  TopLevelDataInformation* top = data->topLevelDataInformation();
397  Q_CHECK_PTR(top);
398 
399  unmark();
400  top->unlockPosition(d->mByteArrayModel);
401  //now read from the current position:
402  top->read(d->mByteArrayModel, d->mCursorIndex, Okteta::ArrayChangeMetricsList(), true);
403  mark(idx); //we have to change the marked range, otherwise it stays at the previous locked offset
404 }
405 
406 bool StructTool::isStructureLocked(const QModelIndex& idx) const
407 {
408  if (!d->mByteArrayModel) //no point without ByteArrayModel
409  return false;
410  if (!idx.isValid() || !idx.internalPointer())
411  return false;
412  DataInformation* data = static_cast<DataInformation*>(idx.internalPointer());
413  TopLevelDataInformation* top = data->topLevelDataInformation();
414  Q_ASSERT(top);
415  if (top)
416  return top->isLockedFor(d->mByteArrayModel);
417  return false;
418 }
419 
420 bool StructTool::canStructureBeLocked(const QModelIndex& idx) const
421 {
422  //we need a valid model and a valid index
423  return d->mByteArrayModel && idx.isValid() && idx.internalPointer();
424 }
425 
426 void StructTool::onChildItemDataChanged()
427 {
428  d->mCurrentItemDataChanged = true;
429 }
430 
431 Okteta::AbstractByteArrayModel* StructTool::byteArrayModel() const
432 {
433  return d->mByteArrayModel;
434 }
435 
436 StructuresManager* StructTool::manager() const
437 {
438  return d->mManager.data();
439 }
440 
441 QSysInfo::Endian StructTool::byteOrder() const
442 {
443  return d->mByteOrder;
444 }
445 
446 TopLevelDataInformation::List StructTool::allData() const
447 {
448  TopLevelDataInformation::List ret;
449  ret << d->mData << d->mInvalidData;
450  return ret;
451 }
452 
453 }
character.h
Kasten2::StructTool::byteArrayModelChanged
KDE_DEPRECATED void byteArrayModelChanged(bool modelIsValid)
Kasten2::StructTool::onByteOrderChanged
void onByteOrderChanged()
Definition: structtool.cpp:84
DataInformation
Interface that must be implemented by all datatypes.
Definition: datainformation.h:67
TopLevelDataInformation::read
void read(Okteta::AbstractByteArrayModel *input, Okteta::Address address, const Okteta::ArrayChangeMetricsList &changesList, bool forceRead)
Reads the necessary data from input.
Definition: topleveldatainformation.cpp:81
Kasten2::StructViewPreferences::byteOrder
static QSysInfo::Endian byteOrder()
Get Byte order.
Definition: structviewpreferences.h:262
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
Kasten2::StructTool::headerData
QVariant headerData(int column, int role)
Definition: structtool.cpp:210
abstractbytearraymodel.h
Kasten2::StructureDefinitionFile::structures
QVector< TopLevelDataInformation * > structures() const
Definition: structuredefinitionfile.cpp:63
DataInformation::topLevelDataInformation
TopLevelDataInformation * topLevelDataInformation() const
Definition: datainformation.cpp:240
Okteta::ArrayChangeMetrics::type
int type() const
Definition: arraychangemetrics.h:140
TopLevelDataInformation::Ptr
QSharedPointer< TopLevelDataInformation > Ptr
Definition: topleveldatainformation.h:61
Kasten2::StructTool::onCursorPositionChange
void onCursorPositionChange(Okteta::Address pos)
Definition: structtool.cpp:134
datainformation.h
BitCount64
quint64 BitCount64
Definition: datainformationbase.h:42
Kasten2::StructTool::onChildItemDataChanged
void onChildItemDataChanged()
Definition: structtool.cpp:426
Kasten2::StructTool::d
QScopedPointer< StructToolPrivate > d
Definition: structtool.h:118
Okteta::ArrayChangeMetrics::offset
Address offset() const
Definition: arraychangemetrics.h:141
Kasten2::StructTool::childAt
DataInformation * childAt(int idx) const
Definition: structtool.cpp:234
Kasten2::StructureDefinitionFile
This class takes care of all the XML parsing and stores the result.
Definition: structuredefinitionfile.h:43
KDE::NumberRange< Address, Size >
scripthandler.h
Kasten2::StructTool::unlockStructure
void unlockStructure(const QModelIndex &idx)
Definition: structtool.cpp:389
TopLevelDataInformation::unlockPosition
void unlockPosition(const Okteta::AbstractByteArrayModel *model)
Definition: topleveldatainformation.cpp:198
structviewpreferences.h
DataInformation::setData
virtual bool setData(const QVariant &value, Okteta::AbstractByteArrayModel *out, Okteta::Address address, BitCount64 bitsRemaining, quint8 bitOffset)=0
Writes the current data contained in this object to out.
Kasten2::StructTool::byteOrderChanged
void byteOrderChanged()
Kasten2::StructTool::StructTool
StructTool()
Definition: structtool.cpp:72
DataInformation::ColumnType
Definition: datainformation.h:84
Kasten2::StructTool::canStructureBeLocked
bool canStructureBeLocked(const QModelIndex &idx) const
check if there is any ByteArrayModel available to lock the structure
Definition: structtool.cpp:420
QVector< Ptr >
Kasten2::StructTool::addChildItem
void addChildItem(TopLevelDataInformation *child)
Definition: structtool.cpp:244
DataInformation::ColumnValue
Definition: datainformation.h:84
Kasten2::StructTool::updateData
void updateData(const Okteta::ArrayChangeMetricsList &list)
Definition: structtool.cpp:189
BigEndian
Definition: endianness.h:33
TopLevelDataInformation::newModelActivated
void newModelActivated(Okteta::AbstractByteArrayModel *model)
Definition: topleveldatainformation.cpp:228
Kasten2::StructTool::childrenRemoved
void childrenRemoved(const DataInformation *sender, uint startIndex, uint endIndex)
items are inserted before startIndex
Kasten2::StructureDefinitionFile::isValid
bool isValid() const
Definition: structuredefinitionfile.h:73
Kasten2::StructTool::~StructTool
virtual ~StructTool()
Definition: structtool.cpp:89
TopLevelDataInformation
Definition: topleveldatainformation.h:46
Kasten2::StructTool::setByteOrder
void setByteOrder(QSysInfo::Endian order)
Definition: structtool.cpp:93
Kasten2::StructureDefinitionFile::structure
TopLevelDataInformation * structure(const QString &name) const
Definition: structuredefinitionfile.cpp:69
Kasten2::StructTool::lockStructure
void lockStructure(const QModelIndex &idx)
Definition: structtool.cpp:376
Kasten2::StructTool::byteArrayModel
Okteta::AbstractByteArrayModel * byteArrayModel() const
Definition: structtool.cpp:431
Kasten2::StructTool::setData
bool setData(const QVariant &value, int role, DataInformation *item, uint row)
Definition: structtool.cpp:166
Kasten2::StructTool::allData
TopLevelDataInformation::List allData() const
Definition: structtool.cpp:446
KDE::NumberRange< Address, Size >::fromWidth
static NumberRange fromWidth(AddressstartIndex, Sizewidth)
constructs a range by width
Okteta::ArrayChangeMetricsList
Definition: arraychangemetricslist.h:36
Kasten2::StructTool::byteOrder
QSysInfo::Endian byteOrder() const
Definition: structtool.cpp:441
TopLevelDataInformation::isLockedFor
bool isLockedFor(const Okteta::AbstractByteArrayModel *model) const
Definition: topleveldatainformation.cpp:242
TopLevelDataInformation::isValid
bool isValid() const
Definition: topleveldatainformation.h:149
DataInformation::ColumnName
Definition: datainformation.h:84
Kasten2::StructTool::isStructureLocked
bool isStructureLocked(const QModelIndex &idx) const
Definition: structtool.cpp:406
Kasten2::StructTool::dataChanged
void dataChanged(int row, void *data)
Kasten2::AbstractModel::findBaseModel
T findBaseModel() const
returns the first baseModel which is of type T, or null if none is found.
Definition: abstractmodel.h:93
Kasten2::StructTool::columnCount
KDE_DEPRECATED int columnCount() const
Definition: structtool.cpp:366
charcodec.h
Kasten2::StructTool::validateAllStructures
void validateAllStructures()
Definition: structtool.cpp:355
Kasten2::StructTool::cursorIndexChanged
void cursorIndexChanged()
structtool.h
Kasten2::StructViewPreferences::loadedStructures
static QStringList loadedStructures()
Get LoadedStructures.
Definition: structviewpreferences.h:289
Kasten2::StructTool::childrenInserted
void childrenInserted(const DataInformation *sender, uint startIndex, uint endIndex)
items are inserted before startIndex
structuredefinitionfile.h
Kasten2::StructTool::childrenAboutToBeRemoved
void childrenAboutToBeRemoved(DataInformation *sender, uint startIndex, uint endIndex)
items are removed before startIndex
Kasten2::StructTool::manager
StructuresManager * manager() const
Definition: structtool.cpp:436
structuresmanager.h
DataInformation::positionInFile
virtual BitCount64 positionInFile(Okteta::Address start) const
Definition: datainformation.cpp:75
Okteta::ArrayChangeMetrics::removeLength
Size removeLength() const
Definition: arraychangemetrics.h:142
Kasten2::StructTool::childCount
int childCount() const
Definition: structtool.cpp:229
Kasten2::StructTool::unmark
void unmark()
Definition: structtool.cpp:349
Kasten2::StructuresManager
Definition: structuresmanager.h:38
Okteta::ArrayChangeMetrics
Definition: arraychangemetrics.h:38
Okteta::ArrayChangeMetrics::insertLength
Size insertLength() const
Definition: arraychangemetrics.h:143
Kasten2::ByteArrayDocument
Definition: bytearraydocument.h:54
TopLevelDataInformation::lockPositionFor
quint64 lockPositionFor(const Okteta::AbstractByteArrayModel *model) const
Definition: topleveldatainformation.cpp:248
TopLevelDataInformation::lockPositionToOffset
void lockPositionToOffset(Okteta::Address offset, const Okteta::AbstractByteArrayModel *model)
Definition: topleveldatainformation.cpp:184
Kasten2::AbstractModel
Definition: abstractmodel.h:40
bytearraydocument.h
Kasten2::StructTool::isFileLoaded
bool isFileLoaded() const
Definition: structtool.cpp:371
DataInformation::COLUMN_COUNT
Definition: datainformation.h:84
LittleEndian
Definition: endianness.h:32
DataInformation::size
virtual BitCount32 size() const =0
the size in bits of this element
Kasten2::StructTool::setSelectedStructuresInView
void setSelectedStructuresInView()
Definition: structtool.cpp:274
Kasten2::StructTool::setTargetModel
virtual void setTargetModel(AbstractModel *model)
Definition: structtool.cpp:109
Kasten2::StructViewPreferences::setByteOrder
static void setByteOrder(QSysInfo::Endian v)
Set Byte order.
Definition: structviewpreferences.h:252
Kasten2::ByteArrayView
Definition: bytearrayview.h:51
Kasten2::StructTool::onContentsChange
void onContentsChange(const Okteta::ArrayChangeMetricsList &)
Definition: structtool.cpp:156
Kasten2::StructTool::dataCleared
void dataCleared()
Kasten2::StructTool::mark
void mark(const QModelIndex &idx)
Definition: structtool.cpp:331
Kasten2::StructTool::childrenAboutToBeInserted
void childrenAboutToBeInserted(DataInformation *sender, uint startIndex, uint endIndex)
items are inserted before startIndex
TopLevelDataInformation::setIndex
void setIndex(int newIndex)
Definition: topleveldatainformation.h:159
Kasten2::StructTool::title
virtual QString title() const
Definition: structtool.cpp:104
bytearrayview.h
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 23:04:09 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