Sha256: 42ec56b74f2b5263f9f2ffd73bbf4c8ededbe54c61039ac027e0d32954ac899e

Contents?: true

Size: 1.61 KB

Versions: 3

Compression:

Stored size: 1.61 KB

Contents

/************************************
 * file enc : utf-8
 * author   : wuyanyi09@gmail.com
 ************************************/
#ifndef CPPJIEBA_TRANSCODE_H
#define CPPJIEBA_TRANSCODE_H


#include "Limonp/StringUtil.hpp"
#include "Limonp/LocalVector.hpp"

namespace CppJieba
{

    using namespace Limonp;
    typedef uint16_t UnicodeValueType;
    typedef Limonp::LocalVector<UnicodeValueType> Unicode;
    namespace TransCode
    {
        inline bool decode(const string& str, Unicode& res)
        {
#ifdef CPPJIEBA_GBK
            return gbkTrans(str, res);
#else
            return utf8ToUnicode(str, res);
#endif
        }

        inline bool encode(Unicode::const_iterator begin, Unicode::const_iterator end, string& res)
        {
#ifdef CPPJIEBA_GBK
            return gbkTrans(begin, end, res);
#else
            return unicodeToUtf8(begin, end, res);
#endif
        }
        
        inline bool encode(const Unicode& uni, string& res)
        {
            return encode(uni.begin(), uni.end(), res);
        }

        // compiler is expected to optimized this function to avoid return value copy
        inline string encode(Unicode::const_iterator begin, Unicode::const_iterator end) 
        {
            string res;
            res.reserve(end - begin);
            encode(begin, end, res);
            return res;
        }

        // compiler is expected to optimized this function to avoid return value copy
        inline Unicode decode(const string& str)
        {
            Unicode unicode;
            unicode.reserve(str.size());
            decode(str, unicode);
            return unicode;
        }
    }
}

#endif

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
jieba_rb-0.0.5 ext/cppjieba/src/TransCode.hpp
jieba_rb-0.0.2 ext/cppjieba/src/TransCode.hpp
jieba_rb-0.0.1 ext/cppjieba/src/TransCode.hpp