#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <mex.h>

#include <ci/add.ci>

extern "C"
{
void mexFunction (int nresults, mxArray **arrresults, int nargs,
		const mxArray **arrargs)
{
	//void (*sig)(int) = signal(SIGCHLD, SIG_IGN);
	
	int i = 0, j = 0;
	if (nargs > 0)
		i = int(mxGetScalar(arrargs[0]));
	if (nargs > 1)
		j = int(mxGetScalar(arrargs[1]));

	const char *loc = "/home/neocool/test/ctl-gcc3.3/examples1/add/linux-gcc/add.exe -l pipe";
	ctl::link lnk(loc);
	if(!lnk)
	{
    	std::cerr <<"Could not create link -> " << loc << "\n";
		return;
	}
	
	AddCI add(lnk);
    if(!add)
    {
    	std::cerr <<"Could not create addCI -> " << loc << "\n";
		return;
	}

	try
    {
    	int res = add.add(i, j);
        std::cerr << loc << " -> Add: " << i << " + " << j << " = " << res << "\n";
	}
    catch(ctl::exception &e)
    { 
		std::cerr << e <<"\n"; 
	}	

	//signal(SIGCHLD, sig);
}
}
