From: Jelte Jansen Date: Mon, 14 Jan 2013 10:08:31 +0000 (+0100) Subject: [2498] Add operator= and use scoped_ptr in HINFO and NAPTR X-Git-Tag: bind10-1.0.0-rc-release~100^2~4^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a3e0f04e9f735501a2ef08b7d3c0de3f22849fcc;p=thirdparty%2Fkea.git [2498] Add operator= and use scoped_ptr in HINFO and NAPTR --- diff --git a/src/lib/dns/rdata/generic/hinfo_13.cc b/src/lib/dns/rdata/generic/hinfo_13.cc index f205497b84..07649517ee 100644 --- a/src/lib/dns/rdata/generic/hinfo_13.cc +++ b/src/lib/dns/rdata/generic/hinfo_13.cc @@ -96,8 +96,14 @@ HINFO::HINFO(MasterLexer& lexer, const Name*, impl_(new HINFOImpl(lexer)) {} +HINFO& +HINFO::operator=(const HINFO& source) +{ + impl_.reset(new HINFOImpl(*source.impl_)); + return (*this); +} + HINFO::~HINFO() { - delete impl_; } std::string @@ -149,5 +155,9 @@ HINFO::toWireHelper(T& outputer) const { outputer.writeData(&impl_->os[0], impl_->os.size()); } +void HINFO::ptr() const { + std::cout << "[XX] PTR: " << impl_.get() << std::endl; +} + // END_RDATA_NAMESPACE // END_ISC_NAMESPACE diff --git a/src/lib/dns/rdata/generic/hinfo_13.h b/src/lib/dns/rdata/generic/hinfo_13.h index 045d7fedf5..a2018f5bf6 100644 --- a/src/lib/dns/rdata/generic/hinfo_13.h +++ b/src/lib/dns/rdata/generic/hinfo_13.h @@ -17,6 +17,9 @@ #include +#include +#include + #include #include #include @@ -44,9 +47,12 @@ public: // HINFO specific methods ~HINFO(); + HINFO& operator=(const HINFO&); + const std::string getCPU() const; const std::string getOS() const; + void ptr() const; private: /// Helper template function for toWire() /// @@ -54,7 +60,7 @@ private: template void toWireHelper(T& outputer) const; - HINFOImpl* impl_; + boost::scoped_ptr impl_; }; diff --git a/src/lib/dns/rdata/generic/naptr_35.cc b/src/lib/dns/rdata/generic/naptr_35.cc index 352b887381..78bf472b42 100644 --- a/src/lib/dns/rdata/generic/naptr_35.cc +++ b/src/lib/dns/rdata/generic/naptr_35.cc @@ -141,8 +141,14 @@ NAPTR::NAPTR(const NAPTR& naptr) : Rdata(), impl_(new NAPTRImpl(*naptr.impl_)) {} +NAPTR& +NAPTR::operator=(const NAPTR& source) +{ + impl_.reset(new NAPTRImpl(*source.impl_)); + return (*this); +} + NAPTR::~NAPTR() { - delete impl_; } void diff --git a/src/lib/dns/rdata/generic/naptr_35.h b/src/lib/dns/rdata/generic/naptr_35.h index 567630224d..a2e2caeda9 100644 --- a/src/lib/dns/rdata/generic/naptr_35.h +++ b/src/lib/dns/rdata/generic/naptr_35.h @@ -16,6 +16,8 @@ #include +#include + #include #include #include @@ -43,6 +45,8 @@ public: // NAPTR specific methods ~NAPTR(); + NAPTR& operator=(const NAPTR& source); + uint16_t getOrder() const; uint16_t getPreference() const; const std::string getFlags() const; @@ -56,7 +60,7 @@ private: template void toWireHelper(T& outputer) const; - NAPTRImpl* impl_; + boost::scoped_ptr impl_; }; // END_RDATA_NAMESPACE diff --git a/src/lib/dns/tests/rdata_hinfo_unittest.cc b/src/lib/dns/tests/rdata_hinfo_unittest.cc index 8d1b797f95..0795e0b1d1 100644 --- a/src/lib/dns/tests/rdata_hinfo_unittest.cc +++ b/src/lib/dns/tests/rdata_hinfo_unittest.cc @@ -136,4 +136,17 @@ TEST_F(Rdata_HINFO_Test, compare) { EXPECT_EQ(-1, hinfo.compare(HINFO(hinfo_str_large2))); } +// Copy/assign test +TEST_F(Rdata_HINFO_Test, copy) { + HINFO hinfo(hinfo_str); + HINFO hinfo2(hinfo); + HINFO hinfo3 = hinfo; + + EXPECT_EQ(0, hinfo.compare(hinfo2)); + EXPECT_EQ(0, hinfo.compare(hinfo3)); + + hinfo3 = hinfo; + EXPECT_EQ(0, hinfo.compare(hinfo3)); +} + } diff --git a/src/lib/dns/tests/rdata_naptr_unittest.cc b/src/lib/dns/tests/rdata_naptr_unittest.cc index 159a7b1cd4..6f2526bb94 100644 --- a/src/lib/dns/tests/rdata_naptr_unittest.cc +++ b/src/lib/dns/tests/rdata_naptr_unittest.cc @@ -219,7 +219,18 @@ TEST_F(Rdata_NAPTR_Test, compare) { EXPECT_EQ(1, naptr_large3.compare(naptr)); EXPECT_EQ(1, naptr_large4.compare(naptr)); EXPECT_EQ(1, naptr_large5.compare(naptr)); +} + +TEST_F(Rdata_NAPTR_Test, copy) { + NAPTR naptr(naptr_str); + NAPTR naptr2(naptr); + NAPTR naptr3 = naptr; + + EXPECT_EQ(0, naptr.compare(naptr2)); + EXPECT_EQ(0, naptr.compare(naptr3)); + naptr3 = naptr; + EXPECT_EQ(0, naptr.compare(naptr3)); } }