[Ecls-list] Binding C/C++ Functions From Calling C/C++ Code
Nikhilesh S
s.nikhilesh at gmail.com
Thu Feb 19 05:58:56 UTC 2009
Hey! I'm new to using mailing lists, so I'm sorry if I'm doing something
wrong.
I wanted to ask whether there's any function in the ECL C library to
bind a C function from a program to a Lisp function. For example, I have
the following simple ECL interpretter:-
#include <iostream>
#include <string.h>
#include <ecl/ecl.h>
using namespace std;
int main(int argc, char **argv)
{
cl_boot(argc, argv);
char input[1024];
while (true)
{
cout << "> ";
cin.getline(input, 1024);
if (strcmp(input,"quit") == 0)
break;
cl_pprint(1, cl_safe_eval(c_string_to_object(input), Cnil, OBJNULL));
cout << "\n\n";
}
cl_shutdown();
return 0;
}
What I'd like to do is something like this:-
int add(int a, int b) { return a + b; }
...
cl_bind(&add, "c-add", /*min params*/ 1, /*max params*/ 1);
And then be able to 'eval' this Lisp code:-
"(c-add 2 3)"
Which should give 5.
Of course there may be more parameters to 'cl_bind' I may not thought
of.
Thanks,
nikki
More information about the ecl-devel
mailing list