extern "C" in headers

This commit is contained in:
Marek Nečada 2022-03-30 09:47:06 +03:00
parent 45dba25b3c
commit 0aab207ab0
22 changed files with 148 additions and 2 deletions

View File

@ -3,6 +3,9 @@
*/ */
#ifndef BEYN_H #ifndef BEYN_H
#define BEYN_H #define BEYN_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stddef.h> #include <stddef.h>
@ -47,12 +50,12 @@ typedef enum {
/// Complex plane "half-elliptic" integration contour with axes parallel to the real, imaginary axes. /// Complex plane "half-elliptic" integration contour with axes parallel to the real, imaginary axes.
/** Free using free(). */ /** Free using free(). */
beyn_contour_t *beyn_contour_halfellipse(_Complex double centre, double halfax_re, double halfax_im, size_t npoints, beyn_contour_t *beyn_contour_halfellipse(_Complex double centre, double halfax_re, double halfax_im, size_t npoints,
beyn_contour_halfellipse_orientation or); beyn_contour_halfellipse_orientation o);
/// Similar to halfellipse but with rounded corners. /// Similar to halfellipse but with rounded corners.
beyn_contour_t *beyn_contour_kidney(_Complex double centre, double halfax_re, double halfax_im, beyn_contour_t *beyn_contour_kidney(_Complex double centre, double halfax_re, double halfax_im,
double rounding, ///< Must be in interval [0, 0.5) double rounding, ///< Must be in interval [0, 0.5)
size_t n, beyn_contour_halfellipse_orientation or); size_t n, beyn_contour_halfellipse_orientation o);
/// Beyn algorithm result structure (pure C array version). /// Beyn algorithm result structure (pure C array version).
@ -82,4 +85,7 @@ beyn_result_t *beyn_solve(
double res_tol ///< (default: `0.0`) TODO DOC. double res_tol ///< (default: `0.0`) TODO DOC.
); );
#ifdef __cplusplus
}
#endif
#endif // BEYN_H #endif // BEYN_H

View File

@ -26,6 +26,10 @@
#ifndef EWALD_H #ifndef EWALD_H
#define EWALD_H #define EWALD_H
#ifdef __cplusplus
extern "C" {
#endif
#include <gsl/gsl_sf_result.h> #include <gsl/gsl_sf_result.h>
#include <stdlib.h> #include <stdlib.h>
#include <gsl/gsl_sf_legendre.h> #include <gsl/gsl_sf_legendre.h>
@ -335,4 +339,8 @@ int ewald3_sigma_long( // calls ewald3_21_sigma_long or ewald3_3_sigma_long, dep
extern int ewald_factor_ipow_l; extern int ewald_factor_ipow_l;
// If nonzero, adds an additional factor \f$ i^{nm} \f$ to the Ewald sum result (for debubbing). // If nonzero, adds an additional factor \f$ i^{nm} \f$ to the Ewald sum result (for debubbing).
extern int ewald_factor_ipow_m; extern int ewald_factor_ipow_m;
#ifdef __cplusplus
}
#endif
#endif //EWALD_H #endif //EWALD_H

View File

@ -3,6 +3,10 @@
*/ */
#ifndef GAUNT_H #ifndef GAUNT_H
#define GAUNT_H #define GAUNT_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdlib.h> #include <stdlib.h>
#define _GAUNT_H_MIN(x,y) (((x) > (y)) ? (y) : (x)) #define _GAUNT_H_MIN(x,y) (((x) > (y)) ? (y) : (x))
@ -30,4 +34,7 @@ double const * gaunt_table_retrieve_allq(int m, int n, int mu, int nu);
int gaunt_table_or_xu_fill(double *target, int m, int n, int mu, int nu); int gaunt_table_or_xu_fill(double *target, int m, int n, int mu, int nu);
#endif //GAUNT_PRECOMPILED #endif //GAUNT_PRECOMPILED
#ifdef __cplusplus
}
#endif
#endif //GAUNT_H #endif //GAUNT_H

View File

@ -23,6 +23,9 @@
*/ */
#ifndef QPMS_GROUPS_H #ifndef QPMS_GROUPS_H
#define QPMS_GROUPS_H #define QPMS_GROUPS_H
#ifdef __cplusplus
extern "C" {
#endif
#include "qpms_types.h" #include "qpms_types.h"
#include <assert.h> #include <assert.h>
@ -93,4 +96,7 @@ qpms_iri_t qpms_finite_group_find_irrep_by_name(qpms_finite_group_t *G, char *na
extern const qpms_finite_group_t QPMS_FINITE_GROUP_TRIVIAL; extern const qpms_finite_group_t QPMS_FINITE_GROUP_TRIVIAL;
extern const qpms_finite_group_t QPMS_FINITE_GROUP_TRIVIAL_G; extern const qpms_finite_group_t QPMS_FINITE_GROUP_TRIVIAL_G;
#ifdef __cplusplus
}
#endif
#endif // QPMS_GROUPS_H #endif // QPMS_GROUPS_H

View File

@ -26,6 +26,9 @@
*/ */
#ifndef QPMS_INDEXING_H #ifndef QPMS_INDEXING_H
#define QPMS_INDEXING_H #define QPMS_INDEXING_H
#ifdef __cplusplus
extern "C" {
#endif
#include "qpms_types.h" #include "qpms_types.h"
#include <math.h> #include <math.h>
@ -147,4 +150,7 @@ static inline qpms_m_t qpms_uvswfi2m(qpms_uvswfi_t u) {
} }
#ifdef __cplusplus
}
#endif
#endif //QPMS_INDEXING_H #endif //QPMS_INDEXING_H

View File

@ -3,6 +3,9 @@
*/ */
#ifndef KAHANSUM_H #ifndef KAHANSUM_H
#define KAHANSUM_H #define KAHANSUM_H
#ifdef __cplusplus
extern "C" {
#endif
static inline void kahaninit(double * const sum, double * const compensation) { static inline void kahaninit(double * const sum, double * const compensation) {
*sum = 0; *sum = 0;
@ -29,4 +32,7 @@ static inline void ckahanadd(_Complex double *sum, _Complex double *compensation
*sum = nsum; *sum = nsum;
} }
#ifdef __cplusplus
}
#endif
#endif //KAHANSUM_H #endif //KAHANSUM_H

View File

@ -4,6 +4,9 @@
*/ */
#ifndef LATTICES_H #ifndef LATTICES_H
#define LATTICES_H #define LATTICES_H
#ifdef __cplusplus
extern "C" {
#endif
#include <math.h> #include <math.h>
#include <stdbool.h> #include <stdbool.h>
@ -945,4 +948,7 @@ int honeycomb_lattice_gen_extend_to_steps(honeycomb_lattice_gen_t *g, int maxste
int honeycomb_lattice_gen_extend_to_r(honeycomb_lattice_gen_t *g, double r); int honeycomb_lattice_gen_extend_to_r(honeycomb_lattice_gen_t *g, double r);
void honeycomb_lattice_gen_free(honeycomb_lattice_gen_t *g); void honeycomb_lattice_gen_free(honeycomb_lattice_gen_t *g);
#ifdef __cplusplus
}
#endif
#endif // LATTICES_H #endif // LATTICES_H

View File

@ -3,6 +3,10 @@
*/ */
#ifndef QPMS_MATERIALS_H #ifndef QPMS_MATERIALS_H
#define QPMS_MATERIALS_H #define QPMS_MATERIALS_H
#ifdef __cplusplus
extern "C" {
#endif
#include "qpms_types.h" #include "qpms_types.h"
#include <complex.h> #include <complex.h>
#include <gsl/gsl_spline.h> #include <gsl/gsl_spline.h>
@ -159,4 +163,7 @@ static inline _Complex double qpms_drude_epsilon(
} }
#ifdef __cplusplus
}
#endif
#endif //QPMS_MATERIALS_H #endif //QPMS_MATERIALS_H

View File

@ -5,6 +5,9 @@
*/ */
#ifndef NORMALISATION_H #ifndef NORMALISATION_H
#define NORMALISATION_H #define NORMALISATION_H
#ifdef __cplusplus
extern "C" {
#endif
#include "qpms_types.h" #include "qpms_types.h"
#include "qpms_error.h" #include "qpms_error.h"
@ -282,4 +285,7 @@ static inline double qpms_normalisation_t_factor_abssquare(qpms_normalisation_t
} }
#endif #endif
#ifdef __cplusplus
}
#endif
#endif //NORMALISATION_H #endif //NORMALISATION_H

View File

@ -3,6 +3,9 @@
*/ */
#ifndef QPMS_PARSING_H #ifndef QPMS_PARSING_H
#define QPMS_PARSING_H #define QPMS_PARSING_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stddef.h> #include <stddef.h>
@ -57,4 +60,7 @@ size_t qpms_parse_doubles_fromfile(
const char *filepath //< File to read from, or NULL, "", "-" to read from stdin. const char *filepath //< File to read from, or NULL, "", "-" to read from stdin.
); );
#ifdef __cplusplus
}
#endif
#endif // QPMS_PARSING_H #endif // QPMS_PARSING_H

View File

@ -3,6 +3,9 @@
*/ */
#ifndef POINTGROUPS_H #ifndef POINTGROUPS_H
#define POINTGROUPS_H #define POINTGROUPS_H
#ifdef __cplusplus
extern "C" {
#endif
#include "qpms_error.h" #include "qpms_error.h"
#include "quaternions.h" #include "quaternions.h"
@ -81,4 +84,7 @@ _Bool qpms_pg_is_subgroup(qpms_pointgroup_t a, qpms_pointgroup_t b);
#ifdef __cplusplus
}
#endif
#endif //POINTGROUPS_H #endif //POINTGROUPS_H

View File

@ -5,6 +5,9 @@
*/ */
#ifndef QPMS_ERROR_H #ifndef QPMS_ERROR_H
#define QPMS_ERROR_H #define QPMS_ERROR_H
#ifdef __cplusplus
extern "C" {
#endif
#include "optim.h" #include "optim.h"
@ -266,4 +269,7 @@ qpms_dbgmsg_flags qpms_dbgmsg_enable(qpms_dbgmsg_flags types);
}\ }\
} }
#ifdef __cplusplus
}
#endif
#endif #endif

View File

@ -3,6 +3,10 @@
*/ */
#ifndef QPMS_SPECFUNC_H #ifndef QPMS_SPECFUNC_H
#define QPMS_SPECFUNC_H #define QPMS_SPECFUNC_H
#ifdef __cplusplus
extern "C" {
#endif
#include "qpms_types.h" #include "qpms_types.h"
#include <gsl/gsl_sf_legendre.h> #include <gsl/gsl_sf_legendre.h>
@ -107,4 +111,7 @@ double qpms_legendre0(int m, int n);
// Associated Legendre polynomial derivative at zero argument (DLMF 14.5.2) // Associated Legendre polynomial derivative at zero argument (DLMF 14.5.2)
double qpms_legendred0(int m, int n); double qpms_legendred0(int m, int n);
#ifdef __cplusplus
}
#endif
#endif // QPMS_SPECFUNC_H #endif // QPMS_SPECFUNC_H

View File

@ -3,6 +3,10 @@
*/ */
#ifndef QPMS_TYPES_H #ifndef QPMS_TYPES_H
#define QPMS_TYPES_H #define QPMS_TYPES_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stddef.h> #include <stddef.h>
#include <stdint.h> #include <stdint.h>
#include <stdbool.h> #include <stdbool.h>
@ -435,4 +439,8 @@ typedef enum {
} qpms_ewald_part; } qpms_ewald_part;
#define lmcheck(l,m) assert((l) >= 1 && abs(m) <= (l)) #define lmcheck(l,m) assert((l) >= 1 && abs(m) <= (l))
#ifdef __cplusplus
}
#endif
#endif // QPMS_TYPES #endif // QPMS_TYPES

View File

@ -14,6 +14,10 @@
*/ */
#ifndef QPMSBLAS_H #ifndef QPMSBLAS_H
#define QPMSBLAS_H #define QPMSBLAS_H
#ifdef __cplusplus
extern "C" {
#endif
#define QPMS_BLAS_INDEX_T long long int #define QPMS_BLAS_INDEX_T long long int
#ifndef CBLAS_H #ifndef CBLAS_H
@ -31,4 +35,7 @@ void qpms_zgemm(CBLAS_LAYOUT Order, CBLAS_TRANSPOSE TransA, CBLAS_TRANSPOSE Tran
const _Complex double *B, const QPMS_BLAS_INDEX_T ldb, const _Complex double *B, const QPMS_BLAS_INDEX_T ldb,
const _Complex double *beta, _Complex double *C, const QPMS_BLAS_INDEX_T ldc); const _Complex double *beta, _Complex double *C, const QPMS_BLAS_INDEX_T ldc);
#ifdef __cplusplus
}
#endif
#endif //QPMSBLAS_H #endif //QPMSBLAS_H

View File

@ -3,6 +3,9 @@
*/ */
#ifndef QPMS_WIGNER_H #ifndef QPMS_WIGNER_H
#define QPMS_WIGNER_H #define QPMS_WIGNER_H
#ifdef __cplusplus
extern "C" {
#endif
#include "qpms_types.h" #include "qpms_types.h"
#include "vectors.h" #include "vectors.h"
@ -303,4 +306,7 @@ static inline qpms_irot3_t qpms_irot3_zrot_Nk(double N, double k) {
return qpms_irot3_zrot_angle(2 * M_PI * k / N); return qpms_irot3_zrot_angle(2 * M_PI * k / N);
} }
#ifdef __cplusplus
}
#endif
#endif //QPMS_WIGNER_H #endif //QPMS_WIGNER_H

View File

@ -10,6 +10,10 @@
*/ */
#ifndef QPMS_SCATSYSTEM_H #ifndef QPMS_SCATSYSTEM_H
#define QPMS_SCATSYSTEM_H #define QPMS_SCATSYSTEM_H
#ifdef __cplusplus
extern "C" {
#endif
#include "qpms_types.h" #include "qpms_types.h"
#include "vswf.h" #include "vswf.h"
#include "tmatrices.h" #include "tmatrices.h"
@ -919,4 +923,7 @@ ccart3_t qpms_scatsys_scattered_E_irrep(const qpms_scatsys_t *ss,
); );
#endif #endif
#ifdef __cplusplus
}
#endif
#endif //QPMS_SCATSYSTEM_H #endif //QPMS_SCATSYSTEM_H

View File

@ -21,6 +21,10 @@
*/ */
#ifndef SYMMETRIES_H #ifndef SYMMETRIES_H
#define SYMMETRIES_H #define SYMMETRIES_H
#ifdef __cplusplus
extern "C" {
#endif
#include "qpms_types.h" #include "qpms_types.h"
#include <cblas.h> #include <cblas.h>
@ -75,4 +79,8 @@ size_t qpms_zero_roundoff_clean(double *arr, size_t nmemb, double atol);
* TODO doc. * TODO doc.
*/ */
size_t qpms_czero_roundoff_clean(_Complex double *arr, size_t nmemb, double atol); size_t qpms_czero_roundoff_clean(_Complex double *arr, size_t nmemb, double atol);
#ifdef __cplusplus
}
#endif
#endif // SYMMETRIES_H #endif // SYMMETRIES_H

View File

@ -3,6 +3,10 @@
*/ */
#ifndef TMATRICES_H #ifndef TMATRICES_H
#define TMATRICES_H #define TMATRICES_H
#ifdef __cplusplus
extern "C" {
#endif
// #include "qpms_types.h" // included via materials.h // #include "qpms_types.h" // included via materials.h
// #include <gsl/gsl_spline.h> // included via materials.h // #include <gsl/gsl_spline.h> // included via materials.h
#include "materials.h" #include "materials.h"
@ -689,4 +693,7 @@ typedef struct qpms_abstract_particle_t {
typedef qpms_particle_tid_t qpms_abstract_particle_tid_t; typedef qpms_particle_tid_t qpms_abstract_particle_tid_t;
#endif // 0 #endif // 0
#ifdef __cplusplus
}
#endif
#endif //TMATRICES_H #endif //TMATRICES_H

View File

@ -1,6 +1,9 @@
/*! \file tolerances.h */ /*! \file tolerances.h */
#ifndef QPMS_TOLERANCES_H #ifndef QPMS_TOLERANCES_H
#define QPMS_TOLERANCES_H #define QPMS_TOLERANCES_H
#ifdef __cplusplus
extern "C" {
#endif
// TODO DOC // TODO DOC
@ -12,4 +15,7 @@ typedef struct qpms_tolerance_spec_t {
/// A rather arbitrary default tolerance. /// A rather arbitrary default tolerance.
static const qpms_tolerance_spec_t QPMS_TOLERANCE_DEFAULT = {.atol = 1e-9, .rtol = 1e-8}; static const qpms_tolerance_spec_t QPMS_TOLERANCE_DEFAULT = {.atol = 1e-9, .rtol = 1e-8};
#ifdef __cplusplus
}
#endif
#endif // QPMS_TOLERANCES_H #endif // QPMS_TOLERANCES_H

View File

@ -26,6 +26,10 @@
*/ */
#ifndef QPMS_TRANSLATIONS_H #ifndef QPMS_TRANSLATIONS_H
#define QPMS_TRANSLATIONS_H #define QPMS_TRANSLATIONS_H
#ifdef __cplusplus
extern "C" {
#endif
#include "vectors.h" #include "vectors.h"
#include "qpms_types.h" #include "qpms_types.h"
#include <stdbool.h> #include <stdbool.h>
@ -243,4 +247,7 @@ int qpms_cython_trans_calculator_get_AB_arrays_loop(
#endif //QPMS_COMPILE_PYTHON_EXTENSIONS #endif //QPMS_COMPILE_PYTHON_EXTENSIONS
#ifdef __cplusplus
}
#endif
#endif // QPMS_TRANSLATIONS_H #endif // QPMS_TRANSLATIONS_H

View File

@ -7,6 +7,10 @@
*/ */
#ifndef QPMS_VSWF_H #ifndef QPMS_VSWF_H
#define QPMS_VSWF_H #define QPMS_VSWF_H
#ifdef __cplusplus
extern "C" {
#endif
#include <unistd.h> // ssize_t #include <unistd.h> // ssize_t
#include "qpms_types.h" #include "qpms_types.h"
#include <gsl/gsl_sf_legendre.h> #include <gsl/gsl_sf_legendre.h>
@ -246,4 +250,7 @@ qpms_vswfset_sph_t *qpms_vswfset_make(qpms_l_t lMax, sph_t kdlj,
qpms_bessel_t btyp, qpms_normalisation_t norm);//NI qpms_bessel_t btyp, qpms_normalisation_t norm);//NI
void qpms_vswfset_sph_pfree(qpms_vswfset_sph_t *);//NI void qpms_vswfset_sph_pfree(qpms_vswfset_sph_t *);//NI
#ifdef __cplusplus
}
#endif
#endif // QPMS_VSWF_H #endif // QPMS_VSWF_H