1#ifndef DISCRETER_DISCRETER_C_H
2#define DISCRETER_DISCRETER_C_H
7#define DISCRETER_API __declspec(dllexport)
9#define DISCRETER_API __declspec(dllimport)
25 struct discreter_object;
26 typedef struct discreter_object discreter_t;
29typedef struct array_object array_t;
31struct index_sampler_object;
32typedef struct index_sampler_object index_sampler_t;
37DISCRETER_API
const char *discreter_version(
void);
40DISCRETER_API
int discreter_version_int(
void);
43DISCRETER_API discreter_t * dr_new_desc(
const char * description,
const char * name,
size_t samples, uint32_t seed);
45DISCRETER_API discreter_t * dr_new_size(
size_t object_bytes,
const char * name,
size_t samples, uint32_t seed);
47DISCRETER_API discreter_t * dr_new(
const char * description,
size_t object_bytes,
const char * name,
size_t samples, uint32_t seed);
50DISCRETER_API
void dr_free(discreter_t *obj);
53DISCRETER_API
void dr_fit(
const discreter_t *obj,
const void * src,
double weight);
56DISCRETER_API
int dr_filling(
const discreter_t *obj);
59DISCRETER_API
size_t dr_sample(
const discreter_t *obj,
double fraction, uint32_t seed);
62DISCRETER_API
void dr_oversample(
const discreter_t *obj);
66DISCRETER_API
size_t dr_value(
const discreter_t *obj,
void * buffer,
size_t buffer_size);
69DISCRETER_API
size_t dr_value_index(
const discreter_t *obj,
size_t index,
void * buffer,
size_t buffer_size);
127DISCRETER_API array_t * new_array(
size_t bytes_per_object);
128DISCRETER_API
void delete_array(array_t * array);
129DISCRETER_API
size_t array_size(
const array_t * array);
130DISCRETER_API
void array_add(
const array_t * array,
const void * data);
131DISCRETER_API
void array_get(
const array_t * array,
size_t index,
void * dst);
132DISCRETER_API
void array_clear(
const array_t * array);
133DISCRETER_API
const uint8_t * array_data(
const array_t * array);
135DISCRETER_API index_sampler_t * new_index_sampler(
size_t samples, uint32_t seed);
136DISCRETER_API
void delete_index_sampler(index_sampler_t * sampler);
137DISCRETER_API
void index_sampler_fit(
const index_sampler_t * sampler,
size_t index,
double weight);
138DISCRETER_API
int index_sampler_filling(
const index_sampler_t * sampler);
139DISCRETER_API
void index_sampler_values(
const index_sampler_t * sampler,
size_t * values);
140DISCRETER_API
size_t index_sampler_value(
const index_sampler_t * sampler,
size_t index);