aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJarkko Koivikko <jarkko.koivikko@code-q.fi>2014-12-31 11:26:50 +0200
committerJarkko Koivikko <jarkko.koivikko@code-q.fi>2015-01-12 16:23:03 +0200
commit4a77ad1ebe17681765e9c03b01485ff970ad20c5 (patch)
tree91bb4f1fd60d4be0ad739a94770ef23805dc9e2f
parent03efe89e2ef8874006666143f22764a22bced447 (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.h4
-rw-r--r--src/virtualkeyboard/3rdparty/pinyin/pinyin.pro14
-rw-r--r--src/virtualkeyboard/3rdparty/pinyin/share/spellingtrie.cpp4
-rw-r--r--src/virtualkeyboard/3rdparty/pinyin/share/userdict.cpp31
-rw-r--r--src/virtualkeyboard/pinyindecoderservice.cpp12
-rw-r--r--src/virtualkeyboard/virtualkeyboard.pro4
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