def index_fields(self, index=Index(), **options):
        """ Indexes all fields in the `Structure` starting with the given
        *index* and returns the :class:`Index` after the last :class:`Field`
        in the `Structure`.

        :param Index index: start :class:`Index` for the first :class:`Field`
            in the `Structure`.
        :keyword bool nested: if ``True`` all :class:`Pointer` fields of the
            `Structure` indexes their referenced :attr:`~Pointer.data` object
            fields as well (chained method call).
        """
        for name, item in self.items():
            # Container
            if is_container(item):
                index = item.index_fields(index, **options)
            # Pointer
            elif is_pointer(item) and get_nested(options):
                index = item.index_field(index)
                item.index_data()
            # Field
            elif is_field(item):
                index = item.index_field(index)
            else:
                raise MemberTypeError(self, item, name, index)
        return index
def index_fields ( self , index = Index ( ) , ** options ) : for name , item in self . items ( ) : if is_container ( item ) : index = item . index_fields ( index , ** options ) elif is_pointer ( item ) and get_nested ( options ) : index = item . index_field ( index ) item . index_data ( ) elif is_field ( item ) : index = item . index_field ( index ) else : raise MemberTypeError ( self , item , name , index ) return index
Indexes all fields in the `Structure` starting with the given
        *index* and returns the :class:`Index` after the last :class:`Field`
        in the `Structure`.

        :param Index index: start :class:`Index` for the first :class:`Field`
            in the `Structure`.
        :keyword bool nested: if ``True`` all :class:`Pointer` fields of the
            `Structure` indexes their referenced :attr:`~Pointer.data` object
            fields as well (chained method call).