[svn] commit: r3875 - in /branches/trac397focused/src/lib/datasrc: rbtree.h tests/rbtree_unittest.cc

BIND 10 source code commits bind10-changes at lists.isc.org
Fri Dec 17 07:02:20 UTC 2010


Author: hanfeng
Date: Fri Dec 17 07:02:20 2010
New Revision: 3875

Log:
modify the typedef name, remove invalid comments caused by implementation modification

Modified:
    branches/trac397focused/src/lib/datasrc/rbtree.h
    branches/trac397focused/src/lib/datasrc/tests/rbtree_unittest.cc

Modified: branches/trac397focused/src/lib/datasrc/rbtree.h
==============================================================================
--- branches/trac397focused/src/lib/datasrc/rbtree.h (original)
+++ branches/trac397focused/src/lib/datasrc/rbtree.h Fri Dec 17 07:02:20 2010
@@ -12,6 +12,10 @@
 // OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 // PERFORMANCE OF THIS SOFTWARE.
 
+/// \note Although the purpose of the RBTree is to provide a generic map with 
+/// domain name as key. Because of some unresolved design issue, the design and 
+/// interface is not fixed, RBTree isn't ready to be used as a base data sturct 
+/// by other modules.
 #ifndef _RBTREE_H
 #define _RBTREE_H 1
 
@@ -59,20 +63,12 @@
 ///
 /// \note \c RBNode basically used internally by RBTree, it is meaningless to
 /// inherited from it or create it without \c RBTree.
-/// For data stored in \c RBNode, RBNode will hold the ownership, therefore RBNode
-/// will release it(call the deconstructor)finally, so it will be has problem if two
-/// RBNode store the same data, or the data RBNode managed is delete outside RBNode
-/// both will cause double delete.
-///
-/// \todo It's really bad practce split the memory allocate and delete into seperate
-/// classes, it's planed to add deleter functor as one template paremeter and
-/// use it to release the data. but now let's just use this simple design
 template <typename T>
 class RBNode : public boost::noncopyable {
 public:
     /// only \c RBTree can create and destroy \c RBNode
     friend class RBTree<T>;
-    typedef boost::shared_ptr<T> NodeDataType;
+    typedef boost::shared_ptr<T> NodeDataPtr;
 
     /// \name Deonstructor
     /// \note it's seems a little strange that constructor is private
@@ -85,8 +81,7 @@
 
     /// \name Test functions
     //@{
-    /// \brief return the name of current node, it's relative to its top node
-    ///
+    /// \brief return the name of current node, it's relative to its top node ///
     /// To get the absolute name of one node, the node path from the top node
     /// to current node has to be recorded
     const isc::dns::Name& getName() const { return (name_); }
@@ -94,9 +89,9 @@
     /// \brief return the data store in this node
     /// \note, since the data is managed by RBNode, developer should not
     /// free the pointer
-    NodeDataType& getData() { return (data_); }
+    NodeDataPtr& getData() { return (data_); }
     /// \brief return the data stored in this node, read-only version
-    const NodeDataType& getData() const { return (data_); }
+    const NodeDataPtr& getData() const { return (data_); }
 
     /// \brief return whether the node has related data
     /// \note it's meaningless has empty \c RBNode in one RBTree, the only
@@ -108,14 +103,13 @@
     /// \name Modify functions
     //@{
     /// \breif set the data stored in the node
-    void setData(const NodeDataType& data) { data_ = data;}
+    void setData(const NodeDataPtr& data) { data_ = data;}
     //@}
 
 
 private:
     /// \brief Define rbnode color
     enum RBNodeColor {BLACK, RED};
-
 
     /// \name Constructors
     /// \note \c Single RBNode is meaningless without living inside one \c RBTree
@@ -134,13 +128,11 @@
     RBNode(const isc::dns::Name& name);
     //@}
 
-
     /// This is a factory class method of a special singleton null node.
     static RBNode<T>* NULL_NODE() {
         static RBNode<T> null_node;
         return (&null_node);
     }
-
 
     /// data to maintain the rbtree balance
     RBNode<T>*  parent_;
@@ -148,9 +140,8 @@
     RBNode<T>*  right_;
     RBNodeColor color_;
 
-
     isc::dns::Name     name_;
-    NodeDataType       data_;
+    NodeDataPtr       data_;
     /// the down pointer points to the root node of sub domains of current
     /// domain
     /// \par Adding down pointer to \c RBNode is for two purpose:
@@ -615,7 +606,6 @@
     return (node);
 }
 
-
 template <typename T>
 RBNode<T>*
 RBTree<T>::rightRotate(RBNode<T>** root, RBNode<T>* node) {

Modified: branches/trac397focused/src/lib/datasrc/tests/rbtree_unittest.cc
==============================================================================
--- branches/trac397focused/src/lib/datasrc/tests/rbtree_unittest.cc (original)
+++ branches/trac397focused/src/lib/datasrc/tests/rbtree_unittest.cc Fri Dec 17 07:02:20 2010
@@ -52,27 +52,27 @@
 protected:
     RBTreeTest() : rbtree() {
         rbtree.insert(Name("c"), &rbtnode);
-        rbtnode->setData(RBNode<int>::NodeDataType(new int(1)));
+        rbtnode->setData(RBNode<int>::NodeDataPtr(new int(1)));
         rbtree.insert(Name("b"), &rbtnode);
-        rbtnode->setData(RBNode<int>::NodeDataType(new int(2)));
+        rbtnode->setData(RBNode<int>::NodeDataPtr(new int(2)));
         rbtree.insert(Name("a"), &rbtnode);
-        rbtnode->setData(RBNode<int>::NodeDataType(new int(3)));
+        rbtnode->setData(RBNode<int>::NodeDataPtr(new int(3)));
         rbtree.insert(Name("x.d.e.f"), &rbtnode);
-        rbtnode->setData(RBNode<int>::NodeDataType(new int(4)));
+        rbtnode->setData(RBNode<int>::NodeDataPtr(new int(4)));
         rbtree.insert(Name("z.d.e.f"), &rbtnode);
-        rbtnode->setData(RBNode<int>::NodeDataType(new int(5)));
+        rbtnode->setData(RBNode<int>::NodeDataPtr(new int(5)));
         rbtree.insert(Name("g.h"), &rbtnode);
-        rbtnode->setData(RBNode<int>::NodeDataType(new int(6)));
+        rbtnode->setData(RBNode<int>::NodeDataPtr(new int(6)));
         rbtree.insert(Name("i.g.h"), &rbtnode);
-        rbtnode->setData(RBNode<int>::NodeDataType(new int(7)));
+        rbtnode->setData(RBNode<int>::NodeDataPtr(new int(7)));
         rbtree.insert(Name("o.w.y.d.e.f"), &rbtnode);
-        rbtnode->setData(RBNode<int>::NodeDataType(new int(8)));
+        rbtnode->setData(RBNode<int>::NodeDataPtr(new int(8)));
         rbtree.insert(Name("j.z.d.e.f"), &rbtnode);
-        rbtnode->setData(RBNode<int>::NodeDataType(new int(9)));
+        rbtnode->setData(RBNode<int>::NodeDataPtr(new int(9)));
         rbtree.insert(Name("p.w.y.d.e.f"), &rbtnode);
-        rbtnode->setData(RBNode<int>::NodeDataType(new int(10)));
+        rbtnode->setData(RBNode<int>::NodeDataPtr(new int(10)));
         rbtree.insert(Name("q.w.y.d.e.f"), &rbtnode);
-        rbtnode->setData(RBNode<int>::NodeDataType(new int(11)));
+        rbtnode->setData(RBNode<int>::NodeDataPtr(new int(11)));
     }
     RBTree<int> rbtree;
     RBNode<int>* rbtnode;
@@ -85,7 +85,7 @@
 }
 
 TEST_F(RBTreeTest, setGetData) {
-    rbtnode->setData(RBNode<int>::NodeDataType(new int(11)));
+    rbtnode->setData(RBNode<int>::NodeDataPtr(new int(11)));
     EXPECT_EQ(11, *(rbtnode->getData()));
 }
 
@@ -100,7 +100,7 @@
 
     EXPECT_EQ(RBTree<int>::SUCCEED, rbtree.insert(Name("example.com"), &rbtnode));
     EXPECT_EQ(15, rbtree.getNodeCount());
-    rbtnode->setData(RBNode<int>::NodeDataType(new int(12)));
+    rbtnode->setData(RBNode<int>::NodeDataPtr(new int(12)));
 
     // return ALREADYEXIST, since node "example.com" already has been explicitly inserted
     EXPECT_EQ(RBTree<int>::ALREADYEXIST, rbtree.insert(Name("example.com"), &rbtnode));




More information about the bind10-changes mailing list