Package icyllis.arc3d.engine

# Interface IUniqueKey

All Known Implementing Classes:
  `GLGraphicsPipelineKey`, `PipelineKey`

public interface IUniqueKey
Marker interface for unique resource key, allows for exclusive use of a resource for a use case (AKA "domain"). There are three rules governing the use of unique keys:

- Only one resource can have a given unique key at a time. Hence, "unique".
- A resource can have at most one unique key at a time.
- Unlike scratch keys, multiple requests for a unique key will return the same resource even if the resource already has refs.

This key type allows a code path to create cached resources for which it is the exclusive user. The code path creates a domain which it sets on its keys. This guarantees that there are no cross-domain collisions.

Unique keys preempt scratch keys. While a resource has a unique key it is inaccessible via its scratch key. It can become scratch again if the unique key is removed.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `IUniqueKey`
  `copy()`
  `boolean`
  `equals(Object o)`
  `int`
  `hashCode()`

- ## Method Details

  - ### copy

    IUniqueKey copy()

  - ### hashCode

    int hashCode()
    Overrides:
      `hashCode` in class `Object`

  - ### equals

    boolean equals(Object o)
    Overrides:
      `equals` in class `Object`