| 41 |  | */ | 
| 42 |  |  | 
| 43 |  | #include "selection/SelectionManager.hpp" | 
| 44 | – | #include "primitives/Molecule.hpp" | 
| 44 |  | #include "brains/SimInfo.hpp" | 
| 45 |  | namespace OpenMD { | 
| 46 |  | SelectionManager::SelectionManager(SimInfo* info) : info_(info){ | 
| 49 |  | nObjects_.push_back(info_->getNGlobalBends()); | 
| 50 |  | nObjects_.push_back(info_->getNGlobalTorsions()); | 
| 51 |  | nObjects_.push_back(info_->getNGlobalInversions()); | 
| 52 | + | nObjects_.push_back(info_->getNGlobalMolecules()); | 
| 53 |  |  | 
| 54 |  | stuntdoubles_.resize(nObjects_[STUNTDOUBLE]); | 
| 55 |  | bonds_.resize(nObjects_[BOND]); | 
| 56 |  | bends_.resize(nObjects_[BEND]); | 
| 57 |  | torsions_.resize(nObjects_[TORSION]); | 
| 58 |  | inversions_.resize(nObjects_[INVERSION]); | 
| 59 | + | molecules_.resize(nObjects_[MOLECULE]); | 
| 60 |  |  | 
| 61 |  | SimInfo::MoleculeIterator mi; | 
| 62 |  | Molecule::AtomIterator ai; | 
| 76 |  |  | 
| 77 |  | for (mol = info_->beginMolecule(mi); mol != NULL; | 
| 78 |  | mol = info_->nextMolecule(mi)) { | 
| 79 | + | molecules_[mol->getGlobalIndex()] = mol; | 
| 80 |  |  | 
| 81 |  | for(atom = mol->beginAtom(ai); atom != NULL; | 
| 82 |  | atom = mol->nextAtom(ai)) { | 
| 204 |  | i = ss_.bitsets_[INVERSION].nextOffBit(i); | 
| 205 |  | return i == -1 ? NULL : inversions_[i]; | 
| 206 |  | } | 
| 207 | + |  | 
| 208 | + | Molecule* SelectionManager::beginSelectedMolecule(int& i) { | 
| 209 | + | i = ss_.bitsets_[MOLECULE].firstOnBit(); | 
| 210 | + | return i == -1 ? NULL : molecules_[i]; | 
| 211 | + | } | 
| 212 |  |  | 
| 213 | + | Molecule* SelectionManager::nextSelectedMolecule(int& i) { | 
| 214 | + | i = ss_.bitsets_[MOLECULE].nextOnBit(i); | 
| 215 | + | return i == -1 ? NULL : molecules_[i]; | 
| 216 | + | } | 
| 217 | + |  | 
| 218 | + | Molecule* SelectionManager::beginUnselectedMolecule(int& i){ | 
| 219 | + | i = ss_.bitsets_[MOLECULE].firstOffBit(); | 
| 220 | + | return i == -1 ? NULL : molecules_[i]; | 
| 221 | + | } | 
| 222 | + |  | 
| 223 | + | Molecule* SelectionManager::nextUnSelectedMolecule(int& i) { | 
| 224 | + | i = ss_.bitsets_[MOLECULE].nextOffBit(i); | 
| 225 | + | return i == -1 ? NULL : molecules_[i]; | 
| 226 | + | } | 
| 227 | + |  | 
| 228 |  | SelectionManager operator| (const SelectionManager& sman1, | 
| 229 |  | const SelectionManager& sman2) { | 
| 230 |  | SelectionManager result(sman1); |