Program Listing for File Sorted.h
↰ Return to documentation for file (ADS/sort/Sorted.h)
/*--------------------------------------------------------------------------*/
/*----------------------------- File Sorted.h ------------------------------*/
/*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
/*----------------------------- DEFINITIONS --------------------------------*/
/*--------------------------------------------------------------------------*/
#ifndef __ADS_Sorted
#define __ADS_Sorted
/* self-identification: #endif constant */
/*--------------------------------------------------------------------------*/
/*------------------------------ INCLUDES ----------------------------------*/
/*--------------------------------------------------------------------------*/
#include "ADS/Contract.h"
#include <algorithm>
#include <cstddef>
#include <functional>
#include <type_traits>
#include <vector>
/*--------------------------------------------------------------------------*/
/*--------------------------- NAMESPACE ------------------------------------*/
/*--------------------------------------------------------------------------*/
namespace ADS {
[[nodiscard]] bool checkingContract( void );
namespace detail {
template< class F >
bool contract( F && f );
template< class T >
std::vector< T > auditCopy( const std::vector< T > & A , std::size_t lo = 0 ,
std::size_t hi = std::size_t( -1 ) );
template< class T , class C >
bool sortedPermutation( const std::vector< T > & A ,
std::vector< T > before , C less ,
std::size_t lo = 0 ,
std::size_t hi = std::size_t( -1 ) );
template< class T , class C >
bool samePermutation( const std::vector< T > & A ,
std::vector< T > before , C less ,
std::size_t lo = 0 ,
std::size_t hi = std::size_t( -1 ) );
template< class S , class C >
bool sequenceSorted( const S & L , C less );
template< class T , class C >
inline constexpr bool naturalOrder =
std::is_same_v< C , std::less<> > || std::is_same_v< C , std::less< T > >;
} // end( namespace detail )
/*--------------------------------------------------------------------------*/
} // end( namespace ADS )
/*--------------------------------------------------------------------------*/
/*-------------------------- IMPLEMENTATION --------------------------------*/
/*--------------------------------------------------------------------------*/
#include "ADS/sort/impl/Sorted.tpp"
/*--------------------------------------------------------------------------*/
#endif /* Sorted.h included */
/*--------------------------------------------------------------------------*/
/*--------------------------- End File Sorted.h ----------------------------*/
/*--------------------------------------------------------------------------*/