@@ -689,7 +689,7 @@ public:
//! \endcode
//! \~\sa \a every(), \a contains(), \a entries(), \a forEach()
inline bool any ( std : : function < bool ( const T & e ) > test ) const {
for ( s size_t i = pid_start ; i < pid_start + ( ssize_t ) pid_size ; + + i ) {
for ( size_t i = pid_start ; i < pid_start + pid_size ; + + i ) {
if ( test ( pid_data [ i ] ) ) return true ;
}
return false ;
@@ -714,7 +714,7 @@ public:
//! \endcode
//! \~\sa \a any(), \a contains(), \a entries(), \a forEach()
inline bool every ( std : : function < bool ( const T & e ) > test ) const {
for ( s size_t i = pid_start ; i < pid_start + ( ssize_t ) pid_size ; + + i ) {
for ( size_t i = pid_start ; i < pid_start + pid_size ; + + i ) {
if ( ! test ( pid_data [ i ] ) ) return false ;
}
return true ;
@@ -825,7 +825,7 @@ public:
start = pid_size + start ;
if ( start < 0 ) start = 0 ;
}
for ( s size_t i = pid_start + start ; i < pid_start + ( ssize_t ) pid_size ; + + i ) {
for ( size_t i = pid_start + size_t ( start ) ; i < pid_start + pid_size ; + + i ) {
if ( e = = pid_data [ i ] ) return true ;
}
return false ;
@@ -856,13 +856,13 @@ public:
//! piCout << v.entries(2, -4); // 2
//! \endcode
//! \~\sa \a every(), \a any(), \a contains(), \a forEach(), \a indexOf()
inline int entries ( const T & e , size_t start = 0 ) const {
inline int entries ( const T & e , s size_t start = 0 ) const {
int ec = 0 ;
if ( start < 0 ) {
start = pid_size + start ;
if ( start < 0 ) start = 0 ;
}
for ( s size_t i = pid_start + start ; i < pid_start + ( ssize_t ) pid_size ; + + i ) {
for ( size_t i = pid_start + size_t ( start ) ; i < pid_start + pid_size ; + + i ) {
if ( e = = pid_data [ i ] ) + + ec ;
}
return ec ;
@@ -890,13 +890,13 @@ public:
//! Обратите внимание: если индекс отрицателен, массив всё равно просматривается от начала к концу.
//! Значение по умолчанию равно 0, что означает, что просматривается весь массив.
//! \~\sa \a every(), \a any(), \a contains(), \a forEach(), \a indexWhere()
inline int entries ( std : : function < bool ( const T & e ) > test , size_t start = 0 ) const {
inline int entries ( std : : function < bool ( const T & e ) > test , s size_t start = 0 ) const {
int ec = 0 ;
if ( start < 0 ) {
start = pid_size + start ;
if ( start < 0 ) start = 0 ;
}
for ( s size_t i = pid_start + start ; i < pid_start + ( ssize_t ) pid_size ; + + i ) {
for ( size_t i = pid_start + size_t ( start ) ; i < pid_start + pid_size ; + + i ) {
if ( test ( pid_data [ i ] ) ) + + ec ;
}
return ec ;
@@ -931,14 +931,14 @@ public:
//! piCout << v.indexOf(2, -3); // 0
//! \endcode
//! \~\sa \a indexWhere(), \a lastIndexOf(), \a lastIndexWhere(), \a contains()
inline ssize_t indexOf ( const T & e , size_t start = 0 ) const {
inline ssize_t indexOf ( const T & e , s size_t start = 0 ) const {
if ( start < 0 ) {
start = pid_size + start ;
if ( start < 0 ) start = 0 ;
}
for ( s size_t i = pid_start + start ; i < pid_start + ( ssize_t ) pid_size ; + + i ) {
for ( size_t i = pid_start + size_t ( start ) ; i < pid_start + pid_size ; + + i ) {
if ( e = = pid_data [ i ] ) {
return i - pid_start ;
return ssize_t ( i ) - pid_start ;
}
}
return - 1 ;
@@ -972,14 +972,14 @@ public:
//! piCout << v.indexWhere([](const PIString & s){return s.startsWith('k');}); // -1
//! \endcode
//! \~\sa \a indexOf(), \a lastIndexOf(), \a lastIndexWhere(), \a contains()
inline ssize_t indexWhere ( std : : function < bool ( const T & e ) > test , size_t start = 0 ) const {
inline ssize_t indexWhere ( std : : function < bool ( const T & e ) > test , s size_t start = 0 ) const {
if ( start < 0 ) {
start = pid_size + start ;
if ( start < 0 ) start = 0 ;
}
for ( s size_t i = pid_start + start ; i < pid_start + ( ssize_t ) pid_size ; + + i ) {
for ( size_t i = pid_start + size_t ( start ) ; i < pid_start + pid_size ; + + i ) {
if ( test ( pid_data [ i ] ) ) {
return i - pid_start ;
return ssize_t ( i ) - pid_start ;
}
}
return - 1 ;
@@ -1022,9 +1022,9 @@ public:
inline ssize_t lastIndexOf ( const T & e , ssize_t start = - 1 ) const {
if ( start > = size_s ( ) ) start = pid_size - 1 ;
if ( start < 0 ) start = pid_size + start ;
for ( s size_t i = pid_start + start ; i > = pid_start ; - - i ) {
for ( size_t i = pid_start + size_t ( start ) ; i > = pid_start ; - - i ) {
if ( e = = pid_data [ i ] ) {
return i - pid_start ;
return ssize_t ( i ) - pid_start ;
}
}
return - 1 ;
@@ -1058,9 +1058,9 @@ public:
inline ssize_t lastIndexWhere ( std : : function < bool ( const T & e ) > test , ssize_t start = - 1 ) const {
if ( start > = size_s ( ) ) start = pid_size - 1 ;
if ( start < 0 ) start = pid_size + start ;
for ( s size_t i = pid_start + start ; i > = pid_start ; - - i ) {
for ( size_t i = pid_start + size_t ( start ) ; i > = pid_start ; - - i ) {
if ( test ( pid_data [ i ] ) ) {
return i - pid_start ;
return ssize_t ( i ) - pid_start ;
}
}
return - 1 ;
@@ -1406,7 +1406,7 @@ public:
inline PIDeque < T > & insert ( size_t index , std : : initializer_list < T > init_list ) {
bool dir = pid_rsize < = 2 ? true : ( index > = pid_rsize / 2 ? true : false ) ;
if ( dir ) {
ssize_t os = pid_size - index ;
ssize_t os = ssize_t ( pid_size ) - index ;
alloc_forward ( pid_size + init_list . size ( ) ) ;
if ( os > 0 ) {
memmove ( ( void * ) ( & ( pid_data [ index + pid_start + init_list . size ( ) ] ) ) , ( const void * ) ( & ( pid_data [ index + pid_start ] ) ) , os * sizeof ( T ) ) ;
@@ -1461,7 +1461,7 @@ public:
piSwap < T * > ( pid_data , other . pid_data ) ;
piSwap < size_t > ( pid_size , other . pid_size ) ;
piSwap < size_t > ( pid_rsize , other . pid_rsize ) ;
piSwap < s size_t> ( pid_start , other . pid_start ) ;
piSwap < size_t > ( pid_start , other . pid_start ) ;
}
//! \~english Sorts the elements in non-descending order.
@@ -1608,7 +1608,7 @@ public:
//! \endcode
//! \~\sa \a remove(), \a removeOne(), \a removeWhere()
inline PIDeque < T > & removeAll ( const T & e ) {
for ( s size_t i = 0 ; i < ssize_t ( pid_size ) ; + + i ) {
for ( size_t i = 0 ; i < pid_size ; + + i ) {
if ( pid_data [ i + pid_start ] = = e ) {
remove ( i ) ;
- - i ;
@@ -1629,7 +1629,7 @@ public:
//! \endcode
//! \~\sa \a remove(), \a removeOne(), \a removeWhere()
inline PIDeque < T > & removeWhere ( std : : function < bool ( const T & e ) > test ) {
for ( s size_t i = 0 ; i < ssize_t ( pid_size ) ; + + i ) {
for ( size_t i = 0 ; i < pid_size ; + + i ) {
if ( test ( pid_data [ i + pid_start ] ) ) {
remove ( i ) ;
- - i ;
@@ -1938,7 +1938,7 @@ public:
//! Добавляет элементы из
//! [списка инициализации C++11](https://ru.cppreference.com/w/cpp/utility/initializer_list).
//! \~\sa \a append()
inline PIDeque < T > & prepend ( std : : initializer_list < T > init_list ) { return prepend ( init_list ) ; }
inline PIDeque < T > & prepend ( std : : initializer_list < T > init_list ) { return push_front ( init_list ) ; }
//! \~english Remove one element from the end of the array.
//! \~russian Удаляет один элемент с конца массива.
@@ -2280,7 +2280,8 @@ private:
if ( pid_rsize + pid_rsize > = size_t ( s ) & & pid_rsize < size_t ( s ) ) {
return pid_rsize + pid_rsize ;
}
s size_t t = _PIContainerConstants < T > : : minCountPoT ( ) , s_ = s - 1 ;
size_t t = _PIContainerConstants < T > : : minCountPoT ( ) ;
size_t s_ = s - 1 ;
while ( s_ > > t )
+ + t ;
return ( 1 < < t ) ;
@@ -2348,8 +2349,8 @@ private:
inline void checkMove ( ) {
if ( pid_size > = 4 ) {
if ( pid_size < pid_rsize / 6 ) {
if ( pid_start < ssize_t ( pid_size + pid_size ) | | pid_start > ( ssize_t ( pid_rsize ) - ssize_t ( pid_size ) - ssize_t ( pid_size ) ) ) {
s size_t ns = ( pid_rsize - pid_size ) / 2 ;
if ( pid_start < ( pid_size + pid_size ) | | ssize_t ( pid_start ) > ( ssize_t ( pid_rsize ) - ssize_t ( pid_size ) - ssize_t ( pid_size ) ) ) {
size_t ns = ( pid_rsize - pid_size ) / 2 ;
if ( pid_start ! = ns ) {
memmove ( ( void * ) ( pid_data + ns ) , ( const void * ) ( pid_data + pid_start ) , pid_size * sizeof ( T ) ) ;
pid_start = ns ;
@@ -2357,7 +2358,7 @@ private:
}
}
} else {
s size_t ns = ( pid_rsize - pid_size ) / 2 ;
size_t ns = ( pid_rsize - pid_size ) / 2 ;
if ( pid_start ! = ns ) {
memmove ( ( void * ) ( pid_data + ns ) , ( const void * ) ( pid_data + pid_start ) , pid_size * sizeof ( T ) ) ;
pid_start = ns ;
@@ -2387,14 +2388,14 @@ private:
}
inline void alloc_backward ( size_t new_size , ssize_t start_offset = 0 ) { //alloc backward
size_t as ;
if ( pid_start + start_offset < 0 ) {
if ( ssize_t ( pid_start ) + start_offset < 0 ) {
as = asize ( pid_rsize - start_offset ) ;
} else {
as = pid_rsize ;
}
if ( as > pid_rsize ) {
T * td = ( T * ) ( malloc ( as * sizeof ( T ) ) ) ;
s size_t ns = pid_start + as - pid_rsize ;
size_t ns = pid_start + as - pid_rsize ;
PIINTROSPECTION_CONTAINER_ALLOC ( T , ( as - pid_rsize ) )
if ( pid_rsize > 0 & & pid_data ! = 0 ) {
memcpy ( ( void * ) ( td + ns ) , ( const void * ) ( pid_data + pid_start ) , pid_size * sizeof ( T ) ) ;
@@ -2410,8 +2411,9 @@ private:
}
T * pid_data ;
size_t pid_size , pid_rsize ;
s size_t pid_start ;
size_t pid_size ;
size_t pid_rsize ;
size_t pid_start ;
} ;