Package ghidra.util.datastruct

# Class ObjectCache<T>

java.lang.Object
ghidra.util.datastruct.ObjectCache<T>

Type Parameters:
  `T` - Object type held by cache

public class ObjectCache<T> extends Object
`ObjectClass` provides a fixed-size long-key-based object cache. Both a hard and weak cache are maintained, where the weak cache is only limited by available memory. This cache mechanism is useful in ensuring that only a single object instance for a given key exists.

The weak cache is keyed, while the hard cache simply maintains the presence of an object in the weak cache.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ObjectCache(int hardCacheSize)`
  Construct a keyed-object cache of size hardCacheSize.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `T`
  `computeIfAbsent(long key, Function<Long,T> mappingFunction)`
  Get the current cached object which corresponds to specified `key` if contained in cache, otherwise the `mappingFunction` will be invoked to instantiate a new object where that object will be added to the cache and returned.
  `boolean`
  `contains(long key)`
  Determine if the keyed-object exists in the cache.
  `T`
  `get(long key)`
  Get the object from cache which corresponds to the specified key.
  `void`
  `put(long key, T obj)`
  Add an object to the cache
  `void`
  `remove(long key)`
  Remove the specified keyed object from both hard and weak caches.
  `void`
  `setHardCacheSize(int size)`
  Adjust the hard cache size
  `int`
  `size()`
  Return the hard cache size

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

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### ObjectCache

    public ObjectCache(int hardCacheSize)
    Construct a keyed-object cache of size hardCacheSize.
    Parameters:
      `hardCacheSize` - hard cache size.

- ## Method Details

  - ### contains

    public boolean contains(long key)
    Determine if the keyed-object exists in the cache.
    Parameters:
      `key` - object key
    Returns:
      true if object is cached

  - ### get

    public T get(long key)
    Get the object from cache which corresponds to the specified key.
    Parameters:
      `key` - object key
    Returns:
      cached object

  - ### computeIfAbsent

    public T computeIfAbsent(long key, Function<Long,T> mappingFunction)
    Get the current cached object which corresponds to specified `key` if contained in cache, otherwise the `mappingFunction` will be invoked to instantiate a new object where that object will be added to the cache and returned. If the `mappingFunction` returns null nothing will be added to the cache and null will be returned by this method.
    Parameters:
      `key` - object key
      `mappingFunction` - function used to obtain a new object if not currently present in cache.
    Returns:
      cached object

  - ### size

    public int size()
    Return the hard cache size
    Returns:
      the hard cache size

  - ### setHardCacheSize

    public void setHardCacheSize(int size)
    Adjust the hard cache size
    Parameters:
      `size` - new hard cache size

  - ### put

    public void put(long key, T obj)
    Add an object to the cache
    Parameters:
      `key` - object key
      `obj` - the object

  - ### remove

    public void remove(long key)
    Remove the specified keyed object from both hard and weak caches. An object should be removed from the cache when it becomes invalid.
    Parameters:
      `key` - object key