java.lang.Object
jdk.incubator.foreign.FunctionDescriptor
- All Implemented Interfaces:
Constable
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.
Unless otherwise specified, passing a null
argument, or an array argument containing one or more null
elements to a method in this class causes a NullPointerException
to be thrown.
-
Method Summary
Modifier and TypeMethodDescriptionappendArgumentLayouts
(MemoryLayout... addedLayouts) Create a new 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.asVariadic
(MemoryLayout... variadicLayouts) Obtain a specialized variadic function descriptor, by appending given variadic layouts to this function descriptor argument layouts.changeReturnLayout
(MemoryLayout newReturn) Create a new function descriptor with the given memory layout as the new return layout.Create a new 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, MemoryLayout... addedLayouts) Create a new function descriptor with the given argument layouts inserted at the given index, into the argument layout array of this function descriptor.static FunctionDescriptor
of
(MemoryLayout resLayout, MemoryLayout... argLayouts) Create a function descriptor with given return and argument layouts.static FunctionDescriptor
ofVoid
(MemoryLayout... argLayouts) Create a function descriptor with 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..- Returns:
- the argument layouts associated with this function descriptor
-
of
Create a function descriptor with given return and argument layouts.- Parameters:
resLayout
- the return layout.argLayouts
- the argument layouts.- Returns:
- the new function descriptor.
-
ofVoid
Create a function descriptor with given argument layouts and no return layout.- Parameters:
argLayouts
- the argument layouts.- Returns:
- the new function descriptor.
-
asVariadic
Obtain 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 new 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
Create a new 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
Create a new 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
Create a new function descriptor with the given memory layout as the new return layout.- Parameters:
newReturn
- the new return layout.- Returns:
- the new function descriptor.
-
dropReturnLayout
Create a new 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)
), or both have no return layout - the two function descriptors have argument layouts that are pair-wise equal (see
MemoryLayout.equals(Object)
)
- the two function descriptors have equals return layouts (see
-
hashCode
public int hashCode()Returns the hash code value for this function descriptor. -
describeConstable
Returns anOptional
containing the nominal descriptor for this function descriptor, if one can be constructed, or an emptyOptional
if one cannot be constructed.- Specified by:
describeConstable
in interfaceConstable
- Returns:
- An
Optional
containing the resulting nominal descriptor, or an emptyOptional
if one cannot be constructed.
-