code format
This commit is contained in:
@@ -13,22 +13,22 @@
|
||||
//! Андрей Бычков work.a.b@yandex.ru;
|
||||
//! \~\}
|
||||
/*
|
||||
PIP - Platform Independent Primitives
|
||||
Base macros for generic containers
|
||||
Ivan Pelipenko peri4ko@yandex.ru
|
||||
PIP - Platform Independent Primitives
|
||||
Base macros for generic containers
|
||||
Ivan Pelipenko peri4ko@yandex.ru
|
||||
|
||||
This program 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 version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
This program 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 version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser General Public License for more details.
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef PICONTAINERS_H
|
||||
@@ -41,23 +41,24 @@
|
||||
#else
|
||||
# include <malloc.h>
|
||||
#endif
|
||||
#include <initializer_list>
|
||||
#include <type_traits>
|
||||
#include <string.h>
|
||||
#include <new>
|
||||
#include <algorithm>
|
||||
#include <functional>
|
||||
#include <initializer_list>
|
||||
#include <new>
|
||||
#include <string.h>
|
||||
#include <type_traits>
|
||||
|
||||
|
||||
template <typename C>
|
||||
template<typename C>
|
||||
class _PIReverseWrapper {
|
||||
public:
|
||||
_PIReverseWrapper(C & c): c_(c) {}
|
||||
_PIReverseWrapper(const C & c): c_(const_cast<C&>(c)) {}
|
||||
typename C::reverse_iterator begin() {return c_.rbegin();}
|
||||
typename C::reverse_iterator end() {return c_.rend(); }
|
||||
typename C::const_reverse_iterator begin() const {return c_.rbegin();}
|
||||
typename C::const_reverse_iterator end() const {return c_.rend(); }
|
||||
_PIReverseWrapper(const C & c): c_(const_cast<C &>(c)) {}
|
||||
typename C::reverse_iterator begin() { return c_.rbegin(); }
|
||||
typename C::reverse_iterator end() { return c_.rend(); }
|
||||
typename C::const_reverse_iterator begin() const { return c_.rbegin(); }
|
||||
typename C::const_reverse_iterator end() const { return c_.rend(); }
|
||||
|
||||
private:
|
||||
C & c_;
|
||||
};
|
||||
@@ -71,15 +72,24 @@ public:
|
||||
template<typename T>
|
||||
class _PIContainerConstants {
|
||||
public:
|
||||
static size_t minCountPoT() {static size_t ret = _PIContainerConstantsBase::calcMinCountPoT(sizeof(T)); return ret;}
|
||||
static size_t minCountPoT() {
|
||||
static size_t ret = _PIContainerConstantsBase::calcMinCountPoT(sizeof(T));
|
||||
return ret;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
//! \brief
|
||||
//! \~english Template reverse wrapper over any container
|
||||
//! \~russian Шаблонная функция обертки любого контейнера для обратного доступа через итераторы
|
||||
template <typename C> _PIReverseWrapper<C> PIReverseWrap(C & c) {return _PIReverseWrapper<C>(c);}
|
||||
template <typename C> _PIReverseWrapper<C> PIReverseWrap(const C & c) {return _PIReverseWrapper<C>(c);}
|
||||
template<typename C>
|
||||
_PIReverseWrapper<C> PIReverseWrap(C & c) {
|
||||
return _PIReverseWrapper<C>(c);
|
||||
}
|
||||
template<typename C>
|
||||
_PIReverseWrapper<C> PIReverseWrap(const C & c) {
|
||||
return _PIReverseWrapper<C>(c);
|
||||
}
|
||||
|
||||
|
||||
//! \brief
|
||||
@@ -88,7 +98,7 @@ template <typename C> _PIReverseWrapper<C> PIReverseWrap(const C & c) {return _P
|
||||
//! \~\param c
|
||||
//! \~english Iteration times in loop
|
||||
//! \~russian Количество итераций цикла
|
||||
#define piForTimes(c) for(int _i##c = 0; _i##c < c; ++_i##c)
|
||||
#define piForTimes(c) for (int _i##c = 0; _i##c < c; ++_i##c)
|
||||
|
||||
|
||||
//! \brief
|
||||
@@ -120,7 +130,7 @@ template <typename C> _PIReverseWrapper<C> PIReverseWrap(const C & c) {return _P
|
||||
//! // 4
|
||||
//! \endcode
|
||||
//! \sa \a piForeachC, \a piForeachR, \a piForeachRC
|
||||
#define piForeach(i, c) for(i : c)
|
||||
#define piForeach(i, c) for (i: c)
|
||||
|
||||
//! \brief
|
||||
//! \~english Macro for iterate any container
|
||||
@@ -136,7 +146,7 @@ template <typename C> _PIReverseWrapper<C> PIReverseWrap(const C & c) {return _P
|
||||
//! \~russian Перебор всех элементов контейнера с доступом только на чтение.
|
||||
//! Перебор осуществляется в прямом порядке.
|
||||
//! \~ \sa \a piForeach, \a piForeachR, \a piForeachRC
|
||||
#define piForeachC(i, c) for(const i : c)
|
||||
#define piForeachC(i, c) for (const i: c)
|
||||
|
||||
//! \brief
|
||||
//! \~english Macro for iterate any container
|
||||
@@ -152,7 +162,7 @@ template <typename C> _PIReverseWrapper<C> PIReverseWrap(const C & c) {return _P
|
||||
//! \~russian Перебор всех элементов контейнера с доступом на чтение и запись.
|
||||
//! Перебор осуществляется в обратном порядке.
|
||||
//! \~ \sa \a piForeach, \a piForeachC, \a piForeachRC
|
||||
#define piForeachR(i, c) for(i : PIReverseWrap(c))
|
||||
#define piForeachR(i, c) for (i: PIReverseWrap(c))
|
||||
|
||||
//! \brief
|
||||
//! \~english Macro for iterate any container
|
||||
@@ -168,8 +178,8 @@ template <typename C> _PIReverseWrapper<C> PIReverseWrap(const C & c) {return _P
|
||||
//! \~russian Перебор всех элементов контейнера с доступом только на чтение.
|
||||
//! Перебор осуществляется в обратном порядке. Также можно писать **piForeachCR**
|
||||
//! \~ \sa \a piForeach, \a piForeachC, \a piForeachR
|
||||
#define piForeachRC(i, c) for(const i : PIReverseWrap(c))
|
||||
#define piForeachCR piForeachRC
|
||||
#define piForeachRC(i, c) for (const i: PIReverseWrap(c))
|
||||
#define piForeachCR piForeachRC
|
||||
|
||||
|
||||
//! \~\brief
|
||||
@@ -177,8 +187,10 @@ template <typename C> _PIReverseWrapper<C> PIReverseWrap(const C & c) {return _P
|
||||
//! \~russian Порядок обхода для функции изменения размерности reshape().
|
||||
//! \~ \sa \a PIVector::reshape(), \a PIDeque::reshape()
|
||||
enum ReshapeOrder {
|
||||
ReshapeByRow /*! \~english Traversing elements by line, just as they stay in memory \~russian Обход элементов построчно, так же как они находятся в памяти */,
|
||||
ReshapeByColumn /*! \~english Traversing elements by column \~russian Обход элементов по столбцам */,
|
||||
ReshapeByRow /*! \~english Traversing elements by line, just as they stay in memory \~russian Обход элементов построчно, так же как они
|
||||
находятся в памяти */
|
||||
,
|
||||
ReshapeByColumn /*! \~english Traversing elements by column \~russian Обход элементов по столбцам */,
|
||||
};
|
||||
|
||||
#endif // PICONTAINERS_H
|
||||
|
||||
Reference in New Issue
Block a user