ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE-4/src/brains/BlockSnapshotManager.hpp
(Generate patch)

Comparing trunk/OOPSE-4/src/brains/BlockSnapshotManager.hpp (file contents):
Revision 2002 by tim, Sun Feb 13 06:57:48 2005 UTC vs.
Revision 2035 by tim, Tue Feb 15 19:36:07 2005 UTC

# Line 40 | Line 40
40   */
41   #ifndef BRAINS_BLOCKSNAPSHOTMANAGER_HPP
42   #define BRAINS_BLOCKSNAPSHOTMANAGER_HPP
43 + #include <vector>
44  
45   #include "brains/SnapshotManager.hpp"
46   namespace oopse {
# Line 53 | Line 54 | class BlockSnapshotMananger : public SnapshotManager{
54   * @class BlockSnapshotManager
55   * @todo document
56   */
57 < class BlockSnapshotMananger : public SnapshotManager{
57 > class BlockSnapshotManager : public SnapshotManager{
58  
59      public:
60 <        BlockSnapshotMananger(SimInfo* info, const std::string& filename, int storageLayout, int blockCapacity = 2);
61 <        ~BlockSnapshotMananger();
60 >        BlockSnapshotManager(SimInfo* info, const std::string& filename, int storageLayout, int blockCapacity = 2);
61 >        ~BlockSnapshotManager();
62          
63 <        virtual Snapshot* getSnapshot(int id);
63 >        virtual Snapshot* getSnapshot(int id) { return snapshots_[id]; }
64  
65          /** Returns number of snapshot blocks in this BlockSnapshotManager*/
66          int getNBlocks() {
# Line 72 | Line 73 | class BlockSnapshotMananger : public SnapshotManager{
73          
74          int getNActiveBlocks();
75          
76 <        bool isBlockActive(int block);
77 <        
76 >
77 >        bool isBlockActive(int block) {
78 >            return  findActiveBlock(block) != activeBlocks_.end() ? true : false;
79 >        }        
80 >
81          bool loadBlock(int block);
82          
83          bool unloadBlock(int block);
# Line 84 | Line 88 | class BlockSnapshotMananger : public SnapshotManager{
88              return blockCapacity_;                
89          }
90  
91 <        int getNFrames() {
88 <            return reader_->getNFrames();
89 <        }
91 >        int getNFrames();
92          
93      private:
94  
95 +        std::vector<int>::iterator findActiveBlock(int block) {
96 +            return std::find(activeBlocks_.begin(), activeBlocks_.end(), block);
97 +        }
98 +
99 +        bool hasZeroRefBlock();
100 +
101 +        int getFirstZeroRefBlock();
102 +
103 +        void internalLoad(int block);
104 +        void internalUnload(int block);
105          Snapshot* loadFrame(int frame);
106          
107          SimInfo* info_;
96        int storageLayout_;
108          int blockCapacity_;
109  
110          std::vector<Snapshot*> snapshots_;
111          std::vector<SnapshotBlock> blocks_;        
112          std::vector<int> activeBlocks_;
113 +        std::vector<int> activeRefCount_;
114          
115          int nAtoms_;
116          int nRigidBodies_;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines