NAME
Devel::BindPP - bind c++ to perl
SYNOPSIS
// generate ppport.h & bindpp.h
perl -e
'use Devel::BindPP; Devel::BindPP::WriteFile()'
//// and
write
your c++ module
#include "bindpp.h"
XS(xs_new) {
pl::Ctx c;
char
*self
;
Newx(self, 3, char);
strcpy(self,
"ok"
);
pl::Pointer obj((void*)self,
"MyOwnExt"
);
c.ret(
&obj
);
}
XS(xs_get) {
pl::Ctx c;
pl::Pointer * p = c.arg(0)->as_pointer();
char
*self
= p->extract<char>();
c.ret(self);
}
XS(xs_destroy) {
pl::Ctx c;
pl::Pointer * p = c.arg(0)->as_pointer();
Safefree(p->extract<char>());
c.return_true();
}
extern
"C"
{
XS(bootstrap_Your__Package) {
pl::BootstrapCtx bc;
pl::Package pkg(
"MyOwnExt"
);
pkg.add_method(
"new"
, xs_new, __FILE__);
pkg.add_method(
"get"
, xs_get, __FILE__);
pkg.add_method(
"DESTROY"
, xs_destroy, __FILE__);
}
};
CAUTION
THIS MODULE IS ITS IN BETA QUALITY. API MAY CHANGE IN THE FUTURE.
DESCRIPTION
XS is too difficult for me :p XS is filled by too much C macros.
You can write perl extension by pure C++ with Devel::BindPP.
This module contains only one header file.You can include this file and write C++!
manual file generated by doxygen is here: http://tokuhirom.github.com/devel-bindpp/hierarchy.html
NOTE
bindpp.h
defines a lot of macros(provided by perl.h).In sometime, Macros break your code.
If you have a error.Please try the #include <bindpp.h> put last of your #include lines.
REPOSITORY
github.com:tokuhirom/devel-bindpp.git
AUTHOR
Tokuhiro Matsuno <tokuhirom ah! gmail.com>
THANKS TO
mattn++ # win32 port
SEE ALSO
LICENSE
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.