Refactoring of Name::Components into CcnxNameComponents
diff --git a/apps/ccnx-interest-sender.cc b/apps/ccnx-interest-sender.cc
index f7b7ac0..6ca40a3 100644
--- a/apps/ccnx-interest-sender.cc
+++ b/apps/ccnx-interest-sender.cc
@@ -37,14 +37,14 @@
TimeValue (Seconds (0.1)),
MakeTimeAccessor (&CcnxInterestSender::m_offTime),
MakeTimeChecker ())
- /*.AddAttribute ("NameComponents","CcnxName of the Interest (use Name::Components)",
- Name::ComponentsValue(Name::Components()),
- Name::MakeComponentsAccessor(&CcnxInterestSender::m_interestName),
- Name::MakeComponentsChecker())*/
- .AddAttribute ("NameComponents","CcnxName of the Interest (use Name::Components)",
- PointerValue (CreateObject<Name::Components> ()),
+ /*.AddAttribute ("NameComponents","CcnxName of the Interest (use CcnxNameComponents)",
+ CcnxNameComponentsValue(CcnxNameComponents()),
+ MakeCcnxNameComponentsAccessor(&CcnxInterestSender::m_interestName),
+ MakeCcnxNameComponentsChecker())*/
+ .AddAttribute ("InterestName","CcnxName of the Interest (use CcnxNameComponents)",
+ PointerValue (CreateObject<CcnxNameComponents> ()),
MakePointerAccessor (&CcnxInterestSender::m_interestName),
- MakePointerChecker<Name::Components> ())
+ MakePointerChecker<CcnxNameComponents> ())
.AddAttribute ("LifeTime", "LifeTime fo interest packet",
TimeValue (Seconds (4.0)),
MakeTimeAccessor (&CcnxInterestSender::m_interestLifeTime),
@@ -61,14 +61,14 @@
BooleanValue(false),
MakeBooleanAccessor(&CcnxInterestSender::m_childSelector),
MakeBooleanChecker())
- /*.AddAttribute ("Exclude","only simple name matching is supported (use Name::Components)",
- Name::ComponentsValue(Name::Components()),
- Name::MakeComponentsAccessor(&CcnxInterestSender::m_exclude),
- Name::MakeComponentsChecker())*/
- .AddAttribute ("Exclude", "only simple name matching is supported (use Name::Components)",
- PointerValue (CreateObject<Name::Components> ()),
+ /*.AddAttribute ("Exclude","only simple name matching is supported (use CcnxNameComponents)",
+ CcnxNameComponentsValue(CcnxNameComponents()),
+ MakeCcnxNameComponentsAccessor(&CcnxInterestSender::m_exclude),
+ MakeCcnxNameComponentsChecker())*/
+ .AddAttribute ("Exclude", "only simple name matching is supported (use CcnxNameComponents)",
+ PointerValue (CreateObject<CcnxNameComponents> ()),
MakePointerAccessor (&CcnxInterestSender::m_exclude),
- MakePointerChecker<Name::Components> ())
+ MakePointerChecker<CcnxNameComponents> ())
.AddAttribute ("Initial Nonce", "If 0 then nonce is not used",
UintegerValue(1),
MakeUintegerAccessor(&CcnxInterestSender::m_initialNonce),
@@ -143,11 +143,11 @@
uint32_t randomNonce = UniformVariable().GetInteger(1, std::numeric_limits<uint32_t>::max ());
CcnxInterestHeader interestHeader;
interestHeader.SetNonce(randomNonce);
- //const Ptr<Name::Components> name = Create<Name::Components>(m_interestName);
+ //const Ptr<CcnxNameComponents> name = Create<CcnxNameComponents>(m_interestName);
interestHeader.SetName(m_interestName);
interestHeader.SetInterestLifetime(m_interestLifeTime);
interestHeader.SetChildSelector(m_childSelector);
- //const Ptr<Name::Components> exclude = Create<Name::Components>(m_exclude);
+ //const Ptr<CcnxNameComponents> exclude = Create<CcnxNameComponents>(m_exclude);
interestHeader.SetExclude(m_exclude);
interestHeader.SetMaxSuffixComponents(m_maxSuffixComponents);
interestHeader.SetMinSuffixComponents(m_minSuffixComponents);
diff --git a/apps/ccnx-interest-sender.h b/apps/ccnx-interest-sender.h
index 0a9d2b5..345da02 100644
--- a/apps/ccnx-interest-sender.h
+++ b/apps/ccnx-interest-sender.h
@@ -59,12 +59,12 @@
//Time m_onTime;
Time m_offTime;
- Ptr<Name::Components> m_interestName;
+ Ptr<CcnxNameComponents> m_interestName;
Time m_interestLifeTime;
int32_t m_minSuffixComponents;
int32_t m_maxSuffixComponents;
bool m_childSelector;
- Ptr<Name::Components> m_exclude;
+ Ptr<CcnxNameComponents> m_exclude;
uint32_t m_initialNonce;
//EventId m_startStopEvent; // Event id for next start or stop event
@@ -78,12 +78,12 @@
void Construct (Ptr<Node> n,
std::string tid,
const Time& offtime,
- Ptr<Name::Components> nameComponents,
+ Ptr<CcnxNameComponents> nameComponents,
const Time& lifetime,
const int32_t& minSuffixComponents,
const int32_t& maxSuffixComponents,
const bool childSelector,
- Ptr<Name::Components> exclude,
+ Ptr<CcnxNameComponents> exclude,
const uint32_t& initialNonce
);
diff --git a/examples/annotated-topology-read-example.cc b/examples/annotated-topology-read-example.cc
index 53018a9..63e42c4 100644
--- a/examples/annotated-topology-read-example.cc
+++ b/examples/annotated-topology-read-example.cc
@@ -30,7 +30,7 @@
#include "ns3/ipv4-list-routing-helper.h"
#include "ns3/annotated-topology-reader.h"
#include <list>
-#include "ns3/visualizer-module.h"
+//#include "ns3/visualizer-module.h"
using namespace ns3;
using namespace std;
@@ -107,7 +107,7 @@
///*** settings applied
-
+
// it creates little subnets, one for each couple of nodes.
NS_LOG_INFO ("creating ipv4 interfaces");
diff --git a/examples/ccnx-test.cc b/examples/ccnx-test.cc
index 174d29e..e6242ab 100644
--- a/examples/ccnx-test.cc
+++ b/examples/ccnx-test.cc
@@ -52,7 +52,7 @@
Ptr<CcnxRit> rit = CreateObject<CcnxRit> ();
CcnxInterestHeader header;
- Ptr<Name::Components> testname = Create<Name::Components> ();
+ Ptr<CcnxNameComponents> testname = Create<CcnxNameComponents> ();
(*testname) ("test") ("test2");
header.SetName (testname);
header.SetNonce (1);
diff --git a/helper/ccnb-parser/visitors/ccnb-parser-content-object-visitor.cc b/helper/ccnb-parser/visitors/ccnb-parser-content-object-visitor.cc
index d694f11..d252cd5 100644
--- a/helper/ccnb-parser/visitors/ccnb-parser-content-object-visitor.cc
+++ b/helper/ccnb-parser/visitors/ccnb-parser-content-object-visitor.cc
@@ -55,7 +55,7 @@
case CCN_DTAG_Name:
{
// process name components
- Ptr<Name::Components> name = Create<Name::Components> ();
+ Ptr<CcnxNameComponents> name = Create<CcnxNameComponents> ();
BOOST_FOREACH (Ptr<Block> block, n.m_nestedTags)
{
diff --git a/helper/ccnb-parser/visitors/ccnb-parser-interest-visitor.cc b/helper/ccnb-parser/visitors/ccnb-parser-interest-visitor.cc
index 70578e7..05c6beb 100644
--- a/helper/ccnb-parser/visitors/ccnb-parser-interest-visitor.cc
+++ b/helper/ccnb-parser/visitors/ccnb-parser-interest-visitor.cc
@@ -63,7 +63,7 @@
case CCN_DTAG_Name:
{
// process name components
- Ptr<Name::Components> name = Create<Name::Components> ();
+ Ptr<CcnxNameComponents> name = Create<CcnxNameComponents> ();
BOOST_FOREACH (Ptr<Block> block, n.m_nestedTags)
{
@@ -93,7 +93,7 @@
case CCN_DTAG_Exclude:
{
// process exclude components
- Ptr<Name::Components> exclude = Create<Name::Components> ();
+ Ptr<CcnxNameComponents> exclude = Create<CcnxNameComponents> ();
BOOST_FOREACH (Ptr<Block> block, n.m_nestedTags)
{
diff --git a/helper/ccnb-parser/visitors/ccnb-parser-name-components-visitor.cc b/helper/ccnb-parser/visitors/ccnb-parser-name-components-visitor.cc
index 3138be1..49b2fc5 100644
--- a/helper/ccnb-parser/visitors/ccnb-parser-name-components-visitor.cc
+++ b/helper/ccnb-parser/visitors/ccnb-parser-name-components-visitor.cc
@@ -28,13 +28,13 @@
namespace CcnbParser {
void
-NameComponentsVisitor::visit (Dtag &n, boost::any param/*should be Name::Components&*/)
+NameComponentsVisitor::visit (Dtag &n, boost::any param/*should be CcnxNameComponents&*/)
{
// uint32_t n.m_dtag;
// std::list<Ptr<Block> > n.m_nestedBlocks;
static StringVisitor stringVisitor;
- Name::Components &components = boost::any_cast<Name::Components&> (param);
+ CcnxNameComponents &components = boost::any_cast<CcnxNameComponents&> (param);
switch (n.m_dtag)
{
diff --git a/helper/ccnb-parser/visitors/ccnb-parser-name-components-visitor.h b/helper/ccnb-parser/visitors/ccnb-parser-name-components-visitor.h
index c68eb56..e4b92cf 100644
--- a/helper/ccnb-parser/visitors/ccnb-parser-name-components-visitor.h
+++ b/helper/ccnb-parser/visitors/ccnb-parser-name-components-visitor.h
@@ -28,12 +28,12 @@
/**
* \ingroup ccnx-ccnb
- * \brief Visitor to obtain fill Name::Components object with name components
+ * \brief Visitor to obtain fill CcnxNameComponents object with name components
*/
class NameComponentsVisitor : public VoidDepthFirstVisitor
{
public:
- virtual void visit (Dtag &n, boost::any param/*should be Name::Components&*/);
+ virtual void visit (Dtag &n, boost::any param/*should be CcnxNameComponents&*/);
};
}
diff --git a/helper/ccnx-encoding-helper.cc b/helper/ccnx-encoding-helper.cc
index 7783d7a..6a4d889 100644
--- a/helper/ccnx-encoding-helper.cc
+++ b/helper/ccnx-encoding-helper.cc
@@ -76,7 +76,7 @@
}
size_t
-CcnxEncodingHelper::AppendNameComponents (Buffer::Iterator start, const Name::Components &name)
+CcnxEncodingHelper::AppendNameComponents (Buffer::Iterator start, const CcnxNameComponents &name)
{
size_t written = 0;
BOOST_FOREACH (const std::string &component, name.GetComponents())
diff --git a/helper/ccnx-encoding-helper.h b/helper/ccnx-encoding-helper.h
index da5066a..6e3c1c4 100644
--- a/helper/ccnx-encoding-helper.h
+++ b/helper/ccnx-encoding-helper.h
@@ -30,7 +30,7 @@
namespace ns3 {
-namespace Name{ class Components; }
+class CcnxNameComponents;
class CcnxInterestHeader;
class CcnxContentObjectHeader;
@@ -59,7 +59,7 @@
AppendCloser (Buffer::Iterator start);
static size_t
- AppendNameComponents (Buffer::Iterator start, const Name::Components &name);
+ AppendNameComponents (Buffer::Iterator start, const CcnxNameComponents &name);
/**
* Append a binary timestamp as a BLOB using the ccn binary
diff --git a/model/ccnx-content-object-header.cc b/model/ccnx-content-object-header.cc
index d1ad0cf..ff849bc 100644
--- a/model/ccnx-content-object-header.cc
+++ b/model/ccnx-content-object-header.cc
@@ -49,12 +49,12 @@
}
void
-CcnxContentObjectHeader::SetName (const Ptr<Name::Components> &name)
+CcnxContentObjectHeader::SetName (const Ptr<CcnxNameComponents> &name)
{
m_name = name;
}
-const Name::Components&
+const CcnxNameComponents&
CcnxContentObjectHeader::GetName () const
{
return *m_name;
diff --git a/model/ccnx-content-object-header.h b/model/ccnx-content-object-header.h
index 97a8d3d..cebfd4d 100644
--- a/model/ccnx-content-object-header.h
+++ b/model/ccnx-content-object-header.h
@@ -63,12 +63,12 @@
/**
* \brief Set interest name
*
- * Sets name of the interest. For example, SetName( Name::Components("prefix")("postfix") );
+ * Sets name of the interest. For example, SetName( CcnxNameComponents("prefix")("postfix") );
**/
void
- SetName (const Ptr<Name::Components> &name);
+ SetName (const Ptr<CcnxNameComponents> &name);
- const Name::Components&
+ const CcnxNameComponents&
GetName () const;
// void
@@ -93,7 +93,7 @@
virtual uint32_t Deserialize (Buffer::Iterator start);
private:
- Ptr<Name::Components> m_name;
+ Ptr<CcnxNameComponents> m_name;
// m_signature;
// m_signedInfo;
};
diff --git a/model/ccnx-content-store.h b/model/ccnx-content-store.h
index fb68981..dfd6e30 100644
--- a/model/ccnx-content-store.h
+++ b/model/ccnx-content-store.h
@@ -73,7 +73,7 @@
* \brief Get prefix of the stored entry
* \returns prefix of the stored entry
*/
- inline const Name::Components&
+ inline const CcnxNameComponents&
GetName () const;
/**
@@ -142,7 +142,7 @@
boost::multi_index::hashed_unique<
boost::multi_index::tag<__ccnx_private_content_store::hash>,
boost::multi_index::const_mem_fun<CcnxContentStoreEntry,
- const Name::Components&,
+ const CcnxNameComponents&,
&CcnxContentStoreEntry::GetName>,
CcnxPrefixHash>,
boost::multi_index::sequenced<boost::multi_index::tag<__ccnx_private_content_store::mru> >
@@ -151,7 +151,7 @@
boost::multi_index::ordered_unique<
boost::multi_index::tag<__ccnx_private_content_store::ordered>,
boost::multi_index::const_mem_fun<CcnxContentStoreEntry,
- const Name::Components&,
+ const CcnxNameComponents&,
&CcnxContentStoreEntry::GetName>
>
#endif
@@ -271,7 +271,7 @@
return os;
}
-const Name::Components&
+const CcnxNameComponents&
CcnxContentStoreEntry::GetName () const
{
return m_header->GetName ();
diff --git a/model/ccnx-interest-header.cc b/model/ccnx-interest-header.cc
index 330e2f4..ea70a93 100644
--- a/model/ccnx-interest-header.cc
+++ b/model/ccnx-interest-header.cc
@@ -60,12 +60,12 @@
}
void
-CcnxInterestHeader::SetName (const Ptr<Name::Components> &name)
+CcnxInterestHeader::SetName (const Ptr<CcnxNameComponents> &name)
{
m_name = name;
}
-const Name::Components&
+const CcnxNameComponents&
CcnxInterestHeader::GetName () const
{
return *m_name;
@@ -96,12 +96,12 @@
}
void
-CcnxInterestHeader::SetExclude (const Ptr<Name::Components> &exclude)
+CcnxInterestHeader::SetExclude (const Ptr<CcnxNameComponents> &exclude)
{
m_exclude = exclude;
}
-const Name::Components&
+const CcnxNameComponents&
CcnxInterestHeader::GetExclude () const
{
return *m_exclude;
diff --git a/model/ccnx-interest-header.h b/model/ccnx-interest-header.h
index 0e13bb8..3b59c00 100644
--- a/model/ccnx-interest-header.h
+++ b/model/ccnx-interest-header.h
@@ -138,12 +138,12 @@
/**
* \brief Set interest name
*
- * Sets name of the interest. For example, SetName( Name::Components("prefix")("postfix") );
+ * Sets name of the interest. For example, SetName( CcnxNameComponents("prefix")("postfix") );
**/
void
- SetName (const Ptr<Name::Components> &name);
+ SetName (const Ptr<CcnxNameComponents> &name);
- const Name::Components&
+ const CcnxNameComponents&
GetName () const;
void
@@ -161,12 +161,12 @@
/**
* \brief Set exclude filer
*
- * For example, SetExclude (Name::Components("exclude1")("exclude2")("exclude3"))
+ * For example, SetExclude (CcnxNameComponents("exclude1")("exclude2")("exclude3"))
**/
void
- SetExclude (const Ptr<Name::Components> &exclude);
+ SetExclude (const Ptr<CcnxNameComponents> &exclude);
- const Name::Components&
+ const CcnxNameComponents&
GetExclude () const;
void
@@ -209,10 +209,10 @@
virtual uint32_t Deserialize (Buffer::Iterator start);
private:
- Ptr<Name::Components> m_name;
+ Ptr<CcnxNameComponents> m_name;
int32_t m_minSuffixComponents; ///< minimum suffix components. not used if negative
int32_t m_maxSuffixComponents; ///< maximum suffix components. not used if negative
- Ptr<Name::Components> m_exclude; ///< exclude filter
+ Ptr<CcnxNameComponents> m_exclude; ///< exclude filter
bool m_childSelector;
bool m_answerOriginKind;
int8_t m_scope; ///< -1 not set, 0 local scope, 1 this host, 2 immediate neighborhood
diff --git a/model/ccnx-rit.h b/model/ccnx-rit.h
index 8220759..b448320 100644
--- a/model/ccnx-rit.h
+++ b/model/ccnx-rit.h
@@ -49,11 +49,11 @@
*/
struct CcnxRitEntry
{
- Name::Components m_prefix; ///< \brief Prefix of the recently satisfied interest
+ CcnxNameComponents m_prefix; ///< \brief Prefix of the recently satisfied interest
uint32_t m_nonce; ///< \brief Nonce of the recently satisfied interest
Time m_expireTime; ///< \brief Time when the record should be removed
- CcnxRitEntry (const Name::Components &prefix, uint32_t nonce, const Time &timeout)
+ CcnxRitEntry (const CcnxNameComponents &prefix, uint32_t nonce, const Time &timeout)
: m_prefix (prefix)
, m_nonce (nonce)
, m_expireTime (timeout)
diff --git a/model/ccnx-route.cc b/model/ccnx-route.cc
index c2033f6..a3b0224 100644
--- a/model/ccnx-route.cc
+++ b/model/ccnx-route.cc
@@ -29,12 +29,12 @@
}
void
-CcnxRoute::SetPrefix (const Ptr<Name::Components> &prefix)
+CcnxRoute::SetPrefix (const Ptr<CcnxNameComponents> &prefix)
{
m_prefix = prefix;
}
-const Name::Components&
+const CcnxNameComponents&
CcnxRoute::GetPrefix (void) const
{
return *m_prefix;
diff --git a/model/ccnx-route.h b/model/ccnx-route.h
index fcff012..65d978f 100644
--- a/model/ccnx-route.h
+++ b/model/ccnx-route.h
@@ -47,11 +47,11 @@
/**
* \param dest Destination CcnxAddress
*/
- void SetPrefix (const Ptr<Name::Components> &dest);
+ void SetPrefix (const Ptr<CcnxNameComponents> &dest);
/**
* \return Destination CcnxAddress of the route
*/
- const Name::Components& GetPrefix (void) const;
+ const CcnxNameComponents& GetPrefix (void) const;
/**
* Equivalent in Linux to dst_entry.dev
@@ -65,7 +65,7 @@
Ptr<CcnxFace> GetOutputFace (void) const;
private:
- Ptr<Name::Components> m_prefix;
+ Ptr<CcnxNameComponents> m_prefix;
Ptr<CcnxFace> m_outputFace;
};
diff --git a/model/hash-helper.h b/model/hash-helper.h
index 36a9ee8..0440e29 100644
--- a/model/hash-helper.h
+++ b/model/hash-helper.h
@@ -37,10 +37,10 @@
* \todo Testing is required to determine if this hash function
* actually provides good hash results
*/
-struct CcnxPrefixHash : public std::unary_function<Name::Components, std::size_t>
+struct CcnxPrefixHash : public std::unary_function<CcnxNameComponents, std::size_t>
{
std::size_t
- operator() (const Name::Components &prefix) const
+ operator() (const CcnxNameComponents &prefix) const
{
std::size_t hash = 23;
BOOST_FOREACH (const std::string &str, prefix.GetComponents ())
diff --git a/model/name-components.cc b/model/name-components.cc
index e1af1ee..7dde99f 100644
--- a/model/name-components.cc
+++ b/model/name-components.cc
@@ -25,15 +25,14 @@
using namespace std;
namespace ns3 {
-namespace Name {
-Components::Components ()
+CcnxNameComponents::CcnxNameComponents ()
{
// m_value = ccn_charbuf_create ();
// ccn_name_init(m_value);
}
-Components::Components (const string &s)
+CcnxNameComponents::CcnxNameComponents (const string &s)
{
// m_value = ccn_charbuf_create ();
// ccn_name_init(m_value);
@@ -41,13 +40,13 @@
m_prefix.push_back (s);
}
-Components::~Components ()
+CcnxNameComponents::~CcnxNameComponents ()
{
// ccn_charbuf_destroy(&m_value);
}
const std::list<std::string> &
-Components::GetComponents () const
+CcnxNameComponents::GetComponents () const
{
return m_prefix;
}
@@ -59,8 +58,8 @@
// return m_value;
// }
-Components&
-Components::operator () (const string &s)
+CcnxNameComponents&
+CcnxNameComponents::operator () (const string &s)
{
// ccn_name_append_str (m_value,s.c_str());
m_prefix.push_back (s);
@@ -73,7 +72,7 @@
// }
void
-Components::Print (std::ostream &os) const
+CcnxNameComponents::Print (std::ostream &os) const
{
for (const_iterator i=m_prefix.begin(); i!=m_prefix.end(); i++)
{
@@ -82,12 +81,10 @@
}
std::ostream &
-operator << (std::ostream &os, const Components &components)
+operator << (std::ostream &os, const CcnxNameComponents &components)
{
components.Print (os);
return os;
}
-
-}
}
diff --git a/model/name-components.h b/model/name-components.h
index 5749fcc..55cd5ae 100644
--- a/model/name-components.h
+++ b/model/name-components.h
@@ -31,20 +31,19 @@
#include "ns3/object.h"
namespace ns3 {
-namespace Name {
-class Components : public Object
+class CcnxNameComponents : public Object
{
public:
- Components ();
- Components (const std::string &s);
- ~Components ();
+ CcnxNameComponents ();
+ CcnxNameComponents (const std::string &s);
+ ~CcnxNameComponents ();
inline void
Add (const std::string &s);
- Components&
+ CcnxNameComponents&
operator () (const std::string &s);
const std::list<std::string> &
@@ -65,10 +64,10 @@
size () const;
inline bool
- operator== (const Components &prefix) const;
+ operator== (const CcnxNameComponents &prefix) const;
inline bool
- operator< (const Components &prefix) const;
+ operator< (const CcnxNameComponents &prefix) const;
private:
std::list<std::string> m_prefix;
@@ -77,22 +76,22 @@
typedef std::list<std::string>::const_iterator const_iterator;
};
-std::ostream & operator << (std::ostream &os, const Components &components);
+std::ostream & operator << (std::ostream &os, const CcnxNameComponents &components);
size_t
-Components::size () const
+CcnxNameComponents::size () const
{
return m_prefix.size ();
}
void
-Components::Add (const std::string &s)
+CcnxNameComponents::Add (const std::string &s)
{
(*this) (s);
}
bool
-Components::operator== (const Components &prefix) const
+CcnxNameComponents::operator== (const CcnxNameComponents &prefix) const
{
if (m_prefix.size () != prefix.m_prefix.size ())
return false;
@@ -101,7 +100,7 @@
}
bool
-Components::operator< (const Components &prefix) const
+CcnxNameComponents::operator< (const CcnxNameComponents &prefix) const
{
return std::lexicographical_compare (m_prefix.begin (), m_prefix.end (),
prefix.m_prefix.begin (), prefix.m_prefix.end ());
@@ -110,12 +109,11 @@
/**
* \class ns3::ComponentsValue
-* \brief hold objects of type ns3::Name::Components
+* \brief hold objects of type ns3:CcnxNameComponents
*/
-ATTRIBUTE_VALUE_DEFINE (Components);
-ATTRIBUTE_ACCESSOR_DEFINE (Components);
-ATTRIBUTE_CHECKER_DEFINE (Components);
-} // Namespace Name
+ATTRIBUTE_VALUE_DEFINE (CcnxNameComponents);
+ATTRIBUTE_ACCESSOR_DEFINE (CcnxNameComponents);
+ATTRIBUTE_CHECKER_DEFINE (CcnxNameComponents);
} // namespace ns3
#endif // _NDN_NAME_COMPONENTS_H_