| 50 | 
  | 
#ifndef USETHEFORCE_FORCEFIELD_HPP | 
| 51 | 
  | 
#define USETHEFORCE_FORCEFIELD_HPP | 
| 52 | 
  | 
 | 
| 53 | 
< | 
#define MK_STR(s) # s | 
| 54 | 
< | 
#define STR_DEFINE(t, s) t = MK_STR(s) | 
| 55 | 
< | 
 | 
| 53 | 
> | 
#include "config.h" | 
| 54 | 
  | 
#include <string> | 
| 55 | 
  | 
#include <utility> | 
| 56 | 
  | 
 | 
| 57 | 
  | 
#include "io/basic_ifstrstream.hpp" | 
| 58 | 
+ | 
#include "io/ForceFieldOptions.hpp" | 
| 59 | 
  | 
#include "utils/TypeContainer.hpp" | 
| 60 | 
  | 
#include "types/AtomType.hpp" | 
| 61 | 
  | 
#include "types/BondType.hpp" | 
| 94 | 
  | 
    AtomType* getAtomType(const std::string &at); | 
| 95 | 
  | 
    BondType* getBondType(const std::string &at1, const std::string &at2); | 
| 96 | 
  | 
    BendType* getBendType(const std::string &at1, const std::string &at2, | 
| 97 | 
< | 
                          const std::string &at3); | 
| 97 | 
> | 
                          const std::string &at3); | 
| 98 | 
  | 
    TorsionType* getTorsionType(const std::string &at1, const std::string &at2, | 
| 99 | 
< | 
                                const std::string &at3, const std::string &at4); | 
| 99 | 
> | 
                                const std::string &at3, const std::string &at4); | 
| 100 | 
  | 
 | 
| 101 | 
  | 
    BondType* getExactBondType(const std::string &at1, const std::string &at2); | 
| 102 | 
  | 
    BendType* getExactBendType(const std::string &at1, const std::string &at2, | 
| 103 | 
< | 
                               const std::string &at3); | 
| 104 | 
< | 
    TorsionType* getExactTorsionType(const std::string &at1, const std::string &at2, | 
| 105 | 
< | 
                                     const std::string &at3, const std::string &at4); | 
| 103 | 
> | 
                               const std::string &at3); | 
| 104 | 
> | 
    TorsionType* getExactTorsionType(const std::string &at1,  | 
| 105 | 
> | 
                                     const std::string &at2, | 
| 106 | 
> | 
                                     const std::string &at3,  | 
| 107 | 
> | 
                                     const std::string &at4); | 
| 108 | 
  | 
 | 
| 109 | 
  | 
 | 
| 110 | 
  | 
    //avoid make virtual function public | 
| 126 | 
  | 
         | 
| 127 | 
  | 
    bool addAtomType(const std::string &at, AtomType* atomType); | 
| 128 | 
  | 
 | 
| 129 | 
< | 
    bool addBondType(const std::string &at1, const std::string &at2, BondType* bondType); | 
| 129 | 
> | 
    bool addBondType(const std::string &at1, const std::string &at2,  | 
| 130 | 
> | 
                     BondType* bondType); | 
| 131 | 
  | 
 | 
| 132 | 
  | 
    bool addBendType(const std::string &at1, const std::string &at2, | 
| 133 | 
  | 
                     const std::string &at3, BendType* bendType); | 
| 137 | 
  | 
 | 
| 138 | 
  | 
    ifstrstream* openForceFieldFile(const std::string& filename); | 
| 139 | 
  | 
 | 
| 140 | 
+ | 
    ForceFieldOptions& getForceFieldOptions() {return forceFieldOptions_;} | 
| 141 | 
  | 
  protected: | 
| 142 | 
  | 
 | 
| 143 | 
  | 
    AtomTypeContainer atomTypeCont_;     | 
| 144 | 
  | 
    BondTypeContainer bondTypeCont_; | 
| 145 | 
  | 
    BendTypeContainer bendTypeCont_; | 
| 146 | 
  | 
    TorsionTypeContainer torsionTypeCont_; | 
| 147 | 
< | 
         | 
| 147 | 
> | 
    ForceFieldOptions forceFieldOptions_; | 
| 148 | 
> | 
     | 
| 149 | 
  | 
  private:   | 
| 150 | 
  | 
    std::string ffPath_; | 
| 151 | 
  | 
 |