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

#ifndef __java_sql_Timestamp__
#define __java_sql_Timestamp__

#pragma interface

#include <java/util/Date.h>
extern "Java"
{
  namespace java
  {
    namespace sql
    {
        class Timestamp;
    }
    namespace text
    {
        class DecimalFormat;
        class SimpleDateFormat;
    }
  }
}

class java::sql::Timestamp : public ::java::util::Date
{

public:
  static ::java::sql::Timestamp * valueOf(::java::lang::String *);
  Timestamp(jint, jint, jint, jint, jint, jint, jint);
  Timestamp(jlong);
  virtual jlong getTime();
  virtual ::java::lang::String * toString();
  virtual jint getNanos();
  virtual void setNanos(jint);
  virtual jboolean before(::java::sql::Timestamp *);
  virtual jboolean after(::java::sql::Timestamp *);
  virtual jboolean equals(::java::lang::Object *);
  virtual jboolean equals(::java::sql::Timestamp *);
  virtual jint compareTo(::java::sql::Timestamp *);
  virtual jint Timestamp$compareTo(::java::util::Date *);
public: // actually package-private
  static const jlong serialVersionUID = 2745179027874758501LL;
private:
  static ::java::text::SimpleDateFormat * dateFormat;
  static ::java::text::DecimalFormat * decimalFormat;
  static ::java::lang::StringBuffer * sbuf;
  jint __attribute__((aligned(__alignof__( ::java::util::Date)))) nanos;
public:
  static ::java::lang::Class class$;
};

#endif // __java_sql_Timestamp__
