Table Of Contents

Previous topic

Sprout.String

Next topic

assign

This Page

char_traits

Interface

template<typename Char>
struct char_traits;

Description

Member types

type definition
char_type std::char_traits<Char>::char_type
int_type std::char_traits<Char>::int_type
off_type std::char_traits<Char>::off_type
pos_type std::char_traits<Char>::pos_type
state_type std::char_traits<Char>::state_type

Static member functions

character operations

function  
assign  
eq  
lt  

string operations

function  
compare  
length  
find  
move  
copy  
assign  

integer type operations

function  
not_eof  
to_char_type  
to_int_type  
eq_int_type  
eof  

string operations (for iterator)

function  
compare  
length  
find  
move  
copy  
assign  

Interface of all

template<typename Char>
struct char_traits {
  // types:
  typedef typename std::char_traits<Char>::char_type char_type;
  typedef typename std::char_traits<Char>::int_type int_type;
  typedef typename std::char_traits<Char>::off_type off_type;
  typedef typename std::char_traits<Char>::pos_type pos_type;
  typedef typename std::char_traits<Char>::state_type state_type;

  // character operations:
  static SPROUT_CXX14_CONSTEXPR void assign(char_type& c1, char_type const& c2) SPROUT_NOEXCEPT;
  static SPROUT_CONSTEXPR bool eq(char_type c1, char_type c2) SPROUT_NOEXCEPT;
  static SPROUT_CONSTEXPR bool lt(char_type c1, char_type c2) SPROUT_NOEXCEPT;

  // string operations:
  static SPROUT_CONSTEXPR int compare(char_type const* s1, char_type const* s2, std::size_t n);
  static SPROUT_CONSTEXPR std::size_t length(char_type const* s);
  static SPROUT_CONSTEXPR char_type const* find(char_type const* s, std::size_t n, char_type const& a);
  static SPROUT_CXX14_CONSTEXPR char_type* move(char_type* s1, char_type const* s2, std::size_t n);
  static SPROUT_CXX14_CONSTEXPR char_type* copy(char_type* s1, char_type const* s2, std::size_t n);
  static SPROUT_CXX14_CONSTEXPR char_type* assign(char_type* s, std::size_t n, char_type a);

  // integer type operations:
  static SPROUT_CONSTEXPR int_type not_eof(int_type c) SPROUT_NOEXCEPT;
  static SPROUT_CONSTEXPR char_type to_char_type(int_type c) SPROUT_NOEXCEPT;
  static SPROUT_CONSTEXPR int_type to_int_type(char_type c) SPROUT_NOEXCEPT;
  static SPROUT_CONSTEXPR bool eq_int_type(int_type c1, int_type c2) SPROUT_NOEXCEPT;
  static SPROUT_CONSTEXPR int_type eof() SPROUT_NOEXCEPT;

  // string operations (for iterator):
  template<typename ConstInputIterator>
  static SPROUT_CONSTEXPR int compare(char_type const* s1, ConstInputIterator s2, std::size_t n);
  template<typename ConstInputIterator>
  static SPROUT_CONSTEXPR int compare(ConstInputIterator s1, char_type const* s2, std::size_t n);
  template<typename ConstInputIterator1, typename ConstInputIterator2>
  static SPROUT_CONSTEXPR int compare(ConstInputIterator1 s1, ConstInputIterator2 s2, std::size_t n);
  template<typename ConstInputIterator>
  static SPROUT_CONSTEXPR std::size_t length(ConstInputIterator s);
  template<typename ConstInputIterator>
  static SPROUT_CONSTEXPR ConstInputIterator find(ConstInputIterator s, std::size_t n, char_type const& a);
  template<typename OutputIterator, typename ConstInputIterator>
  static SPROUT_CXX14_CONSTEXPR OutputIterator move(OutputIterator s1, ConstInputIterator s2, std::size_t n);
  template<typename OutputIterator, typename ConstInputIterator>
  static SPROUT_CXX14_CONSTEXPR OutputIterator copy(OutputIterator s1, ConstInputIterator s2, std::size_t n);
  template<typename OutputIterator>
  static SPROUT_CXX14_CONSTEXPR OutputIterator assign(OutputIterator s, std::size_t n, char_type a);
};