1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
|
// -*- Mode: C++; tab-width: 2; -*-
// vi: set ts=2:
//
// $Id: composedEnergyProcessor.C,v 1.6 2002/02/27 12:21:13 sturm Exp $
#include <BALL/ENERGY/composedEnergyProcessor.h>
namespace BALL
{
ComposedEnergyProcessor::ComposedEnergyProcessor()
: EnergyProcessor(),
components_()
{
}
ComposedEnergyProcessor::ComposedEnergyProcessor
(const ComposedEnergyProcessor& proc)
: EnergyProcessor(proc),
components_(proc.components_)
{
}
ComposedEnergyProcessor::ComposedEnergyProcessor(
EnergyProcessorList proc_list)
: EnergyProcessor(),
components_(proc_list)
{
checkValidity();
}
ComposedEnergyProcessor::~ComposedEnergyProcessor()
{
clear();
valid_ = false;
}
void ComposedEnergyProcessor::clear()
{
EnergyProcessor::clear();
components_.clear();
}
const ComposedEnergyProcessor& ComposedEnergyProcessor::operator =
(const ComposedEnergyProcessor& proc)
{
EnergyProcessor::operator = (proc);
components_ = proc.components_;
valid_ = proc.valid_;
return *this;
}
bool ComposedEnergyProcessor::finish()
{
EnergyProcessorList::iterator list_it = components_.begin();
for (; list_it != components_.end(); ++list_it)
{
((AtomContainer*) fragment_)->apply(**list_it);
energy_ += (*list_it)->getEnergy();
}
return true;
}
void ComposedEnergyProcessor::addComponent(EnergyProcessor* proc)
{
// if there was no processor in the list before, assume that the
// instance will be valid after insertion.
if (components_.empty())
{
valid_ = true;
}
components_.push_back(proc);
// if the processor is invalid, invalidate the whole instance
if (!proc->isValid())
{
valid_ = false;
}
}
void ComposedEnergyProcessor::removeComponent(EnergyProcessor* proc)
{
components_.remove(proc);
checkValidity();
}
Size ComposedEnergyProcessor::getNumberOfEnergyProcessors() const
{
return (Size)components_.size();
}
void ComposedEnergyProcessor::checkValidity()
{
valid_ = true;
EnergyProcessorList::iterator it = components_.begin();
for (; it != components_.end(); ++it)
{
if (!(*it)->isValid())
{
valid_ =false;
}
}
}
} // namespace BALL
|