Skip to content
Snippets Groups Projects
Commit 31a74d9e authored by John Romein's avatar John Romein
Browse files

bug 225:

Added (public) Ranges type to SparseSet<T>
parent ae157c06
No related branches found
No related tags found
No related merge requests found
...@@ -34,9 +34,7 @@ Overlay::Overlay(const Heap &heap) ...@@ -34,9 +34,7 @@ Overlay::Overlay(const Heap &heap)
void *Overlay::allocate(size_t size, int alignment) void *Overlay::allocate(size_t size, int alignment)
{ {
const std::vector<SparseSet<void *>::range> &ranges = freeList.getRanges(); for (SparseSet<void *>::const_iterator it = freeList.getRanges().begin(); it != freeList.getRanges().end(); it ++) {
for (SparseSet<void *>::const_iterator it = ranges.begin(); it != ranges.end(); it ++) {
void *begin = (void *) (((size_t) it->begin + alignment - 1) & ~(alignment - 1)); void *begin = (void *) (((size_t) it->begin + alignment - 1) & ~(alignment - 1));
if ((char *) it->end - (char *) begin >= (ptrdiff_t) size) { if ((char *) it->end - (char *) begin >= (ptrdiff_t) size) {
......
...@@ -51,9 +51,7 @@ double Correlator::computeCentroidAndValidSamples(const SparseSet<unsigned> &fla ...@@ -51,9 +51,7 @@ double Correlator::computeCentroidAndValidSamples(const SparseSet<unsigned> &fla
unsigned sq = itsNrSamplesPerIntegration * itsNrSamplesPerIntegration; unsigned sq = itsNrSamplesPerIntegration * itsNrSamplesPerIntegration;
unsigned nrSamples = itsNrSamplesPerIntegration; unsigned nrSamples = itsNrSamplesPerIntegration;
const std::vector<SparseSet<unsigned>::range> &ranges = flags.getRanges(); for (SparseSet<unsigned>::const_iterator it = flags.getRanges().begin(); it != flags.getRanges().end(); it ++) {
for (SparseSet<unsigned>::const_iterator it = ranges.begin(); it != ranges.end(); it ++) {
sq -= (it->end - it->begin) * (it->end + it->begin); sq -= (it->end - it->begin) * (it->end + it->begin);
nrSamples -= (it->end - it->begin); nrSamples -= (it->end - it->begin);
} }
......
...@@ -129,7 +129,7 @@ void PPF::computeFlags(const TransposedData *transposedData, FilteredData *filte ...@@ -129,7 +129,7 @@ void PPF::computeFlags(const TransposedData *transposedData, FilteredData *filte
#else #else
for (unsigned stat = 0; stat < itsNrStations; stat ++) { for (unsigned stat = 0; stat < itsNrStations; stat ++) {
filteredData->flags[stat].reset(); filteredData->flags[stat].reset();
const std::vector<SparseSet<unsigned>::range> &ranges = transposedData->flags[stat].getRanges(); const SparseSet<unsigned>::Ranges &ranges = transposedData->flags[stat].getRanges();
for (SparseSet<unsigned>::const_iterator it = ranges.begin(); it != ranges.end(); it ++) { for (SparseSet<unsigned>::const_iterator it = ranges.begin(); it != ranges.end(); it ++) {
unsigned begin = std::max(0, (signed) it->begin / NR_SUBBAND_CHANNELS - NR_TAPS + 1); unsigned begin = std::max(0, (signed) it->begin / NR_SUBBAND_CHANNELS - NR_TAPS + 1);
...@@ -277,7 +277,7 @@ void PPF::filter(double centerFrequency, const TransposedData *transposedData, F ...@@ -277,7 +277,7 @@ void PPF::filter(double centerFrequency, const TransposedData *transposedData, F
computePhaseShifts(phaseShifts, transposedData->delays[stat], baseFrequency); computePhaseShifts(phaseShifts, transposedData->delays[stat], baseFrequency);
} }
const std::vector<SparseSet<unsigned>::range> &ranges = filteredData->flags[stat].getRanges(); const SparseSet<unsigned>::Ranges &ranges = filteredData->flags[stat].getRanges();
SparseSet<unsigned>::const_iterator it = ranges.begin(); SparseSet<unsigned>::const_iterator it = ranges.begin();
for (unsigned time = 0; time < itsNrSamplesPerIntegration; time ++) { for (unsigned time = 0; time < itsNrSamplesPerIntegration; time ++) {
......
...@@ -147,9 +147,8 @@ void BeamletBuffer::readFlags(SparseSet<unsigned> &flags) ...@@ -147,9 +147,8 @@ void BeamletBuffer::readFlags(SparseSet<unsigned> &flags)
pthread_mutex_unlock(&itsValidDataMutex); pthread_mutex_unlock(&itsValidDataMutex);
flags.reset().include(0, static_cast<unsigned>(itsEnd - itsBegin)); flags.reset().include(0, static_cast<unsigned>(itsEnd - itsBegin));
const std::vector<SparseSet<TimeStamp>::range> &validRanges = validTimes.getRanges();
for (SparseSet<TimeStamp>::const_iterator it = validRanges.begin(); it != validRanges.end(); it ++) for (SparseSet<TimeStamp>::const_iterator it = validTimes.getRanges().begin(); it != validTimes.getRanges().end(); it ++)
flags.exclude(static_cast<unsigned>(it->begin - itsBegin), flags.exclude(static_cast<unsigned>(it->begin - itsBegin),
static_cast<unsigned>(it->end - itsBegin)); static_cast<unsigned>(it->end - itsBegin));
} }
......
...@@ -65,9 +65,7 @@ void *ION_Allocator::allocate(size_t nbytes, size_t alignment) ...@@ -65,9 +65,7 @@ void *ION_Allocator::allocate(size_t nbytes, size_t alignment)
#else #else
pthread_mutex_lock(&mutex); pthread_mutex_lock(&mutex);
const std::vector<SparseSet<char *>::range> &ranges = freeList.getRanges(); for (SparseSet<char *>::const_iterator it = ranges.getRanges().begin(); it != ranges.getRanges().end(); it ++) {
for (SparseSet<char *>::const_iterator it = ranges.begin(); it != ranges.end(); it ++) {
char *begin = (char *) (((size_t) it->begin + alignment - 1) & ~(alignment - 1)); char *begin = (char *) (((size_t) it->begin + alignment - 1) & ~(alignment - 1));
if (it->end - begin >= (ptrdiff_t) nbytes) { if (it->end - begin >= (ptrdiff_t) nbytes) {
......
...@@ -147,7 +147,7 @@ void WH_InputSection::preprocess() ...@@ -147,7 +147,7 @@ void WH_InputSection::preprocess()
void WH_InputSection::limitFlagsLength(SparseSet<unsigned> &flags) void WH_InputSection::limitFlagsLength(SparseSet<unsigned> &flags)
{ {
const std::vector<SparseSet<unsigned>::range> &ranges = flags.getRanges(); const SparseSet<unsigned>::Ranges &ranges = flags.getRanges();
if (ranges.size() > 16) if (ranges.size() > 16)
flags.include(ranges[15].begin, ranges[ranges.size() - 1].end); flags.include(ranges[15].begin, ranges[ranges.size() - 1].end);
......
...@@ -44,8 +44,9 @@ template <typename T> class SparseSet { ...@@ -44,8 +44,9 @@ template <typename T> class SparseSet {
T begin, end; T begin, end;
}; };
typedef typename std::vector<range>::iterator iterator; typedef typename std::vector<range> Ranges;
typedef typename std::vector<range>::const_iterator const_iterator; typedef typename Ranges::iterator iterator;
typedef typename Ranges::const_iterator const_iterator;
SparseSet<T> &include(T index); SparseSet<T> &include(T index);
SparseSet<T> &include(T first /* inclusive */, T last /* exclusive */); SparseSet<T> &include(T first /* inclusive */, T last /* exclusive */);
...@@ -64,7 +65,7 @@ template <typename T> class SparseSet { ...@@ -64,7 +65,7 @@ template <typename T> class SparseSet {
SparseSet<T> &operator -= (size_t count); SparseSet<T> &operator -= (size_t count);
SparseSet<T> subset(T first, T last) const; SparseSet<T> subset(T first, T last) const;
const std::vector<range> &getRanges() const; const Ranges &getRanges() const;
void write(BlobOStream &) const; void write(BlobOStream &) const;
void read(BlobIStream &); void read(BlobIStream &);
...@@ -73,7 +74,7 @@ template <typename T> class SparseSet { ...@@ -73,7 +74,7 @@ template <typename T> class SparseSet {
void unmarshall(const void *ptr); void unmarshall(const void *ptr);
private: private:
std::vector<range> ranges; Ranges ranges;
struct less { struct less {
bool operator() (const range &x, const range &y) bool operator() (const range &x, const range &y)
...@@ -125,7 +126,8 @@ template <typename T> inline SparseSet<T> SparseSet<T>::subset(T first, T last) ...@@ -125,7 +126,8 @@ template <typename T> inline SparseSet<T> SparseSet<T>::subset(T first, T last)
} }
template <typename T> inline const std::vector<typename SparseSet<T>::range> &SparseSet<T>::getRanges() const //template <typename T> inline const std::vector<typename SparseSet<T>::range> &SparseSet<T>::getRanges() const
template <typename T> inline const typename SparseSet<T>::Ranges &SparseSet<T>::getRanges() const
{ {
return ranges; return ranges;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment