passagemath-gap-pkg-semigroups 10.6.30__cp310-cp310-macosx_13_0_arm64.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/aarch64-apple-darwin23-default64-kv10/semigroups.so +0 -0
- gap/pkg/semigroups/config.guess +1807 -0
- gap/pkg/semigroups/config.log +1158 -0
- gap/pkg/semigroups/config.status +1131 -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.30.dist-info/METADATA +93 -0
- passagemath_gap_pkg_semigroups-10.6.30.dist-info/METADATA.bak +94 -0
- passagemath_gap_pkg_semigroups-10.6.30.dist-info/RECORD +354 -0
- passagemath_gap_pkg_semigroups-10.6.30.dist-info/WHEEL +6 -0
- passagemath_gap_pkg_semigroups-10.6.30.dist-info/top_level.txt +1 -0
- passagemath_gap_pkg_semigroups.dylibs/libsemigroups.2.dylib +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.cpython-310-darwin.so +0 -0
|
@@ -0,0 +1,445 @@
|
|
|
1
|
+
//
|
|
2
|
+
// gapbind14
|
|
3
|
+
// Copyright (C) 2021-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
|
+
// TODO:
|
|
20
|
+
// * Allow return Fail instead of ErrorQuit in GAPBIND14_TRY
|
|
21
|
+
// * Allow custom printing
|
|
22
|
+
// * Support enums
|
|
23
|
+
// * Support operators
|
|
24
|
+
// * tests for gapbind14/demo
|
|
25
|
+
// * update gapbind14/README.md
|
|
26
|
+
// * gapbind: iwyu in all files
|
|
27
|
+
// * gapbind: const/noexcept in all files
|
|
28
|
+
|
|
29
|
+
#ifndef INCLUDE_GAPBIND14_GAPBIND14_HPP_
|
|
30
|
+
#define INCLUDE_GAPBIND14_GAPBIND14_HPP_
|
|
31
|
+
|
|
32
|
+
#include <cstddef> // for size_t
|
|
33
|
+
#include <iterator> // for distance, iterator_traits
|
|
34
|
+
#include <memory> // for shared_ptr
|
|
35
|
+
#include <sstream> // for ostringstream
|
|
36
|
+
#include <stdexcept> // for runtime_error
|
|
37
|
+
#include <string> // for string
|
|
38
|
+
#include <type_traits> // for enable_if_t
|
|
39
|
+
#include <typeinfo> // for typeid
|
|
40
|
+
#include <unordered_map> // for unordered_map
|
|
41
|
+
#include <utility> // for make_pair
|
|
42
|
+
#include <vector> // for vector
|
|
43
|
+
|
|
44
|
+
#include "gap_include.hpp" // for Obj etc
|
|
45
|
+
#include "tame_free_fn.hpp" // for tame free functions
|
|
46
|
+
#include "tame_mem_fn.hpp" // for tame member functions
|
|
47
|
+
#include "to_gap.hpp" // for to_gap
|
|
48
|
+
|
|
49
|
+
////////////////////////////////////////////////////////////////////////
|
|
50
|
+
// Assertions
|
|
51
|
+
////////////////////////////////////////////////////////////////////////
|
|
52
|
+
|
|
53
|
+
#ifdef GAPBIND14_DEBUG
|
|
54
|
+
#define GAPBIND14_ASSERT(x) assert(x)
|
|
55
|
+
#else
|
|
56
|
+
#define GAPBIND14_ASSERT(x)
|
|
57
|
+
#endif
|
|
58
|
+
|
|
59
|
+
////////////////////////////////////////////////////////////////////////
|
|
60
|
+
// Macros
|
|
61
|
+
////////////////////////////////////////////////////////////////////////
|
|
62
|
+
|
|
63
|
+
#define GAPBIND14_MODULE(name) \
|
|
64
|
+
static void gapbind14_init_##name(); \
|
|
65
|
+
int gapbind14_dummy_var_##name \
|
|
66
|
+
= ::gapbind14::detail::emplace_init_func(#name, &gapbind14_init_##name); \
|
|
67
|
+
void gapbind14_init_##name()
|
|
68
|
+
|
|
69
|
+
////////////////////////////////////////////////////////////////////////
|
|
70
|
+
// Typdefs for GAP
|
|
71
|
+
////////////////////////////////////////////////////////////////////////
|
|
72
|
+
|
|
73
|
+
namespace gapbind14 {
|
|
74
|
+
|
|
75
|
+
// Forward decl
|
|
76
|
+
template <typename T, typename>
|
|
77
|
+
struct to_cpp;
|
|
78
|
+
|
|
79
|
+
////////////////////////////////////////////////////////////////////////
|
|
80
|
+
// Aliases
|
|
81
|
+
////////////////////////////////////////////////////////////////////////
|
|
82
|
+
|
|
83
|
+
using gapbind14_subtype = size_t;
|
|
84
|
+
|
|
85
|
+
////////////////////////////////////////////////////////////////////////
|
|
86
|
+
// Constants
|
|
87
|
+
////////////////////////////////////////////////////////////////////////
|
|
88
|
+
|
|
89
|
+
extern UInt T_GAPBIND14_OBJ;
|
|
90
|
+
|
|
91
|
+
template <typename T>
|
|
92
|
+
struct IsGapBind14Type : std::false_type {};
|
|
93
|
+
|
|
94
|
+
template <typename T>
|
|
95
|
+
struct IsGapBind14Type<T&> : IsGapBind14Type<T> {};
|
|
96
|
+
|
|
97
|
+
template <typename T>
|
|
98
|
+
struct IsGapBind14Type<T&&> : IsGapBind14Type<T> {};
|
|
99
|
+
|
|
100
|
+
template <typename T>
|
|
101
|
+
struct IsGapBind14Type<T const&> : IsGapBind14Type<T> {};
|
|
102
|
+
|
|
103
|
+
template <typename T>
|
|
104
|
+
struct IsGapBind14Type<std::shared_ptr<T>> : IsGapBind14Type<T> {};
|
|
105
|
+
|
|
106
|
+
void init_library(char const*);
|
|
107
|
+
void init_kernel(char const*);
|
|
108
|
+
|
|
109
|
+
class Module; // Forward decl
|
|
110
|
+
Module& module();
|
|
111
|
+
|
|
112
|
+
////////////////////////////////////////////////////////////////////////
|
|
113
|
+
// Helper functions
|
|
114
|
+
////////////////////////////////////////////////////////////////////////
|
|
115
|
+
|
|
116
|
+
namespace detail {
|
|
117
|
+
|
|
118
|
+
std::unordered_map<std::string, void (*)()>& init_funcs();
|
|
119
|
+
|
|
120
|
+
int emplace_init_func(char const* module_name, void (*func)());
|
|
121
|
+
|
|
122
|
+
// Convert object to string
|
|
123
|
+
template <typename T>
|
|
124
|
+
std::string to_string(T const& n) {
|
|
125
|
+
std::ostringstream stm;
|
|
126
|
+
stm << n;
|
|
127
|
+
return stm.str();
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
void require_gapbind14_obj(Obj o);
|
|
131
|
+
|
|
132
|
+
// Get the gapbind14 subtype of the object o.
|
|
133
|
+
gapbind14_subtype obj_subtype(Obj o);
|
|
134
|
+
|
|
135
|
+
template <typename T>
|
|
136
|
+
T* obj_cpp_ptr(Obj o) {
|
|
137
|
+
// Couldn't add static_assert that IsGapBind14Type<T>::value is true
|
|
138
|
+
// because sometimes we call this function when T is a base class of a
|
|
139
|
+
// class where IsGapBind14Type<T>::value is true.
|
|
140
|
+
require_gapbind14_obj(o);
|
|
141
|
+
// Also cannot check that subtype of o corresponds to T for the same
|
|
142
|
+
// reason as above T might be a base class of a GapBind14Type.
|
|
143
|
+
return reinterpret_cast<T*>(ADDR_OBJ(o)[1]);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
char const* copy_c_str(std::string const& str);
|
|
147
|
+
|
|
148
|
+
char const* params_c_str(size_t nr);
|
|
149
|
+
|
|
150
|
+
////////////////////////////////////////////////////////////////////////
|
|
151
|
+
// SubtypeBase class - for polymorphism
|
|
152
|
+
////////////////////////////////////////////////////////////////////////
|
|
153
|
+
|
|
154
|
+
class SubtypeBase {
|
|
155
|
+
private:
|
|
156
|
+
std::string _name;
|
|
157
|
+
gapbind14_subtype _subtype;
|
|
158
|
+
|
|
159
|
+
public:
|
|
160
|
+
SubtypeBase(std::string nm, gapbind14_subtype sbtyp);
|
|
161
|
+
|
|
162
|
+
virtual ~SubtypeBase() {}
|
|
163
|
+
|
|
164
|
+
std::string const& name() const {
|
|
165
|
+
return _name;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
gapbind14_subtype subtype() const noexcept {
|
|
169
|
+
return _subtype;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
virtual void free(Obj o) = 0;
|
|
173
|
+
};
|
|
174
|
+
|
|
175
|
+
////////////////////////////////////////////////////////////////////////
|
|
176
|
+
// Subtype class
|
|
177
|
+
////////////////////////////////////////////////////////////////////////
|
|
178
|
+
|
|
179
|
+
template <typename T>
|
|
180
|
+
class Subtype : public SubtypeBase {
|
|
181
|
+
public:
|
|
182
|
+
using class_type = T;
|
|
183
|
+
|
|
184
|
+
Subtype(std::string nm, gapbind14_subtype sbtyp)
|
|
185
|
+
: SubtypeBase(nm, sbtyp) {}
|
|
186
|
+
|
|
187
|
+
void free(Obj o) override {
|
|
188
|
+
static_assert(IsGapBind14Type<T>::value,
|
|
189
|
+
"template parameter T must satisfy IsGapbind14Type<T>");
|
|
190
|
+
GAPBIND14_ASSERT(obj_subtype(o) == module().subtype<T>());
|
|
191
|
+
delete detail::obj_cpp_ptr<T>(o);
|
|
192
|
+
}
|
|
193
|
+
};
|
|
194
|
+
} // namespace detail
|
|
195
|
+
|
|
196
|
+
////////////////////////////////////////////////////////////////////////
|
|
197
|
+
// Module class
|
|
198
|
+
////////////////////////////////////////////////////////////////////////
|
|
199
|
+
|
|
200
|
+
class Module {
|
|
201
|
+
private:
|
|
202
|
+
std::vector<StructGVarFunc> _funcs;
|
|
203
|
+
std::vector<std::vector<StructGVarFunc>> _mem_funcs;
|
|
204
|
+
std::unordered_map<std::string, gapbind14_subtype> _subtype_names;
|
|
205
|
+
std::vector<detail::SubtypeBase*> _subtypes;
|
|
206
|
+
std::unordered_map<size_t, gapbind14_subtype> _type_to_subtype;
|
|
207
|
+
|
|
208
|
+
static size_t _next_subtype;
|
|
209
|
+
|
|
210
|
+
public:
|
|
211
|
+
Module()
|
|
212
|
+
: _funcs(),
|
|
213
|
+
_mem_funcs(),
|
|
214
|
+
_subtype_names(),
|
|
215
|
+
_subtypes(),
|
|
216
|
+
_type_to_subtype() {}
|
|
217
|
+
|
|
218
|
+
Module(Module const&) = delete;
|
|
219
|
+
Module(Module&&) = delete;
|
|
220
|
+
Module& operator=(Module const&) = delete;
|
|
221
|
+
Module& operator=(Module&&) = delete;
|
|
222
|
+
|
|
223
|
+
~Module();
|
|
224
|
+
|
|
225
|
+
void clear();
|
|
226
|
+
|
|
227
|
+
gapbind14_subtype subtype(std::string const& subtype_name) const;
|
|
228
|
+
|
|
229
|
+
template <typename T>
|
|
230
|
+
gapbind14_subtype subtype() const {
|
|
231
|
+
auto it = _type_to_subtype.find(typeid(T).hash_code());
|
|
232
|
+
if (it == _type_to_subtype.end()) {
|
|
233
|
+
throw std::runtime_error(std::string("No subtype for ")
|
|
234
|
+
+ typeid(T).name());
|
|
235
|
+
}
|
|
236
|
+
return it->second;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
const char* subtype_name(Obj o) const {
|
|
240
|
+
return _subtypes.at(detail::obj_subtype(o))->name().c_str();
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
void print(Obj o) {
|
|
244
|
+
Pr("<class %s at %s>",
|
|
245
|
+
(Int) subtype_name(o),
|
|
246
|
+
(Int) detail::to_string(o).c_str());
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
#ifdef GAP_ENABLE_SAVELOAD
|
|
250
|
+
void save(Obj o) {
|
|
251
|
+
SaveUInt(detail::obj_subtype(o));
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
void load(Obj o) const;
|
|
255
|
+
#endif
|
|
256
|
+
|
|
257
|
+
void free(Obj o) const {
|
|
258
|
+
_subtypes.at(detail::obj_subtype(o))->free(o);
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
StructGVarFunc const* funcs() const {
|
|
262
|
+
return &_funcs[0];
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
StructGVarFunc const* mem_funcs(std::string const& nm) const {
|
|
266
|
+
return &_mem_funcs[subtype(nm)][0];
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
template <typename T>
|
|
270
|
+
gapbind14_subtype add_subtype(std::string const& nm) {
|
|
271
|
+
bool inserted
|
|
272
|
+
= _subtype_names.insert(std::make_pair(nm, _subtypes.size())).second;
|
|
273
|
+
if (!inserted) {
|
|
274
|
+
throw std::runtime_error("Subtype named " + nm + " already registered");
|
|
275
|
+
}
|
|
276
|
+
_type_to_subtype.emplace(typeid(T).hash_code(), _subtypes.size());
|
|
277
|
+
_subtypes.push_back(new detail::Subtype<T>(nm, _subtypes.size()));
|
|
278
|
+
_mem_funcs.push_back(std::vector<StructGVarFunc>());
|
|
279
|
+
return _subtypes.back()->subtype();
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
template <typename... Args>
|
|
283
|
+
void add_func(std::string fnm,
|
|
284
|
+
std::string const& nm,
|
|
285
|
+
Obj (*func)(Args...)) {
|
|
286
|
+
static_assert(sizeof...(Args) > 0,
|
|
287
|
+
"there must be at least 1 parameter: Obj self");
|
|
288
|
+
static_assert(sizeof...(Args) <= 7, "Args must be at most 7");
|
|
289
|
+
_funcs.push_back({detail::copy_c_str(nm),
|
|
290
|
+
sizeof...(Args) - 1,
|
|
291
|
+
detail::params_c_str(sizeof...(Args) - 1),
|
|
292
|
+
(ObjFunc) func,
|
|
293
|
+
detail::copy_c_str(fnm + ":Func" + nm)});
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
template <typename... Args>
|
|
297
|
+
void add_mem_func(std::string const& sbtyp,
|
|
298
|
+
std::string flnm,
|
|
299
|
+
std::string const& nm,
|
|
300
|
+
Obj (*func)(Args...)) {
|
|
301
|
+
static_assert(sizeof...(Args) <= 7, "Args must be at most 7");
|
|
302
|
+
_mem_funcs.at(subtype(sbtyp))
|
|
303
|
+
.push_back({detail::copy_c_str(nm),
|
|
304
|
+
sizeof...(Args) - 1,
|
|
305
|
+
detail::params_c_str(sizeof...(Args) - 1),
|
|
306
|
+
(ObjFunc) func,
|
|
307
|
+
detail::copy_c_str(flnm + ":Func" + sbtyp + "::" + nm)});
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
void finalize();
|
|
311
|
+
|
|
312
|
+
std::vector<detail::SubtypeBase*>::const_iterator begin() const noexcept {
|
|
313
|
+
return _subtypes.cbegin();
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
std::vector<detail::SubtypeBase*>::const_iterator end() const noexcept {
|
|
317
|
+
return _subtypes.cend();
|
|
318
|
+
}
|
|
319
|
+
};
|
|
320
|
+
|
|
321
|
+
////////////////////////////////////////////////////////////////////////
|
|
322
|
+
// to_cpp/gap - for gapbind14 gap objects
|
|
323
|
+
////////////////////////////////////////////////////////////////////////
|
|
324
|
+
|
|
325
|
+
template <typename T>
|
|
326
|
+
struct to_cpp<T, std::enable_if_t<IsGapBind14Type<T>::value>> {
|
|
327
|
+
using cpp_type = std::decay_t<T>;
|
|
328
|
+
|
|
329
|
+
std::decay_t<T>& operator()(Obj o) const {
|
|
330
|
+
detail::require_gapbind14_obj(o);
|
|
331
|
+
return *detail::obj_cpp_ptr<std::decay_t<T>>(o);
|
|
332
|
+
}
|
|
333
|
+
};
|
|
334
|
+
|
|
335
|
+
template <typename T>
|
|
336
|
+
struct to_gap<T, std::enable_if_t<IsGapBind14Type<T>::value>> {
|
|
337
|
+
using cpp_type = T;
|
|
338
|
+
|
|
339
|
+
Obj operator()(T const& obj) const {
|
|
340
|
+
return to_gap<T*>()(new T(obj));
|
|
341
|
+
}
|
|
342
|
+
};
|
|
343
|
+
|
|
344
|
+
template <typename T>
|
|
345
|
+
struct to_gap<T*, std::enable_if_t<IsGapBind14Type<T>::value>> {
|
|
346
|
+
using cpp_type = T;
|
|
347
|
+
|
|
348
|
+
Obj operator()(T* ptr) const {
|
|
349
|
+
Obj o = NewBag(T_GAPBIND14_OBJ, 2 * sizeof(Obj));
|
|
350
|
+
ADDR_OBJ(o)[0] = reinterpret_cast<Obj>(module().subtype<T>());
|
|
351
|
+
ADDR_OBJ(o)[1] = reinterpret_cast<Obj>(ptr);
|
|
352
|
+
CHANGED_BAG(o);
|
|
353
|
+
return o;
|
|
354
|
+
}
|
|
355
|
+
};
|
|
356
|
+
|
|
357
|
+
////////////////////////////////////////////////////////////////////////
|
|
358
|
+
// Free functions
|
|
359
|
+
////////////////////////////////////////////////////////////////////////
|
|
360
|
+
|
|
361
|
+
template <typename Wild>
|
|
362
|
+
static void InstallGlobalFunction(char const* name, Wild f) {
|
|
363
|
+
size_t const n = detail::all_wilds<Wild>().size();
|
|
364
|
+
detail::all_wilds<Wild>().push_back(f);
|
|
365
|
+
module().add_func(
|
|
366
|
+
__FILE__,
|
|
367
|
+
name,
|
|
368
|
+
detail::get_tame<decltype(&detail::tame<0, Wild>), Wild>(n));
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
////////////////////////////////////////////////////////////////////////
|
|
372
|
+
// Tes
|
|
373
|
+
////////////////////////////////////////////////////////////////////////
|
|
374
|
+
|
|
375
|
+
template <typename... Args>
|
|
376
|
+
struct init {};
|
|
377
|
+
|
|
378
|
+
namespace detail {
|
|
379
|
+
template <typename T, typename... Args>
|
|
380
|
+
T* make(Args... params) {
|
|
381
|
+
return new T(std::forward<Args>(params)...);
|
|
382
|
+
}
|
|
383
|
+
} // namespace detail
|
|
384
|
+
|
|
385
|
+
template <typename T>
|
|
386
|
+
class class_ {
|
|
387
|
+
public:
|
|
388
|
+
class_(std::string name)
|
|
389
|
+
: _name(name), _subtype(module().add_subtype<T>(name)) {}
|
|
390
|
+
|
|
391
|
+
template <typename... Args>
|
|
392
|
+
class_& def(init<Args...> x, std::string name = "make") {
|
|
393
|
+
return def(name.c_str(), &detail::make<T, Args...>);
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
template <typename Wild>
|
|
397
|
+
auto def(char const* mem_fn_name, Wild f)
|
|
398
|
+
-> std::enable_if_t<std::is_member_function_pointer<Wild>::value,
|
|
399
|
+
class_&> {
|
|
400
|
+
size_t const n = detail::all_wild_mem_fns<Wild>().size();
|
|
401
|
+
detail::all_wild_mem_fns<Wild>().push_back(f);
|
|
402
|
+
module().add_mem_func(
|
|
403
|
+
_name,
|
|
404
|
+
__FILE__,
|
|
405
|
+
mem_fn_name,
|
|
406
|
+
detail::get_tame_mem_fn<decltype(&detail::tame_mem_fn<0, Wild>),
|
|
407
|
+
Wild>(n));
|
|
408
|
+
return *this;
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
template <typename Wild>
|
|
412
|
+
auto def(char const* mem_fn_name, Wild f)
|
|
413
|
+
-> std::enable_if_t<!std::is_member_function_pointer<Wild>::value,
|
|
414
|
+
class_&> {
|
|
415
|
+
size_t const n = detail::all_wilds<Wild>().size();
|
|
416
|
+
detail::all_wilds<Wild>().push_back(f);
|
|
417
|
+
module().add_mem_func(
|
|
418
|
+
_name,
|
|
419
|
+
__FILE__,
|
|
420
|
+
mem_fn_name,
|
|
421
|
+
detail::get_tame<decltype(&detail::tame<0, Wild>), Wild>(n));
|
|
422
|
+
return *this;
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
private:
|
|
426
|
+
std::string _name;
|
|
427
|
+
gapbind14_subtype _subtype;
|
|
428
|
+
};
|
|
429
|
+
|
|
430
|
+
template <typename T>
|
|
431
|
+
Obj make_iterator(T first, T last) {
|
|
432
|
+
size_t N = std::distance(first, last);
|
|
433
|
+
Obj result = NEW_PLIST((N == 0 ? T_PLIST_EMPTY : T_PLIST_HOM), N);
|
|
434
|
+
SET_LEN_PLIST(result, N);
|
|
435
|
+
size_t i = 1;
|
|
436
|
+
for (auto it = first; it != last; ++it) {
|
|
437
|
+
AssPlist(result,
|
|
438
|
+
i++,
|
|
439
|
+
to_gap<typename std::iterator_traits<T>::value_type>()(*it));
|
|
440
|
+
}
|
|
441
|
+
return result;
|
|
442
|
+
}
|
|
443
|
+
} // namespace gapbind14
|
|
444
|
+
|
|
445
|
+
#endif // INCLUDE_GAPBIND14_GAPBIND14_HPP_
|