.. 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()>`
     - Default constructor.


   * - :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`
     - Alias for any letter that is added by :cpp:any:`Ukkonen`  (so that unique strings end in unique letters).


   * - :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)>`
     - See :cpp:member:`add_word_no_checks(const_iterator, const_iterator)` 


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


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


   * - :cpp:member:`add_word(const_iterator,const_iterator)`
     - Check and add a word to the suffix tree.


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


   * - :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)`
     - Add a word to the suffix tree.


   * - :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`
     - Returns the sum of the lengths of the distinct words in the suffix tree.


   * - :cpp:member:`length_of_words() const noexcept`
     - Returns the sum of the lengths of all of the words in the suffix tree.


   * - :cpp:member:`max_word_length() const noexcept`
     - Returns the maximum length of word in the suffix tree.


   * - :cpp:member:`nodes() const noexcept`
     - Returns the nodes in the suffix tree.


   * - :cpp:member:`number_of_distinct_words() const noexcept`
     - Returns the number of distinct non-empty words in the suffix tree.


   * - :cpp:member:`number_of_words() const noexcept`
     - Returns the number of non-empty words in the suffix tree.



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

   * - :cpp:member:`begin() const noexcept`
     - Returns an iterator pointing to the first letter of the first word in the suffix tree.


   * - :cpp:member:`cbegin() const noexcept`
     - Returns an iterator pointing to the first letter of the first word in the suffix tree.


   * - :cpp:member:`cend() const noexcept`
     - Returns an iterator pointing one past the last letter of the last word in the suffix tree.


   * - :cpp:member:`end() const noexcept`
     - Returns an iterator pointing one past the last letter of the last word in the suffix tree.



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>`
     - Validate the word ``[first, last)``.


   * - :cpp:member:`validate_word(word_type const &) const`
     - Validate a word.



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

   * - :cpp:member:`distance_from_root(Node const &) const`
     - Returns the distance of a node from the root.


   * - :cpp:member:`index(Iterator,Iterator) const <template <typename Iterator> word_index_type index(Iterator,Iterator) const>`
     - See :cpp:member:`index_no_checks` .


   * - :cpp:member:`index_no_checks(Iterator,Iterator) const <template <typename Iterator> word_index_type index_no_checks(Iterator,Iterator) const>`
     - Find the index of a word in the suffix tree.


   * - :cpp:member:`is_suffix(State const &) const`
     - Check if a state corresponds to a suffix.


   * - :cpp:member:`is_unique_letter(letter_type) const noexcept`
     - Check if a letter is a unique letter added to the end of a word in the suffix tree.


   * - :cpp:member:`multiplicity(word_index_type) const`
     - Returns the multiplicity of a word by index.


   * - :cpp:member:`traverse(Iterator,Iterator) const <template <typename Iterator> std::pair< State, Iterator > traverse(Iterator,Iterator) const>`
     - See :cpp:member:`traverse_no_checks` .


   * - :cpp:member:`traverse(State &,Iterator,Iterator) const <template <typename Iterator> Iterator traverse(State &,Iterator,Iterator) const>`
     - See :cpp:member:`traverse_no_checks` .


   * - :cpp:member:`traverse_no_checks(Iterator,Iterator) const <template <typename Iterator> std::pair< State, Iterator > traverse_no_checks(Iterator,Iterator) const>`
     - Traverse the suffix tree from the root.


   * - :cpp:member:`traverse_no_checks(State &,Iterator,Iterator) const <template <typename Iterator> Iterator traverse_no_checks(State &,Iterator,Iterator) const>`
     - Traverse the suffix tree from the root.


   * - :cpp:member:`unique_letter(word_index_type) const noexcept`
     - Returns the unique letter added to the end of a word in the suffix tree.


   * - :cpp:member:`word_index(Node const &) const`
     - Returns the index of the word corresponding to a node.


   * - :cpp:member:`word_index(index_type) const`
     - Returns the index of the word corresponding to a position.



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