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

#ifndef __java_util_concurrent_TimeUnit__
#define __java_util_concurrent_TimeUnit__

#pragma interface

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


class java::util::concurrent::TimeUnit : public ::java::lang::Enum
{

  TimeUnit(::java::lang::String *, jint);
public: // actually package-private
  static jlong x(jlong, jlong, jlong);
public:
  virtual jlong convert(jlong, ::java::util::concurrent::TimeUnit *);
  virtual jlong toNanos(jlong);
  virtual jlong toMicros(jlong);
  virtual jlong toMillis(jlong);
  virtual jlong toSeconds(jlong);
  virtual jlong toMinutes(jlong);
  virtual jlong toHours(jlong);
  virtual jlong toDays(jlong);
public: // actually package-private
  virtual jint excessNanos(jlong, jlong) = 0;
public:
  virtual void timedWait(::java::lang::Object *, jlong);
  virtual void timedJoin(::java::lang::Thread *, jlong);
  virtual void sleep(jlong);
  static JArray< ::java::util::concurrent::TimeUnit * > * values();
  static ::java::util::concurrent::TimeUnit * valueOf(::java::lang::String *);
public: // actually package-private
  TimeUnit(::java::lang::String *, jint, ::java::util::concurrent::TimeUnit *);
public:
  static ::java::util::concurrent::TimeUnit * NANOSECONDS;
  static ::java::util::concurrent::TimeUnit * MICROSECONDS;
  static ::java::util::concurrent::TimeUnit * MILLISECONDS;
  static ::java::util::concurrent::TimeUnit * SECONDS;
  static ::java::util::concurrent::TimeUnit * MINUTES;
  static ::java::util::concurrent::TimeUnit * HOURS;
  static ::java::util::concurrent::TimeUnit * DAYS;
public: // actually package-private
  static const jlong C0 = 1LL;
  static const jlong C1 = 1000LL;
  static const jlong C2 = 1000000LL;
  static const jlong C3 = 1000000000LL;
  static const jlong C4 = 60000000000LL;
  static const jlong C5 = 3600000000000LL;
  static const jlong C6 = 86400000000000LL;
  static const jlong MAX = 9223372036854775807LL;
private:
  static JArray< ::java::util::concurrent::TimeUnit * > * ENUM$VALUES;
public:
  static ::java::lang::Class class$;
};

#endif // __java_util_concurrent_TimeUnit__
