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

Ukkonen
=======

.. doxygenclass:: libsemigroups::Ukkonen
   :project: libsemigroups

.. cpp:namespace:: libsemigroups::Ukkonen


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

   * - :cpp:member:`Ukkonen() <Ukkonen::Ukkonen()>`
     - 
   * - :cpp:member:`Ukkonen(Ukkonen &&) = default`
     - Default constructor.


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


   * - :cpp:member:`operator=(Ukkonen &&) = default`
     - Default constructor.


   * - :cpp:member:`operator=(Ukkonen const &) = default`
     - Default constructor.



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

   * - :cpp:member:`const_iterator`
     - Alias for ``word_type`` iterators.


   * - :cpp:member:`index_type`
     - 
   * - :cpp:member:`unique_letter_type`
     - 
   * - :cpp:member:`word_index_type`
     - Alias for order that words were added.



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

   * - :cpp:member:`add_word(Iterator,Iterator) <template <typename Iterator> void add_word(Iterator,Iterator)>`
     - 
   * - :cpp:member:`add_word(Word const &) <template <typename Word> void add_word(Word const &)>`
     - 
   * - :cpp:member:`add_word(char const *)`
     - 
   * - :cpp:member:`add_word(const_iterator,const_iterator)`
     - 
   * - :cpp:member:`add_word(word_type const &)`
     - 
   * - :cpp:member:`add_word_no_checks(Iterator,Iterator) <template <typename Iterator> void add_word_no_checks(Iterator,Iterator)>`
     - See :cpp:member:`add_word_no_checks(const_iterator, const_iterator)` .


   * - :cpp:member:`add_word_no_checks(Word const &) <template <typename Word> void add_word_no_checks(Word const &)>`
     - See :cpp:member:`add_word_no_checks(const_iterator, const_iterator)` .


   * - :cpp:member:`add_word_no_checks(char const *)`
     - See :cpp:member:`add_word_no_checks(const_iterator, const_iterator)` .


   * - :cpp:member:`add_word_no_checks(const_iterator,const_iterator)`
     - 
   * - :cpp:member:`add_word_no_checks(word_type const &)`
     - See :cpp:member:`add_word_no_checks(const_iterator, const_iterator)` .



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

   * - :cpp:member:`length_of_distinct_words() const noexcept`
     - 
   * - :cpp:member:`length_of_words() const noexcept`
     - 
   * - :cpp:member:`max_word_length() const noexcept`
     - 
   * - :cpp:member:`nodes() const noexcept`
     - 
   * - :cpp:member:`number_of_distinct_words() const noexcept`
     - 
   * - :cpp:member:`number_of_words() const noexcept`
     - 

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

   * - :cpp:member:`begin() const noexcept`
     - 
   * - :cpp:member:`cbegin() const noexcept`
     - 
   * - :cpp:member:`cend() const noexcept`
     - 
   * - :cpp:member:`end() const noexcept`
     - 

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

   * - :cpp:member:`validate_word(Iterator,Iterator) const <template <typename Iterator> void validate_word(Iterator,Iterator) const>`
     - 
   * - :cpp:member:`validate_word(word_type const &) const`
     - 

Other member functions
----------------------
.. list-table::
   :widths: 50 50
   :header-rows: 0

   * - :cpp:member:`distance_from_root(Node const &) const`
     - 
   * - :cpp:member:`index(Iterator,Iterator) const <template <typename Iterator> word_index_type index(Iterator,Iterator) const>`
     - 
   * - :cpp:member:`index_no_checks(Iterator,Iterator) const <template <typename Iterator> word_index_type index_no_checks(Iterator,Iterator) const>`
     - 
   * - :cpp:member:`is_suffix(State const &) const`
     - 
   * - :cpp:member:`is_unique_letter(letter_type) const noexcept`
     - 
   * - :cpp:member:`multiplicity(word_index_type) const`
     - 
   * - :cpp:member:`traverse(Iterator,Iterator) const <template <typename Iterator> std::pair< State, Iterator > traverse(Iterator,Iterator) const>`
     - 
   * - :cpp:member:`traverse(State &,Iterator,Iterator) const <template <typename Iterator> Iterator traverse(State &,Iterator,Iterator) const>`
     - 
   * - :cpp:member:`traverse_no_checks(Iterator,Iterator) const <template <typename Iterator> std::pair< State, Iterator > traverse_no_checks(Iterator,Iterator) const>`
     - 
   * - :cpp:member:`traverse_no_checks(State &,Iterator,Iterator) const <template <typename Iterator> Iterator traverse_no_checks(State &,Iterator,Iterator) const>`
     - 
   * - :cpp:member:`unique_letter(word_index_type) const noexcept`
     - 
   * - :cpp:member:`word_index(Node const &) const`
     - 
   * - :cpp:member:`word_index(index_type) const`
     - 

.. toctree::
   :hidden:

   libsemigroups__ukkonen__constructors.rst
   libsemigroups__ukkonen__member_types.rst
   libsemigroups__ukkonen__initialisation.rst
   libsemigroups__ukkonen__attributes.rst
   libsemigroups__ukkonen__iterators.rst
   libsemigroups__ukkonen__validation.rst
   libsemigroups__ukkonen__other_member_functions.rst
