aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/basetypes/MCString.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/basetypes/MCString.h')
-rw-r--r--src/core/basetypes/MCString.h123
1 files changed, 123 insertions, 0 deletions
diff --git a/src/core/basetypes/MCString.h b/src/core/basetypes/MCString.h
new file mode 100644
index 00000000..9ff04390
--- /dev/null
+++ b/src/core/basetypes/MCString.h
@@ -0,0 +1,123 @@
+#ifndef __MAILCORE_MCSTR_H_
+
+#define __MAILCORE_MCSTR_H_
+
+#include <mailcore/MCObject.h>
+#include <mailcore/MCRange.h>
+
+#include <stdarg.h>
+#include <unicode/utypes.h>
+
+namespace mailcore {
+
+ class Data;
+ class Array;
+
+ class String : public Object {
+ private:
+ UChar * mUnicodeChars;
+ unsigned int mLength;
+ unsigned int mAllocated;
+ void allocate(unsigned int length);
+ void appendCharactersLength(const UChar * unicodeCharacters, unsigned int length);
+ void reset();
+ int compareWithCaseSensitive(String * otherString, bool caseSensitive);
+ void appendBytes(const char * bytes, unsigned int length, const char * charset);
+ void appendUTF8CharactersLength(const char * UTF8Characters, unsigned int length);
+
+ public:
+ String(const UChar * unicodeChars = NULL);
+ String(const UChar * unicodeChars, unsigned int length);
+ String(const char * UTF8Characters);
+ String(String * otherString);
+ String(Data * data, const char * charset);
+ String(const char * bytes, unsigned int length, const char * charset = NULL);
+ virtual ~String();
+
+ //virtual String * className();
+ virtual String * description();
+ virtual Object * copy();
+ virtual bool isEqual(Object * otherObject);
+ virtual unsigned int hash();
+
+ static String * string();
+ static String * stringWithUTF8Format(const char * format, ...);
+ static String * stringWithVUTF8Format(const char * format, va_list ap);
+ static String * stringWithUTF8Characters(const char * UTF8Characters);
+ static String * stringWithCharacters(const UChar * characters);
+ static String * stringWithCharacters(const UChar * characters, unsigned int length);
+
+ virtual const UChar * unicodeCharacters();
+ virtual const char * UTF8Characters();
+ virtual unsigned int length();
+
+ virtual void appendString(String * otherString);
+ virtual void appendUTF8Format(const char * format, ...);
+ virtual void appendCharacters(const UChar * unicodeCharacters);
+ virtual void appendUTF8Characters(const char * UTF8Characters);
+ virtual void setString(String * otherString);
+ virtual void setUTF8Characters(const char * UTF8Characters);
+ virtual void setCharacters(const UChar * unicodeCharacters);
+
+ virtual String * stringByAppendingString(String * otherString);
+ virtual String * stringByAppendingUTF8Format(const char * format, ...);
+ virtual String * stringByAppendingUTF8Characters(const char * UTF8Characters);
+ virtual String * stringByAppendingCharacters(const UChar * unicodeCharacters);
+
+ virtual int compare(String * otherString);
+ virtual int caseInsensitiveCompare(String * otherString);
+ virtual String * lowercaseString();
+ virtual String * uppercaseString();
+
+ virtual UChar characterAtIndex(unsigned int idx);
+ virtual void deleteCharactersInRange(Range range);
+ virtual unsigned int replaceOccurrencesOfString(String * occurrence, String * replacement);
+ virtual int locationOfString(String * occurrence);
+
+ virtual Array * componentsSeparatedByString(String * separator);
+
+ // Additions
+ static String * stringByDecodingMIMEHeaderValue(const char * phrase);
+ virtual Data * encodedAddressDisplayNameValue();
+ virtual Data * encodedMIMEHeaderValue();
+ virtual Data * encodedMIMEHeaderValueForSubject();
+ virtual String * extractedSubject();
+ virtual String * extractedSubjectAndKeepBracket(bool keepBracket);
+ static String * uuidString();
+
+ virtual bool hasSuffix(String * suffix);
+ virtual bool hasPrefix(String * prefix);
+
+ virtual String * substringFromIndex(unsigned int idx);
+ virtual String * substringToIndex(unsigned int idx);
+ virtual String * substringWithRange(Range range);
+
+ virtual String * flattenHTML();
+ virtual String * flattenHTMLAndShowBlockquote(bool showBlockquote);
+ virtual String * flattenHTMLAndShowBlockquoteAndLink(bool showBlockquote, bool showLink);
+
+ virtual String * lastPathComponent();
+ virtual String * pathExtension();
+ virtual Data * dataUsingEncoding(const char * charset = NULL);
+
+ virtual const char * fileSystemRepresentation();
+ static String * stringWithFileSystemRepresentation(const char * filename);
+
+ int intValue();
+ unsigned int unsignedIntValue();
+ long longValue();
+ unsigned long unsignedLongValue();
+ long long longLongValue();
+ unsigned long long unsignedLongLongValue();
+
+ virtual Data * mUTF7EncodedData();
+ static String * stringWithMUTF7Data(Data * data);
+ virtual String * mUTF7EncodedString();
+ virtual String * mUTF7DecodedString();
+
+ static String * uniquedStringWithUTF8Characters(const char * UTF8Characters);
+ };
+
+}
+
+#endif