diff --git a/include/villas/atomic.h b/include/villas/atomic.h new file mode 100644 index 000000000..a27e9b00d --- /dev/null +++ b/include/villas/atomic.h @@ -0,0 +1,19 @@ +/** Workaround for differently named atomic types in C/C++ + * + * @file + * @author Georg Reinke + * @copyright 2017, Institute for Automation of Complex Power Systems, EONERC + *********************************************************************************/ + +#ifdef __cplusplus + +#include + +typedef std::atomic_int atomic_int; +typedef std::atomic_size_t atomic_size_t; + +#else + +#include + +#endif diff --git a/include/villas/queue.h b/include/villas/queue.h index 71d615d02..fa88fb8d8 100644 --- a/include/villas/queue.h +++ b/include/villas/queue.h @@ -33,11 +33,12 @@ #pragma once + #include #include -#include #include +#include "atomic.h" #include "common.h" /* Forward declarations */ diff --git a/include/villas/sample.h b/include/villas/sample.h index c7557ae08..df98180b1 100644 --- a/include/villas/sample.h +++ b/include/villas/sample.h @@ -7,10 +7,15 @@ #pragma once +#include "atomic.h" + +#ifdef __cplusplus +extern "C" { +#endif + #include #include #include -#include #include #include @@ -81,3 +86,7 @@ int sample_get_data_format(struct sample *s, int idx); /** Set number representation for a single value of a sample. */ int sample_set_data_format(struct sample *s, int idx, enum sample_data_format fmt); + +#ifdef __cplusplus +} +#endif diff --git a/include/villas/shmem.h b/include/villas/shmem.h index 271654495..d75826ca0 100644 --- a/include/villas/shmem.h +++ b/include/villas/shmem.h @@ -13,6 +13,10 @@ #pragma once +#ifdef __cplusplus +extern "C" { +#endif + #include "pool.h" #include "queue.h" #include "queue_signalled.h" @@ -80,3 +84,7 @@ int shmem_shared_write(struct shmem_shared *shm, struct sample *smps[], unsigned size_t shmem_total_size(int insize, int outsize, int sample_size); /** @} */ + +#ifdef __cplusplus +} +#endif