java.lang.Object
java.lang.foreign.FunctionDescriptor
FunctionDescriptor
is a preview API of the Java platform.
Preview features may be removed in a future release, or upgraded to permanent features of the Java platform.
A function descriptor is made up of zero or more argument layouts and zero or one return layout. A function descriptor
is used to model the signature of foreign functions when creating
downcall method handlesPREVIEW or
upcall stubsPREVIEW.
- Implementation Requirements:
- This class is immutable, thread-safe and value-based.
- Since:
- 19
- See Also:
-
Method Summary
Modifier and TypeMethodDescriptionappendArgumentLayouts
(MemoryLayoutPREVIEW... addedLayouts) Returns a function descriptor with the given argument layouts appended to the argument layout array of this function descriptor.Returns the argument layouts associated with this function descriptor (as an immutable list).asVariadic
(MemoryLayoutPREVIEW... variadicLayouts) Creates a specialized variadic function descriptor, by appending given variadic layouts to this function descriptor argument layouts.changeReturnLayout
(MemoryLayoutPREVIEW newReturn) Returns a function descriptor with the given memory layout as the new return layout.Returns a function descriptor with the return layout dropped.boolean
Compares the specified object with this function descriptor for equality.int
The index of the first variadic argument layout (where defined).int
hashCode()
Returns the hash code value for this function descriptor.insertArgumentLayouts
(int index, MemoryLayoutPREVIEW... addedLayouts) Returns a function descriptor with the given argument layouts inserted at the given index, into the argument layout array of this function descriptor.static FunctionDescriptorPREVIEW
of
(MemoryLayoutPREVIEW resLayout, MemoryLayoutPREVIEW... argLayouts) Creates a function descriptor with the given return and argument layouts.static FunctionDescriptorPREVIEW
ofVoid
(MemoryLayoutPREVIEW... argLayouts) Creates a function descriptor with the given argument layouts and no return layout.Returns the return layout (if any) associated with this function descriptor.toString()
Returns the string representation of this function descriptor.
-
Method Details
-
returnLayout
Returns the return layout (if any) associated with this function descriptor.- Returns:
- the return layout (if any) associated with this function descriptor
-
argumentLayouts
Returns the argument layouts associated with this function descriptor (as an immutable list)..- Returns:
- the argument layouts associated with this function descriptor (as an immutable list)
-
of
public static FunctionDescriptorPREVIEW of(MemoryLayoutPREVIEW resLayout, MemoryLayoutPREVIEW... argLayouts) Creates a function descriptor with the given return and argument layouts.- Parameters:
resLayout
- the return layout.argLayouts
- the argument layouts.- Returns:
- the new function descriptor.
-
ofVoid
Creates a function descriptor with the given argument layouts and no return layout.- Parameters:
argLayouts
- the argument layouts.- Returns:
- the new function descriptor.
-
asVariadic
Creates a specialized variadic function descriptor, by appending given variadic layouts to this function descriptor argument layouts. The resulting function descriptor can report the position of the first variadic argument, and cannot be altered in any way: for instance, callingchangeReturnLayout(MemoryLayout)
on the resulting descriptor will throw anUnsupportedOperationException
.- Parameters:
variadicLayouts
- the variadic argument layouts to be appended to this descriptor argument layouts.- Returns:
- a variadic function descriptor, or this descriptor if
variadicLayouts.length == 0
.
-
firstVariadicArgumentIndex
public int firstVariadicArgumentIndex()The index of the first variadic argument layout (where defined).- Returns:
- The index of the first variadic argument layout, or
-1
if this is not a variadic layout.
-
appendArgumentLayouts
Returns a function descriptor with the given argument layouts appended to the argument layout array of this function descriptor.- Parameters:
addedLayouts
- the argument layouts to append.- Returns:
- the new function descriptor.
-
insertArgumentLayouts
public FunctionDescriptorPREVIEW insertArgumentLayouts(int index, MemoryLayoutPREVIEW... addedLayouts) Returns a function descriptor with the given argument layouts inserted at the given index, into the argument layout array of this function descriptor.- Parameters:
index
- the index at which to insert the argumentsaddedLayouts
- the argument layouts to insert at given index.- Returns:
- the new function descriptor.
- Throws:
IllegalArgumentException
- ifindex < 0 || index > argumentLayouts().size()
.
-
changeReturnLayout
Returns a function descriptor with the given memory layout as the new return layout.- Parameters:
newReturn
- the new return layout.- Returns:
- the new function descriptor.
-
dropReturnLayout
Returns a function descriptor with the return layout dropped. This is useful to model functions which return no values.- Returns:
- the new function descriptor.
-
toString
Returns the string representation of this function descriptor. -
equals
Compares the specified object with this function descriptor for equality. Returnstrue
if and only if the specified object is also a function descriptor, and all the following conditions are met:- the two function descriptors have equals return layouts (see
MemoryLayout.equals(Object)
PREVIEW), or both have no return layout; - the two function descriptors have argument layouts that are pair-wise equalPREVIEW; and
- the two function descriptors have the same leading variadic argument index
- the two function descriptors have equals return layouts (see
-
hashCode
public int hashCode()Returns the hash code value for this function descriptor.
-
FunctionDescriptor
when preview features are enabled.