MeshLib C++ Docs
Loading...
Searching...
No Matches
MRChangeValue.h
Go to the documentation of this file.
1#pragma once
2#include "MRHistoryAction.h"
3#include "MRAffineXf3.h"
4#include <memory>
5
6namespace MR
7{
10
11
17template <typename T>
19{
20public:
22 ChangeValue( const std::string& name, T* currentValue, T oldValue ) :
23 name_{ name },
24 currentValue_{ currentValue },
25 oldValue_{ oldValue }
26 {}
27
28 virtual std::string name() const override
29 {
30 return name_;
31 }
32
33 virtual void action( HistoryAction::Type ) override
34 {
35 if ( !currentValue_ )
36 return;
37 std::swap( *currentValue_, oldValue_ );
38 }
39
40 [[nodiscard]] virtual size_t heapBytes() const override
41 {
42 return name_.capacity();
43 }
44
45private:
46 std::string name_;
47 T* currentValue_ = nullptr;
48 T oldValue_;
49};
50
51}
Definition MRChangeValue.h:19
Definition MRHistoryAction.h:15
virtual void action(HistoryAction::Type) override
This function is called on history action (undo, redo, etc.)
Definition MRChangeValue.h:33
virtual std::string name() const override
Definition MRChangeValue.h:28
ChangeValue(const std::string &name, T *currentValue, T oldValue)
Constructed from original object's pointer and old value.
Definition MRChangeValue.h:22
virtual size_t heapBytes() const override
returns the amount of memory this object occupies on heap
Definition MRChangeValue.h:40
Type
Definition MRHistoryAction.h:22
only for bindings generation
Definition MRCameraOrientationPlugin.h:8