00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef _MPCL_UTIL_STRATEGY_SORT_ALGORITHM__
00027 #define _MPCL_UTIL_STRATEGY_SORT_ALGORITHM__
00028
00029
00031 namespace mpcl
00032 {
00033
00035 namespace util
00036 {
00037
00039 namespace strategy
00040 {
00041
00056 template <typename TSequence>
00057 class ISortAlgorithm
00058 {
00059
00060 public:
00061
00063 typedef
00064 typename TSequence::const_iterator
00065 const_iterator;
00066
00068 typedef
00069 typename TSequence::iterator
00070 iterator;
00071
00073 typedef
00074 typename TSequence::value_type
00075 value_type;
00076
00077
00078 public:
00079
00080
00081
00082
00083
00089 virtual void execute (TSequence& rtSOURCE_SEQUENCE) = 0;
00090
00091
00092 protected:
00093
00094
00095
00096
00097
00103 void swap (value_type& rtFIRST_ITEM, value_type& rtSECOND_ITEM)
00104 {
00105 value_type tTempItem (rtFIRST_ITEM);
00106
00107 rtFIRST_ITEM = rtSECOND_ITEM;
00108 rtSECOND_ITEM = tTempItem;
00109 }
00110
00111 };
00112
00113 }
00114
00115 }
00116
00117 }
00118
00119
00120 #endif // not _MPCL_UTIL_STRATEGY_SORT_ALGORITHM__