00001 #ifndef _pathfinder_
00002 #define _pathfinder_
00003
00041 #include <vector>
00042
00048 namespace Pathfinder
00049 {
00050
00054 typedef enum PathResult
00055 {
00059 PATH_FOUND=1,
00063 PATH_NOTFOUND=2,
00067 PATH_SEARCHING=3
00068 };
00069
00076 template <class NODETYPE, class COSTTYPE=double>
00077 class IMoveCost
00078 {
00079 public:
00080 virtual ~IMoveCost() {}
00090 virtual const COSTTYPE operator()(const NODETYPE &start, const NODETYPE &end)=0;
00091 };
00092
00099 template <class NODETYPE, class COSTTYPE=double>
00100 class IDestinationCost
00101 {
00102 public:
00103 virtual ~IDestinationCost() {}
00113 virtual const COSTTYPE operator()(const NODETYPE &node, const NODETYPE &goal)=0;
00114 };
00115
00119 template <class NODETYPE>
00120 class IMoveBlocked
00121 {
00122 public:
00123 virtual ~IMoveBlocked() {}
00133 virtual const bool operator()(const NODETYPE &start, const NODETYPE &end)=0;
00134 };
00135
00136 }
00137
00138 #endif // _pathfinder_