// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-

#ifndef __java_text_DateFormat__
#define __java_text_DateFormat__

#pragma interface

#include <java/text/Format.h>
#include <gcj/array.h>

extern "Java"
{
  namespace java
  {
    namespace text
    {
      class ParsePosition;
      class DateFormat;
      class FieldPosition;
      class NumberFormat;
    }
  }
}

class java::text::DateFormat : public ::java::text::Format
{
public:  // actually protected
  DateFormat ();
public:
  virtual jboolean equals (::java::lang::Object *);
  virtual ::java::lang::Object *clone ();
  ::java::lang::StringBuffer *format (::java::lang::Object *, ::java::lang::StringBuffer *, ::java::text::FieldPosition *);
  ::java::lang::String *format (::java::util::Date *);
  virtual ::java::lang::StringBuffer *format (::java::util::Date *, ::java::lang::StringBuffer *, ::java::text::FieldPosition *) = 0;
  static JArray< ::java::util::Locale *> *getAvailableLocales ();
  virtual ::java::util::Calendar *getCalendar () { return calendar; }
private:
  static ::java::text::DateFormat *computeInstance (jint, ::java::util::Locale *, jboolean, jboolean);
  static ::java::text::DateFormat *computeInstance (jint, jint, ::java::util::Locale *, jboolean, jboolean);
public:
  static ::java::text::DateFormat *getDateInstance ();
  static ::java::text::DateFormat *getDateInstance (jint);
  static ::java::text::DateFormat *getDateInstance (jint, ::java::util::Locale *);
  static ::java::text::DateFormat *getDateTimeInstance ();
  static ::java::text::DateFormat *getDateTimeInstance (jint, jint);
  static ::java::text::DateFormat *getDateTimeInstance (jint, jint, ::java::util::Locale *);
  static ::java::text::DateFormat *getInstance ();
  virtual ::java::text::NumberFormat *getNumberFormat () { return numberFormat; }
  static ::java::text::DateFormat *getTimeInstance ();
  static ::java::text::DateFormat *getTimeInstance (jint);
  static ::java::text::DateFormat *getTimeInstance (jint, ::java::util::Locale *);
  virtual ::java::util::TimeZone *getTimeZone ();
  virtual jint hashCode ();
  virtual jboolean isLenient ();
  virtual ::java::util::Date *parse (::java::lang::String *);
  virtual ::java::util::Date *parse (::java::lang::String *, ::java::text::ParsePosition *) = 0;
  virtual ::java::lang::Object *parseObject (::java::lang::String *, ::java::text::ParsePosition *);
  virtual void setCalendar (::java::util::Calendar *);
  virtual void setLenient (jboolean);
  virtual void setNumberFormat (::java::text::NumberFormat *);
  virtual void setTimeZone (::java::util::TimeZone *);
public:  // actually protected
  ::java::util::Calendar * __attribute__((aligned(__alignof__( ::java::text::Format )))) calendar;
  ::java::text::NumberFormat *numberFormat;
public:
  static const jint FULL = 0L;
  static const jint LONG = 1L;
  static const jint MEDIUM = 2L;
  static const jint SHORT = 3L;
  static const jint DEFAULT = 2L;
  static const jint ERA_FIELD = 0L;
  static const jint YEAR_FIELD = 1L;
  static const jint MONTH_FIELD = 2L;
  static const jint DATE_FIELD = 3L;
  static const jint HOUR_OF_DAY1_FIELD = 4L;
  static const jint HOUR_OF_DAY0_FIELD = 5L;
  static const jint MINUTE_FIELD = 6L;
  static const jint SECOND_FIELD = 7L;
  static const jint MILLISECOND_FIELD = 8L;
  static const jint DAY_OF_WEEK_FIELD = 9L;
  static const jint DAY_OF_YEAR_FIELD = 10L;
  static const jint DAY_OF_WEEK_IN_MONTH_FIELD = 11L;
  static const jint WEEK_OF_YEAR_FIELD = 12L;
  static const jint WEEK_OF_MONTH_FIELD = 13L;
  static const jint AM_PM_FIELD = 14L;
  static const jint HOUR1_FIELD = 15L;
  static const jint HOUR0_FIELD = 16L;
  static const jint TIMEZONE_FIELD = 17L;

  friend class java_text_DateFormat$Field;

  static ::java::lang::Class class$;
};

#endif /* __java_text_DateFormat__ */
