Make Name.h use externally allocated components array
diff --git a/ndn-cpp/Name.h b/ndn-cpp/Name.h
index 314d51a..a80e3d5 100644
--- a/ndn-cpp/Name.h
+++ b/ndn-cpp/Name.h
@@ -12,8 +12,8 @@
 #endif
   
 struct ndn_NameComponent {
-  unsigned char *value;
-  unsigned int valueLength;
+  unsigned char *value;     /**< pointer to the component value */
+  unsigned int valueLength; /**< the number of bytes in value */
 };
 
 static inline void ndn_NameComponent_init(struct ndn_NameComponent *self, unsigned char *value, unsigned int valueLength) 
@@ -21,18 +21,23 @@
   self->value = value;
   self->valueLength = valueLength;
 }
-
-enum {
-  ndn_Name_MAX_COMPONENTS = 100  
-};
   
 struct ndn_Name {
-  struct ndn_NameComponent components[ndn_Name_MAX_COMPONENTS];
-  unsigned int nComponents;
+  struct ndn_NameComponent *components; /**< pointer to the array of components. */
+  unsigned int maxComponents;           /**< the number of elements in the allocated components array */
+  unsigned int nComponents;             /**< the number of components in the name */
 };
 
-static inline void ndn_Name_init(struct ndn_Name *self) 
+/**
+ * Initialize an ndn_Name struct with the components array.
+ * @param self pointer to the ndn_Name struct
+ * @param components the array of ndn_NameComponent already allocated
+ * @param maxComponents the number of elements in the allocated components array
+ */
+static inline void ndn_Name_init(struct ndn_Name *self, struct ndn_NameComponent *components, unsigned int maxComponents) 
 {
+  self->components = components;
+  self->maxComponents = maxComponents;
   self->nComponents = 0;
 }
 
@@ -40,5 +45,5 @@
 }
 #endif
 
-#endif	/* NAME_H */
+#endif