Changeset 46b181 for src


Ignore:
Timestamp:
Sep 19, 2013, 8:23:52 PM (11 years ago)
Author:
Frederik Heber <heber@…>
Branches:
Action_Thermostats, Add_AtomRandomPerturbation, Add_FitFragmentPartialChargesAction, Add_RotateAroundBondAction, Add_SelectAtomByNameAction, Added_ParseSaveFragmentResults, AddingActions_SaveParseParticleParameters, Adding_Graph_to_ChangeBondActions, Adding_MD_integration_tests, Adding_ParticleName_to_Atom, Adding_StructOpt_integration_tests, AtomFragments, Automaking_mpqc_open, AutomationFragmentation_failures, Candidate_v1.5.4, Candidate_v1.6.0, Candidate_v1.6.1, ChangeBugEmailaddress, ChangingTestPorts, ChemicalSpaceEvaluator, CombiningParticlePotentialParsing, Combining_Subpackages, Debian_Package_split, Debian_package_split_molecuildergui_only, Disabling_MemDebug, Docu_Python_wait, EmpiricalPotential_contain_HomologyGraph, EmpiricalPotential_contain_HomologyGraph_documentation, Enable_parallel_make_install, Enhance_userguide, Enhanced_StructuralOptimization, Enhanced_StructuralOptimization_continued, Example_ManyWaysToTranslateAtom, Exclude_Hydrogens_annealWithBondGraph, FitPartialCharges_GlobalError, Fix_BoundInBox_CenterInBox_MoleculeActions, Fix_ChargeSampling_PBC, Fix_ChronosMutex, Fix_FitPartialCharges, Fix_FitPotential_needs_atomicnumbers, Fix_ForceAnnealing, Fix_IndependentFragmentGrids, Fix_ParseParticles, Fix_ParseParticles_split_forward_backward_Actions, Fix_PopActions, Fix_QtFragmentList_sorted_selection, Fix_Restrictedkeyset_FragmentMolecule, Fix_StatusMsg, Fix_StepWorldTime_single_argument, Fix_Verbose_Codepatterns, Fix_fitting_potentials, Fixes, ForceAnnealing_goodresults, ForceAnnealing_oldresults, ForceAnnealing_tocheck, ForceAnnealing_with_BondGraph, ForceAnnealing_with_BondGraph_continued, ForceAnnealing_with_BondGraph_continued_betteresults, ForceAnnealing_with_BondGraph_contraction-expansion, FragmentAction_writes_AtomFragments, FragmentMolecule_checks_bonddegrees, GeometryObjects, Gui_Fixes, Gui_displays_atomic_force_velocity, ImplicitCharges, IndependentFragmentGrids, IndependentFragmentGrids_IndividualZeroInstances, IndependentFragmentGrids_IntegrationTest, IndependentFragmentGrids_Sole_NN_Calculation, JobMarket_RobustOnKillsSegFaults, JobMarket_StableWorkerPool, JobMarket_unresolvable_hostname_fix, MoreRobust_FragmentAutomation, ODR_violation_mpqc_open, PartialCharges_OrthogonalSummation, PdbParser_setsAtomName, PythonUI_with_named_parameters, QtGui_reactivate_TimeChanged_changes, Recreated_GuiChecks, Rewrite_FitPartialCharges, RotateToPrincipalAxisSystem_UndoRedo, SaturateAtoms_findBestMatching, SaturateAtoms_singleDegree, StoppableMakroAction, Subpackage_CodePatterns, Subpackage_JobMarket, Subpackage_LinearAlgebra, Subpackage_levmar, Subpackage_mpqc_open, Subpackage_vmg, Switchable_LogView, ThirdParty_MPQC_rebuilt_buildsystem, TrajectoryDependenant_MaxOrder, TremoloParser_IncreasedPrecision, TremoloParser_MultipleTimesteps, TremoloParser_setsAtomName, Ubuntu_1604_changes, stable
Children:
bad589
Parents:
76096d
git-author:
Frederik Heber <heber@…> (08/23/13 08:18:43)
git-committer:
Frederik Heber <heber@…> (09/19/13 20:23:52)
Message:

Added Action::outputAsCLI() and ActionQueue::outputAsCLI().

  • prints sequence of Actions along with their options.
Location:
src
Files:
26 edited

Legend:

Unmodified
Added
Removed
  • src/Actions/Action.hpp

    r76096d r46b181  
    1414#endif
    1515
     16#include <iosfwd>
    1617#include <string>
    1718
     
    167168  const std::string help() const;
    168169
     170  /** Prints what would be necessary to add the Action from the Command Line Interface.
     171   *
     172   * \param ost output stream to print to
     173   */
     174  virtual void outputAsCLI(std::ostream &ost) const=0;
     175
    169176  /**
    170177   * Traits resemble all necessary information that "surrounds" an action, such as
  • src/Actions/ActionQueue.cpp

    r76096d r46b181  
    3939#include "CodePatterns/Assert.hpp"
    4040#include "CodePatterns/IteratorAdaptors.hpp"
     41#include "CodePatterns/Log.hpp"
    4142#include "CodePatterns/Singleton_impl.hpp"
    4243
     44#include <string>
     45#include <sstream>
    4346#include <vector>
    4447
     
    8891}
    8992
     93void ActionQueue::outputAsCLI(std::ostream &output) const
     94{
     95  for (ActionQueue_t::const_iterator iter = queue.begin();
     96      iter != queue.end();
     97      ++iter) {
     98    if (iter != queue.begin())
     99      output << " ";
     100    (*iter)->outputAsCLI(output);
     101  }
     102  output << std::endl;
     103}
     104
    90105const ActionTrait& ActionQueue::getActionsTrait(const std::string &name) const
    91106{
  • src/Actions/ActionQueue.hpp

    r76096d r46b181  
    8888  const ActionTrait& getActionsTrait(const std::string &name) const;
    8989
     90  /** Print the current contents of the queue as CLI instantiated list of Actions.
     91   *
     92   * This is useful for storing the current session.
     93   *
     94   * \param output output stream to print to
     95   */
     96  void outputAsCLI(std::ostream &output) const;
     97
    9098  /** Undoes last called Action.
    9199   *
  • src/Actions/ActionSequence.cpp

    r76096d r46b181  
    4040
    4141#include "CodePatterns/Assert.hpp"
     42
     43#include <iostream>
    4244
    4345using namespace MoleCuilder;
     
    156158  return shouldUndo;
    157159}
     160
     161void ActionSequence::outputAsCLI(std::ostream &ost) const
     162{
     163  for(std::deque<Action*>::const_iterator it=actions.begin();it!=actions.end();++it){
     164    (*it)->outputAsCLI(ost);
     165    ost << std::endl;
     166  }
     167}
  • src/Actions/ActionSequence.hpp

    r76096d r46b181  
    4444  bool shouldUndo();
    4545
     46  void outputAsCLI(std::ostream &ost) const;
     47
    4648protected:
    4749  stateSet callAll(bool); // Dummy parameter to allow overloading
  • src/Actions/Action_impl_header.hpp

    r76096d r46b181  
    212212  bool shouldUndo();
    213213
     214  void outputAsCLI(std::ostream &ost) const;
     215
    214216  struct PARAMS : ActionParameters {
    215217    //!> constructor for class PARAMS, setting valid ranges
  • src/Actions/Action_impl_pre.hpp

    r76096d r46b181  
    4040#include <boost/preprocessor/control/if.hpp>
    4141#include <boost/preprocessor/debug/assert.hpp>
     42#include <boost/preprocessor/facilities/empty.hpp>
    4243#include <boost/preprocessor/iteration/local.hpp>
    4344#include <boost/preprocessor/list/adt.hpp>
     
    4546#include <boost/preprocessor/repetition/repeat.hpp>
    4647#include <boost/preprocessor/seq/elem.hpp>
     48#include <boost/preprocessor/seq/filter.hpp>
    4749#include <boost/preprocessor/seq/push_back.hpp>
    4850#include <boost/preprocessor/seq/seq.hpp>
     
    141143  , Traits.getDescription()\
    142144  );
     145
     146// prints command line call for this Action for paramtypes with tokens
     147#define outputAsCLI_print(z,n,output) \
     148    output << \
     149    BOOST_PP_IF(n, BOOST_PP_STRINGIZE( ) , BOOST_PP_STRINGIZE() ) \
     150      << "--" << \
     151    BOOST_PP_SEQ_ELEM(n, paramtokens) \
     152      << " \"" << params. \
     153          BOOST_PP_SEQ_ELEM(n, paramreferences) \
     154          .get() \
     155      << "\"";
     156
     157// prints if statement to check two strings (paramtokens[n] vs. TOKEN)
     158#define checkpresenttoken_print(z, n, TOKEN, booltoken) \
     159    if ( std::string(\
     160        BOOST_PP_SEQ_ELEM(n, paramtokens) )\
     161        == getName()) \
     162        booltoken = false;
    143163
    144164// print an initialiser list, i.e. "var( token, valid (,default) )(,)"
     
    275295};
    276296
     297// =========== output as CLI ===========
     298void ACTION::outputAsCLI(std::ostream &ost) const {
     299  // check whether TOKEN is also an option
     300  // is a bit ugly as preprocessor cannot compare strings
     301  bool status = true;
     302#if defined paramtokens && BOOST_PP_NOT_EQUAL(MAXPARAMTYPES,0)
     303#define BOOST_PP_LOCAL_MACRO(n) checkpresenttoken_print(~, n, TOKEN, status)
     304#define BOOST_PP_LOCAL_LIMITS  (0, MAXPARAMTYPES-1)
     305#include BOOST_PP_LOCAL_ITERATE()
     306#endif
     307  if (status) { ost << "--" << TOKEN; }
     308  // then print option along with each argument if set
     309#if defined paramtypes && defined paramreferences && BOOST_PP_NOT_EQUAL(MAXPARAMTYPES,0)
     310#define BOOST_PP_LOCAL_MACRO(n) outputAsCLI_print(~, n, ost)
     311#define BOOST_PP_LOCAL_LIMITS  (0, MAXPARAMTYPES-1)
     312#include BOOST_PP_LOCAL_ITERATE()
     313#endif
     314}
     315
    277316// =========== time the action ===========
    278317// we need this here to have the correct function name
  • src/Actions/Calculation.hpp

    r76096d r46b181  
    4242  virtual bool shouldUndo();
    4343
     44  virtual void outputAsCLI(std::ostream &ost) const;
     45
    4446  /**
    4547   * Does the actual calculation and returns the result.
  • src/Actions/Calculation_impl.hpp

    r76096d r46b181  
    1818
    1919#include <cassert>
     20#include <iostream>
    2021
    2122using namespace MoleCuilder;
     
    6667}
    6768
     69template<typename T>
     70void Calculation<T>::outputAsCLI(std::ostream &ost) const
     71{
     72}
     73
    6874// methods for calculation infrastructure
    6975
  • src/Actions/ErrorAction.cpp

    r76096d r46b181  
    7979  return false;
    8080}
     81
     82void ErrorAction::outputAsCLI(std::ostream &ost) const
     83{}
  • src/Actions/ErrorAction.hpp

    r76096d r46b181  
    2929  virtual bool shouldUndo();
    3030
     31  void outputAsCLI(std::ostream &ost) const;
     32
    3133private:
    3234  virtual Dialog * createDialog();
  • src/Actions/MakroAction.cpp

    r76096d r46b181  
    127127  return actions.shouldUndo();
    128128}
     129
     130void MakroAction::outputAsCLI(std::ostream &ost) const
     131{
     132  actions.outputAsCLI(ost);
     133}
  • src/Actions/MakroAction.hpp

    r76096d r46b181  
    3737  bool shouldUndo();
    3838
     39  virtual void outputAsCLI(std::ostream &ost) const;
     40
    3941  // must be called after all primitive actions are present
    4042  virtual void prepare(ActionRegistry &AR);
  • src/Actions/MakroAction_impl_header.hpp

    r76096d r46b181  
    218218  bool shouldUndo();
    219219
     220  void outputAsCLI(std::ostream &ost) const;
     221
    220222  struct PARAMS : ActionParameters {
    221223    //!> constructor for class PARAMS, setting valid ranges
  • src/Actions/MakroAction_impl_pre.hpp

    r76096d r46b181  
    142142  );
    143143
     144// prints command line call for this Action for paramtypes with tokens
     145#define outputAsCLI_print(z,n,output) \
     146    output << \
     147    BOOST_PP_IF(n, BOOST_PP_STRINGIZE( ) , BOOST_PP_STRINGIZE() ) \
     148      << "--" << \
     149    BOOST_PP_SEQ_ELEM(n, paramtokens) \
     150      << " \"" << params. \
     151          BOOST_PP_SEQ_ELEM(n, paramreferences) \
     152          .get() \
     153      << "\"";
     154
     155// prints if statement to check two strings (paramtokens[n] vs. TOKEN)
     156#define checkpresenttoken_print(z, n, TOKEN, booltoken) \
     157    if ( std::string(\
     158        BOOST_PP_SEQ_ELEM(n, paramtokens) )\
     159        == getName()) \
     160        booltoken = false;
     161
    144162// print an initialiser list, i.e. "var( token, valid (,default) )(,)"
    145163#define valid_print(z,n,TOKENLIST, VARLIST, VALIDLIST, DEFAULTLIST) \
     
    276294};
    277295
     296// =========== output as CLI ===========
     297void ACTION::outputAsCLI(std::ostream &ost) const {
     298  // check whether TOKEN is also an option
     299  // is a bit ugly as preprocessor cannot compare strings
     300  bool status = true;
     301#if defined paramtokens && BOOST_PP_NOT_EQUAL(MAXPARAMTYPES,0)
     302#define BOOST_PP_LOCAL_MACRO(n) checkpresenttoken_print(~, n, TOKEN, status)
     303#define BOOST_PP_LOCAL_LIMITS  (0, MAXPARAMTYPES-1)
     304#include BOOST_PP_LOCAL_ITERATE()
     305#endif
     306  if (status) { ost << "--" << TOKEN; }
     307  // then print option along with each argument if set
     308#if defined paramtypes && defined paramreferences && BOOST_PP_NOT_EQUAL(MAXPARAMTYPES,0)
     309#define BOOST_PP_LOCAL_MACRO(n) outputAsCLI_print(~, n, ost)
     310#define BOOST_PP_LOCAL_LIMITS  (0, MAXPARAMTYPES-1)
     311#include BOOST_PP_LOCAL_ITERATE()
     312#endif
     313}
     314
    278315// =========== time the action ===========
    279316// we need this here to have the correct function name
  • src/Actions/ManipulateAtomsProcess.cpp

    r76096d r46b181  
    8484}
    8585
     86void ManipulateAtomsProcess::outputAsCLI(std::ostream &ost) const
     87{}
     88
    8689void ManipulateAtomsProcess::doManipulate(World *world){
    8790  setMaxSteps(world->numAtoms());
  • src/Actions/ManipulateAtomsProcess.hpp

    r76096d r46b181  
    3838  virtual bool shouldUndo();
    3939
     40  void outputAsCLI(std::ostream &ost) const;
     41
    4042  virtual void doManipulate(World *);
    4143
  • src/Actions/MethodAction.cpp

    r76096d r46b181  
    7979}
    8080
     81void MethodAction::outputAsCLI(std::ostream &ost) const
     82{}
     83
    8184bool MethodAction::shouldUndo(){
    8285  return true;
  • src/Actions/MethodAction.hpp

    r76096d r46b181  
    3434  virtual bool shouldUndo();
    3535
     36  void outputAsCLI(std::ostream &ost) const;
     37
    3638protected:
    3739  virtual Dialog * fillDialog(Dialog *dialog);
  • src/Actions/Reaction.hpp

    r76096d r46b181  
    4141
    4242  virtual bool shouldUndo();
     43
     44  virtual void outputAsCLI(std::ostream &ost) const;
    4345
    4446  /**
  • src/Actions/Reaction_impl.hpp

    r76096d r46b181  
    6565}
    6666
     67template<typename T>
     68void Reaction<T>::outputAsCLI(std::ostream &ost) const
     69{}
     70
    6771// methods for calculation infrastructure
    6872
  • src/Actions/Reaction_impl_header.hpp

    r76096d r46b181  
    206206  virtual ~REACTION();
    207207
     208  void outputAsCLI(std::ostream &ost) const;
     209
    208210  virtual RETURNTYPE * doCalc();
    209211
  • src/Actions/Reaction_impl_pre.hpp

    r76096d r46b181  
    126126  );
    127127
     128// prints command line call for this Action for paramtypes with tokens
     129#define outputAsCLI_print(z,n,output) \
     130    output << \
     131    BOOST_PP_IF(n, BOOST_PP_STRINGIZE( ) , BOOST_PP_STRINGIZE() ) \
     132      << "--" << \
     133    BOOST_PP_SEQ_ELEM(n, paramtokens) \
     134      << " \"" << params. \
     135          BOOST_PP_SEQ_ELEM(n, paramreferences) \
     136          .get() \
     137      << "\"";
     138
     139// prints if statement to check two strings (paramtokens[n] vs. TOKEN)
     140#define checkpresenttoken_print(z, n, TOKEN, booltoken) \
     141    if ( std::string(\
     142        BOOST_PP_SEQ_ELEM(n, paramtokens) )\
     143        == getName()) \
     144        booltoken = false;
     145
    128146// prints set/queryCurrentValue (command) for paramreferences and paramtokens
    129147#define value_print(z, n, container, prefix) \
     
    184202        return dialog;
    185203};
     204
     205// =========== output as CLI ===========
     206void REACTION::outputAsCLI(std::ostream &ost) const {
     207  // check whether TOKEN is also an option
     208  // is a bit ugly as preprocessor cannot compare strings
     209  bool status = true;
     210#if defined paramtokens && BOOST_PP_NOT_EQUAL(MAXPARAMTYPES,0)
     211#define BOOST_PP_LOCAL_MACRO(n) checkpresenttoken_print(~, n, TOKEN, status)
     212#define BOOST_PP_LOCAL_LIMITS  (0, MAXPARAMTYPES-1)
     213#include BOOST_PP_LOCAL_ITERATE()
     214#endif
     215  if (status) { ost << "--" << TOKEN; }
     216  // then print option along with each argument if set
     217#if defined paramtypes && defined paramreferences && BOOST_PP_NOT_EQUAL(MAXPARAMTYPES,0)
     218#define BOOST_PP_LOCAL_MACRO(n) outputAsCLI_print(~, n, ost)
     219#define BOOST_PP_LOCAL_LIMITS  (0, MAXPARAMTYPES-1)
     220#include BOOST_PP_LOCAL_ITERATE()
     221#endif
     222}
    186223
    187224// =========== command for calling action directly ===========
  • src/Actions/unittests/ActionSequenceUnitTest.cpp

    r76096d r46b181  
    8585    return true;
    8686  }
     87  void outputAsCLI(std::ostream &ost) const
     88  {}
    8789};
    8890
     
    114116   return true;
    115117  }
     118  void outputAsCLI(std::ostream &ost) const
     119  {}
    116120};
    117121
     
    146150    return true;
    147151  }
     152  void outputAsCLI(std::ostream &ost) const
     153  {}
    148154  bool wasCalled(){
    149155    return called;
  • src/UIElements/Menu/TextMenu/TxMenuLeaveAction.cpp

    r76096d r46b181  
    7171}
    7272
     73void TxMenu::LeaveAction::outputAsCLI(std::ostream &ost) const
     74{}
     75
    7376/** Internal function to construct the dialog.
    7477 * We do not need this function as there is no dialog to construct.
  • src/UIElements/Menu/TextMenu/TxMenuLeaveAction.hpp

    r76096d r46b181  
    3333  bool shouldUndo();
    3434
     35  void outputAsCLI(std::ostream &ost) const;
     36
    3537protected:
    3638  virtual Dialog* fillDialog(Dialog *dialog);
Note: See TracChangeset for help on using the changeset viewer.