#ifndef __GENESORTER_H__
#define __GENESORTER_H__
-#include "geneorder.h"
-#include "sortaction.h"
-
#include <vector>
+#include <tr1/memory>
+class SortAction;
+class GeneOrder;
/**
- * Abstract baseclass for different gene sorters.
+ * Sorts genes
+ *
* \author Michael Andreen
*/
class GeneSorter{
public:
- typedef std::vector<SortAction> ActionList;
+ typedef std::tr1::shared_ptr<SortAction> ActionPointer;
+ typedef std::vector<ActionPointer> ActionList;
/**
* Takes a GeneOrder, finds the actions to transform it into a sorted
* permutation and returns the list with required actions.
*/
- virtual ActionList sort(const GeneOrder& go1) = 0;
+ ActionList sort(const GeneOrder& go1);
/**
* Find the safe actions for this GeneOrder.
*/
- virtual ActionList safeActions(const GeneOrder& go1) = 0;
+ ActionList safeActions(const GeneOrder& go1);
- virtual ~GeneSorter(){};
+ ~GeneSorter(){};
};
#endif