Interface FunctionDescriptor
public sealed interface FunctionDescriptor
A function descriptor models the signature of a foreign function. A function
 descriptor is made up of zero or more argument layouts, and zero or one return layout.
 A function descriptor is used to create
 downcall method handlesRESTRICTED
 and
 upcall stubsRESTRICTED.
- Implementation Requirements:
- Implementing classes are immutable, thread-safe and value-based.
- Since:
- 22
- See Also:
- 
Method SummaryModifier and TypeMethodDescriptionappendArgumentLayouts(MemoryLayout... addedLayouts) Returns a function descriptor with the given argument layouts appended to the argument layouts of this function descriptor.Returns the argument layouts of this function descriptor (as an unmodifiable list).changeReturnLayout(MemoryLayout newReturn) Returns a function descriptor with the provided return layout.Returns a new function descriptor, with no return layout.insertArgumentLayouts(int index, MemoryLayout... 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 FunctionDescriptorof(MemoryLayout resLayout, MemoryLayout... argLayouts) Creates a function descriptor with the given return and argument layouts.static FunctionDescriptorofVoid(MemoryLayout... argLayouts) Creates a function descriptor with the given argument layouts and no return layout.Returns the return layout (if any) of this function descriptor.Returns the method type consisting of the carrier types of the layouts in this function descriptor.
- 
Method Details- 
returnLayoutOptional<MemoryLayout> returnLayout()Returns the return layout (if any) of this function descriptor.- Returns:
- the return layout (if any) of this function descriptor
 
- 
argumentLayoutsList<MemoryLayout> argumentLayouts()Returns the argument layouts of this function descriptor (as an unmodifiable list).- Returns:
- the argument layouts of this function descriptor (as an unmodifiable list)
 
- 
appendArgumentLayoutsReturns a function descriptor with the given argument layouts appended to the argument layouts of this function descriptor.- Parameters:
- addedLayouts- the argument layouts to append
- Returns:
- a new function descriptor, with the provided additional argument layouts
- Throws:
- IllegalArgumentException- if one of the layouts in- addedLayoutsis a padding layout
 
- 
insertArgumentLayoutsReturns 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 arguments
- addedLayouts- the argument layouts to insert at given index
- Returns:
- a new function descriptor, with the provided additional argument layouts
- Throws:
- IllegalArgumentException- if one of the layouts in- addedLayoutsis a padding layout
- IllegalArgumentException- if- index < 0 || index > argumentLayouts().size()
 
- 
changeReturnLayoutReturns a function descriptor with the provided return layout.- Parameters:
- newReturn- the new return layout
- Returns:
- a new function descriptor, with the provided return layout
- Throws:
- IllegalArgumentException- if- newReturnis a padding layout
 
- 
dropReturnLayoutFunctionDescriptor dropReturnLayout()Returns a new function descriptor, with no return layout.- Returns:
- a new function descriptor, with no return layout
 
- 
toMethodTypeMethodType toMethodType()Returns the method type consisting of the carrier types of the layouts in this function descriptor.The carrier type of a layout Lis determined as follows:- If Lis aValueLayoutthe carrier type is determined throughValueLayout.carrier().
- If Lis aGroupLayoutor aSequenceLayout, the carrier type isMemorySegment.
 - API Note:
- A function descriptor cannot, by construction, contain any padding layouts. As such, it is not necessary to specify how padding layout should be mapped to carrier types.
- Returns:
- the method type consisting of the carrier types of the layouts in this function descriptor
 
- If 
- 
ofCreates a function descriptor with the given return and argument layouts.- Parameters:
- resLayout- the return layout
- argLayouts- the argument layouts
- Returns:
- a new function descriptor with the provided return and argument layouts
- Throws:
- IllegalArgumentException- if- resLayoutis a padding layout
- IllegalArgumentException- if one of the layouts in- argLayoutsis a padding layout
 
- 
ofVoidCreates a function descriptor with the given argument layouts and no return layout. This is useful to model functions that return no values.- Parameters:
- argLayouts- the argument layouts
- Returns:
- a new function descriptor with the provided argument layouts
- Throws:
- IllegalArgumentException- if one of the layouts in- argLayoutsis a padding layout
 
 
-