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

#ifndef __java_io_VMObjectStreamClass__
#define __java_io_VMObjectStreamClass__

#pragma interface

#include <java/lang/Object.h>

class java::io::VMObjectStreamClass : public ::java::lang::Object
{

public: // actually package-private
  VMObjectStreamClass();
  static jboolean hasClassInitializer(::java::lang::Class *);
  static void setDoubleNative(::java::lang::reflect::Field *, ::java::lang::Object *, jdouble);
  static void setFloatNative(::java::lang::reflect::Field *, ::java::lang::Object *, jfloat);
  static void setLongNative(::java::lang::reflect::Field *, ::java::lang::Object *, jlong);
  static void setIntNative(::java::lang::reflect::Field *, ::java::lang::Object *, jint);
  static void setShortNative(::java::lang::reflect::Field *, ::java::lang::Object *, jshort);
  static void setCharNative(::java::lang::reflect::Field *, ::java::lang::Object *, jchar);
  static void setByteNative(::java::lang::reflect::Field *, ::java::lang::Object *, jbyte);
  static void setBooleanNative(::java::lang::reflect::Field *, ::java::lang::Object *, jboolean);
  static void setObjectNative(::java::lang::reflect::Field *, ::java::lang::Object *, ::java::lang::Object *);
public:
  static ::java::lang::Class class$;
};

#endif // __java_io_VMObjectStreamClass__
