libjmmcg  release_579_6_g8cffd
A C++ library containing an eclectic mix of useful, advanced components.
memops.hpp File Reference
#include "blatant_old_msvc_compiler_hacks.hpp"
#include "int128_compatibility.hpp"
#include "max_min.hpp"
#include <boost/mpl/assert.hpp>
#include <algorithm>
#include <cassert>
#include <cstdint>
#include <cstring>
#include <iostream>
#include <memory>
#include "memops_impl.hpp"
Include dependency graph for memops.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

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

Functions

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...
 

Detailed Description

The objective of these template specialisations is to allow the compiler to correctly select the appropriate, high-speed operation.

Definition in file memops.hpp.