.. 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.

Action
======

.. doxygenclass:: libsemigroups::Action
   :project: libsemigroups

.. cpp:namespace:: libsemigroups::Action


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

   * - :cpp:member:`action_type`
     - Type of the action of :cpp:member:`element_type`  on :cpp:member:`point_type` .


   * - :cpp:member:`const_iterator`
     - The type of a const iterator pointing to a :cpp:member:`point_type` .


   * - :cpp:member:`const_iterator_scc`
     - The type of a const iterator pointing to a single strongly connected component (scc).


   * - :cpp:member:`const_iterator_scc_roots`
     - The type of a const iterator pointing to a representative of a strongly connected component (scc).


   * - :cpp:member:`const_iterator_sccs`
     - The type of a const iterator pointing to a strongly connected component (scc).


   * - :cpp:member:`const_pointer_point_type`
     - The type of a const pointer to a :cpp:member:`point_type` .


   * - :cpp:member:`const_reference_point_type`
     - The type of a const reference to a :cpp:member:`point_type` .


   * - :cpp:member:`element_type`
     - The template parameter ``TElementType``.


   * - :cpp:member:`index_type`
     - The type of the index of a point.


   * - :cpp:member:`point_type`
     - The template parameter ``TPointType``.


   * - :cpp:member:`scc_index_type`
     - The type of the index of a strongly connected component.



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

   * - :cpp:member:`Action() <Action::Action()>`
     - Default constructor.


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


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


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


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



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

   * - :cpp:member:`add_generator(element_type)`
     - Add a generator to the action.


   * - :cpp:member:`add_seed(const_reference_point_type)`
     - Add a seed to the action.


   * - :cpp:member:`reserve(size_t)`
     - Increase the capacity to a value that is greater or equal to ``val``.



Position, size, empty...
------------------------
.. list-table::
   :widths: 50 50
   :header-rows: 0

   * - :cpp:member:`at(size_t) const`
     - Returns a const reference to the point in a given position.


   * - :cpp:member:`cbegin() const noexcept`
     - Returns a :cpp:member:`const_iterator`  (random access iterator) pointing at the first point.


   * - :cpp:member:`cend() const noexcept`
     - Returns a :cpp:member:`const_iterator`  (random access iterator) pointing one past the last point.


   * - :cpp:member:`current_size() const noexcept`
     - Returns the number of points found so far.


   * - :cpp:member:`empty() const noexcept`
     - Checks if the :cpp:any:`Action`  contains any points.


   * - :cpp:member:`operator[](size_t) const noexcept`
     - Returns a const reference to the point in a given position.


   * - :cpp:member:`position(const_reference_point_type) const`
     - Returns the position of a point in the so far discovered points.


   * - :cpp:member:`size()`
     - Returns the size of the fully enumerated action.



Strongly connected components
-----------------------------
.. list-table::
   :widths: 50 50
   :header-rows: 0

   * - :cpp:member:`cache_scc_multipliers() const noexcept`
     - Returns whether or not we are caching scc multipliers.


   * - :cpp:member:`cache_scc_multipliers(bool) noexcept`
     - Set whether or not to cache scc multipliers.


   * - :cpp:member:`digraph()`
     - Returns the digraph of the completely enumerated action.


   * - :cpp:member:`multiplier_from_scc_root(index_type)`
     - Returns a multiplier from a scc root to a given index.


   * - :cpp:member:`multiplier_to_scc_root(index_type)`
     - Returns a multiplier from a given index to a scc root.


   * - :cpp:member:`root_of_scc(const_reference_point_type)`
     - Returns a const reference to the root point of a strongly connected component.


   * - :cpp:member:`root_of_scc(index_type)`
     - Returns a const reference to the root point of a strongly connected component.



Member functions inherited from Runner
--------------------------------------
.. list-table::
   :widths: 50 50
   :header-rows: 0

   * - :cpp:member:`dead() const noexcept`
     - Check if the runner is dead.


   * - :cpp:member:`finished() const`
     - Check if :cpp:member:`run`  has been run to completion or not.


   * - :cpp:member:`kill() noexcept`
     - Stop :cpp:member:`run`  from running (thread-safe).


   * - :cpp:member:`report() const`
     - Check if it is time to report.


   * - :cpp:member:`report_every() const noexcept`
     - Get the minimum elapsed time between reports.


   * - :cpp:member:`report_every(TIntType) <template <typename TIntType> void report_every(TIntType)>`
     - Set the minimum elapsed time between reports.


   * - :cpp:member:`report_every(std::chrono::nanoseconds)`
     - Set the minimum elapsed time between reports.


   * - :cpp:member:`report_why_we_stopped() const`
     - Report why :cpp:member:`run`  stopped.


   * - :cpp:member:`run()`
     - Run until :cpp:member:`finished` .


   * - :cpp:member:`run_for(TIntType) <template <typename TIntType> void run_for(TIntType)>`
     - Run for a specified amount of time.


   * - :cpp:member:`run_for(std::chrono::nanoseconds)`
     - Run for a specified amount of time.


   * - :cpp:member:`run_until(T&&) <template <typename T> void run_until(T&&)>`
     - Run until a nullary predicate returns ``true`` or :cpp:member:`finished` .


   * - :cpp:member:`run_until(bool(*)())`
     - Run until a nullary predicate returns ``true`` or :cpp:member:`finished` .


   * - :cpp:member:`running() const noexcept`
     - Check if currently running.


   * - :cpp:member:`running_for() const noexcept`
     - Check if the runner is currently running for a particular length of time.


   * - :cpp:member:`running_until() const noexcept`
     - Check if the runner is currently running until a nullary predicate returns ``true``.


   * - :cpp:member:`started() const`
     - Check if :cpp:member:`run`  has been called at least once before.


   * - :cpp:member:`stopped() const`
     - Check if the runner is stopped.


   * - :cpp:member:`stopped_by_predicate() const`
     - Check if the runner was, or should, stop because of the argument for :cpp:member:`run_until` .


   * - :cpp:member:`timed_out() const`
     - Check if the amount of time passed to :cpp:member:`run_for`  has elapsed.



.. toctree::
   :hidden:

   libsemigroups__action__member_types.rst
   libsemigroups__action__constructors.rst
   libsemigroups__action__initialization.rst
   libsemigroups__action__position__size__empty___.rst
   libsemigroups__action__strongly_connected_components.rst
   libsemigroups__action__member_functions_inherited_from_runner.rst
