librime 1.2
Rime Input Method Engine, the core library
memory.h
Go to the documentation of this file.
1//
2// Copyright RIME Developers
3// Distributed under the BSD License
4//
5// 2013-01-02 GONG Chen <chen.sst@gmail.com>
6//
7#ifndef RIME_MEMORY_H_
8#define RIME_MEMORY_H_
9
10#include <rime/common.h>
12
13namespace rime {
14
15class KeyEvent;
16class Context;
17class Engine;
18class Dictionary;
19class UserDictionary;
20class Language;
21class Phrase;
22class Memory;
23
25 vector<const DictEntry*> elements;
27
28 CommitEntry(Memory* a_memory = NULL) : memory(a_memory) {}
29 bool empty() const { return text.empty(); }
30 void Clear();
31 void AppendPhrase(const an<Phrase>& phrase);
32 bool Save() const;
33 int Length() const;
34};
35
36class Memory {
37 public:
38 Memory(const Ticket& ticket);
39 virtual ~Memory();
40
41 virtual bool Memorize(const CommitEntry& commit_entry) = 0;
42 virtual bool ProcessSegmentOnCommit(CommitEntry& commit_entry,
43 const Segment& seg);
44 bool StartSession();
45 bool FinishSession();
46 bool DiscardSession();
47
48 Dictionary* dict() const { return dict_.get(); }
49 UserDictionary* user_dict() const { return user_dict_.get(); }
50
51 const Language* language() const { return language_.get(); }
52
53 protected:
54 void OnCommit(Context* ctx);
55 void OnDeleteEntry(Context* ctx);
56 void OnUnhandledKey(Context* ctx, const KeyEvent& key);
57
61
62 private:
63 connection commit_connection_;
64 connection delete_connection_;
65 connection unhandled_key_connection_;
66};
67
68} // namespace rime
69
70#endif // RIME_MEMORY_H_
Definition algebra.cc:12
std::shared_ptr< T > an
Definition common.h:60
std::unique_ptr< T > the
Definition common.h:58
Definition context.h:19
Definition dictionary.h:62
Definition user_dictionary.h:49
DictEntry()=default
string text
Definition vocabulary.h:47
Definition engine.h:20
Definition memory.h:24
vector< const DictEntry * > elements
Definition memory.h:25
bool Save() const
Definition memory.cc:40
CommitEntry(Memory *a_memory=NULL)
Definition memory.h:28
bool empty() const
Definition memory.h:29
Memory * memory
Definition memory.h:26
int Length() const
Definition memory.cc:48
void AppendPhrase(const an< Phrase > &phrase)
Definition memory.cc:28
void Clear()
Definition memory.cc:22
Definition memory.h:36
virtual bool ProcessSegmentOnCommit(CommitEntry &commit_entry, const Segment &seg)
Definition memory.cc:111
bool StartSession()
Definition memory.cc:99
bool FinishSession()
Definition memory.cc:103
Dictionary * dict() const
Definition memory.h:48
the< Dictionary > dict_
Definition memory.h:58
Memory(const Ticket &ticket)
Definition memory.cc:58
void OnCommit(Context *ctx)
Definition memory.cc:128
virtual bool Memorize(const CommitEntry &commit_entry)=0
void OnUnhandledKey(Context *ctx, const KeyEvent &key)
Definition memory.cc:151
void OnDeleteEntry(Context *ctx)
Definition memory.cc:138
the< UserDictionary > user_dict_
Definition memory.h:59
const Language * language() const
Definition memory.h:51
UserDictionary * user_dict() const
Definition memory.h:49
the< Language > language_
Definition memory.h:60
bool DiscardSession()
Definition memory.cc:107
Definition translator_commons.h:63
Definition key_event.h:17
Definition language.h:12
Definition segmentation.h:18
Definition ticket.h:17