passagemath-gap-pkg-semigroups 10.6.29__cp312-abi3-musllinux_1_2_x86_64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of passagemath-gap-pkg-semigroups might be problematic. Click here for more details.
- gap/pkg/semigroups/CHANGELOG.md +1699 -0
- gap/pkg/semigroups/CONTRIBUTING.md +91 -0
- gap/pkg/semigroups/GNUmakefile +110 -0
- gap/pkg/semigroups/GNUmakefile.in +110 -0
- gap/pkg/semigroups/GPL +674 -0
- gap/pkg/semigroups/LICENSE +16 -0
- gap/pkg/semigroups/Makefile +26 -0
- gap/pkg/semigroups/Makefile.gappkg +225 -0
- gap/pkg/semigroups/PackageInfo.g +529 -0
- gap/pkg/semigroups/README.md +102 -0
- gap/pkg/semigroups/VERSIONS +112 -0
- gap/pkg/semigroups/aclocal.m4 +375 -0
- gap/pkg/semigroups/autogen.sh +25 -0
- gap/pkg/semigroups/bin/x86_64-pc-linux-musl-default64-kv10/semigroups.so +0 -0
- gap/pkg/semigroups/config.guess +1807 -0
- gap/pkg/semigroups/config.log +1068 -0
- gap/pkg/semigroups/config.status +1133 -0
- gap/pkg/semigroups/config.sub +1960 -0
- gap/pkg/semigroups/configure +9742 -0
- gap/pkg/semigroups/configure.ac +71 -0
- gap/pkg/semigroups/data/doc/greens.pickle +1 -0
- gap/pkg/semigroups/data/gens/fullbool-8.pickle.gz +0 -0
- gap/pkg/semigroups/data/gens/fullbool.pickle.gz +0 -0
- gap/pkg/semigroups/data/gens/hall.pickle.gz +0 -0
- gap/pkg/semigroups/data/gens/reflex-6.pickle.gz +0 -0
- gap/pkg/semigroups/data/gens/reflex.pickle.gz +0 -0
- gap/pkg/semigroups/data/tst/bipart4 +10 -0
- gap/pkg/semigroups/data/tst/pperm10 +1 -0
- gap/pkg/semigroups/data/tst/tables.gz +0 -0
- gap/pkg/semigroups/data/tst/testdata +1 -0
- gap/pkg/semigroups/data/tst/testinstall.pickle +1 -0
- gap/pkg/semigroups/data/tst/trans3 +7 -0
- gap/pkg/semigroups/data/tst/trans3-old +7 -0
- gap/pkg/semigroups/environment.yml +7 -0
- gap/pkg/semigroups/gap/attributes/acting.gd +15 -0
- gap/pkg/semigroups/gap/attributes/acting.gi +297 -0
- gap/pkg/semigroups/gap/attributes/attr.gd +91 -0
- gap/pkg/semigroups/gap/attributes/attr.gi +1214 -0
- gap/pkg/semigroups/gap/attributes/dual.gd +25 -0
- gap/pkg/semigroups/gap/attributes/dual.gi +209 -0
- gap/pkg/semigroups/gap/attributes/factor.gd +17 -0
- gap/pkg/semigroups/gap/attributes/factor.gi +453 -0
- gap/pkg/semigroups/gap/attributes/homomorph.gd +84 -0
- gap/pkg/semigroups/gap/attributes/homomorph.gi +591 -0
- gap/pkg/semigroups/gap/attributes/inverse.gd +38 -0
- gap/pkg/semigroups/gap/attributes/inverse.gi +708 -0
- gap/pkg/semigroups/gap/attributes/isomorph.gd +16 -0
- gap/pkg/semigroups/gap/attributes/isomorph.gi +377 -0
- gap/pkg/semigroups/gap/attributes/isorms.gd +49 -0
- gap/pkg/semigroups/gap/attributes/isorms.gi +1383 -0
- gap/pkg/semigroups/gap/attributes/maximal.gd +16 -0
- gap/pkg/semigroups/gap/attributes/maximal.gi +1876 -0
- gap/pkg/semigroups/gap/attributes/properties.gd +109 -0
- gap/pkg/semigroups/gap/attributes/properties.gi +1658 -0
- gap/pkg/semigroups/gap/attributes/rms-translat.gd +39 -0
- gap/pkg/semigroups/gap/attributes/rms-translat.gi +1078 -0
- gap/pkg/semigroups/gap/attributes/semifp.gd +12 -0
- gap/pkg/semigroups/gap/attributes/semifp.gi +84 -0
- gap/pkg/semigroups/gap/attributes/translat.gd +474 -0
- gap/pkg/semigroups/gap/attributes/translat.gi +1779 -0
- gap/pkg/semigroups/gap/congruences/cong.gd +154 -0
- gap/pkg/semigroups/gap/congruences/cong.gi +351 -0
- gap/pkg/semigroups/gap/congruences/conginv.gd +38 -0
- gap/pkg/semigroups/gap/congruences/conginv.gi +589 -0
- gap/pkg/semigroups/gap/congruences/conglatt.gd +101 -0
- gap/pkg/semigroups/gap/congruences/conglatt.gi +886 -0
- gap/pkg/semigroups/gap/congruences/congpairs.gd +21 -0
- gap/pkg/semigroups/gap/congruences/congpairs.gi +272 -0
- gap/pkg/semigroups/gap/congruences/congpart.gd +90 -0
- gap/pkg/semigroups/gap/congruences/congpart.gi +449 -0
- gap/pkg/semigroups/gap/congruences/congrees.gd +20 -0
- gap/pkg/semigroups/gap/congruences/congrees.gi +313 -0
- gap/pkg/semigroups/gap/congruences/congrms.gd +54 -0
- gap/pkg/semigroups/gap/congruences/congrms.gi +1467 -0
- gap/pkg/semigroups/gap/congruences/congsemigraph.gd +28 -0
- gap/pkg/semigroups/gap/congruences/congsemigraph.gi +289 -0
- gap/pkg/semigroups/gap/congruences/congsimple.gd +27 -0
- gap/pkg/semigroups/gap/congruences/congsimple.gi +236 -0
- gap/pkg/semigroups/gap/congruences/conguniv.gd +20 -0
- gap/pkg/semigroups/gap/congruences/conguniv.gi +271 -0
- gap/pkg/semigroups/gap/congruences/congwordgraph.gd +21 -0
- gap/pkg/semigroups/gap/congruences/congwordgraph.gi +250 -0
- gap/pkg/semigroups/gap/elements/bipart.gd +71 -0
- gap/pkg/semigroups/gap/elements/bipart.gi +995 -0
- gap/pkg/semigroups/gap/elements/blocks.gd +31 -0
- gap/pkg/semigroups/gap/elements/blocks.gi +134 -0
- gap/pkg/semigroups/gap/elements/boolmat.gd +74 -0
- gap/pkg/semigroups/gap/elements/boolmat.gi +726 -0
- gap/pkg/semigroups/gap/elements/elements.gd +11 -0
- gap/pkg/semigroups/gap/elements/elements.gi +121 -0
- gap/pkg/semigroups/gap/elements/ffmat.gd +71 -0
- gap/pkg/semigroups/gap/elements/ffmat.gi +311 -0
- gap/pkg/semigroups/gap/elements/maxplusmat.gd +131 -0
- gap/pkg/semigroups/gap/elements/maxplusmat.gi +782 -0
- gap/pkg/semigroups/gap/elements/pbr.gd +51 -0
- gap/pkg/semigroups/gap/elements/pbr.gi +740 -0
- gap/pkg/semigroups/gap/elements/pperm.gd +11 -0
- gap/pkg/semigroups/gap/elements/pperm.gi +14 -0
- gap/pkg/semigroups/gap/elements/semiringmat.gd +136 -0
- gap/pkg/semigroups/gap/elements/semiringmat.gi +717 -0
- gap/pkg/semigroups/gap/elements/star.gd +21 -0
- gap/pkg/semigroups/gap/elements/star.gi +21 -0
- gap/pkg/semigroups/gap/elements/trans.gd +13 -0
- gap/pkg/semigroups/gap/elements/trans.gi +50 -0
- gap/pkg/semigroups/gap/fp/freeband.gd +22 -0
- gap/pkg/semigroups/gap/fp/freeband.gi +502 -0
- gap/pkg/semigroups/gap/fp/freeinverse.gd +30 -0
- gap/pkg/semigroups/gap/fp/freeinverse.gi +465 -0
- gap/pkg/semigroups/gap/fp/tietze.gd +89 -0
- gap/pkg/semigroups/gap/fp/tietze.gi +1578 -0
- gap/pkg/semigroups/gap/fp/word.gd +15 -0
- gap/pkg/semigroups/gap/fp/word.gi +67 -0
- gap/pkg/semigroups/gap/greens/acting-inverse.gi +774 -0
- gap/pkg/semigroups/gap/greens/acting-regular.gi +553 -0
- gap/pkg/semigroups/gap/greens/acting.gd +81 -0
- gap/pkg/semigroups/gap/greens/acting.gi +2433 -0
- gap/pkg/semigroups/gap/greens/froidure-pin.gd +25 -0
- gap/pkg/semigroups/gap/greens/froidure-pin.gi +741 -0
- gap/pkg/semigroups/gap/greens/generic.gd +117 -0
- gap/pkg/semigroups/gap/greens/generic.gi +630 -0
- gap/pkg/semigroups/gap/ideals/acting.gd +17 -0
- gap/pkg/semigroups/gap/ideals/acting.gi +1155 -0
- gap/pkg/semigroups/gap/ideals/froidure-pin.gd +11 -0
- gap/pkg/semigroups/gap/ideals/froidure-pin.gi +105 -0
- gap/pkg/semigroups/gap/ideals/ideals.gd +45 -0
- gap/pkg/semigroups/gap/ideals/ideals.gi +442 -0
- gap/pkg/semigroups/gap/ideals/lambda-rho.gd +16 -0
- gap/pkg/semigroups/gap/ideals/lambda-rho.gi +614 -0
- gap/pkg/semigroups/gap/libsemigroups/cong.gd +24 -0
- gap/pkg/semigroups/gap/libsemigroups/cong.gi +431 -0
- gap/pkg/semigroups/gap/libsemigroups/fpsemi.gd +16 -0
- gap/pkg/semigroups/gap/libsemigroups/fpsemi.gi +53 -0
- gap/pkg/semigroups/gap/libsemigroups/froidure-pin.gd +17 -0
- gap/pkg/semigroups/gap/libsemigroups/froidure-pin.gi +945 -0
- gap/pkg/semigroups/gap/libsemigroups/sims1.gd +38 -0
- gap/pkg/semigroups/gap/libsemigroups/sims1.gi +308 -0
- gap/pkg/semigroups/gap/main/acting.gd +36 -0
- gap/pkg/semigroups/gap/main/acting.gi +779 -0
- gap/pkg/semigroups/gap/main/froidure-pin.gd +72 -0
- gap/pkg/semigroups/gap/main/froidure-pin.gi +655 -0
- gap/pkg/semigroups/gap/main/graded.gd +26 -0
- gap/pkg/semigroups/gap/main/graded.gi +355 -0
- gap/pkg/semigroups/gap/main/lambda-rho.gd +29 -0
- gap/pkg/semigroups/gap/main/lambda-rho.gi +514 -0
- gap/pkg/semigroups/gap/main/orbits.gd +24 -0
- gap/pkg/semigroups/gap/main/orbits.gi +512 -0
- gap/pkg/semigroups/gap/main/semiact.gd +20 -0
- gap/pkg/semigroups/gap/main/semiact.gi +821 -0
- gap/pkg/semigroups/gap/main/setup.gd +61 -0
- gap/pkg/semigroups/gap/main/setup.gi +1094 -0
- gap/pkg/semigroups/gap/obsolete.gd +9 -0
- gap/pkg/semigroups/gap/obsolete.gi +14 -0
- gap/pkg/semigroups/gap/options.g +55 -0
- gap/pkg/semigroups/gap/semigroups/grpperm.gd +12 -0
- gap/pkg/semigroups/gap/semigroups/grpperm.gi +177 -0
- gap/pkg/semigroups/gap/semigroups/semibipart.gd +28 -0
- gap/pkg/semigroups/gap/semigroups/semibipart.gi +570 -0
- gap/pkg/semigroups/gap/semigroups/semiboolmat.gd +20 -0
- gap/pkg/semigroups/gap/semigroups/semiboolmat.gi +104 -0
- gap/pkg/semigroups/gap/semigroups/semicons.gd +52 -0
- gap/pkg/semigroups/gap/semigroups/semicons.gi +1194 -0
- gap/pkg/semigroups/gap/semigroups/semidp.gd +13 -0
- gap/pkg/semigroups/gap/semigroups/semidp.gi +509 -0
- gap/pkg/semigroups/gap/semigroups/semieunit.gd +126 -0
- gap/pkg/semigroups/gap/semigroups/semieunit.gi +889 -0
- gap/pkg/semigroups/gap/semigroups/semiex.gd +104 -0
- gap/pkg/semigroups/gap/semigroups/semiex.gi +1590 -0
- gap/pkg/semigroups/gap/semigroups/semiffmat.gd +37 -0
- gap/pkg/semigroups/gap/semigroups/semiffmat.gi +565 -0
- gap/pkg/semigroups/gap/semigroups/semifp.gd +28 -0
- gap/pkg/semigroups/gap/semigroups/semifp.gi +1364 -0
- gap/pkg/semigroups/gap/semigroups/semigraph.gd +40 -0
- gap/pkg/semigroups/gap/semigroups/semigraph.gi +292 -0
- gap/pkg/semigroups/gap/semigroups/semigrp.gd +165 -0
- gap/pkg/semigroups/gap/semigroups/semigrp.gi +1225 -0
- gap/pkg/semigroups/gap/semigroups/semimaxplus.gd +72 -0
- gap/pkg/semigroups/gap/semigroups/semimaxplus.gi +710 -0
- gap/pkg/semigroups/gap/semigroups/semintmat.gd +13 -0
- gap/pkg/semigroups/gap/semigroups/semintmat.gi +74 -0
- gap/pkg/semigroups/gap/semigroups/semipbr.gd +19 -0
- gap/pkg/semigroups/gap/semigroups/semipbr.gi +139 -0
- gap/pkg/semigroups/gap/semigroups/semipperm.gd +27 -0
- gap/pkg/semigroups/gap/semigroups/semipperm.gi +711 -0
- gap/pkg/semigroups/gap/semigroups/semiquo.gd +14 -0
- gap/pkg/semigroups/gap/semigroups/semiquo.gi +97 -0
- gap/pkg/semigroups/gap/semigroups/semiringmat.gd +16 -0
- gap/pkg/semigroups/gap/semigroups/semiringmat.gi +21 -0
- gap/pkg/semigroups/gap/semigroups/semirms.gd +19 -0
- gap/pkg/semigroups/gap/semigroups/semirms.gi +977 -0
- gap/pkg/semigroups/gap/semigroups/semitrans.gd +49 -0
- gap/pkg/semigroups/gap/semigroups/semitrans.gi +909 -0
- gap/pkg/semigroups/gap/tools/display.gd +24 -0
- gap/pkg/semigroups/gap/tools/display.gi +749 -0
- gap/pkg/semigroups/gap/tools/io.gd +17 -0
- gap/pkg/semigroups/gap/tools/io.gi +543 -0
- gap/pkg/semigroups/gap/tools/iterators.gd +16 -0
- gap/pkg/semigroups/gap/tools/iterators.gi +253 -0
- gap/pkg/semigroups/gap/tools/utils.gd +19 -0
- gap/pkg/semigroups/gap/tools/utils.gi +756 -0
- gap/pkg/semigroups/gapbind14/.ccls +18 -0
- gap/pkg/semigroups/gapbind14/.clang-format +104 -0
- gap/pkg/semigroups/gapbind14/CPPLINT.cfg +5 -0
- gap/pkg/semigroups/gapbind14/LICENSE +674 -0
- gap/pkg/semigroups/gapbind14/README.md +76 -0
- gap/pkg/semigroups/gapbind14/demo/.gitignore +4 -0
- gap/pkg/semigroups/gapbind14/demo/LICENSE +293 -0
- gap/pkg/semigroups/gapbind14/demo/Makefile.gappkg +220 -0
- gap/pkg/semigroups/gapbind14/demo/Makefile.in +19 -0
- gap/pkg/semigroups/gapbind14/demo/PackageInfo.g +87 -0
- gap/pkg/semigroups/gapbind14/demo/README.md +17 -0
- gap/pkg/semigroups/gapbind14/demo/configure +34 -0
- gap/pkg/semigroups/gapbind14/demo/gap/gapbind_demo.gd +19 -0
- gap/pkg/semigroups/gapbind14/demo/gap/gapbind_demo.gi +10 -0
- gap/pkg/semigroups/gapbind14/demo/init.g +16 -0
- gap/pkg/semigroups/gapbind14/demo/makedoc.g +10 -0
- gap/pkg/semigroups/gapbind14/demo/read.g +6 -0
- gap/pkg/semigroups/gapbind14/demo/src/gapbind_demo.cc +142 -0
- gap/pkg/semigroups/gapbind14/demo/tst/testall.g +12 -0
- gap/pkg/semigroups/gapbind14/include/gapbind14/cpp_fn.hpp +223 -0
- gap/pkg/semigroups/gapbind14/include/gapbind14/gap_include.hpp +26 -0
- gap/pkg/semigroups/gapbind14/include/gapbind14/gapbind14.hpp +445 -0
- gap/pkg/semigroups/gapbind14/include/gapbind14/tame_free_fn.hpp +420 -0
- gap/pkg/semigroups/gapbind14/include/gapbind14/tame_mem_fn.hpp +556 -0
- gap/pkg/semigroups/gapbind14/include/gapbind14/to_cpp.hpp +162 -0
- gap/pkg/semigroups/gapbind14/include/gapbind14/to_gap.hpp +158 -0
- gap/pkg/semigroups/gapbind14/src/.clang-format +108 -0
- gap/pkg/semigroups/gapbind14/src/gapbind14.cpp +334 -0
- gap/pkg/semigroups/init.g +150 -0
- gap/pkg/semigroups/m4/ax_append_flag.m4 +50 -0
- gap/pkg/semigroups/m4/ax_check_compile_flag.m4 +53 -0
- gap/pkg/semigroups/m4/ax_check_hpcombi.m4 +121 -0
- gap/pkg/semigroups/m4/ax_check_libsemigroup.m4 +68 -0
- gap/pkg/semigroups/m4/ax_compare_version.m4 +177 -0
- gap/pkg/semigroups/m4/ax_cxx_compile_stdcxx.m4 +1009 -0
- gap/pkg/semigroups/m4/ax_cxx_compile_stdcxx_14.m4 +34 -0
- gap/pkg/semigroups/m4/ax_prefix_config_h.m4 +203 -0
- gap/pkg/semigroups/m4/ax_pthread.m4 +522 -0
- gap/pkg/semigroups/m4/find_gap.m4 +94 -0
- gap/pkg/semigroups/makedoc.g +153 -0
- gap/pkg/semigroups/prerequisites.sh +62 -0
- gap/pkg/semigroups/read.g +105 -0
- gap/pkg/semigroups/release.toml +6 -0
- gap/pkg/semigroups/tst/extreme/README +2 -0
- gap/pkg/semigroups/tst/extreme/attrinv.tst +703 -0
- gap/pkg/semigroups/tst/extreme/bipart.tst +2803 -0
- gap/pkg/semigroups/tst/extreme/closure.tst +652 -0
- gap/pkg/semigroups/tst/extreme/cong.tst +286 -0
- gap/pkg/semigroups/tst/extreme/conginv.tst +43 -0
- gap/pkg/semigroups/tst/extreme/examples.tst +2449 -0
- gap/pkg/semigroups/tst/extreme/freeband.tst +37 -0
- gap/pkg/semigroups/tst/extreme/greens-acting-regular.tst +27 -0
- gap/pkg/semigroups/tst/extreme/greens-acting.tst +1999 -0
- gap/pkg/semigroups/tst/extreme/ideals.tst +858 -0
- gap/pkg/semigroups/tst/extreme/inverse.tst +1025 -0
- gap/pkg/semigroups/tst/extreme/maximal.tst +856 -0
- gap/pkg/semigroups/tst/extreme/misc.tst +4236 -0
- gap/pkg/semigroups/tst/extreme/monoid_pkg.tst +1488 -0
- gap/pkg/semigroups/tst/extreme/properties.tst +914 -0
- gap/pkg/semigroups/tst/extreme/semibipart.tst +2837 -0
- gap/pkg/semigroups/tst/extreme/semieunit.tst +49 -0
- gap/pkg/semigroups/tst/extreme/semiffmat.tst +353 -0
- gap/pkg/semigroups/tst/extreme/semigroups.tst +245 -0
- gap/pkg/semigroups/tst/extreme/semiiter.tst +58 -0
- gap/pkg/semigroups/tst/extreme/semirms.tst +1091 -0
- gap/pkg/semigroups/tst/extreme/transform.tst +305 -0
- gap/pkg/semigroups/tst/extreme/translat.tst +44 -0
- gap/pkg/semigroups/tst/standard/README +2 -0
- gap/pkg/semigroups/tst/standard/attributes/acting.tst +388 -0
- gap/pkg/semigroups/tst/standard/attributes/attr.tst +2404 -0
- gap/pkg/semigroups/tst/standard/attributes/dual.tst +308 -0
- gap/pkg/semigroups/tst/standard/attributes/factor.tst +629 -0
- gap/pkg/semigroups/tst/standard/attributes/homomorph.tst +1134 -0
- gap/pkg/semigroups/tst/standard/attributes/inverse.tst +1521 -0
- gap/pkg/semigroups/tst/standard/attributes/isomorph.tst +435 -0
- gap/pkg/semigroups/tst/standard/attributes/isorms.tst +1147 -0
- gap/pkg/semigroups/tst/standard/attributes/maximal.tst +853 -0
- gap/pkg/semigroups/tst/standard/attributes/properties.tst +2028 -0
- gap/pkg/semigroups/tst/standard/attributes/semifp.tst +53 -0
- gap/pkg/semigroups/tst/standard/attributes/translat.tst +796 -0
- gap/pkg/semigroups/tst/standard/congruences/cong.tst +1044 -0
- gap/pkg/semigroups/tst/standard/congruences/conginv.tst +292 -0
- gap/pkg/semigroups/tst/standard/congruences/conglatt.tst +421 -0
- gap/pkg/semigroups/tst/standard/congruences/congpairs.tst +1011 -0
- gap/pkg/semigroups/tst/standard/congruences/congrees.tst +288 -0
- gap/pkg/semigroups/tst/standard/congruences/congrms.tst +701 -0
- gap/pkg/semigroups/tst/standard/congruences/congsemigraph.tst +422 -0
- gap/pkg/semigroups/tst/standard/congruences/congsimple.tst +311 -0
- gap/pkg/semigroups/tst/standard/congruences/conguniv.tst +259 -0
- gap/pkg/semigroups/tst/standard/congruences/congwordgraph.tst +330 -0
- gap/pkg/semigroups/tst/standard/elements/bipart.tst +783 -0
- gap/pkg/semigroups/tst/standard/elements/blocks.tst +166 -0
- gap/pkg/semigroups/tst/standard/elements/boolmat.tst +608 -0
- gap/pkg/semigroups/tst/standard/elements/elements.tst +117 -0
- gap/pkg/semigroups/tst/standard/elements/ffmat.tst +349 -0
- gap/pkg/semigroups/tst/standard/elements/maxplusmat.tst +613 -0
- gap/pkg/semigroups/tst/standard/elements/pbr.tst +506 -0
- gap/pkg/semigroups/tst/standard/elements/pperm.tst +32 -0
- gap/pkg/semigroups/tst/standard/elements/semiringmat.tst +601 -0
- gap/pkg/semigroups/tst/standard/elements/trans.tst +58 -0
- gap/pkg/semigroups/tst/standard/fp/freeband.tst +311 -0
- gap/pkg/semigroups/tst/standard/fp/freeinverse.tst +147 -0
- gap/pkg/semigroups/tst/standard/fp/tietze.tst +780 -0
- gap/pkg/semigroups/tst/standard/fp/word.tst +106 -0
- gap/pkg/semigroups/tst/standard/greens/acting-inverse.tst +545 -0
- gap/pkg/semigroups/tst/standard/greens/acting-regular.tst +396 -0
- gap/pkg/semigroups/tst/standard/greens/acting.tst +2033 -0
- gap/pkg/semigroups/tst/standard/greens/froidure-pin.tst +1831 -0
- gap/pkg/semigroups/tst/standard/greens/generic.tst +1436 -0
- gap/pkg/semigroups/tst/standard/ideals/acting.tst +279 -0
- gap/pkg/semigroups/tst/standard/ideals/froidure-pin.tst +178 -0
- gap/pkg/semigroups/tst/standard/ideals/ideals.tst +380 -0
- gap/pkg/semigroups/tst/standard/libsemigroups/cong.tst +310 -0
- gap/pkg/semigroups/tst/standard/libsemigroups/froidure-pin.tst +778 -0
- gap/pkg/semigroups/tst/standard/libsemigroups/sims1.tst +379 -0
- gap/pkg/semigroups/tst/standard/main/acting.tst +411 -0
- gap/pkg/semigroups/tst/standard/main/froidure-pin.tst +392 -0
- gap/pkg/semigroups/tst/standard/main/semiact.tst +203 -0
- gap/pkg/semigroups/tst/standard/main/setup.tst +1144 -0
- gap/pkg/semigroups/tst/standard/obsolete.tst +19 -0
- gap/pkg/semigroups/tst/standard/options.tst +54 -0
- gap/pkg/semigroups/tst/standard/semigroups/grpperm.tst +581 -0
- gap/pkg/semigroups/tst/standard/semigroups/semibipart.tst +2635 -0
- gap/pkg/semigroups/tst/standard/semigroups/semiboolmat.tst +1871 -0
- gap/pkg/semigroups/tst/standard/semigroups/semicons.tst +1173 -0
- gap/pkg/semigroups/tst/standard/semigroups/semidp.tst +739 -0
- gap/pkg/semigroups/tst/standard/semigroups/semieunit.tst +339 -0
- gap/pkg/semigroups/tst/standard/semigroups/semiex.tst +2055 -0
- gap/pkg/semigroups/tst/standard/semigroups/semiffmat.tst +746 -0
- gap/pkg/semigroups/tst/standard/semigroups/semifp.tst +2702 -0
- gap/pkg/semigroups/tst/standard/semigroups/semigraph.tst +133 -0
- gap/pkg/semigroups/tst/standard/semigroups/semigrp.tst +1112 -0
- gap/pkg/semigroups/tst/standard/semigroups/semimaxplus.tst +654 -0
- gap/pkg/semigroups/tst/standard/semigroups/semipbr.tst +2142 -0
- gap/pkg/semigroups/tst/standard/semigroups/semipperm.tst +2169 -0
- gap/pkg/semigroups/tst/standard/semigroups/semiquo.tst +278 -0
- gap/pkg/semigroups/tst/standard/semigroups/semirms.tst +3010 -0
- gap/pkg/semigroups/tst/standard/semigroups/semitrans.tst +2758 -0
- gap/pkg/semigroups/tst/standard/tools/display.tst +1040 -0
- gap/pkg/semigroups/tst/standard/tools/io.tst +363 -0
- gap/pkg/semigroups/tst/testinstall.tst +1815 -0
- gap/pkg/semigroups/tst/teststandard.g +22 -0
- gap/pkg/semigroups/tst/workspaces/load-workspace.tst +142 -0
- gap/pkg/semigroups/tst/workspaces/load.g +11 -0
- gap/pkg/semigroups/tst/workspaces/save-workspace.tst +166 -0
- gap/pkg/semigroups/tst/workspaces/save.g +14 -0
- passagemath_gap_pkg_semigroups-10.6.29.dist-info/METADATA +93 -0
- passagemath_gap_pkg_semigroups-10.6.29.dist-info/METADATA.bak +94 -0
- passagemath_gap_pkg_semigroups-10.6.29.dist-info/RECORD +356 -0
- passagemath_gap_pkg_semigroups-10.6.29.dist-info/WHEEL +5 -0
- passagemath_gap_pkg_semigroups-10.6.29.dist-info/top_level.txt +1 -0
- passagemath_gap_pkg_semigroups.libs/libgcc_s-0cd532bd.so.1 +0 -0
- passagemath_gap_pkg_semigroups.libs/libsemigroups-f0b7066b.so.2.0.0 +0 -0
- passagemath_gap_pkg_semigroups.libs/libstdc++-5d72f927.so.6.0.33 +0 -0
- sage/all__sagemath_gap_pkg_semigroups.py +1 -0
- sage/libs/all__sagemath_gap_pkg_semigroups.py +1 -0
- sage/libs/gap_pkg_semigroups.abi3.so +0 -0
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
#
|
|
2
|
+
# gapbind_demo: Minimal demo of how to use gapbind14
|
|
3
|
+
#
|
|
4
|
+
# This file contains package meta data. For additional information on
|
|
5
|
+
# the meaning and correct usage of these fields, please consult the
|
|
6
|
+
# manual of the "Example" package as well as the comments in its
|
|
7
|
+
# PackageInfo.g file.
|
|
8
|
+
#
|
|
9
|
+
SetPackageInfo( rec(
|
|
10
|
+
|
|
11
|
+
PackageName := "gapbind_demo",
|
|
12
|
+
Subtitle := "Minimal demo of how to use gapbind14",
|
|
13
|
+
Version := "0.1",
|
|
14
|
+
Date := "15/07/2022", # dd/mm/yyyy format
|
|
15
|
+
License := "GPL-2.0-or-later",
|
|
16
|
+
|
|
17
|
+
Persons := [
|
|
18
|
+
rec(
|
|
19
|
+
FirstNames := "James D.",
|
|
20
|
+
LastName := "Mitchell",
|
|
21
|
+
WWWHome := "https://jdbm.me",
|
|
22
|
+
Email := "jdm3@st-andrews.ac.uk",
|
|
23
|
+
IsAuthor := true,
|
|
24
|
+
IsMaintainer := true,
|
|
25
|
+
PostalAddress := "KY169 SS",
|
|
26
|
+
Place := "St Andrews",
|
|
27
|
+
Institution := "University of St Andrews",
|
|
28
|
+
),
|
|
29
|
+
],
|
|
30
|
+
|
|
31
|
+
#SourceRepository := rec( Type := "TODO", URL := "URL" ),
|
|
32
|
+
#IssueTrackerURL := "TODO",
|
|
33
|
+
PackageWWWHome := "na/",
|
|
34
|
+
PackageInfoURL := Concatenation( ~.PackageWWWHome, "PackageInfo.g" ),
|
|
35
|
+
README_URL := Concatenation( ~.PackageWWWHome, "README.md" ),
|
|
36
|
+
ArchiveURL := Concatenation( ~.PackageWWWHome,
|
|
37
|
+
"/", ~.PackageName, "-", ~.Version ),
|
|
38
|
+
|
|
39
|
+
ArchiveFormats := ".tar.gz",
|
|
40
|
+
|
|
41
|
+
## Status information. Currently the following cases are recognized:
|
|
42
|
+
## "accepted" for successfully refereed packages
|
|
43
|
+
## "submitted" for packages submitted for the refereeing
|
|
44
|
+
## "deposited" for packages for which the GAP developers agreed
|
|
45
|
+
## to distribute them with the core GAP system
|
|
46
|
+
## "dev" for development versions of packages
|
|
47
|
+
## "other" for all other packages
|
|
48
|
+
##
|
|
49
|
+
Status := "dev",
|
|
50
|
+
|
|
51
|
+
AbstractHTML := "",
|
|
52
|
+
|
|
53
|
+
PackageDoc := rec(
|
|
54
|
+
BookName := "gapbind_demo",
|
|
55
|
+
ArchiveURLSubset := ["doc"],
|
|
56
|
+
HTMLStart := "doc/chap0.html",
|
|
57
|
+
PDFFile := "doc/manual.pdf",
|
|
58
|
+
SixFile := "doc/manual.six",
|
|
59
|
+
LongTitle := "Minimal demo of how to use gapbind14",
|
|
60
|
+
),
|
|
61
|
+
|
|
62
|
+
Dependencies := rec(
|
|
63
|
+
GAP := ">= 4.11",
|
|
64
|
+
NeededOtherPackages := [ ],
|
|
65
|
+
SuggestedOtherPackages := [ ],
|
|
66
|
+
ExternalConditions := [ ],
|
|
67
|
+
),
|
|
68
|
+
|
|
69
|
+
AvailabilityTest := function()
|
|
70
|
+
local dir, lib;
|
|
71
|
+
dir := DirectoriesPackagePrograms("gapbind_demo");
|
|
72
|
+
lib := Filename(dir, "gapbind_demo.so");
|
|
73
|
+
if lib = fail then
|
|
74
|
+
LogPackageLoadingMessage(PACKAGE_WARNING,
|
|
75
|
+
"failed to load kernel module of package gapbind_demo");
|
|
76
|
+
return fail;
|
|
77
|
+
fi;
|
|
78
|
+
return true;
|
|
79
|
+
end,
|
|
80
|
+
|
|
81
|
+
TestFile := "tst/testall.g",
|
|
82
|
+
|
|
83
|
+
#Keywords := [ "TODO" ],
|
|
84
|
+
|
|
85
|
+
));
|
|
86
|
+
|
|
87
|
+
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# The GAP package gapbind_demo
|
|
2
|
+
|
|
3
|
+
TODO: add a description of your package; perhaps also instructions how how to
|
|
4
|
+
install and use it, resp. where to find out more
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
## Contact
|
|
8
|
+
|
|
9
|
+
TODO: add info on how to contact you and/or how to report issues with your
|
|
10
|
+
package
|
|
11
|
+
|
|
12
|
+
## License
|
|
13
|
+
|
|
14
|
+
TODO: Provide information on the license of your package. A license is
|
|
15
|
+
important as it determines who has a right to distribute your package. The
|
|
16
|
+
"default" license to consider is GNU General Public License v2 or later, as
|
|
17
|
+
that is the license of GAP itself.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
# usage: configure gappath
|
|
3
|
+
# this script creates a `Makefile' from `Makefile.in'
|
|
4
|
+
|
|
5
|
+
set -e
|
|
6
|
+
|
|
7
|
+
GAPPATH=../..
|
|
8
|
+
while test "$#" -ge 1 ; do
|
|
9
|
+
option="$1" ; shift
|
|
10
|
+
case "$option" in
|
|
11
|
+
--with-gaproot=*) GAPPATH=${option#--with-gaproot=}; ;;
|
|
12
|
+
-*) echo "ERROR: unsupported argument $option" ; exit 1;;
|
|
13
|
+
*) GAPPATH="$option" ;;
|
|
14
|
+
esac
|
|
15
|
+
done
|
|
16
|
+
|
|
17
|
+
if test ! -r "$GAPPATH/sysinfo.gap" ; then
|
|
18
|
+
echo
|
|
19
|
+
echo "No file $GAPPATH/sysinfo.gap found."
|
|
20
|
+
echo
|
|
21
|
+
echo "Usage: ./configure [GAPPATH]"
|
|
22
|
+
echo " where GAPPATH is a path to your GAP installation"
|
|
23
|
+
echo " (The default for GAPPATH is \"../..\")"
|
|
24
|
+
echo
|
|
25
|
+
echo "Either your GAPPATH is incorrect or the GAP it is pointing to"
|
|
26
|
+
echo "is not properly compiled (do \"./configure && make\" there first)."
|
|
27
|
+
echo
|
|
28
|
+
echo "Aborting... No Makefile is generated."
|
|
29
|
+
echo
|
|
30
|
+
exit 1
|
|
31
|
+
fi
|
|
32
|
+
|
|
33
|
+
echo "Using settings from $GAPPATH/sysinfo.gap"
|
|
34
|
+
sed -e "s;@GAPPATH@;$GAPPATH;g" Makefile.in > Makefile
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
#
|
|
2
|
+
# gapbind_demo: Minimal demo of how to use gapbind14
|
|
3
|
+
#
|
|
4
|
+
#! @Chapter Introduction
|
|
5
|
+
#!
|
|
6
|
+
#! gapbind_demo is a package which does some
|
|
7
|
+
#! interesting and cool things
|
|
8
|
+
#!
|
|
9
|
+
#! @Chapter Functionality
|
|
10
|
+
#!
|
|
11
|
+
#!
|
|
12
|
+
#! @Section Example Methods
|
|
13
|
+
#!
|
|
14
|
+
#! This section will describe the example
|
|
15
|
+
#! methods of gapbind_demo
|
|
16
|
+
|
|
17
|
+
#! @Description
|
|
18
|
+
#! Insert documentation for your function here
|
|
19
|
+
DeclareGlobalFunction( "gapbind_demo_Example" );
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
#
|
|
2
|
+
# gapbind_demo: Minimal demo of how to use gapbind14
|
|
3
|
+
#
|
|
4
|
+
# Reading the declaration part of the package.
|
|
5
|
+
#
|
|
6
|
+
if LoadKernelExtension("gapbind_demo") = false then
|
|
7
|
+
Error("failed to load gapbind_demo kernel extension");
|
|
8
|
+
fi;
|
|
9
|
+
|
|
10
|
+
if not IsBoundGlobal("IsTGapBind14Obj") then
|
|
11
|
+
DeclareCategory("IsTGapBind14Obj", IsObject);
|
|
12
|
+
BindGlobal("TheTypeTGapBind14Obj",
|
|
13
|
+
NewType(NewFamily("TGapBind14ObjFamily"), IsTGapBind14Obj));
|
|
14
|
+
fi;
|
|
15
|
+
|
|
16
|
+
ReadPackage( "gapbind_demo", "gap/gapbind_demo.gd");
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
#
|
|
2
|
+
# gapbind_demo: Minimal demo of how to use gapbind14
|
|
3
|
+
#
|
|
4
|
+
# This file is a script which compiles the package manual.
|
|
5
|
+
#
|
|
6
|
+
if fail = LoadPackage("AutoDoc", "2018.02.14") then
|
|
7
|
+
Error("AutoDoc version 2018.02.14 or newer is required.");
|
|
8
|
+
fi;
|
|
9
|
+
|
|
10
|
+
AutoDoc( rec( scaffold := true, autodoc := true ) );
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
//
|
|
2
|
+
// gapbind14
|
|
3
|
+
// Copyright (C) 2022 James D. Mitchell
|
|
4
|
+
//
|
|
5
|
+
// This program is free software: you can redistribute it and/or modify
|
|
6
|
+
// it under the terms of the GNU General Public License as published by
|
|
7
|
+
// the Free Software Foundation, either version 3 of the License, or
|
|
8
|
+
// (at your option) any later version.
|
|
9
|
+
//
|
|
10
|
+
// This program is distributed in the hope that it will be useful,
|
|
11
|
+
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12
|
+
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
13
|
+
// GNU General Public License for more details.
|
|
14
|
+
//
|
|
15
|
+
// You should have received a copy of the GNU General Public License
|
|
16
|
+
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
17
|
+
//
|
|
18
|
+
|
|
19
|
+
// A minimal demo of how to use gapbind14
|
|
20
|
+
|
|
21
|
+
#include <iostream> // for cout
|
|
22
|
+
#include <string> // for string
|
|
23
|
+
|
|
24
|
+
extern "C" {
|
|
25
|
+
#include <gap_all.h> // GAP headers
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// GAPBIND14: include this header
|
|
29
|
+
#include "gapbind14/gapbind14.hpp"
|
|
30
|
+
|
|
31
|
+
namespace gapbind_demo {
|
|
32
|
+
void testing1() {
|
|
33
|
+
std::ios_base::Init();
|
|
34
|
+
std::cout << "it works\n";
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
std::string testing2() {
|
|
38
|
+
return "it works\n";
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
void testing3(std::string str) {
|
|
42
|
+
Pr("it works %s", (Int) str.c_str(), 0L);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
std::string testing4(std::string str) {
|
|
46
|
+
return "it works " + str + "\n";
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
std::string testing4(int i) {
|
|
50
|
+
return "it works like it's over " + std::to_string(i);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
int testing6(std::string str, size_t i) {
|
|
54
|
+
if (i == 0) {
|
|
55
|
+
throw std::runtime_error("can't take mod of 0!");
|
|
56
|
+
}
|
|
57
|
+
return std::hash<std::string>()(str) % i;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
size_t testing7(size_t i) {
|
|
61
|
+
return i;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
struct Pet {
|
|
65
|
+
explicit Pet(std::string name) : name(name) {}
|
|
66
|
+
void setName(const std::string& name_) {
|
|
67
|
+
name = name_;
|
|
68
|
+
}
|
|
69
|
+
const std::string& getName() const {
|
|
70
|
+
return name;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
std::string getName(const std::string& name_) {
|
|
74
|
+
return name + name_;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
void terminate() {
|
|
78
|
+
name = "dead";
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
std::string name;
|
|
82
|
+
};
|
|
83
|
+
} // namespace gapbind_demo
|
|
84
|
+
|
|
85
|
+
namespace gapbind14 {
|
|
86
|
+
template <>
|
|
87
|
+
struct IsGapBind14Type<gapbind_demo::Pet> : std::true_type {};
|
|
88
|
+
}; // namespace gapbind14
|
|
89
|
+
|
|
90
|
+
GAPBIND14_MODULE(gapbind_demo) {
|
|
91
|
+
gapbind14::InstallGlobalFunction("testing1", &gapbind_demo::testing1);
|
|
92
|
+
gapbind14::InstallGlobalFunction("testing2", &gapbind_demo::testing2);
|
|
93
|
+
gapbind14::InstallGlobalFunction("testing3", &gapbind_demo::testing3);
|
|
94
|
+
gapbind14::InstallGlobalFunction(
|
|
95
|
+
"testing4_string",
|
|
96
|
+
gapbind14::overload_cast<std::string>(&gapbind_demo::testing4));
|
|
97
|
+
gapbind14::InstallGlobalFunction(
|
|
98
|
+
"testing4_int", gapbind14::overload_cast<int>(&gapbind_demo::testing4));
|
|
99
|
+
gapbind14::InstallGlobalFunction("testing6", &gapbind_demo::testing6);
|
|
100
|
+
gapbind14::InstallGlobalFunction("testing7", &gapbind_demo::testing7);
|
|
101
|
+
gapbind14::class_<gapbind_demo::Pet>("Pet")
|
|
102
|
+
.def(gapbind14::init<std::string>{}, "make")
|
|
103
|
+
.def("setName", &gapbind_demo::Pet::setName)
|
|
104
|
+
.def("getName", gapbind14::overload_cast<>(&gapbind_demo::Pet::getName))
|
|
105
|
+
.def("getNamestring",
|
|
106
|
+
gapbind14::overload_cast<std::string const&>(
|
|
107
|
+
&gapbind_demo::Pet::getName))
|
|
108
|
+
.def("terminate", &gapbind_demo::Pet::terminate);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
static Int InitKernel(StructInitInfo* module) {
|
|
112
|
+
gapbind14::init_kernel("gapbind_demo");
|
|
113
|
+
return 0;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
static Int InitLibrary(StructInitInfo* module) {
|
|
117
|
+
gapbind14::init_library("gapbind_demo");
|
|
118
|
+
return 0;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
static StructInitInfo module = {
|
|
122
|
+
/* type = */ MODULE_DYNAMIC,
|
|
123
|
+
/* name = */ "gapbind_demo",
|
|
124
|
+
/* revision_c = */ 0,
|
|
125
|
+
/* revision_h = */ 0,
|
|
126
|
+
/* version = */ 0,
|
|
127
|
+
/* crc = */ 0,
|
|
128
|
+
/* initKernel = */ InitKernel,
|
|
129
|
+
/* initLibrary = */ InitLibrary,
|
|
130
|
+
/* checkInit = */ 0,
|
|
131
|
+
/* preSave = */ 0,
|
|
132
|
+
/* postSave = */ 0,
|
|
133
|
+
/* postRestore = */ 0,
|
|
134
|
+
/* moduleStateSize = */ 0,
|
|
135
|
+
/* moduleStateOffsetPtr = */ 0,
|
|
136
|
+
/* initModuleState = */ 0,
|
|
137
|
+
/* destroyModuleState = */ 0,
|
|
138
|
+
};
|
|
139
|
+
|
|
140
|
+
extern "C" StructInitInfo* Init__Dynamic(void) {
|
|
141
|
+
return &module;
|
|
142
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
#
|
|
2
|
+
# gapbind_demo: Minimal demo of how to use gapbind14
|
|
3
|
+
#
|
|
4
|
+
# This file runs package tests. It is also referenced in the package
|
|
5
|
+
# metadata in PackageInfo.g.
|
|
6
|
+
#
|
|
7
|
+
LoadPackage( "gapbind_demo" );
|
|
8
|
+
|
|
9
|
+
TestDirectory(DirectoriesPackageLibrary( "gapbind_demo", "tst" ),
|
|
10
|
+
rec(exitGAP := true));
|
|
11
|
+
|
|
12
|
+
FORCE_QUIT_GAP(1); # if we ever get here, there was an error
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
//
|
|
2
|
+
// gapbind14
|
|
3
|
+
// Copyright (C) 2020-2022 James D. Mitchell
|
|
4
|
+
//
|
|
5
|
+
// This program is free software: you can redistribute it and/or modify
|
|
6
|
+
// it under the terms of the GNU General Public License as published by
|
|
7
|
+
// the Free Software Foundation, either version 3 of the License, or
|
|
8
|
+
// (at your option) any later version.
|
|
9
|
+
//
|
|
10
|
+
// This program is distributed in the hope that it will be useful,
|
|
11
|
+
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12
|
+
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
13
|
+
// GNU General Public License for more details.
|
|
14
|
+
//
|
|
15
|
+
// You should have received a copy of the GNU General Public License
|
|
16
|
+
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
17
|
+
//
|
|
18
|
+
|
|
19
|
+
#ifndef INCLUDE_GAPBIND14_CPP_FN_HPP_
|
|
20
|
+
#define INCLUDE_GAPBIND14_CPP_FN_HPP_
|
|
21
|
+
|
|
22
|
+
#include <cstddef> // for size_t
|
|
23
|
+
#include <functional> // for function
|
|
24
|
+
#include <tuple> // for tuple, tuple_element_t
|
|
25
|
+
#include <type_traits> // for true_type
|
|
26
|
+
|
|
27
|
+
#include "gap_include.hpp" // for UInt
|
|
28
|
+
|
|
29
|
+
#define GAPBIND14_TRY(something) \
|
|
30
|
+
try { \
|
|
31
|
+
something; \
|
|
32
|
+
} catch (std::exception const& e) { \
|
|
33
|
+
ErrorQuit(e.what(), 0L, 0L); \
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
namespace gapbind14 {
|
|
37
|
+
|
|
38
|
+
constexpr size_t MAX_FUNCTIONS = 96;
|
|
39
|
+
extern UInt T_GAPBIND14_OBJ;
|
|
40
|
+
|
|
41
|
+
////////////////////////////////////////////////////////////////////////
|
|
42
|
+
// Overloading
|
|
43
|
+
////////////////////////////////////////////////////////////////////////
|
|
44
|
+
|
|
45
|
+
template <typename... TArgs>
|
|
46
|
+
struct overload_cast_impl {
|
|
47
|
+
constexpr overload_cast_impl() {}
|
|
48
|
+
|
|
49
|
+
template <typename TReturn>
|
|
50
|
+
constexpr auto operator()(TReturn (*pf)(TArgs...)) const noexcept
|
|
51
|
+
-> decltype(pf) {
|
|
52
|
+
return pf;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
template <typename TReturn, typename TClass>
|
|
56
|
+
constexpr auto operator()(TReturn (TClass::*pmf)(TArgs...),
|
|
57
|
+
std::false_type = {}) const noexcept
|
|
58
|
+
-> decltype(pmf) {
|
|
59
|
+
return pmf;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
template <typename TReturn, typename TClass>
|
|
63
|
+
constexpr auto operator()(TReturn (TClass::*pmf)(TArgs...)
|
|
64
|
+
const) const noexcept -> decltype(pmf) {
|
|
65
|
+
return pmf;
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
template <typename... TArgs>
|
|
70
|
+
static constexpr overload_cast_impl<TArgs...> overload_cast = {};
|
|
71
|
+
|
|
72
|
+
namespace detail {
|
|
73
|
+
template <typename T>
|
|
74
|
+
class is_lambda {
|
|
75
|
+
private:
|
|
76
|
+
using no_ref = std::remove_reference_t<T>;
|
|
77
|
+
|
|
78
|
+
public:
|
|
79
|
+
static constexpr bool value = !(std::is_pointer<no_ref>::value
|
|
80
|
+
|| std::is_member_pointer<no_ref>::value
|
|
81
|
+
|| std::is_function<no_ref>::value);
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
template <typename T>
|
|
85
|
+
struct remove_class {};
|
|
86
|
+
|
|
87
|
+
template <typename C, typename R, typename... A>
|
|
88
|
+
struct remove_class<R (C::*)(A...)> {
|
|
89
|
+
using type = R(A...);
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
template <typename C, typename R, typename... A>
|
|
93
|
+
struct remove_class<R (C::*)(A...) const> {
|
|
94
|
+
using type = R(A...);
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
template <typename F>
|
|
98
|
+
struct strip_function_object {
|
|
99
|
+
using type = typename remove_class<decltype(&F::operator())>::type;
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
////////////////////////////////////////////////////////////////////////
|
|
103
|
+
// Function return type and parameter type info
|
|
104
|
+
////////////////////////////////////////////////////////////////////////
|
|
105
|
+
|
|
106
|
+
// For parameter packs . . .
|
|
107
|
+
template <typename... TArgs>
|
|
108
|
+
struct Pack {
|
|
109
|
+
template <size_t i>
|
|
110
|
+
using get = std::tuple_element_t<i, std::tuple<TArgs...>>;
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
template <typename TReturnType, typename... TArgs>
|
|
114
|
+
struct CppFunctionBase {
|
|
115
|
+
using arg_count = std::integral_constant<unsigned, sizeof...(TArgs)>;
|
|
116
|
+
using return_type = TReturnType;
|
|
117
|
+
using params_type = Pack<TArgs...>;
|
|
118
|
+
|
|
119
|
+
// Function pointers . . .
|
|
120
|
+
template <typename SFINAE = TReturnType>
|
|
121
|
+
auto operator()(TReturnType (*f)(), TArgs... args)
|
|
122
|
+
-> std::enable_if_t<sizeof...(TArgs) == 0, SFINAE> {
|
|
123
|
+
return f();
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
template <typename SFINAE = TReturnType>
|
|
127
|
+
auto operator()(TReturnType (*f)(TArgs...), TArgs... args)
|
|
128
|
+
-> std::enable_if_t<sizeof...(TArgs) != 0, SFINAE> {
|
|
129
|
+
return f(args...);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
template <typename SFINAE = TReturnType>
|
|
133
|
+
auto operator()(std::function<TReturnType(TArgs...)> f, TArgs... args)
|
|
134
|
+
-> std::enable_if_t<sizeof...(TArgs) == 0, SFINAE> {
|
|
135
|
+
return f();
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
// Member functions . . .
|
|
140
|
+
template <typename TClass, typename TReturnType, typename... TArgs>
|
|
141
|
+
struct CppMemFnBase {
|
|
142
|
+
using arg_count = std::integral_constant<unsigned, sizeof...(TArgs)>;
|
|
143
|
+
using return_type = TReturnType;
|
|
144
|
+
using params_type = Pack<TArgs...>;
|
|
145
|
+
using class_type = TClass;
|
|
146
|
+
|
|
147
|
+
template <typename SFINAE = TReturnType>
|
|
148
|
+
auto operator()(TReturnType (TClass::*mem_fn)(TArgs...),
|
|
149
|
+
TClass* ptr,
|
|
150
|
+
TArgs... args)
|
|
151
|
+
-> std::enable_if_t<sizeof...(TArgs) != 0, SFINAE> {
|
|
152
|
+
return (ptr->*mem_fn)(args...);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
template <typename SFINAE = TReturnType>
|
|
156
|
+
auto operator()(TReturnType (TClass::*mem_fn)(TArgs...),
|
|
157
|
+
TClass* ptr,
|
|
158
|
+
TArgs... args)
|
|
159
|
+
-> std::enable_if_t<sizeof...(TArgs) == 0, SFINAE> {
|
|
160
|
+
return (ptr->*mem_fn)();
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
template <typename SFINAE = TReturnType>
|
|
164
|
+
auto operator()(TReturnType (TClass::*mem_fn)(TArgs...) const,
|
|
165
|
+
TClass* ptr,
|
|
166
|
+
TArgs... args)
|
|
167
|
+
-> std::enable_if_t<sizeof...(TArgs) != 0, SFINAE> {
|
|
168
|
+
return (ptr->*mem_fn)(args...);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
template <typename SFINAE = TReturnType>
|
|
172
|
+
auto operator()(TReturnType (TClass::*mem_fn)(TArgs...) const,
|
|
173
|
+
TClass* ptr,
|
|
174
|
+
TArgs... args)
|
|
175
|
+
-> std::enable_if_t<sizeof...(TArgs) == 0, SFINAE> {
|
|
176
|
+
return (ptr->*mem_fn)();
|
|
177
|
+
}
|
|
178
|
+
};
|
|
179
|
+
|
|
180
|
+
// Base declaration . . .
|
|
181
|
+
template <typename TSignature, typename = void>
|
|
182
|
+
struct CppFunction {};
|
|
183
|
+
|
|
184
|
+
// Free functions . . .
|
|
185
|
+
template <typename TReturnType, typename... TArgs>
|
|
186
|
+
struct CppFunction<TReturnType(TArgs...)>
|
|
187
|
+
: CppFunctionBase<TReturnType, TArgs...> {};
|
|
188
|
+
|
|
189
|
+
// Function pointers . . .
|
|
190
|
+
template <typename TReturnType, typename... TArgs>
|
|
191
|
+
struct CppFunction<TReturnType (*)(TArgs...)>
|
|
192
|
+
: CppFunctionBase<TReturnType, TArgs...> {};
|
|
193
|
+
|
|
194
|
+
// Member functions . . .
|
|
195
|
+
template <typename TClass, typename TReturnType, typename... TArgs>
|
|
196
|
+
struct CppFunction<TReturnType (TClass::*)(TArgs...)>
|
|
197
|
+
: CppMemFnBase<TClass, TReturnType, TArgs...> {};
|
|
198
|
+
|
|
199
|
+
// Const member functions
|
|
200
|
+
template <typename TClass, typename TReturnType, typename... TArgs>
|
|
201
|
+
struct CppFunction<TReturnType (TClass::*)(TArgs...) const>
|
|
202
|
+
: CppMemFnBase<TClass, TReturnType, TArgs...> {};
|
|
203
|
+
|
|
204
|
+
// std::function objects
|
|
205
|
+
template <typename TReturnType, typename... TArgs>
|
|
206
|
+
struct CppFunction<std::function<TReturnType(TArgs...)>>
|
|
207
|
+
: CppFunctionBase<TReturnType, TArgs...> {};
|
|
208
|
+
|
|
209
|
+
// Lambdas?
|
|
210
|
+
template <typename Func>
|
|
211
|
+
struct CppFunction<Func, std::enable_if_t<detail::is_lambda<Func>::value>>
|
|
212
|
+
: CppFunction<typename detail::strip_function_object<Func>::type> {};
|
|
213
|
+
|
|
214
|
+
// For convenience . . .
|
|
215
|
+
template <typename TFunctionType>
|
|
216
|
+
using returns_void
|
|
217
|
+
= std::is_void<typename CppFunction<TFunctionType>::return_type>;
|
|
218
|
+
|
|
219
|
+
template <typename TFunctionType>
|
|
220
|
+
using arg_count = typename CppFunction<TFunctionType>::arg_count;
|
|
221
|
+
} // namespace detail
|
|
222
|
+
} // namespace gapbind14
|
|
223
|
+
#endif // INCLUDE_GAPBIND14_CPP_FN_HPP_
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
//
|
|
2
|
+
// gapbind14 for GAP
|
|
3
|
+
// Copyright (C) 2020 James D. Mitchell
|
|
4
|
+
//
|
|
5
|
+
// This program is free software: you can redistribute it and/or modify
|
|
6
|
+
// it under the terms of the GNU General Public License as published by
|
|
7
|
+
// the Free Software Foundation, either version 3 of the License, or
|
|
8
|
+
// (at your option) any later version.
|
|
9
|
+
//
|
|
10
|
+
// This program is distributed in the hope that it will be useful,
|
|
11
|
+
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12
|
+
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
13
|
+
// GNU General Public License for more details.
|
|
14
|
+
//
|
|
15
|
+
// You should have received a copy of the GNU General Public License
|
|
16
|
+
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
17
|
+
//
|
|
18
|
+
|
|
19
|
+
#ifndef INCLUDE_GAPBIND14_GAP_INCLUDE_HPP_
|
|
20
|
+
#define INCLUDE_GAPBIND14_GAP_INCLUDE_HPP_
|
|
21
|
+
|
|
22
|
+
extern "C" {
|
|
23
|
+
#include "gap_all.h"
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
#endif // INCLUDE_GAPBIND14_GAP_INCLUDE_HPP_
|