9
9
#include < boost/algorithm/string.hpp>
10
10
#include < boost/filesystem.hpp>
11
11
#include < boost/lexical_cast.hpp>
12
+ #include < rime/resource.h>
12
13
#include < rime/schema.h>
13
14
#include < rime/service.h>
14
15
#include < rime/ticket.h>
@@ -24,13 +25,8 @@ const size_t kReverseFormatPrefixLen = sizeof(kReverseFormatPrefix) - 1;
24
25
25
26
static const char * kStemKeySuffix = " \x1f stem" ;
26
27
27
- static string reverse_db_file_name (const string& dict_name) {
28
- boost::filesystem::path dir (Service::instance ().deployer ().user_data_dir );
29
- return (dir / dict_name).string () + " .reverse.bin" ;
30
- }
31
-
32
- ReverseDb::ReverseDb (const string& dict_name)
33
- : MappedFile(reverse_db_file_name(dict_name)) {
28
+ ReverseDb::ReverseDb (const string& file_name)
29
+ : MappedFile(file_name) {
34
30
}
35
31
36
32
bool ReverseDb::Load () {
@@ -200,10 +196,6 @@ ReverseLookupDictionary::ReverseLookupDictionary(an<ReverseDb> db)
200
196
: db_(db) {
201
197
}
202
198
203
- ReverseLookupDictionary::ReverseLookupDictionary (const string& dict_name)
204
- : db_(new ReverseDb(dict_name)) {
205
- }
206
-
207
199
bool ReverseLookupDictionary::Load () {
208
200
return db_ && (db_->IsOpen () || db_->Load ());
209
201
}
@@ -233,7 +225,13 @@ an<DictSettings> ReverseLookupDictionary::GetDictSettings() {
233
225
return settings;
234
226
}
235
227
236
- ReverseLookupDictionaryComponent::ReverseLookupDictionaryComponent () {
228
+ static const ResourceType kReverseDbResourceType = {
229
+ " reverse_db" , " " , " .reverse.bin"
230
+ };
231
+
232
+ ReverseLookupDictionaryComponent::ReverseLookupDictionaryComponent ()
233
+ : resource_resolver_(
234
+ Service::instance ().CreateResourceResolver(kReverseDbResourceType )) {
237
235
}
238
236
239
237
ReverseLookupDictionary*
@@ -248,7 +246,8 @@ ReverseLookupDictionaryComponent::Create(const Ticket& ticket) {
248
246
}
249
247
auto db = db_pool_[dict_name].lock ();
250
248
if (!db) {
251
- db = New<ReverseDb>(dict_name);
249
+ auto file_path = resource_resolver_->ResolvePath (dict_name).string ();
250
+ db = New<ReverseDb>(file_path);
252
251
db_pool_[dict_name] = db;
253
252
}
254
253
return new ReverseLookupDictionary (db);
0 commit comments