• 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
  • strings
stringdata.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 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 
24 #ifndef STRINGDATA_H
25 #define STRINGDATA_H
26 
27 #include <address.h>
28 #include "../datainformationbase.h"
29 
30 class StringDataInformation;
31 
32 namespace Okteta {
33  class AbstractByteArrayModel;
34 }
35 
36 class StringData
37 {
38 private:
39  Q_DISABLE_COPY(StringData)
40 public:
41  enum TerminationMode {
42  None = 0x0,
43  Sequence = 0x1, //termination sequence (i.e. '\0')
44  CharCount = 0x2, //numer of unicode code points
45  ByteCount = 0x4, //maximum number of bytes
46  SeqOrCharCount = CharCount + Sequence, //whatever comes first
47  SeqOrByteCount = ByteCount + Sequence //whatever comes first
48  };
49  Q_DECLARE_FLAGS(TerminationModes, TerminationMode)
50 
51  explicit StringData(StringDataInformation* parent);
52  virtual ~StringData();
53 
54  virtual QString typeName() const = 0;
55  virtual uint count() const = 0;
56  virtual QString charType() const = 0;
57  virtual QString stringValue(int row) const = 0;
58  virtual QString completeString(bool skipInvalid = false) const = 0;
59  virtual BitCount32 size() const = 0;
60  virtual BitCount32 sizeAt(uint index) const = 0;
61  virtual qint64 read(Okteta::AbstractByteArrayModel* input, Okteta::Address address, BitCount64 bitsRemaining) = 0;
63  virtual void setLittleEndian(bool littleEndian);
64  TerminationMode terminationMode() const;
65  void setTerminationMode(TerminationMode mode);
66 
67  bool wasEof() const;
68 
69  uint maxByteCount() const;
70  void setMaxByteCount(uint count);
71  uint maxCharCount() const;
72  void setMaxCharCount(uint count);
73  uint terminationCodePoint() const;
74  void setTerminationCodePoint(quint32 term);
75 
76  void copyTerminationFrom(const StringData* data);
77 
78  static const uint UNICODE_MAX = 0x10ffff;
79  static const uint BMP_MAX = 0xffff;
80  static const char ASCII_MAX = 0x7f;
81 protected:
82  StringDataInformation* mParent;
83  union {
84  uint maxChars;
85  uint maxBytes;
86  } mLength;
87  quint32 mTerminationCodePoint;
88  uint mMode : 4;
89  bool mLittleEndian : 1;
90  bool mEofReached : 1;
91 
92 };
93 
94 Q_DECLARE_OPERATORS_FOR_FLAGS(StringData::TerminationModes)
95 
96 
97 inline uint StringData::terminationCodePoint() const
98 {
99  return mTerminationCodePoint;
100 }
101 
102 inline uint StringData::maxByteCount() const
103 {
104  return mLength.maxBytes;
105 }
106 
107 inline void StringData::setMaxByteCount(uint count)
108 {
109  mLength.maxBytes = count;
110  mMode |= ByteCount;
111  mMode &= ~CharCount;
112 }
113 
114 inline uint StringData::maxCharCount() const
115 {
116  return mLength.maxChars;
117 }
118 
119 inline void StringData::setMaxCharCount(uint count)
120 {
121  mLength.maxChars = count;
122  mMode |= CharCount;
123  mMode &= ~ByteCount;
124 }
125 
126 inline void StringData::copyTerminationFrom(const StringData* data)
127 {
128  mMode = data->mMode;
129  mTerminationCodePoint = data->mTerminationCodePoint;
130  mLength = data->mLength;
131 }
132 
133 inline StringData::TerminationMode StringData::terminationMode() const
134 {
135  return static_cast<TerminationMode>(mMode);
136 }
137 
138 inline void StringData::setTerminationMode(StringData::TerminationMode mode)
139 {
140  mMode = mode;
141 }
142 
143 inline bool StringData::wasEof() const
144 {
145  return mEofReached;
146 }
147 
148 
149 inline void StringData::setLittleEndian(bool littleEndian)
150 {
151  mLittleEndian = littleEndian;
152 }
153 
154 #endif // STRINGDATA_H
Okteta::Address
qint32 Address
Definition: address.h:34
StringData
Definition: stringdata.h:36
StringData::mLittleEndian
bool mLittleEndian
Definition: stringdata.h:89
StringData::sizeAt
virtual BitCount32 sizeAt(uint index) const =0
StringData::completeString
virtual QString completeString(bool skipInvalid=false) const =0
StringData::terminationMode
TerminationMode terminationMode() const
Definition: stringdata.h:133
BitCount64
quint64 BitCount64
Definition: datainformationbase.h:42
StringData::ByteCount
Definition: stringdata.h:45
StringData::BMP_MAX
static const uint BMP_MAX
Definition: stringdata.h:79
StringData::setTerminationCodePoint
void setTerminationCodePoint(quint32 term)
Definition: stringdata.cpp:39
StringData::setMaxCharCount
void setMaxCharCount(uint count)
Definition: stringdata.h:119
BitCount32
quint32 BitCount32
Definition: datainformationbase.h:37
StringData::maxByteCount
uint maxByteCount() const
Definition: stringdata.h:102
StringData::setMaxByteCount
void setMaxByteCount(uint count)
Definition: stringdata.h:107
StringData::read
virtual qint64 read(Okteta::AbstractByteArrayModel *input, Okteta::Address address, BitCount64 bitsRemaining)=0
StringData::ASCII_MAX
static const char ASCII_MAX
Definition: stringdata.h:80
StringData::count
virtual uint count() const =0
StringData::setLittleEndian
virtual void setLittleEndian(bool littleEndian)
by default just sets value, if more logic is needed can be overridden
Definition: stringdata.h:149
StringData::mTerminationCodePoint
quint32 mTerminationCodePoint
Definition: stringdata.h:87
address.h
StringData::Sequence
Definition: stringdata.h:43
StringData::SeqOrByteCount
Definition: stringdata.h:47
StringData::mLength
union StringData::@5 mLength
StringData::size
virtual BitCount32 size() const =0
StringData::wasEof
bool wasEof() const
Definition: stringdata.h:143
StringData::charType
virtual QString charType() const =0
StringData::mMode
uint mMode
Definition: stringdata.h:88
StringData::typeName
virtual QString typeName() const =0
StringData::mParent
StringDataInformation * mParent
Definition: stringdata.h:82
StringData::maxBytes
uint maxBytes
Definition: stringdata.h:85
StringData::setTerminationMode
void setTerminationMode(TerminationMode mode)
Definition: stringdata.h:138
StringData::None
Definition: stringdata.h:42
StringData::copyTerminationFrom
void copyTerminationFrom(const StringData *data)
Definition: stringdata.h:126
StringData::stringValue
virtual QString stringValue(int row) const =0
StringData::SeqOrCharCount
Definition: stringdata.h:46
StringData::mEofReached
bool mEofReached
Definition: stringdata.h:90
StringData::CharCount
Definition: stringdata.h:44
StringData::terminationCodePoint
uint terminationCodePoint() const
Definition: stringdata.h:97
StringDataInformation
Definition: stringdatainformation.h:39
StringData::maxCharCount
uint maxCharCount() const
Definition: stringdata.h:114
StringData::UNICODE_MAX
static const uint UNICODE_MAX
Definition: stringdata.h:78
StringData::TerminationMode
TerminationMode
Definition: stringdata.h:41
StringData::maxChars
uint maxChars
Definition: stringdata.h:84
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