[SCM] WebKit Debian packaging branch, debian/unstable, updated. debian/1.1.15-1-40151-g37bb677
gramps
gramps at 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Sat Sep 26 05:48:35 UTC 2009
The following commit has been merged in the debian/unstable branch:
commit 4d18bd93df835f80b0e1415596833034e923ec13
Author: gramps <gramps at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Wed Oct 3 17:38:48 2001 +0000
More implementation, comments, and fixes for operators
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@257 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebCore/kwq/KWQString.mm b/WebCore/kwq/KWQString.mm
index fe3a680..57ad3f3 100644
--- a/WebCore/kwq/KWQString.mm
+++ b/WebCore/kwq/KWQString.mm
@@ -25,7 +25,9 @@
// FIXME: obviously many functions here can be made inline
-// #include <Foundation/Foundation.h>
+#ifdef _KWQ_DEBUG_
+#include <Foundation/Foundation.h>
+#endif
#include <qstring.h>
#include <stdio.h>
@@ -59,9 +61,14 @@ QString QString::fromLocal8Bit(const char *chs, int len)
qs.s = CFStringCreateMutable(kCFAllocatorDefault, 0);
if (qs.s) {
if (len < 0) {
+ // append null-terminated string
// FIXME: is MacRoman the correct encoding?
CFStringAppendCString(qs.s, chs, kCFStringEncodingMacRoman);
} else {
+ // append length-specified string
+ // FIXME: this uses code similar to that in the
+ // "QString(const QByteArray &)" constructor and could possibly
+ // be refactored
const int capacity = 64;
UniChar buf[capacity];
int fill = 0;
@@ -73,6 +80,7 @@ QString QString::fromLocal8Bit(const char *chs, int len)
fill = 0;
}
}
+ // append any remainder in buffer
if (fill) {
CFStringAppendCharacters(qs.s, buf, fill);
}
@@ -96,6 +104,8 @@ QString::QString(QChar qc)
{
s = CFStringCreateMutable(kCFAllocatorDefault, 0);
if (s) {
+ // NOTE: this only works since our QChar implementation contains a
+ // single UniChar data member
CFStringAppendCharacters(s, &qc.c, 1);
}
cache = NULL;
@@ -107,6 +117,8 @@ QString::QString(const QByteArray &qba)
if (qba.size() && *qba.data()) {
s = CFStringCreateMutable(kCFAllocatorDefault, 0);
if (s) {
+ // FIXME: this uses code similar to that in the "fromLocal8Bit"
+ // function and could possibly be refactored
const int capacity = 64;
UniChar buf[capacity];
int fill = 0;
@@ -118,6 +130,7 @@ QString::QString(const QByteArray &qba)
fill = 0;
}
}
+ // append any remainder in buffer
if (fill) {
CFStringAppendCharacters(s, buf, fill);
}
@@ -229,7 +242,9 @@ const QChar *QString::unicode() const
if (len) {
ucs = const_cast<UniChar *>(CFStringGetCharactersPtr(s));
if (!ucs) {
- // NSLog(@"CFStringGetCharactersPtr returned NULL!!!");
+#ifdef _KWQ_DEBUG_
+ NSLog(@"CFStringGetCharactersPtr returned NULL");
+#endif
if (cacheType != CacheUnicode) {
if (cache) {
CFAllocatorDeallocate(kCFAllocatorDefault, cache);
@@ -262,7 +277,9 @@ const char *QString::latin1() const
chs = const_cast<char *>(CFStringGetCStringPtr(s,
kCFStringEncodingISOLatin1));
if (!chs) {
- // NSLog(@"CFStringGetCStringPtr returned NULL!!!");
+#ifdef _KWQ_DEBUG_
+ NSLog(@"CFStringGetCStringPtr returned NULL");
+#endif
if (cacheType != CacheLatin1) {
if (cache) {
CFAllocatorDeallocate(kCFAllocatorDefault, cache);
@@ -277,7 +294,9 @@ const char *QString::latin1() const
// FIXME: is ISO Latin-1 the correct encoding?
if (!CFStringGetCString(s, cache, len + 1,
kCFStringEncodingISOLatin1)) {
- // NSLog(@"CFStringGetCString returned FALSE!!!");
+#ifdef _KWQ_DEBUG_
+ NSLog(@"CFStringGetCString returned FALSE");
+#endif
*reinterpret_cast<char *>(cache) = '\0';
}
cacheType = CacheLatin1;
@@ -286,6 +305,7 @@ const char *QString::latin1() const
chs = cache;
}
}
+ // always return a valid pointer
if (!chs) {
static char emptyString[] = "";
chs = emptyString;
@@ -300,11 +320,16 @@ const char *QString::ascii() const
QCString QString::utf8() const
{
+ // FIXME: this uses code similar to that in the "local8Bit" function and
+ // could possibly be refactored
uint len = length();
if (len) {
char *chs = CFAllocatorAllocate(kCFAllocatorDefault, len + 1, 0);
if (chs) {
if (!CFStringGetCString(s, chs, len + 1, kCFStringEncodingUTF8)) {
+#ifdef _KWQ_DEBUG_
+ NSLog(@"CFStringGetCString returned FALSE");
+#endif
*reinterpret_cast<char *>(chs) = '\0';
}
QCString qcs = QCString(chs);
@@ -317,6 +342,8 @@ QCString QString::utf8() const
QCString QString::local8Bit() const
{
+ // FIXME: this uses code similar to that in the "utf8" function and could
+ // possibly be refactored
uint len = length();
if (len) {
char *chs = CFAllocatorAllocate(kCFAllocatorDefault, len + 1, 0);
@@ -324,6 +351,9 @@ QCString QString::local8Bit() const
// FIXME: is MacRoman the correct encoding?
if (!CFStringGetCString(s, chs, len + 1,
kCFStringEncodingMacRoman)) {
+#ifdef _KWQ_DEBUG_
+ NSLog(@"CFStringGetCString returned FALSE");
+#endif
*reinterpret_cast<char *>(chs) = '\0';
}
QCString qcs = QCString(chs);
@@ -348,13 +378,7 @@ bool QString::isEmpty() const
#ifdef USING_BORROWED_KURL
QChar QString::at(uint i) const
{
- uint len = length();
- if (len && (i < len)) {
- CFStringInlineBuffer buf;
- CFStringInitInlineBuffer(s, &buf, CFRangeMake(0, i));
- return QChar(CFStringGetCharacterFromInlineBuffer(&buf, i));
- }
- return QChar(0);
+ return operator[](i);
}
#endif // USING_BORROWED_KURL
@@ -442,6 +466,8 @@ int QString::toInt(bool *ok, int base) const
uint QString::toUInt(bool *ok) const
{
+ // FIXME: this uses code similar to that in the "toLong" function and could
+ // possibly be refactored
uint n = 0;
bool valid = FALSE;
if (s) {
@@ -454,12 +480,14 @@ uint QString::toUInt(bool *ok) const
kCFCharacterSetWhitespaceAndNewline);
CFStringInitInlineBuffer(s, &buf, CFRangeMake(0, len));
CFIndex i;
+ // ignore any leading whitespace
for (i = 0; i < len; i++) {
uc = CFStringGetCharacterFromInlineBuffer(&buf, i);
if (!CFCharacterSetIsCharacterMember(wscs, uc)) {
break;
}
}
+ // is there a number?
while (i < len) {
uc = CFStringGetCharacterFromInlineBuffer(&buf, i);
if ((uc >= '0') && (uc <= '9')) {
@@ -470,6 +498,7 @@ uint QString::toUInt(bool *ok) const
valid = TRUE;
i++;
}
+ // ignore any trailing whitespace
while (i < len) {
uc = CFStringGetCharacterFromInlineBuffer(&buf, i);
if (!CFCharacterSetIsCharacterMember(wscs, uc)) {
@@ -488,6 +517,8 @@ uint QString::toUInt(bool *ok) const
long QString::toLong(bool *ok, int base) const
{
+ // FIXME: this uses code similar to that in the "toUInt" function and could
+ // possibly be refactored
long n = 0;
bool valid = FALSE;
if (s) {
@@ -500,12 +531,14 @@ long QString::toLong(bool *ok, int base) const
kCFCharacterSetWhitespaceAndNewline);
CFStringInitInlineBuffer(s, &buf, CFRangeMake(0, len));
CFIndex i;
+ // ignore any leading whitespace
for (i = 0; i < len; i++) {
uc = CFStringGetCharacterFromInlineBuffer(&buf, i);
if (!CFCharacterSetIsCharacterMember(wscs, uc)) {
break;
}
}
+ // is there a sign?
bool neg = FALSE;
if (i < len) {
uc = CFStringGetCharacterFromInlineBuffer(&buf, i);
@@ -516,6 +549,7 @@ long QString::toLong(bool *ok, int base) const
i++;
}
}
+ // is there a number?
while (i < len) {
uc = CFStringGetCharacterFromInlineBuffer(&buf, i);
// NOTE: ignore anything other than base 10 and base 16
@@ -538,6 +572,7 @@ long QString::toLong(bool *ok, int base) const
if (neg) {
n = -n;
}
+ // ignore any trailing whitespace
while (i < len) {
uc = CFStringGetCharacterFromInlineBuffer(&buf, i);
if (!CFCharacterSetIsCharacterMember(wscs, uc)) {
@@ -582,11 +617,12 @@ QString QString::arg(const QString &replacement, int padding) const
}
if (modified.s) {
CFIndex pos = 0;
+ UniChar found = 0;
CFIndex len = CFStringGetLength(modified.s);
if (len) {
- UniChar found = 0;
CFStringInlineBuffer buf;
CFStringInitInlineBuffer(modified.s, &buf, CFRangeMake(0, len));
+ // find position of lowest numerical position marker
for (CFIndex i = 0; i < len; i++) {
UniChar uc = CFStringGetCharacterFromInlineBuffer(&buf, i);
if ((uc == '%') && ((i + 1) < len)) {
@@ -602,9 +638,10 @@ QString QString::arg(const QString &replacement, int padding) const
}
}
CFIndex rlen;
- if (pos) {
+ if (found) {
rlen = 2;
} else {
+ // append space and then replacement text at end of string
CFStringAppend(modified.s, CFSTR(" "));
pos = len + 1;
rlen = 0;
@@ -658,7 +695,6 @@ QString QString::mid(int, int) const
#ifdef USING_BORROWED_KURL
QString QString::copy() const
{
- // FIXME: not yet implemented
return QString(*this);
}
#endif // USING_BORROWED_KURL
@@ -697,8 +733,8 @@ QString &QString::setNum(int n)
const int capacity = 64;
char buf[capacity];
buf[snprintf(buf, capacity - 1, "%d", n)] = '\0';
- // NOTE: using private __CFStringMakeConstantString function instead of
- // creating a temporary string with CFStringCreateWithCString
+ // NOTE: use private "__CFStringMakeConstantString" function instead of
+ // creating temporary string with "CFStringCreateWithCString"
CFStringReplace(s, CFRangeMake(0, CFStringGetLength(s)),
__CFStringMakeConstantString(buf));
}
@@ -787,42 +823,23 @@ bool QString::operator!() const
return isNull();
}
-QString::operator QChar() const
-{
- // FIXME: not yet implemented
- return QChar();
-}
-
QString::operator const char *() const
{
return latin1();
}
-QChar QString::operator[](int) const
-{
- // FIXME: not yet implemented
- return 0;
-}
-
-QString &QString::operator+(char)
-{
- // FIXME: not yet implemented
- return *this;
-}
-
-QString &QString::operator+(QChar)
-{
- // FIXME: not yet implemented
- return *this;
-}
-
-QString &QString::operator+(const QString &)
+QChar QString::operator[](int i) const
{
- // FIXME: not yet implemented
- return *this;
+ uint len = length();
+ if (len && (i < len)) {
+ CFStringInlineBuffer buf;
+ CFStringInitInlineBuffer(s, &buf, CFRangeMake(0, i));
+ return QChar(CFStringGetCharacterFromInlineBuffer(&buf, i));
+ }
+ return QChar(0);
}
-QString &QString::operator+=(char)
+QString &QString::operator+=(const QString &)
{
// FIXME: not yet implemented
return *this;
@@ -834,83 +851,76 @@ QString &QString::operator+=(QChar)
return *this;
}
-QString &QString::operator+=(const QString &)
+QString &QString::operator+=(char)
{
// FIXME: not yet implemented
return *this;
}
-// operators associated with QChar and QString =================================
-
-bool operator==(const QString &, QChar)
-{
- // FIXME: not yet implemented
- return FALSE;
-}
+// operators associated with QString ===========================================
bool operator==(const QString &qs1, const QString &qs2)
{
+ if (qs1.s == qs2.s) {
+ return TRUE;
+ }
if (qs1.s && qs2.s) {
return CFStringCompare(qs1.s, qs2.s, 0) == kCFCompareEqualTo;
}
return FALSE;
}
-bool operator==(const QString &, const char *)
-{
- // FIXME: not yet implemented
- return FALSE;
-}
-
-bool operator==(const char *, const QString &)
+bool operator==(const QString &qs, const char *chs)
{
- // FIXME: not yet implemented
+ if (qs.s && chs) {
+ // NOTE: use private "__CFStringMakeConstantString" function instead of
+ // creating temporary string with "CFStringCreateWithCString"
+ return CFStringCompare(qs.s, __CFStringMakeConstantString(chs), 0)
+ == kCFCompareEqualTo;
+ }
return FALSE;
}
-bool operator!=(const QString &s, QChar c)
+bool operator==(const char *chs, const QString &qs)
{
- // FIXME: not yet implemented
- return FALSE;
+ return qs == chs;
}
bool operator!=(const QString &qs1, const QString &qs2)
{
- if (qs1.s && qs2.s) {
- return CFStringCompare(qs1.s, qs2.s, 0) != kCFCompareEqualTo;
- }
- return TRUE;
+ return !(qs1 == qs2);
}
-bool operator!=(const QString &, const char *)
+bool operator!=(const QString &qs, const char *chs)
{
- // FIXME: not yet implemented
- return FALSE;
+ return !(qs == chs);
}
-bool operator!=(const char *, const QString &)
+bool operator!=(const char *chs, const QString &qs)
{
- // FIXME: not yet implemented
- return FALSE;
+ return !(qs == chs);
}
-QString operator+(char, const QString &)
+QString operator+(const QString &qs1, const QString &qs2)
{
- // FIXME: not yet implemented
- return QString();
+ QString tmp(qs1);
+ tmp += qs2;
+ return tmp;
}
-QString operator+(const char *, const QString &)
+QString operator+(const QString &qs, const char *chs)
{
- // FIXME: not yet implemented
- return QString();
+ QString tmp(qs);
+ tmp += chs;
+ return tmp;
}
-QString operator+(QChar, const QString &)
+QString operator+(const char *chs, const QString &qs)
{
- // FIXME: not yet implemented
- return QString();
+ QString tmp(chs);
+ tmp += qs;
+ return tmp;
}
diff --git a/WebCore/src/kwq/KWQString.mm b/WebCore/src/kwq/KWQString.mm
index fe3a680..57ad3f3 100644
--- a/WebCore/src/kwq/KWQString.mm
+++ b/WebCore/src/kwq/KWQString.mm
@@ -25,7 +25,9 @@
// FIXME: obviously many functions here can be made inline
-// #include <Foundation/Foundation.h>
+#ifdef _KWQ_DEBUG_
+#include <Foundation/Foundation.h>
+#endif
#include <qstring.h>
#include <stdio.h>
@@ -59,9 +61,14 @@ QString QString::fromLocal8Bit(const char *chs, int len)
qs.s = CFStringCreateMutable(kCFAllocatorDefault, 0);
if (qs.s) {
if (len < 0) {
+ // append null-terminated string
// FIXME: is MacRoman the correct encoding?
CFStringAppendCString(qs.s, chs, kCFStringEncodingMacRoman);
} else {
+ // append length-specified string
+ // FIXME: this uses code similar to that in the
+ // "QString(const QByteArray &)" constructor and could possibly
+ // be refactored
const int capacity = 64;
UniChar buf[capacity];
int fill = 0;
@@ -73,6 +80,7 @@ QString QString::fromLocal8Bit(const char *chs, int len)
fill = 0;
}
}
+ // append any remainder in buffer
if (fill) {
CFStringAppendCharacters(qs.s, buf, fill);
}
@@ -96,6 +104,8 @@ QString::QString(QChar qc)
{
s = CFStringCreateMutable(kCFAllocatorDefault, 0);
if (s) {
+ // NOTE: this only works since our QChar implementation contains a
+ // single UniChar data member
CFStringAppendCharacters(s, &qc.c, 1);
}
cache = NULL;
@@ -107,6 +117,8 @@ QString::QString(const QByteArray &qba)
if (qba.size() && *qba.data()) {
s = CFStringCreateMutable(kCFAllocatorDefault, 0);
if (s) {
+ // FIXME: this uses code similar to that in the "fromLocal8Bit"
+ // function and could possibly be refactored
const int capacity = 64;
UniChar buf[capacity];
int fill = 0;
@@ -118,6 +130,7 @@ QString::QString(const QByteArray &qba)
fill = 0;
}
}
+ // append any remainder in buffer
if (fill) {
CFStringAppendCharacters(s, buf, fill);
}
@@ -229,7 +242,9 @@ const QChar *QString::unicode() const
if (len) {
ucs = const_cast<UniChar *>(CFStringGetCharactersPtr(s));
if (!ucs) {
- // NSLog(@"CFStringGetCharactersPtr returned NULL!!!");
+#ifdef _KWQ_DEBUG_
+ NSLog(@"CFStringGetCharactersPtr returned NULL");
+#endif
if (cacheType != CacheUnicode) {
if (cache) {
CFAllocatorDeallocate(kCFAllocatorDefault, cache);
@@ -262,7 +277,9 @@ const char *QString::latin1() const
chs = const_cast<char *>(CFStringGetCStringPtr(s,
kCFStringEncodingISOLatin1));
if (!chs) {
- // NSLog(@"CFStringGetCStringPtr returned NULL!!!");
+#ifdef _KWQ_DEBUG_
+ NSLog(@"CFStringGetCStringPtr returned NULL");
+#endif
if (cacheType != CacheLatin1) {
if (cache) {
CFAllocatorDeallocate(kCFAllocatorDefault, cache);
@@ -277,7 +294,9 @@ const char *QString::latin1() const
// FIXME: is ISO Latin-1 the correct encoding?
if (!CFStringGetCString(s, cache, len + 1,
kCFStringEncodingISOLatin1)) {
- // NSLog(@"CFStringGetCString returned FALSE!!!");
+#ifdef _KWQ_DEBUG_
+ NSLog(@"CFStringGetCString returned FALSE");
+#endif
*reinterpret_cast<char *>(cache) = '\0';
}
cacheType = CacheLatin1;
@@ -286,6 +305,7 @@ const char *QString::latin1() const
chs = cache;
}
}
+ // always return a valid pointer
if (!chs) {
static char emptyString[] = "";
chs = emptyString;
@@ -300,11 +320,16 @@ const char *QString::ascii() const
QCString QString::utf8() const
{
+ // FIXME: this uses code similar to that in the "local8Bit" function and
+ // could possibly be refactored
uint len = length();
if (len) {
char *chs = CFAllocatorAllocate(kCFAllocatorDefault, len + 1, 0);
if (chs) {
if (!CFStringGetCString(s, chs, len + 1, kCFStringEncodingUTF8)) {
+#ifdef _KWQ_DEBUG_
+ NSLog(@"CFStringGetCString returned FALSE");
+#endif
*reinterpret_cast<char *>(chs) = '\0';
}
QCString qcs = QCString(chs);
@@ -317,6 +342,8 @@ QCString QString::utf8() const
QCString QString::local8Bit() const
{
+ // FIXME: this uses code similar to that in the "utf8" function and could
+ // possibly be refactored
uint len = length();
if (len) {
char *chs = CFAllocatorAllocate(kCFAllocatorDefault, len + 1, 0);
@@ -324,6 +351,9 @@ QCString QString::local8Bit() const
// FIXME: is MacRoman the correct encoding?
if (!CFStringGetCString(s, chs, len + 1,
kCFStringEncodingMacRoman)) {
+#ifdef _KWQ_DEBUG_
+ NSLog(@"CFStringGetCString returned FALSE");
+#endif
*reinterpret_cast<char *>(chs) = '\0';
}
QCString qcs = QCString(chs);
@@ -348,13 +378,7 @@ bool QString::isEmpty() const
#ifdef USING_BORROWED_KURL
QChar QString::at(uint i) const
{
- uint len = length();
- if (len && (i < len)) {
- CFStringInlineBuffer buf;
- CFStringInitInlineBuffer(s, &buf, CFRangeMake(0, i));
- return QChar(CFStringGetCharacterFromInlineBuffer(&buf, i));
- }
- return QChar(0);
+ return operator[](i);
}
#endif // USING_BORROWED_KURL
@@ -442,6 +466,8 @@ int QString::toInt(bool *ok, int base) const
uint QString::toUInt(bool *ok) const
{
+ // FIXME: this uses code similar to that in the "toLong" function and could
+ // possibly be refactored
uint n = 0;
bool valid = FALSE;
if (s) {
@@ -454,12 +480,14 @@ uint QString::toUInt(bool *ok) const
kCFCharacterSetWhitespaceAndNewline);
CFStringInitInlineBuffer(s, &buf, CFRangeMake(0, len));
CFIndex i;
+ // ignore any leading whitespace
for (i = 0; i < len; i++) {
uc = CFStringGetCharacterFromInlineBuffer(&buf, i);
if (!CFCharacterSetIsCharacterMember(wscs, uc)) {
break;
}
}
+ // is there a number?
while (i < len) {
uc = CFStringGetCharacterFromInlineBuffer(&buf, i);
if ((uc >= '0') && (uc <= '9')) {
@@ -470,6 +498,7 @@ uint QString::toUInt(bool *ok) const
valid = TRUE;
i++;
}
+ // ignore any trailing whitespace
while (i < len) {
uc = CFStringGetCharacterFromInlineBuffer(&buf, i);
if (!CFCharacterSetIsCharacterMember(wscs, uc)) {
@@ -488,6 +517,8 @@ uint QString::toUInt(bool *ok) const
long QString::toLong(bool *ok, int base) const
{
+ // FIXME: this uses code similar to that in the "toUInt" function and could
+ // possibly be refactored
long n = 0;
bool valid = FALSE;
if (s) {
@@ -500,12 +531,14 @@ long QString::toLong(bool *ok, int base) const
kCFCharacterSetWhitespaceAndNewline);
CFStringInitInlineBuffer(s, &buf, CFRangeMake(0, len));
CFIndex i;
+ // ignore any leading whitespace
for (i = 0; i < len; i++) {
uc = CFStringGetCharacterFromInlineBuffer(&buf, i);
if (!CFCharacterSetIsCharacterMember(wscs, uc)) {
break;
}
}
+ // is there a sign?
bool neg = FALSE;
if (i < len) {
uc = CFStringGetCharacterFromInlineBuffer(&buf, i);
@@ -516,6 +549,7 @@ long QString::toLong(bool *ok, int base) const
i++;
}
}
+ // is there a number?
while (i < len) {
uc = CFStringGetCharacterFromInlineBuffer(&buf, i);
// NOTE: ignore anything other than base 10 and base 16
@@ -538,6 +572,7 @@ long QString::toLong(bool *ok, int base) const
if (neg) {
n = -n;
}
+ // ignore any trailing whitespace
while (i < len) {
uc = CFStringGetCharacterFromInlineBuffer(&buf, i);
if (!CFCharacterSetIsCharacterMember(wscs, uc)) {
@@ -582,11 +617,12 @@ QString QString::arg(const QString &replacement, int padding) const
}
if (modified.s) {
CFIndex pos = 0;
+ UniChar found = 0;
CFIndex len = CFStringGetLength(modified.s);
if (len) {
- UniChar found = 0;
CFStringInlineBuffer buf;
CFStringInitInlineBuffer(modified.s, &buf, CFRangeMake(0, len));
+ // find position of lowest numerical position marker
for (CFIndex i = 0; i < len; i++) {
UniChar uc = CFStringGetCharacterFromInlineBuffer(&buf, i);
if ((uc == '%') && ((i + 1) < len)) {
@@ -602,9 +638,10 @@ QString QString::arg(const QString &replacement, int padding) const
}
}
CFIndex rlen;
- if (pos) {
+ if (found) {
rlen = 2;
} else {
+ // append space and then replacement text at end of string
CFStringAppend(modified.s, CFSTR(" "));
pos = len + 1;
rlen = 0;
@@ -658,7 +695,6 @@ QString QString::mid(int, int) const
#ifdef USING_BORROWED_KURL
QString QString::copy() const
{
- // FIXME: not yet implemented
return QString(*this);
}
#endif // USING_BORROWED_KURL
@@ -697,8 +733,8 @@ QString &QString::setNum(int n)
const int capacity = 64;
char buf[capacity];
buf[snprintf(buf, capacity - 1, "%d", n)] = '\0';
- // NOTE: using private __CFStringMakeConstantString function instead of
- // creating a temporary string with CFStringCreateWithCString
+ // NOTE: use private "__CFStringMakeConstantString" function instead of
+ // creating temporary string with "CFStringCreateWithCString"
CFStringReplace(s, CFRangeMake(0, CFStringGetLength(s)),
__CFStringMakeConstantString(buf));
}
@@ -787,42 +823,23 @@ bool QString::operator!() const
return isNull();
}
-QString::operator QChar() const
-{
- // FIXME: not yet implemented
- return QChar();
-}
-
QString::operator const char *() const
{
return latin1();
}
-QChar QString::operator[](int) const
-{
- // FIXME: not yet implemented
- return 0;
-}
-
-QString &QString::operator+(char)
-{
- // FIXME: not yet implemented
- return *this;
-}
-
-QString &QString::operator+(QChar)
-{
- // FIXME: not yet implemented
- return *this;
-}
-
-QString &QString::operator+(const QString &)
+QChar QString::operator[](int i) const
{
- // FIXME: not yet implemented
- return *this;
+ uint len = length();
+ if (len && (i < len)) {
+ CFStringInlineBuffer buf;
+ CFStringInitInlineBuffer(s, &buf, CFRangeMake(0, i));
+ return QChar(CFStringGetCharacterFromInlineBuffer(&buf, i));
+ }
+ return QChar(0);
}
-QString &QString::operator+=(char)
+QString &QString::operator+=(const QString &)
{
// FIXME: not yet implemented
return *this;
@@ -834,83 +851,76 @@ QString &QString::operator+=(QChar)
return *this;
}
-QString &QString::operator+=(const QString &)
+QString &QString::operator+=(char)
{
// FIXME: not yet implemented
return *this;
}
-// operators associated with QChar and QString =================================
-
-bool operator==(const QString &, QChar)
-{
- // FIXME: not yet implemented
- return FALSE;
-}
+// operators associated with QString ===========================================
bool operator==(const QString &qs1, const QString &qs2)
{
+ if (qs1.s == qs2.s) {
+ return TRUE;
+ }
if (qs1.s && qs2.s) {
return CFStringCompare(qs1.s, qs2.s, 0) == kCFCompareEqualTo;
}
return FALSE;
}
-bool operator==(const QString &, const char *)
-{
- // FIXME: not yet implemented
- return FALSE;
-}
-
-bool operator==(const char *, const QString &)
+bool operator==(const QString &qs, const char *chs)
{
- // FIXME: not yet implemented
+ if (qs.s && chs) {
+ // NOTE: use private "__CFStringMakeConstantString" function instead of
+ // creating temporary string with "CFStringCreateWithCString"
+ return CFStringCompare(qs.s, __CFStringMakeConstantString(chs), 0)
+ == kCFCompareEqualTo;
+ }
return FALSE;
}
-bool operator!=(const QString &s, QChar c)
+bool operator==(const char *chs, const QString &qs)
{
- // FIXME: not yet implemented
- return FALSE;
+ return qs == chs;
}
bool operator!=(const QString &qs1, const QString &qs2)
{
- if (qs1.s && qs2.s) {
- return CFStringCompare(qs1.s, qs2.s, 0) != kCFCompareEqualTo;
- }
- return TRUE;
+ return !(qs1 == qs2);
}
-bool operator!=(const QString &, const char *)
+bool operator!=(const QString &qs, const char *chs)
{
- // FIXME: not yet implemented
- return FALSE;
+ return !(qs == chs);
}
-bool operator!=(const char *, const QString &)
+bool operator!=(const char *chs, const QString &qs)
{
- // FIXME: not yet implemented
- return FALSE;
+ return !(qs == chs);
}
-QString operator+(char, const QString &)
+QString operator+(const QString &qs1, const QString &qs2)
{
- // FIXME: not yet implemented
- return QString();
+ QString tmp(qs1);
+ tmp += qs2;
+ return tmp;
}
-QString operator+(const char *, const QString &)
+QString operator+(const QString &qs, const char *chs)
{
- // FIXME: not yet implemented
- return QString();
+ QString tmp(qs);
+ tmp += chs;
+ return tmp;
}
-QString operator+(QChar, const QString &)
+QString operator+(const char *chs, const QString &qs)
{
- // FIXME: not yet implemented
- return QString();
+ QString tmp(chs);
+ tmp += qs;
+ return tmp;
}
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list