update PYLibPinyin.*
[platform/upstream/ibus-libpinyin.git] / src / PYLibPinyin.h
index 83aa1fc..e1d1803 100644 (file)
@@ -1,6 +1,6 @@
 /* vim:set et ts=4 sts=4:
  *
- * ibus-pinyin - The Chinese PinYin engine for IBus
+ * ibus-libpinyin - Intelligent Pinyin engine based on libpinyin for IBus
  *
  * Copyright (c) 2011 Peng Wu <alexepico@gmail.com>
  *
  *
  * 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.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  */
 
 #ifndef __PY_LIB_PINYIN_H_
 #define __PY_LIB_PINYIN_H_
 
 #include <memory>
-#include <pinyin.h>
+#include <glib.h>
+
+typedef struct _pinyin_context_t pinyin_context_t;
+typedef struct _pinyin_instance_t pinyin_instance_t;
 
 namespace PY {
 
@@ -35,13 +38,36 @@ public:
     LibPinyinBackEnd();
     ~LibPinyinBackEnd();
 
-    gboolean setPinyinOptions(Config *config);
+    gboolean setPinyinOptions (Config *config);
+    gboolean setChewingOptions (Config *config);
+
+    pinyin_context_t * initPinyinContext (Config *config);
+    pinyin_context_t * initChewingContext (Config *config);
+
+    pinyin_instance_t *allocPinyinInstance ();
+    void freePinyinInstance (pinyin_instance_t *instance);
+    pinyin_instance_t *allocChewingInstance ();
+    void freeChewingInstance (pinyin_instance_t *instance);
+    void modified (void);
 
     /* use static initializer in C++. */
     static LibPinyinBackEnd & instance (void) { return *m_instance; }
 
+    static void init (void);
+    static void finalize (void);
+
+
+private:
+    gboolean saveUserDB (void);
+    static gboolean timeoutCallback (gpointer data);
+
 private:
-    pinyin_context_t *m_pinyin_context; /* libpinyin context */
+    /* libpinyin context */
+    pinyin_context_t *m_pinyin_context;
+    pinyin_context_t *m_chewing_context;
+
+    guint m_timeout_id;
+    GTimer *m_timer;
 
 private:
     static std::unique_ptr<LibPinyinBackEnd> m_instance;