#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:
* 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
*/
};
/**
- * 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.
return (*_action) == (*sa._action);
}
+ /**
+ * Compares sort actions.
+ */
+ bool operator<(const SortAction& sa) const{
+ return (*_action) < (*sa._action);
+ }
+
/**
* Compares sort actions.
*/
std::string toString() const{
return _action->toString();
}
+
+ /**
+ * Gives access to the implementation
+ */
+ const SortActionImpl& impl() const{
+ return *_action;
+ }
private:
ActionPointer _action;