STL Memory Versioning
segment.h
Go to the documentation of this file.
1 
7 #ifndef __SEGMENT_H__
8 #define __SEGMENT_H__
9 
10 #include <list>
11 #include <memory>
12 
13 class Revision;
14 class VersionedI;
15 
20 class Segment : public std::enable_shared_from_this<Segment>
21 {
22 public:
27  Segment();
28 
34  Segment(std::shared_ptr<Segment> parent);
35 
40  void Release();
41 
48  void Collapse(std::shared_ptr<Revision> main);
49 
54  std::shared_ptr<Segment> parent;
55 
60  int version;
61 
66  int refcount;
67 
73  std::list<VersionedI*> written;
74 
75 private:
80  static int versionCount;
81 };
82 
83 #endif
Revision class for for keeping track of segment branches.
Definition: revision.h:22
Class to keep track what Versioned variables were changed.
Definition: segment.h:21
void Release()
Release Segment when it's no longer needed.
Definition: segment.cpp:23
int refcount
Count of references for that Segment.
Definition: segment.h:66
int version
Version of that Segment.
Definition: segment.h:60
void Collapse(std::shared_ptr< Revision > main)
Compress branch of Segments into one Segment.
Definition: segment.cpp:33
std::list< VersionedI * > written
List of all Versioned variables that were changed.
Definition: segment.h:73
Segment()
Construct the very first Segment.
Definition: segment.cpp:7
std::shared_ptr< Segment > parent
Previous Segment.
Definition: segment.h:54
Interface for all Versioned classes.
Definition: versioned.h:21