Action_Thermostats
        Adding_MD_integration_tests
        Adding_StructOpt_integration_tests
        AutomationFragmentation_failures
        Candidate_v1.6.1
        Candidate_v1.7.0
        ChemicalSpaceEvaluator
        Enhanced_StructuralOptimization
        Enhanced_StructuralOptimization_continued
        Exclude_Hydrogens_annealWithBondGraph
        Fix_Verbose_Codepatterns
        ForceAnnealing_with_BondGraph
        ForceAnnealing_with_BondGraph_continued
        ForceAnnealing_with_BondGraph_continued_betteresults
        ForceAnnealing_with_BondGraph_contraction-expansion
        Gui_displays_atomic_force_velocity
        JobMarket_RobustOnKillsSegFaults
        JobMarket_StableWorkerPool
        PythonUI_with_named_parameters
        Recreated_GuiChecks
        StoppableMakroAction
        TremoloParser_IncreasedPrecision
        stable
      
      
        
          | Last change
 on this file since b10593 was             a82f61, checked in by Frederik Heber <heber@…>, 10 years ago | 
        
          | 
Added Action::setOptionValue() which allows setting the option via a string.
 this is preparatory for allowing the creation of MakroActions inside the
code. We need to set the options without going through dialogs in some
way or another and without being completely inside the Actions as is the
case for the COMMAND variants and the python function calls.
 | 
        
          | 
              
Property                 mode
 set to                 100644 | 
        
          | File size:
            2.0 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 |  | 
|---|
| 22 | using namespace MoleCuilder; | 
|---|
| 23 |  | 
|---|
| 24 | template<typename T> | 
|---|
| 25 | Calculation<T>::Calculation(int _maxSteps, const ActionTrait &_trait) : | 
|---|
| 26 | Process(_trait), | 
|---|
| 27 | result(0), | 
|---|
| 28 | done(false) | 
|---|
| 29 | { | 
|---|
| 30 | setMaxSteps(_maxSteps); | 
|---|
| 31 | } | 
|---|
| 32 |  | 
|---|
| 33 | template<typename T> | 
|---|
| 34 | Calculation<T>::~Calculation() | 
|---|
| 35 | { | 
|---|
| 36 | delete result; | 
|---|
| 37 | } | 
|---|
| 38 |  | 
|---|
| 39 | // methods inherited from Action | 
|---|
| 40 |  | 
|---|
| 41 | template<typename T> | 
|---|
| 42 | ActionState::ptr Calculation<T>::performCall(){ | 
|---|
| 43 | reset(); | 
|---|
| 44 | (*this)(); | 
|---|
| 45 | return Action::success; | 
|---|
| 46 | } | 
|---|
| 47 |  | 
|---|
| 48 | template<typename T> | 
|---|
| 49 | ActionState::ptr Calculation<T>::performUndo(ActionState::ptr){ | 
|---|
| 50 | ASSERT(0,"Cannot undo a calculation"); | 
|---|
| 51 | return Action::success; | 
|---|
| 52 | } | 
|---|
| 53 | template<typename T> | 
|---|
| 54 | ActionState::ptr Calculation<T>::performRedo(ActionState::ptr){ | 
|---|
| 55 | ASSERT(0,"Cannot redo a calculation"); | 
|---|
| 56 | return Action::success; | 
|---|
| 57 | } | 
|---|
| 58 |  | 
|---|
| 59 | template<typename T> | 
|---|
| 60 | bool Calculation<T>::canUndo() | 
|---|
| 61 | { | 
|---|
| 62 | return false; | 
|---|
| 63 | } | 
|---|
| 64 |  | 
|---|
| 65 | template<typename T> | 
|---|
| 66 | bool Calculation<T>::shouldUndo() | 
|---|
| 67 | { | 
|---|
| 68 | return false; | 
|---|
| 69 | } | 
|---|
| 70 |  | 
|---|
| 71 | template<typename T> | 
|---|
| 72 | void Calculation<T>::outputAsCLI(std::ostream &ost) const | 
|---|
| 73 | { | 
|---|
| 74 | } | 
|---|
| 75 |  | 
|---|
| 76 | template<typename T> | 
|---|
| 77 | void Calculation<T>::outputAsPython(std::ostream &ost, const std::string &prefix) const | 
|---|
| 78 | {} | 
|---|
| 79 |  | 
|---|
| 80 | template<typename T> | 
|---|
| 81 | void Calculation<T>::setOptionValue(const std::string &_token, const std::string &_value) | 
|---|
| 82 | {} | 
|---|
| 83 |  | 
|---|
| 84 | // methods for calculation infrastructure | 
|---|
| 85 |  | 
|---|
| 86 | template<typename T> | 
|---|
| 87 | T Calculation<T>::operator()(){ | 
|---|
| 88 | if(!done){ | 
|---|
| 89 | result = doCalc(); | 
|---|
| 90 | done = true; | 
|---|
| 91 | } | 
|---|
| 92 | return *result; | 
|---|
| 93 | } | 
|---|
| 94 |  | 
|---|
| 95 | template<typename T> | 
|---|
| 96 | bool Calculation<T>::hasResult() const { | 
|---|
| 97 | return done; | 
|---|
| 98 | } | 
|---|
| 99 |  | 
|---|
| 100 | template<typename T> | 
|---|
| 101 | T Calculation<T>::getResult() const { | 
|---|
| 102 | assert(done && "No result calculated"); | 
|---|
| 103 | return *result; | 
|---|
| 104 | } | 
|---|
| 105 |  | 
|---|
| 106 | template<typename T> | 
|---|
| 107 | void Calculation<T>::reset(){ | 
|---|
| 108 | done = false; | 
|---|
| 109 | delete result; | 
|---|
| 110 | result = 0; | 
|---|
| 111 | } | 
|---|
| 112 |  | 
|---|
| 113 | #endif /* CALCULATION_IMPL_HPP_ */ | 
|---|
       
      
  Note:
 See   
TracBrowser
 for help on using the repository browser.