4 // Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS)
5 // Kompetenzzentrum fuer Satelitenkommunikation (SatCom)
6 // Stefan Bund <stefan.bund@fokus.fraunhofer.de>
8 // This program is free software; you can redistribute it and/or modify
9 // it under the terms of the GNU General Public License as published by
10 // the Free Software Foundation; either version 2 of the License, or
11 // (at your option) any later version.
13 // This program is distributed in the hope that it will be useful,
14 // but WITHOUT ANY WARRANTY; without even the implied warranty of
15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 // GNU General Public License for more details.
18 // You should have received a copy of the GNU General Public License
19 // along with this program; if not, write to the
20 // Free Software Foundation, Inc.,
21 // 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
24 \brief PacketProtocol and PacketSocketHandle internal header
27 #ifndef IH_PacketSocketHandle_
28 #define IH_PacketSocketHandle_ 1
32 ///////////////////////////////ih.p////////////////////////////////////////
38 /** \brief Abstract address copier
41 This class provides the abstract interface to copy a
42 link-local address to a destination address.
44 struct LLAddressCopier
46 virtual ~LLAddressCopier() {}
47 virtual unsigned operator()(unsigned char * target) const = 0;
50 /** \brief Implementation of LLAddressCopier to copy arbitrary Range
53 This implementation of the LLAddressCopier interface will copy
54 an arbitrary range to the target address. This class is used,
55 to convert the compile-time polymorphism of templates
56 (provided by the \c ForwardRange template argument) into
57 runtime polymorphism (provided by the abstract LLAddressCopier
60 template <class ForwardRange>
61 struct Range_LLAddressCopier
62 : public LLAddressCopier
64 Range_LLAddressCopier(ForwardRange const & range);
66 unsigned operator()(unsigned char * target) const;
68 ForwardRange const & range_;
73 ///////////////////////////////ih.e////////////////////////////////////////
80 // c-file-style: "senf"
81 // indent-tabs-mode: nil
82 // ispell-local-dictionary: "american"
83 // compile-command: "scons -u test"