kibi-swipl-linux-x64-gnu 1.0.0

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.
Files changed (550) hide show
  1. package/README.md +29 -0
  2. package/bin/swipl +0 -0
  3. package/bin/swipl-win +0 -0
  4. package/build-manifest.json +70 -0
  5. package/lib/cmake/swipl/SWIPLConfig.cmake +21 -0
  6. package/lib/cmake/swipl/SWIPLConfigVersion.cmake +65 -0
  7. package/lib/cmake/swipl/SWIPLTargets-release.cmake +28 -0
  8. package/lib/cmake/swipl/SWIPLTargets.cmake +109 -0
  9. package/lib/swipl/ABI +1 -0
  10. package/lib/swipl/LICENSE +41 -0
  11. package/lib/swipl/README.md +116 -0
  12. package/lib/swipl/app/README.md +25 -0
  13. package/lib/swipl/app/app.pl +87 -0
  14. package/lib/swipl/app/pack.pl +350 -0
  15. package/lib/swipl/app/qlf.pl +521 -0
  16. package/lib/swipl/app/splfr.pl +177 -0
  17. package/lib/swipl/app/sys.pl +310 -0
  18. package/lib/swipl/bin/swipl.home +1 -0
  19. package/lib/swipl/boot/apply.pl +73 -0
  20. package/lib/swipl/boot/attvar.pl +344 -0
  21. package/lib/swipl/boot/autoload.pl +1226 -0
  22. package/lib/swipl/boot/bags.pl +283 -0
  23. package/lib/swipl/boot/dcg.pl +388 -0
  24. package/lib/swipl/boot/dicts.pl +193 -0
  25. package/lib/swipl/boot/dwim.pl +485 -0
  26. package/lib/swipl/boot/engines.pl +152 -0
  27. package/lib/swipl/boot/expand.pl +1628 -0
  28. package/lib/swipl/boot/gc.pl +65 -0
  29. package/lib/swipl/boot/history.pl +304 -0
  30. package/lib/swipl/boot/init.pl +4682 -0
  31. package/lib/swipl/boot/iri.pl +64 -0
  32. package/lib/swipl/boot/license.pl +390 -0
  33. package/lib/swipl/boot/load.pl +81 -0
  34. package/lib/swipl/boot/messages.pl +2521 -0
  35. package/lib/swipl/boot/packs.pl +306 -0
  36. package/lib/swipl/boot/predopts.pl +154 -0
  37. package/lib/swipl/boot/qlf.pl +141 -0
  38. package/lib/swipl/boot/rc.pl +263 -0
  39. package/lib/swipl/boot/syspred.pl +1634 -0
  40. package/lib/swipl/boot/tabling.pl +2321 -0
  41. package/lib/swipl/boot/threads.pl +42 -0
  42. package/lib/swipl/boot/toplevel.pl +2248 -0
  43. package/lib/swipl/boot/topvars.pl +261 -0
  44. package/lib/swipl/boot.prc +0 -0
  45. package/lib/swipl/cmake/swipl.cmake +131 -0
  46. package/lib/swipl/customize/README.md +23 -0
  47. package/lib/swipl/customize/edit +101 -0
  48. package/lib/swipl/customize/init.pl +164 -0
  49. package/lib/swipl/demo/README.md +33 -0
  50. package/lib/swipl/demo/likes.pl +44 -0
  51. package/lib/swipl/doc/packages/examples/chr/bool.chr +281 -0
  52. package/lib/swipl/doc/packages/examples/chr/chrdif.chr +87 -0
  53. package/lib/swipl/doc/packages/examples/chr/chrfreeze.chr +6 -0
  54. package/lib/swipl/doc/packages/examples/chr/family.chr +116 -0
  55. package/lib/swipl/doc/packages/examples/chr/fib.chr +24 -0
  56. package/lib/swipl/doc/packages/examples/chr/fibonacci.chr +31 -0
  57. package/lib/swipl/doc/packages/examples/chr/gcd.chr +28 -0
  58. package/lib/swipl/doc/packages/examples/chr/leq.chr +34 -0
  59. package/lib/swipl/doc/packages/examples/chr/listdom.chr +138 -0
  60. package/lib/swipl/doc/packages/examples/chr/primes.chr +29 -0
  61. package/lib/swipl/doc/packages/examples/http/README.md +98 -0
  62. package/lib/swipl/doc/packages/examples/http/calc.pl +92 -0
  63. package/lib/swipl/doc/packages/examples/http/demo_body.pl +232 -0
  64. package/lib/swipl/doc/packages/examples/http/demo_client.pl +165 -0
  65. package/lib/swipl/doc/packages/examples/http/demo_daemon.pl +38 -0
  66. package/lib/swipl/doc/packages/examples/http/demo_files.pl +50 -0
  67. package/lib/swipl/doc/packages/examples/http/demo_hello.pl +15 -0
  68. package/lib/swipl/doc/packages/examples/http/demo_login.pl +280 -0
  69. package/lib/swipl/doc/packages/examples/http/demo_openid.pl +177 -0
  70. package/lib/swipl/doc/packages/examples/http/demo_pwp.pl +20 -0
  71. package/lib/swipl/doc/packages/examples/http/demo_rest.pl +56 -0
  72. package/lib/swipl/doc/packages/examples/http/demo_threads.pl +52 -0
  73. package/lib/swipl/doc/packages/examples/http/linux-init-script +126 -0
  74. package/lib/swipl/doc/packages/examples/http/pwp/context.pwp +23 -0
  75. package/lib/swipl/doc/packages/examples/http/pwp/index.pwp +25 -0
  76. package/lib/swipl/doc/packages/examples/http/pwp/pwp1.pwp +12 -0
  77. package/lib/swipl/doc/packages/examples/http/pwp/pwp2.pwp +10 -0
  78. package/lib/swipl/doc/packages/examples/http/pwp/pwp3.pwp +25 -0
  79. package/lib/swipl/doc/packages/examples/http/pwp/pwp4.pwp +23 -0
  80. package/lib/swipl/doc/packages/examples/http/pwp/pwp5.pwp +11 -0
  81. package/lib/swipl/doc/packages/examples/http/pwp/pwp6.pwp +3 -0
  82. package/lib/swipl/doc/packages/examples/http/pwp/pwp7.pwp +3 -0
  83. package/lib/swipl/doc/packages/examples/http/pwp/pwp8.pwp +3 -0
  84. package/lib/swipl/doc/packages/examples/http/pwp/pwpdb.pl +12 -0
  85. package/lib/swipl/doc/packages/examples/http/systemd-script.service +18 -0
  86. package/lib/swipl/doc/packages/examples/http/upstart-script.conf +20 -0
  87. package/lib/swipl/doc/packages/examples/plunit/read.pl +17 -0
  88. package/lib/swipl/doc/packages/examples/plunit/simple.pl +33 -0
  89. package/lib/swipl/doc/packages/examples/ssl/client.pl +83 -0
  90. package/lib/swipl/doc/packages/examples/ssl/etc/README +52 -0
  91. package/lib/swipl/doc/packages/examples/ssl/etc/client/client-cert.p12 +0 -0
  92. package/lib/swipl/doc/packages/examples/ssl/etc/client/client-cert.pem +85 -0
  93. package/lib/swipl/doc/packages/examples/ssl/etc/client/client-key.pem +30 -0
  94. package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/cacert.pem +82 -0
  95. package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/careq.pem +18 -0
  96. package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/crlnumber +1 -0
  97. package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/index.txt +3 -0
  98. package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/index.txt.attr +1 -0
  99. package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/newcerts/9DC08797A0F63F7C.pem +85 -0
  100. package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/newcerts/9DC08797A0F63F7D.pem +85 -0
  101. package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/private/cakey.pem +30 -0
  102. package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/serial +1 -0
  103. package/lib/swipl/doc/packages/examples/ssl/etc/server/server-cert.pem +85 -0
  104. package/lib/swipl/doc/packages/examples/ssl/etc/server/server-key.pem +30 -0
  105. package/lib/swipl/doc/packages/examples/ssl/https.pl +267 -0
  106. package/lib/swipl/doc/packages/examples/ssl/server.pl +106 -0
  107. package/lib/swipl/include/SWI-Prolog.h +1544 -0
  108. package/lib/swipl/include/SWI-Stream.h +537 -0
  109. package/lib/swipl/include/Yap/YapInterface.h +283 -0
  110. package/lib/swipl/include/sicstus/sicstus.h +452 -0
  111. package/lib/swipl/lib/x86_64-linux/cgi.so +0 -0
  112. package/lib/swipl/lib/x86_64-linux/crypt.so +0 -0
  113. package/lib/swipl/lib/x86_64-linux/crypto4pl.so +0 -0
  114. package/lib/swipl/lib/x86_64-linux/double_metaphone.so +0 -0
  115. package/lib/swipl/lib/x86_64-linux/files.so +0 -0
  116. package/lib/swipl/lib/x86_64-linux/hashstream.so +0 -0
  117. package/lib/swipl/lib/x86_64-linux/http_stream.so +0 -0
  118. package/lib/swipl/lib/x86_64-linux/isub.so +0 -0
  119. package/lib/swipl/lib/x86_64-linux/json.so +0 -0
  120. package/lib/swipl/lib/x86_64-linux/libswipl.so.10 +0 -0
  121. package/lib/swipl/lib/x86_64-linux/mallocinfo.so +0 -0
  122. package/lib/swipl/lib/x86_64-linux/md54pl.so +0 -0
  123. package/lib/swipl/lib/x86_64-linux/memfile.so +0 -0
  124. package/lib/swipl/lib/x86_64-linux/ntriples.so +0 -0
  125. package/lib/swipl/lib/x86_64-linux/pcre4pl.so +0 -0
  126. package/lib/swipl/lib/x86_64-linux/porter_stem.so +0 -0
  127. package/lib/swipl/lib/x86_64-linux/process.so +0 -0
  128. package/lib/swipl/lib/x86_64-linux/prolog_stream.so +0 -0
  129. package/lib/swipl/lib/x86_64-linux/rdf_db.so +0 -0
  130. package/lib/swipl/lib/x86_64-linux/readutil.so +0 -0
  131. package/lib/swipl/lib/x86_64-linux/rlimit.so +0 -0
  132. package/lib/swipl/lib/x86_64-linux/sched.so +0 -0
  133. package/lib/swipl/lib/x86_64-linux/sgml2pl.so +0 -0
  134. package/lib/swipl/lib/x86_64-linux/sha4pl.so +0 -0
  135. package/lib/swipl/lib/x86_64-linux/snowball.so +0 -0
  136. package/lib/swipl/lib/x86_64-linux/socket.so +0 -0
  137. package/lib/swipl/lib/x86_64-linux/ssl4pl.so +0 -0
  138. package/lib/swipl/lib/x86_64-linux/streaminfo.so +0 -0
  139. package/lib/swipl/lib/x86_64-linux/syslog.so +0 -0
  140. package/lib/swipl/lib/x86_64-linux/time.so +0 -0
  141. package/lib/swipl/lib/x86_64-linux/turtle.so +0 -0
  142. package/lib/swipl/lib/x86_64-linux/uid.so +0 -0
  143. package/lib/swipl/lib/x86_64-linux/unix.so +0 -0
  144. package/lib/swipl/lib/x86_64-linux/uri.so +0 -0
  145. package/lib/swipl/lib/x86_64-linux/websocket.so +0 -0
  146. package/lib/swipl/lib/x86_64-linux/zlib4pl.so +0 -0
  147. package/lib/swipl/library/INDEX.pl +1020 -0
  148. package/lib/swipl/library/aggregate.pl +755 -0
  149. package/lib/swipl/library/ansi_term.pl +653 -0
  150. package/lib/swipl/library/apply.pl +426 -0
  151. package/lib/swipl/library/apply_macros.pl +497 -0
  152. package/lib/swipl/library/arithmetic.pl +320 -0
  153. package/lib/swipl/library/assoc.pl +522 -0
  154. package/lib/swipl/library/atom.pl +169 -0
  155. package/lib/swipl/library/backcomp.pl +688 -0
  156. package/lib/swipl/library/base32.pl +291 -0
  157. package/lib/swipl/library/base64.pl +441 -0
  158. package/lib/swipl/library/broadcast.pl +161 -0
  159. package/lib/swipl/library/build/cmake.pl +137 -0
  160. package/lib/swipl/library/build/conan.pl +232 -0
  161. package/lib/swipl/library/build/make.pl +168 -0
  162. package/lib/swipl/library/build/tools.pl +825 -0
  163. package/lib/swipl/library/charsio.pl +195 -0
  164. package/lib/swipl/library/check.pl +1097 -0
  165. package/lib/swipl/library/check_installation.pl +912 -0
  166. package/lib/swipl/library/clp/INDEX.pl +157 -0
  167. package/lib/swipl/library/clp/bounds.pl +2036 -0
  168. package/lib/swipl/library/clp/clp_distinct.pl +263 -0
  169. package/lib/swipl/library/clp/clp_events.pl +92 -0
  170. package/lib/swipl/library/clp/clpb.pl +1896 -0
  171. package/lib/swipl/library/clp/clpfd.pl +7906 -0
  172. package/lib/swipl/library/clp/simplex.pl +1580 -0
  173. package/lib/swipl/library/codesio.pl +182 -0
  174. package/lib/swipl/library/coinduction.pl +183 -0
  175. package/lib/swipl/library/console_input.pl +289 -0
  176. package/lib/swipl/library/csv.pl +611 -0
  177. package/lib/swipl/library/ctypes.pl +161 -0
  178. package/lib/swipl/library/date.pl +370 -0
  179. package/lib/swipl/library/dcg/INDEX.pl +35 -0
  180. package/lib/swipl/library/dcg/basics.pl +514 -0
  181. package/lib/swipl/library/dcg/high_order.pl +227 -0
  182. package/lib/swipl/library/debug.pl +499 -0
  183. package/lib/swipl/library/dialect/bim.pl +186 -0
  184. package/lib/swipl/library/dialect/commons.pl +77 -0
  185. package/lib/swipl/library/dialect/eclipse/test_util_iso.pl +355 -0
  186. package/lib/swipl/library/dialect/hprolog/format.pl +44 -0
  187. package/lib/swipl/library/dialect/hprolog.pl +314 -0
  188. package/lib/swipl/library/dialect/ifprolog.pl +1317 -0
  189. package/lib/swipl/library/dialect/iso/iso_predicates.pl +277 -0
  190. package/lib/swipl/library/dialect/sicstus/README.TXT +1 -0
  191. package/lib/swipl/library/dialect/sicstus/arrays.pl +121 -0
  192. package/lib/swipl/library/dialect/sicstus/block.pl +278 -0
  193. package/lib/swipl/library/dialect/sicstus/lists.pl +167 -0
  194. package/lib/swipl/library/dialect/sicstus/ordsets.pl +52 -0
  195. package/lib/swipl/library/dialect/sicstus/sockets.pl +174 -0
  196. package/lib/swipl/library/dialect/sicstus/system.pl +262 -0
  197. package/lib/swipl/library/dialect/sicstus/terms.pl +57 -0
  198. package/lib/swipl/library/dialect/sicstus/timeout.pl +92 -0
  199. package/lib/swipl/library/dialect/sicstus.pl +582 -0
  200. package/lib/swipl/library/dialect/sicstus4/aggregate.pl +60 -0
  201. package/lib/swipl/library/dialect/sicstus4/between.pl +62 -0
  202. package/lib/swipl/library/dialect/sicstus4/clpfd.pl +75 -0
  203. package/lib/swipl/library/dialect/sicstus4/file_systems.pl +413 -0
  204. package/lib/swipl/library/dialect/sicstus4/lists.pl +274 -0
  205. package/lib/swipl/library/dialect/sicstus4/ordsets.pl +54 -0
  206. package/lib/swipl/library/dialect/sicstus4/samsort.pl +86 -0
  207. package/lib/swipl/library/dialect/sicstus4/sets.pl +124 -0
  208. package/lib/swipl/library/dialect/sicstus4/sockets.pl +164 -0
  209. package/lib/swipl/library/dialect/sicstus4/system.pl +80 -0
  210. package/lib/swipl/library/dialect/sicstus4/terms.pl +89 -0
  211. package/lib/swipl/library/dialect/sicstus4/timeout.pl +43 -0
  212. package/lib/swipl/library/dialect/sicstus4/types.pl +103 -0
  213. package/lib/swipl/library/dialect/sicstus4.pl +200 -0
  214. package/lib/swipl/library/dialect/swi/syspred_options.pl +250 -0
  215. package/lib/swipl/library/dialect/xsb/README.md +20 -0
  216. package/lib/swipl/library/dialect/xsb/basics.pl +318 -0
  217. package/lib/swipl/library/dialect/xsb/consult.pl +87 -0
  218. package/lib/swipl/library/dialect/xsb/curr_sym.pl +57 -0
  219. package/lib/swipl/library/dialect/xsb/error_handler.pl +111 -0
  220. package/lib/swipl/library/dialect/xsb/gensym.pl +53 -0
  221. package/lib/swipl/library/dialect/xsb/gpp.pl +138 -0
  222. package/lib/swipl/library/dialect/xsb/intern.pl +48 -0
  223. package/lib/swipl/library/dialect/xsb/lists.pl +47 -0
  224. package/lib/swipl/library/dialect/xsb/machine.pl +295 -0
  225. package/lib/swipl/library/dialect/xsb/ordsets.pl +53 -0
  226. package/lib/swipl/library/dialect/xsb/setof.pl +54 -0
  227. package/lib/swipl/library/dialect/xsb/source.pl +308 -0
  228. package/lib/swipl/library/dialect/xsb/standard.pl +169 -0
  229. package/lib/swipl/library/dialect/xsb/storage.pl +70 -0
  230. package/lib/swipl/library/dialect/xsb/string.pl +76 -0
  231. package/lib/swipl/library/dialect/xsb/thread.pl +62 -0
  232. package/lib/swipl/library/dialect/xsb/timed_call.pl +158 -0
  233. package/lib/swipl/library/dialect/xsb.pl +688 -0
  234. package/lib/swipl/library/dialect/yap/README.TXT +8 -0
  235. package/lib/swipl/library/dialect/yap.pl +283 -0
  236. package/lib/swipl/library/dialect.pl +123 -0
  237. package/lib/swipl/library/dicts.pl +399 -0
  238. package/lib/swipl/library/dif.pl +426 -0
  239. package/lib/swipl/library/edinburgh.pl +138 -0
  240. package/lib/swipl/library/edit.pl +783 -0
  241. package/lib/swipl/library/error.pl +495 -0
  242. package/lib/swipl/library/exceptions.pl +231 -0
  243. package/lib/swipl/library/explain.pl +543 -0
  244. package/lib/swipl/library/ext/RDF/INDEX.pl +25 -0
  245. package/lib/swipl/library/ext/RDF/rdf.pl +450 -0
  246. package/lib/swipl/library/ext/RDF/rdf_parser.pl +649 -0
  247. package/lib/swipl/library/ext/RDF/rdf_triple.pl +448 -0
  248. package/lib/swipl/library/ext/RDF/rdf_write.pl +701 -0
  249. package/lib/swipl/library/ext/RDF/rewrite_term.pl +177 -0
  250. package/lib/swipl/library/ext/chr/chr/a_star.pl +80 -0
  251. package/lib/swipl/library/ext/chr/chr/binomialheap.pl +142 -0
  252. package/lib/swipl/library/ext/chr/chr/builtins.pl +629 -0
  253. package/lib/swipl/library/ext/chr/chr/chr_compiler_errors.pl +179 -0
  254. package/lib/swipl/library/ext/chr/chr/chr_compiler_options.pl +382 -0
  255. package/lib/swipl/library/ext/chr/chr/chr_compiler_utility.pl +338 -0
  256. package/lib/swipl/library/ext/chr/chr/chr_debug.pl +59 -0
  257. package/lib/swipl/library/ext/chr/chr/chr_hashtable_store.pl +425 -0
  258. package/lib/swipl/library/ext/chr/chr/chr_integertable_store.pl +139 -0
  259. package/lib/swipl/library/ext/chr/chr/chr_messages.pl +176 -0
  260. package/lib/swipl/library/ext/chr/chr/chr_op.pl +53 -0
  261. package/lib/swipl/library/ext/chr/chr/chr_runtime.pl +1016 -0
  262. package/lib/swipl/library/ext/chr/chr/chr_translate.pl +25424 -0
  263. package/lib/swipl/library/ext/chr/chr/clean_code.pl +252 -0
  264. package/lib/swipl/library/ext/chr/chr/find.pl +78 -0
  265. package/lib/swipl/library/ext/chr/chr/guard_entailment.pl +19432 -0
  266. package/lib/swipl/library/ext/chr/chr/listmap.pl +108 -0
  267. package/lib/swipl/library/ext/chr/chr/pairlist.pl +78 -0
  268. package/lib/swipl/library/ext/chr/chr.pl +686 -0
  269. package/lib/swipl/library/ext/clib/INDEX.pl +158 -0
  270. package/lib/swipl/library/ext/clib/cgi.pl +86 -0
  271. package/lib/swipl/library/ext/clib/crypt.pl +44 -0
  272. package/lib/swipl/library/ext/clib/filesex.pl +644 -0
  273. package/lib/swipl/library/ext/clib/hash_stream.pl +119 -0
  274. package/lib/swipl/library/ext/clib/mallocinfo.pl +138 -0
  275. package/lib/swipl/library/ext/clib/md5.pl +68 -0
  276. package/lib/swipl/library/ext/clib/memfile.pl +61 -0
  277. package/lib/swipl/library/ext/clib/process.pl +573 -0
  278. package/lib/swipl/library/ext/clib/prolog_server.pl +157 -0
  279. package/lib/swipl/library/ext/clib/prolog_stream.pl +80 -0
  280. package/lib/swipl/library/ext/clib/rlimit.pl +54 -0
  281. package/lib/swipl/library/ext/clib/sched.pl +85 -0
  282. package/lib/swipl/library/ext/clib/sha.pl +162 -0
  283. package/lib/swipl/library/ext/clib/socket.pl +1102 -0
  284. package/lib/swipl/library/ext/clib/streaminfo.pl +103 -0
  285. package/lib/swipl/library/ext/clib/streampool.pl +136 -0
  286. package/lib/swipl/library/ext/clib/syslog.pl +180 -0
  287. package/lib/swipl/library/ext/clib/time.pl +194 -0
  288. package/lib/swipl/library/ext/clib/udp_broadcast.pl +975 -0
  289. package/lib/swipl/library/ext/clib/uid.pl +220 -0
  290. package/lib/swipl/library/ext/clib/unix.pl +317 -0
  291. package/lib/swipl/library/ext/clib/uri.pl +530 -0
  292. package/lib/swipl/library/ext/clib/uuid.pl +207 -0
  293. package/lib/swipl/library/ext/http/http/INDEX.pl +266 -0
  294. package/lib/swipl/library/ext/http/http/README.md +34 -0
  295. package/lib/swipl/library/ext/http/http/ax.pl +189 -0
  296. package/lib/swipl/library/ext/http/http/dcg_basics.pl +49 -0
  297. package/lib/swipl/library/ext/http/http/graphql.pl +1367 -0
  298. package/lib/swipl/library/ext/http/http/html_decl.pl +416 -0
  299. package/lib/swipl/library/ext/http/http/html_head.pl +654 -0
  300. package/lib/swipl/library/ext/http/http/html_quasiquotations.pl +120 -0
  301. package/lib/swipl/library/ext/http/http/html_write.pl +1425 -0
  302. package/lib/swipl/library/ext/http/http/htmx.pl +139 -0
  303. package/lib/swipl/library/ext/http/http/http_authenticate.pl +364 -0
  304. package/lib/swipl/library/ext/http/http/http_client.pl +412 -0
  305. package/lib/swipl/library/ext/http/http/http_cookie.pl +245 -0
  306. package/lib/swipl/library/ext/http/http/http_cors.pl +176 -0
  307. package/lib/swipl/library/ext/http/http/http_digest.pl +820 -0
  308. package/lib/swipl/library/ext/http/http/http_dirindex.pl +296 -0
  309. package/lib/swipl/library/ext/http/http/http_dispatch.pl +1552 -0
  310. package/lib/swipl/library/ext/http/http/http_dyn_workers.pl +214 -0
  311. package/lib/swipl/library/ext/http/http/http_error.pl +126 -0
  312. package/lib/swipl/library/ext/http/http/http_exception.pl +225 -0
  313. package/lib/swipl/library/ext/http/http/http_files.pl +163 -0
  314. package/lib/swipl/library/ext/http/http/http_header.pl +2820 -0
  315. package/lib/swipl/library/ext/http/http/http_hook.pl +106 -0
  316. package/lib/swipl/library/ext/http/http/http_host.pl +204 -0
  317. package/lib/swipl/library/ext/http/http/http_load.pl +113 -0
  318. package/lib/swipl/library/ext/http/http/http_log.pl +738 -0
  319. package/lib/swipl/library/ext/http/http/http_multipart_plugin.pl +232 -0
  320. package/lib/swipl/library/ext/http/http/http_open.pl +1821 -0
  321. package/lib/swipl/library/ext/http/http/http_openid.pl +1561 -0
  322. package/lib/swipl/library/ext/http/http/http_parameters.pl +504 -0
  323. package/lib/swipl/library/ext/http/http/http_path.pl +380 -0
  324. package/lib/swipl/library/ext/http/http/http_proxy.pl +80 -0
  325. package/lib/swipl/library/ext/http/http/http_pwp.pl +351 -0
  326. package/lib/swipl/library/ext/http/http/http_redis_plugin.pl +332 -0
  327. package/lib/swipl/library/ext/http/http/http_server.pl +105 -0
  328. package/lib/swipl/library/ext/http/http/http_server_files.pl +126 -0
  329. package/lib/swipl/library/ext/http/http/http_server_health.pl +186 -0
  330. package/lib/swipl/library/ext/http/http/http_session.pl +1040 -0
  331. package/lib/swipl/library/ext/http/http/http_sgml_plugin.pl +137 -0
  332. package/lib/swipl/library/ext/http/http/http_stream.pl +376 -0
  333. package/lib/swipl/library/ext/http/http/http_unix_daemon.pl +989 -0
  334. package/lib/swipl/library/ext/http/http/http_wrapper.pl +559 -0
  335. package/lib/swipl/library/ext/http/http/hub.pl +600 -0
  336. package/lib/swipl/library/ext/http/http/js_write.pl +461 -0
  337. package/lib/swipl/library/ext/http/http/mimepack.pl +224 -0
  338. package/lib/swipl/library/ext/http/http/mimetype.pl +276 -0
  339. package/lib/swipl/library/ext/http/http/term_html.pl +797 -0
  340. package/lib/swipl/library/ext/http/http/thread_httpd.pl +1181 -0
  341. package/lib/swipl/library/ext/http/http/web/css/dirindex.css +24 -0
  342. package/lib/swipl/library/ext/http/http/web/css/openid.css +57 -0
  343. package/lib/swipl/library/ext/http/http/web/icons/back.png +0 -0
  344. package/lib/swipl/library/ext/http/http/web/icons/c.png +0 -0
  345. package/lib/swipl/library/ext/http/http/web/icons/compressed.png +0 -0
  346. package/lib/swipl/library/ext/http/http/web/icons/folder.png +0 -0
  347. package/lib/swipl/library/ext/http/http/web/icons/generic.png +0 -0
  348. package/lib/swipl/library/ext/http/http/web/icons/layout.png +0 -0
  349. package/lib/swipl/library/ext/http/http/web/icons/openid-logo-square.png +0 -0
  350. package/lib/swipl/library/ext/http/http/web/icons/openid-logo-tiny.png +0 -0
  351. package/lib/swipl/library/ext/http/http/websocket.pl +729 -0
  352. package/lib/swipl/library/ext/http/http/yadis.pl +205 -0
  353. package/lib/swipl/library/ext/json/INDEX.pl +36 -0
  354. package/lib/swipl/library/ext/json/http/INDEX.pl +16 -0
  355. package/lib/swipl/library/ext/json/http/http_json.pl +490 -0
  356. package/lib/swipl/library/ext/json/http/js_grammar.pl +53 -0
  357. package/lib/swipl/library/ext/json/http/json.pl +48 -0
  358. package/lib/swipl/library/ext/json/http/json_convert.pl +48 -0
  359. package/lib/swipl/library/ext/json/json.pl +1215 -0
  360. package/lib/swipl/library/ext/json/json_convert.pl +681 -0
  361. package/lib/swipl/library/ext/json/json_grammar.pl +349 -0
  362. package/lib/swipl/library/ext/json/json_rpc_client.pl +423 -0
  363. package/lib/swipl/library/ext/json/json_rpc_common.pl +104 -0
  364. package/lib/swipl/library/ext/json/json_rpc_server.pl +489 -0
  365. package/lib/swipl/library/ext/json/json_schema.pl +2111 -0
  366. package/lib/swipl/library/ext/nlp/INDEX.pl +15 -0
  367. package/lib/swipl/library/ext/nlp/double_metaphone.pl +86 -0
  368. package/lib/swipl/library/ext/nlp/isub.pl +162 -0
  369. package/lib/swipl/library/ext/nlp/porter_stem.pl +50 -0
  370. package/lib/swipl/library/ext/nlp/snowball.pl +97 -0
  371. package/lib/swipl/library/ext/pcre/INDEX.pl +17 -0
  372. package/lib/swipl/library/ext/pcre/pcre.pl +974 -0
  373. package/lib/swipl/library/ext/plunit/INDEX.pl +20 -0
  374. package/lib/swipl/library/ext/plunit/plunit.pl +2631 -0
  375. package/lib/swipl/library/ext/plunit/test_wizard.pl +249 -0
  376. package/lib/swipl/library/ext/semweb/semweb/INDEX.pl +288 -0
  377. package/lib/swipl/library/ext/semweb/semweb/rdf11.pl +2106 -0
  378. package/lib/swipl/library/ext/semweb/semweb/rdf11_containers.pl +299 -0
  379. package/lib/swipl/library/ext/semweb/semweb/rdf_cache.pl +278 -0
  380. package/lib/swipl/library/ext/semweb/semweb/rdf_compare.pl +132 -0
  381. package/lib/swipl/library/ext/semweb/semweb/rdf_db.pl +3468 -0
  382. package/lib/swipl/library/ext/semweb/semweb/rdf_edit.pl +1145 -0
  383. package/lib/swipl/library/ext/semweb/semweb/rdf_http_plugin.pl +274 -0
  384. package/lib/swipl/library/ext/semweb/semweb/rdf_library.pl +1021 -0
  385. package/lib/swipl/library/ext/semweb/semweb/rdf_litindex.pl +1035 -0
  386. package/lib/swipl/library/ext/semweb/semweb/rdf_ntriples.pl +422 -0
  387. package/lib/swipl/library/ext/semweb/semweb/rdf_persistency.pl +1576 -0
  388. package/lib/swipl/library/ext/semweb/semweb/rdf_portray.pl +182 -0
  389. package/lib/swipl/library/ext/semweb/semweb/rdf_prefixes.pl +681 -0
  390. package/lib/swipl/library/ext/semweb/semweb/rdf_sandbox.pl +153 -0
  391. package/lib/swipl/library/ext/semweb/semweb/rdf_turtle.pl +54 -0
  392. package/lib/swipl/library/ext/semweb/semweb/rdf_turtle_write.pl +1587 -0
  393. package/lib/swipl/library/ext/semweb/semweb/rdf_zlib_plugin.pl +52 -0
  394. package/lib/swipl/library/ext/semweb/semweb/rdfa.pl +1510 -0
  395. package/lib/swipl/library/ext/semweb/semweb/rdfs.pl +475 -0
  396. package/lib/swipl/library/ext/semweb/semweb/sparql_client.pl +643 -0
  397. package/lib/swipl/library/ext/semweb/semweb/turtle.pl +455 -0
  398. package/lib/swipl/library/ext/sgml/DTD/HTML4.dcl +88 -0
  399. package/lib/swipl/library/ext/sgml/DTD/HTML4.dtd +1092 -0
  400. package/lib/swipl/library/ext/sgml/DTD/HTML4.soc +6 -0
  401. package/lib/swipl/library/ext/sgml/DTD/HTML5.dtd +906 -0
  402. package/lib/swipl/library/ext/sgml/DTD/HTMLlat1.ent +195 -0
  403. package/lib/swipl/library/ext/sgml/DTD/HTMLspec.ent +77 -0
  404. package/lib/swipl/library/ext/sgml/DTD/HTMLsym.ent +241 -0
  405. package/lib/swipl/library/ext/sgml/INDEX.pl +64 -0
  406. package/lib/swipl/library/ext/sgml/c14n2.pl +203 -0
  407. package/lib/swipl/library/ext/sgml/iso_639.pl +631 -0
  408. package/lib/swipl/library/ext/sgml/pwp.pl +705 -0
  409. package/lib/swipl/library/ext/sgml/sgml.pl +815 -0
  410. package/lib/swipl/library/ext/sgml/sgml_write.pl +1003 -0
  411. package/lib/swipl/library/ext/sgml/xpath.pl +620 -0
  412. package/lib/swipl/library/ext/sgml/xsdp_types.pl +232 -0
  413. package/lib/swipl/library/ext/ssl/INDEX.pl +60 -0
  414. package/lib/swipl/library/ext/ssl/crypto.pl +1015 -0
  415. package/lib/swipl/library/ext/ssl/http/INDEX.pl +5 -0
  416. package/lib/swipl/library/ext/ssl/http/http_ssl_plugin.pl +296 -0
  417. package/lib/swipl/library/ext/ssl/saml.pl +609 -0
  418. package/lib/swipl/library/ext/ssl/ssl.pl +647 -0
  419. package/lib/swipl/library/ext/ssl/xmldsig.pl +391 -0
  420. package/lib/swipl/library/ext/ssl/xmlenc.pl +354 -0
  421. package/lib/swipl/library/ext/zlib/INDEX.pl +8 -0
  422. package/lib/swipl/library/ext/zlib/zlib.pl +112 -0
  423. package/lib/swipl/library/fastrw.pl +105 -0
  424. package/lib/swipl/library/files.pl +80 -0
  425. package/lib/swipl/library/gensym.pl +111 -0
  426. package/lib/swipl/library/git.pl +1027 -0
  427. package/lib/swipl/library/hashtable.pl +365 -0
  428. package/lib/swipl/library/heaps.pl +252 -0
  429. package/lib/swipl/library/hotfix.pl +239 -0
  430. package/lib/swipl/library/http/jquery.pl +103 -0
  431. package/lib/swipl/library/http/web/js/jquery-3.6.0.min.js +2 -0
  432. package/lib/swipl/library/increval.pl +217 -0
  433. package/lib/swipl/library/intercept.pl +263 -0
  434. package/lib/swipl/library/iostream.pl +237 -0
  435. package/lib/swipl/library/iri_scheme/file.pl +70 -0
  436. package/lib/swipl/library/lazy_lists.pl +481 -0
  437. package/lib/swipl/library/listing.pl +1362 -0
  438. package/lib/swipl/library/lists.pl +860 -0
  439. package/lib/swipl/library/lynx/INDEX.pl +14 -0
  440. package/lib/swipl/library/lynx/format.pl +380 -0
  441. package/lib/swipl/library/lynx/html_style.pl +129 -0
  442. package/lib/swipl/library/lynx/html_text.pl +865 -0
  443. package/lib/swipl/library/lynx/pldoc_style.pl +87 -0
  444. package/lib/swipl/library/macros.pl +451 -0
  445. package/lib/swipl/library/main.pl +1200 -0
  446. package/lib/swipl/library/make.pl +197 -0
  447. package/lib/swipl/library/modules.pl +129 -0
  448. package/lib/swipl/library/nb_rbtrees.pl +267 -0
  449. package/lib/swipl/library/nb_set.pl +203 -0
  450. package/lib/swipl/library/obfuscate.pl +115 -0
  451. package/lib/swipl/library/occurs.pl +241 -0
  452. package/lib/swipl/library/operators.pl +182 -0
  453. package/lib/swipl/library/option.pl +388 -0
  454. package/lib/swipl/library/optparse.pl +966 -0
  455. package/lib/swipl/library/ordsets.pl +518 -0
  456. package/lib/swipl/library/oset.pl +160 -0
  457. package/lib/swipl/library/pairs.pl +187 -0
  458. package/lib/swipl/library/persistency.pl +713 -0
  459. package/lib/swipl/library/pio.pl +47 -0
  460. package/lib/swipl/library/portray_text.pl +277 -0
  461. package/lib/swipl/library/pprint.pl +940 -0
  462. package/lib/swipl/library/predicate_options.pl +975 -0
  463. package/lib/swipl/library/prolog_autoload.pl +233 -0
  464. package/lib/swipl/library/prolog_breakpoints.pl +396 -0
  465. package/lib/swipl/library/prolog_clause.pl +1104 -0
  466. package/lib/swipl/library/prolog_code.pl +416 -0
  467. package/lib/swipl/library/prolog_codewalk.pl +1248 -0
  468. package/lib/swipl/library/prolog_colour.pl +3301 -0
  469. package/lib/swipl/library/prolog_colour.qlf +0 -0
  470. package/lib/swipl/library/prolog_config.pl +154 -0
  471. package/lib/swipl/library/prolog_coverage.pl +1333 -0
  472. package/lib/swipl/library/prolog_debug.pl +404 -0
  473. package/lib/swipl/library/prolog_deps.pl +675 -0
  474. package/lib/swipl/library/prolog_evaluable.pl +234 -0
  475. package/lib/swipl/library/prolog_format.pl +219 -0
  476. package/lib/swipl/library/prolog_history.pl +161 -0
  477. package/lib/swipl/library/prolog_jiti.pl +333 -0
  478. package/lib/swipl/library/prolog_locale.pl +61 -0
  479. package/lib/swipl/library/prolog_metainference.pl +307 -0
  480. package/lib/swipl/library/prolog_pack.pl +3906 -0
  481. package/lib/swipl/library/prolog_profile.pl +346 -0
  482. package/lib/swipl/library/prolog_qlfmake.pl +533 -0
  483. package/lib/swipl/library/prolog_source.pl +1188 -0
  484. package/lib/swipl/library/prolog_stack.pl +794 -0
  485. package/lib/swipl/library/prolog_trace.pl +365 -0
  486. package/lib/swipl/library/prolog_versions.pl +347 -0
  487. package/lib/swipl/library/prolog_wrap.pl +164 -0
  488. package/lib/swipl/library/prolog_xref.pl +3090 -0
  489. package/lib/swipl/library/prolog_xref.qlf +0 -0
  490. package/lib/swipl/library/pure_input.pl +266 -0
  491. package/lib/swipl/library/qpforeign.pl +695 -0
  492. package/lib/swipl/library/qsave.pl +1516 -0
  493. package/lib/swipl/library/quasi_quotations.pl +300 -0
  494. package/lib/swipl/library/quintus.pl +437 -0
  495. package/lib/swipl/library/random.pl +459 -0
  496. package/lib/swipl/library/rbtrees.pl +1153 -0
  497. package/lib/swipl/library/readln.pl +256 -0
  498. package/lib/swipl/library/readutil.pl +304 -0
  499. package/lib/swipl/library/record.pl +544 -0
  500. package/lib/swipl/library/rwlocks.pl +172 -0
  501. package/lib/swipl/library/sandbox.pl +1384 -0
  502. package/lib/swipl/library/semweb/dc.rdfs +198 -0
  503. package/lib/swipl/library/semweb/eor.rdfs +95 -0
  504. package/lib/swipl/library/semweb/owl.owl +287 -0
  505. package/lib/swipl/library/semweb/rdf_library.ttl +90 -0
  506. package/lib/swipl/library/semweb/rdfs.rdfs +251 -0
  507. package/lib/swipl/library/settings.pl +755 -0
  508. package/lib/swipl/library/shell.pl +462 -0
  509. package/lib/swipl/library/shlib.pl +670 -0
  510. package/lib/swipl/library/solution_sequences.pl +439 -0
  511. package/lib/swipl/library/sort.pl +119 -0
  512. package/lib/swipl/library/statistics.pl +541 -0
  513. package/lib/swipl/library/streams.pl +118 -0
  514. package/lib/swipl/library/strings.pl +469 -0
  515. package/lib/swipl/library/system.pl +95 -0
  516. package/lib/swipl/library/tables.pl +381 -0
  517. package/lib/swipl/library/tableutil.pl +771 -0
  518. package/lib/swipl/library/tabling.pl +42 -0
  519. package/lib/swipl/library/terms.pl +457 -0
  520. package/lib/swipl/library/theme/auto.pl +61 -0
  521. package/lib/swipl/library/theme/dark.pl +455 -0
  522. package/lib/swipl/library/theme/light.pl +45 -0
  523. package/lib/swipl/library/thread.pl +810 -0
  524. package/lib/swipl/library/thread_pool.pl +508 -0
  525. package/lib/swipl/library/threadutil.pl +574 -0
  526. package/lib/swipl/library/tty.pl +316 -0
  527. package/lib/swipl/library/ugraphs.pl +644 -0
  528. package/lib/swipl/library/unicode/INDEX.pl +6 -0
  529. package/lib/swipl/library/unicode/blocks.pl +414 -0
  530. package/lib/swipl/library/url.pl +1129 -0
  531. package/lib/swipl/library/utf8.pl +145 -0
  532. package/lib/swipl/library/varnumbers.pl +221 -0
  533. package/lib/swipl/library/vm.pl +251 -0
  534. package/lib/swipl/library/wfs.pl +205 -0
  535. package/lib/swipl/library/when.pl +263 -0
  536. package/lib/swipl/library/writef.pl +278 -0
  537. package/lib/swipl/library/www_browser.pl +251 -0
  538. package/lib/swipl/library/yall.pl +574 -0
  539. package/lib/swipl/library/zip.pl +211 -0
  540. package/lib/swipl/swipl.home +1 -0
  541. package/lib/vendor/libcrypto.so.3 +0 -0
  542. package/lib/vendor/libpcre2-8.so.0 +0 -0
  543. package/lib/vendor/libssl.so.3 +0 -0
  544. package/lib/vendor/libz.so.1 +0 -0
  545. package/licenses/OpenSSL-LICENSE.txt +177 -0
  546. package/licenses/PCRE2-COPYING +5 -0
  547. package/licenses/README.md +12 -0
  548. package/licenses/SWI-Prolog-LICENSE +41 -0
  549. package/licenses/zlib-LICENSE +22 -0
  550. package/package.json +27 -0
@@ -0,0 +1,233 @@
1
+ /* Part of SWI-Prolog
2
+
3
+ Author: Jan Wielemaker
4
+ E-mail: J.Wielemaker@vu.nl
5
+ WWW: http://www.swi-prolog.org
6
+ Copyright (c) 2011-2020, VU University Amsterdam
7
+ CWI, Amsterdam
8
+ All rights reserved.
9
+
10
+ Redistribution and use in source and binary forms, with or without
11
+ modification, are permitted provided that the following conditions
12
+ are met:
13
+
14
+ 1. Redistributions of source code must retain the above copyright
15
+ notice, this list of conditions and the following disclaimer.
16
+
17
+ 2. Redistributions in binary form must reproduce the above copyright
18
+ notice, this list of conditions and the following disclaimer in
19
+ the documentation and/or other materials provided with the
20
+ distribution.
21
+
22
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
25
+ FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
26
+ COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
27
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
28
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
29
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
30
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
32
+ ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
33
+ POSSIBILITY OF SUCH DAMAGE.
34
+ */
35
+
36
+ :- module(prolog_autoload,
37
+ [ autoload_all/0,
38
+ autoload_all/1 % +Options
39
+ ]).
40
+ :- use_module(library(check), []). % uses :- public predicates
41
+
42
+ :- autoload(library(aggregate),[aggregate_all/3]).
43
+ :- autoload(library(error),[must_be/2,existence_error/2]).
44
+ :- autoload(library(option),[option/2,option/3]).
45
+ :- autoload(library(prolog_codewalk),[prolog_walk_code/1]).
46
+
47
+ :- predicate_options(autoload_all/1, 1,
48
+ [ verbose(boolean),
49
+ undefined(oneof([ignore,error]))
50
+ ]).
51
+
52
+ /** <module> Autoload all dependencies
53
+
54
+ The autoloader is there to smoothen program development. It liberates
55
+ the programmer from finding the library that defines some particular
56
+ predicate and including the proper use_module/1,2 directive in the
57
+ sources. This is even better at the toplevel, where just using maplist/3
58
+ is way more comfortable than first having to load library(apply). In
59
+ addition, it reduces the startup time of applications by only loading
60
+ the necessary bits.
61
+
62
+ Of course, there is also a price. One is that it becomes less obvious
63
+ from where some predicate is loaded and thus whether you have the right
64
+ definition. The second issue is that it is harder to create a
65
+ stand-alone executable because this executable, without access to the
66
+ development system, can no longer rely on autoloading.
67
+
68
+ This library provides autoload_all/0 and autoload_all/1 to autoload all
69
+ predicates that are referenced by the program. Now, this is in general
70
+ not possible in Prolog because the language allows for constructing
71
+ arbitrary goals and runtime and calling them (e.g., read(X), call(X)).
72
+
73
+ The implementation relies on code analysis of the bodies of all clauses
74
+ and all initialization goals.
75
+
76
+ As of SWI-Prolog 8.1.22 the system provides autoload/1,2 directives that
77
+ mitigate the possible ambiguity.
78
+ */
79
+
80
+ :- thread_local
81
+ autoloaded_count/1.
82
+
83
+ %! autoload_all is det.
84
+ %! autoload_all(+Options) is det.
85
+ %
86
+ % Force all necessary autoloading to be done _now_. This sets the
87
+ % Prolog flag `autoload` to `false`, resolving explicit autoloading
88
+ % and then finds all undefined references to autoloadable predicates
89
+ % and load the library files that define these predicates.
90
+ %
91
+ % Options:
92
+ %
93
+ % * verbose(+Boolean)
94
+ % If `true` (default `false`), report on the files loaded.
95
+ % * undefined(+Action)
96
+ % Action defines what happens if the analysis finds a
97
+ % definitely undefined predicate. One of `ignore` or
98
+ % `error`. Default is `ignore`.
99
+
100
+ autoload_all :-
101
+ autoload_all([]).
102
+
103
+ autoload_all(Options) :-
104
+ set_prolog_flag(autoload, false),
105
+ must_be(list, Options),
106
+ statistics(cputime, T0),
107
+ aggregate_all(count, source_file(_), OldFileCount),
108
+ call_cleanup(
109
+ autoload(0, Iterations, Options),
110
+ check:collect_undef(Undef)),
111
+ aggregate_all(count, source_file(_), NewFileCount),
112
+ statistics(cputime, T1),
113
+ Time is T1-T0,
114
+ information_level(Level, Options),
115
+ NewFiles is NewFileCount - OldFileCount,
116
+ print_message(Level, autoload(completed(Iterations, Time, NewFiles))),
117
+ report_undefined(Undef).
118
+
119
+ autoload(Iteration0, Iterations, Options) :-
120
+ statistics(cputime, T0),
121
+ autoload_step(NewFiles, NewPreds, Options),
122
+ statistics(cputime, T1),
123
+ Time is T1-T0,
124
+ succ(Iteration0, Iteration),
125
+ ( NewFiles > 0
126
+ -> information_level(Level, Options),
127
+ print_message(Level, autoload(reiterate(Iteration,
128
+ NewFiles, NewPreds, Time))),
129
+ autoload(Iteration, Iterations, Options)
130
+ ; Iterations = Iteration
131
+ ).
132
+
133
+ information_level(Level, Options) :-
134
+ ( option(verbose(true), Options)
135
+ -> Level = informational
136
+ ; Level = silent
137
+ ).
138
+
139
+ %! autoload_step(-NewFiles, -NewPreds, +Options) is det.
140
+ %
141
+ % Scan through the program and autoload all undefined referenced
142
+ % predicates.
143
+ %
144
+ % @param NewFiles is unified to the number of files loaded
145
+ % @param NewPreds is unified to the number of predicates imported
146
+ % using the autoloader.
147
+
148
+ autoload_step(NewFiles, NewPreds, Options) :-
149
+ option(verbose(Verbose), Options, false),
150
+ walk_options(Options, WalkOptions),
151
+ aggregate_all(count, source_file(_), OldFileCount),
152
+ setup_call_cleanup(
153
+ ( current_prolog_flag(autoload, OldAutoLoad),
154
+ current_prolog_flag(verbose_autoload, OldVerbose),
155
+ set_prolog_flag(autoload, true),
156
+ set_prolog_flag(verbose_autoload, Verbose),
157
+ assert_autoload_hook(Ref),
158
+ asserta(autoloaded_count(0))
159
+ ),
160
+ prolog_walk_code(WalkOptions),
161
+ ( retract(autoloaded_count(Count)),
162
+ erase(Ref),
163
+ set_prolog_flag(autoload, OldAutoLoad),
164
+ set_prolog_flag(verbose_autoload, OldVerbose)
165
+ )),
166
+ aggregate_all(count, source_file(_), NewFileCount),
167
+ NewPreds = Count,
168
+ NewFiles is NewFileCount - OldFileCount.
169
+
170
+ assert_autoload_hook(Ref) :-
171
+ asserta((user:message_hook(autoload(Module:Name/Arity, Library), _, _) :-
172
+ autoloaded(Module:Name/Arity, Library)), Ref).
173
+
174
+ :- public
175
+ autoloaded/2.
176
+
177
+ autoloaded(_, _) :-
178
+ retract(autoloaded_count(N)),
179
+ succ(N, N2),
180
+ asserta(autoloaded_count(N2)),
181
+ fail. % proceed with other hooks
182
+
183
+ %! walk_options(+AutoloadOptions, -WalkOptions) is det.
184
+ %
185
+ % Construct the option list for the code walker. If we see an
186
+ % undefined predicate, we must collect these rather than printing them
187
+ % or immediately terminating with an exception. This reuses code from
188
+ % library(check).
189
+
190
+ walk_options([], []).
191
+ walk_options([verbose(V)|T0], [verbose(V)|T]) :-
192
+ !,
193
+ walk_options(T0, T).
194
+ walk_options([undefined(error)|T0],
195
+ [ undefined(trace),
196
+ on_trace(check:found_undef)
197
+ | T
198
+ ]) :-
199
+ !,
200
+ walk_options(T0, T).
201
+ walk_options([_|T0], T) :-
202
+ walk_options(T0, T).
203
+
204
+
205
+ %! report_undefined(+Undefined) is det.
206
+ %
207
+ %
208
+
209
+ report_undefined([]) :-
210
+ !.
211
+ report_undefined(Grouped) :-
212
+ existence_error(procedures, Grouped).
213
+
214
+
215
+ /*******************************
216
+ * MESSAGES *
217
+ *******************************/
218
+
219
+ :- multifile
220
+ prolog:message//1,
221
+ prolog:error_message//1.
222
+
223
+ prolog:message(autoload(reiterate(Iteration, NewFiles, NewPreds, Time))) -->
224
+ [ 'Autoloader: iteration ~D resolved ~D predicates \c
225
+ and loaded ~D files in ~3f seconds. Restarting ...'-
226
+ [Iteration, NewPreds, NewFiles, Time]
227
+ ].
228
+ prolog:message(autoload(completed(Iterations, Time, NewFiles))) -->
229
+ [ 'Autoloader: loaded ~D files in ~D iterations in ~3f seconds'-
230
+ [NewFiles, Iterations, Time] ].
231
+
232
+ prolog:error_message(existence_error(procedures, Grouped)) -->
233
+ prolog:message(check(undefined_procedures, Grouped)).
@@ -0,0 +1,396 @@
1
+ /* Part of SWI-Prolog
2
+
3
+ Author: Jan Wielemaker and Anjo Anjewierden
4
+ E-mail: J.Wielemaker@vu.nl
5
+ WWW: http://www.swi-prolog.org/
6
+ Copyright (c) 2011-2022, University of Amsterdam
7
+ VU University Amsterdam
8
+ CWI, Amsterdam
9
+ SWI-Prolog Solutions b.v.
10
+ All rights reserved.
11
+
12
+ Redistribution and use in source and binary forms, with or without
13
+ modification, are permitted provided that the following conditions
14
+ are met:
15
+
16
+ 1. Redistributions of source code must retain the above copyright
17
+ notice, this list of conditions and the following disclaimer.
18
+
19
+ 2. Redistributions in binary form must reproduce the above copyright
20
+ notice, this list of conditions and the following disclaimer in
21
+ the documentation and/or other materials provided with the
22
+ distribution.
23
+
24
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
25
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
26
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
27
+ FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
28
+ COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
29
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
30
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
31
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
32
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
33
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
34
+ ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
35
+ POSSIBILITY OF SUCH DAMAGE.
36
+ */
37
+
38
+ :- module(prolog_breakpoints,
39
+ [ set_breakpoint/4, % +File, +Line, +CharPos, -Id
40
+ set_breakpoint/5, % +Owner, +File, +Line, +CharPos, -Id
41
+ set_breakpoint_condition/2, % +Id, +Cond
42
+ delete_breakpoint/1, % +Id
43
+ breakpoint_property/2 % ?Id, ?Property
44
+ ]).
45
+ :- use_module(library(debug), [debug/3]).
46
+ :- autoload(library(error), [existence_error/2]).
47
+ :- autoload(library(lists), [nth1/3, member/2]).
48
+ :- autoload(library(prolog_clause), [clause_info/4, clause_name/2]).
49
+ :- autoload(library(apply), [maplist/2]).
50
+ :- autoload(library(broadcast), [broadcast/1]).
51
+
52
+
53
+ /** <module> Manage Prolog break-points
54
+
55
+ This module provides an interface for development tools to set and
56
+ delete break-points, giving a location in the source. Development tools
57
+ that want to track changes to breakpoints must use listen/2 on the
58
+ messages below. See library(broadcast).
59
+
60
+ * prolog(breakpoint(set, Id))
61
+ * prolog(breakpoint(delete, Id))
62
+ */
63
+
64
+ %! set_breakpoint(+File, +Line, +Char, -Id) is det.
65
+ %! set_breakpoint(+Owner, +File, +Line, +Char, -Id) is det.
66
+ %
67
+ % Put a breakpoint at the indicated source-location. File is a current
68
+ % sourcefile (as reported by source_file/1). Line is the 1-based line
69
+ % in which Char is. Char is the position of the break.
70
+ %
71
+ % First, '$clause_from_source'/4 uses the SWI-Prolog clause-source
72
+ % information to find the last clause starting before Line.
73
+ % '$break_pc' generates (on backtracking), a list of possible
74
+ % breakpoints.
75
+ %
76
+ % Note that in addition to setting the breakpoint, the system must be
77
+ % in debug mode for the breakpoint to take effect. With threading
78
+ % enabled, there are various different ways this may be done. See
79
+ % debug/0, tdebug/0 and tdebug/1. Therefore, this predicate does *not*
80
+ % enable debug mode.
81
+ %
82
+ % @arg Owner denotes the file that _owns_ the clause. set_breakpoint/5
83
+ % is used to set breakpoints in an included file in the context of the
84
+ % Owner main file. See source_file_property/2.
85
+
86
+ set_breakpoint(File, Line, Char, Id) :-
87
+ set_breakpoint(File, File, Line, Char, Id).
88
+ set_breakpoint(Owner, File, Line, Char, Id) :-
89
+ debug(break, 'break_at(~q, ~d, ~d).', [File, Line, Char]),
90
+ '$clause_from_source'(Owner, File, Line, ClauseRefs),
91
+ member(ClauseRef, ClauseRefs),
92
+ clause_info(ClauseRef, InfoFile, TermPos, _NameOffset),
93
+ ( InfoFile == File
94
+ -> '$break_pc'(ClauseRef, PC, NextPC),
95
+ debug(break, 'Clause ~p, PC=~p NextPC=~p', [ClauseRef, PC, NextPC]),
96
+ '$clause_term_position'(ClauseRef, NextPC, List),
97
+ debug(break, 'Location = ~w', [List]),
98
+ range(List, TermPos, SubPos),
99
+ arg(1, SubPos, A),
100
+ arg(2, SubPos, Z),
101
+ debug(break, 'Term from ~w-~w', [A, Z]),
102
+ Z >= Char, !,
103
+ Len is Z - A,
104
+ b_setval('$breakpoint', file_location(File, Line, A, Len))
105
+ ; print_message(warning, breakpoint(no_source(ClauseRef, File, Line))),
106
+ '$break_pc'(ClauseRef, PC, _), !,
107
+ nb_delete('$breakpoint')
108
+ ),
109
+ debug(break, 'Break at clause ~w, PC=~w', [ClauseRef, PC]),
110
+ '$break_at'(ClauseRef, PC, true),
111
+ nb_delete('$breakpoint'),
112
+ known_breakpoint(ClauseRef, PC, _Location, Id).
113
+
114
+ range(_, Pos, _), var(Pos) =>
115
+ fail.
116
+ range(List, parentheses_term_position(_,_,Pos), SubPos) =>
117
+ range(List, Pos, SubPos).
118
+ range([], Pos, SubPos) =>
119
+ SubPos = Pos.
120
+ range([H|T], term_position(_, _, _, _, PosL), SubPos) =>
121
+ nth1(H, PosL, Pos),
122
+ range(T, Pos, SubPos).
123
+ range(exit, Pos, SubPos) =>
124
+ arg(2, Pos, End),
125
+ Dot is End,
126
+ EndDot is Dot+1,
127
+ SubPos = Dot-EndDot.
128
+
129
+ :- dynamic
130
+ known_breakpoint/4, % ClauseRef, PC, Location, Id
131
+ breakpoint_condition/4, % Id, CondString, CondTerm, VarOffsets
132
+ break_id/1.
133
+
134
+ next_break_id(Id) :-
135
+ retract(break_id(Id0)),
136
+ !,
137
+ Id is Id0+1,
138
+ asserta(break_id(Id)).
139
+ next_break_id(1) :-
140
+ asserta(break_id(1)).
141
+
142
+ %! delete_breakpoint(+Id) is det.
143
+ %
144
+ % Delete breakpoint with given Id. If successful,
145
+ % print_message(breakpoint(delete, Id)) is called. Message hooks
146
+ % working on this message may still call breakpoint_property/2.
147
+ %
148
+ % @error existence_error(breakpoint, Id).
149
+
150
+ delete_breakpoint(Id) :-
151
+ integer(Id),
152
+ known_breakpoint(ClauseRef, PC, _Location, Id),
153
+ !,
154
+ '$break_at'(ClauseRef, PC, false).
155
+ delete_breakpoint(Id) :-
156
+ existence_error(breakpoint, Id).
157
+
158
+ %! breakpoint_property(?Id, ?Property) is nondet.
159
+ %
160
+ % True when Property is a property of the breakpoint Id. Defined
161
+ % properties are:
162
+ %
163
+ % * file(File)
164
+ % Provided if the breakpoint is in a clause associated to a
165
+ % file. May not be known.
166
+ % * line_count(Line)
167
+ % Line of the breakpoint. May not be known.
168
+ % * character_range(Start, Len)
169
+ % One-based character offset of the break-point. May not be
170
+ % known.
171
+ % * clause(Reference)
172
+ % Reference of the clause in which the breakpoint resides.
173
+
174
+ breakpoint_property(Id, file(File)) :-
175
+ known_breakpoint(ClauseRef,_,_,Id),
176
+ clause_property(ClauseRef, file(File)).
177
+ breakpoint_property(Id, line_count(Line)) :-
178
+ known_breakpoint(_,_,Location,Id),
179
+ location_line(Location, Line).
180
+ breakpoint_property(Id, character_range(Start, Len)) :-
181
+ known_breakpoint(ClauseRef,PC,Location,Id),
182
+ ( Location = file_location(_File, _Line, Start, Len)
183
+ -> true
184
+ ; break_location(ClauseRef, PC, _File, SubPos),
185
+ compound(SubPos),
186
+ arg(1, SubPos, Start),
187
+ arg(2, Start, End),
188
+ nonvar(Start), nonvar(End),
189
+ Len is End+1-Start
190
+ ).
191
+ breakpoint_property(Id, clause(Reference)) :-
192
+ known_breakpoint(Reference,_,_,Id).
193
+ breakpoint_property(Id, condition(Cond)) :-
194
+ known_breakpoint(_,_,_,Id),
195
+ breakpoint_condition(Id, Cond, _CondTerm, _VarOffsets).
196
+
197
+ location_line(file_location(_File, Line, _Start, _Len), Line).
198
+ location_line(file_character_range(File, Start, _Len), Line) :-
199
+ file_line(File, Start, Line).
200
+ location_line(file_line(_File, Line), Line).
201
+
202
+
203
+ %! file_line(+File, +StartIndex, -Line) is det.
204
+ %
205
+ % True when Line is the 1-based line offset in which we find
206
+ % character StartIndex.
207
+
208
+ file_line(File, Start, Line) :-
209
+ setup_call_cleanup(
210
+ prolog_clause:try_open_source(File, In),
211
+ stream_line(In, Start, 1, Line),
212
+ close(In)).
213
+
214
+ stream_line(In, _, Line0, Line) :-
215
+ at_end_of_stream(In),
216
+ !,
217
+ Line = Line0.
218
+ stream_line(In, Index, Line0, Line) :-
219
+ skip(In, 0'\n),
220
+ character_count(In, At),
221
+ ( At > Index
222
+ -> Line = Line0
223
+ ; Line1 is Line0+1,
224
+ stream_line(In, Index, Line1, Line)
225
+ ).
226
+
227
+
228
+ /*******************************
229
+ * FEEDBACK *
230
+ *******************************/
231
+
232
+ :- initialization
233
+ prolog_unlisten(break, onbreak),
234
+ prolog_listen(break, onbreak).
235
+
236
+ onbreak(exist, ClauseRef, PC) :-
237
+ known_breakpoint(ClauseRef, PC, _Location, Id),
238
+ !,
239
+ break_message(breakpoint(exist, Id)).
240
+ onbreak(true, ClauseRef, PC) :-
241
+ !,
242
+ debug(break, 'Trap in Clause ~p, PC ~d', [ClauseRef, PC]),
243
+ with_mutex('$break', next_break_id(Id)),
244
+ ( nb_current('$breakpoint', Location)
245
+ -> true
246
+ ; break_location(ClauseRef, PC, File, A-Z)
247
+ -> Len is Z+1-A,
248
+ Location = file_character_range(File, A, Len)
249
+ ; clause_property(ClauseRef, file(File)),
250
+ clause_property(ClauseRef, line_count(Line))
251
+ -> Location = file_line(File, Line)
252
+ ; Location = unknown
253
+ ),
254
+ asserta(known_breakpoint(ClauseRef, PC, Location, Id)),
255
+ break_message(breakpoint(set, Id)).
256
+ onbreak(false, ClauseRef, PC) :-
257
+ debug(break, 'Remove breakpoint from ~p, PC ~d', [ClauseRef, PC]),
258
+ delete_breakpoint(ClauseRef, PC).
259
+ onbreak(retract, ClauseRef, PC) :-
260
+ debug(break, 'Remove breakpoint from ~p, PC ~d (due to retract)',
261
+ [ClauseRef, PC]),
262
+ delete_breakpoint(ClauseRef, PC).
263
+
264
+ delete_breakpoint(ClauseRef, PC) :-
265
+ clause(known_breakpoint(ClauseRef, PC, _Location, Id), true, Ref),
266
+ retractall(breakpoint_condition(Id, _, _, _)),
267
+ call_cleanup(break_message(breakpoint(delete, Id)), erase(Ref)).
268
+
269
+ break_message(Message) :-
270
+ broadcast(prolog(Message)),
271
+ print_message(informational, Message).
272
+
273
+ %! break_location(+ClauseRef, +PC, -File, -Pos) is det.
274
+ %
275
+ % True when File and Pos represent the file and subterm position term
276
+ % for the goal called at PC in ClauseRef.
277
+ %
278
+ % @arg Pos is a subterm position term (see `subterm_positions` option
279
+ % of read_term/3, where positions are character positions in File. The
280
+ % first two argument always hold the start and end of the term.
281
+
282
+ break_location(ClauseRef, PC, File, SubPos) :-
283
+ clause_info(ClauseRef, File, TermPos, _NameOffset),
284
+ '$fetch_vm'(ClauseRef, PC, NPC, _VMI),
285
+ '$clause_term_position'(ClauseRef, NPC, List),
286
+ debug(break, 'ClausePos = ~w', [List]),
287
+ range(List, TermPos, SubPos),
288
+ debug(break, 'Subgoal at: ~p', [SubPos]).
289
+
290
+
291
+ /*******************************
292
+ * MESSAGES *
293
+ *******************************/
294
+
295
+ :- multifile
296
+ prolog:message/3.
297
+
298
+ prolog:message(breakpoint(no_source(ClauseRef, _File, Line))) -->
299
+ [ 'Failed to find line ~d in body of clause ~p. Breaking at start of body.'-
300
+ [Line, ClauseRef]
301
+ ].
302
+ prolog:message(breakpoint_condition_error(Id, Error)) -->
303
+ [ 'Exception while evaluating breakpoint ~p condition:'-[Id], nl,
304
+ prolog:translate_message(Error)
305
+ ].
306
+ prolog:message(breakpoint(SetClear, Id)) -->
307
+ setclear(SetClear),
308
+ breakpoint(Id).
309
+
310
+ setclear(set) -->
311
+ ['Breakpoint '].
312
+ setclear(exist) -->
313
+ ['Existing breakpoint '].
314
+ setclear(delete) -->
315
+ ['Deleted breakpoint '].
316
+
317
+ breakpoint(Id) -->
318
+ breakpoint_name(Id),
319
+ ( { breakpoint_property(Id, file(File)),
320
+ breakpoint_property(Id, line_count(Line))
321
+ }
322
+ -> [ ' at ', url(File:Line) ]
323
+ ; []
324
+ ).
325
+
326
+ breakpoint_name(Id) -->
327
+ { breakpoint_property(Id, clause(ClauseRef)) },
328
+ ( { clause_property(ClauseRef, erased) }
329
+ -> ['~w'-[Id]]
330
+ ; { clause_name(ClauseRef, Name) },
331
+ ['~w in ~w'-[Id, Name]]
332
+ ).
333
+
334
+
335
+ /*******************************
336
+ * CONDITIONAL BREAKPOINTS *
337
+ *******************************/
338
+
339
+ %! set_breakpoint_condition(+Id, +Cond) is det.
340
+ %
341
+ % Set a condition for of the breakpoint with given Id. The condition
342
+ % Cond is a string that represents a Prolog goal to be invoked
343
+ % whenever the breakpoint is reached, if goal fails the breakpoint is
344
+ % skipped and execution commences normally.
345
+ %
346
+ % Variables in Cond that match by name to variables in the source
347
+ % definition of the clause in which the breakpoint is located are
348
+ % unified with the corresponding runtime value of the clause variables
349
+ % in the current execution frame, before evaluating the condition
350
+ % goal.
351
+ %
352
+ % @error existence_error(breakpoint, Id).
353
+
354
+ set_breakpoint_condition(Id, Cond) :-
355
+ known_breakpoint(ClauseRef, _PC, _Location, Id),
356
+ !,
357
+ term_string(CondGoal, Cond, [variable_names(Bindings)]),
358
+ clause_info(ClauseRef, _InfoFile, _TermPos, NameOffset),
359
+ clause_property(ClauseRef, module(Module)),
360
+ names_offsets(Bindings, NameOffset, FrameOffsetsCondVars),
361
+ retractall(breakpoint_condition(Id, _, _, _)),
362
+ asserta(breakpoint_condition(Id, Cond, Module:CondGoal, FrameOffsetsCondVars)).
363
+ set_breakpoint_condition(Id, _Cond) :-
364
+ existence_error(breakpoint, Id).
365
+
366
+ :- multifile prolog:break_hook/7.
367
+
368
+ prolog:break_hook(Clause, PC, Frame, _Choice, _Goal, true, Action) :-
369
+ known_breakpoint(Clause, PC, _, Id),
370
+ ( breakpoint_condition(Id, _CondString, CondGoal, FrameOffsetsCondVars)
371
+ -> check_breakpoint_condition(Id, Frame, CondGoal,
372
+ FrameOffsetsCondVars, Action)
373
+ ; Action = trace
374
+ ).
375
+
376
+ check_breakpoint_condition(Id, Frame, CondGoal, FrameOffsetsCondVars, Action) :-
377
+ maplist(unify_with_frame_variable(Frame), FrameOffsetsCondVars),
378
+ ( catch(CondGoal,
379
+ Error,
380
+ print_message(warning,
381
+ breakpoint_condition_error(Id, Error)))
382
+ -> Action = trace
383
+ ; Action = continue
384
+ ).
385
+
386
+ unify_with_frame_variable(Frame, Offset-Var) :-
387
+ prolog_frame_attribute(Frame, argument(Offset), Var).
388
+
389
+
390
+ names_offsets([Name=Var|T], NameOffset, OffsetsVars) :-
391
+ ( arg(Offset, NameOffset, Name)
392
+ -> OffsetsVars = [Offset-Var|R],
393
+ names_offsets(T, NameOffset, R)
394
+ ; names_offsets(T, NameOffset, OffsetsVars)
395
+ ).
396
+ names_offsets([], _, []).