00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef KnapParams_h
00017 #define KnapParams_h
00018
00019 #include "AlpsKnowledge.h"
00020 #include "AlpsParameterBase.h"
00021
00022
00023
00024
00025
00026 class KnapParams : public AlpsParameterSet {
00027 public:
00030 enum chrParams{
00031
00032 chrDummy,
00033
00034 endOfChrParams
00035 };
00036
00038 enum intParams{
00039 intDummy,
00040
00041 endOfIntParams
00042 };
00043
00045 enum dblParams{
00046 dblDummy,
00047
00048 endOfDblParams
00049 };
00050
00052 enum strParams{
00053 strDummy,
00054
00055 endOfStrParams
00056 };
00057
00059 enum strArrayParams{
00060 strArrayDummy,
00061
00062 endOfStrArrayParams
00063 };
00064
00065 public:
00071 KnapParams() :
00072 AlpsParameterSet(
00073 static_cast<int>(endOfChrParams),
00074 static_cast<int>(endOfIntParams),
00075 static_cast<int>(endOfDblParams),
00076 static_cast<int>(endOfStrParams),
00077 static_cast<int>(endOfStrArrayParams)
00078 )
00079 {
00080 createKeywordList();
00081 setDefaultEntries();
00082 }
00087 virtual void createKeywordList();
00089 virtual void setDefaultEntries();
00093 public:
00094
00102
00103
00104
00113
00114 inline char
00115 entry(const chrParams key) const { return bpar_[key]; }
00117 inline int
00118 entry(const intParams key) const { return ipar_[key]; }
00120 inline double
00121 entry(const dblParams key) const { return dpar_[key]; }
00123 inline const std::string&
00124 entry(const strParams key) const { return spar_[key]; }
00126 inline const std::vector<std::string>&
00127 entry(const strArrayParams key) const { return sapar_[key]; }
00130
00132 void setEntry(const chrParams key, const char * val) {
00133 bpar_[key] = atoi(val) ? true : false; }
00135 void setEntry(const chrParams key, const char val) {
00136 bpar_[key] = val ? true : false; }
00138 void setEntry(const chrParams key, const bool val) {
00139 bpar_[key] = val; }
00141 void setEntry(const intParams key, const char * val) {
00142 ipar_[key] = atoi(val); }
00144 void setEntry(const intParams key, const int val) {
00145 ipar_[key] = val; }
00147 void setEntry(const dblParams key, const char * val) {
00148 dpar_[key] = atof(val); }
00150 void setEntry(const dblParams key, const double val) {
00151 dpar_[key] = val; }
00153 void setEntry(const strParams key, const char * val) {
00154 spar_[key] = val; }
00156 void setEntry(const strArrayParams key, const char *val) {
00157 sapar_[key].push_back(val); }
00158
00159
00160
00165 void pack(AlpsEncoded& buf) {
00166 buf.writeRep(bpar_, endOfChrParams)
00167 .writeRep(ipar_, endOfIntParams)
00168 .writeRep(dpar_, endOfDblParams);
00169 for (int i = 0; i < endOfStrParams; ++i)
00170 buf.writeRep(spar_[i]);
00171 for (int i = 0; i < endOfStrArrayParams; ++i) {
00172 buf.writeRep(sapar_[i].size());
00173 for (size_t j = 0; j < sapar_[i].size(); ++j)
00174 buf.writeRep(sapar_[i][j]);
00175 }
00176 }
00178 void unpack(AlpsEncoded& buf) {
00179 int dummy;
00180
00181 dummy = static_cast<int>(endOfChrParams);
00182 buf.readRep(bpar_, dummy, false);
00183 dummy = static_cast<int>(endOfIntParams);
00184 buf.readRep(ipar_, dummy, false);
00185 dummy = static_cast<int>(endOfDblParams);
00186 buf.readRep(dpar_, dummy, false);
00187 for (int i = 0; i < endOfStrParams; ++i)
00188 buf.readRep(spar_[i]);
00189 for (int i = 0; i < endOfStrArrayParams; ++i) {
00190 size_t str_size;
00191 buf.readRep(str_size);
00192 sapar_[i].reserve(str_size);
00193 for (size_t j = 0; j < str_size; ++j){
00194
00195 sapar_[i].push_back(std::string());
00196 buf.readRep(sapar_[i].back());
00197 }
00198 }
00199 }
00202 };
00203
00204 #endif