#include <db_cxx.h>
class DbMultipleRecnoDataBuilder 
{ 
public: 
    DbMultipleRecnoDataBuilder(Dbt &dbt);
    bool append(db_recno_t recno, void *dbuf, size_t dlen);
    bool reserve(db_recno_t recno, void *&ddest, size_t dlen);
};               
        This class builds a bulk buffer for use when the
        DB_MULTIPLE_KEY
        flag is specified to either the
        Db::put() or
	Db::del() methods with the recno
	or queue access methods, or for the key when the
        DB_MULTIPLE flag is used.  The buffer in the
	Dbt passed to the constructor is
	filled by calls to
	DbMultipleRecnoDataBuilder.append()
        or
	DbMultipleRecnoDataBuilder.reserve().
    
        The constructor takes a 
                The Dbt Handle
        
        that must be configured to contain a buffer managed by the application,
        with the ulen field set to the size of the buffer.
    
All instances of the bulk retrieval classes may be used only once, and to build the bulk buffer in the forward direction only.
Parameters are:
                dbt
            
                The dbt parameter is a 
                The Dbt Handle
         that must already be configured to contain a buffer managed by the application, with the ulen field set to the size of the buffer, which must be a multiple of 4.
            
	     The DbMultipleRecnoDataBuilder.append()
	     method copies a record number / data pair to the end of the buffer.
         
	     The DbMultipleRecnoDataBuilder.append()
	     method returns false if the record
	     number / data pair does not fit in the buffer and
	     true otherwise.
         
Parameters are:
                recno
            
The record number to append.
                dbuf
            
A pointer to the data item to be copied into the bulk buffer.
                dlen
            
The number of bytes of the data item to be copied.
	     The DbMultipleRecnoDataBuilder.reserve()
	     method reserves space for the next record number / data pair in
	     the bulk buffer.  The record number is appended, but unlike the
	     append(), the data is not copied into the
	     bulk buffer by reserve(): copying the
	     data is the responsibility of the application.
         
	     The DbMultipleRecnoDataBuilder.reserve()
	     method returns false if the record does
	     not fit in the buffer and true otherwise.
         
Parameters are:
                recno
            
The record number to append.
                ddest
            
Set to a pointer to the position in the bulk buffer reserved for the data item, if enough space is available.
                dlen
            
The number of bytes to reserve for the data item.