diff --git a/Examples/DVBAdapter/ULEdec.cc b/Examples/DVBAdapter/ULEdec.cc index 327943aab5a74deb3224aee9a4140064155140e1..abec6e4b8892404632850c895c5794564698e3b3 100644 --- a/Examples/DVBAdapter/ULEdec.cc +++ b/Examples/DVBAdapter/ULEdec.cc @@ -63,7 +63,7 @@ ULEdec::ULEdec(unsigned short adapter, unsigned short device) void ULEdec::handleEvent(senf::Scheduler::EventId event) { senf::TransportPacket ts_packet ( - senf::TransportPacket::create(188, senf::TransportPacket::noinit)); + senf::TransportPacket::create(188, senf::noinit)); dvrHandle.read( ts_packet.data() ); // Check TS error conditions: sync_byte, transport_error_indicator, scrambling_control. diff --git a/Examples/Sniffer/Sniffer.cc b/Examples/Sniffer/Sniffer.cc index b570004c45e81a15c7981cfa4392937f80559ef2..f228fe774370ab99d0d20c21577741bd61556560 100644 --- a/Examples/Sniffer/Sniffer.cc +++ b/Examples/Sniffer/Sniffer.cc @@ -48,7 +48,7 @@ int loop_main (int argc, char const * argv[]) while (true) { // forever senf::EthernetPacket packet (senf::EthernetPacket::create( - senf::EthernetPacket::noinit)); + senf::noinit)); sock.read(packet.data(),0); packet.dump(std::cout); senf::hexdump( @@ -85,7 +85,7 @@ private: void dumpPacket(senf::Scheduler::EventId event) { senf::EthernetPacket packet ( - senf::EthernetPacket::create(senf::EthernetPacket::noinit)); + senf::EthernetPacket::create(senf::noinit)); sock.read(packet.data(),0); packet.dump(std::cout); senf::hexdump( diff --git a/PPI/SocketSource.ct b/PPI/SocketSource.ct index 1ee66f37559b4dd0c1972bc822b4505d60099c40..2d9e881c44ac55d0a9d320131317a5940aaf41e0 100644 --- a/PPI/SocketSource.ct +++ b/PPI/SocketSource.ct @@ -36,7 +36,7 @@ template <class Packet> prefix_ Packet senf::ppi::DgramReader<Packet>::operator()(Handle handle) { - Packet packet (Packet::create(Packet::noinit)); + Packet packet (Packet::create(senf::noinit)); handle.read(packet.data(),0u); return packet; } diff --git a/Packets/Mainpage.dox b/Packets/Mainpage.dox index 1c551fd7e5e474d8ead3a1aab28ccaa25106a519..56f68c5d840dcba2e0e77110ea27d57b6bd498e5 100644 --- a/Packets/Mainpage.dox +++ b/Packets/Mainpage.dox @@ -125,7 +125,7 @@ \code senf::PacketSocketHandle sock ("eth0"); - senf::EthernetPacket packet (senf::EthernetPacket::create(senf::Packet::noinit)); + senf::EthernetPacket packet (senf::EthernetPacket::create(senf::noinit)); sock.read(packet.data(),0u); \endcode diff --git a/Packets/Packet.cti b/Packets/Packet.cti index 6331b1c12c7182c6920bae6ee5a4f178da14003f..dd980e60505015b37640ec972de07fee21b302e8 100644 --- a/Packets/Packet.cti +++ b/Packets/Packet.cti @@ -154,9 +154,9 @@ senf::ConcretePacket<PacketType>::create() template <class PacketType> prefix_ senf::ConcretePacket<PacketType> -senf::ConcretePacket<PacketType>::create(NoInit_t) +senf::ConcretePacket<PacketType>::create(senf::NoInit_t) { - return ConcretePacket(interpreter::create(interpreter::noinit)); + return ConcretePacket(interpreter::create(senf::noinit)); } template <class PacketType> @@ -168,9 +168,9 @@ senf::ConcretePacket<PacketType>::create(size_type size) template <class PacketType> prefix_ senf::ConcretePacket<PacketType> -senf::ConcretePacket<PacketType>::create(size_type size, NoInit_t) +senf::ConcretePacket<PacketType>::create(size_type size, senf::NoInit_t) { - return ConcretePacket(interpreter::create(size,interpreter::noinit)); + return ConcretePacket(interpreter::create(size,senf::noinit)); } template <class PacketType> @@ -192,9 +192,9 @@ senf::ConcretePacket<PacketType>::createAfter(Packet packet) template <class PacketType> prefix_ senf::ConcretePacket<PacketType> -senf::ConcretePacket<PacketType>::createAfter(Packet packet, NoInit_t) +senf::ConcretePacket<PacketType>::createAfter(Packet packet, senf::NoInit_t) { - return ConcretePacket(interpreter::createAfter(packet.ptr(),interpreter::noinit)); + return ConcretePacket(interpreter::createAfter(packet.ptr(),senf::noinit)); } template <class PacketType> @@ -206,9 +206,9 @@ senf::ConcretePacket<PacketType>::createAfter(Packet packet, size_type size) template <class PacketType> prefix_ senf::ConcretePacket<PacketType> -senf::ConcretePacket<PacketType>::createAfter(Packet packet, size_type size, NoInit_t) +senf::ConcretePacket<PacketType>::createAfter(Packet packet, size_type size, senf::NoInit_t) { - return ConcretePacket(interpreter::createAfter(packet.ptr(), size, interpreter::noinit)); + return ConcretePacket(interpreter::createAfter(packet.ptr(), size, senf::noinit)); } template <class PacketType> @@ -230,9 +230,9 @@ senf::ConcretePacket<PacketType>::createBefore(Packet packet) template <class PacketType> prefix_ senf::ConcretePacket<PacketType> -senf::ConcretePacket<PacketType>::createBefore(Packet packet, NoInit_t) +senf::ConcretePacket<PacketType>::createBefore(Packet packet, senf::NoInit_t) { - return ConcretePacket(interpreter::createBefore(packet.ptr(), interpreter::noinit)); + return ConcretePacket(interpreter::createBefore(packet.ptr(), senf::noinit)); } // Create a clone of the current packet diff --git a/Packets/Packet.hh b/Packets/Packet.hh index 996e2c10c1b3e01e02b7766eadd35e4af7e3a1f3..371659ada6b9bf5630f07e4d3d3a01e753920862 100644 --- a/Packets/Packet.hh +++ b/Packets/Packet.hh @@ -30,6 +30,7 @@ #include <boost/operators.hpp> #include "../Utils/Exception.hh" +#include "../Utils/Tags.hh" #include "../Utils/safe_bool.hh" #include "PacketInterpreter.hh" @@ -149,9 +150,6 @@ namespace senf { ///< Unsigned type to represent packet size typedef PacketInterpreterBase::factory_t factory_t; ///< Packet factory type (see below) - enum NoInit_t { noinit }; ///< Special argument flag - /**< Used in some ConcretePacket constructors */ - /////////////////////////////////////////////////////////////////////////// ///\name Structors and default members ///@{ @@ -446,10 +444,10 @@ namespace senf { static ConcretePacket create(); ///< Create default initialized packet /**< The packet will be initialized to it's default empty state. */ - static ConcretePacket create(NoInit_t); ///< Create uninitialized empty packet + static ConcretePacket create(senf::NoInit_t); ///< Create uninitialized empty packet /**< This will create a completely empty and uninitialized packet with <tt>size() == 0</tt>. - \param[in] noinit This parameter must always have the + \param[in] senf::noinit This parameter must always have the value \c senf::noinit. */ static ConcretePacket create(size_type size); ///< Create default initialized packet /**< This member will create a default initialized packet @@ -460,11 +458,12 @@ namespace senf { \throws TruncatedPacketException if \a size is smaller than the smallest permissible size for this type of packet. */ - static ConcretePacket create(size_type size, NoInit_t); ///< Create uninitialized packet + static ConcretePacket create(size_type size, senf::NoInit_t); + ///< Create uninitialized packet /**< Creates an uninitialized (all-zero) packet of the exact given size. \param[in] size Size of the packet to create in bytes - \param[in] noinit This parameter must always have the + \param[in] senf::noinit This parameter must always have the value \c senf::noinit. */ template <class ForwardReadableRange> static ConcretePacket create(ForwardReadableRange const & range); @@ -485,14 +484,14 @@ namespace senf { state. It will be appended as next header/interpreter after \a packet in that packets interpreter chain. \param[in] packet Packet to append new packet to. */ - static ConcretePacket createAfter(Packet packet, NoInit_t); + static ConcretePacket createAfter(Packet packet, senf::NoInit_t); ///< Create uninitialized empty packet after\a packet /**< This will create a completely empty and uninitialized packet with <tt>size() == 0</tt>. It will be appended as next header/interpreter after \a packet in that packets interpreter chain. \param[in] packet Packet to append new packet to. - \param[in] noinit This parameter must always have the + \param[in] senf::noinit This parameter must always have the value \c senf::noinit. */ static ConcretePacket createAfter(Packet packet, size_type size); ///< Create default initialized packet after \a packet @@ -507,7 +506,7 @@ namespace senf { \throws TruncatedPacketException if \a size is smaller than the smallest permissible size for this type of packet. */ - static ConcretePacket createAfter(Packet packet, size_type size, NoInit_t); + static ConcretePacket createAfter(Packet packet, size_type size, senf::NoInit_t); ///< Create uninitialized packet after \a packet /**< Creates an uninitialized (all-zero) packet of the exact given size. It will be appended as next @@ -515,7 +514,7 @@ namespace senf { interpreter chain. \param[in] packet Packet to append new packet to. \param[in] size Size of the packet to create in bytes - \param[in] noinit This parameter must always have the + \param[in] senf::noinit This parameter must always have the value \c senf::noinit. */ template <class ForwardReadableRange> static ConcretePacket createAfter(Packet packet, @@ -541,7 +540,7 @@ namespace senf { header/interpreter before \a packet in that packets interpreter chain. \param[in] packet Packet to prepend new packet to. */ - static ConcretePacket createBefore(Packet packet, NoInit_t); + static ConcretePacket createBefore(Packet packet, senf::NoInit_t); ///< Create uninitialized empty packet before \a packet /**< Creates a completely empty and uninitialized packet. It will be prepended as previous header/interpreter before diff --git a/Packets/Packet.test.cc b/Packets/Packet.test.cc index 90d383b1d2e892e4e030ed9ffbb6571fb927d185..81e1b4ba3dec8a60667487978a16430c1029c5f1 100644 --- a/Packets/Packet.test.cc +++ b/Packets/Packet.test.cc @@ -195,10 +195,10 @@ BOOST_AUTO_UNIT_TEST(concretePacket) senf::PacketData::byte data[] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06 }; BOOST_CHECK_EQUAL( FooPacket::create().size(), 4u ); - BOOST_CHECK_EQUAL( FooPacket::create(FooPacket::noinit).size(), 0u ); + BOOST_CHECK_EQUAL( FooPacket::create(senf::noinit).size(), 0u ); BOOST_CHECK_THROW( FooPacket::create(2u), senf::TruncatedPacketException ); BOOST_CHECK_EQUAL( FooPacket::create(10u).size(), 10u ); - BOOST_CHECK_EQUAL( FooPacket::create(2u,FooPacket::noinit).size(), 2u ); + BOOST_CHECK_EQUAL( FooPacket::create(2u,senf::noinit).size(), 2u ); BOOST_CHECK_EQUAL( FooPacket::create(data).size(), 6u ); senf::Packet packet (FooPacket::create()); @@ -206,14 +206,14 @@ BOOST_AUTO_UNIT_TEST(concretePacket) BOOST_CHECK_EQUAL( FooPacket::createAfter(packet).size(), 4u ); BOOST_CHECK_EQUAL( packet.size(), 8u ); - BOOST_CHECK_EQUAL( FooPacket::createAfter(packet,FooPacket::noinit).size(), 0u ); + BOOST_CHECK_EQUAL( FooPacket::createAfter(packet,senf::noinit).size(), 0u ); BOOST_CHECK_EQUAL( packet.size(), 4u ); BOOST_CHECK_THROW( FooPacket::createAfter(packet,2u), senf::TruncatedPacketException ); BOOST_CHECK_EQUAL( FooPacket::createAfter(packet,10u).size(), 10u ); BOOST_CHECK_EQUAL( packet.size(), 14u ); - BOOST_CHECK_EQUAL( FooPacket::createAfter(packet,2u,FooPacket::noinit).size(), 2u ); + BOOST_CHECK_EQUAL( FooPacket::createAfter(packet,2u,senf::noinit).size(), 2u ); BOOST_CHECK_EQUAL( packet.size(), 6u ); BOOST_CHECK_EQUAL( FooPacket::createAfter(packet,data).size(), 6u ); @@ -222,7 +222,7 @@ BOOST_AUTO_UNIT_TEST(concretePacket) BOOST_CHECK_EQUAL( FooPacket::createBefore(packet).size(), 14u ); BOOST_CHECK_EQUAL( packet.size(), 10u ); - BOOST_CHECK_EQUAL( FooPacket::createBefore(packet,FooPacket::noinit).size(), 10u ); + BOOST_CHECK_EQUAL( FooPacket::createBefore(packet,senf::noinit).size(), 10u ); BOOST_CHECK_EQUAL( packet.size(), 10u ); BOOST_CHECK( packet.clone() != packet ); diff --git a/Packets/PacketInterpreter.ct b/Packets/PacketInterpreter.ct index ee4ff1f5afcc0f8807592bdadfe0c553947e6ace..72715e7ea4bdf5b5c25ccd9b41388ae9781f3e08 100644 --- a/Packets/PacketInterpreter.ct +++ b/Packets/PacketInterpreter.ct @@ -63,14 +63,14 @@ senf::PacketInterpreter<PacketType>::create(size_type size) { if (size < initSize()) throw TruncatedPacketException(); - ptr pi (create(size,noinit)); + ptr pi (create(size,senf::noinit)); pi->init(); return pi; } template <class PacketType> prefix_ typename senf::PacketInterpreter<PacketType>::ptr -senf::PacketInterpreter<PacketType>::create(size_type size, NoInit_t) +senf::PacketInterpreter<PacketType>::create(size_type size, senf::NoInit_t) { detail::PacketImpl::Guard p (new detail::PacketImpl(size,0)); ptr pi (create(p.p,p.p->begin(),p.p->end(),Append)); @@ -86,7 +86,7 @@ senf::PacketInterpreter<PacketType>::createAfter(PacketInterpreterBase::ptr pack { if (size < initSize()) throw TruncatedPacketException(); - ptr pi (createAfter(packet,size,noinit)); + ptr pi (createAfter(packet,size,senf::noinit)); std::fill(pi->data().begin(), pi->data().end(),0); pi->init(); return pi; @@ -95,7 +95,7 @@ senf::PacketInterpreter<PacketType>::createAfter(PacketInterpreterBase::ptr pack template <class PacketType> prefix_ typename senf::PacketInterpreter<PacketType>::ptr senf::PacketInterpreter<PacketType>::createAfter(PacketInterpreterBase::ptr packet, - size_type size, NoInit_t) + size_type size, senf::NoInit_t) { optional_range r (packet->nextPacketRange()); if (!r) @@ -134,7 +134,7 @@ template <class PacketType> prefix_ typename senf::PacketInterpreter<PacketType>::ptr senf::PacketInterpreter<PacketType>::createBefore(PacketInterpreterBase::ptr packet) { - ptr pi (createBefore(packet, noinit)); + ptr pi (createBefore(packet, senf::noinit)); pi->data().insert(pi->data().begin(),initHeadSize(),byte(0x00u)); pi->data().insert(pi->data().end(),initSize()-initHeadSize(),byte(0x00u)); pi->init(); @@ -143,7 +143,7 @@ senf::PacketInterpreter<PacketType>::createBefore(PacketInterpreterBase::ptr pac template <class PacketType> prefix_ typename senf::PacketInterpreter<PacketType>::ptr -senf::PacketInterpreter<PacketType>::createBefore(PacketInterpreterBase::ptr packet, NoInit_t) +senf::PacketInterpreter<PacketType>::createBefore(PacketInterpreterBase::ptr packet, senf::NoInit_t) { if (packet->prev()) packet->impl().truncateInterpretersBackwards(packet->prev().get()); @@ -222,7 +222,7 @@ prefix_ senf::PacketInterpreterBase::ptr senf::PacketInterpreterBase::Factory::create(ForwardReadableRange const & range) const { - ptr pi (create(boost::size(range),noinit)); + ptr pi (create(boost::size(range),senf::noinit)); std::copy(boost::begin(range), boost::end(range), pi->data().begin()); return pi; } @@ -233,7 +233,7 @@ senf::PacketInterpreterBase::Factory::createAfter(PacketInterpreterBase::ptr pac ForwardReadableRange const & range) const { - ptr pi (createAfter(packet,boost::size(range),noinit)); + ptr pi (createAfter(packet,boost::size(range),senf::noinit)); std::copy(boost::begin(range), boost::end(range), pi->data().begin()); return pi; } @@ -253,10 +253,10 @@ senf::PacketInterpreter<PacketType>::FactoryImpl::create() template <class PacketType> prefix_ typename senf::PacketInterpreterBase::ptr -senf::PacketInterpreter<PacketType>::FactoryImpl::create(NoInit_t) +senf::PacketInterpreter<PacketType>::FactoryImpl::create(senf::NoInit_t) const { - return senf::PacketInterpreter<PacketType>::create(noinit); + return senf::PacketInterpreter<PacketType>::create(senf::noinit); } template <class PacketType> @@ -269,10 +269,10 @@ senf::PacketInterpreter<PacketType>::FactoryImpl::create(size_type size) template <class PacketType> prefix_ typename senf::PacketInterpreterBase::ptr -senf::PacketInterpreter<PacketType>::FactoryImpl::create(size_type size, NoInit_t) +senf::PacketInterpreter<PacketType>::FactoryImpl::create(size_type size, senf::NoInit_t) const { - return senf::PacketInterpreter<PacketType>::create(size, noinit); + return senf::PacketInterpreter<PacketType>::create(size, senf::noinit); } // Create packet as new packet after a given packet @@ -288,10 +288,10 @@ senf::PacketInterpreter<PacketType>::FactoryImpl::createAfter(PacketInterpreterB template <class PacketType> prefix_ typename senf::PacketInterpreterBase::ptr senf::PacketInterpreter<PacketType>::FactoryImpl::createAfter(PacketInterpreterBase::ptr packet, - NoInit_t) + senf::NoInit_t) const { - return senf::PacketInterpreter<PacketType>::createAfter(packet,noinit); + return senf::PacketInterpreter<PacketType>::createAfter(packet,senf::noinit); } template <class PacketType> @@ -306,10 +306,10 @@ senf::PacketInterpreter<PacketType>::FactoryImpl::createAfter(PacketInterpreterB template <class PacketType> prefix_ typename senf::PacketInterpreterBase::ptr senf::PacketInterpreter<PacketType>::FactoryImpl::createAfter(PacketInterpreterBase::ptr packet, - size_type size, NoInit_t) + size_type size, senf::NoInit_t) const { - return senf::PacketInterpreter<PacketType>::createAfter(packet,size,noinit); + return senf::PacketInterpreter<PacketType>::createAfter(packet,size,senf::noinit); } // Create packet as new packet (header) before a given packet @@ -326,10 +326,10 @@ createBefore(PacketInterpreterBase::ptr packet) template <class PacketType> prefix_ senf::PacketInterpreterBase::ptr senf::PacketInterpreter<PacketType>::FactoryImpl:: -createBefore(PacketInterpreterBase::ptr packet, NoInit_t) +createBefore(PacketInterpreterBase::ptr packet, senf::NoInit_t) const { - return senf::PacketInterpreter<PacketType>::createBefore(packet,noinit); + return senf::PacketInterpreter<PacketType>::createBefore(packet,senf::noinit); } // Parse next packet in chain diff --git a/Packets/PacketInterpreter.cti b/Packets/PacketInterpreter.cti index 1896850658459ce2ff8fbb64f6d57edbc4e879fe..b2696f62e0a20141fbc24ce0b70797bcba74e834 100644 --- a/Packets/PacketInterpreter.cti +++ b/Packets/PacketInterpreter.cti @@ -75,9 +75,9 @@ senf::PacketInterpreter<PacketType>::create() template <class PacketType> prefix_ typename senf::PacketInterpreter<PacketType>::ptr -senf::PacketInterpreter<PacketType>::create(NoInit_t) +senf::PacketInterpreter<PacketType>::create(senf::NoInit_t) { - return create(0,noinit); + return create(0,senf::noinit); } template <class PacketType> @@ -101,9 +101,9 @@ senf::PacketInterpreter<PacketType>::createAfter(PacketInterpreterBase::ptr pack template <class PacketType> prefix_ typename senf::PacketInterpreter<PacketType>::ptr -senf::PacketInterpreter<PacketType>::createAfter(PacketInterpreterBase::ptr packet, NoInit_t) +senf::PacketInterpreter<PacketType>::createAfter(PacketInterpreterBase::ptr packet, senf::NoInit_t) { - return createAfter(packet, 0, noinit); + return createAfter(packet, 0, senf::noinit); } // Create clone of current packet diff --git a/Packets/PacketInterpreter.hh b/Packets/PacketInterpreter.hh index 707e4b4db1f7987a710f526958aee8a0fce7ac7a..9a1a3fa6d239c1822dd8c68b5291c9d94d5077cb 100644 --- a/Packets/PacketInterpreter.hh +++ b/Packets/PacketInterpreter.hh @@ -34,6 +34,7 @@ #include <boost/type_traits/alignment_of.hpp> #include "../Utils/intrusive_refcount.hh" #include "../Utils/pool_alloc_mixin.hh" +#include "../Utils/Tags.hh" #include "PacketData.hh" #include "../Utils/TypeIdValue.hh" @@ -75,7 +76,6 @@ namespace senf { enum Append_t { Append }; enum Prepend_t { Prepend }; - enum NoInit_t { noinit }; /** \brief Internal: Abstract packet factory @@ -91,19 +91,19 @@ namespace senf { // Create completely new packet virtual ptr create() const = 0; - virtual ptr create(NoInit_t) const = 0; + virtual ptr create(senf::NoInit_t) const = 0; virtual ptr create(size_type size) const = 0; - virtual ptr create(size_type size, NoInit_t) const = 0; + virtual ptr create(size_type size, senf::NoInit_t) const = 0; template <class ForwardReadableRange> ptr create(ForwardReadableRange const & range) const; // Create packet as new packet after a given packet virtual ptr createAfter(PacketInterpreterBase::ptr packet) const = 0; - virtual ptr createAfter(PacketInterpreterBase::ptr packet, NoInit_t) const = 0; + virtual ptr createAfter(PacketInterpreterBase::ptr packet, senf::NoInit_t) const = 0; virtual ptr createAfter(PacketInterpreterBase::ptr packet, size_type size) const = 0; virtual ptr createAfter(PacketInterpreterBase::ptr packet, size_type size, - NoInit_t) const = 0; + senf::NoInit_t) const = 0; template <class ForwardReadableRange> ptr createAfter(PacketInterpreterBase::ptr packet, ForwardReadableRange const & range) const; @@ -111,7 +111,7 @@ namespace senf { // Create packet as new packet (header) const before a given packet virtual ptr createBefore(PacketInterpreterBase::ptr packet) const = 0; - virtual ptr createBefore(PacketInterpreterBase::ptr packet, NoInit_t) const = 0; + virtual ptr createBefore(PacketInterpreterBase::ptr packet, senf::NoInit_t) const = 0; // Parse next packet in chain @@ -256,18 +256,18 @@ namespace senf { // Create completely new packet static ptr create(); - static ptr create(NoInit_t); + static ptr create(senf::NoInit_t); static ptr create(size_type size); - static ptr create(size_type size, NoInit_t); + static ptr create(size_type size, senf::NoInit_t); template <class ForwardReadableRange> static ptr create(ForwardReadableRange const & range); // Create packet as new packet after a given packet static ptr createAfter(PacketInterpreterBase::ptr packet); - static ptr createAfter(PacketInterpreterBase::ptr packet, NoInit_t); + static ptr createAfter(PacketInterpreterBase::ptr packet, senf::NoInit_t); static ptr createAfter(PacketInterpreterBase::ptr packet, size_type size); - static ptr createAfter(PacketInterpreterBase::ptr packet, size_type size, NoInit_t); + static ptr createAfter(PacketInterpreterBase::ptr packet, size_type size, senf::NoInit_t); template <class ForwardReadableRange> static ptr createAfter(PacketInterpreterBase::ptr packet, ForwardReadableRange const & range); @@ -275,7 +275,7 @@ namespace senf { // Create packet as new packet (header) before a given packet static ptr createBefore(PacketInterpreterBase::ptr packet); - static ptr createBefore(PacketInterpreterBase::ptr packet, NoInit_t); + static ptr createBefore(PacketInterpreterBase::ptr packet, senf::NoInit_t); // Create a clone of the current packet @@ -333,27 +333,27 @@ namespace senf { // Create completely new packet virtual PacketInterpreterBase::ptr create() const; - virtual PacketInterpreterBase::ptr create(NoInit_t) const; + virtual PacketInterpreterBase::ptr create(senf::NoInit_t) const; virtual PacketInterpreterBase::ptr create(size_type size) const; - virtual PacketInterpreterBase::ptr create(size_type size,NoInit_t) const; + virtual PacketInterpreterBase::ptr create(size_type size,senf::NoInit_t) const; // Create packet as new packet after a given packet virtual PacketInterpreterBase::ptr createAfter(PacketInterpreterBase::ptr packet) const; virtual PacketInterpreterBase::ptr createAfter(PacketInterpreterBase::ptr packet, - NoInit_t) const; + senf::NoInit_t) const; virtual PacketInterpreterBase::ptr createAfter(PacketInterpreterBase::ptr packet, size_type size) const; virtual PacketInterpreterBase::ptr createAfter(PacketInterpreterBase::ptr packet, - size_type size, NoInit_t) const; + size_type size, senf::NoInit_t) const; // Create packet as new packet (header) before a given packet virtual PacketInterpreterBase::ptr createBefore(PacketInterpreterBase::ptr packet) const; virtual PacketInterpreterBase::ptr createBefore(PacketInterpreterBase::ptr packet, - NoInit_t) + senf::NoInit_t) const; // Parse next packet in chain diff --git a/Packets/PacketInterpreter.test.cc b/Packets/PacketInterpreter.test.cc index eb3a6db44cfa46acf288ed2244605c0c1b958415..13c9c93f6da2cf2e1fd00bc72a499c2aa70fe012 100644 --- a/Packets/PacketInterpreter.test.cc +++ b/Packets/PacketInterpreter.test.cc @@ -129,9 +129,9 @@ BOOST_AUTO_UNIT_TEST(packetInterpreter) { BOOST_CHECK_NO_THROW( - senf::PacketInterpreter<OtherPacket>::create(4u,senf::PacketInterpreterBase::noinit)); + senf::PacketInterpreter<OtherPacket>::create(4u,senf::noinit)); senf::PacketInterpreter<OtherPacket>::ptr p - (senf::PacketInterpreter<OtherPacket>::create(senf::PacketInterpreterBase::noinit)); + (senf::PacketInterpreter<OtherPacket>::create(senf::noinit)); BOOST_CHECK_EQUAL( p->data().size(), 0u ); } @@ -162,7 +162,7 @@ BOOST_AUTO_UNIT_TEST(packetInterpreter) (senf::PacketInterpreter<OtherPacket>::create(12u)); senf::PacketInterpreter<OtherPacket>::ptr p2 (senf::PacketInterpreter<OtherPacket>::createAfter( - p,senf::PacketInterpreterBase::noinit)); + p,senf::noinit)); BOOST_CHECK_EQUAL( p2->data().size(), 0u ); BOOST_CHECK_EQUAL( p->data().size(), 8u ); } @@ -178,7 +178,7 @@ BOOST_AUTO_UNIT_TEST(packetInterpreter) BOOST_CHECK_THROW( senf::PacketInterpreter<OtherPacket>::createAfter(p,4u), senf::TruncatedPacketException ); BOOST_CHECK_NO_THROW( senf::PacketInterpreter<OtherPacket>::createAfter( - p,4u,senf::PacketInterpreterBase::noinit) ); + p,4u,senf::noinit) ); } { @@ -204,7 +204,7 @@ BOOST_AUTO_UNIT_TEST(packetInterpreter) senf::PacketInterpreter<OtherPacket>::ptr p3 (senf::PacketInterpreter<OtherPacket>::createBefore( - p,senf::PacketInterpreterBase::noinit)); + p,senf::noinit)); BOOST_CHECK_EQUAL( p3->data().size(), 10u ); } @@ -225,10 +225,10 @@ BOOST_AUTO_UNIT_TEST(packetInterpreter_factory) BOOST_CHECK( factory->create()->is<OtherPacket>() ); BOOST_CHECK_EQUAL( factory->create()->data().size(), 8u ); - BOOST_CHECK_EQUAL( factory->create(senf::PacketInterpreterBase::noinit)->data().size(), 0u ); + BOOST_CHECK_EQUAL( factory->create(senf::noinit)->data().size(), 0u ); BOOST_CHECK_EQUAL( factory->create(12u)->data().size(), 12u ); BOOST_CHECK_EQUAL( - factory->create(4u, senf::PacketInterpreterBase::noinit)->data().size(), 4u ); + factory->create(4u, senf::noinit)->data().size(), 4u ); BOOST_CHECK_EQUAL( factory->create(data)->data().size(), 6u ); { @@ -245,7 +245,7 @@ BOOST_AUTO_UNIT_TEST(packetInterpreter_factory) BOOST_CHECK( ! p->next()->next() ); BOOST_CHECK_EQUAL( - factory->createAfter(p, senf::PacketInterpreterBase::noinit)->data().size(), 0u ); + factory->createAfter(p, senf::noinit)->data().size(), 0u ); BOOST_CHECK_EQUAL( p->data().size(), 0u ); BOOST_CHECK( ! p->next()->next() ); @@ -254,7 +254,7 @@ BOOST_AUTO_UNIT_TEST(packetInterpreter_factory) BOOST_CHECK( ! p->next()->next() ); BOOST_CHECK_EQUAL( - factory->createAfter(p,4u, senf::PacketInterpreterBase::noinit)->data().size(), 4u ); + factory->createAfter(p,4u, senf::noinit)->data().size(), 4u ); BOOST_CHECK_EQUAL( p->data().size(), 4u ); BOOST_CHECK( ! p->next()->next() ); @@ -273,7 +273,7 @@ BOOST_AUTO_UNIT_TEST(packetInterpreter_factory) BOOST_CHECK_EQUAL( p->prev()->data().size(), 12u ); BOOST_CHECK_EQUAL( - factory->createBefore(p,senf::PacketInterpreterBase::noinit)->data().size(), 4u ); + factory->createBefore(p,senf::noinit)->data().size(), 4u ); BOOST_REQUIRE( p->prev() ); BOOST_CHECK( ! p->prev()->prev() ); BOOST_CHECK_EQUAL( p->prev()->data().size(), 4u ); diff --git a/Socket/ProtocolClientSocketHandle.cti b/Socket/ProtocolClientSocketHandle.cti index 9fe7718a99818f08b40bb30cf32f8c0f22183055..e467fb0658777f79de9b22faaf2035b27fae3d05 100644 --- a/Socket/ProtocolClientSocketHandle.cti +++ b/Socket/ProtocolClientSocketHandle.cti @@ -37,7 +37,7 @@ template <class SocketProtocol> prefix_ senf::ProtocolClientSocketHandle<SocketProtocol>:: -ProtocolClientSocketHandle(UninitializedType) +ProtocolClientSocketHandle(senf::NoInit_t) {} template <class SocketProtocol> diff --git a/Socket/ProtocolClientSocketHandle.hh b/Socket/ProtocolClientSocketHandle.hh index ed155105d3a29e3a768d3678de029f77c4729512..8a04655b91d2f5f463dd884bcf360ce7b028b032 100644 --- a/Socket/ProtocolClientSocketHandle.hh +++ b/Socket/ProtocolClientSocketHandle.hh @@ -30,6 +30,7 @@ // Custom includes #include "ClientSocketHandle.hh" #include "../config.hh" +#include "../Utils/Tags.hh" #include "ProtocolClientSocketHandle.mpp" ///////////////////////////////hh.p//////////////////////////////////////// @@ -66,7 +67,6 @@ namespace senf { // Types typedef SocketProtocol Protocol; ///< The sockets protocol - enum UninitializedType { Uninitialized }; ///< Flag to call 'uninitialized' constructor /////////////////////////////////////////////////////////////////////////// ///\name Structors and default members @@ -95,7 +95,7 @@ namespace senf { \implementation The socket handle will have no \c body allocated. */ - ProtocolClientSocketHandle(UninitializedType); + ProtocolClientSocketHandle(senf::NoInit_t); ///@} /////////////////////////////////////////////////////////////////////////// diff --git a/Socket/ProtocolServerSocketHandle.cti b/Socket/ProtocolServerSocketHandle.cti index c615b32ce718bef6b15b5b02e6cf17a035372c25..85ce2006a6291b224b281349f412e6bb6dc6b940 100644 --- a/Socket/ProtocolServerSocketHandle.cti +++ b/Socket/ProtocolServerSocketHandle.cti @@ -37,7 +37,7 @@ template <class SocketProtocol> prefix_ senf::ProtocolServerSocketHandle<SocketProtocol>:: -ProtocolServerSocketHandle(UninitializedType) +ProtocolServerSocketHandle(senf::NoInit_t) {} template <class SocketProtocol> diff --git a/Socket/ProtocolServerSocketHandle.hh b/Socket/ProtocolServerSocketHandle.hh index 4e010dc838004d4831c8186a5412f508c51a86b5..2833f85792540f7239990e725588a2c5cd6527a2 100644 --- a/Socket/ProtocolServerSocketHandle.hh +++ b/Socket/ProtocolServerSocketHandle.hh @@ -30,6 +30,7 @@ // Custom includes #include "ServerSocketHandle.hh" #include "../config.hh" +#include "../Utils/Tags.hh" #include "ProtocolServerSocketHandle.mpp" ///////////////////////////////hh.p//////////////////////////////////////// @@ -70,7 +71,6 @@ namespace senf { // Types typedef SocketProtocol Protocol; ///< The socket protocol - enum UninitializedType { Uninitialized }; ///< Flag to call 'uninitialized' constructor /////////////////////////////////////////////////////////////////////////// ///\name Structors and default members @@ -100,7 +100,7 @@ namespace senf { \implementation The socket handle will have no \c body allocated. */ - ProtocolServerSocketHandle(UninitializedType); + ProtocolServerSocketHandle(senf::NoInit_t); ///@} /////////////////////////////////////////////////////////////////////////// diff --git a/Socket/Protocols/INet/INet4Address.cci b/Socket/Protocols/INet/INet4Address.cci index 4fb8774baea3d3c3e82185345a1059b7afaee57c..65cc8319b4927d7920d8cfd16d0692bbba5b1703 100644 --- a/Socket/Protocols/INet/INet4Address.cci +++ b/Socket/Protocols/INet/INet4Address.cci @@ -36,7 +36,7 @@ prefix_ senf::INet4Address::INet4Address() std::fill(begin(), end(), 0u); } -prefix_ senf::INet4Address::INet4Address(NoInit_t) +prefix_ senf::INet4Address::INet4Address(senf::NoInit_t) {} prefix_ senf::INet4Address senf::INet4Address::from_inaddr(inaddr_type v) diff --git a/Socket/Protocols/INet/INet4Address.ct b/Socket/Protocols/INet/INet4Address.ct index 4d223c0550e5a3fde190fc41f9e25ee7cf0ac3c3..408355be09687a2aba9d042e900a1466d8f27dca 100644 --- a/Socket/Protocols/INet/INet4Address.ct +++ b/Socket/Protocols/INet/INet4Address.ct @@ -36,7 +36,7 @@ template <class InputIterator> prefix_ senf::INet4Address senf::INet4Address::from_data(InputIterator i) { - INet4Address addr (INet4Address::noinit); + INet4Address addr (senf::noinit); iterator j (addr.begin()); iterator const j_end (addr.end()); for (;j!=j_end;++j,++i) diff --git a/Socket/Protocols/INet/INet4Address.hh b/Socket/Protocols/INet/INet4Address.hh index 19ec73798e66cdf9c5ae43ce0b8eb4b342d4f09b..a77903d96142e7139dde3062d073b47b0850ec2b 100644 --- a/Socket/Protocols/INet/INet4Address.hh +++ b/Socket/Protocols/INet/INet4Address.hh @@ -33,6 +33,7 @@ #include <boost/array.hpp> #include <boost/operators.hpp> #include "../../../Utils/safe_bool.hh" +#include "../../../Utils/Tags.hh" //#include "INet4Address.mpp" ///////////////////////////////hh.p//////////////////////////////////////// @@ -69,14 +70,12 @@ namespace senf { static INet4Address const Loopback; ///< The loopback (127.0.0.1) address static INet4Address const Broadcast; ////< The global broadcast (255.255.255.255) address - enum NoInit_t { noinit }; - /////////////////////////////////////////////////////////////////////////// ///\name Structors and default members ///@{ INet4Address(); ///< Construct an empty address - explicit INet4Address(NoInit_t); ///< Construct uninitialized (!) address + explicit INet4Address(senf::NoInit_t); ///< Construct uninitialized (!) address explicit INet4Address(address_type value); ///< Construct an address constant diff --git a/Socket/Protocols/INet/INet6Address.cci b/Socket/Protocols/INet/INet6Address.cci index 95e533570552f7602c1f7faf7fbecaa97b7b65c2..5a788b61a5e7f8947ab2223608623dacbbe09eb9 100644 --- a/Socket/Protocols/INet/INet6Address.cci +++ b/Socket/Protocols/INet/INet6Address.cci @@ -32,7 +32,7 @@ #define prefix_ inline ///////////////////////////////cci.p/////////////////////////////////////// -prefix_ senf::INet6Address::INet6Address(NoInit_t) +prefix_ senf::INet6Address::INet6Address(senf::NoInit_t) {} prefix_ senf::INet6Address::INet6Address(boost::uint16_t a0, boost::uint16_t a1, diff --git a/Socket/Protocols/INet/INet6Address.ct b/Socket/Protocols/INet/INet6Address.ct index 360aa9eec9e4399c964f29c539dd0c0bdefc1194..83cc00814553291d6ff8c904e38784b74518273c 100644 --- a/Socket/Protocols/INet/INet6Address.ct +++ b/Socket/Protocols/INet/INet6Address.ct @@ -36,7 +36,7 @@ template <class InputIterator> prefix_ senf::INet6Address senf::INet6Address::from_data(InputIterator i) { - INet6Address addr (INet6Address::noinit); + INet6Address addr (senf::noinit); iterator j (addr.begin()); iterator const j_end (addr.end()); for (;j!=j_end;++j,++i) diff --git a/Socket/Protocols/INet/INet6Address.hh b/Socket/Protocols/INet/INet6Address.hh index a9d0ceec3c59734255ebae95ab6394d875b69201..436d5fe187b2e3c7373c09c54620b55bbcf47d90 100644 --- a/Socket/Protocols/INet/INet6Address.hh +++ b/Socket/Protocols/INet/INet6Address.hh @@ -33,6 +33,7 @@ #include <boost/array.hpp> #include <boost/operators.hpp> #include "../../../Utils/safe_bool.hh" +#include "../../../Utils/Tags.hh" #include "INet4Address.hh" //#include "INet6Address.mpp" @@ -108,7 +109,6 @@ namespace senf { static INet6Address const AllNodes; ///< The 'all nodes' link-local multicast address static INet6Address const AllRouters; ///< The 'all routers' link-local multicast address - enum NoInit_t { noinit }; enum Resolve_t { ResolveINet6, ResolveINet4 }; /** \brief Possible scope values @@ -134,7 +134,7 @@ namespace senf { ///\name Structors and default members ///@{ - explicit INet6Address(NoInit_t); ///< Construct uninitialized (!) address + explicit INet6Address(senf::NoInit_t); ///< Construct uninitialized (!) address INet6Address(boost::uint16_t a0=0u, boost::uint16_t a1=0u, boost::uint16_t a2=0u, boost::uint16_t a3=0u, boost::uint16_t a4=0u, boost::uint16_t a5=0u, boost::uint16_t a6=0u, boost::uint16_t a7=0u); diff --git a/Socket/Protocols/Raw/MACAddress.cc b/Socket/Protocols/Raw/MACAddress.cc index 361e45772c215f2f400e0cb18d86667407820ca9..48d2a1b413b01e5d78e810e8fd6cf4022e8ce18d 100644 --- a/Socket/Protocols/Raw/MACAddress.cc +++ b/Socket/Protocols/Raw/MACAddress.cc @@ -72,7 +72,7 @@ namespace { prefix_ senf::MACAddress::MACAddress senf::MACAddress::from_string(std::string const & s) { - MACAddress mac (MACAddress::noinit); + MACAddress mac (senf::noinit); typedef boost::char_separator<char> separator; typedef boost::tokenizer<separator> tokenizer; separator sep (":-"); @@ -92,7 +92,7 @@ prefix_ senf::MACAddress senf::MACAddress::from_eui64(boost::uint64_t v) { if ( boost::uint16_t(v>>24) != 0xfffe ) throw SyntaxException(); - MACAddress mac (MACAddress::noinit); + MACAddress mac (senf::noinit); mac[0] = boost::uint8_t( v>>56 ); mac[1] = boost::uint8_t( v>>48 ); mac[2] = boost::uint8_t( v>>40 ); diff --git a/Socket/Protocols/Raw/MACAddress.cci b/Socket/Protocols/Raw/MACAddress.cci index 4db9e8598f13125b223fcfdd597d6cb94679d609..1879c90eb7eb47d243d05d729f980cb109bc5a0a 100644 --- a/Socket/Protocols/Raw/MACAddress.cci +++ b/Socket/Protocols/Raw/MACAddress.cci @@ -38,7 +38,7 @@ prefix_ senf::MACAddress::MACAddress() std::fill(begin(),end(),0u); } -prefix_ senf::MACAddress::MACAddress(NoInit_t) +prefix_ senf::MACAddress::MACAddress(senf::NoInit_t) {} prefix_ senf::MACAddress::MACAddress(boost::uint64_t v) diff --git a/Socket/Protocols/Raw/MACAddress.ct b/Socket/Protocols/Raw/MACAddress.ct index 5b62341ce4d859c13442b3ffcc1f12154461b3ec..2c6ae392dd3b86c980ac4149bf6f14dade0671f0 100644 --- a/Socket/Protocols/Raw/MACAddress.ct +++ b/Socket/Protocols/Raw/MACAddress.ct @@ -36,7 +36,7 @@ template <class InputIterator> prefix_ senf::MACAddress::MACAddress senf::MACAddress::from_data(InputIterator i) { - MACAddress mac (MACAddress::noinit); + MACAddress mac (senf::noinit); iterator j (mac.begin()); iterator const j_end (mac.end()); for (;j!=j_end;++j,++i) diff --git a/Socket/Protocols/Raw/MACAddress.hh b/Socket/Protocols/Raw/MACAddress.hh index 705c6e19c5a2ec17585d8d551338d52b19a4f939..2ddd74d37bd60c6da393f54cff7fc4c7b7ad0c02 100644 --- a/Socket/Protocols/Raw/MACAddress.hh +++ b/Socket/Protocols/Raw/MACAddress.hh @@ -33,6 +33,7 @@ #include <boost/utility.hpp> #include <boost/type_traits.hpp> #include "../../../Utils/safe_bool.hh" +#include "../../../Utils/Tags.hh" //#include "MACAddress.mpp" ///////////////////////////////hh.p//////////////////////////////////////// @@ -58,10 +59,8 @@ namespace senf { static MACAddress const Broadcast; ///< The broadcast address static MACAddress const None; ///< The empty (0) address - enum NoInit_t { noinit }; - MACAddress(); ///< Construct zero-initialized address - MACAddress(NoInit_t); ///< Construct uninitialized (!) address + MACAddress(senf::NoInit_t); ///< Construct uninitialized (!) address explicit MACAddress(boost::uint64_t v); ///< Construct MACAddress constants static MACAddress from_string(std::string const & s); diff --git a/Utils/Exception.hh b/Utils/Exception.hh index efb44f4ab356708b798d1a0d5c7b30c7942cae75..787a4998daea9dadbce588d590fa93d06244fcdb 100644 --- a/Utils/Exception.hh +++ b/Utils/Exception.hh @@ -180,8 +180,6 @@ namespace senf { */ void throwErrno(std::string const & where, int code); - enum NoThrow_t { nothrow }; - } ///////////////////////////////hh.e//////////////////////////////////////// diff --git a/Utils/Mainpage.dox b/Utils/Mainpage.dox index 5ea64f374e2b11d58816b287eb5f84d43c3abb88..e5639af6e592cf832446357c7bb9cf2a49dff449 100644 --- a/Utils/Mainpage.dox +++ b/Utils/Mainpage.dox @@ -87,6 +87,8 @@ namespace senf { <tr><td>\ref IpChecksum</td><td>calculating the 16 bit checksum used in the IP specification</td></tr> + + <tr><td>\ref utils_tags</td><td>Miscellaneous type tags</td></tr> </table> \section compatibility Compatibility diff --git a/Utils/Tags.hh b/Utils/Tags.hh new file mode 100644 index 0000000000000000000000000000000000000000..d53467295774c57961a1174e0d3f5506fea9f2e2 --- /dev/null +++ b/Utils/Tags.hh @@ -0,0 +1,100 @@ +// $Id$ +// +// Copyright (C) 2008 +// Fraunhofer Institute for Open Communication Systems (FOKUS) +// Competence Center NETwork research (NET), St. Augustin, GERMANY +// Stefan Bund <g0dil@berlios.de> +// +// 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 Tags public header */ + +#ifndef HH_Tags_ +#define HH_Tags_ 1 + +// Custom includes + +//#include "Tags.mpp" +///////////////////////////////hh.p//////////////////////////////////////// + +/** \defgroup utils_tags Type tags + + Type tags are used to select variants of a member, function, template or constructor. A Type tag + always has only a single value which is passed wherever a parameter of that tag's type is + needed. + + The argument which expects a type-tag value will always be declared in such a way, that it is + optional. Examples of type tag use are: + + \code + result = object.find<Foo>(); // This call may throw + result = object.find<Foo>(senf::nothrow); // This call will not throw + \endcode + + Of course, this only works with objects which explicitly declare, that they take an optional + senf::NoThrow_t type aprameter. + + */ + +namespace senf { + + /** \brief Type tag selecting non-throwing variant of something + + This tag is used to select the non-throwing variant of a member, function, template or + constructor. An argument of this type is always declared in such a way, that it is + optional. + + There is only a single value for this type: \ref senf::nothrow which is the value to pass + wherever an (optional) senf::NoThrow_t parameter is requested. + + \see \ref utils_tags + \ingroup utils_tags + */ + enum NoThrow_t { nothrow }; + + /** \brief Type tag selecting uninitialized variant of something + + This tag is used to select the unititialized variant of a member, function, template or + constructor (mostly a constructor). An argument of this type is always declared in such a + way, that it is optional. + + There is only a single value for this type: \ref senf::noinit which is the value to pass + wherever an (optional) senf::NoInit_t parameter is requested. + + \see \ref utils_tags + \ingroup utils_tags + */ + enum NoInit_t { noinit }; + +} + +///////////////////////////////hh.e//////////////////////////////////////// +//#include "Tags.cci" +//#include "Tags.ct" +//#include "Tags.cti" +#endif + + +// 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: diff --git a/Utils/Tags.test.cc b/Utils/Tags.test.cc new file mode 100644 index 0000000000000000000000000000000000000000..c58dad5f370323170b104b5d338a2ce4948c57ed --- /dev/null +++ b/Utils/Tags.test.cc @@ -0,0 +1,52 @@ +// $Id$ +// +// Copyright (C) 2008 +// Fraunhofer Institute for Open Communication Systems (FOKUS) +// Competence Center NETwork research (NET), St. Augustin, GERMANY +// Stefan Bund <g0dil@berlios.de> +// +// 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 Tags.test unit tests */ + +//#include "Tags.test.hh" +//#include "Tags.test.ih" + +// Custom includes +#include "Tags.hh" + +#include <boost/test/auto_unit_test.hpp> +#include <boost/test/test_tools.hpp> + +#define prefix_ +///////////////////////////////cc.p//////////////////////////////////////// + +// Nothing to test + +///////////////////////////////cc.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: