jigdo API

MkTemplate::PartialMatchQueue Class Reference

Queue of PartialMatch objects, always kept sorted by ascending nextEvent. More...

#include <partialmatch.hh>

List of all members.


Public Member Functions

 PartialMatchQueue ()
bool empty () const
bool full () const
PartialMatchfront () const
INLINE PartialMatchaddFront ()
 Add a new entry to the front of the queue.
INLINE PartialMatchlowestStartOffset () const
 Return pointer to element with the lowest startOff value, or null if queue empty.
INLINE uint64 nextEvent () const
 Return lowest nextEvent() of all queue entries, which is always the nextEvent() of the first queue entry.
INLINE PartialMatchfindStartOffset (uint64 off) const
 Return first matching entry with startOffset()==off, or null if none found.
INLINE PartialMatchfindLowestStartOffset () const
 Return entry in list with lowest startOffset() value.
void erase ()
 Remove all entries from list.
INLINE void eraseFront ()
 Remove first entry from list.
INLINE void eraseStartOffsetLess (uint64 off)
 Remove all entries whose startOffset is strictly less than off.
INLINE PartialMatchfindDropCandidate (unsigned *sectorLength, uint64 newStartOffset)
 If the queue is full, use some heuristics to find a PartialMatch in the queue which is "unlikely to lead to an actual match", or 0 if none exists.
void consistencyCheck () const

Friends

class MkTemplate::PartialMatch

Detailed Description

Queue of PartialMatch objects, always kept sorted by ascending nextEvent.

This may seem to make many operations inefficient, but this sort order is best for the central mktemplate loop.


Constructor & Destructor Documentation

MkTemplate::PartialMatchQueue::PartialMatchQueue (  )  [inline]

References erase().


Member Function Documentation

bool MkTemplate::PartialMatchQueue::empty (  )  const [inline]

bool MkTemplate::PartialMatchQueue::full (  )  const [inline]

PartialMatch* MkTemplate::PartialMatchQueue::front (  )  const [inline]

INLINE PartialMatch* MkTemplate::PartialMatchQueue::addFront (  ) 

Add a new entry to the front of the queue.

The queue must not be full. The new entry has all members set to 0, including its startOffset(). Use the setter methods to change this.

Returns:
new object at front()

INLINE PartialMatch* MkTemplate::PartialMatchQueue::lowestStartOffset (  )  const

Return pointer to element with the lowest startOff value, or null if queue empty.

INLINE uint64 MkTemplate::PartialMatchQueue::nextEvent (  )  const

Return lowest nextEvent() of all queue entries, which is always the nextEvent() of the first queue entry.

Queue must not be empty.

INLINE PartialMatch* MkTemplate::PartialMatchQueue::findStartOffset ( uint64  off  )  const

Return first matching entry with startOffset()==off, or null if none found.

INLINE PartialMatch* MkTemplate::PartialMatchQueue::findLowestStartOffset (  )  const

Return entry in list with lowest startOffset() value.

List must not be empty.

void MkTemplate::PartialMatchQueue::erase (  )  [inline]

Remove all entries from list.

References consistencyCheck(), and data.

Referenced by PartialMatchQueue().

INLINE void MkTemplate::PartialMatchQueue::eraseFront (  ) 

Remove first entry from list.

List must not be empty.

INLINE void MkTemplate::PartialMatchQueue::eraseStartOffsetLess ( uint64  off  ) 

Remove all entries whose startOffset is strictly less than off.

INLINE PartialMatch* MkTemplate::PartialMatchQueue::findDropCandidate ( unsigned *  sectorLength,
uint64  newStartOffset 
)

If the queue is full, use some heuristics to find a PartialMatch in the queue which is "unlikely to lead to an actual match", or 0 if none exists.

Parameters:
sectorLength assumed "sector size"
newStartOffset start offset of the new match which is to replace the object returned by this function. The heuristics favours offsets which are multiples of the assumed "sector size".

void MkTemplate::PartialMatchQueue::consistencyCheck (  )  const [inline]

Referenced by erase().


Friends And Related Function Documentation

friend class MkTemplate::PartialMatch [friend]


The documentation for this class was generated from the following file:

Generated on Tue Sep 23 14:27:43 2008 for jigdo by  doxygen 1.5.6