| 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); |