// $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. // Definition of inline template functions #include "Packet.ih" // Custom includes #define prefix_ inline ///////////////////////////////cti.p/////////////////////////////////////// template prefix_ bool senf::Packet::is() const { return dynamic_cast(this); } template prefix_ typename senf::Packet::ptr_t::ptr senf::Packet::as() { return typename ptr_t::ptr(dynamic_cast(this),true); } // This constructor appends a new interreter to the interpreter chain // of an existing Packet template prefix_ senf::Packet::Packet(Operation const & arg) : impl_(0), begin_(arg.begin()), end_(arg.end()), self_(), parsed_(false), refcount_(1) { SATCOM_PKF_REFC_MSG("] Packet::Packet (" << this << "): refcount_ = 1\n"); /** \fixme This is not exception safe, if an exception is thrown in the derived class constuctor, the effects of this call must be undone which is not possible in a simple way. */ arg(this); } template prefix_ senf::impl::PacketImpl::PacketImpl(InputIterator begin, InputIterator end) : data_(begin, end), interpreters_(), refcount_(1) { SATCOM_PKF_REFC_MSG("] PacketImpl::PacketImpl (" << this << "): refcount_ = 1\n") } ///////////////////////////////cti.e/////////////////////////////////////// #undef prefix_ // Local Variables: // mode: c++ // fill-column: 100 // c-file-style: "senf" // indent-tabs-mode: nil // ispell-local-dictionary: "american" // End: