source: src/Actions/ValueStorage.hpp@ 23359f

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
Last change on this file since 23359f was 4885f85, checked in by Frederik Heber <heber@…>, 14 years ago

Introduced new getters to MapOfActions and ValueStorage.

  • new functions are getCurrentValue (string not as type!), getDescription, getShortForm, getType
  • these are need to short-wire Traits through MapOfActions.
  • Property mode set to 100644
File size: 1.9 KB
Line 
1/*
2 * ValueStorage.hpp
3 *
4 * Created on: Jul 22, 2010
5 * Author: heber
6 */
7
8#ifndef VALUESTORAGE_HPP_
9#define VALUESTORAGE_HPP_
10
11#include "Actions/MapOfActions.hpp"
12#include "Patterns/Singleton.hpp"
13
14/** ValueStorage serves as a mediator to MapOfActions.
15 * This is needed to relax inter-dependencies between the Queries and the Actions.
16 * I.e. this is the interface implemented in MapOfActions which both can safely rely on
17 * to store&retrieve/exchange values.
18 */
19class ValueStorage : public Singleton<ValueStorage> {
20 friend class Singleton<ValueStorage>;
21
22public:
23 /** Gets a value from the storage
24 * If the value is not present, an ASSERT is thrown unless optional is set to true.
25 * \param _T key of value
26 * \param optional whether this value is optional, i.e. may actually not be in the storage (i.e. may return false in this case).
27 * \return true - value present, false - value not present (only given when optional set to true)
28 */
29 template <typename T> bool queryCurrentValue(const char *name, T &_T, const bool optional = false) {
30 if (optional) {
31 if (!MapOfActions_instance.isCurrentValuePresent(name))
32 return false;
33 }
34 MapOfActions_instance.queryCurrentValue(name, _T);
35 return true;
36 }
37
38 /** Sets a value in the storage.
39 * \param name key of value
40 * \param _T value
41 */
42 template <typename T> void setCurrentValue(const char *name, T &_T) {
43 MapOfActions_instance.setCurrentValue(name, _T);
44 }
45
46 /** Obtain a descriptive text for a given key.
47 * \param actionname key
48 * \return text describing the key's contents
49 */
50 const std::string getCurrentValue(std::string actionname);
51 const std::string getDescription(std::string actionname);
52 const std::string getShortForm(std::string actionname);
53 const std::type_info * getType(std::string actionname);
54
55protected:
56 ValueStorage();
57 ~ValueStorage();
58
59 MapOfActions &MapOfActions_instance;
60};
61
62#endif /* VALUESTORAGE_HPP_ */
Note: See TracBrowser for help on using the repository browser.