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

#ifndef __java_util_GregorianCalendar__
#define __java_util_GregorianCalendar__

#pragma interface

#include <java/util/Calendar.h>
#include <gcj/array.h>


class java::util::GregorianCalendar : public ::java::util::Calendar
{

public:
  GregorianCalendar();
  GregorianCalendar(::java::util::TimeZone *);
  GregorianCalendar(::java::util::Locale *);
  GregorianCalendar(::java::util::TimeZone *, ::java::util::Locale *);
private:
  GregorianCalendar(::java::util::TimeZone *, ::java::util::Locale *, jboolean);
public:
  GregorianCalendar(jint, jint, jint);
  GregorianCalendar(jint, jint, jint, jint, jint);
  GregorianCalendar(jint, jint, jint, jint, jint, jint);
  virtual void setGregorianChange(::java::util::Date *);
  virtual ::java::util::Date * getGregorianChange();
  virtual jboolean isLeapYear(jint);
private:
  jint getWeekDay(jint, jint);
  jint getFirstDayOfMonth(jint, jint);
  jboolean isGregorian(jint, jint);
  void nonLeniencyCheck();
public: // actually protected
  virtual void computeTime();
private:
  jlong getLinearDay(jint, jint, jboolean);
  void calculateDay(JArray< jint > *, jlong, jboolean);
public: // actually protected
  virtual void computeFields();
public:
  virtual jint hashCode();
  virtual jboolean equals(::java::lang::Object *);
  virtual void add(jint, jint);
  virtual void roll(jint, jboolean);
private:
  void cleanUpAfterRoll(jint, jint);
public:
  virtual void roll(jint, jint);
  virtual jint getMinimum(jint);
  virtual jint getMaximum(jint);
  virtual jint getGreatestMinimum(jint);
  virtual jint getLeastMaximum(jint);
  virtual jint getActualMinimum(jint);
  virtual jint getActualMaximum(jint);
  static const jint BC = 0;
  static const jint AD = 1;
private:
  jlong __attribute__((aligned(__alignof__( ::java::util::Calendar)))) gregorianCutover;
public: // actually package-private
  static const jlong serialVersionUID = -8125100834729963327LL;
private:
  static const jint EPOCH_DAYS = 719162;
  static JArray< jint > * minimums;
  static JArray< jint > * maximums;
public:
  static ::java::lang::Class class$;
};

#endif // __java_util_GregorianCalendar__