⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 keyvalval.h

📁 大型并行量子化学软件;支持密度泛函(DFT)。可以进行各种量子化学计算。支持CHARMM并行计算。非常具有应用价值。
💻 H
字号:
//// keyval.h//// Copyright (C) 1997 Limit Point Systems, Inc.//// Author: Curtis Janssen <cljanss@limitpt.com>// Maintainer: LPS//// This file is part of the SC Toolkit.//// The SC Toolkit is free software; you can redistribute it and/or modify// it under the terms of the GNU Library General Public License as published by// the Free Software Foundation; either version 2, or (at your option)// any later version.//// The SC Toolkit is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the// GNU Library General Public License for more details.//// You should have received a copy of the GNU Library General Public License// along with the SC Toolkit; see the file COPYING.LIB.  If not, write to// the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.//// The U.S. Government is granted a limited license as per AL 91-7.//#ifndef _util_keyval_keyvalval_h#define _util_keyval_keyvalval_h#ifdef __GNUG__#pragma interface#endif#include <string>#include <util/class/class.h>namespace sc {class KeyValValue: public RefCount {  public:    enum KeyValValueError { OK, WrongType };  public:    KeyValValue() {}    KeyValValue(const KeyValValue&);    virtual ~KeyValValue();    // return 1 for success 0, if the datum is of the wrong type    virtual KeyValValue::KeyValValueError doublevalue(double&) const;    virtual KeyValValue::KeyValValueError booleanvalue(int&) const;    virtual KeyValValue::KeyValValueError floatvalue(float&) const;    virtual KeyValValue::KeyValValueError charvalue(char&) const;    virtual KeyValValue::KeyValValueError intvalue(int&) const;    virtual KeyValValue::KeyValValueError sizevalue(size_t&) const;    virtual KeyValValue::KeyValValueError pcharvalue(const char*&) const;    virtual KeyValValue::KeyValValueError stringvalue(std::string&) const;    virtual KeyValValue::KeyValValueError describedclassvalue(Ref<DescribedClass>&) const;    virtual void print(std::ostream &o=ExEnv::out0()) const;};std::ostream& operator<<(std::ostream&,const KeyValValue&);class KeyValValuedouble: public KeyValValue {  private:    double _val;  public:    KeyValValuedouble(): _val(0.0) {}    KeyValValuedouble(double v): _val(v) {}    KeyValValuedouble(const KeyValValuedouble&);    ~KeyValValuedouble();    KeyValValue::KeyValValueError doublevalue(double&) const;    void print(std::ostream &o=ExEnv::out0()) const;};class KeyValValueboolean: public KeyValValue {  private:    int _val;  public:    KeyValValueboolean(): _val(0) {}    KeyValValueboolean(int v): _val(v) {}    KeyValValueboolean(const KeyValValueboolean&);    ~KeyValValueboolean();    KeyValValue::KeyValValueError booleanvalue(int&) const;    void print(std::ostream &o=ExEnv::out0()) const;};class KeyValValuefloat: public KeyValValue {  private:    float _val;  public:    KeyValValuefloat(): _val(0.0) {}    KeyValValuefloat(float v): _val(v) {}    KeyValValuefloat(const KeyValValuefloat&);    ~KeyValValuefloat();    KeyValValue::KeyValValueError floatvalue(float&) const;    void print(std::ostream &o=ExEnv::out0()) const;};class KeyValValuechar: public KeyValValue {  private:    char _val;  public:    KeyValValuechar(): _val(0) {}    KeyValValuechar(char v): _val(v) {}    KeyValValuechar(const KeyValValuechar&);    ~KeyValValuechar();    KeyValValue::KeyValValueError charvalue(char&) const;    void print(std::ostream &o=ExEnv::out0()) const;};class KeyValValueint: public KeyValValue {  private:    int _val;  public:    KeyValValueint(): _val(0) {}    KeyValValueint(int v): _val(v) {}    KeyValValueint(const KeyValValueint&);    ~KeyValValueint();    KeyValValue::KeyValValueError intvalue(int&) const;    void print(std::ostream &o=ExEnv::out0()) const;};class KeyValValuesize: public KeyValValue {  private:    size_t _val;  public:    KeyValValuesize(): _val(0) {}    KeyValValuesize(int v): _val(v) {}    KeyValValuesize(const KeyValValuesize&);    ~KeyValValuesize();    KeyValValue::KeyValValueError sizevalue(size_t&) const;    void print(std::ostream &o=ExEnv::out0()) const;};class KeyValValuepchar: public KeyValValue {  private:    char* _val;  public:    KeyValValuepchar(): _val(0) {}    KeyValValuepchar(const char*);    KeyValValuepchar(const KeyValValuepchar&);    ~KeyValValuepchar();    KeyValValue::KeyValValueError pcharvalue(const char*&) const;    KeyValValue::KeyValValueError stringvalue(std::string&) const;    void print(std::ostream &o=ExEnv::out0()) const;};class KeyValValuestring: public KeyValValue {  private:    std::string _val;  public:    KeyValValuestring() {}    KeyValValuestring(const std::string&);    KeyValValuestring(const KeyValValuestring&);    ~KeyValValuestring();    KeyValValue::KeyValValueError pcharvalue(const char*&) const;    KeyValValue::KeyValValueError stringvalue(std::string&) const;    void print(std::ostream &o=ExEnv::out0()) const;};class KeyValValueRefDescribedClass: public KeyValValue {  private:    Ref<DescribedClass> _val;  public:    KeyValValueRefDescribedClass() {}    KeyValValueRefDescribedClass(const Ref<DescribedClass>& v): _val(v) {}    KeyValValueRefDescribedClass(const KeyValValueRefDescribedClass&);    ~KeyValValueRefDescribedClass();    KeyValValue::KeyValValueError describedclassvalue(Ref<DescribedClass>&) const;    void print(std::ostream &o=ExEnv::out0()) const;};class KeyValValueString: public KeyValValue {  private:    const char* _val;    char *_val_to_delete;  public:    // Copy = copy the string data    // Steal = use the passed pointer and delete it in DTOR    // Use = use the passed pointer but do not delete it    enum Storage { Copy, Steal, Use };    KeyValValueString(const char*,                      KeyValValueString::Storage s = KeyValValueString::Use);    KeyValValueString(char*,                      KeyValValueString::Storage s = KeyValValueString::Use);    KeyValValueString(const KeyValValueString&);    ~KeyValValueString();    KeyValValue::KeyValValueError doublevalue(double&) const;    KeyValValue::KeyValValueError booleanvalue(int&) const;    KeyValValue::KeyValValueError floatvalue(float&) const;    KeyValValue::KeyValValueError charvalue(char&) const;    KeyValValue::KeyValValueError intvalue(int&) const;    KeyValValue::KeyValValueError sizevalue(size_t&) const;    KeyValValue::KeyValValueError pcharvalue(const char*&) const;    KeyValValue::KeyValValueError stringvalue(std::string&) const;    void print(std::ostream &o=ExEnv::out0()) const;};}#endif /* _KeyVal_h */// Local Variables:// mode: c++// c-file-style: "CLJ"// End:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -