Classes | |
class | TestIterators |
Functions | |
def | _findIterators |
def | addIterator |
def | emptyIterator |
def | iteratorForBeginEnd |
def | iteratorForSizedObjects |
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):