Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(14)

Side by Side Diff: source/i18n/unicode/calendar.h

Issue 845603002: Update ICU to 54.1 step 1 (Closed) Base URL: https://chromium.googlesource.com/chromium/deps/icu.git@master
Patch Set: remove unusued directories Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « source/i18n/unicode/alphaindex.h ('k') | source/i18n/unicode/coleitr.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 ******************************************************************************** 2 ********************************************************************************
3 * Copyright (C) 1997-2013, International Business Machines 3 * Copyright (C) 1997-2014, International Business Machines
4 * Corporation and others. All Rights Reserved. 4 * Corporation and others. All Rights Reserved.
5 ******************************************************************************** 5 ********************************************************************************
6 * 6 *
7 * File CALENDAR.H 7 * File CALENDAR.H
8 * 8 *
9 * Modification History: 9 * Modification History:
10 * 10 *
11 * Date Name Description 11 * Date Name Description
12 * 04/22/97 aliu Expanded and corrected comments and other header 12 * 04/22/97 aliu Expanded and corrected comments and other header
13 * contents. 13 * contents.
(...skipping 1692 matching lines...) Expand 10 before | Expand all | Expand 10 after
1706 /** 1706 /**
1707 * Subclasses must override this to convert from week fields 1707 * Subclasses must override this to convert from week fields
1708 * (YEAR_WOY and WEEK_OF_YEAR) to an extended year in the case 1708 * (YEAR_WOY and WEEK_OF_YEAR) to an extended year in the case
1709 * where YEAR, EXTENDED_YEAR are not set. 1709 * where YEAR, EXTENDED_YEAR are not set.
1710 * The Calendar implementation assumes yearWoy is in extended gregorian form 1710 * The Calendar implementation assumes yearWoy is in extended gregorian form
1711 * @return the extended year, UCAL_EXTENDED_YEAR 1711 * @return the extended year, UCAL_EXTENDED_YEAR
1712 * @internal 1712 * @internal
1713 */ 1713 */
1714 virtual int32_t handleGetExtendedYearFromWeekFields(int32_t yearWoy, int32_t woy); 1714 virtual int32_t handleGetExtendedYearFromWeekFields(int32_t yearWoy, int32_t woy);
1715 1715
1716 /**
1717 * Validate a single field of this calendar. Subclasses should
1718 * override this method to validate any calendar-specific fields.
1719 * Generic fields can be handled by
1720 * <code>Calendar::validateField()</code>.
1721 * @see #validateField(int, int, int, int&)
1722 * @internal
1723 */
1724 virtual void validateField(UCalendarDateFields field, UErrorCode &status);
1725
1716 #ifndef U_HIDE_INTERNAL_API 1726 #ifndef U_HIDE_INTERNAL_API
1717 /** 1727 /**
1718 * Compute the Julian day from fields. Will determine whether to use 1728 * Compute the Julian day from fields. Will determine whether to use
1719 * the JULIAN_DAY field directly, or other fields. 1729 * the JULIAN_DAY field directly, or other fields.
1720 * @return the julian day 1730 * @return the julian day
1721 * @internal 1731 * @internal
1722 */ 1732 */
1723 int32_t computeJulianDay(); 1733 int32_t computeJulianDay();
1724 1734
1725 /** 1735 /**
(...skipping 421 matching lines...) Expand 10 before | Expand all | Expand 10 after
2147 */ 2157 */
2148 UDate fTime; 2158 UDate fTime;
2149 2159
2150 /** 2160 /**
2151 * @see #setLenient 2161 * @see #setLenient
2152 */ 2162 */
2153 UBool fLenient; 2163 UBool fLenient;
2154 2164
2155 /** 2165 /**
2156 * Time zone affects the time calculation done by Calendar. Calendar subclas ses use 2166 * Time zone affects the time calculation done by Calendar. Calendar subclas ses use
2157 * the time zone data to produce the local time. 2167 * the time zone data to produce the local time. Always set; never NULL.
2158 */ 2168 */
2159 TimeZone* fZone; 2169 TimeZone* fZone;
2160 2170
2161 /** 2171 /**
2162 * Option for rpeated wall time 2172 * Option for rpeated wall time
2163 * @see #setRepeatedWallTimeOption 2173 * @see #setRepeatedWallTimeOption
2164 */ 2174 */
2165 UCalendarWallTimeOption fRepeatedWallTime; 2175 UCalendarWallTimeOption fRepeatedWallTime;
2166 2176
2167 /** 2177 /**
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
2286 * Ensure that each field is within its valid range by calling {@link 2296 * Ensure that each field is within its valid range by calling {@link
2287 * #validateField(int, int&)} on each field that has been set. This method 2297 * #validateField(int, int&)} on each field that has been set. This method
2288 * should only be called if this calendar is not lenient. 2298 * should only be called if this calendar is not lenient.
2289 * @see #isLenient 2299 * @see #isLenient
2290 * @see #validateField(int, int&) 2300 * @see #validateField(int, int&)
2291 * @internal 2301 * @internal
2292 */ 2302 */
2293 void validateFields(UErrorCode &status); 2303 void validateFields(UErrorCode &status);
2294 2304
2295 /** 2305 /**
2296 * Validate a single field of this calendar. Subclasses should
2297 * override this method to validate any calendar-specific fields.
2298 * Generic fields can be handled by
2299 * <code>Calendar::validateField()</code>.
2300 * @see #validateField(int, int, int, int&)
2301 * @internal
2302 */
2303 virtual void validateField(UCalendarDateFields field, UErrorCode &status);
2304
2305 /**
2306 * Validate a single field of this calendar given its minimum and 2306 * Validate a single field of this calendar given its minimum and
2307 * maximum allowed value. If the field is out of range, 2307 * maximum allowed value. If the field is out of range,
2308 * <code>U_ILLEGAL_ARGUMENT_ERROR</code> will be set. Subclasses may 2308 * <code>U_ILLEGAL_ARGUMENT_ERROR</code> will be set. Subclasses may
2309 * use this method in their implementation of {@link 2309 * use this method in their implementation of {@link
2310 * #validateField(int, int&)}. 2310 * #validateField(int, int&)}.
2311 * @internal 2311 * @internal
2312 */ 2312 */
2313 void validateField(UCalendarDateFields field, int32_t min, int32_t max, UErr orCode& status); 2313 void validateField(UCalendarDateFields field, int32_t min, int32_t max, UErr orCode& status);
2314 2314
2315 protected: 2315 protected:
(...skipping 25 matching lines...) Expand all
2341 * Return a StringEnumeration over the locales available at the time of the call, 2341 * Return a StringEnumeration over the locales available at the time of the call,
2342 * including registered locales. 2342 * including registered locales.
2343 * @return a StringEnumeration over the locales available at the time of the call 2343 * @return a StringEnumeration over the locales available at the time of the call
2344 * @internal 2344 * @internal
2345 */ 2345 */
2346 static StringEnumeration* getAvailableLocales(void); 2346 static StringEnumeration* getAvailableLocales(void);
2347 2347
2348 /** 2348 /**
2349 * Register a new Calendar factory. The factory will be adopted. 2349 * Register a new Calendar factory. The factory will be adopted.
2350 * INTERNAL in 2.6 2350 * INTERNAL in 2.6
2351 *
2352 * Because ICU may choose to cache Calendars internally, this must
2353 * be called at application startup, prior to any calls to
2354 * Calendar::createInstance to avoid undefined behavior.
2355 *
2351 * @param toAdopt the factory instance to be adopted 2356 * @param toAdopt the factory instance to be adopted
2352 * @param status the in/out status code, no special meanings are assigned 2357 * @param status the in/out status code, no special meanings are assigned
2353 * @return a registry key that can be used to unregister this factory 2358 * @return a registry key that can be used to unregister this factory
2354 * @internal 2359 * @internal
2355 */ 2360 */
2356 static URegistryKey registerFactory(ICUServiceFactory* toAdopt, UErrorCode& status); 2361 static URegistryKey registerFactory(ICUServiceFactory* toAdopt, UErrorCode& status);
2357 2362
2358 /** 2363 /**
2359 * Unregister a previously-registered CalendarFactory using the key returned from the 2364 * Unregister a previously-registered CalendarFactory using the key returned from the
2360 * register call. Key becomes invalid after a successful call and should no t be used again. 2365 * register call. Key becomes invalid after a successful call and should no t be used again.
2361 * The CalendarFactory corresponding to the key will be deleted. 2366 * The CalendarFactory corresponding to the key will be deleted.
2362 * INTERNAL in 2.6 2367 * INTERNAL in 2.6
2368 *
2369 * Because ICU may choose to cache Calendars internally, this should
2370 * be called during application shutdown, after all calls to
2371 * Calendar::createInstance to avoid undefined behavior.
2372 *
2363 * @param key the registry key returned by a previous call to registerFactor y 2373 * @param key the registry key returned by a previous call to registerFactor y
2364 * @param status the in/out status code, no special meanings are assigned 2374 * @param status the in/out status code, no special meanings are assigned
2365 * @return TRUE if the factory for the key was successfully unregistered 2375 * @return TRUE if the factory for the key was successfully unregistered
2366 * @internal 2376 * @internal
2367 */ 2377 */
2368 static UBool unregister(URegistryKey key, UErrorCode& status); 2378 static UBool unregister(URegistryKey key, UErrorCode& status);
2369 #endif /* U_HIDE_INTERNAL_API */ 2379 #endif /* U_HIDE_INTERNAL_API */
2370 2380
2371 /** 2381 /**
2372 * Multiple Calendar Implementation 2382 * Multiple Calendar Implementation
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
2405 virtual int32_t defaultCenturyStartYear() const = 0; 2415 virtual int32_t defaultCenturyStartYear() const = 0;
2406 2416
2407 /** Get the locale for this calendar object. You can choose between valid an d actual locale. 2417 /** Get the locale for this calendar object. You can choose between valid an d actual locale.
2408 * @param type type of the locale we're looking for (valid or actual) 2418 * @param type type of the locale we're looking for (valid or actual)
2409 * @param status error code for the operation 2419 * @param status error code for the operation
2410 * @return the locale 2420 * @return the locale
2411 * @stable ICU 2.8 2421 * @stable ICU 2.8
2412 */ 2422 */
2413 Locale getLocale(ULocDataLocaleType type, UErrorCode &status) const; 2423 Locale getLocale(ULocDataLocaleType type, UErrorCode &status) const;
2414 2424
2425 /**
2426 * @return The related Gregorian year; will be obtained by modifying th e value
2427 * obtained by get from UCAL_EXTENDED_YEAR field
2428 * @internal
2429 */
2430 virtual int32_t getRelatedYear(UErrorCode &status) const;
2431
2432 /**
2433 * @param year The related Gregorian year to set; will be modified as neces sary then
2434 * set in UCAL_EXTENDED_YEAR field
2435 * @internal
2436 */
2437 virtual void setRelatedYear(int32_t year);
2438
2415 #ifndef U_HIDE_INTERNAL_API 2439 #ifndef U_HIDE_INTERNAL_API
2416 /** Get the locale for this calendar object. You can choose between valid an d actual locale. 2440 /** Get the locale for this calendar object. You can choose between valid an d actual locale.
2417 * @param type type of the locale we're looking for (valid or actual) 2441 * @param type type of the locale we're looking for (valid or actual)
2418 * @param status error code for the operation 2442 * @param status error code for the operation
2419 * @return the locale 2443 * @return the locale
2420 * @internal 2444 * @internal
2421 */ 2445 */
2422 const char* getLocaleID(ULocDataLocaleType type, UErrorCode &status) const; 2446 const char* getLocaleID(ULocDataLocaleType type, UErrorCode &status) const;
2423 #endif /* U_HIDE_INTERNAL_API */ 2447 #endif /* U_HIDE_INTERNAL_API */
2424 2448
2425 private: 2449 private:
2426 /** 2450 /**
2427 * Cast TimeZone used by this object to BasicTimeZone, or NULL if the TimeZo ne 2451 * Cast TimeZone used by this object to BasicTimeZone, or NULL if the TimeZo ne
2428 * is not an instance of BasicTimeZone. 2452 * is not an instance of BasicTimeZone.
2429 */ 2453 */
2430 BasicTimeZone* getBasicTimeZone() const; 2454 BasicTimeZone* getBasicTimeZone() const;
2455
2456 /**
2457 * Find the previous zone transtion near the given time.
2458 * @param base The base time, inclusive
2459 * @param transitionTime Receives the result time
2460 * @param status The error status
2461 * @return TRUE if a transition is found.
2462 */
2463 UBool getImmediatePreviousZoneTransition(UDate base, UDate *transitionTime, UErrorCode& status) const;
2431 }; 2464 };
2432 2465
2433 // ------------------------------------- 2466 // -------------------------------------
2434 2467
2435 inline Calendar* 2468 inline Calendar*
2436 Calendar::createInstance(TimeZone* zone, UErrorCode& errorCode) 2469 Calendar::createInstance(TimeZone* zone, UErrorCode& errorCode)
2437 { 2470 {
2438 // since the Locale isn't specified, use the default locale 2471 // since the Locale isn't specified, use the default locale
2439 return createInstance(zone, Locale::getDefault(), errorCode); 2472 return createInstance(zone, Locale::getDefault(), errorCode);
2440 } 2473 }
2441 2474
2442 // ------------------------------------- 2475 // -------------------------------------
2443 2476
2444 inline void 2477 inline void
2445 Calendar::roll(UCalendarDateFields field, UBool up, UErrorCode& status) 2478 Calendar::roll(UCalendarDateFields field, UBool up, UErrorCode& status)
2446 { 2479 {
2447 roll(field, (int32_t)(up ? +1 : -1), status); 2480 roll(field, (int32_t)(up ? +1 : -1), status);
2448 } 2481 }
2449 2482
2450 #ifndef U_HIDE_DEPRECATED_API 2483 #ifndef U_HIDE_DEPRECATED_API
2451 inline void 2484 inline void
2452 Calendar::roll(EDateFields field, UBool up, UErrorCode& status) 2485 Calendar::roll(EDateFields field, UBool up, UErrorCode& status)
2453 { 2486 {
2454 roll((UCalendarDateFields) field, up, status); 2487 roll((UCalendarDateFields) field, up, status);
2455 } 2488 }
2456 #endif 2489 #endif /* U_HIDE_DEPRECATED_API */
2457 2490
2458 2491
2459 // ------------------------------------- 2492 // -------------------------------------
2460 2493
2461 /** 2494 /**
2462 * Fast method for subclasses. The caller must maintain fUserSetDSTOffset and 2495 * Fast method for subclasses. The caller must maintain fUserSetDSTOffset and
2463 * fUserSetZoneOffset, as well as the isSet[] array. 2496 * fUserSetZoneOffset, as well as the isSet[] array.
2464 */ 2497 */
2465 2498
2466 inline void 2499 inline void
2467 Calendar::internalSet(UCalendarDateFields field, int32_t value) 2500 Calendar::internalSet(UCalendarDateFields field, int32_t value)
2468 { 2501 {
2469 fFields[field] = value; 2502 fFields[field] = value;
2470 fStamp[field] = kInternallySet; 2503 fStamp[field] = kInternallySet;
2471 fIsSet[field] = TRUE; // Remove later 2504 fIsSet[field] = TRUE; // Remove later
2472 } 2505 }
2473 2506
2474 2507
2475 #ifndef U_HIDE_INTERNAL_API 2508 #ifndef U_HIDE_INTERNAL_API
2476 inline int32_t Calendar::weekNumber(int32_t dayOfPeriod, int32_t dayOfWeek) 2509 inline int32_t Calendar::weekNumber(int32_t dayOfPeriod, int32_t dayOfWeek)
2477 { 2510 {
2478 return weekNumber(dayOfPeriod, dayOfPeriod, dayOfWeek); 2511 return weekNumber(dayOfPeriod, dayOfPeriod, dayOfWeek);
2479 } 2512 }
2480 #endif 2513 #endif /* U_HIDE_INTERNAL_API */
2481 2514
2482 U_NAMESPACE_END 2515 U_NAMESPACE_END
2483 2516
2484 #endif /* #if !UCONFIG_NO_FORMATTING */ 2517 #endif /* #if !UCONFIG_NO_FORMATTING */
2485 2518
2486 #endif // _CALENDAR 2519 #endif // _CALENDAR
OLDNEW
« no previous file with comments | « source/i18n/unicode/alphaindex.h ('k') | source/i18n/unicode/coleitr.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698