/* DO NOT EDIT THIS FILE - it is machine generated */
#include "jri.h"

/* Header for class java/lang/Object */

#ifndef _java_lang_Object_H_
#define _java_lang_Object_H_

#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */

struct java_lang_Class;
struct java_lang_Object;
struct java_lang_String;
struct java_lang_Class;

/*******************************************************************************
 * Class java/lang/Object
 ******************************************************************************/

typedef struct java_lang_Object java_lang_Object;

#define classname_java_lang_Object	"java/lang/Object"

#define class_java_lang_Object(env) \
	((struct java_lang_Class*)JRI_FindClass(env, classname_java_lang_Object))

/*******************************************************************************
 * Public Methods
 ******************************************************************************/

#ifdef DEBUG

/*** public final native getClass ()Ljava/lang/Class; ***/
extern JRI_PUBLIC_API(struct java_lang_Class *)
java_lang_Object_getClass(JRIEnv* env, struct java_lang_Object* self);

/*** public native hashCode ()I ***/
extern JRI_PUBLIC_API(jint)
java_lang_Object_hashCode(JRIEnv* env, struct java_lang_Object* self);

/*** public equals (Ljava/lang/Object;)Z ***/
extern JRI_PUBLIC_API(jbool)
java_lang_Object_equals(JRIEnv* env, struct java_lang_Object* self, struct java_lang_Object *a);

/*** public toString ()Ljava/lang/String; ***/
extern JRI_PUBLIC_API(struct java_lang_String *)
java_lang_Object_toString(JRIEnv* env, struct java_lang_Object* self);

/*** public final native notify ()V ***/
extern JRI_PUBLIC_API(void)
java_lang_Object_notify(JRIEnv* env, struct java_lang_Object* self);

/*** public final native notifyAll ()V ***/
extern JRI_PUBLIC_API(void)
java_lang_Object_notifyAll(JRIEnv* env, struct java_lang_Object* self);

/*** public final native wait (J)V ***/
extern JRI_PUBLIC_API(void)
java_lang_Object_wait(JRIEnv* env, struct java_lang_Object* self, jlong a);

/*** public final wait (JI)V ***/
extern JRI_PUBLIC_API(void)
java_lang_Object_wait_1(JRIEnv* env, struct java_lang_Object* self, jlong a, jint b);

/*** public final wait ()V ***/
extern JRI_PUBLIC_API(void)
java_lang_Object_wait_2(JRIEnv* env, struct java_lang_Object* self);

/*** public <init> ()V ***/
extern JRI_PUBLIC_API(struct java_lang_Object*)
java_lang_Object_new(JRIEnv* env, struct java_lang_Class* clazz);

#else /* !DEBUG */

/*** public final native getClass ()Ljava/lang/Class; ***/
#define java_lang_Object_getClass(env, obj) \
	((struct java_lang_Class *)JRI_CallMethod(env)(env, JRI_CallMethod_op, obj, methodID_java_lang_Object_getClass))

/*** public native hashCode ()I ***/
#define java_lang_Object_hashCode(env, obj) \
	((jint)JRI_CallMethodInt(env)(env, JRI_CallMethod_op, obj, methodID_java_lang_Object_hashCode))

/*** public equals (Ljava/lang/Object;)Z ***/
#define java_lang_Object_equals(env, obj, a) \
	((jbool)JRI_CallMethodBoolean(env)(env, JRI_CallMethod_op, obj, methodID_java_lang_Object_equals, a))

/*** public toString ()Ljava/lang/String; ***/
#define java_lang_Object_toString(env, obj) \
	((struct java_lang_String *)JRI_CallMethod(env)(env, JRI_CallMethod_op, obj, methodID_java_lang_Object_toString))

/*** public final native notify ()V ***/
#define java_lang_Object_notify(env, obj) \
	((void)JRI_CallMethod(env)(env, JRI_CallMethod_op, obj, methodID_java_lang_Object_notify))

/*** public final native notifyAll ()V ***/
#define java_lang_Object_notifyAll(env, obj) \
	((void)JRI_CallMethod(env)(env, JRI_CallMethod_op, obj, methodID_java_lang_Object_notifyAll))

/*** public final native wait (J)V ***/
#define java_lang_Object_wait(env, obj, a) \
	((void)JRI_CallMethod(env)(env, JRI_CallMethod_op, obj, methodID_java_lang_Object_wait, a))

/*** public final wait (JI)V ***/
#define java_lang_Object_wait_1(env, obj, a, b) \
	((void)JRI_CallMethod(env)(env, JRI_CallMethod_op, obj, methodID_java_lang_Object_wait_1, a, b))

/*** public final wait ()V ***/
#define java_lang_Object_wait_2(env, obj) \
	((void)JRI_CallMethod(env)(env, JRI_CallMethod_op, obj, methodID_java_lang_Object_wait_2))

/*** public <init> ()V ***/
#define java_lang_Object_new(env, clazz)	\
	((struct java_lang_Object*)JRI_NewObject(env)(env, JRI_NewObject_op, clazz, methodID_java_lang_Object_new))

#endif /* !DEBUG*/

/*** public final native getClass ()Ljava/lang/Class; ***/
extern JRIMethodID FAR methodID_java_lang_Object_getClass;
#define name_java_lang_Object_getClass	"getClass"
#define sig_java_lang_Object_getClass 	"()Ljava/lang/Class;"
#define use_java_lang_Object_getClass(env, clazz)	\
	(methodID_java_lang_Object_getClass =	\
		JRI_GetMethodID(env, clazz,	\
			name_java_lang_Object_getClass,	\
			sig_java_lang_Object_getClass))
#define unuse_java_lang_Object_getClass(env, clazz)	\
	(methodID_java_lang_Object_getClass = JRIUninitialized)

/*** public native hashCode ()I ***/
extern JRIMethodID FAR methodID_java_lang_Object_hashCode;
#define name_java_lang_Object_hashCode	"hashCode"
#define sig_java_lang_Object_hashCode 	"()I"
#define use_java_lang_Object_hashCode(env, clazz)	\
	(methodID_java_lang_Object_hashCode =	\
		JRI_GetMethodID(env, clazz,	\
			name_java_lang_Object_hashCode,	\
			sig_java_lang_Object_hashCode))
#define unuse_java_lang_Object_hashCode(env, clazz)	\
	(methodID_java_lang_Object_hashCode = JRIUninitialized)

/*** public equals (Ljava/lang/Object;)Z ***/
extern JRIMethodID FAR methodID_java_lang_Object_equals;
#define name_java_lang_Object_equals	"equals"
#define sig_java_lang_Object_equals 	"(Ljava/lang/Object;)Z"
#define use_java_lang_Object_equals(env, clazz)	\
	(methodID_java_lang_Object_equals =	\
		JRI_GetMethodID(env, clazz,	\
			name_java_lang_Object_equals,	\
			sig_java_lang_Object_equals))
#define unuse_java_lang_Object_equals(env, clazz)	\
	(methodID_java_lang_Object_equals = JRIUninitialized)

/*** public toString ()Ljava/lang/String; ***/
extern JRIMethodID FAR methodID_java_lang_Object_toString;
#define name_java_lang_Object_toString	"toString"
#define sig_java_lang_Object_toString 	"()Ljava/lang/String;"
#define use_java_lang_Object_toString(env, clazz)	\
	(methodID_java_lang_Object_toString =	\
		JRI_GetMethodID(env, clazz,	\
			name_java_lang_Object_toString,	\
			sig_java_lang_Object_toString))
#define unuse_java_lang_Object_toString(env, clazz)	\
	(methodID_java_lang_Object_toString = JRIUninitialized)

/*** public final native notify ()V ***/
extern JRIMethodID FAR methodID_java_lang_Object_notify;
#define name_java_lang_Object_notify	"notify"
#define sig_java_lang_Object_notify 	"()V"
#define use_java_lang_Object_notify(env, clazz)	\
	(methodID_java_lang_Object_notify =	\
		JRI_GetMethodID(env, clazz,	\
			name_java_lang_Object_notify,	\
			sig_java_lang_Object_notify))
#define unuse_java_lang_Object_notify(env, clazz)	\
	(methodID_java_lang_Object_notify = JRIUninitialized)

/*** public final native notifyAll ()V ***/
extern JRIMethodID FAR methodID_java_lang_Object_notifyAll;
#define name_java_lang_Object_notifyAll	"notifyAll"
#define sig_java_lang_Object_notifyAll 	"()V"
#define use_java_lang_Object_notifyAll(env, clazz)	\
	(methodID_java_lang_Object_notifyAll =	\
		JRI_GetMethodID(env, clazz,	\
			name_java_lang_Object_notifyAll,	\
			sig_java_lang_Object_notifyAll))
#define unuse_java_lang_Object_notifyAll(env, clazz)	\
	(methodID_java_lang_Object_notifyAll = JRIUninitialized)

/*** public final native wait (J)V ***/
extern JRIMethodID FAR methodID_java_lang_Object_wait;
#define name_java_lang_Object_wait	"wait"
#define sig_java_lang_Object_wait 	"(J)V"
#define use_java_lang_Object_wait(env, clazz)	\
	(methodID_java_lang_Object_wait =	\
		JRI_GetMethodID(env, clazz,	\
			name_java_lang_Object_wait,	\
			sig_java_lang_Object_wait))
#define unuse_java_lang_Object_wait(env, clazz)	\
	(methodID_java_lang_Object_wait = JRIUninitialized)

/*** public final wait (JI)V ***/
extern JRIMethodID FAR methodID_java_lang_Object_wait_1;
#define name_java_lang_Object_wait_1	"wait"
#define sig_java_lang_Object_wait_1 	"(JI)V"
#define use_java_lang_Object_wait_1(env, clazz)	\
	(methodID_java_lang_Object_wait_1 =	\
		JRI_GetMethodID(env, clazz,	\
			name_java_lang_Object_wait_1,	\
			sig_java_lang_Object_wait_1))
#define unuse_java_lang_Object_wait_1(env, clazz)	\
	(methodID_java_lang_Object_wait_1 = JRIUninitialized)

/*** public final wait ()V ***/
extern JRIMethodID FAR methodID_java_lang_Object_wait_2;
#define name_java_lang_Object_wait_2	"wait"
#define sig_java_lang_Object_wait_2 	"()V"
#define use_java_lang_Object_wait_2(env, clazz)	\
	(methodID_java_lang_Object_wait_2 =	\
		JRI_GetMethodID(env, clazz,	\
			name_java_lang_Object_wait_2,	\
			sig_java_lang_Object_wait_2))
#define unuse_java_lang_Object_wait_2(env, clazz)	\
	(methodID_java_lang_Object_wait_2 = JRIUninitialized)

/*** public <init> ()V ***/
extern JRIMethodID FAR methodID_java_lang_Object_new;
#define name_java_lang_Object_new	"<init>"
#define sig_java_lang_Object_new 	"()V"
#define use_java_lang_Object_new(env, clazz)	\
	(methodID_java_lang_Object_new =	\
		JRI_GetMethodID(env, clazz,	\
			name_java_lang_Object_new,	\
			sig_java_lang_Object_new))
#define unuse_java_lang_Object_new(env, clazz)	\
	(methodID_java_lang_Object_new = JRIUninitialized)

/*******************************************************************************
 * IMPLEMENTATION SECTION: 
 * Define the IMPLEMENT_java_lang_Object symbol 
 * if you intend to implement the native methods of this class. This 
 * symbol makes the private and protected methods available. You should 
 * also call the register_java_lang_Object routine 
 * to make your native methods available.
 ******************************************************************************/

extern JRI_PUBLIC_API(struct java_lang_Class*)
use_java_lang_Object(JRIEnv* env);

extern JRI_PUBLIC_API(void)
unuse_java_lang_Object(JRIEnv* env);

extern JRI_PUBLIC_API(struct java_lang_Class*)
register_java_lang_Object(JRIEnv* env);

extern JRI_PUBLIC_API(void)
unregister_java_lang_Object(JRIEnv* env);

#ifdef IMPLEMENT_java_lang_Object

/*******************************************************************************
 * Native Methods: 
 * These are the signatures of the native methods which you must implement.
 ******************************************************************************/

/*** public final native getClass ()Ljava/lang/Class; ***/
extern JRI_PUBLIC_API(struct java_lang_Class *)
native_java_lang_Object_getClass(JRIEnv* env, struct java_lang_Object* self);

/*** public native hashCode ()I ***/
extern JRI_PUBLIC_API(jint)
native_java_lang_Object_hashCode(JRIEnv* env, struct java_lang_Object* self);

/*** protected native clone ()Ljava/lang/Object; ***/
extern JRI_PUBLIC_API(struct java_lang_Object *)
native_java_lang_Object_clone(JRIEnv* env, struct java_lang_Object* self);

/*** public final native notify ()V ***/
extern JRI_PUBLIC_API(void)
native_java_lang_Object_notify(JRIEnv* env, struct java_lang_Object* self);

/*** public final native notifyAll ()V ***/
extern JRI_PUBLIC_API(void)
native_java_lang_Object_notifyAll(JRIEnv* env, struct java_lang_Object* self);

/*** public final native wait (J)V ***/
extern JRI_PUBLIC_API(void)
native_java_lang_Object_wait(JRIEnv* env, struct java_lang_Object* self, jlong a);

/*******************************************************************************
 * Implementation Methods: 
 * You should only use these from within the native method definitions.
 ******************************************************************************/

#ifdef DEBUG

/*** protected native clone ()Ljava/lang/Object; ***/
extern JRI_PUBLIC_API(struct java_lang_Object *)
java_lang_Object_clone(JRIEnv* env, struct java_lang_Object* self);

/*** protected finalize ()V ***/
extern JRI_PUBLIC_API(void)
java_lang_Object_finalize(JRIEnv* env, struct java_lang_Object* self);

#else /* !DEBUG */

/*** protected native clone ()Ljava/lang/Object; ***/
#define java_lang_Object_clone(env, obj) \
	((struct java_lang_Object *)JRI_CallMethod(env)(env, JRI_CallMethod_op, obj, methodID_java_lang_Object_clone))

/*** protected finalize ()V ***/
#define java_lang_Object_finalize(env, obj) \
	((void)JRI_CallMethod(env)(env, JRI_CallMethod_op, obj, methodID_java_lang_Object_finalize))

#endif /* !DEBUG*/

/*** protected native clone ()Ljava/lang/Object; ***/
extern JRIMethodID FAR methodID_java_lang_Object_clone;
#define name_java_lang_Object_clone	"clone"
#define sig_java_lang_Object_clone 	"()Ljava/lang/Object;"
#define use_java_lang_Object_clone(env, clazz)	\
	(methodID_java_lang_Object_clone =	\
		JRI_GetMethodID(env, clazz,	\
			name_java_lang_Object_clone,	\
			sig_java_lang_Object_clone))
#define unuse_java_lang_Object_clone(env, clazz)	\
	(methodID_java_lang_Object_clone = JRIUninitialized)

/*** protected finalize ()V ***/
extern JRIMethodID FAR methodID_java_lang_Object_finalize;
#define name_java_lang_Object_finalize	"finalize"
#define sig_java_lang_Object_finalize 	"()V"
#define use_java_lang_Object_finalize(env, clazz)	\
	(methodID_java_lang_Object_finalize =	\
		JRI_GetMethodID(env, clazz,	\
			name_java_lang_Object_finalize,	\
			sig_java_lang_Object_finalize))
#define unuse_java_lang_Object_finalize(env, clazz)	\
	(methodID_java_lang_Object_finalize = JRIUninitialized)

#endif /* IMPLEMENT_java_lang_Object */

#ifdef __cplusplus
} /* extern "C" */

/*******************************************************************************
 * C++ Definitions
 ******************************************************************************/


struct java_lang_Object {

	static struct java_lang_Class* _use(JRIEnv* env) {
		return use_java_lang_Object(env);
	}

	static void _unuse(JRIEnv* env) {
		unuse_java_lang_Object(env);
	}

	static struct java_lang_Class* _register(JRIEnv* env) {
		return register_java_lang_Object(env);
	}

	static void _unregister(JRIEnv* env) {
		unregister_java_lang_Object(env);
	}

	static struct java_lang_Class* _class(JRIEnv* env) {
		return class_java_lang_Object(env);
	}

	/* Public Methods */
	/*** public final native getClass ()Ljava/lang/Class; ***/
	struct java_lang_Class * getClass(JRIEnv* env) {
		return java_lang_Object_getClass(env, this);
	}

	/*** public native hashCode ()I ***/
	jint hashCode(JRIEnv* env) {
		return java_lang_Object_hashCode(env, this);
	}

	/*** public equals (Ljava/lang/Object;)Z ***/
	jbool equals(JRIEnv* env, struct java_lang_Object *a) {
		return java_lang_Object_equals(env, this, a);
	}

	/*** public toString ()Ljava/lang/String; ***/
	struct java_lang_String * toString(JRIEnv* env) {
		return java_lang_Object_toString(env, this);
	}

	/*** public final native notify ()V ***/
	void notify(JRIEnv* env) {
		java_lang_Object_notify(env, this);
	}

	/*** public final native notifyAll ()V ***/
	void notifyAll(JRIEnv* env) {
		java_lang_Object_notifyAll(env, this);
	}

	/*** public final native wait (J)V ***/
	void wait(JRIEnv* env, jlong a) {
		java_lang_Object_wait(env, this, a);
	}

	/*** public final wait (JI)V ***/
	void wait(JRIEnv* env, jlong a, jint b) {
		java_lang_Object_wait_1(env, this, a, b);
	}

	/*** public final wait ()V ***/
	void wait(JRIEnv* env) {
		java_lang_Object_wait_2(env, this);
	}

	/*** public <init> ()V ***/
	static java_lang_Object* _new(JRIEnv* env, struct java_lang_Class* clazz) {
		return java_lang_Object_new(env, clazz);
	}

#ifdef IMPLEMENT_java_lang_Object

	/* Protected Methods */
	/*** protected native clone ()Ljava/lang/Object; ***/
	struct java_lang_Object * clone(JRIEnv* env) {
		return java_lang_Object_clone(env, this);
	}

	/*** protected finalize ()V ***/
	void finalize(JRIEnv* env) {
		java_lang_Object_finalize(env, this);
	}

#endif /* IMPLEMENT_java_lang_Object */
};

#endif /* __cplusplus */

#endif /* Class java/lang/Object */
