
// 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 Date$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__
