Rumba C++ SDK
PlugModificationTracker.h
Go to the documentation of this file.
1 /*
2  *
3  ***
4  *****
5  ********************* Mercenaries Engineering SARL
6  ***************** Copyright (C) 2020
7  *************
8  ********* http://www.mercenaries-engineering.com
9  ***********
10  **** ****
11  ** **
12 */
13 #pragma once
14 #include "Impl.h"
15 #include "Ptr.h"
16 
17 namespace maquina
18 {
19  class Plug;
20  class PartialInvalidation;
21  using PartialInvalidationPtr = Ptr<const PartialInvalidation>;
22 
29  {
30  public:
33  MAQUINA_EXPORT PlugModificationTracker( std::initializer_list<const Plug> plugs );
39  MAQUINA_EXPORT PlugModificationTracker() : _implementation{nullptr}{}
40 
41  // This constructor and copy operator are deleted as having multiple instances wrapping the same
42  // tracker will lead to inconsistencies in is_modified() and reset(), while having another tracker
43  // tracking the same plug collection can be done with the given constructors.
46 
47  PlugModificationTracker( PlugModificationTracker&& other ) : _implementation{ std::move( other._implementation ) } {}
49  _implementation = std::move(other._implementation);
50  return *this;
51  }
52 
53  ~PlugModificationTracker() = default;
54 
56  MAQUINA_EXPORT bool is_modified() const;
57 
62 
65  MAQUINA_EXPORT void reset();
66 
67  private:
68  std::unique_ptr<Impl> _implementation;
69  };
70 }
PlugModificationTracker & operator=(PlugModificationTracker &&other)
Definition: PlugModificationTracker.h:48
MAQUINA_EXPORT void reset()
PlugModificationTracker & operator=(const PlugModificationTracker &)=delete
MAQUINA_EXPORT PartialInvalidationPtr partial_invalidation() const
MAQUINA_EXPORT bool is_modified() const
This version of the SDK is unstable, i-e, it may change with no warning.
Definition: AddCurveAction.h:20
#define MAQUINA_EXPORT
Definition: Export.h:31
PlugModificationTracker(PlugModificationTracker &&other)
Definition: PlugModificationTracker.h:47
Ptr< const PartialInvalidation > PartialInvalidationPtr
Definition: EvalContext.h:26
Definition: PlugModificationTracker.h:28
MAQUINA_EXPORT PlugModificationTracker()
Definition: PlugModificationTracker.h:39