mirror of
https://github.com/ArthurSonzogni/FTXUI.git
synced 2024-11-23 19:20:50 +08:00
8a2a9b0799
Fix all the diagnostics reported. Bug: https://github.com/ArthurSonzogni/FTXUI/issues/828
33 lines
907 B
C++
33 lines
907 B
C++
// Copyright 2020 Arthur Sonzogni. All rights reserved.
|
|
// Use of this source code is governed by the MIT license that can be found in
|
|
// the LICENSE file.
|
|
#ifndef FTXUI_UTIL_AUTORESET_HPP
|
|
#define FTXUI_UTIL_AUTORESET_HPP
|
|
|
|
#include <utility>
|
|
|
|
namespace ftxui {
|
|
|
|
/// Assign a value to a variable, reset its old value when going out of scope.
|
|
template <typename T>
|
|
class AutoReset {
|
|
public:
|
|
AutoReset(T* variable, T new_value)
|
|
: variable_(variable), previous_value_(std::move(*variable)) {
|
|
*variable_ = std::move(new_value);
|
|
}
|
|
AutoReset(const AutoReset&) = delete;
|
|
AutoReset(AutoReset&&) = delete;
|
|
AutoReset& operator=(const AutoReset&) = delete;
|
|
AutoReset& operator=(AutoReset&&) = delete;
|
|
~AutoReset() { *variable_ = std::move(previous_value_); }
|
|
|
|
private:
|
|
T* variable_;
|
|
T previous_value_;
|
|
};
|
|
|
|
} // namespace ftxui
|
|
|
|
#endif /* end of include guard: FTXUI_UTIL_AUTORESET_HPP */
|