libjmmcg  release_579_6_g8cffd
A C++ library containing an eclectic mix of useful, advanced components.
memops_impl.hpp File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  jmmcg::LIBJMMCG_VER_NAMESPACE::private_::unroll< N >
 
struct  jmmcg::LIBJMMCG_VER_NAMESPACE::private_::unroll< 0ull >
 
struct  jmmcg::LIBJMMCG_VER_NAMESPACE::private_::aligned_unroller< SrcSz, DestSz, Unit, SmallestBuff, Div, Rem >
 
struct  jmmcg::LIBJMMCG_VER_NAMESPACE::private_::aligned_unroller< SrcSz, DestSz, Unit, SmallestBuff, 0, Rem >
 
struct  jmmcg::LIBJMMCG_VER_NAMESPACE::private_::greater_than_eq_512
 
struct  jmmcg::LIBJMMCG_VER_NAMESPACE::private_::greater_than_eq_256
 
struct  jmmcg::LIBJMMCG_VER_NAMESPACE::private_::greater_than_eq_128
 
struct  jmmcg::LIBJMMCG_VER_NAMESPACE::private_::char_sized
 
class  jmmcg::LIBJMMCG_VER_NAMESPACE::private_::select_size< FirstSz >
 
struct  jmmcg::LIBJMMCG_VER_NAMESPACE::private_::strchr_opt< needle, FirstSz, char_sized >
 
struct  jmmcg::LIBJMMCG_VER_NAMESPACE::private_::strstr_opt< FirstSz, SecondSz, char_sized >
 

Namespaces

namespace  jmmcg
 Link with -lrt to include these functions.
 
namespace  jmmcg::LIBJMMCG_VER_NAMESPACE
 
namespace  jmmcg::LIBJMMCG_VER_NAMESPACE::private_
 
namespace  jmmcg::LIBJMMCG_VER_NAMESPACE::private_::bits
 

Functions

template<class T >
constexpr T jmmcg::LIBJMMCG_VER_NAMESPACE::private_::bits::clear_leftmost_set (const T value) noexcept(true)
 
template<class T >
constexpr unsigned jmmcg::LIBJMMCG_VER_NAMESPACE::private_::bits::count_trailing_zeroes (const T value) noexcept(true)=delete
 
template<>
unsigned jmmcg::LIBJMMCG_VER_NAMESPACE::private_::bits::count_trailing_zeroes< std::uint32_t > (const std::uint32_t value) noexcept(true)
 
template<>
unsigned jmmcg::LIBJMMCG_VER_NAMESPACE::private_::bits::count_trailing_zeroes< std::uint64_t > (const std::uint64_t value) noexcept(true)
 
template<>
unsigned jmmcg::LIBJMMCG_VER_NAMESPACE::private_::bits::count_trailing_zeroes< uint128_t > (const uint128_t value) noexcept(true)
 
template<class T >
constexpr unsigned jmmcg::LIBJMMCG_VER_NAMESPACE::private_::bits::count_leading_zeroes (const T value) noexcept(true)=delete
 
template<>
unsigned jmmcg::LIBJMMCG_VER_NAMESPACE::private_::bits::count_leading_zeroes< std::uint32_t > (const std::uint32_t value) noexcept(true)
 
template<>
unsigned jmmcg::LIBJMMCG_VER_NAMESPACE::private_::bits::count_leading_zeroes< std::uint64_t > (const std::uint64_t value) noexcept(true)
 
template<>
unsigned jmmcg::LIBJMMCG_VER_NAMESPACE::private_::bits::count_leading_zeroes< uint128_t > (const uint128_t value) noexcept(true)
 
template<class Iter1 , class Iter2 >
void FORCE_INLINE jmmcg::LIBJMMCG_VER_NAMESPACE::memcpy (Iter1 dest, Iter2 src, std::size_t n) noexcept(true)
 Equivalent to the memcpy operations. More...
 
template<>
void FORCE_INLINE jmmcg::LIBJMMCG_VER_NAMESPACE::memcpy< char *, char const * > (char *dest, char const *src, std::size_t n) noexcept(true)
 
template<>
void FORCE_INLINE jmmcg::LIBJMMCG_VER_NAMESPACE::memcpy< wchar_t *, wchar_t const * > (wchar_t *dest, wchar_t const *src, std::size_t n) noexcept(true)
 
template<class Iter1 , class Iter2 >
void FORCE_INLINE jmmcg::LIBJMMCG_VER_NAMESPACE::memmove (Iter1 dest, Iter2 src, std::size_t n) noexcept(true)
 Equivalent to the memmove operations. More...
 
template<>
void FORCE_INLINE jmmcg::LIBJMMCG_VER_NAMESPACE::memmove< char *, char const * > (char *dest, char const *src, std::size_t n) noexcept(true)
 
template<>
void FORCE_INLINE jmmcg::LIBJMMCG_VER_NAMESPACE::memmove< wchar_t *, wchar_t const * > (wchar_t *dest, wchar_t const *src, std::size_t n) noexcept(true)
 
template<class Iter , class V >
std::enable_if< std::is_same< typename std::iterator_traits< Iter >::value_type, V >::value >::type FORCE_INLINE jmmcg::LIBJMMCG_VER_NAMESPACE::memset (Iter dest, V i, std::size_t n) noexcept(true)
 Equivalent to the memset operations. More...
 
template<>
void FORCE_INLINE jmmcg::LIBJMMCG_VER_NAMESPACE::memset< char *, char > (char *dest, char i, std::size_t n) noexcept(true)
 
template<>
void FORCE_INLINE jmmcg::LIBJMMCG_VER_NAMESPACE::memset< wchar_t *, wchar_t > (wchar_t *dest, wchar_t i, std::size_t n) noexcept(true)
 
template<class Iter >
bool FORCE_INLINE jmmcg::LIBJMMCG_VER_NAMESPACE::memcmp (Iter src1, Iter src2, std::size_t n) noexcept(true)
 Equivalent to the std::memcmp() operations. More...
 
template<>
bool FORCE_INLINE jmmcg::LIBJMMCG_VER_NAMESPACE::memcmp< char const * > (char const *src1, char const *src2, std::size_t n) noexcept(true)
 
template<>
bool FORCE_INLINE jmmcg::LIBJMMCG_VER_NAMESPACE::memcmp< wchar_t const * > (wchar_t const *src1, wchar_t const *src2, std::size_t n) noexcept(true)
 
template<class Val , std::size_t SrcSz, std::size_t DestSz>
void FORCE_INLINE jmmcg::LIBJMMCG_VER_NAMESPACE::memcpy (Val const (&src)[SrcSz], Val(&dest)[DestSz]) noexcept(false)
 
template<std::size_t SrcSz, std::size_t DestSz>
constexpr void FORCE_INLINE jmmcg::LIBJMMCG_VER_NAMESPACE::memcpy_opt (char const (&src)[SrcSz], char(&dest)[DestSz]) noexcept(true)
 Copy the source array to the destination (which may overlap), statically unrolled. More...
 
template<std::size_t FirstSz, std::size_t SecondSz>
constexpr bool FORCE_INLINE jmmcg::LIBJMMCG_VER_NAMESPACE::memcmp_opt (char const (&first)[FirstSz], char const (&second)[SecondSz]) noexcept(true)
 Compare the source array to the destination (which may overlap), statically unrolled. More...
 
template<char const needle, std::size_t FirstSz>
constexpr char const *FORCE_INLINE jmmcg::LIBJMMCG_VER_NAMESPACE::strchr_opt (char const (&haystack)[FirstSz]) noexcept(true) __attribute__((pure))
 Find the first occurrence of the character in the string. More...
 
template<std::size_t FirstSz, std::size_t SecondSz, class LessThan32BytesLong >
constexpr char const *FORCE_INLINE jmmcg::LIBJMMCG_VER_NAMESPACE::strstr_opt (char const (&haystack)[FirstSz], char const (&needle)[SecondSz]) noexcept(true)
 
template<std::size_t SrcSz, std::size_t DestSz>
constexpr void FORCE_INLINE jmmcg::LIBJMMCG_VER_NAMESPACE::memcpy_opt (std::array< char, SrcSz > const &src, std::array< char, DestSz > &dest) noexcept(true)
 
template<std::size_t SrcSz, std::size_t DestSz>
constexpr void FORCE_INLINE jmmcg::LIBJMMCG_VER_NAMESPACE::memcpy_opt (std::array< uint8_t, SrcSz > const &src, std::array< uint8_t, DestSz > &dest) noexcept(true)
 
template<std::size_t Sz>
bool jmmcg::LIBJMMCG_VER_NAMESPACE::memcmp (std::array< char, Sz > const &src1, std::array< char, Sz > const &src2) noexcept(true)
 
template<std::size_t Sz>
bool jmmcg::LIBJMMCG_VER_NAMESPACE::memcmp (std::array< uint8_t, Sz > const &src1, std::array< uint8_t, Sz > const &src2) noexcept(true)
 
template<std::size_t Sz>
bool jmmcg::LIBJMMCG_VER_NAMESPACE::operator== (std::array< char, Sz > const &src1, std::array< char, Sz > const &src2) noexcept(true)
 
template<std::size_t Sz>
bool jmmcg::LIBJMMCG_VER_NAMESPACE::operator== (std::array< uint8_t, Sz > const &src1, std::array< uint8_t, Sz > const &src2) noexcept(true)
 
template<std::size_t SrcSz, std::size_t DestSz>
constexpr void jmmcg::LIBJMMCG_VER_NAMESPACE::memcpy_slow (char const (&src)[SrcSz], char(&dest)[DestSz]) noexcept(true)
 
template<class T , class V >
jmmcg::LIBJMMCG_VER_NAMESPACE::copy (V const &src) noexcept(true)
 
template<std::size_t SrcSz, std::size_t DestSz>
constexpr std::array< char, DestSz > jmmcg::LIBJMMCG_VER_NAMESPACE::copy (std::array< char, SrcSz > const &src) noexcept(true)
 
template<std::size_t SrcSz, std::size_t DestSz>
constexpr std::array< uint8_t, DestSz > jmmcg::LIBJMMCG_VER_NAMESPACE::copy (std::array< uint8_t, SrcSz > const &src) noexcept(true)
 

Variables

struct jmmcg::LIBJMMCG_VER_NAMESPACE::private_::unroll jmmcg::LIBJMMCG_VER_NAMESPACE::private_::__attribute__