• 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
  • core
bytearraymodel_p.h
Go to the documentation of this file.
1 /*
2  This file is part of the Okteta Core library, made within the KDE community.
3 
4  Copyright 2003,2007,2009 Friedrich W. H. Kossebau <kossebau@kde.org>
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 OKTETA_BYTEARRAYMODEL_P_H
24 #define OKTETA_BYTEARRAYMODEL_P_H
25 
26 
27 // lib
28 #include "bytearraymodel.h"
29 #include "bookmarksconstiterator.h"
30 #include "bookmarklistconstiteratoradapter.h"
31 #include "bookmarklist.h"
32 //
33 #include <arraychangemetricslist.h>
34 
35 
36 namespace Okteta
37 {
38 
39 class ByteArrayModelPrivate
40 {
41  public:
42  ByteArrayModelPrivate( ByteArrayModel* parent, Byte* data, int size, int rawSize, bool keepsMemory );
43  ByteArrayModelPrivate( ByteArrayModel* parent, const Byte* data, int size );
44  ByteArrayModelPrivate( ByteArrayModel* parent, int size, int maxSize );
45 
46  ~ByteArrayModelPrivate();
47 
48  public: // AbstractByteArrayModel API
49  Byte byte( Address offset ) const;
50  Size size() const;
51  bool isReadOnly() const;
52  bool isModified() const;
53 
54  Size insert( Address offset, const Byte* insertData, int insertLength );
55  Size remove( const AddressRange& removeRange );
56  Size replace( const AddressRange& removeRange, const Byte* insertData, int insertLength );
57  bool swap( Address firstStart, const AddressRange& secondRange );
58  Size fill( Byte fillByte, Address offset = 0, Size fillLength = -1 );
59  void setByte( Address offset, Byte byte );
60 
61  void setModified( bool modified = true );
62 
63  public:
64  void setReadOnly( bool readOnly = true );
65  void setMaxSize( int maxSize );
68  void setKeepsMemory( bool keepsMemory = true );
69  void setAutoDelete( bool autoDelete = true );
70  void setData( Byte* data, int size, int rawSize = -1, bool keepsMemory = true );
71 
72  public:
73  Byte* data() const;
74  int maxSize() const;
76  bool keepsMemory() const;
77  // TODO 0.10: turn this bool flag into a real flag which also tells how to free the memory if "autodeleted"
78  // perhaps merge keepsMemory flag into that new flag as well
79  bool autoDelete() const;
80 
81  public: // Bookmarkable API
82  void addBookmarks( const QList<Bookmark>& bookmarks );
83  void removeBookmarks( const QList<Bookmark>& bookmarks );
84  void removeAllBookmarks();
85  void setBookmark( unsigned int index, const Bookmark& bookmark );
86 
87  BookmarksConstIterator createBookmarksConstIterator() const;
88  const Bookmark& bookmarkAt( unsigned int index ) const;
89  const Bookmark& bookmarkFor( int offset ) const;
90  bool containsBookmarkFor( int offset ) const;
91  unsigned int bookmarksCount() const;
92 
93  protected:
100  int addSize( int AddSize, int splitOffset = -1, bool saveUpperPart = true );
101 
102  protected:
103  ByteArrayModel* p;
105  Byte* mData;
107  int mSize;
109  int mRawSize;
111  int mMaxSize;
113  bool mKeepsMemory :1;
115  bool mAutoDelete :1;
117  bool mReadOnly :1;
119  bool mModified :1;
121  BookmarkList m_bookmarks;
122 };
123 
124 //use delete[], since usually mData should be allocated by calling new Byte[n]
125 inline ByteArrayModelPrivate::~ByteArrayModelPrivate() { if( mAutoDelete ) delete[] mData; }
126 
127 inline Byte ByteArrayModelPrivate::byte( Address offset ) const { return mData[offset]; }
128 inline Size ByteArrayModelPrivate::size() const { return mSize; }
129 
130 inline bool ByteArrayModelPrivate::isReadOnly() const { return mReadOnly; }
131 inline bool ByteArrayModelPrivate::isModified() const { return mModified; }
132 
133 inline void ByteArrayModelPrivate::setReadOnly( bool isReadOnly )
134 {
135  if( mReadOnly != isReadOnly )
136  {
137  mReadOnly = isReadOnly;
138  emit p->readOnlyChanged( isReadOnly );
139  }
140 }
141 inline void ByteArrayModelPrivate::setMaxSize( int maxSize ) { mMaxSize = maxSize; }
142 inline void ByteArrayModelPrivate::setKeepsMemory( bool keepsMemory ) { mKeepsMemory = keepsMemory; }
143 inline void ByteArrayModelPrivate::setAutoDelete( bool autoDelete ) { mAutoDelete = autoDelete; }
144 inline void ByteArrayModelPrivate::setByte( Address offset, Byte byte )
145 {
146  const bool wasModifiedBefore = mModified;
147  mData[offset] = byte;
148  mModified = true;
149  emit p->contentsChanged( ArrayChangeMetricsList::oneReplacement(offset,1,1) );
150  if( ! wasModifiedBefore )
151  emit p->modifiedChanged( true );
152 }
153 inline void ByteArrayModelPrivate::setModified( bool modified )
154 {
155  mModified = modified;
156  emit p->modifiedChanged( mModified );
157 }
158 
159 
160 
161 inline Byte* ByteArrayModelPrivate::data() const { return mData; }
162 inline int ByteArrayModelPrivate::maxSize() const { return mMaxSize; }
163 inline bool ByteArrayModelPrivate::keepsMemory() const { return mKeepsMemory; }
164 inline bool ByteArrayModelPrivate::autoDelete() const { return mAutoDelete; }
165 
166 inline void ByteArrayModelPrivate::addBookmarks( const QList<Bookmark> &bookmarks )
167 {
168  m_bookmarks.addBookmarks( bookmarks );
169  emit p->bookmarksAdded( bookmarks );
170 }
171 inline void ByteArrayModelPrivate::removeBookmarks( const QList<Bookmark> &bookmarks )
172 {
173  m_bookmarks.removeBookmarks( bookmarks );
174  emit p->bookmarksRemoved( bookmarks );
175 }
176 
177 inline void ByteArrayModelPrivate::removeAllBookmarks()
178 {
179  QList<Bookmark> bookmarks = m_bookmarks.list();
180  m_bookmarks.clear();
181  emit p->bookmarksRemoved( bookmarks );
182 }
183 inline void ByteArrayModelPrivate::setBookmark( unsigned int index, const Bookmark& bookmark )
184 {
185  m_bookmarks.setBookmark( index, bookmark );
186 
187  QList<int> changedBookmarkIndizes;
188  changedBookmarkIndizes.append( index );
189  emit p->bookmarksModified( changedBookmarkIndizes );
190 }
191 
192 inline BookmarksConstIterator ByteArrayModelPrivate::createBookmarksConstIterator() const
193 {
194  return BookmarksConstIterator( new BookmarkListConstIteratorAdapter(m_bookmarks) );
195 }
196 
197 inline const Bookmark& ByteArrayModelPrivate::bookmarkFor( int offset ) const
198 {
199  return m_bookmarks.bookmark( offset );
200 }
201 inline const Bookmark& ByteArrayModelPrivate::bookmarkAt( unsigned int index ) const
202 {
203  return m_bookmarks.at( index );
204 }
205 inline bool ByteArrayModelPrivate::containsBookmarkFor( int offset ) const { return m_bookmarks.contains( offset ); }
206 inline unsigned int ByteArrayModelPrivate::bookmarksCount() const { return m_bookmarks.size(); }
207 
208 }
209 
210 #endif
Okteta::ByteArrayModelPrivate
Definition: bytearraymodel_p.h:39
Okteta::ByteArrayModelPrivate::p
ByteArrayModel * p
Definition: bytearraymodel_p.h:103
Okteta::ByteArrayModelPrivate::bookmarksCount
unsigned int bookmarksCount() const
Definition: bytearraymodel_p.h:206
Okteta::Address
qint32 Address
Definition: address.h:34
Okteta::ByteArrayModelPrivate::mKeepsMemory
bool mKeepsMemory
flag whether the initially given memory should be kept
Definition: bytearraymodel_p.h:113
Okteta::BookmarkListConstIteratorAdapter
Definition: bookmarklistconstiteratoradapter.h:37
Okteta::ByteArrayModelPrivate::ByteArrayModelPrivate
ByteArrayModelPrivate(ByteArrayModel *parent, Byte *data, int size, int rawSize, bool keepsMemory)
Okteta::BookmarkList
Definition: bookmarklist.h:40
Okteta::ByteArrayModelPrivate::mMaxSize
int mMaxSize
maximal size of array, unlimited if -1
Definition: bytearraymodel_p.h:111
Okteta::BookmarkList::bookmark
const Bookmark & bookmark(Address offset) const
Definition: bookmarklist.cpp:177
Okteta::ByteArrayModelPrivate::removeBookmarks
void removeBookmarks(const QList< Bookmark > &bookmarks)
Definition: bytearraymodel_p.h:171
Okteta::ByteArrayModelPrivate::addSize
int addSize(int AddSize, int splitOffset=-1, bool saveUpperPart=true)
resizes the buffer, if possible, saving the data and splitting the data, if demanded ...
Okteta::BookmarkList::removeBookmarks
void removeBookmarks(const QList< Okteta::Bookmark > &bookmarks)
Definition: bookmarklist.cpp:86
Okteta::ByteArrayModelPrivate::addBookmarks
void addBookmarks(const QList< Bookmark > &bookmarks)
Definition: bytearraymodel_p.h:166
Okteta::Bookmark
Definition: bookmark.h:38
KDE::NumberRange< Address, Size >
Okteta::ByteArrayModel::bookmarksAdded
void bookmarksAdded(const QList< Okteta::Bookmark > &bookmarks)
Okteta::ByteArrayModelPrivate::mData
Byte * mData
Definition: bytearraymodel_p.h:105
Okteta::ByteArrayModelPrivate::setAutoDelete
void setAutoDelete(bool autoDelete=true)
Definition: bytearraymodel_p.h:143
Okteta::Byte
unsigned char Byte
Definition: byte.h:29
Okteta::AbstractByteArrayModel::readOnlyChanged
void readOnlyChanged(bool isReadOnly)
Okteta::AbstractByteArrayModel::modifiedChanged
void modifiedChanged(bool isModified)
Okteta::ByteArrayModelPrivate::isModified
bool isModified() const
Definition: bytearraymodel_p.h:131
Okteta::ByteArrayModelPrivate::maxSize
int maxSize() const
Definition: bytearraymodel_p.h:162
Okteta::ByteArrayModelPrivate::setByte
void setByte(Address offset, Byte byte)
Definition: bytearraymodel_p.h:144
Okteta::ByteArrayModelPrivate::autoDelete
bool autoDelete() const
Definition: bytearraymodel_p.h:164
Okteta::ByteArrayModelPrivate::mReadOnly
bool mReadOnly
Definition: bytearraymodel_p.h:117
Okteta::ByteArrayModelPrivate::data
Byte * data() const
Definition: bytearraymodel_p.h:161
Okteta::ByteArrayModelPrivate::removeAllBookmarks
void removeAllBookmarks()
Definition: bytearraymodel_p.h:177
Okteta::BookmarksConstIterator
Definition: bookmarksconstiterator.h:36
Okteta::ByteArrayModelPrivate::mSize
int mSize
size of the data
Definition: bytearraymodel_p.h:107
Okteta::ByteArrayModelPrivate::replace
Size replace(const AddressRange &removeRange, const Byte *insertData, int insertLength)
Okteta::ByteArrayModelPrivate::setMaxSize
void setMaxSize(int maxSize)
Definition: bytearraymodel_p.h:141
Okteta::ByteArrayModelPrivate::bookmarkAt
const Bookmark & bookmarkAt(unsigned int index) const
Definition: bytearraymodel_p.h:201
Okteta::ByteArrayModelPrivate::createBookmarksConstIterator
BookmarksConstIterator createBookmarksConstIterator() const
Definition: bytearraymodel_p.h:192
bookmarksconstiterator.h
Okteta::ByteArrayModel::bookmarksModified
void bookmarksModified(bool modified)
Okteta::ByteArrayModelPrivate::fill
Size fill(Byte fillByte, Address offset=0, Size fillLength=-1)
Okteta::AbstractByteArrayModel::contentsChanged
void contentsChanged(const Okteta::ArrayChangeMetricsList &changeList)
Okteta::ArrayChangeMetricsList::oneReplacement
static ArrayChangeMetricsList oneReplacement(Address offset, Size removeLength, Size insertLength)
Definition: arraychangemetricslist.h:47
Okteta::BookmarkList::contains
bool contains(Address offset) const
Definition: bookmarklist.cpp:190
Okteta::ByteArrayModelPrivate::mAutoDelete
bool mAutoDelete
flag whether the
Definition: bytearraymodel_p.h:115
Okteta::ByteArrayModelPrivate::byte
Byte byte(Address offset) const
Definition: bytearraymodel_p.h:127
Okteta::ByteArrayModel::bookmarksRemoved
void bookmarksRemoved(const QList< Okteta::Bookmark > &bookmarks)
Okteta::ByteArrayModelPrivate::swap
bool swap(Address firstStart, const AddressRange &secondRange)
Okteta::ByteArrayModelPrivate::isReadOnly
bool isReadOnly() const
Definition: bytearraymodel_p.h:130
Okteta::BookmarkList::addBookmarks
void addBookmarks(const QList< Okteta::Bookmark > &bookmarks)
Definition: bookmarklist.cpp:64
Okteta::ByteArrayModelPrivate::m_bookmarks
BookmarkList m_bookmarks
Definition: bytearraymodel_p.h:121
Okteta::ByteArrayModelPrivate::insert
Size insert(Address offset, const Byte *insertData, int insertLength)
arraychangemetricslist.h
Okteta::ByteArrayModelPrivate::mModified
bool mModified
Definition: bytearraymodel_p.h:119
Okteta::BookmarkList::list
QList< Okteta::Bookmark > list() const
Definition: bookmarklist.cpp:167
bytearraymodel.h
bookmarklistconstiteratoradapter.h
bookmarklist.h
Okteta::ByteArrayModelPrivate::keepsMemory
bool keepsMemory() const
returns whether the memory of the byte array is kept on resize
Definition: bytearraymodel_p.h:163
Okteta::ByteArrayModelPrivate::setKeepsMemory
void setKeepsMemory(bool keepsMemory=true)
sets whether the memory given by setData or in the constructor should be kept on resize ...
Definition: bytearraymodel_p.h:142
Okteta::BookmarkList::setBookmark
void setBookmark(unsigned int index, const Bookmark &bookmark)
Definition: bookmarklist.cpp:92
Okteta::Size
qint32 Size
Definition: size.h:33
Okteta::ByteArrayModel
Definition: bytearraymodel.h:41
Okteta::ByteArrayModelPrivate::mRawSize
int mRawSize
mSize of data array
Definition: bytearraymodel_p.h:109
Okteta::ByteArrayModelPrivate::~ByteArrayModelPrivate
~ByteArrayModelPrivate()
Definition: bytearraymodel_p.h:125
Okteta::ByteArrayModelPrivate::size
Size size() const
Definition: bytearraymodel_p.h:128
Okteta::ByteArrayModelPrivate::setBookmark
void setBookmark(unsigned int index, const Bookmark &bookmark)
Definition: bytearraymodel_p.h:183
Okteta::ByteArrayModelPrivate::containsBookmarkFor
bool containsBookmarkFor(int offset) const
Definition: bytearraymodel_p.h:205
QList
Definition: bookmarkable.h:29
Okteta::ByteArrayModelPrivate::setReadOnly
void setReadOnly(bool readOnly=true)
Definition: bytearraymodel_p.h:133
Okteta::ByteArrayModelPrivate::setData
void setData(Byte *data, int size, int rawSize=-1, bool keepsMemory=true)
Okteta::ByteArrayModelPrivate::setModified
void setModified(bool modified=true)
Definition: bytearraymodel_p.h:153
Okteta::ByteArrayModelPrivate::bookmarkFor
const Bookmark & bookmarkFor(int offset) const
Definition: bytearraymodel_p.h:197
Okteta::BookmarkList::at
const Bookmark & at(unsigned int index) const
Definition: bookmarklist.cpp:207
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