diff --git a/Socket/Protocols/Raw/MACAddress.cc b/Socket/Protocols/Raw/MACAddress.cc index 4ab2e3f81f931a18583e465591a84ab46f3c11b7..c12b0ed4aaa3c324837b74c392c6d4daf01d016f 100644 --- a/Socket/Protocols/Raw/MACAddress.cc +++ b/Socket/Protocols/Raw/MACAddress.cc @@ -28,6 +28,8 @@ // Custom includes #include <iomanip> +#include <string> +#include <sstream> #include <boost/tokenizer.hpp> #include <boost/io/ios_state.hpp> #include <boost/range.hpp> @@ -105,6 +107,12 @@ prefix_ senf::MACAddress senf::MACAddress::from_eui64(boost::uint64_t v) senf::MACAddress const senf::MACAddress::Broadcast = senf::MACAddress(0xFFFFFFFFFFFFull); senf::MACAddress const senf::MACAddress::None; +prefix_ std::string senf::MACAddress::toString() const { + std::ostringstream tmp; + tmp << (*this); + return tmp.str(); +} + /////////////////////////////////////////////////////////////////////////// // namespace members diff --git a/Socket/Protocols/Raw/MACAddress.hh b/Socket/Protocols/Raw/MACAddress.hh index 9165c059ea5ca1cb64c7b9b388f158f10cd7f5c9..de52a30736a0224d4ac91a973853640f65709d0d 100644 --- a/Socket/Protocols/Raw/MACAddress.hh +++ b/Socket/Protocols/Raw/MACAddress.hh @@ -67,7 +67,14 @@ namespace senf { INet6Address(0x2001u,0xDB8u,0x1u,0x0u,0x001Au,0x2BFFu,0xFE3Cu,0x3D5Fu).id()) \endcode - Since MACAddress is based on \c boost::array, you can access the raw data bytes of the + Since MACAddress is based on \c boo Ziel, aber nur ein paar davon sind standardkomform. + +Der aktuelle C++ Standard unterstützt drei verschiedene Möglichkeiten eine Zahl in einen String umzuwandeln. Diese Möglichkeiten sind: + + * sprintf + * std::strstream + * std::stringstream + st::array, you can access the raw data bytes of the address using \c begin(), \c end() or \c operator[]: \code MACAddress mac = ...; @@ -128,6 +135,8 @@ namespace senf { boost::uint32_t nic() const; ///< Return last 3 bytes of the address boost::uint64_t eui64() const; ///< Build EUI-64 from the MAC address + + std::string toString() const; ///< Return string representation of MAC address like 12:34:56:78:90:ab }; diff --git a/Socket/Protocols/Raw/MACAddress.test.cc b/Socket/Protocols/Raw/MACAddress.test.cc index d4126e00e2457d0558249502e3b0155a9aebf108..df256c9c97fa887fbc035ed7735e8e93909803a2 100644 --- a/Socket/Protocols/Raw/MACAddress.test.cc +++ b/Socket/Protocols/Raw/MACAddress.test.cc @@ -39,7 +39,8 @@ BOOST_AUTO_UNIT_TEST(macAddress) { - senf::MACAddress mac (senf::MACAddress::from_string("A1-b2-C3:d4:E5:f6")); + std::string test ("A1-b2-C3:d4:E5:f6"); + senf::MACAddress mac (senf::MACAddress::from_string(test)); BOOST_CHECK_EQUAL( mac[0], 0xA1u ); BOOST_CHECK_EQUAL( mac[1], 0xB2u ); @@ -51,7 +52,8 @@ BOOST_AUTO_UNIT_TEST(macAddress) std::stringstream str; str << mac; BOOST_CHECK_EQUAL( str.str(), "a1:b2:c3:d4:e5:f6" ); - + BOOST_CHECK_EQUAL (mac.toString(), "a1:b2:c3:d4:e5:f6"); + BOOST_CHECK( ! mac.local() ); BOOST_CHECK( mac.multicast() ); BOOST_CHECK( ! mac.broadcast() );