# Class VulkanDependencyInfo

java.lang.Object
com.io7m.jcoronado.api.VulkanDependencyInfo

All Implemented Interfaces:
  `VulkanDependencyInfoType`

public final class VulkanDependencyInfo extends Object implements VulkanDependencyInfoType

See Also:
  - "VkDependencyInfo"

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `static final class`
  `VulkanDependencyInfo.Builder`
  Builds instances of type `VulkanDependencyInfo`.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `List<VulkanBufferMemoryBarrier>`
  `bufferMemoryBarriers()`
  `static VulkanDependencyInfo.Builder`
  `builder()`
  Creates a builder for `VulkanDependencyInfo`.
  `static VulkanDependencyInfo`
  `copyOf(VulkanDependencyInfoType instance)`
  Creates an immutable copy of a `VulkanDependencyInfoType` value.
  `boolean`
  `equals(Object another)`
  This instance is equal to all instances of `VulkanDependencyInfo` that have equal attribute values.
  `Set<VulkanDependencyFlag>`
  `flags()`
  `int`
  `hashCode()`
  Computes a hash code from attributes: `flags`, `memoryBarriers`, `bufferMemoryBarriers`, `imageMemoryBarriers`.
  `List<VulkanImageMemoryBarrier>`
  `imageMemoryBarriers()`
  `List<VulkanMemoryBarrier>`
  `memoryBarriers()`
  `String`
  `toString()`
  Prints the immutable value `VulkanDependencyInfo` with attribute values.
  `final VulkanDependencyInfo`
  `withBufferMemoryBarriers(VulkanBufferMemoryBarrier... elements)`
  Copy the current immutable object with elements that replace the content of `bufferMemoryBarriers`.
  `final VulkanDependencyInfo`
  `withBufferMemoryBarriers(Iterable<? extends VulkanBufferMemoryBarrier> elements)`
  Copy the current immutable object with elements that replace the content of `bufferMemoryBarriers`.
  `final VulkanDependencyInfo`
  `withFlags(VulkanDependencyFlag... elements)`
  Copy the current immutable object with elements that replace the content of `flags`.
  `final VulkanDependencyInfo`
  `withFlags(Iterable<VulkanDependencyFlag> elements)`
  Copy the current immutable object with elements that replace the content of `flags`.
  `final VulkanDependencyInfo`
  `withImageMemoryBarriers(VulkanImageMemoryBarrier... elements)`
  Copy the current immutable object with elements that replace the content of `imageMemoryBarriers`.
  `final VulkanDependencyInfo`
  `withImageMemoryBarriers(Iterable<? extends VulkanImageMemoryBarrier> elements)`
  Copy the current immutable object with elements that replace the content of `imageMemoryBarriers`.
  `final VulkanDependencyInfo`
  `withMemoryBarriers(VulkanMemoryBarrier... elements)`
  Copy the current immutable object with elements that replace the content of `memoryBarriers`.
  `final VulkanDependencyInfo`
  `withMemoryBarriers(Iterable<? extends VulkanMemoryBarrier> elements)`
  Copy the current immutable object with elements that replace the content of `memoryBarriers`.

  ### Methods inherited from class Object

  `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

- ## Method Details

  - ### flags

    public Set<VulkanDependencyFlag> flags()
    Specified by:
      `flags` in interface `VulkanDependencyInfoType`
    Returns:
      A set of flags specifying how execution and memory dependencies are formed.

  - ### memoryBarriers

    public List<VulkanMemoryBarrier> memoryBarriers()
    Specified by:
      `memoryBarriers` in interface `VulkanDependencyInfoType`
    Returns:
      The memory barriers for any memory accesses

  - ### bufferMemoryBarriers

    public List<VulkanBufferMemoryBarrier> bufferMemoryBarriers()
    Specified by:
      `bufferMemoryBarriers` in interface `VulkanDependencyInfoType`
    Returns:
      The memory dependencies between buffer ranges

  - ### imageMemoryBarriers

    public List<VulkanImageMemoryBarrier> imageMemoryBarriers()
    Specified by:
      `imageMemoryBarriers` in interface `VulkanDependencyInfoType`
    Returns:
      The memory dependencies between image subresources

  - ### withFlags

    public final VulkanDependencyInfo withFlags(VulkanDependencyFlag... elements)
    Copy the current immutable object with elements that replace the content of `flags`.
    Parameters:
      `elements` - The elements to set
    Returns:
      A modified copy of `this` object

  - ### withFlags

    public final VulkanDependencyInfo withFlags(Iterable<VulkanDependencyFlag> elements)
    Copy the current immutable object with elements that replace the content of `flags`. A shallow reference equality check is used to prevent copying of the same value by returning `this`.
    Parameters:
      `elements` - An iterable of flags elements to set
    Returns:
      A modified copy or `this` if not changed

  - ### withMemoryBarriers

    public final VulkanDependencyInfo withMemoryBarriers(VulkanMemoryBarrier... elements)
    Copy the current immutable object with elements that replace the content of `memoryBarriers`.
    Parameters:
      `elements` - The elements to set
    Returns:
      A modified copy of `this` object

  - ### withMemoryBarriers

    public final VulkanDependencyInfo withMemoryBarriers(Iterable<? extends VulkanMemoryBarrier> elements)
    Copy the current immutable object with elements that replace the content of `memoryBarriers`. A shallow reference equality check is used to prevent copying of the same value by returning `this`.
    Parameters:
      `elements` - An iterable of memoryBarriers elements to set
    Returns:
      A modified copy or `this` if not changed

  - ### withBufferMemoryBarriers

    public final VulkanDependencyInfo withBufferMemoryBarriers(VulkanBufferMemoryBarrier... elements)
    Copy the current immutable object with elements that replace the content of `bufferMemoryBarriers`.
    Parameters:
      `elements` - The elements to set
    Returns:
      A modified copy of `this` object

  - ### withBufferMemoryBarriers

    public final VulkanDependencyInfo withBufferMemoryBarriers(Iterable<? extends VulkanBufferMemoryBarrier> elements)
    Copy the current immutable object with elements that replace the content of `bufferMemoryBarriers`. A shallow reference equality check is used to prevent copying of the same value by returning `this`.
    Parameters:
      `elements` - An iterable of bufferMemoryBarriers elements to set
    Returns:
      A modified copy or `this` if not changed

  - ### withImageMemoryBarriers

    public final VulkanDependencyInfo withImageMemoryBarriers(VulkanImageMemoryBarrier... elements)
    Copy the current immutable object with elements that replace the content of `imageMemoryBarriers`.
    Parameters:
      `elements` - The elements to set
    Returns:
      A modified copy of `this` object

  - ### withImageMemoryBarriers

    public final VulkanDependencyInfo withImageMemoryBarriers(Iterable<? extends VulkanImageMemoryBarrier> elements)
    Copy the current immutable object with elements that replace the content of `imageMemoryBarriers`. A shallow reference equality check is used to prevent copying of the same value by returning `this`.
    Parameters:
      `elements` - An iterable of imageMemoryBarriers elements to set
    Returns:
      A modified copy or `this` if not changed

  - ### equals

    public boolean equals(Object another)
    This instance is equal to all instances of `VulkanDependencyInfo` that have equal attribute values.
    Overrides:
      `equals` in class `Object`
    Returns:
      `true` if `this` is equal to `another` instance

  - ### hashCode

    public int hashCode()
    Computes a hash code from attributes: `flags`, `memoryBarriers`, `bufferMemoryBarriers`, `imageMemoryBarriers`.
    Overrides:
      `hashCode` in class `Object`
    Returns:
      hashCode value

  - ### toString

    public String toString()
    Prints the immutable value `VulkanDependencyInfo` with attribute values.
    Overrides:
      `toString` in class `Object`
    Returns:
      A string representation of the value

  - ### copyOf

    public static VulkanDependencyInfo copyOf(VulkanDependencyInfoType instance)
    Creates an immutable copy of a `VulkanDependencyInfoType` value. Uses accessors to get values to initialize the new immutable instance. If an instance is already immutable, it is returned as is.
    Parameters:
      `instance` - The instance to copy
    Returns:
      A copied immutable VulkanDependencyInfo instance

  - ### builder

    public static VulkanDependencyInfo.Builder builder()
    Creates a builder for `VulkanDependencyInfo`.

        VulkanDependencyInfo.builder()
           .addFlags|addAllFlags(com.io7m.jcoronado.api.VulkanDependencyFlag) // flags elements
           .addMemoryBarriers|addAllMemoryBarriers(VulkanMemoryBarrier) // memoryBarriers elements
           .addBufferMemoryBarriers|addAllBufferMemoryBarriers(VulkanBufferMemoryBarrier) // bufferMemoryBarriers elements
           .addImageMemoryBarriers|addAllImageMemoryBarriers(VulkanImageMemoryBarrier) // imageMemoryBarriers elements
           .build();

    Returns:
      A new VulkanDependencyInfo builder