X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Utils%2Fmembind.hh;h=c2baf8601d2ab02570d972d2e9414cec592ee0bd;hb=b64ffc44397d5853a677a1b4494105c4756af8d3;hp=b8768907cecef60ec7a6a853a3b791aa8b0968bf;hpb=553781d9e9bce316dca24ac4f0c42e5613e849e0;p=senf.git diff --git a/Utils/membind.hh b/Utils/membind.hh index b876890..c2baf86 100644 --- a/Utils/membind.hh +++ b/Utils/membind.hh @@ -1,9 +1,9 @@ // $Id$ // -// Copyright (C) 2006 -// Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS) -// Kompetenzzentrum fuer Satelitenkommunikation (SatCom) -// Stefan Bund +// Copyright (C) 2006 +// Fraunhofer Institute for Open Communication Systems (FOKUS) +// Competence Center NETwork research (NET), St. Augustin, GERMANY +// Stefan Bund // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -25,44 +25,46 @@ /** \defgroup membind Bound Member Functions - The membind() family of function templates simplifies the creation - of simple bound member function pointers: + The membind() family of function templates simplifies the creation of simple bound member + function pointers: \code struct Foo { int test(int x); }; - Foo * foo = ...; + Foo * foo = ...; boost::function f = senf::membind(&Foo::test,foo); int rv = f(1); // Calls foo->test(1) \endcode - \idea Make the \a ob argument type an additional P template - parameter (using call_traits for the exact arg type? Probably - we'll get deduction problems then) . The only operation this - object musst suppoprt is ob->*fn. This would allow the use of - smart pointers. We should keep the T & version to still support - ob.*fn use. + senf::membind() takes either a pointer or an object as second argument. When passing an object, + that object will be copied into the bound member function returned. + + \idea Make the \a ob argument type an additional P template parameter (using call_traits for the + exact arg type? Probably we'll get deduction problems then) . The only operation this object + must support is ob->*fn. This would allow the use of smart pointers. We should keep the T & + version to still support ob.*fn use. */ -#ifndef HH_membind_ -#define HH_membind_ 1 +#ifndef HH_SENF_Utils_membind_ +#define HH_SENF_Utils_membind_ 1 // Custom includes #include #include +#include "../config.hh" ///////////////////////////////hh.p//////////////////////////////////////// namespace senf { #define scOBTYPE T * -#include "Utils/impl/membind.hh" +#include "../Utils/impl/membind.hh" #undef scOBTYPE #define scOBTYPE T & -#include "Utils/impl/membind.hh" +#include "../Utils/impl/membind.hh" #undef scOBTYPE #ifdef DOXYGEN @@ -72,13 +74,13 @@ namespace senf { /** \brief Build bound member function object - membind() supports up to 9 function parameters (represented as - \a Args here). The \a ob argument can be either a pointer or a - reference to \a T - \param[in] fn member function pointer - \param[in] ob object instance to bind this pointer to - \returns Boost.Function object representing a bound call of \a - fn on \a ob + membind() supports up to 9 function parameters (represented as + \a Args here). The \a ob argument can be either a pointer or a + reference to \a T + \param[in] fn member function pointer + \param[in] ob object instance to bind this pointer to + \returns Boost.Function object representing a bound call of \a + fn on \a ob */ template boost::function membind(R (T::* fn)( Args ), T * ob); @@ -98,4 +100,10 @@ namespace senf { // Local Variables: // mode: c++ +// fill-column: 100 +// c-file-style: "senf" +// indent-tabs-mode: nil +// ispell-local-dictionary: "american" +// compile-command: "scons -u test" +// comment-column: 40 // End: