source: ThirdParty/mpqc_open/src/lib/util/state/state.h@ 398fcd

Action_Thermostats Add_AtomRandomPerturbation Add_RotateAroundBondAction Add_SelectAtomByNameAction Adding_Graph_to_ChangeBondActions Adding_MD_integration_tests Adding_StructOpt_integration_tests AutomationFragmentation_failures Candidate_v1.6.0 Candidate_v1.6.1 ChangeBugEmailaddress ChangingTestPorts ChemicalSpaceEvaluator Combining_Subpackages Debian_Package_split Debian_package_split_molecuildergui_only Disabling_MemDebug Docu_Python_wait EmpiricalPotential_contain_HomologyGraph_documentation Enable_parallel_make_install Enhance_userguide Enhanced_StructuralOptimization Enhanced_StructuralOptimization_continued Example_ManyWaysToTranslateAtom Exclude_Hydrogens_annealWithBondGraph FitPartialCharges_GlobalError Fix_ChronosMutex Fix_StatusMsg Fix_StepWorldTime_single_argument Fix_Verbose_Codepatterns ForceAnnealing_goodresults ForceAnnealing_oldresults ForceAnnealing_tocheck ForceAnnealing_with_BondGraph ForceAnnealing_with_BondGraph_continued ForceAnnealing_with_BondGraph_continued_betteresults ForceAnnealing_with_BondGraph_contraction-expansion GeometryObjects Gui_displays_atomic_force_velocity IndependentFragmentGrids_IntegrationTest JobMarket_RobustOnKillsSegFaults JobMarket_StableWorkerPool JobMarket_unresolvable_hostname_fix ODR_violation_mpqc_open PartialCharges_OrthogonalSummation PythonUI_with_named_parameters QtGui_reactivate_TimeChanged_changes Recreated_GuiChecks RotateToPrincipalAxisSystem_UndoRedo StoppableMakroAction Subpackage_levmar Subpackage_vmg ThirdParty_MPQC_rebuilt_buildsystem TremoloParser_IncreasedPrecision TremoloParser_MultipleTimesteps Ubuntu_1604_changes stable
Last change on this file since 398fcd was 860145, checked in by Frederik Heber <heber@…>, 8 years ago

Merge commit '0b990dfaa8c6007a996d030163a25f7f5fc8a7e7' as 'ThirdParty/mpqc_open'

  • Property mode set to 100644
File size: 4.2 KB
Line 
1//
2// state.h
3//
4// Copyright (C) 1996 Limit Point Systems, Inc.
5//
6// Author: Curtis Janssen <cljanss@limitpt.com>
7// Maintainer: LPS
8//
9// This file is part of the SC Toolkit.
10//
11// The SC Toolkit is free software; you can redistribute it and/or modify
12// it under the terms of the GNU Library General Public License as published by
13// the Free Software Foundation; either version 2, or (at your option)
14// any later version.
15//
16// The SC Toolkit is distributed in the hope that it will be useful,
17// but WITHOUT ANY WARRANTY; without even the implied warranty of
18// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19// GNU Library General Public License for more details.
20//
21// You should have received a copy of the GNU Library General Public License
22// along with the SC Toolkit; see the file COPYING.LIB. If not, write to
23// the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
24//
25// The U.S. Government is granted a limited license as per AL 91-7.
26//
27
28#ifndef _util_state_state_h
29#define _util_state_state_h
30
31#ifdef __GNUC__
32#pragma interface
33#endif
34
35#include <util/class/class.h>
36
37namespace sc {
38
39class StateIn;
40class StateOut;
41class TranslateDataIn;
42class TranslateDataOut;
43
44/** Base class for objects that can save/restore state.
45 */
46class SavableState: public DescribedClass {
47 protected:
48 SavableState();
49 SavableState(const SavableState&);
50#ifndef __GNUC__
51 public:
52#endif
53 SavableState& operator=(const SavableState&);
54 public:
55 virtual ~SavableState();
56
57 // save functions
58
59 /** Save the state of the object as specified by the
60 StateOut object. This routine saves the state
61 of the object (which includes the nonvirtual bases),
62 the virtual bases, and type information. The default
63 implementation should be adequate. */
64 void save_state(StateOut&);
65
66 // Like save_state(StateOut&), but will handle null pointers correctly.
67 static void save_state(SavableState*s, StateOut&);
68
69 /** This can be used for saving state when the exact type of
70 the object is known for both the save and the restore. To
71 restore objects saved in this way the user must directly
72 invoke the object's StateIn& constructor. */
73 void save_object_state(StateOut&);
74
75 /** Save the virtual bases for the object.
76 This must be done in the same order that the ctor
77 initializes the virtual bases. This does not include
78 the DescribedClass and SavableState virtual base classes.
79 This must be implemented by the user if the class has other
80 virtual bases. (These virtual bases must come after
81 SavableState, if SavableState is virtual.) */
82 virtual void save_vbase_state(StateOut&);
83
84 /** Save the base classes (with save_data_state) and the members in the
85 same order that the StateIn CTOR initializes them. This must be
86 implemented by the derived class if the class has data. */
87 virtual void save_data_state(StateOut&);
88
89 // restore functions
90
91 /** Restores objects saved with save_state. The
92 exact type of the next object in si can be any
93 type publically derived from the SavableState.
94 Derived classes implement a similar static function that
95 returns a pointer to the derived class. If the objectname is
96 given the directory will be consulted to find and restore
97 that object. */
98 static SavableState* restore_state(StateIn& si);
99 /** Like restore_state, but keyword is used to override
100 values while restoring. */
101 static SavableState* key_restore_state(StateIn& si,
102 const char *keyword);
103 static SavableState* dir_restore_state(StateIn& si,
104 const char *objectname,
105 const char *keyword = 0);
106
107 protected:
108
109 /** Each derived class StateIn CTOR handles the restore corresponding
110 to calling save_object_state, save_vbase_state, and save_data_state
111 listed above. All derived class StateIn& constructors must invoke
112 the SavableState(StateIn&) constructor. */
113 SavableState(StateIn&);
114 };
115
116}
117
118#endif
119
120// Local Variables:
121// mode: c++
122// c-file-style: "CLJ"
123// End:
Note: See TracBrowser for help on using the repository browser.