aboutsummaryrefslogtreecommitdiff
path: root/tier1/kconfig/src/core/bufferfragment_p.h
diff options
context:
space:
mode:
Diffstat (limited to 'tier1/kconfig/src/core/bufferfragment_p.h')
-rw-r--r--tier1/kconfig/src/core/bufferfragment_p.h181
1 files changed, 0 insertions, 181 deletions
diff --git a/tier1/kconfig/src/core/bufferfragment_p.h b/tier1/kconfig/src/core/bufferfragment_p.h
deleted file mode 100644
index 5a753ad4..00000000
--- a/tier1/kconfig/src/core/bufferfragment_p.h
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- This file is part of the KDE libraries
- Copyright (c) 2008 Jakub Stachowski <qbast@go2.pl>
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public License
- along with this library; see the file COPYING.LIB. If not, write to
- the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, USA.
-*/
-
-#ifndef BUFFERFRAGMENT_H
-#define BUFFERFRAGMENT_H
-
-#define bf_isspace(str) ((str == ' ') || (str == '\t') || (str == '\r'))
-
-// This class provides wrapper around fragment of existing buffer (array of bytes).
-// If underlying buffer gets deleted, all BufferFragment objects referencing it become invalid.
-// Use toByteArray() to make deep copy of the buffer fragment.
-//
-// API is designed to subset of QByteArray methods with some changes:
-// - trim() is like QByteArray.trimmed(), but it modifies current object
-// - truncateLeft() provides way to cut off beginning of the buffer
-// - split() works more like strtok_r than QByteArray.split()
-// - truncateLeft() and mid() require position argument to be valid
-
-class KConfigIniBackend::BufferFragment
-{
-
-public:
-
- BufferFragment() : d(0), len(0)
- {
- }
-
- BufferFragment(char* buf, int size) : d(buf), len(size)
- {
- }
-
- int length() const
- {
- return len;
- }
-
- char at(unsigned int i) const
- {
- Q_ASSERT(i < len);
- return d[i];
- }
-
- void clear()
- {
- len = 0;
- }
-
- const char* constData() const
- {
- return d;
- }
-
- char* data() const
- {
- return d;
- }
-
- void trim()
- {
- while (bf_isspace(*d) && len > 0) {
- d++;
- len--;
- }
- while (len > 0 && bf_isspace(d[len - 1]))
- len--;
- }
-
- // similar to strtok_r . On first call variable pointed by start should be set to 0.
- // Each call will update *start to new starting position.
- BufferFragment split(char c, unsigned int* start)
- {
- while (*start < len) {
- int end = indexOf(c, *start);
- if (end == -1) end = len;
- BufferFragment line(d + (*start), end - (*start));
- *start = end + 1;
- return line;
- }
- return BufferFragment();
- }
-
- bool isEmpty() const
- {
- return (len == 0);
- }
-
- BufferFragment left(unsigned int size) const
- {
- return BufferFragment(d, qMin(size,len));
- }
-
- void truncateLeft(unsigned int size)
- {
- Q_ASSERT(size <= len);
- d += size;
- len -= size;
- }
-
- void truncate(unsigned int pos)
- {
- if (pos < len) len = pos;
- }
-
- bool isNull() const
- {
- return (d == 0);
- }
-
- BufferFragment mid(unsigned int pos, int length=-1) const
- {
- Q_ASSERT(pos < len);
- int size = length;
- if (length == -1 || (pos + length) > len)
- size = len - pos;
- return BufferFragment(d + pos, size);
- }
-
- bool operator==(const QByteArray& other) const
- {
- return (other.size() == (int)len && memcmp(d,other.constData(),len) == 0);
- }
-
- bool operator!=(const QByteArray& other) const
- {
- return (other.size() != (int)len || memcmp(d,other.constData(),len) != 0);
- }
-
- int indexOf(char c, unsigned int from = 0) const
- {
- const char* cursor = d + from - 1;
- const char* end = d + len;
- while ( ++cursor < end)
- if (*cursor ==c )
- return cursor - d;
- return -1;
- }
-
- int lastIndexOf(char c) const
- {
- int from = len - 1;
- while (from >= 0)
- if (d[from] == c)
- return from;
- else
- from--;
- return -1;
- }
-
- QByteArray toByteArray() const {
- return QByteArray(d,len);
- }
-
- // this is faster than toByteArray, but returned QByteArray becomes invalid
- // when buffer for this BufferFragment disappears
- QByteArray toVolatileByteArray() const {
- return QByteArray::fromRawData(d, len);
- }
-
-private:
- char* d;
- unsigned int len;
-};
-
-#endif