## IpatchSampleStoreCache IpatchSampleStoreCache — Sample store object for cached samples in RAM |

## Stability Level

Stable, unless otherwise indicated

## Synopsis

                        IpatchSampleStoreCache;
    #define             ipatch_sample_store_cache_get_location(store)
    #define             ipatch_sample_store_cache_get_channel_map(store)
    #define             ipatch_sample_store_cache_get_open_count(store)
    #define             IPATCH_SAMPLE_STORE_CACHE_UNUSED_FLAG_SHIFT
    IpatchSample *      ipatch_sample_store_cache_new       (gpointer location);
    void                ipatch_sample_store_cache_open      (IpatchSampleStoreCache *store);
    void                ipatch_sample_store_cache_close     (IpatchSampleStoreCache *store);

## Object Hierarchy

      GObject
       +----IpatchItem
             +----IpatchSampleStore
                   +----IpatchSampleStoreCache

## Implemented Interfaces

IpatchSampleStoreCache implements IpatchSample.

## Properties

      "location"                 gpointer              : Read / Write

## Description

This sample store type is tightly integrated with IpatchSampleData to provide managed cached samples in RAM.

## Details

### IpatchSampleStoreCache

    typedef struct _IpatchSampleStoreCache IpatchSampleStoreCache;

### ipatch_sample_store_cache_get_location()

    #define             ipatch_sample_store_cache_get_location(store)

Macro to quickly fetch a cache sample store's data location pointer.

`store` : | Sample store to get sample data location from
Returns : | Sample data pointer.

### ipatch_sample_store_cache_get_channel_map()

    #define             ipatch_sample_store_cache_get_channel_map(store)

Macro to quickly fetch a cache sample store's channel map value. Cached samples store a channel map in reference to the native sample of their parent IpatchSampleData.

`store` : | Sample store to get channel map from
Returns : | Channel map value.

### ipatch_sample_store_cache_get_open_count()

    #define             ipatch_sample_store_cache_get_open_count(store)

### IPATCH_SAMPLE_STORE_CACHE_UNUSED_FLAG_SHIFT

    #define             IPATCH_SAMPLE_STORE_CACHE_UNUSED_FLAG_SHIFT

### ipatch_sample_store_cache_new ()

    IpatchSample *      ipatch_sample_store_cache_new       (gpointer location);

Creates a new cached RAM sample store. If `location` is provided, its allocation is taken over by the store.

NOTE: This store type should not be used outside of the IpatchSampleData implementation, as it is tightly coupled with it.

`location` : | Location of existing sample data or `NULL` if the sample buffer should be allocated (in which case the sample must be written to first).
Returns : | New cached RAM sample store, cast as a IpatchSample for convenience.

### ipatch_sample_store_cache_open ()

    void                ipatch_sample_store_cache_open      (IpatchSampleStoreCache *store);

A dummy open function which can be used if the location pointer will be accessed directly, rather than opening a IpatchSampleHandle. Keeping a cached sample store open will ensure it isn't destroyed. Call `ipatch_sample_store_cache_close()` when done with it.

`store` : | Sample cache store

### ipatch_sample_store_cache_close ()

    void                ipatch_sample_store_cache_close     (IpatchSampleStoreCache *store);

A dummy close function which is called after a sample store cache is no longer needed after opening it with `ipatch_sample_store_cache_open()`.

`store` : | Sample cache store

## Property Details

### The `"location"` property

      "location"                 gpointer              : Read / Write

Sample data pointer.

## See Also

#IpatchSampleData