Moves shared config and request in setter.

This reduces unnecessary reference counting.

PiperOrigin-RevId: 730718096
This commit is contained in:
Taku Kudo
2025-02-25 05:36:36 +00:00
committed by Hiroyuki Komatsu
parent 206785c5b6
commit e083edab93
9 changed files with 32 additions and 31 deletions

View File

@@ -581,7 +581,8 @@ Composer::Composer()
Composer::Composer(std::shared_ptr<const commands::Request> request,
std::shared_ptr<const config::Config> config)
: Composer(Table::GetSharedDefaultTable(), request, config) {}
: Composer(Table::GetSharedDefaultTable(), std::move(request),
std::move(config)) {}
Composer::Composer(commands::Request request, config::Config config)
: Composer(Table::GetSharedDefaultTable(), std::move(request),
@@ -589,7 +590,7 @@ Composer::Composer(commands::Request request, config::Config config)
Composer::Composer(std::shared_ptr<const Table> table,
commands::Request request, config::Config config)
: Composer(table,
: Composer(std::move(table),
std::make_shared<const commands::Request>(std::move(request)),
std::make_shared<const config::Config>(std::move(config))) {}
@@ -602,16 +603,16 @@ Composer::Composer(std::shared_ptr<const Table> table,
comeback_input_mode_(transliteration::HIRAGANA),
input_field_type_(commands::Context::NORMAL),
shifted_sequence_count_(0),
composition_(table),
max_length_(kMaxPreeditLength),
request_(request),
config_(config),
table_(table),
request_(std::move(request)),
config_(std::move(config)),
table_(std::move(table)),
composition_(table_),
is_new_input_(true) {
DCHECK(request_);
DCHECK(config_);
SetInputMode(transliteration::HIRAGANA);
DCHECK(table_);
SetInputMode(transliteration::HIRAGANA);
Reset();
}
@@ -646,19 +647,19 @@ void Composer::ReloadConfig() {
bool Composer::Empty() const { return (GetLength() == 0); }
void Composer::SetTable(std::shared_ptr<const Table> table) {
table_ = table;
DCHECK(table_);
DCHECK(table);
table_ = std::move(table);
composition_.SetTable(table_);
}
void Composer::SetRequest(std::shared_ptr<const commands::Request> request) {
DCHECK(request);
request_ = request;
request_ = std::move(request);
}
void Composer::SetConfig(std::shared_ptr<const config::Config> config) {
DCHECK(config);
config_ = config;
config_ = std::move(config);
}
void Composer::SetInputMode(transliteration::TransliterationType mode) {

View File

@@ -395,7 +395,6 @@ class Composer final {
commands::Context::InputFieldType input_field_type_;
size_t shifted_sequence_count_;
Composition composition_;
// The original text for the composition. The value is usually
// empty, and used for reverse conversion.
@@ -414,6 +413,8 @@ class Composer final {
// to use std::shared_ptr for shared object.
std::shared_ptr<const Table> table_;
Composition composition_;
// Timestamp of last modified.
int64_t timestamp_msec_ = 0;

View File

@@ -116,8 +116,6 @@ class ComposerTest : public ::testing::Test {
void TearDown() override {
CharacterFormManager::GetCharacterFormManager()->SetDefaultRule();
composer_.reset();
table_.reset();
}
std::unique_ptr<Composer> composer_;

View File

@@ -113,13 +113,13 @@ bool GetFromPending(const Table *table, const absl::string_view key,
CharChunk::CharChunk(Transliterators::Transliterator transliterator,
std::shared_ptr<const Table> table)
: table_(table), transliterator_(transliterator) {
: table_(std::move(table)), transliterator_(transliterator) {
DCHECK(table_);
DCHECK_NE(transliterator, Transliterators::LOCAL);
}
CharChunk::CharChunk(Transliterators::Transliterator transliterator)
: table_(Table::GetSharedDefaultTable()), transliterator_(transliterator) {
: CharChunk(transliterator, Table::GetSharedDefaultTable()) {
DCHECK_NE(transliterator, Transliterators::LOCAL);
}

View File

@@ -446,8 +446,8 @@ void Composition::SetInputMode(Transliterators::Transliterator transliterator) {
}
void Composition::SetTable(std::shared_ptr<const Table> table) {
table_ = table;
DCHECK(table_);
DCHECK(table);
table_ = std::move(table);
}
bool Composition::IsToggleable(size_t position) const {

View File

@@ -58,7 +58,8 @@ enum TrimMode {
class Composition final {
public:
Composition() = default;
explicit Composition(std::shared_ptr<const Table> table) : table_(table) {
explicit Composition(std::shared_ptr<const Table> table)
: table_(std::move(table)) {
DCHECK(table_);
}

View File

@@ -121,17 +121,17 @@ EngineConverter::EngineConverter(
segment_index_(0),
result_(),
candidate_list_(true),
request_(request),
request_(std::move(request)),
state_(COMPOSITION),
request_type_(ConversionRequest::CONVERSION),
client_revision_(0),
candidate_list_visible_(false) {
DCHECK(request);
DCHECK(request_);
DCHECK(config);
conversion_preferences_.use_history = true;
conversion_preferences_.request_suggestion = true;
candidate_list_.set_page_size(request->candidate_page_size());
SetConfig(config);
candidate_list_.set_page_size(request_->candidate_page_size());
SetConfig(std::move(config));
}
bool EngineConverter::CheckState(
@@ -1639,13 +1639,13 @@ void EngineConverter::FillIncognitoCandidateWords(
void EngineConverter::SetRequest(
std::shared_ptr<const commands::Request> request) {
DCHECK(request);
request_ = request;
request_ = std::move(request);
candidate_list_.set_page_size(request_->candidate_page_size());
}
void EngineConverter::SetConfig(std::shared_ptr<const config::Config> config) {
DCHECK(config);
config_ = config;
config_ = std::move(config);
updated_command_ = Segment::Candidate::DEFAULT_COMMAND;
selection_shortcut_ = config_->selection_shortcut();
use_cascading_window_ = config_->use_cascading_window();

View File

@@ -84,7 +84,7 @@ ImeContext::ImeContext(const ImeContext &src) : data_(src.data_) {
void ImeContext::SetRequest(std::shared_ptr<const commands::Request> request) {
DCHECK(request);
data_.request = request;
data_.request = std::move(request);
if (converter_) {
converter_->SetRequest(data_.request);
}
@@ -97,7 +97,7 @@ const commands::Request &ImeContext::GetRequest() const {
void ImeContext::SetConfig(std::shared_ptr<const config::Config> config) {
DCHECK(config);
data_.config = config;
data_.config = std::move(config);
if (converter_) {
converter_->SetConfig(data_.config);
@@ -112,7 +112,7 @@ const config::Config &ImeContext::GetConfig() const { return *data_.config; }
void ImeContext::SetKeyMapManager(
std::shared_ptr<const keymap::KeyMapManager> key_map_manager) {
DCHECK(key_map_manager);
data_.key_map_manager = key_map_manager;
data_.key_map_manager = std::move(key_map_manager);
}
const keymap::KeyMapManager &ImeContext::GetKeyMapManager() const {

View File

@@ -1154,19 +1154,19 @@ void Session::SetTable(std::shared_ptr<const composer::Table> table) {
return;
}
ClearUndoContext();
context_->mutable_composer()->SetTable(table);
context_->mutable_composer()->SetTable(std::move(table));
}
void Session::SetConfig(std::shared_ptr<const config::Config> config) {
DCHECK(config);
ClearUndoContext();
context_->SetConfig(config);
context_->SetConfig(std::move(config));
}
void Session::SetRequest(std::shared_ptr<const commands::Request> request) {
DCHECK(request);
ClearUndoContext();
context_->SetRequest(request);
context_->SetRequest(std::move(request));
}
void Session::SetKeyMapManager(