#ifndef CUJSON_CAPI_H
#define CUJSON_CAPI_H
#include <stddef.h>
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
typedef enum {
CUJSON_OK = 0,
CUJSON_ERR_UTF8 = 1,
CUJSON_ERR_UNBALANCED = 2,
CUJSON_ERR_INPUT_TOO_LARGE = 3,
CUJSON_ERR_CUDA = 4,
CUJSON_ERR_INTERNAL = 5,
CUJSON_ERR_EMPTY_INPUT = 6
} cujson_status;
typedef struct {
int32_t* structural;
int32_t* pair_pos;
size_t len;
int32_t cuda_error;
void* _alloc;
} cujson_tape;
cujson_status cujson_parse_standard(const uint8_t* data, size_t size, cujson_tape* out);
cujson_status cujson_parse_lines(const uint8_t* data, size_t size, size_t chunk_bytes, cujson_tape* out);
void cujson_tape_free(cujson_tape* tape);
const char* cujson_status_str(cujson_status s);
int cujson_cuda_runtime_version(void);
int cujson_device_count(void);
cujson_status cujson_device_name(int device, char* buf, size_t buf_len);
const char* cujson_compiled_archs(void);
const char* cujson_cuda_error_string(int err);
int cujson_cuda_driver_version(void);
cujson_status cujson_mem_get_info(size_t* free_bytes, size_t* total_bytes);
#ifdef __cplusplus
}
#endif
#endif