X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Scheduler%2FReadHelper.ih;h=a0a6ae3a47c3f91376b95f277713fb4b31ce3269;hb=9a988902090d28007578e93bffd809f6bd913155;hp=e174b5f640671f22e89585bb5f5d99445539f35a;hpb=c5ab87643518405aa5171ed4602f7234873a4900;p=senf.git diff --git a/Scheduler/ReadHelper.ih b/Scheduler/ReadHelper.ih index e174b5f..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 @@ -9,26 +28,40 @@ ///////////////////////////////ih.p//////////////////////////////////////// -namespace satcom { -namespace lib { +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; }; -}} +} ///////////////////////////////ih.e//////////////////////////////////////// @@ -37,4 +70,8 @@ namespace lib { // Local Variables: // mode: c++ +// fill-column: 100 +// c-file-style: "senf" +// indent-tabs-mode: nil +// ispell-local-dictionary: "american" // End: