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.
- package/README.md +29 -0
- package/bin/swipl +0 -0
- package/bin/swipl-win +0 -0
- package/build-manifest.json +70 -0
- package/lib/cmake/swipl/SWIPLConfig.cmake +21 -0
- package/lib/cmake/swipl/SWIPLConfigVersion.cmake +65 -0
- package/lib/cmake/swipl/SWIPLTargets-release.cmake +28 -0
- package/lib/cmake/swipl/SWIPLTargets.cmake +109 -0
- package/lib/swipl/ABI +1 -0
- package/lib/swipl/LICENSE +41 -0
- package/lib/swipl/README.md +116 -0
- package/lib/swipl/app/README.md +25 -0
- package/lib/swipl/app/app.pl +87 -0
- package/lib/swipl/app/pack.pl +350 -0
- package/lib/swipl/app/qlf.pl +521 -0
- package/lib/swipl/app/splfr.pl +177 -0
- package/lib/swipl/app/sys.pl +310 -0
- package/lib/swipl/bin/swipl.home +1 -0
- package/lib/swipl/boot/apply.pl +73 -0
- package/lib/swipl/boot/attvar.pl +344 -0
- package/lib/swipl/boot/autoload.pl +1226 -0
- package/lib/swipl/boot/bags.pl +283 -0
- package/lib/swipl/boot/dcg.pl +388 -0
- package/lib/swipl/boot/dicts.pl +193 -0
- package/lib/swipl/boot/dwim.pl +485 -0
- package/lib/swipl/boot/engines.pl +152 -0
- package/lib/swipl/boot/expand.pl +1628 -0
- package/lib/swipl/boot/gc.pl +65 -0
- package/lib/swipl/boot/history.pl +304 -0
- package/lib/swipl/boot/init.pl +4682 -0
- package/lib/swipl/boot/iri.pl +64 -0
- package/lib/swipl/boot/license.pl +390 -0
- package/lib/swipl/boot/load.pl +81 -0
- package/lib/swipl/boot/messages.pl +2521 -0
- package/lib/swipl/boot/packs.pl +306 -0
- package/lib/swipl/boot/predopts.pl +154 -0
- package/lib/swipl/boot/qlf.pl +141 -0
- package/lib/swipl/boot/rc.pl +263 -0
- package/lib/swipl/boot/syspred.pl +1634 -0
- package/lib/swipl/boot/tabling.pl +2321 -0
- package/lib/swipl/boot/threads.pl +42 -0
- package/lib/swipl/boot/toplevel.pl +2248 -0
- package/lib/swipl/boot/topvars.pl +261 -0
- package/lib/swipl/boot.prc +0 -0
- package/lib/swipl/cmake/swipl.cmake +131 -0
- package/lib/swipl/customize/README.md +23 -0
- package/lib/swipl/customize/edit +101 -0
- package/lib/swipl/customize/init.pl +164 -0
- package/lib/swipl/demo/README.md +33 -0
- package/lib/swipl/demo/likes.pl +44 -0
- package/lib/swipl/doc/packages/examples/chr/bool.chr +281 -0
- package/lib/swipl/doc/packages/examples/chr/chrdif.chr +87 -0
- package/lib/swipl/doc/packages/examples/chr/chrfreeze.chr +6 -0
- package/lib/swipl/doc/packages/examples/chr/family.chr +116 -0
- package/lib/swipl/doc/packages/examples/chr/fib.chr +24 -0
- package/lib/swipl/doc/packages/examples/chr/fibonacci.chr +31 -0
- package/lib/swipl/doc/packages/examples/chr/gcd.chr +28 -0
- package/lib/swipl/doc/packages/examples/chr/leq.chr +34 -0
- package/lib/swipl/doc/packages/examples/chr/listdom.chr +138 -0
- package/lib/swipl/doc/packages/examples/chr/primes.chr +29 -0
- package/lib/swipl/doc/packages/examples/http/README.md +98 -0
- package/lib/swipl/doc/packages/examples/http/calc.pl +92 -0
- package/lib/swipl/doc/packages/examples/http/demo_body.pl +232 -0
- package/lib/swipl/doc/packages/examples/http/demo_client.pl +165 -0
- package/lib/swipl/doc/packages/examples/http/demo_daemon.pl +38 -0
- package/lib/swipl/doc/packages/examples/http/demo_files.pl +50 -0
- package/lib/swipl/doc/packages/examples/http/demo_hello.pl +15 -0
- package/lib/swipl/doc/packages/examples/http/demo_login.pl +280 -0
- package/lib/swipl/doc/packages/examples/http/demo_openid.pl +177 -0
- package/lib/swipl/doc/packages/examples/http/demo_pwp.pl +20 -0
- package/lib/swipl/doc/packages/examples/http/demo_rest.pl +56 -0
- package/lib/swipl/doc/packages/examples/http/demo_threads.pl +52 -0
- package/lib/swipl/doc/packages/examples/http/linux-init-script +126 -0
- package/lib/swipl/doc/packages/examples/http/pwp/context.pwp +23 -0
- package/lib/swipl/doc/packages/examples/http/pwp/index.pwp +25 -0
- package/lib/swipl/doc/packages/examples/http/pwp/pwp1.pwp +12 -0
- package/lib/swipl/doc/packages/examples/http/pwp/pwp2.pwp +10 -0
- package/lib/swipl/doc/packages/examples/http/pwp/pwp3.pwp +25 -0
- package/lib/swipl/doc/packages/examples/http/pwp/pwp4.pwp +23 -0
- package/lib/swipl/doc/packages/examples/http/pwp/pwp5.pwp +11 -0
- package/lib/swipl/doc/packages/examples/http/pwp/pwp6.pwp +3 -0
- package/lib/swipl/doc/packages/examples/http/pwp/pwp7.pwp +3 -0
- package/lib/swipl/doc/packages/examples/http/pwp/pwp8.pwp +3 -0
- package/lib/swipl/doc/packages/examples/http/pwp/pwpdb.pl +12 -0
- package/lib/swipl/doc/packages/examples/http/systemd-script.service +18 -0
- package/lib/swipl/doc/packages/examples/http/upstart-script.conf +20 -0
- package/lib/swipl/doc/packages/examples/plunit/read.pl +17 -0
- package/lib/swipl/doc/packages/examples/plunit/simple.pl +33 -0
- package/lib/swipl/doc/packages/examples/ssl/client.pl +83 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/README +52 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/client/client-cert.p12 +0 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/client/client-cert.pem +85 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/client/client-key.pem +30 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/cacert.pem +82 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/careq.pem +18 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/crlnumber +1 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/index.txt +3 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/index.txt.attr +1 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/newcerts/9DC08797A0F63F7C.pem +85 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/newcerts/9DC08797A0F63F7D.pem +85 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/private/cakey.pem +30 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/serial +1 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/server/server-cert.pem +85 -0
- package/lib/swipl/doc/packages/examples/ssl/etc/server/server-key.pem +30 -0
- package/lib/swipl/doc/packages/examples/ssl/https.pl +267 -0
- package/lib/swipl/doc/packages/examples/ssl/server.pl +106 -0
- package/lib/swipl/include/SWI-Prolog.h +1544 -0
- package/lib/swipl/include/SWI-Stream.h +537 -0
- package/lib/swipl/include/Yap/YapInterface.h +283 -0
- package/lib/swipl/include/sicstus/sicstus.h +452 -0
- package/lib/swipl/lib/x86_64-linux/cgi.so +0 -0
- package/lib/swipl/lib/x86_64-linux/crypt.so +0 -0
- package/lib/swipl/lib/x86_64-linux/crypto4pl.so +0 -0
- package/lib/swipl/lib/x86_64-linux/double_metaphone.so +0 -0
- package/lib/swipl/lib/x86_64-linux/files.so +0 -0
- package/lib/swipl/lib/x86_64-linux/hashstream.so +0 -0
- package/lib/swipl/lib/x86_64-linux/http_stream.so +0 -0
- package/lib/swipl/lib/x86_64-linux/isub.so +0 -0
- package/lib/swipl/lib/x86_64-linux/json.so +0 -0
- package/lib/swipl/lib/x86_64-linux/libswipl.so.10 +0 -0
- package/lib/swipl/lib/x86_64-linux/mallocinfo.so +0 -0
- package/lib/swipl/lib/x86_64-linux/md54pl.so +0 -0
- package/lib/swipl/lib/x86_64-linux/memfile.so +0 -0
- package/lib/swipl/lib/x86_64-linux/ntriples.so +0 -0
- package/lib/swipl/lib/x86_64-linux/pcre4pl.so +0 -0
- package/lib/swipl/lib/x86_64-linux/porter_stem.so +0 -0
- package/lib/swipl/lib/x86_64-linux/process.so +0 -0
- package/lib/swipl/lib/x86_64-linux/prolog_stream.so +0 -0
- package/lib/swipl/lib/x86_64-linux/rdf_db.so +0 -0
- package/lib/swipl/lib/x86_64-linux/readutil.so +0 -0
- package/lib/swipl/lib/x86_64-linux/rlimit.so +0 -0
- package/lib/swipl/lib/x86_64-linux/sched.so +0 -0
- package/lib/swipl/lib/x86_64-linux/sgml2pl.so +0 -0
- package/lib/swipl/lib/x86_64-linux/sha4pl.so +0 -0
- package/lib/swipl/lib/x86_64-linux/snowball.so +0 -0
- package/lib/swipl/lib/x86_64-linux/socket.so +0 -0
- package/lib/swipl/lib/x86_64-linux/ssl4pl.so +0 -0
- package/lib/swipl/lib/x86_64-linux/streaminfo.so +0 -0
- package/lib/swipl/lib/x86_64-linux/syslog.so +0 -0
- package/lib/swipl/lib/x86_64-linux/time.so +0 -0
- package/lib/swipl/lib/x86_64-linux/turtle.so +0 -0
- package/lib/swipl/lib/x86_64-linux/uid.so +0 -0
- package/lib/swipl/lib/x86_64-linux/unix.so +0 -0
- package/lib/swipl/lib/x86_64-linux/uri.so +0 -0
- package/lib/swipl/lib/x86_64-linux/websocket.so +0 -0
- package/lib/swipl/lib/x86_64-linux/zlib4pl.so +0 -0
- package/lib/swipl/library/INDEX.pl +1020 -0
- package/lib/swipl/library/aggregate.pl +755 -0
- package/lib/swipl/library/ansi_term.pl +653 -0
- package/lib/swipl/library/apply.pl +426 -0
- package/lib/swipl/library/apply_macros.pl +497 -0
- package/lib/swipl/library/arithmetic.pl +320 -0
- package/lib/swipl/library/assoc.pl +522 -0
- package/lib/swipl/library/atom.pl +169 -0
- package/lib/swipl/library/backcomp.pl +688 -0
- package/lib/swipl/library/base32.pl +291 -0
- package/lib/swipl/library/base64.pl +441 -0
- package/lib/swipl/library/broadcast.pl +161 -0
- package/lib/swipl/library/build/cmake.pl +137 -0
- package/lib/swipl/library/build/conan.pl +232 -0
- package/lib/swipl/library/build/make.pl +168 -0
- package/lib/swipl/library/build/tools.pl +825 -0
- package/lib/swipl/library/charsio.pl +195 -0
- package/lib/swipl/library/check.pl +1097 -0
- package/lib/swipl/library/check_installation.pl +912 -0
- package/lib/swipl/library/clp/INDEX.pl +157 -0
- package/lib/swipl/library/clp/bounds.pl +2036 -0
- package/lib/swipl/library/clp/clp_distinct.pl +263 -0
- package/lib/swipl/library/clp/clp_events.pl +92 -0
- package/lib/swipl/library/clp/clpb.pl +1896 -0
- package/lib/swipl/library/clp/clpfd.pl +7906 -0
- package/lib/swipl/library/clp/simplex.pl +1580 -0
- package/lib/swipl/library/codesio.pl +182 -0
- package/lib/swipl/library/coinduction.pl +183 -0
- package/lib/swipl/library/console_input.pl +289 -0
- package/lib/swipl/library/csv.pl +611 -0
- package/lib/swipl/library/ctypes.pl +161 -0
- package/lib/swipl/library/date.pl +370 -0
- package/lib/swipl/library/dcg/INDEX.pl +35 -0
- package/lib/swipl/library/dcg/basics.pl +514 -0
- package/lib/swipl/library/dcg/high_order.pl +227 -0
- package/lib/swipl/library/debug.pl +499 -0
- package/lib/swipl/library/dialect/bim.pl +186 -0
- package/lib/swipl/library/dialect/commons.pl +77 -0
- package/lib/swipl/library/dialect/eclipse/test_util_iso.pl +355 -0
- package/lib/swipl/library/dialect/hprolog/format.pl +44 -0
- package/lib/swipl/library/dialect/hprolog.pl +314 -0
- package/lib/swipl/library/dialect/ifprolog.pl +1317 -0
- package/lib/swipl/library/dialect/iso/iso_predicates.pl +277 -0
- package/lib/swipl/library/dialect/sicstus/README.TXT +1 -0
- package/lib/swipl/library/dialect/sicstus/arrays.pl +121 -0
- package/lib/swipl/library/dialect/sicstus/block.pl +278 -0
- package/lib/swipl/library/dialect/sicstus/lists.pl +167 -0
- package/lib/swipl/library/dialect/sicstus/ordsets.pl +52 -0
- package/lib/swipl/library/dialect/sicstus/sockets.pl +174 -0
- package/lib/swipl/library/dialect/sicstus/system.pl +262 -0
- package/lib/swipl/library/dialect/sicstus/terms.pl +57 -0
- package/lib/swipl/library/dialect/sicstus/timeout.pl +92 -0
- package/lib/swipl/library/dialect/sicstus.pl +582 -0
- package/lib/swipl/library/dialect/sicstus4/aggregate.pl +60 -0
- package/lib/swipl/library/dialect/sicstus4/between.pl +62 -0
- package/lib/swipl/library/dialect/sicstus4/clpfd.pl +75 -0
- package/lib/swipl/library/dialect/sicstus4/file_systems.pl +413 -0
- package/lib/swipl/library/dialect/sicstus4/lists.pl +274 -0
- package/lib/swipl/library/dialect/sicstus4/ordsets.pl +54 -0
- package/lib/swipl/library/dialect/sicstus4/samsort.pl +86 -0
- package/lib/swipl/library/dialect/sicstus4/sets.pl +124 -0
- package/lib/swipl/library/dialect/sicstus4/sockets.pl +164 -0
- package/lib/swipl/library/dialect/sicstus4/system.pl +80 -0
- package/lib/swipl/library/dialect/sicstus4/terms.pl +89 -0
- package/lib/swipl/library/dialect/sicstus4/timeout.pl +43 -0
- package/lib/swipl/library/dialect/sicstus4/types.pl +103 -0
- package/lib/swipl/library/dialect/sicstus4.pl +200 -0
- package/lib/swipl/library/dialect/swi/syspred_options.pl +250 -0
- package/lib/swipl/library/dialect/xsb/README.md +20 -0
- package/lib/swipl/library/dialect/xsb/basics.pl +318 -0
- package/lib/swipl/library/dialect/xsb/consult.pl +87 -0
- package/lib/swipl/library/dialect/xsb/curr_sym.pl +57 -0
- package/lib/swipl/library/dialect/xsb/error_handler.pl +111 -0
- package/lib/swipl/library/dialect/xsb/gensym.pl +53 -0
- package/lib/swipl/library/dialect/xsb/gpp.pl +138 -0
- package/lib/swipl/library/dialect/xsb/intern.pl +48 -0
- package/lib/swipl/library/dialect/xsb/lists.pl +47 -0
- package/lib/swipl/library/dialect/xsb/machine.pl +295 -0
- package/lib/swipl/library/dialect/xsb/ordsets.pl +53 -0
- package/lib/swipl/library/dialect/xsb/setof.pl +54 -0
- package/lib/swipl/library/dialect/xsb/source.pl +308 -0
- package/lib/swipl/library/dialect/xsb/standard.pl +169 -0
- package/lib/swipl/library/dialect/xsb/storage.pl +70 -0
- package/lib/swipl/library/dialect/xsb/string.pl +76 -0
- package/lib/swipl/library/dialect/xsb/thread.pl +62 -0
- package/lib/swipl/library/dialect/xsb/timed_call.pl +158 -0
- package/lib/swipl/library/dialect/xsb.pl +688 -0
- package/lib/swipl/library/dialect/yap/README.TXT +8 -0
- package/lib/swipl/library/dialect/yap.pl +283 -0
- package/lib/swipl/library/dialect.pl +123 -0
- package/lib/swipl/library/dicts.pl +399 -0
- package/lib/swipl/library/dif.pl +426 -0
- package/lib/swipl/library/edinburgh.pl +138 -0
- package/lib/swipl/library/edit.pl +783 -0
- package/lib/swipl/library/error.pl +495 -0
- package/lib/swipl/library/exceptions.pl +231 -0
- package/lib/swipl/library/explain.pl +543 -0
- package/lib/swipl/library/ext/RDF/INDEX.pl +25 -0
- package/lib/swipl/library/ext/RDF/rdf.pl +450 -0
- package/lib/swipl/library/ext/RDF/rdf_parser.pl +649 -0
- package/lib/swipl/library/ext/RDF/rdf_triple.pl +448 -0
- package/lib/swipl/library/ext/RDF/rdf_write.pl +701 -0
- package/lib/swipl/library/ext/RDF/rewrite_term.pl +177 -0
- package/lib/swipl/library/ext/chr/chr/a_star.pl +80 -0
- package/lib/swipl/library/ext/chr/chr/binomialheap.pl +142 -0
- package/lib/swipl/library/ext/chr/chr/builtins.pl +629 -0
- package/lib/swipl/library/ext/chr/chr/chr_compiler_errors.pl +179 -0
- package/lib/swipl/library/ext/chr/chr/chr_compiler_options.pl +382 -0
- package/lib/swipl/library/ext/chr/chr/chr_compiler_utility.pl +338 -0
- package/lib/swipl/library/ext/chr/chr/chr_debug.pl +59 -0
- package/lib/swipl/library/ext/chr/chr/chr_hashtable_store.pl +425 -0
- package/lib/swipl/library/ext/chr/chr/chr_integertable_store.pl +139 -0
- package/lib/swipl/library/ext/chr/chr/chr_messages.pl +176 -0
- package/lib/swipl/library/ext/chr/chr/chr_op.pl +53 -0
- package/lib/swipl/library/ext/chr/chr/chr_runtime.pl +1016 -0
- package/lib/swipl/library/ext/chr/chr/chr_translate.pl +25424 -0
- package/lib/swipl/library/ext/chr/chr/clean_code.pl +252 -0
- package/lib/swipl/library/ext/chr/chr/find.pl +78 -0
- package/lib/swipl/library/ext/chr/chr/guard_entailment.pl +19432 -0
- package/lib/swipl/library/ext/chr/chr/listmap.pl +108 -0
- package/lib/swipl/library/ext/chr/chr/pairlist.pl +78 -0
- package/lib/swipl/library/ext/chr/chr.pl +686 -0
- package/lib/swipl/library/ext/clib/INDEX.pl +158 -0
- package/lib/swipl/library/ext/clib/cgi.pl +86 -0
- package/lib/swipl/library/ext/clib/crypt.pl +44 -0
- package/lib/swipl/library/ext/clib/filesex.pl +644 -0
- package/lib/swipl/library/ext/clib/hash_stream.pl +119 -0
- package/lib/swipl/library/ext/clib/mallocinfo.pl +138 -0
- package/lib/swipl/library/ext/clib/md5.pl +68 -0
- package/lib/swipl/library/ext/clib/memfile.pl +61 -0
- package/lib/swipl/library/ext/clib/process.pl +573 -0
- package/lib/swipl/library/ext/clib/prolog_server.pl +157 -0
- package/lib/swipl/library/ext/clib/prolog_stream.pl +80 -0
- package/lib/swipl/library/ext/clib/rlimit.pl +54 -0
- package/lib/swipl/library/ext/clib/sched.pl +85 -0
- package/lib/swipl/library/ext/clib/sha.pl +162 -0
- package/lib/swipl/library/ext/clib/socket.pl +1102 -0
- package/lib/swipl/library/ext/clib/streaminfo.pl +103 -0
- package/lib/swipl/library/ext/clib/streampool.pl +136 -0
- package/lib/swipl/library/ext/clib/syslog.pl +180 -0
- package/lib/swipl/library/ext/clib/time.pl +194 -0
- package/lib/swipl/library/ext/clib/udp_broadcast.pl +975 -0
- package/lib/swipl/library/ext/clib/uid.pl +220 -0
- package/lib/swipl/library/ext/clib/unix.pl +317 -0
- package/lib/swipl/library/ext/clib/uri.pl +530 -0
- package/lib/swipl/library/ext/clib/uuid.pl +207 -0
- package/lib/swipl/library/ext/http/http/INDEX.pl +266 -0
- package/lib/swipl/library/ext/http/http/README.md +34 -0
- package/lib/swipl/library/ext/http/http/ax.pl +189 -0
- package/lib/swipl/library/ext/http/http/dcg_basics.pl +49 -0
- package/lib/swipl/library/ext/http/http/graphql.pl +1367 -0
- package/lib/swipl/library/ext/http/http/html_decl.pl +416 -0
- package/lib/swipl/library/ext/http/http/html_head.pl +654 -0
- package/lib/swipl/library/ext/http/http/html_quasiquotations.pl +120 -0
- package/lib/swipl/library/ext/http/http/html_write.pl +1425 -0
- package/lib/swipl/library/ext/http/http/htmx.pl +139 -0
- package/lib/swipl/library/ext/http/http/http_authenticate.pl +364 -0
- package/lib/swipl/library/ext/http/http/http_client.pl +412 -0
- package/lib/swipl/library/ext/http/http/http_cookie.pl +245 -0
- package/lib/swipl/library/ext/http/http/http_cors.pl +176 -0
- package/lib/swipl/library/ext/http/http/http_digest.pl +820 -0
- package/lib/swipl/library/ext/http/http/http_dirindex.pl +296 -0
- package/lib/swipl/library/ext/http/http/http_dispatch.pl +1552 -0
- package/lib/swipl/library/ext/http/http/http_dyn_workers.pl +214 -0
- package/lib/swipl/library/ext/http/http/http_error.pl +126 -0
- package/lib/swipl/library/ext/http/http/http_exception.pl +225 -0
- package/lib/swipl/library/ext/http/http/http_files.pl +163 -0
- package/lib/swipl/library/ext/http/http/http_header.pl +2820 -0
- package/lib/swipl/library/ext/http/http/http_hook.pl +106 -0
- package/lib/swipl/library/ext/http/http/http_host.pl +204 -0
- package/lib/swipl/library/ext/http/http/http_load.pl +113 -0
- package/lib/swipl/library/ext/http/http/http_log.pl +738 -0
- package/lib/swipl/library/ext/http/http/http_multipart_plugin.pl +232 -0
- package/lib/swipl/library/ext/http/http/http_open.pl +1821 -0
- package/lib/swipl/library/ext/http/http/http_openid.pl +1561 -0
- package/lib/swipl/library/ext/http/http/http_parameters.pl +504 -0
- package/lib/swipl/library/ext/http/http/http_path.pl +380 -0
- package/lib/swipl/library/ext/http/http/http_proxy.pl +80 -0
- package/lib/swipl/library/ext/http/http/http_pwp.pl +351 -0
- package/lib/swipl/library/ext/http/http/http_redis_plugin.pl +332 -0
- package/lib/swipl/library/ext/http/http/http_server.pl +105 -0
- package/lib/swipl/library/ext/http/http/http_server_files.pl +126 -0
- package/lib/swipl/library/ext/http/http/http_server_health.pl +186 -0
- package/lib/swipl/library/ext/http/http/http_session.pl +1040 -0
- package/lib/swipl/library/ext/http/http/http_sgml_plugin.pl +137 -0
- package/lib/swipl/library/ext/http/http/http_stream.pl +376 -0
- package/lib/swipl/library/ext/http/http/http_unix_daemon.pl +989 -0
- package/lib/swipl/library/ext/http/http/http_wrapper.pl +559 -0
- package/lib/swipl/library/ext/http/http/hub.pl +600 -0
- package/lib/swipl/library/ext/http/http/js_write.pl +461 -0
- package/lib/swipl/library/ext/http/http/mimepack.pl +224 -0
- package/lib/swipl/library/ext/http/http/mimetype.pl +276 -0
- package/lib/swipl/library/ext/http/http/term_html.pl +797 -0
- package/lib/swipl/library/ext/http/http/thread_httpd.pl +1181 -0
- package/lib/swipl/library/ext/http/http/web/css/dirindex.css +24 -0
- package/lib/swipl/library/ext/http/http/web/css/openid.css +57 -0
- package/lib/swipl/library/ext/http/http/web/icons/back.png +0 -0
- package/lib/swipl/library/ext/http/http/web/icons/c.png +0 -0
- package/lib/swipl/library/ext/http/http/web/icons/compressed.png +0 -0
- package/lib/swipl/library/ext/http/http/web/icons/folder.png +0 -0
- package/lib/swipl/library/ext/http/http/web/icons/generic.png +0 -0
- package/lib/swipl/library/ext/http/http/web/icons/layout.png +0 -0
- package/lib/swipl/library/ext/http/http/web/icons/openid-logo-square.png +0 -0
- package/lib/swipl/library/ext/http/http/web/icons/openid-logo-tiny.png +0 -0
- package/lib/swipl/library/ext/http/http/websocket.pl +729 -0
- package/lib/swipl/library/ext/http/http/yadis.pl +205 -0
- package/lib/swipl/library/ext/json/INDEX.pl +36 -0
- package/lib/swipl/library/ext/json/http/INDEX.pl +16 -0
- package/lib/swipl/library/ext/json/http/http_json.pl +490 -0
- package/lib/swipl/library/ext/json/http/js_grammar.pl +53 -0
- package/lib/swipl/library/ext/json/http/json.pl +48 -0
- package/lib/swipl/library/ext/json/http/json_convert.pl +48 -0
- package/lib/swipl/library/ext/json/json.pl +1215 -0
- package/lib/swipl/library/ext/json/json_convert.pl +681 -0
- package/lib/swipl/library/ext/json/json_grammar.pl +349 -0
- package/lib/swipl/library/ext/json/json_rpc_client.pl +423 -0
- package/lib/swipl/library/ext/json/json_rpc_common.pl +104 -0
- package/lib/swipl/library/ext/json/json_rpc_server.pl +489 -0
- package/lib/swipl/library/ext/json/json_schema.pl +2111 -0
- package/lib/swipl/library/ext/nlp/INDEX.pl +15 -0
- package/lib/swipl/library/ext/nlp/double_metaphone.pl +86 -0
- package/lib/swipl/library/ext/nlp/isub.pl +162 -0
- package/lib/swipl/library/ext/nlp/porter_stem.pl +50 -0
- package/lib/swipl/library/ext/nlp/snowball.pl +97 -0
- package/lib/swipl/library/ext/pcre/INDEX.pl +17 -0
- package/lib/swipl/library/ext/pcre/pcre.pl +974 -0
- package/lib/swipl/library/ext/plunit/INDEX.pl +20 -0
- package/lib/swipl/library/ext/plunit/plunit.pl +2631 -0
- package/lib/swipl/library/ext/plunit/test_wizard.pl +249 -0
- package/lib/swipl/library/ext/semweb/semweb/INDEX.pl +288 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf11.pl +2106 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf11_containers.pl +299 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_cache.pl +278 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_compare.pl +132 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_db.pl +3468 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_edit.pl +1145 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_http_plugin.pl +274 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_library.pl +1021 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_litindex.pl +1035 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_ntriples.pl +422 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_persistency.pl +1576 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_portray.pl +182 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_prefixes.pl +681 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_sandbox.pl +153 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_turtle.pl +54 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_turtle_write.pl +1587 -0
- package/lib/swipl/library/ext/semweb/semweb/rdf_zlib_plugin.pl +52 -0
- package/lib/swipl/library/ext/semweb/semweb/rdfa.pl +1510 -0
- package/lib/swipl/library/ext/semweb/semweb/rdfs.pl +475 -0
- package/lib/swipl/library/ext/semweb/semweb/sparql_client.pl +643 -0
- package/lib/swipl/library/ext/semweb/semweb/turtle.pl +455 -0
- package/lib/swipl/library/ext/sgml/DTD/HTML4.dcl +88 -0
- package/lib/swipl/library/ext/sgml/DTD/HTML4.dtd +1092 -0
- package/lib/swipl/library/ext/sgml/DTD/HTML4.soc +6 -0
- package/lib/swipl/library/ext/sgml/DTD/HTML5.dtd +906 -0
- package/lib/swipl/library/ext/sgml/DTD/HTMLlat1.ent +195 -0
- package/lib/swipl/library/ext/sgml/DTD/HTMLspec.ent +77 -0
- package/lib/swipl/library/ext/sgml/DTD/HTMLsym.ent +241 -0
- package/lib/swipl/library/ext/sgml/INDEX.pl +64 -0
- package/lib/swipl/library/ext/sgml/c14n2.pl +203 -0
- package/lib/swipl/library/ext/sgml/iso_639.pl +631 -0
- package/lib/swipl/library/ext/sgml/pwp.pl +705 -0
- package/lib/swipl/library/ext/sgml/sgml.pl +815 -0
- package/lib/swipl/library/ext/sgml/sgml_write.pl +1003 -0
- package/lib/swipl/library/ext/sgml/xpath.pl +620 -0
- package/lib/swipl/library/ext/sgml/xsdp_types.pl +232 -0
- package/lib/swipl/library/ext/ssl/INDEX.pl +60 -0
- package/lib/swipl/library/ext/ssl/crypto.pl +1015 -0
- package/lib/swipl/library/ext/ssl/http/INDEX.pl +5 -0
- package/lib/swipl/library/ext/ssl/http/http_ssl_plugin.pl +296 -0
- package/lib/swipl/library/ext/ssl/saml.pl +609 -0
- package/lib/swipl/library/ext/ssl/ssl.pl +647 -0
- package/lib/swipl/library/ext/ssl/xmldsig.pl +391 -0
- package/lib/swipl/library/ext/ssl/xmlenc.pl +354 -0
- package/lib/swipl/library/ext/zlib/INDEX.pl +8 -0
- package/lib/swipl/library/ext/zlib/zlib.pl +112 -0
- package/lib/swipl/library/fastrw.pl +105 -0
- package/lib/swipl/library/files.pl +80 -0
- package/lib/swipl/library/gensym.pl +111 -0
- package/lib/swipl/library/git.pl +1027 -0
- package/lib/swipl/library/hashtable.pl +365 -0
- package/lib/swipl/library/heaps.pl +252 -0
- package/lib/swipl/library/hotfix.pl +239 -0
- package/lib/swipl/library/http/jquery.pl +103 -0
- package/lib/swipl/library/http/web/js/jquery-3.6.0.min.js +2 -0
- package/lib/swipl/library/increval.pl +217 -0
- package/lib/swipl/library/intercept.pl +263 -0
- package/lib/swipl/library/iostream.pl +237 -0
- package/lib/swipl/library/iri_scheme/file.pl +70 -0
- package/lib/swipl/library/lazy_lists.pl +481 -0
- package/lib/swipl/library/listing.pl +1362 -0
- package/lib/swipl/library/lists.pl +860 -0
- package/lib/swipl/library/lynx/INDEX.pl +14 -0
- package/lib/swipl/library/lynx/format.pl +380 -0
- package/lib/swipl/library/lynx/html_style.pl +129 -0
- package/lib/swipl/library/lynx/html_text.pl +865 -0
- package/lib/swipl/library/lynx/pldoc_style.pl +87 -0
- package/lib/swipl/library/macros.pl +451 -0
- package/lib/swipl/library/main.pl +1200 -0
- package/lib/swipl/library/make.pl +197 -0
- package/lib/swipl/library/modules.pl +129 -0
- package/lib/swipl/library/nb_rbtrees.pl +267 -0
- package/lib/swipl/library/nb_set.pl +203 -0
- package/lib/swipl/library/obfuscate.pl +115 -0
- package/lib/swipl/library/occurs.pl +241 -0
- package/lib/swipl/library/operators.pl +182 -0
- package/lib/swipl/library/option.pl +388 -0
- package/lib/swipl/library/optparse.pl +966 -0
- package/lib/swipl/library/ordsets.pl +518 -0
- package/lib/swipl/library/oset.pl +160 -0
- package/lib/swipl/library/pairs.pl +187 -0
- package/lib/swipl/library/persistency.pl +713 -0
- package/lib/swipl/library/pio.pl +47 -0
- package/lib/swipl/library/portray_text.pl +277 -0
- package/lib/swipl/library/pprint.pl +940 -0
- package/lib/swipl/library/predicate_options.pl +975 -0
- package/lib/swipl/library/prolog_autoload.pl +233 -0
- package/lib/swipl/library/prolog_breakpoints.pl +396 -0
- package/lib/swipl/library/prolog_clause.pl +1104 -0
- package/lib/swipl/library/prolog_code.pl +416 -0
- package/lib/swipl/library/prolog_codewalk.pl +1248 -0
- package/lib/swipl/library/prolog_colour.pl +3301 -0
- package/lib/swipl/library/prolog_colour.qlf +0 -0
- package/lib/swipl/library/prolog_config.pl +154 -0
- package/lib/swipl/library/prolog_coverage.pl +1333 -0
- package/lib/swipl/library/prolog_debug.pl +404 -0
- package/lib/swipl/library/prolog_deps.pl +675 -0
- package/lib/swipl/library/prolog_evaluable.pl +234 -0
- package/lib/swipl/library/prolog_format.pl +219 -0
- package/lib/swipl/library/prolog_history.pl +161 -0
- package/lib/swipl/library/prolog_jiti.pl +333 -0
- package/lib/swipl/library/prolog_locale.pl +61 -0
- package/lib/swipl/library/prolog_metainference.pl +307 -0
- package/lib/swipl/library/prolog_pack.pl +3906 -0
- package/lib/swipl/library/prolog_profile.pl +346 -0
- package/lib/swipl/library/prolog_qlfmake.pl +533 -0
- package/lib/swipl/library/prolog_source.pl +1188 -0
- package/lib/swipl/library/prolog_stack.pl +794 -0
- package/lib/swipl/library/prolog_trace.pl +365 -0
- package/lib/swipl/library/prolog_versions.pl +347 -0
- package/lib/swipl/library/prolog_wrap.pl +164 -0
- package/lib/swipl/library/prolog_xref.pl +3090 -0
- package/lib/swipl/library/prolog_xref.qlf +0 -0
- package/lib/swipl/library/pure_input.pl +266 -0
- package/lib/swipl/library/qpforeign.pl +695 -0
- package/lib/swipl/library/qsave.pl +1516 -0
- package/lib/swipl/library/quasi_quotations.pl +300 -0
- package/lib/swipl/library/quintus.pl +437 -0
- package/lib/swipl/library/random.pl +459 -0
- package/lib/swipl/library/rbtrees.pl +1153 -0
- package/lib/swipl/library/readln.pl +256 -0
- package/lib/swipl/library/readutil.pl +304 -0
- package/lib/swipl/library/record.pl +544 -0
- package/lib/swipl/library/rwlocks.pl +172 -0
- package/lib/swipl/library/sandbox.pl +1384 -0
- package/lib/swipl/library/semweb/dc.rdfs +198 -0
- package/lib/swipl/library/semweb/eor.rdfs +95 -0
- package/lib/swipl/library/semweb/owl.owl +287 -0
- package/lib/swipl/library/semweb/rdf_library.ttl +90 -0
- package/lib/swipl/library/semweb/rdfs.rdfs +251 -0
- package/lib/swipl/library/settings.pl +755 -0
- package/lib/swipl/library/shell.pl +462 -0
- package/lib/swipl/library/shlib.pl +670 -0
- package/lib/swipl/library/solution_sequences.pl +439 -0
- package/lib/swipl/library/sort.pl +119 -0
- package/lib/swipl/library/statistics.pl +541 -0
- package/lib/swipl/library/streams.pl +118 -0
- package/lib/swipl/library/strings.pl +469 -0
- package/lib/swipl/library/system.pl +95 -0
- package/lib/swipl/library/tables.pl +381 -0
- package/lib/swipl/library/tableutil.pl +771 -0
- package/lib/swipl/library/tabling.pl +42 -0
- package/lib/swipl/library/terms.pl +457 -0
- package/lib/swipl/library/theme/auto.pl +61 -0
- package/lib/swipl/library/theme/dark.pl +455 -0
- package/lib/swipl/library/theme/light.pl +45 -0
- package/lib/swipl/library/thread.pl +810 -0
- package/lib/swipl/library/thread_pool.pl +508 -0
- package/lib/swipl/library/threadutil.pl +574 -0
- package/lib/swipl/library/tty.pl +316 -0
- package/lib/swipl/library/ugraphs.pl +644 -0
- package/lib/swipl/library/unicode/INDEX.pl +6 -0
- package/lib/swipl/library/unicode/blocks.pl +414 -0
- package/lib/swipl/library/url.pl +1129 -0
- package/lib/swipl/library/utf8.pl +145 -0
- package/lib/swipl/library/varnumbers.pl +221 -0
- package/lib/swipl/library/vm.pl +251 -0
- package/lib/swipl/library/wfs.pl +205 -0
- package/lib/swipl/library/when.pl +263 -0
- package/lib/swipl/library/writef.pl +278 -0
- package/lib/swipl/library/www_browser.pl +251 -0
- package/lib/swipl/library/yall.pl +574 -0
- package/lib/swipl/library/zip.pl +211 -0
- package/lib/swipl/swipl.home +1 -0
- package/lib/vendor/libcrypto.so.3 +0 -0
- package/lib/vendor/libpcre2-8.so.0 +0 -0
- package/lib/vendor/libssl.so.3 +0 -0
- package/lib/vendor/libz.so.1 +0 -0
- package/licenses/OpenSSL-LICENSE.txt +177 -0
- package/licenses/PCRE2-COPYING +5 -0
- package/licenses/README.md +12 -0
- package/licenses/SWI-Prolog-LICENSE +41 -0
- package/licenses/zlib-LICENSE +22 -0
- package/package.json +27 -0
|
@@ -0,0 +1,182 @@
|
|
|
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-2015, 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(codesio,
|
|
37
|
+
[ format_to_codes/3, % +Format, +Args, -Codes
|
|
38
|
+
format_to_codes/4, % +Format, +Args, -Codes, ?Tail
|
|
39
|
+
write_to_codes/2, % +Term, -Codes
|
|
40
|
+
write_to_codes/3, % +Term, -Codes, ?Tail
|
|
41
|
+
write_term_to_codes/3, % +Term, -Codes, +Options
|
|
42
|
+
write_term_to_codes/4, % +Term, -Codes, ?Tail, +Options
|
|
43
|
+
% read predicates
|
|
44
|
+
read_from_codes/2, % +Codes, -Term
|
|
45
|
+
read_term_from_codes/3, % +Codes, -Term, +Options
|
|
46
|
+
open_codes_stream/2, % +Codes, -Stream
|
|
47
|
+
with_output_to_codes/2, % :Goal, -Codes
|
|
48
|
+
with_output_to_codes/3, % :Goal, -Codes, ?Tail
|
|
49
|
+
with_output_to_codes/4 % :Goal, -Stream, -Codes, ?Tail
|
|
50
|
+
]).
|
|
51
|
+
|
|
52
|
+
:- meta_predicate
|
|
53
|
+
with_output_to_codes(0, -),
|
|
54
|
+
with_output_to_codes(0, -, ?),
|
|
55
|
+
with_output_to_codes(0, -, -, ?).
|
|
56
|
+
|
|
57
|
+
:- predicate_options(read_term_from_codes/3, 3,
|
|
58
|
+
[pass_to(system:read_term/3, 3)]).
|
|
59
|
+
:- predicate_options(write_term_to_codes/3, 3,
|
|
60
|
+
[pass_to(system:write_term/3, 3)]).
|
|
61
|
+
:- predicate_options(write_term_to_codes/4, 4,
|
|
62
|
+
[pass_to(system:write_term/3, 3)]).
|
|
63
|
+
|
|
64
|
+
/** <module> I/O on Lists of Character Codes
|
|
65
|
+
|
|
66
|
+
This module emulates the SICStus library codesio.pl for reading and
|
|
67
|
+
writing from/to lists of character codes. Most of these predicates are
|
|
68
|
+
straight calls into similar SWI-Prolog primitives.
|
|
69
|
+
|
|
70
|
+
This library is based on library(charsio) that originates from Quintus
|
|
71
|
+
Prolog. The naming is updated to reflect the ISO naming conventions and
|
|
72
|
+
the ISO predicates atom_codes/2, etc are obviously removed from this
|
|
73
|
+
library.
|
|
74
|
+
|
|
75
|
+
@compat SICStus 4
|
|
76
|
+
*/
|
|
77
|
+
|
|
78
|
+
%! format_to_codes(+Format, +Args, -Codes) is det.
|
|
79
|
+
%
|
|
80
|
+
% Use format/2 to write to a list of character codes.
|
|
81
|
+
|
|
82
|
+
format_to_codes(Format, Args, Codes) :-
|
|
83
|
+
format(codes(Codes), Format, Args).
|
|
84
|
+
|
|
85
|
+
%! format_to_codes(+Format, +Args, -Codes, ?Tail) is det.
|
|
86
|
+
%
|
|
87
|
+
% Use format/2 to write to a difference list of character codes.
|
|
88
|
+
|
|
89
|
+
format_to_codes(Format, Args, Codes, Tail) :-
|
|
90
|
+
format(codes(Codes, Tail), Format, Args).
|
|
91
|
+
|
|
92
|
+
%! write_to_codes(+Term, -Codes)
|
|
93
|
+
%
|
|
94
|
+
% Codes is a list of character codes produced by write/1 on Term.
|
|
95
|
+
|
|
96
|
+
write_to_codes(Term, Codes) :-
|
|
97
|
+
format(codes(Codes), '~w', [Term]).
|
|
98
|
+
|
|
99
|
+
%! write_to_codes(+Term, -Codes, ?Tail)
|
|
100
|
+
%
|
|
101
|
+
% Codes is a difference-list of character codes produced by write/1 on Term.
|
|
102
|
+
|
|
103
|
+
write_to_codes(Term, Codes, Tail) :-
|
|
104
|
+
format(codes(Codes, Tail), '~w', [Term]).
|
|
105
|
+
|
|
106
|
+
%! write_term_to_codes(+Term, -Codes, +Options) is det.
|
|
107
|
+
%
|
|
108
|
+
% True when Codes is a string that matches the output of
|
|
109
|
+
% write_term/3 using Options.
|
|
110
|
+
|
|
111
|
+
write_term_to_codes(Term, Codes, Options) :-
|
|
112
|
+
format(codes(Codes), '~W', [Term, Options]).
|
|
113
|
+
|
|
114
|
+
%! write_term_to_codes(+Term, -Codes, ?Tail, +Options) is det.
|
|
115
|
+
%
|
|
116
|
+
% True when Codes\Tail is a difference list containing the
|
|
117
|
+
% character codes that matches the output of write_term/3 using
|
|
118
|
+
% Options.
|
|
119
|
+
|
|
120
|
+
write_term_to_codes(Term, Codes, Tail, Options) :-
|
|
121
|
+
format(codes(Codes, Tail), '~W', [Term, Options]).
|
|
122
|
+
|
|
123
|
+
%! read_from_codes(+Codes, -Term) is det.
|
|
124
|
+
%
|
|
125
|
+
% Read Codes into Term.
|
|
126
|
+
%
|
|
127
|
+
% @compat The SWI-Prolog version does not require Codes to end
|
|
128
|
+
% in a full-stop.
|
|
129
|
+
|
|
130
|
+
read_from_codes([], Term) :-
|
|
131
|
+
!,
|
|
132
|
+
Term = end_of_file.
|
|
133
|
+
read_from_codes(List, Term) :-
|
|
134
|
+
atom_to_term(List, Term, _).
|
|
135
|
+
|
|
136
|
+
%! read_term_from_codes(+Codes, -Term, +Options) is det.
|
|
137
|
+
%
|
|
138
|
+
% Read Codes into Term. Options are processed by read_term/3.
|
|
139
|
+
%
|
|
140
|
+
% @compat sicstus
|
|
141
|
+
|
|
142
|
+
read_term_from_codes(Codes, Term, Options) :-
|
|
143
|
+
read_term_from_atom(Codes, Term, Options).
|
|
144
|
+
|
|
145
|
+
%! open_codes_stream(+Codes, -Stream) is det.
|
|
146
|
+
%
|
|
147
|
+
% Open Codes as an input stream.
|
|
148
|
+
%
|
|
149
|
+
% @see open_string/2.
|
|
150
|
+
|
|
151
|
+
open_codes_stream(Codes, Stream) :-
|
|
152
|
+
open_string(Codes, Stream).
|
|
153
|
+
|
|
154
|
+
%! with_output_to_codes(:Goal, Codes) is det.
|
|
155
|
+
%
|
|
156
|
+
% Run Goal with as once/1. Output written to =current_output=
|
|
157
|
+
% is collected in Codes.
|
|
158
|
+
|
|
159
|
+
with_output_to_codes(Goal, Codes) :-
|
|
160
|
+
with_output_to(codes(Codes), Goal).
|
|
161
|
+
|
|
162
|
+
%! with_output_to_codes(:Goal, -Codes, ?Tail) is det.
|
|
163
|
+
%
|
|
164
|
+
% Run Goal with as once/1. Output written to =current_output=
|
|
165
|
+
% is collected in Codes\Tail.
|
|
166
|
+
|
|
167
|
+
with_output_to_codes(Goal, Codes, Tail) :-
|
|
168
|
+
with_output_to(codes(Codes, Tail), Goal).
|
|
169
|
+
|
|
170
|
+
%! with_output_to_codes(:Goal, -Stream, -Codes, ?Tail) is det.
|
|
171
|
+
%
|
|
172
|
+
% As with_output_to_codes/3, but Stream is unified with the
|
|
173
|
+
% temporary stream. This predicate exists for compatibility
|
|
174
|
+
% reasons. In SWI-Prolog, the temporary stream is also available
|
|
175
|
+
% as `current_output`.
|
|
176
|
+
|
|
177
|
+
with_output_to_codes(Goal, Stream, Codes, Tail) :-
|
|
178
|
+
with_output_to(codes(Codes, Tail), with_stream(Stream, Goal)).
|
|
179
|
+
|
|
180
|
+
with_stream(Stream, Goal) :-
|
|
181
|
+
current_output(Stream),
|
|
182
|
+
call(Goal).
|
|
@@ -0,0 +1,183 @@
|
|
|
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) 2010-2011, 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(coinduction,
|
|
36
|
+
[ (coinductive)/1,
|
|
37
|
+
op(1150, fx, (coinductive))
|
|
38
|
+
]).
|
|
39
|
+
:- autoload(library(error),[instantiation_error/1,must_be/2]).
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
/** <module> Co-Logic Programming
|
|
43
|
+
|
|
44
|
+
This simple module implements the directive coinductive/1 as described
|
|
45
|
+
in "Co-Logic Programming: Extending Logic Programming with Coinduction"
|
|
46
|
+
by Luke Simon et al. The idea behind coinduction is that a goal succeeds
|
|
47
|
+
if it unifies to a parent goal. This enables some interesting programs,
|
|
48
|
+
notably on infinite trees (cyclic terms).
|
|
49
|
+
|
|
50
|
+
==
|
|
51
|
+
:- use_module(library(coinduction)).
|
|
52
|
+
|
|
53
|
+
:- coinductive p/1.
|
|
54
|
+
|
|
55
|
+
p([1|T]) :- p(T).
|
|
56
|
+
==
|
|
57
|
+
|
|
58
|
+
This predicate is true for any cyclic list containing only 1-s,
|
|
59
|
+
regardless of the cycle-length.
|
|
60
|
+
|
|
61
|
+
@bug Programs mixing normal predicates and coinductive predicates must
|
|
62
|
+
be _stratified_. The theory does not apply to normal Prolog calling
|
|
63
|
+
coinductive predicates, calling normal Prolog predicates, etc.
|
|
64
|
+
|
|
65
|
+
Stratification is not checked or enforced in any other way and thus
|
|
66
|
+
left as a responsibility to the user.
|
|
67
|
+
@see "Co-Logic Programming: Extending Logic Programming with Coinduction"
|
|
68
|
+
by Luke Simon et al.
|
|
69
|
+
*/
|
|
70
|
+
|
|
71
|
+
:- multifile
|
|
72
|
+
system:term_expansion/2,
|
|
73
|
+
coinductive_declaration/2. % Head, Module
|
|
74
|
+
|
|
75
|
+
%! head(+Term, -QHead) is semidet.
|
|
76
|
+
%
|
|
77
|
+
% Must be first to allow reloading!
|
|
78
|
+
|
|
79
|
+
head(Var, _) :-
|
|
80
|
+
var(Var), !, fail.
|
|
81
|
+
head((H:-_B), Head) :-
|
|
82
|
+
!,
|
|
83
|
+
head(H, Head).
|
|
84
|
+
head(H, Head) :-
|
|
85
|
+
( H = _:_
|
|
86
|
+
-> Head = H
|
|
87
|
+
; prolog_load_context(module, M),
|
|
88
|
+
Head = M:H
|
|
89
|
+
).
|
|
90
|
+
|
|
91
|
+
%! coinductive(:Spec)
|
|
92
|
+
%
|
|
93
|
+
% The declaration :- coinductive name/arity, ... defines
|
|
94
|
+
% predicates as _coinductive_. The predicate definition is wrapped
|
|
95
|
+
% such that goals unify with their ancestors. This directive must
|
|
96
|
+
% precede all clauses of the predicate.
|
|
97
|
+
|
|
98
|
+
coinductive(Spec) :-
|
|
99
|
+
throw(error(context_error(nodirective, coinductive(Spec)), _)).
|
|
100
|
+
|
|
101
|
+
expand_coinductive_declaration(Spec, Clauses) :-
|
|
102
|
+
prolog_load_context(module, Module),
|
|
103
|
+
phrase(expand_specs(Spec, Module), Clauses).
|
|
104
|
+
|
|
105
|
+
expand_specs(Var, _) -->
|
|
106
|
+
{ var(Var),
|
|
107
|
+
!,
|
|
108
|
+
instantiation_error(Var)
|
|
109
|
+
}.
|
|
110
|
+
expand_specs(M:Spec, _) -->
|
|
111
|
+
!,
|
|
112
|
+
expand_specs(Spec, M).
|
|
113
|
+
expand_specs((A,B), Module) -->
|
|
114
|
+
!,
|
|
115
|
+
expand_specs(A, Module),
|
|
116
|
+
expand_specs(B, Module).
|
|
117
|
+
expand_specs(Head, Module) -->
|
|
118
|
+
{ valid_pi(Head, Name, Arity),
|
|
119
|
+
functor(GenHead, Name, Arity)
|
|
120
|
+
},
|
|
121
|
+
[ coinduction:coinductive_declaration(GenHead, Module) ].
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
valid_pi(Name/Arity, Name, Arity) :-
|
|
125
|
+
must_be(atom, Name),
|
|
126
|
+
must_be(integer, Arity).
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
%! wrap_coinductive(+Head, +Term, -Clauses) is det.
|
|
130
|
+
%
|
|
131
|
+
% Create a wrapper. The first clause deal with the case where we
|
|
132
|
+
% already created the wrapper. The second creates the wrapper and
|
|
133
|
+
% the first clause.
|
|
134
|
+
|
|
135
|
+
wrap_coinductive(Pred, Term, Clause) :-
|
|
136
|
+
current_predicate(_, Pred),
|
|
137
|
+
!,
|
|
138
|
+
rename_clause(Term, 'coinductive ', Clause).
|
|
139
|
+
wrap_coinductive(Pred, Term, [Wrapper_1,Wrapper_2,FirstClause]) :-
|
|
140
|
+
Pred = M:Head,
|
|
141
|
+
functor(Head, Name, Arity),
|
|
142
|
+
length(Args, Arity),
|
|
143
|
+
GenHead =.. [Name|Args],
|
|
144
|
+
atom_concat('coinductive ', Name, WrappedName),
|
|
145
|
+
WrappedHead =.. [WrappedName|Args],
|
|
146
|
+
Wrapper_1 = (GenHead :-
|
|
147
|
+
prolog_current_frame(F),
|
|
148
|
+
prolog_frame_attribute(F, parent, FP),
|
|
149
|
+
prolog_frame_attribute(FP, parent_goal, M:GenHead)),
|
|
150
|
+
Wrapper_2 = (GenHead :- WrappedHead, coinduction:no_lco),
|
|
151
|
+
rename_clause(Term, 'coinductive ', FirstClause).
|
|
152
|
+
|
|
153
|
+
:- public no_lco/0.
|
|
154
|
+
|
|
155
|
+
no_lco. % true, but do not optimize away
|
|
156
|
+
|
|
157
|
+
%! rename_clause(+Clause, +Prefix, -Renamed) is det.
|
|
158
|
+
%
|
|
159
|
+
% Rename a clause by prefixing its old name wit h Prefix.
|
|
160
|
+
|
|
161
|
+
rename_clause((Head :- Body), Prefix, (NewHead :- Body)) :-
|
|
162
|
+
!,
|
|
163
|
+
rename_clause(Head, Prefix, NewHead).
|
|
164
|
+
rename_clause(M:Head, Prefix, M:NewHead) :-
|
|
165
|
+
rename_clause(Head, Prefix, NewHead).
|
|
166
|
+
rename_clause(Head, Prefix, NewHead) :-
|
|
167
|
+
Head =.. [Name|Args],
|
|
168
|
+
atom_concat(Prefix, Name, WrapName),
|
|
169
|
+
NewHead =.. [WrapName|Args].
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
/*******************************
|
|
173
|
+
* EXPANSION HOOKS *
|
|
174
|
+
*******************************/
|
|
175
|
+
|
|
176
|
+
system:term_expansion((:- coinductive(Spec)), Clauses) :-
|
|
177
|
+
expand_coinductive_declaration(Spec, Clauses).
|
|
178
|
+
system:term_expansion(Term, Wrapper) :-
|
|
179
|
+
head(Term, Module:Head),
|
|
180
|
+
coinductive_declaration(Head, Module),
|
|
181
|
+
wrap_coinductive(Module:Head, Term, Wrapper).
|
|
182
|
+
|
|
183
|
+
|
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
/* Part of SWI-Prolog
|
|
2
|
+
|
|
3
|
+
Author: Jan Wielemaker
|
|
4
|
+
E-mail: jan@swi-prolog.org
|
|
5
|
+
WWW: https://www.swi-prolog.org
|
|
6
|
+
Copyright (c) 2013-2026, VU University Amsterdam
|
|
7
|
+
SWI-Prolog Solutions b.v.
|
|
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_console_input,
|
|
37
|
+
[
|
|
38
|
+
]).
|
|
39
|
+
:- autoload(library(lists), [reverse/2, append/2]).
|
|
40
|
+
:- autoload(library(dcg/basics), [remainder/3]).
|
|
41
|
+
:- autoload(library(apply), [maplist/3, convlist/3]).
|
|
42
|
+
|
|
43
|
+
/** <module> Support entering toplevel queries
|
|
44
|
+
|
|
45
|
+
This module implements prolog:complete_input/4, which is used notably by
|
|
46
|
+
the command line editor library(edit) to perform context aware TAB
|
|
47
|
+
completion. It is a seperate library such that other input scenarios can
|
|
48
|
+
reuse this code.
|
|
49
|
+
*/
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
:- multifile
|
|
53
|
+
prolog:complete_input/4.
|
|
54
|
+
|
|
55
|
+
%! prolog:complete_input(+BeforeCursor:string, +AfterCursor:string,
|
|
56
|
+
%! -Delete:atom, -Completions:list) is semidet.
|
|
57
|
+
%
|
|
58
|
+
% Compute auto completions for the input line
|
|
59
|
+
% BeforeCursor+AfterCursor. Implemented completions
|
|
60
|
+
%
|
|
61
|
+
% - Files<br>
|
|
62
|
+
% - Text starting ``'<prefix>`` (single quotes) is completed as a
|
|
63
|
+
% file. If there is a single matching file a terminating `'` is
|
|
64
|
+
% added.
|
|
65
|
+
% - If the start of the line is ``[<prefix>`` and text can be
|
|
66
|
+
% a non-quoted atom, look for Prolog files with this name.
|
|
67
|
+
% Directories can be inserted as `/` (unquoted), as long as
|
|
68
|
+
% each _segment_ is a valid atom. If a single ``.pl`` file
|
|
69
|
+
% is found it is closed with ``]``, _without_ the extension.
|
|
70
|
+
% - Text starting ``library(<prefix>`` is completed as a
|
|
71
|
+
% library file using the same rules as ``[<prefix>``, but
|
|
72
|
+
% looking in all library directories instead of the current
|
|
73
|
+
% directory.
|
|
74
|
+
% - Atoms<br>
|
|
75
|
+
% ``<prefix>`` is used to complete atoms that can be written
|
|
76
|
+
% without quotes (excluding symbol atoms such as ``-->``) and
|
|
77
|
+
% are _permanent_, i.e., have references from clauses records,
|
|
78
|
+
% flags, foreign code, etc.
|
|
79
|
+
% - Variables<br>
|
|
80
|
+
% ``<Prefix>`` is completed as an atom if it is a valid variable
|
|
81
|
+
% name. It is completed with other atoms from the query being
|
|
82
|
+
% edited using the same search as Emacs _dabbrev_ (_Dynamic
|
|
83
|
+
% Abbreviation_). ``$<Prefix>`` expands to saved toplevel
|
|
84
|
+
% variables.
|
|
85
|
+
%
|
|
86
|
+
% @arg Delete is an atom or string representing the text that is
|
|
87
|
+
% replaced by the completion
|
|
88
|
+
% @arg Completions is a list of elements of this shape:
|
|
89
|
+
%
|
|
90
|
+
% - Atom
|
|
91
|
+
% Used for a plain completion without comment
|
|
92
|
+
% - Atom-Comment
|
|
93
|
+
% Used for a completion with comment. This will be
|
|
94
|
+
% used for predicates.
|
|
95
|
+
|
|
96
|
+
prolog:complete_input(Before, After, Delete, Completions) :-
|
|
97
|
+
string_codes(Before, Chars),
|
|
98
|
+
reverse(Chars, BeforeRev),
|
|
99
|
+
complete(BeforeRev, After, Delete, Completions).
|
|
100
|
+
|
|
101
|
+
complete(BeforeRev, _After, Prefix, Files) :- % complete files
|
|
102
|
+
phrase(file_prefix(Prefix, Type), BeforeRev),
|
|
103
|
+
!,
|
|
104
|
+
( Type = library(Close)
|
|
105
|
+
-> complete_library(Prefix, Close, Files)
|
|
106
|
+
; atom_concat(Prefix, '*', Pattern),
|
|
107
|
+
expand_file_name(Pattern, Files0),
|
|
108
|
+
finish_file_name(Files0, Type, Files)
|
|
109
|
+
).
|
|
110
|
+
complete(BeforeRev, After, Prefix, Completions) :- % complete atoms
|
|
111
|
+
phrase(identifier_prefix_r(Prefix, Type), BeforeRev, BeforeRev1),
|
|
112
|
+
!,
|
|
113
|
+
identifier_completions(Type, Prefix, BeforeRev1, After, Completions).
|
|
114
|
+
|
|
115
|
+
identifier_completions(atom, Prefix, _, _, Atoms) :-
|
|
116
|
+
'$atom_completions'(Prefix, Atoms).
|
|
117
|
+
identifier_completions(var, Prefix, BeforeRev, After, Vars) :-
|
|
118
|
+
findall(Var, var_starts(Prefix, BeforeRev, After, Var), Vars0),
|
|
119
|
+
sort(Vars0, Vars).
|
|
120
|
+
|
|
121
|
+
var_starts(Prefix, [0'$|_], _After, Var) :- % $Var
|
|
122
|
+
!,
|
|
123
|
+
recorded('$topvar', Var = _),
|
|
124
|
+
sub_atom(Var, 0, _, _, Prefix).
|
|
125
|
+
var_starts(Prefix, BeforeRev, _After, Var) :- % Backard search
|
|
126
|
+
phrase((..., nonid_char, identifier_prefix_r(Var, var)),
|
|
127
|
+
BeforeRev, _),
|
|
128
|
+
sub_string(Var, 0, _, _, Prefix).
|
|
129
|
+
var_starts(Prefix, _BeforeRev, AfterString, Var) :- % Forward search
|
|
130
|
+
string_codes(AfterString, After),
|
|
131
|
+
phrase((..., nonid_char, identifier_prefix(Var, var)),
|
|
132
|
+
After, _),
|
|
133
|
+
sub_string(Var, 0, _, _, Prefix).
|
|
134
|
+
|
|
135
|
+
... --> [] ; [_], ... .
|
|
136
|
+
|
|
137
|
+
nonid_char -->
|
|
138
|
+
[C],
|
|
139
|
+
{ \+ code_type(C, prolog_identifier_continue) }.
|
|
140
|
+
|
|
141
|
+
%! identifier_prefix(-Prefix, -Type) is semidet.
|
|
142
|
+
%! identifier_prefix_r(-Prefix, -Type) is semidet.
|
|
143
|
+
|
|
144
|
+
identifier_prefix(Prefix, Type) -->
|
|
145
|
+
atom_chars(String),
|
|
146
|
+
{ String = [H|_],
|
|
147
|
+
( code_type(H, prolog_var_start)
|
|
148
|
+
-> Type = var
|
|
149
|
+
; Type = atom
|
|
150
|
+
),
|
|
151
|
+
string_codes(Prefix, String) % do not create an atom
|
|
152
|
+
}.
|
|
153
|
+
|
|
154
|
+
identifier_prefix_r(Prefix, Type) -->
|
|
155
|
+
atom_chars(RevString),
|
|
156
|
+
{ reverse(RevString, String),
|
|
157
|
+
String = [H|_],
|
|
158
|
+
( code_type(H, prolog_var_start)
|
|
159
|
+
-> Type = var
|
|
160
|
+
; Type = atom
|
|
161
|
+
),
|
|
162
|
+
string_codes(Prefix, String) % do not create an atom
|
|
163
|
+
}.
|
|
164
|
+
|
|
165
|
+
atom_chars([H|T]) --> atom_char(H), !, atom_chars(T).
|
|
166
|
+
atom_chars([]) --> [].
|
|
167
|
+
|
|
168
|
+
atom_char(C) --> [C], { atom_char(C) }.
|
|
169
|
+
|
|
170
|
+
atom_char(C) :- code_type(C, prolog_identifier_continue).
|
|
171
|
+
|
|
172
|
+
%! file_prefix(-Prefix, -Type)// is semidet.
|
|
173
|
+
%
|
|
174
|
+
% True when the part before the cursor looks like a file name.
|
|
175
|
+
|
|
176
|
+
file_prefix(Prefix, file) -->
|
|
177
|
+
file_chars(RevString, quoted('\'')), "'",
|
|
178
|
+
!,
|
|
179
|
+
remainder(_),
|
|
180
|
+
{ reverse(RevString, String),
|
|
181
|
+
atom_codes(Prefix, String)
|
|
182
|
+
}.
|
|
183
|
+
file_prefix(Prefix, consult(']')) -->
|
|
184
|
+
file_chars(RevString, unquoted), "[",
|
|
185
|
+
!,
|
|
186
|
+
{ reverse(RevString, String),
|
|
187
|
+
atom_codes(Prefix, String)
|
|
188
|
+
}.
|
|
189
|
+
file_prefix(Prefix, library(')')) -->
|
|
190
|
+
file_chars(RevString, unquoted), "(yrarbil",
|
|
191
|
+
!,
|
|
192
|
+
remainder(_),
|
|
193
|
+
{ reverse(RevString, String),
|
|
194
|
+
atom_codes(Prefix, String)
|
|
195
|
+
}.
|
|
196
|
+
|
|
197
|
+
file_chars([H|T], Style) --> file_char(H, Style), !, file_chars(T, Style).
|
|
198
|
+
file_chars([], _) --> [].
|
|
199
|
+
|
|
200
|
+
file_char(C, Style) --> [C], { file_char(C, Style) }.
|
|
201
|
+
|
|
202
|
+
file_char(C, _) :- code_type(C, csym).
|
|
203
|
+
file_char(0'/, _).
|
|
204
|
+
file_char(C, quoted(_)) :-
|
|
205
|
+
file_char(C).
|
|
206
|
+
|
|
207
|
+
file_char(0'.).
|
|
208
|
+
file_char(0'-).
|
|
209
|
+
file_char(0'~).
|
|
210
|
+
:- if(current_prolog_flag(windows,true)).
|
|
211
|
+
file_char(0':).
|
|
212
|
+
file_char(0'\s).
|
|
213
|
+
:- endif.
|
|
214
|
+
|
|
215
|
+
%! finish_file_name(+Matches, -Completions) is det.
|
|
216
|
+
%
|
|
217
|
+
% Add closing quote for a unique file name.
|
|
218
|
+
|
|
219
|
+
finish_file_name([Dir0], _, [Dir]) :-
|
|
220
|
+
exists_directory(Dir0),
|
|
221
|
+
!,
|
|
222
|
+
atom_concat(Dir0, '/', Dir).
|
|
223
|
+
finish_file_name([File0], Close, [File]) :-
|
|
224
|
+
exists_file(File0),
|
|
225
|
+
close_file_name(File0, Close, File),
|
|
226
|
+
!.
|
|
227
|
+
finish_file_name(Files0, _, Files) :-
|
|
228
|
+
maplist(tag_dir, Files0, Files).
|
|
229
|
+
|
|
230
|
+
tag_dir(Dir, DirS) :-
|
|
231
|
+
exists_directory(Dir),
|
|
232
|
+
!,
|
|
233
|
+
atom_concat(Dir, /, DirS).
|
|
234
|
+
tag_dir(File, File).
|
|
235
|
+
|
|
236
|
+
close_file_name(File0, consult(Close), File) :-
|
|
237
|
+
file_name_extension(Base, Ext, File0),
|
|
238
|
+
user:prolog_file_type(Ext, prolog),
|
|
239
|
+
atom_concat(Base, Close, File).
|
|
240
|
+
close_file_name(File0, quoted(Close), File) :-
|
|
241
|
+
atom_concat(File0, Close, File).
|
|
242
|
+
|
|
243
|
+
%! complete_library(+Prefix:atom, +Close:atom, -Completions:list) is
|
|
244
|
+
%! semidet.
|
|
245
|
+
%
|
|
246
|
+
% Complete to a library entry on "library(Prefix".
|
|
247
|
+
|
|
248
|
+
complete_library(Prefix, Close, Libraries) :-
|
|
249
|
+
findall(Pairs, complete_one_libdir(Prefix, Pairs), DirPairs),
|
|
250
|
+
( DirPairs = [LibDir-[f(File)]]
|
|
251
|
+
-> atom_concat(LibDir, Local, File),
|
|
252
|
+
atom_concat(Local, Close, Completion),
|
|
253
|
+
Libraries = [Completion]
|
|
254
|
+
; DirPairs = [LibDir-[d(Dir)]]
|
|
255
|
+
-> atom_concat(LibDir, Local, Dir),
|
|
256
|
+
atom_concat(Local, '/', Completion),
|
|
257
|
+
Libraries = [Completion]
|
|
258
|
+
; maplist(local_libs, DirPairs, FilesLists),
|
|
259
|
+
append(FilesLists, Libraries0),
|
|
260
|
+
sort(Libraries0, Libraries)
|
|
261
|
+
).
|
|
262
|
+
|
|
263
|
+
complete_one_libdir(Prefix, LibdirS-Files) :-
|
|
264
|
+
absolute_file_name(library(.), LibDir,
|
|
265
|
+
[ file_type(directory),
|
|
266
|
+
solutions(all)
|
|
267
|
+
]),
|
|
268
|
+
atom_concat(LibDir, /, LibdirS),
|
|
269
|
+
atomic_list_concat([LibdirS, Prefix, '*'], Pattern),
|
|
270
|
+
expand_file_name(Pattern, Entries),
|
|
271
|
+
convlist(dir_or_source, Entries, Files0),
|
|
272
|
+
sort(Files0, Files),
|
|
273
|
+
Files \== [].
|
|
274
|
+
|
|
275
|
+
local_libs(LibDir-Members, Locals) :-
|
|
276
|
+
maplist(local_file_name(LibDir), Members, Locals).
|
|
277
|
+
|
|
278
|
+
local_file_name(LibDir, f(File), Local) :-
|
|
279
|
+
atom_concat(LibDir, Local, File).
|
|
280
|
+
local_file_name(LibDir, d(Dir), Local) :-
|
|
281
|
+
atom_concat(LibDir, Local0, Dir),
|
|
282
|
+
atom_concat(Local0, /, Local).
|
|
283
|
+
|
|
284
|
+
dir_or_source(Entry, f(Plain)) :-
|
|
285
|
+
file_name_extension(Plain, Ext, Entry),
|
|
286
|
+
user:prolog_file_type(Ext, prolog),
|
|
287
|
+
!.
|
|
288
|
+
dir_or_source(Entry, d(Entry)) :-
|
|
289
|
+
exists_directory(Entry).
|