Added get(struct ndn_Name &)
diff --git a/ndn-cpp/Name.cpp b/ndn-cpp/Name.cpp
index 5a62801..c777ebe 100644
--- a/ndn-cpp/Name.cpp
+++ b/ndn-cpp/Name.cpp
@@ -19,17 +19,29 @@
 void Name::set(struct ndn_Name &nameStruct) 
 {
   clear();
-  for (int i = 0; i < nameStruct.nComponents; ++i)
+  for (unsigned int i = 0; i < nameStruct.nComponents; ++i)
     addComponent(nameStruct.components[i].value, nameStruct.components[i].valueLength);  
 }
 
+void Name::get(struct ndn_Name &nameStruct) 
+{
+  if (nameStruct.maxComponents < components_.size())
+    throw runtime_error("nameStruct.maxComponents must be >= this name getNComponents()");
+  
+  nameStruct.nComponents = components_.size();
+  for (unsigned int i = 0; i < nameStruct.nComponents; ++i) {
+    nameStruct.components[i].value = &components_[i][0];
+    nameStruct.components[i].valueLength = components_[i].size();
+  }  
+}
+
 std::string Name::to_uri()
 {
   // TODO: implement fully.
   ostringstream output;
-  for (int i = 0; i < components_.size(); ++i) {
+  for (unsigned int i = 0; i < components_.size(); ++i) {
     output << "/";
-    for (int j = 0; j < components_[i].size(); ++j)
+    for (unsigned int j = 0; j < components_[i].size(); ++j)
       output << components_[i][j];
   }