00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef STSEARCH_H
00011 #define STSEARCH_H
00012
00013 #include "unicode/utypes.h"
00014
00015 #if !UCONFIG_NO_COLLATION
00016
00017 #include "unicode/tblcoll.h"
00018 #include "unicode/coleitr.h"
00019 #include "unicode/search.h"
00020
00021 U_NAMESPACE_BEGIN
00022
00130 class U_I18N_API StringSearch : public SearchIterator
00131 {
00132 public:
00133
00134
00135
00157 StringSearch(const UnicodeString &pattern, const UnicodeString &text,
00158 const Locale &locale,
00159 BreakIterator *breakiter,
00160 UErrorCode &status);
00161
00183 StringSearch(const UnicodeString &pattern,
00184 const UnicodeString &text,
00185 RuleBasedCollator *coll,
00186 BreakIterator *breakiter,
00187 UErrorCode &status);
00188
00214 StringSearch(const UnicodeString &pattern, CharacterIterator &text,
00215 const Locale &locale,
00216 BreakIterator *breakiter,
00217 UErrorCode &status);
00218
00244 StringSearch(const UnicodeString &pattern, CharacterIterator &text,
00245 RuleBasedCollator *coll,
00246 BreakIterator *breakiter,
00247 UErrorCode &status);
00248
00255 StringSearch(const StringSearch &that);
00256
00262 virtual ~StringSearch(void);
00263
00264
00265
00272 StringSearch & operator=(const StringSearch &that);
00273
00282 virtual UBool operator==(const SearchIterator &that) const;
00283
00284
00285
00299 virtual void setOffset(int32_t position, UErrorCode &status);
00300
00309 virtual int32_t getOffset(void) const;
00310
00322 virtual void setText(const UnicodeString &text, UErrorCode &status);
00323
00338 virtual void setText(CharacterIterator &text, UErrorCode &status);
00339
00349 RuleBasedCollator * getCollator() const;
00350
00361 void setCollator(RuleBasedCollator *coll, UErrorCode &status);
00362
00372 void setPattern(const UnicodeString &pattern, UErrorCode &status);
00373
00379 const UnicodeString & getPattern() const;
00380
00381
00382
00391 virtual void reset();
00392
00401 virtual SearchIterator * safeClone(void) const;
00402
00408 virtual inline UClassID getDynamicClassID() const;
00409
00415 static inline UClassID getStaticClassID();
00416
00417 protected:
00418
00419
00420
00443 virtual int32_t handleNext(int32_t position, UErrorCode &status);
00444
00467 virtual int32_t handlePrev(int32_t position, UErrorCode &status);
00468
00469 private :
00470 StringSearch();
00471
00472
00473
00478 RuleBasedCollator m_collator_;
00483 UnicodeString m_pattern_;
00488 UnicodeString m_collation_rules_;
00493 UStringSearch *m_strsrch_;
00494
00499 static const char fgClassID;
00500 };
00501
00502 inline UClassID
00503 StringSearch::getStaticClassID()
00504 { return (UClassID)&fgClassID; }
00505
00506 inline UClassID
00507 StringSearch::getDynamicClassID() const
00508 { return StringSearch::getStaticClassID(); }
00509
00510 U_NAMESPACE_END
00511
00512 #endif
00513
00514 #endif
00515