From: jowenn Date: Mon, 1 Dec 2003 15:33:30 +0000 (+0000) Subject: reflection, loader fix (before it did offer an unloaded (not found) class as loaded... X-Git-Url: http://wien.tomnetworks.com/gitweb/?p=cacao.git;a=commitdiff_plain;h=c519dc573c4567443e42d23a48018c70bcc47447 reflection, loader fix (before it did offer an unloaded (not found) class as loaded if it has been requested a second time. jni modifications, classinfo structures are now created with GCNEW, fix for arrays with size <0 --- diff --git a/Makefile.am b/Makefile.am index 4661e8b73..e0e52ccc9 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,6 +1,6 @@ ## Process this file with automake to produce Makefile.in -# $Id: Makefile.am 677 2003-11-24 20:55:42Z twisti $ +# $Id: Makefile.am 682 2003-12-01 15:33:30Z jowenn $ @SET_MAKE@ @@ -59,7 +59,7 @@ cacao_LDADD = \ classpathbin/@ARCH_DIR@/native/jni/java-util/.libs/libjavautil.a \ classpathbin/@ARCH_DIR@/native/jni/java-lang/.libs/libjavalang.a \ classpathbin/@ARCH_DIR@/native/jni/java-lang/.libs/libjavalangreflect.a @AWT_OBJS@ @ZIP_LIBS@ - + cacao_DEPENDENCIES = \ jit/libjit.a \ @@ -136,7 +136,12 @@ nativetypes.hh jit/@ARCH_DIR@/offsets.h nativetable.hh: cacaoh Makefile.am Makef java.lang.reflect.Proxy \ java.lang.Double \ java.lang.Compiler \ + java.lang.Byte \ + java.lang.Character \ java.lang.Integer \ + java.lang.Long \ + java.lang.Short \ + java.lang.Boolean \ java.lang.StackTraceElement \ java.lang.Float \ java.lang.Object \ diff --git a/builtin.c b/builtin.c index ea4415500..5b364eb9e 100644 --- a/builtin.c +++ b/builtin.c @@ -34,7 +34,7 @@ calls instead of machine instructions, using the C calling convention. - $Id: builtin.c 669 2003-11-23 14:04:20Z edwin $ + $Id: builtin.c 682 2003-12-01 15:33:30Z jowenn $ */ @@ -534,6 +534,10 @@ java_arrayheader *builtin_newarray(s4 size,vftbl *arrayvftbl) s4 dataoffset = desc->dataoffset; s4 componentsize = desc->componentsize; + if (size<0) { + exceptionptr=native_new_and_init(loader_load(utf_new_char("java/lang/NegativeArraySizeException"))); + return NULL; + } #ifdef SIZE_FROM_CLASSINFO s4 actualsize = align_size(dataoffset + size * componentsize); #else diff --git a/global.h b/global.h index d2a6cec2c..bfffb6ebe 100644 --- a/global.h +++ b/global.h @@ -31,7 +31,7 @@ Philipp Tomsich Edwin Steiner - $Id: global.h 670 2003-11-23 14:36:26Z edwin $ + $Id: global.h 682 2003-12-01 15:33:30Z jowenn $ */ @@ -584,6 +584,7 @@ struct classinfo { /* class structure */ listnode listnode; /* linkage */ bool initialized; /* true, if class already initialised */ + bool loaded; /* true, if class already loaded */ bool linked; /* true, if class already linked */ s4 index; /* hierarchy depth (classes) or index (interfaces) */ diff --git a/headers.c b/headers.c index 3c52ec182..1e031ce03 100644 --- a/headers.c +++ b/headers.c @@ -29,7 +29,7 @@ Changes: Mark Probst Philipp Tomsich - $Id: headers.c 676 2003-11-24 20:50:23Z twisti $ + $Id: headers.c 682 2003-12-01 15:33:30Z jowenn $ */ @@ -59,6 +59,7 @@ void throw_classnotfoundexception() panic("class not found----------"); } /* */ + void throw_classnotfoundexception2(utf* classname) { sprintf (logtext, "Loading class: "); @@ -66,6 +67,11 @@ void throw_classnotfoundexception2(utf* classname) panic("******class not found"); } +/* this is here to avoid link errors. We are not interested in linkagerrors in cacaoh right now*/ +void throw_linkageerror2(utf* classname) +{ +} + java_objectheader *literalstring_new (utf *u) { return NULL; } diff --git a/jni.c b/jni.c index 63f377e88..ab99dfe3d 100644 --- a/jni.c +++ b/jni.c @@ -1,63 +1,63 @@ -/* jni.c - implementation of JNI functions +/********************************** jni.c ***************************************** - Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 - R. Grafl, A. Krall, C. Kruegel, C. Oates, R. Obermaisser, - M. Probst, S. Ring, E. Steiner, C. Thalinger, D. Thuernbeck, - P. Tomsich, J. Wenninger - - This file is part of CACAO. - - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2, or (at - your option) any later version. - - This program is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. - - Contact: cacao@complang.tuwien.ac.at - - Authors: ? - - $Id: jni.c 676 2003-11-24 20:50:23Z twisti $ - -*/ + implementation of the Java Native Interface functions + which are used in the JNI function table +***********************************************************************************/ #include "jni.h" -#include "types.h" -#include "jit.h" -#include "builtin.h" +#include "global.h" #include "loader.h" -#include "native.h" #include "tables.h" -#include "asmpart.h" -#include "toolbox/memory.h" +#include "native.h" +#include "builtin.h" +#include "threads/thread.h" +#include "nat/java_lang_Byte.h" +#include "nat/java_lang_Character.h" +#include "nat/java_lang_Short.h" +#include "nat/java_lang_Integer.h" +#include "nat/java_lang_Boolean.h" +#include "nat/java_lang_Long.h" +#include "nat/java_lang_Float.h" +#include "nat/java_lang_Double.h" #include "nat/java_lang_Throwable.h" +#include "jit/jit.h" +#include "asmpart.h" +#define JNI_VERSION 0x00010002 + +static utf* utf_char=0; +static utf* utf_bool=0; +static utf* utf_byte=0; +static utf* utf_short=0; +static utf* utf_int=0; +static utf* utf_long=0; +static utf* utf_float=0; +static utf* utf_double=0; /********************* accessing instance-fields **********************************/ +#define setField(obj,typ,var,val) *((typ*) ((long int) obj + (long int) var->offset))=val; +#define getField(obj,typ,var) *((typ*) ((long int) obj + (long int) var->offset)) +#define setfield_critical(clazz,obj,name,sig,jdatatype,val) setField(obj,jdatatype,getFieldID_critical(env,clazz,name,sig),val); + + + u4 get_parametercount(methodinfo *m) { utf *descr = m->descriptor; /* method-descriptor */ char *utf_ptr = descr->text; /* current position in utf-text */ char *desc_end = utf_end(descr); /* points behind utf string */ + java_objectarray* result; int parametercount = 0; + int i; /* skip '(' */ utf_nextu2(&utf_ptr); /* determine number of parameters */ - while (*utf_ptr != ')') { - get_type(&utf_ptr, desc_end, true); + while ( *utf_ptr != ')' ) { + get_type(&utf_ptr,desc_end,true); parametercount++; } @@ -66,17 +66,130 @@ u4 get_parametercount(methodinfo *m) +void fill_callblock(void *obj,utf *descr,jni_callblock blk[], va_list data, char ret) { + char *utf__ptr = descr->text; /* current position in utf-text */ + char **utf_ptr = &utf__ptr; + char *desc_end = utf_end(descr); /* points behind utf string */ + + int cnt; + + jdouble d; + jlong l; + u4 dummy; + char c; + /* + log_text("fill_callblock"); + utf_display(descr); + log_text("===="); + */ + /* skip '(' */ + utf_nextu2(utf_ptr); + + /* determine number of parameters */ + if (obj) { + blk[0].itemtype=TYPE_ADR; + blk[0].item=(u8)(u4)obj; + cnt=1; + } else cnt=0; + while ( **utf_ptr != ')' ) { + if (*utf_ptr>=desc_end) + panic("illegal method descriptor"); + + switch (utf_nextu2(utf_ptr)) { + /* primitive types */ + case 'B' : + case 'C' : + case 'S' : + case 'Z' : + blk[cnt].itemtype=TYPE_INT; + blk[cnt].item=(u8) va_arg(data,int); + break; + case 'I' : + blk[cnt].itemtype=TYPE_INT; + dummy=va_arg(data,u4); + /*printf("fill_callblock: pos:%d, value:%d\n",cnt,dummy);*/ + blk[cnt].item=(u8)dummy; + + break; + + case 'J' : + blk[cnt].itemtype=TYPE_LNG; + blk[cnt].item=(u8)va_arg(data,jlong); + break; + case 'F' : + blk[cnt].itemtype=TYPE_FLT; + *((jfloat*)(&blk[cnt].item))=((jfloat)va_arg(data,jdouble)); + break; + + case 'D' : + blk[cnt].itemtype=TYPE_DBL; + *((jdouble*)(&blk[cnt].item))=(jdouble)va_arg(data,jdouble); + break; + case 'V' : panic ("V not allowed as function parameter"); + break; + case 'L' : { + while (utf_nextu2(utf_ptr)!=';') + + blk[cnt].itemtype=TYPE_ADR; + blk[cnt].item=(u8)(u4)va_arg(data,void*); + break; + } + case '[' : { + /* XXX */ + /* arrayclass */ + char *start = *utf_ptr; + char ch; + while ((ch = utf_nextu2(utf_ptr))=='[') + if (ch == 'L') { + while (utf_nextu2(utf_ptr)!=';') {} + } + + ch=utf_nextu2(utf_ptr); + blk[cnt].itemtype=TYPE_ADR; + blk[cnt].item=(u8)(u4)va_arg(data,void*); + break; + } + } + cnt++; + } + + /*the standard doesn't say anything about return value checking, but it appears to be usefull*/ + c=utf_nextu2(utf_ptr); + c=utf_nextu2(utf_ptr); + /*printf("%c %c\n",ret,c);*/ + if (ret=='O') { + if (!((c=='L') || (c=='['))) log_text("\n====\nWarning call*Method called for function with wrong return type\n===="); + } else if (ret != c) log_text("\n====\nWarning call*Method called for function with wrong return type\n===="); + +} + /* XXX it could be considered if we should do typechecking here in the future */ -void fill_callblock(void *obj, utf *descr, jni_callblock blk[], va_list data, char ret) +char fill_callblock_objA(void *obj, utf *descr, jni_callblock blk[], java_objectarray* params) { char *utf__ptr = descr->text; /* current position in utf-text */ char **utf_ptr = &utf__ptr; char *desc_end = utf_end(descr); /* points behind utf string */ + jobject param; int cnt; + int cnts; u4 dummy; char c; + char *cp; + intsDisable(); + if (utf_char==0) { + utf_char=utf_new_char("java/lang/Character"); + utf_bool=utf_new_char("java/lang/Boolean"); + utf_byte=utf_new_char("java/lang/Byte"); + utf_short=utf_new_char("java/lang/Short"); + utf_int=utf_new_char("java/lang/Integer"); + utf_long=utf_new_char("java/lang/Long"); + utf_float=utf_new_char("java/lang/Float"); + utf_double=utf_new_char("java/lang/Double"); + } + intsRestore(); + /* log_text("fill_callblock"); utf_display(descr); @@ -95,85 +208,203 @@ void fill_callblock(void *obj, utf *descr, jni_callblock blk[], va_list data, ch cnt = 0; } + cnts=0; while (**utf_ptr != ')') { if (*utf_ptr >= desc_end) panic("illegal method descriptor"); /* primitive types */ switch (utf_nextu2(utf_ptr)) { - case 'B': + case 'B': + param=params->data[cnts]; + if (param->vftbl->class->name==utf_byte) { + blk[cnt].itemtype=TYPE_INT; + blk[cnt].item = (u8) ((struct java_lang_Byte * )param)->value; + } else { + exceptionptr=native_new_and_init(loader_load(utf_new_char("java/lang/IllegalArgumentException"))); + return 0; + } + break; case 'C': + param=params->data[cnts]; + if (param->vftbl->class->name==utf_char) { + blk[cnt].itemtype=TYPE_INT; + blk[cnt].item = (u8) ((struct java_lang_Character * )param)->value; + } else { + exceptionptr=native_new_and_init(loader_load(utf_new_char("java/lang/IllegalArgumentException"))); + return 0; + } + break; + case 'S': + param=params->data[cnts]; + if (param->vftbl->class->name==utf_short) { + blk[cnt].itemtype=TYPE_INT; + blk[cnt].item = (u8) ((struct java_lang_Short* )param)->value; + } else { + if (param->vftbl->class->name==utf_byte) { + blk[cnt].itemtype=TYPE_INT; + blk[cnt].item = (u8) ((struct java_lang_Byte * )param)->value; + } else { + exceptionptr=native_new_and_init(loader_load(utf_new_char("java/lang/IllegalArgumentException"))); + return 0; + } + } + break; + case 'Z': - blk[cnt].itemtype = TYPE_INT; - blk[cnt].item = (u8) va_arg(data, int); - break; + param=params->data[cnts]; + if (param->vftbl->class->name==utf_bool) { + blk[cnt].itemtype=TYPE_INT; + blk[cnt].item = (u8) ((struct java_lang_Boolean * )param)->value; + } else { + exceptionptr=native_new_and_init(loader_load(utf_new_char("java/lang/IllegalArgumentException"))); + return 0; + } + break; case 'I': - blk[cnt].itemtype = TYPE_INT; - dummy = va_arg(data, u4); - /*printf("fill_callblock: pos:%d, value:%d\n",cnt,dummy);*/ - blk[cnt].item = (u8) dummy; - break; - + log_text("fill_callblock_objA: param 'I'"); + param=params->data[cnts]; + if (param->vftbl->class->name==utf_int) { + blk[cnt].itemtype=TYPE_INT; + blk[cnt].item = (u8) ((struct java_lang_Integer * )param)->value; + /*printf("INT VALUE :%d\n",((struct java_lang_Integer * )param)->value);*/ + } else { + if (param->vftbl->class->name==utf_short) { + blk[cnt].itemtype=TYPE_INT; + blk[cnt].item = (u8) ((struct java_lang_Short* )param)->value; + } else { + if (param->vftbl->class->name==utf_byte) { + blk[cnt].itemtype=TYPE_INT; + blk[cnt].item = (u8) ((struct java_lang_Byte * )param)->value; + + } else { + exceptionptr=native_new_and_init(loader_load(utf_new_char("java/lang/IllegalArgumentException"))); + return 0; + } + } + } + break; case 'J': - blk[cnt].itemtype = TYPE_LNG; - blk[cnt].item = (u8) va_arg(data, jlong); - break; - - case 'F': - blk[cnt].itemtype = TYPE_FLT; - *((jfloat*) (&blk[cnt].item)) = ((jfloat) va_arg(data, jdouble)); - break; - - case 'D': - blk[cnt].itemtype = TYPE_DBL; - *((jdouble*) (&blk[cnt].item)) = (jdouble) va_arg(data, jdouble); - break; + param=params->data[cnts]; + if (param->vftbl->class->name==utf_long) { + blk[cnt].itemtype=TYPE_LNG; + blk[cnt].item = (u8) ((struct java_lang_Long * )param)->value; + } else { + if (param->vftbl->class->name==utf_int) { + blk[cnt].itemtype=TYPE_LNG; + blk[cnt].item = (u8) ((struct java_lang_Integer * )param)->value; + } else { + if (param->vftbl->class->name==utf_short) { + blk[cnt].itemtype=TYPE_LNG; + blk[cnt].item = (u8) ((struct java_lang_Short* )param)->value; + } else { + if (param->vftbl->class->name==utf_byte) { + blk[cnt].itemtype=TYPE_LNG; + blk[cnt].item = (u8) ((struct java_lang_Byte * )param)->value; + } else { + exceptionptr=native_new_and_init(loader_load(utf_new_char("java/lang/IllegalArgumentException"))); + return 0; + } + } + } + } + break; + + case 'F' : + param=params->data[cnts]; + if (param->vftbl->class->name==utf_float) { + blk[cnt].itemtype=TYPE_FLT; + *((jfloat*)(&blk[cnt].item))=(jfloat) ((struct java_lang_Float*)param)->value; + } else { + exceptionptr=native_new_and_init(loader_load(utf_new_char("java/lang/IllegalArgumentException"))); + return 0; + } + break; + case 'D' : + param=params->data[cnts]; + if (param->vftbl->class->name==utf_double) { + blk[cnt].itemtype=TYPE_DBL; + *((jdouble*)(&blk[cnt].item))=(jdouble) ((struct java_lang_Float*)param)->value; + } else { + if (param->vftbl->class->name==utf_float) { + blk[cnt].itemtype=TYPE_DBL; + *((jdouble*)(&blk[cnt].item))=(jdouble) ((struct java_lang_Float*)param)->value; + } else { + exceptionptr=native_new_and_init(loader_load(utf_new_char("java/lang/IllegalArgumentException"))); + return 0; + } + } + break; case 'V': panic("V not allowed as function parameter"); break; - case 'L': - while (utf_nextu2(utf_ptr) != ';') - blk[cnt].itemtype = TYPE_ADR; - - blk[cnt].item = (u8)(u4) va_arg(data, void*); - break; - - case '[' : { - /* XXX need arrayclass change? no.*/ - /* arrayclass */ - char ch; - while ((ch = utf_nextu2(utf_ptr)) == '[') - if (ch == 'L') { - while (utf_nextu2(utf_ptr) != ';') {} + case 'L': { + char *start=(*utf_ptr)-1; + char *end; + + while (utf_nextu2(utf_ptr) != ';') + end=(*utf_ptr)+1; + if (!builtin_instanceof(params->data[cnts],class_from_descriptor(start,end,0,CLASSLOAD_LOAD))) { + if (params->data[cnts]!=0) { + exceptionptr=native_new_and_init(loader_load(utf_new_char("java/lang/IllegalArgumentException"))); + return 0; + } } - - ch = utf_nextu2(utf_ptr); - blk[cnt].itemtype = TYPE_ADR; - blk[cnt].item = (u8)(u4) va_arg(data, void*); - break; - } + blk[cnt].itemtype = TYPE_ADR; + blk[cnt].item= (u8)(u4) (params->data[cnts]); + break; + + } + case '[' : + { + char *start=(*utf_ptr)-1; + char *end; + + char ch; + while ((ch = utf_nextu2(utf_ptr)) == '[') + if (ch == 'L') { + while (utf_nextu2(utf_ptr) != ';') {} + } + end=(*utf_ptr)-1; + ch = utf_nextu2(utf_ptr); + if (!builtin_arrayinstanceof(params->data[cnts],class_from_descriptor(start,end,0,CLASSLOAD_LOAD))) { + exceptionptr=native_new_and_init(loader_load(utf_new_char("java/lang/IllegalArgumentException"))); + return 0; + + } + + blk[cnt].itemtype = TYPE_ADR; + blk[cnt].item = (u8)(u4) (params->data[cnts]); + break; + } } cnt++; + cnts++; } - /*the standard doesn't say anything about return value checking, but it appears to be usefull*/ c = utf_nextu2(utf_ptr); c = utf_nextu2(utf_ptr); - /*printf("%c %c\n",ret,c);*/ - if (ret == 'O') { - if (!((c == 'L') || (c == '['))) - log_text("\n====\nWarning call*Method called for function with wrong return type\n===="); - - } else if (ret != c) - log_text("\n====\nWarning call*Method called for function with wrong return type\n===="); + return c; /*return type needed usage of the right lowlevel methods*/ } + + + + + + + + + + + + jmethodID get_virtual(jobject obj,jmethodID methodID) { if (obj->vftbl->class==methodID->class) return methodID; return class_resolvemethod (obj->vftbl->class, methodID->name, methodID->descriptor); @@ -184,6 +415,8 @@ jmethodID get_nonvirtual(jclass clazz,jmethodID methodID) { return class_resolvemethod (clazz, methodID->name, methodID->descriptor); } + + jobject callObjectMethod (jobject obj, jmethodID methodID, va_list args) { int argcount; @@ -1984,6 +2217,7 @@ jstring NewString (JNIEnv *env, const jchar *buf, jsize len) static char emptyString[]=""; +static jchar emptyStringJ[]={0,0}; /******************* returns the length of a Java string ***************************/ @@ -2030,14 +2264,14 @@ const jchar *GetStringChars (JNIEnv *env, jstring str, jboolean *isCopy) return jc; } if (isCopy) *isCopy=JNI_TRUE; - return emptyString; + return emptyStringJ; } /**************** native code no longer needs access to chars **********************/ void ReleaseStringChars (JNIEnv *env, jstring str, const jchar *chars) { - if (chars==emptyString) return; + if (chars==emptyStringJ) return; MFREE(((jchar*) chars),jchar,((java_lang_String*) str)->count+1); } @@ -2095,6 +2329,10 @@ jsize GetArrayLength (JNIEnv *env, jarray array) jobjectArray NewObjectArray (JNIEnv *env, jsize len, jclass clazz, jobject init) { + if (len<0) { + exceptionptr=proto_java_lang_NegativeArraySizeException; + return NULL; + } java_objectarray *j = builtin_anewarray (len, clazz); if (!j) exceptionptr = proto_java_lang_OutOfMemoryError; return j; @@ -2131,6 +2369,10 @@ void SetObjectArrayElement (JNIEnv *env, jobjectArray array, jsize index, jobjec jbooleanArray NewBooleanArray (JNIEnv *env, jsize len) { + if (len<0) { + exceptionptr=proto_java_lang_NegativeArraySizeException; + return NULL; + } java_booleanarray *j = builtin_newarray_boolean(len); if (!j) exceptionptr = proto_java_lang_OutOfMemoryError; return j; @@ -2139,6 +2381,10 @@ jbooleanArray NewBooleanArray (JNIEnv *env, jsize len) jbyteArray NewByteArray (JNIEnv *env, jsize len) { + if (len<0) { + exceptionptr=proto_java_lang_NegativeArraySizeException; + return NULL; + } java_bytearray *j = builtin_newarray_byte(len); if (!j) exceptionptr = proto_java_lang_OutOfMemoryError; return j; @@ -2147,6 +2393,10 @@ jbyteArray NewByteArray (JNIEnv *env, jsize len) jcharArray NewCharArray (JNIEnv *env, jsize len) { + if (len<0) { + exceptionptr=proto_java_lang_NegativeArraySizeException; + return NULL; + } java_chararray *j = builtin_newarray_char(len); if (!j) exceptionptr = proto_java_lang_OutOfMemoryError; return j; @@ -2155,6 +2405,10 @@ jcharArray NewCharArray (JNIEnv *env, jsize len) jshortArray NewShortArray (JNIEnv *env, jsize len) { + if (len<0) { + exceptionptr=proto_java_lang_NegativeArraySizeException; + return NULL; + } java_shortarray *j = builtin_newarray_short(len); if (!j) exceptionptr = proto_java_lang_OutOfMemoryError; return j; @@ -2163,6 +2417,10 @@ jshortArray NewShortArray (JNIEnv *env, jsize len) jintArray NewIntArray (JNIEnv *env, jsize len) { + if (len<0) { + exceptionptr=proto_java_lang_NegativeArraySizeException; + return NULL; + } java_intarray *j = builtin_newarray_int(len); if (!j) exceptionptr = proto_java_lang_OutOfMemoryError; return j; @@ -2171,6 +2429,10 @@ jintArray NewIntArray (JNIEnv *env, jsize len) jlongArray NewLongArray (JNIEnv *env, jsize len) { + if (len<0) { + exceptionptr=proto_java_lang_NegativeArraySizeException; + return NULL; + } java_longarray *j = builtin_newarray_long(len); if (!j) exceptionptr = proto_java_lang_OutOfMemoryError; return j; @@ -2179,6 +2441,10 @@ jlongArray NewLongArray (JNIEnv *env, jsize len) jfloatArray NewFloatArray (JNIEnv *env, jsize len) { + if (len<0) { + exceptionptr=proto_java_lang_NegativeArraySizeException; + return NULL; + } java_floatarray *j = builtin_newarray_float(len); if (!j) exceptionptr = proto_java_lang_OutOfMemoryError; return j; @@ -2187,6 +2453,10 @@ jfloatArray NewFloatArray (JNIEnv *env, jsize len) jdoubleArray NewDoubleArray (JNIEnv *env, jsize len) { + if (len<0) { + exceptionptr=proto_java_lang_NegativeArraySizeException; + return NULL; + } java_doublearray *j = builtin_newarray_double(len); if (!j) exceptionptr = proto_java_lang_OutOfMemoryError; return j; @@ -2867,6 +3137,150 @@ struct JNI_Table envTable = { JNIEnv env = &envTable; + + + + + + +jobject *jni_method_invokeNativeHelper(JNIEnv *env,struct methodinfo *methodID,jobject obj, java_objectarray *params) { + int argcount; + jni_callblock *blk; + jobject ret; + char retT; + jobject retVal; + if (methodID==0) { + exceptionptr = native_new_and_init(class_java_lang_NoSuchMethodError); + return 0; + } + argcount=get_parametercount(methodID); + + if (obj && (! builtin_instanceof((java_objectheader*)obj,methodID->class))) { + exceptionptr = native_new_and_init(class_java_lang_NoSuchMethodError); + return 0; + } + + if (argcount>3) { + exceptionptr=native_new_and_init(loader_load(utf_new_char("java/lang/IllegalArgumentException"))); + log_text("Too many arguments. invokeNativeHelper does not support that"); + return 0; + } + + if ( ((!params) && (argcount!=0)) || + (params && (params->header.size!=argcount)) + ) { + exceptionptr = native_new_and_init(loader_load(utf_new_char("java/lang/IllegalArgumentException"))); + return 0; + } + + blk = MNEW(jni_callblock, 4 /*argcount+2*/); + + retT=fill_callblock_objA(obj,methodID->descriptor,blk,params); + + switch (retT) { + case 'V': (void)asm_calljavafunction2(methodID,argcount+1,(argcount+1)*sizeof(jni_callblock),blk); + retVal=native_new_and_init(loader_load(utf_new_char("java/lang/Void"))); + break; + case 'I': { + s4 intVal; + intVal=(s4)asm_calljavafunction2(methodID, + argcount+1,(argcount+1)*sizeof(jni_callblock),blk); + retVal=builtin_new(loader_load(utf_new_char("java/lang/Integer"))); + CallVoidMethod(env,retVal, + class_resolvemethod(retVal->vftbl->class, + utf_new_char(""),utf_new_char("(I)V")),intVal); + } + break; + case 'B': { + s4 intVal; + intVal=(s4)asm_calljavafunction2(methodID, + argcount+1,(argcount+1)*sizeof(jni_callblock),blk); + retVal=builtin_new(loader_load(utf_new_char("java/lang/Byte"))); + CallVoidMethod(env,retVal, + class_resolvemethod(retVal->vftbl->class, + utf_new_char(""),utf_new_char("(B)V")),intVal); + } + break; + case 'C': { + s4 intVal; + intVal=(s4)asm_calljavafunction2(methodID, + argcount+1,(argcount+1)*sizeof(jni_callblock),blk); + retVal=builtin_new(loader_load(utf_new_char("java/lang/Character"))); + CallVoidMethod(env,retVal, + class_resolvemethod(retVal->vftbl->class, + utf_new_char(""),utf_new_char("(C)V")),intVal); + } + break; + case 'S': { + s4 intVal; + intVal=(s4)asm_calljavafunction2(methodID, + argcount+1,(argcount+1)*sizeof(jni_callblock),blk); + retVal=builtin_new(loader_load(utf_new_char("java/lang/Short"))); + CallVoidMethod(env,retVal, + class_resolvemethod(retVal->vftbl->class, + utf_new_char(""),utf_new_char("(S)V")),intVal); + } + + case 'Z': { + s4 intVal; + intVal=(s4)asm_calljavafunction2(methodID, + argcount+1,(argcount+1)*sizeof(jni_callblock),blk); + retVal=builtin_new(loader_load(utf_new_char("java/lang/Boolean"))); + CallVoidMethod(env,retVal, + class_resolvemethod(retVal->vftbl->class, + utf_new_char(""),utf_new_char("(Z)V")),intVal); + } + break; + case 'J': { + jlong intVal; + intVal=asm_calljavafunction2long(methodID, + argcount+1,(argcount+1)*sizeof(jni_callblock),blk); + retVal=builtin_new(loader_load(utf_new_char("java/lang/Long"))); + CallVoidMethod(env,retVal, + class_resolvemethod(retVal->vftbl->class, + utf_new_char(""),utf_new_char("(J)V")),intVal); + } + break; + case 'F': { + jdouble floatVal; + floatVal=asm_calljavafunction2double(methodID, + argcount+1,(argcount+1)*sizeof(jni_callblock),blk); + retVal=builtin_new(loader_load(utf_new_char("java/lang/Float"))); + CallVoidMethod(env,retVal, + class_resolvemethod(retVal->vftbl->class, + utf_new_char(""),utf_new_char("(F)V")),floatVal); + } + break; + case 'D': { + jdouble floatVal; + floatVal=asm_calljavafunction2double(methodID, + argcount+1,(argcount+1)*sizeof(jni_callblock),blk); + retVal=builtin_new(loader_load(utf_new_char("java/lang/Double"))); + CallVoidMethod(env,retVal, + class_resolvemethod(retVal->vftbl->class, + utf_new_char(""),utf_new_char("(D)V")),floatVal); + } + break; + + case 'L': /* fall through */ + case '[': retVal=asm_calljavafunction2(methodID,argcount+1,(argcount+1)*sizeof(jni_callblock),blk); + break; + default: { + /* if this happens the acception has already been set by fill_callblock_objA*/ + MFREE(blk, jni_callblock, 4 /*argcount+2*/); + return (jobject*)0; + } + } + MFREE(blk, jni_callblock, 4 /*argcount+2*/); + + if (exceptionptr) + exceptionptr=native_new_and_init(loader_load("java/lang/reflect/InvocationTargetException")); + return retVal; + +} + + + /* * These are local overrides for various environment variables in Emacs. * Please do not remove this and leave it at the end of the file, where diff --git a/jni.h b/jni.h index f97b52e2f..4c0459fbf 100644 --- a/jni.h +++ b/jni.h @@ -26,7 +26,7 @@ Authors: ? - $Id: jni.h 676 2003-11-24 20:50:23Z twisti $ + $Id: jni.h 682 2003-12-01 15:33:30Z jowenn $ */ @@ -500,6 +500,7 @@ void SetDoubleField(JNIEnv *env, jobject obj, jfieldID fieldID, jdouble val); #define getField(obj,typ,var) *((typ*) ((long int) obj + (long int) var->offset)) #define setfield_critical(clazz,obj,name,sig,jdatatype,val) setField(obj,jdatatype,getFieldID_critical(env,clazz,name,sig),val); +jobject *jni_method_invokeNativeHelper(JNIEnv *env,struct methodinfo *mi,jobject obj, java_objectarray *params); #endif /* _JNI_H */ diff --git a/loader.c b/loader.c index 21ab14c86..8ff55a17f 100644 --- a/loader.c +++ b/loader.c @@ -29,7 +29,7 @@ Roman Obermaiser Mark Probst - $Id: loader.c 680 2003-11-24 23:12:29Z twisti $ + $Id: loader.c 682 2003-12-01 15:33:30Z jowenn $ */ @@ -1501,7 +1501,7 @@ static int class_load(classinfo *c) add to list of unlinked classes */ list_remove (&unloadedclasses, c); list_addlast (&unlinkedclasses, c); - + c->loaded=true; return true; } @@ -1653,6 +1653,8 @@ class_new_array(classinfo *c) * Array classes which are created after the other classes have been * loaded and linked are linked explicitely. */ + c->loaded=true; + if (loader_inited) loader_load(c->name); } @@ -2762,10 +2764,23 @@ classinfo *loader_load (utf *topname) loadingtime += (stoptime-starttime); } - intsRestore(); /* schani */ loader_load_running--; + /* check if a former loader_load call tried to load/link the class and failed. + This is needed because the class didn't appear in the undloadclasses or unlinkedclasses list during this class; */ + if (top) { + if (!top->loaded) { + throw_classnotfoundexception2(top->name); + top=NULL; + } else if (!top->linked) { + throw_linkageerror2(top->name); + top=NULL; + } + } + + intsRestore(); /* schani */ + return top; } @@ -2786,9 +2801,10 @@ void create_primitive_classes() classinfo *c = class_new ( utf_new_char(primitivetype_table[i].name) ); c -> classUsed = NOTUSED; /* not used initially CO-RT */ c -> impldBy = NULL; - + /* prevent loader from loading primitive class */ list_remove (&unloadedclasses, c); + c->loaded=true; /* add to unlinked classes */ list_addlast (&unlinkedclasses, c); c -> super = class_java_lang_Object; @@ -2806,6 +2822,7 @@ void create_primitive_classes() if (primitivetype_table[i].arrayname) { c = class_new( utf_new_char(primitivetype_table[i].arrayname) ); primitivetype_table[i].arrayclass = c; + c->loaded=true; if (!c->linked) class_link(c); primitivetype_table[i].arrayvftbl = c->vftbl; } diff --git a/nat/Constructor.c b/nat/Constructor.c index 2c17c7655..d8826e01a 100644 --- a/nat/Constructor.c +++ b/nat/Constructor.c @@ -60,8 +60,9 @@ JNIEXPORT struct java_lang_Object* JNICALL Java_java_lang_reflect_Constructor_co m = &((classinfo*)clazz)->methods[this->slot]; - if (!((m->name == utf_new_char("")) && - (m->descriptor == create_methodsig(this->parameterTypes,"V")))) + if (!((m->name == utf_new_char("")))) +/* && + (m->descriptor == create_methodsig(this->parameterTypes,"V"))))*/ { if (verbose) { sprintf(logtext, "Warning: class has no instance-initializer of specified type: "); @@ -77,7 +78,7 @@ JNIEXPORT struct java_lang_Object* JNICALL Java_java_lang_reflect_Constructor_co /* log_text("calling initializer");*/ /* call initializer */ - +#if 0 switch (this->parameterTypes->header.size) { case 0: exceptionptr=asm_calljavamethod (m, o, NULL, NULL, NULL); break; @@ -91,6 +92,11 @@ JNIEXPORT struct java_lang_Object* JNICALL Java_java_lang_reflect_Constructor_co default: log_text("Not supported number of arguments in Java_java_lang_reflect_Constructor"); } +#endif + /*utf_display(m->descriptor); + log_text("calling constructor");*/ + (void) jni_method_invokeNativeHelper(env, m ,o, parameters); + return o; } @@ -100,7 +106,7 @@ JNIEXPORT struct java_lang_Object* JNICALL Java_java_lang_reflect_Constructor_co * Signature: ()I */ JNIEXPORT s4 JNICALL Java_java_lang_reflect_Constructor_getModifiers (JNIEnv *env , struct java_lang_reflect_Constructor* this ) { - log_text("Java_java_lang_reflect_Constructor_getModifiers called"); +/* log_text("Java_java_lang_reflect_Constructor_getModifiers called");*/ classinfo *c=(classinfo*)(this->clazz); if ((this->slot<0) || (this->slot>=c->methodscount)) panic("error illegal slot for method in class (getReturnType)"); diff --git a/nat/Method.c b/nat/Method.c index 631256e86..d5371904a 100644 --- a/nat/Method.c +++ b/nat/Method.c @@ -2,6 +2,9 @@ #include "jni.h" +#include "loader.h" +#include "global.h" +#include "tables.h" #include "types.h" #include "builtin.h" #include "native.h" @@ -72,10 +75,32 @@ JNIEXPORT java_objectarray* JNICALL Java_java_lang_reflect_Method_getExceptionTy * Method: invokeNative * Signature: (Ljava/lang/Object;[Ljava/lang/Object;Ljava/lang/Class;I)Ljava/lang/Object; */ -JNIEXPORT struct java_lang_Object* JNICALL Java_java_lang_reflect_Method_invokeNative (JNIEnv *env , struct java_lang_reflect_Method* this , struct java_lang_Object* par1, java_objectarray* par2, struct java_lang_Class* par3, s4 par4) +JNIEXPORT struct java_lang_Object* JNICALL Java_java_lang_reflect_Method_invokeNative (JNIEnv *env , + struct java_lang_reflect_Method* this , struct java_lang_Object* obj, + java_objectarray* params, struct java_lang_Class* declaringClass, s4 slot) { - log_text("Java_java_lang_reflect_Method_invokeNative called"); + + struct methodinfo *mi; + classinfo *c=(classinfo*)(declaringClass); + if ((slot<0) || (slot>=c->methodscount)) { + panic("error illegal slot for method in class(getParameterTypes)"); + } + + mi=&(c->methods[this->slot]); + if ( ((mi->flags & ACC_STATIC) && (obj)) + || (!(mi->flags & ACC_STATIC) && (!obj)) ) { + (*env)->ThrowNew(env,loader_load(utf_new_char("java/lang/NullPointerException")), + "Static mismatch in Java_java_lang_reflect_Method_invokeNative"); + return 0; + } + + if (obj && (!builtin_instanceof((java_objectheader*)obj,c))) { + (*env)->ThrowNew(env,loader_load(utf_new_char("java/lang/IllegalArgumentException")), + "Object parameter of wrong type in Java_java_lang_reflect_Method_invokeNative"); return 0; + } + + return jni_method_invokeNativeHelper(env,mi,obj,params); } diff --git a/nat/VMClass.c b/nat/VMClass.c index d0c528572..88fa1807c 100644 --- a/nat/VMClass.c +++ b/nat/VMClass.c @@ -41,19 +41,19 @@ JNIEXPORT struct java_lang_Class* JNICALL Java_java_lang_VMClass_forName(JNIEnv /* create utf string in which '.' is replaced by '/' */ u = javastring_toutf(s, true); - if ( !(c = class_get(u)) ) { - log_text("forName: would need classloader"); - /*utf_display(u);*/ - c = loader_load(u); if (c == NULL) { /* class was not loaded. raise exception */ - exceptionptr = - native_new_and_init_string(class_java_lang_ClassNotFoundException, s); - return NULL; - } - } + if (! exceptionptr) { + if (runverbose) + log_text("Setting class not found exception"); + exceptionptr = + native_new_and_init_string(class_java_lang_ClassNotFoundException, s); + } + return NULL; + } + /*log_text("Returning class");*/ use_class_as_object (c); return (java_lang_Class*) c; } @@ -115,10 +115,11 @@ JNIEXPORT java_objectarray* JNICALL Java_java_lang_VMClass_getDeclaredConstructo - log_text("Java_java_lang_VMClass_getDeclaredConstructors"); + log_text("Java_java_lang_VMClass_getDeclaredConstructors"); utf_display(c->name); printf("\n"); - class_showmethods(c); +/* class_showmethods(c); + class_showmethods(loader_load(utf_new_char("java/lang/Class")));*/ /* determine number of constructors */ @@ -127,7 +128,6 @@ JNIEXPORT java_objectarray* JNICALL Java_java_lang_VMClass_getDeclaredConstructo (c->methods[i].name==utf_constr)) public_methods++; class_constructor = (classinfo*) loader_load(utf_new_char ("java/lang/reflect/Constructor")); - if (!class_constructor) return NULL; @@ -492,12 +492,52 @@ JNIEXPORT s4 JNICALL Java_java_lang_VMClass_getModifiers ( JNIEnv *env , struct */ JNIEXPORT struct java_lang_String* JNICALL Java_java_lang_VMClass_getName ( JNIEnv *env , struct java_lang_VMClass* this) { + u4 dimCnt; + classinfo *c = (classinfo*) (this->vmData); - u4 i; - classinfo *c = (classinfo*) (this->vmData); - java_lang_String *s = (java_lang_String*) javastring_new(c->name); + char *utf__ptr = c->name->text; /* current position in utf-text */ + char **utf_ptr = &utf__ptr; + char *desc_end = utf_end(c->name); /* points behind utf string */ + java_lang_String *s; + char *str; + s4 len; + s4 i; + if (runverbose) log_text("Java_java_lang_VMClass_getName"); + + dimCnt=0; + while ( *utf_ptr != desc_end ) { + if (utf_nextu2(utf_ptr)=='[') dimCnt++; + else break; + } + utf__ptr=(*utf_ptr)-1; + + len=0; + if (((*utf_ptr)+1)==desc_end) { + for (i=0;iname->text); + str=MNEW(char,len+1); + strcpy(str,utf__ptr); + } + + dimCnt=len-2*dimCnt; + str[len]=0; + for (i=len-1;i>=dimCnt;i=i-2) { + str[i]=']'; + str[i-1]='['; + } + s=(java_lang_String*)javastring_new(utf_new_char(str)); + MFREE(str,char,len+1); - if (!s) return NULL; + if (!s) return NULL; /* return string where '/' is replaced by '.' */ for (i=0; ivalue->header.size; i++) { diff --git a/nat/gnu_java_awt_peer_gtk_GdkFontMetrics.h b/nat/gnu_java_awt_peer_gtk_GdkFontMetrics.h index 456f95979..5b59a712d 100644 --- a/nat/gnu_java_awt_peer_gtk_GdkFontMetrics.h +++ b/nat/gnu_java_awt_peer_gtk_GdkFontMetrics.h @@ -1,5 +1,8 @@ /* This file is machine generated, don't edit it !*/ +#ifndef _GNU_JAVA_AWT_PEER_GTK_GDKFONTMETRICS_H +#define _GNU_JAVA_AWT_PEER_GTK_GDKFONTMETRICS_H + /* Structure information for class: gnu/java/awt/peer/gtk/GdkFontMetrics */ typedef struct gnu_java_awt_peer_gtk_GdkFontMetrics { @@ -9,15 +12,21 @@ typedef struct gnu_java_awt_peer_gtk_GdkFontMetrics { java_intarray* metrics; } gnu_java_awt_peer_gtk_GdkFontMetrics; + /* * Class: gnu/java/awt/peer/gtk/GdkFontMetrics * Method: initState * Signature: (Ljava/lang/String;I)[I */ -JNIEXPORT java_intarray* JNICALL Java_gnu_java_awt_peer_gtk_GdkFontMetrics_initState (JNIEnv *env , struct gnu_java_awt_peer_gtk_GdkFontMetrics* this , struct java_lang_String* par1, s4 par2); +JNIEXPORT java_intarray* JNICALL Java_gnu_java_awt_peer_gtk_GdkFontMetrics_initState(JNIEnv *env, struct gnu_java_awt_peer_gtk_GdkFontMetrics* this, struct java_lang_String* par1, s4 par2); + + /* * Class: gnu/java/awt/peer/gtk/GdkFontMetrics * Method: stringWidth * Signature: (Ljava/lang/String;)I */ -JNIEXPORT s4 JNICALL Java_gnu_java_awt_peer_gtk_GdkFontMetrics_stringWidth (JNIEnv *env , struct gnu_java_awt_peer_gtk_GdkFontMetrics* this , struct java_lang_String* par1); +JNIEXPORT s4 JNICALL Java_gnu_java_awt_peer_gtk_GdkFontMetrics_stringWidth(JNIEnv *env, struct gnu_java_awt_peer_gtk_GdkFontMetrics* this, struct java_lang_String* par1); + +#endif + diff --git a/nat/gnu_java_awt_peer_gtk_GdkGraphics.h b/nat/gnu_java_awt_peer_gtk_GdkGraphics.h index 9afe724d4..3cf09dd4c 100644 --- a/nat/gnu_java_awt_peer_gtk_GdkGraphics.h +++ b/nat/gnu_java_awt_peer_gtk_GdkGraphics.h @@ -1,5 +1,8 @@ /* This file is machine generated, don't edit it !*/ +#ifndef _GNU_JAVA_AWT_PEER_GTK_GDKGRAPHICS_H +#define _GNU_JAVA_AWT_PEER_GTK_GDKGRAPHICS_H + /* Structure information for class: gnu/java/awt/peer/gtk/GdkGraphics */ typedef struct gnu_java_awt_peer_gtk_GdkGraphics { @@ -14,135 +17,181 @@ typedef struct gnu_java_awt_peer_gtk_GdkGraphics { s4 yOffset; } gnu_java_awt_peer_gtk_GdkGraphics; + /* * Class: gnu/java/awt/peer/gtk/GdkGraphics * Method: initState * Signature: (Lgnu/java/awt/peer/gtk/GtkComponentPeer;)[I */ -JNIEXPORT java_intarray* JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_initState (JNIEnv *env , struct gnu_java_awt_peer_gtk_GdkGraphics* this , struct gnu_java_awt_peer_gtk_GtkComponentPeer* par1); +JNIEXPORT java_intarray* JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_initState(JNIEnv *env, struct gnu_java_awt_peer_gtk_GdkGraphics* this, struct gnu_java_awt_peer_gtk_GtkComponentPeer* par1); + + /* * Class: gnu/java/awt/peer/gtk/GdkGraphics * Method: initState * Signature: (II)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics0_initState (JNIEnv *env , struct gnu_java_awt_peer_gtk_GdkGraphics* this , s4 par1, s4 par2); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics0_initState(JNIEnv *env, struct gnu_java_awt_peer_gtk_GdkGraphics* this, s4 par1, s4 par2); + + /* * Class: gnu/java/awt/peer/gtk/GdkGraphics * Method: copyState * Signature: (Lgnu/java/awt/peer/gtk/GdkGraphics;)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_copyState (JNIEnv *env , struct gnu_java_awt_peer_gtk_GdkGraphics* this , struct gnu_java_awt_peer_gtk_GdkGraphics* par1); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_copyState(JNIEnv *env, struct gnu_java_awt_peer_gtk_GdkGraphics* this, struct gnu_java_awt_peer_gtk_GdkGraphics* par1); + + /* * Class: gnu/java/awt/peer/gtk/GdkGraphics * Method: clearRect * Signature: (IIII)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_clearRect (JNIEnv *env , struct gnu_java_awt_peer_gtk_GdkGraphics* this , s4 par1, s4 par2, s4 par3, s4 par4); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_clearRect(JNIEnv *env, struct gnu_java_awt_peer_gtk_GdkGraphics* this, s4 par1, s4 par2, s4 par3, s4 par4); + + /* * Class: gnu/java/awt/peer/gtk/GdkGraphics * Method: copyArea * Signature: (IIIIII)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_copyArea (JNIEnv *env , struct gnu_java_awt_peer_gtk_GdkGraphics* this , s4 par1, s4 par2, s4 par3, s4 par4, s4 par5, s4 par6); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_copyArea(JNIEnv *env, struct gnu_java_awt_peer_gtk_GdkGraphics* this, s4 par1, s4 par2, s4 par3, s4 par4, s4 par5, s4 par6); + + /* * Class: gnu/java/awt/peer/gtk/GdkGraphics * Method: dispose * Signature: ()V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_dispose (JNIEnv *env , struct gnu_java_awt_peer_gtk_GdkGraphics* this ); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_dispose(JNIEnv *env, struct gnu_java_awt_peer_gtk_GdkGraphics* this); + + /* * Class: gnu/java/awt/peer/gtk/GdkGraphics * Method: copyPixmap * Signature: (Ljava/awt/Graphics;IIII)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_copyPixmap (JNIEnv *env , struct gnu_java_awt_peer_gtk_GdkGraphics* this , struct java_awt_Graphics* par1, s4 par2, s4 par3, s4 par4, s4 par5); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_copyPixmap(JNIEnv *env, struct gnu_java_awt_peer_gtk_GdkGraphics* this, struct java_awt_Graphics* par1, s4 par2, s4 par3, s4 par4, s4 par5); + + /* * Class: gnu/java/awt/peer/gtk/GdkGraphics * Method: drawLine * Signature: (IIII)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_drawLine (JNIEnv *env , struct gnu_java_awt_peer_gtk_GdkGraphics* this , s4 par1, s4 par2, s4 par3, s4 par4); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_drawLine(JNIEnv *env, struct gnu_java_awt_peer_gtk_GdkGraphics* this, s4 par1, s4 par2, s4 par3, s4 par4); + + /* * Class: gnu/java/awt/peer/gtk/GdkGraphics * Method: drawArc * Signature: (IIIIII)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_drawArc (JNIEnv *env , struct gnu_java_awt_peer_gtk_GdkGraphics* this , s4 par1, s4 par2, s4 par3, s4 par4, s4 par5, s4 par6); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_drawArc(JNIEnv *env, struct gnu_java_awt_peer_gtk_GdkGraphics* this, s4 par1, s4 par2, s4 par3, s4 par4, s4 par5, s4 par6); + + /* * Class: gnu/java/awt/peer/gtk/GdkGraphics * Method: fillArc * Signature: (IIIIII)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_fillArc (JNIEnv *env , struct gnu_java_awt_peer_gtk_GdkGraphics* this , s4 par1, s4 par2, s4 par3, s4 par4, s4 par5, s4 par6); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_fillArc(JNIEnv *env, struct gnu_java_awt_peer_gtk_GdkGraphics* this, s4 par1, s4 par2, s4 par3, s4 par4, s4 par5, s4 par6); + + /* * Class: gnu/java/awt/peer/gtk/GdkGraphics * Method: drawOval * Signature: (IIII)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_drawOval (JNIEnv *env , struct gnu_java_awt_peer_gtk_GdkGraphics* this , s4 par1, s4 par2, s4 par3, s4 par4); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_drawOval(JNIEnv *env, struct gnu_java_awt_peer_gtk_GdkGraphics* this, s4 par1, s4 par2, s4 par3, s4 par4); + + /* * Class: gnu/java/awt/peer/gtk/GdkGraphics * Method: fillOval * Signature: (IIII)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_fillOval (JNIEnv *env , struct gnu_java_awt_peer_gtk_GdkGraphics* this , s4 par1, s4 par2, s4 par3, s4 par4); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_fillOval(JNIEnv *env, struct gnu_java_awt_peer_gtk_GdkGraphics* this, s4 par1, s4 par2, s4 par3, s4 par4); + + /* * Class: gnu/java/awt/peer/gtk/GdkGraphics * Method: drawPolygon * Signature: ([I[II)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_drawPolygon (JNIEnv *env , struct gnu_java_awt_peer_gtk_GdkGraphics* this , java_intarray* par1, java_intarray* par2, s4 par3); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_drawPolygon(JNIEnv *env, struct gnu_java_awt_peer_gtk_GdkGraphics* this, java_intarray* par1, java_intarray* par2, s4 par3); + + /* * Class: gnu/java/awt/peer/gtk/GdkGraphics * Method: fillPolygon * Signature: ([I[II)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_fillPolygon (JNIEnv *env , struct gnu_java_awt_peer_gtk_GdkGraphics* this , java_intarray* par1, java_intarray* par2, s4 par3); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_fillPolygon(JNIEnv *env, struct gnu_java_awt_peer_gtk_GdkGraphics* this, java_intarray* par1, java_intarray* par2, s4 par3); + + /* * Class: gnu/java/awt/peer/gtk/GdkGraphics * Method: drawPolyline * Signature: ([I[II)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_drawPolyline (JNIEnv *env , struct gnu_java_awt_peer_gtk_GdkGraphics* this , java_intarray* par1, java_intarray* par2, s4 par3); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_drawPolyline(JNIEnv *env, struct gnu_java_awt_peer_gtk_GdkGraphics* this, java_intarray* par1, java_intarray* par2, s4 par3); + + /* * Class: gnu/java/awt/peer/gtk/GdkGraphics * Method: drawRect * Signature: (IIII)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_drawRect (JNIEnv *env , struct gnu_java_awt_peer_gtk_GdkGraphics* this , s4 par1, s4 par2, s4 par3, s4 par4); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_drawRect(JNIEnv *env, struct gnu_java_awt_peer_gtk_GdkGraphics* this, s4 par1, s4 par2, s4 par3, s4 par4); + + /* * Class: gnu/java/awt/peer/gtk/GdkGraphics * Method: fillRect * Signature: (IIII)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_fillRect (JNIEnv *env , struct gnu_java_awt_peer_gtk_GdkGraphics* this , s4 par1, s4 par2, s4 par3, s4 par4); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_fillRect(JNIEnv *env, struct gnu_java_awt_peer_gtk_GdkGraphics* this, s4 par1, s4 par2, s4 par3, s4 par4); + + /* * Class: gnu/java/awt/peer/gtk/GdkGraphics * Method: drawString * Signature: (Ljava/lang/String;IILjava/lang/String;I)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_drawString (JNIEnv *env , struct gnu_java_awt_peer_gtk_GdkGraphics* this , struct java_lang_String* par1, s4 par2, s4 par3, struct java_lang_String* par4, s4 par5); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_drawString(JNIEnv *env, struct gnu_java_awt_peer_gtk_GdkGraphics* this, struct java_lang_String* par1, s4 par2, s4 par3, struct java_lang_String* par4, s4 par5); + + /* * Class: gnu/java/awt/peer/gtk/GdkGraphics * Method: setClipRectangle * Signature: (IIII)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_setClipRectangle (JNIEnv *env , struct gnu_java_awt_peer_gtk_GdkGraphics* this , s4 par1, s4 par2, s4 par3, s4 par4); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_setClipRectangle(JNIEnv *env, struct gnu_java_awt_peer_gtk_GdkGraphics* this, s4 par1, s4 par2, s4 par3, s4 par4); + + /* * Class: gnu/java/awt/peer/gtk/GdkGraphics * Method: setFGColor * Signature: (III)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_setFGColor (JNIEnv *env , struct gnu_java_awt_peer_gtk_GdkGraphics* this , s4 par1, s4 par2, s4 par3); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_setFGColor(JNIEnv *env, struct gnu_java_awt_peer_gtk_GdkGraphics* this, s4 par1, s4 par2, s4 par3); + + /* * Class: gnu/java/awt/peer/gtk/GdkGraphics * Method: setFunction * Signature: (I)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_setFunction (JNIEnv *env , struct gnu_java_awt_peer_gtk_GdkGraphics* this , s4 par1); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_setFunction(JNIEnv *env, struct gnu_java_awt_peer_gtk_GdkGraphics* this, s4 par1); + + /* * Class: gnu/java/awt/peer/gtk/GdkGraphics * Method: translateNative * Signature: (II)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_translateNative (JNIEnv *env , struct gnu_java_awt_peer_gtk_GdkGraphics* this , s4 par1, s4 par2); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_translateNative(JNIEnv *env, struct gnu_java_awt_peer_gtk_GdkGraphics* this, s4 par1, s4 par2); + +#endif + diff --git a/nat/gnu_java_awt_peer_gtk_GdkPixbufDecoder.h b/nat/gnu_java_awt_peer_gtk_GdkPixbufDecoder.h index fe9dd7657..fb54ab8d2 100644 --- a/nat/gnu_java_awt_peer_gtk_GdkPixbufDecoder.h +++ b/nat/gnu_java_awt_peer_gtk_GdkPixbufDecoder.h @@ -1,5 +1,8 @@ /* This file is machine generated, don't edit it !*/ +#ifndef _GNU_JAVA_AWT_PEER_GTK_GDKPIXBUFDECODER_H +#define _GNU_JAVA_AWT_PEER_GTK_GDKPIXBUFDECODER_H + /* Structure information for class: gnu/java/awt/peer/gtk/GdkPixbufDecoder */ typedef struct gnu_java_awt_peer_gtk_GdkPixbufDecoder { @@ -11,27 +14,37 @@ typedef struct gnu_java_awt_peer_gtk_GdkPixbufDecoder { struct java_util_Vector* curr; } gnu_java_awt_peer_gtk_GdkPixbufDecoder; + /* * Class: gnu/java/awt/peer/gtk/GdkPixbufDecoder * Method: initStaticState * Signature: ()V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkPixbufDecoder_initStaticState (JNIEnv *env , jclass clazz ); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkPixbufDecoder_initStaticState(JNIEnv *env, jclass clazz); + + /* * Class: gnu/java/awt/peer/gtk/GdkPixbufDecoder * Method: initState * Signature: ()V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkPixbufDecoder_initState (JNIEnv *env , struct gnu_java_awt_peer_gtk_GdkPixbufDecoder* this ); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkPixbufDecoder_initState(JNIEnv *env, struct gnu_java_awt_peer_gtk_GdkPixbufDecoder* this); + + /* * Class: gnu/java/awt/peer/gtk/GdkPixbufDecoder * Method: pumpBytes * Signature: ([BI)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkPixbufDecoder_pumpBytes (JNIEnv *env , struct gnu_java_awt_peer_gtk_GdkPixbufDecoder* this , java_bytearray* par1, s4 par2); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkPixbufDecoder_pumpBytes(JNIEnv *env, struct gnu_java_awt_peer_gtk_GdkPixbufDecoder* this, java_bytearray* par1, s4 par2); + + /* * Class: gnu/java/awt/peer/gtk/GdkPixbufDecoder * Method: finish * Signature: ()V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkPixbufDecoder_finish (JNIEnv *env , struct gnu_java_awt_peer_gtk_GdkPixbufDecoder* this ); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkPixbufDecoder_finish(JNIEnv *env, struct gnu_java_awt_peer_gtk_GdkPixbufDecoder* this); + +#endif + diff --git a/nat/gnu_java_awt_peer_gtk_GtkButtonPeer.h b/nat/gnu_java_awt_peer_gtk_GtkButtonPeer.h index bf58bbf25..1fe90d58d 100644 --- a/nat/gnu_java_awt_peer_gtk_GtkButtonPeer.h +++ b/nat/gnu_java_awt_peer_gtk_GtkButtonPeer.h @@ -1,5 +1,8 @@ /* This file is machine generated, don't edit it !*/ +#ifndef _GNU_JAVA_AWT_PEER_GTK_GTKBUTTONPEER_H +#define _GNU_JAVA_AWT_PEER_GTK_GTKBUTTONPEER_H + /* Structure information for class: gnu/java/awt/peer/gtk/GtkButtonPeer */ typedef struct gnu_java_awt_peer_gtk_GtkButtonPeer { @@ -10,21 +13,29 @@ typedef struct gnu_java_awt_peer_gtk_GtkButtonPeer { struct java_awt_Insets* insets; } gnu_java_awt_peer_gtk_GtkButtonPeer; + /* * Class: gnu/java/awt/peer/gtk/GtkButtonPeer * Method: create * Signature: ()V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkButtonPeer_create (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkButtonPeer* this ); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkButtonPeer_create(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkButtonPeer* this); + + /* * Class: gnu/java/awt/peer/gtk/GtkButtonPeer * Method: gtkSetFont * Signature: (Ljava/lang/String;II)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkButtonPeer_gtkSetFont (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkButtonPeer* this , struct java_lang_String* par1, s4 par2, s4 par3); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkButtonPeer_gtkSetFont(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkButtonPeer* this, struct java_lang_String* par1, s4 par2, s4 par3); + + /* * Class: gnu/java/awt/peer/gtk/GtkButtonPeer * Method: gtkWidgetSetForeground * Signature: (III)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkButtonPeer_gtkWidgetSetForeground (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkButtonPeer* this , s4 par1, s4 par2, s4 par3); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkButtonPeer_gtkWidgetSetForeground(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkButtonPeer* this, s4 par1, s4 par2, s4 par3); + +#endif + diff --git a/nat/gnu_java_awt_peer_gtk_GtkCanvasPeer.h b/nat/gnu_java_awt_peer_gtk_GtkCanvasPeer.h index 60ff4a2d1..cd5087b09 100644 --- a/nat/gnu_java_awt_peer_gtk_GtkCanvasPeer.h +++ b/nat/gnu_java_awt_peer_gtk_GtkCanvasPeer.h @@ -1,5 +1,8 @@ /* This file is machine generated, don't edit it !*/ +#ifndef _GNU_JAVA_AWT_PEER_GTK_GTKCANVASPEER_H +#define _GNU_JAVA_AWT_PEER_GTK_GTKCANVASPEER_H + /* Structure information for class: gnu/java/awt/peer/gtk/GtkCanvasPeer */ typedef struct gnu_java_awt_peer_gtk_GtkCanvasPeer { @@ -10,9 +13,13 @@ typedef struct gnu_java_awt_peer_gtk_GtkCanvasPeer { struct java_awt_Insets* insets; } gnu_java_awt_peer_gtk_GtkCanvasPeer; + /* * Class: gnu/java/awt/peer/gtk/GtkCanvasPeer * Method: create * Signature: ()V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkCanvasPeer_create (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkCanvasPeer* this ); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkCanvasPeer_create(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkCanvasPeer* this); + +#endif + diff --git a/nat/gnu_java_awt_peer_gtk_GtkCheckboxGroupPeer.h b/nat/gnu_java_awt_peer_gtk_GtkCheckboxGroupPeer.h index 83d301012..ac5af9505 100644 --- a/nat/gnu_java_awt_peer_gtk_GtkCheckboxGroupPeer.h +++ b/nat/gnu_java_awt_peer_gtk_GtkCheckboxGroupPeer.h @@ -1,5 +1,8 @@ /* This file is machine generated, don't edit it !*/ +#ifndef _GNU_JAVA_AWT_PEER_GTK_GTKCHECKBOXGROUPPEER_H +#define _GNU_JAVA_AWT_PEER_GTK_GTKCHECKBOXGROUPPEER_H + /* Structure information for class: gnu/java/awt/peer/gtk/GtkCheckboxGroupPeer */ typedef struct gnu_java_awt_peer_gtk_GtkCheckboxGroupPeer { @@ -8,15 +11,21 @@ typedef struct gnu_java_awt_peer_gtk_GtkCheckboxGroupPeer { struct java_lang_Object* awtWidget; } gnu_java_awt_peer_gtk_GtkCheckboxGroupPeer; + /* * Class: gnu/java/awt/peer/gtk/GtkCheckboxGroupPeer * Method: dispose * Signature: ()V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkCheckboxGroupPeer_dispose (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkCheckboxGroupPeer* this ); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkCheckboxGroupPeer_dispose(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkCheckboxGroupPeer* this); + + /* * Class: gnu/java/awt/peer/gtk/GtkCheckboxGroupPeer * Method: remove * Signature: (Lgnu/java/awt/peer/gtk/GtkCheckboxPeer;)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkCheckboxGroupPeer_remove (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkCheckboxGroupPeer* this , struct gnu_java_awt_peer_gtk_GtkCheckboxPeer* par1); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkCheckboxGroupPeer_remove(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkCheckboxGroupPeer* this, struct gnu_java_awt_peer_gtk_GtkCheckboxPeer* par1); + +#endif + diff --git a/nat/gnu_java_awt_peer_gtk_GtkCheckboxMenuItemPeer.h b/nat/gnu_java_awt_peer_gtk_GtkCheckboxMenuItemPeer.h index a900a565f..8217af064 100644 --- a/nat/gnu_java_awt_peer_gtk_GtkCheckboxMenuItemPeer.h +++ b/nat/gnu_java_awt_peer_gtk_GtkCheckboxMenuItemPeer.h @@ -1,5 +1,8 @@ /* This file is machine generated, don't edit it !*/ +#ifndef _GNU_JAVA_AWT_PEER_GTK_GTKCHECKBOXMENUITEMPEER_H +#define _GNU_JAVA_AWT_PEER_GTK_GTKCHECKBOXMENUITEMPEER_H + /* Structure information for class: gnu/java/awt/peer/gtk/GtkCheckboxMenuItemPeer */ typedef struct gnu_java_awt_peer_gtk_GtkCheckboxMenuItemPeer { @@ -8,15 +11,21 @@ typedef struct gnu_java_awt_peer_gtk_GtkCheckboxMenuItemPeer { struct java_lang_Object* awtWidget; } gnu_java_awt_peer_gtk_GtkCheckboxMenuItemPeer; + /* * Class: gnu/java/awt/peer/gtk/GtkCheckboxMenuItemPeer * Method: create * Signature: (Ljava/lang/String;)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkCheckboxMenuItemPeer_create (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkCheckboxMenuItemPeer* this , struct java_lang_String* par1); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkCheckboxMenuItemPeer_create(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkCheckboxMenuItemPeer* this, struct java_lang_String* par1); + + /* * Class: gnu/java/awt/peer/gtk/GtkCheckboxMenuItemPeer * Method: setState * Signature: (Z)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkCheckboxMenuItemPeer_setState (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkCheckboxMenuItemPeer* this , s4 par1); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkCheckboxMenuItemPeer_setState(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkCheckboxMenuItemPeer* this, s4 par1); + +#endif + diff --git a/nat/gnu_java_awt_peer_gtk_GtkCheckboxPeer.h b/nat/gnu_java_awt_peer_gtk_GtkCheckboxPeer.h index abee7e1b9..f2948f139 100644 --- a/nat/gnu_java_awt_peer_gtk_GtkCheckboxPeer.h +++ b/nat/gnu_java_awt_peer_gtk_GtkCheckboxPeer.h @@ -1,5 +1,8 @@ /* This file is machine generated, don't edit it !*/ +#ifndef _GNU_JAVA_AWT_PEER_GTK_GTKCHECKBOXPEER_H +#define _GNU_JAVA_AWT_PEER_GTK_GTKCHECKBOXPEER_H + /* Structure information for class: gnu/java/awt/peer/gtk/GtkCheckboxPeer */ typedef struct gnu_java_awt_peer_gtk_GtkCheckboxPeer { @@ -11,21 +14,29 @@ typedef struct gnu_java_awt_peer_gtk_GtkCheckboxPeer { struct gnu_java_awt_peer_gtk_GtkCheckboxGroupPeer* old_group; } gnu_java_awt_peer_gtk_GtkCheckboxPeer; + /* * Class: gnu/java/awt/peer/gtk/GtkCheckboxPeer * Method: nativeCreate * Signature: (Lgnu/java/awt/peer/gtk/GtkCheckboxGroupPeer;)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkCheckboxPeer_nativeCreate (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkCheckboxPeer* this , struct gnu_java_awt_peer_gtk_GtkCheckboxGroupPeer* par1); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkCheckboxPeer_nativeCreate(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkCheckboxPeer* this, struct gnu_java_awt_peer_gtk_GtkCheckboxGroupPeer* par1); + + /* * Class: gnu/java/awt/peer/gtk/GtkCheckboxPeer * Method: nativeSetCheckboxGroup * Signature: (Lgnu/java/awt/peer/gtk/GtkCheckboxGroupPeer;)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkCheckboxPeer_nativeSetCheckboxGroup (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkCheckboxPeer* this , struct gnu_java_awt_peer_gtk_GtkCheckboxGroupPeer* par1); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkCheckboxPeer_nativeSetCheckboxGroup(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkCheckboxPeer* this, struct gnu_java_awt_peer_gtk_GtkCheckboxGroupPeer* par1); + + /* * Class: gnu/java/awt/peer/gtk/GtkCheckboxPeer * Method: connectHooks * Signature: ()V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkCheckboxPeer_connectHooks (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkCheckboxPeer* this ); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkCheckboxPeer_connectHooks(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkCheckboxPeer* this); + +#endif + diff --git a/nat/gnu_java_awt_peer_gtk_GtkChoicePeer.h b/nat/gnu_java_awt_peer_gtk_GtkChoicePeer.h index 7e882a3cc..33cfb0e17 100644 --- a/nat/gnu_java_awt_peer_gtk_GtkChoicePeer.h +++ b/nat/gnu_java_awt_peer_gtk_GtkChoicePeer.h @@ -1,5 +1,8 @@ /* This file is machine generated, don't edit it !*/ +#ifndef _GNU_JAVA_AWT_PEER_GTK_GTKCHOICEPEER_H +#define _GNU_JAVA_AWT_PEER_GTK_GTKCHOICEPEER_H + /* Structure information for class: gnu/java/awt/peer/gtk/GtkChoicePeer */ typedef struct gnu_java_awt_peer_gtk_GtkChoicePeer { @@ -10,33 +13,45 @@ typedef struct gnu_java_awt_peer_gtk_GtkChoicePeer { struct java_awt_Insets* insets; } gnu_java_awt_peer_gtk_GtkChoicePeer; + /* * Class: gnu/java/awt/peer/gtk/GtkChoicePeer * Method: create * Signature: ()V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkChoicePeer_create (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkChoicePeer* this ); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkChoicePeer_create(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkChoicePeer* this); + + /* * Class: gnu/java/awt/peer/gtk/GtkChoicePeer * Method: append * Signature: ([Ljava/lang/String;)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkChoicePeer_append (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkChoicePeer* this , java_objectarray* par1); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkChoicePeer_append(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkChoicePeer* this, java_objectarray* par1); + + /* * Class: gnu/java/awt/peer/gtk/GtkChoicePeer * Method: add * Signature: (Ljava/lang/String;I)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkChoicePeer_add (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkChoicePeer* this , struct java_lang_String* par1, s4 par2); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkChoicePeer_add(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkChoicePeer* this, struct java_lang_String* par1, s4 par2); + + /* * Class: gnu/java/awt/peer/gtk/GtkChoicePeer * Method: remove * Signature: (I)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkChoicePeer_remove (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkChoicePeer* this , s4 par1); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkChoicePeer_remove(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkChoicePeer* this, s4 par1); + + /* * Class: gnu/java/awt/peer/gtk/GtkChoicePeer * Method: select * Signature: (I)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkChoicePeer_select (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkChoicePeer* this , s4 par1); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkChoicePeer_select(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkChoicePeer* this, s4 par1); + +#endif + diff --git a/nat/gnu_java_awt_peer_gtk_GtkClipboard.h b/nat/gnu_java_awt_peer_gtk_GtkClipboard.h index 93fcb31e9..9da8e387b 100644 --- a/nat/gnu_java_awt_peer_gtk_GtkClipboard.h +++ b/nat/gnu_java_awt_peer_gtk_GtkClipboard.h @@ -1,5 +1,8 @@ /* This file is machine generated, don't edit it !*/ +#ifndef _GNU_JAVA_AWT_PEER_GTK_GTKCLIPBOARD_H +#define _GNU_JAVA_AWT_PEER_GTK_GTKCLIPBOARD_H + /* Structure information for class: gnu/java/awt/peer/gtk/GtkClipboard */ typedef struct gnu_java_awt_peer_gtk_GtkClipboard { @@ -9,21 +12,29 @@ typedef struct gnu_java_awt_peer_gtk_GtkClipboard { struct java_lang_String* name; } gnu_java_awt_peer_gtk_GtkClipboard; + /* * Class: gnu/java/awt/peer/gtk/GtkClipboard * Method: initNativeState * Signature: ()V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkClipboard_initNativeState (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkClipboard* this ); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkClipboard_initNativeState(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkClipboard* this); + + /* * Class: gnu/java/awt/peer/gtk/GtkClipboard * Method: requestStringConversion * Signature: ()V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkClipboard_requestStringConversion (JNIEnv *env , jclass clazz ); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkClipboard_requestStringConversion(JNIEnv *env, jclass clazz); + + /* * Class: gnu/java/awt/peer/gtk/GtkClipboard * Method: selectionGet * Signature: ()V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkClipboard_selectionGet (JNIEnv *env , jclass clazz ); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkClipboard_selectionGet(JNIEnv *env, jclass clazz); + +#endif + diff --git a/nat/gnu_java_awt_peer_gtk_GtkComponentPeer.h b/nat/gnu_java_awt_peer_gtk_GtkComponentPeer.h index 121d9acc1..b0cae787f 100644 --- a/nat/gnu_java_awt_peer_gtk_GtkComponentPeer.h +++ b/nat/gnu_java_awt_peer_gtk_GtkComponentPeer.h @@ -1,5 +1,8 @@ /* This file is machine generated, don't edit it !*/ +#ifndef _GNU_JAVA_AWT_PEER_GTK_GTKCOMPONENTPEER_H +#define _GNU_JAVA_AWT_PEER_GTK_GTKCOMPONENTPEER_H + /* Structure information for class: gnu/java/awt/peer/gtk/GtkComponentPeer */ typedef struct gnu_java_awt_peer_gtk_GtkComponentPeer { @@ -10,111 +13,149 @@ typedef struct gnu_java_awt_peer_gtk_GtkComponentPeer { struct java_awt_Insets* insets; } gnu_java_awt_peer_gtk_GtkComponentPeer; + /* * Class: gnu/java/awt/peer/gtk/GtkComponentPeer * Method: isEnabled * Signature: ()Z */ -JNIEXPORT s4 JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_isEnabled (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkComponentPeer* this ); +JNIEXPORT s4 JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_isEnabled(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkComponentPeer* this); + + /* * Class: gnu/java/awt/peer/gtk/GtkComponentPeer * Method: modalHasGrab * Signature: ()Z */ -JNIEXPORT s4 JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_modalHasGrab (JNIEnv *env , jclass clazz ); +JNIEXPORT s4 JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_modalHasGrab(JNIEnv *env, jclass clazz); + + /* * Class: gnu/java/awt/peer/gtk/GtkComponentPeer * Method: gtkWidgetGetForeground * Signature: ()[I */ -JNIEXPORT java_intarray* JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetGetForeground (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkComponentPeer* this ); +JNIEXPORT java_intarray* JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetGetForeground(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkComponentPeer* this); + + /* * Class: gnu/java/awt/peer/gtk/GtkComponentPeer * Method: gtkWidgetGetBackground * Signature: ()[I */ -JNIEXPORT java_intarray* JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetGetBackground (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkComponentPeer* this ); +JNIEXPORT java_intarray* JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetGetBackground(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkComponentPeer* this); + + /* * Class: gnu/java/awt/peer/gtk/GtkComponentPeer * Method: gtkWidgetSetVisible * Signature: (Z)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetSetVisible (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkComponentPeer* this , s4 par1); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetSetVisible(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkComponentPeer* this, s4 par1); + + /* * Class: gnu/java/awt/peer/gtk/GtkComponentPeer * Method: gtkWidgetGetDimensions * Signature: ([I)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetGetDimensions (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkComponentPeer* this , java_intarray* par1); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetGetDimensions(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkComponentPeer* this, java_intarray* par1); + + /* * Class: gnu/java/awt/peer/gtk/GtkComponentPeer * Method: gtkWidgetGetLocationOnScreen * Signature: ([I)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetGetLocationOnScreen (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkComponentPeer* this , java_intarray* par1); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetGetLocationOnScreen(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkComponentPeer* this, java_intarray* par1); + + /* * Class: gnu/java/awt/peer/gtk/GtkComponentPeer * Method: gtkWidgetSetCursor * Signature: (I)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetSetCursor (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkComponentPeer* this , s4 par1); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetSetCursor(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkComponentPeer* this, s4 par1); + + /* * Class: gnu/java/awt/peer/gtk/GtkComponentPeer * Method: gtkWidgetSetBackground * Signature: (III)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetSetBackground (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkComponentPeer* this , s4 par1, s4 par2, s4 par3); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetSetBackground(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkComponentPeer* this, s4 par1, s4 par2, s4 par3); + + /* * Class: gnu/java/awt/peer/gtk/GtkComponentPeer * Method: gtkWidgetSetForeground * Signature: (III)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetSetForeground (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkComponentPeer* this , s4 par1, s4 par2, s4 par3); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_gtkWidgetSetForeground(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkComponentPeer* this, s4 par1, s4 par2, s4 par3); + + /* * Class: gnu/java/awt/peer/gtk/GtkComponentPeer * Method: connectHooks * Signature: ()V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_connectHooks (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkComponentPeer* this ); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_connectHooks(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkComponentPeer* this); + + /* * Class: gnu/java/awt/peer/gtk/GtkComponentPeer * Method: requestFocus * Signature: ()V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_requestFocus (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkComponentPeer* this ); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_requestFocus(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkComponentPeer* this); + + /* * Class: gnu/java/awt/peer/gtk/GtkComponentPeer * Method: setNativeBounds * Signature: (IIII)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_setNativeBounds (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkComponentPeer* this , s4 par1, s4 par2, s4 par3, s4 par4); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_setNativeBounds(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkComponentPeer* this, s4 par1, s4 par2, s4 par3, s4 par4); + + /* * Class: gnu/java/awt/peer/gtk/GtkComponentPeer * Method: set * Signature: (Ljava/lang/String;Ljava/lang/String;)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_set (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkComponentPeer* this , struct java_lang_String* par1, struct java_lang_String* par2); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_set(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkComponentPeer* this, struct java_lang_String* par1, struct java_lang_String* par2); + + /* * Class: gnu/java/awt/peer/gtk/GtkComponentPeer * Method: set * Signature: (Ljava/lang/String;Z)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer0_set (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkComponentPeer* this , struct java_lang_String* par1, s4 par2); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer0_set(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkComponentPeer* this, struct java_lang_String* par1, s4 par2); + + /* * Class: gnu/java/awt/peer/gtk/GtkComponentPeer * Method: set * Signature: (Ljava/lang/String;I)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer1_set (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkComponentPeer* this , struct java_lang_String* par1, s4 par2); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer1_set(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkComponentPeer* this, struct java_lang_String* par1, s4 par2); + + /* * Class: gnu/java/awt/peer/gtk/GtkComponentPeer * Method: set * Signature: (Ljava/lang/String;F)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer2_set (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkComponentPeer* this , struct java_lang_String* par1, float par2); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer2_set(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkComponentPeer* this, struct java_lang_String* par1, float par2); + + /* * Class: gnu/java/awt/peer/gtk/GtkComponentPeer * Method: set * Signature: (Ljava/lang/String;Ljava/lang/Object;)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer3_set (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkComponentPeer* this , struct java_lang_String* par1, struct java_lang_Object* par2); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer3_set(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkComponentPeer* this, struct java_lang_String* par1, struct java_lang_Object* par2); + +#endif + diff --git a/nat/gnu_java_awt_peer_gtk_GtkFileDialogPeer.h b/nat/gnu_java_awt_peer_gtk_GtkFileDialogPeer.h index 7511ec044..91aeca945 100644 --- a/nat/gnu_java_awt_peer_gtk_GtkFileDialogPeer.h +++ b/nat/gnu_java_awt_peer_gtk_GtkFileDialogPeer.h @@ -1,5 +1,8 @@ /* This file is machine generated, don't edit it !*/ +#ifndef _GNU_JAVA_AWT_PEER_GTK_GTKFILEDIALOGPEER_H +#define _GNU_JAVA_AWT_PEER_GTK_GTKFILEDIALOGPEER_H + /* Structure information for class: gnu/java/awt/peer/gtk/GtkFileDialogPeer */ typedef struct gnu_java_awt_peer_gtk_GtkFileDialogPeer { @@ -13,21 +16,29 @@ typedef struct gnu_java_awt_peer_gtk_GtkFileDialogPeer { s4 oldState; } gnu_java_awt_peer_gtk_GtkFileDialogPeer; + /* * Class: gnu/java/awt/peer/gtk/GtkFileDialogPeer * Method: create * Signature: ()V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkFileDialogPeer_create (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkFileDialogPeer* this ); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkFileDialogPeer_create(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkFileDialogPeer* this); + + /* * Class: gnu/java/awt/peer/gtk/GtkFileDialogPeer * Method: setFile * Signature: (Ljava/lang/String;)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkFileDialogPeer_setFile (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkFileDialogPeer* this , struct java_lang_String* par1); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkFileDialogPeer_setFile(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkFileDialogPeer* this, struct java_lang_String* par1); + + /* * Class: gnu/java/awt/peer/gtk/GtkFileDialogPeer * Method: connectHooks * Signature: ()V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkFileDialogPeer_connectHooks (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkFileDialogPeer* this ); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkFileDialogPeer_connectHooks(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkFileDialogPeer* this); + +#endif + diff --git a/nat/gnu_java_awt_peer_gtk_GtkFramePeer.h b/nat/gnu_java_awt_peer_gtk_GtkFramePeer.h index 479320b4d..5feff9a25 100644 --- a/nat/gnu_java_awt_peer_gtk_GtkFramePeer.h +++ b/nat/gnu_java_awt_peer_gtk_GtkFramePeer.h @@ -1,5 +1,8 @@ /* This file is machine generated, don't edit it !*/ +#ifndef _GNU_JAVA_AWT_PEER_GTK_GTKFRAMEPEER_H +#define _GNU_JAVA_AWT_PEER_GTK_GTKFRAMEPEER_H + /* Structure information for class: gnu/java/awt/peer/gtk/GtkFramePeer */ typedef struct gnu_java_awt_peer_gtk_GtkFramePeer { @@ -14,15 +17,21 @@ typedef struct gnu_java_awt_peer_gtk_GtkFramePeer { s4 menuBarHeight; } gnu_java_awt_peer_gtk_GtkFramePeer; + /* * Class: gnu/java/awt/peer/gtk/GtkFramePeer * Method: getMenuBarHeight * Signature: ()I */ -JNIEXPORT s4 JNICALL Java_gnu_java_awt_peer_gtk_GtkFramePeer_getMenuBarHeight (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkFramePeer* this ); +JNIEXPORT s4 JNICALL Java_gnu_java_awt_peer_gtk_GtkFramePeer_getMenuBarHeight(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkFramePeer* this); + + /* * Class: gnu/java/awt/peer/gtk/GtkFramePeer * Method: setMenuBarPeer * Signature: (Ljava/awt/peer/MenuBarPeer;)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkFramePeer_setMenuBarPeer (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkFramePeer* this , struct java_awt_peer_MenuBarPeer* par1); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkFramePeer_setMenuBarPeer(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkFramePeer* this, struct java_awt_peer_MenuBarPeer* par1); + +#endif + diff --git a/nat/gnu_java_awt_peer_gtk_GtkGenericPeer.h b/nat/gnu_java_awt_peer_gtk_GtkGenericPeer.h index 00bd77dd7..ec73109a4 100644 --- a/nat/gnu_java_awt_peer_gtk_GtkGenericPeer.h +++ b/nat/gnu_java_awt_peer_gtk_GtkGenericPeer.h @@ -1,5 +1,8 @@ /* This file is machine generated, don't edit it !*/ +#ifndef _GNU_JAVA_AWT_PEER_GTK_GTKGENERICPEER_H +#define _GNU_JAVA_AWT_PEER_GTK_GTKGENERICPEER_H + /* Structure information for class: gnu/java/awt/peer/gtk/GtkGenericPeer */ typedef struct gnu_java_awt_peer_gtk_GtkGenericPeer { @@ -8,9 +11,13 @@ typedef struct gnu_java_awt_peer_gtk_GtkGenericPeer { struct java_lang_Object* awtWidget; } gnu_java_awt_peer_gtk_GtkGenericPeer; + /* * Class: gnu/java/awt/peer/gtk/GtkGenericPeer * Method: dispose * Signature: ()V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkGenericPeer_dispose (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkGenericPeer* this ); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkGenericPeer_dispose(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkGenericPeer* this); + +#endif + diff --git a/nat/gnu_java_awt_peer_gtk_GtkImagePainter.h b/nat/gnu_java_awt_peer_gtk_GtkImagePainter.h index 9ab4a3cf2..701e2e3d2 100644 --- a/nat/gnu_java_awt_peer_gtk_GtkImagePainter.h +++ b/nat/gnu_java_awt_peer_gtk_GtkImagePainter.h @@ -1,5 +1,8 @@ /* This file is machine generated, don't edit it !*/ +#ifndef _GNU_JAVA_AWT_PEER_GTK_GTKIMAGEPAINTER_H +#define _GNU_JAVA_AWT_PEER_GTK_GTKIMAGEPAINTER_H + /* Structure information for class: gnu/java/awt/peer/gtk/GtkImagePainter */ typedef struct gnu_java_awt_peer_gtk_GtkImagePainter { @@ -21,9 +24,13 @@ typedef struct gnu_java_awt_peer_gtk_GtkImagePainter { s4 s_height; } gnu_java_awt_peer_gtk_GtkImagePainter; + /* * Class: gnu/java/awt/peer/gtk/GtkImagePainter * Method: drawPixels * Signature: (Lgnu/java/awt/peer/gtk/GdkGraphics;IIIIIII[III[D)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkImagePainter_drawPixels (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkImagePainter* this , struct gnu_java_awt_peer_gtk_GdkGraphics* par1, s4 par2, s4 par3, s4 par4, s4 par5, s4 par6, s4 par7, s4 par8, java_intarray* par9, s4 par10, s4 par11, java_doublearray* par12); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkImagePainter_drawPixels(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkImagePainter* this, struct gnu_java_awt_peer_gtk_GdkGraphics* par1, s4 par2, s4 par3, s4 par4, s4 par5, s4 par6, s4 par7, s4 par8, java_intarray* par9, s4 par10, s4 par11, java_doublearray* par12); + +#endif + diff --git a/nat/gnu_java_awt_peer_gtk_GtkLabelPeer.h b/nat/gnu_java_awt_peer_gtk_GtkLabelPeer.h index 92e320930..6020b5031 100644 --- a/nat/gnu_java_awt_peer_gtk_GtkLabelPeer.h +++ b/nat/gnu_java_awt_peer_gtk_GtkLabelPeer.h @@ -1,5 +1,8 @@ /* This file is machine generated, don't edit it !*/ +#ifndef _GNU_JAVA_AWT_PEER_GTK_GTKLABELPEER_H +#define _GNU_JAVA_AWT_PEER_GTK_GTKLABELPEER_H + /* Structure information for class: gnu/java/awt/peer/gtk/GtkLabelPeer */ typedef struct gnu_java_awt_peer_gtk_GtkLabelPeer { @@ -10,21 +13,29 @@ typedef struct gnu_java_awt_peer_gtk_GtkLabelPeer { struct java_awt_Insets* insets; } gnu_java_awt_peer_gtk_GtkLabelPeer; + /* * Class: gnu/java/awt/peer/gtk/GtkLabelPeer * Method: create * Signature: (Ljava/lang/String;F)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkLabelPeer_create (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkLabelPeer* this , struct java_lang_String* par1, float par2); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkLabelPeer_create(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkLabelPeer* this, struct java_lang_String* par1, float par2); + + /* * Class: gnu/java/awt/peer/gtk/GtkLabelPeer * Method: setText * Signature: (Ljava/lang/String;)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkLabelPeer_setText (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkLabelPeer* this , struct java_lang_String* par1); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkLabelPeer_setText(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkLabelPeer* this, struct java_lang_String* par1); + + /* * Class: gnu/java/awt/peer/gtk/GtkLabelPeer * Method: nativeSetAlignment * Signature: (F)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkLabelPeer_nativeSetAlignment (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkLabelPeer* this , float par1); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkLabelPeer_nativeSetAlignment(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkLabelPeer* this, float par1); + +#endif + diff --git a/nat/gnu_java_awt_peer_gtk_GtkListPeer.h b/nat/gnu_java_awt_peer_gtk_GtkListPeer.h index 9fe5fd9aa..d07f2eb54 100644 --- a/nat/gnu_java_awt_peer_gtk_GtkListPeer.h +++ b/nat/gnu_java_awt_peer_gtk_GtkListPeer.h @@ -1,5 +1,8 @@ /* This file is machine generated, don't edit it !*/ +#ifndef _GNU_JAVA_AWT_PEER_GTK_GTKLISTPEER_H +#define _GNU_JAVA_AWT_PEER_GTK_GTKLISTPEER_H + /* Structure information for class: gnu/java/awt/peer/gtk/GtkListPeer */ typedef struct gnu_java_awt_peer_gtk_GtkListPeer { @@ -10,69 +13,93 @@ typedef struct gnu_java_awt_peer_gtk_GtkListPeer { struct java_awt_Insets* insets; } gnu_java_awt_peer_gtk_GtkListPeer; + /* * Class: gnu/java/awt/peer/gtk/GtkListPeer * Method: create * Signature: ()V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkListPeer_create (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkListPeer* this ); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkListPeer_create(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkListPeer* this); + + /* * Class: gnu/java/awt/peer/gtk/GtkListPeer * Method: connectHooks * Signature: ()V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkListPeer_connectHooks (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkListPeer* this ); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkListPeer_connectHooks(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkListPeer* this); + + /* * Class: gnu/java/awt/peer/gtk/GtkListPeer * Method: getSize * Signature: (I[I)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkListPeer_getSize (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkListPeer* this , s4 par1, java_intarray* par2); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkListPeer_getSize(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkListPeer* this, s4 par1, java_intarray* par2); + + /* * Class: gnu/java/awt/peer/gtk/GtkListPeer * Method: append * Signature: ([Ljava/lang/String;)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkListPeer_append (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkListPeer* this , java_objectarray* par1); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkListPeer_append(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkListPeer* this, java_objectarray* par1); + + /* * Class: gnu/java/awt/peer/gtk/GtkListPeer * Method: add * Signature: (Ljava/lang/String;I)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkListPeer_add (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkListPeer* this , struct java_lang_String* par1, s4 par2); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkListPeer_add(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkListPeer* this, struct java_lang_String* par1, s4 par2); + + /* * Class: gnu/java/awt/peer/gtk/GtkListPeer * Method: delItems * Signature: (II)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkListPeer_delItems (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkListPeer* this , s4 par1, s4 par2); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkListPeer_delItems(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkListPeer* this, s4 par1, s4 par2); + + /* * Class: gnu/java/awt/peer/gtk/GtkListPeer * Method: deselect * Signature: (I)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkListPeer_deselect (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkListPeer* this , s4 par1); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkListPeer_deselect(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkListPeer* this, s4 par1); + + /* * Class: gnu/java/awt/peer/gtk/GtkListPeer * Method: getSelectedIndexes * Signature: ()[I */ -JNIEXPORT java_intarray* JNICALL Java_gnu_java_awt_peer_gtk_GtkListPeer_getSelectedIndexes (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkListPeer* this ); +JNIEXPORT java_intarray* JNICALL Java_gnu_java_awt_peer_gtk_GtkListPeer_getSelectedIndexes(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkListPeer* this); + + /* * Class: gnu/java/awt/peer/gtk/GtkListPeer * Method: makeVisible * Signature: (I)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkListPeer_makeVisible (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkListPeer* this , s4 par1); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkListPeer_makeVisible(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkListPeer* this, s4 par1); + + /* * Class: gnu/java/awt/peer/gtk/GtkListPeer * Method: select * Signature: (I)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkListPeer_select (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkListPeer* this , s4 par1); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkListPeer_select(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkListPeer* this, s4 par1); + + /* * Class: gnu/java/awt/peer/gtk/GtkListPeer * Method: setMultipleMode * Signature: (Z)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkListPeer_setMultipleMode (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkListPeer* this , s4 par1); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkListPeer_setMultipleMode(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkListPeer* this, s4 par1); + +#endif + diff --git a/nat/gnu_java_awt_peer_gtk_GtkMainThread.h b/nat/gnu_java_awt_peer_gtk_GtkMainThread.h index adcd0e475..12f92a0b7 100644 --- a/nat/gnu_java_awt_peer_gtk_GtkMainThread.h +++ b/nat/gnu_java_awt_peer_gtk_GtkMainThread.h @@ -1,5 +1,8 @@ /* This file is machine generated, don't edit it !*/ +#ifndef _GNU_JAVA_AWT_PEER_GTK_GTKMAINTHREAD_H +#define _GNU_JAVA_AWT_PEER_GTK_GTKMAINTHREAD_H + /* Structure information for class: gnu/java/awt/peer/gtk/GtkMainThread */ typedef struct gnu_java_awt_peer_gtk_GtkMainThread { @@ -8,15 +11,21 @@ typedef struct gnu_java_awt_peer_gtk_GtkMainThread { struct java_lang_Object* awtWidget; } gnu_java_awt_peer_gtk_GtkMainThread; + /* * Class: gnu/java/awt/peer/gtk/GtkMainThread * Method: gtkInit * Signature: ()V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkMainThread_gtkInit (JNIEnv *env , jclass clazz ); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkMainThread_gtkInit(JNIEnv *env, jclass clazz); + + /* * Class: gnu/java/awt/peer/gtk/GtkMainThread * Method: gtkMain * Signature: ()V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkMainThread_gtkMain (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkMainThread* this ); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkMainThread_gtkMain(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkMainThread* this); + +#endif + diff --git a/nat/gnu_java_awt_peer_gtk_GtkMenuBarPeer.h b/nat/gnu_java_awt_peer_gtk_GtkMenuBarPeer.h index 00347f230..ccce358ca 100644 --- a/nat/gnu_java_awt_peer_gtk_GtkMenuBarPeer.h +++ b/nat/gnu_java_awt_peer_gtk_GtkMenuBarPeer.h @@ -1,5 +1,8 @@ /* This file is machine generated, don't edit it !*/ +#ifndef _GNU_JAVA_AWT_PEER_GTK_GTKMENUBARPEER_H +#define _GNU_JAVA_AWT_PEER_GTK_GTKMENUBARPEER_H + /* Structure information for class: gnu/java/awt/peer/gtk/GtkMenuBarPeer */ typedef struct gnu_java_awt_peer_gtk_GtkMenuBarPeer { @@ -8,21 +11,29 @@ typedef struct gnu_java_awt_peer_gtk_GtkMenuBarPeer { struct java_lang_Object* awtWidget; } gnu_java_awt_peer_gtk_GtkMenuBarPeer; + /* * Class: gnu/java/awt/peer/gtk/GtkMenuBarPeer * Method: create * Signature: ()V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkMenuBarPeer_create (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkMenuBarPeer* this ); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkMenuBarPeer_create(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkMenuBarPeer* this); + + /* * Class: gnu/java/awt/peer/gtk/GtkMenuBarPeer * Method: addMenu * Signature: (Ljava/awt/peer/MenuPeer;)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkMenuBarPeer_addMenu (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkMenuBarPeer* this , struct java_awt_peer_MenuPeer* par1); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkMenuBarPeer_addMenu(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkMenuBarPeer* this, struct java_awt_peer_MenuPeer* par1); + + /* * Class: gnu/java/awt/peer/gtk/GtkMenuBarPeer * Method: delMenu * Signature: (I)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkMenuBarPeer_delMenu (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkMenuBarPeer* this , s4 par1); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkMenuBarPeer_delMenu(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkMenuBarPeer* this, s4 par1); + +#endif + diff --git a/nat/gnu_java_awt_peer_gtk_GtkMenuItemPeer.h b/nat/gnu_java_awt_peer_gtk_GtkMenuItemPeer.h index f3d71f737..a9c906e14 100644 --- a/nat/gnu_java_awt_peer_gtk_GtkMenuItemPeer.h +++ b/nat/gnu_java_awt_peer_gtk_GtkMenuItemPeer.h @@ -1,5 +1,8 @@ /* This file is machine generated, don't edit it !*/ +#ifndef _GNU_JAVA_AWT_PEER_GTK_GTKMENUITEMPEER_H +#define _GNU_JAVA_AWT_PEER_GTK_GTKMENUITEMPEER_H + /* Structure information for class: gnu/java/awt/peer/gtk/GtkMenuItemPeer */ typedef struct gnu_java_awt_peer_gtk_GtkMenuItemPeer { @@ -8,15 +11,21 @@ typedef struct gnu_java_awt_peer_gtk_GtkMenuItemPeer { struct java_lang_Object* awtWidget; } gnu_java_awt_peer_gtk_GtkMenuItemPeer; + /* * Class: gnu/java/awt/peer/gtk/GtkMenuItemPeer * Method: create * Signature: (Ljava/lang/String;)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkMenuItemPeer_create (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkMenuItemPeer* this , struct java_lang_String* par1); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkMenuItemPeer_create(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkMenuItemPeer* this, struct java_lang_String* par1); + + /* * Class: gnu/java/awt/peer/gtk/GtkMenuItemPeer * Method: setLabel * Signature: (Ljava/lang/String;)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkMenuItemPeer_setLabel (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkMenuItemPeer* this , struct java_lang_String* par1); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkMenuItemPeer_setLabel(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkMenuItemPeer* this, struct java_lang_String* par1); + +#endif + diff --git a/nat/gnu_java_awt_peer_gtk_GtkMenuPeer.h b/nat/gnu_java_awt_peer_gtk_GtkMenuPeer.h index 2d19dbbf4..c006a3ca9 100644 --- a/nat/gnu_java_awt_peer_gtk_GtkMenuPeer.h +++ b/nat/gnu_java_awt_peer_gtk_GtkMenuPeer.h @@ -1,5 +1,8 @@ /* This file is machine generated, don't edit it !*/ +#ifndef _GNU_JAVA_AWT_PEER_GTK_GTKMENUPEER_H +#define _GNU_JAVA_AWT_PEER_GTK_GTKMENUPEER_H + /* Structure information for class: gnu/java/awt/peer/gtk/GtkMenuPeer */ typedef struct gnu_java_awt_peer_gtk_GtkMenuPeer { @@ -8,27 +11,37 @@ typedef struct gnu_java_awt_peer_gtk_GtkMenuPeer { struct java_lang_Object* awtWidget; } gnu_java_awt_peer_gtk_GtkMenuPeer; + /* * Class: gnu/java/awt/peer/gtk/GtkMenuPeer * Method: create * Signature: (Ljava/lang/String;)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkMenuPeer_create (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkMenuPeer* this , struct java_lang_String* par1); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkMenuPeer_create(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkMenuPeer* this, struct java_lang_String* par1); + + /* * Class: gnu/java/awt/peer/gtk/GtkMenuPeer * Method: addItem * Signature: (Ljava/awt/peer/MenuItemPeer;IZ)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkMenuPeer_addItem (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkMenuPeer* this , struct java_awt_peer_MenuItemPeer* par1, s4 par2, s4 par3); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkMenuPeer_addItem(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkMenuPeer* this, struct java_awt_peer_MenuItemPeer* par1, s4 par2, s4 par3); + + /* * Class: gnu/java/awt/peer/gtk/GtkMenuPeer * Method: setupAccelGroup * Signature: (Lgnu/java/awt/peer/gtk/GtkGenericPeer;)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkMenuPeer_setupAccelGroup (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkMenuPeer* this , struct gnu_java_awt_peer_gtk_GtkGenericPeer* par1); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkMenuPeer_setupAccelGroup(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkMenuPeer* this, struct gnu_java_awt_peer_gtk_GtkGenericPeer* par1); + + /* * Class: gnu/java/awt/peer/gtk/GtkMenuPeer * Method: delItem * Signature: (I)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkMenuPeer_delItem (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkMenuPeer* this , s4 par1); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkMenuPeer_delItem(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkMenuPeer* this, s4 par1); + +#endif + diff --git a/nat/gnu_java_awt_peer_gtk_GtkPanelPeer.h b/nat/gnu_java_awt_peer_gtk_GtkPanelPeer.h index 141a721a6..f0141aae8 100644 --- a/nat/gnu_java_awt_peer_gtk_GtkPanelPeer.h +++ b/nat/gnu_java_awt_peer_gtk_GtkPanelPeer.h @@ -1,5 +1,8 @@ /* This file is machine generated, don't edit it !*/ +#ifndef _GNU_JAVA_AWT_PEER_GTK_GTKPANELPEER_H +#define _GNU_JAVA_AWT_PEER_GTK_GTKPANELPEER_H + /* Structure information for class: gnu/java/awt/peer/gtk/GtkPanelPeer */ typedef struct gnu_java_awt_peer_gtk_GtkPanelPeer { @@ -11,15 +14,21 @@ typedef struct gnu_java_awt_peer_gtk_GtkPanelPeer { struct java_awt_Container* c; } gnu_java_awt_peer_gtk_GtkPanelPeer; + /* * Class: gnu/java/awt/peer/gtk/GtkPanelPeer * Method: create * Signature: ()V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkPanelPeer_create (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkPanelPeer* this ); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkPanelPeer_create(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkPanelPeer* this); + + /* * Class: gnu/java/awt/peer/gtk/GtkPanelPeer * Method: connectHooks * Signature: ()V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkPanelPeer_connectHooks (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkPanelPeer* this ); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkPanelPeer_connectHooks(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkPanelPeer* this); + +#endif + diff --git a/nat/gnu_java_awt_peer_gtk_GtkPopupMenuPeer.h b/nat/gnu_java_awt_peer_gtk_GtkPopupMenuPeer.h index 7879f8386..194d86bbd 100644 --- a/nat/gnu_java_awt_peer_gtk_GtkPopupMenuPeer.h +++ b/nat/gnu_java_awt_peer_gtk_GtkPopupMenuPeer.h @@ -1,5 +1,8 @@ /* This file is machine generated, don't edit it !*/ +#ifndef _GNU_JAVA_AWT_PEER_GTK_GTKPOPUPMENUPEER_H +#define _GNU_JAVA_AWT_PEER_GTK_GTKPOPUPMENUPEER_H + /* Structure information for class: gnu/java/awt/peer/gtk/GtkPopupMenuPeer */ typedef struct gnu_java_awt_peer_gtk_GtkPopupMenuPeer { @@ -8,15 +11,21 @@ typedef struct gnu_java_awt_peer_gtk_GtkPopupMenuPeer { struct java_lang_Object* awtWidget; } gnu_java_awt_peer_gtk_GtkPopupMenuPeer; + /* * Class: gnu/java/awt/peer/gtk/GtkPopupMenuPeer * Method: setupAccelGroup * Signature: (Lgnu/java/awt/peer/gtk/GtkGenericPeer;)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkPopupMenuPeer_setupAccelGroup (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkPopupMenuPeer* this , struct gnu_java_awt_peer_gtk_GtkGenericPeer* par1); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkPopupMenuPeer_setupAccelGroup(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkPopupMenuPeer* this, struct gnu_java_awt_peer_gtk_GtkGenericPeer* par1); + + /* * Class: gnu/java/awt/peer/gtk/GtkPopupMenuPeer * Method: show * Signature: (IIJ)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkPopupMenuPeer_show (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkPopupMenuPeer* this , s4 par1, s4 par2, s8 par3); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkPopupMenuPeer_show(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkPopupMenuPeer* this, s4 par1, s4 par2, s8 par3); + +#endif + diff --git a/nat/gnu_java_awt_peer_gtk_GtkScrollPanePeer.h b/nat/gnu_java_awt_peer_gtk_GtkScrollPanePeer.h index 42de46e0f..044327ab7 100644 --- a/nat/gnu_java_awt_peer_gtk_GtkScrollPanePeer.h +++ b/nat/gnu_java_awt_peer_gtk_GtkScrollPanePeer.h @@ -1,5 +1,8 @@ /* This file is machine generated, don't edit it !*/ +#ifndef _GNU_JAVA_AWT_PEER_GTK_GTKSCROLLPANEPEER_H +#define _GNU_JAVA_AWT_PEER_GTK_GTKSCROLLPANEPEER_H + /* Structure information for class: gnu/java/awt/peer/gtk/GtkScrollPanePeer */ typedef struct gnu_java_awt_peer_gtk_GtkScrollPanePeer { @@ -11,69 +14,93 @@ typedef struct gnu_java_awt_peer_gtk_GtkScrollPanePeer { struct java_awt_Container* c; } gnu_java_awt_peer_gtk_GtkScrollPanePeer; + /* * Class: gnu/java/awt/peer/gtk/GtkScrollPanePeer * Method: create * Signature: ()V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkScrollPanePeer_create (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkScrollPanePeer* this ); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkScrollPanePeer_create(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkScrollPanePeer* this); + + /* * Class: gnu/java/awt/peer/gtk/GtkScrollPanePeer * Method: gtkScrolledWindowNew * Signature: (Ljava/awt/peer/ComponentPeer;III[I)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkScrollPanePeer_gtkScrolledWindowNew (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkScrollPanePeer* this , struct java_awt_peer_ComponentPeer* par1, s4 par2, s4 par3, s4 par4, java_intarray* par5); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkScrollPanePeer_gtkScrolledWindowNew(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkScrollPanePeer* this, struct java_awt_peer_ComponentPeer* par1, s4 par2, s4 par3, s4 par4, java_intarray* par5); + + /* * Class: gnu/java/awt/peer/gtk/GtkScrollPanePeer * Method: gtkScrolledWindowSetScrollPosition * Signature: (II)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkScrollPanePeer_gtkScrolledWindowSetScrollPosition (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkScrollPanePeer* this , s4 par1, s4 par2); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkScrollPanePeer_gtkScrolledWindowSetScrollPosition(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkScrollPanePeer* this, s4 par1, s4 par2); + + /* * Class: gnu/java/awt/peer/gtk/GtkScrollPanePeer * Method: gtkScrolledWindowSetHScrollIncrement * Signature: (I)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkScrollPanePeer_gtkScrolledWindowSetHScrollIncrement (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkScrollPanePeer* this , s4 par1); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkScrollPanePeer_gtkScrolledWindowSetHScrollIncrement(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkScrollPanePeer* this, s4 par1); + + /* * Class: gnu/java/awt/peer/gtk/GtkScrollPanePeer * Method: gtkScrolledWindowSetVScrollIncrement * Signature: (I)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkScrollPanePeer_gtkScrolledWindowSetVScrollIncrement (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkScrollPanePeer* this , s4 par1); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkScrollPanePeer_gtkScrolledWindowSetVScrollIncrement(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkScrollPanePeer* this, s4 par1); + + /* * Class: gnu/java/awt/peer/gtk/GtkScrollPanePeer * Method: gtkScrolledWindowSetSize * Signature: (II)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkScrollPanePeer_gtkScrolledWindowSetSize (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkScrollPanePeer* this , s4 par1, s4 par2); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkScrollPanePeer_gtkScrolledWindowSetSize(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkScrollPanePeer* this, s4 par1, s4 par2); + + /* * Class: gnu/java/awt/peer/gtk/GtkScrollPanePeer * Method: setPolicy * Signature: (I)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkScrollPanePeer_setPolicy (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkScrollPanePeer* this , s4 par1); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkScrollPanePeer_setPolicy(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkScrollPanePeer* this, s4 par1); + + /* * Class: gnu/java/awt/peer/gtk/GtkScrollPanePeer * Method: childResized * Signature: (II)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkScrollPanePeer_childResized (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkScrollPanePeer* this , s4 par1, s4 par2); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkScrollPanePeer_childResized(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkScrollPanePeer* this, s4 par1, s4 par2); + + /* * Class: gnu/java/awt/peer/gtk/GtkScrollPanePeer * Method: getHScrollbarHeight * Signature: ()I */ -JNIEXPORT s4 JNICALL Java_gnu_java_awt_peer_gtk_GtkScrollPanePeer_getHScrollbarHeight (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkScrollPanePeer* this ); +JNIEXPORT s4 JNICALL Java_gnu_java_awt_peer_gtk_GtkScrollPanePeer_getHScrollbarHeight(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkScrollPanePeer* this); + + /* * Class: gnu/java/awt/peer/gtk/GtkScrollPanePeer * Method: getVScrollbarWidth * Signature: ()I */ -JNIEXPORT s4 JNICALL Java_gnu_java_awt_peer_gtk_GtkScrollPanePeer_getVScrollbarWidth (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkScrollPanePeer* this ); +JNIEXPORT s4 JNICALL Java_gnu_java_awt_peer_gtk_GtkScrollPanePeer_getVScrollbarWidth(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkScrollPanePeer* this); + + /* * Class: gnu/java/awt/peer/gtk/GtkScrollPanePeer * Method: setScrollPosition * Signature: (II)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkScrollPanePeer_setScrollPosition (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkScrollPanePeer* this , s4 par1, s4 par2); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkScrollPanePeer_setScrollPosition(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkScrollPanePeer* this, s4 par1, s4 par2); + +#endif + diff --git a/nat/gnu_java_awt_peer_gtk_GtkScrollbarPeer.h b/nat/gnu_java_awt_peer_gtk_GtkScrollbarPeer.h index 4c5749a33..d4c816b93 100644 --- a/nat/gnu_java_awt_peer_gtk_GtkScrollbarPeer.h +++ b/nat/gnu_java_awt_peer_gtk_GtkScrollbarPeer.h @@ -1,5 +1,8 @@ /* This file is machine generated, don't edit it !*/ +#ifndef _GNU_JAVA_AWT_PEER_GTK_GTKSCROLLBARPEER_H +#define _GNU_JAVA_AWT_PEER_GTK_GTKSCROLLBARPEER_H + /* Structure information for class: gnu/java/awt/peer/gtk/GtkScrollbarPeer */ typedef struct gnu_java_awt_peer_gtk_GtkScrollbarPeer { @@ -10,33 +13,45 @@ typedef struct gnu_java_awt_peer_gtk_GtkScrollbarPeer { struct java_awt_Insets* insets; } gnu_java_awt_peer_gtk_GtkScrollbarPeer; + /* * Class: gnu/java/awt/peer/gtk/GtkScrollbarPeer * Method: create * Signature: (IIIIIII)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkScrollbarPeer_create (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkScrollbarPeer* this , s4 par1, s4 par2, s4 par3, s4 par4, s4 par5, s4 par6, s4 par7); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkScrollbarPeer_create(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkScrollbarPeer* this, s4 par1, s4 par2, s4 par3, s4 par4, s4 par5, s4 par6, s4 par7); + + /* * Class: gnu/java/awt/peer/gtk/GtkScrollbarPeer * Method: connectHooks * Signature: ()V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkScrollbarPeer_connectHooks (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkScrollbarPeer* this ); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkScrollbarPeer_connectHooks(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkScrollbarPeer* this); + + /* * Class: gnu/java/awt/peer/gtk/GtkScrollbarPeer * Method: setLineIncrement * Signature: (I)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkScrollbarPeer_setLineIncrement (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkScrollbarPeer* this , s4 par1); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkScrollbarPeer_setLineIncrement(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkScrollbarPeer* this, s4 par1); + + /* * Class: gnu/java/awt/peer/gtk/GtkScrollbarPeer * Method: setPageIncrement * Signature: (I)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkScrollbarPeer_setPageIncrement (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkScrollbarPeer* this , s4 par1); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkScrollbarPeer_setPageIncrement(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkScrollbarPeer* this, s4 par1); + + /* * Class: gnu/java/awt/peer/gtk/GtkScrollbarPeer * Method: setValues * Signature: (IIII)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkScrollbarPeer_setValues (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkScrollbarPeer* this , s4 par1, s4 par2, s4 par3, s4 par4); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkScrollbarPeer_setValues(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkScrollbarPeer* this, s4 par1, s4 par2, s4 par3, s4 par4); + +#endif + diff --git a/nat/gnu_java_awt_peer_gtk_GtkTextAreaPeer.h b/nat/gnu_java_awt_peer_gtk_GtkTextAreaPeer.h index 7affdabc8..0205ef920 100644 --- a/nat/gnu_java_awt_peer_gtk_GtkTextAreaPeer.h +++ b/nat/gnu_java_awt_peer_gtk_GtkTextAreaPeer.h @@ -1,5 +1,8 @@ /* This file is machine generated, don't edit it !*/ +#ifndef _GNU_JAVA_AWT_PEER_GTK_GTKTEXTAREAPEER_H +#define _GNU_JAVA_AWT_PEER_GTK_GTKTEXTAREAPEER_H + /* Structure information for class: gnu/java/awt/peer/gtk/GtkTextAreaPeer */ typedef struct gnu_java_awt_peer_gtk_GtkTextAreaPeer { @@ -10,33 +13,45 @@ typedef struct gnu_java_awt_peer_gtk_GtkTextAreaPeer { struct java_awt_Insets* insets; } gnu_java_awt_peer_gtk_GtkTextAreaPeer; + /* * Class: gnu/java/awt/peer/gtk/GtkTextAreaPeer * Method: create * Signature: (I)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkTextAreaPeer_create (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkTextAreaPeer* this , s4 par1); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkTextAreaPeer_create(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkTextAreaPeer* this, s4 par1); + + /* * Class: gnu/java/awt/peer/gtk/GtkTextAreaPeer * Method: gtkSetFont * Signature: (Ljava/lang/String;II)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkTextAreaPeer_gtkSetFont (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkTextAreaPeer* this , struct java_lang_String* par1, s4 par2, s4 par3); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkTextAreaPeer_gtkSetFont(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkTextAreaPeer* this, struct java_lang_String* par1, s4 par2, s4 par3); + + /* * Class: gnu/java/awt/peer/gtk/GtkTextAreaPeer * Method: gtkTextGetSize * Signature: ([I)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkTextAreaPeer_gtkTextGetSize (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkTextAreaPeer* this , java_intarray* par1); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkTextAreaPeer_gtkTextGetSize(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkTextAreaPeer* this, java_intarray* par1); + + /* * Class: gnu/java/awt/peer/gtk/GtkTextAreaPeer * Method: insert * Signature: (Ljava/lang/String;I)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkTextAreaPeer_insert (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkTextAreaPeer* this , struct java_lang_String* par1, s4 par2); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkTextAreaPeer_insert(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkTextAreaPeer* this, struct java_lang_String* par1, s4 par2); + + /* * Class: gnu/java/awt/peer/gtk/GtkTextAreaPeer * Method: replaceRange * Signature: (Ljava/lang/String;II)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkTextAreaPeer_replaceRange (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkTextAreaPeer* this , struct java_lang_String* par1, s4 par2, s4 par3); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkTextAreaPeer_replaceRange(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkTextAreaPeer* this, struct java_lang_String* par1, s4 par2, s4 par3); + +#endif + diff --git a/nat/gnu_java_awt_peer_gtk_GtkTextComponentPeer.h b/nat/gnu_java_awt_peer_gtk_GtkTextComponentPeer.h index 72feed311..1ed1b7d32 100644 --- a/nat/gnu_java_awt_peer_gtk_GtkTextComponentPeer.h +++ b/nat/gnu_java_awt_peer_gtk_GtkTextComponentPeer.h @@ -1,5 +1,8 @@ /* This file is machine generated, don't edit it !*/ +#ifndef _GNU_JAVA_AWT_PEER_GTK_GTKTEXTCOMPONENTPEER_H +#define _GNU_JAVA_AWT_PEER_GTK_GTKTEXTCOMPONENTPEER_H + /* Structure information for class: gnu/java/awt/peer/gtk/GtkTextComponentPeer */ typedef struct gnu_java_awt_peer_gtk_GtkTextComponentPeer { @@ -10,57 +13,77 @@ typedef struct gnu_java_awt_peer_gtk_GtkTextComponentPeer { struct java_awt_Insets* insets; } gnu_java_awt_peer_gtk_GtkTextComponentPeer; + /* * Class: gnu/java/awt/peer/gtk/GtkTextComponentPeer * Method: connectHooks * Signature: ()V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkTextComponentPeer_connectHooks (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkTextComponentPeer* this ); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkTextComponentPeer_connectHooks(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkTextComponentPeer* this); + + /* * Class: gnu/java/awt/peer/gtk/GtkTextComponentPeer * Method: getCaretPosition * Signature: ()I */ -JNIEXPORT s4 JNICALL Java_gnu_java_awt_peer_gtk_GtkTextComponentPeer_getCaretPosition (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkTextComponentPeer* this ); +JNIEXPORT s4 JNICALL Java_gnu_java_awt_peer_gtk_GtkTextComponentPeer_getCaretPosition(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkTextComponentPeer* this); + + /* * Class: gnu/java/awt/peer/gtk/GtkTextComponentPeer * Method: setCaretPosition * Signature: (I)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkTextComponentPeer_setCaretPosition (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkTextComponentPeer* this , s4 par1); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkTextComponentPeer_setCaretPosition(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkTextComponentPeer* this, s4 par1); + + /* * Class: gnu/java/awt/peer/gtk/GtkTextComponentPeer * Method: getSelectionStart * Signature: ()I */ -JNIEXPORT s4 JNICALL Java_gnu_java_awt_peer_gtk_GtkTextComponentPeer_getSelectionStart (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkTextComponentPeer* this ); +JNIEXPORT s4 JNICALL Java_gnu_java_awt_peer_gtk_GtkTextComponentPeer_getSelectionStart(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkTextComponentPeer* this); + + /* * Class: gnu/java/awt/peer/gtk/GtkTextComponentPeer * Method: getSelectionEnd * Signature: ()I */ -JNIEXPORT s4 JNICALL Java_gnu_java_awt_peer_gtk_GtkTextComponentPeer_getSelectionEnd (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkTextComponentPeer* this ); +JNIEXPORT s4 JNICALL Java_gnu_java_awt_peer_gtk_GtkTextComponentPeer_getSelectionEnd(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkTextComponentPeer* this); + + /* * Class: gnu/java/awt/peer/gtk/GtkTextComponentPeer * Method: getText * Signature: ()Ljava/lang/String; */ -JNIEXPORT struct java_lang_String* JNICALL Java_gnu_java_awt_peer_gtk_GtkTextComponentPeer_getText (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkTextComponentPeer* this ); +JNIEXPORT struct java_lang_String* JNICALL Java_gnu_java_awt_peer_gtk_GtkTextComponentPeer_getText(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkTextComponentPeer* this); + + /* * Class: gnu/java/awt/peer/gtk/GtkTextComponentPeer * Method: select * Signature: (II)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkTextComponentPeer_select (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkTextComponentPeer* this , s4 par1, s4 par2); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkTextComponentPeer_select(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkTextComponentPeer* this, s4 par1, s4 par2); + + /* * Class: gnu/java/awt/peer/gtk/GtkTextComponentPeer * Method: setEditable * Signature: (Z)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkTextComponentPeer_setEditable (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkTextComponentPeer* this , s4 par1); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkTextComponentPeer_setEditable(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkTextComponentPeer* this, s4 par1); + + /* * Class: gnu/java/awt/peer/gtk/GtkTextComponentPeer * Method: setText * Signature: (Ljava/lang/String;)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkTextComponentPeer_setText (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkTextComponentPeer* this , struct java_lang_String* par1); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkTextComponentPeer_setText(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkTextComponentPeer* this, struct java_lang_String* par1); + +#endif + diff --git a/nat/gnu_java_awt_peer_gtk_GtkTextFieldPeer.h b/nat/gnu_java_awt_peer_gtk_GtkTextFieldPeer.h index 585d0298b..7f391cef2 100644 --- a/nat/gnu_java_awt_peer_gtk_GtkTextFieldPeer.h +++ b/nat/gnu_java_awt_peer_gtk_GtkTextFieldPeer.h @@ -1,5 +1,8 @@ /* This file is machine generated, don't edit it !*/ +#ifndef _GNU_JAVA_AWT_PEER_GTK_GTKTEXTFIELDPEER_H +#define _GNU_JAVA_AWT_PEER_GTK_GTKTEXTFIELDPEER_H + /* Structure information for class: gnu/java/awt/peer/gtk/GtkTextFieldPeer */ typedef struct gnu_java_awt_peer_gtk_GtkTextFieldPeer { @@ -10,27 +13,37 @@ typedef struct gnu_java_awt_peer_gtk_GtkTextFieldPeer { struct java_awt_Insets* insets; } gnu_java_awt_peer_gtk_GtkTextFieldPeer; + /* * Class: gnu/java/awt/peer/gtk/GtkTextFieldPeer * Method: create * Signature: ()V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkTextFieldPeer_create (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkTextFieldPeer* this ); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkTextFieldPeer_create(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkTextFieldPeer* this); + + /* * Class: gnu/java/awt/peer/gtk/GtkTextFieldPeer * Method: gtkEntryGetSize * Signature: ([I)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkTextFieldPeer_gtkEntryGetSize (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkTextFieldPeer* this , java_intarray* par1); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkTextFieldPeer_gtkEntryGetSize(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkTextFieldPeer* this, java_intarray* par1); + + /* * Class: gnu/java/awt/peer/gtk/GtkTextFieldPeer * Method: gtkSetFont * Signature: (Ljava/lang/String;II)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkTextFieldPeer_gtkSetFont (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkTextFieldPeer* this , struct java_lang_String* par1, s4 par2, s4 par3); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkTextFieldPeer_gtkSetFont(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkTextFieldPeer* this, struct java_lang_String* par1, s4 par2, s4 par3); + + /* * Class: gnu/java/awt/peer/gtk/GtkTextFieldPeer * Method: setEchoChar * Signature: (C)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkTextFieldPeer_setEchoChar (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkTextFieldPeer* this , s4 par1); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkTextFieldPeer_setEchoChar(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkTextFieldPeer* this, s4 par1); + +#endif + diff --git a/nat/gnu_java_awt_peer_gtk_GtkToolkit.h b/nat/gnu_java_awt_peer_gtk_GtkToolkit.h index 071dc929a..a9f9ea896 100644 --- a/nat/gnu_java_awt_peer_gtk_GtkToolkit.h +++ b/nat/gnu_java_awt_peer_gtk_GtkToolkit.h @@ -1,5 +1,8 @@ /* This file is machine generated, don't edit it !*/ +#ifndef _GNU_JAVA_AWT_PEER_GTK_GTKTOOLKIT_H +#define _GNU_JAVA_AWT_PEER_GTK_GTKTOOLKIT_H + /* Structure information for class: gnu/java/awt/peer/gtk/GtkToolkit */ typedef struct gnu_java_awt_peer_gtk_GtkToolkit { @@ -10,27 +13,37 @@ typedef struct gnu_java_awt_peer_gtk_GtkToolkit { struct java_util_Hashtable* containers; } gnu_java_awt_peer_gtk_GtkToolkit; + /* * Class: gnu/java/awt/peer/gtk/GtkToolkit * Method: beep * Signature: ()V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkToolkit_beep (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkToolkit* this ); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkToolkit_beep(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkToolkit* this); + + /* * Class: gnu/java/awt/peer/gtk/GtkToolkit * Method: getScreenSizeDimensions * Signature: ([I)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkToolkit_getScreenSizeDimensions (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkToolkit* this , java_intarray* par1); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkToolkit_getScreenSizeDimensions(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkToolkit* this, java_intarray* par1); + + /* * Class: gnu/java/awt/peer/gtk/GtkToolkit * Method: getScreenResolution * Signature: ()I */ -JNIEXPORT s4 JNICALL Java_gnu_java_awt_peer_gtk_GtkToolkit_getScreenResolution (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkToolkit* this ); +JNIEXPORT s4 JNICALL Java_gnu_java_awt_peer_gtk_GtkToolkit_getScreenResolution(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkToolkit* this); + + /* * Class: gnu/java/awt/peer/gtk/GtkToolkit * Method: sync * Signature: ()V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkToolkit_sync (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkToolkit* this ); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkToolkit_sync(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkToolkit* this); + +#endif + diff --git a/nat/gnu_java_awt_peer_gtk_GtkWindowPeer.h b/nat/gnu_java_awt_peer_gtk_GtkWindowPeer.h index 0b4e81a8e..7007180f8 100644 --- a/nat/gnu_java_awt_peer_gtk_GtkWindowPeer.h +++ b/nat/gnu_java_awt_peer_gtk_GtkWindowPeer.h @@ -1,5 +1,8 @@ /* This file is machine generated, don't edit it !*/ +#ifndef _GNU_JAVA_AWT_PEER_GTK_GTKWINDOWPEER_H +#define _GNU_JAVA_AWT_PEER_GTK_GTKWINDOWPEER_H + /* Structure information for class: gnu/java/awt/peer/gtk/GtkWindowPeer */ typedef struct gnu_java_awt_peer_gtk_GtkWindowPeer { @@ -13,51 +16,69 @@ typedef struct gnu_java_awt_peer_gtk_GtkWindowPeer { s4 oldState; } gnu_java_awt_peer_gtk_GtkWindowPeer; + /* * Class: gnu/java/awt/peer/gtk/GtkWindowPeer * Method: create * Signature: (IZIILgnu/java/awt/peer/gtk/GtkWindowPeer;)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkWindowPeer_create (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkWindowPeer* this , s4 par1, s4 par2, s4 par3, s4 par4, struct gnu_java_awt_peer_gtk_GtkWindowPeer* par5); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkWindowPeer_create(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkWindowPeer* this, s4 par1, s4 par2, s4 par3, s4 par4, struct gnu_java_awt_peer_gtk_GtkWindowPeer* par5); + + /* * Class: gnu/java/awt/peer/gtk/GtkWindowPeer * Method: connectHooks * Signature: ()V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkWindowPeer_connectHooks (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkWindowPeer* this ); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkWindowPeer_connectHooks(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkWindowPeer* this); + + /* * Class: gnu/java/awt/peer/gtk/GtkWindowPeer * Method: toBack * Signature: ()V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkWindowPeer_toBack (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkWindowPeer* this ); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkWindowPeer_toBack(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkWindowPeer* this); + + /* * Class: gnu/java/awt/peer/gtk/GtkWindowPeer * Method: toFront * Signature: ()V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkWindowPeer_toFront (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkWindowPeer* this ); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkWindowPeer_toFront(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkWindowPeer* this); + + /* * Class: gnu/java/awt/peer/gtk/GtkWindowPeer * Method: nativeSetBounds * Signature: (IIII)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkWindowPeer_nativeSetBounds (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkWindowPeer* this , s4 par1, s4 par2, s4 par3, s4 par4); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkWindowPeer_nativeSetBounds(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkWindowPeer* this, s4 par1, s4 par2, s4 par3, s4 par4); + + /* * Class: gnu/java/awt/peer/gtk/GtkWindowPeer * Method: setSize * Signature: (II)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkWindowPeer_setSize (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkWindowPeer* this , s4 par1, s4 par2); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkWindowPeer_setSize(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkWindowPeer* this, s4 par1, s4 par2); + + /* * Class: gnu/java/awt/peer/gtk/GtkWindowPeer * Method: setBoundsCallback * Signature: (Ljava/awt/Window;IIII)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkWindowPeer_setBoundsCallback (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkWindowPeer* this , struct java_awt_Window* par1, s4 par2, s4 par3, s4 par4, s4 par5); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkWindowPeer_setBoundsCallback(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkWindowPeer* this, struct java_awt_Window* par1, s4 par2, s4 par3, s4 par4, s4 par5); + + /* * Class: gnu/java/awt/peer/gtk/GtkWindowPeer * Method: nativeSetVisible * Signature: (Z)V */ -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkWindowPeer_nativeSetVisible (JNIEnv *env , struct gnu_java_awt_peer_gtk_GtkWindowPeer* this , s4 par1); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkWindowPeer_nativeSetVisible(JNIEnv *env, struct gnu_java_awt_peer_gtk_GtkWindowPeer* this, s4 par1); + +#endif + diff --git a/nat/java_awt_peer_ComponentPeer.h b/nat/java_awt_peer_ComponentPeer.h index 68045b96f..aad0525b5 100644 --- a/nat/java_awt_peer_ComponentPeer.h +++ b/nat/java_awt_peer_ComponentPeer.h @@ -1,8 +1,13 @@ /* This file is machine generated, don't edit it !*/ +#ifndef _JAVA_AWT_PEER_COMPONENTPEER_H +#define _JAVA_AWT_PEER_COMPONENTPEER_H + /* Structure information for class: java/awt/peer/ComponentPeer */ typedef struct java_awt_peer_ComponentPeer { java_objectheader header; } java_awt_peer_ComponentPeer; +#endif + diff --git a/nat/java_awt_peer_MenuItemPeer.h b/nat/java_awt_peer_MenuItemPeer.h index 7012e4a85..f896d4b09 100644 --- a/nat/java_awt_peer_MenuItemPeer.h +++ b/nat/java_awt_peer_MenuItemPeer.h @@ -1,8 +1,13 @@ /* This file is machine generated, don't edit it !*/ +#ifndef _JAVA_AWT_PEER_MENUITEMPEER_H +#define _JAVA_AWT_PEER_MENUITEMPEER_H + /* Structure information for class: java/awt/peer/MenuItemPeer */ typedef struct java_awt_peer_MenuItemPeer { java_objectheader header; } java_awt_peer_MenuItemPeer; +#endif + diff --git a/nat/java_awt_peer_MenuPeer.h b/nat/java_awt_peer_MenuPeer.h index c78241562..6a3496c98 100644 --- a/nat/java_awt_peer_MenuPeer.h +++ b/nat/java_awt_peer_MenuPeer.h @@ -1,8 +1,13 @@ /* This file is machine generated, don't edit it !*/ +#ifndef _JAVA_AWT_PEER_MENUPEER_H +#define _JAVA_AWT_PEER_MENUPEER_H + /* Structure information for class: java/awt/peer/MenuPeer */ typedef struct java_awt_peer_MenuPeer { java_objectheader header; } java_awt_peer_MenuPeer; +#endif + diff --git a/native.c b/native.c index e5cf06ed0..86ee73361 100644 --- a/native.c +++ b/native.c @@ -31,7 +31,7 @@ The .hh files created with the header file generator are all included here as are the C functions implementing these methods. - $Id: native.c 676 2003-11-24 20:50:23Z twisti $ + $Id: native.c 682 2003-12-01 15:33:30Z jowenn $ */ @@ -86,6 +86,7 @@ classinfo *class_java_lang_CloneNotSupportedException; classinfo *class_java_lang_System; classinfo *class_java_lang_ClassLoader; classinfo *class_java_lang_ClassNotFoundException; +classinfo *class_java_lang_LinkageError; classinfo *class_java_lang_InstantiationException; classinfo *class_java_lang_NoSuchMethodError; classinfo *class_java_lang_NoSuchFieldError; @@ -129,29 +130,36 @@ void use_class_as_object(classinfo *c) vftbl *newtbl; if (!c->classvftbl) { c->classvftbl = true; - copy_vftbl(&newtbl, vt); + +/* copy_vftbl(&newtbl, vt); newtbl->class = c->header.vftbl->class; newtbl->baseval = c->header.vftbl->baseval; newtbl->diffval = c->header.vftbl->diffval; - c->header.vftbl = newtbl; - } + c->header.vftbl = newtbl;*/ + + c->header.vftbl=class_java_lang_Class->vftbl; - if (!class_java_lang_VMClass) { - class_java_lang_VMClass = - class_new ( utf_new_char("java/lang/VMClass")); - method_vmclass_init = - class_findmethod(class_java_lang_VMClass,utf_new_char(""), - utf_new_char("(Lgnu/classpath/RawData;)V")); - if (method_vmclass_init==0) { - class_showmethods(class_java_lang_VMClass); - panic("Needed class initializer for VMClass could not be found"); - } - } - { - java_objectheader *vmo = builtin_new (class_java_lang_VMClass); - asm_calljavamethod (method_vmclass_init, vmo, c, NULL, NULL); - c->vmClass=(java_lang_VMClass*)vmo; + if (!class_java_lang_VMClass) { + class_java_lang_VMClass = + loader_load ( utf_new_char("java/lang/VMClass")); + method_vmclass_init = + class_findmethod(class_java_lang_VMClass,utf_new_char(""), + utf_new_char("(Lgnu/classpath/RawData;)V")); + if (method_vmclass_init==0) { + class_showmethods(class_java_lang_VMClass); + panic("Needed class initializer for VMClass could not be found"); + } + } + { + java_objectheader *vmo = builtin_new (class_java_lang_VMClass); + + if (!vmo) panic("Error while creating instance of java/lang/VMClass"); + asm_calljavamethod (method_vmclass_init, vmo, c, NULL, NULL); + c->vmClass=(java_lang_VMClass*)vmo; + /*log_text("VMCLASS has been attached");*/ + } } + } @@ -248,6 +256,8 @@ void native_loadclasses() class_new(utf_new_char("java/io/FileNotFoundException")); class_java_lang_ClassNotFoundException = class_new(utf_new_char("java/lang/ClassNotFoundException")); + class_java_lang_LinkageError = + class_new(utf_new_char("java/lang/LinkageError")); class_java_lang_InstantiationException = class_new(utf_new_char("java/lang/InstantiationException")); class_java_lang_NoSuchMethodError = @@ -302,14 +312,6 @@ void native_loadclasses() class_java_lang_Void = class_new(utf_new_char("java/lang/Void")); - /* load to avoid dynamic classloading */ -/*JoWenn class_new(utf_new_char("sun/net/www/protocol/file/Handler")); - class_new(utf_new_char("sun/net/www/protocol/jar/Handler")); - class_new(utf_new_char("sun/io/CharToByteISO8859_1"));*/ - - /* start classloader */ -/*JoWenn loader_load(utf_new_char("sun/io/ByteToCharISO8859_1")); */ - classesLoaded=1; log_text("native_loadclasses finished"); } @@ -431,6 +433,17 @@ void throw_classnotfoundexception2(utf* classname) javastring_new(classname)); } +void throw_linkageerror2(utf* classname) +{ + if (!class_java_lang_LinkageError) { + panic("java.lang.LinkageError not found. Maybe wrong classpath?"); + } + + /* throws a ClassNotFoundException with message */ + exceptionptr = native_new_and_init_string(class_java_lang_LinkageError, + javastring_new(classname)); +} + /*********************** Function: native_findfunction ************************* diff --git a/native.h b/native.h index 2dc6b7008..fe101f36a 100644 --- a/native.h +++ b/native.h @@ -26,7 +26,7 @@ Authors: Reinhard Grafl - $Id: native.h 676 2003-11-24 20:50:23Z twisti $ + $Id: native.h 682 2003-12-01 15:33:30Z jowenn $ */ @@ -124,8 +124,13 @@ void stringtable_update(); /* throw classnotfoundexcetion */ void throw_classnotfoundexception(); +/* throw classnotfoundexcetion with description*/ void throw_classnotfoundexception2(utf* classname); +/* throw linkageerror with description*/ +void throw_linkageerror2(utf* classname); + + /* make utf symbol from javastring */ utf *javastring_toutf(struct java_lang_String *string, bool isclassname); diff --git a/src/cacaoh/headers.c b/src/cacaoh/headers.c index 3c52ec182..1e031ce03 100644 --- a/src/cacaoh/headers.c +++ b/src/cacaoh/headers.c @@ -29,7 +29,7 @@ Changes: Mark Probst Philipp Tomsich - $Id: headers.c 676 2003-11-24 20:50:23Z twisti $ + $Id: headers.c 682 2003-12-01 15:33:30Z jowenn $ */ @@ -59,6 +59,7 @@ void throw_classnotfoundexception() panic("class not found----------"); } /* */ + void throw_classnotfoundexception2(utf* classname) { sprintf (logtext, "Loading class: "); @@ -66,6 +67,11 @@ void throw_classnotfoundexception2(utf* classname) panic("******class not found"); } +/* this is here to avoid link errors. We are not interested in linkagerrors in cacaoh right now*/ +void throw_linkageerror2(utf* classname) +{ +} + java_objectheader *literalstring_new (utf *u) { return NULL; } diff --git a/src/native/jni.c b/src/native/jni.c index 63f377e88..ab99dfe3d 100644 --- a/src/native/jni.c +++ b/src/native/jni.c @@ -1,63 +1,63 @@ -/* jni.c - implementation of JNI functions +/********************************** jni.c ***************************************** - Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 - R. Grafl, A. Krall, C. Kruegel, C. Oates, R. Obermaisser, - M. Probst, S. Ring, E. Steiner, C. Thalinger, D. Thuernbeck, - P. Tomsich, J. Wenninger - - This file is part of CACAO. - - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2, or (at - your option) any later version. - - This program is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. - - Contact: cacao@complang.tuwien.ac.at - - Authors: ? - - $Id: jni.c 676 2003-11-24 20:50:23Z twisti $ - -*/ + implementation of the Java Native Interface functions + which are used in the JNI function table +***********************************************************************************/ #include "jni.h" -#include "types.h" -#include "jit.h" -#include "builtin.h" +#include "global.h" #include "loader.h" -#include "native.h" #include "tables.h" -#include "asmpart.h" -#include "toolbox/memory.h" +#include "native.h" +#include "builtin.h" +#include "threads/thread.h" +#include "nat/java_lang_Byte.h" +#include "nat/java_lang_Character.h" +#include "nat/java_lang_Short.h" +#include "nat/java_lang_Integer.h" +#include "nat/java_lang_Boolean.h" +#include "nat/java_lang_Long.h" +#include "nat/java_lang_Float.h" +#include "nat/java_lang_Double.h" #include "nat/java_lang_Throwable.h" +#include "jit/jit.h" +#include "asmpart.h" +#define JNI_VERSION 0x00010002 + +static utf* utf_char=0; +static utf* utf_bool=0; +static utf* utf_byte=0; +static utf* utf_short=0; +static utf* utf_int=0; +static utf* utf_long=0; +static utf* utf_float=0; +static utf* utf_double=0; /********************* accessing instance-fields **********************************/ +#define setField(obj,typ,var,val) *((typ*) ((long int) obj + (long int) var->offset))=val; +#define getField(obj,typ,var) *((typ*) ((long int) obj + (long int) var->offset)) +#define setfield_critical(clazz,obj,name,sig,jdatatype,val) setField(obj,jdatatype,getFieldID_critical(env,clazz,name,sig),val); + + + u4 get_parametercount(methodinfo *m) { utf *descr = m->descriptor; /* method-descriptor */ char *utf_ptr = descr->text; /* current position in utf-text */ char *desc_end = utf_end(descr); /* points behind utf string */ + java_objectarray* result; int parametercount = 0; + int i; /* skip '(' */ utf_nextu2(&utf_ptr); /* determine number of parameters */ - while (*utf_ptr != ')') { - get_type(&utf_ptr, desc_end, true); + while ( *utf_ptr != ')' ) { + get_type(&utf_ptr,desc_end,true); parametercount++; } @@ -66,17 +66,130 @@ u4 get_parametercount(methodinfo *m) +void fill_callblock(void *obj,utf *descr,jni_callblock blk[], va_list data, char ret) { + char *utf__ptr = descr->text; /* current position in utf-text */ + char **utf_ptr = &utf__ptr; + char *desc_end = utf_end(descr); /* points behind utf string */ + + int cnt; + + jdouble d; + jlong l; + u4 dummy; + char c; + /* + log_text("fill_callblock"); + utf_display(descr); + log_text("===="); + */ + /* skip '(' */ + utf_nextu2(utf_ptr); + + /* determine number of parameters */ + if (obj) { + blk[0].itemtype=TYPE_ADR; + blk[0].item=(u8)(u4)obj; + cnt=1; + } else cnt=0; + while ( **utf_ptr != ')' ) { + if (*utf_ptr>=desc_end) + panic("illegal method descriptor"); + + switch (utf_nextu2(utf_ptr)) { + /* primitive types */ + case 'B' : + case 'C' : + case 'S' : + case 'Z' : + blk[cnt].itemtype=TYPE_INT; + blk[cnt].item=(u8) va_arg(data,int); + break; + case 'I' : + blk[cnt].itemtype=TYPE_INT; + dummy=va_arg(data,u4); + /*printf("fill_callblock: pos:%d, value:%d\n",cnt,dummy);*/ + blk[cnt].item=(u8)dummy; + + break; + + case 'J' : + blk[cnt].itemtype=TYPE_LNG; + blk[cnt].item=(u8)va_arg(data,jlong); + break; + case 'F' : + blk[cnt].itemtype=TYPE_FLT; + *((jfloat*)(&blk[cnt].item))=((jfloat)va_arg(data,jdouble)); + break; + + case 'D' : + blk[cnt].itemtype=TYPE_DBL; + *((jdouble*)(&blk[cnt].item))=(jdouble)va_arg(data,jdouble); + break; + case 'V' : panic ("V not allowed as function parameter"); + break; + case 'L' : { + while (utf_nextu2(utf_ptr)!=';') + + blk[cnt].itemtype=TYPE_ADR; + blk[cnt].item=(u8)(u4)va_arg(data,void*); + break; + } + case '[' : { + /* XXX */ + /* arrayclass */ + char *start = *utf_ptr; + char ch; + while ((ch = utf_nextu2(utf_ptr))=='[') + if (ch == 'L') { + while (utf_nextu2(utf_ptr)!=';') {} + } + + ch=utf_nextu2(utf_ptr); + blk[cnt].itemtype=TYPE_ADR; + blk[cnt].item=(u8)(u4)va_arg(data,void*); + break; + } + } + cnt++; + } + + /*the standard doesn't say anything about return value checking, but it appears to be usefull*/ + c=utf_nextu2(utf_ptr); + c=utf_nextu2(utf_ptr); + /*printf("%c %c\n",ret,c);*/ + if (ret=='O') { + if (!((c=='L') || (c=='['))) log_text("\n====\nWarning call*Method called for function with wrong return type\n===="); + } else if (ret != c) log_text("\n====\nWarning call*Method called for function with wrong return type\n===="); + +} + /* XXX it could be considered if we should do typechecking here in the future */ -void fill_callblock(void *obj, utf *descr, jni_callblock blk[], va_list data, char ret) +char fill_callblock_objA(void *obj, utf *descr, jni_callblock blk[], java_objectarray* params) { char *utf__ptr = descr->text; /* current position in utf-text */ char **utf_ptr = &utf__ptr; char *desc_end = utf_end(descr); /* points behind utf string */ + jobject param; int cnt; + int cnts; u4 dummy; char c; + char *cp; + intsDisable(); + if (utf_char==0) { + utf_char=utf_new_char("java/lang/Character"); + utf_bool=utf_new_char("java/lang/Boolean"); + utf_byte=utf_new_char("java/lang/Byte"); + utf_short=utf_new_char("java/lang/Short"); + utf_int=utf_new_char("java/lang/Integer"); + utf_long=utf_new_char("java/lang/Long"); + utf_float=utf_new_char("java/lang/Float"); + utf_double=utf_new_char("java/lang/Double"); + } + intsRestore(); + /* log_text("fill_callblock"); utf_display(descr); @@ -95,85 +208,203 @@ void fill_callblock(void *obj, utf *descr, jni_callblock blk[], va_list data, ch cnt = 0; } + cnts=0; while (**utf_ptr != ')') { if (*utf_ptr >= desc_end) panic("illegal method descriptor"); /* primitive types */ switch (utf_nextu2(utf_ptr)) { - case 'B': + case 'B': + param=params->data[cnts]; + if (param->vftbl->class->name==utf_byte) { + blk[cnt].itemtype=TYPE_INT; + blk[cnt].item = (u8) ((struct java_lang_Byte * )param)->value; + } else { + exceptionptr=native_new_and_init(loader_load(utf_new_char("java/lang/IllegalArgumentException"))); + return 0; + } + break; case 'C': + param=params->data[cnts]; + if (param->vftbl->class->name==utf_char) { + blk[cnt].itemtype=TYPE_INT; + blk[cnt].item = (u8) ((struct java_lang_Character * )param)->value; + } else { + exceptionptr=native_new_and_init(loader_load(utf_new_char("java/lang/IllegalArgumentException"))); + return 0; + } + break; + case 'S': + param=params->data[cnts]; + if (param->vftbl->class->name==utf_short) { + blk[cnt].itemtype=TYPE_INT; + blk[cnt].item = (u8) ((struct java_lang_Short* )param)->value; + } else { + if (param->vftbl->class->name==utf_byte) { + blk[cnt].itemtype=TYPE_INT; + blk[cnt].item = (u8) ((struct java_lang_Byte * )param)->value; + } else { + exceptionptr=native_new_and_init(loader_load(utf_new_char("java/lang/IllegalArgumentException"))); + return 0; + } + } + break; + case 'Z': - blk[cnt].itemtype = TYPE_INT; - blk[cnt].item = (u8) va_arg(data, int); - break; + param=params->data[cnts]; + if (param->vftbl->class->name==utf_bool) { + blk[cnt].itemtype=TYPE_INT; + blk[cnt].item = (u8) ((struct java_lang_Boolean * )param)->value; + } else { + exceptionptr=native_new_and_init(loader_load(utf_new_char("java/lang/IllegalArgumentException"))); + return 0; + } + break; case 'I': - blk[cnt].itemtype = TYPE_INT; - dummy = va_arg(data, u4); - /*printf("fill_callblock: pos:%d, value:%d\n",cnt,dummy);*/ - blk[cnt].item = (u8) dummy; - break; - + log_text("fill_callblock_objA: param 'I'"); + param=params->data[cnts]; + if (param->vftbl->class->name==utf_int) { + blk[cnt].itemtype=TYPE_INT; + blk[cnt].item = (u8) ((struct java_lang_Integer * )param)->value; + /*printf("INT VALUE :%d\n",((struct java_lang_Integer * )param)->value);*/ + } else { + if (param->vftbl->class->name==utf_short) { + blk[cnt].itemtype=TYPE_INT; + blk[cnt].item = (u8) ((struct java_lang_Short* )param)->value; + } else { + if (param->vftbl->class->name==utf_byte) { + blk[cnt].itemtype=TYPE_INT; + blk[cnt].item = (u8) ((struct java_lang_Byte * )param)->value; + + } else { + exceptionptr=native_new_and_init(loader_load(utf_new_char("java/lang/IllegalArgumentException"))); + return 0; + } + } + } + break; case 'J': - blk[cnt].itemtype = TYPE_LNG; - blk[cnt].item = (u8) va_arg(data, jlong); - break; - - case 'F': - blk[cnt].itemtype = TYPE_FLT; - *((jfloat*) (&blk[cnt].item)) = ((jfloat) va_arg(data, jdouble)); - break; - - case 'D': - blk[cnt].itemtype = TYPE_DBL; - *((jdouble*) (&blk[cnt].item)) = (jdouble) va_arg(data, jdouble); - break; + param=params->data[cnts]; + if (param->vftbl->class->name==utf_long) { + blk[cnt].itemtype=TYPE_LNG; + blk[cnt].item = (u8) ((struct java_lang_Long * )param)->value; + } else { + if (param->vftbl->class->name==utf_int) { + blk[cnt].itemtype=TYPE_LNG; + blk[cnt].item = (u8) ((struct java_lang_Integer * )param)->value; + } else { + if (param->vftbl->class->name==utf_short) { + blk[cnt].itemtype=TYPE_LNG; + blk[cnt].item = (u8) ((struct java_lang_Short* )param)->value; + } else { + if (param->vftbl->class->name==utf_byte) { + blk[cnt].itemtype=TYPE_LNG; + blk[cnt].item = (u8) ((struct java_lang_Byte * )param)->value; + } else { + exceptionptr=native_new_and_init(loader_load(utf_new_char("java/lang/IllegalArgumentException"))); + return 0; + } + } + } + } + break; + + case 'F' : + param=params->data[cnts]; + if (param->vftbl->class->name==utf_float) { + blk[cnt].itemtype=TYPE_FLT; + *((jfloat*)(&blk[cnt].item))=(jfloat) ((struct java_lang_Float*)param)->value; + } else { + exceptionptr=native_new_and_init(loader_load(utf_new_char("java/lang/IllegalArgumentException"))); + return 0; + } + break; + case 'D' : + param=params->data[cnts]; + if (param->vftbl->class->name==utf_double) { + blk[cnt].itemtype=TYPE_DBL; + *((jdouble*)(&blk[cnt].item))=(jdouble) ((struct java_lang_Float*)param)->value; + } else { + if (param->vftbl->class->name==utf_float) { + blk[cnt].itemtype=TYPE_DBL; + *((jdouble*)(&blk[cnt].item))=(jdouble) ((struct java_lang_Float*)param)->value; + } else { + exceptionptr=native_new_and_init(loader_load(utf_new_char("java/lang/IllegalArgumentException"))); + return 0; + } + } + break; case 'V': panic("V not allowed as function parameter"); break; - case 'L': - while (utf_nextu2(utf_ptr) != ';') - blk[cnt].itemtype = TYPE_ADR; - - blk[cnt].item = (u8)(u4) va_arg(data, void*); - break; - - case '[' : { - /* XXX need arrayclass change? no.*/ - /* arrayclass */ - char ch; - while ((ch = utf_nextu2(utf_ptr)) == '[') - if (ch == 'L') { - while (utf_nextu2(utf_ptr) != ';') {} + case 'L': { + char *start=(*utf_ptr)-1; + char *end; + + while (utf_nextu2(utf_ptr) != ';') + end=(*utf_ptr)+1; + if (!builtin_instanceof(params->data[cnts],class_from_descriptor(start,end,0,CLASSLOAD_LOAD))) { + if (params->data[cnts]!=0) { + exceptionptr=native_new_and_init(loader_load(utf_new_char("java/lang/IllegalArgumentException"))); + return 0; + } } - - ch = utf_nextu2(utf_ptr); - blk[cnt].itemtype = TYPE_ADR; - blk[cnt].item = (u8)(u4) va_arg(data, void*); - break; - } + blk[cnt].itemtype = TYPE_ADR; + blk[cnt].item= (u8)(u4) (params->data[cnts]); + break; + + } + case '[' : + { + char *start=(*utf_ptr)-1; + char *end; + + char ch; + while ((ch = utf_nextu2(utf_ptr)) == '[') + if (ch == 'L') { + while (utf_nextu2(utf_ptr) != ';') {} + } + end=(*utf_ptr)-1; + ch = utf_nextu2(utf_ptr); + if (!builtin_arrayinstanceof(params->data[cnts],class_from_descriptor(start,end,0,CLASSLOAD_LOAD))) { + exceptionptr=native_new_and_init(loader_load(utf_new_char("java/lang/IllegalArgumentException"))); + return 0; + + } + + blk[cnt].itemtype = TYPE_ADR; + blk[cnt].item = (u8)(u4) (params->data[cnts]); + break; + } } cnt++; + cnts++; } - /*the standard doesn't say anything about return value checking, but it appears to be usefull*/ c = utf_nextu2(utf_ptr); c = utf_nextu2(utf_ptr); - /*printf("%c %c\n",ret,c);*/ - if (ret == 'O') { - if (!((c == 'L') || (c == '['))) - log_text("\n====\nWarning call*Method called for function with wrong return type\n===="); - - } else if (ret != c) - log_text("\n====\nWarning call*Method called for function with wrong return type\n===="); + return c; /*return type needed usage of the right lowlevel methods*/ } + + + + + + + + + + + + jmethodID get_virtual(jobject obj,jmethodID methodID) { if (obj->vftbl->class==methodID->class) return methodID; return class_resolvemethod (obj->vftbl->class, methodID->name, methodID->descriptor); @@ -184,6 +415,8 @@ jmethodID get_nonvirtual(jclass clazz,jmethodID methodID) { return class_resolvemethod (clazz, methodID->name, methodID->descriptor); } + + jobject callObjectMethod (jobject obj, jmethodID methodID, va_list args) { int argcount; @@ -1984,6 +2217,7 @@ jstring NewString (JNIEnv *env, const jchar *buf, jsize len) static char emptyString[]=""; +static jchar emptyStringJ[]={0,0}; /******************* returns the length of a Java string ***************************/ @@ -2030,14 +2264,14 @@ const jchar *GetStringChars (JNIEnv *env, jstring str, jboolean *isCopy) return jc; } if (isCopy) *isCopy=JNI_TRUE; - return emptyString; + return emptyStringJ; } /**************** native code no longer needs access to chars **********************/ void ReleaseStringChars (JNIEnv *env, jstring str, const jchar *chars) { - if (chars==emptyString) return; + if (chars==emptyStringJ) return; MFREE(((jchar*) chars),jchar,((java_lang_String*) str)->count+1); } @@ -2095,6 +2329,10 @@ jsize GetArrayLength (JNIEnv *env, jarray array) jobjectArray NewObjectArray (JNIEnv *env, jsize len, jclass clazz, jobject init) { + if (len<0) { + exceptionptr=proto_java_lang_NegativeArraySizeException; + return NULL; + } java_objectarray *j = builtin_anewarray (len, clazz); if (!j) exceptionptr = proto_java_lang_OutOfMemoryError; return j; @@ -2131,6 +2369,10 @@ void SetObjectArrayElement (JNIEnv *env, jobjectArray array, jsize index, jobjec jbooleanArray NewBooleanArray (JNIEnv *env, jsize len) { + if (len<0) { + exceptionptr=proto_java_lang_NegativeArraySizeException; + return NULL; + } java_booleanarray *j = builtin_newarray_boolean(len); if (!j) exceptionptr = proto_java_lang_OutOfMemoryError; return j; @@ -2139,6 +2381,10 @@ jbooleanArray NewBooleanArray (JNIEnv *env, jsize len) jbyteArray NewByteArray (JNIEnv *env, jsize len) { + if (len<0) { + exceptionptr=proto_java_lang_NegativeArraySizeException; + return NULL; + } java_bytearray *j = builtin_newarray_byte(len); if (!j) exceptionptr = proto_java_lang_OutOfMemoryError; return j; @@ -2147,6 +2393,10 @@ jbyteArray NewByteArray (JNIEnv *env, jsize len) jcharArray NewCharArray (JNIEnv *env, jsize len) { + if (len<0) { + exceptionptr=proto_java_lang_NegativeArraySizeException; + return NULL; + } java_chararray *j = builtin_newarray_char(len); if (!j) exceptionptr = proto_java_lang_OutOfMemoryError; return j; @@ -2155,6 +2405,10 @@ jcharArray NewCharArray (JNIEnv *env, jsize len) jshortArray NewShortArray (JNIEnv *env, jsize len) { + if (len<0) { + exceptionptr=proto_java_lang_NegativeArraySizeException; + return NULL; + } java_shortarray *j = builtin_newarray_short(len); if (!j) exceptionptr = proto_java_lang_OutOfMemoryError; return j; @@ -2163,6 +2417,10 @@ jshortArray NewShortArray (JNIEnv *env, jsize len) jintArray NewIntArray (JNIEnv *env, jsize len) { + if (len<0) { + exceptionptr=proto_java_lang_NegativeArraySizeException; + return NULL; + } java_intarray *j = builtin_newarray_int(len); if (!j) exceptionptr = proto_java_lang_OutOfMemoryError; return j; @@ -2171,6 +2429,10 @@ jintArray NewIntArray (JNIEnv *env, jsize len) jlongArray NewLongArray (JNIEnv *env, jsize len) { + if (len<0) { + exceptionptr=proto_java_lang_NegativeArraySizeException; + return NULL; + } java_longarray *j = builtin_newarray_long(len); if (!j) exceptionptr = proto_java_lang_OutOfMemoryError; return j; @@ -2179,6 +2441,10 @@ jlongArray NewLongArray (JNIEnv *env, jsize len) jfloatArray NewFloatArray (JNIEnv *env, jsize len) { + if (len<0) { + exceptionptr=proto_java_lang_NegativeArraySizeException; + return NULL; + } java_floatarray *j = builtin_newarray_float(len); if (!j) exceptionptr = proto_java_lang_OutOfMemoryError; return j; @@ -2187,6 +2453,10 @@ jfloatArray NewFloatArray (JNIEnv *env, jsize len) jdoubleArray NewDoubleArray (JNIEnv *env, jsize len) { + if (len<0) { + exceptionptr=proto_java_lang_NegativeArraySizeException; + return NULL; + } java_doublearray *j = builtin_newarray_double(len); if (!j) exceptionptr = proto_java_lang_OutOfMemoryError; return j; @@ -2867,6 +3137,150 @@ struct JNI_Table envTable = { JNIEnv env = &envTable; + + + + + + +jobject *jni_method_invokeNativeHelper(JNIEnv *env,struct methodinfo *methodID,jobject obj, java_objectarray *params) { + int argcount; + jni_callblock *blk; + jobject ret; + char retT; + jobject retVal; + if (methodID==0) { + exceptionptr = native_new_and_init(class_java_lang_NoSuchMethodError); + return 0; + } + argcount=get_parametercount(methodID); + + if (obj && (! builtin_instanceof((java_objectheader*)obj,methodID->class))) { + exceptionptr = native_new_and_init(class_java_lang_NoSuchMethodError); + return 0; + } + + if (argcount>3) { + exceptionptr=native_new_and_init(loader_load(utf_new_char("java/lang/IllegalArgumentException"))); + log_text("Too many arguments. invokeNativeHelper does not support that"); + return 0; + } + + if ( ((!params) && (argcount!=0)) || + (params && (params->header.size!=argcount)) + ) { + exceptionptr = native_new_and_init(loader_load(utf_new_char("java/lang/IllegalArgumentException"))); + return 0; + } + + blk = MNEW(jni_callblock, 4 /*argcount+2*/); + + retT=fill_callblock_objA(obj,methodID->descriptor,blk,params); + + switch (retT) { + case 'V': (void)asm_calljavafunction2(methodID,argcount+1,(argcount+1)*sizeof(jni_callblock),blk); + retVal=native_new_and_init(loader_load(utf_new_char("java/lang/Void"))); + break; + case 'I': { + s4 intVal; + intVal=(s4)asm_calljavafunction2(methodID, + argcount+1,(argcount+1)*sizeof(jni_callblock),blk); + retVal=builtin_new(loader_load(utf_new_char("java/lang/Integer"))); + CallVoidMethod(env,retVal, + class_resolvemethod(retVal->vftbl->class, + utf_new_char(""),utf_new_char("(I)V")),intVal); + } + break; + case 'B': { + s4 intVal; + intVal=(s4)asm_calljavafunction2(methodID, + argcount+1,(argcount+1)*sizeof(jni_callblock),blk); + retVal=builtin_new(loader_load(utf_new_char("java/lang/Byte"))); + CallVoidMethod(env,retVal, + class_resolvemethod(retVal->vftbl->class, + utf_new_char(""),utf_new_char("(B)V")),intVal); + } + break; + case 'C': { + s4 intVal; + intVal=(s4)asm_calljavafunction2(methodID, + argcount+1,(argcount+1)*sizeof(jni_callblock),blk); + retVal=builtin_new(loader_load(utf_new_char("java/lang/Character"))); + CallVoidMethod(env,retVal, + class_resolvemethod(retVal->vftbl->class, + utf_new_char(""),utf_new_char("(C)V")),intVal); + } + break; + case 'S': { + s4 intVal; + intVal=(s4)asm_calljavafunction2(methodID, + argcount+1,(argcount+1)*sizeof(jni_callblock),blk); + retVal=builtin_new(loader_load(utf_new_char("java/lang/Short"))); + CallVoidMethod(env,retVal, + class_resolvemethod(retVal->vftbl->class, + utf_new_char(""),utf_new_char("(S)V")),intVal); + } + + case 'Z': { + s4 intVal; + intVal=(s4)asm_calljavafunction2(methodID, + argcount+1,(argcount+1)*sizeof(jni_callblock),blk); + retVal=builtin_new(loader_load(utf_new_char("java/lang/Boolean"))); + CallVoidMethod(env,retVal, + class_resolvemethod(retVal->vftbl->class, + utf_new_char(""),utf_new_char("(Z)V")),intVal); + } + break; + case 'J': { + jlong intVal; + intVal=asm_calljavafunction2long(methodID, + argcount+1,(argcount+1)*sizeof(jni_callblock),blk); + retVal=builtin_new(loader_load(utf_new_char("java/lang/Long"))); + CallVoidMethod(env,retVal, + class_resolvemethod(retVal->vftbl->class, + utf_new_char(""),utf_new_char("(J)V")),intVal); + } + break; + case 'F': { + jdouble floatVal; + floatVal=asm_calljavafunction2double(methodID, + argcount+1,(argcount+1)*sizeof(jni_callblock),blk); + retVal=builtin_new(loader_load(utf_new_char("java/lang/Float"))); + CallVoidMethod(env,retVal, + class_resolvemethod(retVal->vftbl->class, + utf_new_char(""),utf_new_char("(F)V")),floatVal); + } + break; + case 'D': { + jdouble floatVal; + floatVal=asm_calljavafunction2double(methodID, + argcount+1,(argcount+1)*sizeof(jni_callblock),blk); + retVal=builtin_new(loader_load(utf_new_char("java/lang/Double"))); + CallVoidMethod(env,retVal, + class_resolvemethod(retVal->vftbl->class, + utf_new_char(""),utf_new_char("(D)V")),floatVal); + } + break; + + case 'L': /* fall through */ + case '[': retVal=asm_calljavafunction2(methodID,argcount+1,(argcount+1)*sizeof(jni_callblock),blk); + break; + default: { + /* if this happens the acception has already been set by fill_callblock_objA*/ + MFREE(blk, jni_callblock, 4 /*argcount+2*/); + return (jobject*)0; + } + } + MFREE(blk, jni_callblock, 4 /*argcount+2*/); + + if (exceptionptr) + exceptionptr=native_new_and_init(loader_load("java/lang/reflect/InvocationTargetException")); + return retVal; + +} + + + /* * These are local overrides for various environment variables in Emacs. * Please do not remove this and leave it at the end of the file, where diff --git a/src/native/jni.h b/src/native/jni.h index f97b52e2f..4c0459fbf 100644 --- a/src/native/jni.h +++ b/src/native/jni.h @@ -26,7 +26,7 @@ Authors: ? - $Id: jni.h 676 2003-11-24 20:50:23Z twisti $ + $Id: jni.h 682 2003-12-01 15:33:30Z jowenn $ */ @@ -500,6 +500,7 @@ void SetDoubleField(JNIEnv *env, jobject obj, jfieldID fieldID, jdouble val); #define getField(obj,typ,var) *((typ*) ((long int) obj + (long int) var->offset)) #define setfield_critical(clazz,obj,name,sig,jdatatype,val) setField(obj,jdatatype,getFieldID_critical(env,clazz,name,sig),val); +jobject *jni_method_invokeNativeHelper(JNIEnv *env,struct methodinfo *mi,jobject obj, java_objectarray *params); #endif /* _JNI_H */ diff --git a/src/native/native.c b/src/native/native.c index e5cf06ed0..86ee73361 100644 --- a/src/native/native.c +++ b/src/native/native.c @@ -31,7 +31,7 @@ The .hh files created with the header file generator are all included here as are the C functions implementing these methods. - $Id: native.c 676 2003-11-24 20:50:23Z twisti $ + $Id: native.c 682 2003-12-01 15:33:30Z jowenn $ */ @@ -86,6 +86,7 @@ classinfo *class_java_lang_CloneNotSupportedException; classinfo *class_java_lang_System; classinfo *class_java_lang_ClassLoader; classinfo *class_java_lang_ClassNotFoundException; +classinfo *class_java_lang_LinkageError; classinfo *class_java_lang_InstantiationException; classinfo *class_java_lang_NoSuchMethodError; classinfo *class_java_lang_NoSuchFieldError; @@ -129,29 +130,36 @@ void use_class_as_object(classinfo *c) vftbl *newtbl; if (!c->classvftbl) { c->classvftbl = true; - copy_vftbl(&newtbl, vt); + +/* copy_vftbl(&newtbl, vt); newtbl->class = c->header.vftbl->class; newtbl->baseval = c->header.vftbl->baseval; newtbl->diffval = c->header.vftbl->diffval; - c->header.vftbl = newtbl; - } + c->header.vftbl = newtbl;*/ + + c->header.vftbl=class_java_lang_Class->vftbl; - if (!class_java_lang_VMClass) { - class_java_lang_VMClass = - class_new ( utf_new_char("java/lang/VMClass")); - method_vmclass_init = - class_findmethod(class_java_lang_VMClass,utf_new_char(""), - utf_new_char("(Lgnu/classpath/RawData;)V")); - if (method_vmclass_init==0) { - class_showmethods(class_java_lang_VMClass); - panic("Needed class initializer for VMClass could not be found"); - } - } - { - java_objectheader *vmo = builtin_new (class_java_lang_VMClass); - asm_calljavamethod (method_vmclass_init, vmo, c, NULL, NULL); - c->vmClass=(java_lang_VMClass*)vmo; + if (!class_java_lang_VMClass) { + class_java_lang_VMClass = + loader_load ( utf_new_char("java/lang/VMClass")); + method_vmclass_init = + class_findmethod(class_java_lang_VMClass,utf_new_char(""), + utf_new_char("(Lgnu/classpath/RawData;)V")); + if (method_vmclass_init==0) { + class_showmethods(class_java_lang_VMClass); + panic("Needed class initializer for VMClass could not be found"); + } + } + { + java_objectheader *vmo = builtin_new (class_java_lang_VMClass); + + if (!vmo) panic("Error while creating instance of java/lang/VMClass"); + asm_calljavamethod (method_vmclass_init, vmo, c, NULL, NULL); + c->vmClass=(java_lang_VMClass*)vmo; + /*log_text("VMCLASS has been attached");*/ + } } + } @@ -248,6 +256,8 @@ void native_loadclasses() class_new(utf_new_char("java/io/FileNotFoundException")); class_java_lang_ClassNotFoundException = class_new(utf_new_char("java/lang/ClassNotFoundException")); + class_java_lang_LinkageError = + class_new(utf_new_char("java/lang/LinkageError")); class_java_lang_InstantiationException = class_new(utf_new_char("java/lang/InstantiationException")); class_java_lang_NoSuchMethodError = @@ -302,14 +312,6 @@ void native_loadclasses() class_java_lang_Void = class_new(utf_new_char("java/lang/Void")); - /* load to avoid dynamic classloading */ -/*JoWenn class_new(utf_new_char("sun/net/www/protocol/file/Handler")); - class_new(utf_new_char("sun/net/www/protocol/jar/Handler")); - class_new(utf_new_char("sun/io/CharToByteISO8859_1"));*/ - - /* start classloader */ -/*JoWenn loader_load(utf_new_char("sun/io/ByteToCharISO8859_1")); */ - classesLoaded=1; log_text("native_loadclasses finished"); } @@ -431,6 +433,17 @@ void throw_classnotfoundexception2(utf* classname) javastring_new(classname)); } +void throw_linkageerror2(utf* classname) +{ + if (!class_java_lang_LinkageError) { + panic("java.lang.LinkageError not found. Maybe wrong classpath?"); + } + + /* throws a ClassNotFoundException with message */ + exceptionptr = native_new_and_init_string(class_java_lang_LinkageError, + javastring_new(classname)); +} + /*********************** Function: native_findfunction ************************* diff --git a/src/native/native.h b/src/native/native.h index 2dc6b7008..fe101f36a 100644 --- a/src/native/native.h +++ b/src/native/native.h @@ -26,7 +26,7 @@ Authors: Reinhard Grafl - $Id: native.h 676 2003-11-24 20:50:23Z twisti $ + $Id: native.h 682 2003-12-01 15:33:30Z jowenn $ */ @@ -124,8 +124,13 @@ void stringtable_update(); /* throw classnotfoundexcetion */ void throw_classnotfoundexception(); +/* throw classnotfoundexcetion with description*/ void throw_classnotfoundexception2(utf* classname); +/* throw linkageerror with description*/ +void throw_linkageerror2(utf* classname); + + /* make utf symbol from javastring */ utf *javastring_toutf(struct java_lang_String *string, bool isclassname); diff --git a/src/native/vm/Constructor.c b/src/native/vm/Constructor.c index 2c17c7655..d8826e01a 100644 --- a/src/native/vm/Constructor.c +++ b/src/native/vm/Constructor.c @@ -60,8 +60,9 @@ JNIEXPORT struct java_lang_Object* JNICALL Java_java_lang_reflect_Constructor_co m = &((classinfo*)clazz)->methods[this->slot]; - if (!((m->name == utf_new_char("")) && - (m->descriptor == create_methodsig(this->parameterTypes,"V")))) + if (!((m->name == utf_new_char("")))) +/* && + (m->descriptor == create_methodsig(this->parameterTypes,"V"))))*/ { if (verbose) { sprintf(logtext, "Warning: class has no instance-initializer of specified type: "); @@ -77,7 +78,7 @@ JNIEXPORT struct java_lang_Object* JNICALL Java_java_lang_reflect_Constructor_co /* log_text("calling initializer");*/ /* call initializer */ - +#if 0 switch (this->parameterTypes->header.size) { case 0: exceptionptr=asm_calljavamethod (m, o, NULL, NULL, NULL); break; @@ -91,6 +92,11 @@ JNIEXPORT struct java_lang_Object* JNICALL Java_java_lang_reflect_Constructor_co default: log_text("Not supported number of arguments in Java_java_lang_reflect_Constructor"); } +#endif + /*utf_display(m->descriptor); + log_text("calling constructor");*/ + (void) jni_method_invokeNativeHelper(env, m ,o, parameters); + return o; } @@ -100,7 +106,7 @@ JNIEXPORT struct java_lang_Object* JNICALL Java_java_lang_reflect_Constructor_co * Signature: ()I */ JNIEXPORT s4 JNICALL Java_java_lang_reflect_Constructor_getModifiers (JNIEnv *env , struct java_lang_reflect_Constructor* this ) { - log_text("Java_java_lang_reflect_Constructor_getModifiers called"); +/* log_text("Java_java_lang_reflect_Constructor_getModifiers called");*/ classinfo *c=(classinfo*)(this->clazz); if ((this->slot<0) || (this->slot>=c->methodscount)) panic("error illegal slot for method in class (getReturnType)"); diff --git a/src/native/vm/Method.c b/src/native/vm/Method.c index 631256e86..d5371904a 100644 --- a/src/native/vm/Method.c +++ b/src/native/vm/Method.c @@ -2,6 +2,9 @@ #include "jni.h" +#include "loader.h" +#include "global.h" +#include "tables.h" #include "types.h" #include "builtin.h" #include "native.h" @@ -72,10 +75,32 @@ JNIEXPORT java_objectarray* JNICALL Java_java_lang_reflect_Method_getExceptionTy * Method: invokeNative * Signature: (Ljava/lang/Object;[Ljava/lang/Object;Ljava/lang/Class;I)Ljava/lang/Object; */ -JNIEXPORT struct java_lang_Object* JNICALL Java_java_lang_reflect_Method_invokeNative (JNIEnv *env , struct java_lang_reflect_Method* this , struct java_lang_Object* par1, java_objectarray* par2, struct java_lang_Class* par3, s4 par4) +JNIEXPORT struct java_lang_Object* JNICALL Java_java_lang_reflect_Method_invokeNative (JNIEnv *env , + struct java_lang_reflect_Method* this , struct java_lang_Object* obj, + java_objectarray* params, struct java_lang_Class* declaringClass, s4 slot) { - log_text("Java_java_lang_reflect_Method_invokeNative called"); + + struct methodinfo *mi; + classinfo *c=(classinfo*)(declaringClass); + if ((slot<0) || (slot>=c->methodscount)) { + panic("error illegal slot for method in class(getParameterTypes)"); + } + + mi=&(c->methods[this->slot]); + if ( ((mi->flags & ACC_STATIC) && (obj)) + || (!(mi->flags & ACC_STATIC) && (!obj)) ) { + (*env)->ThrowNew(env,loader_load(utf_new_char("java/lang/NullPointerException")), + "Static mismatch in Java_java_lang_reflect_Method_invokeNative"); + return 0; + } + + if (obj && (!builtin_instanceof((java_objectheader*)obj,c))) { + (*env)->ThrowNew(env,loader_load(utf_new_char("java/lang/IllegalArgumentException")), + "Object parameter of wrong type in Java_java_lang_reflect_Method_invokeNative"); return 0; + } + + return jni_method_invokeNativeHelper(env,mi,obj,params); } diff --git a/src/native/vm/VMClass.c b/src/native/vm/VMClass.c index d0c528572..88fa1807c 100644 --- a/src/native/vm/VMClass.c +++ b/src/native/vm/VMClass.c @@ -41,19 +41,19 @@ JNIEXPORT struct java_lang_Class* JNICALL Java_java_lang_VMClass_forName(JNIEnv /* create utf string in which '.' is replaced by '/' */ u = javastring_toutf(s, true); - if ( !(c = class_get(u)) ) { - log_text("forName: would need classloader"); - /*utf_display(u);*/ - c = loader_load(u); if (c == NULL) { /* class was not loaded. raise exception */ - exceptionptr = - native_new_and_init_string(class_java_lang_ClassNotFoundException, s); - return NULL; - } - } + if (! exceptionptr) { + if (runverbose) + log_text("Setting class not found exception"); + exceptionptr = + native_new_and_init_string(class_java_lang_ClassNotFoundException, s); + } + return NULL; + } + /*log_text("Returning class");*/ use_class_as_object (c); return (java_lang_Class*) c; } @@ -115,10 +115,11 @@ JNIEXPORT java_objectarray* JNICALL Java_java_lang_VMClass_getDeclaredConstructo - log_text("Java_java_lang_VMClass_getDeclaredConstructors"); + log_text("Java_java_lang_VMClass_getDeclaredConstructors"); utf_display(c->name); printf("\n"); - class_showmethods(c); +/* class_showmethods(c); + class_showmethods(loader_load(utf_new_char("java/lang/Class")));*/ /* determine number of constructors */ @@ -127,7 +128,6 @@ JNIEXPORT java_objectarray* JNICALL Java_java_lang_VMClass_getDeclaredConstructo (c->methods[i].name==utf_constr)) public_methods++; class_constructor = (classinfo*) loader_load(utf_new_char ("java/lang/reflect/Constructor")); - if (!class_constructor) return NULL; @@ -492,12 +492,52 @@ JNIEXPORT s4 JNICALL Java_java_lang_VMClass_getModifiers ( JNIEnv *env , struct */ JNIEXPORT struct java_lang_String* JNICALL Java_java_lang_VMClass_getName ( JNIEnv *env , struct java_lang_VMClass* this) { + u4 dimCnt; + classinfo *c = (classinfo*) (this->vmData); - u4 i; - classinfo *c = (classinfo*) (this->vmData); - java_lang_String *s = (java_lang_String*) javastring_new(c->name); + char *utf__ptr = c->name->text; /* current position in utf-text */ + char **utf_ptr = &utf__ptr; + char *desc_end = utf_end(c->name); /* points behind utf string */ + java_lang_String *s; + char *str; + s4 len; + s4 i; + if (runverbose) log_text("Java_java_lang_VMClass_getName"); + + dimCnt=0; + while ( *utf_ptr != desc_end ) { + if (utf_nextu2(utf_ptr)=='[') dimCnt++; + else break; + } + utf__ptr=(*utf_ptr)-1; + + len=0; + if (((*utf_ptr)+1)==desc_end) { + for (i=0;iname->text); + str=MNEW(char,len+1); + strcpy(str,utf__ptr); + } + + dimCnt=len-2*dimCnt; + str[len]=0; + for (i=len-1;i>=dimCnt;i=i-2) { + str[i]=']'; + str[i-1]='['; + } + s=(java_lang_String*)javastring_new(utf_new_char(str)); + MFREE(str,char,len+1); - if (!s) return NULL; + if (!s) return NULL; /* return string where '/' is replaced by '.' */ for (i=0; ivalue->header.size; i++) { diff --git a/src/vm/builtin.c b/src/vm/builtin.c index ea4415500..5b364eb9e 100644 --- a/src/vm/builtin.c +++ b/src/vm/builtin.c @@ -34,7 +34,7 @@ calls instead of machine instructions, using the C calling convention. - $Id: builtin.c 669 2003-11-23 14:04:20Z edwin $ + $Id: builtin.c 682 2003-12-01 15:33:30Z jowenn $ */ @@ -534,6 +534,10 @@ java_arrayheader *builtin_newarray(s4 size,vftbl *arrayvftbl) s4 dataoffset = desc->dataoffset; s4 componentsize = desc->componentsize; + if (size<0) { + exceptionptr=native_new_and_init(loader_load(utf_new_char("java/lang/NegativeArraySizeException"))); + return NULL; + } #ifdef SIZE_FROM_CLASSINFO s4 actualsize = align_size(dataoffset + size * componentsize); #else diff --git a/src/vm/global.h b/src/vm/global.h index d2a6cec2c..bfffb6ebe 100644 --- a/src/vm/global.h +++ b/src/vm/global.h @@ -31,7 +31,7 @@ Philipp Tomsich Edwin Steiner - $Id: global.h 670 2003-11-23 14:36:26Z edwin $ + $Id: global.h 682 2003-12-01 15:33:30Z jowenn $ */ @@ -584,6 +584,7 @@ struct classinfo { /* class structure */ listnode listnode; /* linkage */ bool initialized; /* true, if class already initialised */ + bool loaded; /* true, if class already loaded */ bool linked; /* true, if class already linked */ s4 index; /* hierarchy depth (classes) or index (interfaces) */ diff --git a/src/vm/loader.c b/src/vm/loader.c index 21ab14c86..8ff55a17f 100644 --- a/src/vm/loader.c +++ b/src/vm/loader.c @@ -29,7 +29,7 @@ Roman Obermaiser Mark Probst - $Id: loader.c 680 2003-11-24 23:12:29Z twisti $ + $Id: loader.c 682 2003-12-01 15:33:30Z jowenn $ */ @@ -1501,7 +1501,7 @@ static int class_load(classinfo *c) add to list of unlinked classes */ list_remove (&unloadedclasses, c); list_addlast (&unlinkedclasses, c); - + c->loaded=true; return true; } @@ -1653,6 +1653,8 @@ class_new_array(classinfo *c) * Array classes which are created after the other classes have been * loaded and linked are linked explicitely. */ + c->loaded=true; + if (loader_inited) loader_load(c->name); } @@ -2762,10 +2764,23 @@ classinfo *loader_load (utf *topname) loadingtime += (stoptime-starttime); } - intsRestore(); /* schani */ loader_load_running--; + /* check if a former loader_load call tried to load/link the class and failed. + This is needed because the class didn't appear in the undloadclasses or unlinkedclasses list during this class; */ + if (top) { + if (!top->loaded) { + throw_classnotfoundexception2(top->name); + top=NULL; + } else if (!top->linked) { + throw_linkageerror2(top->name); + top=NULL; + } + } + + intsRestore(); /* schani */ + return top; } @@ -2786,9 +2801,10 @@ void create_primitive_classes() classinfo *c = class_new ( utf_new_char(primitivetype_table[i].name) ); c -> classUsed = NOTUSED; /* not used initially CO-RT */ c -> impldBy = NULL; - + /* prevent loader from loading primitive class */ list_remove (&unloadedclasses, c); + c->loaded=true; /* add to unlinked classes */ list_addlast (&unlinkedclasses, c); c -> super = class_java_lang_Object; @@ -2806,6 +2822,7 @@ void create_primitive_classes() if (primitivetype_table[i].arrayname) { c = class_new( utf_new_char(primitivetype_table[i].arrayname) ); primitivetype_table[i].arrayclass = c; + c->loaded=true; if (!c->linked) class_link(c); primitivetype_table[i].arrayvftbl = c->vftbl; } diff --git a/src/vm/tables.c b/src/vm/tables.c index b25f3f741..4b39eb9ff 100644 --- a/src/vm/tables.c +++ b/src/vm/tables.c @@ -35,7 +35,7 @@ - the heap - additional support functions - $Id: tables.c 664 2003-11-21 18:24:01Z jowenn $ + $Id: tables.c 682 2003-12-01 15:33:30Z jowenn $ */ @@ -720,7 +720,7 @@ classinfo *class_new(utf *u) count_class_infos += sizeof(classinfo); #endif - c = NEW (classinfo); + c = GCNEW (classinfo,1); /*JOWENN: NEW*/ c -> vmClass = 0; c -> flags = 0; c -> name = u; @@ -737,6 +737,7 @@ classinfo *class_new(utf *u) c -> methodscount = 0; c -> methods = NULL; c -> linked = false; + c -> loaded = false; c -> index = 0; c -> instancesize = 0; c -> header.vftbl = NULL; @@ -815,6 +816,9 @@ classinfo *class_get(utf *u) slot = key & (class_hash.size-1); c = class_hash.ptr[slot]; +/* + log_text("class_get: looking for class:"); + utf_display(u); */ /* search external hash-chain */ while (c) { if (c->name->blength == u->blength) { @@ -822,7 +826,11 @@ classinfo *class_get(utf *u) /* compare classnames */ for (i=0; iblength; i++) if (u->text[i] != c->name->text[i]) goto nomatch; - +/* + log_text("class_get: class found"); + utf_display(u); + log_text(""); + utf_display(c->name); */ /* class found in hashtable */ return c; } diff --git a/tables.c b/tables.c index b25f3f741..4b39eb9ff 100644 --- a/tables.c +++ b/tables.c @@ -35,7 +35,7 @@ - the heap - additional support functions - $Id: tables.c 664 2003-11-21 18:24:01Z jowenn $ + $Id: tables.c 682 2003-12-01 15:33:30Z jowenn $ */ @@ -720,7 +720,7 @@ classinfo *class_new(utf *u) count_class_infos += sizeof(classinfo); #endif - c = NEW (classinfo); + c = GCNEW (classinfo,1); /*JOWENN: NEW*/ c -> vmClass = 0; c -> flags = 0; c -> name = u; @@ -737,6 +737,7 @@ classinfo *class_new(utf *u) c -> methodscount = 0; c -> methods = NULL; c -> linked = false; + c -> loaded = false; c -> index = 0; c -> instancesize = 0; c -> header.vftbl = NULL; @@ -815,6 +816,9 @@ classinfo *class_get(utf *u) slot = key & (class_hash.size-1); c = class_hash.ptr[slot]; +/* + log_text("class_get: looking for class:"); + utf_display(u); */ /* search external hash-chain */ while (c) { if (c->name->blength == u->blength) { @@ -822,7 +826,11 @@ classinfo *class_get(utf *u) /* compare classnames */ for (i=0; iblength; i++) if (u->text[i] != c->name->text[i]) goto nomatch; - +/* + log_text("class_get: class found"); + utf_display(u); + log_text(""); + utf_display(c->name); */ /* class found in hashtable */ return c; } diff --git a/tests/network/urltest.java b/tests/network/urltest.java index 38dde2a20..7d35f1b7f 100644 --- a/tests/network/urltest.java +++ b/tests/network/urltest.java @@ -84,9 +84,13 @@ public class urltest { { Object handler; - for (int i = 0; i < classes.length; ++i) - Class.forName(classes[i]).newInstance(); - + for (int i = 0; i < classes.length; ++i) { + try { + Class.forName(classes[i]).newInstance(); + } catch (Exception e) { + System.out.println("Exception ("+e.toString()+") while trying to create an instance of: "+classes[i]); + } + } URL url = new URL("http://www.schani.net/"); System.out.println("url " + url.toString());