CMS 3D CMS Logo

python::iterators Namespace Reference


Classes

class  TestIterators

Functions

def _findIterators
def addIterator
def emptyIterator
def iteratorForBeginEnd
def iteratorForSizedObjects


Function Documentation

def python::iterators::_findIterators (   obj  )  [private]

Definition at line 46 of file iterators.py.

00046                        :
00047     objDict = obj.__dict__
00048     _beginNames = [name for name in objDict.keys() if "begin" in 
00049 name.lower()]
00050     _endNames = [name for name in objDict.keys() if "end" in name.lower()]
00051     if len(_beginNames)==1 and len(_endNames)== 1 and _beginNames[0].lower().replace("begin","") == _endNames[0].lower().replace("end",""):  
00052         return objDict[_beginNames[0]], objDict[_endNames[0]]
00053     else:
00054         return False
00055         
00056         
00057         
##########################

def python::iterators::addIterator (   obj  ) 

function for adding iterators to objects

Definition at line 6 of file iterators.py.

00006                     :
00007     """function for adding iterators to objects""" 
00008     if not hasattr(obj, "__iter__"):
00009         if hasattr(obj, "size"):
00010             obj.__iter__ = iteratorForSizedObjects
00011         else:
00012             try:
00013               begin, end = _findIterators(obj)
00014             except:
00015               return obj  
00016             if not hasattr(obj, "_begin") and hasattr(obj, "_end"):
00017                 obj._begin = begin
00018                 obj._end = end
00019                 obj.__iter__ = iteratorForBeginEnd
00020         #else:
00021         #    obj.__iter__ = EmptyIterator
00022     return obj
00023 
00024 
def iteratorForSizedObjects(self):

def python::iterators::emptyIterator (   self  ) 

empty iterator

Definition at line 40 of file iterators.py.

00040                        :
00041     """empty iterator"""
00042     raise cmserror("Automatic iterator search failed for %s. Either it is no iterable or it has multiple iterator possibilites. Please use loop(begin, end) instead." %obj )
00043 
00044 
00045 # automatic detection of iterators.      
def _findIterators(obj):

def python::iterators::iteratorForBeginEnd (   self  ) 

dynamically added iterator

Definition at line 32 of file iterators.py.

00032                              :
00033     """dynamically added iterator"""
00034     it = self._begin
00035     while (it != self.end):
00036         yield begin.__deref__()  #*b
00037         begin.__preinc__()       #++b
00038 
00039 
def emptyIterator(self):

def python::iterators::iteratorForSizedObjects (   self  ) 

dynamically added iterator

Definition at line 25 of file iterators.py.

00025                                  :
00026     """dynamically added iterator"""
00027     entries = container.size()
00028     for entry in xrange(entries):
00029         yield obj[entry]
00030   
00031         
def iteratorForBeginEnd(self):


Generated on Tue Jun 9 18:50:45 2009 for CMSSW by  doxygen 1.5.4