00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef JDXTYPES_H
00019 #define JDXTYPES_H
00020
00021
00022 #include <odinpara/jdxbase.h>
00023
00024
00030
00031
00036 class JDXstring : public STD_string, public virtual JcampDxClass {
00037
00038 public:
00039
00043 JDXstring () : STD_string() {}
00044
00054 JDXstring (const STD_string& ss,const STD_string& name="",bool userParameter=true,
00055 compatMode mode=notBroken,parameterMode parameter_mode=edit,
00056 const STD_string& parx_equivalent="");
00057
00058
00062 JDXstring (int i,const char c=' ') : STD_string(i,c) {}
00063
00067 JDXstring (const char *charptr) : STD_string(charptr) {}
00068
00072 JDXstring (const JDXstring& str) {JDXstring::operator = (str);}
00073
00077 JDXstring& operator = (const STD_string& ss) {STD_string::operator = (ss); return *this;}
00078
00082 JDXstring& operator = (const char *charptr) {STD_string::operator = (charptr); return *this;}
00083
00087 JDXstring& operator = (const JDXstring& ss);
00088
00092 friend STD_ostream& operator << (STD_ostream& s,const JDXstring& t) {return s << STD_string(t);}
00093
00094
00095
00096 bool parsevalstring (const STD_string& parstring);
00097 STD_string printvalstring() const;
00098 STD_string get_parx_code(parxCodeType type, const ParxEquiv& equiv) const;
00099 ParxEquiv get_parx_equiv() const {parx_equiv.type="char"; return parx_equiv;}
00100 const char* get_typeInfo() const {return "string";}
00101 JcampDxClass* create_copy() const {return new JDXstring(*this);}
00102 STD_string* cast(STD_string*) {return this;}
00103
00104 private:
00105 mutable ParxEquiv parx_equiv;
00106
00107 };
00108
00109
00110
00112
00117 class JDXbool : public virtual JcampDxClass {
00118
00119 public:
00120
00124 JDXbool () : val(false) {}
00125
00135 JDXbool(bool flag, const STD_string& name="",
00136 bool userParameter=true, compatMode mode=notBroken,
00137 parameterMode parameter_mode=edit,
00138 const STD_string& parx_equivalent="");
00139
00143 JDXbool(const JDXbool& jb) {JDXbool::operator = (jb);}
00144
00148 JDXbool& operator = (bool flag) {val=flag; return *this;}
00149
00154 JDXbool& operator = (const STD_string& s) {parsevalstring(s); return *this;}
00155
00159 JDXbool& operator = (const JDXbool& jb);
00160
00164 operator bool () const {return val;}
00165
00166
00167 bool parsevalstring (const STD_string& parstring);
00168 STD_string printvalstring() const;
00169 STD_string get_parx_code(parxCodeType type, const ParxEquiv& equiv) const;
00170 ParxEquiv get_parx_equiv() const {parx_equiv.type="YesNo"; return parx_equiv;}
00171 const char* get_typeInfo() const {return "bool";}
00172 JcampDxClass* create_copy() const {return new JDXbool(*this);}
00173 bool* cast(bool*) {return &val;}
00174
00175 private:
00176 bool val;
00177 mutable ParxEquiv parx_equiv;
00178 };
00179
00180
00182
00187 class JDXenum : public virtual JcampDxClass {
00188
00189 public:
00190
00194 JDXenum() {actual=entries.end();}
00195
00205 JDXenum(const STD_string& first_entry, const STD_string& name="",
00206 bool userParameter=true, compatMode mode=notBroken,
00207 parameterMode parameter_mode=edit, const STD_string& parx_equivalent="");
00208
00212 JDXenum(const JDXenum& je) {JDXenum::operator = (je);}
00213
00214
00218 JDXenum& operator = (const char* item) {set_actual(STD_string(item)); return *this;}
00219
00223 JDXenum& operator = (const STD_string& item) {set_actual(item); return *this;}
00224
00228 JDXenum& operator = (int item) {set_actual(item); return *this;}
00229
00233 JDXenum& operator = (const JDXenum& je);
00234
00240 JDXenum& add_item(const STD_string& item, int index=-1);
00241
00245 JDXenum& set_actual(const STD_string& item);
00246
00250 JDXenum& set_actual(int index);
00251
00255 JDXenum& clear();
00256
00260 operator int () const;
00261
00265 operator STD_string () const;
00266
00270 bool operator == (const STD_string& s) const {return (operator STD_string ())==s;}
00271
00275 bool operator == (const char* s) const {return (operator STD_string ())==STD_string(s);}
00276
00280 bool operator == (int i) const {return (operator int ())==i;}
00281
00285 bool operator != (const STD_string& s) const {return (operator STD_string ())!=s;}
00286
00290 bool operator != (const char* s) const {return (operator STD_string ())!=STD_string(s);}
00291
00295 bool operator != (int i) const {return (operator int ())!=i;}
00296
00297
00301 unsigned int n_items() const {return entries.size();}
00302
00306 const STD_string& get_item(unsigned int index) const;
00307
00311 unsigned int get_item_index() const;
00312
00316 JDXenum& set_item_index(unsigned int index);
00317
00318
00319
00320 bool parsevalstring (const STD_string& parstring);
00321 STD_string printvalstring() const;
00322 svector get_alternatives() const;
00323 STD_string get_parx_code(parxCodeType type, const ParxEquiv& equiv) const;
00324 ParxEquiv get_parx_equiv() const;
00325 const char* get_typeInfo() const {return "enum";}
00326 JcampDxClass* create_copy() const {return new JDXenum(*this);}
00327 JDXenum* cast(JDXenum*) {return this;}
00328
00329 private:
00330 STD_map<int,STD_string> entries;
00331 STD_map<int,STD_string>::const_iterator actual;
00332 mutable ParxEquiv parx_equiv;
00333
00334 STD_string parxtype_cache;
00335
00336 };
00337
00339
00344 class JDXaction : public virtual JcampDxClass {
00345
00346 public:
00347
00351 JDXaction() : state(false) {set_filemode(exclude);}
00352
00361 JDXaction(bool init_state, const STD_string& name="",
00362 bool userParameter=true, compatMode mode=notBroken,
00363 parameterMode parameter_mode=edit);
00364
00368 JDXaction(const JDXaction& ja) {JDXaction::operator = (ja);}
00369
00373 JDXaction& operator = (const JDXaction& ja);
00374
00378 operator bool () const;
00379
00383 JDXaction& trigger_action() {state=true; return *this;}
00384
00385
00386 bool parsevalstring (const STD_string& parstring);
00387 STD_string printvalstring() const;
00388 const char* get_typeInfo() const {return "action";}
00389 JcampDxClass* create_copy() const {return new JDXaction(*this);}
00390 JDXaction* cast(JDXaction*) {return this;}
00391
00392 private:
00393 mutable bool state;
00394 };
00395
00396
00397
00398
00400
00401
00421 class JDXfileName : public JDXstring {
00422
00423 public:
00424
00428 JDXfileName () {common_init();}
00429
00438 JDXfileName (const STD_string& filename, const STD_string& name="",
00439 bool userParameter=true, compatMode mode=notBroken,
00440 parameterMode parameter_mode=edit);
00441
00445 JDXfileName(const JDXfileName& jf);
00446
00450 JDXfileName& operator = (const STD_string& filename);
00451
00455 JDXfileName& operator = (const JDXfileName& jf);
00456
00460 bool exists() const;
00461
00465 STD_string get_basename() const {return basename_cache;}
00466
00471 STD_string get_basename_nosuffix() const;
00472
00476 STD_string get_dirname() const {return dirname_cache;}
00477
00481 STD_string get_suffix() const {return suffix_cache;}
00482
00486 JDXfileName& set_suffix(const STD_string& suff) {suffix_cache=suff; return *this;}
00487
00491 STD_string get_defaultdir() const {return defaultdir;}
00492
00496 JDXfileName& set_defaultdir(const STD_string& defdir);
00497
00498
00502 bool is_dir() const {return dir;}
00503
00507 JDXfileName& set_dir(bool flag) {dir=flag; return *this;}
00508
00509
00510
00511 bool parsevalstring (const STD_string& parstring);
00512 const char* get_typeInfo() const {return "fileName";}
00513 JcampDxClass* create_copy() const {return new JDXfileName(*this);}
00514 JDXfileName* cast(JDXfileName*) {return this;}
00515
00516 private:
00517
00518 static void normalize(const STD_string& fname, bool dir, STD_string& result, STD_string& result_dirname, STD_string& result_basename, STD_string& result_suffix);
00519
00520 void common_init() {dir=false;}
00521
00522 STD_string defaultdir;
00523 STD_string dirname_cache;
00524 STD_string basename_cache;
00525 STD_string suffix_cache;
00526
00527 bool dir;
00528
00529 };
00530
00532
00537 class JDXformula : public JDXstring {
00538
00539 public:
00540
00544 JDXformula () : JDXstring() {}
00545
00554 JDXformula (const STD_string& formula, const STD_string& name="",
00555 bool userParameter=true, compatMode mode=notBroken,
00556 parameterMode parameter_mode=edit);
00557
00561 JDXformula (const JDXformula& jf) {JDXformula::operator = (jf);}
00562
00566 JDXformula& operator = (const STD_string& formula) {JDXstring::operator = (formula); return *this;}
00567
00571 JDXformula& operator = (const JDXformula& jf);
00572
00576 JDXformula& set_syntax(const STD_string& syn) {syntax=syn; return *this;}
00577
00581 STD_string get_syntax() const {return syntax;}
00582
00583
00584 const char* get_typeInfo() const {return "formula";}
00585 JcampDxClass* create_copy() const {return new JDXformula(*this);}
00586 JDXformula* cast(JDXformula*) {return this;}
00587
00588 private:
00589 STD_string syntax;
00590 };
00591
00592
00593
00597 #endif
00598