librime 1.2
Rime Input Method Engine, the core library
engine.h
Go to the documentation of this file.
1//
2// Copyright RIME Developers
3// Distributed under the BSD License
4//
5// 2011-03-14 GONG Chen <chen.sst@gmail.com>
6//
7#ifndef RIME_ENGINE_H_
8#define RIME_ENGINE_H_
9
10#include <rime_api.h>
11#include <rime/common.h>
12#include <rime/messenger.h>
13
14namespace rime {
15
16class KeyEvent;
17class Schema;
18class Context;
19
20class Engine : public Messenger {
21 public:
22 using CommitSink = signal<void(const string& commit_text)>;
23
24 virtual ~Engine();
25 virtual bool ProcessKey(const KeyEvent& key_event) { return false; }
26 virtual void ApplySchema(Schema* schema) {}
27 virtual void CommitText(string text) { sink_(text); }
28 virtual void Compose(Context* ctx) {}
29
30 Schema* schema() const { return schema_.get(); }
31 Context* context() const { return context_.get(); }
32 CommitSink& sink() { return sink_; }
33
35 void set_active_engine(Engine* engine = nullptr) { active_engine_ = engine; }
36
37 RIME_DLL static Engine* Create();
38
39 protected:
40 Engine();
41
46};
47
48} // namespace rime
49
50#endif // RIME_ENGINE_H_
#define RIME_DLL
Definition rime_api.h:33
Definition algebra.cc:12
std::unique_ptr< T > the
Definition common.h:58
Definition context.h:19
Definition engine.h:20
the< Schema > schema_
Definition engine.h:42
CommitSink & sink()
Definition engine.h:32
virtual void CommitText(string text)
Definition engine.h:27
signal< void(const string &commit_text)> CommitSink
Definition engine.h:22
Engine * active_engine()
Definition engine.h:34
Engine * active_engine_
Definition engine.h:45
Schema * schema() const
Definition engine.h:30
virtual void ApplySchema(Schema *schema)
Definition engine.h:26
Context * context() const
Definition engine.h:31
static RIME_DLL Engine * Create()
Definition engine.cc:60
Engine()
Definition engine.cc:64
virtual void Compose(Context *ctx)
Definition engine.h:28
void set_active_engine(Engine *engine=nullptr)
Definition engine.h:35
virtual bool ProcessKey(const KeyEvent &key_event)
Definition engine.h:25
the< Context > context_
Definition engine.h:43
CommitSink sink_
Definition engine.h:44
Definition key_event.h:17
Definition messenger.h:14
Definition schema.h:15