X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Socket%2FProtocols%2FINet%2FINet4Address.cci;h=b85ddafdb6f303010be960a68c403e674da5cac4;hb=10985d71f77b627bc4da543d7114feb7c4529329;hp=74ac44345a32b2cdfe80b657191a1b7639c73d0a;hpb=408efb5a03252b4a278f69ab9bc588af438c55de;p=senf.git diff --git a/Socket/Protocols/INet/INet4Address.cci b/Socket/Protocols/INet/INet4Address.cci index 74ac443..b85ddaf 100644 --- a/Socket/Protocols/INet/INet4Address.cci +++ b/Socket/Protocols/INet/INet4Address.cci @@ -44,6 +44,23 @@ prefix_ senf::INet4Address senf::INet4Address::from_inaddr(inaddr_type v) return INet4Address(v,IsInAddr); } +prefix_ senf::INet4Address::inaddr_type & senf::INet4Address::iref() +{ + return *reinterpret_cast(&(*this)[0]); +} + +prefix_ senf::INet4Address::inaddr_type senf::INet4Address::iref() + const +{ + return *reinterpret_cast(&(*this)[0]); +} + +prefix_ senf::INet4Address::inaddr_type senf::INet4Address::inaddr() + const +{ + return iref(); +} + prefix_ senf::INet4Address::INet4Address(inaddr_type addr, InAddr_t) { iref() = addr; @@ -61,25 +78,27 @@ prefix_ bool senf::INet4Address::boolean_test() return inaddr(); } -prefix_ senf::INet4Address::inaddr_type senf::INet4Address::inaddr() +/////////////////////////////////////////////////////////////////////////// +// senf::INet4Network + +prefix_ unsigned senf::INet4Network::prefix_len() const { - return iref(); + return prefix_len_; } -prefix_ senf::INet4Address::inaddr_type & senf::INet4Address::iref() -{ - return *reinterpret_cast(&(*this)[0]); -} +//////////////////////////////////////// +// private members -prefix_ senf::INet4Address::inaddr_type senf::INet4Address::iref() +prefix_ boost::uint32_t senf::INet4Network::mask() const { - return *reinterpret_cast(&(*this)[0]); + // This is correct as long as the system is using 2-complement arithmetic ... + return (~((boost::uint32_t(1u)<<(32u-prefix_len()))-1u)) & 0xFFFFFFFFu; } -/////////////////////////////////////////////////////////////////////////// -// senf::INet4Network +//////////////////////////////////////// +// public members prefix_ senf::INet4Network::INet4Network() : prefix_len_(), address_() @@ -95,12 +114,6 @@ prefix_ senf::INet4Address const & senf::INet4Network::address() return address_; } -prefix_ unsigned senf::INet4Network::prefix_len() - const -{ - return prefix_len_; -} - prefix_ bool senf::INet4Network::boolean_test() const { @@ -135,16 +148,6 @@ prefix_ senf::INet4Network senf::INet4Network::subnet(boost::uint32_t net, unsig return INet4Network(host(net << (32-prefix_len)),prefix_len); } -//////////////////////////////////////// -// private members - -prefix_ boost::uint32_t senf::INet4Network::mask() - const -{ - // This is correct as long as the system is using 2-complement arithmetic ... - return (~((boost::uint32_t(1u)<<(32u-prefix_len()))-1u)) & 0xFFFFFFFFu; -} - /////////////////////////////////////////////////////////////////////////// // namespace members