ICU 55.1 55.1

- Main Page
- Related Pages
- Modules
- Namespaces
- Data Structures
- Files

- File List
- Globals

All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
normlzr.h
Go to the documentation of this file.
1 /*
2 ********************************************************************
3 * COPYRIGHT:
4 * Copyright (c) 1996-2011, International Business Machines Corporation and
5 * others. All Rights Reserved.
6 ********************************************************************
7 */
8
9 #ifndef NORMLZR_H
10 #define NORMLZR_H
11
12 #include "unicode/utypes.h"
13
19 #if !UCONFIG_NO_NORMALIZATION
20
21 #include "unicode/chariter.h"
22 #include "unicode/normalizer2.h"
23 #include "unicode/unistr.h"
24 #include "unicode/unorm.h"
25 #include "unicode/uobject.h"
26
27 U_NAMESPACE_BEGIN
130 class U_COMMON_API Normalizer : public UObject {
131 public:
137 enum {
138 DONE=0xffff
139 };
140
141 // Constructors
142
153 Normalizer(const UnicodeString& str, UNormalizationMode mode);
154
166 Normalizer(const UChar* str, int32_t length, UNormalizationMode mode);
167
178 Normalizer(const CharacterIterator& iter, UNormalizationMode mode);
179
185 Normalizer(const Normalizer& copy);
186
191 virtual ~Normalizer();
192
193
194 //-------------------------------------------------------------------------
195 // Static utility methods
196 //-------------------------------------------------------------------------
197
212 static void U_EXPORT2 normalize(const UnicodeString& source,
213 UNormalizationMode mode, int32_t options,
214 UnicodeString& result,
215 UErrorCode &status);
216
234 static void U_EXPORT2 compose(const UnicodeString& source,
235 UBool compat, int32_t options,
236 UnicodeString& result,
237 UErrorCode &status);
238
256 static void U_EXPORT2 decompose(const UnicodeString& source,
257 UBool compat, int32_t options,
258 UnicodeString& result,
259 UErrorCode &status);
260
281 static inline UNormalizationCheckResult
282 quickCheck(const UnicodeString &source, UNormalizationMode mode, UErrorCode &status);
283
297 static UNormalizationCheckResult
298 quickCheck(const UnicodeString &source, UNormalizationMode mode, int32_t options, UErrorCode &status);
299
320 static inline UBool
321 isNormalized(const UnicodeString &src, UNormalizationMode mode, UErrorCode &errorCode);
322
338 static UBool
339 isNormalized(const UnicodeString &src, UNormalizationMode mode, int32_t options, UErrorCode &errorCode);
340
370 static UnicodeString &
371 U_EXPORT2 concatenate(const UnicodeString &left, const UnicodeString &right,
372 UnicodeString &result,
373 UNormalizationMode mode, int32_t options,
374 UErrorCode &errorCode);
375
440 static inline int32_t
441 compare(const UnicodeString &s1, const UnicodeString &s2,
442 uint32_t options,
443 UErrorCode &errorCode);
444
445 //-------------------------------------------------------------------------
446 // Iteration API
447 //-------------------------------------------------------------------------
448
457 UChar32 current(void);
458
467 UChar32 first(void);
468
477 UChar32 last(void);
478
493 UChar32 next(void);
494
509 UChar32 previous(void);
510
520 void setIndexOnly(int32_t index);
521
527 void reset(void);
528
543 int32_t getIndex(void) const;
544
553 int32_t startIndex(void) const;
554
565 int32_t endIndex(void) const;
566
575 UBool operator==(const Normalizer& that) const;
576
585 inline UBool operator!=(const Normalizer& that) const;
586
593 Normalizer* clone(void) const;
594
601 int32_t hashCode(void) const;
602
603 //-------------------------------------------------------------------------
604 // Property access methods
605 //-------------------------------------------------------------------------
606
622 void setMode(UNormalizationMode newMode);
623
634 UNormalizationMode getUMode(void) const;
635
652 void setOption(int32_t option,
653 UBool value);
654
665 UBool getOption(int32_t option) const;
666
675 void setText(const UnicodeString& newText,
676 UErrorCode &status);
677
686 void setText(const CharacterIterator& newText,
687 UErrorCode &status);
688
698 void setText(const UChar* newText,
699 int32_t length,
700 UErrorCode &status);
707 void getText(UnicodeString& result);
708
714 static UClassID U_EXPORT2 getStaticClassID();
715
721 virtual UClassID getDynamicClassID() const;
722
723 private:
724 //-------------------------------------------------------------------------
725 // Private functions
726 //-------------------------------------------------------------------------
727
728 Normalizer(); // default constructor not implemented
729 Normalizer &operator=(const Normalizer &that); // assignment operator not implemented
730
731 // Private utility methods for iteration
732 // For documentation, see the source code
733 UBool nextNormalize();
734 UBool previousNormalize();
735
736 void init();
737 void clearBuffer(void);
738
739 //-------------------------------------------------------------------------
740 // Private data
741 //-------------------------------------------------------------------------
742
743 FilteredNormalizer2*fFilteredNorm2; // owned if not NULL
744 const Normalizer2 *fNorm2; // not owned; may be equal to fFilteredNorm2
745 UNormalizationMode fUMode;
746 int32_t fOptions;
747
748 // The input text and our position in it
749 CharacterIterator *text;
750
751 // The normalization buffer is the result of normalization
752 // of the source in [currentIndex..nextIndex[ .
753 int32_t currentIndex, nextIndex;
754
755 // A buffer for holding intermediate results
756 UnicodeString buffer;
757 int32_t bufferPos;
758 };
759
760 //-------------------------------------------------------------------------
761 // Inline implementations
762 //-------------------------------------------------------------------------
763
764 inline UBool
765 Normalizer::operator!= (const Normalizer& other) const
766 { return ! operator==(other); }
767
768 inline UNormalizationCheckResult
769 Normalizer::quickCheck(const UnicodeString& source,
770 UNormalizationMode mode,
771 UErrorCode &status) {
772 return quickCheck(source, mode, 0, status);
773 }
774
775 inline UBool
776 Normalizer::isNormalized(const UnicodeString& source,
777 UNormalizationMode mode,
778 UErrorCode &status) {
779 return isNormalized(source, mode, 0, status);
780 }
781
782 inline int32_t
783 Normalizer::compare(const UnicodeString &s1, const UnicodeString &s2,
784 uint32_t options,
785 UErrorCode &errorCode) {
786 // all argument checking is done in unorm_compare
787 return unorm_compare(s1.getBuffer(), s1.length(),
788 s2.getBuffer(), s2.length(),
789 options,
790 &errorCode);
791 }
792
793 U_NAMESPACE_END
794
795 #endif /* #if !UCONFIG_NO_NORMALIZATION */
796
797 #endif // NORMLZR_H