00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00025 #ifndef BTK_SASA_ATOM_DECORATOR_H
00026 #define BTK_SASA_ATOM_DECORATOR_H
00027
00028 #include "atom.h"
00029
00030 #include <boost/concept_check.hpp>
00031
00032 #include <string>
00033
00034 namespace BTK {
00035
00039 template <typename AtomBase>
00040 class SasaAtomDecorator : public AtomBase {
00041 BOOST_CLASS_REQUIRE2(AtomBase,Atom,boost,ConvertibleConcept);
00042
00043 typedef AtomBase base_type;
00044 typedef SasaAtomDecorator<AtomBase> self_type;
00045 public:
00046
00048 SasaAtomDecorator() : base_type() {}
00049
00050 SasaAtomDecorator(const base_type& a) : base_type(a) {}
00051
00052 ~SasaAtomDecorator() {}
00053
00055 self_type& operator=(const base_type& rhs){
00056 base_type::operator=(rhs);
00057 return *this;
00058 }
00059
00061 double sasa_radius() const { return ELEMENT::sasa_radius(this->element());}
00062
00063 double sasa_solvation_parameter() const { return 1.0; }
00064 };
00065 }
00066
00067 #endif