Index: icu46/source/common/charstr.h |
=================================================================== |
--- icu46/source/common/charstr.h (revision 0) |
+++ icu46/source/common/charstr.h (revision 0) |
@@ -0,0 +1,123 @@ |
+/* |
+********************************************************************** |
+* Copyright (c) 2001-2010, International Business Machines |
+* Corporation and others. All Rights Reserved. |
+********************************************************************** |
+* Date Name Description |
+* 11/19/2001 aliu Creation. |
+* 05/19/2010 markus Rewritten from scratch |
+********************************************************************** |
+*/ |
+ |
+#ifndef CHARSTRING_H |
+#define CHARSTRING_H |
+ |
+#include "unicode/utypes.h" |
+#include "unicode/unistr.h" |
+#include "unicode/uobject.h" |
+#include "cmemory.h" |
+ |
+U_NAMESPACE_BEGIN |
+ |
+// Windows needs us to DLL-export the MaybeStackArray template specialization, |
+// but MacOS X cannot handle it. Same as in digitlst.h. |
+#if !defined(U_DARWIN) |
+template class U_COMMON_API MaybeStackArray<char, 40>; |
+#endif |
+ |
+/** |
+ * ICU-internal char * string class. |
+ * This class does not assume or enforce any particular character encoding. |
+ * Raw bytes can be stored. The string object owns its characters. |
+ * A terminating NUL is stored, but the class does not prevent embedded NUL characters. |
+ * |
+ * This class wants to be convenient but is also deliberately minimalist. |
+ * Please do not add methods if they only add minor convenience. |
+ * For example: |
+ * cs.data()[5]='a'; // no need for setCharAt(5, 'a') |
+ */ |
+class U_COMMON_API CharString : public UMemory { |
+public: |
+ CharString() : len(0) { buffer[0]=0; } |
+ CharString(const StringPiece &s, UErrorCode &errorCode) : len(0) { |
+ buffer[0]=0; |
+ append(s, errorCode); |
+ } |
+ CharString(const CharString &s, UErrorCode &errorCode) : len(0) { |
+ buffer[0]=0; |
+ append(s, errorCode); |
+ } |
+ CharString(const char *s, int32_t sLength, UErrorCode &errorCode) : len(0) { |
+ buffer[0]=0; |
+ append(s, sLength, errorCode); |
+ } |
+ ~CharString() {} |
+ |
+ /** |
+ * Replaces this string's contents with the other string's contents. |
+ * CharString does not support the standard copy constructor nor |
+ * the assignment operator, to make copies explicit and to |
+ * use a UErrorCode where memory allocations might be needed. |
+ */ |
+ CharString ©From(const CharString &other, UErrorCode &errorCode); |
+ |
+ UBool isEmpty() { return len==0; } |
+ int32_t length() const { return len; } |
+ char operator[] (int32_t index) const { return buffer[index]; } |
+ StringPiece toStringPiece() const { return StringPiece(buffer.getAlias(), len); } |
+ |
+ const char *data() const { return buffer.getAlias(); } |
+ char *data() { return buffer.getAlias(); } |
+ |
+ CharString &clear() { len=0; buffer[0]=0; return *this; } |
+ CharString &truncate(int32_t newLength); |
+ |
+ CharString &append(char c, UErrorCode &errorCode); |
+ CharString &append(const StringPiece &s, UErrorCode &errorCode) { |
+ return append(s.data(), s.length(), errorCode); |
+ } |
+ CharString &append(const CharString &s, UErrorCode &errorCode) { |
+ return append(s.data(), s.length(), errorCode); |
+ } |
+ CharString &append(const char *s, int32_t sLength, UErrorCode &status); |
+ /** |
+ * Returns a writable buffer for appending and writes the buffer's capacity to |
+ * resultCapacity. Guarantees resultCapacity>=minCapacity if U_SUCCESS(). |
+ * There will additionally be space for a terminating NUL right at resultCapacity. |
+ * (This function is similar to ByteSink.GetAppendBuffer().) |
+ * |
+ * The returned buffer is only valid until the next write operation |
+ * on this string. |
+ * |
+ * After writing at most resultCapacity bytes, call append() with the |
+ * pointer returned from this function and the number of bytes written. |
+ * |
+ * @param minCapacity required minimum capacity of the returned buffer; |
+ * must be non-negative |
+ * @param desiredCapacityHint desired capacity of the returned buffer; |
+ * must be non-negative |
+ * @param resultCapacity will be set to the capacity of the returned buffer |
+ * @param errorCode in/out error code |
+ * @return a buffer with resultCapacity>=min_capacity |
+ */ |
+ char *getAppendBuffer(int32_t minCapacity, |
+ int32_t desiredCapacityHint, |
+ int32_t &resultCapacity, |
+ UErrorCode &errorCode); |
+ |
+ CharString &appendInvariantChars(const UnicodeString &s, UErrorCode &errorCode); |
+ |
+private: |
+ MaybeStackArray<char, 40> buffer; |
+ int32_t len; |
+ |
+ UBool ensureCapacity(int32_t capacity, int32_t desiredCapacityHint, UErrorCode &errorCode); |
+ |
+ CharString(const CharString &other); // forbid copying of this class |
+ CharString &operator=(const CharString &other); // forbid copying of this class |
+}; |
+ |
+U_NAMESPACE_END |
+ |
+#endif |
+//eof |
Property changes on: icu46/source/common/charstr.h |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |