But the module I prepare is Wx::GCL and it will be pure Perl and Mattia was OK with it or is that something completely different?
thanks herbert Am 20.06.2011 01:51, schrieb Mark Dootson: > Hi, > > In short, you are right - your C++ class name needs to begin with wx. > > As wxPerl is a wrapper for the wxWidgets library, this isn't an issue - that > is the naming convention within the library and extensions. > > If you are extending a wxWidgets base class in C++, then you need to create a > working C++ class first (which will be named wxSomething) then you can wrap > that using the standard helpers provided by wxPerl. > > There are a couple of examples you could look at: > > Wx::Scintilla > Wx::TreeListCtrl > > These wrap fairly complex extensions so may not be that helpful for your > needs. Could you give more of a clue what you are trying to wrap or extend? > > Regards > > Mark > > > On 19/06/2011 23:07, Patcat88 wrote: >> I'm trying to make a WX XS module. It seems to me, WxPerl can't tolerate >> any wx derived class, that doesn't begin with "wx", I'm looking at the >> code of wxPli_cpp_class_2_perl . The perl stash winds up being "wrong". >> The module's package is "Foo" with Foo.xs and Foo.pm, the C++ class name >> is Foo. >> ========================= >> wxClassInfo *ci = object->GetClassInfo(); >> const wxChar* classname = ci->GetClassName(); >> ================================= >> returns a "Foo" string. >> Doing a perl ref() on $fooobj returns "Wx::Foo". >> All the perl methods from Foo dont work on $fooobj because $fooobj is a >> blessed Wx::Foo not a Foo. Doing "Foo::aMethod($fooobj);" fails at >> "if( !classname || sv_derived_from( scalar, CHAR_P classname ) ) " in >> wxPli_sv_2_object, classname is Foo in the debugger. >> wxPli_sv_2_object was called as >> "Foo * THIS = (Foo *) wxPli_sv_2_object( aTHX_ ST(0), "Foo" );" inside >> the post XS C code in "XS(XS_Foo_aMethod)". >> >> So, I guess all WxPerl extensions must have a package name in Wx:: >> right? And why is this? What about naming conflicts inside Wx:: or a >> class name collision between 2 classes with the same name in different >> translation units? > >