aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/src/Core
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2008-12-12 12:54:45 +0000
committerGravatar Gael Guennebaud <g.gael@free.fr>2008-12-12 12:54:45 +0000
commit1ed17b037db20ebe8eed954d4fa975b9e0ac82f6 (patch)
tree672b08ede4939d2abbe7172d50145fd8428059e6 /Eigen/src/Core
parent5015e483613490ae65433e8eeae00dc176aeedf3 (diff)
* fix a couple of warnings (patch from Armin Berres)
* allow Map to map null data
Diffstat (limited to 'Eigen/src/Core')
-rw-r--r--Eigen/src/Core/IO.h12
-rw-r--r--Eigen/src/Core/MapBase.h15
-rw-r--r--Eigen/src/Core/MathFunctions.h6
3 files changed, 17 insertions, 16 deletions
diff --git a/Eigen/src/Core/IO.h b/Eigen/src/Core/IO.h
index b7d4c9eac..6e6d02ad4 100644
--- a/Eigen/src/Core/IO.h
+++ b/Eigen/src/Core/IO.h
@@ -6,12 +6,12 @@
//
// Eigen is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
+// License as published by the Free Software Foundation; either
// version 3 of the License, or (at your option) any later version.
//
// Alternatively, you can redistribute it and/or
// modify it under the terms of the GNU General Public License as
-// published by the Free Software Foundation; either version 2 of
+// published by the Free Software Foundation; either version 2 of
// the License, or (at your option) any later version.
//
// Eigen is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -19,7 +19,7 @@
// FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License or the
// GNU General Public License for more details.
//
-// You should have received a copy of the GNU Lesser General Public
+// You should have received a copy of the GNU Lesser General Public
// License and a copy of the GNU General Public License along with
// Eigen. If not, see <http://www.gnu.org/licenses/>.
@@ -58,7 +58,7 @@ struct IOFormat
coeffSeparator(_coeffSeparator), precision(_precision), flags(_flags)
{
rowSpacer = "";
- int i=matSuffix.length()-1;
+ int i = int(matSuffix.length())-1;
while (i>=0 && matSuffix[i]!='\n')
{
rowSpacer += ' ';
@@ -81,7 +81,7 @@ struct IOFormat
* This class represents an expression with stream operators controlled by a given IOFormat.
* It is the return type of MatrixBase::format()
* and most of the time this is the only way it is used.
- *
+ *
* See class IOFormat for some examples.
*
* \sa MatrixBase::format(), class IOFormat
@@ -135,7 +135,7 @@ std::ostream & ei_print_matrix(std::ostream & s, const MatrixBase<Derived> & _m,
std::stringstream sstr;
sstr.precision(fmt.precision);
sstr << m.coeff(i,j);
- width = std::max<int>(width, sstr.str().length());
+ width = std::max<int>(width, int(sstr.str().length()));
}
}
s.precision(fmt.precision);
diff --git a/Eigen/src/Core/MapBase.h b/Eigen/src/Core/MapBase.h
index 5151b7047..ceedb08cb 100644
--- a/Eigen/src/Core/MapBase.h
+++ b/Eigen/src/Core/MapBase.h
@@ -53,7 +53,7 @@ template<typename Derived> class MapBase
ColsAtCompileTime = ei_traits<Derived>::ColsAtCompileTime,
SizeAtCompileTime = Base::SizeAtCompileTime
};
-
+
typedef typename ei_traits<Derived>::AlignedDerivedType AlignedDerivedType;
typedef typename ei_traits<Derived>::Scalar Scalar;
typedef typename Base::PacketScalar PacketScalar;
@@ -83,7 +83,7 @@ template<typename Derived> class MapBase
else // column-major
return const_cast<Scalar*>(m_data)[row + col * stride()];
}
-
+
inline const Scalar coeff(int index) const
{
ei_assert(Derived::IsVectorAtCompileTime || (ei_traits<Derived>::Flags & LinearAccessBit));
@@ -138,28 +138,29 @@ template<typename Derived> class MapBase
m_cols(ColsAtCompileTime == Dynamic ? size : ColsAtCompileTime)
{
EIGEN_STATIC_ASSERT_VECTOR_ONLY(Derived)
- ei_assert(size > 0);
+ ei_assert(size > 0 || data == 0);
ei_assert(SizeAtCompileTime == Dynamic || SizeAtCompileTime == size);
}
inline MapBase(const Scalar* data, int rows, int cols)
: m_data(data), m_rows(rows), m_cols(cols)
{
- ei_assert(rows > 0 && (RowsAtCompileTime == Dynamic || RowsAtCompileTime == rows)
- && cols > 0 && (ColsAtCompileTime == Dynamic || ColsAtCompileTime == cols));
+ ei_assert( (data == 0)
+ || ( rows > 0 && (RowsAtCompileTime == Dynamic || RowsAtCompileTime == rows)
+ && cols > 0 && (ColsAtCompileTime == Dynamic || ColsAtCompileTime == cols)));
}
template<typename OtherDerived>
Derived& operator+=(const MatrixBase<OtherDerived>& other)
{ return derived() = forceAligned() + other; }
-
+
template<typename OtherDerived>
Derived& operator-=(const MatrixBase<OtherDerived>& other)
{ return derived() = forceAligned() - other; }
Derived& operator*=(const Scalar& other)
{ return derived() = forceAligned() * other; }
-
+
Derived& operator/=(const Scalar& other)
{ return derived() = forceAligned() / other; }
diff --git a/Eigen/src/Core/MathFunctions.h b/Eigen/src/Core/MathFunctions.h
index 30604db86..3b3640661 100644
--- a/Eigen/src/Core/MathFunctions.h
+++ b/Eigen/src/Core/MathFunctions.h
@@ -51,7 +51,7 @@ inline int ei_sin(int) { ei_assert(false); return 0; }
inline int ei_cos(int) { ei_assert(false); return 0; }
#if EIGEN_GNUC_AT_LEAST(4,3)
-inline int ei_pow(int x, int y) { return std::pow(x, y); }
+inline int ei_pow(int x, int y) { return int(std::pow(x, y)); }
#else
inline int ei_pow(int x, int y) { return int(std::pow(double(x), y)); }
#endif
@@ -103,7 +103,7 @@ template<> inline float ei_random(float a, float b)
} while(i==0);
return i/256.f;
#else
- return a + (b-a) * std::rand() / RAND_MAX;
+ return a + (b-a) * float(std::rand()) / float(RAND_MAX);
#endif
}
template<> inline float ei_random()
@@ -254,7 +254,7 @@ inline long double ei_pow(long double x, long double y) { return std::pow(x, y)
template<> inline long double ei_random(long double a, long double b)
{
- return ei_random<double>(a,b);
+ return static_cast<long double>(ei_random<double>(a,b));
}
template<> inline long double ei_random()
{