diff --git a/src/node/address.cc b/src/node/address.cc index 0cc37b1a2..5228da710 100644 --- a/src/node/address.cc +++ b/src/node/address.cc @@ -107,6 +107,16 @@ Address::Register (void) return type; } +Address::Address (PValue value) +{ + *this = ClassValueHelperExtractFrom (value); +} +Address::operator PValue () const +{ + return ClassValueHelperConvertTo (this); +} + + bool operator == (const Address &a, const Address &b) { NS_ASSERT (a.m_type == b.m_type || @@ -159,6 +169,12 @@ std::ostream& operator<< (std::ostream& os, const Address & address) return os; } +std::istream& operator>> (std::istream& is, Address & address) +{ + // XXX: need to be able to parse this. + return is; +} + } // namespace ns3 diff --git a/src/node/address.h b/src/node/address.h index aedc940d4..911bda30d 100644 --- a/src/node/address.h +++ b/src/node/address.h @@ -3,6 +3,8 @@ #include #include +#include "ns3/value.h" +#include "ns3/class-value-helper.h" namespace ns3 { @@ -151,6 +153,9 @@ public: * \returns a new type id. */ static uint8_t Register (void); + + Address (PValue value); + operator PValue () const; private: friend bool operator == (const Address &a, const Address &b); friend bool operator < (const Address &a, const Address &b); @@ -165,6 +170,40 @@ bool operator == (const Address &a, const Address &b); bool operator != (const Address &a, const Address &b); bool operator < (const Address &a, const Address &b); std::ostream& operator<< (std::ostream& os, const Address & address); +std::istream& operator>> (std::istream& is, Address & address); + +class AddressValue : public Value {}; +class AddressParamSpec : public ParamSpec {}; + +template +Ptr +MakeAddressParamSpec (T1 a1, Address initialValue); + +template +Ptr +MakeAddressParamSpec (T1 a1, T2 a2, Address initialValue); + +} // namespace ns3 + +namespace ns3 { + +template +Ptr +MakeAddressParamSpec (T1 a1, Address initialValue) +{ + return MakeClassValueHelperParamSpec + (a1, initialValue); +} + +template +Ptr +MakeAddressParamSpec (T1 a1, T2 a2, Address initialValue) +{ + return MakeClassValueHelperParamSpec + (a1, a2, initialValue); +} + + } // namespace ns3