#pragma once
#ifdef __cplusplus
#define SDFTD3_API_ENTRY extern "C"
#else
#define SDFTD3_API_ENTRY extern
#ifndef SDFTD3_CFFI
#include <stdbool.h>
#endif
#endif
#define SDFTD3_API_CALL
#define SDFTD3_API_SUFFIX__V_0_2
#define SDFTD3_API_SUFFIX__V_0_3
#define SDFTD3_API_SUFFIX__V_0_4
#define SDFTD3_API_SUFFIX__V_0_5
#define SDFTD3_API_SUFFIX__V_1_3
typedef struct _dftd3_error* dftd3_error;
typedef struct _dftd3_structure* dftd3_structure;
typedef struct _dftd3_model* dftd3_model;
typedef struct _dftd3_gcp* dftd3_gcp;
typedef struct _dftd3_param* dftd3_param;
#define dftd3_delete(ptr) _Generic((ptr), \
dftd3_error: dftd3_delete_error, \
dftd3_structure: dftd3_delete_structure, \
dftd3_model: dftd3_delete_model, \
dftd3_param: dftd3_delete_param, \
dftd3_gcp: dftd3_delete_gcp \
)(&ptr)
SDFTD3_API_ENTRY int SDFTD3_API_CALL
dftd3_get_version() SDFTD3_API_SUFFIX__V_0_2;
SDFTD3_API_ENTRY dftd3_error SDFTD3_API_CALL
dftd3_new_error() SDFTD3_API_SUFFIX__V_0_2;
SDFTD3_API_ENTRY int SDFTD3_API_CALL
dftd3_check_error(dftd3_error ) SDFTD3_API_SUFFIX__V_0_2;
SDFTD3_API_ENTRY void SDFTD3_API_CALL
dftd3_get_error(dftd3_error ,
char* ,
const int* ) SDFTD3_API_SUFFIX__V_0_2;
SDFTD3_API_ENTRY void SDFTD3_API_CALL
dftd3_delete_error(dftd3_error* ) SDFTD3_API_SUFFIX__V_0_2;
SDFTD3_API_ENTRY dftd3_structure SDFTD3_API_CALL
dftd3_new_structure(dftd3_error ,
const int ,
const int* ,
const double* ,
const double* ,
const bool* ) SDFTD3_API_SUFFIX__V_0_2;
SDFTD3_API_ENTRY void SDFTD3_API_CALL
dftd3_delete_structure(dftd3_structure* ) SDFTD3_API_SUFFIX__V_0_2;
SDFTD3_API_ENTRY void SDFTD3_API_CALL
dftd3_update_structure(dftd3_error ,
dftd3_structure ,
const double* ,
const double* ) SDFTD3_API_SUFFIX__V_0_2;
SDFTD3_API_ENTRY dftd3_model SDFTD3_API_CALL
dftd3_new_d3_model(dftd3_error ,
dftd3_structure ) SDFTD3_API_SUFFIX__V_0_2;
SDFTD3_API_ENTRY void SDFTD3_API_CALL
dftd3_set_model_realspace_cutoff(dftd3_error ,
dftd3_model ,
double ,
double ,
double ) SDFTD3_API_SUFFIX__V_0_5;
SDFTD3_API_ENTRY void SDFTD3_API_CALL
dftd3_delete_model(dftd3_model* ) SDFTD3_API_SUFFIX__V_0_2;
SDFTD3_API_ENTRY dftd3_param SDFTD3_API_CALL
dftd3_new_zero_damping(dftd3_error ,
double ,
double ,
double ,
double ,
double ,
double ) SDFTD3_API_SUFFIX__V_0_4;
SDFTD3_API_ENTRY dftd3_param SDFTD3_API_CALL
dftd3_load_zero_damping(dftd3_error ,
char* ,
bool ) SDFTD3_API_SUFFIX__V_0_4;
SDFTD3_API_ENTRY dftd3_param SDFTD3_API_CALL
dftd3_new_rational_damping(dftd3_error ,
double ,
double ,
double ,
double ,
double ,
double ) SDFTD3_API_SUFFIX__V_0_4;
SDFTD3_API_ENTRY dftd3_param SDFTD3_API_CALL
dftd3_load_rational_damping(dftd3_error ,
char* ,
bool ) SDFTD3_API_SUFFIX__V_0_4;
SDFTD3_API_ENTRY dftd3_param SDFTD3_API_CALL
dftd3_new_mzero_damping(dftd3_error ,
double ,
double ,
double ,
double ,
double ,
double ,
double ) SDFTD3_API_SUFFIX__V_0_4;
SDFTD3_API_ENTRY dftd3_param SDFTD3_API_CALL
dftd3_load_mzero_damping(dftd3_error ,
char* ,
bool ) SDFTD3_API_SUFFIX__V_0_4;
SDFTD3_API_ENTRY dftd3_param SDFTD3_API_CALL
dftd3_new_mrational_damping(dftd3_error ,
double ,
double ,
double ,
double ,
double ,
double ) SDFTD3_API_SUFFIX__V_0_4;
SDFTD3_API_ENTRY dftd3_param SDFTD3_API_CALL
dftd3_load_mrational_damping(dftd3_error ,
char* ,
bool ) SDFTD3_API_SUFFIX__V_0_4;
SDFTD3_API_ENTRY dftd3_param SDFTD3_API_CALL
dftd3_new_optimizedpower_damping(dftd3_error ,
double ,
double ,
double ,
double ,
double ,
double ,
double ) SDFTD3_API_SUFFIX__V_0_5;
SDFTD3_API_ENTRY dftd3_param SDFTD3_API_CALL
dftd3_load_optimizedpower_damping(dftd3_error ,
char* ,
bool ) SDFTD3_API_SUFFIX__V_0_5;
SDFTD3_API_ENTRY void SDFTD3_API_CALL
dftd3_delete_param(dftd3_param* ) SDFTD3_API_SUFFIX__V_0_2;
SDFTD3_API_ENTRY dftd3_gcp SDFTD3_API_CALL
dftd3_load_gcp_param(dftd3_error ,
dftd3_structure ,
char* ,
char* ) SDFTD3_API_SUFFIX__V_1_3;
SDFTD3_API_ENTRY void SDFTD3_API_CALL
dftd3_set_gcp_realspace_cutoff(dftd3_error ,
dftd3_gcp ,
double ,
double ) SDFTD3_API_SUFFIX__V_1_3;
SDFTD3_API_ENTRY void SDFTD3_API_CALL
dftd3_delete_gcp(dftd3_gcp* ) SDFTD3_API_SUFFIX__V_1_3;
SDFTD3_API_ENTRY void SDFTD3_API_CALL
dftd3_get_dispersion(dftd3_error ,
dftd3_structure ,
dftd3_model ,
dftd3_param ,
double* ,
double* ,
double* ) SDFTD3_API_SUFFIX__V_0_2;
SDFTD3_API_ENTRY void SDFTD3_API_CALL
dftd3_get_pairwise_dispersion(dftd3_error ,
dftd3_structure ,
dftd3_model ,
dftd3_param ,
double* ,
double* ) SDFTD3_API_SUFFIX__V_0_5;
SDFTD3_API_ENTRY void SDFTD3_API_CALL
dftd3_get_counterpoise(dftd3_error ,
dftd3_structure ,
dftd3_gcp ,
double* ,
double* ,
double* ) SDFTD3_API_SUFFIX__V_1_3;