Skip to content

Commit 6d20d6d

Browse files
hpcombi: add support for FroidurePin
1 parent 5e87d24 commit 6d20d6d

3 files changed

Lines changed: 46 additions & 30 deletions

File tree

src/froidure-pin.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
#include <libsemigroups/bipart.hpp>
2323
#include <libsemigroups/bmat8.hpp>
2424
#include <libsemigroups/froidure-pin.hpp>
25+
#include <libsemigroups/hpcombi.hpp>
2526
#include <libsemigroups/knuth-bendix.hpp>
2627
#include <libsemigroups/matrix.hpp>
2728
#include <libsemigroups/pbr.hpp>
@@ -1268,10 +1269,9 @@ This function returns the element of *fp* obtained by evaluating *w*.
12681269
});
12691270
}
12701271
} // bind_froidure_pin_stateful
1271-
} // namespace
1272+
} // namespace
12721273

12731274
void init_froidure_pin(py::module& m) {
1274-
// TODO(0) uncomment bind_froidure_pin<HPCombiTransf<16>>(m, "Transf16");
12751275
bind_froidure_pin_stateless<Transf<0, uint8_t>>(m, "Transf1");
12761276
bind_froidure_pin_stateless<Transf<0, uint16_t>>(m, "Transf2");
12771277
bind_froidure_pin_stateless<Transf<0, uint32_t>>(m, "Transf4");
@@ -1322,5 +1322,8 @@ This function returns the element of *fp* obtained by evaluating *w*.
13221322
m, "KEWord"); // codespell:ignore keword
13231323

13241324
bind_froidure_pin_stateful<detail::TCE>(m, "TCE");
1325+
#ifdef LIBSEMIGROUPS_HPCOMBI_ENABLED
1326+
bind_froidure_pin_stateless<HPCombi::PTransf16>(m, "HPCombiPTransf16");
1327+
#endif
13251328
}
13261329
} // namespace libsemigroups

src/hpcombi.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
// libsemigroups headers
2323
#include <libsemigroups/hpcombi.hpp>
2424

25-
// #ifdef LIBSEMIGROUPS_HPCOMBI_ENABLED
25+
#ifdef LIBSEMIGROUPS_HPCOMBI_ENABLED
2626

2727
// pybind11....
2828
#include <pybind11/operators.h>
@@ -2122,4 +2122,4 @@ namespace libsemigroups {
21222122
HPCombi::init_hpcombi_perm16(m);
21232123
}
21242124
} // namespace libsemigroups
2125-
// #endif
2125+
#endif

src/libsemigroups_pybind11/froidure_pin.py

Lines changed: 39 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
from typing_extensions import Self as _Self
1919

2020
from _libsemigroups_pybind11 import (
21+
LIBSEMIGROUPS_HPCOMBI_ENABLED as _LIBSEMIGROUPS_HPCOMBI_ENABLED,
2122
PBR as _PBR,
2223
Bipartition as _Bipartition,
2324
BMat as _BMat,
@@ -94,6 +95,13 @@
9495
)
9596
from .detail.decorators import copydoc as _copydoc
9697

98+
if _LIBSEMIGROUPS_HPCOMBI_ENABLED:
99+
from _libsemigroups_pybind11 import (
100+
FroidurePinHPCombiPTransf16 as _FroidurePinHPCombiPTransf16,
101+
hpcombi_PTransf16 as _HPCombiPTransf16,
102+
)
103+
104+
97105
########################################################################
98106
# The FroidurePin python class
99107
########################################################################
@@ -104,32 +112,37 @@ class FroidurePin(_CxxWrapper):
104112

105113
__doc__ = _FroidurePinPBR.__doc__
106114

107-
_py_template_params_to_cxx_type = {
108-
(_BMat,): _FroidurePinBMat,
109-
(_BMat8,): _FroidurePinBMat8,
110-
(_Bipartition,): _FroidurePinBipartition,
111-
(_IntMat,): _FroidurePinIntMat,
112-
(_MaxPlusMat,): _FroidurePinMaxPlusMat,
113-
(_MaxPlusTruncMat,): _FroidurePinMaxPlusTruncMat,
114-
(_MinPlusMat,): _FroidurePinMinPlusMat,
115-
(_MinPlusTruncMat,): _FroidurePinMinPlusTruncMat,
116-
(_NTPMat,): _FroidurePinNTPMat,
117-
(_PBR,): _FroidurePinPBR,
118-
(_PPerm1,): _FroidurePinPPerm1,
119-
(_PPerm2,): _FroidurePinPPerm2,
120-
(_PPerm4,): _FroidurePinPPerm4,
121-
(_Perm1,): _FroidurePinPerm1,
122-
(_Perm2,): _FroidurePinPerm2,
123-
(_Perm4,): _FroidurePinPerm4,
124-
(_ProjMaxPlusMat,): _FroidurePinProjMaxPlusMat,
125-
(_Transf1,): _FroidurePinTransf1,
126-
(_Transf2,): _FroidurePinTransf2,
127-
(_Transf4,): _FroidurePinTransf4,
128-
(_KBEStringTrie,): _FroidurePinKBEStringRewriteTrie,
129-
(_KBEStringFromLeft,): _FroidurePinKBEStringRewriteFromLeft,
130-
(_KBEWordTrie,): _FroidurePinKBEWordRewriteTrie,
131-
(_KBEWordFromLeft,): _FroidurePinKBEWordRewriteFromLeft,
132-
}
115+
_py_template_params_to_cxx_type = (
116+
{
117+
(_BMat,): _FroidurePinBMat,
118+
(_BMat8,): _FroidurePinBMat8,
119+
(_Bipartition,): _FroidurePinBipartition,
120+
(_IntMat,): _FroidurePinIntMat,
121+
(_MaxPlusMat,): _FroidurePinMaxPlusMat,
122+
(_MaxPlusTruncMat,): _FroidurePinMaxPlusTruncMat,
123+
(_MinPlusMat,): _FroidurePinMinPlusMat,
124+
(_MinPlusTruncMat,): _FroidurePinMinPlusTruncMat,
125+
(_NTPMat,): _FroidurePinNTPMat,
126+
(_PBR,): _FroidurePinPBR,
127+
(_PPerm1,): _FroidurePinPPerm1,
128+
(_PPerm2,): _FroidurePinPPerm2,
129+
(_PPerm4,): _FroidurePinPPerm4,
130+
(_Perm1,): _FroidurePinPerm1,
131+
(_Perm2,): _FroidurePinPerm2,
132+
(_Perm4,): _FroidurePinPerm4,
133+
(_ProjMaxPlusMat,): _FroidurePinProjMaxPlusMat,
134+
(_Transf1,): _FroidurePinTransf1,
135+
(_Transf2,): _FroidurePinTransf2,
136+
(_Transf4,): _FroidurePinTransf4,
137+
(_KBEStringTrie,): _FroidurePinKBEStringRewriteTrie,
138+
(_KBEStringFromLeft,): _FroidurePinKBEStringRewriteFromLeft,
139+
(_KBEWordTrie,): _FroidurePinKBEWordRewriteTrie,
140+
(_KBEWordFromLeft,): _FroidurePinKBEWordRewriteFromLeft,
141+
}
142+
| {(_HPCombiPTransf16,): _FroidurePinHPCombiPTransf16}
143+
if _LIBSEMIGROUPS_HPCOMBI_ENABLED
144+
else {}
145+
)
133146

134147
_cxx_type_to_py_template_params = dict(
135148
zip(

0 commit comments

Comments
 (0)