Class JavaType


  • public class JavaType
    extends Object
    Describes a java-side representation of a type that is used to represent the same data on both the Java-side and C-side during a JNI operation. Also contains some utility methods for creating common types.
    • Method Detail

      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object
      • getElementType

        public JavaType getElementType()
      • getElementCType

        public Type getElementCType()
      • createForOpaqueClass

        public static JavaType createForOpaqueClass​(Class<?> clazz)
        Creates a JavaType corresponding to the given opaque Java type. This can be used to represent arrays of primitive values or Strings; the emitters understand how to perform proper conversion from the corresponding C type.
      • createForClass

        public static JavaType createForClass​(Class<?> clazz)
        Creates a JavaType corresponding to the given Java type. This can be used to represent arrays of primitive values or Strings; the emitters understand how to perform proper conversion from the corresponding C type.
      • createForStringClass

        public static JavaType createForStringClass​(Class<?> clazz,
                                                    boolean pascalString)
      • createForNamedClass

        public static JavaType createForNamedClass​(String name)
        Creates a JavaType corresponding to the given named Java class, not necessarily existing yet.
      • createForCStruct

        public static JavaType createForCStruct​(String name)
        Creates a JavaType corresponding to the specified C CompoundType name; for example, if "Foo" is supplied, then this JavaType represents a "Foo *" by way of a StructAccessor.
      • createForCArray

        public static JavaType createForCArray​(Type elementType)
        Creates a JavaType corresponding to an array of the given element type. This is used to represent arrays of "Foo **" which should be mapped to Foo[] in Java.
      • createForCVoidPointer

        public static JavaType createForCVoidPointer()
      • createForCCharPointer

        public static JavaType createForCCharPointer()
      • createForCShortPointer

        public static JavaType createForCShortPointer()
      • createForCInt32Pointer

        public static JavaType createForCInt32Pointer()
      • createForCInt64Pointer

        public static JavaType createForCInt64Pointer()
      • createForCFloatPointer

        public static JavaType createForCFloatPointer()
      • createForCDoublePointer

        public static JavaType createForCDoublePointer()
      • createForJNIEnv

        public static JavaType createForJNIEnv()
      • forObjectClass

        public static JavaType forObjectClass()
      • forNIOBufferClass

        public static JavaType forNIOBufferClass()
      • forNIOByteBufferClass

        public static JavaType forNIOByteBufferClass()
      • forNIOShortBufferClass

        public static JavaType forNIOShortBufferClass()
      • forNIOIntBufferClass

        public static JavaType forNIOIntBufferClass()
      • forNIOLongBufferClass

        public static JavaType forNIOLongBufferClass()
      • forNIOPointerBufferClass

        public static JavaType forNIOPointerBufferClass()
      • forNIOFloatBufferClass

        public static JavaType forNIOFloatBufferClass()
      • forNIODoubleBufferClass

        public static JavaType forNIODoubleBufferClass()
      • forNIOByteBufferArrayClass

        public static JavaType forNIOByteBufferArrayClass()
      • getJavaClass

        public Class<?> getJavaClass()
        Returns the Java Class corresponding to this type. Returns null if this object corresponds to a C primitive array type.
      • getName

        public String getName()
        Returns the Java type name corresponding to this type.
      • getDescriptor

        public String getDescriptor()
        Returns the descriptor (internal type signature) corresponding to this type.
      • getJNIMethodDesciptor

        public String getJNIMethodDesciptor()
        Returns the native (JNI) method-name descriptor corresponding to this type, i.e. replacing chars getDescriptor() as follows
        • `_` -> `_1`
        • `/` -> `_`
        • `;` -> `_2`
        • `[` -> `_3`
        See Also:
        Spec 2, Chapter 2, Resolving Native Method Names, toJNIMethodDescriptor(String)
      • appendDescriptor

        public static StringBuilder appendDescriptor​(StringBuilder buf,
                                                     Class<?> c,
                                                     boolean useTrueType)
        Appends the descriptor (internal type signature) corresponding to the given Class c.
        Parameters:
        buf - the StringBuilder sink
        c - the Class to append the descriptor for
        useTrueType - if true, use the actual Class name for non primitives, otherwise java.lang.Object will be used (flattened)
        Returns:
        the given StringBuilder sink for chaining
      • appendJNIDescriptor

        public static StringBuilder appendJNIDescriptor​(StringBuilder res,
                                                        Class<?> c,
                                                        boolean useTrueType)
        Appends the native (JNI) method-name descriptor corresponding to the given Class c, i.e. replacing chars appendDescriptor(StringBuilder, Class, boolean) as follows
        • `_` -> `_1`
        • `/` -> `_`
        • `;` -> `_2`
        • `[` -> `_3`
        Only the newly appended segment to the StringBuilder sink will be converted to (JNI) method-name using toJNIMethodDescriptor(StringBuilder, int).
        Parameters:
        buf - the StringBuilder sink
        c - the Class to append the descriptor for
        useTrueType - if true, use the actual Class name for non primitives, otherwise java.lang.Object will be used (flattened)
        Returns:
        the given StringBuilder sink for chaining
        See Also:
        Spec 2, Chapter 2, Resolving Native Method Names, #toJNIMethodDescriptor(StringBuilder)
      • toJNIMethodDescriptor

        public static String toJNIMethodDescriptor​(String descriptor)
        Converts the assumed descriptor (internal type signature) to a native (JNI) method-name descriptor, i.e. replacing chars getDescriptor() as follows
        • `_` -> `_1`
        • `/` -> `_`
        • `;` -> `_2`
        • `[` -> `_3`
        Parameters:
        descriptor - the char sequence holding the original descriptor
        See Also:
        Spec 2, Chapter 2, Resolving Native Method Names
      • toJNIMethodDescriptor

        public static StringBuilder toJNIMethodDescriptor​(StringBuilder descriptor,
                                                          int start)
        Converts the assumed descriptor (internal type signature) to a native (JNI) method-name descriptor, i.e. replacing chars getDescriptor() as follows
        • `_` -> `_1`
        • `/` -> `_`
        • `;` -> `_2`
        • `[` -> `_3`
        Parameters:
        descriptor - the char buffer holding the original descriptor
        start - start position of the segment to convert, use 0 if whole buffr shall be converted
        Returns:
        returns passed descriptor buffer for chaining
        See Also:
        Spec 2, Chapter 2, Resolving Native Method Names
      • jniTypeName

        public String jniTypeName()
        Returns the String corresponding to the JNI type for this type, or NULL if it can't be represented (i.e., it's a boxing class that we need to call getBuffer() on.)
      • isOpaqued

        public boolean isOpaqued()
      • isNIOBuffer

        public boolean isNIOBuffer()
      • isNIOByteBuffer

        public boolean isNIOByteBuffer()
      • isNIOByteBufferArray

        public boolean isNIOByteBufferArray()
      • isNIOBufferArray

        public boolean isNIOBufferArray()
      • isNIOLongBuffer

        public boolean isNIOLongBuffer()
      • isNIOPointerBuffer

        public boolean isNIOPointerBuffer()
      • isString

        public boolean isString()
      • isPascalStringVariant

        public boolean isPascalStringVariant()
      • isPascalString

        public boolean isPascalString()
      • isArray

        public boolean isArray()
      • isFloatArray

        public boolean isFloatArray()
      • isDoubleArray

        public boolean isDoubleArray()
      • isByteArray

        public boolean isByteArray()
      • isIntArray

        public boolean isIntArray()
      • isShortArray

        public boolean isShortArray()
      • isLongArray

        public boolean isLongArray()
      • isStringArray

        public boolean isStringArray()
      • isPascalStringArray

        public boolean isPascalStringArray()
      • isPrimitive

        public boolean isPrimitive()
      • isPrimitiveArray

        public boolean isPrimitiveArray()
      • isShort

        public boolean isShort()
      • isFloat

        public boolean isFloat()
      • isDouble

        public boolean isDouble()
      • isByte

        public boolean isByte()
      • isLong

        public boolean isLong()
      • isInt

        public boolean isInt()
      • isVoid

        public boolean isVoid()
      • isNamedClass

        public boolean isNamedClass()
      • isCompoundTypeWrapper

        public boolean isCompoundTypeWrapper()
      • isArrayOfCompoundTypeWrappers

        public boolean isArrayOfCompoundTypeWrappers()
      • isCPrimitivePointerType

        public boolean isCPrimitivePointerType()
      • isCVoidPointerType

        public boolean isCVoidPointerType()
      • isCCharPointerType

        public boolean isCCharPointerType()
      • isCShortPointerType

        public boolean isCShortPointerType()
      • isCInt32PointerType

        public boolean isCInt32PointerType()
      • isCInt64PointerType

        public boolean isCInt64PointerType()
      • isCFloatPointerType

        public boolean isCFloatPointerType()
      • isCDoublePointerType

        public boolean isCDoublePointerType()
      • isJNIEnv

        public boolean isJNIEnv()
      • getDebugString

        public String getDebugString()