00001 #ifndef PARAMETER_SET_MANAGER_CPP
00002 #define PARAMETER_SET_MANAGER_CPP
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 
00029 
00030 
00031 
00032 
00033 
00034 
00035 
00036 
00037 #include "ParameterSetManager.h"
00038 #include "Utilities.h"
00039 
00040 
00041 ParameterSetManager* ParameterSetManager::ptrInstance = NULL;
00042 
00043 void
00044 ParameterSetManager::setupParameters(int t1, int u1, int ws1, int t2,
00045                                      int u2, int ws2, int t3, int u3,
00046                                      int ws3) {
00047     
00048     ASSERT ( ptrInstance == NULL );
00049     ptrInstance = new ParameterSetManager;
00050 
00051     
00052     
00053     ptrInstance->addParameterSet(new ParameterSet(-1, 150, 50, 1, 45, 45,
00054                                                   t1, u1, ws1));
00055     ptrInstance->addParameterSet(new ParameterSet(150, 400, 75, 25, 75, 100,
00056                                                   t2, u2, ws2));
00057     ptrInstance->addParameterSet(new ParameterSet(400, -1, 100, 50, 105, 130,
00058                                                   t3, u3, ws3));
00059 }
00060 
00061 void
00062 ParameterSetManager::addParameterSet(ParameterSet* p) {
00063     parameterSets.push_back(p);
00064 }
00065 
00066 ParameterSetManager::ParameterSetManager() { 
00067     
00068 }
00069 
00070 ParameterSetManager::~ParameterSetManager() {
00071     for(size_t i = 0; (i < parameterSets.size()); i++) {
00072         delete parameterSets[i];
00073     }
00074     parameterSets.clear();
00075 }
00076 
00077 ParameterSet*
00078 ParameterSetManager:: getParameterSet(const int seq1Len, const int seq2Len) {
00079     int minLength = std::min(seq1Len, seq2Len);
00080     size_t setNum = 0;
00081     for (setNum = 0; setNum < parameterSets.size()-1; setNum++) {
00082         if (minLength <= parameterSets[setNum]->maxLength) {
00083             break;
00084         }
00085     }
00086     if (setNum == 0 && parameterSets.size() > 2 &&
00087         std::max(seq1Len, seq2Len) >
00088         parameterSets[parameterSets.size()-1]->minLength) {
00089         
00090         
00091         return NULL;
00092     } else {
00093         return parameterSets[setNum];
00094     }
00095 }
00096 
00097 int
00098 ParameterSetManager::getMaxFrameSize() {
00099     return parameterSets[parameterSets.size()-1]->frameSize;
00100 }
00101 
00102 #endif