PosList.cpp
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include "PosList.h"
00019 #include <stdexcept>
00020
00021 PosList::PosList()
00022 : myNumRefs(24),
00023 myNumPos(100)
00024 {
00025 initVars();
00026 }
00027
00028
00029 PosList::PosList(int numRefs, int numPositions)
00030 : myNumRefs(numRefs),
00031 myNumPos(numPositions)
00032 {
00033 initVars();
00034 }
00035
00036 PosList::~PosList()
00037 {
00038 myPosList.clear();
00039 }
00040
00041
00042 void PosList::addPosition(int refID, int refPosition)
00043 {
00044
00045 if((refID < 0) || (refPosition < 0))
00046 {
00047 return;
00048 }
00049
00050
00051
00052 if(myPosList.size() <= (unsigned int)refID)
00053 {
00054
00055
00056 myPosList.resize(refID+1, std::vector<bool>(myNumPos, false));
00057 myNumRefs = refID + 1;
00058 }
00059
00060
00061
00062 if((myPosList[refID]).size() <= (unsigned int)refPosition)
00063 {
00064
00065
00066 if(myNumPos <= refPosition)
00067 {
00068
00069
00070
00071 myNumPos = refPosition + 1;
00072 }
00073
00074 (myPosList[refID]).resize(myNumPos, false);
00075 }
00076
00077
00078 myPosList[refID][refPosition] = true;
00079 }
00080
00081 bool PosList::hasPosition(int refID, int refPosition)
00082 {
00083
00084 if((refID < 0) || (refPosition < 0))
00085 {
00086 return(false);
00087 }
00088 bool found = false;
00089 try
00090 {
00091 if((myPosList.at(refID)).at(refPosition))
00092 {
00093 found = true;
00094 }
00095 }
00096 catch (std::out_of_range& oor)
00097 {
00098
00099
00100 }
00101 return(found);
00102 }
00103
00104
00105 void PosList::initVars()
00106 {
00107 myPosList.clear();
00108 myPosList.resize(myNumRefs, std::vector<bool>(myNumPos, false));
00109 }