libStatGen Software
1
|
Store refID/position, but does not store values < 0. More...
#include <PosList.h>
Public Member Functions | |
PosList () | |
Constructor. | |
PosList (int numRefs, int numPositions) | |
Reserves space for numRefs reference ids and numPositions for each id. | |
virtual | ~PosList () |
Destructor. | |
void | addPosition (int refID, int refPosition) |
Add the specified reference id/position (negative values will not be added). | |
bool | hasPosition (int refID, int refPosition) |
Return whether or not this list contains the specified reference ID and position (negative values will automatically return false). | |
Protected Member Functions | |
PosList (const PosList &p) | |
void | initVars () |
Protected Attributes | |
std::vector< std::vector< bool > > | myPosList |
int | myNumRefs |
int | myNumPos |
void PosList::addPosition | ( | int | refID, |
int | refPosition | ||
) |
Add the specified reference id/position (negative values will not be added).
Definition at line 42 of file PosList.cpp.
{ // Check for negative numbers, if so, just return. if((refID < 0) || (refPosition < 0)) { return; } // If the position list is smaller or equal to refID, it cannot handle an index, // so increase the size. if(myPosList.size() <= (unsigned int)refID) { // The position list does not currently have space for this reference id, // so add it. myPosList.resize(refID+1, std::vector<bool>(myNumPos, false)); myNumRefs = refID + 1; } // The matrix is now sized for this reference id. // Check to see if this id holds this position. if((myPosList[refID]).size() <= (unsigned int)refPosition) { // The index for this position has not yet been created, // so increase the size for it. if(myNumPos <= refPosition) { // Our number of positions is smaller than // the current reference id, so reset // myNumPos for future use to be this position +1. myNumPos = refPosition + 1; } // Increase the size for this reference id to hold at least myNumPos. (myPosList[refID]).resize(myNumPos, false); } // It now holds this position, so set it to true. myPosList[refID][refPosition] = true; }
bool PosList::hasPosition | ( | int | refID, |
int | refPosition | ||
) |
Return whether or not this list contains the specified reference ID and position (negative values will automatically return false).
Definition at line 81 of file PosList.cpp.
Referenced by Pileup< PILEUP_TYPE, FUNC_CLASS >::processAlignmentRegion().
{ // Check for negative numbers, if so, just return false, not found. if((refID < 0) || (refPosition < 0)) { return(false); } bool found = false; try { if((myPosList.at(refID)).at(refPosition)) { found = true; } } catch (std::out_of_range& oor) { // Nothing to do here, if it was out of range, then // the position was not found (already set to false). } return(found); }