// -*- C++ -*- /*************************************************************************** * blitz/blitz.h Includes all the important header files * * $Id: blitz.h 1414 2005-11-01 22:04:59Z cookedm $ * * Copyright (C) 1997-2001 Todd Veldhuizen * * This code was relicensed under the modified BSD license for use in SciPy * by Todd Veldhuizen (see LICENSE.txt in the weave directory). * * * Suggestions: blitz-dev@oonumerics.org * Bugs: blitz-bugs@oonumerics.org * * For more information, please see the Blitz++ Home Page: * http://oonumerics.org/blitz/ * ***************************************************************************/ #ifndef BZ_BLITZ_H #define BZ_BLITZ_H /* * These symbols allow use of the IEEE and System V math libraries * (libm.a and libmsaa.a) on some platforms. */ #ifdef BZ_ENABLE_XOPEN_SOURCE #ifndef _ALL_SOURCE #define _ALL_SOURCE #endif #ifndef _XOPEN_SOURCE #define _XOPEN_SOURCE #endif #ifndef _XOPEN_SOURCE_EXTENDED #define _XOPEN_SOURCE_EXTENDED 1 #endif #endif #include // Compiler-specific directives #include // Performance tuning #include // Profiling #include #include // sprintf, etc. #ifdef BZ_HAVE_STD #include #include #else #include #include #endif #ifdef BZ_MATH_FN_IN_NAMESPACE_STD #include #else #include #endif #ifdef BZ_HAVE_COMPLEX #include #endif #define BZ_THROW // Needed in BZ_NAMESPACE(blitz) #ifdef BZ_HAVE_STD BZ_USING_NAMESPACE(std) #endif #ifdef BZ_GENERATE_GLOBAL_INSTANCES #define _bz_global #define BZ_GLOBAL_INIT(X) =X #else #define _bz_global extern #define BZ_GLOBAL_INIT(X) #endif BZ_NAMESPACE_END /* * Thread safety issues. * Compiling with -pthread under gcc, or -mt under solaris, * should automatically turn on BZ_THREADSAFE. */ #ifdef _REENTRANT #ifndef BZ_THREADSAFE #define BZ_THREADSAFE #endif #endif /* * Which mutex implementation should be used for synchronizing * reference counts. Currently only one option -- pthreads. */ #ifdef BZ_THREADSAFE #define BZ_THREADSAFE_USE_PTHREADS #endif #ifdef BZ_THREADSAFE_USE_PTHREADS #include #define BZ_MUTEX_DECLARE(name) mutable pthread_mutex_t name; #define BZ_MUTEX_INIT(name) pthread_mutex_init(&name,NULL); #define BZ_MUTEX_LOCK(name) pthread_mutex_lock(&name); #define BZ_MUTEX_UNLOCK(name) pthread_mutex_unlock(&name); #define BZ_MUTEX_DESTROY(name) pthread_mutex_destroy(&name); #else #define BZ_MUTEX_DECLARE(name) #define BZ_MUTEX_INIT(name) #define BZ_MUTEX_LOCK(name) #define BZ_MUTEX_UNLOCK(name) #define BZ_MUTEX_DESTROY(name) #endif #include // Debugging macros #endif // BZ_BLITZ_H