#include <string>
class SortAction;
+class GeneOrder;
+
namespace Models {
class ModelImpl;
}
+/**
+ * Abstraction of a model.
+ *
+ * Handles scoring of specific actions on gene orders.
+ */
class Model{
public:
typedef std::tr1::shared_ptr<Models::ModelImpl> ModelPointer;
+ /**
+ * Constructs a new model.
+ *
+ * \param model The actual model implementation. This model takes
+ * ownership of the new allocated implementation and will delete it.
+ */
Model(Models::ModelImpl* model);
- double score(const SortAction& sa) const;
+ /**
+ * Gives the score for the action on a given gene order.
+ * A better match for this model gives a higher score.
+ */
+ double score(const SortAction& sa, const GeneOrder& go) const;
+
+ /**
+ * The name for the model used.
+ */
+ const char* name() const;
- std::string name() const;
+ /**
+ * Creates a model from a name.
+ */
+ static Model modelFactory(const std::string& name);
private:
ModelPointer _impl;