Skip to content

Commit 101af86

Browse files
author
Fcitx Bot
committed
Merge remote-tracking branch 'origin/master' into fcitx
2 parents 4862175 + 46058f5 commit 101af86

51 files changed

Lines changed: 412 additions & 1412 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

src/base/singleton.h

Lines changed: 0 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,8 @@
3030
#ifndef MOZC_BASE_SINGLETON_H_
3131
#define MOZC_BASE_SINGLETON_H_
3232

33-
#include <atomic>
3433

3534
#include "absl/base/const_init.h"
36-
#include "absl/base/no_destructor.h"
3735
#include "absl/base/thread_annotations.h"
3836
#include "absl/synchronization/mutex.h"
3937

@@ -94,37 +92,6 @@ class Singleton {
9492
constinit static inline T* instance_ ABSL_GUARDED_BY(mutex_) = nullptr;
9593
};
9694

97-
// SingletonMockable class.
98-
// Usage: (quote from clock.cc)
99-
//
100-
// using ClockSingleton = SingletonMockable<ClockInterface, ClockImpl>;
101-
//
102-
// uint64_t Clock::GetTime() {
103-
// return ClockSingleton::Get()->GetTime();
104-
// }
105-
//
106-
// void Clock::SetClockForUnitTest(ClockInterface *clock_mock) {
107-
// ClockSingleton::SetMock(clock_mock);
108-
// }
109-
template <class Interface, class Impl>
110-
class SingletonMockable {
111-
public:
112-
static Interface* Get() {
113-
if (Interface* mock = mock_.load(std::memory_order_acquire);
114-
mock != nullptr) {
115-
return mock;
116-
}
117-
static absl::NoDestructor<Impl> impl;
118-
return impl.get();
119-
}
120-
121-
static void SetMock(Interface* mock) {
122-
mock_.store(mock, std::memory_order_release);
123-
}
124-
125-
private:
126-
constinit static inline std::atomic<Interface*> mock_ = nullptr;
127-
};
12895

12996
} // namespace mozc
13097

src/converter/BUILD.bazel

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,7 @@ mozc_cc_test(
169169
":segments",
170170
":segments_matchers",
171171
"//testing:gunit_main",
172+
"@com_google_absl//absl/strings:string_view",
172173
"@com_google_absl//absl/types:span",
173174
],
174175
)
@@ -823,6 +824,7 @@ mozc_cc_library(
823824
"@com_google_absl//absl/container:flat_hash_map",
824825
"@com_google_absl//absl/functional:any_invocable",
825826
"@com_google_absl//absl/log:check",
827+
"@com_google_absl//absl/strings:string_view",
826828
],
827829
)
828830

src/converter/converter_main.cc

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,6 @@
7575
#define MOZC_DEBUG
7676
#endif // NDEBUG
7777

78-
7978
ABSL_FLAG(int32_t, max_conversion_candidates_size, 200,
8079
"maximum candidates size");
8180
ABSL_FLAG(std::string, user_profile_dir, "", "path to user profile directory");
@@ -235,7 +234,7 @@ void PrintCandidate(const Segment& parent, size_t candidates_size, int num,
235234
lines.push_back("rid: " + PosIdPrintUtil::IdToString(cand.rid));
236235
lines.push_back("attr: " + CandidateAttributesToString(cand.attributes));
237236
lines.push_back("num_style: " + NumberStyleToString(cand.style));
238-
const std::string& segbdd_str = InnerSegmentBoundaryToString(cand);
237+
const std::string segbdd_str = InnerSegmentBoundaryToString(cand);
239238
if (!segbdd_str.empty()) {
240239
lines.push_back("segbdd: " + segbdd_str);
241240
}
@@ -348,7 +347,7 @@ bool ConverterMain::ExecCommand(absl::string_view line, Segments* segments) {
348347
.create_partial_candidates = request_.auto_partial_suggestion(),
349348
};
350349

351-
const std::string& func = fields[0];
350+
absl::string_view func = fields[0];
352351
if (func == "startconversion" || func == "start" || func == "s") {
353352
options.request_type = ConversionRequest::CONVERSION;
354353
options.create_partial_candidates = false;
@@ -411,8 +410,8 @@ bool ConverterMain::ExecCommand(absl::string_view line, Segments* segments) {
411410
} else if (func == "commitsegmentvalue" || func == "commit" || func == "c") {
412411
CHECK_FIELDS_LENGTH(3);
413412
return converter_->CommitSegmentValue(segments,
414-
NumberUtil::SimpleAtoi(fields[1]),
415-
NumberUtil::SimpleAtoi(fields[2]));
413+
NumberUtil::SimpleAtoi(fields[1]),
414+
NumberUtil::SimpleAtoi(fields[2]));
416415
} else if (func == "commitallandfinish") {
417416
for (int i = 0; i < segments->conversion_segments_size(); ++i) {
418417
if (segments->conversion_segment(i).segment_type() !=
@@ -433,8 +432,8 @@ bool ConverterMain::ExecCommand(absl::string_view line, Segments* segments) {
433432
} else if (func == "focussegmentvalue" || func == "focus") {
434433
CHECK_FIELDS_LENGTH(3);
435434
return converter_->FocusSegmentValue(segments,
436-
NumberUtil::SimpleAtoi(fields[1]),
437-
NumberUtil::SimpleAtoi(fields[2]));
435+
NumberUtil::SimpleAtoi(fields[1]),
436+
NumberUtil::SimpleAtoi(fields[2]));
438437
} else if (func == "commitfirstsegment") {
439438
CHECK_FIELDS_LENGTH(2);
440439
std::vector<size_t> singleton_vector;
@@ -451,8 +450,8 @@ bool ConverterMain::ExecCommand(absl::string_view line, Segments* segments) {
451450
.Build();
452451
if (fields.size() == 3) {
453452
return converter_->ResizeSegment(segments, conversion_request,
454-
NumberUtil::SimpleAtoi(fields[1]),
455-
NumberUtil::SimpleAtoi(fields[2]));
453+
NumberUtil::SimpleAtoi(fields[1]),
454+
NumberUtil::SimpleAtoi(fields[2]));
456455
}
457456
} else if (func == "resizesegments" || func == "resizes") {
458457
options.request_type = ConversionRequest::CONVERSION;
@@ -470,8 +469,8 @@ bool ConverterMain::ExecCommand(absl::string_view line, Segments* segments) {
470469
static_cast<uint8_t>(NumberUtil::SimpleAtoi(fields[i])));
471470
}
472471
return converter_->ResizeSegments(segments, conversion_request,
473-
NumberUtil::SimpleAtoi(fields[1]),
474-
new_arrays);
472+
NumberUtil::SimpleAtoi(fields[1]),
473+
new_arrays);
475474
}
476475
} else if (func == "disableuserhistory") {
477476
config_.set_history_learning_level(config::Config::NO_HISTORY);
@@ -526,7 +525,7 @@ std::string ConverterMain::ExecCommandToString(absl::string_view line) {
526525
}
527526

528527
std::pair<std::string, std::string> SelectDataFileFromName(
529-
const std::string& mozc_runfiles_dir, const std::string& engine_name) {
528+
absl::string_view mozc_runfiles_dir, absl::string_view engine_name) {
530529
struct {
531530
absl::string_view engine_name;
532531
absl::string_view path;
@@ -545,8 +544,8 @@ std::pair<std::string, std::string> SelectDataFileFromName(
545544
return std::pair<std::string, std::string>("", "");
546545
}
547546

548-
std::string SelectIdDefFromName(const std::string& mozc_runfiles_dir,
549-
const std::string& engine_name) {
547+
std::string SelectIdDefFromName(absl::string_view mozc_runfiles_dir,
548+
absl::string_view engine_name) {
550549
struct {
551550
absl::string_view engine_name;
552551
absl::string_view path;
@@ -658,7 +657,7 @@ int main(int argc, char** argv) {
658657
<< absl::GetFlag(FLAGS_engine_type);
659658
}
660659

661-
if (const std::string& textproto =
660+
if (const std::string textproto =
662661
absl::GetFlag(FLAGS_decoder_experiment_params);
663662
!textproto.empty()) {
664663
mozc::commands::DecoderExperimentParams params;

src/converter/converter_test.cc

Lines changed: 23 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -425,9 +425,9 @@ TEST_F(ConverterTest, ConvertTest) {
425425
}
426426

427427
namespace {
428-
std::string ContextAwareConvert(const std::string& first_key,
429-
const std::string& first_value,
430-
const std::string& second_key) {
428+
std::string ContextAwareConvert(absl::string_view first_key,
429+
absl::string_view first_value,
430+
absl::string_view second_key) {
431431
std::unique_ptr<Engine> engine = MockDataEngineFactory::Create().value();
432432
std::shared_ptr<const ConverterInterface> converter = engine->GetConverter();
433433
CHECK(converter);
@@ -442,7 +442,7 @@ std::string ContextAwareConvert(const std::string& first_key,
442442
int position = -1;
443443
for (size_t i = 0; i < segments.segment(segment_num).candidates_size();
444444
++i) {
445-
const std::string& value =
445+
absl::string_view value =
446446
segments.segment(segment_num).candidate(i).value;
447447
if (first_value.substr(converted.size(), value.size()) == value) {
448448
position = static_cast<int>(i);
@@ -1218,14 +1218,14 @@ TEST_F(ConverterTest, StartReverseConversion) {
12181218
const std::shared_ptr<const ConverterInterface> converter =
12191219
engine->GetConverter();
12201220

1221-
const std::string kHonKanji = "";
1222-
const std::string kHonHiragana = "ほん";
1223-
const std::string kMuryouKanji = "無料";
1224-
const std::string kMuryouHiragana = "むりょう";
1225-
const std::string kFullWidthSpace = " "; // full-width space
1221+
constexpr absl::string_view kHonKanji = "";
1222+
constexpr absl::string_view kHonHiragana = "ほん";
1223+
constexpr absl::string_view kMuryouKanji = "無料";
1224+
constexpr absl::string_view kMuryouHiragana = "むりょう";
1225+
constexpr absl::string_view kFullWidthSpace = " "; // full-width space
12261226
{
12271227
// Test for single Kanji character.
1228-
const std::string& kInput = kHonKanji;
1228+
absl::string_view kInput = kHonKanji;
12291229
Segments segments;
12301230
EXPECT_TRUE(converter->StartReverseConversion(&segments, kInput));
12311231
ASSERT_EQ(segments.segments_size(), 1);
@@ -1234,7 +1234,7 @@ TEST_F(ConverterTest, StartReverseConversion) {
12341234
}
12351235
{
12361236
// Test for multi-Kanji character.
1237-
const std::string& kInput = kMuryouKanji;
1237+
absl::string_view kInput = kMuryouKanji;
12381238
Segments segments;
12391239
EXPECT_TRUE(converter->StartReverseConversion(&segments, kInput));
12401240
ASSERT_EQ(segments.segments_size(), 1);
@@ -1258,7 +1258,7 @@ TEST_F(ConverterTest, StartReverseConversion) {
12581258
}
12591259
{
12601260
// Test for multi terms separated by multiple spaces.
1261-
const std::string kInput = kHonKanji + " " + kMuryouKanji;
1261+
const std::string kInput = absl::StrCat(kHonKanji, " ", kMuryouKanji);
12621262
Segments segments;
12631263
EXPECT_TRUE(converter->StartReverseConversion(&segments, kInput));
12641264
ASSERT_EQ(segments.segments_size(), 3);
@@ -1272,7 +1272,7 @@ TEST_F(ConverterTest, StartReverseConversion) {
12721272
}
12731273
{
12741274
// Test for leading white spaces.
1275-
const std::string kInput = " " + kHonKanji;
1275+
const std::string kInput = absl::StrCat(" ", kHonKanji);
12761276
Segments segments;
12771277
EXPECT_TRUE(converter->StartReverseConversion(&segments, kInput));
12781278
ASSERT_EQ(segments.segments_size(), 2);
@@ -1283,7 +1283,7 @@ TEST_F(ConverterTest, StartReverseConversion) {
12831283
}
12841284
{
12851285
// Test for trailing white spaces.
1286-
const std::string kInput = kMuryouKanji + " ";
1286+
const std::string kInput = absl::StrCat(kMuryouKanji, " ");
12871287
Segments segments;
12881288
EXPECT_TRUE(converter->StartReverseConversion(&segments, kInput));
12891289
ASSERT_EQ(segments.segments_size(), 2);
@@ -1295,7 +1295,8 @@ TEST_F(ConverterTest, StartReverseConversion) {
12951295
}
12961296
{
12971297
// Test for multi terms separated by a full-width space.
1298-
const std::string kInput = kHonKanji + kFullWidthSpace + kMuryouKanji;
1298+
const std::string kInput =
1299+
absl::StrCat(kHonKanji, kFullWidthSpace, kMuryouKanji);
12991300
Segments segments;
13001301
EXPECT_TRUE(converter->StartReverseConversion(&segments, kInput));
13011302
ASSERT_EQ(segments.segments_size(), 3);
@@ -1310,8 +1311,10 @@ TEST_F(ConverterTest, StartReverseConversion) {
13101311
}
13111312
{
13121313
// Test for multi terms separated by two full-width spaces.
1313-
const std::string kFullWidthSpace2 = kFullWidthSpace + kFullWidthSpace;
1314-
const std::string kInput = kHonKanji + kFullWidthSpace2 + kMuryouKanji;
1314+
const std::string kFullWidthSpace2 =
1315+
absl::StrCat(kFullWidthSpace, kFullWidthSpace);
1316+
const std::string kInput =
1317+
absl::StrCat(kHonKanji, kFullWidthSpace2, kMuryouKanji);
13151318
Segments segments;
13161319
EXPECT_TRUE(converter->StartReverseConversion(&segments, kInput));
13171320
ASSERT_EQ(segments.segments_size(), 3);
@@ -1326,8 +1329,9 @@ TEST_F(ConverterTest, StartReverseConversion) {
13261329
}
13271330
{
13281331
// Test for multi terms separated by the mix of full- and half-width spaces.
1329-
const std::string kFullWidthSpace2 = kFullWidthSpace + " ";
1330-
const std::string kInput = kHonKanji + kFullWidthSpace2 + kMuryouKanji;
1332+
const std::string kFullWidthSpace2 = absl::StrCat(kFullWidthSpace, " ");
1333+
const std::string kInput =
1334+
absl::StrCat(kHonKanji, kFullWidthSpace2, kMuryouKanji);
13311335
Segments segments;
13321336
EXPECT_TRUE(converter->StartReverseConversion(&segments, kInput));
13331337
ASSERT_EQ(segments.segments_size(), 3);

src/converter/gen_segmenter_bitarray.cc

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545

4646
#include "absl/container/flat_hash_map.h"
4747
#include "absl/log/check.h"
48+
#include "absl/strings/string_view.h"
4849
#include "base/container/bitarray.h"
4950
#include "base/file_stream.h"
5051
#include "protocol/segmenter_data.pb.h"
@@ -115,8 +116,8 @@ class StateTable {
115116

116117
void SegmenterBitarrayGenerator::GenerateBitarray(
117118
int lsize, int rsize, IsBoundaryFunc is_boundary,
118-
const std::string& output_size_info, const std::string& output_ltable,
119-
const std::string& output_rtable, const std::string& output_bitarray) {
119+
absl::string_view output_size_info, absl::string_view output_ltable,
120+
absl::string_view output_rtable, absl::string_view output_bitarray) {
120121
// Load the original matrix into an array
121122
std::vector<uint8_t> array((lsize + 1) * (rsize + 1));
122123

src/converter/gen_segmenter_bitarray.h

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
#include <string>
3535

3636
#include "absl/functional/any_invocable.h"
37+
#include "absl/strings/string_view.h"
3738

3839
namespace mozc {
3940

@@ -45,10 +46,10 @@ class SegmenterBitarrayGenerator {
4546
SegmenterBitarrayGenerator& operator=(const SegmenterBitarrayGenerator&) =
4647
delete;
4748
static void GenerateBitarray(int lsize, int rsize, IsBoundaryFunc is_boundary,
48-
const std::string& output_size_info,
49-
const std::string& output_ltable,
50-
const std::string& output_rtable,
51-
const std::string& output_bitarray);
49+
absl::string_view output_size_info,
50+
absl::string_view output_ltable,
51+
absl::string_view output_rtable,
52+
absl::string_view output_bitarray);
5253
};
5354

5455
} // namespace mozc

src/converter/immutable_converter_main.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ std::string DumpNodes(const Lattice& lattice) {
197197
}
198198

199199
bool ExecCommand(const ImmutableConverter& immutable_converter,
200-
absl::string_view query, const std::string& output) {
200+
absl::string_view query, absl::string_view output) {
201201
ConversionRequest::Options options = {
202202
.request_type = ConversionRequest::CONVERSION,
203203
.use_actual_converter_for_realtime_conversion = true,
@@ -222,7 +222,7 @@ bool ExecCommand(const ImmutableConverter& immutable_converter,
222222
}
223223

224224
std::unique_ptr<const DataManager> CreateDataManager(
225-
const std::string& dictionary) {
225+
absl::string_view dictionary) {
226226
if (dictionary == "oss") {
227227
return std::make_unique<const oss::OssDataManager>();
228228
}

src/converter/quality_regression_test_lib.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ absl::Status QualityRegressionTest::RunTestForPlatform(
7070
if (i % 1000 == 0) {
7171
LOG(INFO) << "Testing: " << i << " " << kTestData[i].line;
7272
}
73-
const std::string& tsv_line = kTestData[i].line;
73+
absl::string_view tsv_line = kTestData[i].line;
7474
QualityRegressionUtil::TestItem item;
7575
if (!item.ParseFromTSV(tsv_line).ok()) {
7676
return absl::FailedPreconditionError(
@@ -98,7 +98,7 @@ absl::Status QualityRegressionTest::RunTestForPlatform(
9898
table = &disabled_results;
9999
}
100100

101-
const std::string& label = item.label;
101+
absl::string_view label = item.label;
102102
std::string line = absl::StrCat(tsv_line, "\tActual: ", actual_value);
103103
if (*test_result) {
104104
// use "-1.0" as a dummy expected ratio

0 commit comments

Comments
 (0)