• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2 *******************************************************************************
3 *   Copyright (C) 2011-2012, 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 
19 U_NAMESPACE_BEGIN
20 
~Appendable()21 Appendable::~Appendable() {}
22 
23 UBool
appendCodePoint(UChar32 c)24 Appendable::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 
32 UBool
appendString(const UChar * s,int32_t length)33 Appendable::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 
52 UBool
reserveAppendCapacity(int32_t)53 Appendable::reserveAppendCapacity(int32_t /*appendCapacity*/) {
54     return TRUE;
55 }
56 
57 UChar *
getAppendBuffer(int32_t minCapacity,int32_t,UChar * scratch,int32_t scratchCapacity,int32_t * resultCapacity)58 Appendable::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 
70 // UnicodeStringAppendable is implemented in unistr.cpp.
71 
72 U_NAMESPACE_END
73