Beispiel #1
0
 def __init__(self, dmm, fe_type):
     int_type = fe_type.yield_type
     members = [('iter', types.EphemeralPointer(int_type)),
                ('stop', int_type),
                ('step', int_type),
                ('count', types.EphemeralPointer(int_type))]
     super(RangeIteratorType, self).__init__(dmm, fe_type, members)
Beispiel #2
0
    def __init__(self, dmm, fe_type):
        array_types = fe_type.arrays
        ndim = fe_type.ndim
        shape_len = ndim if fe_type.need_shaped_indexing else 1
        members = [
            ('exhausted', types.EphemeralPointer(types.boolean)),
            ('arrays', types.Tuple(array_types)),
            # The iterator's main shape and indices
            ('shape', types.UniTuple(types.intp, shape_len)),
            ('indices', types.EphemeralArray(types.intp, shape_len)),
        ]
        # Indexing state for the various sub-iterators
        # XXX use a tuple instead?
        for i, sub in enumerate(fe_type.indexers):
            kind, start_dim, end_dim, _ = sub
            member_name = 'index%d' % i
            if kind == 'flat':
                # A single index into the flattened array
                members.append(
                    (member_name, types.EphemeralPointer(types.intp)))
            elif kind in ('scalar', 'indexed', '0d'):
                # Nothing required
                pass
            else:
                assert 0
        # Slots holding values of the scalar args
        # XXX use a tuple instead?
        for i, ty in enumerate(fe_type.arrays):
            if not isinstance(ty, types.Array):
                member_name = 'scalar%d' % i
                members.append((member_name, types.EphemeralPointer(ty)))

        super(NdIter, self).__init__(dmm, fe_type, members)
Beispiel #3
0
 def __init__(self, dmm, fe_type):
     int_type = fe_type.yield_type
     members = [
         ("iter", types.EphemeralPointer(int_type)),
         ("stop", int_type),
         ("step", int_type),
         ("count", types.EphemeralPointer(int_type)),
     ]
     super(RangeIteratorType, self).__init__(dmm, fe_type, members)
Beispiel #4
0
 def __init__(self, dmm, fe_type):
     members = [('index', types.EphemeralPointer(types.intp)),
                (
                    'tuple',
                    fe_type.container,
                )]
     super(UniTupleIter, self).__init__(dmm, fe_type, members)
 def __init__(self, dmm, fe_type):
     members = [
         ('size', types.intp),  # the size of the iteration space
         ('parent', fe_type.parent),  # the parent list
         ('index', types.EphemeralPointer(types.intp)),  # current index
     ]
     super(ListIterModel, self).__init__(dmm, fe_type, members)
Beispiel #6
0
 def __init__(self, dmm, fe_type):
     ndim = fe_type.ndim
     members = [('shape', types.UniTuple(types.intp, ndim)),
                ('indices', types.EphemeralArray(types.intp, ndim)),
                ('exhausted', types.EphemeralPointer(types.boolean)),
                ]
     super(NdIndexModel, self).__init__(dmm, fe_type, members)
Beispiel #7
0
    def __init__(self, dmm, fe_type):
        members = [
            ("count", types.EphemeralPointer(types.intp)),
            ("iter", fe_type.source_type),
        ]

        super(EnumerateType, self).__init__(dmm, fe_type, members)
Beispiel #8
0
 def __init__(self, dmm, fe_type):
     # We use an unsigned index to avoid the cost of negative index tests.
     members = [
         ("index", types.EphemeralPointer(types.uintp)),
         ("array", fe_type.array_type),
     ]
     super(ArrayIterator, self).__init__(dmm, fe_type, members)
Beispiel #9
0
 def __init__(self, dmm, fe_type):
     payload_type = types.ListPayload(fe_type.container)
     members = [
         # The meminfo data points to a ListPayload (shared with the
         # original list object)
         ('meminfo', types.MemInfoPointer(payload_type)),
         ('index', types.EphemeralPointer(types.intp)),
     ]
     super(ListIterModel, self).__init__(dmm, fe_type, members)
Beispiel #10
0
 def __init__(self, dmm, fe_type):
     members = [
         ("index", types.EphemeralPointer(types.intp)),
         (
             "tuple",
             fe_type.container,
         ),
     ]
     super(UniTupleIter, self).__init__(dmm, fe_type, members)
Beispiel #11
0
 def __init__(self, dmm, fe_type):
     payload_type = types.SetPayload(fe_type.container)
     members = [
         # The meminfo data points to a SetPayload (shared with the
         # original set object)
         ('meminfo', types.MemInfoPointer(payload_type)),
         # The index into the entries table
         ('index', types.EphemeralPointer(types.intp)),
     ]
     super(SetIterModel, self).__init__(dmm, fe_type, members)
Beispiel #12
0
 def __init__(self, dmm, fe_type):
     array_type = fe_type.array_type
     dtype = array_type.dtype
     ndim = array_type.ndim
     members = [('array', array_type),
                ('pointers', types.EphemeralArray(types.CPointer(dtype), ndim)),
                ('indices', types.EphemeralArray(types.intp, ndim)),
                ('exhausted', types.EphemeralPointer(types.boolean)),
     ]
     super(FlatIter, self).__init__(dmm, fe_type, members)
Beispiel #13
0
 def __init__(self, dmm, fe_type, need_indices):
     assert fe_type.array_type.layout == 'C'
     array_type = fe_type.array_type
     dtype = array_type.dtype
     ndim = array_type.ndim
     members = [('array', array_type),
                ('stride', types.intp),
                ('index', types.EphemeralPointer(types.intp)),
                ]
     if need_indices:
         # For ndenumerate()
         members.append(('indices', types.EphemeralArray(types.intp, ndim)))
     super(CContiguousFlatIter, self).__init__(dmm, fe_type, members)
Beispiel #14
0
    def __init__(self, dmm, fe_type):
        members = [('count', types.EphemeralPointer(types.intp)),
                   ('iter', fe_type.source_type)]

        super(EnumerateType, self).__init__(dmm, fe_type, members)
Beispiel #15
0
 def __init__(self, dmm, fe_type):
     members = [('index', types.EphemeralPointer(types.uintp)),
                ('buffer', fe_type.buffer_type)]
     super(BufferPointerIteratorModel, self).__init__(dmm, fe_type, members)