Make CFXJSE_Engine::ResolveResult a move-only type
Introduce the implicitly deleted move operators, and explicitly
delete the the copy operators. Avoids a vector copy in a few
existing places, like when assigning/extracting a value to/from
an optional<ResolveResult>.
Change-Id: I8517bd74f8c1a91aed615f3bcfaf98f13377750f
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/124451
Commit-Queue: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
Reviewed-by: Tom Sepez <tsepez@google.com>
diff --git a/fxjs/xfa/cfxjse_engine.cpp b/fxjs/xfa/cfxjse_engine.cpp
index b265cac..2eb8e8d 100644
--- a/fxjs/xfa/cfxjse_engine.cpp
+++ b/fxjs/xfa/cfxjse_engine.cpp
@@ -79,11 +79,11 @@
CFXJSE_Engine::ResolveResult::ResolveResult() = default;
-CFXJSE_Engine::ResolveResult::ResolveResult(const ResolveResult& that) =
+CFXJSE_Engine::ResolveResult::ResolveResult(ResolveResult&& that) noexcept =
default;
CFXJSE_Engine::ResolveResult& CFXJSE_Engine::ResolveResult::operator=(
- const ResolveResult& that) = default;
+ ResolveResult&& that) noexcept = default;
CFXJSE_Engine::ResolveResult::~ResolveResult() = default;
diff --git a/fxjs/xfa/cfxjse_engine.h b/fxjs/xfa/cfxjse_engine.h
index 487bf23..5890483 100644
--- a/fxjs/xfa/cfxjse_engine.h
+++ b/fxjs/xfa/cfxjse_engine.h
@@ -62,8 +62,13 @@
};
ResolveResult();
- ResolveResult(const ResolveResult& that);
- ResolveResult& operator=(const ResolveResult& that);
+ ResolveResult(ResolveResult&& that) noexcept;
+ ResolveResult& operator=(ResolveResult&& that) noexcept;
+
+ // Move-only type.
+ ResolveResult(const ResolveResult& that) = delete;
+ ResolveResult& operator=(const ResolveResult& that) = delete;
+
~ResolveResult();
Type type = Type::kNodes;