]> ruin.nu Git - germs.git/commitdiff
a little more refactoring, name might just as well return const char* since it's...
authorMichael Andreen <harv@ruin.nu>
Fri, 3 Aug 2007 13:58:02 +0000 (13:58 +0000)
committerMichael Andreen <harv@ruin.nu>
Fri, 3 Aug 2007 13:58:02 +0000 (13:58 +0000)
src/genesorter.cpp
src/main.cpp
src/model.cpp
src/model.h
src/models.cpp
src/models.h
src/sortaction.h
src/test/modelidentifiertest.cpp

index 602a6dde276318e069fa8e1496c005110e9b27d4..81b9da56635b03bf265de647bf349ac91f917079 100644 (file)
@@ -49,7 +49,7 @@ GeneSorter::ActionList GeneSorter::sort(const GeneOrder& go, const Model& m){
                if (safe.size() > 0){
                        priority_queue<pair<double,SortAction>,vector<pair<double,SortAction> >, ScoreCmp > pq;
                        for (ActionList::iterator sa = safe.begin(); sa != safe.end(); ++sa){
-                               pq.push(pair<double,SortAction>(m.score(*sa),*sa));
+                               pq.push(pair<double,SortAction>(m.score(*sa,temp),*sa));
                        }
                        SortAction sa = pq.top().second;
                        sa(temp);
index 90d3564d3d39fc08ae7fc48cb45610b146703f5d..94109b4e4cce83e47329ce482186e44b740722f7 100644 (file)
@@ -77,7 +77,7 @@ int main(int argc, char** argv){
        GeneSorter::ActionList al = so.sort(go,model);
 
        for (GeneSorter::ActionList::iterator sa = al.begin(); sa != al.end(); ++sa){
-               cout << "Action: " << sa->toString() << " model score: " << model.score(*sa) << endl;
+               cout << "Action: " << sa->toString() << " model score: " << model.score(*sa,go) << endl;
        }
        //TODO: Print result
        return EXIT_SUCCESS;
index 12bee4bddafc7084cdf0a60a4bfe383d92bf7a92..715d7c2f1a9f5a5ee068d88ca74e95726ad29ebc 100644 (file)
 Model::Model(Models::ModelImpl* model): _impl(model){
 }
 
-double Model::score(const SortAction& sa) const{
-       return _impl->score(sa);
+double Model::score(const SortAction& sa, const GeneOrder& go) const{
+       return _impl->score(sa, go);
 }
 
-std::string Model::name() const{
+const char* Model::name() const{
        return _impl->name();
 }
 
index 9ebcb23818960d722bbee289a5c299849000330d..52e4d747c4b6eb0677e18805cc30230244e6102f 100644 (file)
 #define __MODEL_H__
 
 #include <tr1/memory>
-#include <string>
 
 class SortAction;
+class GeneOrder;
+
 namespace Models {
        class ModelImpl;
 }
@@ -35,9 +36,9 @@ class Model{
 
                Model(Models::ModelImpl* model);
 
-               double score(const SortAction& sa) const;
+               double score(const SortAction& sa, const GeneOrder& go) const;
 
-               std::string name() const;
+               const char* name() const;
 
        private:
                ModelPointer _impl;
index 0a7577a4ae308767f1a77c2018cf4cafd2b8baa4..9c13090647ca294bebf752405e6f10a245a83b0c 100644 (file)
@@ -20,6 +20,7 @@
 
 #include "models.h"
 #include "reverseaction.h"
+#include "geneorder.h"
 
 using namespace std;
 
@@ -27,40 +28,40 @@ namespace Models{
 
 ModelImpl::~ModelImpl(){}
 
-double ModelImpl::score(const SortAction& sa){
+double ModelImpl::score(const SortAction& sa, const GeneOrder& go){
        return 1;
 }
-string ModelImpl::name(){
+const char* ModelImpl::name(){
        return "Standard";
 }
 
 
 
-double X::score(const SortAction& sa){
+double X::score(const SortAction& sa, const GeneOrder& go){
        return 1;
 }
-string X::name(){
+const char* X::name(){
        return "X";
 }
 
-double Zipper::score(const SortAction& sa){
+double Zipper::score(const SortAction& sa, const GeneOrder& go){
        return 1;
 }
-string Zipper::name(){
+const char* Zipper::name(){
        return "Zipper";
 }
 
-double Cloud::score(const SortAction& sa){
+double Cloud::score(const SortAction& sa, const GeneOrder& go){
        return 1;
 }
-string Cloud::name(){
+const char* Cloud::name(){
        return "Cloud";
 }
 
-double FatX::score(const SortAction& sa){
+double FatX::score(const SortAction& sa, const GeneOrder& go){
        return 1;
 }
-string FatX::name(){
+const char* FatX::name(){
        return "FatX";
 }
 
index 6a61506ffe38efb0ea87778fc392b47826130220..8d7f9e8a7a7980ffe10634dcc7eb732de43ae2de 100644 (file)
@@ -21,9 +21,8 @@
 #ifndef __MODELS_H__
 #define __MODELS_H__
 
-#include <string>
-
 class SortAction;
+class GeneOrder;
 
 namespace Models {
 
@@ -31,38 +30,38 @@ class ModelImpl {
        public:
                virtual ~ModelImpl();
 
-               virtual double score(const SortAction& sa);
+               virtual double score(const SortAction& sa, const GeneOrder& go);
 
-               virtual std::string name();
+               virtual const char* name();
 };
 
 
 class X : public ModelImpl {
        public:
-               double score(const SortAction& sa);
+               double score(const SortAction& sa, const GeneOrder& go);
 
-               std::string name();
+               const char* name();
 };
 
 class Zipper : public ModelImpl {
        public:
-               double score(const SortAction& sa);
+               double score(const SortAction& sa, const GeneOrder& go);
 
-               std::string name();
+               const char* name();
 };
 
 class Cloud : public ModelImpl {
        public:
-               double score(const SortAction& sa);
+               double score(const SortAction& sa, const GeneOrder& go);
 
-               std::string name();
+               const char* name();
 };
 
 class FatX : public ModelImpl {
        public:
-               double score(const SortAction& sa);
+               double score(const SortAction& sa, const GeneOrder& go);
 
-               std::string name();
+               const char* name();
 };
 
 }
index c56d0ee42a304bdf26db992f36d4c61a5f374f7a..faec98a0c2e94681dcba096714d7f4c2e47759d6 100644 (file)
@@ -101,6 +101,13 @@ class SortAction{
                std::string toString() const{
                        return _action->toString();
                }
+
+               /**
+                * Gives access to the implementation
+                */
+               const SortActionImpl& impl(){
+                       return *_action;
+               }
        private:
                ActionPointer _action;
 
index 96c3587eae0e15dc5570d7bcf8b18c1adffd8094..7a0cedd889e98c8ffe77663e3cecc89d58e6bd2e 100644 (file)
@@ -63,19 +63,19 @@ protected:
 
                GeneOrder axis(_1axis.begin(),_1axis.end());
                priority_queue<modelpair> pq = mi.identify(axis);
-               CPPUNIT_ASSERT_EQUAL(string("X"),pq.top().second.name());
+               CPPUNIT_ASSERT_EQUAL(string("X"),string(pq.top().second.name()));
 
                GeneOrder uniform(_uniform.begin(),_uniform.end());
                pq = mi.identify(uniform);
-               CPPUNIT_ASSERT_EQUAL(string("Standard"),pq.top().second.name());
+               CPPUNIT_ASSERT_EQUAL(string("Standard"),string(pq.top().second.name()));
 
                GeneOrder zipper(_zipper.begin(),_zipper.end());
                pq = mi.identify(zipper);
-               CPPUNIT_ASSERT_EQUAL(string("Zipper"),pq.top().second.name());
+               CPPUNIT_ASSERT_EQUAL(string("Zipper"),string(pq.top().second.name()));
 
                GeneOrder transpos(_transpos.begin(),_transpos.end());
                pq = mi.identify(transpos);
-               CPPUNIT_ASSERT_EQUAL(string("Cloud"),pq.top().second.name());
+               CPPUNIT_ASSERT_EQUAL(string("Cloud"),string(pq.top().second.name()));
        }
 };