# Class VulkanApplicationInfo

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

All Implemented Interfaces:
  `VulkanApplicationInfoType`

public final class VulkanApplicationInfo extends Object implements VulkanApplicationInfoType
A description of the application that is using Vulkan.

See Also:
  - "VkApplicationInfo"

- ## Nested Class Summary

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

- ## Method Summary

  Modifier and Type
  Method
  Description
  `String`
  `applicationName()`
  `int`
  `applicationVersion()`
  `static VulkanApplicationInfo.Builder`
  `builder()`
  Creates a builder for `VulkanApplicationInfo`.
  `static VulkanApplicationInfo`
  `copyOf(VulkanApplicationInfoType instance)`
  Creates an immutable copy of a `VulkanApplicationInfoType` value.
  `String`
  `engineName()`
  `int`
  `engineVersion()`
  `boolean`
  `equals(Object another)`
  This instance is equal to all instances of `VulkanApplicationInfo` that have equal attribute values.
  `int`
  `hashCode()`
  Computes a hash code from attributes: `applicationName`, `applicationVersion`, `engineName`, `engineVersion`, `vulkanAPIVersion`.
  `static VulkanApplicationInfo`
  `of(String applicationName, int applicationVersion, String engineName, int engineVersion, int vulkanAPIVersion)`
  Construct a new immutable `VulkanApplicationInfo` instance.
  `String`
  `toString()`
  Prints the immutable value `VulkanApplicationInfo` with attribute values.
  `int`
  `vulkanAPIVersion()`
  `final VulkanApplicationInfo`
  `withApplicationName(String value)`
  Copy the current immutable object by setting a value for the `applicationName` attribute.
  `final VulkanApplicationInfo`
  `withApplicationVersion(int value)`
  Copy the current immutable object by setting a value for the `applicationVersion` attribute.
  `final VulkanApplicationInfo`
  `withEngineName(String value)`
  Copy the current immutable object by setting a value for the `engineName` attribute.
  `final VulkanApplicationInfo`
  `withEngineVersion(int value)`
  Copy the current immutable object by setting a value for the `engineVersion` attribute.
  `final VulkanApplicationInfo`
  `withVulkanAPIVersion(int value)`
  Copy the current immutable object by setting a value for the `vulkanAPIVersion` attribute.

  ### Methods inherited from class java.lang.Object

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

- ## Method Details

  - ### applicationName

    public String applicationName()
    Specified by:
      `applicationName` in interface `VulkanApplicationInfoType`
    Returns:
      The application name

  - ### applicationVersion

    public int applicationVersion()
    Specified by:
      `applicationVersion` in interface `VulkanApplicationInfoType`
    Returns:
      The application version

  - ### engineName

    public String engineName()
    Specified by:
      `engineName` in interface `VulkanApplicationInfoType`
    Returns:
      The engine name

  - ### engineVersion

    public int engineVersion()
    Specified by:
      `engineVersion` in interface `VulkanApplicationInfoType`
    Returns:
      The engine version

  - ### vulkanAPIVersion

    public int vulkanAPIVersion()
    Specified by:
      `vulkanAPIVersion` in interface `VulkanApplicationInfoType`
    Returns:
      The minimum required version of the Vulkan API
    See Also:
      - `VulkanVersions`

  - ### withApplicationName

    public final VulkanApplicationInfo withApplicationName(String value)
    Copy the current immutable object by setting a value for the `applicationName` attribute. An equals check used to prevent copying of the same value by returning `this`.
    Parameters:
      `value` - A new value for applicationName
    Returns:
      A modified copy of the `this` object

  - ### withApplicationVersion

    public final VulkanApplicationInfo withApplicationVersion(int value)
    Copy the current immutable object by setting a value for the `applicationVersion` attribute. A value equality check is used to prevent copying of the same value by returning `this`.
    Parameters:
      `value` - A new value for applicationVersion
    Returns:
      A modified copy of the `this` object

  - ### withEngineName

    public final VulkanApplicationInfo withEngineName(String value)
    Copy the current immutable object by setting a value for the `engineName` attribute. An equals check used to prevent copying of the same value by returning `this`.
    Parameters:
      `value` - A new value for engineName
    Returns:
      A modified copy of the `this` object

  - ### withEngineVersion

    public final VulkanApplicationInfo withEngineVersion(int value)
    Copy the current immutable object by setting a value for the `engineVersion` attribute. A value equality check is used to prevent copying of the same value by returning `this`.
    Parameters:
      `value` - A new value for engineVersion
    Returns:
      A modified copy of the `this` object

  - ### withVulkanAPIVersion

    public final VulkanApplicationInfo withVulkanAPIVersion(int value)
    Copy the current immutable object by setting a value for the `vulkanAPIVersion` attribute. A value equality check is used to prevent copying of the same value by returning `this`.
    Parameters:
      `value` - A new value for vulkanAPIVersion
    Returns:
      A modified copy of the `this` object

  - ### equals

    public boolean equals(Object another)
    This instance is equal to all instances of `VulkanApplicationInfo` 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: `applicationName`, `applicationVersion`, `engineName`, `engineVersion`, `vulkanAPIVersion`.
    Overrides:
      `hashCode` in class `Object`
    Returns:
      hashCode value

  - ### toString

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

  - ### of

    public static VulkanApplicationInfo of(String applicationName, int applicationVersion, String engineName, int engineVersion, int vulkanAPIVersion)
    Construct a new immutable `VulkanApplicationInfo` instance.
    Parameters:
      `applicationName` - The value for the `applicationName` attribute
      `applicationVersion` - The value for the `applicationVersion` attribute
      `engineName` - The value for the `engineName` attribute
      `engineVersion` - The value for the `engineVersion` attribute
      `vulkanAPIVersion` - The value for the `vulkanAPIVersion` attribute
    Returns:
      An immutable VulkanApplicationInfo instance

  - ### copyOf

    public static VulkanApplicationInfo copyOf(VulkanApplicationInfoType instance)
    Creates an immutable copy of a `VulkanApplicationInfoType` 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 VulkanApplicationInfo instance

  - ### builder

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

         VulkanApplicationInfo.builder()
            .setApplicationName(String) // required applicationName
            .setApplicationVersion(int) // required applicationVersion
            .setEngineName(String) // required engineName
            .setEngineVersion(int) // required engineVersion
            .setVulkanAPIVersion(int) // required vulkanAPIVersion
            .build();

    Returns:
      A new VulkanApplicationInfo builder