/* BufferRetive.h */
#ifndef BUFFERRETIVE_H
#define BUFFERRETIVE_H
#include<iostream>
#include <sys/types.h>
#include <db_cxx.h>
class BufferRetive
{
public:
	inline void setValueOne(int _valueOne){ valueOne_ = _valueOne;}
	inline int& getValueOne(){ return (valueOne_);}
	void clear()
	{
		valueOne_ = 0;
	}
	BufferRetive()
	{
		clear();
	}
	BufferRetive( void *buffer )
	{
		char *buf = (char*)buffer;
		valueOne_ = *((int*)buf);
		bufLen_ += sizeof(int);
		
	}
   
	char *getBuffer()
	{
		memset( dataBuf_ , 0, 500);
		bufLen_ = 0;
		int dataLen = 0;
		
		dataLen = sizeof(int);
		memcpy( dataBuf_, &valueOne_, dataLen);
		bufLen_ += dataLen;

		return (dataBuf_);

	}

	inline size_t getBufferSize(){ return (bufLen_);}
     
	void show()
	{
		std::cout<<"Value One"<< valueOne_ <<std::endl;
	}

	
private:
	
	void packString( char *buffer, std::string &theString) 
	{
		size_t string_size = theString.size() + 1;
		memcpy(buffer+bufLen_, theString.c_str(), string_size);
		bufLen_ += string_size;
	}

   int valueOne_;
   char dataBuf_[500];
   size_t bufLen_;
};

#define MAXSIZE 20

typedef struct  vendor
{
	char name[MAXSIZE];
}VENDOR;

// class
class Db;
class Dbt;


int get_item_name(Db *dbp, const Dbt *pkey, const Dbt  *pData, Dbt *skey )
{
	unsigned __int32 offset = sizeof(double)+sizeof(long);
	char *itemname = (char *)pData->get_data() + offset;

    (void)pkey;

	if( offset > pData->get_size() )
	{
		dbp->errx("get item name :buffer size do not match!");
		return (-1);
	}

	skey->set_data(itemname);
	skey->set_size(( unsigned __int32 )strlen( itemname ) +1 );
	return (0);
}
#endif