aboutsummaryrefslogtreecommitdiff
path: root/src/openvic-dataloader/ParseState.hpp
diff options
context:
space:
mode:
author Spartan322 <Megacake1234@gmail.com>2024-08-11 02:59:55 +0200
committer Spartan322 <Megacake1234@gmail.com>2024-08-11 03:46:58 +0200
commit9617863bbb82fbe5c3c203dec2b9a7d7f6a746d5 (patch)
tree05cb6ce7a3e4f5f5af01498e7ee0f95e4fea1692 /src/openvic-dataloader/ParseState.hpp
parentefcc544bb36c80efb911390855c0123d5d11f742 (diff)
Fix logger file invalid pointerfix/logger-invalidation
Add explicit move semantics to AbstractSyntaxTree Add explicit move semantics to ParseState
Diffstat (limited to 'src/openvic-dataloader/ParseState.hpp')
-rw-r--r--src/openvic-dataloader/ParseState.hpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/openvic-dataloader/ParseState.hpp b/src/openvic-dataloader/ParseState.hpp
index 259f2a5..a9a9953 100644
--- a/src/openvic-dataloader/ParseState.hpp
+++ b/src/openvic-dataloader/ParseState.hpp
@@ -1,7 +1,5 @@
#pragma once
-#include <utility>
-
#include <openvic-dataloader/detail/Encoding.hpp>
#include <lexy/encoding.hpp>
@@ -37,6 +35,18 @@ namespace ovdl {
_logger { this->ast().file() },
BasicParseState(encoding) {}
+ ParseState(ParseState&& other)
+ : _ast { std::move(other._ast) },
+ _logger { this->ast().file() },
+ BasicParseState(other.encoding()) {}
+
+ ParseState& operator=(ParseState&& rhs) {
+ this->~ParseState();
+ new (this) ParseState(std::move(rhs));
+
+ return *this;
+ }
+
template<typename Encoding, typename MemoryResource = void>
ParseState(lexy::buffer<Encoding, MemoryResource>&& buffer, detail::Encoding encoding)
: ParseState(typename ast_type::file_type { std::move(buffer) }, encoding) {}