| <HTML> | |
| <!-- | |
| Copyright (c) Jeremy Siek 2000 | |
| Distributed under the Boost Software License, Version 1.0. | |
| (See accompanying file LICENSE_1_0.txt or copy at | |
| http://www.boost.org/LICENSE_1_0.txt) | |
| --> | |
| <Head> | |
| <Title>Buffer</Title> | |
| </HEAD> | |
| <BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b" | |
| ALINK="#ff0000"> | |
| <IMG SRC="../../../boost.png" | |
| ALT="C++ Boost" width="277" height="86"> | |
| <BR Clear> | |
| <h3>Buffer Concept</h3> | |
| A Buffer is something in which items can be put and removed. | |
| The Buffer <i>concept</i> has very few requirements. It does | |
| not require any particular ordering of how the items are stored or in | |
| what order they will appear when removed, however, there is typically | |
| some sort of ordering policy. | |
| <h3>Notation</h3> | |
| <table> | |
| <tr> <td> <tt>B</tt> </td> <td> is a type that models Buffer. </td></tr> | |
| <tr> <td> <tt>T</tt> </td> <td> is the value type of <tt>B</tt>. </td></tr> | |
| <tr> <td> <tt>t</tt> </td> <td> is an object of type <tt>T</tt>. </td></tr> | |
| </table> | |
| <h3>Members</h3> | |
| For a type to model the Buffer concept it must have the following members. | |
| <p> | |
| <table border="1"> | |
| <tr> <td><b>Member</b></td> <td><b>Description</b></td> </tr> | |
| <tr> <td> <tt>value_type</tt> </td> | |
| <td> The type of object stored in the Buffer. The value type | |
| must be <A href="http://www.sgi.com/tech/stl/Assignable.html">Assignable</a>.</td> | |
| </tr> | |
| <tr> <td> <tt>size_type</tt> </td> | |
| <td> An unsigned integral type for representing the number of | |
| objects in the Buffer.</td> | |
| </tr> | |
| <tr> <td> <tt>void push(const T& t)</tt> </td> | |
| <td> Inserts <tt>t</tt> into the Buffer. <tt>size()</tt> will be | |
| incremented by one.</td> | |
| </tr> | |
| <tr> <td> <tt>void pop()</tt> </td> | |
| <td> Removes an object from the Buffer. <tt>size()</tt> will be | |
| decremented by one. Precondition: <tt>empty()</tt> | |
| is <tt>false</tt>. </td> | |
| </tr> | |
| <tr> <td> <tt>T& top()</tt> </td> | |
| <td> Returns a mutable reference to some object in the Buffer. | |
| Precondition: <tt>empty()</tt> is <tt>false</tt>.</td> | |
| </tr> | |
| <tr> <td> <tt>const T& top() const</tt> </td> | |
| <td> Returns a const reference to some object in the Buffer. | |
| Precondition: <tt>empty()</tt> is <tt>false</tt>.</td> | |
| </tr> | |
| <tr> <td> <tt>size_type size() const</tt> </td> | |
| <td> Returns the number of objects in the Buffer. | |
| Invariant: <tt>size() >= 0</tt>. </td> | |
| </tr> | |
| <tr> <td> <tt>bool empty() const</tt> </td> | |
| <td> Equivalent to <tt>b.size() == 0</tt>.</td> | |
| </tr> | |
| </table> | |
| <h3>Complexity Guarantees</h3> | |
| <UL> | |
| <LI> <tt>push()</tt>, <tt>pop()</tt>, and <tt>size()</tt> must be at | |
| most linear time complexity in the size of the Generalized Queue. | |
| <LI> <tt>top()</tt> and <tt>empty()</tt> must be amortized constant time. | |
| </UL> | |
| <h3>Models</h3> | |
| <UL> | |
| <LI><a href="http://www.sgi.com/tech/stl/stack.html"><tt>std::stack</tt></a> | |
| <LI><a href="../../../boost/pending/mutable_queue.hpp"><tt>boost::mutable_queue</tt></a> | |
| </UL> | |
| <p> | |
| <br> | |
| <HR> | |
| <TABLE> | |
| <TR valign=top> | |
| <TD nowrap>Copyright © 2000-2001</TD><TD> | |
| <A HREF="http://www.boost.org/people/jeremy_siek.htm">Jeremy Siek</A>, Indiana University and C++ Library & Compiler Group/SGI (<A HREF="mailto:jsiek@engr.sgi.com">jsiek@engr.sgi.com</A>) | |
| </TD></TR></TABLE> | |
| </BODY> | |
| </HTML> | |