00001 #ifndef _Result_h
00002 #define _Result_h
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #include "CountedPtr.h"
00014 #include "IterationData.h"
00015
00016
00017
00018 class ProblemBase;
00019
00020
00026 class Result
00027 {
00028 public:
00030 typedef vector<CountedPtr<const IterationData> > IterationContainer;
00031
00032
00033
00038 Result(unsigned firstIndex);
00039
00042 virtual ~Result(void);
00043
00044
00045
00046
00052 bool operator==(const Result& right) const;
00053
00054
00055
00056
00059 virtual void Print(wxTextOutputStream& rOutput) const;
00060
00061
00064 friend wxTextOutputStream& operator<<(wxTextOutputStream& rOutput,
00065 const Result& result);
00066
00067
00068 void AddIteration(auto_ptr<const IterationData> apIteration);
00069
00070
00071
00074 const ProblemBase& Problem() const;
00075
00078 void SetProblem(std::auto_ptr<const ProblemBase> apProblem);
00079
00084 unsigned FirstIterationNumber() const;
00085
00088 unsigned LastIterationNumber() const;
00089
00092 const IterationContainer& Iterations() const;
00093
00098 const IterationData& Iteration(unsigned number) const;
00099
00105 unsigned IterationCount() const;
00106
00107
00115 const ColumnVector& FinalResult() const;
00116
00119 ColumnVector& rFinalResult();
00120
00123 unsigned EvaluationCount() const;
00124
00127 unsigned& rEvaluationCount();
00128
00132 void SetError(const wxString& message);
00133
00136 const wxString& ErrorMessage() const;
00137
00141 bool IsAborted() const;
00142
00143
00144
00145 protected:
00146 private:
00149 ColumnVector mFinalResult;
00150
00153 std::auto_ptr<const ProblemBase> mapProblem;
00154
00157 unsigned mEvaluationCount;
00158
00160 IterationContainer mIterations;
00161
00163 unsigned mFirstIndex;
00164
00166 bool mAborted;
00167
00169 wxString mErrorMessage;
00170 };
00171
00172
00173
00174
00175
00176
00177
00178 #endif // _Result_h_