#ifndef GUTENPRINT_CURVE_CACHE_H
#define GUTENPRINT_CURVE_CACHE_H
#ifdef __cplusplus
extern "C" {
#endif
#include <gutenprint/curve.h>
typedef struct
{
stp_curve_t *curve;
const double *d_cache;
const unsigned short *s_cache;
size_t count;
} stp_cached_curve_t;
extern void stp_curve_free_curve_cache(stp_cached_curve_t *cache);
extern void stp_curve_cache_curve_data(stp_cached_curve_t *cache);
extern stp_curve_t *stp_curve_cache_get_curve(stp_cached_curve_t *cache);
extern void stp_curve_cache_curve_invalidate(stp_cached_curve_t *cache);
extern void stp_curve_cache_set_curve(stp_cached_curve_t *cache,
stp_curve_t *curve);
extern void stp_curve_cache_set_curve_copy(stp_cached_curve_t *cache,
const stp_curve_t *curve);
extern size_t stp_curve_cache_get_count(stp_cached_curve_t *cache);
extern const unsigned short *stp_curve_cache_get_ushort_data(stp_cached_curve_t *cache);
extern const double *stp_curve_cache_get_double_data(stp_cached_curve_t *cache);
extern void stp_curve_cache_copy(stp_cached_curve_t *dest,
const stp_cached_curve_t *src);
#define CURVE_CACHE_FAST_USHORT(cache) ((cache)->s_cache)
#define CURVE_CACHE_FAST_DOUBLE(cache) ((cache)->d_cache)
#define CURVE_CACHE_FAST_COUNT(cache) ((cache)->count)
#ifdef __cplusplus
}
#endif
#endif