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

#ifndef __java_util_Calendar__
#define __java_util_Calendar__

#pragma interface

#include <java/lang/Object.h>
#include <gcj/array.h>

class java::util::Calendar : public ::java::lang::Object
{
private:
  static ::java::util::ResourceBundle *getBundle (::java::util::Locale *);
public:  // actually protected
  Calendar ();
  Calendar (::java::util::TimeZone *, ::java::util::Locale *);
public:
  static ::java::util::Calendar *getInstance ();
  static ::java::util::Calendar *getInstance (::java::util::TimeZone *);
  static ::java::util::Calendar *getInstance (::java::util::Locale *);
  static ::java::util::Calendar *getInstance (::java::util::TimeZone *, ::java::util::Locale *);
  static JArray< ::java::util::Locale *> *getAvailableLocales ();
public:  // actually protected
  virtual void computeTime () = 0;
  virtual void computeFields () = 0;
public:
  virtual ::java::util::Date *getTime ();
  virtual void setTime (::java::util::Date *);
  virtual jlong getTimeInMillis ();
  virtual void setTimeInMillis (jlong);
  virtual jint get (jint);
public:  // actually protected
  virtual jint internalGet (jint);
public:
  virtual void set (jint, jint);
  virtual void set (jint, jint, jint);
  virtual void set (jint, jint, jint, jint, jint);
  virtual void set (jint, jint, jint, jint, jint, jint);
  virtual void clear ();
  virtual void clear (jint);
  virtual jboolean isSet (jint);
public:  // actually protected
  virtual void complete ();
public:
  virtual jboolean equals (::java::lang::Object *);
  virtual jint hashCode ();
  virtual jboolean before (::java::lang::Object *);
  virtual jboolean after (::java::lang::Object *);
  virtual void add (jint, jint) = 0;
  virtual void roll (jint, jboolean) = 0;
  virtual void roll (jint, jint);
  virtual void setTimeZone (::java::util::TimeZone *);
  virtual ::java::util::TimeZone *getTimeZone () { return zone; }
  virtual void setLenient (jboolean);
  virtual jboolean isLenient () { return lenient; }
  virtual void setFirstDayOfWeek (jint);
  virtual jint getFirstDayOfWeek () { return firstDayOfWeek; }
  virtual void setMinimalDaysInFirstWeek (jint);
  virtual jint getMinimalDaysInFirstWeek () { return minimalDaysInFirstWeek; }
  virtual jint getMinimum (jint) = 0;
  virtual jint getMaximum (jint) = 0;
  virtual jint getGreatestMinimum (jint) = 0;
  virtual jint getLeastMaximum (jint) = 0;
  virtual jint getActualMinimum (jint);
  virtual jint getActualMaximum (jint);
  virtual ::java::lang::Object *clone ();
  virtual ::java::lang::String *toString ();
private:
  void writeObject (::java::io::ObjectOutputStream *);
  void readObject (::java::io::ObjectInputStream *);
public:
  static const jint ERA = 0L;
  static const jint YEAR = 1L;
  static const jint MONTH = 2L;
  static const jint WEEK_OF_YEAR = 3L;
  static const jint WEEK_OF_MONTH = 4L;
  static const jint DATE = 5L;
  static const jint DAY_OF_MONTH = 5L;
  static const jint DAY_OF_YEAR = 6L;
  static const jint DAY_OF_WEEK = 7L;
  static const jint DAY_OF_WEEK_IN_MONTH = 8L;
  static const jint AM_PM = 9L;
  static const jint HOUR = 10L;
  static const jint HOUR_OF_DAY = 11L;
  static const jint MINUTE = 12L;
  static const jint SECOND = 13L;
  static const jint MILLISECOND = 14L;
  static const jint ZONE_OFFSET = 15L;
  static const jint DST_OFFSET = 16L;
  static const jint FIELD_COUNT = 17L;
  static const jint SUNDAY = 1L;
  static const jint MONDAY = 2L;
  static const jint TUESDAY = 3L;
  static const jint WEDNESDAY = 4L;
  static const jint THURSDAY = 5L;
  static const jint FRIDAY = 6L;
  static const jint SATURDAY = 7L;
  static const jint JANUARY = 0L;
  static const jint FEBRUARY = 1L;
  static const jint MARCH = 2L;
  static const jint APRIL = 3L;
  static const jint MAY = 4L;
  static const jint JUNE = 5L;
  static const jint JULY = 6L;
  static const jint AUGUST = 7L;
  static const jint SEPTEMBER = 8L;
  static const jint OCTOBER = 9L;
  static const jint NOVEMBER = 10L;
  static const jint DECEMBER = 11L;
  static const jint UNDECIMBER = 12L;
  static const jint AM = 0L;
  static const jint PM = 1L;
public:  // actually protected
  jintArray __attribute__((aligned(__alignof__( ::java::lang::Object ))))  fields;
  jbooleanArray isSet__;
  jlong time;
  jboolean isTimeSet;
  jboolean areFieldsSet;
private:
  ::java::util::TimeZone *zone;
  jboolean lenient;
  jint firstDayOfWeek;
  jint minimalDaysInFirstWeek;
  jboolean explicitDSTOffset;
  jint serialVersionOnStream;
public: // actually package-private
  static const jlong serialVersionUID = -1807547505821590642LL;
private:
  static ::java::lang::String *bundleName;
  static ::java::util::HashMap *cache;
  static JArray< ::java::lang::Class *> *ctorArgTypes;
  static JArray< ::java::lang::String *> *fieldNames;
public:

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

#endif /* __java_util_Calendar__ */
