foobar2000 SDK  2015-01-14
Public Types | Public Member Functions | Private Member Functions | Private Attributes
pfc::stringcvt::string_wide_from_utf8_t< t_alloc >

#include <string_conv.h>

Public Types

enum  { alloc_prioritizes_speed = t_alloc<wchar_t>::alloc_prioritizes_speed }
 

Public Member Functions

 string_wide_from_utf8_t ()
 
 string_wide_from_utf8_t (const char *p_source)
 
 string_wide_from_utf8_t (const char *p_source, t_size p_source_size)
 
void append (const char *p_source, t_size p_source_size)
 
void append (const char *p_source)
 
void convert (const char *p_source, t_size p_source_size)
 
void convert (const char *p_source)
 
const wchar_t * get_ptr () const
 
bool is_empty () const
 
t_size length () const
 
 operator const wchar_t * () const
 

Private Member Functions

t_size estimate_size (const char *source, t_size sourceLen)
 
t_size estimate_size (const char *source)
 

Private Attributes

char_buffer_t< wchar_t, t_alloc > m_buffer
 

Detailed Description

template<template< typename t_allocitem > class t_alloc = pfc::alloc_standard>
class pfc::stringcvt::string_wide_from_utf8_t< t_alloc >

Definition at line 116 of file string_conv.h.

Member Enumeration Documentation

template<template< typename t_allocitem > class t_alloc = pfc::alloc_standard>
anonymous enum
Enumerator
alloc_prioritizes_speed 

Definition at line 149 of file string_conv.h.

Constructor & Destructor Documentation

template<template< typename t_allocitem > class t_alloc = pfc::alloc_standard>
pfc::stringcvt::string_wide_from_utf8_t< t_alloc >::string_wide_from_utf8_t ( )
inline

Definition at line 118 of file string_conv.h.

118 {}
template<template< typename t_allocitem > class t_alloc = pfc::alloc_standard>
pfc::stringcvt::string_wide_from_utf8_t< t_alloc >::string_wide_from_utf8_t ( const char *  p_source)
inline

Definition at line 119 of file string_conv.h.

119 {convert(p_source);}
void convert(const char *p_source, t_size p_source_size)
Definition: string_conv.h:122
template<template< typename t_allocitem > class t_alloc = pfc::alloc_standard>
pfc::stringcvt::string_wide_from_utf8_t< t_alloc >::string_wide_from_utf8_t ( const char *  p_source,
t_size  p_source_size 
)
inline

Definition at line 120 of file string_conv.h.

120 {convert(p_source,p_source_size);}
void convert(const char *p_source, t_size p_source_size)
Definition: string_conv.h:122

Member Function Documentation

template<template< typename t_allocitem > class t_alloc = pfc::alloc_standard>
void pfc::stringcvt::string_wide_from_utf8_t< t_alloc >::append ( const char *  p_source,
t_size  p_source_size 
)
inline

Definition at line 137 of file string_conv.h.

137  {
138  const t_size base = length();
139  const t_size size = estimate_size(p_source, p_source_size);
140  m_buffer.set_size(base + size);
141  convert_utf8_to_wide( m_buffer.get_ptr_var() + base, size, p_source, p_source_size );
142  }
t_size estimate_size(const char *source, t_size sourceLen)
Definition: string_conv.h:152
size_t t_size
Definition: int_types.h:48
t_size convert_utf8_to_wide(wchar_t *p_out, t_size p_out_size, const char *p_in, t_size p_in_size)
Converts UTF-8 characters to wide character.
char_buffer_t< wchar_t, t_alloc > m_buffer
Definition: string_conv.h:158
void set_size(t_size p_count)
Definition: string_conv.h:83
template<template< typename t_allocitem > class t_alloc = pfc::alloc_standard>
void pfc::stringcvt::string_wide_from_utf8_t< t_alloc >::append ( const char *  p_source)
inline

Definition at line 143 of file string_conv.h.

143  {
144  const t_size base = length();
145  m_buffer.set_size( base + estimate_size(p_source) );
147  }
t_size estimate_size(const char *source, t_size sourceLen)
Definition: string_conv.h:152
size_t t_size
Definition: int_types.h:48
t_size convert_utf8_to_wide_unchecked(wchar_t *p_out, const char *p_in)
char_buffer_t< wchar_t, t_alloc > m_buffer
Definition: string_conv.h:158
void set_size(t_size p_count)
Definition: string_conv.h:83
template<template< typename t_allocitem > class t_alloc = pfc::alloc_standard>
void pfc::stringcvt::string_wide_from_utf8_t< t_alloc >::convert ( const char *  p_source,
t_size  p_source_size 
)
inline

Definition at line 122 of file string_conv.h.

122  {
123  const t_size size = estimate_size(p_source, p_source_size);
124  m_buffer.set_size(size);
125  convert_utf8_to_wide( m_buffer.get_ptr_var(),size,p_source,p_source_size );
126  }
t_size estimate_size(const char *source, t_size sourceLen)
Definition: string_conv.h:152
size_t t_size
Definition: int_types.h:48
t_size convert_utf8_to_wide(wchar_t *p_out, t_size p_out_size, const char *p_in, t_size p_in_size)
Converts UTF-8 characters to wide character.
char_buffer_t< wchar_t, t_alloc > m_buffer
Definition: string_conv.h:158
void set_size(t_size p_count)
Definition: string_conv.h:83
template<template< typename t_allocitem > class t_alloc = pfc::alloc_standard>
void pfc::stringcvt::string_wide_from_utf8_t< t_alloc >::convert ( const char *  p_source)
inline

Definition at line 127 of file string_conv.h.

127  {
128  m_buffer.set_size( estimate_size(p_source) );
130  }
t_size estimate_size(const char *source, t_size sourceLen)
Definition: string_conv.h:152
t_size convert_utf8_to_wide_unchecked(wchar_t *p_out, const char *p_in)
char_buffer_t< wchar_t, t_alloc > m_buffer
Definition: string_conv.h:158
void set_size(t_size p_count)
Definition: string_conv.h:83
template<template< typename t_allocitem > class t_alloc = pfc::alloc_standard>
t_size pfc::stringcvt::string_wide_from_utf8_t< t_alloc >::estimate_size ( const char *  source,
t_size  sourceLen 
)
inlineprivate

Definition at line 152 of file string_conv.h.

152  {
153  return alloc_prioritizes_speed ? estimate_utf8_to_wide_quick(source, sourceLen) : estimate_utf8_to_wide(source,sourceLen);
154  }
t_size estimate_utf8_to_wide(const char *p_in)
t_size estimate_utf8_to_wide_quick(t_size sourceLen)
estimate_utf8_to_wide_quick() functions use simple math to determine buffer size required for the con...
Definition: string_conv.h:52
template<template< typename t_allocitem > class t_alloc = pfc::alloc_standard>
t_size pfc::stringcvt::string_wide_from_utf8_t< t_alloc >::estimate_size ( const char *  source)
inlineprivate

Definition at line 155 of file string_conv.h.

155  {
157  }
t_size estimate_utf8_to_wide(const char *p_in)
t_size estimate_utf8_to_wide_quick(t_size sourceLen)
estimate_utf8_to_wide_quick() functions use simple math to determine buffer size required for the con...
Definition: string_conv.h:52
template<template< typename t_allocitem > class t_alloc = pfc::alloc_standard>
const wchar_t* pfc::stringcvt::string_wide_from_utf8_t< t_alloc >::get_ptr ( ) const
inline

Definition at line 133 of file string_conv.h.

133 {return m_buffer.get_ptr();}
const t_char * get_ptr() const
Definition: string_conv.h:85
char_buffer_t< wchar_t, t_alloc > m_buffer
Definition: string_conv.h:158
template<template< typename t_allocitem > class t_alloc = pfc::alloc_standard>
bool pfc::stringcvt::string_wide_from_utf8_t< t_alloc >::is_empty ( ) const
inline

Definition at line 134 of file string_conv.h.

134 {return string_is_empty_t(get_ptr());}
bool string_is_empty_t(const t_char *p_string, t_size p_string_size=~0)
Definition: string_conv.h:74
const wchar_t * get_ptr() const
Definition: string_conv.h:133
template<template< typename t_allocitem > class t_alloc = pfc::alloc_standard>
t_size pfc::stringcvt::string_wide_from_utf8_t< t_alloc >::length ( ) const
inline

Definition at line 135 of file string_conv.h.

135 {return strlen_t(get_ptr());}
const wchar_t * get_ptr() const
Definition: string_conv.h:133
t_size strlen_t(const t_char *p_string, t_size p_string_size=~0)
Definition: string_conv.h:67
template<template< typename t_allocitem > class t_alloc = pfc::alloc_standard>
pfc::stringcvt::string_wide_from_utf8_t< t_alloc >::operator const wchar_t * ( ) const
inline

Definition at line 132 of file string_conv.h.

132 {return get_ptr();}
const wchar_t * get_ptr() const
Definition: string_conv.h:133

Field Documentation

template<template< typename t_allocitem > class t_alloc = pfc::alloc_standard>
char_buffer_t<wchar_t,t_alloc> pfc::stringcvt::string_wide_from_utf8_t< t_alloc >::m_buffer
private

Definition at line 158 of file string_conv.h.


The documentation for this class was generated from the following file: