Main Page   Class Hierarchy   Compound List   File List   Header Files   Sources   Compound Members   File Members  

calendar.h

This is the verbatim text of the calendar.h include file.
/*
********************************************************************************
*   Copyright (C) 1997-1999, International Business Machines
*   Corporation and others.  All Rights Reserved.
********************************************************************************
*
* File CALENDAR.H
*
* Modification History:
*
*   Date        Name        Description
*   04/22/97    aliu        Expanded and corrected comments and other header
*                           contents.
*   05/01/97    aliu        Made equals(), before(), after() arguments const.
*   05/20/97    aliu        Replaced fAreFieldsSet with fAreFieldsInSync and
*                           fAreAllFieldsSet.
*   07/27/98    stephen     Sync up with JDK 1.2
*   11/15/99    weiv        added YEAR_WOY and DOW_LOCAL
*                           to EDateFields
********************************************************************************
*/

#ifndef CALENDAR_H
#define CALENDAR_H

#include "unicode/locid.h"
#include "unicode/timezone.h"



class U_I18N_API Calendar {
public:

    enum EDateFields {
        ERA,                  // Example: 0..1
        YEAR,                 // Example: 1..big number
        MONTH,                // Example: 0..11
        WEEK_OF_YEAR,         // Example: 1..53
        WEEK_OF_MONTH,        // Example: 1..4
        DATE,                 // Example: 1..31
        DAY_OF_YEAR,          // Example: 1..365
        DAY_OF_WEEK,          // Example: 1..7
        DAY_OF_WEEK_IN_MONTH, // Example: 1..4, may be specified as -1
        AM_PM,                // Example: 0..1
        HOUR,                 // Example: 0..11
        HOUR_OF_DAY,          // Example: 0..23
        MINUTE,               // Example: 0..59
        SECOND,               // Example: 0..59
        MILLISECOND,          // Example: 0..999
        ZONE_OFFSET,          // Example: -12*U_MILLIS_PER_HOUR..12*U_MILLIS_PER_HOUR
        DST_OFFSET,           // Example: 0 or U_MILLIS_PER_HOUR
// here will go names for 'Y' and 'e'
        YEAR_WOY,  // 'Y' Example: 1..big number
        DOW_LOCAL, // 'e' Example: 1..7
        FIELD_COUNT,

        DAY_OF_MONTH = DATE   // Synonyms
    };

    enum EDaysOfWeek {
        SUNDAY = 1,
        MONDAY,
        TUESDAY,
        WEDNESDAY,
        THURSDAY,
        FRIDAY,
        SATURDAY
    };

    enum EMonths {
        JANUARY,
        FEBRUARY,
        MARCH,
        APRIL,
        MAY,
        JUNE,
        JULY,
        AUGUST,
        SEPTEMBER,
        OCTOBER,
        NOVEMBER,
        DECEMBER,
        UNDECIMBER
    };

    enum EAmpm {
        AM,
        PM
    };

    virtual ~Calendar();

    virtual Calendar* clone(void) const = 0;

    static Calendar* createInstance(UErrorCode& success);

    static Calendar* createInstance(TimeZone* zoneToAdopt, UErrorCode& success);

    static Calendar* createInstance(const TimeZone& zone, UErrorCode& success);

    static Calendar* createInstance(const Locale& aLocale, UErrorCode& success);

    static Calendar* createInstance(TimeZone* zoneToAdopt, const Locale& aLocale, UErrorCode& success);

    static Calendar* createInstance(const TimeZone& zoneToAdopt, const Locale& aLocale, UErrorCode& success);

    static const Locale* getAvailableLocales(int32_t& count);

    static UDate getNow(void);

    inline UDate getTime(UErrorCode& status) const { return getTimeInMillis(status); }

    inline void setTime(UDate date, UErrorCode& status) { setTimeInMillis(date, status); }

    virtual UBool operator==(const Calendar& that) const;

    UBool operator!=(const Calendar& that) const {return !operator==(that);}

    UBool equals(const Calendar& when, UErrorCode& status) const;

    UBool before(const Calendar& when, UErrorCode& status) const;

    UBool after(const Calendar& when, UErrorCode& status) const;

    virtual UBool equivalentTo(const Calendar& other) const;

    virtual void add(EDateFields field, int32_t amount, UErrorCode& status) = 0;

    void roll(EDateFields field, UBool up, UErrorCode& status);

    virtual void roll(EDateFields field, int32_t amount, UErrorCode& status) = 0;

    void adoptTimeZone(TimeZone* value);

    void setTimeZone(const TimeZone& zone);

    const TimeZone& getTimeZone(void) const;

    TimeZone* orphanTimeZone(void);

    virtual UBool inDaylightTime(UErrorCode& status) const = 0;

    void setLenient(UBool lenient);

    UBool isLenient(void) const;

    void setFirstDayOfWeek(EDaysOfWeek value);

    EDaysOfWeek getFirstDayOfWeek(void) const;

    void setMinimalDaysInFirstWeek(uint8_t value);

    uint8_t getMinimalDaysInFirstWeek(void) const;

    virtual int32_t getMinimum(EDateFields field) const = 0;

    virtual int32_t getMaximum(EDateFields field) const = 0;

    virtual int32_t getGreatestMinimum(EDateFields field) const = 0;

    virtual int32_t getLeastMaximum(EDateFields field) const = 0;

    int32_t getActualMinimum(EDateFields field, UErrorCode& status) const;

    int32_t getActualMaximum(EDateFields field, UErrorCode& status) const;

    int32_t get(EDateFields field, UErrorCode& status) const;

    UBool isSet(EDateFields field) const;

    void set(EDateFields field, int32_t value);

    void set(int32_t year, int32_t month, int32_t date);

    void set(int32_t year, int32_t month, int32_t date, int32_t hour, int32_t minute);

    void set(int32_t year, int32_t month, int32_t date, int32_t hour, int32_t minute, int32_t second);

    void clear(void);

    void clear(EDateFields field);

    virtual UClassID getDynamicClassID(void) const = 0;

protected:

    Calendar(UErrorCode& success);

    Calendar(const Calendar& source);

    Calendar& operator=(const Calendar& right);

    Calendar(TimeZone* zone, const Locale& aLocale, UErrorCode& success);

    Calendar(const TimeZone& zone, const Locale& aLocale, UErrorCode& success);

    virtual void computeTime(UErrorCode& status) = 0;

    virtual void computeFields(UErrorCode& status) = 0;

    double getTimeInMillis(UErrorCode& status) const;

    void setTimeInMillis( double millis, UErrorCode& status );

    void complete(UErrorCode& status);

    int32_t internalGet(EDateFields field) const {return fFields[field];}

    void internalSet(EDateFields field, int32_t value);

protected:
    UBool      fIsTimeSet;

    UBool      fAreFieldsSet;

    UBool      fAreAllFieldsSet;

    UDate        internalGetTime(void) const     { return fTime; }

    void        internalSetTime(UDate time)     { fTime = time; }

    int32_t     fFields[FIELD_COUNT];

    UBool      fIsSet[FIELD_COUNT];

    // Special values of stamp[]
    enum {
        kUnset                 = 0,
        kInternallySet,
        kMinimumUserStamp
    };

    int32_t        fStamp[FIELD_COUNT];

private:

    // The next available value for stampp[]
    int32_t fNextStamp;// = MINIMUM_USER_STAMP;

    UDate        fTime;

    UBool      fLenient;

    TimeZone*   fZone;

    EDaysOfWeek fFirstDayOfWeek;
    uint8_t     fMinimalDaysInFirstWeek;

    void        setWeekCountData(const Locale& desiredLocale, UErrorCode& success);

    void updateTime(UErrorCode& status);

    static int32_t  stringToDayNumber(const UnicodeString& string, UErrorCode& status);

    static const char* kDateTimeElements;
};

// -------------------------------------

inline Calendar*
Calendar::createInstance(TimeZone* zone, UErrorCode& errorCode)
{
    // since the Locale isn't specified, use the default locale
    return createInstance(zone, Locale::getDefault(), errorCode);
}

// -------------------------------------

inline void 
Calendar::roll(EDateFields field, UBool up, UErrorCode& status)
{
    roll(field, (int32_t)(up ? +1 : -1), status);
}

// -------------------------------------

inline void
Calendar::internalSet(EDateFields field, int32_t value)
{
    fFields[field] = value;
}

#endif // _CALENDAR

Generated at Mon Jun 5 12:53:11 2000 for ICU1.5 by doxygen 1.0.0 written by Dimitri van Heesch, © 1997-1999