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,274 @@
1
+ /* Part of SWI-Prolog
2
+
3
+ WWW: http://www.swi-prolog.org
4
+ Copyright (c) 2020-2021, SWI-Prolog Solutions b.v.
5
+ All rights reserved.
6
+
7
+ Redistribution and use in source and binary forms, with or without
8
+ modification, are permitted provided that the following conditions
9
+ are met:
10
+
11
+ 1. Redistributions of source code must retain the above copyright
12
+ notice, this list of conditions and the following disclaimer.
13
+
14
+ 2. Redistributions in binary form must reproduce the above copyright
15
+ notice, this list of conditions and the following disclaimer in
16
+ the documentation and/or other materials provided with the
17
+ distribution.
18
+
19
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
22
+ FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
23
+ COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
24
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
25
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
26
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
27
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
29
+ ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30
+ POSSIBILITY OF SUCH DAMAGE.
31
+ */
32
+
33
+ :- module(sicstus4_lists,
34
+ [ keys_and_values/3, % ?Pairs, ?Keys, ?Values
35
+ rev/2, % +List, ?Reversed
36
+ shorter_list/2, % ?Short, ?Long
37
+ append_length/4, % ?Prefix, ?Suffix, ?List, ?Length
38
+ append_length/3, % ?Suffix, ?List, ?Length
39
+ prefix_length/3, % ?List, ?Prefix, ?Length
40
+ proper_prefix_length/3, % ?List, ?Prefix, ?Length
41
+ suffix_length/3, % ?List, ?Suffix, ?Length
42
+ proper_suffix_length/3, % ?List, ?Suffix, ?Length
43
+ sublist/5, % +Whole, ?Part, ?Before, ?Length, ?After
44
+ sublist/4, % +Whole, ?Part, ?Before, ?Length
45
+ sublist/3, % +Whole, ?Part, ?Before
46
+ cons/3, % ?Head, ?Tail, ?List
47
+ last/3, % ?Fore, ?Last, ?List
48
+ head/2, % ?List, ?Head
49
+ tail/2, % ?List, ?Tail
50
+ prefix/2, % ?List, ?Prefix
51
+ proper_prefix/2, % ?List, ?Prefix
52
+ suffix/2, % ?List, ?Suffix
53
+ proper_suffix/2, % ?List, ?Suffix
54
+ subseq/3, % ?Sequence, ?SubSequence, ?Complement
55
+ subseq0/2, % +Sequence, ?SubSequence
56
+ subseq1/2, % +Sequence, ?SubSequence
57
+ scanlist/4, % :Pred, ?Xs, ?V1, ?V
58
+ scanlist/5, % :Pred, ?Xs, ?Ys, ?V1, ?V
59
+ scanlist/6, % :Pred, ?Xs, ?Ys, ?Zs, ?V1, ?V
60
+
61
+ % is_list/1 is built-in on SWI.
62
+ % We re-export it here to avoid warnings
63
+ % when SICStus code explicitly imports it from library(lists).
64
+ is_list/1 % +Term
65
+ ]).
66
+ :- reexport('../../lists',
67
+ [ select/3,
68
+ selectchk/3,
69
+ append/2,
70
+ delete/3,
71
+ last/2,
72
+ % SWI lists:list_to_set/2 actually behaves
73
+ % like SICStus lists:remove_dups/2
74
+ % and not like SICStus sets:list_to_set/2.
75
+ list_to_set/2 as remove_dups,
76
+ nextto/3,
77
+ nth1/3,
78
+ nth1/4,
79
+ nth0/3,
80
+ nth0/4,
81
+ permutation/2,
82
+ proper_length/2,
83
+ reverse/2,
84
+ same_length/2,
85
+ select/4,
86
+ selectchk/4,
87
+ sum_list/2 as sumlist,
88
+ max_member/2,
89
+ min_member/2,
90
+ max_member/3,
91
+ min_member/3,
92
+ clumped/2
93
+ ]).
94
+ :- reexport('../../apply',
95
+ [ maplist/2,
96
+ maplist/3,
97
+ maplist/4,
98
+ convlist/3,
99
+ exclude/3,
100
+ include/3,
101
+ partition/5
102
+ ]).
103
+ :- reexport('../../clp/clpfd', [transpose/2]).
104
+ :- reexport('../sicstus/lists', [same_length/3]).
105
+ :- use_module(library(pairs), [pairs_keys_values/3]).
106
+
107
+ :- multifile sicstus4:rename_module/2.
108
+
109
+ sicstus4:rename_module(lists, sicstus4_lists).
110
+
111
+ /** <module> SICStus 4-compatible library(lists).
112
+
113
+ @tbd This library is incomplete.
114
+ As of SICStus 4.6.0, the following predicates are missing:
115
+
116
+ * append/5
117
+ * correspond/4
118
+ * delete/4
119
+ * one_longer/2
120
+ * perm/2
121
+ * perm2/4
122
+ * rotate_list/[2,3]
123
+ * segment/2
124
+ * proper_segment/2
125
+ * cumlist/[4,5,6]
126
+ * map_product/4
127
+ * some/[2,3,4]
128
+ * somechk/[2,3,4]
129
+ * exclude/[4,5]
130
+ * include/[4,5]
131
+ * group/[3,4,5]
132
+ * ordered/[1,2]
133
+ * select_min/[3,4]
134
+ * select_max/[3,4]
135
+ * increasing_prefix/[3,4]
136
+ * decreasing_prefix/[3,4]
137
+ * clumps/2
138
+ * keyclumps/2
139
+ * keyclumped/2
140
+
141
+ @see https://sicstus.sics.se/sicstus/docs/4.6.0/html/sicstus.html/lib_002dlists.html
142
+ */
143
+
144
+ keys_and_values(Pairs, Keys, Values) :-
145
+ pairs_keys_values(Pairs, Keys, Values).
146
+
147
+
148
+ %% rev(+List, ?Reversed) is semidet.
149
+ %
150
+ % Same as reverse/2, but List must be a proper list.
151
+
152
+ rev(List, Reversed) :- rev_(List, [], Reversed).
153
+ rev_([], Reversed, Reversed).
154
+ rev_([Head|Tail], RevTail, Reversed) :-
155
+ rev_(Tail, [Head|RevTail], Reversed).
156
+
157
+
158
+ %% shorter_list(?Short, ?Long) is nondet.
159
+ %
160
+ % True if Short is a shorter list than Long. The lists' contents
161
+ % are insignificant, only the lengths matter. Mode -Short, +Long
162
+ % can be used to enumerate list skeletons shorter than Long.
163
+
164
+ shorter_list([], [_|_]).
165
+ shorter_list([_|ShortTail], [_|LongTail]) :-
166
+ shorter_list(ShortTail, LongTail).
167
+
168
+
169
+ % TODO The *_length predicates can probably be implemented more efficiently.
170
+
171
+ append_length(Prefix, Suffix, List, Length) :-
172
+ append(Prefix, Suffix, List),
173
+ length(Prefix, Length).
174
+
175
+ append_length(Suffix, List, Length) :-
176
+ append_length(_, Suffix, List, Length).
177
+
178
+ prefix_length(List, Prefix, Length) :-
179
+ prefix(List, Prefix),
180
+ length(Prefix, Length).
181
+
182
+ proper_prefix_length(List, Prefix, Length) :-
183
+ proper_prefix(List, Prefix),
184
+ length(Prefix, Length).
185
+
186
+ suffix_length(List, Suffix, Length) :-
187
+ suffix(List, Suffix),
188
+ length(Suffix, Length).
189
+
190
+ proper_suffix_length(List, Suffix, Length) :-
191
+ proper_suffix(List, Suffix),
192
+ length(Suffix, Length).
193
+
194
+
195
+ sublist(Whole, Part, Before, Length, After) :-
196
+ append(Prefix, Tail, Whole),
197
+ append(Part, Suffix, Tail),
198
+ length(Prefix, Before),
199
+ length(Part, Length),
200
+ length(Suffix, After).
201
+
202
+ sublist(Whole, Part, Before, Length) :-
203
+ sublist(Whole, Part, Before, Length, _).
204
+
205
+ sublist(Whole, Part, Before) :-
206
+ sublist(Whole, Part, Before, _, _).
207
+
208
+
209
+ cons(Head, Tail, [Head|Tail]).
210
+ last(Fore, Last, List) :- append(Fore, [Last], List).
211
+ head([Head|_], Head).
212
+ tail([_|Tail], Tail).
213
+
214
+
215
+ %% prefix(?List, ?Prefix) is nondet.
216
+ %
217
+ % True if Prefix is a prefix of List. Not the same as prefix/2
218
+ % in SICStus 3 or SWI - the arguments are reversed!
219
+
220
+ prefix(List, Prefix) :-
221
+ append(Prefix, _, List).
222
+
223
+ %% proper_prefix(?List, ?Prefix) is nondet.
224
+ %
225
+ % True if Prefix is a prefix of List, but is not List itself.
226
+
227
+ proper_prefix(List, Prefix) :-
228
+ prefix(List, Prefix),
229
+ Prefix \== List.
230
+
231
+ %% suffix(?List, ?Prefix) is nondet.
232
+ %
233
+ % True if Suffix is a suffix of List. Not the same as suffix/2
234
+ % in SICStus 3 - the arguments are reversed!
235
+
236
+ suffix(List, List).
237
+ suffix([_|Tail], Suffix) :-
238
+ suffix(Tail, Suffix).
239
+
240
+ %% proper_suffix(?List, ?Prefix) is nondet.
241
+ %
242
+ % True if Suffix is a suffix of List, but is not List itself.
243
+
244
+ proper_suffix([_|Tail], Suffix) :-
245
+ suffix(Tail, Suffix).
246
+
247
+
248
+ %% scanlist(:Pred, ?Xs, ?V1, ?V) is nondet.
249
+ %% scanlist(:Pred, ?Xs, ?Ys, ?V1, ?V) is nondet.
250
+ %% scanlist(:Pred, ?Xs, ?Ys, ?Zs, ?V1, ?V) is nondet.
251
+ %
252
+ % Same as foldl/[4,5,6].
253
+ %
254
+ % @compat SICStus 4
255
+
256
+ :- meta_predicate scanlist(3, ?, ?, ?).
257
+ scanlist(Pred, Xs, V1, V) :- foldl(Pred, Xs, V1, V).
258
+ :- meta_predicate scanlist(4, ?, ?, ?, ?).
259
+ scanlist(Pred, Xs, Ys, V1, V) :- foldl(Pred, Xs, Ys, V1, V).
260
+ :- meta_predicate scanlist(5, ?, ?, ?, ?, ?).
261
+ scanlist(Pred, Xs, Ys, Zs, V1, V) :- foldl(Pred, Xs, Ys, Zs, V1, V).
262
+
263
+
264
+ subseq(Sequence, [], Sequence).
265
+ subseq([Head|Tail], [Head|SubTail], Complement) :-
266
+ subseq(Tail, SubTail, Complement).
267
+ subseq([Head|Tail], SubSequence, [Head|Complement]) :-
268
+ subseq(Tail, SubSequence, Complement).
269
+
270
+
271
+ subseq0(Sequence, SubSequence) :- subseq(Sequence, SubSequence, _).
272
+ subseq1(Sequence, SubSequence) :-
273
+ subseq(Sequence, SubSequence, Complement),
274
+ Complement \== [].
@@ -0,0 +1,54 @@
1
+ /* Part of SWI-Prolog
2
+
3
+ WWW: http://www.swi-prolog.org
4
+ Copyright (c) 2021, SWI-Prolog Solutions b.v.
5
+ All rights reserved.
6
+
7
+ Redistribution and use in source and binary forms, with or without
8
+ modification, are permitted provided that the following conditions
9
+ are met:
10
+
11
+ 1. Redistributions of source code must retain the above copyright
12
+ notice, this list of conditions and the following disclaimer.
13
+
14
+ 2. Redistributions in binary form must reproduce the above copyright
15
+ notice, this list of conditions and the following disclaimer in
16
+ the documentation and/or other materials provided with the
17
+ distribution.
18
+
19
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
22
+ FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
23
+ COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
24
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
25
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
26
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
27
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
29
+ ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30
+ POSSIBILITY OF SUCH DAMAGE.
31
+ */
32
+
33
+ :- module(sicstus4_ordsets,
34
+ [ ord_nonmember/2 % +Item, +Set
35
+ ]).
36
+ :- reexport('../sicstus/ordsets').
37
+
38
+ :- multifile sicstus4:rename_module/2.
39
+
40
+ sicstus4:rename_module(ordsets, sicstus4_ordsets).
41
+
42
+ /** <module> SICStus 4 library(ordsets).
43
+
44
+ @tbd This library is incomplete.
45
+ As of SICStus 4.6.0, the following predicates are missing:
46
+
47
+ * ord_setproduct/2
48
+ * ord_disjoint_union/3
49
+ * ordset_order/3
50
+
51
+ @see https://sicstus.sics.se/sicstus/docs/4.6.0/html/sicstus/lib_002dordsets.html
52
+ */
53
+
54
+ ord_nonmember(Item, Set) :- \+ ord_memberchk(Item, Set).
@@ -0,0 +1,86 @@
1
+ /* Part of SWI-Prolog
2
+
3
+ WWW: http://www.swi-prolog.org
4
+ Copyright (c) 2021, SWI-Prolog Solutions b.v.
5
+ All rights reserved.
6
+
7
+ Redistribution and use in source and binary forms, with or without
8
+ modification, are permitted provided that the following conditions
9
+ are met:
10
+
11
+ 1. Redistributions of source code must retain the above copyright
12
+ notice, this list of conditions and the following disclaimer.
13
+
14
+ 2. Redistributions in binary form must reproduce the above copyright
15
+ notice, this list of conditions and the following disclaimer in
16
+ the documentation and/or other materials provided with the
17
+ distribution.
18
+
19
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
22
+ FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
23
+ COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
24
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
25
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
26
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
27
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
29
+ ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30
+ POSSIBILITY OF SUCH DAMAGE.
31
+ */
32
+
33
+ :- module(samsort,
34
+ [ samsort/2, % +RawList, -Sorted
35
+ samsort/3, % :Order, +RawList, -SortedList
36
+ samkeysort/2 % +RawList, -Sorted
37
+ ]).
38
+ :- reexport('../../backcomp', [merge/3]).
39
+
40
+ /** <module> SICStus 4 library(samsort).
41
+
42
+ @tbd This library is incomplete.
43
+ As of SICStus 4.6.0, the following predicates are missing:
44
+
45
+ * merge/4
46
+ * keymerge/3
47
+
48
+ @see https://sicstus.sics.se/sicstus/docs/4.6.0/html/sicstus.html/lib_002dsamsort.html
49
+ */
50
+
51
+ %! samsort(+RawList, -Sorted) is det.
52
+ %
53
+ % Same as msort/2.
54
+ %
55
+ % @compat SICStus 4
56
+
57
+ samsort(RawList, Sorted) :- msort(RawList, Sorted).
58
+
59
+ :- meta_predicate samsort_3_key(2, -, +, +).
60
+ samsort_3_key(OrderPred, Delta, E1, E2) :-
61
+ % Intentionally never set Delta = (=),
62
+ % because predsort removes duplicates
63
+ % (i. e. if two items compare equal, one is removed),
64
+ % but SICStus samsort doesn't.
65
+ call(OrderPred, E1, E2) -> Delta = (<) ; Delta = (>).
66
+
67
+ %! samsort(:Order, +RawList, -Sorted) is det.
68
+ %
69
+ % Similar to predsort/3, but the predicate Order is used to determine the
70
+ % order of terms. Order is called with two arguments, and if it succeeds,
71
+ % the first argument will be sorted before the second argument.
72
+ % Duplicates are not removed.
73
+ %
74
+ % @compat SICStus 4
75
+
76
+ :- meta_predicate samsort(2, +, -).
77
+ samsort(Order, RawList, SortedList) :-
78
+ predsort(samsort_3_key(Order), RawList, SortedList).
79
+
80
+ %! samkeysort(+RawList, -Sorted) is det.
81
+ %
82
+ % Same as keysort/2.
83
+ %
84
+ % @compat SICStus 4
85
+
86
+ samkeysort(RawList, Sorted) :- keysort(RawList, Sorted).
@@ -0,0 +1,124 @@
1
+ /* Part of SWI-Prolog
2
+
3
+ WWW: http://www.swi-prolog.org
4
+ Copyright (c) 2021, SWI-Prolog Solutions b.v.
5
+ All rights reserved.
6
+
7
+ Redistribution and use in source and binary forms, with or without
8
+ modification, are permitted provided that the following conditions
9
+ are met:
10
+
11
+ 1. Redistributions of source code must retain the above copyright
12
+ notice, this list of conditions and the following disclaimer.
13
+
14
+ 2. Redistributions in binary form must reproduce the above copyright
15
+ notice, this list of conditions and the following disclaimer in
16
+ the documentation and/or other materials provided with the
17
+ distribution.
18
+
19
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
22
+ FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
23
+ COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
24
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
25
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
26
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
27
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
29
+ ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30
+ POSSIBILITY OF SUCH DAMAGE.
31
+ */
32
+
33
+ :- module(sets,
34
+ [ add_element/3, % +Element, +Set1, -Set2
35
+ del_element/3, % +Element, +Set1, -Set2
36
+ disjoint/2, % +Set1, +Set2
37
+ intersect/2, % +Set1, +Set2
38
+ set_order/3, % +Xs, +Ys, -R
39
+ seteq/2, % +Set1, +Set2
40
+ list_to_set/2, % +List, -Set
41
+ disjoint_union/3, % +Set1, +Set2, -Union
42
+ union/4 % +Set1, +Set2, -Union, -Difference
43
+ ]).
44
+ :- reexport(library(lists),
45
+ [ is_set/1,
46
+ subset/2,
47
+ intersection/3,
48
+ subtract/3,
49
+ union/3
50
+ ]).
51
+ :- use_module(library(lists), [selectchk/3]).
52
+
53
+ /** <module> SICStus 4 library(sets).
54
+
55
+ @tbd This library is incomplete.
56
+ As of SICStus 4.6.0, the following predicates are missing:
57
+
58
+ * pairfrom/4
59
+ * power_set/2
60
+ * intersection/2
61
+ * symdiff/3
62
+ * setproduct/3
63
+ * union/2
64
+
65
+ @see https://sicstus.sics.se/sicstus/docs/4.6.0/html/sicstus.html/lib_002dsets.html
66
+ */
67
+
68
+ add_element(Element, Set1, Set2) :-
69
+ ( memberchk(Element, Set1)
70
+ -> Set2 = Set1
71
+ ; Set2 = [Element|Set1]
72
+ ).
73
+
74
+ del_element(Element, Set1, Set2) :-
75
+ ( selectchk(Element, Set1, Set2)
76
+ -> true
77
+ ; Set2 = Set1
78
+ ).
79
+
80
+ disjoint(Set1, Set2) :-
81
+ intersection(Set1, Set2, []).
82
+
83
+ intersect(Set1, Set2) :-
84
+ intersection(Set1, Set2, Intersection),
85
+ Intersection \= [].
86
+
87
+ set_order(Xs, Ys, R) :-
88
+ ( subset(Xs, Ys)
89
+ -> ( subset(Ys, Xs)
90
+ -> R = (=)
91
+ ; R = (<)
92
+ )
93
+ ; ( subset(Ys, Xs)
94
+ -> R = (>)
95
+ ; fail
96
+ )
97
+ ).
98
+
99
+ seteq(Set1, Set2) :- set_order(Set1, Set2, =).
100
+
101
+ %% list_to_set(+List, -Set) is det.
102
+ %
103
+ % Set is List with all duplicates removed. Duplicates are removed
104
+ % by unification. This is not the same as SWI-Prolog's
105
+ % list_to_set/2 in library(lists), which finds duplicates based on
106
+ % term equality (==).
107
+ %
108
+ % @compat SICStus 4
109
+
110
+ list_to_set([], []).
111
+ list_to_set([X|Tail], Set) :-
112
+ ( memberchk(X, Tail)
113
+ -> Set = SetTail
114
+ ; Set = [X|SetTail]
115
+ ),
116
+ list_to_set(Tail, SetTail).
117
+
118
+ disjoint_union(Set1, Set2, Union) :-
119
+ disjoint(Set1, Set2),
120
+ append(Set1, Set2, Union).
121
+
122
+ union(Set1, Set2, Union, Difference) :-
123
+ union(Set1, Set2, Union),
124
+ subtract(Set1, Set2, Difference).
@@ -0,0 +1,164 @@
1
+ /* Part of SWI-Prolog
2
+
3
+ WWW: http://www.swi-prolog.org
4
+ Copyright (c) 2021, SWI-Prolog Solutions b.v.
5
+ All rights reserved.
6
+
7
+ Redistribution and use in source and binary forms, with or without
8
+ modification, are permitted provided that the following conditions
9
+ are met:
10
+
11
+ 1. Redistributions of source code must retain the above copyright
12
+ notice, this list of conditions and the following disclaimer.
13
+
14
+ 2. Redistributions in binary form must reproduce the above copyright
15
+ notice, this list of conditions and the following disclaimer in
16
+ the documentation and/or other materials provided with the
17
+ distribution.
18
+
19
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
22
+ FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
23
+ COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
24
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
25
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
26
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
27
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
29
+ ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30
+ POSSIBILITY OF SUCH DAMAGE.
31
+ */
32
+
33
+ :- module(sicstus4_sockets,
34
+ [ socket_client_open/3,
35
+ socket_server_open/2,
36
+ socket_server_open/3,
37
+ socket_server_accept/4,
38
+ socket_server_close/1,
39
+ socket_select/7,
40
+ current_host/1
41
+ ]).
42
+
43
+ :- reexport('../sicstus/sockets',
44
+ [ current_host/1
45
+ ]).
46
+
47
+ :- use_module(library(lists)).
48
+ :- use_module(library(socket), [tcp_connect/3]).
49
+
50
+ :- multifile sicstus4:rename_module/2.
51
+
52
+ sicstus4:rename_module(sockets, sicstus4_sockets).
53
+
54
+ /** <module> SICStus 4-compatible library(sockets).
55
+
56
+ @tbd This library is incomplete.
57
+ Some predicates don't fully support all options available on SICStus.
58
+ See the documentation for individual predicates for details.
59
+
60
+ @see https://sicstus.sics.se/sicstus/docs/4.6.0/html/sicstus.html/lib_002dsockets.html
61
+ */
62
+
63
+ sicstus_address_to_swi(Address, Address) :- var(Address), !.
64
+ sicstus_address_to_swi(inet(Nodename, Servname), SwiAddress) :- !,
65
+ sicstus_address_to_swi(Nodename:Servname, SwiAddress).
66
+ sicstus_address_to_swi('':Servname, Servname) :- !.
67
+ sicstus_address_to_swi(Address, Address).
68
+
69
+ % The following options are not supported yet:
70
+ % * eof_action(Action)
71
+ % * eol(Eol)
72
+ sicstus_parse_stream_options(Options, [type(Type), encoding(Encoding)]) :-
73
+ ( selectchk(type(Type), Options, Options1)
74
+ -> true
75
+ ; Type = text,
76
+ Options1 = Options
77
+ ),
78
+ ( selectchk(encoding(Encoding), Options1, Options2)
79
+ -> true
80
+ ; Encoding = iso_latin_1,
81
+ Options2 = Options1
82
+ ),
83
+ % Check that no unsupported options were passed
84
+ Options2 == [].
85
+
86
+ sicstus_apply_stream_options(Stream, ParsedOptions) :-
87
+ maplist(set_stream(Stream), ParsedOptions).
88
+
89
+ socket_client_open(Addr, Stream, Options) :-
90
+ sicstus_address_to_swi(Addr, SwiAddr),
91
+ sicstus_parse_stream_options(Options, ParsedOptions),
92
+ tcp_connect(SwiAddr, Stream, []),
93
+ sicstus_apply_stream_options(Stream, ParsedOptions).
94
+
95
+ sicstus_address_handle_loopback(Address, false, Address) :- !.
96
+ sicstus_address_handle_loopback(Servname, true, localhost:Servname) :- var(Servname), !.
97
+ sicstus_address_handle_loopback(_Nodename:Servname, true, localhost:Servname) :- !.
98
+ sicstus_address_handle_loopback(Servname, true, localhost:Servname) :- !.
99
+
100
+ sicstus_server_address_to_swi(Address, Loopback, SwiAddress) :-
101
+ sicstus_address_to_swi(Address, TempAddress),
102
+ sicstus_address_handle_loopback(TempAddress, Loopback, SwiAddress).
103
+
104
+ % The following options are not supported yet:
105
+ % * numeric_nodename(Bool)
106
+ % * numeric_servname(Bool)
107
+ socket_server_open(Addr, ServerSocket) :- socket_server_open(Addr, ServerSocket, []).
108
+ socket_server_open(Addr, ServerSocket, Options) :-
109
+ ( selectchk(reuseaddr(ReuseAddr), Options, Options1)
110
+ -> (ReuseAddr == true ; ReuseAddr == false)
111
+ ; ReuseAddr = false,
112
+ Options1 = Options
113
+ ),
114
+ ( selectchk(loopback(Loopback), Options1, Options2)
115
+ -> (Loopback == true ; Loopback == false)
116
+ ; Loopback = false,
117
+ Options2 = Options1
118
+ ),
119
+ sicstus_server_address_to_swi(Addr, Loopback, SwiAddr),
120
+ % Check that no unsupported options were passed
121
+ Options2 == [],
122
+ tcp_socket(SocketId),
123
+ ( ReuseAddr == true
124
+ -> tcp_setopt(SocketId, reuseaddr)
125
+ ; true
126
+ ),
127
+ tcp_bind(SocketId, SwiAddr),
128
+ tcp_listen(SocketId, 5),
129
+ tcp_open_socket(SocketId, ServerSocket).
130
+
131
+ socket_server_accept(ServerSocket, Client, Stream, StreamOptions) :-
132
+ sicstus_parse_stream_options(StreamOptions, ParsedStreamOptions),
133
+ tcp_accept(ServerSocket, ClientSocket, Client),
134
+ tcp_open_socket(ClientSocket, Stream),
135
+ sicstus_apply_stream_options(Stream, ParsedStreamOptions).
136
+
137
+ socket_server_close(ServerSocket) :- close(ServerSocket).
138
+
139
+ sicstus_timeout_to_swi(off, infinite).
140
+ sicstus_timeout_to_swi(Seconds:Microseconds, N) :-
141
+ number(Seconds),
142
+ number(Microseconds),
143
+ N is Seconds + Microseconds / 1000000,
144
+ N > 0.
145
+ sicstus_timeout_to_swi(N, N) :-
146
+ number(N),
147
+ N > 0.
148
+
149
+ :- use_module(library(lists), [list_to_set/2, intersection/3]).
150
+ % On SICStus, the input lists can contain not just streams/sockets,
151
+ % but also pairs of the form Identifier-Stream, where Identifier may be
152
+ % an arbitrary term. If a stream from such a pair is ready, the entire
153
+ % pair is returned in the corresponding ready list(s). This allows the
154
+ % calling code to tell apart different ready streams more easily.
155
+ % This emulation currently does *not* support this feature
156
+ % and only accepts and returns bare streams.
157
+ socket_select(ServerSockets, SReady, ReadStreams, RReady, WriteStreams, WReady, Timeout) :-
158
+ sicstus_timeout_to_swi(Timeout, SwiTimeout),
159
+ append([ServerSockets, ReadStreams, WriteStreams], AllStreamsDup),
160
+ list_to_set(AllStreamsDup, AllStreams),
161
+ wait_for_input(AllStreams, ReadyList, SwiTimeout),
162
+ intersection(ServerSockets, ReadyList, SReady),
163
+ intersection(ReadStreams, ReadyList, RReady),
164
+ intersection(WriteStreams, ReadyList, WReady).