00001
00002
00003 #ifndef State_h
00004 #define State_h
00005
00006 #include <vector>
00007
00008 #include "Serializable.h"
00009
00010
00011 using namespace std;
00012
00013 namespace BIE {
00014
00018 class State: public Serializable
00019 {
00020 private:
00021
00022 unsigned int len, dsize;
00023 vector<double> p;
00024
00025 public:
00026
00028
00034 State() : len(0), dsize(0) {}
00035 State(int n);
00036 State(vector<double> v) { setVector(v); }
00037 State(vector<double> v, int n) { setVector(v, n); }
00038 State(const State& s);
00040
00042 ~State();
00043
00045 void setVector(vector<double> v);
00046
00048 void setVector(vector<double> v, int n);
00049
00051
00052 State &operator=(const State& s);
00053 State &operator=(const vector<double>& v);
00055
00057 double &operator[](unsigned int i) const;
00058
00063 void setSize(unsigned int n);
00064
00066 unsigned int size() { return len; }
00067
00068
00069 private:
00070 friend class boost::serialization::access;
00071 template<class Archive>
00072 void serialize(Archive & ar, const unsigned int version) {
00073 this->pre_serialize(ar, version);
00074 try {
00075 ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Serializable);
00076 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION;
00077 }
00078 try {
00079 ar & BOOST_SERIALIZATION_NVP(len);
00080 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION;
00081 }
00082 try {
00083 ar & BOOST_SERIALIZATION_NVP(dsize);
00084 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION;
00085 }
00086 try {
00087 ar & BOOST_SERIALIZATION_NVP(p);
00088 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION;
00089 }
00090 this->post_serialize(ar, version);
00091 }
00092
00093 };
00094
00095 }
00096
00097 BIE_CLASS_TYPE_INFO(BIE::State)
00098 BIE_CLASS_EXPORT_KEY(BIE::State)
00099 #endif