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

smpdtfmt.h

This is the verbatim text of the smpdtfmt.h include file.
/*
* Copyright © {1997-1999}, International Business Machines Corporation and others. All Rights Reserved.
*******************************************************************************
*
* File SMPDTFMT.H
*
* Modification History:
*
*   Date        Name        Description
*   02/19/97    aliu        Converted from java.
*   07/09/97    helena      Make ParsePosition into a class.
*   07/21/98    stephen     Added GMT_PLUS, GMT_MINUS
*                            Changed setTwoDigitStartDate to set2DigitYearStart
*                            Changed getTwoDigitStartDate to get2DigitYearStart
*                            Removed subParseLong
*                            Removed getZoneIndex (added in DateFormatSymbols)
*   06/14/99    stephen     Removed fgTimeZoneDataSuffix
*   10/14/99    aliu        Updated class doc to describe 2-digit year parsing
*                           {j28 4182066}.
*******************************************************************************
*/

#ifndef SMPDTFMT_H
#define SMPDTFMT_H

#include "unicode/utypes.h"
#include "unicode/datefmt.h"
class DateFormatSymbols;
class DateFormat;

class U_I18N_API SimpleDateFormat: public DateFormat {
public:
    SimpleDateFormat(UErrorCode& status);

    SimpleDateFormat(const UnicodeString& pattern,
                     UErrorCode& status);

    SimpleDateFormat(const UnicodeString& pattern,
                     const Locale& locale,
                     UErrorCode& status);

    SimpleDateFormat(const UnicodeString& pattern,
                     DateFormatSymbols* formatDataToAdopt,
                     UErrorCode& status);

    SimpleDateFormat(const UnicodeString& pattern,
                     const DateFormatSymbols& formatData,
                     UErrorCode& status);

    SimpleDateFormat(const SimpleDateFormat&);

    SimpleDateFormat& operator=(const SimpleDateFormat&);

    virtual ~SimpleDateFormat();

    virtual Format* clone(void) const;

    virtual UBool operator==(const Format& other) const;

    virtual UnicodeString& format(  UDate date,
                                    UnicodeString& toAppendTo,
                                    FieldPosition& pos) const;

    virtual UnicodeString& format(  const Formattable& obj,
                                    UnicodeString& toAppendTo,
                                    FieldPosition& pos,
                                    UErrorCode& status) const;

    UnicodeString& format(const Formattable& obj,
                          UnicodeString& result,
                          UErrorCode& status) const;

    UnicodeString& format(UDate date, UnicodeString& result) const;

    virtual UDate parse( const UnicodeString& text,
                        ParsePosition& pos) const;


    virtual UDate parse( const UnicodeString& text,
                        UErrorCode& status) const;

    virtual void set2DigitYearStart(UDate d, UErrorCode& status);

    UDate get2DigitYearStart(UErrorCode& status) const;

    virtual UnicodeString& toPattern(UnicodeString& result) const;

    virtual UnicodeString& toLocalizedPattern(UnicodeString& result,
                                              UErrorCode& status) const;

    virtual void applyPattern(const UnicodeString& pattern);

    virtual void applyLocalizedPattern(const UnicodeString& pattern,
                                       UErrorCode& status);

    virtual const DateFormatSymbols* getDateFormatSymbols(void) const;

    virtual void adoptDateFormatSymbols(DateFormatSymbols* newFormatSymbols);

    virtual void setDateFormatSymbols(const DateFormatSymbols& newFormatSymbols);


public:
    static const char *fgErasTag;   // resource bundle tag for era names
    static const char *fgMonthNamesTag; // resource bundle tag for month names
    static const char *fgMonthAbbreviationsTag; // resource bundle tag for month abbreviations
    static const char *fgDayNamesTag;   // resource bundle tag for day names
    static const char *fgDayAbbreviationsTag;   // resource bundle tag for day abbreviations
    static const char *fgAmPmMarkersTag;    // resource bundle tag for AM/PM strings
    static const char *fgDateTimePatternsTag;   // resource bundle tag for default date and time patterns

    static const char *fgZoneStringsTag;    // resource bundle tag for time zone names
    static const char *fgLocalPatternCharsTag;  // resource bundle tag for localized pattern characters

    static const UnicodeString      fgDefaultPattern;    // date/time pattern of last resort

public:
    static UClassID getStaticClassID(void) { return (UClassID)&fgClassID; }

    virtual UClassID getDynamicClassID(void) const { return getStaticClassID(); }

private:
    static char fgClassID;

    friend class DateFormat;

    //int32_t getZoneIndex(const DateFormatSymbols&, const UnicodeString& ID) const;

    void initializeDefaultCentury(void);

    SimpleDateFormat(EStyle timeStyle, EStyle dateStyle, const Locale& locale, UErrorCode& status);

    SimpleDateFormat(const Locale& locale, UErrorCode& status); // Use default pattern

    UnicodeString& subFormat(   UnicodeString& result,
                                UChar ch,
                                int32_t count,
                                int32_t beginOffset,
                                FieldPosition& pos,
                                UErrorCode& status) const; // in case of illegal argument

    UnicodeString& zeroPaddingNumber(UnicodeString& result,
                                     int32_t value,
                                     int32_t minDigits,
                                     int32_t maxDigits) const;

    void construct(EStyle timeStyle, EStyle dateStyle, const Locale& locale, UErrorCode& status);

    void initialize(const Locale& locale, UErrorCode& status);

    int32_t matchString(const UnicodeString& text, UTextOffset start, Calendar::EDateFields field,
                    const UnicodeString* stringArray, int32_t stringArrayCount) const;

    int32_t subParse(const UnicodeString& text, int32_t& start, UChar ch, int32_t count,
                 UBool obeyCount, UBool ambiguousYear[]) const;

    //UBool subParseLong(const UnicodeString& text, ParsePosition& pos, int32_t& value) const;

    static void translatePattern(const UnicodeString& originalPattern,
                                UnicodeString& translatedPattern,
                                const UnicodeString& from,
                                const UnicodeString& to,
                                UErrorCode& status);
    //int32_t getZoneIndex(const UnicodeString& ID) const;

    void         parseAmbiguousDatesAsAfter(UDate startDate, UErrorCode& status);

    UDate         internalGetDefaultCenturyStart(void) const;

    int32_t          internalGetDefaultCenturyStartYear(void) const;

    static void  initializeSystemDefaultCentury(void);

    // For time zones that have no names, use strings GMT+minutes and
    // GMT-minutes. For instance, in France the time zone is GMT+60.
    static const UnicodeString fgGmtPlus;
    static const UnicodeString fgGmtMinus;
    static const UnicodeString fgGmt;

    static const Calendar::EDateFields fgPatternIndexToCalendarField[];

    static const DateFormat::EField fgPatternIndexToDateFormatField[];

    UnicodeString       fPattern;

    DateFormatSymbols*  fSymbols;   // Owned

    UDate                fDefaultCenturyStart;

    /*transient*/ int32_t   fDefaultCenturyStartYear;

    static UDate         fgSystemDefaultCenturyStart;

    static int32_t          fgSystemDefaultCenturyStartYear;

    static const int32_t    fgSystemDefaultCenturyYear;

public:
    static const UDate        fgSystemDefaultCentury;
};

inline UDate
SimpleDateFormat::get2DigitYearStart(UErrorCode& /*status*/) const
{
    return fDefaultCenturyStart;
}

inline UnicodeString&
SimpleDateFormat::format(const Formattable& obj,
                         UnicodeString& result,
                         UErrorCode& status) const {
    // Don't use Format:: - use immediate base class only,
    // in case immediate base modifies behavior later.
    return DateFormat::format(obj, result, status);
}

inline UnicodeString&
SimpleDateFormat::format(UDate date, UnicodeString& result) const {
    return DateFormat::format(date, result);
}

#endif // _SMPDTFMT
//eof

Generated at Wed Aug 16 16:05:50 2000 for ICU1.6 by doxygen 1.0.0 written by Dimitri van Heesch, © 1997-1999