28 #ifndef _MRPT_CArray_H
29 #define _MRPT_CArray_H
74 template <
typename T, std::
size_t N>
96 #if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_MSVC_STD_ITERATOR) && !defined(BOOST_NO_STD_ITERATOR_TRAITS)
99 #elif defined(_MSC_VER) && (_MSC_VER == 1300) && defined(BOOST_DINKUMWARE_STDLIB) && (BOOST_DINKUMWARE_STDLIB == 310)
136 static bool empty() {
return false; }
141 inline void resize(
const size_t nElements) {
143 throw std::logic_error(
format(
"Try to change the size of a %u-CArray to %u.",static_cast<unsigned>(N),static_cast<unsigned>(nElements)));
158 template <
typename T2>
167 for (
size_t i=0;i<N;i++)
elems[i]=value;
170 void assign (
const size_t n,
const T& value)
173 for (
size_t i=0;i<N;i++)
elems[i]=value;
177 template<
typename I>
void assign(I b,
const I &e) {
186 throw std::out_of_range(
"CArray<>: index out of range");
193 template <
typename T>
215 #if !defined(BOOST_MSVC_STD_ITERATOR) && !defined(BOOST_NO_STD_ITERATOR_TRAITS)
218 #elif defined(_MSC_VER) && (_MSC_VER == 1300) && defined(BOOST_DINKUMWARE_STDLIB) && (BOOST_DINKUMWARE_STDLIB == 310)
241 throw std::out_of_range(
"CArray<0>: index out of range");
244 throw std::out_of_range(
"<0>: index out of range");
249 static bool empty() {
return true; }
259 const T*
data()
const {
return NULL; }
263 template <
typename T2 >
285 throw std::out_of_range(
"CArray<0>: index out of range");
290 template<
class T, std::
size_t N>
294 template<
class T, std::
size_t N>
296 return std::lexicographical_compare(x.begin(),x.end(),y.begin(),y.end());
298 template<
class T, std::
size_t N>
302 template<
class T, std::
size_t N>
306 template<
class T, std::
size_t N>
310 template<
class T, std::
size_t N>
323 template <
typename T, std::
size_t N>
327 typedef Eigen::Matrix<T,N,1>
Base;
336 template <class ARRAYLIKE>
339 template<
typename OtherDerived>
341 Base::operator=(other);
351 template <std::
size_t N>
364 template <class ARRAYLIKE>
371 template <std::
size_t N>
384 template <class ARRAYLIKE>
391 template <std::
size_t N>
405 template <std::
size_t N>
420 typedef Eigen::Matrix<size_t,2,1>
Base;
426 inline bool operator==(
const CMatrixTemplateSize&o)
const {
return Eigen::Matrix<size_t,2,1>::operator()(0)==o[0] && Eigen::Matrix<size_t,2,1>::operator()(1)==o[1]; }
429 inline operator size_t(
void)
const {
return Eigen::Matrix<size_t,2,1>::operator()(0)*Eigen::Matrix<size_t,2,1>::operator()(1); }
441 static std::string
get() {
return mrpt::format(
"CArrayNumeric<double,%u>",static_cast<unsigned int>(N)); } };
443 static std::string
get() {
return mrpt::format(
"CArrayNumeric<float,%u>",static_cast<unsigned int>(N)); } };