HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
LOP_LayerCheckpoints.h
Go to the documentation of this file.
1 /*
2  * PROPRIETARY INFORMATION. This software is proprietary to
3  * Side Effects Software Inc., and is not to be reproduced,
4  * transmitted, or disclosed in any way without written permission.
5  *
6  * NAME: LOP_LayerCheckpoints.h (LOP Library, C++)
7  *
8  * COMMENTS: Data structure for managing checkpoints in LOP cooks.
9  */
10 
11 #ifndef __LOP_LayerCheckpoints_h__
12 #define __LOP_LayerCheckpoints_h__
13 
14 #include "LOP_API.h"
15 #include <HUSD/HUSD_DataHandle.h>
17 #include <DEP/DEP_MicroNode.h>
18 #include <UT/UT_StringMap.h>
19 #include <UT/UT_UniquePtr.h>
20 
21 class OP_Context;
22 class LOP_Node;
24 
26 {
27 public:
29  ~LOP_CheckpointMicroNode() override;
30 
32  const DEP_PropagateData &propdata) override;
33 
34 private:
35  LOP_LayerCheckpoints &myOwner;
36 };
37 
39 {
40 public:
43 
44  void ownerInputRewired();
45  void clearIfUpdateRequired(const OP_Context &context);
46  void setClearCheckpointsOnInputChange(bool clear);
47 
48  void createCheckpoint(const HUSD_AutoAnyLock &lock,
49  const UT_StringHolder &id);
50  void removeCheckpoint(const UT_StringRef &id);
51  void clear();
52 
53  void getAvailableCheckpoints(UT_StringArray &ids) const;
54  bool restoreCheckpoint(const HUSD_AutoLayerLock &layerlock,
55  const UT_StringRef &id) const;
56 
57 private:
58  void addInterestInInputDataChange();
59  void removeInterestInInputDataChange();
60 
62 
63  UT_UniquePtr<CheckpointMap> myCheckpoints;
64  LOP_Node &myOwner;
65  LOP_CheckpointMicroNode myMicroNode;
66  bool myClearCheckpointsOnInputDataChange;
67 };
68 
69 #endif
virtual void becameDirty(DEP_MicroNode &src, const DEP_PropagateData &propdata)
std::unique_ptr< T, Deleter > UT_UniquePtr
A smart pointer for unique ownership of dynamically allocated objects.
Definition: UT_UniquePtr.h:39
#define LOP_API
Definition: LOP_API.h:10
Propagation info for a dep micro node.
Definition: DEP_MicroNode.h:36
GLuint * ids
Definition: glcorearb.h:652
GLenum src
Definition: glcorearb.h:1793