00001
00002
00003
00005 #ifndef _COMPARE_H
00006 #define _COMPARE_H
00007
00008 #include "AnnotationScore.h"
00009
00018 class Compare {
00019 public:
00020 virtual bool compare(const AnnotationScore&,const AnnotationScore&) const = 0;
00021 };
00022
00023 class LtCompare : public Compare {
00024 public:
00025 static const LtCompare* getInstance() {
00026 if(!_instance)
00027 _instance = new LtCompare();
00028 return _instance;
00029 }
00030 bool compare(const AnnotationScore& as1, const AnnotationScore& as2) const {
00031 if(as1.isValid() && as2.isValid())
00032 return as1<=as2;
00033 return as1.isValid();
00034 }
00035 private:
00036 static LtCompare* _instance;
00037 };
00038
00039 class GtCompare : public Compare {
00040 public:
00041 static const GtCompare* getInstance() {
00042 if(!_instance)
00043 _instance = new GtCompare();
00044 return _instance;
00045 }
00046 bool compare(const AnnotationScore& as1, const AnnotationScore& as2) const {
00047 if(as1.isValid() && as2.isValid())
00048 return as1>=as2;
00049 else
00050 return as1.isValid();
00051 }
00052 private:
00053 static GtCompare* _instance;
00054 };
00055
00056 #endif // _COMPARE_H