// // Copyright (C) 2004-2006 Rational Discovery LLC // // @@ All Rights Reserved @@ // This file is part of the RDKit. // The contents are covered by the terms of the BSD license // which is included in the file license.txt, found at the root // of the RDKit source tree. // #ifndef __FEATURE_H_30112004_1121__ #define __FEATURE_H_30112004_1121__ #include #include namespace RDFeatures { template class ExplicitFeature { public: ExplicitFeature() {}; explicit ExplicitFeature(const FAMILYMARKER &f,const TYPEMARKER &t) : d_family(f), d_type(t) {}; ExplicitFeature(const FAMILYMARKER &f,const TYPEMARKER &t,const LOCTYPE &loc) : d_family(f), d_type(t), d_loc(loc){}; const FAMILYMARKER &getFamily() const { return d_family; }; void setFamily(const FAMILYMARKER &f) { d_family=f; }; const TYPEMARKER &getType() const { return d_type; }; void setType(const TYPEMARKER &t) { d_type=t; }; const LOCTYPE &getLoc() const { return d_loc; }; void setLoc(const LOCTYPE &loc) { d_loc=loc; }; const std::vector &getDirs() const { return d_dirs; }; std::vector &getDirs() { return d_dirs; }; private: FAMILYMARKER d_family; TYPEMARKER d_type; LOCTYPE d_loc; std::vector d_dirs; }; template class ImplicitFeature { public: ImplicitFeature() : d_weightSum(0.0) {}; explicit ImplicitFeature(const FAMILYMARKER &f,const TYPEMARKER &t) : d_weightSum(0.0), d_family(f), d_type(t) {}; const FAMILYMARKER &getFamily() const { return d_family; }; void setFamily(const FAMILYMARKER &f) { d_family=f; }; const TYPEMARKER &getType() const { return d_type; }; void setType(const TYPEMARKER &t) { d_type=t; }; LOCTYPE getLoc() const { PRECONDITION(d_weights.size()==d_locs.size(),"weight/locs mismatch"); LOCTYPE accum; for(unsigned int i=0;i &getDirs() const { return d_dirs; }; std::vector &getDirs() { return d_dirs; }; private: double d_weightSum; FAMILYMARKER d_family; TYPEMARKER d_type; std::vector d_weights; std::vector d_locs; // FIX: add something correct for directions std::vector d_dirs; }; } #endif