// +++++++++++++++++++++++++++++++++++++++++++++++++ //
// C++ interface discription of a remote library   											//
// +++++++++++++++++++++++++++++++++++++++++++++++++ //

#ifndef _NUMTHEORY_RI_
#define _NUMTHEORY_RI_

#include <ctl.h>

#define CTL_Library numTheoryLib
#include CTL_LibBegin

//! sorterRI is just a sort class 
#	define CTL_ClassTmpl sorterRI, (S,T), 2
#	include CTL_ClassBegin	

//! 	void sort() sorts  v 	 //
#		define CTL_Method1 	void, sort_field, (array<S> /*v*/) const, 1
//!		testing overloads //
#		define CTL_Method2 	void, sort, () const, 0
#		define CTL_Method3	void, sort, (int4) const, 1
#		define CTL_Method9	void, sort, (const int4), 1
#		define CTL_Method5	int4, sort, (), 0

#	include CTL_ClassEnd	


//! numTheoryRI is just a test class 
#	define CTL_Class numTheoryRI
#	include CTL_ClassBegin	

#		define CTL_Constructor1 (const array<int4>, const int4), 2

#		define CTL_StaticMethod1 void, ssss, (uint4), 1
#		define CTL_StaticMethod2 void, sstt, (const array<int4> ), 1
//! 		prim(uint4 n) computes the prims up to n 	 //
#		define CTL_Method1 	array<uint4>, prim, (const uint4) const, 1

//! 		ggT(uint8 a, uint8 b, char &n) computes the ggT of a and b, n is set to the number of iterations	 //
#		define CTL_Method2 	uint8, ggT, (const uint8 /*a*/,const  uint8 /*b*/, char /*n*/) const, 3

//! 		setSorter is just a test	 //
#		define CTL_Method3 	int4, setSorter, (  (const sorterRI, (real8, void), 2) )  const, 1

#		define CTL_Method4 ctl::status, retryTest, (real8 ) const , 1

#	include CTL_ClassEnd


//#	define CTL_FunctionTmpl1 void, (h, (S,T), 2), (const S ,T), 2, (string, any), 2
//#	define CTL_FunctionTmpl1 void, (h, (S,T), 2), (const S ,T), 2, CTL_Empty
//#	define CTL_FunctionTmpl1 void, h, (const S ,T), 2, (S,T), 2
#	define CTL_Function2 int4, f, (const real8), 1
#	define CTL_Function3 int4, g, (real4), 1
#	define CTL_Function3Throws (real8), 1
#	define CTL_Function4 array<real4>, gc, (const array<int4>), 1
#	define CTL_Function5 bool, polyeder, (const bool, const array<int4>, array<real8>, array<int4>), 4

#include CTL_LibEnd

#endif
