codecvt Class Reference
[Encoders]

#include <codecvt.hpp>

Collaboration diagram for codecvt:

Collaboration graph
[legend]
List of all members.

Detailed Description

Class codecvt.

A small class to wrap the libiconv library.

Definition at line 78 of file codecvt.hpp.

Public Types

typedef xchar_t intern_type
typedef char extern_type
typedef mbstate_t state_type

Public Member Functions

 codecvt (const::std::string &encoding_name, size_t refs=0)
 Contructor.

void delete_encoding ()
 Free the libiconv memory.

void create_encoding (const::std::string &encoding_name)
 Allocate the libiconv memory.

virtual ~codecvt ()
 Destructor.


Protected Member Functions

virtual result do_out (state_type &state, const intern_type *from, const intern_type *from_end, const intern_type *&from_next, extern_type *to, extern_type *to_limit, extern_type *&to_next) const
 Conversion internal layer to external layer.

virtual result do_in (state_type &state, const extern_type *from, const extern_type *from_end, const extern_type *&from_next, intern_type *to, intern_type *to_limit, intern_type *&to_next) const
 Conversion external layer to internal layer.

virtual result do_unshift (state_type &state, extern_type *to, extern_type *to_limit, extern_type *&to_next) const
 Put unshift character.

virtual int do_encoding () const throw ()
 Encoding test.

virtual bool do_always_noconv () const throw ()
 The protected virtual member function returns true only.

virtual int do_length (const state_type &state, const extern_type *from, const extern_type *end, size_t max) const
 Number of external char needed to produce less than max internal char.

virtual int do_max_length () const throw ()
 Return the max length encoding.


Member Typedef Documentation

typedef char codecvt::extern_type
 

Definition at line 83 of file codecvt.hpp.

Referenced by do_in(), do_length(), do_out(), and do_unshift().

typedef xchar_t codecvt::intern_type
 

Definition at line 82 of file codecvt.hpp.

Referenced by do_in(), and do_out().

typedef mbstate_t codecvt::state_type
 

Definition at line 84 of file codecvt.hpp.

Referenced by do_in(), do_length(), do_out(), and do_unshift().


Constructor & Destructor Documentation

codecvt::codecvt const::std::string &  encoding_name,
size_t  refs = 0
[explicit]
 

Contructor.

The constructor initializes its locale::facet base object with locale::facet(refs).

If refs==0, the lifetime is managed by the locale that contains this. If refs==1, the memory must be explcitly managed. the behavior for refs>1 is not defined.

Definition at line 80 of file codecvt.cpp.

References create_encoding(), and xchar_t.

codecvt::~codecvt  )  [virtual]
 

Destructor.

Definition at line 91 of file codecvt.cpp.

References delete_encoding().


Member Function Documentation

void codecvt::create_encoding const::std::string &  encoding_name  ) 
 

Allocate the libiconv memory.

Definition at line 103 of file codecvt.cpp.

References _(), codecvt_state::conv_in_out, codecvt_state::conv_out_in, xchar_t, XIMOL_ENCODERS_AS_ERROR, and XIMOL_ENCODERS_THROW.

Referenced by codecvt().

void codecvt::delete_encoding  ) 
 

Free the libiconv memory.

Definition at line 123 of file codecvt.cpp.

References codecvt_state::conv_in_out, and codecvt_state::conv_out_in.

Referenced by ~codecvt().

bool codecvt::do_always_noconv  )  const throw () [protected, virtual]
 

The protected virtual member function returns true only.

If every call to do_in or do_out returns noconv. The template version always returns true.

Definition at line 237 of file codecvt.cpp.

int codecvt::do_encoding  )  const throw () [protected, virtual]
 

Encoding test.

Returns:
The protected virtual member function returns:
  • -1, if the encoding of sequences of type to_type is state dependent
  • 0, if the encoding involves sequences of varying lengths
  • n, if the encoding involves only sequences of length n

Definition at line 230 of file codecvt.cpp.

codecvt::result codecvt::do_in state_type state,
const extern_type from,
const extern_type from_end,
const extern_type *&  from_next,
intern_type to,
intern_type to_limit,
intern_type *&  to_next
const [protected, virtual]
 

Conversion external layer to internal layer.

The protected virtual member function endeavors to convert the source sequence at [from, from_end) to a destination sequence that it stores within [to, to_limit). It always stores in from_next a pointer to the first unconverted element in the source sequence, and it always stores in to_next a pointer to the first unaltered element in the destination sequence.

state must represent the initial conversion state at the beginning of a new source sequence. The function alters its stored value, as needed, to reflect the current state of a successful conversion. Its stored value is otherwise unspecified.

The template version always returns noconv.

Parameters:
state: state transmission.
from: first external char to convert.
from_end: limit external char to convert.
from_next: next external char to convert in return.
to: first internal char destination.
to_limit: internal char destination limit.
to_next: next internal char destination.
Returns:
The function returns:
  • codecvt_base::error if the source sequence is ill formed.
  • codecvt_base::noconv if the function performs no conversion.
  • codecvt_base::ok if the conversion succeeds.
  • codecvt_base::partial if the source is insufficient, or if the destination is not large enough, for the conversion to succeed

Definition at line 175 of file codecvt.cpp.

References codecvt_state::conv_out_in, extern_type, intern_type, and state_type.

int codecvt::do_length const state_type state,
const extern_type from,
const extern_type end,
size_t  max
const [protected, virtual]
 

Number of external char needed to produce less than max internal char.

The protected virtual member function effectively calls do_in(mystate, from, end, next1, buf, buf + max, next2) for mystate a copy of state, some buffer buf, and pointers next1 and next2. It then returns next2 - buf. (Thus, it counts the maximum number of conversions, not greater than max, defined by the source sequence at [from, end).)

The template version always returns the lesser of last1 - first1 and len2.

Definition at line 244 of file codecvt.cpp.

References extern_type, state_type, and XIMOL_MIN.

int codecvt::do_max_length  )  const throw () [protected, virtual]
 

Return the max length encoding.

The protected virtual member function returns the largest permissible value that can be returned by do_length(first1, last1, 1), for arbitrary valid values of first1 and last1.

The template version always returns 1.

Definition at line 254 of file codecvt.cpp.

codecvt::result codecvt::do_out state_type state,
const intern_type from,
const intern_type from_end,
const intern_type *&  from_next,
extern_type to,
extern_type to_limit,
extern_type *&  to_next
const [protected, virtual]
 

Conversion internal layer to external layer.

The protected virtual member function endeavors to convert the source sequence at [from, from_end) to a destination sequence that it stores within [to, to_limit). It always stores in from_next a pointer to the first unconverted element in the source sequence, and it always stores in to_next a pointer to the first unaltered element in the destination sequence.

state must represent the initial conversion state at the beginning of a new source sequence. The function alters its stored value, as needed, to reflect the current state of a successful conversion. Its stored value is otherwise unspecified.

The template version always returns noconv.

Parameters:
state: state transmission.
from: first internal char to convert.
from_end: limit internal char to convert.
from_next: next internal char to convert in return.
to: first external char destination.
to_limit: external char destination limit.
to_next: next external char destination.
Returns:
The function returns:
  • codecvt_base::error if the source sequence is ill formed.
  • codecvt_base::noconv if the function performs no conversion.
  • codecvt_base::ok if the conversion succeeds.
  • codecvt_base::partial if the source is insufficient, or if the destination is not large enough, for the conversion to succeed.

Definition at line 131 of file codecvt.cpp.

References codecvt_state::conv_in_out, extern_type, intern_type, and state_type.

codecvt::result codecvt::do_unshift state_type state,
extern_type to,
extern_type to_limit,
extern_type *&  to_next
const [protected, virtual]
 

Put unshift character.

The protected virtual member function endeavors to convert the source element intern_type(0) to a destination sequence that it stores within [to, to_limit), except for the terminating element extern_type(0). It always stores in to_next a pointer to the first unaltered element in the destination sequence.

state must represent the initial conversion state at the beginning of a new source sequence. The function alters its stored value, as needed, to reflect the current state of a successful conversion. Typically, converting the source element intern_type(0) leaves the current state in the initial conversion state.

The template version always returns noconv.

Parameters:
state: state transmission.
to: first external char destination.
to_limit: external char destination limit.
to_next: next external char destination.
Returns:
The function returns:
  • codecvt_base::error if state represents an invalid state
  • codecvt_base::noconv if the function performs no conversion
  • codecvt_base::ok if the conversion succeeds
  • codecvt_base::partial if the destination is not large enough for the conversion to succeed

Definition at line 219 of file codecvt.cpp.

References extern_type, and state_type.


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


Donate to the XiMoL project SourceForge.net Logo If you have any questions about XiMoL, you could write to tournois@users.sourceforge.net.