source: molecuilder/src/Actions/Calculation_impl.hpp@ 9ef76a

Last change on this file since 9ef76a was 5d4edf, checked in by Tillmann Crueger <crueger@…>, 16 years ago

Added a class that allows constructing Processes that have a result

  • Property mode set to 100644
File size: 1.1 KB
Line 
1/*
2 * Calculation_impl.hpp
3 *
4 * Created on: Feb 19, 2010
5 * Author: crueger
6 */
7
8#ifndef CALCULATION_IMPL_HPP_
9#define CALCULATION_IMPL_HPP_
10
11#include <cassert>
12
13template<typename T>
14Calculation<T>::Calculation(int _maxSteps, std::string _name, bool _doRegister=true) :
15 Process(_maxSteps,_name,_doRegister),
16 done(false),
17 result(0)
18{}
19
20template<typename T>
21Calculation<T>::~Calculation()
22{}
23
24// methods inherited from Action
25
26template<typename T>
27void Calculation<T>::call(){
28 calc();
29}
30
31template<typename T>
32void Calculation<T>::undo(){}
33
34template<typename T>
35bool Calculation<T>::canUndo()
36{
37 return false;
38}
39
40// methods for calculation infrastructure
41
42template<typename T>
43void Calculation<T>::calc(){
44 if(!done){
45 result = doCalc();
46 done = true;
47 }
48}
49
50template<typename T>
51bool Calculation<T>::hasResult(){
52 return done;
53}
54
55template<typename T>
56T Calculation<T>::getResult(){
57 assert(done && "No result calculated");
58 return *result;
59}
60
61template<typename T>
62void Calculation<T>::reset(){
63 done = false;
64 result = 0;
65}
66
67#endif /* CALCULATION_IMPL_HPP_ */
Note: See TracBrowser for help on using the repository browser.