fix a few remaining warnings

and fix commainitializer unit test with MSVC
This commit is contained in:
Gael Guennebaud 2009-01-23 12:26:32 +00:00
parent d3dcb04f2d
commit 6a722602e6
5 changed files with 35 additions and 14 deletions

View File

@ -40,22 +40,34 @@ template<typename Scalar> struct StdMapTraits
static void setInvalidKey(Type&, const KeyType&) {} static void setInvalidKey(Type&, const KeyType&) {}
}; };
#ifdef _HASH_MAP #ifdef EIGEN_UNORDERED_MAP_SUPPORT
/** Represents a __gnu_cxx::hash_map /** Represents a std::unordered_map
*
* To use it you need to both define EIGEN_UNORDERED_MAP_SUPPORT and include the unordered_map header file
* yourself making sure that unordered_map is defined in the std namespace.
*
* For instance, with current version of gcc you can either enable C++0x standard (-std=c++0x) or do:
* \code
* #include <tr1/unordered_map>
* #define EIGEN_UNORDERED_MAP_SUPPORT
* namespace std {
* using std::tr1::unordered_map;
* }
* \endcode
* *
* \see RandomSetter * \see RandomSetter
*/ */
template<typename Scalar> struct GnuHashMapTraits template<typename Scalar> struct StdUnorderedMapTraits
{ {
typedef int KeyType; typedef int KeyType;
typedef __gnu_cxx::hash_map<KeyType,Scalar> Type; typedef std::unordered_map<KeyType,Scalar> Type;
enum { enum {
IsSorted = 0 IsSorted = 0
}; };
static void setInvalidKey(Type&, const KeyType&) {} static void setInvalidKey(Type&, const KeyType&) {}
}; };
#endif #endif // EIGEN_UNORDERED_MAP_SUPPORT
#ifdef _DENSE_HASH_MAP_H_ #ifdef _DENSE_HASH_MAP_H_
/** Represents a google::dense_hash_map /** Represents a google::dense_hash_map

View File

@ -30,7 +30,10 @@ void test_commainitializer()
Matrix4d m4; Matrix4d m4;
VERIFY_RAISES_ASSERT( (m3 << 1, 2, 3, 4, 5, 6, 7, 8) ); VERIFY_RAISES_ASSERT( (m3 << 1, 2, 3, 4, 5, 6, 7, 8) );
#ifndef _MSC_VER
VERIFY_RAISES_ASSERT( (m3 << 1, 2, 3, 4, 5, 6, 7, 8, 9, 10) ); VERIFY_RAISES_ASSERT( (m3 << 1, 2, 3, 4, 5, 6, 7, 8, 9, 10) );
#endif
double data[] = {1, 2, 3, 4, 5, 6, 7, 8, 9}; double data[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
Matrix3d ref = Map<Matrix<double,3,3,RowMajor> >(data); Matrix3d ref = Map<Matrix<double,3,3,RowMajor> >(data);

View File

@ -24,15 +24,20 @@
#ifndef EIGEN_TESTSPARSE_H #ifndef EIGEN_TESTSPARSE_H
#ifdef __GNUC__ #include "main.h"
#include <ext/hash_map>
#if EIGEN_GNUC_AT_LEAST(4,0)
#include <tr1/unordered_map>
#define EIGEN_UNORDERED_MAP_SUPPORT
namespace std {
using std::tr1::unordered_map;
}
#endif #endif
#ifdef EIGEN_GOOGLEHASH_SUPPORT #ifdef EIGEN_GOOGLEHASH_SUPPORT
#include <google/sparse_hash_map> #include <google/sparse_hash_map>
#endif #endif
#include "main.h"
#include <Eigen/Cholesky> #include <Eigen/Cholesky>
#include <Eigen/LU> #include <Eigen/LU>
#include <Eigen/Sparse> #include <Eigen/Sparse>

View File

@ -167,8 +167,8 @@ template<typename SparseMatrixType> void sparse_basic(const SparseMatrixType& re
// VERIFY_IS_APPROX(m, refMat); // VERIFY_IS_APPROX(m, refMat);
VERIFY(( test_random_setter<RandomSetter<SparseMatrixType, StdMapTraits> >(m,refMat,nonzeroCoords) )); VERIFY(( test_random_setter<RandomSetter<SparseMatrixType, StdMapTraits> >(m,refMat,nonzeroCoords) ));
#ifdef _HASH_MAP #ifdef EIGEN_UNORDERED_MAP_SUPPORT
VERIFY(( test_random_setter<RandomSetter<SparseMatrixType, GnuHashMapTraits> >(m,refMat,nonzeroCoords) )); VERIFY(( test_random_setter<RandomSetter<SparseMatrixType, StdUnorderedMapTraits> >(m,refMat,nonzeroCoords) ));
#endif #endif
#ifdef _DENSE_HASH_MAP_H_ #ifdef _DENSE_HASH_MAP_H_
VERIFY(( test_random_setter<RandomSetter<SparseMatrixType, GoogleDenseHashMapTraits> >(m,refMat,nonzeroCoords) )); VERIFY(( test_random_setter<RandomSetter<SparseMatrixType, GoogleDenseHashMapTraits> >(m,refMat,nonzeroCoords) ));

View File

@ -57,6 +57,7 @@ template<typename MatrixType> void submatrices(const MatrixType& m)
Row.h Column.h Block.h Minor.h DiagonalCoeffs.h Row.h Column.h Block.h Minor.h DiagonalCoeffs.h
*/ */
typedef typename MatrixType::Scalar Scalar; typedef typename MatrixType::Scalar Scalar;
typedef typename MatrixType::RealScalar RealScalar;
typedef Matrix<Scalar, MatrixType::RowsAtCompileTime, 1> VectorType; typedef Matrix<Scalar, MatrixType::RowsAtCompileTime, 1> VectorType;
typedef Matrix<Scalar, 1, MatrixType::ColsAtCompileTime> RowVectorType; typedef Matrix<Scalar, 1, MatrixType::ColsAtCompileTime> RowVectorType;
int rows = m.rows(); int rows = m.rows();
@ -140,11 +141,11 @@ template<typename MatrixType> void submatrices(const MatrixType& m)
} }
// stress some basic stuffs with block matrices // stress some basic stuffs with block matrices
VERIFY(ones.col(c1).sum() == Scalar(rows)); VERIFY(ei_real(ones.col(c1).sum()) == RealScalar(rows));
VERIFY(ones.row(r1).sum() == Scalar(cols)); VERIFY(ei_real(ones.row(r1).sum()) == RealScalar(cols));
VERIFY(ones.col(c1).dot(ones.col(c2)) == Scalar(rows)); VERIFY(ei_real(ones.col(c1).dot(ones.col(c2))) == RealScalar(rows));
VERIFY(ones.row(r1).dot(ones.row(r2)) == Scalar(cols)); VERIFY(ei_real(ones.row(r1).dot(ones.row(r2))) == RealScalar(cols));
} }
void test_submatrices() void test_submatrices()