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 #include <initializer_list>
18 
19 namespace maquina
20 {
21  class Plug;
22  class PartialInvalidation;
23  using PartialInvalidationPtr = Ptr<const PartialInvalidation>;
24 
31  {
32  public:
35  MAQUINA_EXPORT PlugModificationTracker( std::initializer_list<const Plug> plugs );
41  MAQUINA_EXPORT PlugModificationTracker() : _implementation{nullptr}{}
42 
43  // This constructor and copy operator are deleted as having multiple instances wrapping the same
44  // tracker will lead to inconsistencies in is_modified() and reset(), while having another tracker
45  // tracking the same plug collection can be done with the given constructors.
48 
49  PlugModificationTracker( PlugModificationTracker&& other ) : _implementation{ std::move( other._implementation ) } {}
51  _implementation = std::move(other._implementation);
52  return *this;
53  }
54 
55  ~PlugModificationTracker() = default;
56 
58  MAQUINA_EXPORT bool is_modified() const;
59 
64 
67  MAQUINA_EXPORT void touch();
68 
71  MAQUINA_EXPORT void reset();
72 
73  private:
74  std::unique_ptr<Impl> _implementation;
75  };
76 }
MAQUINA_EXPORT void touch()
PlugModificationTracker & operator=(PlugModificationTracker &&other)
Definition: PlugModificationTracker.h:50
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:49
Ptr< const PartialInvalidation > PartialInvalidationPtr
Definition: EvalContext.h:26
Definition: PlugModificationTracker.h:30
MAQUINA_EXPORT PlugModificationTracker()
Definition: PlugModificationTracker.h:41