00001 #ifndef CONFIGPARSER_H
00002 #define CONFIGPARSER_H
00003
00004
00005
00006
00007
00008 extern const char* PARSER_VERSION;
00009
00010
00011 #ifdef _MSC_VER
00012 #pragma warning(disable : 4786)
00013 #endif
00014
00015 #include <string>
00016 #include <fstream>
00017 #include <list>
00018
00019 #include "Bath.h"
00020
00021
00022 enum BufferStrategie {LinksRechts=0, LinksPrior, Nacheinander, Fairness, OfenPrior, SpeicherOpt1, SpeicherOpt2, Multi, unknownStrat};
00023 extern const char* strBufferStrategie[unknownStrat];
00024
00025 class Tokenizer {
00026 public:
00027 Tokenizer() : errorString(""), commentStarter("
00028
00029
00030 bool tokenize(const std::string inputLine);
00031
00032
00033 const std::string& getError() const {return errorString;}
00034
00035
00036 unsigned int getTokenNumber() const {return tokenList.size();}
00037 const std::string& getToken(unsigned int index) const;
00038 int getTokenPos(unsigned int index) const;
00039
00040 protected:
00041
00042 std::string errorString;
00043
00044 std::list<std::string> tokenList;
00045 std::list<unsigned int> tokenPos;
00046 std::string line;
00047
00048
00049 std::string commentStarter;
00050 std::string whitespace;
00051 std::string tokenAndWhitespace ;
00052 };
00053
00054
00055 class ConfigParser : public Tokenizer {
00056 public:
00057 ConfigParser();
00058
00059
00060 unsigned int getErrorPos() const {return errorPos;}
00061
00062
00063 bool parse(std::ifstream& configFile);
00064
00065
00066 void reset();
00067
00068
00069
00070 double getRequestDELAY() const {return requestDELAY;}
00071
00072
00073 double getDRIVE_ORIGIN_LEFT() const {return DRIVE_ORIGIN_LEFT;}
00074 double getDRIVE_ORIGIN_RIGHT() const {return DRIVE_ORIGIN_RIGHT;}
00075 double getDRIVE_THROUGH() const {return DRIVE_THROUGH;}
00076 double getDRIVE_LEFT_RIGHT() const {return DRIVE_LEFT_RIGHT;}
00077 double getDRIVE_RIGHT_FINAL() const {return DRIVE_RIGHT_FINAL;}
00078 double getDRIVE_RIGHT_RETURN() const {return DRIVE_RIGHT_RETURN;}
00079 double getDRIVE_LEFT_RETURN() const {return DRIVE_LEFT_RETURN;}
00080
00081
00082 unsigned int getOVEN_CONFIG(unsigned int i) const {return OVEN_CONFIG[i];}
00083
00084
00085 double getSHIFT() const {return SHIFT;}
00086 double getONPALETTE(int variante) const {return 60 * ONPALETTE[variante];}
00087 double getOVEN1 (int variante) const {return 60 * OVEN1[variante];}
00088 double getCHILL (int variante, BathType bath) const;
00089
00090 double getOVEN2 (int variante) const {return 60 * OVEN2[variante];}
00091 double getCOOLING (int variante) const {return 60 * COOLING[variante];}
00092
00093 double getH2O_CHILL() { return H2O_CHILL; }
00094 double getH2OAIRH2O_CHILL() { return H2OAIRH2O_CHILL; }
00095 double getH2OPOLYMER_CHILL(){ return H2OPOLYMER_CHILL; }
00096 double getPOLYMER_CHILL() { return POLYMER_CHILL; }
00097 double getAIR_CHILL() { return AIR_CHILL; }
00098 double getVENTILATOR_CHILL(){ return VENTILATOR_CHILL; }
00099
00100
00101
00102 bool getNO_CRANE_TIME() const {return NO_CRANE_TIME;}
00103
00104
00105 double getEMPTY_PALETTIES_DELAY() const {return EMPTY_PALETTIES_DELAY;}
00106
00107
00108 BufferStrategie getBUFFERSchiebeStrategie() const {return BUFFERSchiebeStrategie;}
00109
00110
00111 bool getBADUmfuellen() const {return BADUmfuellen;}
00112 double getBADUmfuellzeit() const {return BADUmfuellzeit;}
00113 int getBADkapazitaet() const {return BADkapazitaet;}
00114
00115
00116 bool getBERICHTAuftraege() const {return BERICHTAuftraege;}
00117 bool getBERICHTPuffer() const {return BERICHTPuffer;}
00118 bool getBERICHTWaermebehandlungen() const {return BERICHTWaermebehandlungen;}
00119 bool getBERICHTPaletten() const {return BERICHTPaletten;}
00120 bool getBERICHTUeberlaeufe() const {return BERICHTUeberlaeufe;}
00121
00122
00123
00124 double getOFENVORSCHAU() const {return OFENVORSCHAU;}
00125
00126 protected:
00127
00128 unsigned int errorPos;
00129
00130
00131
00132 double requestDELAY;
00133
00134
00135 double DRIVE_ORIGIN_LEFT;
00136 double DRIVE_ORIGIN_RIGHT;
00137 double DRIVE_THROUGH;
00138 double DRIVE_LEFT_RIGHT;
00139 double DRIVE_RIGHT_FINAL;
00140 double DRIVE_RIGHT_RETURN;
00141 double DRIVE_LEFT_RETURN;
00142
00143
00144 unsigned int OVEN_CONFIG[9];
00145
00146
00147 double SHIFT;
00148
00149 double ONPALETTE[5];
00150 double OVEN1[5];
00151 double CHILL[5];
00152 double OVEN2[5];
00153 double COOLING[5];
00154
00155
00156 double H2O_CHILL;
00157 double H2OAIRH2O_CHILL;
00158 double H2OPOLYMER_CHILL;
00159 double POLYMER_CHILL;
00160 double AIR_CHILL;
00161 double VENTILATOR_CHILL;
00162
00163
00164 bool NO_CRANE_TIME;
00165
00166
00167 double EMPTY_PALETTIES_DELAY;
00168
00169
00170 BufferStrategie BUFFERSchiebeStrategie;
00171
00172
00173 bool BADUmfuellen;
00174 double BADUmfuellzeit;
00175 int BADkapazitaet;
00176
00177
00178 bool BERICHTAuftraege;
00179 bool BERICHTPuffer;
00180 bool BERICHTWaermebehandlungen;
00181 bool BERICHTPaletten;
00182 bool BERICHTUeberlaeufe;
00183
00184
00185 double OFENVORSCHAU;
00186 };
00187
00188
00189 class ExperimentParser : public Tokenizer {
00190 public:
00191 ExperimentParser();
00192
00193
00194 unsigned int getErrorPos() const {return errorPos;}
00195
00196
00197 bool parse(std::ifstream& experimentFile);
00198
00199
00200 void reset();
00201
00202
00203
00204 const std::string& getLAST_DATEINAME() const {return LAST_DATEINAME;}
00205 const std::string& getCONFIG_DATEINAME() const {return CONFIG_DATEINAME;}
00206
00207
00208 double getPAUSENLAENGE() const {return PAUSENLAENGE;}
00209 double getSCHICHTWARTUNG() const {return SCHICHTWARTUNG;}
00210
00211
00212 unsigned int getTimeSlicesCount() const {return START_DATE.size();}
00213 const std::string& getSTART_DATE(unsigned int i) const;
00214 const std::string& getEND_DATE(unsigned int i) const;
00215
00216 #ifdef _USE_CORBA
00217
00218 void setLAST_DATEINAME(const char* last) {LAST_DATEINAME = last;}
00219 void setCONFIG_DATEINAME(const char* tech) {CONFIG_DATEINAME = tech;}
00220 void setPAUSENLAENGE(double l) {PAUSENLAENGE = l;}
00221 void setSCHICHTWARTUNG(double w) {SCHICHTWARTUNG = w;}
00222 void clearSTART_DATE() {START_DATE.clear();}
00223 void clearEND_DATE() {END_DATE.clear();}
00224 bool addSTART_DATE(const char* date) {std::string sd = date; if (!isValidDateTime(sd)) return false; START_DATE.push_back(sd); return true;}
00225 bool addEND_DATE(const char* date) {std::string sd = date; if (!isValidDateTime(sd)) return false; END_DATE.push_back(sd); return true;}
00226 #endif
00227
00228 bool isValidDateTime(const std::string& dateTime);
00229 protected:
00230
00231 unsigned int errorPos;
00232
00233
00234
00235 std::string LAST_DATEINAME;
00236 int LAST_DATEITYPE;
00237
00238
00239 std::string CONFIG_DATEINAME;
00240
00241
00242 double PAUSENLAENGE;
00243 double SCHICHTWARTUNG;
00244
00245
00246 std::list<std::string> START_DATE;
00247 std::list<std::string> END_DATE;
00248 };
00249
00250
00251 extern ExperimentParser experiment;
00252
00253
00254 extern ConfigParser conf;
00255
00256 #endif
00257