]> git.saurik.com Git - apple/icu.git/blame - icuSources/common/appendable.cpp
ICU-491.11.3.tar.gz
[apple/icu.git] / icuSources / common / appendable.cpp
CommitLineData
4388f060
A
1/*
2*******************************************************************************
3* Copyright (C) 2011, International Business Machines
4* Corporation and others. All Rights Reserved.
5*******************************************************************************
6* file name: appendable.cpp
7* encoding: US-ASCII
8* tab size: 8 (not used)
9* indentation:4
10*
11* created on: 2010dec07
12* created by: Markus W. Scherer
13*/
14
15#include "unicode/utypes.h"
16#include "unicode/appendable.h"
17#include "unicode/utf16.h"
18
19U_NAMESPACE_BEGIN
20
21Appendable::~Appendable() {}
22
23UBool
24Appendable::appendCodePoint(UChar32 c) {
25 if(c<=0xffff) {
26 return appendCodeUnit((UChar)c);
27 } else {
28 return appendCodeUnit(U16_LEAD(c)) && appendCodeUnit(U16_TRAIL(c));
29 }
30}
31
32UBool
33Appendable::appendString(const UChar *s, int32_t length) {
34 if(length<0) {
35 UChar c;
36 while((c=*s++)!=0) {
37 if(!appendCodeUnit(c)) {
38 return FALSE;
39 }
40 }
41 } else if(length>0) {
42 const UChar *limit=s+length;
43 do {
44 if(!appendCodeUnit(*s++)) {
45 return FALSE;
46 }
47 } while(s<limit);
48 }
49 return TRUE;
50}
51
52UBool
53Appendable::reserveAppendCapacity(int32_t /*appendCapacity*/) {
54 return TRUE;
55}
56
57UChar *
58Appendable::getAppendBuffer(int32_t minCapacity,
59 int32_t /*desiredCapacityHint*/,
60 UChar *scratch, int32_t scratchCapacity,
61 int32_t *resultCapacity) {
62 if(minCapacity<1 || scratchCapacity<minCapacity) {
63 *resultCapacity=0;
64 return NULL;
65 }
66 *resultCapacity=scratchCapacity;
67 return scratch;
68}
69
70UOBJECT_DEFINE_NO_RTTI_IMPLEMENTATION(Appendable)
71
72// UnicodeStringAppendable is implemented in unistr.cpp.
73
74U_NAMESPACE_END