diff options
Diffstat (limited to 'src/c/liberasurecode/include/erasurecode/erasurecode_stdinc.h')
-rw-r--r-- | src/c/liberasurecode/include/erasurecode/erasurecode_stdinc.h | 167 |
1 files changed, 167 insertions, 0 deletions
diff --git a/src/c/liberasurecode/include/erasurecode/erasurecode_stdinc.h b/src/c/liberasurecode/include/erasurecode/erasurecode_stdinc.h new file mode 100644 index 0000000..a48ee65 --- /dev/null +++ b/src/c/liberasurecode/include/erasurecode/erasurecode_stdinc.h @@ -0,0 +1,167 @@ +/* + * <Copyright> + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, this + * list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY + * THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _ERASURECODE_STDINC_H_ +#define _ERASURECODE_STDINC_H_ + +#ifndef _EXCLUDE_LIBERASURE_CODE_H_ +#include "config_liberasurecode.h" +#endif +#include "erasurecode_log.h" + +#ifdef HAVE_SYSLOG_H +#include <syslog.h> +#endif +#ifdef HAVE_SYS_TYPES_H +#include <sys/types.h> +#endif +#ifdef HAVE_STDIO_H +#include <stdio.h> +#endif +#if defined(STDC_HEADERS) +# include <stdlib.h> +# include <stddef.h> +# include <stdarg.h> +# include <stdbool.h> +# include <unistd.h> +#else +# if defined(HAVE_STDLIB_H) +# include <stdlib.h> +# elif defined(HAVE_MALLOC_H) +# include <malloc.h> +# endif +# if defined(HAVE_STDDEF_H) +# include <stddef.h> +# endif +# if defined(HAVE_STDARG_H) +# include <stdarg.h> +# endif +# if defined(HAVE_UNISTD_H) +# include <unistd.h> +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined(STDC_HEADERS) && defined(HAVE_MEMORY_H) +# include <memory.h> +# endif +# include <string.h> +#endif +#ifdef HAVE_STRINGS_H +# include <strings.h> +#endif +#if defined(HAVE_INTTYPES_H) +# include <inttypes.h> +#elif defined(HAVE_STDINT_H) +# include <stdint.h> +#endif +#ifdef HAVE_CTYPE_H +# include <ctype.h> +#endif +#if defined(HAVE_ICONV) && defined(HAVE_ICONV_H) +# include <iconv.h> +#endif +#ifdef HAVE_DLFCN_H +# include <dlfcn.h> +#endif +#ifdef HAVE_DLFCN_H +# include <limits.h> +#endif +#ifdef HAVE_PTHREAD_H +# include <pthread.h> +#define RWLOCK_INITIALIZER PTHREAD_RWLOCK_INITIALIZER +#define rwlock_t pthread_rwlock_t +#define rwlock_rdlock pthread_rwlock_rdlock +#define rwlock_wrlock pthread_rwlock_wrlock +#define rwlock_tryrdlock pthread_rwlock_tryrdlock +#define rwlock_trywrlock pthread_rwlock_trywrlock +#define rwlock_unlock pthread_rwlock_unlock +#define rwlock_destroy pthread_rwlock_destroy +#endif +#ifdef HAVE_ERRNO_H +# include <errno.h> +#endif +#ifdef HAVE_MATH_H +# include <math.h> +#endif + +#if defined(__GNUC__) && __GNUC__ >= 4 +# define DECLSPEC __attribute__ ((visibility("default"))) +#else +# define DECLSPEC +#endif + +// FIXME - need to move these to the main liberasurecode header +#ifdef HAVE_MALLOC +#define ERASURECODE_malloc malloc +#else +extern DECLSPEC void * ERASURECODE_malloc(size_t size); +#endif + +#ifdef HAVE_CALLOC +#define ERASURECODE_calloc calloc +#else +extern DECLSPEC void * ERASURECODE_calloc(size_t nmemb, size_t size); +#endif + +#ifdef HAVE_REALLOC +#define ERASURECODE_realloc realloc +#else +extern DECLSPEC void * ERASURECODE_realloc(void *mem, size_t size); +#endif + +#ifdef HAVE_FREE +#define ERASURECODE_free free +#else +extern DECLSPEC void ERASURECODE_free(void *mem); +#endif + +/* Redefine main() on MacOS */ + +#if defined(__MACOS__) || defined(__MACOSX__) + +#ifdef __cplusplus +#define C_LINKAGE "C" +#else +#define C_LINKAGE +#endif /* __cplusplus */ + +/** The application's main() function must be called with C linkage, + * and should be declared like this: + * @code + * #ifdef __cplusplus + * extern "C" + * #endif + * int main(int argc, char *argv[]) + * { + * } + * @endcode + */ +#define main EC_main + +/** The prototype for the application's main() function */ +extern C_LINKAGE int EC_main(int argc, char *argv[]); + +#endif // MACOSX + +#endif // _ERASURECODE_STDINC_H_ |