モジュール jdk.incubator.foreign
パッケージ jdk.incubator.foreign

クラスFunctionDescriptor

java.lang.Object
jdk.incubator.foreign.FunctionDescriptor
すべての実装されたインタフェース:
Constable

public sealed class FunctionDescriptor extends Object implements Constable
関数記述子は、ゼロ個以上の引数レイアウトとゼロ個以上の戻りレイアウトで構成されます。 ファンクション記述子は、外部ファンクションのシグネチャのモデル化に使用されます。

特に指定がないかぎり、null引数、またはこのクラスのメソッドに1つ以上のnull要素を含む配列引数を渡すと、NullPointerExceptionがスローされます。

  • メソッドの詳細

    • returnLayout

      public Optional<MemoryLayout> returnLayout()
      この関数記述子に関連付けられた戻りレイアウト(もしあれば)を返します。
      戻り値:
      この関数記述子に関連付けられた戻りレイアウト(もしあれば)
    • argumentLayouts

      public List<MemoryLayout> argumentLayouts()
      この関数記述子に関連付けられた引数レイアウトを返します。
      戻り値:
      この関数記述子に関連付けられた引数レイアウト
    • of

      public static FunctionDescriptor of(MemoryLayout resLayout, MemoryLayout... argLayouts)
      指定された戻り値と引数のレイアウトで関数記述子を作成します。
      パラメータ:
      resLayout - 戻りレイアウト。
      argLayouts - 引数のレイアウト。
      戻り値:
      新しい関数記述子。
    • ofVoid

      public static FunctionDescriptor ofVoid(MemoryLayout... argLayouts)
      指定された引数のレイアウトで戻り値のない関数記述子を作成します。
      パラメータ:
      argLayouts - 引数のレイアウト。
      戻り値:
      新しい関数記述子。
    • asVariadic

      public FunctionDescriptor asVariadic(MemoryLayout... variadicLayouts)
      この関数記述子の引数レイアウトに特定の可変個引数レイアウトを追加して、特殊な可変個引数関数記述子を取得します。 結果の関数記述子は、「最初の可変個引数」の位置をレポートでき、どのような方法でも変更できません: たとえば、結果の記述子でchangeReturnLayout(MemoryLayout)をコールすると、UnsupportedOperationExceptionがスローされます。
      パラメータ:
      variadicLayouts - この記述子引数レイアウトに追加される可変個引数レイアウト。
      戻り値:
      新しい可変個引数関数記述子、またはvariadicLayouts.length == 0の場合はこの記述子。
    • firstVariadicArgumentIndex

      public int firstVariadicArgumentIndex()
      最初の可変個引数レイアウトの索引(定義場所)。
      戻り値:
      最初の可変個引数レイアウトの索引。variadicレイアウトでない場合は-1
    • appendArgumentLayouts

      public FunctionDescriptor appendArgumentLayouts(MemoryLayout... addedLayouts)
      指定された引数レイアウトをこの関数記述子の引数レイアウト配列に追加して、新しい関数記述子を作成します。
      パラメータ:
      addedLayouts - 追加する引数のレイアウト。
      戻り値:
      新しい関数記述子。
    • insertArgumentLayouts

      public FunctionDescriptor insertArgumentLayouts(int index, MemoryLayout... addedLayouts)
      指定された引数レイアウトを、この関数記述子の引数レイアウト配列に挿入して、新しい関数記述子を作成します。
      パラメータ:
      index - 引数を挿入する索引
      addedLayouts - 指定された索引に挿入する引数レイアウト。
      戻り値:
      新しい関数記述子。
      例外:
      IllegalArgumentException - index < 0 || index > argumentLayouts().size()の場合。
    • changeReturnLayout

      public FunctionDescriptor changeReturnLayout(MemoryLayout newReturn)
      指定されたメモリー・レイアウトを使用して、新しい関数記述子を新しい戻りレイアウトとして作成します。
      パラメータ:
      newReturn - 新しい戻りレイアウト。
      戻り値:
      新しい関数記述子。
    • dropReturnLayout

      public FunctionDescriptor dropReturnLayout()
      戻り値のレイアウトをドロップして、新しい関数記述子を作成します。 これは、値を返さない関数をモデル化する場合に便利です。
      戻り値:
      新しい関数記述子。
    • toString

      public String toString()
      この関数記述子の文字列表現を返します。
      オーバーライド:
      toString 、クラス:  Object
      戻り値:
      この関数記述子の文字列表現
    • equals

      public boolean equals(Object other)
      指定されたオブジェクトがこの関数記述子と等しいかどうかを比較します。 指定されたオブジェクトも関数記述子で、次のすべての条件が満たされている場合にのみ、trueを返します:
      • 2つの関数記述子に等しい戻りレイアウト(MemoryLayout.equals(Object)を参照してください)があるか、両方に戻りレイアウトがありません
      • この2つの関数記述子には、ペア単位の等しい(MemoryLayout.equals(Object)を参照してください)の引数レイアウトがあります
      オーバーライド:
      equals 、クラス:  Object
      パラメータ:
      other - この関数記述子と等しいかどうかを比較するオブジェクト。
      戻り値:
      指定されたオブジェクトがこの関数記述子と等しい場合はtrue
      関連項目:
    • hashCode

      public int hashCode()
      この関数記述子のハッシュ・コード値を返します。
      オーバーライド:
      hashCode 、クラス:  Object
      戻り値:
      この関数記述子のハッシュ・コード値
      関連項目:
    • describeConstable

      public Optional<DynamicConstantDesc<FunctionDescriptor>> describeConstable()
      この関数記述子の名目記述子を含むOptional(構成可能な場合)、または空のOptional(構成できない場合)を返します。
      定義:
      インタフェースConstable内のdescribeConstable
      戻り値:
      最終的な名目記述子を含むOptional、または作成できない場合は空のOptional