// $Id$ // // Copyright (C) 2006 // Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS) // Kompetenzzentrum fuer Satelitenkommunikation (SatCom) // 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. /** \file \brief PacketProtocol and PacketSocketHandle internal header */ #ifndef IH_PacketSocketHandle_ #define IH_PacketSocketHandle_ 1 // Custom includes ///////////////////////////////ih.p//////////////////////////////////////// namespace senf { namespace detail { /** \brief Abstract address copier \internal This class provides the abstract interface to copy a link-local address to a destination address. */ struct LLAddressCopier { virtual ~LLAddressCopier() {} virtual unsigned operator()(unsigned char * target) const = 0; }; /** \brief Implementation of LLAddressCopier to copy arbitrary Range \internal This implementation of the LLAddressCopier interface will copy an arbitrary range to the target address. This class is used, to convert the compile-time polymorphism of templates (provided by the \c ForwardRange template argument) into runtime polymorphism (provided by the abstract LLAddressCopier interface). */ template struct Range_LLAddressCopier : public LLAddressCopier { Range_LLAddressCopier(ForwardRange const & range); unsigned operator()(unsigned char * target) const; ForwardRange const & range_; }; }} ///////////////////////////////ih.e//////////////////////////////////////// #endif // Local Variables: // mode: c++ // fill-column: 100 // c-file-style: "senf" // indent-tabs-mode: nil // ispell-local-dictionary: "american" // End: