diff options
author | Jarkko Koivikko <jarkko.koivikko@code-q.fi> | 2014-12-31 11:26:50 +0200 |
---|---|---|
committer | Jarkko Koivikko <jarkko.koivikko@code-q.fi> | 2015-01-12 16:23:03 +0200 |
commit | 4a77ad1ebe17681765e9c03b01485ff970ad20c5 (patch) | |
tree | 91bb4f1fd60d4be0ad739a94770ef23805dc9e2f | |
parent | 03efe89e2ef8874006666143f22764a22bced447 (diff) |
Prepare Pinyin library for WIN32
Build as static library in all platforms.
On Windows the library uses Qt for platform abstraction.
Fix compiler warnings.
Change-Id: Icddba8f1f23daa220735c68a0998005a801c5d03
Reviewed-by: Mitch Curtis <mitch.curtis@theqtcompany.com>
-rw-r--r-- | src/virtualkeyboard/3rdparty/pinyin/include/userdict.h | 4 | ||||
-rw-r--r-- | src/virtualkeyboard/3rdparty/pinyin/pinyin.pro | 14 | ||||
-rw-r--r-- | src/virtualkeyboard/3rdparty/pinyin/share/spellingtrie.cpp | 4 | ||||
-rw-r--r-- | src/virtualkeyboard/3rdparty/pinyin/share/userdict.cpp | 31 | ||||
-rw-r--r-- | src/virtualkeyboard/pinyindecoderservice.cpp | 12 | ||||
-rw-r--r-- | src/virtualkeyboard/virtualkeyboard.pro | 4 |
6 files changed, 52 insertions, 17 deletions
diff --git a/src/virtualkeyboard/3rdparty/pinyin/include/userdict.h b/src/virtualkeyboard/3rdparty/pinyin/include/userdict.h index 51ca3b07..1b9673f9 100644 --- a/src/virtualkeyboard/3rdparty/pinyin/include/userdict.h +++ b/src/virtualkeyboard/3rdparty/pinyin/include/userdict.h @@ -24,7 +24,11 @@ // Debug performance for operations // #define ___DEBUG_PERF___ +#ifdef _WIN32 +#include <winsock.h> // timeval +#else #include <pthread.h> +#endif #include "atomdictbase.h" namespace ime_pinyin { diff --git a/src/virtualkeyboard/3rdparty/pinyin/pinyin.pro b/src/virtualkeyboard/3rdparty/pinyin/pinyin.pro index b0d7c558..8a97e813 100644 --- a/src/virtualkeyboard/3rdparty/pinyin/pinyin.pro +++ b/src/virtualkeyboard/3rdparty/pinyin/pinyin.pro @@ -1,18 +1,12 @@ TEMPLATE = lib -QT -= core gui +win32: QT -= gui +else: CONFIG -= qt TARGET = pinyin VERSION = 1.0.0 -CONFIG += dll -QMAKE_CXXFLAGS += -Wno-unused-parameter -#CONFIG += staticlib -#CONFIG += precompile_header warn_off +CONFIG += staticlib +CONFIG += warn_off CONFIG -= qtquickcompiler # QTRD-3292 -dll { - target.path = $$[QT_INSTALL_LIBS] - INSTALLS += target -} - INCLUDEPATH += \ include diff --git a/src/virtualkeyboard/3rdparty/pinyin/share/spellingtrie.cpp b/src/virtualkeyboard/3rdparty/pinyin/share/spellingtrie.cpp index e15b66c4..e01c89a5 100644 --- a/src/virtualkeyboard/3rdparty/pinyin/share/spellingtrie.cpp +++ b/src/virtualkeyboard/3rdparty/pinyin/share/spellingtrie.cpp @@ -19,6 +19,10 @@ #include <assert.h> #include "../include/dictdef.h" +#ifdef _WIN32 +#define snprintf _snprintf +#endif + #ifdef ___BUILD_MODEL___ #include "../include/spellingtable.h" #endif diff --git a/src/virtualkeyboard/3rdparty/pinyin/share/userdict.cpp b/src/virtualkeyboard/3rdparty/pinyin/share/userdict.cpp index 614180c5..a3db8884 100644 --- a/src/virtualkeyboard/3rdparty/pinyin/share/userdict.cpp +++ b/src/virtualkeyboard/3rdparty/pinyin/share/userdict.cpp @@ -23,19 +23,41 @@ #ifdef ___DEBUG_PERF___ #include <cutils/log.h> #endif +#ifdef _WIN32 +#include <io.h> +#else #include <unistd.h> +#endif #include <fcntl.h> #include <sys/stat.h> #include <assert.h> #include <ctype.h> #include <sys/types.h> +#ifndef _WIN32 #include <sys/time.h> +#endif #include <time.h> +#ifdef _WIN32 +#undef max +#undef min +#include <QDateTime> +#include <QMutex> +#else #include <pthread.h> +#endif #include <math.h> namespace ime_pinyin { +#ifdef _WIN32 +static int gettimeofday(struct timeval *tp, void *) { + const qint64 current_msecs_since_epoch = QDateTime::currentMSecsSinceEpoch(); + tp->tv_sec = (long)(current_msecs_since_epoch / 1000); + tp->tv_usec = (long)((current_msecs_since_epoch % 1000) * 1000); + return 0; +} +#endif + #ifdef ___DEBUG_PERF___ static uint64 _ellapse_ = 0; static struct timeval _tv_start_, _tv_end_; @@ -58,7 +80,14 @@ static struct timeval _tv_start_, _tv_end_; #endif // XXX File load and write are thread-safe by g_mutex_ +#ifdef _WIN32 +static QMutex g_mutex_; +#define pthread_mutex_lock(MUTEX) ((MUTEX)->lock()) +#define pthread_mutex_unlock(MUTEX) ((MUTEX)->unlock()) +#define pthread_mutex_trylock(MUTEX) (!(MUTEX)->tryLock(0)) +#else static pthread_mutex_t g_mutex_ = PTHREAD_MUTEX_INITIALIZER; +#endif static struct timeval g_last_update_ = {0, 0}; inline uint32 UserDict::get_dict_file_size(UserDictInfo * info) { @@ -1267,7 +1296,9 @@ void UserDict::write_back() { // It seems truncate is not need on Linux, Windows except Mac // I am doing it here anyway for safety. off_t cur = lseek(fd, 0, SEEK_CUR); +#ifndef _WIN32 ftruncate(fd, cur); +#endif close(fd); state_ = USER_DICT_SYNC; } diff --git a/src/virtualkeyboard/pinyindecoderservice.cpp b/src/virtualkeyboard/pinyindecoderservice.cpp index 2a2b4c38..b95c335b 100644 --- a/src/virtualkeyboard/pinyindecoderservice.cpp +++ b/src/virtualkeyboard/pinyindecoderservice.cpp @@ -127,7 +127,7 @@ QString PinyinDecoderService::pinyinString(bool decoded) if (!decoded) py_len = strlen(py); - return QString(QLatin1String(py, py_len)); + return QString(QLatin1String(py, (int)py_len)); } int PinyinDecoderService::pinyinStringLength(bool decoded) @@ -136,20 +136,20 @@ int PinyinDecoderService::pinyinStringLength(bool decoded) const char *py = im_get_sps_str(&py_len); if (!decoded) py_len = strlen(py); - return py_len; + return (int)py_len; } QVector<int> PinyinDecoderService::spellingStartPositions() { const unsigned short *spl_start; - size_t len; + int len; // There will be len + 1 elements in the buffer when len > 0. - len = im_get_spl_start_pos(spl_start); + len = (int)im_get_spl_start_pos(spl_start); QVector<int> arr; arr.resize(len + 2); arr[0] = len; // element 0 is used to store the length of buffer. - for (size_t i = 0; i <= len; i++) + for (int i = 0; i <= len; i++) arr[i + 1] = spl_start[i]; return arr; } @@ -189,7 +189,7 @@ int PinyinDecoderService::cancelLastChoice() int PinyinDecoderService::fixedLength() { - return im_get_fixed_len(); + return (int)im_get_fixed_len(); } void PinyinDecoderService::flushCache() diff --git a/src/virtualkeyboard/virtualkeyboard.pro b/src/virtualkeyboard/virtualkeyboard.pro index 5e86d152..1f8518df 100644 --- a/src/virtualkeyboard/virtualkeyboard.pro +++ b/src/virtualkeyboard/virtualkeyboard.pro @@ -201,7 +201,9 @@ pinyin { DEFINES += HAVE_PINYIN INCLUDEPATH += 3rdparty/pinyin/include DEPENDPATH += 3rdparty/pinyin/include - LIBS += -L$$OUT_PWD/3rdparty/pinyin/ -lpinyin + win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/3rdparty/pinyin/release/ -lpinyin + else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/3rdparty/pinyin/debug/ -lpinyin + else: LIBS += -L$$OUT_PWD/3rdparty/pinyin/ -lpinyin pinyin_data.files = $$PWD/3rdparty/pinyin/data/dict_pinyin.dat pinyin_data.path = $$DATAPATH/pinyin INSTALLS += pinyin_data |