Return-Path: X-Original-To: apmail-couchdb-commits-archive@www.apache.org Delivered-To: apmail-couchdb-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 12ED610186 for ; Thu, 13 Feb 2014 18:14:20 +0000 (UTC) Received: (qmail 76847 invoked by uid 500); 13 Feb 2014 18:13:12 -0000 Delivered-To: apmail-couchdb-commits-archive@couchdb.apache.org Received: (qmail 75818 invoked by uid 500); 13 Feb 2014 18:12:26 -0000 Mailing-List: contact commits-help@couchdb.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@couchdb.apache.org Delivered-To: mailing list commits@couchdb.apache.org Received: (qmail 74844 invoked by uid 99); 13 Feb 2014 18:12:02 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 13 Feb 2014 18:12:02 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id C084F8A9262; Thu, 13 Feb 2014 18:12:00 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: benoitc@apache.org To: commits@couchdb.apache.org Date: Thu, 13 Feb 2014 18:12:26 -0000 Message-Id: In-Reply-To: <113237e1f9904b5cb0e6f0a915a4b1ba@git.apache.org> References: <113237e1f9904b5cb0e6f0a915a4b1ba@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [28/57] [abbrv] remove couch_collate http://git-wip-us.apache.org/repos/asf/couchdb/blob/81332b78/apps/couch_collate/platform/osx/icu/unicode/schriter.h ---------------------------------------------------------------------- diff --git a/apps/couch_collate/platform/osx/icu/unicode/schriter.h b/apps/couch_collate/platform/osx/icu/unicode/schriter.h deleted file mode 100644 index d0b5e22..0000000 --- a/apps/couch_collate/platform/osx/icu/unicode/schriter.h +++ /dev/null @@ -1,187 +0,0 @@ -/* -****************************************************************************** -* -* Copyright (C) 1998-2005, International Business Machines -* Corporation and others. All Rights Reserved. -* -****************************************************************************** -* -* File schriter.h -* -* Modification History: -* -* Date Name Description -* 05/05/99 stephen Cleaned up. -****************************************************************************** -*/ - -#ifndef SCHRITER_H -#define SCHRITER_H - -#include "unicode/utypes.h" -#include "unicode/chariter.h" -#include "unicode/uchriter.h" - -/** - * \file - * \brief C++ API: String Character Iterator - */ - -U_NAMESPACE_BEGIN -/** - * A concrete subclass of CharacterIterator that iterates over the - * characters (code units or code points) in a UnicodeString. - * It's possible not only to create an - * iterator that iterates over an entire UnicodeString, but also to - * create one that iterates over only a subrange of a UnicodeString - * (iterators over different subranges of the same UnicodeString don't - * compare equal). - * @see CharacterIterator - * @see ForwardCharacterIterator - * @stable ICU 2.0 - */ -class U_COMMON_API StringCharacterIterator : public UCharCharacterIterator { -public: - /** - * Create an iterator over the UnicodeString referred to by "textStr". - * The UnicodeString object is copied. - * The iteration range is the whole string, and the starting position is 0. - * @param textStr The unicode string used to create an iterator - * @stable ICU 2.0 - */ - StringCharacterIterator(const UnicodeString& textStr); - - /** - * Create an iterator over the UnicodeString referred to by "textStr". - * The iteration range is the whole string, and the starting - * position is specified by "textPos". If "textPos" is outside the valid - * iteration range, the behavior of this object is undefined. - * @param textStr The unicode string used to create an iterator - * @param textPos The starting position of the iteration - * @stable ICU 2.0 - */ - StringCharacterIterator(const UnicodeString& textStr, - int32_t textPos); - - /** - * Create an iterator over the UnicodeString referred to by "textStr". - * The UnicodeString object is copied. - * The iteration range begins with the code unit specified by - * "textBegin" and ends with the code unit BEFORE the code unit specfied - * by "textEnd". The starting position is specified by "textPos". If - * "textBegin" and "textEnd" don't form a valid range on "text" (i.e., - * textBegin >= textEnd or either is negative or greater than text.size()), - * or "textPos" is outside the range defined by "textBegin" and "textEnd", - * the behavior of this iterator is undefined. - * @param textStr The unicode string used to create the StringCharacterIterator - * @param textBegin The begin position of the iteration range - * @param textEnd The end position of the iteration range - * @param textPos The starting position of the iteration - * @stable ICU 2.0 - */ - StringCharacterIterator(const UnicodeString& textStr, - int32_t textBegin, - int32_t textEnd, - int32_t textPos); - - /** - * Copy constructor. The new iterator iterates over the same range - * of the same string as "that", and its initial position is the - * same as "that"'s current position. - * The UnicodeString object in "that" is copied. - * @param that The StringCharacterIterator to be copied - * @stable ICU 2.0 - */ - StringCharacterIterator(const StringCharacterIterator& that); - - /** - * Destructor. - * @stable ICU 2.0 - */ - virtual ~StringCharacterIterator(); - - /** - * Assignment operator. *this is altered to iterate over the same - * range of the same string as "that", and refers to the same - * character within that string as "that" does. - * @param that The object to be copied. - * @return the newly created object. - * @stable ICU 2.0 - */ - StringCharacterIterator& - operator=(const StringCharacterIterator& that); - - /** - * Returns true if the iterators iterate over the same range of the - * same string and are pointing at the same character. - * @param that The ForwardCharacterIterator to be compared for equality - * @return true if the iterators iterate over the same range of the - * same string and are pointing at the same character. - * @stable ICU 2.0 - */ - virtual UBool operator==(const ForwardCharacterIterator& that) const; - - /** - * Returns a new StringCharacterIterator referring to the same - * character in the same range of the same string as this one. The - * caller must delete the new iterator. - * @return the newly cloned object. - * @stable ICU 2.0 - */ - virtual CharacterIterator* clone(void) const; - - /** - * Sets the iterator to iterate over the provided string. - * @param newText The string to be iterated over - * @stable ICU 2.0 - */ - void setText(const UnicodeString& newText); - - /** - * Copies the UnicodeString under iteration into the UnicodeString - * referred to by "result". Even if this iterator iterates across - * only a part of this string, the whole string is copied. - * @param result Receives a copy of the text under iteration. - * @stable ICU 2.0 - */ - virtual void getText(UnicodeString& result); - - /** - * Return a class ID for this object (not really public) - * @return a class ID for this object. - * @stable ICU 2.0 - */ - virtual UClassID getDynamicClassID(void) const; - - /** - * Return a class ID for this class (not really public) - * @return a class ID for this class - * @stable ICU 2.0 - */ - static UClassID U_EXPORT2 getStaticClassID(void); - -protected: - /** - * Default constructor, iteration over empty string. - * @stable ICU 2.0 - */ - StringCharacterIterator(); - - /** - * Sets the iterator to iterate over the provided string. - * @param newText The string to be iterated over - * @param newTextLength The length of the String - * @stable ICU 2.0 - */ - void setText(const UChar* newText, int32_t newTextLength); - - /** - * Copy of the iterated string object. - * @stable ICU 2.0 - */ - UnicodeString text; - -}; - -U_NAMESPACE_END -#endif http://git-wip-us.apache.org/repos/asf/couchdb/blob/81332b78/apps/couch_collate/platform/osx/icu/unicode/search.h ---------------------------------------------------------------------- diff --git a/apps/couch_collate/platform/osx/icu/unicode/search.h b/apps/couch_collate/platform/osx/icu/unicode/search.h deleted file mode 100644 index 8b82906..0000000 --- a/apps/couch_collate/platform/osx/icu/unicode/search.h +++ /dev/null @@ -1,569 +0,0 @@ -/* -********************************************************************** -* Copyright (C) 2001-2008 IBM and others. All rights reserved. -********************************************************************** -* Date Name Description -* 03/22/2000 helena Creation. -********************************************************************** -*/ - -#ifndef SEARCH_H -#define SEARCH_H - -#include "unicode/utypes.h" - -/** - * \file - * \brief C++ API: SearchIterator object. - */ - -#if !UCONFIG_NO_COLLATION && !UCONFIG_NO_BREAK_ITERATION - -#include "unicode/uobject.h" -#include "unicode/unistr.h" -#include "unicode/chariter.h" -#include "unicode/brkiter.h" -#include "unicode/usearch.h" - -/** -* @stable ICU 2.0 -*/ -struct USearch; -/** -* @stable ICU 2.0 -*/ -typedef struct USearch USearch; - -U_NAMESPACE_BEGIN - -/** - * - * 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 scans over the - * target text, returning the indices the pattern is matched and the length - * of each match. - *

- * SearchIterator defines a protocol for text searching. - * Subclasses provide concrete implementations of various search algorithms. - * For example, StringSearch implements language-sensitive pattern - * matching based on the comparison rules defined in a - * RuleBasedCollator object. - *

- * Other options for searching includes using a BreakIterator to restrict - * the points at which matches are detected. - *

- * 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);
- * UErrorCode      error = U_ZERO_ERROR;
- * for (int pos = iter->first(error); pos != USEARCH_DONE; 
- *                               pos = iter->next(error)) {
- *     printf("Found match at %d pos, length is %d\n", pos, 
- *                                             iter.getMatchLength());
- * }
- * 
- * - * @see StringSearch - * @see RuleBasedCollator - */ -class U_I18N_API SearchIterator : public UObject { - -public: - - // public constructors and destructors ------------------------------- - - /** - * Copy constructor that creates a SearchIterator instance with the same - * behavior, and iterating over the same text. - * @param other the SearchIterator instance to be copied. - * @stable ICU 2.0 - */ - SearchIterator(const SearchIterator &other); - - /** - * Destructor. Cleans up the search iterator data struct. - * @stable ICU 2.0 - */ - virtual ~SearchIterator(); - - // public get and set methods ---------------------------------------- - - /** - * Sets the index to point to the given position, and clears any state - * that's affected. - *

- * This method takes the argument index and sets the position in the text - * string accordingly without checking if the index is pointing to a - * valid starting point to begin searching. - * @param position within the text to be set. If position is less - * than or greater than the text range for searching, - * an U_INDEX_OUTOFBOUNDS_ERROR will be returned - * @param status for errors if it occurs - * @stable ICU 2.0 - */ - virtual void setOffset(int32_t position, UErrorCode &status) = 0; - - /** - * 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), USEARCH_DONE - * is returned. - * @return current index in the text being searched. - * @stable ICU 2.0 - */ - virtual int32_t getOffset(void) const = 0; - - /** - * Sets the text searching attributes located in the enum - * USearchAttribute with values from the enum USearchAttributeValue. - * USEARCH_DEFAULT can be used for all attributes for resetting. - * @param attribute text attribute (enum USearchAttribute) to be set - * @param value text attribute value - * @param status for errors if it occurs - * @stable ICU 2.0 - */ - void setAttribute(USearchAttribute attribute, - USearchAttributeValue value, - UErrorCode &status); - - /** - * Gets the text searching attributes - * @param attribute text attribute (enum USearchAttribute) to be retrieve - * @return text attribute value - * @stable ICU 2.0 - */ - USearchAttributeValue getAttribute(USearchAttribute attribute) const; - - /** - * Returns the index to the match in the text string that was searched. - * This call returns a valid result only after a successful call to - * first, next, previous, or last. - * Just after construction, or after a searching method returns - * USEARCH_DONE, this method will return USEARCH_DONE. - *

- * Use getMatchedLength to get the matched string length. - * @return index of a substring within the text string that is being - * searched. - * @see #first - * @see #next - * @see #previous - * @see #last - * @stable ICU 2.0 - */ - int32_t getMatchedStart(void) const; - - /** - * Returns the length of text in the string which matches the search - * pattern. This call returns a valid result only after a successful call - * to first, next, previous, or last. - * Just after construction, or after a searching method returns - * USEARCH_DONE, this method will return 0. - * @return The length of the match in the target text, or 0 if there - * is no match currently. - * @see #first - * @see #next - * @see #previous - * @see #last - * @stable ICU 2.0 - */ - int32_t getMatchedLength(void) const; - - /** - * Returns the text that was matched by the most recent call to - * first, next, previous, or last. - * If the iterator is not pointing at a valid match (e.g. just after - * construction or after USEARCH_DONE has been returned, - * returns an empty string. - * @param result stores the matched string or an empty string if a match - * is not found. - * @see #first - * @see #next - * @see #previous - * @see #last - * @stable ICU 2.0 - */ - void getMatchedText(UnicodeString &result) const; - - /** - * Set the BreakIterator that will be used to restrict the points - * at which matches are detected. The user is responsible for deleting - * the breakiterator. - * @param breakiter A 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. - * @param status for errors if it occurs - * @see BreakIterator - * @stable ICU 2.0 - */ - void setBreakIterator(BreakIterator *breakiter, UErrorCode &status); - - /** - * 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. - * @return BreakIterator used to restrict matchings. - * @see #setBreakIterator - * @stable ICU 2.0 - */ - const BreakIterator * getBreakIterator(void) const; - - /** - * Set the string text to be searched. Text iteration will hence begin at - * the start of the text string. This method is useful if you want to - * re-use an iterator to search for the same pattern within a different - * body of text. The user is responsible for deleting the text. - * @param text string to be searched. - * @param status for errors. If the text length is 0, - * an U_ILLEGAL_ARGUMENT_ERROR is returned. - * @stable ICU 2.0 - */ - virtual void setText(const UnicodeString &text, UErrorCode &status); - - /** - * Set the string text to be searched. Text iteration will hence begin at - * the start of the text string. This method is useful if you want to - * re-use an iterator to search for the same pattern within a different - * body of text. - *

- * Note: No parsing of the text within the CharacterIterator - * will be done during searching for this version. The block of text - * in CharacterIterator will be used as it is. - * The user is responsible for deleting the text. - * @param text string iterator to be searched. - * @param status for errors if any. If the text length is 0 then an - * U_ILLEGAL_ARGUMENT_ERROR is returned. - * @stable ICU 2.0 - */ - virtual void setText(CharacterIterator &text, UErrorCode &status); - - /** - * Return the string text to be searched. - * @return text string to be searched. - * @stable ICU 2.0 - */ - const UnicodeString & getText(void) const; - - // operator overloading ---------------------------------------------- - - /** - * Equality operator. - * @param that SearchIterator instance to be compared. - * @return TRUE if both BreakIterators are of the same class, have the - * same behavior, terates over the same text and have the same - * attributes. FALSE otherwise. - * @stable ICU 2.0 - */ - virtual UBool operator==(const SearchIterator &that) const; - - /** - * Not-equal operator. - * @param that SearchIterator instance to be compared. - * @return FALSE if operator== returns TRUE, and vice versa. - * @stable ICU 2.0 - */ - UBool operator!=(const SearchIterator &that) const; - - // public methods ---------------------------------------------------- - - /** - * Returns a copy of SearchIterator with the same behavior, and - * iterating over the same text, as this one. Note that all data will be - * replicated, except for the text string to be searched. - * @return cloned object - * @stable ICU 2.0 - */ - virtual SearchIterator* safeClone(void) const = 0; - - /** - * Returns the first index at which the string text matches the search - * pattern. The iterator is adjusted so that its current index (as - * returned by getOffset) is the match position if one - * was found. - * If a match is not found, USEARCH_DONE will be returned and - * the iterator will be adjusted to the index USEARCH_DONE - * @param status for errors if it occurs - * @return The character index of the first match, or - * USEARCH_DONE if there are no matches. - * @see #getOffset - * @stable ICU 2.0 - */ - int32_t first(UErrorCode &status); - - /** - * Returns the first index greater than position at which the - * string text matches the search pattern. The iterator is adjusted so - * that its current index (as returned by getOffset) is the - * match position if one was found. If a match is not found, - * USEARCH_DONE will be returned and the iterator will be - * adjusted to the index USEARCH_DONE - * @param position where search if to start from. If position is less - * than or greater than the text range for searching, - * an U_INDEX_OUTOFBOUNDS_ERROR will be returned - * @param status for errors if it occurs - * @return The character index of the first match following - * position, or USEARCH_DONE if there are no - * matches. - * @see #getOffset - * @stable ICU 2.0 - */ - int32_t following(int32_t position, UErrorCode &status); - - /** - * Returns the last index in the target text at which it matches the - * search pattern. The iterator is adjusted so that its current index - * (as returned by getOffset) is the match position if one was - * found. - * If a match is not found, USEARCH_DONE will be returned and - * the iterator will be adjusted to the index USEARCH_DONE. - * @param status for errors if it occurs - * @return The index of the first match, or USEARCH_DONE if - * there are no matches. - * @see #getOffset - * @stable ICU 2.0 - */ - int32_t last(UErrorCode &status); - - /** - * Returns the first index less than position at which the string - * text matches the search pattern. The iterator is adjusted so that its - * current index (as returned by getOffset) is the match - * position if one was found. If a match is not found, - * USEARCH_DONE will be returned and the iterator will be - * adjusted to the index USEARCH_DONE - * @param position where search is to start from. If position is less - * than or greater than the text range for searching, - * an U_INDEX_OUTOFBOUNDS_ERROR will be returned - * @param status for errors if it occurs - * @return The character index of the first match preceding - * position, or USEARCH_DONE if there are - * no matches. - * @see #getOffset - * @stable ICU 2.0 - */ - int32_t preceding(int32_t position, UErrorCode &status); - - /** - * Returns the index of the next point at which the text matches the - * search pattern, starting from the current position - * The iterator is adjusted so that its current index (as returned by - * getOffset) is the match position if one was found. - * If a match is not found, USEARCH_DONE will be returned and - * the iterator will be adjusted to a position after the end of the text - * string. - * @param status for errors if it occurs - * @return The index of the next match after the current position, - * or USEARCH_DONE if there are no more matches. - * @see #getOffset - * @stable ICU 2.0 - */ - int32_t next(UErrorCode &status); - - /** - * Returns the index of the previous point at which the string text - * matches the search pattern, starting at the current position. - * The iterator is adjusted so that its current index (as returned by - * getOffset) is the match position if one was found. - * If a match is not found, USEARCH_DONE will be returned and - * the iterator will be adjusted to the index USEARCH_DONE - * @param status for errors if it occurs - * @return The index of the previous match before the current position, - * or USEARCH_DONE if there are no more matches. - * @see #getOffset - * @stable ICU 2.0 - */ - int32_t previous(UErrorCode &status); - - /** - * Resets the iteration. - * Search will begin at the start of the text string if a forward - * iteration is initiated before a backwards iteration. Otherwise if a - * backwards iteration is initiated before a forwards iteration, the - * search will begin at the end of the text string. - * @stable ICU 2.0 - */ - virtual void reset(); - -protected: - // protected data members --------------------------------------------- - - /** - * C search data struct - * @stable ICU 2.0 - */ - USearch *m_search_; - - /** - * Break iterator. - * Currently the C++ breakiterator does not have getRules etc to reproduce - * another in C. Hence we keep the original around and do the verification - * at the end of the match. The user is responsible for deleting this - * break iterator. - * @stable ICU 2.0 - */ - BreakIterator *m_breakiterator_; - - /** - * Unicode string version of the search text - * @stable ICU 2.0 - */ - UnicodeString m_text_; - - // protected constructors and destructors ----------------------------- - - /** - * Default constructor. - * Initializes data to the default values. - * @stable ICU 2.0 - */ - SearchIterator(); - - /** - * Constructor for use by subclasses. - * @param text The target text to be searched. - * @param breakiter 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. - * @see #handleNext - * @see #handlePrev - * @stable ICU 2.0 - */ - SearchIterator(const UnicodeString &text, - BreakIterator *breakiter = NULL); - - /** - * Constructor for use by subclasses. - *

- * Note: No parsing of the text within the CharacterIterator - * will be done during searching for this version. The block of text - * in CharacterIterator will be used as it is. - * @param text The target text to be searched. - * @param breakiter 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. - * @see #handleNext - * @see #handlePrev - * @stable ICU 2.0 - */ - SearchIterator(CharacterIterator &text, BreakIterator *breakiter = NULL); - - // protected methods -------------------------------------------------- - - /** - * Assignment operator. Sets this iterator to have the same behavior, - * and iterate over the same text, as the one passed in. - * @param that instance to be copied. - * @stable ICU 2.0 - */ - SearchIterator & operator=(const SearchIterator &that); - - /** - * 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 - * setMatchLength with the number of characters - * in the target text that make up the match. If no match is found, the - * method should return USEARCH_DONE. - *

- * @param position The index in the target text at which the search - * should start. - * @param status for error codes if it occurs. - * @return index at which the match starts, else if match is not found - * USEARCH_DONE is returned - * @see #setMatchLength - * @stable ICU 2.0 - */ - virtual int32_t handleNext(int32_t position, 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 - * setMatchLength with the number of characters - * in the target text that make up the match. If no match is found, the - * method should return USEARCH_DONE. - *

- * @param position The index in the target text at which the search - * should start. - * @param status for error codes if it occurs. - * @return index at which the match starts, else if match is not found - * USEARCH_DONE is returned - * @see #setMatchLength - * @stable ICU 2.0 - */ - virtual int32_t handlePrev(int32_t position, UErrorCode &status) - = 0; - - /** - * Sets the length of the currently matched string in the text string to - * be searched. - * Subclasses' handleNext and handlePrev - * methods should call this when they find a match in the target text. - * @param length length of the matched text. - * @see #handleNext - * @see #handlePrev - * @stable ICU 2.0 - */ - virtual void setMatchLength(int32_t length); - - /** - * Sets the offset of the currently matched string in the text string to - * be searched. - * Subclasses' handleNext and handlePrev - * methods should call this when they find a match in the target text. - * @param position start offset of the matched text. - * @see #handleNext - * @see #handlePrev - * @stable ICU 2.0 - */ - virtual void setMatchStart(int32_t position); - - /** - * sets match not found - * @stable ICU 2.0 - */ - void setMatchNotFound(); -}; - -inline UBool SearchIterator::operator!=(const SearchIterator &that) const -{ - return !operator==(that); -} -U_NAMESPACE_END - -#endif /* #if !UCONFIG_NO_COLLATION */ - -#endif - http://git-wip-us.apache.org/repos/asf/couchdb/blob/81332b78/apps/couch_collate/platform/osx/icu/unicode/simpletz.h ---------------------------------------------------------------------- diff --git a/apps/couch_collate/platform/osx/icu/unicode/simpletz.h b/apps/couch_collate/platform/osx/icu/unicode/simpletz.h deleted file mode 100644 index 5b85c8d..0000000 --- a/apps/couch_collate/platform/osx/icu/unicode/simpletz.h +++ /dev/null @@ -1,927 +0,0 @@ -/* - ******************************************************************************** - * Copyright (C) 1997-2008, International Business Machines * - * Corporation and others. All Rights Reserved. * - ******************************************************************************** - * - * File SIMPLETZ.H - * - * Modification History: - * - * Date Name Description - * 04/21/97 aliu Overhauled header. - * 08/10/98 stephen JDK 1.2 sync - * Added setStartRule() / setEndRule() overloads - * Added hasSameRules() - * 09/02/98 stephen Added getOffset(monthLen) - * Changed getOffset() to take UErrorCode - * 07/09/99 stephen Removed millisPerHour (unused, for HP compiler) - * 12/02/99 aliu Added TimeMode and constructor and setStart/EndRule - * methods that take TimeMode. Added to docs. - ******************************************************************************** - */ - -#ifndef SIMPLETZ_H -#define SIMPLETZ_H - -#include "unicode/utypes.h" - -/** - * \file - * \brief C++ API: SimpleTimeZone is a concrete subclass of TimeZone. - */ - -#if !UCONFIG_NO_FORMATTING - -#include "unicode/basictz.h" - -U_NAMESPACE_BEGIN - -// forward declaration -class InitialTimeZoneRule; -class TimeZoneTransition; -class AnnualTimeZoneRule; - -/** - * SimpleTimeZone is a concrete subclass of TimeZone - * that represents a time zone for use with a Gregorian calendar. This - * class does not handle historical changes. - *

- * When specifying daylight-savings-time begin and end dates, use a negative value for - * dayOfWeekInMonth to indicate that SimpleTimeZone should - * count from the end of the month backwards. For example, in the U.S., Daylight Savings - * Time ends at the last (dayOfWeekInMonth = -1) Sunday in October, at 2 AM in standard - * time. - * - * @see Calendar - * @see GregorianCalendar - * @see TimeZone - * @author D. Goldsmith, Mark Davis, Chen-Lieh Huang, Alan Liu - */ -class U_I18N_API SimpleTimeZone: public BasicTimeZone { -public: - - /** - * TimeMode is used, together with a millisecond offset after - * midnight, to specify a rule transition time. Most rules - * transition at a local wall time, that is, according to the - * current time in effect, either standard, or DST. However, some - * rules transition at local standard time, and some at a specific - * UTC time. Although it might seem that all times could be - * converted to wall time, thus eliminating the need for this - * parameter, this is not the case. - * @stable ICU 2.0 - */ - enum TimeMode { - WALL_TIME = 0, - STANDARD_TIME, - UTC_TIME - }; - - /** - * Copy constructor - * @param source the object to be copied. - * @stable ICU 2.0 - */ - SimpleTimeZone(const SimpleTimeZone& source); - - /** - * Default assignment operator - * @param right the object to be copied. - * @stable ICU 2.0 - */ - SimpleTimeZone& operator=(const SimpleTimeZone& right); - - /** - * Destructor - * @stable ICU 2.0 - */ - virtual ~SimpleTimeZone(); - - /** - * Returns true if the two TimeZone objects are equal; that is, they have - * the same ID, raw GMT offset, and DST rules. - * - * @param that The SimpleTimeZone object to be compared with. - * @return True if the given time zone is equal to this time zone; false - * otherwise. - * @stable ICU 2.0 - */ - virtual UBool operator==(const TimeZone& that) const; - - /** - * Constructs a SimpleTimeZone with the given raw GMT offset and time zone ID, - * and which doesn't observe daylight savings time. Normally you should use - * TimeZone::createInstance() to create a TimeZone instead of creating a - * SimpleTimeZone directly with this constructor. - * - * @param rawOffsetGMT The given base time zone offset to GMT. - * @param ID The timezone ID which is obtained from - * TimeZone.getAvailableIDs. - * @stable ICU 2.0 - */ - SimpleTimeZone(int32_t rawOffsetGMT, const UnicodeString& ID); - - /** - * Construct a SimpleTimeZone with the given raw GMT offset, time zone ID, - * and times to start and end daylight savings time. To create a TimeZone that - * doesn't observe daylight savings time, don't use this constructor; use - * SimpleTimeZone(rawOffset, ID) instead. Normally, you should use - * TimeZone.createInstance() to create a TimeZone instead of creating a - * SimpleTimeZone directly with this constructor. - *

- * Various types of daylight-savings time rules can be specfied by using different - * values for startDay and startDayOfWeek and endDay and endDayOfWeek. For a - * complete explanation of how these parameters work, see the documentation for - * setStartRule(). - * - * @param rawOffsetGMT The new SimpleTimeZone's raw GMT offset - * @param ID The new SimpleTimeZone's time zone ID. - * @param savingsStartMonth The daylight savings starting month. Month is - * 0-based. eg, 0 for January. - * @param savingsStartDayOfWeekInMonth The daylight savings starting - * day-of-week-in-month. See setStartRule() for a - * complete explanation. - * @param savingsStartDayOfWeek The daylight savings starting day-of-week. - * See setStartRule() for a complete explanation. - * @param savingsStartTime The daylight savings starting time, expressed as the - * number of milliseconds after midnight. - * @param savingsEndMonth The daylight savings ending month. Month is - * 0-based. eg, 0 for January. - * @param savingsEndDayOfWeekInMonth The daylight savings ending day-of-week-in-month. - * See setStartRule() for a complete explanation. - * @param savingsEndDayOfWeek The daylight savings ending day-of-week. - * See setStartRule() for a complete explanation. - * @param savingsEndTime The daylight savings ending time, expressed as the - * number of milliseconds after midnight. - * @param status An UErrorCode to receive the status. - * @stable ICU 2.0 - */ - SimpleTimeZone(int32_t rawOffsetGMT, const UnicodeString& ID, - int8_t savingsStartMonth, int8_t savingsStartDayOfWeekInMonth, - int8_t savingsStartDayOfWeek, int32_t savingsStartTime, - int8_t savingsEndMonth, int8_t savingsEndDayOfWeekInMonth, - int8_t savingsEndDayOfWeek, int32_t savingsEndTime, - UErrorCode& status); - /** - * Construct a SimpleTimeZone with the given raw GMT offset, time zone ID, - * and times to start and end daylight savings time. To create a TimeZone that - * doesn't observe daylight savings time, don't use this constructor; use - * SimpleTimeZone(rawOffset, ID) instead. Normally, you should use - * TimeZone.createInstance() to create a TimeZone instead of creating a - * SimpleTimeZone directly with this constructor. - *

- * Various types of daylight-savings time rules can be specfied by using different - * values for startDay and startDayOfWeek and endDay and endDayOfWeek. For a - * complete explanation of how these parameters work, see the documentation for - * setStartRule(). - * - * @param rawOffsetGMT The new SimpleTimeZone's raw GMT offset - * @param ID The new SimpleTimeZone's time zone ID. - * @param savingsStartMonth The daylight savings starting month. Month is - * 0-based. eg, 0 for January. - * @param savingsStartDayOfWeekInMonth The daylight savings starting - * day-of-week-in-month. See setStartRule() for a - * complete explanation. - * @param savingsStartDayOfWeek The daylight savings starting day-of-week. - * See setStartRule() for a complete explanation. - * @param savingsStartTime The daylight savings starting time, expressed as the - * number of milliseconds after midnight. - * @param savingsEndMonth The daylight savings ending month. Month is - * 0-based. eg, 0 for January. - * @param savingsEndDayOfWeekInMonth The daylight savings ending day-of-week-in-month. - * See setStartRule() for a complete explanation. - * @param savingsEndDayOfWeek The daylight savings ending day-of-week. - * See setStartRule() for a complete explanation. - * @param savingsEndTime The daylight savings ending time, expressed as the - * number of milliseconds after midnight. - * @param savingsDST The number of milliseconds added to standard time - * to get DST time. Default is one hour. - * @param status An UErrorCode to receive the status. - * @stable ICU 2.0 - */ - SimpleTimeZone(int32_t rawOffsetGMT, const UnicodeString& ID, - int8_t savingsStartMonth, int8_t savingsStartDayOfWeekInMonth, - int8_t savingsStartDayOfWeek, int32_t savingsStartTime, - int8_t savingsEndMonth, int8_t savingsEndDayOfWeekInMonth, - int8_t savingsEndDayOfWeek, int32_t savingsEndTime, - int32_t savingsDST, UErrorCode& status); - - /** - * Construct a SimpleTimeZone with the given raw GMT offset, time zone ID, - * and times to start and end daylight savings time. To create a TimeZone that - * doesn't observe daylight savings time, don't use this constructor; use - * SimpleTimeZone(rawOffset, ID) instead. Normally, you should use - * TimeZone.createInstance() to create a TimeZone instead of creating a - * SimpleTimeZone directly with this constructor. - *

- * Various types of daylight-savings time rules can be specfied by using different - * values for startDay and startDayOfWeek and endDay and endDayOfWeek. For a - * complete explanation of how these parameters work, see the documentation for - * setStartRule(). - * - * @param rawOffsetGMT The new SimpleTimeZone's raw GMT offset - * @param ID The new SimpleTimeZone's time zone ID. - * @param savingsStartMonth The daylight savings starting month. Month is - * 0-based. eg, 0 for January. - * @param savingsStartDayOfWeekInMonth The daylight savings starting - * day-of-week-in-month. See setStartRule() for a - * complete explanation. - * @param savingsStartDayOfWeek The daylight savings starting day-of-week. - * See setStartRule() for a complete explanation. - * @param savingsStartTime The daylight savings starting time, expressed as the - * number of milliseconds after midnight. - * @param savingsStartTimeMode Whether the start time is local wall time, local - * standard time, or UTC time. Default is local wall time. - * @param savingsEndMonth The daylight savings ending month. Month is - * 0-based. eg, 0 for January. - * @param savingsEndDayOfWeekInMonth The daylight savings ending day-of-week-in-month. - * See setStartRule() for a complete explanation. - * @param savingsEndDayOfWeek The daylight savings ending day-of-week. - * See setStartRule() for a complete explanation. - * @param savingsEndTime The daylight savings ending time, expressed as the - * number of milliseconds after midnight. - * @param savingsEndTimeMode Whether the end time is local wall time, local - * standard time, or UTC time. Default is local wall time. - * @param savingsDST The number of milliseconds added to standard time - * to get DST time. Default is one hour. - * @param status An UErrorCode to receive the status. - * @stable ICU 2.0 - */ - SimpleTimeZone(int32_t rawOffsetGMT, const UnicodeString& ID, - int8_t savingsStartMonth, int8_t savingsStartDayOfWeekInMonth, - int8_t savingsStartDayOfWeek, int32_t savingsStartTime, - TimeMode savingsStartTimeMode, - int8_t savingsEndMonth, int8_t savingsEndDayOfWeekInMonth, - int8_t savingsEndDayOfWeek, int32_t savingsEndTime, TimeMode savingsEndTimeMode, - int32_t savingsDST, UErrorCode& status); - - /** - * Sets the daylight savings starting year, that is, the year this time zone began - * observing its specified daylight savings time rules. The time zone is considered - * not to observe daylight savings time prior to that year; SimpleTimeZone doesn't - * support historical daylight-savings-time rules. - * @param year the daylight savings starting year. - * @stable ICU 2.0 - */ - void setStartYear(int32_t year); - - /** - * Sets the daylight savings starting rule. For example, in the U.S., Daylight Savings - * Time starts at the first Sunday in April, at 2 AM in standard time. - * Therefore, you can set the start rule by calling: - * setStartRule(TimeFields.APRIL, 1, TimeFields.SUNDAY, 2*60*60*1000); - * The dayOfWeekInMonth and dayOfWeek parameters together specify how to calculate - * the exact starting date. Their exact meaning depend on their respective signs, - * allowing various types of rules to be constructed, as follows: - *

    - *
  • If both dayOfWeekInMonth and dayOfWeek are positive, they specify the - * day of week in the month (e.g., (2, WEDNESDAY) is the second Wednesday - * of the month).
  • - *
  • If dayOfWeek is positive and dayOfWeekInMonth is negative, they specify - * the day of week in the month counting backward from the end of the month. - * (e.g., (-1, MONDAY) is the last Monday in the month)
  • - *
  • If dayOfWeek is zero and dayOfWeekInMonth is positive, dayOfWeekInMonth - * specifies the day of the month, regardless of what day of the week it is. - * (e.g., (10, 0) is the tenth day of the month)
  • - *
  • If dayOfWeek is zero and dayOfWeekInMonth is negative, dayOfWeekInMonth - * specifies the day of the month counting backward from the end of the - * month, regardless of what day of the week it is (e.g., (-2, 0) is the - * next-to-last day of the month).
  • - *
  • If dayOfWeek is negative and dayOfWeekInMonth is positive, they specify the - * first specified day of the week on or after the specfied day of the month. - * (e.g., (15, -SUNDAY) is the first Sunday after the 15th of the month - * [or the 15th itself if the 15th is a Sunday].)
  • - *
  • If dayOfWeek and DayOfWeekInMonth are both negative, they specify the - * last specified day of the week on or before the specified day of the month. - * (e.g., (-20, -TUESDAY) is the last Tuesday before the 20th of the month - * [or the 20th itself if the 20th is a Tuesday].)
  • - *
- * @param month the daylight savings starting month. Month is 0-based. - * eg, 0 for January. - * @param dayOfWeekInMonth the daylight savings starting - * day-of-week-in-month. Please see the member description for an example. - * @param dayOfWeek the daylight savings starting day-of-week. Please see - * the member description for an example. - * @param time the daylight savings starting time. Please see the member - * description for an example. - * @param status An UErrorCode - * @stable ICU 2.0 - */ - void setStartRule(int32_t month, int32_t dayOfWeekInMonth, int32_t dayOfWeek, - int32_t time, UErrorCode& status); - /** - * Sets the daylight savings starting rule. For example, in the U.S., Daylight Savings - * Time starts at the first Sunday in April, at 2 AM in standard time. - * Therefore, you can set the start rule by calling: - * setStartRule(TimeFields.APRIL, 1, TimeFields.SUNDAY, 2*60*60*1000); - * The dayOfWeekInMonth and dayOfWeek parameters together specify how to calculate - * the exact starting date. Their exact meaning depend on their respective signs, - * allowing various types of rules to be constructed, as follows: - *
    - *
  • If both dayOfWeekInMonth and dayOfWeek are positive, they specify the - * day of week in the month (e.g., (2, WEDNESDAY) is the second Wednesday - * of the month).
  • - *
  • If dayOfWeek is positive and dayOfWeekInMonth is negative, they specify - * the day of week in the month counting backward from the end of the month. - * (e.g., (-1, MONDAY) is the last Monday in the month)
  • - *
  • If dayOfWeek is zero and dayOfWeekInMonth is positive, dayOfWeekInMonth - * specifies the day of the month, regardless of what day of the week it is. - * (e.g., (10, 0) is the tenth day of the month)
  • - *
  • If dayOfWeek is zero and dayOfWeekInMonth is negative, dayOfWeekInMonth - * specifies the day of the month counting backward from the end of the - * month, regardless of what day of the week it is (e.g., (-2, 0) is the - * next-to-last day of the month).
  • - *
  • If dayOfWeek is negative and dayOfWeekInMonth is positive, they specify the - * first specified day of the week on or after the specfied day of the month. - * (e.g., (15, -SUNDAY) is the first Sunday after the 15th of the month - * [or the 15th itself if the 15th is a Sunday].)
  • - *
  • If dayOfWeek and DayOfWeekInMonth are both negative, they specify the - * last specified day of the week on or before the specified day of the month. - * (e.g., (-20, -TUESDAY) is the last Tuesday before the 20th of the month - * [or the 20th itself if the 20th is a Tuesday].)
  • - *
- * @param month the daylight savings starting month. Month is 0-based. - * eg, 0 for January. - * @param dayOfWeekInMonth the daylight savings starting - * day-of-week-in-month. Please see the member description for an example. - * @param dayOfWeek the daylight savings starting day-of-week. Please see - * the member description for an example. - * @param time the daylight savings starting time. Please see the member - * description for an example. - * @param mode whether the time is local wall time, local standard time, - * or UTC time. Default is local wall time. - * @param status An UErrorCode - * @stable ICU 2.0 - */ - void setStartRule(int32_t month, int32_t dayOfWeekInMonth, int32_t dayOfWeek, - int32_t time, TimeMode mode, UErrorCode& status); - - /** - * Sets the DST start rule to a fixed date within a month. - * - * @param month The month in which this rule occurs (0-based). - * @param dayOfMonth The date in that month (1-based). - * @param time The time of that day (number of millis after midnight) - * when DST takes effect in local wall time, which is - * standard time in this case. - * @param status An UErrorCode - * @stable ICU 2.0 - */ - void setStartRule(int32_t month, int32_t dayOfMonth, int32_t time, - UErrorCode& status); - /** - * Sets the DST start rule to a fixed date within a month. - * - * @param month The month in which this rule occurs (0-based). - * @param dayOfMonth The date in that month (1-based). - * @param time The time of that day (number of millis after midnight) - * when DST takes effect in local wall time, which is - * standard time in this case. - * @param mode whether the time is local wall time, local standard time, - * or UTC time. Default is local wall time. - * @param status An UErrorCode - * @stable ICU 2.0 - */ - void setStartRule(int32_t month, int32_t dayOfMonth, int32_t time, - TimeMode mode, UErrorCode& status); - - /** - * Sets the DST start rule to a weekday before or after a give date within - * a month, e.g., the first Monday on or after the 8th. - * - * @param month The month in which this rule occurs (0-based). - * @param dayOfMonth A date within that month (1-based). - * @param dayOfWeek The day of the week on which this rule occurs. - * @param time The time of that day (number of millis after midnight) - * when DST takes effect in local wall time, which is - * standard time in this case. - * @param after If true, this rule selects the first dayOfWeek on - * or after dayOfMonth. If false, this rule selects - * the last dayOfWeek on or before dayOfMonth. - * @param status An UErrorCode - * @stable ICU 2.0 - */ - void setStartRule(int32_t month, int32_t dayOfMonth, int32_t dayOfWeek, - int32_t time, UBool after, UErrorCode& status); - /** - * Sets the DST start rule to a weekday before or after a give date within - * a month, e.g., the first Monday on or after the 8th. - * - * @param month The month in which this rule occurs (0-based). - * @param dayOfMonth A date within that month (1-based). - * @param dayOfWeek The day of the week on which this rule occurs. - * @param time The time of that day (number of millis after midnight) - * when DST takes effect in local wall time, which is - * standard time in this case. - * @param mode whether the time is local wall time, local standard time, - * or UTC time. Default is local wall time. - * @param after If true, this rule selects the first dayOfWeek on - * or after dayOfMonth. If false, this rule selects - * the last dayOfWeek on or before dayOfMonth. - * @param status An UErrorCode - * @stable ICU 2.0 - */ - void setStartRule(int32_t month, int32_t dayOfMonth, int32_t dayOfWeek, - int32_t time, TimeMode mode, UBool after, UErrorCode& status); - - /** - * Sets the daylight savings ending rule. For example, in the U.S., Daylight - * Savings Time ends at the last (-1) Sunday in October, at 2 AM in standard time. - * Therefore, you can set the end rule by calling: - *
-     * .   setEndRule(TimeFields.OCTOBER, -1, TimeFields.SUNDAY, 2*60*60*1000);
-     * 
- * Various other types of rules can be specified by manipulating the dayOfWeek - * and dayOfWeekInMonth parameters. For complete details, see the documentation - * for setStartRule(). - * - * @param month the daylight savings ending month. Month is 0-based. - * eg, 0 for January. - * @param dayOfWeekInMonth the daylight savings ending - * day-of-week-in-month. See setStartRule() for a complete explanation. - * @param dayOfWeek the daylight savings ending day-of-week. See setStartRule() - * for a complete explanation. - * @param time the daylight savings ending time. Please see the member - * description for an example. - * @param status An UErrorCode - * @stable ICU 2.0 - */ - void setEndRule(int32_t month, int32_t dayOfWeekInMonth, int32_t dayOfWeek, - int32_t time, UErrorCode& status); - - /** - * Sets the daylight savings ending rule. For example, in the U.S., Daylight - * Savings Time ends at the last (-1) Sunday in October, at 2 AM in standard time. - * Therefore, you can set the end rule by calling: - *
-     * .   setEndRule(TimeFields.OCTOBER, -1, TimeFields.SUNDAY, 2*60*60*1000);
-     * 
- * Various other types of rules can be specified by manipulating the dayOfWeek - * and dayOfWeekInMonth parameters. For complete details, see the documentation - * for setStartRule(). - * - * @param month the daylight savings ending month. Month is 0-based. - * eg, 0 for January. - * @param dayOfWeekInMonth the daylight savings ending - * day-of-week-in-month. See setStartRule() for a complete explanation. - * @param dayOfWeek the daylight savings ending day-of-week. See setStartRule() - * for a complete explanation. - * @param time the daylight savings ending time. Please see the member - * description for an example. - * @param mode whether the time is local wall time, local standard time, - * or UTC time. Default is local wall time. - * @param status An UErrorCode - * @stable ICU 2.0 - */ - void setEndRule(int32_t month, int32_t dayOfWeekInMonth, int32_t dayOfWeek, - int32_t time, TimeMode mode, UErrorCode& status); - - /** - * Sets the DST end rule to a fixed date within a month. - * - * @param month The month in which this rule occurs (0-based). - * @param dayOfMonth The date in that month (1-based). - * @param time The time of that day (number of millis after midnight) - * when DST ends in local wall time, which is daylight - * time in this case. - * @param status An UErrorCode - * @stable ICU 2.0 - */ - void setEndRule(int32_t month, int32_t dayOfMonth, int32_t time, UErrorCode& status); - - /** - * Sets the DST end rule to a fixed date within a month. - * - * @param month The month in which this rule occurs (0-based). - * @param dayOfMonth The date in that month (1-based). - * @param time The time of that day (number of millis after midnight) - * when DST ends in local wall time, which is daylight - * time in this case. - * @param mode whether the time is local wall time, local standard time, - * or UTC time. Default is local wall time. - * @param status An UErrorCode - * @stable ICU 2.0 - */ - void setEndRule(int32_t month, int32_t dayOfMonth, int32_t time, - TimeMode mode, UErrorCode& status); - - /** - * Sets the DST end rule to a weekday before or after a give date within - * a month, e.g., the first Monday on or after the 8th. - * - * @param month The month in which this rule occurs (0-based). - * @param dayOfMonth A date within that month (1-based). - * @param dayOfWeek The day of the week on which this rule occurs. - * @param time The time of that day (number of millis after midnight) - * when DST ends in local wall time, which is daylight - * time in this case. - * @param after If true, this rule selects the first dayOfWeek on - * or after dayOfMonth. If false, this rule selects - * the last dayOfWeek on or before dayOfMonth. - * @param status An UErrorCode - * @stable ICU 2.0 - */ - void setEndRule(int32_t month, int32_t dayOfMonth, int32_t dayOfWeek, - int32_t time, UBool after, UErrorCode& status); - - /** - * Sets the DST end rule to a weekday before or after a give date within - * a month, e.g., the first Monday on or after the 8th. - * - * @param month The month in which this rule occurs (0-based). - * @param dayOfMonth A date within that month (1-based). - * @param dayOfWeek The day of the week on which this rule occurs. - * @param time The time of that day (number of millis after midnight) - * when DST ends in local wall time, which is daylight - * time in this case. - * @param mode whether the time is local wall time, local standard time, - * or UTC time. Default is local wall time. - * @param after If true, this rule selects the first dayOfWeek on - * or after dayOfMonth. If false, this rule selects - * the last dayOfWeek on or before dayOfMonth. - * @param status An UErrorCode - * @stable ICU 2.0 - */ - void setEndRule(int32_t month, int32_t dayOfMonth, int32_t dayOfWeek, - int32_t time, TimeMode mode, UBool after, UErrorCode& status); - - /** - * Returns the TimeZone's adjusted GMT offset (i.e., the number of milliseconds to add - * to GMT to get local time in this time zone, taking daylight savings time into - * account) as of a particular reference date. The reference date is used to determine - * whether daylight savings time is in effect and needs to be figured into the offset - * that is returned (in other words, what is the adjusted GMT offset in this time zone - * at this particular date and time?). For the time zones produced by createTimeZone(), - * the reference data is specified according to the Gregorian calendar, and the date - * and time fields are in GMT, NOT local time. - * - * @param era The reference date's era - * @param year The reference date's year - * @param month The reference date's month (0-based; 0 is January) - * @param day The reference date's day-in-month (1-based) - * @param dayOfWeek The reference date's day-of-week (1-based; 1 is Sunday) - * @param millis The reference date's milliseconds in day, UTT (NOT local time). - * @param status An UErrorCode to receive the status. - * @return The offset in milliseconds to add to GMT to get local time. - * @stable ICU 2.0 - */ - virtual int32_t getOffset(uint8_t era, int32_t year, int32_t month, int32_t day, - uint8_t dayOfWeek, int32_t millis, UErrorCode& status) const; - - /** - * Gets the time zone offset, for current date, modified in case of - * daylight savings. This is the offset to add *to* UTC to get local time. - * @param era the era of the given date. - * @param year the year in the given date. - * @param month the month in the given date. - * Month is 0-based. e.g., 0 for January. - * @param day the day-in-month of the given date. - * @param dayOfWeek the day-of-week of the given date. - * @param milliseconds the millis in day in standard local time. - * @param monthLength the length of the given month in days. - * @param status An UErrorCode to receive the status. - * @return the offset to add *to* GMT to get local time. - * @stable ICU 2.0 - */ - virtual int32_t getOffset(uint8_t era, int32_t year, int32_t month, int32_t day, - uint8_t dayOfWeek, int32_t milliseconds, - int32_t monthLength, UErrorCode& status) const; - /** - * Gets the time zone offset, for current date, modified in case of - * daylight savings. This is the offset to add *to* UTC to get local time. - * @param era the era of the given date. - * @param year the year in the given date. - * @param month the month in the given date. - * Month is 0-based. e.g., 0 for January. - * @param day the day-in-month of the given date. - * @param dayOfWeek the day-of-week of the given date. - * @param milliseconds the millis in day in standard local time. - * @param monthLength the length of the given month in days. - * @param prevMonthLength length of the previous month in days. - * @param status An UErrorCode to receive the status. - * @return the offset to add *to* GMT to get local time. - * @stable ICU 2.0 - */ - virtual int32_t getOffset(uint8_t era, int32_t year, int32_t month, int32_t day, - uint8_t dayOfWeek, int32_t milliseconds, - int32_t monthLength, int32_t prevMonthLength, - UErrorCode& status) const; - - /** - * Redeclared TimeZone method. This implementation simply calls - * the base class method, which otherwise would be hidden. - * @stable ICU 2.8 - */ - virtual void getOffset(UDate date, UBool local, int32_t& rawOffset, - int32_t& dstOffset, UErrorCode& ec) const; - - /** - * Get time zone offsets from local wall time. - * @internal - */ - virtual void getOffsetFromLocal(UDate date, int32_t nonExistingTimeOpt, int32_t duplicatedTimeOpt, - int32_t& rawOffset, int32_t& dstOffset, UErrorCode& status) /*const*/; - - /** - * Returns the TimeZone's raw GMT offset (i.e., the number of milliseconds to add - * to GMT to get local time, before taking daylight savings time into account). - * - * @return The TimeZone's raw GMT offset. - * @stable ICU 2.0 - */ - virtual int32_t getRawOffset(void) const; - - /** - * Sets the TimeZone's raw GMT offset (i.e., the number of milliseconds to add - * to GMT to get local time, before taking daylight savings time into account). - * - * @param offsetMillis The new raw GMT offset for this time zone. - * @stable ICU 2.0 - */ - virtual void setRawOffset(int32_t offsetMillis); - - /** - * Sets the amount of time in ms that the clock is advanced during DST. - * @param millisSavedDuringDST the number of milliseconds the time is - * advanced with respect to standard time when the daylight savings rules - * are in effect. A positive number, typically one hour (3600000). - * @param status An UErrorCode to receive the status. - * @stable ICU 2.0 - */ - void setDSTSavings(int32_t millisSavedDuringDST, UErrorCode& status); - - /** - * Returns the amount of time in ms that the clock is advanced during DST. - * @return the number of milliseconds the time is - * advanced with respect to standard time when the daylight savings rules - * are in effect. A positive number, typically one hour (3600000). - * @stable ICU 2.0 - */ - virtual int32_t getDSTSavings(void) const; - - /** - * Queries if this TimeZone uses Daylight Savings Time. - * - * @return True if this TimeZone uses Daylight Savings Time; false otherwise. - * @stable ICU 2.0 - */ - virtual UBool useDaylightTime(void) const; - - /** - * Returns true if the given date is within the period when daylight savings time - * is in effect; false otherwise. If the TimeZone doesn't observe daylight savings - * time, this functions always returns false. - * This method is wasteful since it creates a new GregorianCalendar and - * deletes it each time it is called. This is a deprecated method - * and provided only for Java compatibility. - * - * @param date The date to test. - * @param status An UErrorCode to receive the status. - * @return true if the given date is in Daylight Savings Time; - * false otherwise. - * @deprecated ICU 2.4. Use Calendar::inDaylightTime() instead. - */ - virtual UBool inDaylightTime(UDate date, UErrorCode& status) const; - - /** - * Return true if this zone has the same rules and offset as another zone. - * @param other the TimeZone object to be compared with - * @return true if the given zone has the same rules and offset as this one - * @stable ICU 2.0 - */ - UBool hasSameRules(const TimeZone& other) const; - - /** - * Clones TimeZone objects polymorphically. Clients are responsible for deleting - * the TimeZone object cloned. - * - * @return A new copy of this TimeZone object. - * @stable ICU 2.0 - */ - virtual TimeZone* clone(void) const; - - /** - * Gets the first time zone transition after the base time. - * @param base The base time. - * @param inclusive Whether the base time is inclusive or not. - * @param result Receives the first transition after the base time. - * @return TRUE if the transition is found. - * @stable ICU 4.0 - */ - virtual UBool getNextTransition(UDate base, UBool inclusive, TimeZoneTransition& result) /*const*/; - - /** - * Gets the most recent time zone transition before the base time. - * @param base The base time. - * @param inclusive Whether the base time is inclusive or not. - * @param result Receives the most recent transition before the base time. - * @return TRUE if the transition is found. - * @stable ICU 4.0 - */ - virtual UBool getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition& result) /*const*/; - - /** - * Returns the number of TimeZoneRules which represents time transitions, - * for this time zone, that is, all TimeZoneRules for this time zone except - * InitialTimeZoneRule. The return value range is 0 or any positive value. - * @param status Receives error status code. - * @return The number of TimeZoneRules representing time transitions. - * @stable ICU 4.0 - */ - virtual int32_t countTransitionRules(UErrorCode& status) /*const*/; - - /** - * Gets the InitialTimeZoneRule and the set of TimeZoneRule - * which represent time transitions for this time zone. On successful return, - * the argument initial points to non-NULL InitialTimeZoneRule and - * the array trsrules is filled with 0 or multiple TimeZoneRule - * instances up to the size specified by trscount. The results are referencing the - * rule instance held by this time zone instance. Therefore, after this time zone - * is destructed, they are no longer available. - * @param initial Receives the initial timezone rule - * @param trsrules Receives the timezone transition rules - * @param trscount On input, specify the size of the array 'transitions' receiving - * the timezone transition rules. On output, actual number of - * rules filled in the array will be set. - * @param status Receives error status code. - * @stable ICU 4.0 - */ - virtual void getTimeZoneRules(const InitialTimeZoneRule*& initial, - const TimeZoneRule* trsrules[], int32_t& trscount, UErrorCode& status) /*const*/; - - -public: - - /** - * Override TimeZone Returns a unique class ID POLYMORPHICALLY. Pure virtual - * override. This method is to implement a simple version of RTTI, since not all C++ - * compilers support genuine RTTI. Polymorphic operator==() and clone() methods call - * this method. - * - * @return The class ID for this object. All objects of a given class have the - * same class ID. Objects of other classes have different class IDs. - * @stable ICU 2.0 - */ - virtual UClassID getDynamicClassID(void) const; - - /** - * Return the class ID for this class. This is useful only for comparing to a return - * value from getDynamicClassID(). For example: - *
-     * .   Base* polymorphic_pointer = createPolymorphicObject();
-     * .   if (polymorphic_pointer->getDynamicClassID() ==
-     * .       Derived::getStaticClassID()) ...
-     * 
- * @return The class ID for all objects of this class. - * @stable ICU 2.0 - */ - static UClassID U_EXPORT2 getStaticClassID(void); - -private: - /** - * Constants specifying values of startMode and endMode. - */ - enum EMode - { - DOM_MODE = 1, - DOW_IN_MONTH_MODE, - DOW_GE_DOM_MODE, - DOW_LE_DOM_MODE - }; - - SimpleTimeZone(); // default constructor not implemented - - /** - * Internal construction method. - * @param rawOffsetGMT The new SimpleTimeZone's raw GMT offset - * @param startMonth the month DST starts - * @param startDay the day DST starts - * @param startDayOfWeek the DOW DST starts - * @param startTime the time DST starts - * @param startTimeMode Whether the start time is local wall time, local - * standard time, or UTC time. Default is local wall time. - * @param endMonth the month DST ends - * @param endDay the day DST ends - * @param endDayOfWeek the DOW DST ends - * @param endTime the time DST ends - * @param endTimeMode Whether the end time is local wall time, local - * standard time, or UTC time. Default is local wall time. - * @param savingsDST The number of milliseconds added to standard time - * to get DST time. Default is one hour. - * @param status An UErrorCode to receive the status. - */ - void construct(int32_t rawOffsetGMT, - int8_t startMonth, int8_t startDay, int8_t startDayOfWeek, - int32_t startTime, TimeMode startTimeMode, - int8_t endMonth, int8_t endDay, int8_t endDayOfWeek, - int32_t endTime, TimeMode endTimeMode, - int32_t dstSavings, UErrorCode& status); - - /** - * Compare a given date in the year to a rule. Return 1, 0, or -1, depending - * on whether the date is after, equal to, or before the rule date. The - * millis are compared directly against the ruleMillis, so any - * standard-daylight adjustments must be handled by the caller. - * - * @return 1 if the date is after the rule date, -1 if the date is before - * the rule date, or 0 if the date is equal to the rule date. - */ - static int32_t compareToRule(int8_t month, int8_t monthLen, int8_t prevMonthLen, - int8_t dayOfMonth, - int8_t dayOfWeek, int32_t millis, int32_t millisDelta, - EMode ruleMode, int8_t ruleMonth, int8_t ruleDayOfWeek, - int8_t ruleDay, int32_t ruleMillis); - - /** - * Given a set of encoded rules in startDay and startDayOfMonth, decode - * them and set the startMode appropriately. Do the same for endDay and - * endDayOfMonth. - *

- * Upon entry, the day of week variables may be zero or - * negative, in order to indicate special modes. The day of month - * variables may also be negative. - *

- * Upon exit, the mode variables will be - * set, and the day of week and day of month variables will be positive. - *

- * This method also recognizes a startDay or endDay of zero as indicating - * no DST. - */ - void decodeRules(UErrorCode& status); - void decodeStartRule(UErrorCode& status); - void decodeEndRule(UErrorCode& status); - - int8_t startMonth, startDay, startDayOfWeek; // the month, day, DOW, and time DST starts - int32_t startTime; - TimeMode startTimeMode, endTimeMode; // Mode for startTime, endTime; see TimeMode - int8_t endMonth, endDay, endDayOfWeek; // the month, day, DOW, and time DST ends - int32_t endTime; - int32_t startYear; // the year these DST rules took effect - int32_t rawOffset; // the TimeZone's raw GMT offset - UBool useDaylight; // flag indicating whether this TimeZone uses DST - static const int8_t STATICMONTHLENGTH[12]; // lengths of the months - EMode startMode, endMode; // flags indicating what kind of rules the DST rules are - - /** - * A positive value indicating the amount of time saved during DST in ms. - * Typically one hour; sometimes 30 minutes. - */ - int32_t dstSavings; - - /* Private for BasicTimeZone implementation */ - void initTransitionRules(UErrorCode& status); - void clearTransitionRules(void); - void deleteTransitionRules(void); - UBool transitionRulesInitialized; - InitialTimeZoneRule* initialRule; - TimeZoneTransition* firstTransition; - AnnualTimeZoneRule* stdRule; - AnnualTimeZoneRule* dstRule; -}; - -inline void SimpleTimeZone::setStartRule(int32_t month, int32_t dayOfWeekInMonth, - int32_t dayOfWeek, - int32_t time, UErrorCode& status) { - setStartRule(month, dayOfWeekInMonth, dayOfWeek, time, WALL_TIME, status); -} - -inline void SimpleTimeZone::setStartRule(int32_t month, int32_t dayOfMonth, - int32_t time, - UErrorCode& status) { - setStartRule(month, dayOfMonth, time, WALL_TIME, status); -} - -inline void SimpleTimeZone::setStartRule(int32_t month, int32_t dayOfMonth, - int32_t dayOfWeek, - int32_t time, UBool after, UErrorCode& status) { - setStartRule(month, dayOfMonth, dayOfWeek, time, WALL_TIME, after, status); -} - -inline void SimpleTimeZone::setEndRule(int32_t month, int32_t dayOfWeekInMonth, - int32_t dayOfWeek, - int32_t time, UErrorCode& status) { - setEndRule(month, dayOfWeekInMonth, dayOfWeek, time, WALL_TIME, status); -} - -inline void SimpleTimeZone::setEndRule(int32_t month, int32_t dayOfMonth, - int32_t time, UErrorCode& status) { - setEndRule(month, dayOfMonth, time, WALL_TIME, status); -} - -inline void SimpleTimeZone::setEndRule(int32_t month, int32_t dayOfMonth, int32_t dayOfWeek, - int32_t time, UBool after, UErrorCode& status) { - setEndRule(month, dayOfMonth, dayOfWeek, time, WALL_TIME, after, status); -} - -inline void -SimpleTimeZone::getOffset(UDate date, UBool local, int32_t& rawOffsetRef, - int32_t& dstOffsetRef, UErrorCode& ec) const { - TimeZone::getOffset(date, local, rawOffsetRef, dstOffsetRef, ec); -} - -U_NAMESPACE_END - -#endif /* #if !UCONFIG_NO_FORMATTING */ - -#endif // _SIMPLETZ