--- trunk/OOPSE-2.0/src/brains/Snapshot.hpp 2004/10/22 23:09:57 1639 +++ trunk/OOPSE-2.0/src/brains/Snapshot.hpp 2004/10/25 04:08:14 1642 @@ -43,29 +43,44 @@ namespace oopse{ namespace oopse{ + enum DataStorageLayout { + dslPosition = 1, + dslVelocity = 2, + dslAMat = 4, + dslAngularMomentum = 8, + dslUnitVector = 16, + dslZAngle = 32, + dslForce = 64, + dslTorque = 128 + }; //forward declaration class Snapshot; class SnapshotManager; - + class StuntDouble; + /** - * @struct DataStorage + * @class DataStorage * @brief + * @warning do not try to insert element into (or ease element from) private member data + * of DataStorage directly. */ class DataStorage { public: DataStorage() {}; DataStorage(size_t size); + + int size(); void resize(size_t size); void reserve(size_t size); - //friend Snapshot; - //friend SnapshotManager; - //private: + friend class Snapshot; + friend class StuntDouble; + private: vector position; /** position array */ vector velocity; /** velocity array */ - vector Amat; /** rotation matrix array */ + vector aMat; /** rotation matrix array */ vector angularMomentum;/** velocity array */ - vector ul; /** the lab frame unit vector array*/ + vector unitVector; /** the lab frame unit vector array*/ vector zAngle; /** z -angle array */ vector force; /** force array */ vector torque; /** torque array */ @@ -83,9 +98,9 @@ namespace oopse{ class Snapshot { public: - Snapshot() {} - Snapshot(int i) { - + Snapshot(int nAtoms, int nRigidbodies) { + atomData.resize(nAtoms); + rigidbodyData.resize(nRigidbodies); } Snapshot(const Snapshot& s); @@ -121,23 +136,28 @@ namespace oopse{ assert(v.size() > 0); return &(v[0]); } - - /** */ - void resize(size_t size); - - /** */ - void reserve(size_t size); - + int getSize() { + return atomData.size() + rigidbodyData.size(); + } + + int getSizeOfAtoms() { + return atomData.size(); + } + + int getSizeOfRigidBodies() { + return rigidbodyData.size(); + } + DataStorage atomData; DataStorage rigidbodyData; - friend class SnapshotManager; + friend class StuntDouble; private: int id_; /**< identification number of the snapshot */ }; - typedef DataStorage* (Snapshot::*DataStoragePointer); + typedef DataStorage (Snapshot::*DataStoragePointer); } #endif //BRAINS_SNAPSHOT_HPP