// +++++++++++++++++++++++++++++++++++++++++++++++++ //
// C++ interface discription of a remote library     //
// +++++++++++++++++++++++++++++++++++++++++++++++++ //

#ifndef _EXEC_CI_
#define _EXEC_CI_

#include <ctl.h>

struct ctl_B
{
	int a,b;
	virtual CTL_Type(ctl_B, tupel, (a,b), 2);
	 ctl_B(): a(4), b(6)
	{ printf("ctl_B: this=%p\n",this); }
	virtual ~ctl_B()
	{ printf("~ctl_B: this=%p\n",this); }
};

struct ctl_D1: public ctl_B
{
	float x,y;
	CTL_Type(ctl_D1, tupel, (a,b,x,y), 4);
	 ctl_D1(): ctl_B(),x(8),y(7) {}
};

struct ctl_D2: public ctl_B
{
	double x,y;
	CTL_Type(ctl_D2, tupel, (a,b,x,y), 4);
	 ctl_D2(): ctl_B(),x(8),y(7) {}
};

#define CTL_Library rex
#include CTL_LibBegin

#	define CTL_Function1 bool, syscall, (const cstring<char> /*cmd*/), 1
#	define CTL_Function2 reference<ctl_B>, polymorph, (reference<ctl_B> , const reference<ctl_B>), 2
#	define CTL_Function3 array<real8>, getAndReturn, (const array<real8> ), 1

#include CTL_LibEnd


#endif

// vim: ft=cpp
