Changeset 06b5df for src


Ignore:
Timestamp:
Sep 16, 2014, 6:21:20 AM (10 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:
7f6a2f
Parents:
7e1a88
git-author:
Frederik Heber <heber@…> (09/16/14 00:09:36)
git-committer:
Frederik Heber <heber@…> (09/16/14 06:21:20)
Message:

FIX: CommandLineParser causes idling thread when parsing goes wrong.

  • CommandLineParser::Parse() now returns bool to give status of parsing, only when true is scanForArguments() called, which fills the ActionQueue's queue which is not executed anymore because the run thread was already stopped by the caught exception from the parse failure.
Location:
src
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • src/Actions/ActionQueue.cpp

    r7e1a88 r06b5df  
    323323    tempqueue.erase(iter);
    324324  }
     325#ifdef HAVE_ACTION_THREAD
     326  {
     327    boost::unique_lock<boost::mutex> lock(mtx_idle);
     328    run_thread_isIdle = true;
     329  }
     330#endif
    325331}
    326332
  • src/UIElements/CommandLineUI/CommandLineParser.cpp

    r7e1a88 r06b5df  
    428428/** Parses the command line arguments.
    429429 * Calls program_options::store() and program_options::notify()
    430  */
    431 void CommandLineParser::Parse()
    432 {
     430 *
     431 * @return true - all is ok, false - command-line options could not be parsed
     432 *         correctly
     433 */
     434bool CommandLineParser::Parse()
     435{
     436  bool status = true;
    433437  try {
    434438    po::store(po::command_line_parser(argc,argv).options(cmdline_options).run(), vm);
     
    441445#endif
    442446    ActionQueue::getInstance().clearQueue();
    443   }
    444   std::ifstream input;
    445   input.open("example.cfg");
    446   if (!input.fail())
    447     po::store(po::parse_config_file(input, config_file_options), vm);
    448   input.close();
    449   po::notify(vm);
     447    status = false;
     448  }
     449  if (status) {
     450    std::ifstream input;
     451    input.open("example.cfg");
     452    if (!input.fail())
     453      po::store(po::parse_config_file(input, config_file_options), vm);
     454    input.close();
     455    po::notify(vm);
     456  }
     457  return status;
    450458}
    451459
     
    484492{
    485493  setOptions(_argc,_argv);
    486   Parse();
    487   scanforSequenceOfArguments();
     494  const bool status = Parse();
     495  if (status)
     496    scanforSequenceOfArguments();
    488497}
    489498
  • src/UIElements/CommandLineUI/CommandLineParser.hpp

    r7e1a88 r06b5df  
    104104
    105105  // Parses all options from command line and config file
    106   void Parse();
     106  bool Parse();
    107107
    108108  // as boost's program_options does not care about of order of appearance but we do for actions,
Note: See TracChangeset for help on using the changeset viewer.