// Common, group Miscelaneous
// Copyright Alexander Liss


#include "shape2.h"
#include "datacoder.h"


	// VibroData

int pack(CommBuffer& d,const VibroData& z)
{
	int g=0;
	DataCoder coder;
	coder.use(d);

			g=coder.put(z.vigor);
	if(!g)	g=coder.put(z.period);
	if(!g)	g=coder.put(z.phase);

	return g;
}

int unpack(VibroData& z,const CommBuffer& s,ReadControl& c)
{
	int g=0;
	DataCoder coder;
	coder.use(s,c);

			g=coder.get(z.vigor);
	if(!g)	g=coder.get(z.period);
	if(!g)	g=coder.get(z.phase);

	return g;
}


	// SwingData

int pack(CommBuffer& d,const SwingData& z)
{
	int g=0;
	DataCoder coder;
	coder.use(d);

			g=coder.put(z.direction);
	if(!g)	g=coder.put(z.range);
	if(!g)	g=coder.put(z.segment);
	if(!g)	g=coder.put(z.first_share);
	if(!g)	g=coder.put(z.last_share);

	return g;
}

int unpack(SwingData& z,const CommBuffer& s,ReadControl& c)
{
	int g=0;
	DataCoder coder;
	coder.use(s,c);

			g=coder.get(z.direction);
	if(!g)	g=coder.get(z.range);
	if(!g)	g=coder.get(z.segment);
	if(!g)	g=coder.get(z.first_share);
	if(!g)	g=coder.get(z.last_share);

	return g;
}


	// Vibro

int pack(CommBuffer& d,const Vibro& z)
{
	int g=0;
	DataCoder coder;
	coder.use(d);

			g=coder.put(z.amplitude);
	if(!g)	g=coder.put(z.frequency);
	if(!g)	g=coder.put(z.phase);

	return g;
}

int unpack(Vibro& z,const CommBuffer& s,ReadControl& c)
{
	int g=0;
	DataCoder coder;
	coder.use(s,c);

			g=coder.get(z.amplitude);
	if(!g)	g=coder.get(z.frequency);
	if(!g)	g=coder.get(z.phase);

	return g;
}


int pack(CommBuffer& d,const Swing& z)
{
	int g=0;
	DataCoder coder;
	coder.use(d);

			g=coder.put(z.direction);
	if(!g)	g=coder.put(z.h);
	if(!g)	g=coder.put(z.t);
	if(!g)	g=coder.put(z.t0);
	if(!g)	g=coder.put(z.t1);
	if(!g)	g=coder.put(z.a0);
	if(!g)	g=coder.put(z.a1);
	if(!g)	g=coder.put(z.b);

	return g;
}

int unpack(Swing& z,const CommBuffer& s,ReadControl& c)
{
	int g=0;
	DataCoder coder;
	coder.use(s,c);

			g=coder.get(z.direction);
	if(!g)	g=coder.get(z.h);
	if(!g)	g=coder.get(z.t);
	if(!g)	g=coder.get(z.t0);
	if(!g)	g=coder.get(z.t1);
	if(!g)	g=coder.get(z.a0);
	if(!g)	g=coder.get(z.a1);
	if(!g)	g=coder.get(z.b);

	return g;
}