LOOS  v2.3.2
ProgressTriggers.cpp
1 /*
2  This file is part of LOOS.
3 
4  LOOS (Lightweight Object-Oriented Structure library)
5  Copyright (c) 2009, Tod D. Romo, Alan Grossfield
6  Department of Biochemistry and Biophysics
7  School of Medicine & Dentistry, University of Rochester
8 
9  This package (LOOS) is free software: you can redistribute it and/or modify
10  it under the terms of the GNU General Public License as published by
11  the Free Software Foundation under version 3 of the License.
12 
13  This package is distributed in the hope that it will be useful,
14  but WITHOUT ANY WARRANTY; without even the implied warranty of
15  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  GNU General Public License for more details.
17 
18  You should have received a copy of the GNU General Public License
19  along with this program. If not, see <http://www.gnu.org/licenses/>.
20 */
21 
22 
23 #include <ProgressTriggers.hpp>
24 
25 
26 namespace loos {
27 
28  bool TriggerEvery::operator()(SimpleCounter* subj) {
29  return(subj->count() % freq == 0);
30  }
31 
32  void TriggerEvery::setFrequency(const uint i) { freq = i; }
33 
34 
35  //----------------------------------------------------------
36  void PercentTrigger::setFraction(double frac) { frac_ = frac; }
37  void PercentTrigger::reset(void) { chunk_ = 0; }
38 
39  bool PercentTrigger::operator()(SimpleCounter* subj) {
40  int chunk = static_cast<int>( subj->fractionComplete() / frac_ );
41  if (chunk != chunk_) {
42  chunk_ = chunk;
43  return(true);
44  }
45  return(false);
46  };
47 
48 }
Namespace for most things not already encapsulated within a class.