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             c09f94, checked in by Frederik Heber <heber@…>, 12 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:
            2.3 KB | 
      
      
| Rev | Line |  | 
|---|
| [7dad10] | 1 | /* | 
|---|
|  | 2 | * Process.hpp | 
|---|
|  | 3 | * | 
|---|
|  | 4 | *  Created on: Feb 17, 2010 | 
|---|
|  | 5 | *      Author: crueger | 
|---|
|  | 6 | */ | 
|---|
|  | 7 |  | 
|---|
|  | 8 |  | 
|---|
|  | 9 | /** | 
|---|
|  | 10 | * A Process is an action that might take some time and therfore contains methods | 
|---|
|  | 11 | * that allows showing how much is done. | 
|---|
|  | 12 | */ | 
|---|
|  | 13 | #ifndef PROCESS_HPP_ | 
|---|
|  | 14 | #define PROCESS_HPP_ | 
|---|
|  | 15 |  | 
|---|
| [56f73b] | 16 | // include config.h | 
|---|
|  | 17 | #ifdef HAVE_CONFIG_H | 
|---|
|  | 18 | #include <config.h> | 
|---|
|  | 19 | #endif | 
|---|
|  | 20 |  | 
|---|
|  | 21 |  | 
|---|
| [7dad10] | 22 | #include <set> | 
|---|
|  | 23 |  | 
|---|
| [02ce36] | 24 | #include "CodePatterns/Observer/Observable.hpp" | 
|---|
|  | 25 | #include "CodePatterns/Observer/Observer.hpp" | 
|---|
| [7dad10] | 26 | #include "Actions/Action.hpp" | 
|---|
|  | 27 |  | 
|---|
| [ce7fdc] | 28 | namespace MoleCuilder { | 
|---|
|  | 29 |  | 
|---|
| [0c8056] | 30 | class ActionRegistry; | 
|---|
|  | 31 |  | 
|---|
| [dbb474] | 32 | /** | 
|---|
|  | 33 | * A Process is an Action that might take some time and therefore has special | 
|---|
|  | 34 | * methods to allow communication with progress indicators. Indicators | 
|---|
|  | 35 | * can sign on at a global place and will be notified when any process is doing | 
|---|
|  | 36 | * a calculation. | 
|---|
|  | 37 | * | 
|---|
|  | 38 | * A Process has four states: | 
|---|
|  | 39 | *  - starting: It is in the process of setting itself up, and wants everybody to know that it will start | 
|---|
|  | 40 | *              the calculation soon. Indicators should set up anything they need for displaying the progress | 
|---|
|  | 41 | *              when they are notified by a process in this state. | 
|---|
|  | 42 | *  - active:   The process is currently doing it's thing and wants any indicator to know it's status, i.e. | 
|---|
|  | 43 | *              the percentage done. | 
|---|
|  | 44 | *  - stopping: The process has fullfilled it's purpose and is shutting down. Indicators recieving this status | 
|---|
|  | 45 | *              should also use it to shut down their indication mechanism and delete any objects allocated for | 
|---|
|  | 46 | *              this Process | 
|---|
|  | 47 | *  - inactive: This Process is currently sleeping. If a Process is sending out any signals in this state, there | 
|---|
|  | 48 | *              is something seriously wrong. | 
|---|
|  | 49 | */ | 
|---|
| [7dad10] | 50 | class Process : public Action, public Observable | 
|---|
|  | 51 | { | 
|---|
|  | 52 | public: | 
|---|
| [c09f94] | 53 | Process(const ActionTrait &_trait); | 
|---|
| [7dad10] | 54 | virtual ~Process(); | 
|---|
|  | 55 |  | 
|---|
| [2efa90] | 56 | bool  isRunning(); | 
|---|
| [7dad10] | 57 | bool  doesStart(); | 
|---|
|  | 58 | bool  doesStop(); | 
|---|
| [ec43a2] | 59 | int   getCurrStep() const; | 
|---|
| [7c4e29] | 60 | void  setCurrStep(int _currStep); | 
|---|
| [ec43a2] | 61 | float getDoneRatio() const; | 
|---|
|  | 62 | int   getMaxSteps() const; | 
|---|
| [7c4e29] | 63 | void  setMaxSteps(int _maxSteps); | 
|---|
| [7dad10] | 64 |  | 
|---|
|  | 65 | protected: | 
|---|
|  | 66 | void start(); | 
|---|
|  | 67 | void step(); | 
|---|
|  | 68 | void stop(); | 
|---|
|  | 69 |  | 
|---|
|  | 70 | private: | 
|---|
|  | 71 | int currStep; | 
|---|
|  | 72 | int maxSteps; | 
|---|
|  | 73 | bool active; | 
|---|
|  | 74 | bool starts; | 
|---|
|  | 75 | bool stops; | 
|---|
|  | 76 |  | 
|---|
|  | 77 | // some global static stuff to allow general Observers that can show progresses | 
|---|
|  | 78 | public: | 
|---|
|  | 79 | static void AddObserver(Observer *); | 
|---|
|  | 80 | static void RemoveObserver(Observer *); | 
|---|
|  | 81 | private: | 
|---|
|  | 82 | static std::set<Observer*> processObservers; | 
|---|
|  | 83 | }; | 
|---|
|  | 84 |  | 
|---|
| [ce7fdc] | 85 | } | 
|---|
|  | 86 |  | 
|---|
| [7dad10] | 87 | #endif /* PROCESS_HPP_ */ | 
|---|
       
      
  Note:
 See   
TracBrowser
 for help on using the repository browser.