Update trie and adding policy management
diff --git a/examples/trie.cc b/examples/trie.cc
index 4a70a87..36e52ac 100644
--- a/examples/trie.cc
+++ b/examples/trie.cc
@@ -30,43 +30,71 @@
{
public:
Integer (int value) : value_ (value) {}
-
+
+ operator int () const { return value_; }
private:
int value_;
};
+std::ostream &
+operator << (std::ostream &os, const Integer &i)
+{
+ os << (int)i;
+ return os;
+}
+
int
main (int argc, char *argv[])
{
- trie<ns3::CcnxNameComponents, Integer, smart_pointer_payload_traits<Integer> > *x =
- new trie<ns3::CcnxNameComponents, Integer, smart_pointer_payload_traits<Integer> >("root");
-
- ns3::CcnxNameComponents n1,n2,n3,n5;
+ typedef indexed_trie<ns3::CcnxNameComponents, Integer, smart_pointer_payload_traits<Integer> > trie;
+ trie x;
+ x.getPolicy ().set_max_size (2);
+
+ // x.getTrie ().PrintStat (std::cout);
+
+ ns3::CcnxNameComponents n1,n2,n3,n4;
n1("a")("b")("c");
- n2("a")("c");
- n3("b")("c");
- n5("a")("b");
+ n2("a")("b")("d");
+ n3("a")("b")("f");
+ n4("a")("b");
ns3::Ptr<Integer> i = ns3::Create<Integer> (1);
- x->insert (n1, i);
- x->insert (n2, i);
- x->insert (n3, i);
- x->insert (n5, i);
+ x.insert (n4, ns3::Create<Integer> (4));
- ns3::CcnxNameComponents n4;
- n4("a")("c");
+
+
+ x.insert (n3, ns3::Create<Integer> (3));
+
+ std::pair< trie::iterator, bool > item =
+ x.insert (n2, ns3::Create<Integer> (2));
+ x.erase (item.first);
+
+ x.insert (n1, ns3::Create<Integer> (1));
+ x.find (n1);
+ x.insert (n4, ns3::Create<Integer> (4));
+
+ // std::cout << x.getTrie ();
+ BOOST_FOREACH (const trie::parent_trie &item, x.getPolicy ())
+ {
+ std::cout << *item.payload () << " " << std::endl;
+ }
+
+ // ns3::CcnxNameComponents n4;
+ // n4("a")("c");
- // std::cout << *x->find (n4).get<0> ();
+ // // std::cout << *x->find (n4).get<0> ();
- x->prune ();
- // x->find (n5).get<0> ()->erase ();
- x->find (n1).get<0> ()->erase ();
+ // x->prune ();
+ // // x->find (n5).get<0> ()->erase ();
+ // x->find (n1).get<0> ()->erase ();
- std::cout << "digraph trie {\n";
- std::cout << *x;
- std::cout << "}\n";
+ // std::cout << "digraph trie {\n";
+ // std::cout << *x;
+ // std::cout << "}\n";
- delete x;
+ // x->PrintStat (std::cout);
+
+ // delete x;
return 0;
}