CVSROOT: /cvs/gnome Module name: libsigc++2 Changes by: murrayc 05/05/10 09:23:48
Modified files: . : ChangeLog sigc++ : Makefile.am reference_wrapper.h type_traits.h sigc++/adaptors/macros: bind.h.m4 bind_return.h.m4 sigc++/functors/macros: mem_fun.h.m4 tests : Makefile.am test_bind_ref.cc test_bind_return.cc test_custom.cc Added files: sigc++/adaptors: bound_argument.h sigc++/macros : limit_reference.h.m4 tests : test_limit_reference.cc Removed files: tests : test_virtualbase_delete.cc test_virtualbase_delete_ref_param.cc Log message: 2005-05-06 Régis Duchesne <[EMAIL PROTECTED]> * sigc++/macros/limit_reference.h.m4 (added): * sigc++/Makefile.am: New class that just stores a reference, and makes sure that if the reference derives from trackable, then the trackable reference will be used instead of the derived reference in visit_each(). * sigc++/functors/macros/mem_fun.h.m4: Better fix for bug #169225 [http://bugzilla.gnome.org/show_bug.cgi?id=169225] by Régis Duchesne and Christian Hammond, based on the new limit_reference class. * sigc++/adaptors/bound_argument.h (added): New class (built upon the new limit_reference class) that handles all 3 kinds of bound arguments: by value, by reference, and by constant reference. References are unwrapped in the bound_argument's constructor. * sigc++/adaptors/macros/bind.h.m4: Fix for bug #302327 [http://bugzilla.gnome.org/show_bug.cgi?id=302327] by Régis Duchesne. Bound arguments now need to know whether they are passed by reference or not. So bind() now builds bind_functor instances using 'reference_wrapper<Foo>' types, instead of 'Foo &' types. The bind_functor code is modified to compensate. * sigc++/adaptors/macros/bind_return.h.m4: Similar fix for a similar bug (unfiled) with bound return arguments. * sigc++/reference_wrapper.h: * sigc++/type_traits.h: The reference_wrapper class is only used in bound_argument.h. Put correct but unused code under #if 0. * sigc++/adaptors/lambda/base.h: This file needs reference_wrapper.h, but was incorrectly relying on type_traits.h to include it. * tests/Makefile.am: * tests/test_virtualbase_delete.cc (deleted): * tests/test_virtualbase_delete_ref_param.cc (deleted): * tests/test_limit_reference.cc (added): Replaced test_virtualbase_delete*.cc with a simpler test_limit_reference.cc which checks for all 3 aspects of the same bug in one file. * tests/test_bind_ref.cc: Slots must use 'Foo &' types. We were lucky this broken usage worked before this change. The change in type_traits.h made this bug obvious, by preventing the code to compile. * tests/test_bind_return.cc: After my change, bind() and bind_return() must use 'reference_wrapper<Foo>' types. * tests/test_custom.cc: Made this test a no-op (so it does not perturb 'make check' on released versions of the library) and made it a template ready to be modified by hackers. URL : http://cvs.gnome.org/bonsai/cvsquery.cgi?branch=&dir=libsigc%2B%2B2&who=murrayc&date=explicit&mindate=2005-05-10%2009:22&maxdate=2005-05-10%2009:24 _______________________________________________ cvs-commits-list mailing list cvs-commits-list@gnome.org http://mail.gnome.org/mailman/listinfo/cvs-commits-list