[SCM] WebKit Debian packaging branch, debian/unstable, updated. debian/1.1.15-1-40151-g37bb677
darin
darin at 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Sat Sep 26 07:20:45 UTC 2009
The following commit has been merged in the debian/unstable branch:
commit 338cd0d7fba93a04b4acbb5b4063d854123d8120
Author: darin <darin at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Tue Jan 21 23:46:01 2003 +0000
Reviewed by Richard.
- clean room rewrite of QCString
* kwq/KWQCString.mm: Replaced functions that needed rewrite.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@3371 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebCore/ChangeLog-2003-10-25 b/WebCore/ChangeLog-2003-10-25
index 7a0c6b9..47562c3 100644
--- a/WebCore/ChangeLog-2003-10-25
+++ b/WebCore/ChangeLog-2003-10-25
@@ -1,3 +1,11 @@
+2003-01-21 Darin Adler <darin at apple.com>
+
+ Reviewed by Richard.
+
+ - clean room rewrite of QCString
+
+ * kwq/KWQCString.mm: Replaced functions that needed rewrite.
+
2003-01-21 Richard Williamson <rjw at apple.com>
Added support to pause and resume javascript timers. This allows pages
diff --git a/WebCore/ChangeLog-2005-08-23 b/WebCore/ChangeLog-2005-08-23
index 7a0c6b9..47562c3 100644
--- a/WebCore/ChangeLog-2005-08-23
+++ b/WebCore/ChangeLog-2005-08-23
@@ -1,3 +1,11 @@
+2003-01-21 Darin Adler <darin at apple.com>
+
+ Reviewed by Richard.
+
+ - clean room rewrite of QCString
+
+ * kwq/KWQCString.mm: Replaced functions that needed rewrite.
+
2003-01-21 Richard Williamson <rjw at apple.com>
Added support to pause and resume javascript timers. This allows pages
diff --git a/WebCore/kwq/KWQCString.mm b/WebCore/kwq/KWQCString.mm
index a02db22..1eea723 100644
--- a/WebCore/kwq/KWQCString.mm
+++ b/WebCore/kwq/KWQCString.mm
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2001, 2002, 2003 Apple Computer, Inc. All rights reserved.
+ * Copyright (C) 2003 Apple Computer, Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -25,236 +25,202 @@
#import "KWQCString.h"
+#import "KWQAssertions.h"
#import <ctype.h>
using std::ostream;
-QCString::QCString() : QByteArray(0)
+QCString::QCString()
{
}
QCString::QCString(int size) : QByteArray(size)
{
- if (size > 0) {
- *data() = '\0';
- *(data() + (size - 1)) = '\0';
+ if( size>0 && data() )
+ {
+ data()[0] = 0; // first null
+ data()[size-1] = 0; // last byte
}
+ // else null
}
-QCString::QCString(const char *s)
-{
- duplicate(s, strlen(s) + 1);
-}
-QCString::QCString(const char *s, uint max)
+QCString::QCString(const char *str)
{
- if (s == 0) {
- return;
- }
- uint len; // index of first '\0'
- for (len = 0; len < max - 1; len++) {
- if (s[len] == '\0') {
- break;
- }
- }
- QByteArray::resize(len + 1);
- memcpy(data(), s, len);
- data()[len] = 0;
+ size_t len;
+ if( str && (len=strlen(str)+1) && resize(len) ) // include null
+ strcpy( data(), str );
+ // else null
}
-bool QCString::isEmpty() const
-{
- const char *s = data();
- return !(s && *s);
-}
-int QCString::find(const char *s, int index, bool cs) const
+QCString::QCString(const char *str, uint max)
{
- int result;
- const char *tmp;
-
- result = -1;
-
- if (!s || index >= (int)size()) {
- result = -1;
- }
- else if (!*s) {
- result = index;
- }
- else {
- if (cs) {
- tmp = strstr(data() + index, s);
- }
- else {
- tmp = data() + index;
- int len = strlen(s);
- while (*tmp) {
- if (strncasecmp(tmp, s, len) == 0) {
- break;
- }
- tmp++;
- }
- if (!*tmp) {
- tmp = 0;
- }
- }
-
- if (tmp) {
- result = (int)(tmp - data());
+ if( str && max )
+ {
+ // perform a truncated strlen on str
+ const char* p = str;
+ uint len = 1; // for the null
+ while( *p++ && len<max )
+ len ++;
+
+ if( resize(len) )
+ {
+ char *dest = data();
+ strncpy( dest, str, len );
+ dest[len-1] = 0; // re-terminate
}
}
-
- return result;
+ // else null
}
-int QCString::contains(char c, bool cs) const
-{
- int result;
- const char *tmp;
-
- result = 0;
- tmp = data();
-
- if (tmp) {
- if (cs) {
- while (*tmp) {
- if (*tmp == c) {
- result++;
- }
- tmp++;
- }
- }
- else {
- c = tolower((uchar)c);
- while (*tmp) {
- if (tolower((uchar)*tmp) == c) {
- result++;
- }
- tmp++;
- }
- }
- }
+bool QCString::isEmpty() const
+{ return length()==0; }
- return result;
-}
uint QCString::length() const
{
- const char *s = data();
- return s == NULL ? 0 : strlen(s);
+ const char *d = data();
+ return d ? strlen(d) : 0;
}
+
bool QCString::resize(uint len)
{
- detach();
- uint oldlen;
-
- oldlen = length();
+ bool success = QByteArray::resize(len);
+ if( success && len>0 )
+ data()[len-1] = 0; // always terminate last byte
- if (!QByteArray::resize(len)) {
- return false;
- }
- if (len) {
- *(data() + len-1) = '\0';
- }
-
- if (len > 0 && oldlen == 0) {
- *(data()) = '\0';
- }
-
- return true;
+ return success;
}
+
bool QCString::truncate(uint pos)
{
- return resize(pos + 1);
+ return resize(pos+1);
}
+
QCString QCString::lower() const
{
- QCString result(data());
-
- char *p = result.data();
- if (p) {
- while(*p) {
- *p = tolower((uchar)*p);
- p++;
+ // convert
+ QCString tmp = *this; // copy
+ char* str = tmp.data();
+ if( str )
+ {
+ while( *str != 0 )
+ {
+ *str = tolower(*str);
+ str++;
}
}
- return result;
+ return tmp;
}
+
QCString QCString::upper() const
{
- QCString result(data());
-
- char *p = result.data();
- if (p) {
- while(*p) {
- *p = toupper((uchar)*p);
- p++;
+ QCString tmp = *this; // copy
+ char* str = tmp.data();
+ if( str )
+ {
+ while( *str != 0 )
+ {
+ *str = toupper(*str);
+ str++;
}
}
- return result;
+ return tmp;
}
-QCString QCString::left(uint len) const
+
+inline QCString QCString::left(uint len) const
+{ return mid(0, len); }
+
+
+inline QCString QCString::right(uint len) const
+{ return mid(length() - len, len); }
+
+
+QCString QCString::mid(uint index, uint len) const
{
- if (isEmpty()) {
- QCString empty;
- return empty;
- }
- else if (len >= size()) {
- QCString same(data());
- return same;
- }
- else {
- QCString s(len + 1);
- strncpy(s.data(), data(), len);
- *(s.data() + len) = '\0';
- return s;
+ uint size = length();
+ if( data() && index<size ) // return null if index out-of-range
+ {
+ // clip length
+ if( len > size - index )
+ len = size - index;
+
+ // copy and return
+ return QCString( &(data()[index]), len+1); // include nul
}
+
+ // degenerate case
+ return QCString();
}
-QCString QCString::right(uint len) const
+int QCString::find(const char *sub, int index, bool cs) const
{
- if (isEmpty()) {
- QCString empty;
- return empty;
- }
- else {
- uint l = length();
- if (len > l) {
- len = l;
+ const char* str = data();
+ if( str && str[0] && sub && index>=0 ) // don't search empty strings
+ {
+ // advance until we get to index
+ int pos = 0;
+ while( pos < index )
+ if( str[pos++] == 0 )
+ return -1; // index is beyond end of str
+
+ // now search from index onward
+ while( str[index] != 0 )
+ {
+ char a, b;
+
+ // compare until we reach the end or a mismatch
+ pos = 0;
+ if( cs )
+ while( (a=sub[pos]) && (b=str[index]) && a==b )
+ pos++, index++;
+ else
+ while( (a=sub[pos]) && (b=str[index]) && tolower(a)==tolower(b) )
+ pos++, index++;
+
+ // reached the end of our compare string without a mismatch?
+ if( sub[pos] == 0 )
+ return index - pos;
+
+ index ++;
}
- const char *p = data() + (l - len);
- return QCString(p);
}
+
+ return -1;
}
-QCString QCString::mid(uint index, uint len) const
+int QCString::contains(char c, bool cs) const
{
- uint slen;
-
- slen = strlen(data());
-
- if (len == 0xffffffff) {
- len = length() - index;
+ const char* str = data();
+ uint found = 0;
+ uint len = length();
+
+ if( str && len )
+ {
+ // drop char if we're insensitive
+ if( !cs )
+ c = tolower(c);
+
+ for( unsigned i=0; i<len; i++ )
+ {
+ char chr = str[i];
+ if( !cs )
+ chr = tolower(chr);
+
+ if( chr == c )
+ found ++;
+ }
}
- if (isEmpty() || index >= slen) {
- QCString result;
- return result;
- }
- else {
- const char *p = data() + index;
- QCString result(len + 1);
- strncpy(result.data(), p, len);
- *(result.data() + len) = '\0';
- return result;
- }
+ return found;
}
QCString &QCString::operator=(const char *assignFrom)
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list