00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
#ifndef SEARCH_H
00011
#define SEARCH_H
00012
00013
#include "unicode/utypes.h"
00014
00015
#if !UCONFIG_NO_COLLATION
00016
00017
#include "unicode/uobject.h"
00018
#include "unicode/unistr.h"
00019
#include "unicode/chariter.h"
00020
#include "unicode/brkiter.h"
00021
#include "unicode/usearch.h"
00022
00026
struct USearch;
00030
typedef struct USearch USearch;
00031
00032 U_NAMESPACE_BEGIN
00033
00073
class U_I18N_API SearchIterator :
public UObject {
00074
00075 public:
00076
00077
00078
00085 SearchIterator(
const SearchIterator &other);
00086
00091
virtual ~SearchIterator();
00092
00093
00094
00108
virtual void setOffset(
int32_t position,
UErrorCode &status) = 0;
00109
00118
virtual int32_t getOffset(
void) const = 0;
00119
00129
void setAttribute(USearchAttribute attribute,
00130 USearchAttributeValue value,
00131 UErrorCode &status);
00132
00139 USearchAttributeValue getAttribute(USearchAttribute attribute) const;
00140
00157 int32_t getMatchedStart(
void) const;
00158
00173 int32_t getMatchedLength(
void) const;
00174
00189
void getMatchedText(
UnicodeString &result) const;
00190
00206
void setBreakIterator(
BreakIterator *breakiter, UErrorCode &status);
00207
00218 const
BreakIterator * getBreakIterator(
void) const;
00219
00230 virtual
void setText(const
UnicodeString &text, UErrorCode &status);
00231
00247 virtual
void setText(
CharacterIterator &text, UErrorCode &status);
00248
00254 const
UnicodeString & getText(
void) const;
00255
00256
00257
00266 virtual
UBool operator==(const SearchIterator &that) const;
00267
00274 UBool operator!=(const SearchIterator &that) const;
00275
00276
00277
00285 virtual SearchIterator* safeClone(
void) const = 0;
00286
00300 int32_t first(UErrorCode &status);
00301
00319 int32_t following(int32_t position, UErrorCode &status);
00320
00334 int32_t last(UErrorCode &status);
00335
00353 int32_t preceding(int32_t position, UErrorCode &status);
00354
00369 int32_t next(UErrorCode &status);
00370
00384 int32_t previous(UErrorCode &status);
00385
00394 virtual
void reset();
00395
00396 protected:
00397
00398
00403 USearch *m_search_;
00404
00413
BreakIterator *m_breakiterator_;
00414
00419
UnicodeString m_text_;
00420
00421
00422
00428 SearchIterator();
00429
00445 SearchIterator(const
UnicodeString &text,
00446
BreakIterator *breakiter = NULL);
00447
00467 SearchIterator(
CharacterIterator &text,
BreakIterator *breakiter = NULL);
00468
00469
00470
00477 SearchIterator & operator=(const SearchIterator &that);
00478
00498 virtual int32_t handleNext(int32_t position, UErrorCode &status)
00499 = 0;
00500
00520 virtual int32_t handlePrev(int32_t position, UErrorCode &status)
00521 = 0;
00522
00533 virtual
void setMatchLength(int32_t
length);
00534
00545 virtual
void setMatchStart(int32_t position);
00546
00551
void setMatchNotFound();
00552 };
00553
00554 inline UBool SearchIterator::operator!=(const SearchIterator &that)
const
00555
{
00556
return !operator==(that);
00557 }
00558
U_NAMESPACE_END
00559
00560
#endif
00561
00562
#endif
00563