more ai generated doc with human review
This commit is contained in:
@@ -49,14 +49,28 @@
|
||||
#include <type_traits>
|
||||
|
||||
|
||||
//! \~english Reverse wrapper template class for iterating containers in reverse order.
|
||||
//! \~russian Класс-обертка для обратного обхода контейнера через итераторы.
|
||||
template<typename C>
|
||||
class _PIReverseWrapper {
|
||||
public:
|
||||
//! \~english Constructor from non-const container reference.
|
||||
//! \~russian Конструктор из неконстантной ссылки на контейнер.
|
||||
_PIReverseWrapper(C & c): c_(c) {}
|
||||
//! \~english Constructor from const container reference.
|
||||
//! \~russian Конструктор из константной ссылки на контейнер.
|
||||
_PIReverseWrapper(const C & c): c_(const_cast<C &>(c)) {}
|
||||
//! \~english Returns reverse iterator to the first element.
|
||||
//! \~russian Возвращает обратный итератор на первый элемент.
|
||||
typename C::reverse_iterator begin() { return c_.rbegin(); }
|
||||
//! \~english Returns reverse iterator past the last element.
|
||||
//! \~russian Возвращает обратный итератор за последний элемент.
|
||||
typename C::reverse_iterator end() { return c_.rend(); }
|
||||
//! \~english Returns const reverse iterator to the first element.
|
||||
//! \~russian Возвращает константный обратный итератор на первый элемент.
|
||||
typename C::const_reverse_iterator begin() const { return c_.rbegin(); }
|
||||
//! \~english Returns const reverse iterator past the last element.
|
||||
//! \~russian Возвращает константный обратный итератор за последний элемент.
|
||||
typename C::const_reverse_iterator end() const { return c_.rend(); }
|
||||
|
||||
private:
|
||||
@@ -64,32 +78,47 @@ private:
|
||||
};
|
||||
|
||||
|
||||
//! \~english Base class for container constants calculation.
|
||||
//! \~russian Базовый класс для вычисления констант контейнера.
|
||||
class PIP_EXPORT _PIContainerConstantsBase {
|
||||
public:
|
||||
//! \~english Calculate minimum elements count for power of two growth.
|
||||
//! \~russian Вычисляет минимальное количество элементов для роста кратного двум.
|
||||
static size_t calcMinCountPoT(size_t szof);
|
||||
//! \~english Calculate maximum elements count for power of two growth.
|
||||
//! \~russian Вычисляет максимальное количество элементов для роста кратного двум.
|
||||
static size_t calcMaxCountForPoT(size_t szof);
|
||||
//! \~english Calculate step size after power of two growth.
|
||||
//! \~russian Вычисляет размер шага после роста кратного двум.
|
||||
static size_t calcStepAfterPoT(size_t szof);
|
||||
};
|
||||
|
||||
//! \~english Template class for container constants based on element type size.
|
||||
//! \~russian Шаблонный класс для констант контейнера на основе размера типа элемента.
|
||||
template<typename T>
|
||||
class _PIContainerConstants {
|
||||
public:
|
||||
// minimum elements for container
|
||||
//! \~english Get minimum elements count for power of two growth.
|
||||
//! \~russian Возвращает минимальное количество элементов для роста кратного двум.
|
||||
static size_t minCountPoT() {
|
||||
static const size_t ret = _PIContainerConstantsBase::calcMinCountPoT(sizeof(T));
|
||||
return ret;
|
||||
}
|
||||
// maximum elements for 2^n growth
|
||||
//! \~english Get maximum elements count for power of two growth.
|
||||
//! \~russian Возвращает максимальное количество элементов для роста кратного двум.
|
||||
static size_t maxCountForPoT() {
|
||||
static const size_t ret = _PIContainerConstantsBase::calcMaxCountForPoT(sizeof(T));
|
||||
return ret;
|
||||
}
|
||||
// add elements after 2^n growth
|
||||
//! \~english Get step size after power of two growth.
|
||||
//! \~russian Возвращает размер шага после роста кратного двум.
|
||||
static size_t stepAfterPoT() {
|
||||
static const size_t ret = _PIContainerConstantsBase::calcStepAfterPoT(sizeof(T));
|
||||
return ret;
|
||||
}
|
||||
|
||||
//! \~english Calculate new container size based on old and requested size.
|
||||
//! \~russian Вычисляет новый размер контейнера на основе старого и запрошенного размера.
|
||||
static size_t calcNewSize(size_t old_size, size_t new_size) {
|
||||
if (new_size == 0) return 0;
|
||||
if (new_size < maxCountForPoT()) {
|
||||
|
||||
Reference in New Issue
Block a user