On Thursday, December 20, 2012, Cedric BAIL wrote: > Hello, > > On Thu, Dec 20, 2012 at 6:24 AM, Andreas Volz > <[email protected]<javascript:;>> > wrote: > > Times ago I wrote some Eflxx Evas Canvas wrapper. There are those > > functions in Canvas.cpp/.h: > > > > Canvas *Canvas::wrap (Evas_Object *o) > > { > > return new Canvas (evas_object_evas_get (o)); > > } > > > > Canvas *Canvas::wrap (Evas *evas) > > { > > return new Canvas (evas); > > } > > > > One time it stopped compiling on Ubuntu Precise and as workaround I just > > commented out the second wrap() function. > > > > Then I noticed the launchpad precise build job fails in ecorexx with the > same source it > > local compiles: > > > > > https://launchpadlibrarian.net/125311410/buildlog_ubuntu-precise-amd64.ecorexx_0.1-0~201212100108~precise1_FAILEDTOBUILD.txt.gz > > > > EvasWindowFB.cpp: In constructor > 'Ecorexx::EvasWindowFB::EvasWindowFB(const Eflxx::Size&, const char*, int)': > > EvasWindowFB.cpp:73:56: error: no matching function for call to > 'Evasxx::Canvas::wrap(Evas*)' > > EvasWindowFB.cpp:73:56: note: candidate is: > > /usr/include/evasxx/Canvas.h:82:18: note: static Evasxx::Canvas* > Evasxx::Canvas::wrap(Evas_Object*) > > /usr/include/evasxx/Canvas.h:82:18: note: no known conversion for > argument 1 from 'Evas* {aka _Evas*}' to 'Evas_Object* {aka _Evas_Object*}' > > > > Strange! Then I uncomment the second wrap function and local get this > error: > > > > In file included from Canvas.cpp:6:0: > > ../include/evasxx/Canvas.h:94:18: error: 'static Evasxx::Canvas* > Evasxx::Canvas::wrap(Evas*)' cannot be overloaded > > ../include/evasxx/Canvas.h:82:18: error: with 'static Evasxx::Canvas* > Evasxx::Canvas::wrap(Evas_Object*)' > > Canvas.cpp:178:9: error: redefinition of 'static Evasxx::Canvas* > Evasxx::Canvas::wrap(Evas*)' > > Canvas.cpp:173:9: error: 'static Evasxx::Canvas* > Evasxx::Canvas::wrap(Evas_Object*)' previously defined here > > make[2]: *** [Canvas.lo] Fehler 1 > > > > Why does the compiler detect Evas* as redefinition of Evas_Object* > parameter? Did something change? > > > > Why couldn't I overload it? I may simply change wrap() to wrapEvas() or > so, but I really like to understand it. > > That's because of the move to Eo and a conflict between how C++ and Eo > see the world. It would be good to provide a class that handle Eo > object smartly. In fact it should be doable to provide some smart > pointer template that use Eo refcounting and weak refcounting to > enable a better integration with C++ in general. If I have some time, > one of this day, I may go at it or just write a mail about some of my > idea on the subject. Will see that...
Better to write some tests before the ideas. Many things that seem nice are not that simple. Yesterday I was faced with 2 examples: - ref widget of elm. Unleash hell if you shutdown with that ref taken. - evas_free() does not force deletion, just unref, can bring problems if ref remains after shutdown > -- > Cedric BAIL > > > ------------------------------------------------------------------------------ > LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial > Remotely access PCs and mobile devices and provide instant support > Improve your efficiency, and focus on delivering more value-add services > Discover what IT Professionals Know. Rescue delivers > http://p.sf.net/sfu/logmein_12329d2d > _______________________________________________ > enlightenment-devel mailing list > [email protected] <javascript:;> > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel > -- Gustavo Sverzut Barbieri http://profusion.mobi embedded systems -------------------------------------- MSN: [email protected] Skype: gsbarbieri Mobile: +55 (19) 9225-2202 ------------------------------------------------------------------------------ LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial Remotely access PCs and mobile devices and provide instant support Improve your efficiency, and focus on delivering more value-add services Discover what IT Professionals Know. Rescue delivers http://p.sf.net/sfu/logmein_12329d2d _______________________________________________ enlightenment-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
