]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[2498] Add operator= and use scoped_ptr in HINFO and NAPTR
authorJelte Jansen <jelte@isc.org>
Mon, 14 Jan 2013 10:08:31 +0000 (11:08 +0100)
committerJelte Jansen <jelte@isc.org>
Mon, 14 Jan 2013 10:08:31 +0000 (11:08 +0100)
src/lib/dns/rdata/generic/hinfo_13.cc
src/lib/dns/rdata/generic/hinfo_13.h
src/lib/dns/rdata/generic/naptr_35.cc
src/lib/dns/rdata/generic/naptr_35.h
src/lib/dns/tests/rdata_hinfo_unittest.cc
src/lib/dns/tests/rdata_naptr_unittest.cc

index f205497b84faa3a6554c63ea9b6b386a88d40819..07649517ee1c7b23c1ee553f019f9e7377fdb746 100644 (file)
@@ -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
index 045d7fedf5d3d48f41248fb00ee925345185d963..a2018f5bf6c4d9e2abf4e023257f394fca9c982e 100644 (file)
@@ -17,6 +17,9 @@
 
 #include <string>
 
+#include <boost/scoped_ptr.hpp>
+#include <boost/noncopyable.hpp>
+
 #include <dns/name.h>
 #include <dns/rdata.h>
 #include <util/buffer.h>
@@ -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 <typename T>
     void toWireHelper(T& outputer) const;
 
-    HINFOImpl* impl_;
+    boost::scoped_ptr<HINFOImpl> impl_;
 };
 
 
index 352b887381824d2142ad6247b7935af5c555d6c8..78bf472b4246aa5933ad52603a706888601c67c1 100644 (file)
@@ -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
index 567630224dae565611bf963dbdbf7e5411474305..a2e2caeda92bdd86b04117364401fa6d3a2d3a01 100644 (file)
@@ -16,6 +16,8 @@
 
 #include <string>
 
+#include <boost/scoped_ptr.hpp>
+
 #include <dns/name.h>
 #include <dns/rdata.h>
 #include <util/buffer.h>
@@ -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 <typename T>
     void toWireHelper(T& outputer) const;
 
-    NAPTRImpl* impl_;
+    boost::scoped_ptr<NAPTRImpl> impl_;
 };
 
 // END_RDATA_NAMESPACE
index 8d1b797f9581c3275fd0cf41381bbbc158918051..0795e0b1d1fd834277c038a17df2371f76374919 100644 (file)
@@ -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));
+}
+
 }
index 159a7b1cd41d15824559558a22d2d18c0c1dd864..6f2526bb94d85084b358e2421ff691e2b5fc41f0 100644 (file)
@@ -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));
 }
 
 }