示例#1
0
void fileWriter(MappingRaw* map, const int numRows, const string_t& fileName)
{
    std::map<wchar_t, wchar_t> uniqnessCheck;
    std::stringstream ss;

    for (int i = 0; i < numRows; ++i) {
        ss  << toUtf8(wstring_t(1, map[i].from))
            << "|" << toUtf8(wstring_t(1, map[i].to));
            //<< "|" << map[i].desc;
        ss << std::endl;

        auto it = uniqnessCheck.insert(std::make_pair(map[i].from, map[i].to));
        if ( !it.second ) {
            wchar_t ch = map[i].from;
            wchar_t to = it.first->second;
            std::stringstream ss;
            ss  << "Character INTCODE(" << (int) ch << "), HEX (0x" 
                << Poco::NumberFormatter::formatHex((int)ch, 4) << "), CHAR ("
                << toUtf8(wstring_t(1, ch)) << ")"
                << " already mapped to INTCODE(" << (int)to << "), HEX (0x" 
                << Poco::NumberFormatter::formatHex((int)to, 4) << "), CHAR ("
                << toUtf8(wstring_t(1, to)) << ")";

            throw std::logic_error(ss.str().c_str());
        }
    }

    writeFileAsBinary(fileName, ss.str());
}
示例#2
0
wchar_t CharMapping::lookUp( wchar_t ch, const string_t& fontName  )
{
    if (ch >= 0 && ch < 256) {
        /// this is very quick lookup if we are working with symbols with code
        /// < 256
        wchar_t val = quickMap_[ch];
        if (val != 0) 
            return val;

        /// no mapping in this range, look inside std::map
    }

    auto it = mapping_.find(ch);
    if (it == mapping_.end()) {
        std::stringstream ss;
        ss << "LANG: " << language_ << ", FONT: " << fontName 
            << ". No mapping for symbol: INTCODE (" << (int) ch << "), HEX (0x"
            << Poco::NumberFormatter::formatHex((int)ch, 4) << "), CHAR ("
            << toUtf8(wstring_t(1, ch)) << ")";
        logError(logger(), ss.str());
        it = mapping_.insert(std::make_pair(ch, ch)).first;
    }
    return it->second;
}
示例#3
0
 ///
 /// ctor: init with wide string
 ///
 var::var(const wchar_t* s) : _var(wstring_t(s)) {}
示例#4
0
 ///
 /// ctor: init with wide string
 ///
 var::var(const wstring& s) : _var(wstring_t(s)) {}
示例#5
0
 ///
 /// assign wide string constant to var
 var& var::operator = (const wchar_t* s) {
     _var = wstring_t(s);
     return *this;
 }
示例#6
0
UnicodeString & UnicodeString::Replace(intptr_t Pos, intptr_t Len, const wchar_t * Str, intptr_t DataLen)
{
  Data.replace(Pos - 1, Len, wstring_t(Str, DataLen));
  return *this;
}