Move the Name.cpp
diff --git a/ndn-cpp/fields/name-component.cc b/ndn-cpp/fields/name-component.cc
deleted file mode 100644
index ecc87b1..0000000
--- a/ndn-cpp/fields/name-component.cc
+++ /dev/null
@@ -1,170 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
-/*
- * Copyright (c) 2013, Regents of the University of California
- *                     Alexander Afanasyev
- *
- * BSD license, See the LICENSE file for more information
- *
- * Author: Alexander Afanasyev <alexander.afanasyev@ucla.edu>
- */
-
-#include "name-component.h"
-
-#include "ndn-cpp/error.h"
-#include "ndn-cpp/helpers/uri.h"
-
-using namespace std;
-
-namespace ndn
-{
-namespace name
-{
-  
-Component::Component ()
-{
-}
-
-Component::Component (const std::string &uri)
-{
-  try
-    {
-      Uri::fromEscaped (uri.begin (), uri.end (), back_inserter (*this));
-    }
-  catch (error::Uri &err)
-    {
-      // re-throwing different exception
-      BOOST_THROW_EXCEPTION (error::name::Component ()
-                             << error::msg (uri)
-                             << error::pos (error::get_pos (err)));
-    }
-}
-
-Component::Component (std::string::const_iterator begin, std::string::const_iterator end)
-{
-  try
-    {
-      Uri::fromEscaped (begin, end, back_inserter (*this));
-    }
-  catch (error::Uri &err)
-    {
-      // re-throwing different exception
-      BOOST_THROW_EXCEPTION (error::name::Component ()
-                             << error::msg (string (begin, end))
-                             << error::pos (error::get_pos (err)));
-    }
-}
-
-Component::Component (const void *buf, size_t length)
-{
-  copy (static_cast<const char*> (buf),
-        static_cast<const char*> (buf)+length,
-        back_inserter (*this));
-}
-
-int
-Component::compare (const Component &other) const
-{
-  if (size () < other.size ())
-    return -1;
-
-  if (size () > other.size ())
-    return +1;
-
-  // now we know that sizes are equal
-
-  pair<const_iterator, const_iterator> diff = mismatch (begin (), end (), other.begin ());
-  if (diff.first == end ()) // components are actually equal
-    return 0;
-
-  return (std::lexicographical_compare (diff.first, end (), diff.second, other.end ())) ? -1 : +1;    
-}
-
-Component
-Component::fromNumber (uint64_t number)
-{
-  Component comp;
-  while (number > 0)
-    {
-      comp.push_back (static_cast<unsigned char> (number & 0xFF));
-      number >>= 8;
-    }
-  std::reverse (comp.begin (), comp.end ());
-  return comp;
-}
-
-Component
-Component::fromNumberWithMarker (uint64_t number, unsigned char marker)
-{
-  Component comp;
-  comp.push_back (marker);
-
-  while (number > 0)
-    {
-      comp.push_back (static_cast<unsigned char> (number & 0xFF));
-      number >>= 8;
-    }
-
-  std::reverse (comp.begin () + 1, comp.end ());
-  return comp;
-}
-
-std::string
-Component::toBlob () const
-{
-  return std::string (begin (), end ());
-}
-
-void
-Component::toBlob (std::ostream &os) const
-{
-  os.write (buf (), size ());
-}
-
-std::string
-Component::toUri () const
-{
-  ostringstream os;
-  toUri (os);
-  return os.str ();  
-}
-
-void
-Component::toUri (std::ostream &os) const
-{
-  Uri::toEscaped (begin (), end (), ostream_iterator<char> (os));
-}
-
-uint64_t
-Component::toNumber () const
-{
-  uint64_t ret = 0;
-  for (const_iterator i = begin (); i != end (); i++)
-    {
-      ret <<= 8;
-      ret |= static_cast<unsigned char> (*i);
-    }
-  return ret;
-}
-
-uint64_t
-Component::toNumberWithMarker (unsigned char marker) const
-{
-  if (empty () ||
-      static_cast<unsigned char> (*(begin ())) != marker)
-    {
-      BOOST_THROW_EXCEPTION (error::name::Component ()
-                             << error::msg ("Name component does not have required marker [" + toUri () + "]"));
-    }
-
-  uint64_t ret = 0;
-  for (const_iterator i = begin () + 1; i != end (); i++)
-    {
-      ret <<= 8;
-      ret |= static_cast<unsigned char> (*i);
-    }
-  return ret;
-}
-
-
-} // name
-} // ndn
diff --git a/ndn-cpp/fields/name-component.h b/ndn-cpp/fields/name-component.h
deleted file mode 100644
index 0bcf862..0000000
--- a/ndn-cpp/fields/name-component.h
+++ /dev/null
@@ -1,282 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
-/*
- * Copyright (c) 2013, Regents of the University of California
- *                     Alexander Afanasyev
- *
- * BSD license, See the LICENSE file for more information
- *
- * Author: Alexander Afanasyev <alexander.afanasyev@ucla.edu>
- */
-
-#ifndef NDN_NAME_COMPONENT_H
-#define NDN_NAME_COMPONENT_H
-
-#include <string>
-#include <vector>
-
-#include "blob.h"
-#include <stdint.h>
-
-namespace ndn {
-
-namespace name {
-
-/**
- * @brief Class to representing binary blob of NDN name component
- *
- * This class is based on std::vector<char> and just provides several helpers
- * to work with name components, as well as operator to apply canonical
- * ordering on name components
- */
-class Component : public Blob
-{
-public:
-  /**
-   * @brief Default constructor an empty exclude
-   */
-  Component ();
-
-  /**
-   * @brief Create component from URI encoded string
-   * @param uri URI encoded name component (convert escaped with % characters)
-   */
-  Component (const std::string &uri);
-
-  /**
-   * @brief Create component from URI encoded string, with string specified by a pair of iterators
-   * @param begin begin iterator pointing to the URI encoded name
-   * @param end end iterator
-   */
-  Component (std::string::const_iterator begin, std::string::const_iterator end);
-  
-  /**
-   * @brief Create component using a binary blob
-   * @param buf pointer to first byte of binary blob to store as a name component
-   * @param length length of the binary blob
-   */
-  Component (const void *buf, size_t length);
-
-  /**
-   * @brief Apply canonical ordering on component comparison
-   * @return 0  They compare equal
-   *         <0 If *this comes before other in the canonical ordering
-   *         >0 If *this comes after in the canonical ordering
-   *
-   * @see http://www.ccnx.org/releases/latest/doc/technical/CanonicalOrder.html
-   */
-  int
-  compare (const Component &other) const;
-  
-  /**
-   * @brief Apply canonical ordering on component comparison (less or equal)
-   *
-   * @see http://www.ccnx.org/releases/latest/doc/technical/CanonicalOrder.html
-   */
-  inline bool
-  operator <= (const Component &other) const;
-
-  /**
-   * @brief Apply canonical ordering on component comparison (less)
-   *
-   * @see http://www.ccnx.org/releases/latest/doc/technical/CanonicalOrder.html
-   */
-  inline bool
-  operator < (const Component &other) const;
-
-  /**
-   * @brief Apply canonical ordering on component comparison (greater or equal)
-   *
-   * @see http://www.ccnx.org/releases/latest/doc/technical/CanonicalOrder.html
-   */
-  inline bool
-  operator >= (const Component &other) const;
-
-  /**
-   * @brief Apply canonical ordering on component comparison (greater)
-   *
-   * @see http://www.ccnx.org/releases/latest/doc/technical/CanonicalOrder.html
-   */
-  inline bool
-  operator > (const Component &other) const;
-
-  ////////////////////////////////////
-  // Component construction helpers //
-  ////////////////////////////////////
-
-  /**
-   * @brief Create network-ordered numeric component
-   *
-   * @param number number to be encoded and added as a component
-   *
-   * Number is encoded and added in network order. Tail zero-bytes are not included.
-   * For example, if the number is 1, then 1-byte binary blob will be added  0x01.
-   * If the number is 256, then 2 binary blob will be added: 0x01 0x01
-   *
-   * If the number is zero, an empty component will be created
-   */
-  static Component
-  fromNumber (uint64_t number);
-
-  /**
-   * @brief Create network-ordered numeric component to the name with marker
-   *
-   * @param number number to be encoded and added as a component
-   * @param marker byte marker, specified by the desired naming convention
-   *
-   * Currently defined naming conventions of the marker:
-   * - 0x00  sequence number
-   * - 0xC1  control number
-   * - 0xFB  block id
-   * - 0xFD  version number
-   *
-   * This version is almost exactly as appendNumber, with exception that it adds initial marker.
-   * The number is formatted in the exactly the same way.
-   *
-   * @see fromNumber
-   */
-  static Component
-  fromNumberWithMarker (uint64_t number, unsigned char marker);
-  
-  //////////////////////////////////////////////////////////////////////////////////
-  // helpers
-  //////////////////////////////////////////////////////////////////////////////////
-  
-  /**
-   * @brief Convert binary blob name component to std::string (no conversion is made)
-   * @param comp name component to be converted
-   * @see asUriString
-   */  
-  std::string
-  toBlob () const;
-
-  /**
-   * @brief Write blob of the name component to the specified output stream
-   * @param os output stream
-   */
-  void
-  toBlob (std::ostream &os) const;
-
-  /**
-   * @brief Convert binary blob name component to std::string, escaping all non-printable characters in URI format
-   * @param comp name component to be converted
-   * @see asString
-   */
-  std::string
-  toUri () const;
-
-  /**
-   * @brief Write name as URI to the specified output stream
-   * @param os output stream
-   */
-  void
-  toUri (std::ostream &os) const;
-  
-  /**
-   * @brief Convert binary blob name component (network-ordered number) to number
-   * @param comp name component to be converted
-   */  
-  uint64_t
-  toNumber () const;
-
-  /**
-   * @brief Convert binary blob name component (network-ordered number) to number, using appropriate marker from the naming convention
-   * @param comp name component to be converted
-   * @param marker required marker from the naming convention
-   *
-   * If the required marker does not exist, an exception will be thrown
-   */  
-  uint64_t
-  toNumberWithMarker (unsigned char marker) const;
-
-  /**
-   * @brief Convert binary blob name component, assuming sequence number naming convention (marker = 0x00)
-   * @param comp name component to be converted
-   * @see asNumberWithMarker
-   */
-  inline uint64_t
-  toSeqNum () const;
-  
-  /**
-   * @brief Convert binary blob name component, assuming control number naming convention (marker = 0xC1)
-   * @param comp name component to be converted
-   * @see asNumberWithMarker
-   */
-  inline uint64_t
-  toControlNum () const;
-
-  /**
-   * @brief Convert binary blob name component, assuming block ID naming convention (marker = 0xFB)
-   * @param comp name component to be converted
-   * @see asNumberWithMarker
-   */
-  inline uint64_t
-  toBlkId () const;
-
-  /**
-   * @brief Convert binary blob name component, assuming time-stamping version naming convention (marker = 0xFD)
-   * @param comp name component to be converted
-   * @see asNumberWithMarker
-   */
-  inline uint64_t
-  toVersion () const;
-};
-
-bool
-Component::operator <= (const Component &other) const
-{
-  return (compare (other) <= 0);
-}
-
-bool
-Component::operator < (const Component &other) const
-{
-  return (compare (other) < 0);
-}
-
-bool
-Component::operator >= (const Component &other) const
-{
-  return (compare (other) >= 0);
-}
-
-bool
-Component::operator > (const Component &other) const
-{
-  return (compare (other) > 0);
-}
-
-inline uint64_t
-Component::toSeqNum () const
-{
-  return toNumberWithMarker (0x00);
-}
-  
-inline uint64_t
-Component::toControlNum () const
-{
-  return toNumberWithMarker (0xC1);
-}
-
-inline uint64_t
-Component::toBlkId () const
-{
-  return toNumberWithMarker (0xFB);
-}
-
-inline uint64_t
-Component::toVersion () const
-{
-  return toNumberWithMarker (0xFD);
-}
-
-/**
- * @brief Stream output operator (output in escaped URI format)
- */
-std::ostream&
-operator <<(std::ostream &os, const Component &name);
-
-} // name
-
-} // ndn
-
-#endif // NDN_EXCLUDE_H
diff --git a/ndn-cpp/fields/name.cc b/ndn-cpp/fields/name.cc
deleted file mode 100644
index d3e2ec6..0000000
--- a/ndn-cpp/fields/name.cc
+++ /dev/null
@@ -1,264 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
-/*
- * Copyright (c) 2013, Regents of the University of California
- *                     Alexander Afanasyev
- *                     Zhenkai Zhu
- *
- * BSD license, See the LICENSE file for more information
- *
- * Author: Alexander Afanasyev <alexander.afanasyev@ucla.edu>
- *         Zhenkai Zhu <zhenkai@cs.ucla.edu>
- */
-
-#include "name.h"
-
-#include "ndn-cpp/error.h"
-#include <boost/algorithm/string.hpp>
-
-#include <ctype.h>
-
-using namespace std;
-
-namespace ndn
-{
-
-///////////////////////////////////////////////////////////////////////////////
-//                              CONSTRUCTORS                                 //
-///////////////////////////////////////////////////////////////////////////////
-
-Name::Name ()
-{
-}
-
-Name::Name (const string &uri)
-{ 
-  string::const_iterator i = uri.begin ();
-  string::const_iterator end = uri.end ();
-
-  string::const_iterator firstSlash = std::find (i, end, '/');
-  if (firstSlash == end)
-    {
-      BOOST_THROW_EXCEPTION (error::Name ()
-                             << error::msg ("Name should include at least one slash (did you forget to specify initial /?)"));
-    }
-
-  if (firstSlash != i)
-    {
-      string schema (i, firstSlash);
-      if (*schema.rbegin () != ':')
-        {
-          BOOST_THROW_EXCEPTION (error::Name ()
-                                 << error::msg ("First component of the name does not start with a slash (did you forget to specify initial /?)"));
-        }
-
-      i = firstSlash;
-
-      if (!boost::iequals (schema, "ccnx:") &&
-          !boost::iequals (schema, "ndn:"))
-        {
-          BOOST_THROW_EXCEPTION (error::Name ()
-                                 << error::msg ("URI schema is not supported (only ccnx: or ndn: is allowed)")
-                                 << error::msg (schema));
-        }
-    }
-
-  string::const_iterator secondSlash = i;
-  secondSlash ++;
-  if (secondSlash != end && *secondSlash == '/')
-    {
-      // The authority component (the part after the initial "//" in the familiar http and ftp URI schemes) is present,
-      // but it is not relevant to NDN name.
-      // skipping it
-      secondSlash ++;
-      i = std::find (secondSlash, end, '/');
-    }
-  
-  if (i == end)
-    {
-      BOOST_THROW_EXCEPTION (error::Name ()
-                             << error::msg ("Invalid URI")
-                             << error::msg (uri));
-    }
-
-  while (i != end)
-    {
-      // skip any extra slashes
-      while (i != end && *i == '/')
-        {
-          i ++;
-        }
-      if (i == end)
-        break;
-      
-      string::const_iterator endOfComponent = std::find (i, end, '/');
-      append (name::Component (i, endOfComponent));
-
-      i = endOfComponent;
-    }
-}
-
-Name::Name (const Name &other)
-{
-  m_comps = other.m_comps;
-}
-
-Name &
-Name::operator= (const Name &other)
-{
-  m_comps = other.m_comps;
-  return *this;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-//                                SETTERS                                    //
-///////////////////////////////////////////////////////////////////////////////
-
-Name &
-Name::appendVersion (uint64_t version/* = Name::nversion*/)
-{
-  if (version != Name::nversion)
-    return appendNumberWithMarker (version, 0xFD);
-  else
-    {
-      TimeInterval now = time::NowUnixTimestamp ();
-      version = (now.total_seconds () << 12) | (0xFFF & (now.fractional_seconds () / 244 /*( 1000,000 microseconds / 4096.0 resolution = last 12 bits)*/));
-      return appendNumberWithMarker (version, 0xFD);
-    }
-}
-
-
-///////////////////////////////////////////////////////////////////////////////
-//                                GETTERS                                    //
-///////////////////////////////////////////////////////////////////////////////
-
-const name::Component &
-Name::get (int index) const
-{
-  if (index < 0)
-    {
-      index = size () - (-index);
-    }
-
-  if (static_cast<unsigned int> (index) >= size ())
-    {
-      BOOST_THROW_EXCEPTION (error::Name ()
-                             << error::msg ("Index out of range")
-                             << error::pos (index));
-    }
-  return m_comps [index];
-}
-
-name::Component &
-Name::get (int index)
-{
-  if (index < 0)
-    {
-      index = size () - (-index);
-    }
-
-  if (static_cast<unsigned int> (index) >= size())
-    {
-      BOOST_THROW_EXCEPTION (error::Name ()
-                             << error::msg ("Index out of range")
-                             << error::pos (index));
-    }
-  return m_comps [index];
-}
-
-
-/////
-///// Static helpers to convert name component to appropriate value
-/////
-
-
-Name
-Name::getSubName (size_t pos/* = 0*/, size_t len/* = Name::npos*/) const
-{
-  Name retval;
-
-  if (len == npos)
-    {
-      len = size () - pos;
-    }
-
-  if (pos + len > size ())
-    {
-      BOOST_THROW_EXCEPTION (error::Name ()
-                             << error::msg ("getSubName parameter out of range")
-                             << error::pos (pos)
-                             << error::pos (len));
-    }
-
-  for (size_t i = pos; i < pos + len; i++)
-    {
-      retval.append (get (i));
-    }
-
-  return retval;
-}
-
-Name
-Name::operator+ (const Name &name) const
-{
-  Name newName;
-  newName
-    .append (*this)
-    .append (name);
-
-  return newName;
-}
-
-std::string
-Name::toUri () const
-{
-  ostringstream os;
-  toUri (os);
-  return os.str ();
-}
-
-void
-Name::toUri (std::ostream &os) const
-{
-  for (Name::const_iterator comp = begin (); comp != end (); comp++)
-    {
-      os << "/";
-      comp->toUri (os);
-    }
-  if (size () == 0)
-    os << "/";
-}
-
-// ostream &
-// operator << (ostream &os, const Name &name)
-// {
-//   for (Name::const_iterator comp = name.begin (); comp != name.end (); comp++)
-//     {
-//       os << "/" << *comp;
-//     }
-//   if (name.size () == 0)
-//     os << "/";
-//   return os;
-// }
-
-int
-Name::compare (const Name &name) const
-{
-  Name::const_iterator i = this->begin ();
-  Name::const_iterator j = name.begin ();
-
-  for (; i != this->end () && j != name.end (); i++, j++)
-    {
-      int res = i->compare (*j);
-      if (res == 0)
-        continue;
-      else
-        return res;
-    }
-
-  if (i == this->end () && j == name.end ())
-    return 0; // prefixes are equal
-
-  return (i == this->end ()) ? -1 : +1;
-}
-
-} // ndn
diff --git a/ndn-cpp/fields/name.h b/ndn-cpp/fields/name.h
deleted file mode 100644
index f45f694..0000000
--- a/ndn-cpp/fields/name.h
+++ /dev/null
@@ -1,635 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
-/*
- * Copyright (c) 2013, Regents of the University of California
- *                     Alexander Afanasyev
- *                     Zhenkai Zhu
- *
- * BSD license, See the LICENSE file for more information
- *
- * Author: Alexander Afanasyev <alexander.afanasyev@ucla.edu>
- *         Zhenkai Zhu <zhenkai@cs.ucla.edu>
- */
-
-#ifndef NDN_NAME_HXX
-#define NDN_NAME_HXX
-
-#include "ndn-cpp/fields/name-component.h"
-#include "ndn-cpp/common.h"
-
-namespace ndn {
-
-/**
- * @brief Class for NDN Name
- */
-class Name
-{
-public:
-  typedef std::vector<name::Component>::iterator iterator;
-  typedef std::vector<name::Component>::const_iterator const_iterator;
-  typedef std::vector<name::Component>::reverse_iterator reverse_iterator;
-  typedef std::vector<name::Component>::const_reverse_iterator const_reverse_iterator;
-  typedef std::vector<name::Component>::reference reference;
-  typedef std::vector<name::Component>::const_reference const_reference;
-
-  typedef name::Component partial_type;
-  
-  ///////////////////////////////////////////////////////////////////////////////
-  //                              CONSTRUCTORS                                 //
-  ///////////////////////////////////////////////////////////////////////////////
-
-  /**
-   * @brief Default constructor to create an empty name (zero components, or "/")
-   */
-  Name ();
-
-  /**
-   * @brief Copy constructor
-   *
-   * @param other reference to a NDN name object
-   */
-  Name (const Name &other);
-
-  /**
-   * @brief Create a name from URL string
-   *
-   * @param url URI-represented name
-   */
-  Name (const std::string &url);
-
-  /**
-   * @brief Create a name from a container of elements [begin, end)
-   *
-   * @param begin begin iterator of the container
-   * @param end end iterator of the container
-   */
-  template<class Iterator>
-  Name (Iterator begin, Iterator end);
-
-  /**
-   * @brief Assignment operator
-   */
-  Name &
-  operator= (const Name &other);
-
-
-  ///////////////////////////////////////////////////////////////////////////////
-  //                                SETTERS                                    //
-  ///////////////////////////////////////////////////////////////////////////////
-
-  /**
-   * @brief Append a binary blob as a name component
-   *
-   * @param comp a binary blob
-   * @returns reference to self (to allow chaining of append methods)
-   */
-  inline Name &
-  append (const name::Component &comp);
-
-  /**
-   * @brief Append a binary blob as a name component
-   * @param comp a binary blob
-   *
-   * This version is a little bit more efficient, since it swaps contents of comp and newly added component
-   *
-   * Attention!!! This method has an intended side effect: content of comp becomes empty
-   */
-  inline Name &
-  appendBySwap (name::Component &comp);
-  
-  /**
-   * @brief Append components a container of elements [begin, end)
-   *
-   * @param begin begin iterator of the container
-   * @param end end iterator of the container
-   * @returns reference to self (to allow chaining of append methods)
-   */
-  template<class Iterator>
-  inline Name &
-  append (Iterator begin, Iterator end);
-
-  /**
-   * @brief Append components from another ndn::Name object
-   *
-   * @param comp reference to Name object
-   * @returns reference to self (to allow chaining of append methods)
-   */
-  inline Name &
-  append (const Name &comp);
-
-  /**
-   * @brief Append a string as a name component
-   *
-   * @param compStr a string
-   * @returns reference to self (to allow chaining of append methods)
-   *
-   * No conversions will be done to the string.  The string is included in raw form,
-   * without any leading '\0' symbols.
-   */
-  inline Name &
-  append (const std::string &compStr);
-
-  /**
-   * @brief Append a binary blob as a name component
-   *
-   * @param buf pointer to the first byte of the binary blob
-   * @param size length of the binary blob
-   * @returns reference to self (to allow chaining of append methods)
-   */
-  inline Name &
-  append (const void *buf, size_t size);
-
-  /**
-   * @brief Append network-ordered numeric component to the name
-   *
-   * @param number number to be encoded and added as a component
-   *
-   * Number is encoded and added in network order. Tail zero-bytes are not included.
-   * For example, if the number is 1, then 1-byte binary blob will be added  0x01.
-   * If the number is 256, then 2 binary blob will be added: 0x01 0x01
-   *
-   * If the number is zero, an empty component will be added
-   */
-  inline Name &
-  appendNumber (uint64_t number);
-
-  /**
-   * @brief Append network-ordered numeric component to the name with marker
-   *
-   * @param number number to be encoded and added as a component
-   * @param marker byte marker, specified by the desired naming convention
-   *
-   * Currently defined naming conventions of the marker:
-   * - 0x00  sequence number
-   * - 0xC1  control number
-   * - 0xFB  block id
-   * - 0xFD  version number
-   *
-   * This version is almost exactly as appendNumber, with exception that it adds initial marker.
-   * The number is formatted in the exactly the same way.
-   *
-   * @see appendNumber
-   */
-  inline Name &
-  appendNumberWithMarker (uint64_t number, unsigned char marker);
-
-  /**
-   * @brief Helper method to add sequence number to the name (marker = 0x00)
-   * @param seqno sequence number
-   * @see appendNumberWithMarker
-   */
-  inline Name &
-  appendSeqNum (uint64_t seqno);
-
-  /**
-   * @brief Helper method to add control number to the name (marker = 0xC1)
-   * @param control control number
-   * @see appendNumberWithMarker
-   */
-  inline Name &
-  appendControlNum (uint64_t control);
-
-  /**
-   * @brief Helper method to add block ID to the name (marker = 0xFB)
-   * @param blkid block ID
-   * @see appendNumberWithMarker
-   */
-  inline Name &
-  appendBlkId (uint64_t blkid);
-
-  /**
-   * @brief Helper method to add version to the name (marker = 0xFD)
-   * @param version fully formatted version in a desired format (e.g., timestamp).
-   *                If version is Name::nversion, then the version number is automatically
-   *                assigned based on UTC timestamp
-   * @see appendNumberWithMarker
-   */
-  Name &
-  appendVersion (uint64_t version = Name::nversion);
-
-  ///////////////////////////////////////////////////////////////////////////////
-  //                                GETTERS                                    //
-  ///////////////////////////////////////////////////////////////////////////////
-
-  /**
-   * @brief Get number of the name components
-   * @return number of name components
-   */
-  inline size_t
-  size () const;
-
-  /**
-   * @brief Get binary blob of name component
-   * @param index index of the name component.  If less than 0, then getting component from the back:
-   *              get(-1) getting the last component, get(-2) is getting second component from back, etc.
-   * @returns const reference to binary blob of the requested name component
-   *
-   * If index is out of range, an exception will be thrown
-   */
-  const name::Component &
-  get (int index) const;
-
-  /**
-   * @brief Get binary blob of name component
-   * @param index index of the name component.  If less than 0, then getting component from the back
-   * @returns reference to binary blob of the requested name component
-   *
-   * If index is out of range, an exception will be thrown
-   */
-  name::Component &
-  get (int index);
-
-  /////
-  ///// Iterator interface to name components
-  /////
-  inline Name::const_iterator
-  begin () const;           ///< @brief Begin iterator (const)
-
-  inline Name::iterator
-  begin ();                 ///< @brief Begin iterator
-
-  inline Name::const_iterator
-  end () const;             ///< @brief End iterator (const)
-
-  inline Name::iterator
-  end ();                   ///< @brief End iterator
-
-  inline Name::const_reverse_iterator
-  rbegin () const;          ///< @brief Reverse begin iterator (const)
-
-  inline Name::reverse_iterator
-  rbegin ();                ///< @brief Reverse begin iterator
-
-  inline Name::const_reverse_iterator
-  rend () const;            ///< @brief Reverse end iterator (const)
-
-  inline Name::reverse_iterator
-  rend ();                  ///< @brief Reverse end iterator
-
-
-  /////
-  ///// Static helpers to convert name component to appropriate value
-  /////
-
-  /**
-   * @brief Get a new name, constructed as a subset of components
-   * @param pos Position of the first component to be copied to the subname
-   * @param len Number of components to be copied. Value Name::npos indicates that all components till the end of the name.
-   */
-  Name
-  getSubName (size_t pos = 0, size_t len = npos) const;
-
-  /**
-   * @brief Get prefix of the name
-   * @param len length of the prefix
-   * @param skip number of components to skip from beginning of the name
-   */
-  inline Name
-  getPrefix (size_t len, size_t skip = 0) const;
-
-  /**
-   * @brief Get postfix of the name
-   * @param len length of the postfix
-   * @param skip number of components to skip from end of the name
-   */
-  inline Name
-  getPostfix (size_t len, size_t skip = 0) const;
-
-  /**
-   * @brief Get text representation of the name (URI)
-   */
-  std::string
-  toUri () const;
-
-  /**
-   * @brief Write name as URI to the specified output stream
-   * @param os output stream
-   */
-  void
-  toUri (std::ostream &os) const;
-
-  /////////////////////////////////////////////////
-  // Helpers and compatibility wrappers
-  /////////////////////////////////////////////////
-
-  /**
-   * @brief Compare two names, using canonical ordering for each component
-   * @return 0  They compare equal
-   *         <0 If *this comes before other in the canonical ordering
-   *         >0 If *this comes after in the canonical ordering
-   */
-  int
-  compare (const Name &name) const;
-
-  /**
-   * @brief Check if to Name objects are equal (have the same number of components with the same binary data)
-   */
-  inline bool
-  operator == (const Name &name) const;
-
-  /**
-   * @brief Check if two Name objects are not equal
-   */
-  inline bool
-  operator != (const Name &name) const;
-
-  /**
-   * @brief Less or equal comparison of two name objects
-   */
-  inline bool
-  operator <= (const Name &name) const;
-
-  /**
-   * @brief Less comparison of two name objects
-   */
-  inline bool
-  operator < (const Name &name) const;
-
-  /**
-   * @brief Great or equal comparison of two name objects
-   */
-  inline bool
-  operator >= (const Name &name) const;
-
-  /**
-   * @brief Great comparison of two name objects
-   */
-  inline bool
-  operator > (const Name &name) const;
-
-  /**
-   * @brief Operator [] to simplify access to name components
-   * @see get
-   */
-  inline name::Component &
-  operator [] (int index);
-
-  /**
-   * @brief Operator [] to simplify access to name components
-   * @see get
-   */
-  inline const name::Component &
-  operator [] (int index) const;
-
-  /**
-   * @brief Create a new Name object, by copying components from first and second name
-   */
-  Name
-  operator + (const Name &name) const;
-
-  /**
-   * @brief A wrapper for append method
-   */
-  template<class T>
-  inline void
-  push_back (const T &comp);
-
-public:
-  // Data Members (public):
-  ///  Value returned by various member functions when they fail.
-  const static size_t npos = static_cast<size_t> (-1);
-  const static uint64_t nversion = static_cast<uint64_t> (-1);
-
-private:
-  std::vector<name::Component> m_comps;
-};
-
-inline std::ostream &
-operator << (std::ostream &os, const Name &name)
-{
-  name.toUri (os);
-  return os;
-}
-
-
-/////////////////////////////////////////////////////////////////////////////////////
-// Definition of inline methods
-/////////////////////////////////////////////////////////////////////////////////////
-
-template<class Iterator>
-Name::Name (Iterator begin, Iterator end)
-{
-  append (begin, end);
-}
-
-inline Name &
-Name::append (const name::Component &comp)
-{
-  if (comp.size () != 0)
-    m_comps.push_back (comp);
-  return *this;
-}
-
-inline Name &
-Name::appendBySwap (name::Component &comp)
-{
-  if (comp.size () != 0)
-    {
-      Name::iterator newComp = m_comps.insert (end (), name::Component ());
-      newComp->swap (comp);
-    }
-  return *this;
-}
-
-template<class Iterator>
-inline Name &
-Name::append (Iterator begin, Iterator end)
-{
-  for (Iterator i = begin; i != end; i++)
-    {
-      append (*i);
-    }
-  return *this;
-}
-
-Name &
-Name::append (const Name &comp)
-{
-  if (this == &comp)
-    {
-      // have to double-copy if the object is self, otherwise results very frustrating (because we use vector...)
-      return append (Name (comp.begin (), comp.end ()));
-    }
-  return append (comp.begin (), comp.end ());
-}
-
-Name &
-Name::append (const std::string &compStr)
-{
-  name::Component comp (compStr);
-  return appendBySwap (comp);
-}
-
-Name &
-Name::append (const void *buf, size_t size)
-{
-  name::Component comp (buf, size);
-  return appendBySwap (comp);
-}
-
-Name &
-Name::appendNumber (uint64_t number)
-{
-  name::Component comp;
-  name::Component::fromNumber (number).swap (comp);
-  return appendBySwap (comp);
-}
-
-Name &
-Name::appendNumberWithMarker (uint64_t number, unsigned char marker)
-{
-  name::Component comp;
-  name::Component::fromNumberWithMarker (number, marker).swap (comp);
-  return appendBySwap (comp);
-}
-
-inline Name &
-Name::appendSeqNum (uint64_t seqno)
-{
-  return appendNumberWithMarker (seqno, 0x00);
-}
-
-inline Name &
-Name::appendControlNum (uint64_t control)
-{
-  return appendNumberWithMarker (control, 0xC1);
-}
-
-inline Name &
-Name::appendBlkId (uint64_t blkid)
-{
-  return appendNumberWithMarker (blkid, 0xFB);
-}
-
-inline size_t
-Name::size () const
-{
-  return m_comps.size ();
-}
-
-/////
-///// Iterator interface to name components
-/////
-inline Name::const_iterator
-Name::begin () const
-{
-  return m_comps.begin ();
-}
-
-inline Name::iterator
-Name::begin ()
-{
-  return m_comps.begin ();
-}
-
-inline Name::const_iterator
-Name::end () const
-{
-  return m_comps.end ();
-}
-
-inline Name::iterator
-Name::end ()
-{
-  return m_comps.end ();
-}
-
-inline Name::const_reverse_iterator
-Name::rbegin () const
-{
-  return m_comps.rbegin ();
-}
-
-inline Name::reverse_iterator
-Name::rbegin ()
-{
-  return m_comps.rbegin ();
-}
-
-inline Name::const_reverse_iterator
-Name::rend () const
-{
-  return m_comps.rend ();
-}
-
-
-inline Name::reverse_iterator
-Name::rend ()
-{
-  return m_comps.rend ();
-}
-
-
-//// helpers
-
-
-inline Name
-Name::getPrefix (size_t len, size_t skip/* = 0*/) const
-{
-  return getSubName (skip, len);
-}
-
-inline Name
-Name::getPostfix (size_t len, size_t skip/* = 0*/) const
-{
-  return getSubName (size () - len - skip, len);
-}
-
-
-template<class T>
-inline void
-Name::push_back (const T &comp)
-{
-  append (comp);
-}
-
-inline bool
-Name::operator ==(const Name &name) const
-{
-  return (compare (name) == 0);
-}
-
-inline bool
-Name::operator !=(const Name &name) const
-{
-  return (compare (name) != 0);
-}
-
-inline bool
-Name::operator <= (const Name &name) const
-{
-  return (compare (name) <= 0);
-}
-
-inline bool
-Name::operator < (const Name &name) const
-{
-  return (compare (name) < 0);
-}
-
-inline bool
-Name::operator >= (const Name &name) const
-{
-  return (compare (name) >= 0);
-}
-
-inline bool
-Name::operator > (const Name &name) const
-{
-  return (compare (name) > 0);
-}
-
-inline name::Component &
-Name::operator [] (int index)
-{
-  return get (index);
-}
-
-inline const name::Component &
-Name::operator [] (int index) const
-{
-  return get (index);
-}
-
-} // ndn
-
-#endif