diff options
-rw-r--r-- | src/Makefile.am | 1 | ||||
-rw-r--r-- | src/PYLibPinyin.cc | 39 | ||||
-rw-r--r-- | src/PYLibPinyin.h | 8 |
3 files changed, 47 insertions, 1 deletions
diff --git a/src/Makefile.am b/src/Makefile.am index fd12e0b..d70b36b 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -64,6 +64,7 @@ ibus_engine_pinyin_c_sources = \ PYDynamicSpecialPhrase.cc \ PYSpecialPhrase.cc \ PYSpecialPhraseTable.cc \ + PYLibPinyin.cc \ PYPPhoneticEditor.cc \ PYPPinyinEditor.cc \ PYPBopomofoEditor.cc \ diff --git a/src/PYLibPinyin.cc b/src/PYLibPinyin.cc new file mode 100644 index 0000000..55ffb8b --- /dev/null +++ b/src/PYLibPinyin.cc @@ -0,0 +1,39 @@ +/* vim:set et ts=4 sts=4: + * + * ibus-pinyin - The Chinese PinYin engine for IBus + * + * Copyright (c) 2011 Peng Wu <alexepico@gmail.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include "PYLibPinyin.h" + +using namespace PY; + +std::unique_ptr<LibPinyinBackEnd> LibPinyinBackEnd::m_instance; + +static LibPinyinBackEnd libpinyin_backend; + +LibPinyinBackEnd::LibPinyinBackEnd(){ + g_assert (NULL == m_instance.get ()); + m_pinyin_context = pinyin_init("/usr/share/libpinyin/data", "../data"); + m_instance.reset(this); +} + +LibPinyinBackEnd::~LibPinyinBackEnd(){ + pinyin_fini(m_pinyin_context); + m_instance = NULL; +} diff --git a/src/PYLibPinyin.h b/src/PYLibPinyin.h index d3bc90c..c07b435 100644 --- a/src/PYLibPinyin.h +++ b/src/PYLibPinyin.h @@ -22,11 +22,17 @@ #ifndef __PY_LIB_PINYIN_H_ #define __PY_LIB_PINYIN_H_ -typedef struct _pinyin_context_t pinyin_context_t; +#include <memory> +#include <pinyin.h> namespace PY { + class LibPinyinBackEnd{ + public: + LibPinyinBackEnd(); + ~LibPinyinBackEnd(); + /* use static initializer in C++. */ static LibPinyinBackEnd & instance (void) { return *m_instance; } |