00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
#ifndef REP_H
00015
#define REP_H
00016
00017
#include "unicode/uobject.h"
00018
00019
U_NAMESPACE_BEGIN
00020
00021
class UnicodeString;
00022
00066 class U_COMMON_API Replaceable :
public UObject {
00067
00068
public:
00073
virtual ~Replaceable();
00074
00080
inline int32_t length()
const;
00081
00089
inline UChar charAt(int32_t offset)
const;
00090
00103
inline UChar32 char32At(int32_t offset)
const;
00104
00115
virtual void extractBetween(int32_t start,
00116 int32_t limit,
00117
UnicodeString& target)
const = 0;
00118
00139
virtual void handleReplaceBetween(int32_t start,
00140 int32_t limit,
00141
const UnicodeString& text) = 0;
00142
00143
00144
00145
00146
00147
00148
00149
00150
00151
00167
virtual void copy(int32_t start, int32_t limit, int32_t dest) = 0;
00168
00178
virtual UBool hasMetaData()
const;
00179
00195
virtual Replaceable *clone()
const;
00196
00197
protected:
00198
00203 Replaceable();
00204
00205
00206
00207
00208
00209
00210
00211
00212
00213
00214
00215
00220
virtual int32_t getLength()
const = 0;
00221
00226
virtual UChar getCharAt(int32_t offset)
const = 0;
00227
00232
virtual UChar32 getChar32At(int32_t offset)
const = 0;
00233 };
00234
00235 inline Replaceable::Replaceable() {}
00236
00237
inline int32_t
00238 Replaceable::length()
const {
00239
return getLength();
00240 }
00241
00242
inline UChar
00243 Replaceable::charAt(int32_t offset)
const {
00244
return getCharAt(offset);
00245 }
00246
00247
inline UChar32
00248 Replaceable::char32At(int32_t offset)
const {
00249
return getChar32At(offset);
00250 }
00251
00252
00253
00254
U_NAMESPACE_END
00255
00256
#endif