32#ifndef _util_misc_compute_h
33#define _util_misc_compute_h
37#include <util/state/state.h>
38#include <util/state/stateio.h>
57 friend class ResultInfo;
58 friend class AccResultInfo;
60 std::set<ResultInfoP> _results;
61 void add(ResultInfo*);
64 Compute(
const Compute&) {};
92 virtual void update();
95 ResultInfo(
const ResultInfo&,
Compute*);
96 virtual void save_data_state(
StateOut&);
97 virtual void restore_state(
StateIn&);
98 ResultInfo& operator=(
const ResultInfo&);
101 virtual ~ResultInfo();
102 int& compute() {
return _compute; }
103 const int& compute()
const {
return _compute; }
104 int compute(
int c) {
int r = _compute; _compute = c;
return r; }
105 int& computed() {
return _computed; }
106 const int& computed()
const {
return _computed; }
107 virtual int needed()
const;
112class AccResultInfo:
public ResultInfo
115 double _actual_accuracy;
116 double _desired_accuracy;
119 AccResultInfo(
const AccResultInfo&,
Compute*);
120 virtual void save_data_state(
StateOut&);
121 virtual void restore_state(
StateIn&);
122 AccResultInfo& operator=(
const AccResultInfo&);
127 double actual_accuracy()
const;
128 double desired_accuracy()
const;
129 void set_desired_accuracy(
double);
130 void set_actual_accuracy(
double);
131 int computed_to_desired_accuracy()
const
132 {
return computed() && _actual_accuracy <= _desired_accuracy; }
138#include <util/misc/comptmpl.h>
142typedef NCResult<int> Resultint;
143typedef NCResult<double> Resultdouble;
144typedef NCAccResult<double> AccResultdouble;
The Compute class provides a means of keeping results up to date.
Definition compute.h:56
virtual void obsolete()
Marks all results as being out of date.
virtual void compute()=0
Recompute at least the results that have compute true and are not already computed.
This is a base class for all of Compute's result types.
Definition compute.h:85
Restores objects that derive from SavableState.
Definition statein.h:70
Serializes objects that derive from SavableState.
Definition stateout.h:61