// $Id$ // // Copyright (C) 2007 // 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 INet6Address non-inline template implementation */ #include "INet6Address.ih" // Custom includes #define prefix_ ///////////////////////////////ct.p//////////////////////////////////////// /////////////////////////////////////////////////////////////////////////// // senf::INet6Address template prefix_ senf::INet6Address senf::INet6Address::from_data(InputIterator i) { INet6Address addr (INet6Address::noinit); iterator j (addr.begin()); iterator const j_end (addr.end()); for (;j!=j_end;++j,++i) *j = *i; return addr; } /////////////////////////////////////////////////////////////////////////// // namespace senf::detail members template prefix_ void senf::detail::apply_mask(unsigned bits, ForwardIterator b, ForwardIterator e, Function fn) { for(; b != e; ++b) { boost::uint8_t mask (0); if (bits > 8) { mask = 0xFFu; bits -= 8; } else if (bits > 0) { mask = ~ low_bits_mask(8-bits); bits = 0; } fn(*b,mask); } } template prefix_ ForwardIterator1 senf::detail::find_if_mask(unsigned bits, ForwardIterator1 b1, ForwardIterator1 e1, ForwardIterator2 b2, Function fn) { for(; b1 != e1; ++b1, ++b2) { boost::uint8_t mask (0); if (bits > 8) { mask = 0xFFu; bits -= 8; } else if (bits > 0) { mask = ~ low_bits_mask(8-bits); bits = 0; } if (fn(*b1,*b2,mask)) return b1; } return e1; } ///////////////////////////////ct.e//////////////////////////////////////// #undef prefix_ // Local Variables: // mode: c++ // fill-column: 100 // comment-column: 40 // c-file-style: "senf" // indent-tabs-mode: nil // ispell-local-dictionary: "american" // compile-command: "scons -u test" // End: