ICU 65.1  65.1
search.h
Go to the documentation of this file.
1 // © 2016 and later: Unicode, Inc. and others.
2 // License & terms of use: http://www.unicode.org/copyright.html
3 /*
4 **********************************************************************
5 * Copyright (C) 2001-2011 IBM and others. All rights reserved.
6 **********************************************************************
7 * Date Name Description
8 * 03/22/2000 helena Creation.
9 **********************************************************************
10 */
11 
12 #ifndef SEARCH_H
13 #define SEARCH_H
14 
15 #include "unicode/utypes.h"
16 
17 #if U_SHOW_CPLUSPLUS_API
18 
24 #if !UCONFIG_NO_COLLATION && !UCONFIG_NO_BREAK_ITERATION
25 
26 #include "unicode/uobject.h"
27 #include "unicode/unistr.h"
28 #include "unicode/chariter.h"
29 #include "unicode/brkiter.h"
30 #include "unicode/usearch.h"
31 
35 struct USearch;
39 typedef struct USearch USearch;
40 
41 U_NAMESPACE_BEGIN
42 
83 
84 public:
85 
86  // public constructors and destructors -------------------------------
87 
94  SearchIterator(const SearchIterator &other);
95 
100  virtual ~SearchIterator();
101 
102  // public get and set methods ----------------------------------------
103 
117  virtual void setOffset(int32_t position, UErrorCode &status) = 0;
118 
127  virtual int32_t getOffset(void) const = 0;
128 
138  void setAttribute(USearchAttribute attribute,
139  USearchAttributeValue value,
140  UErrorCode &status);
141 
148  USearchAttributeValue getAttribute(USearchAttribute attribute) const;
149 
166  int32_t getMatchedStart(void) const;
167 
182  int32_t getMatchedLength(void) const;
183 
198  void getMatchedText(UnicodeString &result) const;
199 
215  void setBreakIterator(BreakIterator *breakiter, UErrorCode &status);
216 
227  const BreakIterator * getBreakIterator(void) const;
228 
239  virtual void setText(const UnicodeString &text, UErrorCode &status);
240 
256  virtual void setText(CharacterIterator &text, UErrorCode &status);
257 
263  const UnicodeString & getText(void) const;
264 
265  // operator overloading ----------------------------------------------
266 
275  virtual UBool operator==(const SearchIterator &that) const;
276 
283  UBool operator!=(const SearchIterator &that) const;
284 
285  // public methods ----------------------------------------------------
286 
294  virtual SearchIterator* safeClone(void) const = 0;
295 
309  int32_t first(UErrorCode &status);
310 
328  int32_t following(int32_t position, UErrorCode &status);
329 
343  int32_t last(UErrorCode &status);
344 
368  int32_t preceding(int32_t position, UErrorCode &status);
369 
384  int32_t next(UErrorCode &status);
385 
399  int32_t previous(UErrorCode &status);
400 
409  virtual void reset();
410 
411 protected:
412  // protected data members ---------------------------------------------
413 
419 
429 
435 
436  // protected constructors and destructors -----------------------------
437 
443  SearchIterator();
444 
460  SearchIterator(const UnicodeString &text,
461  BreakIterator *breakiter = NULL);
462 
482  SearchIterator(CharacterIterator &text, BreakIterator *breakiter = NULL);
483 
484  // protected methods --------------------------------------------------
485 
492  SearchIterator & operator=(const SearchIterator &that);
493 
513  virtual int32_t handleNext(int32_t position, UErrorCode &status)
514  = 0;
515 
535  virtual int32_t handlePrev(int32_t position, UErrorCode &status)
536  = 0;
537 
548  virtual void setMatchLength(int32_t length);
549 
560  virtual void setMatchStart(int32_t position);
561 
566  void setMatchNotFound();
567 };
568 
570 {
571  return !operator==(that);
572 }
573 U_NAMESPACE_END
574 
575 #endif /* #if !UCONFIG_NO_COLLATION */
576 
577 #endif /* U_SHOW_CPLUSPLUS_API */
578 
579 #endif
580 
C++ API: Break Iterator.
C++ API: Unicode String.
U_EXPORT UBool operator==(const StringPiece &x, const StringPiece &y)
Global operator == for StringPiece.
C API: StringSearch.
USearchAttribute
Definition: usearch.h:163
#define U_I18N_API
Set to export library symbols from inside the i18n library, and to import them from outside...
Definition: utypes.h:301
Abstract class that defines an API for iteration on text objects.
Definition: chariter.h:361
The BreakIterator class implements methods for finding the location of boundaries in text...
Definition: brkiter.h:106
UBool operator!=(const StringPiece &x, const StringPiece &y)
Global operator != for StringPiece.
Definition: stringpiece.h:251
USearchAttributeValue
Definition: usearch.h:205
UBool operator!=(const SearchIterator &that) const
Not-equal operator.
Definition: search.h:569
#define NULL
Define NULL if necessary, to nullptr for C++ and to ((void *)0) for C.
Definition: utypes.h:188
UnicodeString m_text_
Unicode string version of the search text.
Definition: search.h:434
C++ API: Common ICU base class UObject.
UErrorCode
Standard ICU4C error code type, a substitute for exceptions.
Definition: utypes.h:415
Basic definitions for ICU, for both C and C++ APIs.
UnicodeString is a string class that stores Unicode characters directly and provides similar function...
Definition: unistr.h:294
C++ API: Character Iterator.
struct USearch USearch
Definition: search.h:39
USearch * m_search_
C search data struct.
Definition: search.h:418
SearchIterator is an abstract base class that provides methods to search for a pattern within a text ...
Definition: search.h:82
UObject is the common ICU "boilerplate" class.
Definition: uobject.h:223
BreakIterator * m_breakiterator_
Break iterator.
Definition: search.h:428
int8_t UBool
The ICU boolean type.
Definition: umachine.h:261