Skip to content

Commit

Permalink
Prefer to construct AnyDependency with absl::in_place_type instea…
Browse files Browse the repository at this point in the history
…d of by

default construction and then calling `Emplace()`.

PiperOrigin-RevId: 617484103
  • Loading branch information
QrczakMK committed Mar 20, 2024
1 parent b21c039 commit 6c6cece
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 20 deletions.
2 changes: 2 additions & 0 deletions riegeli/lines/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ cc_library(
"@com_google_absl//absl/base:core_headers",
"@com_google_absl//absl/status",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/utility",
],
)

Expand All @@ -90,5 +91,6 @@ cc_library(
"@com_google_absl//absl/base:core_headers",
"@com_google_absl//absl/status",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/utility",
],
)
17 changes: 7 additions & 10 deletions riegeli/lines/text_reader.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
#include "absl/base/attributes.h"
#include "absl/base/optimization.h"
#include "absl/status/status.h"
#include "absl/utility/utility.h"
#include "riegeli/base/any_dependency.h"
#include "riegeli/base/assert.h"
#include "riegeli/base/dependency.h"
Expand Down Expand Up @@ -339,20 +340,16 @@ template <typename Src,
std::enable_if_t<IsValidDependency<Reader*, Src>::value, int>>
AnyTextReader<Src> MakeAnyTextReader(Initializer<Src> src,
AnyTextReaderOptions options) {
AnyTextReader<Src> result;
switch (options.newline()) {
case ReadNewline::kLf:
result.template Emplace<TextReader<ReadNewline::kLf, Src>>(
std::move(src), options.buffer_options());
return result;
return {absl::in_place_type<TextReader<ReadNewline::kLf, Src>>,
std::move(src), options.buffer_options()};
case ReadNewline::kCrLfOrLf:
result.template Emplace<TextReader<ReadNewline::kCrLfOrLf, Src>>(
std::move(src), options.buffer_options());
return result;
return {absl::in_place_type<TextReader<ReadNewline::kCrLfOrLf, Src>>,
std::move(src), options.buffer_options()};
case ReadNewline::kAny:
result.template Emplace<TextReader<ReadNewline::kAny, Src>>(
std::move(src), options.buffer_options());
return result;
return {absl::in_place_type<TextReader<ReadNewline::kAny, Src>>,
std::move(src), options.buffer_options()};
}
RIEGELI_ASSERT_UNREACHABLE()
<< "Unknown newline: " << static_cast<int>(options.newline());
Expand Down
17 changes: 7 additions & 10 deletions riegeli/lines/text_writer.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
#include "absl/base/optimization.h"
#include "absl/status/status.h"
#include "absl/strings/string_view.h"
#include "absl/utility/utility.h"
#include "riegeli/base/any_dependency.h"
#include "riegeli/base/assert.h"
#include "riegeli/base/dependency.h"
Expand Down Expand Up @@ -296,20 +297,16 @@ template <typename Dest,
std::enable_if_t<IsValidDependency<Writer*, Dest>::value, int>>
AnyTextWriter<Dest> MakeAnyTextWriter(Initializer<Dest> dest,
AnyTextWriterOptions options) {
AnyTextWriter<Dest> result;
switch (options.newline()) {
case WriteNewline::kLf:
result.template Emplace<TextWriter<WriteNewline::kLf, Dest>>(
std::move(dest), options.buffer_options());
return result;
return {absl::in_place_type<TextWriter<WriteNewline::kLf, Dest>>,
std::move(dest), options.buffer_options()};
case WriteNewline::kCr:
result.template Emplace<TextWriter<WriteNewline::kCr, Dest>>(
std::move(dest), options.buffer_options());
return result;
return {absl::in_place_type<TextWriter<WriteNewline::kCr, Dest>>,
std::move(dest), options.buffer_options()};
case WriteNewline::kCrLf:
result.template Emplace<TextWriter<WriteNewline::kCrLf, Dest>>(
std::move(dest), options.buffer_options());
return result;
return {absl::in_place_type<TextWriter<WriteNewline::kCrLf, Dest>>,
std::move(dest), options.buffer_options()};
}
RIEGELI_ASSERT_UNREACHABLE()
<< "Unknown newline: " << static_cast<int>(options.newline());
Expand Down

0 comments on commit 6c6cece

Please sign in to comment.