source: src/Actions/Calculation_impl.hpp@ 97dff0

Last change on this file since 97dff0 was c09f94, checked in by Frederik Heber <heber@…>, 11 years ago

Transformed FragmentationAutomationAction into a Process.

  • Removed MaxSteps parameter in Process' cstor (MaxSteps is not a const member anyway).
  • Action preprocessor magic knows new token BASECLASS by which derivation may be switche from Action to Process (defaults to Action).
  • FragmentationAutomationAction::performCall() uses start(), stop(), and setMaxSteps().
  • Property mode set to 100644
File size: 1.8 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 config.h
12#ifdef HAVE_CONFIG_H
13#include <config.h>
14#endif
15
16
17#include "Actions/Calculation.hpp"
18
19#include <cassert>
20#include <iostream>
21
22using namespace MoleCuilder;
23
24template<typename T>
25Calculation<T>::Calculation(int _maxSteps, const ActionTrait &_trait) :
26 Process(_trait),
27 result(0),
28 done(false)
29{
30 setMaxSteps(_maxSteps);
31}
32
33template<typename T>
34Calculation<T>::~Calculation()
35{
36 delete result;
37}
38
39// methods inherited from Action
40
41template<typename T>
42ActionState::ptr Calculation<T>::performCall(){
43 reset();
44 (*this)();
45 return Action::success;
46}
47
48template<typename T>
49ActionState::ptr Calculation<T>::performUndo(ActionState::ptr){
50 ASSERT(0,"Cannot undo a calculation");
51 return Action::success;
52}
53template<typename T>
54ActionState::ptr Calculation<T>::performRedo(ActionState::ptr){
55 ASSERT(0,"Cannot redo a calculation");
56 return Action::success;
57}
58
59template<typename T>
60bool Calculation<T>::canUndo()
61{
62 return false;
63}
64
65template<typename T>
66bool Calculation<T>::shouldUndo()
67{
68 return false;
69}
70
71template<typename T>
72void Calculation<T>::outputAsCLI(std::ostream &ost) const
73{
74}
75
76template<typename T>
77void Calculation<T>::outputAsPython(std::ostream &ost, const std::string &prefix) const
78{}
79
80// methods for calculation infrastructure
81
82template<typename T>
83T Calculation<T>::operator()(){
84 if(!done){
85 result = doCalc();
86 done = true;
87 }
88 return *result;
89}
90
91template<typename T>
92bool Calculation<T>::hasResult() const {
93 return done;
94}
95
96template<typename T>
97T Calculation<T>::getResult() const {
98 assert(done && "No result calculated");
99 return *result;
100}
101
102template<typename T>
103void Calculation<T>::reset(){
104 done = false;
105 delete result;
106 result = 0;
107}
108
109#endif /* CALCULATION_IMPL_HPP_ */
Note: See TracBrowser for help on using the repository browser.