ICU 59.1  59.1
appendable.h
Go to the documentation of this file.
1 // © 2016 and later: Unicode, Inc. and others.
2 // License & terms of use: http://www.unicode.org/copyright.html
3 /*
4 *******************************************************************************
5 * Copyright (C) 2011-2012, International Business Machines
6 * Corporation and others. All Rights Reserved.
7 *******************************************************************************
8 * file name: appendable.h
9 * encoding: UTF-8
10 * tab size: 8 (not used)
11 * indentation:4
12 *
13 * created on: 2010dec07
14 * created by: Markus W. Scherer
15 */
16 
17 #ifndef __APPENDABLE_H__
18 #define __APPENDABLE_H__
19 
25 #include "unicode/utypes.h"
26 #include "unicode/uobject.h"
27 
29 
30 class UnicodeString;
31 
52 public:
57  ~Appendable();
58 
65  virtual UBool appendCodeUnit(char16_t c) = 0;
66 
74  virtual UBool appendCodePoint(UChar32 c);
75 
84  virtual UBool appendString(const char16_t *s, int32_t length);
85 
95  virtual UBool reserveAppendCapacity(int32_t appendCapacity);
96 
141  virtual char16_t *getAppendBuffer(int32_t minCapacity,
142  int32_t desiredCapacityHint,
143  char16_t *scratch, int32_t scratchCapacity,
144  int32_t *resultCapacity);
145 };
146 
154 public:
160  explicit UnicodeStringAppendable(UnicodeString &s) : str(s) {}
161 
167 
174  virtual UBool appendCodeUnit(char16_t c);
175 
182  virtual UBool appendCodePoint(UChar32 c);
183 
191  virtual UBool appendString(const char16_t *s, int32_t length);
192 
200  virtual UBool reserveAppendCapacity(int32_t appendCapacity);
201 
223  virtual char16_t *getAppendBuffer(int32_t minCapacity,
224  int32_t desiredCapacityHint,
225  char16_t *scratch, int32_t scratchCapacity,
226  int32_t *resultCapacity);
227 
228 private:
229  UnicodeString &str;
230 };
231 
233 
234 #endif // __APPENDABLE_H__
virtual UBool reserveAppendCapacity(int32_t appendCapacity)
Tells the object that the caller is going to append roughly appendCapacity char16_ts.
virtual UBool appendCodeUnit(char16_t c)=0
Appends a 16-bit code unit.
An Appendable implementation which writes to a UnicodeString.
Definition: appendable.h:153
virtual UBool appendString(const char16_t *s, int32_t length)
Appends a string.
virtual char16_t * getAppendBuffer(int32_t minCapacity, int32_t desiredCapacityHint, char16_t *scratch, int32_t scratchCapacity, int32_t *resultCapacity)
Returns a writable buffer for appending and writes the buffer's capacity to *resultCapacity.
#define U_NAMESPACE_BEGIN
This is used to begin a declaration of a public ICU C++ API.
Definition: uversion.h:131
virtual UBool appendCodePoint(UChar32 c)
Appends a code point.
int32_t UChar32
Define UChar32 as a type for single Unicode code points.
Definition: umachine.h:396
UnicodeStringAppendable(UnicodeString &s)
Aliases the UnicodeString (keeps its reference) for writing.
Definition: appendable.h:160
C++ API: Common ICU base class UObject.
#define U_NAMESPACE_END
This is used to end a declaration of a public ICU C++ API.
Definition: uversion.h:132
Basic definitions for ICU, for both C and C++ APIs.
#define U_COMMON_API
Set to export library symbols from inside the common library, and to import them from outside...
Definition: utypes.h:359
UnicodeString is a string class that stores Unicode characters directly and provides similar function...
Definition: unistr.h:296
UObject is the common ICU "boilerplate" class.
Definition: uobject.h:223
int8_t UBool
The ICU boolean type.
Definition: umachine.h:236
Base class for objects to which Unicode characters and strings can be appended.
Definition: appendable.h:51