]> granicus.if.org Git - icu/commitdiff
ICU-22159 Merge inDaylightTime to Calendar
authorFrank Tang <ftang@chromium.org>
Thu, 22 Sep 2022 03:05:55 +0000 (20:05 -0700)
committerFrank Yung-Fong Tang <ftang@google.com>
Mon, 31 Oct 2022 15:42:51 +0000 (08:42 -0700)
All the subclass implementation of inDaylightTime are the same
so just move to a base class implementation.

16 files changed:
icu4c/source/i18n/calendar.cpp
icu4c/source/i18n/cecal.cpp
icu4c/source/i18n/cecal.h
icu4c/source/i18n/chnsecal.cpp
icu4c/source/i18n/chnsecal.h
icu4c/source/i18n/gregocal.cpp
icu4c/source/i18n/hebrwcal.cpp
icu4c/source/i18n/hebrwcal.h
icu4c/source/i18n/indiancal.cpp
icu4c/source/i18n/indiancal.h
icu4c/source/i18n/islamcal.cpp
icu4c/source/i18n/islamcal.h
icu4c/source/i18n/persncal.cpp
icu4c/source/i18n/persncal.h
icu4c/source/i18n/unicode/calendar.h
icu4c/source/i18n/unicode/gregocal.h

index 7b8b929990f3f0fc8efd0959f6a08392bcbd6124..ffd84761becd008a0b520f704d4c043ca5a9d7ac 100644 (file)
@@ -2869,7 +2869,20 @@ Calendar::getActualMinimum(UCalendarDateFields field, UErrorCode& status) const
 
 // -------------------------------------
 
+UBool
+Calendar::inDaylightTime(UErrorCode& status) const
+{
+    if (U_FAILURE(status) || !getTimeZone().useDaylightTime()) {
+        return false;
+    }
 
+    // Force an update of the state of the Calendar.
+    ((Calendar*)this)->complete(status); // cast away const
+
+    return (UBool)(U_SUCCESS(status) ? (internalGet(UCAL_DST_OFFSET) != 0) : false);
+}
+
+// -------------------------------------
 
 /**
 * Ensure that each field is within its valid range by calling {@link
index 60e3d4b2657e45db5e9c981f54d1bd5b58cdae11..2621056c497883e0ce5e4547ac538d951e93d082 100644 (file)
@@ -86,19 +86,6 @@ CECalendar::handleGetLimit(UCalendarDateFields field, ELimitType limitType) cons
     return LIMITS[field][limitType];
 }
 
-UBool
-CECalendar::inDaylightTime(UErrorCode& status) const
-{
-    if (U_FAILURE(status) || !getTimeZone().useDaylightTime()) {
-        return false;
-    }
-
-    // Force an update of the state of the Calendar.
-    ((CECalendar*)this)->complete(status); // cast away const
-
-    return (UBool)(U_SUCCESS(status) ? (internalGet(UCAL_DST_OFFSET) != 0) : false);
-}
-
 UBool
 CECalendar::haveDefaultCentury() const
 {
index 9ac71f6ba38680981746f56dde7dae1af587a9c8..711e2aa252615aae3677a5dd3cb73e349cb5a076 100644 (file)
@@ -76,17 +76,6 @@ protected:
      */
     virtual int32_t handleGetLimit(UCalendarDateFields field, ELimitType limitType) const override;
 
-    /**
-     * (Overrides Calendar) Return true if the current date for this Calendar is in
-     * Daylight Savings Time. Recognizes DST_OFFSET, if it is set.
-     *
-     * @param status Fill-in parameter which receives the status of this operation.
-     * @return   True if the current date for this Calendar is in Daylight Savings Time,
-     *           false, otherwise.
-     * @internal
-     */
-    virtual UBool inDaylightTime(UErrorCode&) const override;
-
     /**
      * Returns true because Coptic/Ethiopic Calendar does have a default century
      * @internal
index e48c90eb5af8770d79c0d48d3c19c9e497673954..b2b6258820b7ddfd3c3b73bd1b3ade66930b13dc 100644 (file)
@@ -826,19 +826,6 @@ void ChineseCalendar::offsetMonth(int32_t newMoon, int32_t dom, int32_t delta) {
 }
 
 
-UBool
-ChineseCalendar::inDaylightTime(UErrorCode& status) const
-{
-    // copied from GregorianCalendar
-    if (U_FAILURE(status) || !getTimeZone().useDaylightTime()) 
-        return false;
-
-    // Force an update of the state of the Calendar.
-    ((ChineseCalendar*)this)->complete(status); // cast away const
-
-    return (UBool)(U_SUCCESS(status) ? (internalGet(UCAL_DST_OFFSET) != 0) : false);
-}
-
 // default century
 
 static UDate     gSystemDefaultCenturyStart       = DBL_MIN;
index 488fe169d99c28dbd0e2c4d81c3ad1f30070bf3e..016e9422e4392f49bf11fb5e9b5e67f93b71cc63 100644 (file)
@@ -229,18 +229,6 @@ class U_I18N_API ChineseCalendar : public Calendar {
 
 
  protected:
-  /**
-   * (Overrides Calendar) Return true if the current date for this Calendar is in
-   * Daylight Savings Time. Recognizes DST_OFFSET, if it is set.
-   *
-   * @param status Fill-in parameter which receives the status of this operation.
-   * @return   True if the current date for this Calendar is in Daylight Savings Time,
-   *           false, otherwise.
-   * @internal
-   */
-  virtual UBool inDaylightTime(UErrorCode& status) const override;
-
-
   /**
    * Returns true because the Islamic Calendar does have a default century
    * @internal
index 63a6c2d452978bfcd75f78720fe0e2321abb3ce9..882d25b4a2a1dfb1ee260494f85aa030f30ac5bb 100644 (file)
@@ -1235,20 +1235,6 @@ int32_t GregorianCalendar::handleGetExtendedYearFromWeekFields(int32_t yearWoy,
 }
 
 
-// -------------------------------------
-
-UBool
-GregorianCalendar::inDaylightTime(UErrorCode& status) const
-{
-    if (U_FAILURE(status) || !getTimeZone().useDaylightTime()) 
-        return false;
-
-    // Force an update of the state of the Calendar.
-    ((GregorianCalendar*)this)->complete(status); // cast away const
-
-    return (UBool)(U_SUCCESS(status) ? (internalGet(UCAL_DST_OFFSET) != 0) : false);
-}
-
 // -------------------------------------
 
 /**
index 7e8da3eb2fb87aab7daf5836e601ad7b7ae4ae14..07aea83f64391926df6a253f03153bc221ba5ffe 100644 (file)
@@ -666,19 +666,6 @@ int32_t HebrewCalendar::handleComputeMonthStart(int32_t eyear, int32_t month, UB
     return (int) (day + 347997);
 }
 
-UBool
-HebrewCalendar::inDaylightTime(UErrorCode& status) const
-{
-    // copied from GregorianCalendar
-    if (U_FAILURE(status) || !getTimeZone().useDaylightTime()) 
-        return false;
-
-    // Force an update of the state of the Calendar.
-    ((HebrewCalendar*)this)->complete(status); // cast away const
-
-    return (UBool)(U_SUCCESS(status) ? (internalGet(UCAL_DST_OFFSET) != 0) : false);
-}
-
 /**
  * The system maintains a static default century start date and Year.  They are
  * initialized the first time they are used.  Once the system default century date 
index d75651d47a4fde9400092438e11697cc63bc57cb..34ce8c24c6843c17d5a206f74f3d01dc76584586 100644 (file)
@@ -366,18 +366,6 @@ public:
     virtual void validateField(UCalendarDateFields field, UErrorCode &status) override;
 
  protected:
-
-  /**
-   * (Overrides Calendar) Return true if the current date for this Calendar is in
-   * Daylight Savings Time. Recognizes DST_OFFSET, if it is set.
-   *
-   * @param status Fill-in parameter which receives the status of this operation.
-   * @return   True if the current date for this Calendar is in Daylight Savings Time,
-   *           false, otherwise.
-   * @internal
-   */
-  virtual UBool inDaylightTime(UErrorCode& status) const override;
-
   /**
    * Returns true because the Hebrew Calendar does have a default century
    * @internal
index 24919e394f656ab0a5f12befd03aefcf1935275a..80d38ca9d42d78e721f4b8a249d17982d3818efa 100644 (file)
@@ -297,21 +297,6 @@ void IndianCalendar::handleComputeFields(int32_t julianDay, UErrorCode&  /* stat
    internalSet(UCAL_DAY_OF_YEAR, yday + 1); // yday is 0-based
 }    
 
-UBool
-IndianCalendar::inDaylightTime(UErrorCode& status) const
-{
-    // copied from GregorianCalendar
-    if (U_FAILURE(status) || !getTimeZone().useDaylightTime()) {
-        return false;
-    }
-
-    // Force an update of the state of the Calendar.
-    ((IndianCalendar*)this)->complete(status); // cast away const
-
-    return (UBool)(U_SUCCESS(status) ? (internalGet(UCAL_DST_OFFSET) != 0) : false);
-}
-
-
 /**
  * The system maintains a static default century start date and Year.  They are
  * initialized the first time they are used.  Once the system default century date
index bfbea0032954cdd35c764f3296f0c8c154aa80ad..e1c2f99295e8cd269975619976910a8feef06e1f 100644 (file)
@@ -289,19 +289,6 @@ private:
 
   // Default century.
 protected:
-
-  /**
-   * (Overrides Calendar) Return true if the current date for this Calendar is in
-   * Daylight Savings Time. Recognizes DST_OFFSET, if it is set.
-   *
-   * @param status Fill-in parameter which receives the status of this operation.
-   * @return   True if the current date for this Calendar is in Daylight Savings Time,
-   *           false, otherwise.
-   * @internal
-   */
-  virtual UBool inDaylightTime(UErrorCode& status) const override;
-
-
   /**
    * Returns true because the Indian Calendar does have a default century
    * @internal
index 916b4da2b640d02a6ab180a713ff98292cdd0f42..5b920f46a70ec3b10bdc8af6a1cdcc0881127f9b 100644 (file)
@@ -692,19 +692,6 @@ void IslamicCalendar::handleComputeFields(int32_t julianDay, UErrorCode &status)
     internalSet(UCAL_DAY_OF_YEAR, dayOfYear);       
 }    
 
-UBool
-IslamicCalendar::inDaylightTime(UErrorCode& status) const
-{
-    // copied from GregorianCalendar
-    if (U_FAILURE(status) || !getTimeZone().useDaylightTime()) 
-        return false;
-
-    // Force an update of the state of the Calendar.
-    ((IslamicCalendar*)this)->complete(status); // cast away const
-
-    return (UBool)(U_SUCCESS(status) ? (internalGet(UCAL_DST_OFFSET) != 0) : false);
-}
-
 /**
  * The system maintains a static default century start date and Year.  They are
  * initialized the first time they are used.  Once the system default century date 
index 7d9941d4709638f9809d19dac04259ce2935fdbf..9e84353e4b04c79de6eba38f0f907181416de8b6 100644 (file)
@@ -381,19 +381,6 @@ class U_I18N_API IslamicCalendar : public Calendar {
 
   // Default century.
  protected:
-
-  /**
-   * (Overrides Calendar) Return true if the current date for this Calendar is in
-   * Daylight Savings Time. Recognizes DST_OFFSET, if it is set.
-   *
-   * @param status Fill-in parameter which receives the status of this operation.
-   * @return   True if the current date for this Calendar is in Daylight Savings Time,
-   *           false, otherwise.
-   * @internal
-   */
-  virtual UBool inDaylightTime(UErrorCode& status) const override;
-
-
   /**
    * Returns true because the Islamic Calendar does have a default century
    * @internal
index 9db47c9891200fd9df6d57efd600ac47f142cb84..bdbe296d232ac03eacfc35dfcfbdd300924d1809 100644 (file)
@@ -233,19 +233,6 @@ void PersianCalendar::handleComputeFields(int32_t julianDay, UErrorCode &/*statu
     internalSet(UCAL_DAY_OF_YEAR, dayOfYear);
 }    
 
-UBool
-PersianCalendar::inDaylightTime(UErrorCode& status) const
-{
-    // copied from GregorianCalendar
-    if (U_FAILURE(status) || !getTimeZone().useDaylightTime()) 
-        return false;
-
-    // Force an update of the state of the Calendar.
-    ((PersianCalendar*)this)->complete(status); // cast away const
-
-    return (UBool)(U_SUCCESS(status) ? (internalGet(UCAL_DST_OFFSET) != 0) : false);
-}
-
 // default century
 
 static UDate           gSystemDefaultCenturyStart       = DBL_MIN;
index d0f2ee5ec209e0c4d9240e47a1348a8356069923..5111e01e5a1119161d992581726623347b1661a3 100644 (file)
@@ -282,18 +282,6 @@ class PersianCalendar : public Calendar {
   PersianCalendar(); // default constructor not implemented
 
  protected:
-
-  /**
-   * (Overrides Calendar) Return true if the current date for this Calendar is in
-   * Daylight Savings Time. Recognizes DST_OFFSET, if it is set.
-   *
-   * @param status Fill-in parameter which receives the status of this operation.
-   * @return   True if the current date for this Calendar is in Daylight Savings Time,
-   *           false, otherwise.
-   * @internal
-   */
-  virtual UBool inDaylightTime(UErrorCode& status) const override;
-
   /**
    * Returns true because the Persian Calendar does have a default century
    * @internal
index 3c0e5c3e3e064ad0da910226ccd0024f2cc0f35c..f7cca52106ec09025a77be151456d2c5e60bbcee 100644 (file)
@@ -870,7 +870,7 @@ public:
      *           false, otherwise.
      * @stable ICU 2.0
      */
-    virtual UBool inDaylightTime(UErrorCode& status) const = 0;
+    virtual UBool inDaylightTime(UErrorCode& status) const;
 
     /**
      * Specifies whether or not date/time interpretation is to be lenient. With lenient
index d97b33b7aca91c121050f8a9a8c405f42f1bafa5..abd0debec68abb997f1344f29846d520529656a6 100644 (file)
@@ -423,17 +423,6 @@ public:
      */
     virtual int32_t getActualMaximum(UCalendarDateFields field, UErrorCode& status) const override;
 
-    /**
-     * (Overrides Calendar) Return true if the current date for this Calendar is in
-     * Daylight Savings Time. Recognizes DST_OFFSET, if it is set.
-     *
-     * @param status Fill-in parameter which receives the status of this operation.
-     * @return   True if the current date for this Calendar is in Daylight Savings Time,
-     *           false, otherwise.
-     * @stable ICU 2.0
-     */
-    virtual UBool inDaylightTime(UErrorCode& status) const override;
-
 public:
 
     /**