1*0e209d39SAndroid Build Coastguard Worker // © 2016 and later: Unicode, Inc. and others. 2*0e209d39SAndroid Build Coastguard Worker // License & terms of use: http://www.unicode.org/copyright.html 3*0e209d39SAndroid Build Coastguard Worker /* 4*0e209d39SAndroid Build Coastguard Worker ***************************************************************************** 5*0e209d39SAndroid Build Coastguard Worker * Copyright (C) 2013, International Business Machines Corporation 6*0e209d39SAndroid Build Coastguard Worker * and others. All Rights Reserved. 7*0e209d39SAndroid Build Coastguard Worker ***************************************************************************** 8*0e209d39SAndroid Build Coastguard Worker * 9*0e209d39SAndroid Build Coastguard Worker * File DANGICAL.H 10*0e209d39SAndroid Build Coastguard Worker ***************************************************************************** 11*0e209d39SAndroid Build Coastguard Worker */ 12*0e209d39SAndroid Build Coastguard Worker 13*0e209d39SAndroid Build Coastguard Worker #ifndef DANGICAL_H 14*0e209d39SAndroid Build Coastguard Worker #define DANGICAL_H 15*0e209d39SAndroid Build Coastguard Worker 16*0e209d39SAndroid Build Coastguard Worker #include "unicode/utypes.h" 17*0e209d39SAndroid Build Coastguard Worker 18*0e209d39SAndroid Build Coastguard Worker #if !UCONFIG_NO_FORMATTING 19*0e209d39SAndroid Build Coastguard Worker 20*0e209d39SAndroid Build Coastguard Worker #include "unicode/calendar.h" 21*0e209d39SAndroid Build Coastguard Worker #include "unicode/timezone.h" 22*0e209d39SAndroid Build Coastguard Worker #include "chnsecal.h" 23*0e209d39SAndroid Build Coastguard Worker 24*0e209d39SAndroid Build Coastguard Worker U_NAMESPACE_BEGIN 25*0e209d39SAndroid Build Coastguard Worker 26*0e209d39SAndroid Build Coastguard Worker /** 27*0e209d39SAndroid Build Coastguard Worker * <p><code>DangiCalendar</code> is a concrete subclass of {@link Calendar} 28*0e209d39SAndroid Build Coastguard Worker * that implements a traditional Korean lunisolar calendar.</p> 29*0e209d39SAndroid Build Coastguard Worker * 30*0e209d39SAndroid Build Coastguard Worker * <p>DangiCalendar usually should be instantiated using 31*0e209d39SAndroid Build Coastguard Worker * {@link com.ibm.icu.util.Calendar#getInstance(ULocale)} passing in a <code>ULocale</code> 32*0e209d39SAndroid Build Coastguard Worker * with the tag <code>"@calendar=dangi"</code>.</p> 33*0e209d39SAndroid Build Coastguard Worker * 34*0e209d39SAndroid Build Coastguard Worker * @internal 35*0e209d39SAndroid Build Coastguard Worker */ 36*0e209d39SAndroid Build Coastguard Worker class DangiCalendar : public ChineseCalendar { 37*0e209d39SAndroid Build Coastguard Worker public: 38*0e209d39SAndroid Build Coastguard Worker //------------------------------------------------------------------------- 39*0e209d39SAndroid Build Coastguard Worker // Constructors... 40*0e209d39SAndroid Build Coastguard Worker //------------------------------------------------------------------------- 41*0e209d39SAndroid Build Coastguard Worker 42*0e209d39SAndroid Build Coastguard Worker /** 43*0e209d39SAndroid Build Coastguard Worker * Constructs a DangiCalendar based on the current time in the default time zone 44*0e209d39SAndroid Build Coastguard Worker * with the given locale. 45*0e209d39SAndroid Build Coastguard Worker * 46*0e209d39SAndroid Build Coastguard Worker * @param aLocale The given locale. 47*0e209d39SAndroid Build Coastguard Worker * @param success Indicates the status of DangiCalendar object construction. 48*0e209d39SAndroid Build Coastguard Worker * Returns U_ZERO_ERROR if constructed successfully. 49*0e209d39SAndroid Build Coastguard Worker * @internal 50*0e209d39SAndroid Build Coastguard Worker */ 51*0e209d39SAndroid Build Coastguard Worker DangiCalendar(const Locale& aLocale, UErrorCode &success); 52*0e209d39SAndroid Build Coastguard Worker 53*0e209d39SAndroid Build Coastguard Worker /** 54*0e209d39SAndroid Build Coastguard Worker * Copy Constructor 55*0e209d39SAndroid Build Coastguard Worker * @internal 56*0e209d39SAndroid Build Coastguard Worker */ 57*0e209d39SAndroid Build Coastguard Worker DangiCalendar(const DangiCalendar& other); 58*0e209d39SAndroid Build Coastguard Worker 59*0e209d39SAndroid Build Coastguard Worker /** 60*0e209d39SAndroid Build Coastguard Worker * Destructor. 61*0e209d39SAndroid Build Coastguard Worker * @internal 62*0e209d39SAndroid Build Coastguard Worker */ 63*0e209d39SAndroid Build Coastguard Worker virtual ~DangiCalendar(); 64*0e209d39SAndroid Build Coastguard Worker 65*0e209d39SAndroid Build Coastguard Worker /** 66*0e209d39SAndroid Build Coastguard Worker * Clone. 67*0e209d39SAndroid Build Coastguard Worker * @internal 68*0e209d39SAndroid Build Coastguard Worker */ 69*0e209d39SAndroid Build Coastguard Worker virtual DangiCalendar* clone() const override; 70*0e209d39SAndroid Build Coastguard Worker 71*0e209d39SAndroid Build Coastguard Worker //---------------------------------------------------------------------- 72*0e209d39SAndroid Build Coastguard Worker // Internal methods & astronomical calculations 73*0e209d39SAndroid Build Coastguard Worker //---------------------------------------------------------------------- 74*0e209d39SAndroid Build Coastguard Worker 75*0e209d39SAndroid Build Coastguard Worker /** 76*0e209d39SAndroid Build Coastguard Worker * @return The related Gregorian year; will be obtained by modifying the value 77*0e209d39SAndroid Build Coastguard Worker * obtained by get from UCAL_EXTENDED_YEAR field 78*0e209d39SAndroid Build Coastguard Worker * @internal 79*0e209d39SAndroid Build Coastguard Worker */ 80*0e209d39SAndroid Build Coastguard Worker virtual int32_t getRelatedYear(UErrorCode &status) const override; 81*0e209d39SAndroid Build Coastguard Worker 82*0e209d39SAndroid Build Coastguard Worker /** 83*0e209d39SAndroid Build Coastguard Worker * @param year The related Gregorian year to set; will be modified as necessary then 84*0e209d39SAndroid Build Coastguard Worker * set in UCAL_EXTENDED_YEAR field 85*0e209d39SAndroid Build Coastguard Worker * @internal 86*0e209d39SAndroid Build Coastguard Worker */ 87*0e209d39SAndroid Build Coastguard Worker virtual void setRelatedYear(int32_t year) override; 88*0e209d39SAndroid Build Coastguard Worker 89*0e209d39SAndroid Build Coastguard Worker private: 90*0e209d39SAndroid Build Coastguard Worker 91*0e209d39SAndroid Build Coastguard Worker // UObject stuff 92*0e209d39SAndroid Build Coastguard Worker public: 93*0e209d39SAndroid Build Coastguard Worker /** 94*0e209d39SAndroid Build Coastguard Worker * @return The class ID for this object. All objects of a given class have the 95*0e209d39SAndroid Build Coastguard Worker * same class ID. Objects of other classes have different class IDs. 96*0e209d39SAndroid Build Coastguard Worker * @internal 97*0e209d39SAndroid Build Coastguard Worker */ 98*0e209d39SAndroid Build Coastguard Worker virtual UClassID getDynamicClassID() const override; 99*0e209d39SAndroid Build Coastguard Worker 100*0e209d39SAndroid Build Coastguard Worker /** 101*0e209d39SAndroid Build Coastguard Worker * Return the class ID for this class. This is useful only for comparing to a return 102*0e209d39SAndroid Build Coastguard Worker * value from getDynamicClassID(). For example: 103*0e209d39SAndroid Build Coastguard Worker * 104*0e209d39SAndroid Build Coastguard Worker * Base* polymorphic_pointer = createPolymorphicObject(); 105*0e209d39SAndroid Build Coastguard Worker * if (polymorphic_pointer->getDynamicClassID() == 106*0e209d39SAndroid Build Coastguard Worker * Derived::getStaticClassID()) ... 107*0e209d39SAndroid Build Coastguard Worker * 108*0e209d39SAndroid Build Coastguard Worker * @return The class ID for all objects of this class. 109*0e209d39SAndroid Build Coastguard Worker * @internal 110*0e209d39SAndroid Build Coastguard Worker */ 111*0e209d39SAndroid Build Coastguard Worker U_I18N_API static UClassID U_EXPORT2 getStaticClassID(); 112*0e209d39SAndroid Build Coastguard Worker 113*0e209d39SAndroid Build Coastguard Worker /** 114*0e209d39SAndroid Build Coastguard Worker * return the calendar type, "dangi". 115*0e209d39SAndroid Build Coastguard Worker * 116*0e209d39SAndroid Build Coastguard Worker * @return calendar type 117*0e209d39SAndroid Build Coastguard Worker * @internal 118*0e209d39SAndroid Build Coastguard Worker */ 119*0e209d39SAndroid Build Coastguard Worker const char * getType() const override; 120*0e209d39SAndroid Build Coastguard Worker 121*0e209d39SAndroid Build Coastguard Worker protected: 122*0e209d39SAndroid Build Coastguard Worker virtual Setting getSetting(UErrorCode& status) const override; 123*0e209d39SAndroid Build Coastguard Worker 124*0e209d39SAndroid Build Coastguard Worker private: 125*0e209d39SAndroid Build Coastguard Worker 126*0e209d39SAndroid Build Coastguard Worker DangiCalendar(); // default constructor not implemented 127*0e209d39SAndroid Build Coastguard Worker }; 128*0e209d39SAndroid Build Coastguard Worker 129*0e209d39SAndroid Build Coastguard Worker U_NAMESPACE_END 130*0e209d39SAndroid Build Coastguard Worker 131*0e209d39SAndroid Build Coastguard Worker #endif 132*0e209d39SAndroid Build Coastguard Worker #endif 133*0e209d39SAndroid Build Coastguard Worker 134*0e209d39SAndroid Build Coastguard Worker 135*0e209d39SAndroid Build Coastguard Worker 136