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
RevLine 
[7c4e29]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
[56f73b]11// include config.h
12#ifdef HAVE_CONFIG_H
13#include <config.h>
14#endif
15
16
[b54ac8]17#include "Actions/Calculation.hpp"
18
[7c4e29]19#include <cassert>
[46b181]20#include <iostream>
[7c4e29]21
[ce7fdc]22using namespace MoleCuilder;
23
[7c4e29]24template<typename T>
[126867]25Calculation<T>::Calculation(int _maxSteps, const ActionTrait &_trait) :
[c09f94]26 Process(_trait),
[ead4e6]27 result(0),
28 done(false)
[c09f94]29{
30 setMaxSteps(_maxSteps);
31}
[7c4e29]32
33template<typename T>
34Calculation<T>::~Calculation()
[b54ac8]35{
36 delete result;
37}
[7c4e29]38
39// methods inherited from Action
40
41template<typename T>
[b5b01e]42ActionState::ptr Calculation<T>::performCall(){
[b54ac8]43 reset();
44 (*this)();
[67e2b3]45 return Action::success;
[7c4e29]46}
47
48template<typename T>
[b5b01e]49ActionState::ptr Calculation<T>::performUndo(ActionState::ptr){
[67e2b3]50 ASSERT(0,"Cannot undo a calculation");
51 return Action::success;
52}
53template<typename T>
[b5b01e]54ActionState::ptr Calculation<T>::performRedo(ActionState::ptr){
[67e2b3]55 ASSERT(0,"Cannot redo a calculation");
56 return Action::success;
57}
[7c4e29]58
59template<typename T>
60bool Calculation<T>::canUndo()
61{
62 return false;
63}
64
[67e2b3]65template<typename T>
66bool Calculation<T>::shouldUndo()
67{
68 return false;
69}
70
[46b181]71template<typename T>
72void Calculation<T>::outputAsCLI(std::ostream &ost) const
73{
74}
75
[477012]76template<typename T>
77void Calculation<T>::outputAsPython(std::ostream &ost, const std::string &prefix) const
78{}
79
[7c4e29]80// methods for calculation infrastructure
81
82template<typename T>
[b54ac8]83T Calculation<T>::operator()(){
[7c4e29]84 if(!done){
85 result = doCalc();
86 done = true;
87 }
[b54ac8]88 return *result;
[7c4e29]89}
90
91template<typename T>
[af5384]92bool Calculation<T>::hasResult() const {
[7c4e29]93 return done;
94}
95
96template<typename T>
[af5384]97T Calculation<T>::getResult() const {
[7c4e29]98 assert(done && "No result calculated");
99 return *result;
100}
101
102template<typename T>
103void Calculation<T>::reset(){
104 done = false;
[b54ac8]105 delete result;
[7c4e29]106 result = 0;
107}
108
109#endif /* CALCULATION_IMPL_HPP_ */
Note: See TracBrowser for help on using the repository browser.