00001 // -*- c++ -*- 00002 00003 // This file is part of the Collective Variables module (Colvars). 00004 // The original version of Colvars and its updates are located at: 00005 // https://github.com/Colvars/colvars 00006 // Please update all Colvars source files before making any changes. 00007 // If you wish to distribute your changes, please submit them to the 00008 // Colvars repository at GitHub. 00009 00010 #ifndef COLVARPARAMS_H 00011 #define COLVARPARAMS_H 00012 00013 #include <map> 00014 00016 00017 00018 class colvarparams { 00019 00020 public: 00021 00023 int param_exists(std::string const ¶m_name); 00024 00026 virtual std::vector<std::string> get_param_names(); 00027 00029 virtual std::vector<std::string> get_param_grad_names(); 00030 00032 virtual void const *get_param_ptr(std::string const ¶m_name); 00033 00035 virtual void const *get_param_grad_ptr(std::string const ¶m_name); 00036 00038 virtual cvm::real get_param(std::string const ¶m_name); 00039 00041 virtual int set_param(std::string const ¶m_name, void const *new_value); 00042 00043 protected: 00044 00046 colvarparams(); 00047 00049 virtual ~colvarparams(); 00050 00052 std::map<std::string, void const *> param_map; 00053 00055 std::map<std::string, colvarvalue const *> param_grad_map; 00056 00058 void register_param(std::string const ¶m_name, void *param_ptr); 00059 00061 void register_param_grad(std::string const ¶m_name, 00062 colvarvalue *param_grad_ptr); 00063 00064 }; 00065 00066 #endif