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

#include <jni.h>

#ifndef __java_io_VMObjectStreamClass__
#define __java_io_VMObjectStreamClass__

#ifdef __cplusplus
extern "C"
{
#endif

JNIEXPORT jboolean JNICALL Java_java_io_VMObjectStreamClass_hasClassInitializer (JNIEnv *env, jclass, jclass);
JNIEXPORT void JNICALL Java_java_io_VMObjectStreamClass_setDoubleNative (JNIEnv *env, jclass, jobject, jobject, jdouble);
JNIEXPORT void JNICALL Java_java_io_VMObjectStreamClass_setFloatNative (JNIEnv *env, jclass, jobject, jobject, jfloat);
JNIEXPORT void JNICALL Java_java_io_VMObjectStreamClass_setLongNative (JNIEnv *env, jclass, jobject, jobject, jlong);
JNIEXPORT void JNICALL Java_java_io_VMObjectStreamClass_setIntNative (JNIEnv *env, jclass, jobject, jobject, jint);
JNIEXPORT void JNICALL Java_java_io_VMObjectStreamClass_setShortNative (JNIEnv *env, jclass, jobject, jobject, jshort);
JNIEXPORT void JNICALL Java_java_io_VMObjectStreamClass_setCharNative (JNIEnv *env, jclass, jobject, jobject, jchar);
JNIEXPORT void JNICALL Java_java_io_VMObjectStreamClass_setByteNative (JNIEnv *env, jclass, jobject, jobject, jbyte);
JNIEXPORT void JNICALL Java_java_io_VMObjectStreamClass_setBooleanNative (JNIEnv *env, jclass, jobject, jobject, jboolean);
JNIEXPORT void JNICALL Java_java_io_VMObjectStreamClass_setObjectNative (JNIEnv *env, jclass, jobject, jobject, jobject);

#ifdef __cplusplus
}
#endif

#endif /* __java_io_VMObjectStreamClass__ */
