• Main Page
  • Related Pages
  • Modules
  • Classes
  • Files
  • File List

jdxtypes.h

00001 /***************************************************************************
00002                           jdxtypes.h  -  description
00003                              -------------------
00004     begin                : Sun Jun 6 2004
00005     copyright            : (C) 2001 by Thies H. Jochimsen
00006     email                : jochimse@cns.mpg.de
00007  ***************************************************************************/
00008 
00009 /***************************************************************************
00010  *                                                                         *
00011  *   This program is free software; you can redistribute it and/or modify  *
00012  *   it under the terms of the GNU General Public License as published by  *
00013  *   the Free Software Foundation; either version 2 of the License, or     *
00014  *   (at your option) any later version.                                   *
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   // overwriting virtual functions from JcampDxClass
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   // overwriting virtual functions from JcampDxClass
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   // overwriting virtual functions from JcampDxClass
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   // overwriting virtual functions from JcampDxClass
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   // overwriting virtual functions from JcampDxClass
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   // overwriting virtual functions from JcampDxClass
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 

Generated on Tue Dec 18 2012 15:11:14 by  doxygen 1.7.1