BTW: I don't know if I am on the right way( particular on how to handle the pointers), and any suggestions are welcomed:)
Best, Shuai On Sun, Apr 13, 2014 at 5:36 PM, Shuai Wang <[email protected]> wrote: > Hi Sean, > > Thank you for your reply. > So basically as I am writing some extensions for CIL(C Intermediate > Language), > I quickly wrote some code based on our original extension to do the > transform. > > Currently it can work on the example I give and automatically generate > add_interface function in C and foreign interface in Prolog. > > However, I should point out that when dealing with some "trivial" cases, > it is easy to do, > but when C pointers involved (such as pointers as arguments of C function > ), things could become quite difficult. > I post some questions > Q1<http://stackoverflow.com/questions/23038033/is-it-possible-to-get-these-memory-addresses-in-gnu-prolog> > > Q2<http://stackoverflow.com/questions/23046123/can-i-eliminate-the-usage-of-pointer-during-static-analysis-in-this-way> > > Q3<http://stackoverflow.com/questions/23034380/why-i-can-not-store-the-address-of-one-variable-in-prologc>on > stackoverflow about the pointer issues. > > Generally speaking, I think some C static analysis tools could be useful > for this topic, such as CIL <http://kerneis.github.io/cil/> or > Clang<http://clang-analyzer.llvm.org/> > . > > Best, > Shuai > > > > On Sun, Apr 13, 2014 at 4:23 PM, Sean Charles <[email protected]> wrote: > >> Shuai, >> >> I too wanted something like this a few months back as I was attempting to >> bind OpenGL with gprolog. Perhaps it might be easier to embed gprolog >> within the thing you are attempting to call instead, so for me, instead of >> creating an OpenGL binding I embedded gprolog within a C program that >> initialised the framework.. >> >> Maybe reading: >> http://www.swig.org/Doc3.0/SWIGDocumentation.html#Extending >> >> And be the first to do it..that would be useful indeed! >> >> My only idea would be to use the GNU compiler options to output the parse >> tree as an XML file and then use XSLT to do something clever like >> generating the interface definitions... I have heard that the gnu output is >> hard to deal with though.. >> >> All thebest, >> Sean Charles >> >> >> On 11 Apr 2014, at 16:14, Shuai Wang <[email protected]> wrote: >> >> So basically I am using Prolog to call a large number of C functions >> using GNU-Prolog. >> >> Here is an example: >> >> int add(int a, int b) >> { >> int res = a + b; >> >> return res; >> } >> >> If I want to call this function from Prolog code, I need to create this >> interface: >> >> #include <gprolog.h> >> >> PlBool add_interface(int a, int b, int* r) >> { >> *r = add(a, b); >> } >> >> And In the Prolog code, I need add this : >> >> :- foreign(add(+integer, +integer, -integer)). >> >> So I am dealing with a large number of C functions, and manually create >> these interface one by one would be quite time consuming... >> >> Of course I can write an ad-hoc tool to do this creation(Using CIL >> probably..), but I just don't want to reinvent the wheel. >> >> So my question is : >> >> Is there any tool that can automatically generate Prolog callable >> interface from C functions? >> >> _______________________________________________ >> Users-prolog mailing list >> [email protected] >> https://lists.gnu.org/mailman/listinfo/users-prolog >> >> >> >
_______________________________________________ Users-prolog mailing list [email protected] https://lists.gnu.org/mailman/listinfo/users-prolog
