The DejaVU Framework -- hush 3.1

include: professional-program-20-RingBuffer-RingBuffer.h /cygdrive/d/www/media


- [up] [top] - index make include source logic grammar scripts html configure mx slides talks scenes reports projects
<body bgcolor="#FFFFFF" text="#000000">

include 
include 
include 

using std::string;
using std::vector;
using std::ostream;

//
// class RingBuffer
//
// Provides a simple debug buffer. The client specifies the number
// of entries in the constructor and adds messages with the addEntry()
// method. Once the number of entries exceeds the number allowed, new
// entries overwrite the oldest entries in the buffer.
//
// The buffer also provides the option to print entries as they
// are added to the buffer. The client can specify an output stream
// in the constructor, and can reset it with the setOutput() method.
// 
// Finally, the buffer supports streaming to an output stream.
//
<h4 align=right text=red> RingBuffer</h4><hr>
  class RingBuffer
{
 public:
  //
  // Constructs a ring buffer with space for numEntries.
  // Entries are written to *ostr as they are queued.
  //
  RingBuffer(int numEntries = kDefaultNumEntries, ostream* ostr = NULL);
  ~RingBuffer();

  //
  // Adds the string to the ring buffer, possibly overwriting the
  // oldest string in the buffer (if the buffer is full).
  //
  void addEntry(const string& entry);

  //
  // Streams the buffer entries, separated by newlines, to ostr.
  //
  friend ostream& operator<<(ostream& ostr, const RingBuffer& rb);

  //
  // Sets the output stream to which entries are streamed as they are added.
  // Returns the old output stream.
  //
  ostream* setOutput(ostream* newOstr);

 protected:
  vector mEntries;
  ostream* mOstr;
  
  int mNumEntries, mNext;
  bool mWrapped;

  static const int kDefaultNumEntries = 500;

 private:
  // Prevent assignment and pass-by-value
  RingBuffer(const RingBuffer& src);
  RingBuffer& operator=(const RingBuffer& rhs);
};
<hr>

<hr> <style type="text/css"> div.mainnavigate { margin: 20px 2px; /* background-color: #ffffff; */ border: 1px solid black; } </style> <div class=xnavigate> [] <black>readme</black> course(s) preface <black>I</black> 1 2 <black>II</black> 3 4 <black>III</black> 5 6 7 <black>IV</black> 8 9 10 <black>V</black> 11 12 afterthought(s) <black>appendix</black> reference(s) example(s) <black>resource(s)</black> _ </div> <hr>

(C) Æliens 20/2/2008

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author. </div> <script src="http://www.google-analytics.com/urchin.js" type="text/javascript"> </script> <script type="text/javascript"> _uacct = "UA-2780434-1"; urchinTracker(); </script> </body> </html> <hr> <hr> <table cellpadding=10> <tr> <td> <address> Hush Online Technology </address> hush@cs.vu.nl <br>10/19/08 </td><td> </td> <td></td><td></td><td></td><td></td><td></td><td></td><td></td> <td> </td> </tr> </table>