ICU 50.1.2  50.1.2
appendable.h
Go to the documentation of this file.
1 /*
2 *******************************************************************************
3 * Copyright (C) 2011-2012, International Business Machines
4 * Corporation and others. All Rights Reserved.
5 *******************************************************************************
6 * file name: appendable.h
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 #ifndef __APPENDABLE_H__
16 #define __APPENDABLE_H__
17 
23 #include "unicode/utypes.h"
24 #include "unicode/uobject.h"
25 
27 
28 class UnicodeString;
29 
50 public:
55  ~Appendable();
56 
63  virtual UBool appendCodeUnit(UChar c) = 0;
64 
72  virtual UBool appendCodePoint(UChar32 c);
73 
82  virtual UBool appendString(const UChar *s, int32_t length);
83 
93  virtual UBool reserveAppendCapacity(int32_t appendCapacity);
94 
139  virtual UChar *getAppendBuffer(int32_t minCapacity,
140  int32_t desiredCapacityHint,
141  UChar *scratch, int32_t scratchCapacity,
142  int32_t *resultCapacity);
143 
144 private:
145  // No ICU "poor man's RTTI" for this class nor its subclasses.
146  virtual UClassID getDynamicClassID() const;
147 };
148 
156 public:
162  explicit UnicodeStringAppendable(UnicodeString &s) : str(s) {}
163 
169 
176  virtual UBool appendCodeUnit(UChar c);
177 
184  virtual UBool appendCodePoint(UChar32 c);
185 
193  virtual UBool appendString(const UChar *s, int32_t length);
194 
202  virtual UBool reserveAppendCapacity(int32_t appendCapacity);
203 
225  virtual UChar *getAppendBuffer(int32_t minCapacity,
226  int32_t desiredCapacityHint,
227  UChar *scratch, int32_t scratchCapacity,
228  int32_t *resultCapacity);
229 
230 private:
231  UnicodeString &str;
232 };
233 
235 
236 #endif // __APPENDABLE_H__
virtual UBool reserveAppendCapacity(int32_t appendCapacity)
Tells the object that the caller is going to append roughly appendCapacity UChars.
virtual UBool appendCodeUnit(UChar c)=0
Appends a 16-bit code unit.
An Appendable implementation which writes to a UnicodeString.
Definition: appendable.h:155
virtual UClassID getDynamicClassID() const =0
ICU4C "poor man's RTTI", returns a UClassID for the actual ICU class.
void * UClassID
UClassID is used to identify classes without using the compiler's RTTI.
Definition: uobject.h:96
virtual UChar * getAppendBuffer(int32_t minCapacity, int32_t desiredCapacityHint, UChar *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:129
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:298
UnicodeStringAppendable(UnicodeString &s)
Aliases the UnicodeString (keeps its reference) for writing.
Definition: appendable.h:162
C++ API: Common ICU base class UObject.
uint16_t UChar
Define UChar to be UCHAR_TYPE, if that is #defined (for example, to char16_t), or wchar_t if that is ...
Definition: umachine.h:278
#define U_NAMESPACE_END
This is used to end a declaration of a public ICU C++ API.
Definition: uversion.h:130
virtual UBool appendString(const UChar *s, int32_t length)
Appends a string.
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:357
UnicodeString is a string class that stores Unicode characters directly and provides similar function...
Definition: unistr.h:246
UObject is the common ICU "boilerplate" class.
Definition: uobject.h:229
int8_t UBool
The ICU boolean type.
Definition: umachine.h:200
Base class for objects to which Unicode characters and strings can be appended.
Definition: appendable.h:49