PyNDN: Simplified versions of Interset and Name are now seem to be fully working

Refs #1010 (http://redmine.named-data.net/issues/1010)
diff --git a/PyNDN/Name.py b/PyNDN/Name.py
index aed9113..a9aaa31 100644
--- a/PyNDN/Name.py
+++ b/PyNDN/Name.py
@@ -17,24 +17,16 @@
 #             Jeff Burke <jburke@ucla.edu>
 #
 
-def toWire (name):
-    buf = ns.network.Buffer (ns.ndnSIM.ndn.Wire.FromNameSize (name))
-    ns.ndnSIM.ndn.Wire.FromName (buf.Begin (), name)
-    
-    output = bytearray (buf.GetSize ())
-    buf.CopyData (output, buf.GetSize ())
-    
-    return buf
-
 import ns.ndnSIM
-import ns.network
 
-from copy import copy
-import time, struct, random
+class Name ():
+    _name = None
 
-class Name (ns.ndnSIM.ndn.Name):
-    def __init__(self, name=None):
-        super (Name, self).__init__ (name)
+    def __init__ (self, value = None):
+        if value:
+            self._name = ns.ndnSIM.ndn.Name (value)
+        else:
+            self._name = ns.ndnSIM.ndn.Name ()
 
     @staticmethod
     def fromWire (wire):
@@ -42,68 +34,31 @@
 
     @staticmethod
     def toWire (name):
-        buf = ns.network.Buffer ()
-        buf.AddToStart (ns.ndnSIM.ndn.Wire.FromNameSize (name))
-        ns.ndnSIM.ndn.Wire.FromName (buf.Begin (), name)
-
-        output = bytearray (buf.GetSize ())
-        buf.CopyData (output, buf.GetSize ())
-        return output
+        return ns.ndnSIM.ndn.Wire.FromName (name)
     
-    def get_ccnb(self):
-        return _ndn.dump_charbuf(self.ccn_data)
+    def __getattr__ (self, name):
+        return self._name.__getattribute__ (name)
 
-    def __repr__(self):
-        global NAME_NORMAL, NAME_ANY
+    def __len__ (self):
+        return self._name.size ()
 
-        if self.type == NAME_NORMAL:
-            return "ndn.Name('ccnx:" + _ndn.name_to_uri(self.ccn_data) + "')"
-        elif self.type == NAME_ANY:
-            return "ndn.Name(name_type=ndn.NAME_ANY)"
-        else:
-            raise ValueError("Name is of wrong type %d" % self.type)
-
-    def __str__(self):
-        global NAME_NORMAL, NAME_ANY
-
-        if self.type == NAME_NORMAL:
-            return _ndn.name_to_uri(self.ccn_data)
-        elif self.type == NAME_ANY:
-            return "<any>"
-        else:
-            raise ValueError("Name is of wrong type %d" % self.type)
-
-    def __len__(self):
-        return len(self.components)
-
-    def __add__(self, other):
-        return self.append(other)
-
-    def __setattr__(self, name, value):
-        raise TypeError("can't modify immutable instance")
-
-    __delattr__ = __setattr__
-
-    def __getattribute__(self, name):
-        if name == "ccn_data":
-            if object.__getattribute__(self, 'ccn_data_dirty'):
-                self._setattr('ccn_data', _ndn.name_comps_to_ccn(self.components))
-                self._setattr('ccn_data_dirty', False)
-        return object.__getattribute__(self, name)
+    def __add__ (self, other):
+        return self._name.append (other)
 
     def __getitem__(self, key):
-        if type(key) is int:
-            return self.components[key]
-        elif type(key) is slice:
-            return Name(self.components[key])
+        if type (key) is int:
+            if abs(key) < self._name.size ():
+                return self._name.get (key)
+            else:
+                raise IndexError ("index out of range")
+        elif type (key) is slice:
+            name = ns.ndnSIM.ndn.Name ()
+            for component in xrange (*key.indices (self.size ())):
+                name.append (self._name.get (component))
+            return name
         else:
-            raise ValueError("Unknown __getitem__ type: %s" % type(key))
+            raise ValueError("Unknown __getitem__ type: %s" % type (key))
 
-    # def __setitem__(self, key, value):
-    #     self.components[key] = value
+    def __repr__ (self):
+        return "ndnSIM.Name('" + self._name.toUri () + "')"
 
-    # def __delitem__(self, key):
-    #     del self.components[key]
-
-    # def __len__(self):
-    #     return len(self.components)