Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members

CompareAlgorithms.h

Go to the documentation of this file.
00001 #ifndef MMANN_COMPARE_ALGORITHMS_H
00002 #define MMANN_COMPARE_ALGORITHMS_H
00003 
00011 
00012 #include <string.h>
00013 
00014 #ifdef min
00015 #undef min
00016 #endif
00017 
00018 #define min(a,b) ((a)<(b)?(a):(b))
00019 
00021 template <class Data, class ConfigData>
00022 class ACompareNodesAlgorithm
00023 {
00024 public:
00030     virtual int Compare(const Data* Node1, const Data* Node2, const ConfigData* TConfigData) = 0;
00031 };
00032 
00036 template <class Data, class ConfigData>
00037 class SimpleCompareNodesAlgorithm : public ACompareNodesAlgorithm<Data, ConfigData>
00038 {
00039 public:
00045     virtual int Compare(const Data* Node1, const Data* Node2, const ConfigData* TConfigData);
00046 };
00047 
00048 template <class Data, class ConfigData>
00049 int SimpleCompareNodesAlgorithm<Data, ConfigData>::Compare(const Data* Node1, const Data* Node2, const ConfigData* TConfigData)
00050 {
00051     if (*Node1 < *Node2)
00052         return -1;
00053     if (*Node1 > *Node2)
00054         return 1;
00055 
00056     return 0;
00057 }
00058 
00063 template <class Data, class ConfigData>
00064 class CompareFunctionCompareNodesAlgorithm : public ACompareNodesAlgorithm<Data, ConfigData>
00065 {
00066 public:
00072     virtual int Compare(const Data* Node1, const Data* Node2, const ConfigData* TConfigData);
00073 };
00074 
00075 template <class Data, class ConfigData>
00076 int CompareFunctionCompareNodesAlgorithm<Data, ConfigData>::Compare(const Data* Node1, const Data* Node2, const ConfigData* TConfigData)
00077 {
00078     return ((Data*)Node1)->Compare(Node2);
00079 }
00080 
00081 #endif

Generated on Sat Nov 5 11:20:15 2005 for Cpp Freecell Solver by  doxygen 1.4.4