diff --git a/icu4c/source/samples/search/srchiter.cpp b/icu4c/source/samples/search/srchiter.cpp
deleted file mode 100644
index 2d722f19b0..0000000000
--- a/icu4c/source/samples/search/srchiter.cpp
+++ /dev/null
@@ -1,281 +0,0 @@
-/*
-**********************************************************************
-* Copyright (C) 1999-2000 IBM and others. All rights reserved.
-**********************************************************************
-* Date Name Description
-* 03/22/2000 helena Creation.
-**********************************************************************
-*/
-
-#include "unicode/brkiter.h"
-#include "unicode/schriter.h"
-#include "srchiter.h"
-
-
-int32_t const SearchIterator::DONE = -1;
-int32_t const SearchIterator::BEFORE = -2;
-
-SearchIterator::SearchIterator(void) :
- index(0),
- length(0),
- target(0),
- backward(FALSE), /* going forward */
- breaker(NULL),
- overlap(TRUE)
-{
- UErrorCode status = U_ZERO_ERROR;
- this->breaker = BreakIterator::createCharacterInstance(Locale::getDefault(), status);
- if (U_FAILURE(status)) return;
-}
-
-SearchIterator::SearchIterator(CharacterIterator* target,
- BreakIterator* breaker) :
- index(0),
- length(0),
- target(0),
- backward(FALSE), /* going forward */
- breaker(NULL),
- overlap(TRUE)
-{
- this->target = target;
-
- this->breaker = breaker;
- this->breaker->adoptText(this->target);
-
- index = this->target->startIndex();
- length = 0;
-}
-
-SearchIterator::SearchIterator(const SearchIterator& other) :
- length(other.length),
- target(0),
- backward(other.backward), /* going forward */
- breaker(NULL),
- overlap(other.overlap)
-{
- index = other.target->startIndex();
- this->target = other.target->clone();
-
- this->breaker = ((BreakIterator&)other.breaker).clone();
- this->breaker->adoptText(this->target);
-}
-
-SearchIterator::~SearchIterator()
-{
- // deletion of breaker will delete target
- if (breaker != NULL) {
- delete breaker;
- breaker = 0;
- }
-}
-
-UBool SearchIterator::operator == (const SearchIterator& that) const
-{
- if (this == &that) return TRUE;
- if (*that.breaker != *breaker) return FALSE;
- else if (*that.target != *target) return FALSE;
- else if (that.backward != backward) return FALSE;
- else if (that.index != index) return FALSE;
- else if (that.length != length) return FALSE;
- else if (that.overlap != overlap) return FALSE;
- else return TRUE;
-}
-
-int32_t SearchIterator::first(void)
-{
- setIndex(SearchIterator::BEFORE);
- return next();
-}
-
-int32_t SearchIterator::following(int32_t pos)
-{
- setIndex(pos);
- return next();
-}
-
-int32_t SearchIterator::last(void)
-{
- setIndex(SearchIterator::DONE);
- return previous();
-}
-
-int32_t SearchIterator::preceding(int32_t pos)
-{
- setIndex(pos);
- return previous();
-}
-
-int32_t SearchIterator::next(void)
-{
- if (index == SearchIterator::BEFORE){
- // Starting at the beginning of the text
- index = target->startIndex();
- } else if (index == SearchIterator::DONE) {
- return SearchIterator::DONE;
- } else if (length > 0) {
- // Finding the next match after a previous one
- index += overlap ? 1 : length;
- }
- index -= 1;
- backward = FALSE;
-
- do {
- UErrorCode status = U_ZERO_ERROR;
- length = 0;
- index = handleNext(index + 1, status);
- if (U_FAILURE(status))
- {
- return SearchIterator::DONE;
- }
- } while (index != SearchIterator::DONE && !isBreakUnit(index, index+length));
-
- return index;
-}
-
-int32_t SearchIterator::previous(void)
-{
- if (index == SearchIterator::DONE) {
- index = target->endIndex();
- } else if (index == SearchIterator::BEFORE) {
- return SearchIterator::DONE;
- } else if (length > 0) {
- // Finding the previous match before a following one
- index = overlap ? index + length - 1 : index;
- }
- index += 1;
- backward = TRUE;
-
- do {
- UErrorCode status = U_ZERO_ERROR;
- length = 0;
- index = handlePrev(index - 1, status);
- if (U_FAILURE(status))
- {
- return SearchIterator::DONE;
- }
- } while (index != SearchIterator::DONE && !isBreakUnit(index, index+length));
-
- if (index == SearchIterator::DONE) {
- index = SearchIterator::BEFORE;
- }
- return getIndex();
-}
-
-
-int32_t SearchIterator::getIndex() const
-{
- return index == SearchIterator::BEFORE ? SearchIterator::DONE : index;
-}
-
-void SearchIterator::setOverlapping(UBool allowOverlap)
-{
- overlap = allowOverlap;
-}
-
-UBool SearchIterator::isOverlapping(void) const
-{
- return overlap;
-}
-
-int32_t SearchIterator::getMatchLength(void) const
-{
- return length;
-}
-
-void SearchIterator::reset(void)
-{
- length = 0;
- if (backward == FALSE) {
- index = 0;
- target->setToStart();
- breaker->first();
- } else {
- index = SearchIterator::DONE;
- target->setToEnd();
- breaker->last();
- }
- overlap = TRUE;
-}
-
-void SearchIterator::setBreakIterator(const BreakIterator* iterator)
-{
- CharacterIterator *buffer = target->clone();
- delete breaker;
- breaker = iterator->clone();
- breaker->adoptText(buffer);
-}
-
-const BreakIterator& SearchIterator::getBreakIterator(void) const
-{
- return *breaker;
-}
-
-void SearchIterator::setTarget(const UnicodeString& newText)
-{
- if (target != NULL && target->getDynamicClassID()
- == StringCharacterIterator::getStaticClassID()) {
- ((StringCharacterIterator*)target)->setText(newText);
- }
- else {
- delete target;
- target = new StringCharacterIterator(newText);
- target->first();
- breaker->adoptText(target);
- }
-}
-
-void SearchIterator::adoptTarget(CharacterIterator* iterator) {
- target = iterator;
- breaker->adoptText(target);
- setIndex(SearchIterator::BEFORE);
-}
-
-const CharacterIterator& SearchIterator::getTarget(void) const
-{
- SearchIterator* nonConstThis = (SearchIterator*)this;
-
- // The iterator is initialized pointing to no text at all, so if this
- // function is called while we're in that state, we have to fudge an
- // an iterator to return.
- if (nonConstThis->target == NULL)
- nonConstThis->target = new StringCharacterIterator("");
- return *nonConstThis->target;
-}
-
-void SearchIterator::getMatchedText(UnicodeString& result)
-{
- result.remove();
- if (length > 0) {
- int i = 0;
- for (UChar c = target->setIndex(index); i < length; c = target->next(), i++)
- {
- result += c;
- }
- }
-}
-
-
-void SearchIterator::setMatchLength(int32_t length)
-{
- this->length = length;
-}
-
-void SearchIterator::setIndex(int32_t pos) {
- index = pos;
- length = 0;
-}
-
-UBool SearchIterator::isBreakUnit(int32_t start,
- int32_t end)
-{
- if (breaker == NULL) {
- return TRUE;
- }
- UBool startBound = breaker->isBoundary(start);
- UBool endBound = (end == target->endIndex()) || breaker->isBoundary(end);
-
- return startBound && endBound;
-}
-
-
-
diff --git a/icu4c/source/samples/search/srchiter.h b/icu4c/source/samples/search/srchiter.h
deleted file mode 100644
index 489fe22d9d..0000000000
--- a/icu4c/source/samples/search/srchiter.h
+++ /dev/null
@@ -1,387 +0,0 @@
-/*
-**********************************************************************
-* Copyright (C) 1999-2000 IBM and others. All rights reserved.
-**********************************************************************
-* Date Name Description
-* 03/22/2000 helena Creation.
-**********************************************************************
-*/
-#ifndef SRCHITER_H
-#define SRCHITER_H
-
-#include "unicode/utypes.h"
-#include "unicode/unistr.h"
-#include "unicode/chariter.h"
-#include "unicode/brkiter.h"
-
-/**
- * SearchIterator
is an abstract base class that provides methods
- * to search for a pattern within a text string. Instances of
- * SearchIterator
maintain a current position and scan over
- * the target text, returning the indices the pattern is matched
- * and the length of each match.
- *
- * SearchIterator
is an abstract base class that defines a
- * protocol for text searching. Subclasses provide concrete implementations of
- * various search algorithms. For example, {@link StringSearch}
- * implements language-sensitive pattern matching based on the comparison rules
- * defined in a {@link RuleBasedCollator} object.
- *
- * Internally, SearchIterator
scans text using a
- * {@link CharacterIterator}, and is thus able to scan text held
- * by any object implementing that protocol. A StringCharacterIterator
- * is used to scan String
objects passed to setText
.
- *
- * SearchIterator
provides an API that is similar to that of
- * other text iteration classes such as BreakIterator
. Using this
- * class, it is easy to scan through text looking for all occurances of a
- * given pattern. The following example uses a StringSearch
object to
- * find all instances of "fox" in the target string. Any other subclass of
- * SearchIterator
can be used in an identical manner.
- *
- * UnicodeString target("The quick brown fox jumped over the lazy fox");
- * UnicodeString pattern("fox");
- *
- * SearchIterator *iter = new StringSearch(pattern, target);
- *
- * for (int pos = iter->first(); pos != SearchIterator::DONE; pos = iter->next()) {
- * printf("Found match at %d pos, length is %d\n", pos, iter.getMatchLength());
- * }
- *
- *
- * @see StringSearch
- */
-
-class SearchIterator {
-public:
- /**
- * DONE is returned by previous() and next() after all valid
- * matches have been returned, and by first() and last() if
- * there are no matches at all.
- */
- static const int32_t DONE;
-
- //=======================================================================
- // boilerplate
- //=======================================================================
-
- /**
- * Destructor
- */
- virtual ~SearchIterator();
-
- /** copy constructor */
- SearchIterator(const SearchIterator& other);
-
- /**
- * Equality operator. Returns TRUE if both BreakIterators are of the
- * same class, have the same behavior, and iterate over the same text.
- */
- virtual UBool operator==(const SearchIterator& that) const;
-
- /**
- * Not-equal operator. If operator== returns TRUE, this returns FALSE,
- * and vice versa.
- */
- UBool operator!=(const SearchIterator& that) const;
-
- /**
- * Returns a newly-constructed RuleBasedBreakIterator with the same
- * behavior, and iterating over the same text, as this one.
- */
- virtual SearchIterator* clone(void) const = 0;
-
- /**
- * Return a polymorphic class ID for this object. Different subclasses
- * will return distinct unequal values.
- * @stable
- */
- virtual UClassID getDynamicClassID(void) const = 0;
-
- /**
- * Return the first index at which the target text matches the search
- * pattern. The iterator is adjusted so that its current index
- * (as returned by {@link #getIndex}) is the match posisition if one was found
- * and DONE
if one was not.
- *
- * @return The character index of the first match, or DONE
if there
- * are no matches.
- */
- int32_t first(void);
-
- /**
- * Return the first index greater than pos at which the target
- * text matches the search pattern. The iterator is adjusted so that its current index
- * (as returned by {@link #getIndex}) is the match posisition if one was found
- * and DONE
if one was not.
- *
- * @return The character index of the first match following pos
,
- * or DONE if there are no matches.
- */
- int32_t following(int32_t pos);
-
- /**
- * Return the last index in the target text at which it matches
- * the search pattern and adjusts the iteration to point to that position.
- *
- * @return The index of the first match, or DONE if there
- * are no matches.
- */
- int32_t last(void);
-
- /**
- * Return the first index less than pos
at which the target
- * text matches the search pattern. The iterator is adjusted so that its current index
- * (as returned by {@link #getIndex}) is the match posisition if one was found
- * and DONE if one was not.
- *
- * @return The character index of the first match preceding pos
,
- * or DONE
if there are no matches.
- */
- int32_t preceding(int32_t pos);
-
- /**
- * Return the index of the next point at which the text matches the
- * search pattern, starting from the current position
- *
- * @return The index of the next match after the current position,
- * or DONE
if there are no more matches.
- *
- * @see #first
- */
- int32_t next(void);
-
- /**
- * Return the index of the previous point at which the text matches
- * the search pattern, starting at the current position
- *
- * @return The index of the previous match before the current position,
- * or DONE
if there are no more matches.
- */
- int32_t previous(void);
-
- /**
- * Return the current index in the text being searched.
- * If the iteration has gone past the end of the text
- * (or past the beginning for a backwards search),
- * {@link #DONE} is returned.
- */
- int32_t getIndex(void) const;
- /**
- * Determines whether overlapping matches are returned. If this
- * property is true
, matches that begin within the
- * boundry of the previous match are considered valid and will
- * be returned. For example, when searching for "abab" in the
- * target text "ababab", both offsets 0 and 2 will be returned
- * as valid matches if this property is true
.
- *
- * The default setting of this property is true
- */
- void setOverlapping(UBool allowOverlap);
-
- /**
- * Determines whether overlapping matches are returned.
- *
- * @see #setOverlapping
- */
- UBool isOverlapping(void) const;
-
- /**
- * Returns the length of text in the target which matches the search
- * pattern. This call returns a valid result only after a successful
- * call to {@link #first}, {@link #next}, {@link #previous}, or {@link #last}.
- * Just after construction, or after a searching method returns
- * DONE, this method will return 0.
- *
- * @return The length of the match in the target text, or 0 if there
- * is no match currently.
- */
- int32_t getMatchLength(void) const;
-
- /**
- * Set the BreakIterator that will be used to restrict the points
- * at which matches are detected.
- *
- * @param breaker A {@link java.text.BreakIterator BreakIterator}
- * that will be used to restrict the points
- * at which matches are detected. If a match is found, but the match's start
- * or end index is not a boundary as determined by
- * the BreakIterator, the match will be rejected and
- * another will be searched for.
- *
- * If this parameter is null, no break
- * detection is attempted.
- *
- * @see #getBreakIterator
- */
- /* HSYS : Check, aliasing or owning */
- void setBreakIterator(const BreakIterator* iterator);
-
- /**
- * Returns the BreakIterator that is used to restrict the points
- * at which matches are detected. This will be the same object
- * that was passed to the constructor or to setBreakIterator
.
- * Note that null is a legal value; it means that break
- * detection should not be attempted.
- *
- * @see #setBreakIterator
- */
- const BreakIterator& getBreakIterator(void) const;
-
- /**
- * Set the target text which should be searched and resets the
- * iterator's position to point before the start of the target text.
- * This method is useful if you want to re-use an iterator to
- * search for the same pattern within a different body of text.
- *
- * @see #getTarget
- */
- virtual void setTarget(const UnicodeString& newText);
-
- /**
- * Set the target text which should be searched and resets the
- * iterator's position to point before the start of the target text.
- * This method is useful if you want to re-use an iterator to
- * search for the same pattern within a different body of text.
- *
- * @see #getTarget
- */
- virtual void adoptTarget(CharacterIterator* iterator);
- /**
- * Return the target text which is being searched
- *
- * @see #setTarget
- */
- const CharacterIterator& getTarget(void) const;
-
- /** Reset the iteration.
- */
- virtual void reset(void);
-
- /**
- * Returns the text that was matched by the most recent call to
- * {@link #first}, {@link #next}, {@link #previous}, or {@link #last}.
- * If the iterator is not pointing at a valid match (e.g. just after
- * construction or after DONE has been returned, returns
- * an empty string.
- */
- void getMatchedText(UnicodeString& result);
-
- //-------------------------------------------------------------------
- // Protected interface for subclasses
- //-------------------------------------------------------------------
-
-protected:
- SearchIterator();
-
- /**
- * Constructor for use by subclasses
- *
- * @param target The target text to be searched. This is for internal - * use by this class. Subclasses need to maintain their - * own reference to or iterator over the target text - * for use by their {@link #handleNext handleNext} and - * {@link #handlePrev handlePrev} methods. The target will - * be adopted and owned by the SearchIterator object. - * - * @param breaker A {@link BreakIterator} that is used to restrict the points - * at which matches are detected. If handleNext or - * handlePrev finds a match, but the match's start - * or end index is not a boundary as determined by - * the BreakIterator, the match is rejected and - * handleNext or handlePrev is called again. - * If this parameter is null, no break - * detection is attempted. - * - */ - SearchIterator(CharacterIterator* target, - BreakIterator* breaker); -/** - * Abstract method which subclasses override to provide the mechanism - * for finding the next match in the target text. This allows different - * subclasses to provide different search algorithms. - *
- * If a match is found, the implementation should return the index at - * which the match starts and should call {@link #setMatchLength setMatchLength} - * with the number of characters in the target - * text that make up the match. If no match is found, the method - * should return DONE and should not call setMatchLength. - *
- * @param startAt The index in the target text at which the search - * should start. - * - * @see #setMatchLength - */ - virtual int32_t handleNext(int32_t startAt, UErrorCode& status) = 0; - - /** - * Abstract method which subclasses override to provide the mechanism - * for finding the previous match in the target text. This allows different - * subclasses to provide different search algorithms. - *
- * If a match is found, the implementation should return the index at - * which the match starts and should call {@link #setMatchLength setMatchLength} - * with the number of characters in the target - * text that make up the match. If no match is found, the method - * should return DONE and should not call setMatchLength. - *
- * @param startAt The index in the target text at which the search
- * should start.
- *
- * @see #setMatchLength
- */
- virtual int32_t handlePrev(int32_t startAt, UErrorCode& status) = 0;
-
- /**
- * Sets the length of the currently matched string in the target text.
- * Subclasses' handleNext
and handlePrev
- * methods should call this when they find a match in the target text.
- */
- void setMatchLength(int32_t length);
-
- //-------------------------------------------------------------------
- // Privates
- //
-private:
- /**
- * Class ID
- */
- static char fgClassID;
-private:
- /**
- * Private value indicating that the iterator is pointing
- * before the beginning of the target text.
- */
- static const int32_t BEFORE;
-
- /**
- * Internal method used by preceding and following. Sets the index
- * to point to the given position, and clears any state that's
- * affected.
- */
- void setIndex(int32_t pos);
-
- /**
- * Determine whether the target text bounded by start
and
- * end
is one or more whole units of text as determined by
- * the current BreakIterator
.
- */
- UBool isBreakUnit(int32_t start, int32_t end);
-
- //-------------------------------------------------------------------------
- // Private data...
- //-------------------------------------------------------------------------
- int32_t index; // Current position in the target text
- int32_t length; // Length of matched text, or 0
- UBool overlap; // Return overlapping matches?
- CharacterIterator* target; // Target text to be searched
- BreakIterator* breaker; // Break iterator to constrain matches
- UBool backward;
-};
-
-inline UBool SearchIterator::operator!=(const SearchIterator& that) const
-{
- return !operator==(that);
-}
-#endif
-