Changeset 1190


Ignore:
Timestamp:
03/02/09 22:06:37 (3 years ago)
Author:
Peter Peterson
Message:

Added small optimization to get search for the type of a supplied entry name rather than parsing whole level of tree. Refs #101.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/bindings/python/nxs/napi.py

    r1189 r1190  
    517517            (name, nxclass) = target 
    518518            if nxclass is None: 
    519                 entries = self.getentries() 
    520                 if not entries.has_key(name): 
     519                nxclass = self.__getnxclass(name) 
     520                if nxclass is None: 
    521521                    raise KeyError("Failed to find entry with name \"%s\"" \ 
    522522                                   % name) 
    523                 nxclass = entries[name] 
    524523            if nxclass != "SDS": 
    525524                self.opengroup(name, nxclass) 
     
    556555        #print "open group",nxclass,name 
    557556        if nxclass is None: 
    558             listing = self.getentries() 
    559             if not listing.has_key(name): 
     557            nxclass = self.__getnxclass(name) 
     558            if nxclass is None: 
    560559                raise KeyError("file does not have \"%s\" at this level" \ 
    561560                               % name) 
    562             nxclass = listing[name] 
    563561        status = nxlib.nxiopengroup_(self.handle, name, nxclass) 
    564562        if status == ERROR: 
     
    676674            (name, nxclass) = self.getnextentry() 
    677675        return result 
     676 
     677    def __getnxclass(self, name): 
     678        """ 
     679        Return the nxclass of the supplied name. 
     680        """ 
     681        self.initgroupdir() 
     682        (myname, nxclass) = self.getnextentry() 
     683        if (myname, nxclass) != (None, None): 
     684            if myname == name: 
     685                return nxclass 
     686        while (myname, nxclass) != (None, None): 
     687            (myname, nxclass) = self.getnextentry() 
     688            if myname == name: 
     689                return nxclass 
     690        return None 
    678691 
    679692    def entries(self): 
Note: See TracChangeset for help on using the changeset viewer.