From deeeefdde1934e58a91e24bb6d1b2ad17ce85953 Mon Sep 17 00:00:00 2001 From: Michael Stevens Date: Thu, 19 Aug 2004 07:17:28 +0000 Subject: [PATCH] overrideable STREAM config better comments svn path=/trunk/boost/boost/numeric/ublas/; revision=24586 --- include/boost/numeric/ublas/config.hpp | 32 +++++++++++++++----------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/include/boost/numeric/ublas/config.hpp b/include/boost/numeric/ublas/config.hpp index 99e2aa55..4a5efd60 100644 --- a/include/boost/numeric/ublas/config.hpp +++ b/include/boost/numeric/ublas/config.hpp @@ -69,11 +69,6 @@ #define BOOST_UBLAS_INLINE __inline #endif -// With MSVC we could perform IO via basic_stream -// #define BOOST_UBLAS_USE_BASIC_STREAM -// IO via streams -#define BOOST_UBLAS_USE_STREAM - // MSVC extensions seem to disable abs () overloads in . #ifdef _MSC_EXTENSIONS #define BOOST_UBLAS_NO_CMATH @@ -141,7 +136,7 @@ namespace boost { namespace numeric { namespace ublas { }}} namespace std { - // Needed for ICC on Itanium? + // iter_swap needed for ICC on Itanium? template inline void iter_swap (boost::numeric::ublas::indexed_iterator it1, @@ -193,12 +188,13 @@ namespace std { #ifndef BOOST_UBLAS_USING #define BOOST_UBLAS_USING using #endif + + #ifndef BOOST_UBLAS_USE_STREAM #define BOOST_UBLAS_USE_STREAM #endif - // Enable assignment of non conformant proxies #define BOOST_UBLAS_NON_CONFORMANT_PROXIES @@ -209,9 +205,12 @@ namespace std { // #define BOOST_UBLAS_STRICT_STORAGE_SPARSE #define BOOST_UBLAS_STRICT_VECTOR_SPARSE #define BOOST_UBLAS_STRICT_MATRIX_SPARSE -// #define BOOST_UBLAS_STRICT_HERMITIAN #endif +// Hermitian matrices can also use element proxies to allow assignment to conjugate triangle +// #define BOOST_UBLAS_STRICT_HERMITIAN + + // Enable compile time typedefs for proxies #define BOOST_UBLAS_CT_REFERENCE_BASE_TYPEDEFS // #define BOOST_UBLAS_REFERENCE_CONST_MEMBER @@ -245,10 +244,6 @@ namespace std { // Disable performance options in DEBUG mode #else -// In order to simplify debugging is is possible to simplify expression template -// so they are restricted to a single operation -// #define BOOST_UBLAS_SIMPLE_ET_DEBUG - #ifndef BOOST_UBLAS_INLINE #define BOOST_UBLAS_INLINE #endif @@ -286,10 +281,19 @@ bool disable_type_check::value = false; +// In order to simplify debugging is is possible to simplify expression template +// so they are restricted to a single operation +// #define BOOST_UBLAS_SIMPLE_ET_DEBUG + +// Select stream types defined for IO +#if !define (BOOST_UBLAS_USE_STREAM) && !define(BOOST_UBLAS_USE_BASIC_STREAM) +#define BOOST_UBLAS_USE_STREAM +#endif + // Use invariant hoisting. // #define BOOST_UBLAS_USE_INVARIANT_HOISTING -// Use Duff's device +// Use Duff's device in element access loops // #define BOOST_UBLAS_USE_DUFF_DEVICE // Choose evaluation method for dense vectors and matrices @@ -303,7 +307,7 @@ bool disable_type_check::value = false; // Use indexed iterators. // #define BOOST_UBLAS_USE_INDEXED_ITERATOR -// Alignment of bounded arrays. align(16) possible useful for ICC +// Alignment of bounded arrays. align(16) possibly useful for ICC #define BOOST_UBLAS_BOUNDED_ARRAY_ALIGN #include