diff options
author | Thomas White <taw@physics.org> | 2023-04-24 14:49:53 +0200 |
---|---|---|
committer | Thomas White <taw@physics.org> | 2023-07-28 13:22:04 +0200 |
commit | c8fb149760f7a8ef4e018f22e79bcb48e1e3c444 (patch) | |
tree | bd026b2ff0a14186efd26af3a2ff23d2b71b5baa /subprojects | |
parent | 01f6f6ec756a435c0187154627e3a8900bcd3e11 (diff) |
Add C wrapper for Mille
Diffstat (limited to 'subprojects')
-rw-r--r-- | subprojects/packagefiles/millepede/meson.build | 3 | ||||
-rw-r--r-- | subprojects/packagefiles/millepede/mille_c_wrap.cc | 47 | ||||
-rw-r--r-- | subprojects/packagefiles/millepede/mille_c_wrap.h | 30 |
3 files changed, 79 insertions, 1 deletions
diff --git a/subprojects/packagefiles/millepede/meson.build b/subprojects/packagefiles/millepede/meson.build index 7a535945..d18cece5 100644 --- a/subprojects/packagefiles/millepede/meson.build +++ b/subprojects/packagefiles/millepede/meson.build @@ -5,7 +5,8 @@ project('millepede', ['c', 'cpp','fortran'], default_options: ['buildtype=debugoptimized']) -mille = library('mille', ['Mille.cc'], +mille = library('mille', ['Mille.cc', + 'mille_c_wrap.cc'], install: true) millepede_dep = declare_dependency(include_directories: '.', diff --git a/subprojects/packagefiles/millepede/mille_c_wrap.cc b/subprojects/packagefiles/millepede/mille_c_wrap.cc new file mode 100644 index 00000000..103754a1 --- /dev/null +++ b/subprojects/packagefiles/millepede/mille_c_wrap.cc @@ -0,0 +1,47 @@ +#include "Mille.h" +#include "mille_c_wrap.h" + + +extern "C" Mille *mille_new(const char *outFileName, + int asBinary, + int writeZero) +{ + return new Mille(outFileName, asBinary, writeZero); +} + + +extern "C" void mille_free(Mille *m) +{ + delete m; +} + + +extern "C" void mille_add_measurement(Mille *m, + int NLC, const float *derLc, + int NGL, const float *derGl, + const int *label, float rMeas, + float sigma) +{ + m->mille(NLC, derLc, NGL, derGl, label, rMeas, sigma); +} + + +extern "C" void mille_add_special(Mille *m, + int nSpecial, + const float *floatings, + const int *integers) +{ + m->special(nSpecial, floatings, integers); +} + + +extern "C" void mille_delete_last_record(Mille *m) +{ + m->kill(); +} + + +extern "C" void mille_write_record(Mille *m) +{ + m->end(); +} diff --git a/subprojects/packagefiles/millepede/mille_c_wrap.h b/subprojects/packagefiles/millepede/mille_c_wrap.h new file mode 100644 index 00000000..1f0fc841 --- /dev/null +++ b/subprojects/packagefiles/millepede/mille_c_wrap.h @@ -0,0 +1,30 @@ +#ifdef __cplusplus +extern "C" { +#else +typedef void *Mille; +#endif + + +extern Mille *mille_new(const char *outFileName, + int asBinary, + int writeZero); + +extern void mille_add_measurement(Mille *m, + int NLC, const float *derLc, + int NGL, const float *derGl, + const int *label, float rMeas, float sigma); + +extern void mille_add_special(Mille *m, + int nSpecial, + const float *floatings, + const int *integers); + +extern void mille_delete_last_record(Mille *m); + +extern void mille_write_record(Mille *m); + +extern void mille_free(Mille *m); + +#ifdef __cplusplus +} /* extern "C" */ +#endif |