Re: Binding c++ gui libraries to haskell.

David Sankel <[email protected]>
Newsgroups gmane.comp.lang.haskell.gui
Message-ID <[email protected]>
--- Nick Name <[email protected]> wrote:
> However, I am not sure I
> got the point: to wrap a C++ library, does one need
> to make a "CCALL"
> wrapper first? I guess that could be automatically
> generated. Have you
> already got ideas on how to deal with class methods
> and inheritance? If
> it's a silly question, I apologize.

Not a silly question at all.  The ffi specification
(http://www.cse.unsw.edu.au/~chak/haskell/ffi/ffi.pdf)
does allow for a more direct connection to C++ using
cplusplus instead of ccall.  However, this is not
standardized or implemented yet.

  So the best we can do right now is use ccall
wrappers for C++ code.  For classes and their
respective member functions, we may use ForeignPtr and
wrap the c++ call like this,

Foo_memFun_bar( Foo * someFoo, int i )
{
  someFoo->bar( i );
}

and it would clearly work for inheritance.

It'd be nice to allow the pointer conventions used in
boost (www.boost.org) which would give us memory
management for the c++ side of things via shared_ptr. 
I'm not sure how much can be done on this side of
things.  Perhaps we can use boost::bind somehow as
well.

Anyway, good luck.  Please post, if you can, anything
you get working since I haven't seen anyone using this
stuff yet.

David J. Sankel
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.