ICU 4.8.1.1  4.8.1.1
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
normalizer2.h
Go to the documentation of this file.
1 /*
2 *******************************************************************************
3 *
4 * Copyright (C) 2009-2011, International Business Machines
5 * Corporation and others. All Rights Reserved.
6 *
7 *******************************************************************************
8 * file name: normalizer2.h
9 * encoding: US-ASCII
10 * tab size: 8 (not used)
11 * indentation:4
12 *
13 * created on: 2009nov22
14 * created by: Markus W. Scherer
15 */
16 
17 #ifndef __NORMALIZER2_H__
18 #define __NORMALIZER2_H__
19 
25 #include "unicode/utypes.h"
26 
27 #if !UCONFIG_NO_NORMALIZATION
28 
29 #include "unicode/uniset.h"
30 #include "unicode/unistr.h"
31 #include "unicode/unorm2.h"
32 
34 
79 public:
101  static const Normalizer2 *
102  getInstance(const char *packageName,
103  const char *name,
104  UNormalization2Mode mode,
105  UErrorCode &errorCode);
106 
118  normalize(const UnicodeString &src, UErrorCode &errorCode) const {
119  UnicodeString result;
120  normalize(src, result, errorCode);
121  return result;
122  }
136  virtual UnicodeString &
137  normalize(const UnicodeString &src,
138  UnicodeString &dest,
139  UErrorCode &errorCode) const = 0;
154  virtual UnicodeString &
155  normalizeSecondAndAppend(UnicodeString &first,
156  const UnicodeString &second,
157  UErrorCode &errorCode) const = 0;
172  virtual UnicodeString &
173  append(UnicodeString &first,
174  const UnicodeString &second,
175  UErrorCode &errorCode) const = 0;
176 
190  virtual UBool
191  getDecomposition(UChar32 c, UnicodeString &decomposition) const = 0;
192 
207  virtual UBool
208  isNormalized(const UnicodeString &s, UErrorCode &errorCode) const = 0;
209 
226  quickCheck(const UnicodeString &s, UErrorCode &errorCode) const = 0;
227 
250  virtual int32_t
251  spanQuickCheckYes(const UnicodeString &s, UErrorCode &errorCode) const = 0;
252 
266  virtual UBool hasBoundaryBefore(UChar32 c) const = 0;
267 
282  virtual UBool hasBoundaryAfter(UChar32 c) const = 0;
283 
297  virtual UBool isInert(UChar32 c) const = 0;
298 
299 private:
300  // No ICU "poor man's RTTI" for this class nor its subclasses.
301  virtual UClassID getDynamicClassID() const;
302 };
303 
316 public:
327  FilteredNormalizer2(const Normalizer2 &n2, const UnicodeSet &filterSet) :
328  norm2(n2), set(filterSet) {}
329 
343  virtual UnicodeString &
344  normalize(const UnicodeString &src,
345  UnicodeString &dest,
346  UErrorCode &errorCode) const;
361  virtual UnicodeString &
363  const UnicodeString &second,
364  UErrorCode &errorCode) const;
379  virtual UnicodeString &
380  append(UnicodeString &first,
381  const UnicodeString &second,
382  UErrorCode &errorCode) const;
383 
394  virtual UBool
395  getDecomposition(UChar32 c, UnicodeString &decomposition) const;
396 
408  virtual UBool
409  isNormalized(const UnicodeString &s, UErrorCode &errorCode) const;
422  quickCheck(const UnicodeString &s, UErrorCode &errorCode) const;
434  virtual int32_t
435  spanQuickCheckYes(const UnicodeString &s, UErrorCode &errorCode) const;
436 
445  virtual UBool hasBoundaryBefore(UChar32 c) const;
446 
455  virtual UBool hasBoundaryAfter(UChar32 c) const;
456 
464  virtual UBool isInert(UChar32 c) const;
465 private:
466  UnicodeString &
467  normalize(const UnicodeString &src,
468  UnicodeString &dest,
469  USetSpanCondition spanCondition,
470  UErrorCode &errorCode) const;
471 
472  UnicodeString &
474  const UnicodeString &second,
475  UBool doNormalize,
476  UErrorCode &errorCode) const;
477 
478  const Normalizer2 &norm2;
479  const UnicodeSet &set;
480 };
481 
483 
484 #endif // !UCONFIG_NO_NORMALIZATION
485 #endif // __NORMALIZER2_H__