Contact: cacao@cacaojvm.org
Authors: Roman Obermaiser
-
- Changes: Joseph Wenninger
+ Joseph Wenninger
Christian Thalinger
Edwin Steiner
- $Id: java_lang_VMClass.c 5153 2006-07-18 08:19:24Z twisti $
+ $Id: java_lang_VMClass.c 5919 2006-11-05 21:18:05Z twisti $
*/
}
+#if 0
+/*
+ * Class: java/lang/VMClass
+ * Method: getDeclaredAnnotations
+ * Signature: (Ljava/lang/Class;)[Ljava/lang/annotation/Annotation;
+ */
+JNIEXPORT java_objectarray* JNICALL Java_java_lang_VMClass_getDeclaredAnnotations(JNIEnv *env, jclass clazz, java_lang_Class* klass)
+{
+}
+
+
+/*
+ * Class: java/lang/VMClass
+ * Method: getEnclosingClass
+ * Signature: (Ljava/lang/Class;)Ljava/lang/Class;
+ */
+JNIEXPORT struct java_lang_Class* JNICALL Java_java_lang_VMClass_getEnclosingClass(JNIEnv *env, jclass clazz, struct java_lang_Class* par1);
+
+
+/*
+ * Class: java/lang/VMClass
+ * Method: getEnclosingConstructor
+ * Signature: (Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
+ */
+JNIEXPORT struct java_lang_reflect_Constructor* JNICALL Java_java_lang_VMClass_getEnclosingConstructor(JNIEnv *env, jclass clazz, struct java_lang_Class* par1);
+
+
+/*
+ * Class: java/lang/VMClass
+ * Method: getEnclosingMethod
+ * Signature: (Ljava/lang/Class;)Ljava/lang/reflect/Method;
+ */
+JNIEXPORT struct java_lang_reflect_Method* JNICALL Java_java_lang_VMClass_getEnclosingMethod(JNIEnv *env, jclass clazz, struct java_lang_Class* par1);
+#endif
+
+
+/*
+ * Class: java/lang/VMClass
+ * Method: getClassSignature
+ * Signature: (Ljava/lang/Class;)Ljava/lang/String;
+ */
+JNIEXPORT java_lang_String* JNICALL Java_java_lang_VMClass_getClassSignature(JNIEnv *env, jclass clazz, java_lang_Class* klass)
+{
+ classinfo *c;
+ java_lang_String *s;
+
+ c = (classinfo *) klass;
+
+ if (c->signature == NULL)
+ return NULL;
+
+ s = javastring_new(c->signature);
+
+ /* in error case, s == NULL */
+
+ return s;
+}
+
+
+#if 0
+/*
+ * Class: java/lang/VMClass
+ * Method: isAnonymousClass
+ * Signature: (Ljava/lang/Class;)Z
+ */
+JNIEXPORT s4 JNICALL Java_java_lang_VMClass_isAnonymousClass(JNIEnv *env, jclass clazz, struct java_lang_Class* par1);
+
+
+/*
+ * Class: java/lang/VMClass
+ * Method: isLocalClass
+ * Signature: (Ljava/lang/Class;)Z
+ */
+JNIEXPORT s4 JNICALL Java_java_lang_VMClass_isLocalClass(JNIEnv *env, jclass clazz, struct java_lang_Class* par1);
+
+
+/*
+ * Class: java/lang/VMClass
+ * Method: isMemberClass
+ * Signature: (Ljava/lang/Class;)Z
+ */
+JNIEXPORT s4 JNICALL Java_java_lang_VMClass_isMemberClass(JNIEnv *env, jclass clazz, struct java_lang_Class* par1);
+#endif
+
+
/*
* 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
Contact: cacao@cacaojvm.org
Authors: Reinhard Grafl
-
- Changes: Andreas Krall
+ Andreas Krall
Roman Obermaiser
Mark Probst
Edwin Steiner
Christian Thalinger
- $Id: loader.c 5904 2006-11-04 23:24:48Z edwin $
+ $Id: loader.c 5919 2006-11-05 21:18:05Z twisti $
*/
for (i = 0; i < num; i++) {
/* retrieve attribute name */
+
if (!suck_check_classbuffer_size(cb, 2))
return false;
return false;
if (aname == utf_InnerClasses) {
- /* innerclasses attribute */
- if (c->innerclass) {
+ /* InnerClasses attribute */
+
+ if (c->innerclass != NULL) {
exceptions_throw_classformaterror(c, "Multiple InnerClasses attributes");
return false;
}
innerclass_getconstant(c, suck_u2(cb), CONSTANT_Utf8);
info->flags = suck_u2(cb);
}
+ }
+ else if (aname == utf_SourceFile) {
+ /* SourceFile attribute */
- } else if (aname == utf_SourceFile) {
if (!suck_check_classbuffer_size(cb, 4 + 2))
return false;
return false;
}
- if (c->sourcefile) {
+ if (c->sourcefile != NULL) {
exceptions_throw_classformaterror(c, "Multiple SourceFile attributes");
return false;
}
if (!(c->sourcefile = class_getconstant(c, suck_u2(cb), CONSTANT_Utf8)))
return false;
+ }
+ else if (aname == utf_Signature) {
+ /* Signature attribute */
+
+ if (!suck_check_classbuffer_size(cb, 4 + 2))
+ return false;
- } else {
+ if (suck_u4(cb) != 2) {
+ exceptions_throw_classformaterror(c, "Wrong size for VALUE attribute");
+ return false;
+ }
+
+ if (c->signature != NULL) {
+ exceptions_throw_classformaterror(c, "Multiple Signature attributes");
+ return false;
+ }
+
+ if (!(c->signature = class_getconstant(c, suck_u2(cb), CONSTANT_Utf8)))
+ return false;
+ }
+ else {
/* unknown attribute */
+
if (!skipattributebody(cb))
return false;
}