00001 /* 00002 LoopTK: Protein Loop Kinematic Toolkit 00003 Copyright (C) 2007 Stanford University 00004 00005 This program is free software; you can redistribute it and/or modify 00006 it under the terms of the GNU General Public License as published by 00007 the Free Software Foundation; either version 2 of the License, or 00008 (at your option) any later version. 00009 00010 This program is distributed in the hope that it will be useful, 00011 but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00013 GNU General Public License for more details. 00014 00015 You should have received a copy of the GNU General Public License along 00016 with this program; if not, write to the Free Software Foundation, Inc., 00017 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 00018 */ 00019 00020 #ifndef __P_FUNCTORS_H 00021 #define __P_FUNCTORS_H 00022 00023 class PAtom; 00024 class PBond; 00025 //@package Functors 00035 class AtomFunctor { 00036 public: 00037 virtual void operator()(PAtom *atom, PBond *bondFrom) = 0; 00038 }; 00039 //@package Functors 00049 class BondFunctor { 00050 public: 00051 virtual void operator()(PBond *bond, PAtom *atomFrom, PAtom *atomTo) = 0; 00052 }; 00053 //@package Functors 00063 class FunctFunctor { 00064 public: 00065 virtual double operator()(double p[]) = 0; 00066 virtual double operator()(double p[], int i) = 0; 00067 }; 00068 //@package Functors 00076 class DerivFunctor { 00077 public: 00078 virtual void operator()(double p[], double deriv[]) = 0; 00079 }; 00080 00081 #endif // __P_FUNCTORS_H