On Mon, 2007-07-16 at 16:40 -0700, Raoul Duke wrote:
> hi,
>
> I am a cat of little brain, and while I sorta am starting to grok what
> is going on with getting Felix to talk to C++, I'm still a little
> clueless and scared (it has been a while since I've done C++ which
> doesn't help). Might anybody happen to have a few simple examples I
> could look at, besides what is in the docs (or perhaps there are
> examples in the docs I've overlooked)? In particular, as an example,
> how would one interface with Foo below, to be able to "new" up
> instances, especially heap-based ones not just stack ones, and call
> the getId() routine? Many thanks for any pointers.
First make a binding like:
///////////// foobind.flx ///////////////////////
#import <flx.flxh>
header foo_h = '#include "Foo.h"';
type foo = "Foo*" requires foo_h, package "foo";
gen _ctor_foo: int -> foo = "new Foo($1)";
proc del: foo = "delete $1;";
fun getID: foo -> int = $1.getId()";
/////////////////////////////////////
With test code:
/////// foobar.flx /////////////////
#import <flx.flxh>
include "foobind";
proc flx_main()
{
var hitch = foo(42);
println$ getId foo;
}
//////////////////////////////////////
and put this config for Unix:
//// config/foo.fpc /////////////////
provides_dlib: -lfoo_dynamic
provides_slib: -lfoo_static
//////////////////////////////////////
Now you need to remove (or rename) the 'main'
function in Foo.cpp, then compile something like
(RTFM here .. ):
g++ -fPIC -shared -o rtl/foo_dynamic.so foo.cpp
g++ -o rtl/foo_static.o foo.cpp
ranlib -o rtl/foo_static.a rtl/foo_static.o
Now you can run the test:
flx foobar # dynamic
flx --static foobar # static
BTW: I didn't try this :)
> <!--Foo.h-->
> class Foo
> {
> public:
> Foo(int id);
> ~Foo();
> int getId();
>
> private:
> int _id;
> };
>
> <!--Foo.cpp-->
> #include <stdio.h>
> #include <stdlib.h>
> #include "Foo.h"
>
> int main()
> {
> Foo *foo = new Foo(42);
> printf( "%d\n", foo->getId() );
> }
>
> Foo::Foo(int id) :
> _id(id)
> { }
>
> Foo::~Foo()
> { }
>
> int Foo::getId()
> {
> return(_id);
> }
>
> -------------------------------------------------------------------------
> This SF.net email is sponsored by DB2 Express
> Download DB2 Express C - the FREE version of DB2 express and take
> control of your XML. No limits. Just data. Click to get it now.
> http://sourceforge.net/powerbar/db2/
> _______________________________________________
> Felix-language mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/felix-language
--
John Skaller <skaller at users dot sf dot net>
Felix, successor to C++: http://felix.sf.net
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Felix-language mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/felix-language