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

#ifndef __java_text_DateFormat$Field__
#define __java_text_DateFormat$Field__

#pragma interface

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

extern "Java"
{
  namespace java
  {
    namespace text
    {
        class DateFormat$Field;
    }
  }
}

class java::text::DateFormat$Field : public ::java::text::Format$Field
{

  DateFormat$Field();
public: // actually protected
  DateFormat$Field(::java::lang::String *, jint);
public:
  virtual jint getCalendarField();
  static ::java::text::DateFormat$Field * ofCalendarField(jint);
public: // actually protected
  virtual ::java::lang::Object * readResolve();
public: // actually package-private
  static const jlong serialVersionUID = 7441350119349544720LL;
private:
  jint __attribute__((aligned(__alignof__( ::java::text::Format$Field)))) calendarField;
public:
  static ::java::text::DateFormat$Field * ERA;
  static ::java::text::DateFormat$Field * YEAR;
  static ::java::text::DateFormat$Field * MONTH;
  static ::java::text::DateFormat$Field * DAY_OF_MONTH;
  static ::java::text::DateFormat$Field * HOUR_OF_DAY1;
  static ::java::text::DateFormat$Field * HOUR_OF_DAY0;
  static ::java::text::DateFormat$Field * MINUTE;
  static ::java::text::DateFormat$Field * SECOND;
  static ::java::text::DateFormat$Field * MILLISECOND;
  static ::java::text::DateFormat$Field * DAY_OF_WEEK;
  static ::java::text::DateFormat$Field * DAY_OF_YEAR;
  static ::java::text::DateFormat$Field * DAY_OF_WEEK_IN_MONTH;
  static ::java::text::DateFormat$Field * WEEK_OF_YEAR;
  static ::java::text::DateFormat$Field * WEEK_OF_MONTH;
  static ::java::text::DateFormat$Field * AM_PM;
  static ::java::text::DateFormat$Field * HOUR1;
  static ::java::text::DateFormat$Field * HOUR0;
  static ::java::text::DateFormat$Field * TIME_ZONE;
public: // actually package-private
  static JArray< ::java::text::DateFormat$Field * > * allFields;
public:
  static ::java::lang::Class class$;
};

#endif // __java_text_DateFormat$Field__
