ICU 73.2  73.2
calendar.h
Go to the documentation of this file.
00001 // © 2016 and later: Unicode, Inc. and others.
00002 // License & terms of use: http://www.unicode.org/copyright.html
00003 /*
00004 ********************************************************************************
00005 *   Copyright (C) 1997-2014, International Business Machines
00006 *   Corporation and others.  All Rights Reserved.
00007 ********************************************************************************
00008 *
00009 * File CALENDAR.H
00010 *
00011 * Modification History:
00012 *
00013 *   Date        Name        Description
00014 *   04/22/97    aliu        Expanded and corrected comments and other header
00015 *                           contents.
00016 *   05/01/97    aliu        Made equals(), before(), after() arguments const.
00017 *   05/20/97    aliu        Replaced fAreFieldsSet with fAreFieldsInSync and
00018 *                           fAreAllFieldsSet.
00019 *   07/27/98    stephen     Sync up with JDK 1.2
00020 *   11/15/99    weiv        added YEAR_WOY and DOW_LOCAL
00021 *                           to EDateFields
00022 *    8/19/2002  srl         Removed Javaisms
00023 *   11/07/2003  srl         Update, clean up documentation.
00024 ********************************************************************************
00025 */
00026 
00027 #ifndef CALENDAR_H
00028 #define CALENDAR_H
00029 
00030 #include "unicode/utypes.h"
00031 
00032 #if U_SHOW_CPLUSPLUS_API
00033 
00038 #if !UCONFIG_NO_FORMATTING
00039 
00040 #include "unicode/uobject.h"
00041 #include "unicode/locid.h"
00042 #include "unicode/timezone.h"
00043 #include "unicode/ucal.h"
00044 #include "unicode/umisc.h"
00045 
00046 U_NAMESPACE_BEGIN
00047 
00048 class ICUServiceFactory;
00049 
00050 // Do not conditionalize the following with #ifndef U_HIDE_INTERNAL_API,
00051 // it is a return type for a virtual method (@internal)
00055 typedef int32_t UFieldResolutionTable[12][8];
00056 
00057 class BasicTimeZone;
00189 class U_I18N_API Calendar : public UObject {
00190 public:
00191 #ifndef U_FORCE_HIDE_DEPRECATED_API
00192 
00198     enum EDateFields {
00199 #ifndef U_HIDE_DEPRECATED_API
00200 /*
00201  * ERA may be defined on other platforms. To avoid any potential problems undefined it here.
00202  */
00203 #ifdef ERA
00204 #undef ERA
00205 #endif
00206         ERA,                  // Example: 0..1
00207         YEAR,                 // Example: 1..big number
00208         MONTH,                // Example: 0..11
00209         WEEK_OF_YEAR,         // Example: 1..53
00210         WEEK_OF_MONTH,        // Example: 1..4
00211         DATE,                 // Example: 1..31
00212         DAY_OF_YEAR,          // Example: 1..365
00213         DAY_OF_WEEK,          // Example: 1..7
00214         DAY_OF_WEEK_IN_MONTH, // Example: 1..4, may be specified as -1
00215         AM_PM,                // Example: 0..1
00216         HOUR,                 // Example: 0..11
00217         HOUR_OF_DAY,          // Example: 0..23
00218         MINUTE,               // Example: 0..59
00219         SECOND,               // Example: 0..59
00220         MILLISECOND,          // Example: 0..999
00221         ZONE_OFFSET,          // Example: -12*U_MILLIS_PER_HOUR..12*U_MILLIS_PER_HOUR
00222         DST_OFFSET,           // Example: 0 or U_MILLIS_PER_HOUR
00223         YEAR_WOY,             // 'Y' Example: 1..big number - Year of Week of Year
00224         DOW_LOCAL,            // 'e' Example: 1..7 - Day of Week / Localized
00225 
00226         EXTENDED_YEAR,
00227         JULIAN_DAY,
00228         MILLISECONDS_IN_DAY,
00229         IS_LEAP_MONTH,
00230 
00231         FIELD_COUNT = UCAL_FIELD_COUNT // See ucal.h for other fields.
00232 #endif /* U_HIDE_DEPRECATED_API */
00233     };
00234 #endif  // U_FORCE_HIDE_DEPRECATED_API
00235 
00236 #ifndef U_HIDE_DEPRECATED_API
00237 
00243     enum EDaysOfWeek {
00244         SUNDAY = 1,
00245         MONDAY,
00246         TUESDAY,
00247         WEDNESDAY,
00248         THURSDAY,
00249         FRIDAY,
00250         SATURDAY
00251     };
00252 
00257     enum EMonths {
00258         JANUARY,
00259         FEBRUARY,
00260         MARCH,
00261         APRIL,
00262         MAY,
00263         JUNE,
00264         JULY,
00265         AUGUST,
00266         SEPTEMBER,
00267         OCTOBER,
00268         NOVEMBER,
00269         DECEMBER,
00270         UNDECIMBER
00271     };
00272 
00277     enum EAmpm {
00278         AM,
00279         PM
00280     };
00281 #endif  /* U_HIDE_DEPRECATED_API */
00282 
00287     virtual ~Calendar();
00288 
00295     virtual Calendar* clone() const = 0;
00296 
00308     static Calendar* U_EXPORT2 createInstance(UErrorCode& success);
00309 
00322     static Calendar* U_EXPORT2 createInstance(TimeZone* zoneToAdopt, UErrorCode& success);
00323 
00335     static Calendar* U_EXPORT2 createInstance(const TimeZone& zone, UErrorCode& success);
00336 
00347     static Calendar* U_EXPORT2 createInstance(const Locale& aLocale, UErrorCode& success);
00348 
00362     static Calendar* U_EXPORT2 createInstance(TimeZone* zoneToAdopt, const Locale& aLocale, UErrorCode& success);
00363 
00376     static Calendar* U_EXPORT2 createInstance(const TimeZone& zone, const Locale& aLocale, UErrorCode& success);
00377 
00387     static const Locale* U_EXPORT2 getAvailableLocales(int32_t& count);
00388 
00389 
00406     static StringEnumeration* U_EXPORT2 getKeywordValuesForLocale(const char* key,
00407                     const Locale& locale, UBool commonlyUsed, UErrorCode& status);
00408 
00416     static UDate U_EXPORT2 getNow(void);
00417 
00431     inline UDate getTime(UErrorCode& status) const { return getTimeInMillis(status); }
00432 
00443     inline void setTime(UDate date, UErrorCode& status) { setTimeInMillis(date, status); }
00444 
00456     virtual bool operator==(const Calendar& that) const;
00457 
00466     bool operator!=(const Calendar& that) const {return !operator==(that);}
00467 
00478     virtual UBool isEquivalentTo(const Calendar& other) const;
00479 
00494     UBool equals(const Calendar& when, UErrorCode& status) const;
00495 
00509     UBool before(const Calendar& when, UErrorCode& status) const;
00510 
00524     UBool after(const Calendar& when, UErrorCode& status) const;
00525 
00526 #ifndef U_FORCE_HIDE_DEPRECATED_API
00527 
00547     virtual void add(EDateFields field, int32_t amount, UErrorCode& status);
00548 #endif  // U_FORCE_HIDE_DEPRECATED_API
00549 
00570     virtual void add(UCalendarDateFields field, int32_t amount, UErrorCode& status);
00571 
00572 #ifndef U_HIDE_DEPRECATED_API
00573 
00605     inline void roll(EDateFields field, UBool up, UErrorCode& status);
00606 #endif  /* U_HIDE_DEPRECATED_API */
00607 
00640     inline void roll(UCalendarDateFields field, UBool up, UErrorCode& status);
00641 
00642 #ifndef U_FORCE_HIDE_DEPRECATED_API
00643 
00674     virtual void roll(EDateFields field, int32_t amount, UErrorCode& status);
00675 #endif  // U_FORCE_HIDE_DEPRECATED_API
00676 
00708     virtual void roll(UCalendarDateFields field, int32_t amount, UErrorCode& status);
00709 
00710 #ifndef U_FORCE_HIDE_DEPRECATED_API
00711 
00766     virtual int32_t fieldDifference(UDate when, EDateFields field, UErrorCode& status);
00767 #endif  // U_FORCE_HIDE_DEPRECATED_API
00768 
00824     virtual int32_t fieldDifference(UDate when, UCalendarDateFields field, UErrorCode& status);
00825 
00834     void adoptTimeZone(TimeZone* value);
00835 
00843     void setTimeZone(const TimeZone& zone);
00844 
00853     const TimeZone& getTimeZone(void) const;
00854 
00863     TimeZone* orphanTimeZone(void);
00864 
00873     virtual UBool inDaylightTime(UErrorCode& status) const;
00874 
00887     void setLenient(UBool lenient);
00888 
00895     UBool isLenient(void) const;
00896 
00917     void setRepeatedWallTimeOption(UCalendarWallTimeOption option);
00918 
00928     UCalendarWallTimeOption getRepeatedWallTimeOption(void) const;
00929 
00951     void setSkippedWallTimeOption(UCalendarWallTimeOption option);
00952 
00963     UCalendarWallTimeOption getSkippedWallTimeOption(void) const;
00964 
00971     void setFirstDayOfWeek(UCalendarDaysOfWeek value);
00972 
00973 #ifndef U_HIDE_DEPRECATED_API
00974 
00980     EDaysOfWeek getFirstDayOfWeek(void) const;
00981 #endif  /* U_HIDE_DEPRECATED_API */
00982 
00990     UCalendarDaysOfWeek getFirstDayOfWeek(UErrorCode &status) const;
00991 
01001     void setMinimalDaysInFirstWeek(uint8_t value);
01002 
01012     uint8_t getMinimalDaysInFirstWeek(void) const;
01013 
01014 #ifndef U_FORCE_HIDE_DEPRECATED_API
01015 
01023     virtual int32_t getMinimum(EDateFields field) const;
01024 #endif  // U_FORCE_HIDE_DEPRECATED_API
01025 
01034     virtual int32_t getMinimum(UCalendarDateFields field) const;
01035 
01036 #ifndef U_FORCE_HIDE_DEPRECATED_API
01037 
01045     virtual int32_t getMaximum(EDateFields field) const;
01046 #endif  // U_FORCE_HIDE_DEPRECATED_API
01047 
01056     virtual int32_t getMaximum(UCalendarDateFields field) const;
01057 
01058 #ifndef U_FORCE_HIDE_DEPRECATED_API
01059 
01067     virtual int32_t getGreatestMinimum(EDateFields field) const;
01068 #endif  // U_FORCE_HIDE_DEPRECATED_API
01069 
01078     virtual int32_t getGreatestMinimum(UCalendarDateFields field) const;
01079 
01080 #ifndef U_FORCE_HIDE_DEPRECATED_API
01081 
01089     virtual int32_t getLeastMaximum(EDateFields field) const;
01090 #endif  // U_FORCE_HIDE_DEPRECATED_API
01091 
01100     virtual int32_t getLeastMaximum(UCalendarDateFields field) const;
01101 
01102 #ifndef U_HIDE_DEPRECATED_API
01103 
01117     int32_t getActualMinimum(EDateFields field, UErrorCode& status) const;
01118 #endif  /* U_HIDE_DEPRECATED_API */
01119 
01134     virtual int32_t getActualMinimum(UCalendarDateFields field, UErrorCode& status) const;
01135 
01152     virtual int32_t getActualMaximum(UCalendarDateFields field, UErrorCode& status) const;
01153 
01167     int32_t get(UCalendarDateFields field, UErrorCode& status) const;
01168 
01177     UBool isSet(UCalendarDateFields field) const;
01178 
01186     void set(UCalendarDateFields field, int32_t value);
01187 
01198     void set(int32_t year, int32_t month, int32_t date);
01199 
01212     void set(int32_t year, int32_t month, int32_t date, int32_t hour, int32_t minute);
01213 
01227     void set(int32_t year, int32_t month, int32_t date, int32_t hour, int32_t minute, int32_t second);
01228 
01235     void clear(void);
01236 
01245     void clear(UCalendarDateFields field);
01246 
01262     virtual UClassID getDynamicClassID(void) const override = 0;
01263 
01296     virtual const char * getType() const = 0;
01297 
01314     virtual UCalendarWeekdayType getDayOfWeekType(UCalendarDaysOfWeek dayOfWeek, UErrorCode &status) const;
01315 
01330     virtual int32_t getWeekendTransition(UCalendarDaysOfWeek dayOfWeek, UErrorCode &status) const;
01331 
01341     virtual UBool isWeekend(UDate date, UErrorCode &status) const;
01342 
01350     virtual UBool isWeekend(void) const;
01351 
01352 #ifndef U_FORCE_HIDE_DRAFT_API
01353 
01367     virtual bool inTemporalLeapYear(UErrorCode& status) const;
01368 
01387     virtual const char* getTemporalMonthCode(UErrorCode& status) const;
01388 
01408     virtual void setTemporalMonthCode(const char* temporalMonth, UErrorCode& status);
01409 
01410 #endif  // U_FORCE_HIDE_DRAFT_API
01411 
01412 protected:
01413 
01422     Calendar(UErrorCode& success);
01423 
01430     Calendar(const Calendar& source);
01431 
01438     Calendar& operator=(const Calendar& right);
01439 
01450     Calendar(TimeZone* zone, const Locale& aLocale, UErrorCode& success);
01451 
01461     Calendar(const TimeZone& zone, const Locale& aLocale, UErrorCode& success);
01462 
01471     virtual void computeTime(UErrorCode& status);
01472 
01484     virtual void computeFields(UErrorCode& status);
01485 
01495     double getTimeInMillis(UErrorCode& status) const;
01496 
01505     void setTimeInMillis( double millis, UErrorCode& status );
01506 
01516     void complete(UErrorCode& status);
01517 
01518 #ifndef U_HIDE_DEPRECATED_API
01519 
01527     inline int32_t internalGet(EDateFields field) const {return fFields[field];}
01528 #endif  /* U_HIDE_DEPRECATED_API */
01529 
01530 #ifndef U_HIDE_INTERNAL_API
01531 
01541     inline int32_t internalGet(UCalendarDateFields field, int32_t defaultValue) const {return fStamp[field]>kUnset ? fFields[field] : defaultValue;}
01542 
01551     inline int32_t internalGet(UCalendarDateFields field) const {return fFields[field];}
01552 #endif  /* U_HIDE_INTERNAL_API */
01553 
01563     virtual int32_t internalGetMonth() const;
01564 
01576     virtual int32_t internalGetMonth(int32_t defaultValue) const;
01577 
01578 #ifndef U_HIDE_DEPRECATED_API
01579 
01588     void internalSet(EDateFields field, int32_t value);
01589 #endif  /* U_HIDE_DEPRECATED_API */
01590 
01600     inline void internalSet(UCalendarDateFields field, int32_t value);
01601 
01608     virtual void prepareGetActual(UCalendarDateFields field, UBool isMinimum, UErrorCode &status);
01609 
01614     enum ELimitType {
01615 #ifndef U_HIDE_INTERNAL_API
01616       UCAL_LIMIT_MINIMUM = 0,
01617       UCAL_LIMIT_GREATEST_MINIMUM,
01618       UCAL_LIMIT_LEAST_MAXIMUM,
01619       UCAL_LIMIT_MAXIMUM,
01620       UCAL_LIMIT_COUNT
01621 #endif  /* U_HIDE_INTERNAL_API */
01622     };
01623 
01645     virtual int32_t handleGetLimit(UCalendarDateFields field, ELimitType limitType) const = 0;
01646 
01654     virtual int32_t getLimit(UCalendarDateFields field, ELimitType limitType) const;
01655 
01669     virtual int32_t handleComputeMonthStart(int32_t eyear, int32_t month,
01670                                                    UBool useMonth) const  = 0;
01671 
01679     virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month) const ;
01680 
01688     virtual int32_t handleGetYearLength(int32_t eyear) const;
01689 
01690 
01699     virtual int32_t handleGetExtendedYear() = 0;
01700 
01709     virtual int32_t handleComputeJulianDay(UCalendarDateFields bestField);
01710 
01719     virtual int32_t handleGetExtendedYearFromWeekFields(int32_t yearWoy, int32_t woy);
01720 
01727     virtual void validateField(UCalendarDateFields field, UErrorCode &status);
01728 
01729 #ifndef U_HIDE_INTERNAL_API
01730 
01736     int32_t computeJulianDay();
01737 
01745     double computeMillisInDay();
01746 
01756     int32_t computeZoneOffset(double millis, double millisInDay, UErrorCode &ec);
01757 
01758 
01767     int32_t newestStamp(UCalendarDateFields start, UCalendarDateFields end, int32_t bestSoFar) const;
01768 
01775     static constexpr int32_t kResolveSTOP = -1;
01785     static constexpr int32_t kResolveRemap = 32;
01786 
01792     static const UFieldResolutionTable kDatePrecedence[];
01793 
01799     static const UFieldResolutionTable kYearPrecedence[];
01800 
01806     static const UFieldResolutionTable kDOWPrecedence[];
01807 
01813     static const UFieldResolutionTable kMonthPrecedence[];
01814 
01842     UCalendarDateFields resolveFields(const UFieldResolutionTable *precedenceTable) const;
01843 #endif  /* U_HIDE_INTERNAL_API */
01844 
01845 
01849     virtual const UFieldResolutionTable* getFieldResolutionTable() const;
01850 
01851 #ifndef U_HIDE_INTERNAL_API
01852 
01857     UCalendarDateFields newerField(UCalendarDateFields defaultField, UCalendarDateFields alternateField) const;
01858 #endif  /* U_HIDE_INTERNAL_API */
01859 
01860 
01861 private:
01870     int32_t getActualHelper(UCalendarDateFields field, int32_t startValue, int32_t endValue, UErrorCode &status) const;
01871 
01872 
01873 protected:
01878     UBool      fIsTimeSet;
01879 
01890     UBool      fAreFieldsSet;
01891 
01897     UBool      fAreAllFieldsSet;
01898 
01906     UBool fAreFieldsVirtuallySet;
01907 
01914     UDate        internalGetTime(void) const     { return fTime; }
01915 
01923     void        internalSetTime(UDate time)     { fTime = time; }
01924 
01929     int32_t     fFields[UCAL_FIELD_COUNT];
01930 
01931 #ifndef U_FORCE_HIDE_DEPRECATED_API
01932 
01936     UBool      fIsSet[UCAL_FIELD_COUNT];
01937 #endif  // U_FORCE_HIDE_DEPRECATED_API
01938 
01942     enum {
01943         kUnset                 = 0,
01944         kInternallySet,
01945         kMinimumUserStamp
01946     };
01947 
01954     int32_t        fStamp[UCAL_FIELD_COUNT];
01955 
01980     virtual void handleComputeFields(int32_t julianDay, UErrorCode &status);
01981 
01982 #ifndef U_HIDE_INTERNAL_API
01983 
01988     int32_t getGregorianYear() const {
01989         return fGregorianYear;
01990     }
01991 
01997     int32_t getGregorianMonth() const {
01998         return fGregorianMonth;
01999     }
02000 
02006     int32_t getGregorianDayOfYear() const {
02007         return fGregorianDayOfYear;
02008     }
02009 
02015     int32_t getGregorianDayOfMonth() const {
02016       return fGregorianDayOfMonth;
02017     }
02018 #endif  /* U_HIDE_INTERNAL_API */
02019 
02026     virtual int32_t getDefaultMonthInYear(int32_t eyear) ;
02027 
02028 
02036     virtual int32_t getDefaultDayInMonth(int32_t eyear, int32_t month);
02037 
02038     //-------------------------------------------------------------------------
02039     // Protected utility methods for use by subclasses.  These are very handy
02040     // for implementing add, roll, and computeFields.
02041     //-------------------------------------------------------------------------
02042 
02072     virtual void pinField(UCalendarDateFields field, UErrorCode& status);
02073 
02117     int32_t weekNumber(int32_t desiredDay, int32_t dayOfPeriod, int32_t dayOfWeek);
02118 
02119 
02120 #ifndef U_HIDE_INTERNAL_API
02121 
02151     inline int32_t weekNumber(int32_t dayOfPeriod, int32_t dayOfWeek);
02152 
02157     int32_t getLocalDOW();
02158 #endif  /* U_HIDE_INTERNAL_API */
02159 
02160 private:
02161 
02165     int32_t fNextStamp;// = MINIMUM_USER_STAMP;
02166 
02171     void recalculateStamp();
02172 
02176     UDate        fTime;
02177 
02181     UBool      fLenient;
02182 
02187     TimeZone*   fZone;
02188 
02193     UCalendarWallTimeOption fRepeatedWallTime;
02194 
02199     UCalendarWallTimeOption fSkippedWallTime;
02200 
02209     UCalendarDaysOfWeek fFirstDayOfWeek;
02210     uint8_t     fMinimalDaysInFirstWeek;
02211     UCalendarDaysOfWeek fWeekendOnset;
02212     int32_t fWeekendOnsetMillis;
02213     UCalendarDaysOfWeek fWeekendCease;
02214     int32_t fWeekendCeaseMillis;
02215 
02226     void        setWeekData(const Locale& desiredLocale, const char *type, UErrorCode& success);
02227 
02237     void updateTime(UErrorCode& status);
02238 
02244     int32_t fGregorianYear;
02245 
02251     int32_t fGregorianMonth;
02252 
02258     int32_t fGregorianDayOfYear;
02259 
02265     int32_t fGregorianDayOfMonth;
02266 
02267     /* calculations */
02268 
02275     void computeGregorianAndDOWFields(int32_t julianDay, UErrorCode &ec);
02276 
02277 protected:
02278 
02286     void computeGregorianFields(int32_t julianDay, UErrorCode &ec);
02287 
02288 private:
02289 
02310     void computeWeekFields(UErrorCode &ec);
02311 
02312 
02320     void validateFields(UErrorCode &status);
02321 
02329     void validateField(UCalendarDateFields field, int32_t min, int32_t max, UErrorCode& status);
02330 
02331  protected:
02332 #ifndef U_HIDE_INTERNAL_API
02333 
02342     static uint8_t julianDayToDayOfWeek(double julian);
02343 #endif  /* U_HIDE_INTERNAL_API */
02344 
02345  private:
02346     char validLocale[ULOC_FULLNAME_CAPACITY];
02347     char actualLocale[ULOC_FULLNAME_CAPACITY];
02348 
02349  public:
02350 #if !UCONFIG_NO_SERVICE
02351 
02355 #ifndef U_HIDE_INTERNAL_API
02356 
02362     static StringEnumeration* getAvailableLocales(void);
02363 
02377     static URegistryKey registerFactory(ICUServiceFactory* toAdopt, UErrorCode& status);
02378 
02394     static UBool unregister(URegistryKey key, UErrorCode& status);
02395 #endif  /* U_HIDE_INTERNAL_API */
02396 
02401     friend class CalendarFactory;
02402 
02407     friend class CalendarService;
02408 
02413     friend class DefaultCalendarFactory;
02414 #endif /* !UCONFIG_NO_SERVICE */
02415 
02420     virtual UBool haveDefaultCentury() const = 0;
02421 
02426     virtual UDate defaultCenturyStart() const = 0;
02431     virtual int32_t defaultCenturyStartYear() const = 0;
02432 
02439     Locale getLocale(ULocDataLocaleType type, UErrorCode &status) const;
02440 
02446     virtual int32_t getRelatedYear(UErrorCode &status) const;
02447 
02453     virtual void setRelatedYear(int32_t year);
02454 
02455 #ifndef U_HIDE_INTERNAL_API
02456 
02462     const char* getLocaleID(ULocDataLocaleType type, UErrorCode &status) const;
02463 #endif  /* U_HIDE_INTERNAL_API */
02464 
02465 private:
02470     BasicTimeZone* getBasicTimeZone() const;
02471 
02479     UBool getImmediatePreviousZoneTransition(UDate base, UDate *transitionTime, UErrorCode& status) const;
02480 
02481 public:
02482 #ifndef U_HIDE_INTERNAL_API
02483 
02491     static Calendar * U_EXPORT2 makeInstance(
02492             const Locale &locale, UErrorCode &status);
02493 
02504     static void U_EXPORT2 getCalendarTypeFromLocale(
02505             const Locale &locale,
02506             char *typeBuffer,
02507             int32_t typeBufferSize,
02508             UErrorCode &status);
02509 #endif  /* U_HIDE_INTERNAL_API */
02510 };
02511 
02512 // -------------------------------------
02513 
02514 inline Calendar*
02515 Calendar::createInstance(TimeZone* zone, UErrorCode& errorCode)
02516 {
02517     // since the Locale isn't specified, use the default locale
02518     return createInstance(zone, Locale::getDefault(), errorCode);
02519 }
02520 
02521 // -------------------------------------
02522 
02523 inline void
02524 Calendar::roll(UCalendarDateFields field, UBool up, UErrorCode& status)
02525 {
02526     roll(field, (int32_t)(up ? +1 : -1), status);
02527 }
02528 
02529 #ifndef U_HIDE_DEPRECATED_API
02530 inline void
02531 Calendar::roll(EDateFields field, UBool up, UErrorCode& status)
02532 {
02533     roll((UCalendarDateFields) field, up, status);
02534 }
02535 #endif  /* U_HIDE_DEPRECATED_API */
02536 
02537 
02538 // -------------------------------------
02539 
02545 inline void
02546 Calendar::internalSet(UCalendarDateFields field, int32_t value)
02547 {
02548     fFields[field] = value;
02549     fStamp[field] = kInternallySet;
02550     fIsSet[field]     = true; // Remove later
02551 }
02552 
02553 
02554 #ifndef U_HIDE_INTERNAL_API
02555 inline int32_t  Calendar::weekNumber(int32_t dayOfPeriod, int32_t dayOfWeek)
02556 {
02557   return weekNumber(dayOfPeriod, dayOfPeriod, dayOfWeek);
02558 }
02559 #endif  /* U_HIDE_INTERNAL_API */
02560 
02561 U_NAMESPACE_END
02562 
02563 #endif /* #if !UCONFIG_NO_FORMATTING */
02564 
02565 #endif /* U_SHOW_CPLUSPLUS_API */
02566 
02567 #endif // _CALENDAR