X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Scheduler%2FReadHelper.ih;h=a0a6ae3a47c3f91376b95f277713fb4b31ce3269;hb=9a988902090d28007578e93bffd809f6bd913155;hp=bca58bc867bb8a2a6b3a624418afa4c1174c384b;hpb=ac6a813d9d99f7add4e13aff7a4bcd314d5604a6;p=senf.git diff --git a/Scheduler/ReadHelper.ih b/Scheduler/ReadHelper.ih index bca58bc..a0a6ae3 100644 --- a/Scheduler/ReadHelper.ih +++ b/Scheduler/ReadHelper.ih @@ -1,6 +1,25 @@ // $Id$ // -// Copyright (C) 2006 +// Copyright (C) 2006 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 +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the +// Free Software Foundation, Inc., +// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +// Copyright (C) 2006 + +/** \file + \brief ReadHelper internal header */ #ifndef IH_ReadHelper_ #define IH_ReadHelper_ 1 @@ -12,20 +31,34 @@ namespace senf { + /** \brief Abstract predicate interface + \internal + */ template struct ReadHelper::InternalPredicate { - virtual ~InternalPredicate() {} - template - struct Dispatcher - : public ReadHelper::InternalPredicate - { - Dispatcher(Predicate p) : predicate(p) {} - virtual std::string::size_type operator()(std::string const & data); - Predicate predicate; - }; - - virtual std::string::size_type operator()(std::string const & data) = 0; + virtual ~InternalPredicate() {} + + /** \brief template to runtime polymorphic barrier for the predicate interface + \internal + + \implementation This class will provide a polymorphic + wrapper around the non-polymorphic ReadHelper + predicate. This is used, so the predicate can be + specified as an arbitrary callable object (even a + boost::function or a Boost.Lambda expression) without + imposing any inheritance relationship on the predicate + */ + template + struct Dispatcher + : public ReadHelper::InternalPredicate + { + Dispatcher(Predicate p) : predicate(p) {} + virtual std::string::size_type operator()(std::string const & data); + Predicate predicate; + }; + + virtual std::string::size_type operator()(std::string const & data) = 0; }; } @@ -37,4 +70,8 @@ namespace senf { // Local Variables: // mode: c++ +// fill-column: 100 +// c-file-style: "senf" +// indent-tabs-mode: nil +// ispell-local-dictionary: "american" // End: