From 6c35ea202b24bdf0e1c1dbbae367461984b6aff5 Mon Sep 17 00:00:00 2001 From: Jonas Maebe Date: Sat, 20 Aug 2011 08:05:12 +0000 Subject: [PATCH] + added several reflection classes for use in array processing git-svn-id: branches/jvmbackend@18502 - --- rtl/java/java_sys.inc | 121 ++++++++++++++++++++++++++++++++++++++++ rtl/java/java_sysh.inc | 123 +++++++++++++++++++++++++++++++---------- 2 files changed, 215 insertions(+), 29 deletions(-) diff --git a/rtl/java/java_sys.inc b/rtl/java/java_sys.inc index a53c03cf5a..5c3fd32102 100644 --- a/rtl/java/java_sys.inc +++ b/rtl/java/java_sys.inc @@ -75,6 +75,46 @@ class function mapLibraryName(para1: JLString): JLString; static; overload; end; + JLRAnnotatedElement = interface external 'java.lang.reflect' name 'AnnotatedElement' + function isAnnotationPresent(para1: JLClass): jboolean; overload; + function getAnnotation(para1: JLClass): JLAAnnotation; overload; + function getAnnotations(): Arr1JLAAnnotation; overload; + function getDeclaredAnnotations(): Arr1JLAAnnotation; overload; + end; + + JLRArray = class sealed external 'java.lang.reflect' name 'Array' (JLObject) + public + class function newInstance(para1: JLClass; para2: jint): JLObject; static; overload; // throws java.lang.NegativeArraySizeException + class function newInstance(para1: JLClass; para2: Arr1jint): JLObject; static; overload; // throws java.lang.IllegalArgumentException, java.lang.NegativeArraySizeException + class function newInstance(para1: JLClass; var para2: array of jint): JLObject; static; overload; // throws java.lang.IllegalArgumentException, java.lang.NegativeArraySizeException + class function getLength(para1: JLObject): jint; static; overload; // throws java.lang.IllegalArgumentException + class function get(para1: JLObject; para2: jint): JLObject; static; overload; // throws java.lang.IllegalArgumentException, java.lang.ArrayIndexOutOfBoundsException + class function getBoolean(para1: JLObject; para2: jint): jboolean; static; overload; // throws java.lang.IllegalArgumentException, java.lang.ArrayIndexOutOfBoundsException + class function getByte(para1: JLObject; para2: jint): jbyte; static; overload; // throws java.lang.IllegalArgumentException, java.lang.ArrayIndexOutOfBoundsException + class function getChar(para1: JLObject; para2: jint): jchar; static; overload; // throws java.lang.IllegalArgumentException, java.lang.ArrayIndexOutOfBoundsException + class function getShort(para1: JLObject; para2: jint): jshort; static; overload; // throws java.lang.IllegalArgumentException, java.lang.ArrayIndexOutOfBoundsException + class function getInt(para1: JLObject; para2: jint): jint; static; overload; // throws java.lang.IllegalArgumentException, java.lang.ArrayIndexOutOfBoundsException + class function getLong(para1: JLObject; para2: jint): jlong; static; overload; // throws java.lang.IllegalArgumentException, java.lang.ArrayIndexOutOfBoundsException + class function getFloat(para1: JLObject; para2: jint): jfloat; static; overload; // throws java.lang.IllegalArgumentException, java.lang.ArrayIndexOutOfBoundsException + class function getDouble(para1: JLObject; para2: jint): jdouble; static; overload; // throws java.lang.IllegalArgumentException, java.lang.ArrayIndexOutOfBoundsException + class procedure &set(para1: JLObject; para2: jint; para3: JLObject); static; overload; // throws java.lang.IllegalArgumentException, java.lang.ArrayIndexOutOfBoundsException + class procedure setBoolean(para1: JLObject; para2: jint; para3: jboolean); static; overload; // throws java.lang.IllegalArgumentException, java.lang.ArrayIndexOutOfBoundsException + class procedure setByte(para1: JLObject; para2: jint; para3: jbyte); static; overload; // throws java.lang.IllegalArgumentException, java.lang.ArrayIndexOutOfBoundsException + class procedure setChar(para1: JLObject; para2: jint; para3: jchar); static; overload; // throws java.lang.IllegalArgumentException, java.lang.ArrayIndexOutOfBoundsException + class procedure setShort(para1: JLObject; para2: jint; para3: jshort); static; overload; // throws java.lang.IllegalArgumentException, java.lang.ArrayIndexOutOfBoundsException + class procedure setInt(para1: JLObject; para2: jint; para3: jint); static; overload; // throws java.lang.IllegalArgumentException, java.lang.ArrayIndexOutOfBoundsException + class procedure setLong(para1: JLObject; para2: jint; para3: jlong); static; overload; // throws java.lang.IllegalArgumentException, java.lang.ArrayIndexOutOfBoundsException + class procedure setFloat(para1: JLObject; para2: jint; para3: jfloat); static; overload; // throws java.lang.IllegalArgumentException, java.lang.ArrayIndexOutOfBoundsException + class procedure setDouble(para1: JLObject; para2: jint; para3: jdouble); static; overload; // throws java.lang.IllegalArgumentException, java.lang.ArrayIndexOutOfBoundsException + end; + + JLRGenericDeclaration = interface external 'java.lang.reflect' name 'GenericDeclaration' + function getTypeParameters(): Arr1JLRTypeVariable; overload; + end; + + JLRType = interface external 'java.lang.reflect' name 'Type' + end; + JUComparator = interface external 'java.util' name 'Comparator' function compare(para1: JLObject; para2: JLObject): jint; overload; function equals(para1: JLObject): jboolean; overload; @@ -613,6 +653,87 @@ function compareTo(para1: JLObject): jint; overload; virtual; end; + JLClass = class sealed external 'java.lang' name 'Class' (JLObject, JISerializable, JLRGenericDeclaration, JLRType, JLRAnnotatedElement) + public + type + InnerMethodArray = class; + Arr1InnerMethodArray = array of InnerMethodArray; + Arr2InnerMethodArray = array of Arr1InnerMethodArray; + Arr3InnerMethodArray = array of Arr2InnerMethodArray; + InnerEnclosingMethodInfo = class; + Arr1InnerEnclosingMethodInfo = array of InnerEnclosingMethodInfo; + Arr2InnerEnclosingMethodInfo = array of Arr1InnerEnclosingMethodInfo; + Arr3InnerEnclosingMethodInfo = array of Arr2InnerEnclosingMethodInfo; + InnerMethodArray = class external 'java.lang' name 'Class$MethodArray' + end; + + InnerEnclosingMethodInfo = class sealed external 'java.lang' name 'Class$EnclosingMethodInfo' + end; + + public + function toString(): JLString; overload; virtual; + class function forName(para1: JLString): JLClass; static; overload; // throws java.lang.ClassNotFoundException + class function forName(para1: JLString; para2: jboolean; para3: JLClassLoader): JLClass; static; overload; // throws java.lang.ClassNotFoundException + function newInstance(): JLObject; overload; virtual; // throws java.lang.InstantiationException, java.lang.IllegalAccessException + function isInstance(para1: JLObject): jboolean; overload; virtual; + function isAssignableFrom(para1: JLClass): jboolean; overload; virtual; + function isInterface(): jboolean; overload; virtual; + function isArray(): jboolean; overload; virtual; + function isPrimitive(): jboolean; overload; virtual; + function isAnnotation(): jboolean; overload; virtual; + function isSynthetic(): jboolean; overload; virtual; + function getName(): JLString; overload; virtual; + function getClassLoader(): JLClassLoader; overload; virtual; + function getTypeParameters(): Arr1JLRTypeVariable; overload; virtual; + function getSuperclass(): JLClass; overload; virtual; + function getGenericSuperclass(): JLRType; overload; virtual; + function getPackage(): JLPackage; overload; virtual; + function getInterfaces(): Arr1JLClass; overload; virtual; + function getGenericInterfaces(): Arr1JLRType; overload; virtual; + function getComponentType(): JLClass; overload; virtual; + function getModifiers(): jint; overload; virtual; + function getSigners(): Arr1JLObject; overload; virtual; + function getEnclosingMethod(): JLRMethod; overload; virtual; + function getEnclosingConstructor(): JLRConstructor; overload; virtual; + function getDeclaringClass(): JLClass; overload; virtual; + function getEnclosingClass(): JLClass; overload; virtual; + function getSimpleName(): JLString; overload; virtual; + function getCanonicalName(): JLString; overload; virtual; + function isAnonymousClass(): jboolean; overload; virtual; + function isLocalClass(): jboolean; overload; virtual; + function isMemberClass(): jboolean; overload; virtual; + function getClasses(): Arr1JLClass; overload; virtual; + function getFields(): Arr1JLRField; overload; virtual; // throws java.lang.SecurityException + function getMethods(): Arr1JLRMethod; overload; virtual; // throws java.lang.SecurityException + function getConstructors(): Arr1JLRConstructor; overload; virtual; // throws java.lang.SecurityException + function getField(para1: JLString): JLRField; overload; virtual; // throws java.lang.NoSuchFieldException, java.lang.SecurityException + function getMethod(para1: JLString; para2: Arr1JLClass): JLRMethod; overload; virtual; // throws java.lang.NoSuchMethodException, java.lang.SecurityException + function getMethod(para1: JLString; var para2: array of JLClass): JLRMethod; overload; virtual; // throws java.lang.NoSuchMethodException, java.lang.SecurityException + function getConstructor(para1: Arr1JLClass): JLRConstructor; overload; virtual; // throws java.lang.NoSuchMethodException, java.lang.SecurityException + function getConstructor(var para1: array of JLClass): JLRConstructor; overload; virtual; // throws java.lang.NoSuchMethodException, java.lang.SecurityException + function getDeclaredClasses(): Arr1JLClass; overload; virtual; // throws java.lang.SecurityException + function getDeclaredFields(): Arr1JLRField; overload; virtual; // throws java.lang.SecurityException + function getDeclaredMethods(): Arr1JLRMethod; overload; virtual; // throws java.lang.SecurityException + function getDeclaredConstructors(): Arr1JLRConstructor; overload; virtual; // throws java.lang.SecurityException + function getDeclaredField(para1: JLString): JLRField; overload; virtual; // throws java.lang.NoSuchFieldException, java.lang.SecurityException + function getDeclaredMethod(para1: JLString; para2: Arr1JLClass): JLRMethod; overload; virtual; // throws java.lang.NoSuchMethodException, java.lang.SecurityException + function getDeclaredMethod(para1: JLString; var para2: array of JLClass): JLRMethod; overload; virtual; // throws java.lang.NoSuchMethodException, java.lang.SecurityException + function getDeclaredConstructor(para1: Arr1JLClass): JLRConstructor; overload; virtual; // throws java.lang.NoSuchMethodException, java.lang.SecurityException + function getDeclaredConstructor(var para1: array of JLClass): JLRConstructor; overload; virtual; // throws java.lang.NoSuchMethodException, java.lang.SecurityException + function getResourceAsStream(para1: JLString): JIInputStream; overload; virtual; + function getResource(para1: JLString): JNURL; overload; virtual; + function getProtectionDomain(): JSProtectionDomain; overload; virtual; + function desiredAssertionStatus(): jboolean; overload; virtual; + function isEnum(): jboolean; overload; virtual; + function getEnumConstants(): Arr1JLObject; overload; virtual; + function cast(para1: JLObject): JLObject; overload; virtual; + function asSubclass(para1: JLClass): JLClass; overload; virtual; + function getAnnotation(para1: JLClass): JLAAnnotation; overload; virtual; + function isAnnotationPresent(para1: JLClass): jboolean; overload; virtual; + function getAnnotations(): Arr1JLAAnnotation; overload; virtual; + function getDeclaredAnnotations(): Arr1JLAAnnotation; overload; virtual; + end; + JTCollator = class abstract external 'java.text' name 'Collator' (JLObject, JUComparator, JLCloneable) public type diff --git a/rtl/java/java_sysh.inc b/rtl/java/java_sysh.inc index 374105c256..8796dd171b 100644 --- a/rtl/java/java_sysh.inc +++ b/rtl/java/java_sysh.inc @@ -1,4 +1,4 @@ -{ Imports for Java packages/classes: java.io.Serializable, java.lang.AbstractStringBuilder, java.lang.Appendable, java.lang.CharSequence, java.lang.Character, java.lang.Cloneable, java.lang.Comparable, java.lang.Double, java.lang.Error, java.lang.Exception, java.lang.Float, java.lang.IllegalArgumentException, java.lang.IndexOutOfBoundsException, java.lang.LinkageError, java.lang.Number, java.lang.Object, java.lang.RuntimeException, java.lang.String, java.lang.StringBuffer, java.lang.StringBuilder, java.lang.System, java.lang.Throwable, java.text.Collator, java.util.Comparator } +{ Imports for Java packages/classes: java.io.Serializable, java.lang.AbstractStringBuilder, java.lang.Appendable, java.lang.CharSequence, java.lang.Character, java.lang.Class, java.lang.Cloneable, java.lang.Comparable, java.lang.Double, java.lang.Error, java.lang.Exception, java.lang.Float, java.lang.IllegalArgumentException, java.lang.IndexOutOfBoundsException, java.lang.LinkageError, java.lang.Number, java.lang.Object, java.lang.RuntimeException, java.lang.String, java.lang.StringBuffer, java.lang.StringBuilder, java.lang.System, java.lang.Throwable, java.lang.reflect.AnnotatedElement, java.lang.reflect.Array, java.lang.reflect.GenericDeclaration, java.lang.reflect.Type, java.text.Collator, java.util.Comparator } type JLStringBuffer = class; Arr1JLStringBuffer = array of JLStringBuffer; @@ -30,6 +30,11 @@ type Arr2JLLinkageError = array of Arr1JLLinkageError; Arr3JLLinkageError = array of Arr2JLLinkageError; + JLRArray = class; + Arr1JLRArray = array of JLRArray; + Arr2JLRArray = array of Arr1JLRArray; + Arr3JLRArray = array of Arr2JLRArray; + JLError = class; Arr1JLError = array of JLError; Arr2JLError = array of Arr1JLError; @@ -70,6 +75,11 @@ type Arr2JLIllegalArgumentException = array of Arr1JLIllegalArgumentException; Arr3JLIllegalArgumentException = array of Arr2JLIllegalArgumentException; + JLClass = class; + Arr1JLClass = array of JLClass; + Arr2JLClass = array of Arr1JLClass; + Arr3JLClass = array of Arr2JLClass; + JLString = class; Arr1JLString = array of JLString; Arr2JLString = array of Arr1JLString; @@ -95,6 +105,16 @@ type Arr2JLCharSequence = array of Arr1JLCharSequence; Arr3JLCharSequence = array of Arr2JLCharSequence; + JLRGenericDeclaration = interface; + Arr1JLRGenericDeclaration = array of JLRGenericDeclaration; + Arr2JLRGenericDeclaration = array of Arr1JLRGenericDeclaration; + Arr3JLRGenericDeclaration = array of Arr2JLRGenericDeclaration; + + JLRAnnotatedElement = interface; + Arr1JLRAnnotatedElement = array of JLRAnnotatedElement; + Arr2JLRAnnotatedElement = array of Arr1JLRAnnotatedElement; + Arr3JLRAnnotatedElement = array of Arr2JLRAnnotatedElement; + JLCloneable = interface; Arr1JLCloneable = array of JLCloneable; Arr2JLCloneable = array of Arr1JLCloneable; @@ -110,6 +130,11 @@ type Arr2JLAppendable = array of Arr1JLAppendable; Arr3JLAppendable = array of Arr2JLAppendable; + JLRType = interface; + Arr1JLRType = array of JLRType; + Arr2JLRType = array of Arr1JLRType; + Arr3JLRType = array of Arr2JLRType; + JISerializable = interface; Arr1JISerializable = array of JISerializable; Arr2JISerializable = array of Arr1JISerializable; @@ -125,15 +150,10 @@ type Arr2JLStackTraceElement = array of Arr1JLStackTraceElement; Arr3JLStackTraceElement = array of Arr2JLStackTraceElement; - JTCollationKey = class external 'java.text' name 'CollationKey'; - Arr1JTCollationKey = array of JTCollationKey; - Arr2JTCollationKey = array of Arr1JTCollationKey; - Arr3JTCollationKey = array of Arr2JTCollationKey; - - JIPrintWriter = class external 'java.io' name 'PrintWriter'; - Arr1JIPrintWriter = array of JIPrintWriter; - Arr2JIPrintWriter = array of Arr1JIPrintWriter; - Arr3JIPrintWriter = array of Arr2JIPrintWriter; + JLClassLoader = class external 'java.lang' name 'ClassLoader'; + Arr1JLClassLoader = array of JLClassLoader; + Arr2JLClassLoader = array of Arr1JLClassLoader; + Arr3JLClassLoader = array of Arr2JLClassLoader; JUProperties = class external 'java.util' name 'Properties'; Arr1JUProperties = array of JUProperties; @@ -145,41 +165,86 @@ type Arr2JIInputStream = array of Arr1JIInputStream; Arr3JIInputStream = array of Arr2JIInputStream; - JIConsole = class external 'java.io' name 'Console'; - Arr1JIConsole = array of JIConsole; - Arr2JIConsole = array of Arr1JIConsole; - Arr3JIConsole = array of Arr2JIConsole; - - JLClass = class external 'java.lang' name 'Class'; - Arr1JLClass = array of JLClass; - Arr2JLClass = array of Arr1JLClass; - Arr3JLClass = array of Arr2JLClass; - - JULocale = class external 'java.util' name 'Locale'; - Arr1JULocale = array of JULocale; - Arr2JULocale = array of Arr1JULocale; - Arr3JULocale = array of Arr2JULocale; - JLSecurityManager = class external 'java.lang' name 'SecurityManager'; Arr1JLSecurityManager = array of JLSecurityManager; Arr2JLSecurityManager = array of Arr1JLSecurityManager; Arr3JLSecurityManager = array of Arr2JLSecurityManager; - JNCCharset = class external 'java.nio.charset' name 'Charset'; - Arr1JNCCharset = array of JNCCharset; - Arr2JNCCharset = array of Arr1JNCCharset; - Arr3JNCCharset = array of Arr2JNCCharset; + JSProtectionDomain = class external 'java.security' name 'ProtectionDomain'; + Arr1JSProtectionDomain = array of JSProtectionDomain; + Arr2JSProtectionDomain = array of Arr1JSProtectionDomain; + Arr3JSProtectionDomain = array of Arr2JSProtectionDomain; + + JLRField = class external 'java.lang.reflect' name 'Field'; + Arr1JLRField = array of JLRField; + Arr2JLRField = array of Arr1JLRField; + Arr3JLRField = array of Arr2JLRField; JIPrintStream = class external 'java.io' name 'PrintStream'; Arr1JIPrintStream = array of JIPrintStream; Arr2JIPrintStream = array of Arr1JIPrintStream; Arr3JIPrintStream = array of Arr2JIPrintStream; + JLRMethod = class external 'java.lang.reflect' name 'Method'; + Arr1JLRMethod = array of JLRMethod; + Arr2JLRMethod = array of Arr1JLRMethod; + Arr3JLRMethod = array of Arr2JLRMethod; + + JTCollationKey = class external 'java.text' name 'CollationKey'; + Arr1JTCollationKey = array of JTCollationKey; + Arr2JTCollationKey = array of Arr1JTCollationKey; + Arr3JTCollationKey = array of Arr2JTCollationKey; + + JLRConstructor = class external 'java.lang.reflect' name 'Constructor'; + Arr1JLRConstructor = array of JLRConstructor; + Arr2JLRConstructor = array of Arr1JLRConstructor; + Arr3JLRConstructor = array of Arr2JLRConstructor; + + JIPrintWriter = class external 'java.io' name 'PrintWriter'; + Arr1JIPrintWriter = array of JIPrintWriter; + Arr2JIPrintWriter = array of Arr1JIPrintWriter; + Arr3JIPrintWriter = array of Arr2JIPrintWriter; + + JLPackage = class external 'java.lang' name 'Package'; + Arr1JLPackage = array of JLPackage; + Arr2JLPackage = array of Arr1JLPackage; + Arr3JLPackage = array of Arr2JLPackage; + + JNURL = class external 'java.net' name 'URL'; + Arr1JNURL = array of JNURL; + Arr2JNURL = array of Arr1JNURL; + Arr3JNURL = array of Arr2JNURL; + + JIConsole = class external 'java.io' name 'Console'; + Arr1JIConsole = array of JIConsole; + Arr2JIConsole = array of Arr1JIConsole; + Arr3JIConsole = array of Arr2JIConsole; + + JULocale = class external 'java.util' name 'Locale'; + Arr1JULocale = array of JULocale; + Arr2JULocale = array of Arr1JULocale; + Arr3JULocale = array of Arr2JULocale; + + JNCCharset = class external 'java.nio.charset' name 'Charset'; + Arr1JNCCharset = array of JNCCharset; + Arr2JNCCharset = array of Arr1JNCCharset; + Arr3JNCCharset = array of Arr2JNCCharset; + + JLAAnnotation = interface external 'java.lang.annotation' name 'Annotation'; + Arr1JLAAnnotation = array of JLAAnnotation; + Arr2JLAAnnotation = array of Arr1JLAAnnotation; + Arr3JLAAnnotation = array of Arr2JLAAnnotation; + JNCChannel = interface external 'java.nio.channels' name 'Channel'; Arr1JNCChannel = array of JNCChannel; Arr2JNCChannel = array of Arr1JNCChannel; Arr3JNCChannel = array of Arr2JNCChannel; + JLRTypeVariable = interface external 'java.lang.reflect' name 'TypeVariable'; + Arr1JLRTypeVariable = array of JLRTypeVariable; + Arr2JLRTypeVariable = array of Arr1JLRTypeVariable; + Arr3JLRTypeVariable = array of Arr2JLRTypeVariable; + JUMap = interface external 'java.util' name 'Map'; Arr1JUMap = array of JUMap; Arr2JUMap = array of Arr1JUMap;