40#ifdef BZ_ENABLE_XOPEN_SOURCE
47 #ifndef _XOPEN_SOURCE_EXTENDED
48 #define _XOPEN_SOURCE_EXTENDED 1
81#define bzCC(...) __VA_ARGS__
89#ifdef BZ_GENERATE_GLOBAL_INSTANCES
91 #define BZ_GLOBAL_INIT(X) =X
93 #define _bz_global extern
94 #define BZ_GLOBAL_INIT(X)
105#warning 64-bit array dimensions not yet implemented
115#define BZ_PADDING_DEFAULT paddedData
117#define BZ_PADDING_DEFAULT contiguousData
139 #ifdef BZ_THREADSAFE_USE_TBB
140 #include "tbb/atomic.h"
141 #define BZ_THREADSAFE_USE_ATOMIC
142 #define BZ_REFCOUNT_DECLARE(name) tbb::atomic<int> name;
144 #define BZ_REFCOUNT_DECLARE(name) volatile int name;
145 #if defined(_REENTRANT)
146 #define BZ_THREADSAFE_USE_PTHREADS
147 #elif defined (_OPENMP)
148 #define BZ_THREADSAFE_USE_OPENMP
149 #elif defined(_WIN32)
150 #define BZ_THREADSAFE_USE_WINDOWS
152 #error Blitz is configured with --enable-threadsafe, but no compiler thread support is found. Did you forget, e.g., "--pthread"?
156 #define BZ_REFCOUNT_DECLARE(name) int name;
160#ifdef BZ_THREADSAFE_USE_PTHREADS
163 #define BZ_MUTEX_DECLARE(name) mutable pthread_mutex_t name;
164 #define BZ_MUTEX_INIT(name) pthread_mutex_init(&name,NULL); mutexLocking_ = true;
166 #define BZ_MUTEX_LOCK(name) if (mutexLocking_) pthread_mutex_lock(&name);
167 #define BZ_MUTEX_UNLOCK(name) if (mutexLocking_) pthread_mutex_unlock(&name);
168 #define BZ_MUTEX_DESTROY(name) pthread_mutex_destroy(&name);
169#elif defined (BZ_THREADSAFE_USE_WINDOWS)
175 #define BZ_MUTEX_DECLARE(name) mutable CRITICAL_SECTION name;
176 #define BZ_MUTEX_INIT(name) ::InitializeCriticalSection(&name); mutexLocking_ = true;
177 #define BZ_MUTEX_LOCK(name) if (mutexLocking_) ::EnterCriticalSection(&name);
178 #define BZ_MUTEX_UNLOCK(name) if (mutexLocking_) ::LeaveCriticalSection(&name);
179 #define BZ_MUTEX_DESTROY(name) ::DeleteCriticalSection(&name);
180#elif defined (BZ_THREADSAFE_USE_OPENMP)
183 #define BZ_MUTEX_DECLARE(name) mutable omp_lock_t name;
184 #define BZ_MUTEX_INIT(name) omp_init_lock(&name); mutexLocking_ = true;
185 #define BZ_MUTEX_LOCK(name) if (mutexLocking_) omp_set_lock(&name);
186 #define BZ_MUTEX_UNLOCK(name) if (mutexLocking_) omp_unset_lock(&name);
187 #define BZ_MUTEX_DESTROY(name) omp_destroy_lock(&name);
189 #define BZ_MUTEX_DECLARE(name)
190 #define BZ_MUTEX_INIT(name)
191 #define BZ_MUTEX_LOCK(name)
192 #define BZ_MUTEX_UNLOCK(name)
193 #define BZ_MUTEX_DESTROY(name)
196#include <blitz/bzdebug.h>
Definition memblock.h:307
Definition array-impl.h:66
ptrdiff_t diffType
Definition blitz.h:111
size_t sizeType
Definition blitz.h:110
int indexType
Definition blitz.h:108