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

#ifndef __java_sql_DataTruncation__
#define __java_sql_DataTruncation__

#pragma interface

#include <java/sql/SQLWarning.h>
extern "Java"
{
  namespace java
  {
    namespace sql
    {
        class DataTruncation;
    }
  }
}

class java::sql::DataTruncation : public ::java::sql::SQLWarning
{

public:
  DataTruncation(jint, jboolean, jboolean, jint, jint);
  virtual jint getIndex();
  virtual jboolean getParameter();
  virtual jboolean getRead();
  virtual jint getDataSize();
  virtual jint getTransferSize();
public: // actually package-private
  static const jlong serialVersionUID = 6464298989504059473LL;
private:
  jint __attribute__((aligned(__alignof__( ::java::sql::SQLWarning)))) dataSize;
  jint index;
  jboolean parameter;
  jboolean read;
  jint transferSize;
public:
  static ::java::lang::Class class$;
};

#endif // __java_sql_DataTruncation__
