diff options
Diffstat (limited to 'WebCore/platform/DeprecatedString.h')
-rw-r--r-- | WebCore/platform/DeprecatedString.h | 644 |
1 files changed, 0 insertions, 644 deletions
diff --git a/WebCore/platform/DeprecatedString.h b/WebCore/platform/DeprecatedString.h deleted file mode 100644 index c413134..0000000 --- a/WebCore/platform/DeprecatedString.h +++ /dev/null @@ -1,644 +0,0 @@ -/* - * Copyright (C) 2005, 2006, 2007 Apple Inc. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef DeprecatedString_h -#define DeprecatedString_h - -#include "DeprecatedCString.h" -#include <wtf/ASCIICType.h> -#include <wtf/unicode/Unicode.h> - -/* On some ARM platforms GCC won't pack structures by default so sizeof(DeprecatedChar) - will end up being != 2 which causes crashes since the code depends on that. */ -#if COMPILER(GCC) && PLATFORM(FORCE_PACK) -#define PACK_STRUCT __attribute__((packed)) -#else -#define PACK_STRUCT -#endif - -#if PLATFORM(CF) -typedef const struct __CFString * CFStringRef; -#endif - -#if PLATFORM(MAC) -#ifdef __OBJC__ -@class NSString; -#else -class NSString; -#endif -#endif - -#if PLATFORM(QT) -class QString; -#endif - -#if PLATFORM(WX) -class wxString; -#endif - -namespace KJS { - class Identifier; - class UString; -} - -namespace WebCore { - -class RegularExpression; - -class DeprecatedChar { -public: - DeprecatedChar(); - DeprecatedChar(char); - DeprecatedChar(unsigned char); - DeprecatedChar(short); - DeprecatedChar(unsigned short); - DeprecatedChar(int); - DeprecatedChar(unsigned); - - unsigned short unicode() const; - char latin1() const; - bool isSpace() const; - DeprecatedChar lower() const; - DeprecatedChar upper() const; - -private: - unsigned short c; -} PACK_STRUCT; - -inline DeprecatedChar::DeprecatedChar() : c(0) -{ -} - -inline DeprecatedChar::DeprecatedChar(char ch) : c((unsigned char) ch) -{ -} - -inline DeprecatedChar::DeprecatedChar(unsigned char uch) : c(uch) -{ -} - -inline DeprecatedChar::DeprecatedChar(short n) : c(n) -{ -} - -inline DeprecatedChar::DeprecatedChar(unsigned short n) : c(n) -{ -} - -inline DeprecatedChar::DeprecatedChar(unsigned n) : c(n) -{ -} - -inline DeprecatedChar::DeprecatedChar(int n) : c(n) -{ -} - -inline unsigned short DeprecatedChar::unicode() const -{ - return c; -} - -inline bool DeprecatedChar::isSpace() const -{ -#if USE(ICU_UNICODE) - // Use isspace() for basic Latin-1. - // This will include newlines, which aren't included in unicode DirWS. - return c <= 0x7F ? WTF::isASCIISpace(c) : (u_charDirection(c) == U_WHITE_SPACE_NEUTRAL); -#elif USE(QT4_UNICODE) - return QChar(c).isSpace(); -#endif -} - -inline DeprecatedChar DeprecatedChar::lower() const -{ -#if USE(ICU_UNICODE) - // FIXME: If fast enough, we should just call u_tolower directly. - return c <= 0x7F ? WTF::toASCIILower(c) : u_tolower(c); -#elif USE(QT4_UNICODE) - return QChar(c).toLower().unicode(); -#endif -} - -inline DeprecatedChar DeprecatedChar::upper() const -{ -#if USE(ICU_UNICODE) - // FIXME: If fast enough, we should just call u_toupper directly. - return c <= 0x7F ? WTF::toASCIIUpper(c) : u_toupper(c); -#elif USE(QT4_UNICODE) - return QChar(c).toUpper().unicode(); -#endif -} - -inline char DeprecatedChar::latin1() const -{ - return c > 0xff ? 0 : c; -} - -inline bool operator==(DeprecatedChar qc1, DeprecatedChar qc2) -{ - return qc1.unicode() == qc2.unicode(); -} - -inline bool operator==(DeprecatedChar qc, char ch) -{ - return qc.unicode() == (unsigned char) ch; -} - -inline bool operator==(char ch, DeprecatedChar qc) -{ - return (unsigned char) ch == qc.unicode(); -} - -inline bool operator!=(DeprecatedChar qc1, DeprecatedChar qc2) -{ - return qc1.unicode() != qc2.unicode(); -} - -inline bool operator!=(DeprecatedChar qc, char ch) -{ - return qc.unicode() != (unsigned char) ch; -} - -inline bool operator!=(char ch, DeprecatedChar qc) -{ - return (unsigned char) ch != qc.unicode(); -} - -// Keep this struct to <= 46 bytes, that's what the system will allocate. -// Will be rounded up to a multiple of 4, so we're stuck at 44. - -#define WEBCORE_DS_INTERNAL_BUFFER_SIZE 20 -#define WEBCORE_DS_INTERNAL_BUFFER_CHARS WEBCORE_DS_INTERNAL_BUFFER_SIZE-1 -#define WEBCORE_DS_INTERNAL_BUFFER_UCHARS WEBCORE_DS_INTERNAL_BUFFER_SIZE/2 - -struct DeprecatedStringData -{ - // Uses shared null data. - DeprecatedStringData(); - void initialize(); - - // No copy. - DeprecatedStringData(DeprecatedChar *u, unsigned l, unsigned m); - void initialize(DeprecatedChar *u, unsigned l, unsigned m); - - // Copy bytes. - DeprecatedStringData(const DeprecatedChar *u, unsigned l); - void initialize(const DeprecatedChar *u, unsigned l); - - // Copy bytes. - DeprecatedStringData(const char *u, unsigned l); - void initialize(const char *u, unsigned l); - - // Move from destination to source. - static DeprecatedStringData* createAndAdopt(DeprecatedStringData &); - - ~DeprecatedStringData(); - -#ifdef WEBCORE_DS_DEBUG_ALLOCATIONS - void* operator new(size_t s); - void operator delete(void*p); -#endif - - inline void ref() { refCount++; } - inline void deref() { if (--refCount == 0 && _isHeapAllocated) delete this; } - - char *ascii(); - char *makeAscii(); - void increaseAsciiSize(unsigned size); - - DeprecatedChar *unicode(); - DeprecatedChar *makeUnicode(); - void increaseUnicodeSize(unsigned size); - - bool isUnicodeInternal() const { return (char *)_unicode == _internalBuffer; } - bool isAsciiInternal() const { return _ascii == _internalBuffer; } - - unsigned refCount; - unsigned _length; - mutable DeprecatedChar *_unicode; - mutable char *_ascii; - - unsigned _maxUnicode : 30; - bool _isUnicodeValid : 1; - bool _isHeapAllocated : 1; // Fragile, but the only way we can be sure the instance was created with 'new'. - unsigned _maxAscii : 31; - bool _isAsciiValid : 1; - - // _internalBuffer must be at the end - otherwise it breaks on archs that - // don't pack structs on byte boundary, like some versions of gcc on ARM - char _internalBuffer[WEBCORE_DS_INTERNAL_BUFFER_SIZE]; // Pad out to a (((size + 1) & ~15) + 14) size - -private: - void adopt(DeprecatedStringData&); - - DeprecatedStringData(const DeprecatedStringData &); - DeprecatedStringData &operator=(const DeprecatedStringData &); -}; - -class DeprecatedString; - -bool operator==(const DeprecatedString&, const DeprecatedString&); -bool operator==(const DeprecatedString&, const char*); - -class DeprecatedString { -public: - static const char * const null; - - DeprecatedString(); - DeprecatedString(DeprecatedChar); - DeprecatedString(const DeprecatedChar *, unsigned); - DeprecatedString(const char *); - DeprecatedString(const char *, int len); - DeprecatedString(const KJS::Identifier&); - DeprecatedString(const KJS::UString&); - - DeprecatedString(const DeprecatedString &); - DeprecatedString &operator=(const DeprecatedString &); - - ~DeprecatedString(); - - operator KJS::Identifier() const; - operator KJS::UString() const; - -#if PLATFORM(QT) - DeprecatedString(const QString&); - operator QString() const; -#endif - - static DeprecatedString fromLatin1(const char *); - static DeprecatedString fromLatin1(const char *, int len); - static DeprecatedString fromUtf8(const char *); - static DeprecatedString fromUtf8(const char *, int len); -#if PLATFORM(CF) - static DeprecatedString fromCFString(CFStringRef); -#endif -#if PLATFORM(MAC) - static DeprecatedString fromNSString(NSString*); -#endif -#if PLATFORM(SYMBIAN) - static DeprecatedString fromDes(const TDesC&); - static DeprecatedString fromDes(const TDesC8&); -#endif - DeprecatedString &operator=(char); - DeprecatedString &operator=(DeprecatedChar); - DeprecatedString &operator=(const char *); - DeprecatedString &operator=(const DeprecatedCString &); - - unsigned length() const; - - const DeprecatedChar *unicode() const; - const DeprecatedChar *stableUnicode(); - const char *latin1() const; - const char *ascii() const; - bool isAllASCII() const; - bool isAllLatin1() const; - bool hasFastLatin1() const; - void copyLatin1(char *buffer, unsigned position = 0, unsigned length = 0xffffffff) const; - DeprecatedCString utf8() const { int length; return utf8(length); } - DeprecatedCString utf8(int &length) const; - - bool isNull() const; - bool isEmpty() const; - - DeprecatedChar at(unsigned) const; - - int compare(const DeprecatedString &) const; - int compare(const char *) const; - - bool startsWith(const DeprecatedString &) const; - bool startsWith(const char *) const; - bool startsWith(const char *, bool caseSensitive) const; - - int find(char, int index = 0) const; - int find(DeprecatedChar, int index = 0) const; - int find(const char *, int index = 0, bool cs = true) const; - int find(const DeprecatedString &, int index = 0, bool cs = true) const; - int find(const RegularExpression &, int index = 0) const; - - int findRev(char, int index = -1) const; - int findRev(const DeprecatedString& str, int index, bool cs = true) const; - int findRev(const char *, int index = -1) const; - - int contains(char) const; - int contains(const char *, bool cs = true) const; - int contains(const DeprecatedString &, bool cs = true) const; - int contains(DeprecatedChar c, bool cs = true) const; - - bool endsWith(const DeprecatedString &) const; - - short toShort(bool *ok = 0, int base = 10) const; - unsigned short toUShort(bool *ok = 0, int base = 10) const; - int toInt(bool *ok = 0, int base = 10) const; - int64_t toInt64(bool *ok = 0, int base = 10) const; - unsigned toUInt(bool *ok = 0, int base = 10) const; - uint64_t toUInt64(bool *ok = 0, int base = 10) const; - - double toDouble(bool *ok = 0) const; - float toFloat(bool* ok = 0) const; - - static DeprecatedString number(int); - static DeprecatedString number(unsigned); - static DeprecatedString number(long); - static DeprecatedString number(unsigned long); - static DeprecatedString number(double); - - DeprecatedString left(unsigned) const; - DeprecatedString right(unsigned) const; - DeprecatedString mid(unsigned, unsigned len=0xffffffff) const; - - DeprecatedString copy() const; - - DeprecatedString lower() const; - DeprecatedString stripWhiteSpace() const; - DeprecatedString simplifyWhiteSpace() const; - - DeprecatedString &setUnicode(const DeprecatedChar *, unsigned); - DeprecatedString &setLatin1(const char *, int len=-1); - - DeprecatedString &setNum(short); - DeprecatedString &setNum(unsigned short); - DeprecatedString &setNum(int); - DeprecatedString &setNum(unsigned); - DeprecatedString &setNum(long); - DeprecatedString &setNum(unsigned long); - DeprecatedString &setNum(double); - - DeprecatedString& format(const char *, ...) WTF_ATTRIBUTE_PRINTF(2, 3); - - DeprecatedString &append(const DeprecatedString &); - DeprecatedString &append(DeprecatedChar); - DeprecatedString &append(char); - DeprecatedString &insert(unsigned, const DeprecatedString &); - DeprecatedString &insert(unsigned, DeprecatedChar); - DeprecatedString &insert(unsigned, char); - DeprecatedString &insert(unsigned index, const char *insertChars, unsigned insertLength); - DeprecatedString &prepend(const DeprecatedString &); - DeprecatedString &remove(unsigned, unsigned); - DeprecatedString &remove(const DeprecatedChar &c) { return replace(DeprecatedString(c), ""); } - DeprecatedString &remove(const DeprecatedString &s) { return replace(s, ""); } - DeprecatedString &replace(unsigned index, unsigned len, const DeprecatedString &s); - DeprecatedString &replace(char, const DeprecatedString &); - DeprecatedString &replace(DeprecatedChar, const DeprecatedString &); - DeprecatedString &replace(const DeprecatedString &, const DeprecatedString &); - DeprecatedString &replace(const RegularExpression &, const DeprecatedString &); - DeprecatedString &replace(DeprecatedChar, DeprecatedChar); - - DeprecatedString &append(const DeprecatedChar *, unsigned length); - DeprecatedString &append(const char *, unsigned length); - DeprecatedString &insert(unsigned position, const DeprecatedChar *, unsigned length); - DeprecatedString &prepend(const DeprecatedChar *, unsigned length); - - void fill(DeprecatedChar, int len=-1); - void truncate(unsigned); - - void reserve(unsigned); - - bool operator!() const; - - const DeprecatedChar operator[](int) const; - - DeprecatedString &operator+=(const DeprecatedString &s) { return append(s); } - DeprecatedString &operator+=(DeprecatedChar c) { return append(c); } - DeprecatedString &operator+=(char c) { return append(c); } - -#if PLATFORM(CF) - CFStringRef getCFString() const; - void setBufferFromCFString(CFStringRef); -#endif - -#if PLATFORM(MAC) - NSString *getNSString() const; - -#ifdef __OBJC__ - operator NSString*() const { return getNSString(); } -#endif - -#endif - -#if PLATFORM(WX) - operator wxString() const; -#endif - -#if PLATFORM(SYMBIAN) - TPtrC des() const; - TPtrC8 des8() const; - void setBufferFromDes(const TDesC&); - void setBufferFromDes(const TDesC8&); -#endif - -private: - // Used by DeprecatedConstString. - DeprecatedString(DeprecatedStringData *constData, bool /*dummy*/); - void detach(); - void detachAndDiscardCharacters(); - void detachIfInternal(); - void detachInternal(); - void deref(); - DeprecatedChar *forceUnicode(); - void setLength(unsigned); - - DeprecatedStringData **dataHandle; - DeprecatedStringData internalData; - - static DeprecatedStringData *shared_null; - static DeprecatedStringData *makeSharedNull(); - static DeprecatedStringData **shared_null_handle; - static DeprecatedStringData **makeSharedNullHandle(); - - friend bool operator==(const DeprecatedString &, const DeprecatedString &); - friend bool operator==(const DeprecatedString &, const char *); - friend bool equalIgnoringCase(const DeprecatedString&, const DeprecatedString&); - - friend class DeprecatedConstString; - friend class QGDict; - friend struct DeprecatedStringData; -}; - -DeprecatedString operator+(const DeprecatedString &, const DeprecatedString &); -DeprecatedString operator+(const DeprecatedString &, const char *); -DeprecatedString operator+(const DeprecatedString &, DeprecatedChar); -DeprecatedString operator+(const DeprecatedString &, char); -DeprecatedString operator+(const char *, const DeprecatedString &); -DeprecatedString operator+(DeprecatedChar, const DeprecatedString &); -DeprecatedString operator+(char, const DeprecatedString &); - -bool equalIgnoringCase(const DeprecatedString&, const DeprecatedString&); -inline bool equalIgnoringCase(const DeprecatedString& a, const char* b) { return equalIgnoringCase(a, DeprecatedString(b)); } -inline bool equalIgnoringCase(const char* a, const DeprecatedString& b) { return equalIgnoringCase(DeprecatedString(a), b); } - -inline char *DeprecatedStringData::ascii() -{ - return _isAsciiValid ? _ascii : makeAscii(); -} - -inline DeprecatedChar *DeprecatedStringData::unicode() -{ - return _isUnicodeValid ? _unicode : makeUnicode(); -} - -inline unsigned DeprecatedString::length() const -{ - return dataHandle[0]->_length; -} - -inline bool DeprecatedString::isEmpty() const -{ - return dataHandle[0]->_length == 0; -} - -inline const char *DeprecatedString::latin1() const -{ - return dataHandle[0]->ascii(); -} - -inline const DeprecatedChar *DeprecatedString::unicode() const -{ - return dataHandle[0]->unicode(); -} - -#if PLATFORM(MAC) -#if PLATFORM(CF) -inline CFStringRef DeprecatedString::getCFString() const -{ - return (CFStringRef)getNSString(); -} -#endif -#endif - -inline DeprecatedString DeprecatedString::fromLatin1(const char *chs) -{ - return chs; -} - -inline DeprecatedString DeprecatedString::fromLatin1(const char *chs, int length) -{ - return DeprecatedString(chs, length); -} - -inline const char *DeprecatedString::ascii() const -{ - return latin1(); -} - -inline bool DeprecatedString::operator!() const -{ - return isNull(); -} - -inline const DeprecatedChar DeprecatedString::operator[](int index) const -{ - return at(index); -} - -inline bool operator==(const char *chs, const DeprecatedString &qs) -{ - return qs == chs; -} - -inline bool operator!=(const DeprecatedString &qs1, const DeprecatedString &qs2) -{ - return !(qs1 == qs2); -} - -inline bool operator!=(const DeprecatedString &qs, const char *chs) -{ - return !(qs == chs); -} - -inline bool operator!=(const char *chs, const DeprecatedString &qs) -{ - return !(qs == chs); -} - -inline bool operator<(const DeprecatedString &qs1, const DeprecatedString &qs2) -{ - return qs1.compare(qs2) < 0; -} - -inline bool operator<(const DeprecatedString &qs, const char *chs) -{ - return qs.compare(chs) < 0; -} - -inline bool operator<(const char *chs, const DeprecatedString &qs) -{ - return qs.compare(chs) > 0; -} - -inline bool operator<=(const DeprecatedString &qs1, const DeprecatedString &qs2) -{ - return qs1.compare(qs2) <= 0; -} - -inline bool operator<=(const DeprecatedString &qs, const char *chs) -{ - return qs.compare(chs) <= 0; -} - -inline bool operator<=(const char *chs, const DeprecatedString &qs) -{ - return qs.compare(chs) >= 0; -} - -inline bool operator>(const DeprecatedString &qs1, const DeprecatedString &qs2) -{ - return qs1.compare(qs2) > 0; -} - -inline bool operator>(const DeprecatedString &qs, const char *chs) -{ - return qs.compare(chs) > 0; -} - -inline bool operator>(const char *chs, const DeprecatedString &qs) -{ - return qs.compare(chs) < 0; -} - -inline bool operator>=(const DeprecatedString &qs1, const DeprecatedString &qs2) -{ - return qs1.compare(qs2) >= 0; -} - -inline bool operator>=(const DeprecatedString &qs, const char *chs) -{ - return qs.compare(chs) >= 0; -} - -inline bool operator>=(const char *chs, const DeprecatedString &qs) -{ - return qs.compare(chs) <= 0; -} - -class DeprecatedConstString : private DeprecatedString { -public: - DeprecatedConstString(const DeprecatedChar *, unsigned); - ~DeprecatedConstString(); - const DeprecatedString &string() const { return *this; } -}; - -} - -#endif |