185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho/*
285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho*******************************************************************************
359d709d503bab6e2b61931737e662dd293b40578ccornelius* Copyright (C) 2003 - 2013, International Business Machines Corporation and  *
485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho* others. All Rights Reserved.                                                *
585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho*******************************************************************************
685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho*/
785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho#ifndef COPTCCAL_H
985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho#define COPTCCAL_H
1085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
1185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho#include "unicode/utypes.h"
1285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
1385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho#if !UCONFIG_NO_FORMATTING
1485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
1585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho#include "unicode/calendar.h"
1685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho#include "cecal.h"
1785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
1885bf2e2fbc60a9f938064abc8127d61da7d19882Claire HoU_NAMESPACE_BEGIN
1985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
2085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho/**
2185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * Implement the Coptic calendar system.
2285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * @internal
2385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho */
2485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hoclass CopticCalendar : public CECalendar {
2585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
2685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hopublic:
2785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    /**
2885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * Useful constants for CopticCalendar.
2985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @internal
3085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     */
3185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    enum EMonths {
3285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho        /**
3385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho         * Constant for ωογτ/تﻮﺗ,
3485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho         * the 1st month of the Coptic year.
3585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho         */
3685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho        TOUT,
3785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
3885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho        /**
3985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho         * Constant for Παοπι/ﻪﺑﺎﺑ,
4085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho         * the 2nd month of the Coptic year.
4185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho         */
4285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho        BABA,
4385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
4485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho        /**
4585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho         * Constant for Αθορ/رﻮﺗﺎﻫ,
4685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho         * the 3rd month of the Coptic year.
4785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho         */
4885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho        HATOR,
4985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
5085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho        /**
5185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho         * Constant for Χοιακ/ﻚﻬﻴﻛ,
5285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho         * the 4th month of the Coptic year.
5385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho         */
5485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho        KIAHK,
5585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
5685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho        /**
5785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho         * Constant for Τωβι/طﻮﺒﻫ,
5885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho         * the 5th month of the Coptic year.
5985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho         */
6085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho        TOBA,
6185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
6285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho        /**
6385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho         * Constant for Μεϣιρ/ﺮﻴﺸﻣأ,
6485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho         * the 6th month of the Coptic year.
6585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho         */
6685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho        AMSHIR,
6785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
6885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho        /**
6985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho         * Constant for Παρεμϩατ/تﺎﻬﻣﺮﺑ,
7085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho         * the 7th month of the Coptic year.
7185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho         */
7285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho        BARAMHAT,
7385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
7485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho        /**
7585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho         * Constant for Φαρμοθι/هدﻮﻣﺮﺑ,
7685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho         * the 8th month of the Coptic year.
7785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho         */
7885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho        BARAMOUDA,
7985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
8085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho        /**
8185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho         * Constant for Παϣαν/ﺲﻨﺸﺑ,
8285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho         * the 9th month of the Coptic year.
8385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho         */
8485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho        BASHANS,
8585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
8685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho        /**
8785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho         * Constant for Παωνι/ﻪﻧؤﻮﺑ,
8885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho         * the 10th month of the Coptic year.
8985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho         */
9085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho        PAONA,
9185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
9285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho        /**
9385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho         * Constant for Επηπ/ﺐﻴﺑأ,
9485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho         * the 11th month of the Coptic year.
9585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho         */
9685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho        EPEP,
9785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
9885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho        /**
9985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho         * Constant for Μεϲωρη/ىﺮﺴﻣ,
10085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho         * the 12th month of the Coptic year.
10185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho         */
10285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho        MESRA,
10385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
10485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho        /**
10585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho         * Constant for Πικογϫι
10685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho         * μαβοτ/ﺮﻴﻐﺼﻟا
10785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho         * ﺮﻬﺸﻟا,
10885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho         * the 13th month of the Coptic year.
10985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho         */
11085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho        NASIE
11185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    };
11285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
11385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    enum EEras {
11485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho        BCE,    // Before the epoch
11585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho        CE      // After the epoch
11685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    };
11785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
11885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    /**
11985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * Constructs a CopticCalendar based on the current time in the default time zone
12085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * with the given locale.
12185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     *
12285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @param aLocale  The given locale.
12385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @param success  Indicates the status of CopticCalendar object construction.
12485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     *                 Returns U_ZERO_ERROR if constructed successfully.
12585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @internal
12685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     */
12785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    CopticCalendar(const Locale& aLocale, UErrorCode& success);
12885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
12985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    /**
13085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * Copy Constructor
13185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @internal
13285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     */
13385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    CopticCalendar (const CopticCalendar& other);
13485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
13585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    /**
13685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * Destructor.
13785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @internal
13885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     */
13985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    virtual ~CopticCalendar();
14085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
14185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    /**
14285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * Create and return a polymorphic copy of this calendar.
14385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @return    return a polymorphic copy of this calendar.
14485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @internal
14585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     */
14685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    virtual Calendar* clone(void) const;
14785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
14885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    /**
14985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * return the calendar type, "coptic"
15085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @return calendar type
15185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @internal
15285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     */
15385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    const char * getType() const;
15485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
15585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hoprotected:
15685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    //-------------------------------------------------------------------------
15785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    // Calendar framework
15885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    //-------------------------------------------------------------------------
15985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
16085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    /**
16185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * Return the extended year defined by the current fields.
16285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @internal
16385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     */
16485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    virtual int32_t handleGetExtendedYear();
16585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
16685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    /**
16785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * Compute fields from the JD
16885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @internal
16985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     */
17085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    virtual void handleComputeFields(int32_t julianDay, UErrorCode &status);
17185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
17285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    /**
17385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * Returns the date of the start of the default century
17485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @return start of century - in milliseconds since epoch, 1970
17585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @internal
17685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     */
17785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    virtual UDate defaultCenturyStart() const;
17885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
17985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    /**
18085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * Returns the year in which the default century begins
18185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @internal
18285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     */
18385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    virtual int32_t defaultCenturyStartYear() const;
18485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
18585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    /**
18685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * Return the date offset from Julian
18785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @internal
18885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     */
18985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    virtual int32_t getJDEpochOffset() const;
19085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
19185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
19285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hopublic:
19385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    /**
19485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * Override Calendar Returns a unique class ID POLYMORPHICALLY. Pure virtual
19585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * override. This method is to implement a simple version of RTTI, since not all C++
19685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * compilers support genuine RTTI. Polymorphic operator==() and clone() methods call
19785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * this method.
19885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     *
19985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @return   The class ID for this object. All objects of a given class have the
20085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     *           same class ID. Objects of other classes have different class IDs.
20185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @internal
20285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     */
20385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    virtual UClassID getDynamicClassID(void) const;
20485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
20585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    /**
20685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * Return the class ID for this class. This is useful only for comparing to a return
20785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * value from getDynamicClassID(). For example:
20885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     *
20985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     *      Base* polymorphic_pointer = createPolymorphicObject();
21085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     *      if (polymorphic_pointer->getDynamicClassID() ==
21185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     *          Derived::getStaticClassID()) ...
21285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     *
21385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @return   The class ID for all objects of this class.
21485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @internal
21585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     */
21685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    U_I18N_API static UClassID U_EXPORT2 getStaticClassID(void);
21785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
21885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho#if 0
21985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    // We do not want to introduce this API in ICU4C.
22085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    // It was accidentally introduced in ICU4J as a public API.
22185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hopublic:
22285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    //-------------------------------------------------------------------------
22385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    // Calendar system Conversion methods...
22485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    //-------------------------------------------------------------------------
22585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    /**
22685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * Convert an Coptic year, month, and day to a Julian day.
22785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     *
22885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @param year the extended year
22985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @param month the month
23085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @param day the day
23185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @return Julian day
23285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     * @internal
23385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho     */
23485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho    static int32_t copticToJD(int32_t year, int32_t month, int32_t day);
23585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho#endif
23685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho};
23785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
23885bf2e2fbc60a9f938064abc8127d61da7d19882Claire HoU_NAMESPACE_END
23985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho
24085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho#endif /* #if !UCONFIG_NO_FORMATTING */
24185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho#endif /* COPTCCAL_H */
24285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho//eof
243