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) 2003-2008, 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 INDIANCAL.H 10*0e209d39SAndroid Build Coastguard Worker ***************************************************************************** 11*0e209d39SAndroid Build Coastguard Worker */ 12*0e209d39SAndroid Build Coastguard Worker 13*0e209d39SAndroid Build Coastguard Worker #ifndef INDIANCAL_H 14*0e209d39SAndroid Build Coastguard Worker #define INDIANCAL_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 22*0e209d39SAndroid Build Coastguard Worker U_NAMESPACE_BEGIN 23*0e209d39SAndroid Build Coastguard Worker 24*0e209d39SAndroid Build Coastguard Worker /** 25*0e209d39SAndroid Build Coastguard Worker * Concrete class which provides the Indian calendar. 26*0e209d39SAndroid Build Coastguard Worker * <P> 27*0e209d39SAndroid Build Coastguard Worker * <code>IndianCalendar</code> is a subclass of <code>Calendar</code> 28*0e209d39SAndroid Build Coastguard Worker * that numbers years since the beginning of SAKA ERA. This is the civil calendar 29*0e209d39SAndroid Build Coastguard Worker * which is accepted by government of India as Indian National Calendar. 30*0e209d39SAndroid Build Coastguard Worker * The two calendars most widely used in India today are the Vikrama calendar 31*0e209d39SAndroid Build Coastguard Worker * followed in North India and the Shalivahana or Saka calendar which is followed 32*0e209d39SAndroid Build Coastguard Worker * in South India and Maharashtra. 33*0e209d39SAndroid Build Coastguard Worker 34*0e209d39SAndroid Build Coastguard Worker * A variant of the Shalivahana Calendar was reformed and standardized as the 35*0e209d39SAndroid Build Coastguard Worker * Indian National calendar in 1957. 36*0e209d39SAndroid Build Coastguard Worker * <p> 37*0e209d39SAndroid Build Coastguard Worker * Some details of Indian National Calendar (to be implemented) : 38*0e209d39SAndroid Build Coastguard Worker * The Months 39*0e209d39SAndroid Build Coastguard Worker * Month Length Start date (Gregorian) 40*0e209d39SAndroid Build Coastguard Worker * ================================================= 41*0e209d39SAndroid Build Coastguard Worker * 1 Chaitra 30/31 March 22* 42*0e209d39SAndroid Build Coastguard Worker * 2 Vaisakha 31 April 21 43*0e209d39SAndroid Build Coastguard Worker * 3 Jyaistha 31 May 22 44*0e209d39SAndroid Build Coastguard Worker * 4 Asadha 31 June 22 45*0e209d39SAndroid Build Coastguard Worker * 5 Sravana 31 July 23 46*0e209d39SAndroid Build Coastguard Worker * 6 Bhadra 31 August 23 47*0e209d39SAndroid Build Coastguard Worker * 7 Asvina 30 September 23 48*0e209d39SAndroid Build Coastguard Worker * 8 Kartika 30 October 23 49*0e209d39SAndroid Build Coastguard Worker * 9 Agrahayana 30 November 22 50*0e209d39SAndroid Build Coastguard Worker * 10 Pausa 30 December 22 51*0e209d39SAndroid Build Coastguard Worker * 11 Magha 30 January 21 52*0e209d39SAndroid Build Coastguard Worker * 12 Phalguna 30 February 20 53*0e209d39SAndroid Build Coastguard Worker 54*0e209d39SAndroid Build Coastguard Worker * In leap years, Chaitra has 31 days and starts on March 21 instead. 55*0e209d39SAndroid Build Coastguard Worker * The leap years of Gregorian calendar and Indian National Calendar are in synchornization. 56*0e209d39SAndroid Build Coastguard Worker * So When its a leap year in Gregorian calendar then Chaitra has 31 days. 57*0e209d39SAndroid Build Coastguard Worker * 58*0e209d39SAndroid Build Coastguard Worker * The Years 59*0e209d39SAndroid Build Coastguard Worker * Years are counted in the Saka Era, which starts its year 0 in 78AD (by gregorian calendar). 60*0e209d39SAndroid Build Coastguard Worker * So for eg. 9th June 2006 by Gregorian Calendar, is same as 19th of Jyaistha in 1928 of Saka 61*0e209d39SAndroid Build Coastguard Worker * era by Indian National Calendar. 62*0e209d39SAndroid Build Coastguard Worker * <p> 63*0e209d39SAndroid Build Coastguard Worker * The Indian Calendar has only one allowable era: <code>Saka Era</code>. If the 64*0e209d39SAndroid Build Coastguard Worker * calendar is not in lenient mode (see <code>setLenient</code>), dates before 65*0e209d39SAndroid Build Coastguard Worker * 1/1/1 Saka Era are rejected with an <code>IllegalArgumentException</code>. 66*0e209d39SAndroid Build Coastguard Worker * <p> 67*0e209d39SAndroid Build Coastguard Worker * @internal 68*0e209d39SAndroid Build Coastguard Worker */ 69*0e209d39SAndroid Build Coastguard Worker 70*0e209d39SAndroid Build Coastguard Worker 71*0e209d39SAndroid Build Coastguard Worker class U_I18N_API IndianCalendar : public Calendar { 72*0e209d39SAndroid Build Coastguard Worker public: 73*0e209d39SAndroid Build Coastguard Worker /** 74*0e209d39SAndroid Build Coastguard Worker * Useful constants for IndianCalendar. 75*0e209d39SAndroid Build Coastguard Worker * @internal 76*0e209d39SAndroid Build Coastguard Worker */ 77*0e209d39SAndroid Build Coastguard Worker enum EEras { 78*0e209d39SAndroid Build Coastguard Worker /** 79*0e209d39SAndroid Build Coastguard Worker * Constant for Chaitra, the 1st month of the Indian year. 80*0e209d39SAndroid Build Coastguard Worker */ 81*0e209d39SAndroid Build Coastguard Worker CHAITRA, 82*0e209d39SAndroid Build Coastguard Worker 83*0e209d39SAndroid Build Coastguard Worker /** 84*0e209d39SAndroid Build Coastguard Worker * Constant for Vaisakha, the 2nd month of the Indian year. 85*0e209d39SAndroid Build Coastguard Worker */ 86*0e209d39SAndroid Build Coastguard Worker VAISAKHA, 87*0e209d39SAndroid Build Coastguard Worker 88*0e209d39SAndroid Build Coastguard Worker /** 89*0e209d39SAndroid Build Coastguard Worker * Constant for Jyaistha, the 3rd month of the Indian year. 90*0e209d39SAndroid Build Coastguard Worker */ 91*0e209d39SAndroid Build Coastguard Worker JYAISTHA, 92*0e209d39SAndroid Build Coastguard Worker 93*0e209d39SAndroid Build Coastguard Worker /** 94*0e209d39SAndroid Build Coastguard Worker * Constant for Asadha, the 4th month of the Indian year. 95*0e209d39SAndroid Build Coastguard Worker */ 96*0e209d39SAndroid Build Coastguard Worker ASADHA, 97*0e209d39SAndroid Build Coastguard Worker 98*0e209d39SAndroid Build Coastguard Worker /** 99*0e209d39SAndroid Build Coastguard Worker * Constant for Sravana, the 5th month of the Indian year. 100*0e209d39SAndroid Build Coastguard Worker */ 101*0e209d39SAndroid Build Coastguard Worker SRAVANA, 102*0e209d39SAndroid Build Coastguard Worker 103*0e209d39SAndroid Build Coastguard Worker /** 104*0e209d39SAndroid Build Coastguard Worker * Constant for Bhadra the 6th month of the Indian year 105*0e209d39SAndroid Build Coastguard Worker */ 106*0e209d39SAndroid Build Coastguard Worker BHADRA, 107*0e209d39SAndroid Build Coastguard Worker 108*0e209d39SAndroid Build Coastguard Worker /** 109*0e209d39SAndroid Build Coastguard Worker * Constant for the Asvina, the 7th month of the Indian year. 110*0e209d39SAndroid Build Coastguard Worker */ 111*0e209d39SAndroid Build Coastguard Worker ASVINA, 112*0e209d39SAndroid Build Coastguard Worker 113*0e209d39SAndroid Build Coastguard Worker /** 114*0e209d39SAndroid Build Coastguard Worker * Constant for Kartika, the 8th month of the Indian year. 115*0e209d39SAndroid Build Coastguard Worker */ 116*0e209d39SAndroid Build Coastguard Worker KARTIKA, 117*0e209d39SAndroid Build Coastguard Worker 118*0e209d39SAndroid Build Coastguard Worker /** 119*0e209d39SAndroid Build Coastguard Worker * Constant for Agrahayana, the 9th month of the Indian year. 120*0e209d39SAndroid Build Coastguard Worker */ 121*0e209d39SAndroid Build Coastguard Worker AGRAHAYANA, 122*0e209d39SAndroid Build Coastguard Worker 123*0e209d39SAndroid Build Coastguard Worker /** 124*0e209d39SAndroid Build Coastguard Worker * Constant for Pausa, the 10th month of the Indian year. 125*0e209d39SAndroid Build Coastguard Worker */ 126*0e209d39SAndroid Build Coastguard Worker PAUSA, 127*0e209d39SAndroid Build Coastguard Worker 128*0e209d39SAndroid Build Coastguard Worker /** 129*0e209d39SAndroid Build Coastguard Worker * Constant for Magha, the 11th month of the Indian year. 130*0e209d39SAndroid Build Coastguard Worker */ 131*0e209d39SAndroid Build Coastguard Worker MAGHA, 132*0e209d39SAndroid Build Coastguard Worker 133*0e209d39SAndroid Build Coastguard Worker /** 134*0e209d39SAndroid Build Coastguard Worker * Constant for Phalguna, the 12th month of the Indian year. 135*0e209d39SAndroid Build Coastguard Worker */ 136*0e209d39SAndroid Build Coastguard Worker PHALGUNA 137*0e209d39SAndroid Build Coastguard Worker }; 138*0e209d39SAndroid Build Coastguard Worker 139*0e209d39SAndroid Build Coastguard Worker //------------------------------------------------------------------------- 140*0e209d39SAndroid Build Coastguard Worker // Constructors... 141*0e209d39SAndroid Build Coastguard Worker //------------------------------------------------------------------------- 142*0e209d39SAndroid Build Coastguard Worker 143*0e209d39SAndroid Build Coastguard Worker /** 144*0e209d39SAndroid Build Coastguard Worker * Constructs an IndianCalendar based on the current time in the default time zone 145*0e209d39SAndroid Build Coastguard Worker * with the given locale. 146*0e209d39SAndroid Build Coastguard Worker * 147*0e209d39SAndroid Build Coastguard Worker * @param aLocale The given locale. 148*0e209d39SAndroid Build Coastguard Worker * @param success Indicates the status of IndianCalendar object construction. 149*0e209d39SAndroid Build Coastguard Worker * Returns U_ZERO_ERROR if constructed successfully. 150*0e209d39SAndroid Build Coastguard Worker * @param beCivil Whether the calendar should be civil (default-true) or religious (false) 151*0e209d39SAndroid Build Coastguard Worker * @internal 152*0e209d39SAndroid Build Coastguard Worker */ 153*0e209d39SAndroid Build Coastguard Worker IndianCalendar(const Locale& aLocale, UErrorCode &success); 154*0e209d39SAndroid Build Coastguard Worker 155*0e209d39SAndroid Build Coastguard Worker /** 156*0e209d39SAndroid Build Coastguard Worker * Copy Constructor 157*0e209d39SAndroid Build Coastguard Worker * @internal 158*0e209d39SAndroid Build Coastguard Worker */ 159*0e209d39SAndroid Build Coastguard Worker IndianCalendar(const IndianCalendar& other); 160*0e209d39SAndroid Build Coastguard Worker 161*0e209d39SAndroid Build Coastguard Worker /** 162*0e209d39SAndroid Build Coastguard Worker * Destructor. 163*0e209d39SAndroid Build Coastguard Worker * @internal 164*0e209d39SAndroid Build Coastguard Worker */ 165*0e209d39SAndroid Build Coastguard Worker virtual ~IndianCalendar(); 166*0e209d39SAndroid Build Coastguard Worker 167*0e209d39SAndroid Build Coastguard Worker /** 168*0e209d39SAndroid Build Coastguard Worker * Determines whether this object uses the fixed-cycle Indian civil calendar 169*0e209d39SAndroid Build Coastguard Worker * or an approximation of the religious, astronomical calendar. 170*0e209d39SAndroid Build Coastguard Worker * 171*0e209d39SAndroid Build Coastguard Worker * @param beCivil <code>CIVIL</code> to use the civil calendar, 172*0e209d39SAndroid Build Coastguard Worker * <code>ASTRONOMICAL</code> to use the astronomical calendar. 173*0e209d39SAndroid Build Coastguard Worker * @internal 174*0e209d39SAndroid Build Coastguard Worker */ 175*0e209d39SAndroid Build Coastguard Worker //void setCivil(ECivil beCivil, UErrorCode &status); 176*0e209d39SAndroid Build Coastguard Worker 177*0e209d39SAndroid Build Coastguard Worker /** 178*0e209d39SAndroid Build Coastguard Worker * Returns <code>true</code> if this object is using the fixed-cycle civil 179*0e209d39SAndroid Build Coastguard Worker * calendar, or <code>false</code> if using the religious, astronomical 180*0e209d39SAndroid Build Coastguard Worker * calendar. 181*0e209d39SAndroid Build Coastguard Worker * @internal 182*0e209d39SAndroid Build Coastguard Worker */ 183*0e209d39SAndroid Build Coastguard Worker //UBool isCivil(); 184*0e209d39SAndroid Build Coastguard Worker 185*0e209d39SAndroid Build Coastguard Worker 186*0e209d39SAndroid Build Coastguard Worker // TODO: copy c'tor, etc 187*0e209d39SAndroid Build Coastguard Worker 188*0e209d39SAndroid Build Coastguard Worker // clone 189*0e209d39SAndroid Build Coastguard Worker virtual IndianCalendar* clone() const override; 190*0e209d39SAndroid Build Coastguard Worker 191*0e209d39SAndroid Build Coastguard Worker private: 192*0e209d39SAndroid Build Coastguard Worker /** 193*0e209d39SAndroid Build Coastguard Worker * Determine whether a year is the gregorian year a leap year 194*0e209d39SAndroid Build Coastguard Worker */ 195*0e209d39SAndroid Build Coastguard Worker //static UBool isGregorianLeap(int32_t year); 196*0e209d39SAndroid Build Coastguard Worker //---------------------------------------------------------------------- 197*0e209d39SAndroid Build Coastguard Worker // Calendar framework 198*0e209d39SAndroid Build Coastguard Worker //---------------------------------------------------------------------- 199*0e209d39SAndroid Build Coastguard Worker protected: 200*0e209d39SAndroid Build Coastguard Worker /** 201*0e209d39SAndroid Build Coastguard Worker * @internal 202*0e209d39SAndroid Build Coastguard Worker */ 203*0e209d39SAndroid Build Coastguard Worker virtual int32_t handleGetLimit(UCalendarDateFields field, ELimitType limitType) const override; 204*0e209d39SAndroid Build Coastguard Worker 205*0e209d39SAndroid Build Coastguard Worker /** 206*0e209d39SAndroid Build Coastguard Worker * Return the length (in days) of the given month. 207*0e209d39SAndroid Build Coastguard Worker * 208*0e209d39SAndroid Build Coastguard Worker * @param year The year in Saka era 209*0e209d39SAndroid Build Coastguard Worker * @param year The month(0-based) in Indian year 210*0e209d39SAndroid Build Coastguard Worker * @internal 211*0e209d39SAndroid Build Coastguard Worker */ 212*0e209d39SAndroid Build Coastguard Worker virtual int32_t handleGetMonthLength(int32_t extendedYear, int32_t month, UErrorCode& status) const override; 213*0e209d39SAndroid Build Coastguard Worker 214*0e209d39SAndroid Build Coastguard Worker /** 215*0e209d39SAndroid Build Coastguard Worker * Return the number of days in the given Indian year 216*0e209d39SAndroid Build Coastguard Worker * @internal 217*0e209d39SAndroid Build Coastguard Worker */ 218*0e209d39SAndroid Build Coastguard Worker virtual int32_t handleGetYearLength(int32_t extendedYear) const override; 219*0e209d39SAndroid Build Coastguard Worker 220*0e209d39SAndroid Build Coastguard Worker //------------------------------------------------------------------------- 221*0e209d39SAndroid Build Coastguard Worker // Functions for converting from field values to milliseconds.... 222*0e209d39SAndroid Build Coastguard Worker //------------------------------------------------------------------------- 223*0e209d39SAndroid Build Coastguard Worker 224*0e209d39SAndroid Build Coastguard Worker // Return JD of start of given month/year 225*0e209d39SAndroid Build Coastguard Worker /** 226*0e209d39SAndroid Build Coastguard Worker * @internal 227*0e209d39SAndroid Build Coastguard Worker */ 228*0e209d39SAndroid Build Coastguard Worker virtual int64_t handleComputeMonthStart(int32_t eyear, int32_t month, UBool useMonth, UErrorCode& status) const override; 229*0e209d39SAndroid Build Coastguard Worker 230*0e209d39SAndroid Build Coastguard Worker //------------------------------------------------------------------------- 231*0e209d39SAndroid Build Coastguard Worker // Functions for converting from milliseconds to field values 232*0e209d39SAndroid Build Coastguard Worker //------------------------------------------------------------------------- 233*0e209d39SAndroid Build Coastguard Worker 234*0e209d39SAndroid Build Coastguard Worker /** 235*0e209d39SAndroid Build Coastguard Worker * @internal 236*0e209d39SAndroid Build Coastguard Worker */ 237*0e209d39SAndroid Build Coastguard Worker virtual int32_t handleGetExtendedYear(UErrorCode& status) override; 238*0e209d39SAndroid Build Coastguard Worker 239*0e209d39SAndroid Build Coastguard Worker /** 240*0e209d39SAndroid Build Coastguard Worker * Override Calendar to compute several fields specific to the Indian 241*0e209d39SAndroid Build Coastguard Worker * calendar system. These are: 242*0e209d39SAndroid Build Coastguard Worker * 243*0e209d39SAndroid Build Coastguard Worker * <ul><li>ERA 244*0e209d39SAndroid Build Coastguard Worker * <li>YEAR 245*0e209d39SAndroid Build Coastguard Worker * <li>MONTH 246*0e209d39SAndroid Build Coastguard Worker * <li>DAY_OF_MONTH 247*0e209d39SAndroid Build Coastguard Worker * <li>DAY_OF_YEAR 248*0e209d39SAndroid Build Coastguard Worker * <li>EXTENDED_YEAR</ul> 249*0e209d39SAndroid Build Coastguard Worker * 250*0e209d39SAndroid Build Coastguard Worker * The DAY_OF_WEEK and DOW_LOCAL fields are already set when this 251*0e209d39SAndroid Build Coastguard Worker * method is called. The getGregorianXxx() methods return Gregorian 252*0e209d39SAndroid Build Coastguard Worker * calendar equivalents for the given Julian day. 253*0e209d39SAndroid Build Coastguard Worker * @internal 254*0e209d39SAndroid Build Coastguard Worker */ 255*0e209d39SAndroid Build Coastguard Worker virtual void handleComputeFields(int32_t julianDay, UErrorCode &status) override; 256*0e209d39SAndroid Build Coastguard Worker 257*0e209d39SAndroid Build Coastguard Worker // UObject stuff 258*0e209d39SAndroid Build Coastguard Worker public: 259*0e209d39SAndroid Build Coastguard Worker /** 260*0e209d39SAndroid Build Coastguard Worker * @return The class ID for this object. All objects of a given class have the 261*0e209d39SAndroid Build Coastguard Worker * same class ID. Objects of other classes have different class IDs. 262*0e209d39SAndroid Build Coastguard Worker * @internal 263*0e209d39SAndroid Build Coastguard Worker */ 264*0e209d39SAndroid Build Coastguard Worker virtual UClassID getDynamicClassID() const override; 265*0e209d39SAndroid Build Coastguard Worker 266*0e209d39SAndroid Build Coastguard Worker /** 267*0e209d39SAndroid Build Coastguard Worker * Return the class ID for this class. This is useful only for comparing to a return 268*0e209d39SAndroid Build Coastguard Worker * value from getDynamicClassID(). For example: 269*0e209d39SAndroid Build Coastguard Worker * 270*0e209d39SAndroid Build Coastguard Worker * Base* polymorphic_pointer = createPolymorphicObject(); 271*0e209d39SAndroid Build Coastguard Worker * if (polymorphic_pointer->getDynamicClassID() == 272*0e209d39SAndroid Build Coastguard Worker * Derived::getStaticClassID()) ... 273*0e209d39SAndroid Build Coastguard Worker * 274*0e209d39SAndroid Build Coastguard Worker * @return The class ID for all objects of this class. 275*0e209d39SAndroid Build Coastguard Worker * @internal 276*0e209d39SAndroid Build Coastguard Worker */ 277*0e209d39SAndroid Build Coastguard Worker static UClassID U_EXPORT2 getStaticClassID(); 278*0e209d39SAndroid Build Coastguard Worker 279*0e209d39SAndroid Build Coastguard Worker /** 280*0e209d39SAndroid Build Coastguard Worker * return the calendar type, "indian". 281*0e209d39SAndroid Build Coastguard Worker * 282*0e209d39SAndroid Build Coastguard Worker * @return calendar type 283*0e209d39SAndroid Build Coastguard Worker * @internal 284*0e209d39SAndroid Build Coastguard Worker */ 285*0e209d39SAndroid Build Coastguard Worker virtual const char * getType() const override; 286*0e209d39SAndroid Build Coastguard Worker 287*0e209d39SAndroid Build Coastguard Worker /** 288*0e209d39SAndroid Build Coastguard Worker * @return The related Gregorian year; will be obtained by modifying the value 289*0e209d39SAndroid Build Coastguard Worker * obtained by get from UCAL_EXTENDED_YEAR field 290*0e209d39SAndroid Build Coastguard Worker * @internal 291*0e209d39SAndroid Build Coastguard Worker */ 292*0e209d39SAndroid Build Coastguard Worker virtual int32_t getRelatedYear(UErrorCode &status) const override; 293*0e209d39SAndroid Build Coastguard Worker 294*0e209d39SAndroid Build Coastguard Worker /** 295*0e209d39SAndroid Build Coastguard Worker * @param year The related Gregorian year to set; will be modified as necessary then 296*0e209d39SAndroid Build Coastguard Worker * set in UCAL_EXTENDED_YEAR field 297*0e209d39SAndroid Build Coastguard Worker * @internal 298*0e209d39SAndroid Build Coastguard Worker */ 299*0e209d39SAndroid Build Coastguard Worker virtual void setRelatedYear(int32_t year) override; 300*0e209d39SAndroid Build Coastguard Worker 301*0e209d39SAndroid Build Coastguard Worker 302*0e209d39SAndroid Build Coastguard Worker private: 303*0e209d39SAndroid Build Coastguard Worker IndianCalendar() = delete; // default constructor not implemented 304*0e209d39SAndroid Build Coastguard Worker 305*0e209d39SAndroid Build Coastguard Worker // Default century. 306*0e209d39SAndroid Build Coastguard Worker protected: 307*0e209d39SAndroid Build Coastguard Worker 308*0e209d39SAndroid Build Coastguard Worker DECLARE_OVERRIDE_SYSTEM_DEFAULT_CENTURY 309*0e209d39SAndroid Build Coastguard Worker }; 310*0e209d39SAndroid Build Coastguard Worker 311*0e209d39SAndroid Build Coastguard Worker U_NAMESPACE_END 312*0e209d39SAndroid Build Coastguard Worker 313*0e209d39SAndroid Build Coastguard Worker #endif 314*0e209d39SAndroid Build Coastguard Worker #endif 315*0e209d39SAndroid Build Coastguard Worker 316*0e209d39SAndroid Build Coastguard Worker 317*0e209d39SAndroid Build Coastguard Worker 318