Small changes in in FIB re-implementations with tries, rescanned python bindings
diff --git a/model/ccnx-fib-impl.h b/model/ccnx-fib-impl.h
index 5ef9610..071c07d 100644
--- a/model/ccnx-fib-impl.h
+++ b/model/ccnx-fib-impl.h
@@ -29,11 +29,39 @@
namespace ns3 {
+class CcnxFibEntryImpl : public CcnxFibEntry
+{
+public:
+ typedef ndnSIM::trie_with_policy<
+ CcnxNameComponents,
+ ndnSIM::smart_pointer_payload_traits<CcnxFibEntryImpl>,
+ ndnSIM::empty_policy_traits
+ > trie;
+
+ CcnxFibEntryImpl (const Ptr<const CcnxNameComponents> &prefix)
+ : CcnxFibEntry (prefix)
+ , item_ (0)
+ {
+ }
+
+ void
+ SetTrie (trie::iterator item)
+ {
+ item_ = item;
+ }
+
+ trie::iterator to_iterator () { return item_; }
+ trie::const_iterator to_iterator () const { return item_; }
+
+private:
+ trie::iterator item_;
+};
+
struct CcnxFibEntryContainer
{
typedef ndnSIM::trie_with_policy<
CcnxNameComponents,
- ndnSIM::smart_pointer_payload_traits<CcnxFibEntry>,
+ ndnSIM::smart_pointer_payload_traits<CcnxFibEntryImpl>,
ndnSIM::empty_policy_traits
> type;
};
@@ -140,14 +168,9 @@
*/
template<typename Modifier>
bool
- modify (CcnxFib::iterator position, Modifier mod)
+ modify (CcnxFib::iterator item, Modifier mod)
{
- mod (*position);
-
- return true;
- // somehow we need to obtain trie iterator from the payload...
- // super::getPolicy ().
- // return super::modify (position, mod);
+ return super::modify (StaticCast<CcnxFibEntryImpl> (item)->to_iterator (), mod);
}
protected:
@@ -162,7 +185,6 @@
*/
void
Remove (super::parent_trie &item, Ptr<CcnxFace> face);
-
private:
Ptr<Node> m_node;