// Common, group Encoding
// Copyright Alexander Liss
#include "datacoder.h"
#include "datacodervar.h"
DataCoder::~DataCoder(){delete p;}
int DataCoder::use(CommBuffer& z)
{
if(p)
{
delete p;
p=0;
}
p=DataCoderVariant::new_object(z.encoding);
if(p)
return p->use(z);
return 1;}
int DataCoder::use(const CommBuffer& z,ReadControl& c)
{
if(p)
{
delete p;
p=0;
}
p=DataCoderVariant::new_object(z.encoding);
if(p)
return p->use(z,c);
return 1;
}
// an array of bytes
int DataCoder::put(const unsigned char * data,int size){if(p)return p->put(data,size); return 1;}
int DataCoder::get(unsigned char * data,int size){if(p)return p->get(data,size); return 1;}
// as an array of bytes
int DataCoder::put(const char * data,int size){if(p)return p->put(data,size); return 1;}
int DataCoder::get(char * data,int size){if(p)return p->get(data,size); return 1;}
int DataCoder::put(unsigned int data){if(p)return p->put(data); return 1;}
int DataCoder::get(unsigned int& data){if(p)return p->get(data); return 1;}
int DataCoder::put(int data){if(p)return p->put(data); return 1;}
int DataCoder::get(int& data){if(p)return p->get(data); return 1;}
int DataCoder::put(unsigned long data){if(p)return p->put(data); return 1;}
int DataCoder::get(unsigned long& data){if(p)return p->get(data); return 1;}
int DataCoder::put(long data){if(p)return p->put(data); return 1;}
int DataCoder::get(long& data){if(p)return p->get(data); return 1;}
int DataCoder::put(unsigned short data){if(p)return p->put(data); return 1;}
int DataCoder::get(unsigned short& data){if(p)return p->get(data); return 1;}
int DataCoder::put(short data){if(p)return p->put(data); return 1;}
int DataCoder::get(short& data){if(p)return p->get(data); return 1;}
int DataCoder::put(unsigned char data){if(p)return p->put(data); return 1;}
int DataCoder::get(unsigned char& data){if(p)return p->get(data); return 1;}
int DataCoder::put(char data){if(p)return p->put(data); return 1;}
int DataCoder::get(char& data){if(p)return p->get(data); return 1;}
int DataCoder::put(float data){if(p)return p->put(data); return 1;}
int DataCoder::get(float& data){if(p)return p->get(data); return 1;}
int DataCoder::put(double data){if(p)return p->put(data); return 1;}
int DataCoder::get(double& data){if(p)return p->get(data); return 1;}
int DataCoder::put(const DataHook& data){if(p)return p->put(data); return 1;}
int DataCoder::get(DataHook& data){if(p)return p->get(data); return 1;}
int DataCoder::put(const CommBuffer& d)
{
int g=0;
g=put(d.data_size);
if(!g) g=put(d.data + d.write_offset,d.data_size);
return g;
}
int DataCoder::get(CommBuffer& d)
{
int g=0,sz=0;
g=get(sz);
if(!g) g=d.reallocate(d.write_offset+d.data_size+sz);
if(!g) g=get(d.data + d.write_offset + d.data_size, sz);
if(!g) d.data_size+=sz;
return g;
}
// basic types
int pack(CommBuffer& d,unsigned int t)
{
DataCoder z;
z.use(d);
return z.put(t);
}
int unpack(unsigned int& t,const CommBuffer& s,ReadControl& c)
{
DataCoder z;
z.use(s,c);
return z.get(t);
}
int pack(CommBuffer& d,int t)
{
DataCoder z;
z.use(d);
return z.put(t);
}
int unpack(int& t,const CommBuffer& s,ReadControl& c)
{
DataCoder z;
z.use(s,c);
return z.get(t);
}
int pack(CommBuffer& d,unsigned long t)
{
DataCoder z;
z.use(d);
return z.put(t);
}
int unpack(unsigned long& t,const CommBuffer& s,ReadControl& c)
{
DataCoder z;
z.use(s,c);
return z.get(t);
}
int pack(CommBuffer& d,long t)
{
DataCoder z;
z.use(d);
return z.put(t);
}
int unpack(long& t,const CommBuffer& s,ReadControl& c)
{
DataCoder z;
z.use(s,c);
return z.get(t);
}
int pack(CommBuffer& d,unsigned short t)
{
DataCoder z;
z.use(d);
return z.put(t);
}
int unpack(unsigned short& t,const CommBuffer& s,ReadControl& c)
{
DataCoder z;
z.use(s,c);
return z.get(t);
}
int pack(CommBuffer& d,short t)
{
DataCoder z;
z.use(d);
return z.put(t);
}
int unpack(short& t,const CommBuffer& s,ReadControl& c)
{
DataCoder z;
z.use(s,c);
return z.get(t);
}
int pack(CommBuffer& d,unsigned char t)
{
DataCoder z;
z.use(d);
return z.put(t);
}
int unpack(unsigned char& t,const CommBuffer& s,ReadControl& c)
{
DataCoder z;
z.use(s,c);
return z.get(t);
}
int pack(CommBuffer& d,char t)
{
DataCoder z;
z.use(d);
return z.put(t);
}
int unpack(char& t,const CommBuffer& s,ReadControl& c)
{
DataCoder z;
z.use(s,c);
return z.get(t);
}
int pack(CommBuffer& d,float t)
{
DataCoder z;
z.use(d);
return z.put(t);
}
int unpack(float& t,const CommBuffer& s,ReadControl& c)
{
DataCoder z;
z.use(s,c);
return z.get(t);
}
int pack(CommBuffer& d,double t)
{
DataCoder z;
z.use(d);
return z.put(t);
}
int unpack(double& t,const CommBuffer& s,ReadControl& c)
{
DataCoder z;
z.use(s,c);
return z.get(t);
}