1.. Copyright (c) 2019, J. D. Mitchell
2
3   Distributed under the terms of the GPL license version 3.
4
5   The full license is in the file LICENSE, distributed with this software.
6
7.. _Adapters:
8
9Adapters
10========
11
12Declared in ``adapters.hpp``.
13
14This file contains class templates for adapting a user-defined type for use
15with the algorithms in ``libsemigroups``. There are explicit implementations for
16relevant element types from ``libsemigroups`` and ``HPCombi``, details of which
17can be found elsewhere in this documentation.
18
19No default implementation
20~~~~~~~~~~~~~~~~~~~~~~~~~
21
22The following adapters have no default implementation for arbitrary types to
23avoid violating the `principle of least astonishment
24<https://en.wikipedia.org/wiki/Principle_of_least_astonishment>`_
25
26.. toctree::
27   :maxdepth: 1
28
29   _generated/libsemigroups__complexity.rst
30   _generated/libsemigroups__degree.rst
31   _generated/libsemigroups__imageleftaction.rst
32   _generated/libsemigroups__imagerightaction.rst
33   _generated/libsemigroups__increasedegree.rst
34   _generated/libsemigroups__inverse.rst
35   _generated/libsemigroups__one.rst
36   _generated/libsemigroups__product.rst
37
38Default implementation
39~~~~~~~~~~~~~~~~~~~~~~
40
41The following adapters do have a default implementation for arbitrary types:
42
43.. The following are not in the yml setup because JDM couldn't figure out how
44   to generate the rst page for EqualTo::operator().
45
46.. toctree::
47   :maxdepth: 1
48
49   api/equalto.rst
50   api/hash.rst
51   api/less.rst
52   api/ontuples.rst
53   api/onsets.rst
54   api/swap.rst
55