.. Copyright (c) 2019-22, J. D. Mitchell

   Distributed under the terms of the GPL license version 3.

   The full license is in the file LICENSE, distributed with this software.

   This file was auto-generated by docs/generate_from_yml.py, do not edit.

Blocks
======

.. doxygenclass:: libsemigroups::Blocks
   :project: libsemigroups

.. cpp:namespace:: libsemigroups::Blocks


Member types
------------
.. list-table::
   :widths: 50 50
   :header-rows: 0

   * - :cpp:member:`const_iterator`
     - Type for const iterators pointing to the index of the block.


   * - :cpp:member:`iterator`
     - Type for iterators pointing to the index of the block.


   * - :cpp:member:`lookup_const_iterator`
     - Type for const iterators pointing to the transverse block lookup.



Constructors
------------
.. list-table::
   :widths: 50 50
   :header-rows: 0

   * - :cpp:member:`Blocks() noexcept = default`
     - Constructs a blocks object of size 0.


   * - :cpp:member:`Blocks(Blocks const&) = default`
     - Default copy constructor.


   * - :cpp:member:`Blocks(Blocks&&) = default`
     - Default move constructor.


   * - :cpp:member:`Blocks(const_iterator,const_iterator)`
     - Constructs a blocks object from iterators.


   * - :cpp:member:`Blocks(size_t)`
     - Constructs a blocks object of given degree.


   * - :cpp:member:`operator=(Blocks const&) = default`
     - Default copy assignment operator.


   * - :cpp:member:`operator=(Blocks&&) = default`
     - Default move assignment operator.



Initialisation
--------------
.. list-table::
   :widths: 50 50
   :header-rows: 0

   * - :cpp:member:`set_block(size_t, uint32_t)`
     - Set the block that a point belongs to.


   * - :cpp:member:`set_is_transverse_block(size_t, bool)`
     - Set whether or not the block containing a point is transverse.



Operators
---------
.. list-table::
   :widths: 50 50
   :header-rows: 0

   * - :cpp:member:`operator!=(Blocks const&) const`
     - Compare two blocks objects for inequality.


   * - :cpp:member:`operator<(Blocks const&) const`
     - Compare two blocks objects for less.


   * - :cpp:member:`operator==(Blocks const&) const`
     - Compare two blocks objects for equality.


   * - :cpp:member:`operator[](size_t) const`
     - Returns a const reference to the index of the block containing a point.



Attributes
----------
.. list-table::
   :widths: 50 50
   :header-rows: 0

   * - :cpp:member:`degree() const noexcept`
     - Returns the degree of a blocks object.


   * - :cpp:member:`hash_value() const noexcept`
     - Returns a hash value for a :cpp:any:`Blocks`  instance.


   * - :cpp:member:`is_transverse_block(size_t) const noexcept`
     - Check if a block is a transverse block.


   * - :cpp:member:`number_of_blocks() const noexcept`
     - Returns the number of blocks in a :cpp:any:`Blocks`  object.


   * - :cpp:member:`rank() const`
     - Returns the number of transverse blocks.



Iterators
---------
.. list-table::
   :widths: 50 50
   :header-rows: 0

   * - :cpp:member:`cbegin() const noexcept`
     - Returns a const iterator pointing to the index of the first block.


   * - :cpp:member:`cbegin_lookup() const noexcept`
     - Returns a const iterator pointing to the first transverse block lookup.


   * - :cpp:member:`cend() const noexcept`
     - Returns a const iterator pointing one past-the-end of the last block.


   * - :cpp:member:`cend_lookup() const noexcept`
     - Returns a const iterator pointing to the first transverse block lookup.



.. toctree::
   :hidden:

   libsemigroups__blocks__member_types.rst
   libsemigroups__blocks__constructors.rst
   libsemigroups__blocks__initialisation.rst
   libsemigroups__blocks__operators.rst
   libsemigroups__blocks__attributes.rst
   libsemigroups__blocks__iterators.rst
