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