Main Page | Class Hierarchy | Class List | File List | Class Members

Compare.h

00001 
00002 // Copyright (c) 2003, The Institute for Genomic Research (TIGR), Rockville,
00003 // Maryland, U.S.A.  All rights reserved.
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