]> ruin.nu Git - germs.git/blobdiff - src/sortaction.h
Added progress information for the search
[germs.git] / src / sortaction.h
index c56d0ee42a304bdf26db992f36d4c61a5f374f7a..a1c5566acb16673368d5c3fc9260f9c68a055311 100644 (file)
 #ifndef __SORTACTION_H__
 #define __SORTACTION_H__
 
-#include <tr1/memory>
+#include "shared_ptr.h"
 #include <string>
 class GeneOrder;
 
 
+/**
+ * Abstraction for a sort action implementation, this is the base that other
+ * actions inherits from.
+ */
 class SortActionImpl{
        public:
 
@@ -40,7 +44,12 @@ class SortActionImpl{
                 * Compares sort actions.
                 */
                virtual bool operator==(const SortActionImpl& sa) const = 0;
-               
+
+               /**
+                * Compares sort actions.
+                */
+               virtual bool operator<(const SortActionImpl& sa) const = 0;
+
                /**
                 * Gives a string representation of the action, for output
                 */
@@ -48,13 +57,13 @@ class SortActionImpl{
 };
 
 /**
- * Abstraction of a sort action, all child actions has to be immutable.
+ * Abstraction of a sort action, all SortActionImpls has to be immutable.
  *
  * \author Michael Andreen
  */
 class SortAction{
        public:
-               typedef std::tr1::shared_ptr<SortActionImpl> ActionPointer;
+               typedef shared_ptr<SortActionImpl> ActionPointer;
 
                /**
                 * Creates a new sort action, given a specified action.
@@ -88,6 +97,13 @@ class SortAction{
                        return (*_action) == (*sa._action);
                }
 
+               /**
+                * Compares sort actions.
+                */
+               bool operator<(const SortAction& sa) const{
+                       return (*_action) < (*sa._action);
+               }
+
                /**
                 * Compares sort actions.
                 */
@@ -101,6 +117,13 @@ class SortAction{
                std::string toString() const{
                        return _action->toString();
                }
+
+               /**
+                * Gives access to the implementation
+                */
+               const SortActionImpl& impl() const{
+                       return *_action;
+               }
        private:
                ActionPointer _action;