]> git.saurik.com Git - apple/icu.git/blobdiff - icuSources/common/appendable.cpp
ICU-491.11.1.tar.gz
[apple/icu.git] / icuSources / common / appendable.cpp
diff --git a/icuSources/common/appendable.cpp b/icuSources/common/appendable.cpp
new file mode 100644 (file)
index 0000000..4d672fc
--- /dev/null
@@ -0,0 +1,74 @@
+/*
+*******************************************************************************
+*   Copyright (C) 2011, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*******************************************************************************
+*   file name:  appendable.cpp
+*   encoding:   US-ASCII
+*   tab size:   8 (not used)
+*   indentation:4
+*
+*   created on: 2010dec07
+*   created by: Markus W. Scherer
+*/
+
+#include "unicode/utypes.h"
+#include "unicode/appendable.h"
+#include "unicode/utf16.h"
+
+U_NAMESPACE_BEGIN
+
+Appendable::~Appendable() {}
+
+UBool
+Appendable::appendCodePoint(UChar32 c) {
+    if(c<=0xffff) {
+        return appendCodeUnit((UChar)c);
+    } else {
+        return appendCodeUnit(U16_LEAD(c)) && appendCodeUnit(U16_TRAIL(c));
+    }
+}
+
+UBool
+Appendable::appendString(const UChar *s, int32_t length) {
+    if(length<0) {
+        UChar c;
+        while((c=*s++)!=0) {
+            if(!appendCodeUnit(c)) {
+                return FALSE;
+            }
+        }
+    } else if(length>0) {
+        const UChar *limit=s+length;
+        do {
+            if(!appendCodeUnit(*s++)) {
+                return FALSE;
+            }
+        } while(s<limit);
+    }
+    return TRUE;
+}
+
+UBool
+Appendable::reserveAppendCapacity(int32_t /*appendCapacity*/) {
+    return TRUE;
+}
+
+UChar *
+Appendable::getAppendBuffer(int32_t minCapacity,
+                            int32_t /*desiredCapacityHint*/,
+                            UChar *scratch, int32_t scratchCapacity,
+                            int32_t *resultCapacity) {
+    if(minCapacity<1 || scratchCapacity<minCapacity) {
+        *resultCapacity=0;
+        return NULL;
+    }
+    *resultCapacity=scratchCapacity;
+    return scratch;
+}
+
+UOBJECT_DEFINE_NO_RTTI_IMPLEMENTATION(Appendable)
+
+// UnicodeStringAppendable is implemented in unistr.cpp.
+
+U_NAMESPACE_END