00001 //------------------------------------------------------------------------------ 00002 // This file is part of the OpenStructure project <www.openstructure.org> 00003 // 00004 // Copyright (C) 2008-2011 by the OpenStructure authors 00005 // 00006 // This library is free software; you can redistribute it and/or modify it under 00007 // the terms of the GNU Lesser General Public License as published by the Free 00008 // Software Foundation; either version 3.0 of the License, or (at your option) 00009 // any later version. 00010 // This library is distributed in the hope that it will be useful, but WITHOUT 00011 // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 00012 // FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more 00013 // details. 00014 // 00015 // You should have received a copy of the GNU Lesser General Public License 00016 // along with this library; if not, write to the Free Software Foundation, Inc., 00017 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 00018 //------------------------------------------------------------------------------ 00019 #ifndef OST_ENTITY_PROPERTY_MAPPER_HH 00020 #define OST_ENTITY_PROPERTY_MAPPER_HH 00021 00022 /* 00023 work in progress 00024 00025 Author: Ansgar Philippsen, Marco Biasini 00026 */ 00027 00028 #include <vector> 00029 #include <ost/mol/mol.hh> 00030 #include <ost/mol/module_config.hh> 00031 00032 namespace ost { namespace mol { 00033 00034 00035 class DLLEXPORT_OST_MOL EntityPropertyMapper { 00036 public: 00045 EntityPropertyMapper(const String& prop_name, 00046 Prop::Level level=Prop::UNSPECIFIED); 00052 Real Get(const AtomHandle& atom) const; 00055 Real Get(const AtomHandle& atom, Real default_value) const; 00056 00062 Real Get(const AtomView& atom) const; 00065 Real Get(const AtomView& atom, Real default_value) const; 00066 00067 00073 Real Get(const ResidueHandle& atom) const; 00076 Real Get(const ResidueHandle& atom, Real default_value) const; 00077 00083 Real Get(const ResidueView& atom) const; 00086 Real Get(const ResidueView& atom, Real default_value) const; 00087 00088 00089 00090 00091 00092 00093 00099 Real Get(const ChainHandle& atom) const; 00102 Real Get(const ChainHandle& atom, Real default_value) const; 00103 00109 Real Get(const ChainView& atom) const; 00112 Real Get(const ChainView& atom, Real default_value) const; 00113 00114 00115 00116 00117 00118 00119 private: 00120 template <typename T, bool B> 00121 Real get_property(const T& atom, Real default_value) const; 00122 Prop prop_; 00123 String prop_name_; 00124 }; 00125 00126 }} // ns 00127 00128 #endif