/* 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