Bug #88 (Ipv4Address operator ==, !=, < should be inline for performance reasons)
authorGustavo J. A. M. Carneiro <gjc@inescporto.pt>
Thu, 11 Oct 2007 15:39:39 +0100
changeset 1709 3e0426f2c26a
parent 1708 b1ea1131c106
child 1767 22e95c5a41c4
Bug #88 (Ipv4Address operator ==, !=, < should be inline for performance reasons)
src/node/ipv4-address.cc
src/node/ipv4-address.h
--- a/src/node/ipv4-address.cc	Thu Oct 11 17:59:59 2007 +0200
+++ b/src/node/ipv4-address.cc	Thu Oct 11 15:39:39 2007 +0100
@@ -151,16 +151,6 @@
   m_address = AsciiToIpv4Host (address);
 }
 
-bool 
-Ipv4Address::IsEqual (Ipv4Address other) const
-{
-  if (other.m_address == m_address) {
-    return true;
-  } else {
-    return false;
-  }
-}
-
 Ipv4Address
 Ipv4Address::CombineMask (Ipv4Mask const &mask) const
 {
@@ -296,19 +286,6 @@
   return loopback;
 }
 
-bool operator == (Ipv4Address const &a, Ipv4Address const &b)
-{
-  return a.IsEqual (b);
-}
-bool operator != (Ipv4Address const &a, Ipv4Address const &b)
-{
-  return !a.IsEqual (b);
-}
-bool operator < (Ipv4Address const &addrA, Ipv4Address const &addrB)
-{
-  return (addrA.GetHostOrder () < addrB.GetHostOrder ());
-}
-
 size_t Ipv4AddressHash::operator()(Ipv4Address const &x) const 
 { 
   return x.GetHostOrder ();
--- a/src/node/ipv4-address.h	Thu Oct 11 17:59:59 2007 +0200
+++ b/src/node/ipv4-address.h	Thu Oct 11 15:39:39 2007 +0100
@@ -73,7 +73,10 @@
    * \param other address to which to compare this address
    * \return True if the addresses are equal. False otherwise.
    */
-  bool IsEqual (Ipv4Address other) const;
+  bool IsEqual (const Ipv4Address &other) const
+  {
+    return m_address == other.m_address;
+  }
 
   /** 
    * \brief Get the host-order 32-bit IP address
@@ -142,6 +145,10 @@
   Address ConvertTo (void) const;
   static uint8_t GetType (void);
   uint32_t m_address;
+
+  friend bool operator == (Ipv4Address const &a, Ipv4Address const &b);
+  friend bool operator != (Ipv4Address const &a, Ipv4Address const &b);
+  friend bool operator < (Ipv4Address const &addrA, Ipv4Address const &addrB);
 };
 
 
@@ -177,9 +184,19 @@
 std::ostream& operator<< (std::ostream& os, Ipv4Address const& address);
 std::ostream& operator<< (std::ostream& os, Ipv4Mask const& mask);
 
-bool operator == (Ipv4Address const &a, Ipv4Address const &b);
-bool operator != (Ipv4Address const &a, Ipv4Address const &b);
-bool operator < (Ipv4Address const &addrA, Ipv4Address const &addrB);
+inline bool operator == (const Ipv4Address &a, const Ipv4Address &b)
+{
+  return (a.m_address == b.m_address);
+}
+inline bool operator != (const Ipv4Address &a, const Ipv4Address &b)
+{
+  return (a.m_address != b.m_address);
+}
+inline bool operator < (const Ipv4Address &a, const Ipv4Address &b)
+{
+  return (a.m_address < b.m_address);
+}
+
 
 class Ipv4AddressHash : public std::unary_function<Ipv4Address, size_t> {
 public: