BALL
1.4.1
|
00001 // -*- Mode: C++; tab-width: 2; -*- 00002 // vi: set ts=2: 00003 // 00004 // $Id: atomVector.h,v 1.24.20.1 2007/05/18 12:02:43 oliver Exp $ 00005 // 00006 00007 #ifndef BALL_MOLMEC_COMMON_ATOMVECTOR_H 00008 #define BALL_MOLMEC_COMMON_ATOMVECTOR_H 00009 00010 #ifndef BALL_COMMON_H 00011 # include <BALL/common.h> 00012 #endif 00013 00014 #ifndef BALL_MATHS_VECTOR3_H 00015 # include <BALL/MATHS/vector3.h> 00016 #endif 00017 00018 namespace BALL 00019 { 00020 class Gradient; 00021 class Atom; 00022 class Composite; 00023 00029 class BALL_EXPORT AtomVector 00030 : private std::vector<Atom*> 00031 { 00032 public: 00033 00034 BALL_CREATE_DEEP(AtomVector) 00035 00036 00039 00040 00042 typedef std::vector<Atom*>::iterator Iterator; 00043 00046 typedef std::vector<Atom*>::const_iterator ConstIterator; 00047 00049 00052 00055 AtomVector(); 00056 00063 AtomVector(const Composite& composite, bool selected_only = false); 00064 00067 AtomVector(const AtomVector& atoms, bool deep = true); 00068 00071 virtual ~AtomVector(); 00072 00076 using std::vector<Atom*>::clear; 00078 00082 00085 const AtomVector& operator = (const AtomVector& rhs); 00086 00089 void set(const AtomVector& atoms); 00090 00097 const AtomVector& operator = (const Composite& rhs); 00098 00103 void set(const Composite& composite, bool selected_only = false); 00104 00106 00109 00112 using std::vector<Atom*>::size; 00113 00115 Atom* & operator [] (int i) { return std::vector<Atom*>::operator [] (i); } 00116 Atom* const & operator [] (int i) const { return std::vector<Atom*>::operator [] (i); } 00117 00122 void savePositions(); 00123 00129 void resetPositions(); 00130 00139 void moveTo(const Gradient& direction, double step = 1.0); 00140 00149 void moveTo(const Gradient& direction, double step, Size k); 00150 00153 using std::vector<Atom*>::push_back; 00154 00159 void resize(Size new_size); 00160 00162 00165 00168 //?????: GCC3 using std::vector<Atom*>::begin; 00169 iterator begin() { return std::vector<Atom*>::begin(); } 00170 const_iterator begin() const { return std::vector<Atom*>::begin(); } 00171 00174 //?????: GCC3 using std::vector<Atom*>::end; 00175 iterator end() { return std::vector<Atom*>::end(); } 00176 const_iterator end() const { return std::vector<Atom*>::end(); } 00177 00179 00180 protected: 00181 00182 /*_ The saved positions. 00183 */ 00184 std::vector<Vector3> saved_position_; 00185 }; 00186 } // end of namespace BALL 00187 00188 #endif // BALL_MOLMEC_MINIMIZATION_GRADIENT_H