class xr_intra_definition_iterator

Iterator over the definitions ( xr_tuple ) of a token.

Initialize with sfile.range_definition_iterator().

Use as you would any other Python iterator. For example:

# set up sfile sf, then...
for e in sf.range_definition_iterator(3,8):
    print('xr_tuple: ', e)

xr_intra_definition_iterator Details

class cs.xr_intra_definition_iterator

Iterator over the definitions ( xr_tuple ) of a token.

__eq__(other)

Iterator equality.

Parameters:other (xr_intra_definition_iterator) –
Return type:bool
Returns:True if and only if self and other are at the same position. Behavior is undefined if self and other are not iterating over the same collection.
>>> sf = next(s for s in project.current().sfiles()
...             if s.name().endswith('apitest.cpp'))
>>> rdef_iterA = sf.range_definition_iterator(16,24)
>>> rdef_iterB = sf.range_definition_iterator(16,24)
>>> rdef_iterA == rdef_iterB
True
>>> for tup in rdef_iterA:
...     if tup.get_kind_role() == xr_kind_role.VAR_PARAMETER_WRITE:
...         break
...
>>> rdef_iterA == rdef_iterB
False
__iter__()

Get the iterator object.

Return type:xr_intra_definition_iterator
Returns:self.
>>> sf = next(s for s in project.current().sfiles()
...             if s.name().endswith('apitest.cpp'))
>>> for tup in sf.range_definition_iterator(16,24):  # iteration managed by xr_intra_definition_iterator.__iter__()
...                                                  # and xr_intra_definition_iterator.__next__()
...     print(tup.get_name(), tup.get_line(), tup.get_kind_role())
...
i 16 var_parameter_read
i 19 var_parameter_write
i 21 var_parameter_write
i 23 var_parameter_write
__ne__(other)

Iterator inequality.

Parameters:other (xr_intra_definition_iterator) – The iterator to compare against.
Return type:bool
Returns:False if and only if self and other are at the same position. Behavior is undefined if self and other are not iterating over the same collection.
>>> sf = next(s for s in project.current().sfiles()
...             if s.name().endswith('apitest.cpp'))
>>> rdef_iterA = sf.range_definition_iterator(16,24)
>>> rdef_iterB = sf.range_definition_iterator(16,24)
>>> rdef_iterA != rdef_iterB
False
>>> for tup in rdef_iterA:
...     if tup.get_kind_role() == xr_kind_role.VAR_PARAMETER_WRITE:
...         break
...
>>> rdef_iterA != rdef_iterB
True
__next__()

Iterator dereference operator.

Return type:

xr_tuple

Returns:

The element at the current iterator position.

Raises:
  • Side effects: Modifies self.

The typical use is implicit:

>>> for item in myiter:
...   (do something to item)
>>> sf = next(s for s in project.current().sfiles()
...             if s.name().endswith('apitest.cpp'))
>>> for tup in sf.range_definition_iterator(16,24):  # iteration managed by xr_intra_definition_iterator.__iter__()
...                                                  # and xr_intra_definition_iterator.__next__()
...     print(tup.get_name(), tup.get_line(), tup.get_kind_role())
...
i 16 var_parameter_read
i 19 var_parameter_write
i 21 var_parameter_write
i 23 var_parameter_write
__repr__()

Get a representation of the iterator that includes information useful for debugging.

Return type:str
Returns:The string representation.
>>> sf = next(s for s in project.current().sfiles()
...             if s.name().endswith('apitest.cpp'))
>>> xidi = sf.range_definition_iterator(10,30)
>>> repr(xidi)
'<cs.xr_intra_definition_iterator begin>'
__str__()

Get a simple string representation of the iterator.

Return type:str
Returns:The string representation.
>>> sf = next(s for s in project.current().sfiles()
...             if s.name().endswith('apitest.cpp'))
>>> xidi = sf.range_definition_iterator(10,30)
>>> str(xidi)
'<cs.xr_intra_definition_iterator begin>'
at_end()

Check: is the iterator at the end of the structure?

Return type:bool
Returns:True if the iterator is at the end of the structure (there are no more elements to iterate over), False otherwise.
>>> sf = next(s for s in project.current().sfiles()
...             if s.name().endswith('apitest.cpp'))
>>> xidi = sf.range_definition_iterator(10,30)
>>> xidi.at_end()
False