From efcb45a68a61d5304b91046488d3cd6b09e5a8ff Mon Sep 17 00:00:00 2001 From: Stephane Letz Date: Thu, 23 Feb 2012 17:57:40 +0100 Subject: [PATCH] Use POST_PACKED_STRUCTURE for jack_position_t. --- systemdeps.h | 135 ++++++++++++++++++++++++++++++++------------------- 1 file changed, 85 insertions(+), 50 deletions(-) diff --git a/systemdeps.h b/systemdeps.h index 6b1b8a7..4806533 100644 --- a/systemdeps.h +++ b/systemdeps.h @@ -1,5 +1,5 @@ /* -Copyright (C) 2004-2009 Grame +Copyright (C) 2004-2012 Grame This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by @@ -20,66 +20,101 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. #ifndef __jack_systemdeps_h__ #define __jack_systemdeps_h__ -#if defined(WIN32) && !defined(__CYGWIN__) && !defined(GNU_WIN32) +#ifndef POST_PACKED_STRUCTURE + + #ifdef __GNUC__ + /* POST_PACKED_STRUCTURE needs to be a macro which + expands into a compiler directive. The directive must + tell the compiler to arrange the preceding structure + declaration so that it is packed on byte-boundaries rather + than use the natural alignment of the processor and/or + compiler. + */ + + #define PRE_PACKED_STRUCTURE + #define POST_PACKED_STRUCTURE __attribute__((__packed__)) + + #else + + #ifdef _MSC_VER + #define PRE_PACKED_STRUCTURE1 __pragma(pack(push,1)) + #define PRE_PACKED_STRUCTURE PRE_PACKED_STRUCTURE1 + /* PRE_PACKED_STRUCTURE needs to be a macro which + expands into a compiler directive. The directive must + tell the compiler to arrange the following structure + declaration so that it is packed on byte-boundaries rather + than use the natural alignment of the processor and/or + compiler. + */ + #define POST_PACKED_STRUCTURE ;__pragma(pack(pop)) + /* and POST_PACKED_STRUCTURE needs to be a macro which + restores the packing to its previous setting */ + #endif -#include - -#ifdef _MSC_VER /* Microsoft compiler */ - #define __inline__ inline - #if (!defined(int8_t) && !defined(_STDINT_H)) - #define __int8_t_defined - typedef char int8_t; - typedef unsigned char uint8_t; - typedef short int16_t; - typedef unsigned short uint16_t; - typedef long int32_t; - typedef unsigned long uint32_t; - typedef LONGLONG int64_t; - typedef ULONGLONG uint64_t; #endif -#elif __MINGW32__ /* MINGW */ - #include - #include -#else /* other compilers ...*/ - #include - #include - #include + #endif -#if !defined(_PTHREAD_H) && !defined(PTHREAD_WIN32) - /** - * to make jack API independent of different thread implementations, - * we define jack_native_thread_t to HANDLE here. - */ - typedef HANDLE jack_native_thread_t; -#else - #ifdef PTHREAD_WIN32 // Added by JE - 10-10-2011 - #include // Makes sure we #include the ptw32 version ! +#if defined(WIN32) && !defined(__CYGWIN__) && !defined(GNU_WIN32) + + #include + + #ifdef _MSC_VER /* Microsoft compiler */ + #define __inline__ inline + #if (!defined(int8_t) && !defined(_STDINT_H)) + #define __int8_t_defined + typedef char int8_t; + typedef unsigned char uint8_t; + typedef short int16_t; + typedef unsigned short uint16_t; + typedef long int32_t; + typedef unsigned long uint32_t; + typedef LONGLONG int64_t; + typedef ULONGLONG uint64_t; + #endif + #elif __MINGW32__ /* MINGW */ + #include + #include + #else /* other compilers ...*/ + #include + #include + #include + #endif + + #if !defined(_PTHREAD_H) && !defined(PTHREAD_WIN32) + /** + * to make jack API independent of different thread implementations, + * we define jack_native_thread_t to HANDLE here. + */ + typedef HANDLE jack_native_thread_t; + #else + #ifdef PTHREAD_WIN32 // Added by JE - 10-10-2011 + #include // Makes sure we #include the ptw32 version ! + #endif + /** + * to make jack API independent of different thread implementations, + * we define jack_native_thread_t to pthread_t here. + */ + typedef pthread_t jack_native_thread_t; #endif - /** - * to make jack API independent of different thread implementations, - * we define jack_native_thread_t to pthread_t here. - */ - typedef pthread_t jack_native_thread_t; -#endif #endif // WIN32 && !__CYGWIN__ && !GNU_WIN32 */ #if defined(__APPLE__) || defined(__linux__) || defined(__sun__) || defined(sun) || defined(__unix__) || defined(__CYGWIN__) || defined(GNU_WIN32) -#if defined(__CYGWIN__) || defined(GNU_WIN32) - #include -#endif - #include - #include - #include + #if defined(__CYGWIN__) || defined(GNU_WIN32) + #include + #endif + #include + #include + #include - /** - * to make jack API independent of different thread implementations, - * we define jack_native_thread_t to pthread_t here. - */ - typedef pthread_t jack_native_thread_t; + /** + * to make jack API independent of different thread implementations, + * we define jack_native_thread_t to pthread_t here. + */ + typedef pthread_t jack_native_thread_t; -#endif /* __APPLE__ || __linux__ || __sun__ || sun */ + #endif /* __APPLE__ || __linux__ || __sun__ || sun */ #endif