Doxygen
Loading...
Searching...
No Matches
HtmlHelpRecoder Class Reference

Helper class to deal with recoding the UTF8 encoded text back to the native encoding specified by CHM_INDEX_ENCODING. More...

Public Member Functions

 HtmlHelpRecoder ()
 ~HtmlHelpRecoder ()
void initialize ()
void finalize ()
DString recode (const DString &s)

Private Attributes

void * m_iconv_null = reinterpret_cast<void*>(-1)
void * m_fromUtf8 = m_iconv_null

Detailed Description

Helper class to deal with recoding the UTF8 encoded text back to the native encoding specified by CHM_INDEX_ENCODING.

Definition at line 44 of file htmlhelp.cpp.

Constructor & Destructor Documentation

◆ HtmlHelpRecoder()

HtmlHelpRecoder::HtmlHelpRecoder ( )
inline

Definition at line 47 of file htmlhelp.cpp.

47{}

◆ ~HtmlHelpRecoder()

HtmlHelpRecoder::~HtmlHelpRecoder ( )
inline

Definition at line 48 of file htmlhelp.cpp.

48{ finalize(); }

References finalize().

Member Function Documentation

◆ finalize()

void HtmlHelpRecoder::finalize ( )
inline

Definition at line 61 of file htmlhelp.cpp.

62 {
64 {
67 }
68 }
void * m_fromUtf8
Definition htmlhelp.cpp:93
void * m_iconv_null
Definition htmlhelp.cpp:92
int portable_iconv_close(void *cd)

References m_fromUtf8, m_iconv_null, and portable_iconv_close().

Referenced by ~HtmlHelpRecoder().

◆ initialize()

void HtmlHelpRecoder::initialize ( )
inline

Definition at line 51 of file htmlhelp.cpp.

52 {
53 DString str = Config_getString(CHM_INDEX_ENCODING);
54 if (str.empty()) str = "CP1250"; // use safe and likely default
55 m_fromUtf8 = portable_iconv_open(str.data(),"UTF-8");
57 {
58 term("unsupported character conversion for CHM_INDEX_ENCODING: '{}'->'UTF-8'\n", str);
59 }
60 }
bool empty() const
Returns true iff the string is empty (std::string compatible alias for isEmpty()).
Definition dstring.h:148
const char * data() const
Returns a pointer to the contents of the string in the form of a 0-terminated C string.
Definition dstring.h:157
#define Config_getString(name)
Definition config.h:32
#define term(fmt,...)
Definition message.h:137
void * portable_iconv_open(const char *tocode, const char *fromcode)

References Config_getString, DString::data(), DString::empty(), initialize(), m_fromUtf8, m_iconv_null, portable_iconv_open(), and term.

Referenced by initialize().

◆ recode()

DString HtmlHelpRecoder::recode ( const DString & s)
inline

Definition at line 70 of file htmlhelp.cpp.

71 {
72 size_t iSize = s.length();
73 size_t oSize = iSize*4;
74 DString output(oSize, DString::ExplicitSize);
75 size_t iLeft = iSize;
76 size_t oLeft = oSize;
77 const char *iPtr = s.data();
78 char *oPtr = output.rawData();
79 if (!portable_iconv(m_fromUtf8,&iPtr,&iLeft,&oPtr,&oLeft))
80 {
81 oSize -= oLeft;
82 output.resize(oSize);
83 output.at(oSize)='\0';
84 return output;
85 }
86 else
87 {
88 return s;
89 }
90 }
@ ExplicitSize
Definition dstring.h:131
size_t length() const
Returns the length of the string, not counting the 0-terminator.
Definition dstring.h:151
size_t portable_iconv(void *cd, const char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft)

References DString::at(), DString::data(), DString::ExplicitSize, DString::length(), m_fromUtf8, portable_iconv(), DString::rawData(), and DString::resize().

Referenced by HtmlHelp::Private::createProjectFile(), and HtmlHelpIndex::writeFields().

Member Data Documentation

◆ m_fromUtf8

void* HtmlHelpRecoder::m_fromUtf8 = m_iconv_null
private

Definition at line 93 of file htmlhelp.cpp.

Referenced by finalize(), initialize(), and recode().

◆ m_iconv_null

void* HtmlHelpRecoder::m_iconv_null = reinterpret_cast<void*>(-1)
private

Definition at line 92 of file htmlhelp.cpp.

Referenced by finalize(), and initialize().


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