encoding: Fixing Block (and as a result Name) encoding bugs

As of this commit, all non-const operations on Block will call resetWire
to remove all references to the wire, so it will be recreated next time
"encode" method is called.  Also, all getter methods now have only const
versions and non-const access to the internal data structure is
prohibited.

Change-Id: If4b485dd62541d9d4d168a44490068e4deff56c1
diff --git a/src/management/ndnd-controller.cpp b/src/management/ndnd-controller.cpp
index 302699e..a897e27 100644
--- a/src/management/ndnd-controller.cpp
+++ b/src/management/ndnd-controller.cpp
@@ -175,14 +175,14 @@
   Block content = data.getContent();
   content.parse();
 
-  if (content.getAll().empty())
+  if (content.elements().empty())
     {
       if (static_cast<bool>(onFail))
         onFail("Empty response");
       return;
     }
 
-  Block::element_iterator val = content.getAll().begin();
+  Block::element_const_iterator val = content.elements_begin();
   
   switch(val->type())
     {
@@ -221,14 +221,14 @@
   Block content = data.getContent();
   content.parse();
 
-  if (content.getAll().empty())
+  if (content.elements().empty())
     {
       if (static_cast<bool>(onFail))
         onFail("Empty response");
       return;
     }
 
-  Block::element_iterator val = content.getAll().begin();
+  Block::element_const_iterator val = content.elements_begin();
   
   switch(val->type())
     {
diff --git a/src/management/ndnd-face-instance.hpp b/src/management/ndnd-face-instance.hpp
index 03a8589..0de85ff 100644
--- a/src/management/ndnd-face-instance.hpp
+++ b/src/management/ndnd-face-instance.hpp
@@ -226,57 +226,57 @@
   //                  FreshnessPeriod?
 
   // Action
-  Block::element_iterator val = wire_.find(Tlv::FaceManagement::Action);
-  if (val != wire_.getAll().end())
+  Block::element_const_iterator val = wire_.find(Tlv::FaceManagement::Action);
+  if (val != wire_.elements_end())
     {
       action_ = std::string(reinterpret_cast<const char*>(val->value()), val->value_size());
     }
 
   // FaceID
   val = wire_.find(Tlv::FaceManagement::FaceID);
-  if (val != wire_.getAll().end())
+  if (val != wire_.elements_end())
     {
       faceId_ = readNonNegativeInteger(*val);
     }
 
   // IPProto
   val = wire_.find(Tlv::FaceManagement::IPProto);
-  if (val != wire_.getAll().end())
+  if (val != wire_.elements_end())
     {
       ipProto_ = readNonNegativeInteger(*val);
     }
 
   // Host
   val = wire_.find(Tlv::FaceManagement::Host);
-  if (val != wire_.getAll().end())
+  if (val != wire_.elements_end())
     {
       host_ = std::string(reinterpret_cast<const char*>(val->value()), val->value_size());
     }
 
   // Port
   val = wire_.find(Tlv::FaceManagement::Port);
-  if (val != wire_.getAll().end())
+  if (val != wire_.elements_end())
     {
       port_ = std::string(reinterpret_cast<const char*>(val->value()), val->value_size());
     }
 
   // MulticastInterface
   val = wire_.find(Tlv::FaceManagement::MulticastInterface);
-  if (val != wire_.getAll().end())
+  if (val != wire_.elements_end())
     {
       multicastInterface_ = std::string(reinterpret_cast<const char*>(val->value()), val->value_size());
     }
 
   // MulticastTTL
   val = wire_.find(Tlv::FaceManagement::MulticastTTL);
-  if (val != wire_.getAll().end())
+  if (val != wire_.elements_end())
     {
       multicastTtl_ = readNonNegativeInteger(*val);
     }
 
   // FreshnessPeriod
   val = wire_.find(Tlv::FreshnessPeriod);
-  if (val != wire_.getAll().end())
+  if (val != wire_.elements_end())
     {
       freshnessPeriod_ = readNonNegativeInteger(*val);
     }
diff --git a/src/management/ndnd-forwarding-entry.hpp b/src/management/ndnd-forwarding-entry.hpp
index 0a02c7e..5cd81ab 100644
--- a/src/management/ndnd-forwarding-entry.hpp
+++ b/src/management/ndnd-forwarding-entry.hpp
@@ -154,36 +154,36 @@
   //                       FreshnessPeriod?
 
   // Action
-  Block::element_iterator val = wire_.find(Tlv::FaceManagement::Action);
-  if (val != wire_.getAll().end())
+  Block::element_const_iterator val = wire_.find(Tlv::FaceManagement::Action);
+  if (val != wire_.elements_end())
     {
       action_ = std::string(reinterpret_cast<const char*>(val->value()), val->value_size());
     }
 
   // Name
   val = wire_.find(Tlv::Name);
-  if (val != wire_.getAll().end())
+  if (val != wire_.elements_end())
     {
       prefix_.wireDecode(*val);
     }
 
   // FaceID
   val = wire_.find(Tlv::FaceManagement::FaceID);
-  if (val != wire_.getAll().end())
+  if (val != wire_.elements_end())
     {
       faceId_ = readNonNegativeInteger(*val);
     }
 
   // ForwardingFlags
   val = wire_.find(Tlv::FaceManagement::ForwardingFlags);
-  if (val != wire_.getAll().end())
+  if (val != wire_.elements_end())
     {
       forwardingFlags_.wireDecode(*val);
     }
 
   // FreshnessPeriod
   val = wire_.find(Tlv::FreshnessPeriod);
-  if (val != wire_.getAll().end())
+  if (val != wire_.elements_end())
     {
       freshnessPeriod_ = readNonNegativeInteger(*val);
     }
diff --git a/src/management/ndnd-status-response.hpp b/src/management/ndnd-status-response.hpp
index 1543bed..74e15fe 100644
--- a/src/management/ndnd-status-response.hpp
+++ b/src/management/ndnd-status-response.hpp
@@ -106,8 +106,8 @@
 
   code_ = readNonNegativeInteger(wire_.get(Tlv::FaceManagement::StatusCode));
 
-  Block::element_iterator val = wire_.find(Tlv::FaceManagement::StatusText);
-  if (val != wire_.getAll().end())
+  Block::element_const_iterator val = wire_.find(Tlv::FaceManagement::StatusText);
+  if (val != wire_.elements_end())
     {
       info_.assign(reinterpret_cast<const char*>(val->value()), val->value_size());
     }
diff --git a/src/management/nfd-control-response.hpp b/src/management/nfd-control-response.hpp
index 238d1c5..1e6ec24 100644
--- a/src/management/nfd-control-response.hpp
+++ b/src/management/nfd-control-response.hpp
@@ -142,8 +142,8 @@
   if (m_wire.type() != tlv::nfd_control::ControlResponse)
     throw Error("Requested decoding of ControlResponse, but Block is of different type");  
   
-  Block::element_iterator val = m_wire.getAll().begin();
-  if (val == m_wire.getAll().end() ||
+  Block::element_const_iterator val = m_wire.elements_begin();
+  if (val == m_wire.elements_end() ||
       val->type() != tlv::nfd_control::StatusCode)
     {
       throw Error("Incorrect ControlResponse format (StatusCode missing or not the first item)");
@@ -152,7 +152,7 @@
   m_code = readNonNegativeInteger(*val);
   ++val;
 
-  if (val == m_wire.getAll().end() ||
+  if (val == m_wire.elements_end() ||
       val->type() != tlv::nfd_control::StatusText)
     {
       throw Error("Incorrect ControlResponse format (StatusText missing or not the second item)");
@@ -160,7 +160,7 @@
   m_text.assign(reinterpret_cast<const char*>(val->value()), val->value_size());
   ++val;
 
-  if (val != m_wire.getAll().end())
+  if (val != m_wire.elements_end())
     m_body = *val;
   else
     m_body = Block();
diff --git a/src/management/nfd-fib-management-options.hpp b/src/management/nfd-fib-management-options.hpp
index 67e344c..ba56d93 100644
--- a/src/management/nfd-fib-management-options.hpp
+++ b/src/management/nfd-fib-management-options.hpp
@@ -162,22 +162,22 @@
   wire_.parse ();
 
   // Name
-  Block::element_iterator val = wire_.find(Tlv::Name);
-  if (val != wire_.getAll().end())
+  Block::element_const_iterator val = wire_.find(Tlv::Name);
+  if (val != wire_.elements_end())
     {
       name_.wireDecode(*val);
     }
 
   // FaceID
   val = wire_.find(tlv::nfd_control::FaceId);
-  if (val != wire_.getAll().end())
+  if (val != wire_.elements_end())
     {
       faceId_ = readNonNegativeInteger(*val);
     }
 
   // Cost
   val = wire_.find(tlv::nfd_control::Cost);
-  if (val != wire_.getAll().end())
+  if (val != wire_.elements_end())
     {
       cost_ = readNonNegativeInteger(*val);
     }