freenode/#clasp - IRC Chatlog
Search
18:47:52
eno
I was wondering if clasp can be used just to create c++ bindings, I'm trying to test clasp out on a low memory machine and the compile doesn't finish
18:48:30
drmeister
Could you elaborate on "just to create C++ bindings". It can be used to create C++ bindings for itself.
18:50:52
drmeister
For it's own implementation of Common Lisp. Not for other Common Lisp's - that's a harder problem.
18:54:00
drmeister
I should have guessed. It's a large C++ project. It's not designed for small memory.
18:54:50
drmeister
"Any" is a lot of ground to cover. I exposed the llvm library, the clang ast library and a couple others.
18:56:35
eno
I wanted to make a better swig, when I saw clasp it looked like you already succeeded, can I use some of the tools from clasp to do this
18:57:50
drmeister
A better swig could be achieved. What clasp has is the clang AST matcher and AST library. This allows you to read and introspect C++ code at the AST level.
19:00:49
drmeister
Yes, that's available when running clasp - but the bindings would be a product that don't need any of that.
19:03:46
eno
LibClang is a stable high level C interface to clang. When in doubt LibClang is probably the interface you want to use. Consider the other interfaces only when you have a good reason not to use LibClang.
19:04:30
eno
I just know its a lot of work to automatically generate bindings, I dont want to reinvent the wheel
19:05:17
drmeister
And it's in Common Lisp - which is the best language to be mucking around with AST's
19:07:04
drmeister
Not much. It's a 1:1 match of the AST and AST Matcher facility exposed in Common Lisp - and i have a static analyzer that I wrote that grovels every pointer in every C++ class that Clasp manages with its garbage collector
19:07:41
drmeister
https://github.com/clasp-developers/clasp/blob/dev/src/lisp/modules/clasp-analyzer/clasp-analyzer.lisp#L1
19:08:38
drmeister
It uses matchers that look like this: https://github.com/clasp-developers/clasp/blob/dev/src/lisp/modules/clasp-analyzer/clasp-analyzer.lisp#L1310