// Fill array of XMLCh characters with data, supplyed in the array // of "native unicode" characters. XMLCh* IconvGNUWrapper::mbsToXML ( const char* mbs_str , XMLCh* xml_str , size_t cnt ) const { if (mbs_str == NULL || xml_str == NULL || cnt == 0) return NULL; if (fUBO == BYTE_ORDER) { if (fUChSize == sizeof(XMLCh)) { // null-transformation memcpy (xml_str, mbs_str, fUChSize * cnt); return xml_str; } if (fUChSize == 2) for (size_t i = 0; i < cnt; i++, mbs_str += fUChSize) { WC162XMLCh( mbs_str, xml_str + i); } else for (size_t i = 0; i < cnt; i++, mbs_str += fUChSize) { WC322XMLCh( mbs_str, xml_str + i ); } } else { if (fUChSize == 2) for (size_t i = 0; i < cnt; i++, mbs_str += fUChSize) { IWC162XMLCh( mbs_str, xml_str + i ); } else for (size_t i = 0; i < cnt; i++, mbs_str += fUChSize) { IWC322XMLCh( mbs_str, xml_str + i ); } } return xml_str; }
// Convert "native unicode" character into XMLCh void IconvGNUWrapper::mbcToXMLCh (const char *mbc, XMLCh *toRet) const { if (fUBO == LITTLE_ENDIAN) { if (fUChSize == sizeof(XMLCh)) *toRet = *((XMLCh*) mbc); else if (fUChSize == 2) { WC162XMLCh( mbc, toRet ); } else { WC322XMLCh( mbc, toRet ); } } else { if (fUChSize == 2) { IWC162XMLCh( mbc, toRet ); } else { IWC322XMLCh( mbc, toRet ); } } }
// Fill array of XMLCh characters with data, supplyed in the array // of "native unicode" characters. XMLCh* IconvGNUWrapper::mbsToXML ( const char* mbs_str , size_t mbs_cnt , XMLCh* xml_str , size_t xml_cnt ) const { if (mbs_str == NULL || mbs_cnt == 0 || xml_str == NULL || xml_cnt == 0) return NULL; size_t cnt = (mbs_cnt < xml_cnt) ? mbs_cnt : xml_cnt; if (fUBO == LITTLE_ENDIAN) { if (fUChSize == sizeof(XMLCh)) { // null-transformation memcpy (xml_str, mbs_str, fUChSize * cnt); return xml_str; } if (fUChSize == 2) for (size_t i = 0; i < cnt; i++, mbs_str += fUChSize) { WC162XMLCh( mbs_str, xml_str + i); } else for (size_t i = 0; i < cnt; i++, mbs_str += fUChSize) { WC322XMLCh( mbs_str, xml_str + i ); } } else { if (fUChSize == 2) for (size_t i = 0; i < cnt; i++, mbs_str += fUChSize) { IWC162XMLCh( mbs_str, xml_str + i ); } else for (size_t i = 0; i < cnt; i++, mbs_str += fUChSize) { IWC322XMLCh( mbs_str, xml_str + i ); } } return xml_str; }