## 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@
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 \
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 \
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 $
*/
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
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 $
*/
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) */
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 $
*/
panic("class not found----------");
}
/* */
+
void throw_classnotfoundexception2(utf* classname)
{
sprintf (logtext, "Loading class: ");
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; }
-/* 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++;
}
+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);
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);
return class_resolvemethod (clazz, methodID->name, methodID->descriptor);
}
+
+
jobject callObjectMethod (jobject obj, jmethodID methodID, va_list args)
{
int argcount;
static char emptyString[]="";
+static jchar emptyStringJ[]={0,0};
/******************* returns the length of a Java string ***************************/
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);
}
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;
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;
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;
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;
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;
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;
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;
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;
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;
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("<init>"),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("<init>"),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("<init>"),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("<init>"),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("<init>"),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("<init>"),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("<init>"),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("<init>"),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
Authors: ?
- $Id: jni.h 676 2003-11-24 20:50:23Z twisti $
+ $Id: jni.h 682 2003-12-01 15:33:30Z jowenn $
*/
#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 */
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 $
*/
add to list of unlinked classes */
list_remove (&unloadedclasses, c);
list_addlast (&unlinkedclasses, c);
-
+ c->loaded=true;
return true;
}
* 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);
}
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;
}
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;
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;
}
m = &((classinfo*)clazz)->methods[this->slot];
- if (!((m->name == utf_new_char("<init>")) &&
- (m->descriptor == create_methodsig(this->parameterTypes,"V"))))
+ if (!((m->name == utf_new_char("<init>"))))
+/* &&
+ (m->descriptor == create_methodsig(this->parameterTypes,"V"))))*/
{
if (verbose) {
sprintf(logtext, "Warning: class has no instance-initializer of specified type: ");
/* log_text("calling initializer");*/
/* call initializer */
-
+#if 0
switch (this->parameterTypes->header.size) {
case 0: exceptionptr=asm_calljavamethod (m, o, NULL, NULL, NULL);
break;
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;
}
* 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)");
#include "jni.h"
+#include "loader.h"
+#include "global.h"
+#include "tables.h"
#include "types.h"
#include "builtin.h"
#include "native.h"
* 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);
}
/* 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;
}
- 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 */
(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;
*/
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;i<PRIMITIVETYPE_COUNT;i++) {
+ if (primitivetype_table[i].typesig==(*utf__ptr)) {
+ len=dimCnt*2+strlen(primitivetype_table[i].name);
+ str=MNEW(char,len+1);
+ strcpy(str,primitivetype_table[i].name);
+ break;
+ }
+ }
+ }
+ if (len==0) {
+ len=dimCnt+strlen(c->name->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; i<s->value->header.size; i++) {
/* 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 {
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
+
/* 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 {
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
+
/* 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 {
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
+
/* 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 {
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
+
/* 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 {
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
+
/* 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 {
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
+
/* 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 {
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
+
/* 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 {
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
+
/* 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 {
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
+
/* 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 {
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
+
/* 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 {
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
+
/* 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 {
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
+
/* 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 {
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
+
/* 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 {
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
+
/* 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 {
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
+
/* 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 {
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
+
/* 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 {
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
+
/* 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 {
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
+
/* 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 {
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
+
/* 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 {
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
+
/* 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 {
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
+
/* 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 {
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
+
/* 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 {
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
+
/* 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 {
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
+
/* 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 {
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
+
/* 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 {
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
+
/* 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 {
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
+
/* 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 {
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
+
/* 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 {
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
+
/* 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 {
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
+
/* 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
+
/* 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
+
/* 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
+
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 $
*/
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;
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("<init>"),
- 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("<init>"),
+ 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");*/
+ }
}
+
}
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 =
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");
}
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 *************************
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 $
*/
/* 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);
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 $
*/
panic("class not found----------");
}
/* */
+
void throw_classnotfoundexception2(utf* classname)
{
sprintf (logtext, "Loading class: ");
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; }
-/* 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++;
}
+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);
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);
return class_resolvemethod (clazz, methodID->name, methodID->descriptor);
}
+
+
jobject callObjectMethod (jobject obj, jmethodID methodID, va_list args)
{
int argcount;
static char emptyString[]="";
+static jchar emptyStringJ[]={0,0};
/******************* returns the length of a Java string ***************************/
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);
}
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;
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;
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;
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;
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;
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;
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;
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;
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;
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("<init>"),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("<init>"),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("<init>"),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("<init>"),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("<init>"),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("<init>"),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("<init>"),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("<init>"),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
Authors: ?
- $Id: jni.h 676 2003-11-24 20:50:23Z twisti $
+ $Id: jni.h 682 2003-12-01 15:33:30Z jowenn $
*/
#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 */
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 $
*/
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;
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("<init>"),
- 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("<init>"),
+ 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");*/
+ }
}
+
}
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 =
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");
}
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 *************************
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 $
*/
/* 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);
m = &((classinfo*)clazz)->methods[this->slot];
- if (!((m->name == utf_new_char("<init>")) &&
- (m->descriptor == create_methodsig(this->parameterTypes,"V"))))
+ if (!((m->name == utf_new_char("<init>"))))
+/* &&
+ (m->descriptor == create_methodsig(this->parameterTypes,"V"))))*/
{
if (verbose) {
sprintf(logtext, "Warning: class has no instance-initializer of specified type: ");
/* log_text("calling initializer");*/
/* call initializer */
-
+#if 0
switch (this->parameterTypes->header.size) {
case 0: exceptionptr=asm_calljavamethod (m, o, NULL, NULL, NULL);
break;
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;
}
* 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)");
#include "jni.h"
+#include "loader.h"
+#include "global.h"
+#include "tables.h"
#include "types.h"
#include "builtin.h"
#include "native.h"
* 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);
}
/* 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;
}
- 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 */
(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;
*/
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;i<PRIMITIVETYPE_COUNT;i++) {
+ if (primitivetype_table[i].typesig==(*utf__ptr)) {
+ len=dimCnt*2+strlen(primitivetype_table[i].name);
+ str=MNEW(char,len+1);
+ strcpy(str,primitivetype_table[i].name);
+ break;
+ }
+ }
+ }
+ if (len==0) {
+ len=dimCnt+strlen(c->name->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; i<s->value->header.size; i++) {
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 $
*/
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
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 $
*/
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) */
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 $
*/
add to list of unlinked classes */
list_remove (&unloadedclasses, c);
list_addlast (&unlinkedclasses, c);
-
+ c->loaded=true;
return true;
}
* 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);
}
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;
}
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;
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;
}
- 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 $
*/
count_class_infos += sizeof(classinfo);
#endif
- c = NEW (classinfo);
+ c = GCNEW (classinfo,1); /*JOWENN: NEW*/
c -> vmClass = 0;
c -> flags = 0;
c -> name = u;
c -> methodscount = 0;
c -> methods = NULL;
c -> linked = false;
+ c -> loaded = false;
c -> index = 0;
c -> instancesize = 0;
c -> header.vftbl = NULL;
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) {
/* compare classnames */
for (i=0; i<u->blength; 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;
}
- 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 $
*/
count_class_infos += sizeof(classinfo);
#endif
- c = NEW (classinfo);
+ c = GCNEW (classinfo,1); /*JOWENN: NEW*/
c -> vmClass = 0;
c -> flags = 0;
c -> name = u;
c -> methodscount = 0;
c -> methods = NULL;
c -> linked = false;
+ c -> loaded = false;
c -> index = 0;
c -> instancesize = 0;
c -> header.vftbl = NULL;
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) {
/* compare classnames */
for (i=0; i<u->blength; 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;
}
{
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());