1#ifndef DISCRETER_DISCRETER_C_H
2#define DISCRETER_DISCRETER_C_H
8 #define RL_API __declspec(dllexport)
10 #define RL_API __declspec(dllimport)
28 struct discreter_object;
29 typedef struct discreter_object discreter_t;
32typedef struct array_object array_t;
34struct index_sampler_object;
35typedef struct index_sampler_object index_sampler_t;
40RL_API
const char *discreter_version(
void);
43RL_API
int discreter_version_int(
void);
46RL_API discreter_t * dr_new_desc(
const char * description,
const char * name,
size_t samples, uint32_t seed);
48RL_API discreter_t * dr_new_size(
size_t object_bytes,
const char * name,
size_t samples, uint32_t seed);
50RL_API discreter_t * dr_new(
const char * description,
size_t object_bytes,
const char * name,
size_t samples, uint32_t seed);
53RL_API
void dr_free(discreter_t *obj);
56RL_API
void dr_fit(
const discreter_t *obj,
const void * src,
double weight);
59RL_API
int dr_filling(
const discreter_t *obj);
62RL_API
size_t dr_sample(
const discreter_t *obj,
double fraction, uint32_t seed);
65RL_API
void dr_oversample(
const discreter_t *obj);
69RL_API
size_t dr_value(
const discreter_t *obj,
void * buffer,
size_t buffer_size);
72RL_API
size_t dr_value_index(
const discreter_t *obj,
size_t index,
void * buffer,
size_t buffer_size);
130RL_API array_t * new_array(
size_t bytes_per_object);
131RL_API
void delete_array(array_t * array);
132RL_API
size_t array_size(
const array_t * array);
133RL_API
void array_add(
const array_t * array,
const void * data);
134RL_API
void array_get(
const array_t * array,
size_t index,
void * dst);
135RL_API
void array_clear(
const array_t * array);
136RL_API
const uint8_t * array_data(
const array_t * array);
138RL_API index_sampler_t * new_index_sampler(
size_t samples, uint32_t seed);
139RL_API
void delete_index_sampler(index_sampler_t * sampler);
140RL_API
void index_sampler_fit(
const index_sampler_t * sampler,
size_t index,
double weight);
141RL_API
int index_sampler_filling(
const index_sampler_t * sampler);
142RL_API
void index_sampler_values(
const index_sampler_t * sampler,
size_t * values);
143RL_API
size_t index_sampler_value(
const index_sampler_t * sampler,
size_t index);