00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef STSEARCH_H
00011 #define STSEARCH_H
00012
00013 #include "unicode/tblcoll.h"
00014 #include "unicode/coleitr.h"
00015 #include "unicode/search.h"
00016
00017 U_NAMESPACE_BEGIN
00018
00123 class U_I18N_API StringSearch : public SearchIterator
00124 {
00125 public:
00126
00127
00128
00150 StringSearch(const UnicodeString &pattern, const UnicodeString &text,
00151 const Locale &locale,
00152 BreakIterator *breakiter,
00153 UErrorCode &status);
00154
00176 StringSearch(const UnicodeString &pattern,
00177 const UnicodeString &text,
00178 RuleBasedCollator *coll,
00179 BreakIterator *breakiter,
00180 UErrorCode &status);
00181
00207 StringSearch(const UnicodeString &pattern, CharacterIterator &text,
00208 const Locale &locale,
00209 BreakIterator *breakiter,
00210 UErrorCode &status);
00211
00237 StringSearch(const UnicodeString &pattern, CharacterIterator &text,
00238 RuleBasedCollator *coll,
00239 BreakIterator *breakiter,
00240 UErrorCode &status);
00241
00248 StringSearch(const StringSearch &that);
00249
00255 virtual ~StringSearch(void);
00256
00257
00258
00265 StringSearch & operator=(const StringSearch &that);
00266
00275 virtual UBool operator==(const SearchIterator &that) const;
00276
00277
00278
00290 virtual void setOffset(int32_t position, UErrorCode &status);
00291
00300 virtual int32_t getOffset(void) const;
00301
00313 virtual void setText(const UnicodeString &text, UErrorCode &status);
00314
00329 virtual void setText(CharacterIterator &text, UErrorCode &status);
00330
00340 RuleBasedCollator * getCollator() const;
00341
00352 void setCollator(RuleBasedCollator *coll, UErrorCode &status);
00353
00363 void setPattern(const UnicodeString &pattern, UErrorCode &status);
00364
00370 const UnicodeString & getPattern() const;
00371
00372
00373
00382 virtual void reset();
00383
00392 virtual SearchIterator * safeClone(void) const;
00393
00394 protected:
00395
00396
00397
00419 virtual int32_t handleNext(int32_t position, UErrorCode &status);
00420
00442 virtual int32_t handlePrev(int32_t position, UErrorCode &status);
00443
00444 private :
00445
00446
00447
00451 RuleBasedCollator m_collator_;
00455 UnicodeString m_pattern_;
00459 UnicodeString m_collation_rules_;
00463 UStringSearch *m_strsrch_;
00464 };
00465
00466 U_NAMESPACE_END
00467
00468 #endif
00469