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,145 @@
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) 2006-2011, University of Amsterdam
7
+ All rights reserved.
8
+
9
+ Redistribution and use in source and binary forms, with or without
10
+ modification, are permitted provided that the following conditions
11
+ are met:
12
+
13
+ 1. Redistributions of source code must retain the above copyright
14
+ notice, this list of conditions and the following disclaimer.
15
+
16
+ 2. Redistributions in binary form must reproduce the above copyright
17
+ notice, this list of conditions and the following disclaimer in
18
+ the documentation and/or other materials provided with the
19
+ distribution.
20
+
21
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
24
+ FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
25
+ COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
26
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
27
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
28
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
29
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
31
+ ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32
+ POSSIBILITY OF SUCH DAMAGE.
33
+ */
34
+
35
+ :- module(utf8,
36
+ [ utf8_codes//1 % ?String
37
+ ]).
38
+
39
+ /** <module> UTF-8 encoding/decoding on lists of character codes.
40
+ */
41
+
42
+ %! utf8_codes(?Codes)// is det.
43
+ %
44
+ % DCG translating between a Unicode code-list and its UTF-8
45
+ % encoded byte-string. The DCG works two ways. Encoding a
46
+ % code-list to a UTF-8 byte string is achieved using
47
+ %
48
+ % phrase(utf8_codes(Codes), UTF8)
49
+ %
50
+ % The algorithm is a close copy of the C-algorithm used
51
+ % internally and defined in src/pl-utf8.c
52
+ %
53
+ % NOTE: in many cases you can avoid this library and leave
54
+ % encoding and decoding to I/O streams. If only part of the data
55
+ % is to be encoded the encoding of a stream can be switched
56
+ % temporary using set_stream(Stream, encoding(utf8))
57
+ %
58
+ % @see set_stream/2.
59
+
60
+ utf8_codes([H|T]) -->
61
+ utf8_code(H),
62
+ !,
63
+ utf8_codes(T).
64
+ utf8_codes([]) -->
65
+ [].
66
+
67
+ utf8_code(C) -->
68
+ [C0],
69
+ { nonvar(C0) }, % decoding version
70
+ !,
71
+ ( {C0 < 0x80}
72
+ -> {C = C0}
73
+ ; {C0/\0xe0 =:= 0xc0}
74
+ -> utf8_cont(C1, 0),
75
+ {C is (C0/\0x1f)<<6\/C1}
76
+ ; {C0/\0xf0 =:= 0xe0}
77
+ -> utf8_cont(C1, 6),
78
+ utf8_cont(C2, 0),
79
+ {C is ((C0/\0xf)<<12)\/C1\/C2}
80
+ ; {C0/\0xf8 =:= 0xf0}
81
+ -> utf8_cont(C1, 12),
82
+ utf8_cont(C2, 6),
83
+ utf8_cont(C3, 0),
84
+ {C is ((C0/\0x7)<<18)\/C1\/C2\/C3}
85
+ ; {C0/\0xfc =:= 0xf8}
86
+ -> utf8_cont(C1, 18),
87
+ utf8_cont(C2, 12),
88
+ utf8_cont(C3, 6),
89
+ utf8_cont(C4, 0),
90
+ {C is ((C0/\0x3)<<24)\/C1\/C2\/C3\/C4}
91
+ ; {C0/\0xfe =:= 0xfc}
92
+ -> utf8_cont(C1, 24),
93
+ utf8_cont(C2, 18),
94
+ utf8_cont(C3, 12),
95
+ utf8_cont(C4, 6),
96
+ utf8_cont(C5, 0),
97
+ {C is ((C0/\0x1)<<30)\/C1\/C2\/C3\/C4\/C5}
98
+ ).
99
+ utf8_code(C) -->
100
+ { nonvar(C) }, % encoding version
101
+ !,
102
+ ( { C < 0x80 }
103
+ -> [C]
104
+ ; { C < 0x800 }
105
+ -> { C0 is 0xc0\/((C>>6)/\0x1f),
106
+ C1 is 0x80\/(C/\0x3f)
107
+ },
108
+ [C0,C1]
109
+ ; { C < 0x10000 }
110
+ -> { C0 is 0xe0\/((C>>12)/\0x0f),
111
+ C1 is 0x80\/((C>>6)/\0x3f),
112
+ C2 is 0x80\/(C/\0x3f)
113
+ },
114
+ [C0,C1,C2]
115
+ ; { C < 0x200000 }
116
+ -> { C0 is 0xf0\/((C>>18)/\0x07),
117
+ C1 is 0x80\/((C>>12)/\0x3f),
118
+ C2 is 0x80\/((C>>6)/\0x3f),
119
+ C3 is 0x80\/(C/\0x3f)
120
+ },
121
+ [C0,C1,C2,C3]
122
+ ; { C < 0x4000000 }
123
+ -> { C0 is 0xf8\/((C>>24)/\0x03),
124
+ C1 is 0x80\/((C>>18)/\0x3f),
125
+ C2 is 0x80\/((C>>12)/\0x3f),
126
+ C3 is 0x80\/((C>>6)/\0x3f),
127
+ C4 is 0x80\/(C/\0x3f)
128
+ },
129
+ [C0,C1,C2,C3,C4]
130
+ ; { C < 0x80000000 }
131
+ -> { C0 is 0xfc\/((C>>30)/\0x01),
132
+ C1 is 0x80\/((C>>24)/\0x3f),
133
+ C2 is 0x80\/((C>>18)/\0x3f),
134
+ C3 is 0x80\/((C>>12)/\0x3f),
135
+ C4 is 0x80\/((C>>6)/\0x3f),
136
+ C5 is 0x80\/(C/\0x3f)
137
+ },
138
+ [C0,C1,C2,C3,C4,C5]
139
+ ).
140
+
141
+ utf8_cont(Val, Shift) -->
142
+ [C],
143
+ { C/\0xc0 =:= 0x80,
144
+ Val is (C/\0x3f)<<Shift
145
+ }.
@@ -0,0 +1,221 @@
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-2016, VU University Amsterdam
7
+ All rights reserved.
8
+
9
+ Redistribution and use in source and binary forms, with or without
10
+ modification, are permitted provided that the following conditions
11
+ are met:
12
+
13
+ 1. Redistributions of source code must retain the above copyright
14
+ notice, this list of conditions and the following disclaimer.
15
+
16
+ 2. Redistributions in binary form must reproduce the above copyright
17
+ notice, this list of conditions and the following disclaimer in
18
+ the documentation and/or other materials provided with the
19
+ distribution.
20
+
21
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
24
+ FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
25
+ COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
26
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
27
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
28
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
29
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
31
+ ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32
+ POSSIBILITY OF SUCH DAMAGE.
33
+ */
34
+
35
+ :- module(varnumbers,
36
+ [ numbervars/1, % +Term
37
+ varnumbers/2, % +Term, -Copy
38
+ max_var_number/3, % +Term, +Start, -Max
39
+ varnumbers/3, % +Term, +No, -Copy
40
+ varnumbers_names/3 % +Term, -Copy, -VariableNames
41
+ ]).
42
+ :- autoload(library(apply),[maplist/3]).
43
+ :- autoload(library(assoc),
44
+ [empty_assoc/1,assoc_to_list/2,get_assoc/3,put_assoc/4]).
45
+ :- autoload(library(error),[must_be/2]).
46
+
47
+
48
+ /** <module> Utilities for numbered terms
49
+
50
+ This library provides the inverse functionality of the built-in
51
+ numbervars/3. Note that this library suffers from the known issues that
52
+ '$VAR'(X) is a normal Prolog term and, -unlike the built-in numbervars-,
53
+ the inverse predicates do _not_ process cyclic terms. The following
54
+ predicate is true for any acyclic term that contains no '$VAR'(X),
55
+ integer(X) terms and no constraint variables:
56
+
57
+ ==
58
+ always_true(X) :-
59
+ copy_term(X, X2),
60
+ numbervars(X),
61
+ varnumbers(X, Copy),
62
+ Copy =@= X2.
63
+ ==
64
+
65
+ @see numbervars/4, =@=/2 (variant/2).
66
+ @compat This library was introduced by Quintus and available in
67
+ many related implementations, although not with exactly the
68
+ same set of predicates.
69
+ */
70
+
71
+ %! numbervars(+Term) is det.
72
+ %
73
+ % Number variables in Term using $VAR(N). Equivalent to
74
+ % numbervars(Term, 0, _).
75
+ %
76
+ % @see numbervars/3, numbervars/4
77
+
78
+ numbervars(Term) :-
79
+ numbervars(Term, 0, _).
80
+
81
+ %! varnumbers(+Term, -Copy) is det.
82
+ %
83
+ % Inverse of numbervars/1. Equivalent to varnumbers(Term, 0,
84
+ % Copy).
85
+
86
+ varnumbers(Term, Copy) :-
87
+ varnumbers(Term, 0, Copy).
88
+
89
+ %! varnumbers(+Term, +Start, -Copy) is det.
90
+ %
91
+ % Inverse of numbervars/3. True when Copy is a copy of Term with
92
+ % all variables numbered >= Start consistently replaced by fresh
93
+ % variables. Variables in Term are _shared_ with Copy rather than
94
+ % replaced by fresh variables.
95
+ %
96
+ % @error domain_error(acyclic_term, Term) if Term is cyclic.
97
+ % @compat Quintus, SICStus. Not in YAP version of this library
98
+
99
+ varnumbers(Term, Min, Copy) :-
100
+ must_be(acyclic, Term),
101
+ MaxStart is Min-1,
102
+ max_var_number(Term, MaxStart, Max),
103
+ NVars is Max-MaxStart,
104
+ ( NVars == 0
105
+ -> Copy = Term
106
+ ; roundup_next_power_two(NVars, Len),
107
+ functor(Vars, v, Len),
108
+ varnumbers(Term, MaxStart, Vars, Copy)
109
+ ).
110
+
111
+ varnumbers(Var, _, _, Copy) :-
112
+ var(Var),
113
+ !,
114
+ Copy = Var.
115
+ varnumbers(Var, _, _, Copy) :-
116
+ atomic(Var),
117
+ !,
118
+ Copy = Var.
119
+ varnumbers('$VAR'(I), Min, Vars, Copy) :-
120
+ integer(I),
121
+ I > Min,
122
+ !,
123
+ Index is I-Min,
124
+ arg(Index, Vars, Copy).
125
+ varnumbers(Term, Min, Vars, Copy) :-
126
+ functor(Term, Name, Arity),
127
+ functor(Copy, Name, Arity),
128
+ varnumbers_args(1, Arity, Term, Min, Vars, Copy).
129
+
130
+ varnumbers_args(I, Arity, Term, Min, Vars, Copy) :-
131
+ I =< Arity,
132
+ !,
133
+ arg(I, Term, AT),
134
+ arg(I, Copy, CT),
135
+ varnumbers(AT, Min, Vars, CT),
136
+ I2 is I + 1,
137
+ varnumbers_args(I2, Arity, Term, Min, Vars, Copy).
138
+ varnumbers_args(_, _, _, _, _, _).
139
+
140
+ %! roundup_next_power_two(+Int, -NextPower) is det.
141
+ %
142
+ % NextPower is I**2, such that NextPower >= Int.
143
+
144
+ roundup_next_power_two(1, 1) :- !.
145
+ roundup_next_power_two(N, L) :-
146
+ L is 1<<(msb(N-1)+1).
147
+
148
+ %! max_var_number(+Term, +Start, -Max) is det.
149
+ %
150
+ % True when Max is the max of Start and the highest numbered
151
+ % $VAR(N) term.
152
+ %
153
+ % @author Vitor Santos Costa
154
+ % @compat YAP
155
+
156
+ max_var_number(V, Max, Max) :-
157
+ var(V),
158
+ !.
159
+ max_var_number('$VAR'(I), Max0, Max) :-
160
+ integer(I),
161
+ !,
162
+ Max is max(I,Max0).
163
+ max_var_number(S, Max0, Max) :-
164
+ functor(S, _, Ar),
165
+ max_var_numberl(Ar, S, Max0, Max).
166
+
167
+ max_var_numberl(0, _, Max, Max) :- !.
168
+ max_var_numberl(I, T, Max0, Max) :-
169
+ arg(I, T, Arg),
170
+ I2 is I-1,
171
+ max_var_number(Arg, Max0, Max1),
172
+ max_var_numberl(I2, T, Max1, Max).
173
+
174
+ %! varnumbers_names(+Term, -Copy, -VariableNames) is det.
175
+ %
176
+ % If Term is a term with numbered and named variables using the
177
+ % reserved term '$VAR'(X), Copy is a copy of Term where each
178
+ % '$VAR'(X) is consistently replaced by a fresh variable and
179
+ % Bindings is a list `X = Var`, relating the `X` terms with the
180
+ % variable it is mapped to.
181
+ %
182
+ % @see numbervars/3, varnumbers/3, read_term/3 using the
183
+ % `variable_names` option.
184
+
185
+ varnumbers_names(Term, Copy, Bindings) :-
186
+ must_be(acyclic, Term),
187
+ empty_assoc(Named),
188
+ varnumbers_names(Term, Named, BindingAssoc, Copy),
189
+ assoc_to_list(BindingAssoc, BindingPairs),
190
+ maplist(pair_equals, BindingPairs, Bindings).
191
+
192
+ pair_equals(N-V, N=V).
193
+
194
+ varnumbers_names(Var, Bindings, Bindings, Copy) :-
195
+ var(Var),
196
+ !,
197
+ Copy = Var.
198
+ varnumbers_names(Var, Bindings, Bindings, Copy) :-
199
+ atomic(Var),
200
+ !,
201
+ Copy = Var.
202
+ varnumbers_names('$VAR'(Name), Bindings0, Bindings, Copy) :-
203
+ !,
204
+ ( get_assoc(Name, Bindings0, Copy)
205
+ -> Bindings = Bindings0
206
+ ; put_assoc(Name, Bindings0, Copy, Bindings)
207
+ ).
208
+ varnumbers_names(Term, Bindings0, Bindings, Copy) :-
209
+ functor(Term, Name, Arity),
210
+ functor(Copy, Name, Arity),
211
+ varnumbers_names_args(1, Arity, Term, Bindings0, Bindings, Copy).
212
+
213
+ varnumbers_names_args(I, Arity, Term, Bindings0, Bindings, Copy) :-
214
+ I =< Arity,
215
+ !,
216
+ arg(I, Term, AT),
217
+ arg(I, Copy, CT),
218
+ varnumbers_names(AT, Bindings0, Bindings1, CT),
219
+ I2 is I + 1,
220
+ varnumbers_names_args(I2, Arity, Term, Bindings1, Bindings, Copy).
221
+ varnumbers_names_args(_, _, _, Bindings, Bindings, _).
@@ -0,0 +1,251 @@
1
+ /* Part of SWI-Prolog
2
+
3
+ Author: Jan Wielemaker
4
+ E-mail: J.Wielemaker@vu.nl
5
+ WWW: www.swi-prolog.org
6
+ Copyright (c) 2008-2020, University of Amsterdam
7
+ VU University 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_vm,
37
+ [ vm_list/1, % :Spec
38
+ clause_vm/2, % +ClauseRef,-VM:list
39
+ vmi_labels/2 % ?VMI,?Labeled
40
+ ]).
41
+ :- autoload(library(lists), [member/2, selectchk/3]).
42
+ :- autoload(library(prolog_clause), [predicate_name/2]).
43
+
44
+
45
+ /** <module> SWI-Prolog Virtual Machine utilities
46
+
47
+ This is an internal developers module to manage the virtual machine
48
+ instructions.
49
+ */
50
+
51
+ :- meta_predicate
52
+ vm_list(:).
53
+
54
+ %! vm_list(:Spec) is det.
55
+ %
56
+ % Lists the definition of the predicates matching Spec to
57
+ % =current_output=. Spec is also allowed to be a clause-reference.
58
+
59
+ vm_list(_:Ref) :-
60
+ blob(Ref, clause),
61
+ !,
62
+ ( nth_clause(_Head, N, Ref),
63
+ format('~40c~nclause ~d (~w):~n~40c~n', [0'-, N, Ref, 0'-]),
64
+ vm_list_clause(Ref),
65
+ fail
66
+ ; true
67
+ ).
68
+ vm_list(Spec) :-
69
+ '$find_predicate'(Spec, List),
70
+ ( member(PI, List),
71
+ pi_to_head(PI, Head),
72
+ unify_args(Head, Spec),
73
+ predicate_name(Head, Name),
74
+ format('~72c~n~w~n~72c~n', [0'=, Name, 0'=]),
75
+ ( '$fetch_vm'(Head, 0, _, _)
76
+ -> vm_list_clause(Head)
77
+ ; format(' (No supervisor)~n')
78
+ ),
79
+ ( nth_clause(Head, N, Ref),
80
+ clause(MHead, _, Ref),
81
+ same_head(Head, MHead),
82
+ format('~40c~nclause ~d (~w):~n~40c~n', [0'-, N, Ref, 0'-]),
83
+ vm_list_clause(Ref),
84
+ fail
85
+ ; true
86
+ ),
87
+ fail
88
+ ; true
89
+ ).
90
+
91
+ pi_to_head(M:PI, M:Head) :-
92
+ !,
93
+ pi_to_head(PI, Head).
94
+ pi_to_head(Name/Arity, Head) :-
95
+ functor(Head, Name, Arity).
96
+
97
+ vm_list_clause(Clause) :-
98
+ clause_vm(Clause, VM),
99
+ vmi_labels(VM, Labeled),
100
+ vm_list_labeled(Labeled, 0).
101
+
102
+ vm_list_labeled([], _).
103
+ vm_list_labeled([label(L),vmi(break(VMI),Size)|T], PC) :-
104
+ !,
105
+ format('~w: ~t~d~8| ~q % <breakpoint>~n', [L, PC, VMI]),
106
+ PC1 is PC+Size,
107
+ vm_list_labeled(T, PC1).
108
+ vm_list_labeled([label(L),vmi(VMI,Size)|T], PC) :-
109
+ format('~w: ~t~d~8| ~q~n', [L, PC, VMI]),
110
+ PC1 is PC+Size,
111
+ vm_list_labeled(T, PC1).
112
+ vm_list_labeled([vmi(break(VMI),Size)|T], PC) :-
113
+ !,
114
+ format('~t~d~8| ~q % <breakpoint>~n', [PC, VMI]),
115
+ PC1 is PC+Size,
116
+ vm_list_labeled(T, PC1).
117
+ vm_list_labeled([vmi(VMI,Size)|T], PC) :-
118
+ format('~t~d~8| ~q~n', [PC, VMI]),
119
+ PC1 is PC+Size,
120
+ vm_list_labeled(T, PC1).
121
+
122
+ % Unify the arguments of the specification with the given term,
123
+ % so we can partially instantate the head.
124
+
125
+ unify_args(_, _/_) :- !. % Name/arity spec
126
+ unify_args(X, X) :- !.
127
+ unify_args(_:X, X) :- !.
128
+ unify_args(_, _).
129
+
130
+ same_head(X, X) :- !.
131
+ same_head(H1, H2) :-
132
+ strip_module(H1, _, H),
133
+ strip_module(H2, _, H).
134
+
135
+
136
+ %! clause_vm(+ClauseRef, -VM:list) is det.
137
+ %
138
+ % True when VM is the virtual machine code of ClauseRef. Each
139
+ % instruction is a term vmi(VMI,Size).
140
+
141
+ clause_vm(Ref, VM) :-
142
+ clause_vm(Ref, 0, VM).
143
+
144
+ clause_vm(Clause, PC, [vmi(VMI,Size)|T]) :-
145
+ '$fetch_vm'(Clause, PC, NextPC, VMI),
146
+ !,
147
+ Size is NextPC-PC,
148
+ clause_vm(Clause, NextPC, T).
149
+ clause_vm(_, _, []).
150
+
151
+
152
+ %! vmi_labels(?VMI, ?Labeled)
153
+ %
154
+ % Translated between a raw and a labeled representation for a VMI
155
+ % sequence as produced by clause_vm/2. Assumes we only jump
156
+ % _forwards_.
157
+ %
158
+ % In the labeled represention the `jump` arguments of VMIs are label
159
+ % names and there are entries label(Name) in the list.
160
+
161
+ vmi_labels(VMI, Labeled) :-
162
+ nonvar(VMI),
163
+ !,
164
+ label_vmi(VMI, 0, 0, [], Labeled).
165
+ vmi_labels(VMI, Labeled) :-
166
+ unlabel_vmi(Labeled, 0, [], VMI).
167
+
168
+ % Raw --> Labeled
169
+
170
+ label_vmi([], _, _, _, []).
171
+ label_vmi([H|T], Here0, LI0, Pending0, Labeled) :-
172
+ H = vmi(VMI0,Size),
173
+ Here is Here0+Size,
174
+ new_labels(VMI0, VMI, LI0, LI1, Here0, Here, Pending0, Pending1),
175
+ ( selectchk(Label-Here0, Pending1, Pending2)
176
+ -> Labeled = [label(Label),vmi(VMI,Size)|Labeled1]
177
+ ; Labeled = [vmi(VMI,Size)|Labeled1],
178
+ Pending2 = Pending1
179
+ ),
180
+ label_vmi(T, Here, LI1, Pending2, Labeled1).
181
+
182
+ new_labels(break(VMI0), break(VMI), LI0, LI, Start, End, Labels0, Labels) :-
183
+ !,
184
+ new_labels(VMI0, VMI, LI0, LI, Start, End, Labels0, Labels).
185
+ new_labels(VMI0, VMI, LI0, LI, Start, End, Labels0, Labels) :-
186
+ VMI0 =.. [Name|Argv0],
187
+ '$vmi_property'(Name, argv(ArgvTypes)),
188
+ jmp_rel(Name, Start, End, Rel),
189
+ new_labels_(ArgvTypes, Argv0, Argv, LI0, LI, Rel, Labels0, Labels),
190
+ VMI =.. [Name|Argv].
191
+
192
+ %! jmp_rel(+VMIName, +Start, +End, -JmpRel)
193
+ %
194
+ % Relative position for the (choice) jump. This is the end of the
195
+ % instruction for most, but after the address for the compiled trie
196
+ % instructions. Should be made consistent.
197
+
198
+ jmp_rel(TrieVMI, Start, _End, Rel) :-
199
+ trie_vmi(TrieVMI), !,
200
+ Rel is Start+2.
201
+ jmp_rel(_, _, End, End).
202
+
203
+ trie_vmi(VMI) :- sub_atom(VMI, 0, _, _, t_).
204
+
205
+ new_labels_([], [], [], LI, LI, _, Labels, Labels).
206
+ new_labels_([jump|TT], [Offset|AT], [Label|LT], LI0, LI, End, Labels0, Labels) :-
207
+ !,
208
+ To is End+Offset,
209
+ ( memberchk(Label-To, Labels0)
210
+ -> Labels1 = Labels0,
211
+ LI1 = LI0
212
+ ; LI1 is LI0+1,
213
+ atom_concat('L', LI1, Label),
214
+ Labels1 = [Label-To|Labels0]
215
+ ),
216
+ new_labels_(TT, AT, LT, LI1, LI, End, Labels1, Labels).
217
+ new_labels_([_|TT], [A|AT], [A|LT], LI0, LI, End, Labels0, Labels) :-
218
+ new_labels_(TT, AT, LT, LI0, LI, End, Labels0, Labels).
219
+
220
+ % Labeled --> Raw
221
+
222
+ unlabel_vmi([], _, _, []).
223
+ unlabel_vmi([label(L)|T0], Here, Labels0, T) :-
224
+ !,
225
+ resolve_labels(L, Here, Labels0, Labels),
226
+ unlabel_vmi(T0, Here, Labels, T).
227
+ unlabel_vmi([vmi(VMI0,Size)|T0], Here0, Labels0, [vmi(VMI,Size)|T]) :-
228
+ Here is Here0+Size,
229
+ get_labels(VMI0, VMI, Here, Labels0, Labels),
230
+ unlabel_vmi(T0, Here, Labels, T).
231
+
232
+ get_labels(VMI0, VMI, Here, Labels0, Labels) :-
233
+ VMI0 =.. [Name|Argv0],
234
+ '$vmi_property'(Name, argv(ArgvTypes)),
235
+ get_labels_(ArgvTypes, Argv0, Argv, Here, Labels0, Labels),
236
+ VMI =.. [Name|Argv].
237
+
238
+ get_labels_([], [], [], _, Labels, Labels).
239
+ get_labels_([jump|TT], [Label|LT], [Offset|AT], Here,
240
+ Labels0, [l(Label,Here,Offset)|Labels]) :-
241
+ !,
242
+ get_labels_(TT, LT, AT, Here, Labels0, Labels).
243
+ get_labels_([_|TT], [A|LT], [A|AT], Here, Labels0, Labels) :-
244
+ get_labels_(TT, LT, AT, Here, Labels0, Labels).
245
+
246
+ resolve_labels(L, Here, Labels0, Labels) :-
247
+ selectchk(l(L,End,Offset), Labels0, Labels1),
248
+ !,
249
+ Offset is Here-End,
250
+ resolve_labels(L, Here, Labels1, Labels).
251
+ resolve_labels(_, _, Labels, Labels).