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.

Files changed (356) hide show
  1. gap/pkg/semigroups/CHANGELOG.md +1699 -0
  2. gap/pkg/semigroups/CONTRIBUTING.md +91 -0
  3. gap/pkg/semigroups/GNUmakefile +110 -0
  4. gap/pkg/semigroups/GNUmakefile.in +110 -0
  5. gap/pkg/semigroups/GPL +674 -0
  6. gap/pkg/semigroups/LICENSE +16 -0
  7. gap/pkg/semigroups/Makefile +26 -0
  8. gap/pkg/semigroups/Makefile.gappkg +225 -0
  9. gap/pkg/semigroups/PackageInfo.g +529 -0
  10. gap/pkg/semigroups/README.md +102 -0
  11. gap/pkg/semigroups/VERSIONS +112 -0
  12. gap/pkg/semigroups/aclocal.m4 +375 -0
  13. gap/pkg/semigroups/autogen.sh +25 -0
  14. gap/pkg/semigroups/bin/x86_64-pc-linux-musl-default64-kv10/semigroups.so +0 -0
  15. gap/pkg/semigroups/config.guess +1807 -0
  16. gap/pkg/semigroups/config.log +1068 -0
  17. gap/pkg/semigroups/config.status +1133 -0
  18. gap/pkg/semigroups/config.sub +1960 -0
  19. gap/pkg/semigroups/configure +9742 -0
  20. gap/pkg/semigroups/configure.ac +71 -0
  21. gap/pkg/semigroups/data/doc/greens.pickle +1 -0
  22. gap/pkg/semigroups/data/gens/fullbool-8.pickle.gz +0 -0
  23. gap/pkg/semigroups/data/gens/fullbool.pickle.gz +0 -0
  24. gap/pkg/semigroups/data/gens/hall.pickle.gz +0 -0
  25. gap/pkg/semigroups/data/gens/reflex-6.pickle.gz +0 -0
  26. gap/pkg/semigroups/data/gens/reflex.pickle.gz +0 -0
  27. gap/pkg/semigroups/data/tst/bipart4 +10 -0
  28. gap/pkg/semigroups/data/tst/pperm10 +1 -0
  29. gap/pkg/semigroups/data/tst/tables.gz +0 -0
  30. gap/pkg/semigroups/data/tst/testdata +1 -0
  31. gap/pkg/semigroups/data/tst/testinstall.pickle +1 -0
  32. gap/pkg/semigroups/data/tst/trans3 +7 -0
  33. gap/pkg/semigroups/data/tst/trans3-old +7 -0
  34. gap/pkg/semigroups/environment.yml +7 -0
  35. gap/pkg/semigroups/gap/attributes/acting.gd +15 -0
  36. gap/pkg/semigroups/gap/attributes/acting.gi +297 -0
  37. gap/pkg/semigroups/gap/attributes/attr.gd +91 -0
  38. gap/pkg/semigroups/gap/attributes/attr.gi +1214 -0
  39. gap/pkg/semigroups/gap/attributes/dual.gd +25 -0
  40. gap/pkg/semigroups/gap/attributes/dual.gi +209 -0
  41. gap/pkg/semigroups/gap/attributes/factor.gd +17 -0
  42. gap/pkg/semigroups/gap/attributes/factor.gi +453 -0
  43. gap/pkg/semigroups/gap/attributes/homomorph.gd +84 -0
  44. gap/pkg/semigroups/gap/attributes/homomorph.gi +591 -0
  45. gap/pkg/semigroups/gap/attributes/inverse.gd +38 -0
  46. gap/pkg/semigroups/gap/attributes/inverse.gi +708 -0
  47. gap/pkg/semigroups/gap/attributes/isomorph.gd +16 -0
  48. gap/pkg/semigroups/gap/attributes/isomorph.gi +377 -0
  49. gap/pkg/semigroups/gap/attributes/isorms.gd +49 -0
  50. gap/pkg/semigroups/gap/attributes/isorms.gi +1383 -0
  51. gap/pkg/semigroups/gap/attributes/maximal.gd +16 -0
  52. gap/pkg/semigroups/gap/attributes/maximal.gi +1876 -0
  53. gap/pkg/semigroups/gap/attributes/properties.gd +109 -0
  54. gap/pkg/semigroups/gap/attributes/properties.gi +1658 -0
  55. gap/pkg/semigroups/gap/attributes/rms-translat.gd +39 -0
  56. gap/pkg/semigroups/gap/attributes/rms-translat.gi +1078 -0
  57. gap/pkg/semigroups/gap/attributes/semifp.gd +12 -0
  58. gap/pkg/semigroups/gap/attributes/semifp.gi +84 -0
  59. gap/pkg/semigroups/gap/attributes/translat.gd +474 -0
  60. gap/pkg/semigroups/gap/attributes/translat.gi +1779 -0
  61. gap/pkg/semigroups/gap/congruences/cong.gd +154 -0
  62. gap/pkg/semigroups/gap/congruences/cong.gi +351 -0
  63. gap/pkg/semigroups/gap/congruences/conginv.gd +38 -0
  64. gap/pkg/semigroups/gap/congruences/conginv.gi +589 -0
  65. gap/pkg/semigroups/gap/congruences/conglatt.gd +101 -0
  66. gap/pkg/semigroups/gap/congruences/conglatt.gi +886 -0
  67. gap/pkg/semigroups/gap/congruences/congpairs.gd +21 -0
  68. gap/pkg/semigroups/gap/congruences/congpairs.gi +272 -0
  69. gap/pkg/semigroups/gap/congruences/congpart.gd +90 -0
  70. gap/pkg/semigroups/gap/congruences/congpart.gi +449 -0
  71. gap/pkg/semigroups/gap/congruences/congrees.gd +20 -0
  72. gap/pkg/semigroups/gap/congruences/congrees.gi +313 -0
  73. gap/pkg/semigroups/gap/congruences/congrms.gd +54 -0
  74. gap/pkg/semigroups/gap/congruences/congrms.gi +1467 -0
  75. gap/pkg/semigroups/gap/congruences/congsemigraph.gd +28 -0
  76. gap/pkg/semigroups/gap/congruences/congsemigraph.gi +289 -0
  77. gap/pkg/semigroups/gap/congruences/congsimple.gd +27 -0
  78. gap/pkg/semigroups/gap/congruences/congsimple.gi +236 -0
  79. gap/pkg/semigroups/gap/congruences/conguniv.gd +20 -0
  80. gap/pkg/semigroups/gap/congruences/conguniv.gi +271 -0
  81. gap/pkg/semigroups/gap/congruences/congwordgraph.gd +21 -0
  82. gap/pkg/semigroups/gap/congruences/congwordgraph.gi +250 -0
  83. gap/pkg/semigroups/gap/elements/bipart.gd +71 -0
  84. gap/pkg/semigroups/gap/elements/bipart.gi +995 -0
  85. gap/pkg/semigroups/gap/elements/blocks.gd +31 -0
  86. gap/pkg/semigroups/gap/elements/blocks.gi +134 -0
  87. gap/pkg/semigroups/gap/elements/boolmat.gd +74 -0
  88. gap/pkg/semigroups/gap/elements/boolmat.gi +726 -0
  89. gap/pkg/semigroups/gap/elements/elements.gd +11 -0
  90. gap/pkg/semigroups/gap/elements/elements.gi +121 -0
  91. gap/pkg/semigroups/gap/elements/ffmat.gd +71 -0
  92. gap/pkg/semigroups/gap/elements/ffmat.gi +311 -0
  93. gap/pkg/semigroups/gap/elements/maxplusmat.gd +131 -0
  94. gap/pkg/semigroups/gap/elements/maxplusmat.gi +782 -0
  95. gap/pkg/semigroups/gap/elements/pbr.gd +51 -0
  96. gap/pkg/semigroups/gap/elements/pbr.gi +740 -0
  97. gap/pkg/semigroups/gap/elements/pperm.gd +11 -0
  98. gap/pkg/semigroups/gap/elements/pperm.gi +14 -0
  99. gap/pkg/semigroups/gap/elements/semiringmat.gd +136 -0
  100. gap/pkg/semigroups/gap/elements/semiringmat.gi +717 -0
  101. gap/pkg/semigroups/gap/elements/star.gd +21 -0
  102. gap/pkg/semigroups/gap/elements/star.gi +21 -0
  103. gap/pkg/semigroups/gap/elements/trans.gd +13 -0
  104. gap/pkg/semigroups/gap/elements/trans.gi +50 -0
  105. gap/pkg/semigroups/gap/fp/freeband.gd +22 -0
  106. gap/pkg/semigroups/gap/fp/freeband.gi +502 -0
  107. gap/pkg/semigroups/gap/fp/freeinverse.gd +30 -0
  108. gap/pkg/semigroups/gap/fp/freeinverse.gi +465 -0
  109. gap/pkg/semigroups/gap/fp/tietze.gd +89 -0
  110. gap/pkg/semigroups/gap/fp/tietze.gi +1578 -0
  111. gap/pkg/semigroups/gap/fp/word.gd +15 -0
  112. gap/pkg/semigroups/gap/fp/word.gi +67 -0
  113. gap/pkg/semigroups/gap/greens/acting-inverse.gi +774 -0
  114. gap/pkg/semigroups/gap/greens/acting-regular.gi +553 -0
  115. gap/pkg/semigroups/gap/greens/acting.gd +81 -0
  116. gap/pkg/semigroups/gap/greens/acting.gi +2433 -0
  117. gap/pkg/semigroups/gap/greens/froidure-pin.gd +25 -0
  118. gap/pkg/semigroups/gap/greens/froidure-pin.gi +741 -0
  119. gap/pkg/semigroups/gap/greens/generic.gd +117 -0
  120. gap/pkg/semigroups/gap/greens/generic.gi +630 -0
  121. gap/pkg/semigroups/gap/ideals/acting.gd +17 -0
  122. gap/pkg/semigroups/gap/ideals/acting.gi +1155 -0
  123. gap/pkg/semigroups/gap/ideals/froidure-pin.gd +11 -0
  124. gap/pkg/semigroups/gap/ideals/froidure-pin.gi +105 -0
  125. gap/pkg/semigroups/gap/ideals/ideals.gd +45 -0
  126. gap/pkg/semigroups/gap/ideals/ideals.gi +442 -0
  127. gap/pkg/semigroups/gap/ideals/lambda-rho.gd +16 -0
  128. gap/pkg/semigroups/gap/ideals/lambda-rho.gi +614 -0
  129. gap/pkg/semigroups/gap/libsemigroups/cong.gd +24 -0
  130. gap/pkg/semigroups/gap/libsemigroups/cong.gi +431 -0
  131. gap/pkg/semigroups/gap/libsemigroups/fpsemi.gd +16 -0
  132. gap/pkg/semigroups/gap/libsemigroups/fpsemi.gi +53 -0
  133. gap/pkg/semigroups/gap/libsemigroups/froidure-pin.gd +17 -0
  134. gap/pkg/semigroups/gap/libsemigroups/froidure-pin.gi +945 -0
  135. gap/pkg/semigroups/gap/libsemigroups/sims1.gd +38 -0
  136. gap/pkg/semigroups/gap/libsemigroups/sims1.gi +308 -0
  137. gap/pkg/semigroups/gap/main/acting.gd +36 -0
  138. gap/pkg/semigroups/gap/main/acting.gi +779 -0
  139. gap/pkg/semigroups/gap/main/froidure-pin.gd +72 -0
  140. gap/pkg/semigroups/gap/main/froidure-pin.gi +655 -0
  141. gap/pkg/semigroups/gap/main/graded.gd +26 -0
  142. gap/pkg/semigroups/gap/main/graded.gi +355 -0
  143. gap/pkg/semigroups/gap/main/lambda-rho.gd +29 -0
  144. gap/pkg/semigroups/gap/main/lambda-rho.gi +514 -0
  145. gap/pkg/semigroups/gap/main/orbits.gd +24 -0
  146. gap/pkg/semigroups/gap/main/orbits.gi +512 -0
  147. gap/pkg/semigroups/gap/main/semiact.gd +20 -0
  148. gap/pkg/semigroups/gap/main/semiact.gi +821 -0
  149. gap/pkg/semigroups/gap/main/setup.gd +61 -0
  150. gap/pkg/semigroups/gap/main/setup.gi +1094 -0
  151. gap/pkg/semigroups/gap/obsolete.gd +9 -0
  152. gap/pkg/semigroups/gap/obsolete.gi +14 -0
  153. gap/pkg/semigroups/gap/options.g +55 -0
  154. gap/pkg/semigroups/gap/semigroups/grpperm.gd +12 -0
  155. gap/pkg/semigroups/gap/semigroups/grpperm.gi +177 -0
  156. gap/pkg/semigroups/gap/semigroups/semibipart.gd +28 -0
  157. gap/pkg/semigroups/gap/semigroups/semibipart.gi +570 -0
  158. gap/pkg/semigroups/gap/semigroups/semiboolmat.gd +20 -0
  159. gap/pkg/semigroups/gap/semigroups/semiboolmat.gi +104 -0
  160. gap/pkg/semigroups/gap/semigroups/semicons.gd +52 -0
  161. gap/pkg/semigroups/gap/semigroups/semicons.gi +1194 -0
  162. gap/pkg/semigroups/gap/semigroups/semidp.gd +13 -0
  163. gap/pkg/semigroups/gap/semigroups/semidp.gi +509 -0
  164. gap/pkg/semigroups/gap/semigroups/semieunit.gd +126 -0
  165. gap/pkg/semigroups/gap/semigroups/semieunit.gi +889 -0
  166. gap/pkg/semigroups/gap/semigroups/semiex.gd +104 -0
  167. gap/pkg/semigroups/gap/semigroups/semiex.gi +1590 -0
  168. gap/pkg/semigroups/gap/semigroups/semiffmat.gd +37 -0
  169. gap/pkg/semigroups/gap/semigroups/semiffmat.gi +565 -0
  170. gap/pkg/semigroups/gap/semigroups/semifp.gd +28 -0
  171. gap/pkg/semigroups/gap/semigroups/semifp.gi +1364 -0
  172. gap/pkg/semigroups/gap/semigroups/semigraph.gd +40 -0
  173. gap/pkg/semigroups/gap/semigroups/semigraph.gi +292 -0
  174. gap/pkg/semigroups/gap/semigroups/semigrp.gd +165 -0
  175. gap/pkg/semigroups/gap/semigroups/semigrp.gi +1225 -0
  176. gap/pkg/semigroups/gap/semigroups/semimaxplus.gd +72 -0
  177. gap/pkg/semigroups/gap/semigroups/semimaxplus.gi +710 -0
  178. gap/pkg/semigroups/gap/semigroups/semintmat.gd +13 -0
  179. gap/pkg/semigroups/gap/semigroups/semintmat.gi +74 -0
  180. gap/pkg/semigroups/gap/semigroups/semipbr.gd +19 -0
  181. gap/pkg/semigroups/gap/semigroups/semipbr.gi +139 -0
  182. gap/pkg/semigroups/gap/semigroups/semipperm.gd +27 -0
  183. gap/pkg/semigroups/gap/semigroups/semipperm.gi +711 -0
  184. gap/pkg/semigroups/gap/semigroups/semiquo.gd +14 -0
  185. gap/pkg/semigroups/gap/semigroups/semiquo.gi +97 -0
  186. gap/pkg/semigroups/gap/semigroups/semiringmat.gd +16 -0
  187. gap/pkg/semigroups/gap/semigroups/semiringmat.gi +21 -0
  188. gap/pkg/semigroups/gap/semigroups/semirms.gd +19 -0
  189. gap/pkg/semigroups/gap/semigroups/semirms.gi +977 -0
  190. gap/pkg/semigroups/gap/semigroups/semitrans.gd +49 -0
  191. gap/pkg/semigroups/gap/semigroups/semitrans.gi +909 -0
  192. gap/pkg/semigroups/gap/tools/display.gd +24 -0
  193. gap/pkg/semigroups/gap/tools/display.gi +749 -0
  194. gap/pkg/semigroups/gap/tools/io.gd +17 -0
  195. gap/pkg/semigroups/gap/tools/io.gi +543 -0
  196. gap/pkg/semigroups/gap/tools/iterators.gd +16 -0
  197. gap/pkg/semigroups/gap/tools/iterators.gi +253 -0
  198. gap/pkg/semigroups/gap/tools/utils.gd +19 -0
  199. gap/pkg/semigroups/gap/tools/utils.gi +756 -0
  200. gap/pkg/semigroups/gapbind14/.ccls +18 -0
  201. gap/pkg/semigroups/gapbind14/.clang-format +104 -0
  202. gap/pkg/semigroups/gapbind14/CPPLINT.cfg +5 -0
  203. gap/pkg/semigroups/gapbind14/LICENSE +674 -0
  204. gap/pkg/semigroups/gapbind14/README.md +76 -0
  205. gap/pkg/semigroups/gapbind14/demo/.gitignore +4 -0
  206. gap/pkg/semigroups/gapbind14/demo/LICENSE +293 -0
  207. gap/pkg/semigroups/gapbind14/demo/Makefile.gappkg +220 -0
  208. gap/pkg/semigroups/gapbind14/demo/Makefile.in +19 -0
  209. gap/pkg/semigroups/gapbind14/demo/PackageInfo.g +87 -0
  210. gap/pkg/semigroups/gapbind14/demo/README.md +17 -0
  211. gap/pkg/semigroups/gapbind14/demo/configure +34 -0
  212. gap/pkg/semigroups/gapbind14/demo/gap/gapbind_demo.gd +19 -0
  213. gap/pkg/semigroups/gapbind14/demo/gap/gapbind_demo.gi +10 -0
  214. gap/pkg/semigroups/gapbind14/demo/init.g +16 -0
  215. gap/pkg/semigroups/gapbind14/demo/makedoc.g +10 -0
  216. gap/pkg/semigroups/gapbind14/demo/read.g +6 -0
  217. gap/pkg/semigroups/gapbind14/demo/src/gapbind_demo.cc +142 -0
  218. gap/pkg/semigroups/gapbind14/demo/tst/testall.g +12 -0
  219. gap/pkg/semigroups/gapbind14/include/gapbind14/cpp_fn.hpp +223 -0
  220. gap/pkg/semigroups/gapbind14/include/gapbind14/gap_include.hpp +26 -0
  221. gap/pkg/semigroups/gapbind14/include/gapbind14/gapbind14.hpp +445 -0
  222. gap/pkg/semigroups/gapbind14/include/gapbind14/tame_free_fn.hpp +420 -0
  223. gap/pkg/semigroups/gapbind14/include/gapbind14/tame_mem_fn.hpp +556 -0
  224. gap/pkg/semigroups/gapbind14/include/gapbind14/to_cpp.hpp +162 -0
  225. gap/pkg/semigroups/gapbind14/include/gapbind14/to_gap.hpp +158 -0
  226. gap/pkg/semigroups/gapbind14/src/.clang-format +108 -0
  227. gap/pkg/semigroups/gapbind14/src/gapbind14.cpp +334 -0
  228. gap/pkg/semigroups/init.g +150 -0
  229. gap/pkg/semigroups/m4/ax_append_flag.m4 +50 -0
  230. gap/pkg/semigroups/m4/ax_check_compile_flag.m4 +53 -0
  231. gap/pkg/semigroups/m4/ax_check_hpcombi.m4 +121 -0
  232. gap/pkg/semigroups/m4/ax_check_libsemigroup.m4 +68 -0
  233. gap/pkg/semigroups/m4/ax_compare_version.m4 +177 -0
  234. gap/pkg/semigroups/m4/ax_cxx_compile_stdcxx.m4 +1009 -0
  235. gap/pkg/semigroups/m4/ax_cxx_compile_stdcxx_14.m4 +34 -0
  236. gap/pkg/semigroups/m4/ax_prefix_config_h.m4 +203 -0
  237. gap/pkg/semigroups/m4/ax_pthread.m4 +522 -0
  238. gap/pkg/semigroups/m4/find_gap.m4 +94 -0
  239. gap/pkg/semigroups/makedoc.g +153 -0
  240. gap/pkg/semigroups/prerequisites.sh +62 -0
  241. gap/pkg/semigroups/read.g +105 -0
  242. gap/pkg/semigroups/release.toml +6 -0
  243. gap/pkg/semigroups/tst/extreme/README +2 -0
  244. gap/pkg/semigroups/tst/extreme/attrinv.tst +703 -0
  245. gap/pkg/semigroups/tst/extreme/bipart.tst +2803 -0
  246. gap/pkg/semigroups/tst/extreme/closure.tst +652 -0
  247. gap/pkg/semigroups/tst/extreme/cong.tst +286 -0
  248. gap/pkg/semigroups/tst/extreme/conginv.tst +43 -0
  249. gap/pkg/semigroups/tst/extreme/examples.tst +2449 -0
  250. gap/pkg/semigroups/tst/extreme/freeband.tst +37 -0
  251. gap/pkg/semigroups/tst/extreme/greens-acting-regular.tst +27 -0
  252. gap/pkg/semigroups/tst/extreme/greens-acting.tst +1999 -0
  253. gap/pkg/semigroups/tst/extreme/ideals.tst +858 -0
  254. gap/pkg/semigroups/tst/extreme/inverse.tst +1025 -0
  255. gap/pkg/semigroups/tst/extreme/maximal.tst +856 -0
  256. gap/pkg/semigroups/tst/extreme/misc.tst +4236 -0
  257. gap/pkg/semigroups/tst/extreme/monoid_pkg.tst +1488 -0
  258. gap/pkg/semigroups/tst/extreme/properties.tst +914 -0
  259. gap/pkg/semigroups/tst/extreme/semibipart.tst +2837 -0
  260. gap/pkg/semigroups/tst/extreme/semieunit.tst +49 -0
  261. gap/pkg/semigroups/tst/extreme/semiffmat.tst +353 -0
  262. gap/pkg/semigroups/tst/extreme/semigroups.tst +245 -0
  263. gap/pkg/semigroups/tst/extreme/semiiter.tst +58 -0
  264. gap/pkg/semigroups/tst/extreme/semirms.tst +1091 -0
  265. gap/pkg/semigroups/tst/extreme/transform.tst +305 -0
  266. gap/pkg/semigroups/tst/extreme/translat.tst +44 -0
  267. gap/pkg/semigroups/tst/standard/README +2 -0
  268. gap/pkg/semigroups/tst/standard/attributes/acting.tst +388 -0
  269. gap/pkg/semigroups/tst/standard/attributes/attr.tst +2404 -0
  270. gap/pkg/semigroups/tst/standard/attributes/dual.tst +308 -0
  271. gap/pkg/semigroups/tst/standard/attributes/factor.tst +629 -0
  272. gap/pkg/semigroups/tst/standard/attributes/homomorph.tst +1134 -0
  273. gap/pkg/semigroups/tst/standard/attributes/inverse.tst +1521 -0
  274. gap/pkg/semigroups/tst/standard/attributes/isomorph.tst +435 -0
  275. gap/pkg/semigroups/tst/standard/attributes/isorms.tst +1147 -0
  276. gap/pkg/semigroups/tst/standard/attributes/maximal.tst +853 -0
  277. gap/pkg/semigroups/tst/standard/attributes/properties.tst +2028 -0
  278. gap/pkg/semigroups/tst/standard/attributes/semifp.tst +53 -0
  279. gap/pkg/semigroups/tst/standard/attributes/translat.tst +796 -0
  280. gap/pkg/semigroups/tst/standard/congruences/cong.tst +1044 -0
  281. gap/pkg/semigroups/tst/standard/congruences/conginv.tst +292 -0
  282. gap/pkg/semigroups/tst/standard/congruences/conglatt.tst +421 -0
  283. gap/pkg/semigroups/tst/standard/congruences/congpairs.tst +1011 -0
  284. gap/pkg/semigroups/tst/standard/congruences/congrees.tst +288 -0
  285. gap/pkg/semigroups/tst/standard/congruences/congrms.tst +701 -0
  286. gap/pkg/semigroups/tst/standard/congruences/congsemigraph.tst +422 -0
  287. gap/pkg/semigroups/tst/standard/congruences/congsimple.tst +311 -0
  288. gap/pkg/semigroups/tst/standard/congruences/conguniv.tst +259 -0
  289. gap/pkg/semigroups/tst/standard/congruences/congwordgraph.tst +330 -0
  290. gap/pkg/semigroups/tst/standard/elements/bipart.tst +783 -0
  291. gap/pkg/semigroups/tst/standard/elements/blocks.tst +166 -0
  292. gap/pkg/semigroups/tst/standard/elements/boolmat.tst +608 -0
  293. gap/pkg/semigroups/tst/standard/elements/elements.tst +117 -0
  294. gap/pkg/semigroups/tst/standard/elements/ffmat.tst +349 -0
  295. gap/pkg/semigroups/tst/standard/elements/maxplusmat.tst +613 -0
  296. gap/pkg/semigroups/tst/standard/elements/pbr.tst +506 -0
  297. gap/pkg/semigroups/tst/standard/elements/pperm.tst +32 -0
  298. gap/pkg/semigroups/tst/standard/elements/semiringmat.tst +601 -0
  299. gap/pkg/semigroups/tst/standard/elements/trans.tst +58 -0
  300. gap/pkg/semigroups/tst/standard/fp/freeband.tst +311 -0
  301. gap/pkg/semigroups/tst/standard/fp/freeinverse.tst +147 -0
  302. gap/pkg/semigroups/tst/standard/fp/tietze.tst +780 -0
  303. gap/pkg/semigroups/tst/standard/fp/word.tst +106 -0
  304. gap/pkg/semigroups/tst/standard/greens/acting-inverse.tst +545 -0
  305. gap/pkg/semigroups/tst/standard/greens/acting-regular.tst +396 -0
  306. gap/pkg/semigroups/tst/standard/greens/acting.tst +2033 -0
  307. gap/pkg/semigroups/tst/standard/greens/froidure-pin.tst +1831 -0
  308. gap/pkg/semigroups/tst/standard/greens/generic.tst +1436 -0
  309. gap/pkg/semigroups/tst/standard/ideals/acting.tst +279 -0
  310. gap/pkg/semigroups/tst/standard/ideals/froidure-pin.tst +178 -0
  311. gap/pkg/semigroups/tst/standard/ideals/ideals.tst +380 -0
  312. gap/pkg/semigroups/tst/standard/libsemigroups/cong.tst +310 -0
  313. gap/pkg/semigroups/tst/standard/libsemigroups/froidure-pin.tst +778 -0
  314. gap/pkg/semigroups/tst/standard/libsemigroups/sims1.tst +379 -0
  315. gap/pkg/semigroups/tst/standard/main/acting.tst +411 -0
  316. gap/pkg/semigroups/tst/standard/main/froidure-pin.tst +392 -0
  317. gap/pkg/semigroups/tst/standard/main/semiact.tst +203 -0
  318. gap/pkg/semigroups/tst/standard/main/setup.tst +1144 -0
  319. gap/pkg/semigroups/tst/standard/obsolete.tst +19 -0
  320. gap/pkg/semigroups/tst/standard/options.tst +54 -0
  321. gap/pkg/semigroups/tst/standard/semigroups/grpperm.tst +581 -0
  322. gap/pkg/semigroups/tst/standard/semigroups/semibipart.tst +2635 -0
  323. gap/pkg/semigroups/tst/standard/semigroups/semiboolmat.tst +1871 -0
  324. gap/pkg/semigroups/tst/standard/semigroups/semicons.tst +1173 -0
  325. gap/pkg/semigroups/tst/standard/semigroups/semidp.tst +739 -0
  326. gap/pkg/semigroups/tst/standard/semigroups/semieunit.tst +339 -0
  327. gap/pkg/semigroups/tst/standard/semigroups/semiex.tst +2055 -0
  328. gap/pkg/semigroups/tst/standard/semigroups/semiffmat.tst +746 -0
  329. gap/pkg/semigroups/tst/standard/semigroups/semifp.tst +2702 -0
  330. gap/pkg/semigroups/tst/standard/semigroups/semigraph.tst +133 -0
  331. gap/pkg/semigroups/tst/standard/semigroups/semigrp.tst +1112 -0
  332. gap/pkg/semigroups/tst/standard/semigroups/semimaxplus.tst +654 -0
  333. gap/pkg/semigroups/tst/standard/semigroups/semipbr.tst +2142 -0
  334. gap/pkg/semigroups/tst/standard/semigroups/semipperm.tst +2169 -0
  335. gap/pkg/semigroups/tst/standard/semigroups/semiquo.tst +278 -0
  336. gap/pkg/semigroups/tst/standard/semigroups/semirms.tst +3010 -0
  337. gap/pkg/semigroups/tst/standard/semigroups/semitrans.tst +2758 -0
  338. gap/pkg/semigroups/tst/standard/tools/display.tst +1040 -0
  339. gap/pkg/semigroups/tst/standard/tools/io.tst +363 -0
  340. gap/pkg/semigroups/tst/testinstall.tst +1815 -0
  341. gap/pkg/semigroups/tst/teststandard.g +22 -0
  342. gap/pkg/semigroups/tst/workspaces/load-workspace.tst +142 -0
  343. gap/pkg/semigroups/tst/workspaces/load.g +11 -0
  344. gap/pkg/semigroups/tst/workspaces/save-workspace.tst +166 -0
  345. gap/pkg/semigroups/tst/workspaces/save.g +14 -0
  346. passagemath_gap_pkg_semigroups-10.6.29.dist-info/METADATA +93 -0
  347. passagemath_gap_pkg_semigroups-10.6.29.dist-info/METADATA.bak +94 -0
  348. passagemath_gap_pkg_semigroups-10.6.29.dist-info/RECORD +356 -0
  349. passagemath_gap_pkg_semigroups-10.6.29.dist-info/WHEEL +5 -0
  350. passagemath_gap_pkg_semigroups-10.6.29.dist-info/top_level.txt +1 -0
  351. passagemath_gap_pkg_semigroups.libs/libgcc_s-0cd532bd.so.1 +0 -0
  352. passagemath_gap_pkg_semigroups.libs/libsemigroups-f0b7066b.so.2.0.0 +0 -0
  353. passagemath_gap_pkg_semigroups.libs/libstdc++-5d72f927.so.6.0.33 +0 -0
  354. sage/all__sagemath_gap_pkg_semigroups.py +1 -0
  355. sage/libs/all__sagemath_gap_pkg_semigroups.py +1 -0
  356. 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,10 @@
1
+ #
2
+ # gapbind_demo: Minimal demo of how to use gapbind14
3
+ #
4
+ # Implementations
5
+ #
6
+ InstallGlobalFunction( gapbind_demo_Example,
7
+ function()
8
+ Print( "This is a placeholder function, replace it with your own code.\n" );
9
+ end );
10
+
@@ -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,6 @@
1
+ #
2
+ # gapbind_demo: Minimal demo of how to use gapbind14
3
+ #
4
+ # Reading the implementation part of the package.
5
+ #
6
+ ReadPackage( "gapbind_demo", "gap/gapbind_demo.gi");
@@ -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_