summaryrefslogtreecommitdiff
path: root/graphics
diff options
context:
space:
mode:
Diffstat (limited to 'graphics')
-rw-r--r--graphics/asymptote/ChangeLog488
-rw-r--r--graphics/asymptote/GUI/icons_rc.py374
-rw-r--r--graphics/asymptote/INSTALL6
-rw-r--r--graphics/asymptote/LspCpp/third_party/uri/CMakeFiles/CMakeDirectoryInformation.cmake6
-rw-r--r--graphics/asymptote/LspCpp/third_party/uri/CMakeFiles/doc.dir/DependInfo.cmake4
-rw-r--r--graphics/asymptote/LspCpp/third_party/uri/CMakeFiles/doc.dir/build.make14
-rw-r--r--graphics/asymptote/LspCpp/third_party/uri/Doxyfile8
-rw-r--r--graphics/asymptote/LspCpp/third_party/uri/Makefile26
-rw-r--r--graphics/asymptote/LspCpp/third_party/uri/cmake_install.cmake6
-rw-r--r--graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/CMakeDirectoryInformation.cmake6
-rw-r--r--graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/DependInfo.cmake20
-rw-r--r--graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/build.make80
-rw-r--r--graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.internal2015
-rw-r--r--graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.make2313
-rw-r--r--graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/flags.make4
-rw-r--r--graphics/asymptote/LspCpp/third_party/uri/src/Makefile74
-rw-r--r--graphics/asymptote/LspCpp/third_party/uri/src/cmake_install.cmake4
-rw-r--r--graphics/asymptote/Makefile.in2
-rw-r--r--graphics/asymptote/README2
-rw-r--r--graphics/asymptote/ReleaseNotes16
-rw-r--r--graphics/asymptote/absyn.h2
-rw-r--r--graphics/asymptote/arrayop.h8
-rw-r--r--graphics/asymptote/asy-keywords.el8
-rw-r--r--graphics/asymptote/asy.list915
-rw-r--r--graphics/asymptote/asymptote.spec2
-rw-r--r--graphics/asymptote/base/asy-mode.el15
-rw-r--r--graphics/asymptote/base/plain_boxes.asy28
-rw-r--r--graphics/asymptote/base/plain_picture.asy11
-rw-r--r--graphics/asymptote/base/plain_scaling.asy26
-rw-r--r--graphics/asymptote/base/plain_shipout.asy9
-rw-r--r--graphics/asymptote/base/simplex2.asy310
-rw-r--r--graphics/asymptote/base/three.asy11
-rw-r--r--graphics/asymptote/base/v3dheadertypes.asy2
-rw-r--r--graphics/asymptote/base/v3dtypes.asy2
-rw-r--r--graphics/asymptote/binaries/i386-windows/README2
-rw-r--r--graphics/asymptote/binaries/x86_64-windows/README2
-rw-r--r--graphics/asymptote/builtin.cc4
-rw-r--r--graphics/asymptote/callable.h2
-rw-r--r--graphics/asymptote/camp.tab.h2
-rw-r--r--graphics/asymptote/camp.y2
-rw-r--r--graphics/asymptote/coder.cc2
-rw-r--r--graphics/asymptote/coder.h5
-rw-r--r--graphics/asymptote/common.h1
-rwxr-xr-xgraphics/asymptote/configure150
-rw-r--r--graphics/asymptote/configure.ac16
-rw-r--r--graphics/asymptote/dec.cc174
-rw-r--r--graphics/asymptote/dec.h53
-rw-r--r--graphics/asymptote/doc/CAD.pdfbin198650 -> 198650 bytes
-rw-r--r--graphics/asymptote/doc/FAQ/asy-faq.info2
-rw-r--r--graphics/asymptote/doc/TeXShopAndAsymptote.pdfbin81349 -> 81194 bytes
-rw-r--r--graphics/asymptote/doc/asy-latex.pdfbin209115 -> 209115 bytes
-rw-r--r--graphics/asymptote/doc/asyRefCard.pdfbin121145 -> 121145 bytes
-rw-r--r--graphics/asymptote/doc/asymptote.pdfbin1269364 -> 1249734 bytes
-rw-r--r--graphics/asymptote/doc/asymptote.texi538
-rw-r--r--graphics/asymptote/doc/basealign.asy (renamed from graphics/asymptote/examples/basealign.asy)0
-rw-r--r--graphics/asymptote/doc/png/asymptote.info1504
-rw-r--r--graphics/asymptote/entry.cc2
-rw-r--r--graphics/asymptote/entry.h2
-rw-r--r--graphics/asymptote/env.cc11
-rw-r--r--graphics/asymptote/env.h8
-rw-r--r--graphics/asymptote/errormsg.cc2
-rw-r--r--graphics/asymptote/examples/slope.asy2
-rw-r--r--graphics/asymptote/examples/teapot.asy4
-rw-r--r--graphics/asymptote/exp.h4
-rw-r--r--graphics/asymptote/fileio.h6
-rw-r--r--graphics/asymptote/fundec.h16
-rwxr-xr-xgraphics/asymptote/generate_enums.py8
-rw-r--r--graphics/asymptote/genv.cc41
-rw-r--r--graphics/asymptote/genv.h12
-rw-r--r--graphics/asymptote/glew.c7
-rw-r--r--graphics/asymptote/glrender.cc9
-rw-r--r--graphics/asymptote/glrender.h6
-rw-r--r--graphics/asymptote/item.h24
-rw-r--r--graphics/asymptote/main.cc9
-rw-r--r--graphics/asymptote/memory.h2
-rw-r--r--graphics/asymptote/newexp.cc2
-rw-r--r--graphics/asymptote/newexp.h10
-rw-r--r--graphics/asymptote/picture.cc5
-rw-r--r--graphics/asymptote/pkg.m4343
-rw-r--r--graphics/asymptote/program.cc4
-rw-r--r--graphics/asymptote/revision.cc2
-rw-r--r--graphics/asymptote/runmath.cc10
-rw-r--r--graphics/asymptote/runmath.in6
-rw-r--r--graphics/asymptote/runtime.cc9
-rw-r--r--graphics/asymptote/runtime.in10
-rw-r--r--graphics/asymptote/settings.cc4
-rw-r--r--graphics/asymptote/stack.cc51
-rw-r--r--graphics/asymptote/stack.h16
-rw-r--r--graphics/asymptote/stm.h4
-rw-r--r--graphics/asymptote/tests/TestLib.asy2
-rw-r--r--graphics/asymptote/tests/template/functionTest.asy20
-rw-r--r--graphics/asymptote/tests/template/imports/A.asy4
-rw-r--r--graphics/asymptote/tests/template/imports/B.asy1
-rw-r--r--graphics/asymptote/tests/template/imports/C.asy6
-rw-r--r--graphics/asymptote/tests/template/imports/composeFunctions.asy9
-rw-r--r--graphics/asymptote/tests/template/imports/notTemplate.asy4
-rw-r--r--graphics/asymptote/tests/template/imports/notTemplate2.asy4
-rw-r--r--graphics/asymptote/tests/template/imports/pureset.asy116
-rw-r--r--graphics/asymptote/tests/template/imports/sortedset.asy208
-rw-r--r--graphics/asymptote/tests/template/imports/splaytree.asy549
-rw-r--r--graphics/asymptote/tests/template/imports/structTemplate.asy36
-rw-r--r--graphics/asymptote/tests/template/imports/zip.asy5
-rw-r--r--graphics/asymptote/tests/template/initTest.asy23
-rw-r--r--graphics/asymptote/tests/template/multiImport.asy25
-rw-r--r--graphics/asymptote/tests/template/sortedsetTest.asy254
-rw-r--r--graphics/asymptote/tests/template/splaytreeTest.asy553
-rw-r--r--graphics/asymptote/tests/template/structTest.asy64
-rw-r--r--graphics/asymptote/v3dheadertypes.h2
-rw-r--r--graphics/asymptote/v3dheadertypes.py2
-rw-r--r--graphics/asymptote/v3dtypes.h2
-rw-r--r--graphics/asymptote/v3dtypes.py2
-rw-r--r--graphics/pgf/contrib/pgfgantt/README17
-rw-r--r--graphics/pgf/contrib/pgfgantt/pgfgantt-doc.pdfbin0 -> 661617 bytes
-rw-r--r--graphics/pgf/contrib/pgfgantt/pgfgantt.dtx348
-rw-r--r--graphics/pgf/contrib/pgfgantt/pgfgantt.ins11
-rw-r--r--graphics/pgf/contrib/pgfgantt/pgfgantt.pdfbin941473 -> 0 bytes
-rw-r--r--graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-en.pdfbin0 -> 746493 bytes
-rw-r--r--graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-en.tex1712
-rw-r--r--graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-fr.pdfbin801892 -> 804095 bytes
-rw-r--r--graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-fr.tex38
-rw-r--r--graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-examples-integrals.pdfbin0 -> 141889 bytes
-rw-r--r--graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-examples-integrals.tex251
-rw-r--r--graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-exemples-integrales.pdfbin141384 -> 141384 bytes
-rw-r--r--graphics/pgf/contrib/tkz-grapheur/tex/tkz-grapheur.sty2048
124 files changed, 11826 insertions, 4417 deletions
diff --git a/graphics/asymptote/ChangeLog b/graphics/asymptote/ChangeLog
index ef7b7897ea..d328718705 100644
--- a/graphics/asymptote/ChangeLog
+++ b/graphics/asymptote/ChangeLog
@@ -1,3 +1,440 @@
+commit 58246991e2474ffbd1bfe012d5d0a11407da7795
+Author: John Bowman <bowman@ualberta.ca>
+Date: Fri Jun 21 10:33:58 2024 -0700
+
+ Support latest osmesa.h (issue #433).
+
+commit 25eee09b986b2bf373a5bab21be4b0406bc2568a
+Author: John Bowman <bowman@ualberta.ca>
+Date: Fri Jun 21 00:09:15 2024 -0700
+
+ Install shaders without executable bit.
+
+commit 74af1955622ae40bbe4edc74cd197049a04684a9
+Author: John Bowman <bowman@ualberta.ca>
+Date: Fri Jun 21 00:08:00 2024 -0700
+
+ Avoid use of deprecated datetime.utcfromtimestamp function.
+
+commit 9cd341a78049695722a25d54be507ffd18cacb15
+Author: John Bowman <bowman@ualberta.ca>
+Date: Thu Jun 20 23:30:08 2024 -0700
+
+ Update documentation.
+
+commit 8455927794379406ea28be52adc7cc65262f9ea7
+Author: John Bowman <bowman@ualberta.ca>
+Date: Thu Jun 20 23:21:48 2024 -0700
+
+ Omit teapot regularization.
+
+commit 5099d297e6a950c8917a21be9bf15d75e7855e6a
+Author: John Bowman <bowman@ualberta.ca>
+Date: Thu Jun 20 19:04:49 2024 -0700
+
+ Fix discussion of deferred drawing.
+
+commit b0cba406177a0bbee1428ac2e36f886cccdc5b94
+Author: John Bowman <bowman@ualberta.ca>
+Date: Wed Jun 19 23:59:31 2024 -0700
+
+ Replace ImageMagick convert by magick convert.
+
+commit 4d15930f3a4aa8ca4f4616276678e9b1537c27a4
+Author: John Bowman <bowman@ualberta.ca>
+Date: Wed Jun 19 19:00:15 2024 -0700
+
+ Fix documentation.
+
+commit b2dba448eb7e579f9f1e382c3c22c3e1be439e1c
+Merge: eca567a5 154a9d93
+Author: John Bowman <bowman@ualberta.ca>
+Date: Wed Jun 19 18:43:30 2024 -0700
+
+ Merge pull request #439 from jkseppan/flycheck
+
+ Integrate with flycheck
+
+commit eca567a539a7bf2b1beb5a3e1871c9c3db276e94
+Author: John Bowman <bowman@ualberta.ca>
+Date: Wed Jun 19 18:37:05 2024 -0700
+
+ Apply pull request #452, with a few modifications.
+
+commit e36ea98c063075bd48a44410c8de1fc173d354c7
+Author: John Bowman <bowman@ualberta.ca>
+Date: Wed Jun 19 17:28:47 2024 -0700
+
+ Update documentation.
+
+commit 7d063bebcf040ab417c770941676df92b669e13e
+Author: John Bowman <bowman@ualberta.ca>
+Date: Wed Jun 19 15:11:17 2024 -0700
+
+ Replace tabs in error messages by 2 spaces (issue #444).
+
+commit 39dff901f9c36de254710b57381dc4b83a636f63
+Author: John Bowman <bowman@ualberta.ca>
+Date: Wed Jun 19 13:50:40 2024 -0700
+
+ Fix approximate transparency rendering for GPUs without SSBO support (issue #462).
+
+commit 99bd09380ddd649d3d6060dda12320e2dc8ed10b
+Author: John Bowman <bowman@ualberta.ca>
+Date: Wed Jun 19 10:35:08 2024 -0700
+
+ Pass PKG_FLAGS to AC_CHECK_LIB (issue # 461).
+
+commit 216e2ef85fe61c959d2163f8c7c5f4faca87d840
+Author: John Bowman <bowman@ualberta.ca>
+Date: Wed Jun 19 09:41:16 2024 -0700
+
+ Change add(picture dest, picture src, pair position) to respect a size specification for src (see issue #450).
+ This change is backwards incompatible only in cases where src is given a size specification; the previous behaviour can then be obtained with
+
+ add(dest,src.fit(identity()),position).
+
+commit 4cbd256f23a940f60b54c1ea4df1fe2febe101dd
+Author: John Bowman <bowman@ualberta.ca>
+Date: Wed Jun 19 09:40:04 2024 -0700
+
+ Fix example.
+
+commit c7f016286dffc4cd1805d7541d50e17d05805527
+Author: John Bowman <bowman@ualberta.ca>
+Date: Sun Jun 16 23:46:09 2024 -0700
+
+ Avoid duplicate code.
+
+commit d3ad8b5fd85a0ba900c4933acb013e501e473bb1
+Author: John Bowman <bowman@ualberta.ca>
+Date: Sun Jun 16 20:23:45 2024 -0700
+
+ Qualify call to glutSetOption.
+
+commit 9a776cfe4d3bf6b01c7c5340745aa5b0fc9bd707
+Author: John Bowman <bowman@ualberta.ca>
+Date: Sun Jun 16 15:48:31 2024 -0700
+
+ Update URL.
+
+commit 9cf74052039f62dc4f4c810cd0a0b133d977433d
+Author: John Bowman <bowman@ualberta.ca>
+Date: Thu Jun 13 17:44:57 2024 -0700
+
+ Reset terminal on exit.
+
+commit af44b79a8b008c6e2bcc3a422cdc28adb78d25d0
+Author: John Bowman <bowman@ualberta.ca>
+Date: Thu Jun 13 08:29:49 2024 -0700
+
+ Exit glut gracefully.
+
+commit c7250761093ba84f3db1c948d3fc4effcfb8d32a
+Author: John Bowman <bowman@ualberta.ca>
+Date: Thu Jun 13 08:02:34 2024 -0700
+
+ Don't show target for empty pictures.
+
+commit 1d4dfcae1950fcfce44ed109260b39f0e6dbb45f
+Author: John Bowman <bowman@ualberta.ca>
+Date: Wed Jun 12 23:46:42 2024 -0700
+
+ Fix erase.
+
+commit 237a30626c2167f1269dd2ec8b6910569f569e5f
+Author: John Bowman <bowman@ualberta.ca>
+Date: Tue Jun 11 23:29:34 2024 -0700
+
+ Don't warn if there are no constraints.
+
+commit 45912ba5dc3aa458ce25fc04d569fbe430238c13
+Author: John Bowman <bowman@ualberta.ca>
+Date: Tue Jun 11 23:29:11 2024 -0700
+
+ Only output a 3D picture when not up to date.
+
+commit 590b89237b2b2d61d310380313e9e61d2329d22e
+Author: John Bowman <bowman@ualberta.ca>
+Date: Tue Jun 11 20:09:50 2024 -0700
+
+ Decouple scaling of each dimension with a fixed version of the original 2-variable simplex method (see commit 401cf60f89dcddfb6993f7bd25a86b144ec5f3ad and issue #72).
+
+commit 8b307db4402ec7ad1bf1d1f3559140acaa4863e2
+Author: John Bowman <bowman@ualberta.ca>
+Date: Sun Jun 9 08:15:36 2024 -0700
+
+ Fix DEBUG_FRAME warning.
+
+commit 1c16640576c9b96926f9f76e06b81f0f68fd1714
+Author: John Bowman <bowman@ualberta.ca>
+Date: Sun Jun 9 08:10:30 2024 -0700
+
+ Remove unused argument to stack::load.
+
+commit 786fc0fb3da2fb0e3f4b1dd94aa3548b4a06ad56
+Author: John Bowman <bowman@ualberta.ca>
+Date: Sat Jun 8 23:07:21 2024 -0700
+
+ Update documentation of templated imports.
+
+commit f153c484aca2ead08683cbfb2a5afbcafef1c703
+Author: Charles Staats III <charles.staats.iii@gmail.com>
+Date: Sat Jun 8 19:40:39 2024 -0700
+
+ Test template for nested imports.
+
+commit 61c6d2be12bfad7239ff4f6733ba1a66b84f4d26
+Author: John Bowman <bowman@ualberta.ca>
+Date: Sat Jun 8 19:23:03 2024 -0700
+
+ Support templated imports for parameter types defined in imported modules.
+
+commit 575ef4298a22e175dc2201b4c91f1cf6f8511a0e
+Author: John Bowman <bowman@ualberta.ca>
+Date: Tue Jun 4 21:07:41 2024 -0700
+
+ Partially revert commit 45b84def56e7c4af6a9f0e9546bf92f90c9a22af.
+
+commit 12e20a7be326f05d5e5d7a555a0f9ceb29becce1
+Author: Charles Staats III <charles.staats.iii@gmail.com>
+Date: Sun Jun 2 21:27:29 2024 -0700
+
+ Add more thorough test of struct template.
+
+commit 772a3e4d0efa95367f547159bb86dd9f436abd18
+Author: John Bowman <bowman@ualberta.ca>
+Date: Sun Jun 2 17:39:49 2024 -0700
+
+ Remove automatic recordInitializer for imported templates; add test.
+
+commit 3f6f4361af778517867837b79cc56db28e791935
+Author: Charles Staats III <charles.staats.iii@gmail.com>
+Date: Sun Jun 2 13:28:17 2024 -0700
+
+ Add import de-duplication tests.
+
+commit 600c54f7669d23bf57beaee991773f1b301720ef
+Author: Charles Staats III <charles.staats.iii@gmail.com>
+Date: Sun Jun 2 12:52:08 2024 -0700
+
+ Minor readability improvements.
+
+commit d22b41fb0e7eaf2290951409abf2f867aa317850
+Author: John Bowman <bowman@ualberta.ca>
+Date: Sat Jun 1 23:39:39 2024 -0700
+
+ Defer pushing qualified tyEntries until actually loading a templated module.
+
+commit 70346afc6d421c5b102a35f7b9bde8109082ef71
+Author: John Bowman <bowman@ualberta.ca>
+Date: Sat Jun 1 21:00:12 2024 -0700
+
+ Remove unused code.
+
+commit 8c9e05a2f239390a3ce0fa9fc236027ac3d8bfb1
+Author: John Bowman <bowman@ualberta.ca>
+Date: Sat Jun 1 20:50:57 2024 -0700
+
+ Revert "Revert "Initialize structs declared within templated imports.""
+
+ This reverts commit 315ca8cbe34cee0b5079bd669060b568da7b342a.
+
+commit e5590f72c74f43840ae87d411f4791b200a7a3e3
+Author: John Bowman <bowman@ualberta.ca>
+Date: Sat Jun 1 20:37:57 2024 -0700
+
+ Support templated access with types containing static fields.
+
+commit a697a52388f0e07797ac5eaa8d00c419337d0c7b
+Author: John Bowman <bowman@ualberta.ca>
+Date: Sat Jun 1 19:30:28 2024 -0700
+
+ Simplify code.
+
+commit 57539e7ae5f20414d936730e57120106a8ef3f44
+Author: John Bowman <bowman@ualberta.ca>
+Date: Sat Jun 1 19:28:25 2024 -0700
+
+ Simplify code.
+
+commit 1e51fe661e819f13446288f2cdb47b7688f499e7
+Author: Charles Staats III <charles.staats.iii@gmail.com>
+Date: Sat Jun 1 15:40:15 2024 -0700
+
+ Only pop qualifiers for records.
+
+commit 45b84def56e7c4af6a9f0e9546bf92f90c9a22af
+Author: John Bowman <bowman@ualberta.ca>
+Date: Sat Jun 1 13:24:36 2024 -0700
+
+ Support templated access with imported and top-level structure types.
+
+commit db67e9101801809cc15e4e34de72c8c41a60b18b
+Author: John Bowman <bowman@ualberta.ca>
+Date: Thu May 30 20:55:20 2024 -0700
+
+ Simplify code.
+
+commit 6faf168867f0a7dd3930b6cf0d74fc4e3333ddd0
+Merge: 7dfdaf3c be47ce98
+Author: Charles Staats III <charles.staats.iii@gmail.com>
+Date: Thu May 30 19:50:04 2024 -0700
+
+ Merge branch 'rename' into template
+
+commit be47ce9838e0a92dd026fbb1df0532edca5a2e1a
+Author: Charles Staats III <charles.staats.iii@gmail.com>
+Date: Wed May 29 22:43:42 2024 -0700
+
+ Rename types::tyTy back to types::ty.
+
+commit 79f526207906986ac2a86414bdece4dffeb12781
+Author: Charles Staats III <charles.staats.iii@gmail.com>
+Date: Wed May 29 22:36:20 2024 -0700
+
+ Rename absyntax::ty to absyntax::astType.
+
+commit 092fc985e8be1cfd88f2045fe39e981bd110f0be
+Author: Charles Staats III <charles.staats.iii@gmail.com>
+Date: Wed May 29 22:19:31 2024 -0700
+
+ Change some macro-gated ty to tyTy.
+
+commit 94451536b4a372c4fb5f15b928377174c8e17311
+Author: Charles Staats III <charles.staats.iii@gmail.com>
+Date: Wed May 29 22:13:06 2024 -0700
+
+ Change `#if SIMPLE_FRAME` to `#ifdef SIMPLE_FRAME` for consistency.
+
+commit 7dfdaf3c418ddb0d2471cea99eb0bcaeaec8c6a7
+Merge: ecb912d9 122092fa
+Author: John Bowman <bowman@ualberta.ca>
+Date: Wed May 29 21:02:20 2024 -0700
+
+ Merge branch 'master' into template.
+
+commit 122092fa8a238ac101e9b7dcd6316be919e069ea
+Author: John Bowman <bowman@ualberta.ca>
+Date: Wed May 29 20:53:21 2024 -0700
+
+ Work around missing pkg-config files.
+
+commit 2d3fc31c89786cf7edfb8ee85e02fce60b483570
+Author: Charles Staats III <charles.staats.iii@gmail.com>
+Date: Wed May 29 14:51:49 2024 -0700
+
+ Rename vm::frame to vm::vmFrame to avoid confusion with trans::frame.
+
+commit c2cd04a91d1bc7e1fb8e45737d7d45a22344ca1f
+Author: Charles Staats III <charles.staats.iii@gmail.com>
+Date: Wed May 29 14:51:13 2024 -0700
+
+ Output linebreak in testLib to improve error message readability.
+
+commit 3bc8e52d1eedf0956785e6214a462172f5820656
+Author: Charles Staats III <charles.staats.iii@gmail.com>
+Date: Wed May 29 12:57:35 2024 -0700
+
+ Rename types::ty to types::tyTy to distinguish it from absyntax::ty.
+
+commit ecb912d95d3cb9c9595e82f8de8bfaf1dfa9e8ba
+Merge: 193c933f 684570c8
+Author: John Bowman <bowman@ualberta.ca>
+Date: Tue May 28 10:15:51 2024 -0700
+
+ Merge branch 'master' into template.
+
+commit 193c933fed79c9d12527ee32f249e7c70812af35
+Author: Charles Staats III <charles.staats.iii@gmail.com>
+Date: Tue May 28 10:02:01 2024 -0700
+
+ WIP: Correctly qualify tyEntries for template parameters.
+
+commit 684570c8872a2e93ef86a6ef456a0599a934bf12
+Author: John Bowman <bowman@ualberta.ca>
+Date: Mon May 27 19:50:24 2024 -0700
+
+ Ship with pkg.m4 to support pkg-config.
+
+commit de439f6d57b43871dbb3d23f5a9ab8c9af9c4ef2
+Merge: 518077fd e369a22f
+Author: John Bowman <bowman@ualberta.ca>
+Date: Thu May 23 22:52:55 2024 -0700
+
+ Merge branch 'master' into template.
+
+commit e369a22fd851e63c2f1e75b098a572778f932d86
+Author: John Bowman <bowman@ualberta.ca>
+Date: Thu May 23 22:52:21 2024 -0700
+
+ Support COMPACT=0 again.
+
+commit 518077fd67809c0b847982708e7695405d51ea03
+Author: John Bowman <bowman@ualberta.ca>
+Date: Thu May 23 21:17:55 2024 -0700
+
+ Improve 32 bit integer detection macro.
+
+commit c451de132d783606f8aee2c8bd6214f1a972de3e
+Author: John Bowman <bowman@ualberta.ca>
+Date: Wed May 22 22:04:30 2024 -0700
+
+ Remove obsolete code.
+
+commit eee7be909c837074d690f5377324940c1c22556b
+Author: John Bowman <bowman@ualberta.ca>
+Date: Wed May 22 21:57:45 2024 -0700
+
+ Revert "Remove obsolete code."
+
+ This reverts commit 82da5932f7dfa59337840abfec723de14edaee98.
+
+commit 82da5932f7dfa59337840abfec723de14edaee98
+Author: John Bowman <bowman@ualberta.ca>
+Date: Tue May 21 23:31:34 2024 -0700
+
+ Remove obsolete code.
+
+commit 652038f70d54f8fce993312063897b7d67e26649
+Author: John Bowman <bowman@ualberta.ca>
+Date: Tue May 21 23:21:00 2024 -0700
+
+ Avoid particular compile error if Int=int.
+
+commit 03916a9cd8a2cab8c6b8ebd48c4b9aa2be03a339
+Author: John Bowman <bowman@ualberta.ca>
+Date: Tue May 21 23:12:58 2024 -0700
+
+ Revert "Avoid particular compile error if Int=int."
+
+ This reverts commit 6e8222e13ad71b03376c84f259bf126944beb303.
+
+commit 8fbeeaa6bb7a84be36942b0622294391e46783de
+Author: John Bowman <bowman@ualberta.ca>
+Date: Fri May 17 16:03:19 2024 -0700
+
+ Fix documentation.
+
+commit 154a9d938d5c97aa75e83a88ef3de22444d422a5
+Author: Jouni K. Seppänen <jks@iki.fi>
+Date: Fri Apr 5 15:21:57 2024 +0300
+
+ Integrate with flycheck
+
+ Flycheck is the modern way to do on-the-fly syntax checking
+ and linting in Emacs: https://www.flycheck.org/en/latest/index.html
+
+ This adds a checker if flycheck is loaded. The checker uses the
+ user-defined asy command, with -noV to avoid creating a new viewer,
+ and a temporary file as the output target.
+
+commit 8371bce0828789ba8d991a3e57b5314fd9278bf6
+Author: John Bowman <bowman@ualberta.ca>
+Date: Sun Mar 24 20:30:32 2024 -0700
+
+ Increment version to 2.90.
+
commit 92e96dde395fdb9707bd1bb9960e83146411ffa1
Author: John Bowman <bowman@ualberta.ca>
Date: Sat Mar 23 14:12:38 2024 -0700
@@ -34,6 +471,19 @@ Date: Sat Mar 23 13:58:31 2024 -0700
origin: "???"
commit: "???"
+commit 6e8222e13ad71b03376c84f259bf126944beb303
+Author: Charles Staats III <charles.staats.iii@gmail.com>
+Date: Fri Mar 22 18:45:11 2024 -0700
+
+ Avoid particular compile error if Int=int.
+
+commit 63359273ebbd562fcd5f269eb08e5ce2d59bd1bf
+Merge: 4e0d0dcb d3f67352
+Author: Charles Staats III <charles.staats.iii@gmail.com>
+Date: Fri Mar 22 09:26:47 2024 -0700
+
+ Merge branch 'template' of https://github.com/vectorgraphics/asymptote into template
+
commit 315ca8cbe34cee0b5079bd669060b568da7b342a
Author: John Bowman <bowman@ualberta.ca>
Date: Thu Mar 21 22:23:47 2024 -0700
@@ -42,6 +492,44 @@ Date: Thu Mar 21 22:23:47 2024 -0700
This reverts commit 12baa706a2162acd5a555af922105a4061fbd0f8.
+commit d3f67352cda9f7ad6cb52eb15b925ec594a923af
+Author: John Bowman <bowman@ualberta.ca>
+Date: Thu Mar 21 22:21:43 2024 -0700
+
+ Update last revision.
+
+commit 719c11747ff45acd7f0cf4b8810b4170f74c3b90
+Author: John Bowman <bowman@ualberta.ca>
+Date: Thu Mar 21 22:05:05 2024 -0700
+
+ Add templated import initialization test.
+
+commit 4e0d0dcb17b53f9a427154b0ac6775ed2ba8e2d7
+Author: Charles Staats III <charles.staats.iii@gmail.com>
+Date: Thu Mar 21 20:12:38 2024 -0700
+
+ Mostly cosmetic changes.
+
+commit 84eceac38b494271aaf4063a8c568a3e9f46f20a
+Author: Charles Staats III <charles.staats.iii@gmail.com>
+Date: Wed Mar 20 14:20:35 2024 -0700
+
+ Remove no-longer-needed workaround.
+
+commit a2f2984eeed93a70a148f49f1d5ce9ff4be9ddea
+Author: Charles Staats III <charles.staats.iii@gmail.com>
+Date: Wed Mar 20 14:02:16 2024 -0700
+
+ Revert "Initialize structs declared within templated imports."
+
+ This reverts commit 12baa706a2162acd5a555af922105a4061fbd0f8.
+
+commit ce9a9ce520cebbc6ea508e12b53542a0d14a92ea
+Author: Charles Staats III <charles.staats.iii@gmail.com>
+Date: Wed Mar 20 14:01:37 2024 -0700
+
+ Add additional tests from datastructures branch.
+
commit 033715655b4165ba2d00aaf9640bfb9b505d593a
Merge: 2bc14502 de239a50
Author: Charles Staats III <charles.staats.iii@gmail.com>
diff --git a/graphics/asymptote/GUI/icons_rc.py b/graphics/asymptote/GUI/icons_rc.py
index ba173f94ff..8fca5b33ee 100644
--- a/graphics/asymptote/GUI/icons_rc.py
+++ b/graphics/asymptote/GUI/icons_rc.py
@@ -2,7 +2,7 @@
# Resource object code
#
-# Created by: The Resource Compiler for PyQt5 (Qt v5.15.12)
+# Created by: The Resource Compiler for PyQt5 (Qt v5.15.14)
#
# WARNING! All changes made in this file will be lost!
@@ -381,42 +381,42 @@ qt_resource_data = b"\
\x34\x2e\x36\x31\x33\x2c\x31\x38\x2e\x33\x35\x34\x2c\x31\x30\x2c\
\x31\x38\x2e\x33\x35\x34\x7a\x22\x2f\x3e\x0a\x3c\x2f\x67\x3e\x0a\
\x3c\x2f\x73\x76\x67\x3e\x0a\
-\x00\x00\x02\x1c\
+\x00\x00\x02\x1f\
\x00\
-\x00\x07\x5c\x78\x9c\xdd\x55\x4d\x73\x9b\x30\x10\xbd\xf7\x57\x6c\
-\xa7\x07\x25\x07\x84\xbe\x10\x28\x13\x92\x99\x7a\xa6\xa7\xf4\x96\
-\x5c\x7a\xc3\x41\x80\x1a\x0c\x1e\xa0\xc6\xfd\xf7\x95\x6d\x49\x76\
-\x69\x33\xbd\xe4\xd0\x89\x0f\x98\xf7\x56\x6f\xd9\xb7\xcb\x0e\xb7\
-\xf7\xfb\x4d\x0b\x3b\x3d\x8c\xa6\xef\x72\x44\x31\x41\xa0\xbb\xe7\
-\xbe\x34\x5d\x9d\xa3\xa7\xc7\x2f\x51\x86\xee\xef\x3e\xdc\x7e\x8c\
-\x22\x78\x6c\xcc\x08\x95\x69\x35\xcc\xc5\x08\xb5\xee\xf4\x50\x4c\
-\xba\x84\xf5\x4f\x28\x77\x66\xdc\xd5\x1b\x60\x98\x52\x4c\x21\x8a\
-\xac\xc4\x12\x97\x89\x29\x02\xfb\xa8\x6e\xcc\x51\x33\x4d\xdb\x9b\
-\x38\x9e\xe7\x19\xcf\x1c\xf7\x43\x1d\x33\x42\x48\x6c\xcf\xbb\x23\
-\x37\xfb\xd6\x74\x2f\x7f\x3b\x48\x95\x52\xf1\x31\x8a\x60\x36\xe5\
-\xd4\xe4\x48\x72\x6c\x49\xb9\x9d\x10\x34\xda\xd4\xcd\x64\x29\x71\
-\x40\x3b\xa3\xe7\xcf\xfd\x3e\x47\x89\xc4\x82\x28\x01\x94\xa6\x38\
-\x4b\x32\x70\x0a\x90\x02\xd9\x32\x6b\x30\x65\x8e\xb6\x45\xad\xe9\
-\x09\x4e\x43\xd1\x8d\x55\x3f\x6c\x72\x74\xbc\x6d\xad\xc9\xab\x45\
-\x8e\xeb\xf1\xb9\x68\xf5\x95\xcd\x23\x99\x14\xd7\x07\xe1\xb6\x98\
-\x1a\xb0\x99\xbe\x82\xc2\x5c\xa4\x82\x81\x60\x38\x15\x29\x7b\x08\
-\x44\x22\x70\xa6\x98\xfc\x83\x58\x2d\x89\x7f\xe1\x0b\x81\xc2\x24\
-\x13\x0a\xa8\xc2\x89\xe0\x14\x24\xc3\x22\xe3\x02\xb8\x9d\x04\xf3\
-\x68\x05\x42\x60\xa9\xa4\x0a\x61\x9f\xd7\xcb\x03\xf6\x15\xbe\x4a\
-\x04\x53\x9e\xe0\x04\x4b\x42\xb3\x55\x20\xd8\xb1\x55\x49\x78\x26\
-\xe3\x98\x50\xea\x2a\x3a\x81\x55\xa8\xd7\x05\xbd\x1d\xaf\xf5\xd8\
-\x25\x7f\x58\xf6\xf4\x1b\x3a\xbc\x88\x6d\x8e\x3e\xad\xab\x75\x55\
-\x55\x28\xb6\x13\x88\xeb\xb7\x99\x5f\x30\x22\x70\xc2\x14\xbd\x70\
-\x46\x30\xe7\x32\x0b\xce\xa8\xc4\x8a\x67\xdc\x59\x73\xe8\xec\xcd\
-\x87\x83\x39\x27\x0f\xd8\xe7\x0f\x44\x86\x53\x46\x93\x90\xe0\x94\
-\xf7\xe2\x7a\x1e\xe4\x89\x0c\x85\x39\xe1\xa2\xf2\xd0\xa5\xae\xef\
-\x34\x82\x71\x1a\xfa\x17\x6d\x7b\x46\x8e\x3f\x4f\x44\x76\x9d\xf4\
-\x73\xb1\xcd\xd1\xd0\xff\xe8\xca\xdf\xe8\xef\xbd\xe9\x96\xfc\xc6\
-\x4c\x7a\x68\x8d\xfd\xb3\x6b\x4d\x30\xe1\x69\x12\x62\x6e\x27\x39\
-\x4e\x28\xa7\xec\x4d\xa7\xb2\xe8\xda\xfb\xda\x2a\x67\xea\x3d\xcd\
-\xeb\xd5\x2d\xb2\x5f\x08\x95\x30\x76\xde\x22\x9c\x26\x32\x91\x7e\
-\x8b\x4e\xe8\x62\x8b\x5c\xd8\xcf\xc6\xcb\x17\xef\xc3\x7f\xd3\xba\
-\xd3\xc5\x7e\xcc\xee\x7e\x01\xb3\x30\xdb\xa9\
+\x00\x07\x5c\x78\x9c\xdd\x53\x3d\x6f\xdb\x30\x10\xdd\xfd\x2b\xae\
+\xc8\xc0\x64\xf0\x89\x5f\xa2\xc4\xc0\x74\x80\x1a\xe8\x94\x6e\xc9\
+\xd2\x4d\xb6\x68\x99\x8d\x2c\x19\x92\x2a\xb9\xff\xbe\x88\x2d\xd2\
+\xae\xda\xa0\x4b\x86\x22\x1a\x08\xbd\x77\x7a\xa7\x7b\x77\xbc\xc5\
+\xc3\x71\x5f\x42\x6f\x9b\xd6\xd5\x95\x21\x0c\x29\x01\x5b\x6d\xea\
+\xdc\x55\x85\x21\xcf\x4f\x5f\xe6\x29\x79\x58\xce\x16\x9f\xe6\x73\
+\x78\xda\xb9\x16\xb6\xae\xb4\x30\x64\x2d\x14\xb6\xb2\x4d\xd6\xd9\
+\x1c\xd6\x3f\x21\xef\x5d\xdb\x17\x7b\xe0\xc8\x18\x32\x98\xcf\x97\
+\xb3\x45\xdb\x17\xd7\x89\x19\x81\xe3\xbe\xac\x5a\x43\x76\x5d\x77\
+\xb8\x8f\xa2\x61\x18\x70\x10\x58\x37\x45\xc4\x29\xa5\x51\xdb\x17\
+\xe3\x27\xf7\xc7\xd2\x55\x2f\x7f\xfb\x90\x69\xad\xa3\x53\x94\xc0\
+\xe0\xf2\x6e\x67\x88\x12\xa8\xb5\x56\x87\x8e\xc0\xce\xba\x62\xd7\
+\x19\xa2\xe4\x2b\xea\x9d\x1d\x3e\xd7\x47\x43\x62\x85\x92\x6a\x09\
+\x8c\x25\x98\xc6\x29\x8c\x0a\x50\x92\x2c\x67\x8b\x02\x5c\x6e\xc8\
+\x21\x2b\x2c\x3b\xc3\xae\xc9\xaa\x76\x5b\x37\x7b\x43\x4e\xaf\x65\
+\xd6\xd9\xdb\x49\x8e\xbb\x76\x93\x95\xf6\x16\xb5\x56\x5c\xc9\xbb\
+\x57\xe1\x21\xeb\x76\x90\x1b\xf2\x15\x34\x0a\x99\x48\x0e\x92\x63\
+\x22\x13\xfe\x18\x88\x58\x62\xaa\xb9\xfa\x83\x58\x4d\x89\x7f\xe1\
+\x2b\x81\x46\x9a\x4a\x0d\x4c\x63\x2c\x05\x03\xc5\x51\xa6\x42\x82\
+\xe0\xc8\xb8\x47\x2b\x90\x12\x95\x56\x3a\x84\x7d\x5e\x2f\x0f\xd8\
+\x57\xf8\x26\x11\x4c\x79\x42\x50\x54\x94\xa5\xab\x40\xf0\x53\xab\
+\xe2\xf0\x4f\x2e\x90\x32\x36\x56\x74\x06\xab\x50\xef\x18\xf4\x76\
+\xbc\xd6\xe3\x31\xf9\xe3\xb4\xa7\xdf\xc8\xeb\x45\x2c\x0d\xb9\x59\
+\x6f\xd7\xdb\xed\x96\x44\xcb\xd9\x22\x2a\xde\x67\x7e\xc1\x88\xc4\
+\x98\x6b\x76\xe5\x8c\xa2\x10\x2a\x0d\xce\x98\x42\x2d\x52\x31\x5a\
+\x1b\xd1\xc5\x9b\x0f\x07\x73\xa3\x3c\x60\x9f\x3f\x10\x29\x26\x9c\
+\xc5\x21\xc1\x39\xef\xd5\x79\x19\xe4\x99\x0c\x85\x8d\xc2\x49\xe5\
+\xa1\x4b\x55\x5d\x59\x02\x6d\xd7\xd4\x2f\xd6\x90\x1b\x7a\x7a\x3c\
+\x31\x2f\x5d\x65\x37\xd9\xc1\x90\xa6\xfe\x51\xe5\xbf\xd1\xdf\x6b\
+\x57\x4d\xf9\xbd\xeb\x6c\x53\xba\xbd\xeb\x0c\x61\x14\xa9\x48\xe2\
+\x10\x1b\x77\x52\x60\xcc\x04\xe3\xef\x3a\x95\x49\xd7\x3e\xd6\x56\
+\x8d\xa6\x3e\xd2\xbc\xde\xdc\x22\xc6\x50\xc7\x9c\x5f\xb6\x08\x93\
+\x58\xc5\xca\x6f\xd1\x19\x5d\x6d\xd1\x18\xf6\xb3\xf1\xf2\xc9\x7d\
+\xf8\x6f\x5a\x77\x3e\xda\xbe\x58\xfe\x02\xb3\x30\xdb\xa9\
\x00\x00\x03\x2a\
\x3c\
\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
@@ -1468,38 +1468,38 @@ qt_resource_data = b"\
\x30\x36\x20\x34\x31\x36\x2c\x31\x31\x30\x20\x09\x09\x09\x22\x2f\
\x3e\x0a\x09\x09\x3c\x2f\x67\x3e\x0a\x09\x3c\x2f\x67\x3e\x0a\x3c\
\x2f\x67\x3e\x0a\x3c\x2f\x73\x76\x67\x3e\x0a\
-\x00\x00\x01\xd8\
+\x00\x00\x01\xdd\
\x00\
-\x00\x06\xc4\x78\x9c\xcd\x54\x4d\x6f\x9b\x40\x10\x3d\xe3\x5f\x31\
-\xdd\x5b\x25\xf6\x0b\x62\x62\x53\xe3\xa8\xfe\x90\x65\x29\x6d\x2d\
-\x35\x75\xd5\x53\x85\x61\x0b\x28\x14\x10\x2c\x60\xe7\xd7\x77\x77\
-\xed\x54\xa9\x14\x5f\x43\x0f\x3b\xab\x9d\x79\xf3\xe6\x0d\x4f\x62\
-\x76\x77\xfc\x9d\x43\x27\xea\x26\x2b\x8b\x00\x71\xc2\x10\x88\x22\
-\x2a\xe3\xac\x48\x02\xd4\xca\x5f\x78\x82\xee\xe6\xa3\xd9\x3b\x8c\
-\x61\x23\x0a\x51\x87\xb2\xac\x7d\xf8\x18\x97\x07\x01\xdb\x3c\x6f\
-\x1b\x69\x52\xc0\x3d\xe2\x10\x6e\xc3\xd7\xfd\x06\xd6\xc7\xaa\xac\
-\x25\xec\xf2\x36\xc1\xdb\x02\x88\x49\xee\xcf\x33\x7c\xf0\x08\x63\
-\xb0\x68\xb3\x3c\x06\xf6\x1e\x00\x63\x4d\xbf\xfa\xb2\x7c\xf8\xb1\
-\x5b\x43\xd3\x25\xb0\xfb\xb6\xb8\xdf\x2e\x01\x61\x4a\xbf\xbb\x4b\
-\x4a\x57\x0f\x2b\xc3\xc0\x09\xa7\x74\xfd\x19\x01\x4a\xa5\xac\x7c\
-\x4a\xfb\xbe\x27\xbd\x4b\xca\x3a\xa1\x9b\x3a\xac\xd2\x2c\x6a\xa8\
-\x02\x52\x0d\x54\x4d\x54\x91\x71\x4e\x62\x19\x23\x35\x42\x33\xbf\
-\xd8\x93\x23\xc8\xe2\x00\xdd\x87\x27\x51\xff\x54\x0f\xf5\x19\x8a\
-\x26\x78\x85\xd9\x61\x8c\x69\xa6\x0b\xc4\x3f\xe6\x59\xf1\xf8\x1a\
-\x90\x4f\xa7\x53\x6a\xaa\x0a\x1a\x20\x56\x1d\x11\x9c\xce\xf7\xc8\
-\x82\x3e\x8b\x65\x1a\xa0\x31\x77\x74\x3e\x15\x59\x92\xca\xbf\xcf\
-\x2e\x13\xfd\xa2\xd4\x4d\xc0\x40\xe5\xf4\x41\xd0\xc8\x53\x2e\x02\
-\x24\x8a\xf0\x90\x0b\x7c\x08\xa3\xc7\xa4\x2e\xdb\x22\xf6\x0b\xd1\
-\xc3\x0b\xe4\x07\x23\xcd\x6f\xaa\x30\x52\xf0\xaa\x16\x8d\xa8\x3b\
-\xa1\x77\x4e\xe6\x23\xcb\x04\x6b\x56\x85\x32\x05\xb5\xf0\x27\xee\
-\x31\x9b\x8f\x5d\xe2\x46\xcc\x76\xc9\x2d\x76\x6d\x4f\x45\x75\xf4\
-\x9d\xe2\x31\x23\xe3\x08\xab\x82\xcd\x74\x12\xbb\xf8\x52\xee\xce\
-\x25\x66\x6a\xee\x73\x83\xbe\x53\x53\x30\x2d\x3a\x65\x1b\x46\x7d\
-\xf6\x66\xce\x93\x5a\xdf\xb2\xe8\xbf\x2a\x9c\xc9\xe4\x3f\x50\x71\
-\xc3\xbd\xa1\x54\xcc\xe8\x35\x73\x9c\x09\x7f\x13\x41\x66\xce\x55\
-\x73\x86\x57\xa1\xcd\x19\x48\xc5\x75\x73\x6e\xd8\xf4\x4d\x04\x99\
-\x39\x57\xcd\x19\x5e\x85\x36\x67\x20\x15\xc6\x9c\x4b\x50\xff\xe5\
-\xf9\xe8\x0f\x44\x1a\x94\x79\
+\x00\x06\xc4\x78\x9c\xcd\x51\x4d\x8f\x9b\x30\x14\x3c\xc3\xaf\x78\
+\xf5\xad\x12\xfe\x82\x85\x24\x14\xb2\x6a\x3e\x14\x45\xda\xb6\x91\
+\x36\x4d\xd5\x53\x45\xc0\x05\xb4\x2c\x20\x70\x80\xf4\xd7\x57\x76\
+\xd2\x6a\x2b\x6d\xae\x4b\x0f\xf6\x93\x67\xde\x9b\x37\xd6\x04\xf7\
+\xc3\x73\x01\x9d\x68\xda\xbc\x2a\x43\xc4\x09\x43\x20\xca\xb8\x4a\
+\xf2\x32\x0d\xd1\x49\xfe\xc4\x53\x74\x3f\x37\x83\x77\x18\xc3\x46\
+\x94\xa2\x89\x64\xd5\xf8\xf0\x31\xa9\x8e\x02\xb6\x45\x71\x6a\xa5\
+\x86\x80\x7b\xc4\x26\xdc\x82\xc7\xc3\x06\xd6\x43\x5d\x35\x12\x76\
+\xc5\x29\xc5\xdb\x12\x88\x06\x0f\x97\x1d\x3e\x78\x84\x31\x58\x9c\
+\xf2\x22\x01\xf6\x1e\x00\x63\x25\xbf\xfa\xb2\xdc\x7f\xdf\xad\xa1\
+\xed\x52\xd8\x7d\x5d\x3c\x6c\x97\x80\x30\xa5\xdf\x9c\x25\xa5\xab\
+\xfd\x4a\x2b\x70\xc2\x29\x5d\x7f\x46\x80\x32\x29\x6b\x9f\xd2\xbe\
+\xef\x49\xef\x90\xaa\x49\xe9\xa6\x89\xea\x2c\x8f\x5b\xfa\x78\xd8\
+\x50\xd5\xb8\xda\xaf\x68\xdb\xa5\x9c\x93\x44\x26\x68\x6e\x06\x4a\
+\xf9\xc5\x3f\x39\x82\x3c\x09\xd1\x43\x74\x16\xcd\x0f\x8e\x60\x78\
+\x2e\xca\x36\x7c\x45\xd9\x66\x8c\x29\xa5\x6b\x8b\x3f\x14\x79\xf9\
+\xf4\x5a\x23\x9f\xcd\x66\x54\xb3\x08\x86\x10\xb1\x7a\x40\x70\xbe\
+\x54\xd3\x80\x3e\x4f\x64\x16\x22\x97\xdb\x0a\xcf\x44\x9e\x66\xf2\
+\xef\xb3\xcb\x45\xbf\xa8\xd4\x10\x30\x70\xb9\xad\x0e\x82\x56\x9e\
+\x0b\x11\x22\x51\x46\xc7\x42\xe0\x63\x14\x3f\xa5\x4d\x75\x2a\x13\
+\xbf\x14\x3d\xbc\xe8\xfc\xa0\xad\xf9\x6d\x1d\xc5\x22\x44\x75\x23\
+\x5a\xd1\x74\x42\xfd\x39\x9d\x9b\x86\xbe\x8c\xa0\x8e\x64\x06\x49\
+\x88\x3e\x71\x8f\x59\xdc\x75\x88\x13\x33\xcb\x21\x13\xec\x58\x1e\
+\x99\x60\x8f\x4c\x54\xcd\xb0\xcb\x88\x1b\x63\x87\x4c\x2c\xa6\x40\
+\xec\xe0\x2b\xdd\x5d\x28\xa6\x39\xe7\xcf\x80\xaa\x99\x26\xf4\x88\
+\x82\x2c\xad\xa8\xce\x41\xef\xf9\x85\x4c\xc3\x30\xe8\xbf\x2e\xec\
+\xe9\xf4\x3f\x70\x71\xc7\xbd\xb1\x5c\x04\xf4\x56\x38\xf6\x94\xbf\
+\x89\x21\xbd\xe7\x66\x38\xe3\xbb\x50\xe1\x8c\xe4\xe2\x76\x38\x77\
+\x6c\xf6\x26\x86\xf4\x9e\x9b\xe1\x8c\xef\x42\x85\x33\x92\x0b\x1d\
+\xce\xf5\x6a\xbb\x74\x6e\xfe\x06\x44\x1a\x94\x79\
\x00\x00\x03\x3d\
\x3c\
\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
@@ -2751,44 +2751,44 @@ qt_resource_struct_v1 = b"\
\x00\x00\x00\x84\x00\x00\x00\x00\x00\x01\x00\x00\x0f\x85\
\x00\x00\x00\xb0\x00\x00\x00\x00\x00\x01\x00\x00\x12\xa4\
\x00\x00\x00\xee\x00\x01\x00\x00\x00\x01\x00\x00\x16\x90\
-\x00\x00\x01\x14\x00\x00\x00\x00\x00\x01\x00\x00\x18\xb0\
-\x00\x00\x01\x3e\x00\x00\x00\x00\x00\x01\x00\x00\x1b\xde\
-\x00\x00\x01\x54\x00\x00\x00\x00\x00\x01\x00\x00\x1f\xf9\
-\x00\x00\x01\x78\x00\x00\x00\x00\x00\x01\x00\x00\x24\xa0\
-\x00\x00\x01\x98\x00\x00\x00\x00\x00\x01\x00\x00\x29\x17\
-\x00\x00\x01\xae\x00\x00\x00\x00\x00\x01\x00\x00\x2d\xb7\
-\x00\x00\x01\xd0\x00\x00\x00\x00\x00\x01\x00\x00\x30\x7c\
-\x00\x00\x02\x04\x00\x00\x00\x00\x00\x01\x00\x00\x35\x4a\
-\x00\x00\x02\x2a\x00\x00\x00\x00\x00\x01\x00\x00\x3b\x09\
-\x00\x00\x02\x6a\x00\x00\x00\x00\x00\x01\x00\x00\x3e\xe6\
-\x00\x00\x02\x8e\x00\x00\x00\x00\x00\x01\x00\x00\x42\xfd\
-\x00\x00\x02\xc2\x00\x00\x00\x00\x00\x01\x00\x00\x46\x49\
-\x00\x00\x02\xec\x00\x00\x00\x00\x00\x01\x00\x00\x48\xe5\
-\x00\x00\x03\x16\x00\x00\x00\x00\x00\x01\x00\x00\x4b\xff\
-\x00\x00\x03\x3c\x00\x00\x00\x00\x00\x01\x00\x00\x50\x01\
-\x00\x00\x03\x7a\x00\x00\x00\x00\x00\x01\x00\x00\x52\xf5\
-\x00\x00\x03\x90\x00\x00\x00\x00\x00\x01\x00\x00\x55\x90\
-\x00\x00\x03\xb6\x00\x01\x00\x00\x00\x01\x00\x00\x58\x00\
-\x00\x00\x03\xcc\x00\x00\x00\x00\x00\x01\x00\x00\x59\xdc\
-\x00\x00\x03\xf0\x00\x00\x00\x00\x00\x01\x00\x00\x5d\x1d\
-\x00\x00\x04\x0a\x00\x00\x00\x00\x00\x01\x00\x00\x60\x08\
-\x00\x00\x04\x42\x00\x00\x00\x00\x00\x01\x00\x00\x62\x7e\
-\x00\x00\x04\x5c\x00\x00\x00\x00\x00\x01\x00\x00\x65\xdc\
-\x00\x00\x04\x72\x00\x00\x00\x00\x00\x01\x00\x00\x69\x3f\
-\x00\x00\x04\x8a\x00\x00\x00\x00\x00\x01\x00\x00\x6c\x46\
-\x00\x00\x04\xa0\x00\x00\x00\x00\x00\x01\x00\x00\x70\x8c\
-\x00\x00\x04\xc6\x00\x00\x00\x00\x00\x01\x00\x00\x73\x07\
-\x00\x00\x04\xf0\x00\x00\x00\x00\x00\x01\x00\x00\x77\x5f\
-\x00\x00\x05\x08\x00\x00\x00\x00\x00\x01\x00\x00\x7b\x3d\
-\x00\x00\x05\x30\x00\x00\x00\x00\x00\x01\x00\x00\x7f\x63\
-\x00\x00\x05\x58\x00\x00\x00\x00\x00\x01\x00\x00\x82\x12\
-\x00\x00\x05\x6e\x00\x00\x00\x00\x00\x01\x00\x00\x83\x32\
-\x00\x00\x05\x82\x00\x00\x00\x00\x00\x01\x00\x00\x87\x12\
-\x00\x00\x05\xbe\x00\x00\x00\x00\x00\x01\x00\x00\x8a\x55\
-\x00\x00\x05\xd8\x00\x00\x00\x00\x00\x01\x00\x00\x8b\xc2\
-\x00\x00\x06\x06\x00\x00\x00\x00\x00\x01\x00\x00\x8f\x7d\
-\x00\x00\x06\x36\x00\x00\x00\x00\x00\x01\x00\x00\x8f\xed\
-\x00\x00\x06\x58\x00\x00\x00\x00\x00\x01\x00\x00\x92\xdf\
+\x00\x00\x01\x14\x00\x00\x00\x00\x00\x01\x00\x00\x18\xb3\
+\x00\x00\x01\x3e\x00\x00\x00\x00\x00\x01\x00\x00\x1b\xe1\
+\x00\x00\x01\x54\x00\x00\x00\x00\x00\x01\x00\x00\x1f\xfc\
+\x00\x00\x01\x78\x00\x00\x00\x00\x00\x01\x00\x00\x24\xa3\
+\x00\x00\x01\x98\x00\x00\x00\x00\x00\x01\x00\x00\x29\x1a\
+\x00\x00\x01\xae\x00\x00\x00\x00\x00\x01\x00\x00\x2d\xba\
+\x00\x00\x01\xd0\x00\x00\x00\x00\x00\x01\x00\x00\x30\x7f\
+\x00\x00\x02\x04\x00\x00\x00\x00\x00\x01\x00\x00\x35\x4d\
+\x00\x00\x02\x2a\x00\x00\x00\x00\x00\x01\x00\x00\x3b\x0c\
+\x00\x00\x02\x6a\x00\x00\x00\x00\x00\x01\x00\x00\x3e\xe9\
+\x00\x00\x02\x8e\x00\x00\x00\x00\x00\x01\x00\x00\x43\x00\
+\x00\x00\x02\xc2\x00\x00\x00\x00\x00\x01\x00\x00\x46\x4c\
+\x00\x00\x02\xec\x00\x00\x00\x00\x00\x01\x00\x00\x48\xe8\
+\x00\x00\x03\x16\x00\x00\x00\x00\x00\x01\x00\x00\x4c\x02\
+\x00\x00\x03\x3c\x00\x00\x00\x00\x00\x01\x00\x00\x50\x04\
+\x00\x00\x03\x7a\x00\x00\x00\x00\x00\x01\x00\x00\x52\xf8\
+\x00\x00\x03\x90\x00\x00\x00\x00\x00\x01\x00\x00\x55\x93\
+\x00\x00\x03\xb6\x00\x01\x00\x00\x00\x01\x00\x00\x58\x03\
+\x00\x00\x03\xcc\x00\x00\x00\x00\x00\x01\x00\x00\x59\xe4\
+\x00\x00\x03\xf0\x00\x00\x00\x00\x00\x01\x00\x00\x5d\x25\
+\x00\x00\x04\x0a\x00\x00\x00\x00\x00\x01\x00\x00\x60\x10\
+\x00\x00\x04\x42\x00\x00\x00\x00\x00\x01\x00\x00\x62\x86\
+\x00\x00\x04\x5c\x00\x00\x00\x00\x00\x01\x00\x00\x65\xe4\
+\x00\x00\x04\x72\x00\x00\x00\x00\x00\x01\x00\x00\x69\x47\
+\x00\x00\x04\x8a\x00\x00\x00\x00\x00\x01\x00\x00\x6c\x4e\
+\x00\x00\x04\xa0\x00\x00\x00\x00\x00\x01\x00\x00\x70\x94\
+\x00\x00\x04\xc6\x00\x00\x00\x00\x00\x01\x00\x00\x73\x0f\
+\x00\x00\x04\xf0\x00\x00\x00\x00\x00\x01\x00\x00\x77\x67\
+\x00\x00\x05\x08\x00\x00\x00\x00\x00\x01\x00\x00\x7b\x45\
+\x00\x00\x05\x30\x00\x00\x00\x00\x00\x01\x00\x00\x7f\x6b\
+\x00\x00\x05\x58\x00\x00\x00\x00\x00\x01\x00\x00\x82\x1a\
+\x00\x00\x05\x6e\x00\x00\x00\x00\x00\x01\x00\x00\x83\x3a\
+\x00\x00\x05\x82\x00\x00\x00\x00\x00\x01\x00\x00\x87\x1a\
+\x00\x00\x05\xbe\x00\x00\x00\x00\x00\x01\x00\x00\x8a\x5d\
+\x00\x00\x05\xd8\x00\x00\x00\x00\x00\x01\x00\x00\x8b\xca\
+\x00\x00\x06\x06\x00\x00\x00\x00\x00\x01\x00\x00\x8f\x85\
+\x00\x00\x06\x36\x00\x00\x00\x00\x00\x01\x00\x00\x8f\xf5\
+\x00\x00\x06\x58\x00\x00\x00\x00\x00\x01\x00\x00\x92\xe7\
"
qt_resource_struct_v2 = b"\
@@ -2797,93 +2797,93 @@ qt_resource_struct_v2 = b"\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x2c\x00\x00\x00\x02\
\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x10\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2d\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6f\
\x00\x00\x00\x38\x00\x00\x00\x00\x00\x01\x00\x00\x07\x6f\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2b\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6e\
\x00\x00\x00\x52\x00\x00\x00\x00\x00\x01\x00\x00\x0d\x0f\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2a\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6d\
\x00\x00\x00\x84\x00\x00\x00\x00\x00\x01\x00\x00\x0f\x85\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2b\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6e\
\x00\x00\x00\xb0\x00\x00\x00\x00\x00\x01\x00\x00\x12\xa4\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2b\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6e\
\x00\x00\x00\xee\x00\x01\x00\x00\x00\x01\x00\x00\x16\x90\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2c\
-\x00\x00\x01\x14\x00\x00\x00\x00\x00\x01\x00\x00\x18\xb0\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2a\
-\x00\x00\x01\x3e\x00\x00\x00\x00\x00\x01\x00\x00\x1b\xde\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2d\
-\x00\x00\x01\x54\x00\x00\x00\x00\x00\x01\x00\x00\x1f\xf9\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2c\
-\x00\x00\x01\x78\x00\x00\x00\x00\x00\x01\x00\x00\x24\xa0\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2c\
-\x00\x00\x01\x98\x00\x00\x00\x00\x00\x01\x00\x00\x29\x17\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2c\
-\x00\x00\x01\xae\x00\x00\x00\x00\x00\x01\x00\x00\x2d\xb7\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2b\
-\x00\x00\x01\xd0\x00\x00\x00\x00\x00\x01\x00\x00\x30\x7c\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2d\
-\x00\x00\x02\x04\x00\x00\x00\x00\x00\x01\x00\x00\x35\x4a\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2a\
-\x00\x00\x02\x2a\x00\x00\x00\x00\x00\x01\x00\x00\x3b\x09\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2b\
-\x00\x00\x02\x6a\x00\x00\x00\x00\x00\x01\x00\x00\x3e\xe6\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2c\
-\x00\x00\x02\x8e\x00\x00\x00\x00\x00\x01\x00\x00\x42\xfd\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2a\
-\x00\x00\x02\xc2\x00\x00\x00\x00\x00\x01\x00\x00\x46\x49\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2a\
-\x00\x00\x02\xec\x00\x00\x00\x00\x00\x01\x00\x00\x48\xe5\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2a\
-\x00\x00\x03\x16\x00\x00\x00\x00\x00\x01\x00\x00\x4b\xff\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2b\
-\x00\x00\x03\x3c\x00\x00\x00\x00\x00\x01\x00\x00\x50\x01\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2a\
-\x00\x00\x03\x7a\x00\x00\x00\x00\x00\x01\x00\x00\x52\xf5\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2d\
-\x00\x00\x03\x90\x00\x00\x00\x00\x00\x01\x00\x00\x55\x90\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2a\
-\x00\x00\x03\xb6\x00\x01\x00\x00\x00\x01\x00\x00\x58\x00\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2c\
-\x00\x00\x03\xcc\x00\x00\x00\x00\x00\x01\x00\x00\x59\xdc\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2c\
-\x00\x00\x03\xf0\x00\x00\x00\x00\x00\x01\x00\x00\x5d\x1d\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2c\
-\x00\x00\x04\x0a\x00\x00\x00\x00\x00\x01\x00\x00\x60\x08\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2a\
-\x00\x00\x04\x42\x00\x00\x00\x00\x00\x01\x00\x00\x62\x7e\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2b\
-\x00\x00\x04\x5c\x00\x00\x00\x00\x00\x01\x00\x00\x65\xdc\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2c\
-\x00\x00\x04\x72\x00\x00\x00\x00\x00\x01\x00\x00\x69\x3f\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2b\
-\x00\x00\x04\x8a\x00\x00\x00\x00\x00\x01\x00\x00\x6c\x46\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2c\
-\x00\x00\x04\xa0\x00\x00\x00\x00\x00\x01\x00\x00\x70\x8c\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2b\
-\x00\x00\x04\xc6\x00\x00\x00\x00\x00\x01\x00\x00\x73\x07\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2a\
-\x00\x00\x04\xf0\x00\x00\x00\x00\x00\x01\x00\x00\x77\x5f\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2b\
-\x00\x00\x05\x08\x00\x00\x00\x00\x00\x01\x00\x00\x7b\x3d\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2c\
-\x00\x00\x05\x30\x00\x00\x00\x00\x00\x01\x00\x00\x7f\x63\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2a\
-\x00\x00\x05\x58\x00\x00\x00\x00\x00\x01\x00\x00\x82\x12\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2d\
-\x00\x00\x05\x6e\x00\x00\x00\x00\x00\x01\x00\x00\x83\x32\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2c\
-\x00\x00\x05\x82\x00\x00\x00\x00\x00\x01\x00\x00\x87\x12\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2b\
-\x00\x00\x05\xbe\x00\x00\x00\x00\x00\x01\x00\x00\x8a\x55\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2a\
-\x00\x00\x05\xd8\x00\x00\x00\x00\x00\x01\x00\x00\x8b\xc2\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2c\
-\x00\x00\x06\x06\x00\x00\x00\x00\x00\x01\x00\x00\x8f\x7d\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2d\
-\x00\x00\x06\x36\x00\x00\x00\x00\x00\x01\x00\x00\x8f\xed\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2c\
-\x00\x00\x06\x58\x00\x00\x00\x00\x00\x01\x00\x00\x92\xdf\
-\x00\x00\x01\x8e\x6d\x38\xcc\x2a\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6f\
+\x00\x00\x01\x14\x00\x00\x00\x00\x00\x01\x00\x00\x18\xb3\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6e\
+\x00\x00\x01\x3e\x00\x00\x00\x00\x00\x01\x00\x00\x1b\xe1\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6f\
+\x00\x00\x01\x54\x00\x00\x00\x00\x00\x01\x00\x00\x1f\xfc\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6e\
+\x00\x00\x01\x78\x00\x00\x00\x00\x00\x01\x00\x00\x24\xa3\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6f\
+\x00\x00\x01\x98\x00\x00\x00\x00\x00\x01\x00\x00\x29\x1a\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6e\
+\x00\x00\x01\xae\x00\x00\x00\x00\x00\x01\x00\x00\x2d\xba\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6e\
+\x00\x00\x01\xd0\x00\x00\x00\x00\x00\x01\x00\x00\x30\x7f\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6f\
+\x00\x00\x02\x04\x00\x00\x00\x00\x00\x01\x00\x00\x35\x4d\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6e\
+\x00\x00\x02\x2a\x00\x00\x00\x00\x00\x01\x00\x00\x3b\x0c\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6e\
+\x00\x00\x02\x6a\x00\x00\x00\x00\x00\x01\x00\x00\x3e\xe9\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6f\
+\x00\x00\x02\x8e\x00\x00\x00\x00\x00\x01\x00\x00\x43\x00\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6e\
+\x00\x00\x02\xc2\x00\x00\x00\x00\x00\x01\x00\x00\x46\x4c\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6e\
+\x00\x00\x02\xec\x00\x00\x00\x00\x00\x01\x00\x00\x48\xe8\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6d\
+\x00\x00\x03\x16\x00\x00\x00\x00\x00\x01\x00\x00\x4c\x02\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6e\
+\x00\x00\x03\x3c\x00\x00\x00\x00\x00\x01\x00\x00\x50\x04\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6e\
+\x00\x00\x03\x7a\x00\x00\x00\x00\x00\x01\x00\x00\x52\xf8\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6f\
+\x00\x00\x03\x90\x00\x00\x00\x00\x00\x01\x00\x00\x55\x93\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6e\
+\x00\x00\x03\xb6\x00\x01\x00\x00\x00\x01\x00\x00\x58\x03\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6f\
+\x00\x00\x03\xcc\x00\x00\x00\x00\x00\x01\x00\x00\x59\xe4\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6e\
+\x00\x00\x03\xf0\x00\x00\x00\x00\x00\x01\x00\x00\x5d\x25\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6e\
+\x00\x00\x04\x0a\x00\x00\x00\x00\x00\x01\x00\x00\x60\x10\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6d\
+\x00\x00\x04\x42\x00\x00\x00\x00\x00\x01\x00\x00\x62\x86\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6e\
+\x00\x00\x04\x5c\x00\x00\x00\x00\x00\x01\x00\x00\x65\xe4\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6f\
+\x00\x00\x04\x72\x00\x00\x00\x00\x00\x01\x00\x00\x69\x47\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6e\
+\x00\x00\x04\x8a\x00\x00\x00\x00\x00\x01\x00\x00\x6c\x4e\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6f\
+\x00\x00\x04\xa0\x00\x00\x00\x00\x00\x01\x00\x00\x70\x94\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6e\
+\x00\x00\x04\xc6\x00\x00\x00\x00\x00\x01\x00\x00\x73\x0f\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6e\
+\x00\x00\x04\xf0\x00\x00\x00\x00\x00\x01\x00\x00\x77\x67\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6e\
+\x00\x00\x05\x08\x00\x00\x00\x00\x00\x01\x00\x00\x7b\x45\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6e\
+\x00\x00\x05\x30\x00\x00\x00\x00\x00\x01\x00\x00\x7f\x6b\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6d\
+\x00\x00\x05\x58\x00\x00\x00\x00\x00\x01\x00\x00\x82\x1a\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6f\
+\x00\x00\x05\x6e\x00\x00\x00\x00\x00\x01\x00\x00\x83\x3a\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6f\
+\x00\x00\x05\x82\x00\x00\x00\x00\x00\x01\x00\x00\x87\x1a\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6e\
+\x00\x00\x05\xbe\x00\x00\x00\x00\x00\x01\x00\x00\x8a\x5d\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6d\
+\x00\x00\x05\xd8\x00\x00\x00\x00\x00\x01\x00\x00\x8b\xca\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6f\
+\x00\x00\x06\x06\x00\x00\x00\x00\x00\x01\x00\x00\x8f\x85\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6f\
+\x00\x00\x06\x36\x00\x00\x00\x00\x00\x01\x00\x00\x8f\xf5\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6f\
+\x00\x00\x06\x58\x00\x00\x00\x00\x00\x01\x00\x00\x92\xe7\
+\x00\x00\x01\x90\x3b\xe6\x5e\x6e\
"
qt_version = [int(v) for v in QtCore.qVersion().split('.')]
diff --git a/graphics/asymptote/INSTALL b/graphics/asymptote/INSTALL
index 602c338363..f4e0dd8937 100644
--- a/graphics/asymptote/INSTALL
+++ b/graphics/asymptote/INSTALL
@@ -30,7 +30,7 @@ Compiling Asymptote from Git Developmental Source Code
To compile from Git developmental source code:
-git clone http://github.com/vectorgraphics/asymptote
+git clone https://github.com/vectorgraphics/asymptote
cd asymptote
./autogen.sh
./configure
@@ -40,12 +40,12 @@ make install
Optional packages:
* Fast Fourier Transform library
- http://www.fftw.org/
+ https://www.fftw.org/
Version requirement >= 3.0
* The GNU Scientific Library for numerical analysis:
- http://www.gnu.org/software/gsl/
+ https://www.gnu.org/software/gsl/
*****************************************
Generic Configure Instructions (advanced)
diff --git a/graphics/asymptote/LspCpp/third_party/uri/CMakeFiles/CMakeDirectoryInformation.cmake b/graphics/asymptote/LspCpp/third_party/uri/CMakeFiles/CMakeDirectoryInformation.cmake
index 668314bb71..10947361b6 100644
--- a/graphics/asymptote/LspCpp/third_party/uri/CMakeFiles/CMakeDirectoryInformation.cmake
+++ b/graphics/asymptote/LspCpp/third_party/uri/CMakeFiles/CMakeDirectoryInformation.cmake
@@ -1,9 +1,9 @@
# CMAKE generated file: DO NOT EDIT!
-# Generated by "Unix Makefiles" Generator, CMake Version 3.27
+# Generated by "Unix Makefiles" Generator, CMake Version 3.28
# Relative path conversion top directories.
-set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/usr/local/src/asymptote-2.89/LspCpp")
-set(CMAKE_RELATIVE_PATH_TOP_BINARY "/usr/local/src/asymptote-2.89/LspCpp")
+set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/usr/local/src/asymptote-2.90/LspCpp")
+set(CMAKE_RELATIVE_PATH_TOP_BINARY "/usr/local/src/asymptote-2.90/LspCpp")
# Force unix paths in dependencies.
set(CMAKE_FORCE_UNIX_PATHS 1)
diff --git a/graphics/asymptote/LspCpp/third_party/uri/CMakeFiles/doc.dir/DependInfo.cmake b/graphics/asymptote/LspCpp/third_party/uri/CMakeFiles/doc.dir/DependInfo.cmake
index 45a25b7803..29b95a515e 100644
--- a/graphics/asymptote/LspCpp/third_party/uri/CMakeFiles/doc.dir/DependInfo.cmake
+++ b/graphics/asymptote/LspCpp/third_party/uri/CMakeFiles/doc.dir/DependInfo.cmake
@@ -14,5 +14,9 @@ set(CMAKE_DEPENDS_DEPENDENCY_FILES
set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES
)
+# Targets to which this target links which contain Fortran sources.
+set(CMAKE_Fortran_TARGET_FORWARD_LINKED_INFO_FILES
+ )
+
# Fortran module output directory.
set(CMAKE_Fortran_TARGET_MODULE_DIR "")
diff --git a/graphics/asymptote/LspCpp/third_party/uri/CMakeFiles/doc.dir/build.make b/graphics/asymptote/LspCpp/third_party/uri/CMakeFiles/doc.dir/build.make
index 68ff539b12..cd14a44b53 100644
--- a/graphics/asymptote/LspCpp/third_party/uri/CMakeFiles/doc.dir/build.make
+++ b/graphics/asymptote/LspCpp/third_party/uri/CMakeFiles/doc.dir/build.make
@@ -1,5 +1,5 @@
# CMAKE generated file: DO NOT EDIT!
-# Generated by "Unix Makefiles" Generator, CMake Version 3.27
+# Generated by "Unix Makefiles" Generator, CMake Version 3.28
# Delete rule output on recipe failure.
.DELETE_ON_ERROR:
@@ -56,10 +56,10 @@ RM = /usr/bin/cmake -E rm -f
EQUALS = =
# The top-level source directory on which CMake was run.
-CMAKE_SOURCE_DIR = /usr/local/src/asymptote-2.89/LspCpp
+CMAKE_SOURCE_DIR = /usr/local/src/asymptote-2.90/LspCpp
# The top-level build directory on which CMake was run.
-CMAKE_BINARY_DIR = /usr/local/src/asymptote-2.89/LspCpp
+CMAKE_BINARY_DIR = /usr/local/src/asymptote-2.90/LspCpp
# Utility rule file for doc.
@@ -70,8 +70,8 @@ include third_party/uri/CMakeFiles/doc.dir/compiler_depend.make
include third_party/uri/CMakeFiles/doc.dir/progress.make
third_party/uri/CMakeFiles/doc:
- @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --blue --bold --progress-dir=/usr/local/src/asymptote-2.89/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Generating API documentation with Doxygen"
- cd /usr/local/src/asymptote-2.89/LspCpp/third_party/uri && /bin/doxygen /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/Doxyfile
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --blue --bold --progress-dir=/usr/local/src/asymptote-2.90/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Generating API documentation with Doxygen"
+ cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri && /bin/doxygen /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/Doxyfile
doc: third_party/uri/CMakeFiles/doc
doc: third_party/uri/CMakeFiles/doc.dir/build.make
@@ -82,10 +82,10 @@ third_party/uri/CMakeFiles/doc.dir/build: doc
.PHONY : third_party/uri/CMakeFiles/doc.dir/build
third_party/uri/CMakeFiles/doc.dir/clean:
- cd /usr/local/src/asymptote-2.89/LspCpp/third_party/uri && $(CMAKE_COMMAND) -P CMakeFiles/doc.dir/cmake_clean.cmake
+ cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri && $(CMAKE_COMMAND) -P CMakeFiles/doc.dir/cmake_clean.cmake
.PHONY : third_party/uri/CMakeFiles/doc.dir/clean
third_party/uri/CMakeFiles/doc.dir/depend:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /usr/local/src/asymptote-2.89/LspCpp /usr/local/src/asymptote-2.89/LspCpp/third_party/uri /usr/local/src/asymptote-2.89/LspCpp /usr/local/src/asymptote-2.89/LspCpp/third_party/uri /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/CMakeFiles/doc.dir/DependInfo.cmake "--color=$(COLOR)"
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /usr/local/src/asymptote-2.90/LspCpp /usr/local/src/asymptote-2.90/LspCpp/third_party/uri /usr/local/src/asymptote-2.90/LspCpp /usr/local/src/asymptote-2.90/LspCpp/third_party/uri /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/CMakeFiles/doc.dir/DependInfo.cmake "--color=$(COLOR)"
.PHONY : third_party/uri/CMakeFiles/doc.dir/depend
diff --git a/graphics/asymptote/LspCpp/third_party/uri/Doxyfile b/graphics/asymptote/LspCpp/third_party/uri/Doxyfile
index 056a61bbb1..d5d97f4b56 100644
--- a/graphics/asymptote/LspCpp/third_party/uri/Doxyfile
+++ b/graphics/asymptote/LspCpp/third_party/uri/Doxyfile
@@ -128,7 +128,7 @@ FULL_PATH_NAMES = YES
# If left blank the directory from which doxygen is run is used as the
# path to strip.
-STRIP_FROM_PATH = /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/
+STRIP_FROM_PATH = /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/
# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
# the path mentioned in the documentation of a class, which tells
@@ -626,7 +626,7 @@ WARN_LOGFILE =
# directories like "/usr/src/myproject". Separate the files or directories
# with spaces.
-INPUT = /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include
+INPUT = /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include
# This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
@@ -658,7 +658,7 @@ RECURSIVE = YES
# Note that relative paths are relative to the directory from which doxygen is
# run.
-EXCLUDE = /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/detail
+EXCLUDE = /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail
# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
# directories that are symbolic links (a Unix file system feature) are excluded
@@ -821,7 +821,7 @@ COLS_IN_ALPHA_INDEX = 5
# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
# should be ignored while generating the index headers.
-IGNORE_PREFIX = /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/uri/src/
+IGNORE_PREFIX = /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/uri/src/
#---------------------------------------------------------------------------
# configuration options related to the HTML output
diff --git a/graphics/asymptote/LspCpp/third_party/uri/Makefile b/graphics/asymptote/LspCpp/third_party/uri/Makefile
index a9bce1ebf0..508a0f8b29 100644
--- a/graphics/asymptote/LspCpp/third_party/uri/Makefile
+++ b/graphics/asymptote/LspCpp/third_party/uri/Makefile
@@ -1,5 +1,5 @@
# CMAKE generated file: DO NOT EDIT!
-# Generated by "Unix Makefiles" Generator, CMake Version 3.27
+# Generated by "Unix Makefiles" Generator, CMake Version 3.28
# Default target executed when no arguments are given to make.
default_target: all
@@ -60,10 +60,10 @@ RM = /usr/bin/cmake -E rm -f
EQUALS = =
# The top-level source directory on which CMake was run.
-CMAKE_SOURCE_DIR = /usr/local/src/asymptote-2.89/LspCpp
+CMAKE_SOURCE_DIR = /usr/local/src/asymptote-2.90/LspCpp
# The top-level build directory on which CMake was run.
-CMAKE_BINARY_DIR = /usr/local/src/asymptote-2.89/LspCpp
+CMAKE_BINARY_DIR = /usr/local/src/asymptote-2.90/LspCpp
#=============================================================================
# Targets provided globally by CMake.
@@ -135,14 +135,14 @@ install/strip/fast: preinstall/fast
# The main all target
all: cmake_check_build_system
- cd /usr/local/src/asymptote-2.89/LspCpp && $(CMAKE_COMMAND) -E cmake_progress_start /usr/local/src/asymptote-2.89/LspCpp/CMakeFiles /usr/local/src/asymptote-2.89/LspCpp/third_party/uri//CMakeFiles/progress.marks
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/all
- $(CMAKE_COMMAND) -E cmake_progress_start /usr/local/src/asymptote-2.89/LspCpp/CMakeFiles 0
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(CMAKE_COMMAND) -E cmake_progress_start /usr/local/src/asymptote-2.90/LspCpp/CMakeFiles /usr/local/src/asymptote-2.90/LspCpp/third_party/uri//CMakeFiles/progress.marks
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/all
+ $(CMAKE_COMMAND) -E cmake_progress_start /usr/local/src/asymptote-2.90/LspCpp/CMakeFiles 0
.PHONY : all
# The main clean target
clean:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/clean
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/clean
.PHONY : clean
# The main clean target
@@ -151,22 +151,22 @@ clean/fast: clean
# Prepare targets for installation.
preinstall: all
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/preinstall
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/preinstall
.PHONY : preinstall
# Prepare targets for installation.
preinstall/fast:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/preinstall
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/preinstall
.PHONY : preinstall/fast
# clear depends
depend:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1
.PHONY : depend
# Convenience name for target.
third_party/uri/CMakeFiles/doc.dir/rule:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/CMakeFiles/doc.dir/rule
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/CMakeFiles/doc.dir/rule
.PHONY : third_party/uri/CMakeFiles/doc.dir/rule
# Convenience name for target.
@@ -175,7 +175,7 @@ doc: third_party/uri/CMakeFiles/doc.dir/rule
# fast build rule for target.
doc/fast:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/CMakeFiles/doc.dir/build.make third_party/uri/CMakeFiles/doc.dir/build
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/CMakeFiles/doc.dir/build.make third_party/uri/CMakeFiles/doc.dir/build
.PHONY : doc/fast
# Help Target
@@ -202,6 +202,6 @@ help:
# No rule that depends on this can have commands that come from listfiles
# because they might be regenerated.
cmake_check_build_system:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
.PHONY : cmake_check_build_system
diff --git a/graphics/asymptote/LspCpp/third_party/uri/cmake_install.cmake b/graphics/asymptote/LspCpp/third_party/uri/cmake_install.cmake
index 8a2139f497..b0d4be5b79 100644
--- a/graphics/asymptote/LspCpp/third_party/uri/cmake_install.cmake
+++ b/graphics/asymptote/LspCpp/third_party/uri/cmake_install.cmake
@@ -1,4 +1,4 @@
-# Install script for directory: /usr/local/src/asymptote-2.89/LspCpp/third_party/uri
+# Install script for directory: /usr/local/src/asymptote-2.90/LspCpp/third_party/uri
# Set the install prefix
if(NOT DEFINED CMAKE_INSTALL_PREFIX)
@@ -43,12 +43,12 @@ if(NOT DEFINED CMAKE_OBJDUMP)
endif()
if(CMAKE_INSTALL_COMPONENT STREQUAL "Unspecified" OR NOT CMAKE_INSTALL_COMPONENT)
- file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/." TYPE DIRECTORY FILES "/usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include")
+ file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/." TYPE DIRECTORY FILES "/usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include")
endif()
if(NOT CMAKE_INSTALL_LOCAL_ONLY)
# Include the install script for each subdirectory.
- include("/usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/cmake_install.cmake")
+ include("/usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/cmake_install.cmake")
endif()
diff --git a/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/CMakeDirectoryInformation.cmake b/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/CMakeDirectoryInformation.cmake
index 668314bb71..10947361b6 100644
--- a/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/CMakeDirectoryInformation.cmake
+++ b/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/CMakeDirectoryInformation.cmake
@@ -1,9 +1,9 @@
# CMAKE generated file: DO NOT EDIT!
-# Generated by "Unix Makefiles" Generator, CMake Version 3.27
+# Generated by "Unix Makefiles" Generator, CMake Version 3.28
# Relative path conversion top directories.
-set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/usr/local/src/asymptote-2.89/LspCpp")
-set(CMAKE_RELATIVE_PATH_TOP_BINARY "/usr/local/src/asymptote-2.89/LspCpp")
+set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/usr/local/src/asymptote-2.90/LspCpp")
+set(CMAKE_RELATIVE_PATH_TOP_BINARY "/usr/local/src/asymptote-2.90/LspCpp")
# Force unix paths in dependencies.
set(CMAKE_FORCE_UNIX_PATHS 1)
diff --git a/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/DependInfo.cmake b/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/DependInfo.cmake
index 98d4213d2b..594e10e458 100644
--- a/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/DependInfo.cmake
+++ b/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/DependInfo.cmake
@@ -8,19 +8,23 @@ set(CMAKE_DEPENDS_LANGUAGES
# The set of dependency files which are needed:
set(CMAKE_DEPENDS_DEPENDENCY_FILES
- "/usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_advance_parts.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o.d"
- "/usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_normalize.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o.d"
- "/usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_parse.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o.d"
- "/usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_parse_authority.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o.d"
- "/usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_resolve.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o.d"
- "/usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/uri.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o.d"
- "/usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/uri_builder.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o.d"
- "/usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/uri_errors.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o.d"
+ "/usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_advance_parts.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o.d"
+ "/usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_normalize.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o.d"
+ "/usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_parse.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o.d"
+ "/usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_parse_authority.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o.d"
+ "/usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_resolve.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o.d"
+ "/usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/uri.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o.d"
+ "/usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/uri_builder.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o.d"
+ "/usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/uri_errors.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o.d"
)
# Targets to which this target links which contain Fortran sources.
set(CMAKE_Fortran_TARGET_LINKED_INFO_FILES
)
+# Targets to which this target links which contain Fortran sources.
+set(CMAKE_Fortran_TARGET_FORWARD_LINKED_INFO_FILES
+ )
+
# Fortran module output directory.
set(CMAKE_Fortran_TARGET_MODULE_DIR "")
diff --git a/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/build.make b/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/build.make
index 20b63f7feb..feab93c641 100644
--- a/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/build.make
+++ b/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/build.make
@@ -1,5 +1,5 @@
# CMAKE generated file: DO NOT EDIT!
-# Generated by "Unix Makefiles" Generator, CMake Version 3.27
+# Generated by "Unix Makefiles" Generator, CMake Version 3.28
# Delete rule output on recipe failure.
.DELETE_ON_ERROR:
@@ -56,10 +56,10 @@ RM = /usr/bin/cmake -E rm -f
EQUALS = =
# The top-level source directory on which CMake was run.
-CMAKE_SOURCE_DIR = /usr/local/src/asymptote-2.89/LspCpp
+CMAKE_SOURCE_DIR = /usr/local/src/asymptote-2.90/LspCpp
# The top-level build directory on which CMake was run.
-CMAKE_BINARY_DIR = /usr/local/src/asymptote-2.89/LspCpp
+CMAKE_BINARY_DIR = /usr/local/src/asymptote-2.90/LspCpp
# Include any dependencies generated for this target.
include third_party/uri/src/CMakeFiles/network-uri.dir/depend.make
@@ -75,114 +75,114 @@ include third_party/uri/src/CMakeFiles/network-uri.dir/flags.make
third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/flags.make
third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o: third_party/uri/src/uri.cpp
third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.ts
- @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/usr/local/src/asymptote-2.89/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o"
- cd /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o -MF CMakeFiles/network-uri.dir/uri.cpp.o.d -o CMakeFiles/network-uri.dir/uri.cpp.o -c /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/uri.cpp
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/usr/local/src/asymptote-2.90/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o"
+ cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o -MF CMakeFiles/network-uri.dir/uri.cpp.o.d -o CMakeFiles/network-uri.dir/uri.cpp.o -c /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/uri.cpp
third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.i: cmake_force
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/network-uri.dir/uri.cpp.i"
- cd /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/uri.cpp > CMakeFiles/network-uri.dir/uri.cpp.i
+ cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/uri.cpp > CMakeFiles/network-uri.dir/uri.cpp.i
third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.s: cmake_force
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/network-uri.dir/uri.cpp.s"
- cd /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/uri.cpp -o CMakeFiles/network-uri.dir/uri.cpp.s
+ cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/uri.cpp -o CMakeFiles/network-uri.dir/uri.cpp.s
third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/flags.make
third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o: third_party/uri/src/uri_builder.cpp
third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.ts
- @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/usr/local/src/asymptote-2.89/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o"
- cd /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o -MF CMakeFiles/network-uri.dir/uri_builder.cpp.o.d -o CMakeFiles/network-uri.dir/uri_builder.cpp.o -c /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/uri_builder.cpp
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/usr/local/src/asymptote-2.90/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o"
+ cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o -MF CMakeFiles/network-uri.dir/uri_builder.cpp.o.d -o CMakeFiles/network-uri.dir/uri_builder.cpp.o -c /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/uri_builder.cpp
third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.i: cmake_force
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/network-uri.dir/uri_builder.cpp.i"
- cd /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/uri_builder.cpp > CMakeFiles/network-uri.dir/uri_builder.cpp.i
+ cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/uri_builder.cpp > CMakeFiles/network-uri.dir/uri_builder.cpp.i
third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.s: cmake_force
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/network-uri.dir/uri_builder.cpp.s"
- cd /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/uri_builder.cpp -o CMakeFiles/network-uri.dir/uri_builder.cpp.s
+ cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/uri_builder.cpp -o CMakeFiles/network-uri.dir/uri_builder.cpp.s
third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/flags.make
third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o: third_party/uri/src/uri_errors.cpp
third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.ts
- @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/usr/local/src/asymptote-2.89/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_3) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o"
- cd /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o -MF CMakeFiles/network-uri.dir/uri_errors.cpp.o.d -o CMakeFiles/network-uri.dir/uri_errors.cpp.o -c /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/uri_errors.cpp
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/usr/local/src/asymptote-2.90/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_3) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o"
+ cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o -MF CMakeFiles/network-uri.dir/uri_errors.cpp.o.d -o CMakeFiles/network-uri.dir/uri_errors.cpp.o -c /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/uri_errors.cpp
third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.i: cmake_force
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/network-uri.dir/uri_errors.cpp.i"
- cd /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/uri_errors.cpp > CMakeFiles/network-uri.dir/uri_errors.cpp.i
+ cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/uri_errors.cpp > CMakeFiles/network-uri.dir/uri_errors.cpp.i
third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.s: cmake_force
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/network-uri.dir/uri_errors.cpp.s"
- cd /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/uri_errors.cpp -o CMakeFiles/network-uri.dir/uri_errors.cpp.s
+ cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/uri_errors.cpp -o CMakeFiles/network-uri.dir/uri_errors.cpp.s
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/flags.make
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o: third_party/uri/src/detail/uri_parse.cpp
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.ts
- @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/usr/local/src/asymptote-2.89/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_4) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o"
- cd /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o -MF CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o.d -o CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o -c /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_parse.cpp
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/usr/local/src/asymptote-2.90/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_4) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o"
+ cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o -MF CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o.d -o CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o -c /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_parse.cpp
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.i: cmake_force
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/network-uri.dir/detail/uri_parse.cpp.i"
- cd /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_parse.cpp > CMakeFiles/network-uri.dir/detail/uri_parse.cpp.i
+ cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_parse.cpp > CMakeFiles/network-uri.dir/detail/uri_parse.cpp.i
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.s: cmake_force
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/network-uri.dir/detail/uri_parse.cpp.s"
- cd /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_parse.cpp -o CMakeFiles/network-uri.dir/detail/uri_parse.cpp.s
+ cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_parse.cpp -o CMakeFiles/network-uri.dir/detail/uri_parse.cpp.s
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/flags.make
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o: third_party/uri/src/detail/uri_parse_authority.cpp
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.ts
- @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/usr/local/src/asymptote-2.89/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_5) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o"
- cd /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o -MF CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o.d -o CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o -c /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_parse_authority.cpp
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/usr/local/src/asymptote-2.90/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_5) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o"
+ cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o -MF CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o.d -o CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o -c /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_parse_authority.cpp
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.i: cmake_force
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.i"
- cd /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_parse_authority.cpp > CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.i
+ cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_parse_authority.cpp > CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.i
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.s: cmake_force
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.s"
- cd /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_parse_authority.cpp -o CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.s
+ cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_parse_authority.cpp -o CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.s
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/flags.make
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o: third_party/uri/src/detail/uri_advance_parts.cpp
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.ts
- @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/usr/local/src/asymptote-2.89/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_6) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o"
- cd /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o -MF CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o.d -o CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o -c /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_advance_parts.cpp
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/usr/local/src/asymptote-2.90/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_6) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o"
+ cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o -MF CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o.d -o CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o -c /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_advance_parts.cpp
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.i: cmake_force
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.i"
- cd /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_advance_parts.cpp > CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.i
+ cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_advance_parts.cpp > CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.i
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.s: cmake_force
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.s"
- cd /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_advance_parts.cpp -o CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.s
+ cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_advance_parts.cpp -o CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.s
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/flags.make
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o: third_party/uri/src/detail/uri_normalize.cpp
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.ts
- @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/usr/local/src/asymptote-2.89/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_7) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o"
- cd /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o -MF CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o.d -o CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o -c /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_normalize.cpp
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/usr/local/src/asymptote-2.90/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_7) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o"
+ cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o -MF CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o.d -o CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o -c /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_normalize.cpp
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.i: cmake_force
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.i"
- cd /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_normalize.cpp > CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.i
+ cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_normalize.cpp > CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.i
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.s: cmake_force
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.s"
- cd /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_normalize.cpp -o CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.s
+ cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_normalize.cpp -o CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.s
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/flags.make
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o: third_party/uri/src/detail/uri_resolve.cpp
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.ts
- @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/usr/local/src/asymptote-2.89/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_8) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o"
- cd /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o -MF CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o.d -o CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o -c /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_resolve.cpp
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/usr/local/src/asymptote-2.90/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_8) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o"
+ cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o -MF CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o.d -o CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o -c /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_resolve.cpp
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.i: cmake_force
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.i"
- cd /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_resolve.cpp > CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.i
+ cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_resolve.cpp > CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.i
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.s: cmake_force
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.s"
- cd /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_resolve.cpp -o CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.s
+ cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_resolve.cpp -o CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.s
# Object files for target network-uri
network__uri_OBJECTS = \
@@ -208,19 +208,19 @@ third_party/uri/src/libnetwork-uri.a: third_party/uri/src/CMakeFiles/network-uri
third_party/uri/src/libnetwork-uri.a: third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o
third_party/uri/src/libnetwork-uri.a: third_party/uri/src/CMakeFiles/network-uri.dir/build.make
third_party/uri/src/libnetwork-uri.a: third_party/uri/src/CMakeFiles/network-uri.dir/link.txt
- @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --bold --progress-dir=/usr/local/src/asymptote-2.89/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_9) "Linking CXX static library libnetwork-uri.a"
- cd /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src && $(CMAKE_COMMAND) -P CMakeFiles/network-uri.dir/cmake_clean_target.cmake
- cd /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/network-uri.dir/link.txt --verbose=$(VERBOSE)
+ @$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --bold --progress-dir=/usr/local/src/asymptote-2.90/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_9) "Linking CXX static library libnetwork-uri.a"
+ cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && $(CMAKE_COMMAND) -P CMakeFiles/network-uri.dir/cmake_clean_target.cmake
+ cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/network-uri.dir/link.txt --verbose=$(VERBOSE)
# Rule to build all files generated by this target.
third_party/uri/src/CMakeFiles/network-uri.dir/build: third_party/uri/src/libnetwork-uri.a
.PHONY : third_party/uri/src/CMakeFiles/network-uri.dir/build
third_party/uri/src/CMakeFiles/network-uri.dir/clean:
- cd /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src && $(CMAKE_COMMAND) -P CMakeFiles/network-uri.dir/cmake_clean.cmake
+ cd /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src && $(CMAKE_COMMAND) -P CMakeFiles/network-uri.dir/cmake_clean.cmake
.PHONY : third_party/uri/src/CMakeFiles/network-uri.dir/clean
third_party/uri/src/CMakeFiles/network-uri.dir/depend:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /usr/local/src/asymptote-2.89/LspCpp /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src /usr/local/src/asymptote-2.89/LspCpp /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/DependInfo.cmake "--color=$(COLOR)"
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /usr/local/src/asymptote-2.90/LspCpp /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src /usr/local/src/asymptote-2.90/LspCpp /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/DependInfo.cmake "--color=$(COLOR)"
.PHONY : third_party/uri/src/CMakeFiles/network-uri.dir/depend
diff --git a/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.internal b/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.internal
index 89c154bfba..3100d7c219 100644
--- a/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.internal
+++ b/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.internal
@@ -1,8 +1,8 @@
# CMAKE generated file: DO NOT EDIT!
-# Generated by "Unix Makefiles" Generator, CMake Version 3.27
+# Generated by "Unix Makefiles" Generator, CMake Version 3.28
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_advance_parts.cpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_advance_parts.cpp
/usr/include/alloca.h
/usr/include/asm-generic/errno-base.h
/usr/include/asm-generic/errno.h
@@ -26,6 +26,7 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o
/usr/include/bits/select.h
/usr/include/bits/setjmp.h
/usr/include/bits/stdint-intn.h
+ /usr/include/bits/stdint-least.h
/usr/include/bits/stdint-uintn.h
/usr/include/bits/stdio.h
/usr/include/bits/stdio_lim.h
@@ -69,112 +70,113 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o
/usr/include/bits/waitstatus.h
/usr/include/bits/wchar.h
/usr/include/bits/wordsize.h
- /usr/include/c++/13/algorithm
- /usr/include/c++/13/backward/auto_ptr.h
- /usr/include/c++/13/backward/binders.h
- /usr/include/c++/13/bit
- /usr/include/c++/13/bits/algorithmfwd.h
- /usr/include/c++/13/bits/align.h
- /usr/include/c++/13/bits/alloc_traits.h
- /usr/include/c++/13/bits/allocated_ptr.h
- /usr/include/c++/13/bits/allocator.h
- /usr/include/c++/13/bits/atomic_base.h
- /usr/include/c++/13/bits/atomic_lockfree_defines.h
- /usr/include/c++/13/bits/basic_string.h
- /usr/include/c++/13/bits/basic_string.tcc
- /usr/include/c++/13/bits/char_traits.h
- /usr/include/c++/13/bits/charconv.h
- /usr/include/c++/13/bits/concept_check.h
- /usr/include/c++/13/bits/cpp_type_traits.h
- /usr/include/c++/13/bits/cxxabi_forced.h
- /usr/include/c++/13/bits/cxxabi_init_exception.h
- /usr/include/c++/13/bits/exception.h
- /usr/include/c++/13/bits/exception_defines.h
- /usr/include/c++/13/bits/exception_ptr.h
- /usr/include/c++/13/bits/functexcept.h
- /usr/include/c++/13/bits/functional_hash.h
- /usr/include/c++/13/bits/hash_bytes.h
- /usr/include/c++/13/bits/invoke.h
- /usr/include/c++/13/bits/ios_base.h
- /usr/include/c++/13/bits/locale_classes.h
- /usr/include/c++/13/bits/locale_classes.tcc
- /usr/include/c++/13/bits/localefwd.h
- /usr/include/c++/13/bits/memoryfwd.h
- /usr/include/c++/13/bits/move.h
- /usr/include/c++/13/bits/nested_exception.h
- /usr/include/c++/13/bits/new_allocator.h
- /usr/include/c++/13/bits/ostream_insert.h
- /usr/include/c++/13/bits/postypes.h
- /usr/include/c++/13/bits/predefined_ops.h
- /usr/include/c++/13/bits/ptr_traits.h
- /usr/include/c++/13/bits/range_access.h
- /usr/include/c++/13/bits/refwrap.h
- /usr/include/c++/13/bits/requires_hosted.h
- /usr/include/c++/13/bits/shared_ptr.h
- /usr/include/c++/13/bits/shared_ptr_atomic.h
- /usr/include/c++/13/bits/shared_ptr_base.h
- /usr/include/c++/13/bits/std_abs.h
- /usr/include/c++/13/bits/stl_algo.h
- /usr/include/c++/13/bits/stl_algobase.h
- /usr/include/c++/13/bits/stl_construct.h
- /usr/include/c++/13/bits/stl_function.h
- /usr/include/c++/13/bits/stl_heap.h
- /usr/include/c++/13/bits/stl_iterator.h
- /usr/include/c++/13/bits/stl_iterator_base_funcs.h
- /usr/include/c++/13/bits/stl_iterator_base_types.h
- /usr/include/c++/13/bits/stl_pair.h
- /usr/include/c++/13/bits/stl_raw_storage_iter.h
- /usr/include/c++/13/bits/stl_relops.h
- /usr/include/c++/13/bits/stl_tempbuf.h
- /usr/include/c++/13/bits/stl_uninitialized.h
- /usr/include/c++/13/bits/stream_iterator.h
- /usr/include/c++/13/bits/streambuf.tcc
- /usr/include/c++/13/bits/streambuf_iterator.h
- /usr/include/c++/13/bits/stringfwd.h
- /usr/include/c++/13/bits/uniform_int_dist.h
- /usr/include/c++/13/bits/unique_ptr.h
- /usr/include/c++/13/bits/uses_allocator.h
- /usr/include/c++/13/bits/utility.h
- /usr/include/c++/13/cassert
- /usr/include/c++/13/cctype
- /usr/include/c++/13/cerrno
- /usr/include/c++/13/clocale
- /usr/include/c++/13/cstdio
- /usr/include/c++/13/cstdlib
- /usr/include/c++/13/cwchar
- /usr/include/c++/13/debug/assertions.h
- /usr/include/c++/13/debug/debug.h
- /usr/include/c++/13/exception
- /usr/include/c++/13/ext/aligned_buffer.h
- /usr/include/c++/13/ext/alloc_traits.h
- /usr/include/c++/13/ext/atomicity.h
- /usr/include/c++/13/ext/concurrence.h
- /usr/include/c++/13/ext/numeric_traits.h
- /usr/include/c++/13/ext/string_conversions.h
- /usr/include/c++/13/ext/type_traits.h
- /usr/include/c++/13/initializer_list
- /usr/include/c++/13/iosfwd
- /usr/include/c++/13/iterator
- /usr/include/c++/13/limits
- /usr/include/c++/13/memory
- /usr/include/c++/13/new
- /usr/include/c++/13/stdexcept
- /usr/include/c++/13/streambuf
- /usr/include/c++/13/string
- /usr/include/c++/13/system_error
- /usr/include/c++/13/tuple
- /usr/include/c++/13/type_traits
- /usr/include/c++/13/typeinfo
- /usr/include/c++/13/utility
- /usr/include/c++/13/x86_64-redhat-linux/bits/atomic_word.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++allocator.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++config.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++locale.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/cpu_defines.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/error_constants.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/gthr-default.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/gthr.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/os_defines.h
+ /usr/include/c++/14/algorithm
+ /usr/include/c++/14/backward/auto_ptr.h
+ /usr/include/c++/14/backward/binders.h
+ /usr/include/c++/14/bit
+ /usr/include/c++/14/bits/algorithmfwd.h
+ /usr/include/c++/14/bits/align.h
+ /usr/include/c++/14/bits/alloc_traits.h
+ /usr/include/c++/14/bits/allocated_ptr.h
+ /usr/include/c++/14/bits/allocator.h
+ /usr/include/c++/14/bits/atomic_base.h
+ /usr/include/c++/14/bits/atomic_lockfree_defines.h
+ /usr/include/c++/14/bits/basic_string.h
+ /usr/include/c++/14/bits/basic_string.tcc
+ /usr/include/c++/14/bits/char_traits.h
+ /usr/include/c++/14/bits/charconv.h
+ /usr/include/c++/14/bits/concept_check.h
+ /usr/include/c++/14/bits/cpp_type_traits.h
+ /usr/include/c++/14/bits/cxxabi_forced.h
+ /usr/include/c++/14/bits/cxxabi_init_exception.h
+ /usr/include/c++/14/bits/exception.h
+ /usr/include/c++/14/bits/exception_defines.h
+ /usr/include/c++/14/bits/exception_ptr.h
+ /usr/include/c++/14/bits/functexcept.h
+ /usr/include/c++/14/bits/functional_hash.h
+ /usr/include/c++/14/bits/hash_bytes.h
+ /usr/include/c++/14/bits/invoke.h
+ /usr/include/c++/14/bits/ios_base.h
+ /usr/include/c++/14/bits/locale_classes.h
+ /usr/include/c++/14/bits/locale_classes.tcc
+ /usr/include/c++/14/bits/localefwd.h
+ /usr/include/c++/14/bits/memoryfwd.h
+ /usr/include/c++/14/bits/move.h
+ /usr/include/c++/14/bits/nested_exception.h
+ /usr/include/c++/14/bits/new_allocator.h
+ /usr/include/c++/14/bits/ostream_insert.h
+ /usr/include/c++/14/bits/postypes.h
+ /usr/include/c++/14/bits/predefined_ops.h
+ /usr/include/c++/14/bits/ptr_traits.h
+ /usr/include/c++/14/bits/range_access.h
+ /usr/include/c++/14/bits/refwrap.h
+ /usr/include/c++/14/bits/requires_hosted.h
+ /usr/include/c++/14/bits/shared_ptr.h
+ /usr/include/c++/14/bits/shared_ptr_atomic.h
+ /usr/include/c++/14/bits/shared_ptr_base.h
+ /usr/include/c++/14/bits/std_abs.h
+ /usr/include/c++/14/bits/stl_algo.h
+ /usr/include/c++/14/bits/stl_algobase.h
+ /usr/include/c++/14/bits/stl_construct.h
+ /usr/include/c++/14/bits/stl_function.h
+ /usr/include/c++/14/bits/stl_heap.h
+ /usr/include/c++/14/bits/stl_iterator.h
+ /usr/include/c++/14/bits/stl_iterator_base_funcs.h
+ /usr/include/c++/14/bits/stl_iterator_base_types.h
+ /usr/include/c++/14/bits/stl_pair.h
+ /usr/include/c++/14/bits/stl_raw_storage_iter.h
+ /usr/include/c++/14/bits/stl_relops.h
+ /usr/include/c++/14/bits/stl_tempbuf.h
+ /usr/include/c++/14/bits/stl_uninitialized.h
+ /usr/include/c++/14/bits/stream_iterator.h
+ /usr/include/c++/14/bits/streambuf.tcc
+ /usr/include/c++/14/bits/streambuf_iterator.h
+ /usr/include/c++/14/bits/stringfwd.h
+ /usr/include/c++/14/bits/uniform_int_dist.h
+ /usr/include/c++/14/bits/unique_ptr.h
+ /usr/include/c++/14/bits/uses_allocator.h
+ /usr/include/c++/14/bits/utility.h
+ /usr/include/c++/14/bits/version.h
+ /usr/include/c++/14/cassert
+ /usr/include/c++/14/cctype
+ /usr/include/c++/14/cerrno
+ /usr/include/c++/14/clocale
+ /usr/include/c++/14/cstdio
+ /usr/include/c++/14/cstdlib
+ /usr/include/c++/14/cwchar
+ /usr/include/c++/14/debug/assertions.h
+ /usr/include/c++/14/debug/debug.h
+ /usr/include/c++/14/exception
+ /usr/include/c++/14/ext/aligned_buffer.h
+ /usr/include/c++/14/ext/alloc_traits.h
+ /usr/include/c++/14/ext/atomicity.h
+ /usr/include/c++/14/ext/concurrence.h
+ /usr/include/c++/14/ext/numeric_traits.h
+ /usr/include/c++/14/ext/string_conversions.h
+ /usr/include/c++/14/ext/type_traits.h
+ /usr/include/c++/14/initializer_list
+ /usr/include/c++/14/iosfwd
+ /usr/include/c++/14/iterator
+ /usr/include/c++/14/limits
+ /usr/include/c++/14/memory
+ /usr/include/c++/14/new
+ /usr/include/c++/14/stdexcept
+ /usr/include/c++/14/streambuf
+ /usr/include/c++/14/string
+ /usr/include/c++/14/system_error
+ /usr/include/c++/14/tuple
+ /usr/include/c++/14/type_traits
+ /usr/include/c++/14/typeinfo
+ /usr/include/c++/14/utility
+ /usr/include/c++/14/x86_64-redhat-linux/bits/atomic_word.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++allocator.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++config.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++locale.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/cpu_defines.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/error_constants.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/gthr-default.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/gthr.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/os_defines.h
/usr/include/ctype.h
/usr/include/endian.h
/usr/include/errno.h
@@ -196,16 +198,16 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o
/usr/include/sys/types.h
/usr/include/time.h
/usr/include/wchar.h
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdarg.h
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stddef.h
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdint.h
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/optional.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/string_view.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/detail/uri_parts.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_advance_parts.hpp
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdarg.h
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stddef.h
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdint.h
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/optional.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/string_view.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail/uri_parts.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_advance_parts.hpp
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_normalize.cpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_normalize.cpp
/usr/include/alloca.h
/usr/include/asm-generic/errno-base.h
/usr/include/asm-generic/errno.h
@@ -229,6 +231,7 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o
/usr/include/bits/select.h
/usr/include/bits/setjmp.h
/usr/include/bits/stdint-intn.h
+ /usr/include/bits/stdint-least.h
/usr/include/bits/stdint-uintn.h
/usr/include/bits/stdio.h
/usr/include/bits/stdio_lim.h
@@ -273,132 +276,133 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o
/usr/include/bits/wchar.h
/usr/include/bits/wctype-wchar.h
/usr/include/bits/wordsize.h
- /usr/include/c++/13/algorithm
- /usr/include/c++/13/backward/auto_ptr.h
- /usr/include/c++/13/backward/binders.h
- /usr/include/c++/13/bit
- /usr/include/c++/13/bits/algorithmfwd.h
- /usr/include/c++/13/bits/align.h
- /usr/include/c++/13/bits/alloc_traits.h
- /usr/include/c++/13/bits/allocated_ptr.h
- /usr/include/c++/13/bits/allocator.h
- /usr/include/c++/13/bits/atomic_base.h
- /usr/include/c++/13/bits/atomic_lockfree_defines.h
- /usr/include/c++/13/bits/basic_string.h
- /usr/include/c++/13/bits/basic_string.tcc
- /usr/include/c++/13/bits/char_traits.h
- /usr/include/c++/13/bits/charconv.h
- /usr/include/c++/13/bits/codecvt.h
- /usr/include/c++/13/bits/concept_check.h
- /usr/include/c++/13/bits/cpp_type_traits.h
- /usr/include/c++/13/bits/cxxabi_forced.h
- /usr/include/c++/13/bits/cxxabi_init_exception.h
- /usr/include/c++/13/bits/exception.h
- /usr/include/c++/13/bits/exception_defines.h
- /usr/include/c++/13/bits/exception_ptr.h
- /usr/include/c++/13/bits/functexcept.h
- /usr/include/c++/13/bits/functional_hash.h
- /usr/include/c++/13/bits/hash_bytes.h
- /usr/include/c++/13/bits/invoke.h
- /usr/include/c++/13/bits/ios_base.h
- /usr/include/c++/13/bits/locale_classes.h
- /usr/include/c++/13/bits/locale_classes.tcc
- /usr/include/c++/13/bits/locale_conv.h
- /usr/include/c++/13/bits/locale_facets.h
- /usr/include/c++/13/bits/locale_facets.tcc
- /usr/include/c++/13/bits/locale_facets_nonio.h
- /usr/include/c++/13/bits/locale_facets_nonio.tcc
- /usr/include/c++/13/bits/localefwd.h
- /usr/include/c++/13/bits/memoryfwd.h
- /usr/include/c++/13/bits/move.h
- /usr/include/c++/13/bits/nested_exception.h
- /usr/include/c++/13/bits/new_allocator.h
- /usr/include/c++/13/bits/ostream_insert.h
- /usr/include/c++/13/bits/postypes.h
- /usr/include/c++/13/bits/predefined_ops.h
- /usr/include/c++/13/bits/ptr_traits.h
- /usr/include/c++/13/bits/range_access.h
- /usr/include/c++/13/bits/refwrap.h
- /usr/include/c++/13/bits/requires_hosted.h
- /usr/include/c++/13/bits/shared_ptr.h
- /usr/include/c++/13/bits/shared_ptr_atomic.h
- /usr/include/c++/13/bits/shared_ptr_base.h
- /usr/include/c++/13/bits/std_abs.h
- /usr/include/c++/13/bits/std_function.h
- /usr/include/c++/13/bits/stl_algo.h
- /usr/include/c++/13/bits/stl_algobase.h
- /usr/include/c++/13/bits/stl_bvector.h
- /usr/include/c++/13/bits/stl_construct.h
- /usr/include/c++/13/bits/stl_function.h
- /usr/include/c++/13/bits/stl_heap.h
- /usr/include/c++/13/bits/stl_iterator.h
- /usr/include/c++/13/bits/stl_iterator_base_funcs.h
- /usr/include/c++/13/bits/stl_iterator_base_types.h
- /usr/include/c++/13/bits/stl_pair.h
- /usr/include/c++/13/bits/stl_raw_storage_iter.h
- /usr/include/c++/13/bits/stl_relops.h
- /usr/include/c++/13/bits/stl_tempbuf.h
- /usr/include/c++/13/bits/stl_uninitialized.h
- /usr/include/c++/13/bits/stl_vector.h
- /usr/include/c++/13/bits/stream_iterator.h
- /usr/include/c++/13/bits/streambuf.tcc
- /usr/include/c++/13/bits/streambuf_iterator.h
- /usr/include/c++/13/bits/stringfwd.h
- /usr/include/c++/13/bits/uniform_int_dist.h
- /usr/include/c++/13/bits/unique_ptr.h
- /usr/include/c++/13/bits/uses_allocator.h
- /usr/include/c++/13/bits/utility.h
- /usr/include/c++/13/bits/vector.tcc
- /usr/include/c++/13/cassert
- /usr/include/c++/13/cctype
- /usr/include/c++/13/cerrno
- /usr/include/c++/13/clocale
- /usr/include/c++/13/cstdint
- /usr/include/c++/13/cstdio
- /usr/include/c++/13/cstdlib
- /usr/include/c++/13/cstring
- /usr/include/c++/13/ctime
- /usr/include/c++/13/cwchar
- /usr/include/c++/13/cwctype
- /usr/include/c++/13/debug/assertions.h
- /usr/include/c++/13/debug/debug.h
- /usr/include/c++/13/exception
- /usr/include/c++/13/ext/aligned_buffer.h
- /usr/include/c++/13/ext/alloc_traits.h
- /usr/include/c++/13/ext/atomicity.h
- /usr/include/c++/13/ext/concurrence.h
- /usr/include/c++/13/ext/numeric_traits.h
- /usr/include/c++/13/ext/string_conversions.h
- /usr/include/c++/13/ext/type_traits.h
- /usr/include/c++/13/functional
- /usr/include/c++/13/initializer_list
- /usr/include/c++/13/iosfwd
- /usr/include/c++/13/iterator
- /usr/include/c++/13/locale
- /usr/include/c++/13/memory
- /usr/include/c++/13/new
- /usr/include/c++/13/stdexcept
- /usr/include/c++/13/streambuf
- /usr/include/c++/13/string
- /usr/include/c++/13/system_error
- /usr/include/c++/13/tuple
- /usr/include/c++/13/type_traits
- /usr/include/c++/13/typeinfo
- /usr/include/c++/13/utility
- /usr/include/c++/13/vector
- /usr/include/c++/13/x86_64-redhat-linux/bits/atomic_word.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++allocator.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++config.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++locale.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/cpu_defines.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/ctype_base.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/ctype_inline.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/error_constants.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/gthr-default.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/gthr.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/messages_members.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/os_defines.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/time_members.h
+ /usr/include/c++/14/algorithm
+ /usr/include/c++/14/backward/auto_ptr.h
+ /usr/include/c++/14/backward/binders.h
+ /usr/include/c++/14/bit
+ /usr/include/c++/14/bits/algorithmfwd.h
+ /usr/include/c++/14/bits/align.h
+ /usr/include/c++/14/bits/alloc_traits.h
+ /usr/include/c++/14/bits/allocated_ptr.h
+ /usr/include/c++/14/bits/allocator.h
+ /usr/include/c++/14/bits/atomic_base.h
+ /usr/include/c++/14/bits/atomic_lockfree_defines.h
+ /usr/include/c++/14/bits/basic_string.h
+ /usr/include/c++/14/bits/basic_string.tcc
+ /usr/include/c++/14/bits/char_traits.h
+ /usr/include/c++/14/bits/charconv.h
+ /usr/include/c++/14/bits/codecvt.h
+ /usr/include/c++/14/bits/concept_check.h
+ /usr/include/c++/14/bits/cpp_type_traits.h
+ /usr/include/c++/14/bits/cxxabi_forced.h
+ /usr/include/c++/14/bits/cxxabi_init_exception.h
+ /usr/include/c++/14/bits/exception.h
+ /usr/include/c++/14/bits/exception_defines.h
+ /usr/include/c++/14/bits/exception_ptr.h
+ /usr/include/c++/14/bits/functexcept.h
+ /usr/include/c++/14/bits/functional_hash.h
+ /usr/include/c++/14/bits/hash_bytes.h
+ /usr/include/c++/14/bits/invoke.h
+ /usr/include/c++/14/bits/ios_base.h
+ /usr/include/c++/14/bits/locale_classes.h
+ /usr/include/c++/14/bits/locale_classes.tcc
+ /usr/include/c++/14/bits/locale_conv.h
+ /usr/include/c++/14/bits/locale_facets.h
+ /usr/include/c++/14/bits/locale_facets.tcc
+ /usr/include/c++/14/bits/locale_facets_nonio.h
+ /usr/include/c++/14/bits/locale_facets_nonio.tcc
+ /usr/include/c++/14/bits/localefwd.h
+ /usr/include/c++/14/bits/memoryfwd.h
+ /usr/include/c++/14/bits/move.h
+ /usr/include/c++/14/bits/nested_exception.h
+ /usr/include/c++/14/bits/new_allocator.h
+ /usr/include/c++/14/bits/ostream_insert.h
+ /usr/include/c++/14/bits/postypes.h
+ /usr/include/c++/14/bits/predefined_ops.h
+ /usr/include/c++/14/bits/ptr_traits.h
+ /usr/include/c++/14/bits/range_access.h
+ /usr/include/c++/14/bits/refwrap.h
+ /usr/include/c++/14/bits/requires_hosted.h
+ /usr/include/c++/14/bits/shared_ptr.h
+ /usr/include/c++/14/bits/shared_ptr_atomic.h
+ /usr/include/c++/14/bits/shared_ptr_base.h
+ /usr/include/c++/14/bits/std_abs.h
+ /usr/include/c++/14/bits/std_function.h
+ /usr/include/c++/14/bits/stl_algo.h
+ /usr/include/c++/14/bits/stl_algobase.h
+ /usr/include/c++/14/bits/stl_bvector.h
+ /usr/include/c++/14/bits/stl_construct.h
+ /usr/include/c++/14/bits/stl_function.h
+ /usr/include/c++/14/bits/stl_heap.h
+ /usr/include/c++/14/bits/stl_iterator.h
+ /usr/include/c++/14/bits/stl_iterator_base_funcs.h
+ /usr/include/c++/14/bits/stl_iterator_base_types.h
+ /usr/include/c++/14/bits/stl_pair.h
+ /usr/include/c++/14/bits/stl_raw_storage_iter.h
+ /usr/include/c++/14/bits/stl_relops.h
+ /usr/include/c++/14/bits/stl_tempbuf.h
+ /usr/include/c++/14/bits/stl_uninitialized.h
+ /usr/include/c++/14/bits/stl_vector.h
+ /usr/include/c++/14/bits/stream_iterator.h
+ /usr/include/c++/14/bits/streambuf.tcc
+ /usr/include/c++/14/bits/streambuf_iterator.h
+ /usr/include/c++/14/bits/stringfwd.h
+ /usr/include/c++/14/bits/uniform_int_dist.h
+ /usr/include/c++/14/bits/unique_ptr.h
+ /usr/include/c++/14/bits/uses_allocator.h
+ /usr/include/c++/14/bits/utility.h
+ /usr/include/c++/14/bits/vector.tcc
+ /usr/include/c++/14/bits/version.h
+ /usr/include/c++/14/cassert
+ /usr/include/c++/14/cctype
+ /usr/include/c++/14/cerrno
+ /usr/include/c++/14/clocale
+ /usr/include/c++/14/cstdint
+ /usr/include/c++/14/cstdio
+ /usr/include/c++/14/cstdlib
+ /usr/include/c++/14/cstring
+ /usr/include/c++/14/ctime
+ /usr/include/c++/14/cwchar
+ /usr/include/c++/14/cwctype
+ /usr/include/c++/14/debug/assertions.h
+ /usr/include/c++/14/debug/debug.h
+ /usr/include/c++/14/exception
+ /usr/include/c++/14/ext/aligned_buffer.h
+ /usr/include/c++/14/ext/alloc_traits.h
+ /usr/include/c++/14/ext/atomicity.h
+ /usr/include/c++/14/ext/concurrence.h
+ /usr/include/c++/14/ext/numeric_traits.h
+ /usr/include/c++/14/ext/string_conversions.h
+ /usr/include/c++/14/ext/type_traits.h
+ /usr/include/c++/14/functional
+ /usr/include/c++/14/initializer_list
+ /usr/include/c++/14/iosfwd
+ /usr/include/c++/14/iterator
+ /usr/include/c++/14/locale
+ /usr/include/c++/14/memory
+ /usr/include/c++/14/new
+ /usr/include/c++/14/stdexcept
+ /usr/include/c++/14/streambuf
+ /usr/include/c++/14/string
+ /usr/include/c++/14/system_error
+ /usr/include/c++/14/tuple
+ /usr/include/c++/14/type_traits
+ /usr/include/c++/14/typeinfo
+ /usr/include/c++/14/utility
+ /usr/include/c++/14/vector
+ /usr/include/c++/14/x86_64-redhat-linux/bits/atomic_word.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++allocator.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++config.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++locale.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/cpu_defines.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/ctype_base.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/ctype_inline.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/error_constants.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/gthr-default.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/gthr.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/messages_members.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/os_defines.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/time_members.h
/usr/include/ctype.h
/usr/include/endian.h
/usr/include/errno.h
@@ -424,26 +428,26 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o
/usr/include/time.h
/usr/include/wchar.h
/usr/include/wctype.h
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdarg.h
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stddef.h
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdint.h
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/optional.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/string_view.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/config.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/detail/decode.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/detail/encode.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/detail/translate.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/detail/uri_parts.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/uri.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/uri_builder.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/uri_errors.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/algorithm.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/algorithm_split.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_normalize.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_percent_encode.hpp
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdarg.h
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stddef.h
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdint.h
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/optional.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/string_view.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/config.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail/decode.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail/encode.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail/translate.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail/uri_parts.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/uri.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/uri_builder.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/uri_errors.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/algorithm.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/algorithm_split.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_normalize.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_percent_encode.hpp
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_parse.cpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_parse.cpp
/usr/include/alloca.h
/usr/include/asm-generic/errno-base.h
/usr/include/asm-generic/errno.h
@@ -467,6 +471,7 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o
/usr/include/bits/select.h
/usr/include/bits/setjmp.h
/usr/include/bits/stdint-intn.h
+ /usr/include/bits/stdint-least.h
/usr/include/bits/stdint-uintn.h
/usr/include/bits/stdio.h
/usr/include/bits/stdio_lim.h
@@ -511,126 +516,127 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o
/usr/include/bits/wchar.h
/usr/include/bits/wctype-wchar.h
/usr/include/bits/wordsize.h
- /usr/include/c++/13/algorithm
- /usr/include/c++/13/backward/auto_ptr.h
- /usr/include/c++/13/backward/binders.h
- /usr/include/c++/13/bit
- /usr/include/c++/13/bits/algorithmfwd.h
- /usr/include/c++/13/bits/align.h
- /usr/include/c++/13/bits/alloc_traits.h
- /usr/include/c++/13/bits/allocated_ptr.h
- /usr/include/c++/13/bits/allocator.h
- /usr/include/c++/13/bits/atomic_base.h
- /usr/include/c++/13/bits/atomic_lockfree_defines.h
- /usr/include/c++/13/bits/basic_string.h
- /usr/include/c++/13/bits/basic_string.tcc
- /usr/include/c++/13/bits/char_traits.h
- /usr/include/c++/13/bits/charconv.h
- /usr/include/c++/13/bits/codecvt.h
- /usr/include/c++/13/bits/concept_check.h
- /usr/include/c++/13/bits/cpp_type_traits.h
- /usr/include/c++/13/bits/cxxabi_forced.h
- /usr/include/c++/13/bits/cxxabi_init_exception.h
- /usr/include/c++/13/bits/exception.h
- /usr/include/c++/13/bits/exception_defines.h
- /usr/include/c++/13/bits/exception_ptr.h
- /usr/include/c++/13/bits/functexcept.h
- /usr/include/c++/13/bits/functional_hash.h
- /usr/include/c++/13/bits/hash_bytes.h
- /usr/include/c++/13/bits/invoke.h
- /usr/include/c++/13/bits/ios_base.h
- /usr/include/c++/13/bits/locale_classes.h
- /usr/include/c++/13/bits/locale_classes.tcc
- /usr/include/c++/13/bits/locale_conv.h
- /usr/include/c++/13/bits/locale_facets.h
- /usr/include/c++/13/bits/locale_facets.tcc
- /usr/include/c++/13/bits/locale_facets_nonio.h
- /usr/include/c++/13/bits/locale_facets_nonio.tcc
- /usr/include/c++/13/bits/localefwd.h
- /usr/include/c++/13/bits/memoryfwd.h
- /usr/include/c++/13/bits/move.h
- /usr/include/c++/13/bits/nested_exception.h
- /usr/include/c++/13/bits/new_allocator.h
- /usr/include/c++/13/bits/ostream_insert.h
- /usr/include/c++/13/bits/postypes.h
- /usr/include/c++/13/bits/predefined_ops.h
- /usr/include/c++/13/bits/ptr_traits.h
- /usr/include/c++/13/bits/range_access.h
- /usr/include/c++/13/bits/refwrap.h
- /usr/include/c++/13/bits/requires_hosted.h
- /usr/include/c++/13/bits/shared_ptr.h
- /usr/include/c++/13/bits/shared_ptr_atomic.h
- /usr/include/c++/13/bits/shared_ptr_base.h
- /usr/include/c++/13/bits/std_abs.h
- /usr/include/c++/13/bits/stl_algo.h
- /usr/include/c++/13/bits/stl_algobase.h
- /usr/include/c++/13/bits/stl_construct.h
- /usr/include/c++/13/bits/stl_function.h
- /usr/include/c++/13/bits/stl_heap.h
- /usr/include/c++/13/bits/stl_iterator.h
- /usr/include/c++/13/bits/stl_iterator_base_funcs.h
- /usr/include/c++/13/bits/stl_iterator_base_types.h
- /usr/include/c++/13/bits/stl_pair.h
- /usr/include/c++/13/bits/stl_raw_storage_iter.h
- /usr/include/c++/13/bits/stl_relops.h
- /usr/include/c++/13/bits/stl_tempbuf.h
- /usr/include/c++/13/bits/stl_uninitialized.h
- /usr/include/c++/13/bits/stream_iterator.h
- /usr/include/c++/13/bits/streambuf.tcc
- /usr/include/c++/13/bits/streambuf_iterator.h
- /usr/include/c++/13/bits/stringfwd.h
- /usr/include/c++/13/bits/uniform_int_dist.h
- /usr/include/c++/13/bits/unique_ptr.h
- /usr/include/c++/13/bits/uses_allocator.h
- /usr/include/c++/13/bits/utility.h
- /usr/include/c++/13/cassert
- /usr/include/c++/13/cctype
- /usr/include/c++/13/cerrno
- /usr/include/c++/13/clocale
- /usr/include/c++/13/cstdio
- /usr/include/c++/13/cstdlib
- /usr/include/c++/13/cstring
- /usr/include/c++/13/ctime
- /usr/include/c++/13/cwchar
- /usr/include/c++/13/cwctype
- /usr/include/c++/13/debug/assertions.h
- /usr/include/c++/13/debug/debug.h
- /usr/include/c++/13/exception
- /usr/include/c++/13/ext/aligned_buffer.h
- /usr/include/c++/13/ext/alloc_traits.h
- /usr/include/c++/13/ext/atomicity.h
- /usr/include/c++/13/ext/concurrence.h
- /usr/include/c++/13/ext/numeric_traits.h
- /usr/include/c++/13/ext/string_conversions.h
- /usr/include/c++/13/ext/type_traits.h
- /usr/include/c++/13/initializer_list
- /usr/include/c++/13/iosfwd
- /usr/include/c++/13/iterator
- /usr/include/c++/13/limits
- /usr/include/c++/13/locale
- /usr/include/c++/13/memory
- /usr/include/c++/13/new
- /usr/include/c++/13/stdexcept
- /usr/include/c++/13/streambuf
- /usr/include/c++/13/string
- /usr/include/c++/13/system_error
- /usr/include/c++/13/tuple
- /usr/include/c++/13/type_traits
- /usr/include/c++/13/typeinfo
- /usr/include/c++/13/utility
- /usr/include/c++/13/x86_64-redhat-linux/bits/atomic_word.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++allocator.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++config.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++locale.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/cpu_defines.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/ctype_base.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/ctype_inline.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/error_constants.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/gthr-default.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/gthr.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/messages_members.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/os_defines.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/time_members.h
+ /usr/include/c++/14/algorithm
+ /usr/include/c++/14/backward/auto_ptr.h
+ /usr/include/c++/14/backward/binders.h
+ /usr/include/c++/14/bit
+ /usr/include/c++/14/bits/algorithmfwd.h
+ /usr/include/c++/14/bits/align.h
+ /usr/include/c++/14/bits/alloc_traits.h
+ /usr/include/c++/14/bits/allocated_ptr.h
+ /usr/include/c++/14/bits/allocator.h
+ /usr/include/c++/14/bits/atomic_base.h
+ /usr/include/c++/14/bits/atomic_lockfree_defines.h
+ /usr/include/c++/14/bits/basic_string.h
+ /usr/include/c++/14/bits/basic_string.tcc
+ /usr/include/c++/14/bits/char_traits.h
+ /usr/include/c++/14/bits/charconv.h
+ /usr/include/c++/14/bits/codecvt.h
+ /usr/include/c++/14/bits/concept_check.h
+ /usr/include/c++/14/bits/cpp_type_traits.h
+ /usr/include/c++/14/bits/cxxabi_forced.h
+ /usr/include/c++/14/bits/cxxabi_init_exception.h
+ /usr/include/c++/14/bits/exception.h
+ /usr/include/c++/14/bits/exception_defines.h
+ /usr/include/c++/14/bits/exception_ptr.h
+ /usr/include/c++/14/bits/functexcept.h
+ /usr/include/c++/14/bits/functional_hash.h
+ /usr/include/c++/14/bits/hash_bytes.h
+ /usr/include/c++/14/bits/invoke.h
+ /usr/include/c++/14/bits/ios_base.h
+ /usr/include/c++/14/bits/locale_classes.h
+ /usr/include/c++/14/bits/locale_classes.tcc
+ /usr/include/c++/14/bits/locale_conv.h
+ /usr/include/c++/14/bits/locale_facets.h
+ /usr/include/c++/14/bits/locale_facets.tcc
+ /usr/include/c++/14/bits/locale_facets_nonio.h
+ /usr/include/c++/14/bits/locale_facets_nonio.tcc
+ /usr/include/c++/14/bits/localefwd.h
+ /usr/include/c++/14/bits/memoryfwd.h
+ /usr/include/c++/14/bits/move.h
+ /usr/include/c++/14/bits/nested_exception.h
+ /usr/include/c++/14/bits/new_allocator.h
+ /usr/include/c++/14/bits/ostream_insert.h
+ /usr/include/c++/14/bits/postypes.h
+ /usr/include/c++/14/bits/predefined_ops.h
+ /usr/include/c++/14/bits/ptr_traits.h
+ /usr/include/c++/14/bits/range_access.h
+ /usr/include/c++/14/bits/refwrap.h
+ /usr/include/c++/14/bits/requires_hosted.h
+ /usr/include/c++/14/bits/shared_ptr.h
+ /usr/include/c++/14/bits/shared_ptr_atomic.h
+ /usr/include/c++/14/bits/shared_ptr_base.h
+ /usr/include/c++/14/bits/std_abs.h
+ /usr/include/c++/14/bits/stl_algo.h
+ /usr/include/c++/14/bits/stl_algobase.h
+ /usr/include/c++/14/bits/stl_construct.h
+ /usr/include/c++/14/bits/stl_function.h
+ /usr/include/c++/14/bits/stl_heap.h
+ /usr/include/c++/14/bits/stl_iterator.h
+ /usr/include/c++/14/bits/stl_iterator_base_funcs.h
+ /usr/include/c++/14/bits/stl_iterator_base_types.h
+ /usr/include/c++/14/bits/stl_pair.h
+ /usr/include/c++/14/bits/stl_raw_storage_iter.h
+ /usr/include/c++/14/bits/stl_relops.h
+ /usr/include/c++/14/bits/stl_tempbuf.h
+ /usr/include/c++/14/bits/stl_uninitialized.h
+ /usr/include/c++/14/bits/stream_iterator.h
+ /usr/include/c++/14/bits/streambuf.tcc
+ /usr/include/c++/14/bits/streambuf_iterator.h
+ /usr/include/c++/14/bits/stringfwd.h
+ /usr/include/c++/14/bits/uniform_int_dist.h
+ /usr/include/c++/14/bits/unique_ptr.h
+ /usr/include/c++/14/bits/uses_allocator.h
+ /usr/include/c++/14/bits/utility.h
+ /usr/include/c++/14/bits/version.h
+ /usr/include/c++/14/cassert
+ /usr/include/c++/14/cctype
+ /usr/include/c++/14/cerrno
+ /usr/include/c++/14/clocale
+ /usr/include/c++/14/cstdio
+ /usr/include/c++/14/cstdlib
+ /usr/include/c++/14/cstring
+ /usr/include/c++/14/ctime
+ /usr/include/c++/14/cwchar
+ /usr/include/c++/14/cwctype
+ /usr/include/c++/14/debug/assertions.h
+ /usr/include/c++/14/debug/debug.h
+ /usr/include/c++/14/exception
+ /usr/include/c++/14/ext/aligned_buffer.h
+ /usr/include/c++/14/ext/alloc_traits.h
+ /usr/include/c++/14/ext/atomicity.h
+ /usr/include/c++/14/ext/concurrence.h
+ /usr/include/c++/14/ext/numeric_traits.h
+ /usr/include/c++/14/ext/string_conversions.h
+ /usr/include/c++/14/ext/type_traits.h
+ /usr/include/c++/14/initializer_list
+ /usr/include/c++/14/iosfwd
+ /usr/include/c++/14/iterator
+ /usr/include/c++/14/limits
+ /usr/include/c++/14/locale
+ /usr/include/c++/14/memory
+ /usr/include/c++/14/new
+ /usr/include/c++/14/stdexcept
+ /usr/include/c++/14/streambuf
+ /usr/include/c++/14/string
+ /usr/include/c++/14/system_error
+ /usr/include/c++/14/tuple
+ /usr/include/c++/14/type_traits
+ /usr/include/c++/14/typeinfo
+ /usr/include/c++/14/utility
+ /usr/include/c++/14/x86_64-redhat-linux/bits/atomic_word.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++allocator.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++config.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++locale.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/cpu_defines.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/ctype_base.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/ctype_inline.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/error_constants.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/gthr-default.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/gthr.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/messages_members.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/os_defines.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/time_members.h
/usr/include/ctype.h
/usr/include/endian.h
/usr/include/errno.h
@@ -656,17 +662,17 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o
/usr/include/time.h
/usr/include/wchar.h
/usr/include/wctype.h
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdarg.h
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stddef.h
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdint.h
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/optional.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/string_view.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/detail/uri_parts.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/grammar.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_parse.hpp
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdarg.h
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stddef.h
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdint.h
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/optional.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/string_view.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail/uri_parts.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/grammar.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_parse.hpp
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_parse_authority.cpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_parse_authority.cpp
/usr/include/alloca.h
/usr/include/asm-generic/errno-base.h
/usr/include/asm-generic/errno.h
@@ -690,6 +696,7 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o
/usr/include/bits/select.h
/usr/include/bits/setjmp.h
/usr/include/bits/stdint-intn.h
+ /usr/include/bits/stdint-least.h
/usr/include/bits/stdint-uintn.h
/usr/include/bits/stdio.h
/usr/include/bits/stdio_lim.h
@@ -734,126 +741,127 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o
/usr/include/bits/wchar.h
/usr/include/bits/wctype-wchar.h
/usr/include/bits/wordsize.h
- /usr/include/c++/13/algorithm
- /usr/include/c++/13/backward/auto_ptr.h
- /usr/include/c++/13/backward/binders.h
- /usr/include/c++/13/bit
- /usr/include/c++/13/bits/algorithmfwd.h
- /usr/include/c++/13/bits/align.h
- /usr/include/c++/13/bits/alloc_traits.h
- /usr/include/c++/13/bits/allocated_ptr.h
- /usr/include/c++/13/bits/allocator.h
- /usr/include/c++/13/bits/atomic_base.h
- /usr/include/c++/13/bits/atomic_lockfree_defines.h
- /usr/include/c++/13/bits/basic_string.h
- /usr/include/c++/13/bits/basic_string.tcc
- /usr/include/c++/13/bits/char_traits.h
- /usr/include/c++/13/bits/charconv.h
- /usr/include/c++/13/bits/codecvt.h
- /usr/include/c++/13/bits/concept_check.h
- /usr/include/c++/13/bits/cpp_type_traits.h
- /usr/include/c++/13/bits/cxxabi_forced.h
- /usr/include/c++/13/bits/cxxabi_init_exception.h
- /usr/include/c++/13/bits/exception.h
- /usr/include/c++/13/bits/exception_defines.h
- /usr/include/c++/13/bits/exception_ptr.h
- /usr/include/c++/13/bits/functexcept.h
- /usr/include/c++/13/bits/functional_hash.h
- /usr/include/c++/13/bits/hash_bytes.h
- /usr/include/c++/13/bits/invoke.h
- /usr/include/c++/13/bits/ios_base.h
- /usr/include/c++/13/bits/locale_classes.h
- /usr/include/c++/13/bits/locale_classes.tcc
- /usr/include/c++/13/bits/locale_conv.h
- /usr/include/c++/13/bits/locale_facets.h
- /usr/include/c++/13/bits/locale_facets.tcc
- /usr/include/c++/13/bits/locale_facets_nonio.h
- /usr/include/c++/13/bits/locale_facets_nonio.tcc
- /usr/include/c++/13/bits/localefwd.h
- /usr/include/c++/13/bits/memoryfwd.h
- /usr/include/c++/13/bits/move.h
- /usr/include/c++/13/bits/nested_exception.h
- /usr/include/c++/13/bits/new_allocator.h
- /usr/include/c++/13/bits/ostream_insert.h
- /usr/include/c++/13/bits/postypes.h
- /usr/include/c++/13/bits/predefined_ops.h
- /usr/include/c++/13/bits/ptr_traits.h
- /usr/include/c++/13/bits/range_access.h
- /usr/include/c++/13/bits/refwrap.h
- /usr/include/c++/13/bits/requires_hosted.h
- /usr/include/c++/13/bits/shared_ptr.h
- /usr/include/c++/13/bits/shared_ptr_atomic.h
- /usr/include/c++/13/bits/shared_ptr_base.h
- /usr/include/c++/13/bits/std_abs.h
- /usr/include/c++/13/bits/stl_algo.h
- /usr/include/c++/13/bits/stl_algobase.h
- /usr/include/c++/13/bits/stl_construct.h
- /usr/include/c++/13/bits/stl_function.h
- /usr/include/c++/13/bits/stl_heap.h
- /usr/include/c++/13/bits/stl_iterator.h
- /usr/include/c++/13/bits/stl_iterator_base_funcs.h
- /usr/include/c++/13/bits/stl_iterator_base_types.h
- /usr/include/c++/13/bits/stl_pair.h
- /usr/include/c++/13/bits/stl_raw_storage_iter.h
- /usr/include/c++/13/bits/stl_relops.h
- /usr/include/c++/13/bits/stl_tempbuf.h
- /usr/include/c++/13/bits/stl_uninitialized.h
- /usr/include/c++/13/bits/stream_iterator.h
- /usr/include/c++/13/bits/streambuf.tcc
- /usr/include/c++/13/bits/streambuf_iterator.h
- /usr/include/c++/13/bits/stringfwd.h
- /usr/include/c++/13/bits/uniform_int_dist.h
- /usr/include/c++/13/bits/unique_ptr.h
- /usr/include/c++/13/bits/uses_allocator.h
- /usr/include/c++/13/bits/utility.h
- /usr/include/c++/13/cassert
- /usr/include/c++/13/cctype
- /usr/include/c++/13/cerrno
- /usr/include/c++/13/clocale
- /usr/include/c++/13/cstdio
- /usr/include/c++/13/cstdlib
- /usr/include/c++/13/cstring
- /usr/include/c++/13/ctime
- /usr/include/c++/13/cwchar
- /usr/include/c++/13/cwctype
- /usr/include/c++/13/debug/assertions.h
- /usr/include/c++/13/debug/debug.h
- /usr/include/c++/13/exception
- /usr/include/c++/13/ext/aligned_buffer.h
- /usr/include/c++/13/ext/alloc_traits.h
- /usr/include/c++/13/ext/atomicity.h
- /usr/include/c++/13/ext/concurrence.h
- /usr/include/c++/13/ext/numeric_traits.h
- /usr/include/c++/13/ext/string_conversions.h
- /usr/include/c++/13/ext/type_traits.h
- /usr/include/c++/13/initializer_list
- /usr/include/c++/13/iosfwd
- /usr/include/c++/13/iterator
- /usr/include/c++/13/limits
- /usr/include/c++/13/locale
- /usr/include/c++/13/memory
- /usr/include/c++/13/new
- /usr/include/c++/13/stdexcept
- /usr/include/c++/13/streambuf
- /usr/include/c++/13/string
- /usr/include/c++/13/system_error
- /usr/include/c++/13/tuple
- /usr/include/c++/13/type_traits
- /usr/include/c++/13/typeinfo
- /usr/include/c++/13/utility
- /usr/include/c++/13/x86_64-redhat-linux/bits/atomic_word.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++allocator.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++config.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++locale.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/cpu_defines.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/ctype_base.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/ctype_inline.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/error_constants.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/gthr-default.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/gthr.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/messages_members.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/os_defines.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/time_members.h
+ /usr/include/c++/14/algorithm
+ /usr/include/c++/14/backward/auto_ptr.h
+ /usr/include/c++/14/backward/binders.h
+ /usr/include/c++/14/bit
+ /usr/include/c++/14/bits/algorithmfwd.h
+ /usr/include/c++/14/bits/align.h
+ /usr/include/c++/14/bits/alloc_traits.h
+ /usr/include/c++/14/bits/allocated_ptr.h
+ /usr/include/c++/14/bits/allocator.h
+ /usr/include/c++/14/bits/atomic_base.h
+ /usr/include/c++/14/bits/atomic_lockfree_defines.h
+ /usr/include/c++/14/bits/basic_string.h
+ /usr/include/c++/14/bits/basic_string.tcc
+ /usr/include/c++/14/bits/char_traits.h
+ /usr/include/c++/14/bits/charconv.h
+ /usr/include/c++/14/bits/codecvt.h
+ /usr/include/c++/14/bits/concept_check.h
+ /usr/include/c++/14/bits/cpp_type_traits.h
+ /usr/include/c++/14/bits/cxxabi_forced.h
+ /usr/include/c++/14/bits/cxxabi_init_exception.h
+ /usr/include/c++/14/bits/exception.h
+ /usr/include/c++/14/bits/exception_defines.h
+ /usr/include/c++/14/bits/exception_ptr.h
+ /usr/include/c++/14/bits/functexcept.h
+ /usr/include/c++/14/bits/functional_hash.h
+ /usr/include/c++/14/bits/hash_bytes.h
+ /usr/include/c++/14/bits/invoke.h
+ /usr/include/c++/14/bits/ios_base.h
+ /usr/include/c++/14/bits/locale_classes.h
+ /usr/include/c++/14/bits/locale_classes.tcc
+ /usr/include/c++/14/bits/locale_conv.h
+ /usr/include/c++/14/bits/locale_facets.h
+ /usr/include/c++/14/bits/locale_facets.tcc
+ /usr/include/c++/14/bits/locale_facets_nonio.h
+ /usr/include/c++/14/bits/locale_facets_nonio.tcc
+ /usr/include/c++/14/bits/localefwd.h
+ /usr/include/c++/14/bits/memoryfwd.h
+ /usr/include/c++/14/bits/move.h
+ /usr/include/c++/14/bits/nested_exception.h
+ /usr/include/c++/14/bits/new_allocator.h
+ /usr/include/c++/14/bits/ostream_insert.h
+ /usr/include/c++/14/bits/postypes.h
+ /usr/include/c++/14/bits/predefined_ops.h
+ /usr/include/c++/14/bits/ptr_traits.h
+ /usr/include/c++/14/bits/range_access.h
+ /usr/include/c++/14/bits/refwrap.h
+ /usr/include/c++/14/bits/requires_hosted.h
+ /usr/include/c++/14/bits/shared_ptr.h
+ /usr/include/c++/14/bits/shared_ptr_atomic.h
+ /usr/include/c++/14/bits/shared_ptr_base.h
+ /usr/include/c++/14/bits/std_abs.h
+ /usr/include/c++/14/bits/stl_algo.h
+ /usr/include/c++/14/bits/stl_algobase.h
+ /usr/include/c++/14/bits/stl_construct.h
+ /usr/include/c++/14/bits/stl_function.h
+ /usr/include/c++/14/bits/stl_heap.h
+ /usr/include/c++/14/bits/stl_iterator.h
+ /usr/include/c++/14/bits/stl_iterator_base_funcs.h
+ /usr/include/c++/14/bits/stl_iterator_base_types.h
+ /usr/include/c++/14/bits/stl_pair.h
+ /usr/include/c++/14/bits/stl_raw_storage_iter.h
+ /usr/include/c++/14/bits/stl_relops.h
+ /usr/include/c++/14/bits/stl_tempbuf.h
+ /usr/include/c++/14/bits/stl_uninitialized.h
+ /usr/include/c++/14/bits/stream_iterator.h
+ /usr/include/c++/14/bits/streambuf.tcc
+ /usr/include/c++/14/bits/streambuf_iterator.h
+ /usr/include/c++/14/bits/stringfwd.h
+ /usr/include/c++/14/bits/uniform_int_dist.h
+ /usr/include/c++/14/bits/unique_ptr.h
+ /usr/include/c++/14/bits/uses_allocator.h
+ /usr/include/c++/14/bits/utility.h
+ /usr/include/c++/14/bits/version.h
+ /usr/include/c++/14/cassert
+ /usr/include/c++/14/cctype
+ /usr/include/c++/14/cerrno
+ /usr/include/c++/14/clocale
+ /usr/include/c++/14/cstdio
+ /usr/include/c++/14/cstdlib
+ /usr/include/c++/14/cstring
+ /usr/include/c++/14/ctime
+ /usr/include/c++/14/cwchar
+ /usr/include/c++/14/cwctype
+ /usr/include/c++/14/debug/assertions.h
+ /usr/include/c++/14/debug/debug.h
+ /usr/include/c++/14/exception
+ /usr/include/c++/14/ext/aligned_buffer.h
+ /usr/include/c++/14/ext/alloc_traits.h
+ /usr/include/c++/14/ext/atomicity.h
+ /usr/include/c++/14/ext/concurrence.h
+ /usr/include/c++/14/ext/numeric_traits.h
+ /usr/include/c++/14/ext/string_conversions.h
+ /usr/include/c++/14/ext/type_traits.h
+ /usr/include/c++/14/initializer_list
+ /usr/include/c++/14/iosfwd
+ /usr/include/c++/14/iterator
+ /usr/include/c++/14/limits
+ /usr/include/c++/14/locale
+ /usr/include/c++/14/memory
+ /usr/include/c++/14/new
+ /usr/include/c++/14/stdexcept
+ /usr/include/c++/14/streambuf
+ /usr/include/c++/14/string
+ /usr/include/c++/14/system_error
+ /usr/include/c++/14/tuple
+ /usr/include/c++/14/type_traits
+ /usr/include/c++/14/typeinfo
+ /usr/include/c++/14/utility
+ /usr/include/c++/14/x86_64-redhat-linux/bits/atomic_word.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++allocator.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++config.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++locale.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/cpu_defines.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/ctype_base.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/ctype_inline.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/error_constants.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/gthr-default.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/gthr.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/messages_members.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/os_defines.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/time_members.h
/usr/include/ctype.h
/usr/include/endian.h
/usr/include/errno.h
@@ -879,17 +887,17 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o
/usr/include/time.h
/usr/include/wchar.h
/usr/include/wctype.h
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdarg.h
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stddef.h
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdint.h
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/optional.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/string_view.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/detail/uri_parts.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/grammar.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_parse_authority.hpp
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdarg.h
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stddef.h
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdint.h
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/optional.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/string_view.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail/uri_parts.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/grammar.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_parse_authority.hpp
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_resolve.cpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_resolve.cpp
/usr/include/alloca.h
/usr/include/asm-generic/errno-base.h
/usr/include/asm-generic/errno.h
@@ -913,6 +921,7 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o
/usr/include/bits/select.h
/usr/include/bits/setjmp.h
/usr/include/bits/stdint-intn.h
+ /usr/include/bits/stdint-least.h
/usr/include/bits/stdint-uintn.h
/usr/include/bits/stdio.h
/usr/include/bits/stdio_lim.h
@@ -956,116 +965,117 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o
/usr/include/bits/waitstatus.h
/usr/include/bits/wchar.h
/usr/include/bits/wordsize.h
- /usr/include/c++/13/algorithm
- /usr/include/c++/13/backward/auto_ptr.h
- /usr/include/c++/13/backward/binders.h
- /usr/include/c++/13/bit
- /usr/include/c++/13/bits/algorithmfwd.h
- /usr/include/c++/13/bits/align.h
- /usr/include/c++/13/bits/alloc_traits.h
- /usr/include/c++/13/bits/allocated_ptr.h
- /usr/include/c++/13/bits/allocator.h
- /usr/include/c++/13/bits/atomic_base.h
- /usr/include/c++/13/bits/atomic_lockfree_defines.h
- /usr/include/c++/13/bits/basic_string.h
- /usr/include/c++/13/bits/basic_string.tcc
- /usr/include/c++/13/bits/char_traits.h
- /usr/include/c++/13/bits/charconv.h
- /usr/include/c++/13/bits/concept_check.h
- /usr/include/c++/13/bits/cpp_type_traits.h
- /usr/include/c++/13/bits/cxxabi_forced.h
- /usr/include/c++/13/bits/cxxabi_init_exception.h
- /usr/include/c++/13/bits/exception.h
- /usr/include/c++/13/bits/exception_defines.h
- /usr/include/c++/13/bits/exception_ptr.h
- /usr/include/c++/13/bits/functexcept.h
- /usr/include/c++/13/bits/functional_hash.h
- /usr/include/c++/13/bits/hash_bytes.h
- /usr/include/c++/13/bits/invoke.h
- /usr/include/c++/13/bits/ios_base.h
- /usr/include/c++/13/bits/locale_classes.h
- /usr/include/c++/13/bits/locale_classes.tcc
- /usr/include/c++/13/bits/localefwd.h
- /usr/include/c++/13/bits/memoryfwd.h
- /usr/include/c++/13/bits/move.h
- /usr/include/c++/13/bits/nested_exception.h
- /usr/include/c++/13/bits/new_allocator.h
- /usr/include/c++/13/bits/ostream_insert.h
- /usr/include/c++/13/bits/postypes.h
- /usr/include/c++/13/bits/predefined_ops.h
- /usr/include/c++/13/bits/ptr_traits.h
- /usr/include/c++/13/bits/range_access.h
- /usr/include/c++/13/bits/refwrap.h
- /usr/include/c++/13/bits/requires_hosted.h
- /usr/include/c++/13/bits/shared_ptr.h
- /usr/include/c++/13/bits/shared_ptr_atomic.h
- /usr/include/c++/13/bits/shared_ptr_base.h
- /usr/include/c++/13/bits/std_abs.h
- /usr/include/c++/13/bits/std_function.h
- /usr/include/c++/13/bits/stl_algo.h
- /usr/include/c++/13/bits/stl_algobase.h
- /usr/include/c++/13/bits/stl_construct.h
- /usr/include/c++/13/bits/stl_function.h
- /usr/include/c++/13/bits/stl_heap.h
- /usr/include/c++/13/bits/stl_iterator.h
- /usr/include/c++/13/bits/stl_iterator_base_funcs.h
- /usr/include/c++/13/bits/stl_iterator_base_types.h
- /usr/include/c++/13/bits/stl_pair.h
- /usr/include/c++/13/bits/stl_raw_storage_iter.h
- /usr/include/c++/13/bits/stl_relops.h
- /usr/include/c++/13/bits/stl_tempbuf.h
- /usr/include/c++/13/bits/stl_uninitialized.h
- /usr/include/c++/13/bits/stream_iterator.h
- /usr/include/c++/13/bits/streambuf.tcc
- /usr/include/c++/13/bits/streambuf_iterator.h
- /usr/include/c++/13/bits/stringfwd.h
- /usr/include/c++/13/bits/uniform_int_dist.h
- /usr/include/c++/13/bits/unique_ptr.h
- /usr/include/c++/13/bits/uses_allocator.h
- /usr/include/c++/13/bits/utility.h
- /usr/include/c++/13/cassert
- /usr/include/c++/13/cctype
- /usr/include/c++/13/cerrno
- /usr/include/c++/13/clocale
- /usr/include/c++/13/cstddef
- /usr/include/c++/13/cstdint
- /usr/include/c++/13/cstdio
- /usr/include/c++/13/cstdlib
- /usr/include/c++/13/cstring
- /usr/include/c++/13/cwchar
- /usr/include/c++/13/debug/assertions.h
- /usr/include/c++/13/debug/debug.h
- /usr/include/c++/13/exception
- /usr/include/c++/13/ext/aligned_buffer.h
- /usr/include/c++/13/ext/alloc_traits.h
- /usr/include/c++/13/ext/atomicity.h
- /usr/include/c++/13/ext/concurrence.h
- /usr/include/c++/13/ext/numeric_traits.h
- /usr/include/c++/13/ext/string_conversions.h
- /usr/include/c++/13/ext/type_traits.h
- /usr/include/c++/13/functional
- /usr/include/c++/13/initializer_list
- /usr/include/c++/13/iosfwd
- /usr/include/c++/13/iterator
- /usr/include/c++/13/memory
- /usr/include/c++/13/new
- /usr/include/c++/13/stdexcept
- /usr/include/c++/13/streambuf
- /usr/include/c++/13/string
- /usr/include/c++/13/system_error
- /usr/include/c++/13/tuple
- /usr/include/c++/13/type_traits
- /usr/include/c++/13/typeinfo
- /usr/include/c++/13/utility
- /usr/include/c++/13/x86_64-redhat-linux/bits/atomic_word.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++allocator.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++config.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++locale.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/cpu_defines.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/error_constants.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/gthr-default.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/gthr.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/os_defines.h
+ /usr/include/c++/14/algorithm
+ /usr/include/c++/14/backward/auto_ptr.h
+ /usr/include/c++/14/backward/binders.h
+ /usr/include/c++/14/bit
+ /usr/include/c++/14/bits/algorithmfwd.h
+ /usr/include/c++/14/bits/align.h
+ /usr/include/c++/14/bits/alloc_traits.h
+ /usr/include/c++/14/bits/allocated_ptr.h
+ /usr/include/c++/14/bits/allocator.h
+ /usr/include/c++/14/bits/atomic_base.h
+ /usr/include/c++/14/bits/atomic_lockfree_defines.h
+ /usr/include/c++/14/bits/basic_string.h
+ /usr/include/c++/14/bits/basic_string.tcc
+ /usr/include/c++/14/bits/char_traits.h
+ /usr/include/c++/14/bits/charconv.h
+ /usr/include/c++/14/bits/concept_check.h
+ /usr/include/c++/14/bits/cpp_type_traits.h
+ /usr/include/c++/14/bits/cxxabi_forced.h
+ /usr/include/c++/14/bits/cxxabi_init_exception.h
+ /usr/include/c++/14/bits/exception.h
+ /usr/include/c++/14/bits/exception_defines.h
+ /usr/include/c++/14/bits/exception_ptr.h
+ /usr/include/c++/14/bits/functexcept.h
+ /usr/include/c++/14/bits/functional_hash.h
+ /usr/include/c++/14/bits/hash_bytes.h
+ /usr/include/c++/14/bits/invoke.h
+ /usr/include/c++/14/bits/ios_base.h
+ /usr/include/c++/14/bits/locale_classes.h
+ /usr/include/c++/14/bits/locale_classes.tcc
+ /usr/include/c++/14/bits/localefwd.h
+ /usr/include/c++/14/bits/memoryfwd.h
+ /usr/include/c++/14/bits/move.h
+ /usr/include/c++/14/bits/nested_exception.h
+ /usr/include/c++/14/bits/new_allocator.h
+ /usr/include/c++/14/bits/ostream_insert.h
+ /usr/include/c++/14/bits/postypes.h
+ /usr/include/c++/14/bits/predefined_ops.h
+ /usr/include/c++/14/bits/ptr_traits.h
+ /usr/include/c++/14/bits/range_access.h
+ /usr/include/c++/14/bits/refwrap.h
+ /usr/include/c++/14/bits/requires_hosted.h
+ /usr/include/c++/14/bits/shared_ptr.h
+ /usr/include/c++/14/bits/shared_ptr_atomic.h
+ /usr/include/c++/14/bits/shared_ptr_base.h
+ /usr/include/c++/14/bits/std_abs.h
+ /usr/include/c++/14/bits/std_function.h
+ /usr/include/c++/14/bits/stl_algo.h
+ /usr/include/c++/14/bits/stl_algobase.h
+ /usr/include/c++/14/bits/stl_construct.h
+ /usr/include/c++/14/bits/stl_function.h
+ /usr/include/c++/14/bits/stl_heap.h
+ /usr/include/c++/14/bits/stl_iterator.h
+ /usr/include/c++/14/bits/stl_iterator_base_funcs.h
+ /usr/include/c++/14/bits/stl_iterator_base_types.h
+ /usr/include/c++/14/bits/stl_pair.h
+ /usr/include/c++/14/bits/stl_raw_storage_iter.h
+ /usr/include/c++/14/bits/stl_relops.h
+ /usr/include/c++/14/bits/stl_tempbuf.h
+ /usr/include/c++/14/bits/stl_uninitialized.h
+ /usr/include/c++/14/bits/stream_iterator.h
+ /usr/include/c++/14/bits/streambuf.tcc
+ /usr/include/c++/14/bits/streambuf_iterator.h
+ /usr/include/c++/14/bits/stringfwd.h
+ /usr/include/c++/14/bits/uniform_int_dist.h
+ /usr/include/c++/14/bits/unique_ptr.h
+ /usr/include/c++/14/bits/uses_allocator.h
+ /usr/include/c++/14/bits/utility.h
+ /usr/include/c++/14/bits/version.h
+ /usr/include/c++/14/cassert
+ /usr/include/c++/14/cctype
+ /usr/include/c++/14/cerrno
+ /usr/include/c++/14/clocale
+ /usr/include/c++/14/cstddef
+ /usr/include/c++/14/cstdint
+ /usr/include/c++/14/cstdio
+ /usr/include/c++/14/cstdlib
+ /usr/include/c++/14/cstring
+ /usr/include/c++/14/cwchar
+ /usr/include/c++/14/debug/assertions.h
+ /usr/include/c++/14/debug/debug.h
+ /usr/include/c++/14/exception
+ /usr/include/c++/14/ext/aligned_buffer.h
+ /usr/include/c++/14/ext/alloc_traits.h
+ /usr/include/c++/14/ext/atomicity.h
+ /usr/include/c++/14/ext/concurrence.h
+ /usr/include/c++/14/ext/numeric_traits.h
+ /usr/include/c++/14/ext/string_conversions.h
+ /usr/include/c++/14/ext/type_traits.h
+ /usr/include/c++/14/functional
+ /usr/include/c++/14/initializer_list
+ /usr/include/c++/14/iosfwd
+ /usr/include/c++/14/iterator
+ /usr/include/c++/14/memory
+ /usr/include/c++/14/new
+ /usr/include/c++/14/stdexcept
+ /usr/include/c++/14/streambuf
+ /usr/include/c++/14/string
+ /usr/include/c++/14/system_error
+ /usr/include/c++/14/tuple
+ /usr/include/c++/14/type_traits
+ /usr/include/c++/14/typeinfo
+ /usr/include/c++/14/utility
+ /usr/include/c++/14/x86_64-redhat-linux/bits/atomic_word.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++allocator.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++config.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++locale.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/cpu_defines.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/error_constants.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/gthr-default.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/gthr.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/os_defines.h
/usr/include/ctype.h
/usr/include/endian.h
/usr/include/errno.h
@@ -1089,24 +1099,24 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o
/usr/include/sys/types.h
/usr/include/time.h
/usr/include/wchar.h
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdarg.h
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stddef.h
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdint.h
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/optional.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/string_view.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/config.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/detail/decode.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/detail/encode.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/detail/translate.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/detail/uri_parts.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/uri.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/uri_builder.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/uri_errors.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/algorithm_find.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_resolve.hpp
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdarg.h
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stddef.h
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdint.h
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/optional.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/string_view.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/config.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail/decode.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail/encode.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail/translate.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail/uri_parts.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/uri.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/uri_builder.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/uri_errors.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/algorithm_find.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_resolve.hpp
third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/uri.cpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/uri.cpp
/usr/include/alloca.h
/usr/include/asm-generic/errno-base.h
/usr/include/asm-generic/errno.h
@@ -1130,6 +1140,7 @@ third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o
/usr/include/bits/select.h
/usr/include/bits/setjmp.h
/usr/include/bits/stdint-intn.h
+ /usr/include/bits/stdint-least.h
/usr/include/bits/stdint-uintn.h
/usr/include/bits/stdio.h
/usr/include/bits/stdio_lim.h
@@ -1174,132 +1185,133 @@ third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o
/usr/include/bits/wchar.h
/usr/include/bits/wctype-wchar.h
/usr/include/bits/wordsize.h
- /usr/include/c++/13/algorithm
- /usr/include/c++/13/backward/auto_ptr.h
- /usr/include/c++/13/backward/binders.h
- /usr/include/c++/13/bit
- /usr/include/c++/13/bits/algorithmfwd.h
- /usr/include/c++/13/bits/align.h
- /usr/include/c++/13/bits/alloc_traits.h
- /usr/include/c++/13/bits/allocated_ptr.h
- /usr/include/c++/13/bits/allocator.h
- /usr/include/c++/13/bits/atomic_base.h
- /usr/include/c++/13/bits/atomic_lockfree_defines.h
- /usr/include/c++/13/bits/basic_string.h
- /usr/include/c++/13/bits/basic_string.tcc
- /usr/include/c++/13/bits/char_traits.h
- /usr/include/c++/13/bits/charconv.h
- /usr/include/c++/13/bits/codecvt.h
- /usr/include/c++/13/bits/concept_check.h
- /usr/include/c++/13/bits/cpp_type_traits.h
- /usr/include/c++/13/bits/cxxabi_forced.h
- /usr/include/c++/13/bits/cxxabi_init_exception.h
- /usr/include/c++/13/bits/exception.h
- /usr/include/c++/13/bits/exception_defines.h
- /usr/include/c++/13/bits/exception_ptr.h
- /usr/include/c++/13/bits/functexcept.h
- /usr/include/c++/13/bits/functional_hash.h
- /usr/include/c++/13/bits/hash_bytes.h
- /usr/include/c++/13/bits/invoke.h
- /usr/include/c++/13/bits/ios_base.h
- /usr/include/c++/13/bits/locale_classes.h
- /usr/include/c++/13/bits/locale_classes.tcc
- /usr/include/c++/13/bits/locale_conv.h
- /usr/include/c++/13/bits/locale_facets.h
- /usr/include/c++/13/bits/locale_facets.tcc
- /usr/include/c++/13/bits/locale_facets_nonio.h
- /usr/include/c++/13/bits/locale_facets_nonio.tcc
- /usr/include/c++/13/bits/localefwd.h
- /usr/include/c++/13/bits/memoryfwd.h
- /usr/include/c++/13/bits/move.h
- /usr/include/c++/13/bits/nested_exception.h
- /usr/include/c++/13/bits/new_allocator.h
- /usr/include/c++/13/bits/ostream_insert.h
- /usr/include/c++/13/bits/postypes.h
- /usr/include/c++/13/bits/predefined_ops.h
- /usr/include/c++/13/bits/ptr_traits.h
- /usr/include/c++/13/bits/range_access.h
- /usr/include/c++/13/bits/refwrap.h
- /usr/include/c++/13/bits/requires_hosted.h
- /usr/include/c++/13/bits/shared_ptr.h
- /usr/include/c++/13/bits/shared_ptr_atomic.h
- /usr/include/c++/13/bits/shared_ptr_base.h
- /usr/include/c++/13/bits/std_abs.h
- /usr/include/c++/13/bits/std_function.h
- /usr/include/c++/13/bits/stl_algo.h
- /usr/include/c++/13/bits/stl_algobase.h
- /usr/include/c++/13/bits/stl_bvector.h
- /usr/include/c++/13/bits/stl_construct.h
- /usr/include/c++/13/bits/stl_function.h
- /usr/include/c++/13/bits/stl_heap.h
- /usr/include/c++/13/bits/stl_iterator.h
- /usr/include/c++/13/bits/stl_iterator_base_funcs.h
- /usr/include/c++/13/bits/stl_iterator_base_types.h
- /usr/include/c++/13/bits/stl_pair.h
- /usr/include/c++/13/bits/stl_raw_storage_iter.h
- /usr/include/c++/13/bits/stl_relops.h
- /usr/include/c++/13/bits/stl_tempbuf.h
- /usr/include/c++/13/bits/stl_uninitialized.h
- /usr/include/c++/13/bits/stl_vector.h
- /usr/include/c++/13/bits/stream_iterator.h
- /usr/include/c++/13/bits/streambuf.tcc
- /usr/include/c++/13/bits/streambuf_iterator.h
- /usr/include/c++/13/bits/stringfwd.h
- /usr/include/c++/13/bits/uniform_int_dist.h
- /usr/include/c++/13/bits/unique_ptr.h
- /usr/include/c++/13/bits/uses_allocator.h
- /usr/include/c++/13/bits/utility.h
- /usr/include/c++/13/bits/vector.tcc
- /usr/include/c++/13/cassert
- /usr/include/c++/13/cctype
- /usr/include/c++/13/cerrno
- /usr/include/c++/13/clocale
- /usr/include/c++/13/cstdint
- /usr/include/c++/13/cstdio
- /usr/include/c++/13/cstdlib
- /usr/include/c++/13/cstring
- /usr/include/c++/13/ctime
- /usr/include/c++/13/cwchar
- /usr/include/c++/13/cwctype
- /usr/include/c++/13/debug/assertions.h
- /usr/include/c++/13/debug/debug.h
- /usr/include/c++/13/exception
- /usr/include/c++/13/ext/aligned_buffer.h
- /usr/include/c++/13/ext/alloc_traits.h
- /usr/include/c++/13/ext/atomicity.h
- /usr/include/c++/13/ext/concurrence.h
- /usr/include/c++/13/ext/numeric_traits.h
- /usr/include/c++/13/ext/string_conversions.h
- /usr/include/c++/13/ext/type_traits.h
- /usr/include/c++/13/functional
- /usr/include/c++/13/initializer_list
- /usr/include/c++/13/iosfwd
- /usr/include/c++/13/iterator
- /usr/include/c++/13/locale
- /usr/include/c++/13/memory
- /usr/include/c++/13/new
- /usr/include/c++/13/stdexcept
- /usr/include/c++/13/streambuf
- /usr/include/c++/13/string
- /usr/include/c++/13/system_error
- /usr/include/c++/13/tuple
- /usr/include/c++/13/type_traits
- /usr/include/c++/13/typeinfo
- /usr/include/c++/13/utility
- /usr/include/c++/13/vector
- /usr/include/c++/13/x86_64-redhat-linux/bits/atomic_word.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++allocator.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++config.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++locale.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/cpu_defines.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/ctype_base.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/ctype_inline.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/error_constants.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/gthr-default.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/gthr.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/messages_members.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/os_defines.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/time_members.h
+ /usr/include/c++/14/algorithm
+ /usr/include/c++/14/backward/auto_ptr.h
+ /usr/include/c++/14/backward/binders.h
+ /usr/include/c++/14/bit
+ /usr/include/c++/14/bits/algorithmfwd.h
+ /usr/include/c++/14/bits/align.h
+ /usr/include/c++/14/bits/alloc_traits.h
+ /usr/include/c++/14/bits/allocated_ptr.h
+ /usr/include/c++/14/bits/allocator.h
+ /usr/include/c++/14/bits/atomic_base.h
+ /usr/include/c++/14/bits/atomic_lockfree_defines.h
+ /usr/include/c++/14/bits/basic_string.h
+ /usr/include/c++/14/bits/basic_string.tcc
+ /usr/include/c++/14/bits/char_traits.h
+ /usr/include/c++/14/bits/charconv.h
+ /usr/include/c++/14/bits/codecvt.h
+ /usr/include/c++/14/bits/concept_check.h
+ /usr/include/c++/14/bits/cpp_type_traits.h
+ /usr/include/c++/14/bits/cxxabi_forced.h
+ /usr/include/c++/14/bits/cxxabi_init_exception.h
+ /usr/include/c++/14/bits/exception.h
+ /usr/include/c++/14/bits/exception_defines.h
+ /usr/include/c++/14/bits/exception_ptr.h
+ /usr/include/c++/14/bits/functexcept.h
+ /usr/include/c++/14/bits/functional_hash.h
+ /usr/include/c++/14/bits/hash_bytes.h
+ /usr/include/c++/14/bits/invoke.h
+ /usr/include/c++/14/bits/ios_base.h
+ /usr/include/c++/14/bits/locale_classes.h
+ /usr/include/c++/14/bits/locale_classes.tcc
+ /usr/include/c++/14/bits/locale_conv.h
+ /usr/include/c++/14/bits/locale_facets.h
+ /usr/include/c++/14/bits/locale_facets.tcc
+ /usr/include/c++/14/bits/locale_facets_nonio.h
+ /usr/include/c++/14/bits/locale_facets_nonio.tcc
+ /usr/include/c++/14/bits/localefwd.h
+ /usr/include/c++/14/bits/memoryfwd.h
+ /usr/include/c++/14/bits/move.h
+ /usr/include/c++/14/bits/nested_exception.h
+ /usr/include/c++/14/bits/new_allocator.h
+ /usr/include/c++/14/bits/ostream_insert.h
+ /usr/include/c++/14/bits/postypes.h
+ /usr/include/c++/14/bits/predefined_ops.h
+ /usr/include/c++/14/bits/ptr_traits.h
+ /usr/include/c++/14/bits/range_access.h
+ /usr/include/c++/14/bits/refwrap.h
+ /usr/include/c++/14/bits/requires_hosted.h
+ /usr/include/c++/14/bits/shared_ptr.h
+ /usr/include/c++/14/bits/shared_ptr_atomic.h
+ /usr/include/c++/14/bits/shared_ptr_base.h
+ /usr/include/c++/14/bits/std_abs.h
+ /usr/include/c++/14/bits/std_function.h
+ /usr/include/c++/14/bits/stl_algo.h
+ /usr/include/c++/14/bits/stl_algobase.h
+ /usr/include/c++/14/bits/stl_bvector.h
+ /usr/include/c++/14/bits/stl_construct.h
+ /usr/include/c++/14/bits/stl_function.h
+ /usr/include/c++/14/bits/stl_heap.h
+ /usr/include/c++/14/bits/stl_iterator.h
+ /usr/include/c++/14/bits/stl_iterator_base_funcs.h
+ /usr/include/c++/14/bits/stl_iterator_base_types.h
+ /usr/include/c++/14/bits/stl_pair.h
+ /usr/include/c++/14/bits/stl_raw_storage_iter.h
+ /usr/include/c++/14/bits/stl_relops.h
+ /usr/include/c++/14/bits/stl_tempbuf.h
+ /usr/include/c++/14/bits/stl_uninitialized.h
+ /usr/include/c++/14/bits/stl_vector.h
+ /usr/include/c++/14/bits/stream_iterator.h
+ /usr/include/c++/14/bits/streambuf.tcc
+ /usr/include/c++/14/bits/streambuf_iterator.h
+ /usr/include/c++/14/bits/stringfwd.h
+ /usr/include/c++/14/bits/uniform_int_dist.h
+ /usr/include/c++/14/bits/unique_ptr.h
+ /usr/include/c++/14/bits/uses_allocator.h
+ /usr/include/c++/14/bits/utility.h
+ /usr/include/c++/14/bits/vector.tcc
+ /usr/include/c++/14/bits/version.h
+ /usr/include/c++/14/cassert
+ /usr/include/c++/14/cctype
+ /usr/include/c++/14/cerrno
+ /usr/include/c++/14/clocale
+ /usr/include/c++/14/cstdint
+ /usr/include/c++/14/cstdio
+ /usr/include/c++/14/cstdlib
+ /usr/include/c++/14/cstring
+ /usr/include/c++/14/ctime
+ /usr/include/c++/14/cwchar
+ /usr/include/c++/14/cwctype
+ /usr/include/c++/14/debug/assertions.h
+ /usr/include/c++/14/debug/debug.h
+ /usr/include/c++/14/exception
+ /usr/include/c++/14/ext/aligned_buffer.h
+ /usr/include/c++/14/ext/alloc_traits.h
+ /usr/include/c++/14/ext/atomicity.h
+ /usr/include/c++/14/ext/concurrence.h
+ /usr/include/c++/14/ext/numeric_traits.h
+ /usr/include/c++/14/ext/string_conversions.h
+ /usr/include/c++/14/ext/type_traits.h
+ /usr/include/c++/14/functional
+ /usr/include/c++/14/initializer_list
+ /usr/include/c++/14/iosfwd
+ /usr/include/c++/14/iterator
+ /usr/include/c++/14/locale
+ /usr/include/c++/14/memory
+ /usr/include/c++/14/new
+ /usr/include/c++/14/stdexcept
+ /usr/include/c++/14/streambuf
+ /usr/include/c++/14/string
+ /usr/include/c++/14/system_error
+ /usr/include/c++/14/tuple
+ /usr/include/c++/14/type_traits
+ /usr/include/c++/14/typeinfo
+ /usr/include/c++/14/utility
+ /usr/include/c++/14/vector
+ /usr/include/c++/14/x86_64-redhat-linux/bits/atomic_word.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++allocator.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++config.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++locale.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/cpu_defines.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/ctype_base.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/ctype_inline.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/error_constants.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/gthr-default.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/gthr.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/messages_members.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/os_defines.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/time_members.h
/usr/include/ctype.h
/usr/include/endian.h
/usr/include/errno.h
@@ -1325,28 +1337,28 @@ third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o
/usr/include/time.h
/usr/include/wchar.h
/usr/include/wctype.h
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdarg.h
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stddef.h
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdint.h
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/optional.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/string_view.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/config.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/detail/decode.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/detail/encode.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/detail/translate.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/detail/uri_parts.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/uri.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/uri_builder.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/uri_errors.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/algorithm.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_advance_parts.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_normalize.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_parse.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_percent_encode.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_resolve.hpp
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdarg.h
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stddef.h
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdint.h
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/optional.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/string_view.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/config.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail/decode.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail/encode.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail/translate.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail/uri_parts.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/uri.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/uri_builder.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/uri_errors.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/algorithm.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_advance_parts.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_normalize.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_parse.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_percent_encode.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_resolve.hpp
third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/uri_builder.cpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/uri_builder.cpp
/usr/include/alloca.h
/usr/include/asm-generic/errno-base.h
/usr/include/asm-generic/errno.h
@@ -1370,6 +1382,7 @@ third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o
/usr/include/bits/select.h
/usr/include/bits/setjmp.h
/usr/include/bits/stdint-intn.h
+ /usr/include/bits/stdint-least.h
/usr/include/bits/stdint-uintn.h
/usr/include/bits/stdio.h
/usr/include/bits/stdio_lim.h
@@ -1414,128 +1427,129 @@ third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o
/usr/include/bits/wchar.h
/usr/include/bits/wctype-wchar.h
/usr/include/bits/wordsize.h
- /usr/include/c++/13/algorithm
- /usr/include/c++/13/backward/auto_ptr.h
- /usr/include/c++/13/backward/binders.h
- /usr/include/c++/13/bit
- /usr/include/c++/13/bits/algorithmfwd.h
- /usr/include/c++/13/bits/align.h
- /usr/include/c++/13/bits/alloc_traits.h
- /usr/include/c++/13/bits/allocated_ptr.h
- /usr/include/c++/13/bits/allocator.h
- /usr/include/c++/13/bits/atomic_base.h
- /usr/include/c++/13/bits/atomic_lockfree_defines.h
- /usr/include/c++/13/bits/basic_string.h
- /usr/include/c++/13/bits/basic_string.tcc
- /usr/include/c++/13/bits/char_traits.h
- /usr/include/c++/13/bits/charconv.h
- /usr/include/c++/13/bits/codecvt.h
- /usr/include/c++/13/bits/concept_check.h
- /usr/include/c++/13/bits/cpp_type_traits.h
- /usr/include/c++/13/bits/cxxabi_forced.h
- /usr/include/c++/13/bits/cxxabi_init_exception.h
- /usr/include/c++/13/bits/exception.h
- /usr/include/c++/13/bits/exception_defines.h
- /usr/include/c++/13/bits/exception_ptr.h
- /usr/include/c++/13/bits/functexcept.h
- /usr/include/c++/13/bits/functional_hash.h
- /usr/include/c++/13/bits/hash_bytes.h
- /usr/include/c++/13/bits/invoke.h
- /usr/include/c++/13/bits/ios_base.h
- /usr/include/c++/13/bits/locale_classes.h
- /usr/include/c++/13/bits/locale_classes.tcc
- /usr/include/c++/13/bits/locale_conv.h
- /usr/include/c++/13/bits/locale_facets.h
- /usr/include/c++/13/bits/locale_facets.tcc
- /usr/include/c++/13/bits/locale_facets_nonio.h
- /usr/include/c++/13/bits/locale_facets_nonio.tcc
- /usr/include/c++/13/bits/localefwd.h
- /usr/include/c++/13/bits/memoryfwd.h
- /usr/include/c++/13/bits/move.h
- /usr/include/c++/13/bits/nested_exception.h
- /usr/include/c++/13/bits/new_allocator.h
- /usr/include/c++/13/bits/ostream_insert.h
- /usr/include/c++/13/bits/postypes.h
- /usr/include/c++/13/bits/predefined_ops.h
- /usr/include/c++/13/bits/ptr_traits.h
- /usr/include/c++/13/bits/range_access.h
- /usr/include/c++/13/bits/refwrap.h
- /usr/include/c++/13/bits/requires_hosted.h
- /usr/include/c++/13/bits/shared_ptr.h
- /usr/include/c++/13/bits/shared_ptr_atomic.h
- /usr/include/c++/13/bits/shared_ptr_base.h
- /usr/include/c++/13/bits/std_abs.h
- /usr/include/c++/13/bits/std_function.h
- /usr/include/c++/13/bits/stl_algo.h
- /usr/include/c++/13/bits/stl_algobase.h
- /usr/include/c++/13/bits/stl_construct.h
- /usr/include/c++/13/bits/stl_function.h
- /usr/include/c++/13/bits/stl_heap.h
- /usr/include/c++/13/bits/stl_iterator.h
- /usr/include/c++/13/bits/stl_iterator_base_funcs.h
- /usr/include/c++/13/bits/stl_iterator_base_types.h
- /usr/include/c++/13/bits/stl_pair.h
- /usr/include/c++/13/bits/stl_raw_storage_iter.h
- /usr/include/c++/13/bits/stl_relops.h
- /usr/include/c++/13/bits/stl_tempbuf.h
- /usr/include/c++/13/bits/stl_uninitialized.h
- /usr/include/c++/13/bits/stream_iterator.h
- /usr/include/c++/13/bits/streambuf.tcc
- /usr/include/c++/13/bits/streambuf_iterator.h
- /usr/include/c++/13/bits/stringfwd.h
- /usr/include/c++/13/bits/uniform_int_dist.h
- /usr/include/c++/13/bits/unique_ptr.h
- /usr/include/c++/13/bits/uses_allocator.h
- /usr/include/c++/13/bits/utility.h
- /usr/include/c++/13/cassert
- /usr/include/c++/13/cctype
- /usr/include/c++/13/cerrno
- /usr/include/c++/13/clocale
- /usr/include/c++/13/cstdint
- /usr/include/c++/13/cstdio
- /usr/include/c++/13/cstdlib
- /usr/include/c++/13/cstring
- /usr/include/c++/13/ctime
- /usr/include/c++/13/cwchar
- /usr/include/c++/13/cwctype
- /usr/include/c++/13/debug/assertions.h
- /usr/include/c++/13/debug/debug.h
- /usr/include/c++/13/exception
- /usr/include/c++/13/ext/aligned_buffer.h
- /usr/include/c++/13/ext/alloc_traits.h
- /usr/include/c++/13/ext/atomicity.h
- /usr/include/c++/13/ext/concurrence.h
- /usr/include/c++/13/ext/numeric_traits.h
- /usr/include/c++/13/ext/string_conversions.h
- /usr/include/c++/13/ext/type_traits.h
- /usr/include/c++/13/functional
- /usr/include/c++/13/initializer_list
- /usr/include/c++/13/iosfwd
- /usr/include/c++/13/iterator
- /usr/include/c++/13/locale
- /usr/include/c++/13/memory
- /usr/include/c++/13/new
- /usr/include/c++/13/stdexcept
- /usr/include/c++/13/streambuf
- /usr/include/c++/13/string
- /usr/include/c++/13/system_error
- /usr/include/c++/13/tuple
- /usr/include/c++/13/type_traits
- /usr/include/c++/13/typeinfo
- /usr/include/c++/13/utility
- /usr/include/c++/13/x86_64-redhat-linux/bits/atomic_word.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++allocator.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++config.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++locale.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/cpu_defines.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/ctype_base.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/ctype_inline.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/error_constants.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/gthr-default.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/gthr.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/messages_members.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/os_defines.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/time_members.h
+ /usr/include/c++/14/algorithm
+ /usr/include/c++/14/backward/auto_ptr.h
+ /usr/include/c++/14/backward/binders.h
+ /usr/include/c++/14/bit
+ /usr/include/c++/14/bits/algorithmfwd.h
+ /usr/include/c++/14/bits/align.h
+ /usr/include/c++/14/bits/alloc_traits.h
+ /usr/include/c++/14/bits/allocated_ptr.h
+ /usr/include/c++/14/bits/allocator.h
+ /usr/include/c++/14/bits/atomic_base.h
+ /usr/include/c++/14/bits/atomic_lockfree_defines.h
+ /usr/include/c++/14/bits/basic_string.h
+ /usr/include/c++/14/bits/basic_string.tcc
+ /usr/include/c++/14/bits/char_traits.h
+ /usr/include/c++/14/bits/charconv.h
+ /usr/include/c++/14/bits/codecvt.h
+ /usr/include/c++/14/bits/concept_check.h
+ /usr/include/c++/14/bits/cpp_type_traits.h
+ /usr/include/c++/14/bits/cxxabi_forced.h
+ /usr/include/c++/14/bits/cxxabi_init_exception.h
+ /usr/include/c++/14/bits/exception.h
+ /usr/include/c++/14/bits/exception_defines.h
+ /usr/include/c++/14/bits/exception_ptr.h
+ /usr/include/c++/14/bits/functexcept.h
+ /usr/include/c++/14/bits/functional_hash.h
+ /usr/include/c++/14/bits/hash_bytes.h
+ /usr/include/c++/14/bits/invoke.h
+ /usr/include/c++/14/bits/ios_base.h
+ /usr/include/c++/14/bits/locale_classes.h
+ /usr/include/c++/14/bits/locale_classes.tcc
+ /usr/include/c++/14/bits/locale_conv.h
+ /usr/include/c++/14/bits/locale_facets.h
+ /usr/include/c++/14/bits/locale_facets.tcc
+ /usr/include/c++/14/bits/locale_facets_nonio.h
+ /usr/include/c++/14/bits/locale_facets_nonio.tcc
+ /usr/include/c++/14/bits/localefwd.h
+ /usr/include/c++/14/bits/memoryfwd.h
+ /usr/include/c++/14/bits/move.h
+ /usr/include/c++/14/bits/nested_exception.h
+ /usr/include/c++/14/bits/new_allocator.h
+ /usr/include/c++/14/bits/ostream_insert.h
+ /usr/include/c++/14/bits/postypes.h
+ /usr/include/c++/14/bits/predefined_ops.h
+ /usr/include/c++/14/bits/ptr_traits.h
+ /usr/include/c++/14/bits/range_access.h
+ /usr/include/c++/14/bits/refwrap.h
+ /usr/include/c++/14/bits/requires_hosted.h
+ /usr/include/c++/14/bits/shared_ptr.h
+ /usr/include/c++/14/bits/shared_ptr_atomic.h
+ /usr/include/c++/14/bits/shared_ptr_base.h
+ /usr/include/c++/14/bits/std_abs.h
+ /usr/include/c++/14/bits/std_function.h
+ /usr/include/c++/14/bits/stl_algo.h
+ /usr/include/c++/14/bits/stl_algobase.h
+ /usr/include/c++/14/bits/stl_construct.h
+ /usr/include/c++/14/bits/stl_function.h
+ /usr/include/c++/14/bits/stl_heap.h
+ /usr/include/c++/14/bits/stl_iterator.h
+ /usr/include/c++/14/bits/stl_iterator_base_funcs.h
+ /usr/include/c++/14/bits/stl_iterator_base_types.h
+ /usr/include/c++/14/bits/stl_pair.h
+ /usr/include/c++/14/bits/stl_raw_storage_iter.h
+ /usr/include/c++/14/bits/stl_relops.h
+ /usr/include/c++/14/bits/stl_tempbuf.h
+ /usr/include/c++/14/bits/stl_uninitialized.h
+ /usr/include/c++/14/bits/stream_iterator.h
+ /usr/include/c++/14/bits/streambuf.tcc
+ /usr/include/c++/14/bits/streambuf_iterator.h
+ /usr/include/c++/14/bits/stringfwd.h
+ /usr/include/c++/14/bits/uniform_int_dist.h
+ /usr/include/c++/14/bits/unique_ptr.h
+ /usr/include/c++/14/bits/uses_allocator.h
+ /usr/include/c++/14/bits/utility.h
+ /usr/include/c++/14/bits/version.h
+ /usr/include/c++/14/cassert
+ /usr/include/c++/14/cctype
+ /usr/include/c++/14/cerrno
+ /usr/include/c++/14/clocale
+ /usr/include/c++/14/cstdint
+ /usr/include/c++/14/cstdio
+ /usr/include/c++/14/cstdlib
+ /usr/include/c++/14/cstring
+ /usr/include/c++/14/ctime
+ /usr/include/c++/14/cwchar
+ /usr/include/c++/14/cwctype
+ /usr/include/c++/14/debug/assertions.h
+ /usr/include/c++/14/debug/debug.h
+ /usr/include/c++/14/exception
+ /usr/include/c++/14/ext/aligned_buffer.h
+ /usr/include/c++/14/ext/alloc_traits.h
+ /usr/include/c++/14/ext/atomicity.h
+ /usr/include/c++/14/ext/concurrence.h
+ /usr/include/c++/14/ext/numeric_traits.h
+ /usr/include/c++/14/ext/string_conversions.h
+ /usr/include/c++/14/ext/type_traits.h
+ /usr/include/c++/14/functional
+ /usr/include/c++/14/initializer_list
+ /usr/include/c++/14/iosfwd
+ /usr/include/c++/14/iterator
+ /usr/include/c++/14/locale
+ /usr/include/c++/14/memory
+ /usr/include/c++/14/new
+ /usr/include/c++/14/stdexcept
+ /usr/include/c++/14/streambuf
+ /usr/include/c++/14/string
+ /usr/include/c++/14/system_error
+ /usr/include/c++/14/tuple
+ /usr/include/c++/14/type_traits
+ /usr/include/c++/14/typeinfo
+ /usr/include/c++/14/utility
+ /usr/include/c++/14/x86_64-redhat-linux/bits/atomic_word.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++allocator.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++config.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++locale.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/cpu_defines.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/ctype_base.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/ctype_inline.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/error_constants.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/gthr-default.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/gthr.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/messages_members.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/os_defines.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/time_members.h
/usr/include/ctype.h
/usr/include/endian.h
/usr/include/errno.h
@@ -1561,25 +1575,25 @@ third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o
/usr/include/time.h
/usr/include/wchar.h
/usr/include/wctype.h
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdarg.h
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stddef.h
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdint.h
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/optional.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/string_view.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/config.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/detail/decode.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/detail/encode.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/detail/translate.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/detail/uri_parts.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/uri.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/uri_builder.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/uri_errors.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/algorithm.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_normalize.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/detail/uri_parse_authority.hpp
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdarg.h
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stddef.h
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdint.h
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/optional.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/string_view.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/config.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail/decode.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail/encode.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail/translate.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/detail/uri_parts.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/uri.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/uri_builder.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/uri_errors.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/algorithm.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_normalize.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/detail/uri_parse_authority.hpp
third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/uri_errors.cpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/uri_errors.cpp
/usr/include/alloca.h
/usr/include/asm-generic/errno-base.h
/usr/include/asm-generic/errno.h
@@ -1634,73 +1648,74 @@ third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o
/usr/include/bits/waitstatus.h
/usr/include/bits/wchar.h
/usr/include/bits/wordsize.h
- /usr/include/c++/13/backward/binders.h
- /usr/include/c++/13/bits/alloc_traits.h
- /usr/include/c++/13/bits/allocator.h
- /usr/include/c++/13/bits/basic_string.h
- /usr/include/c++/13/bits/basic_string.tcc
- /usr/include/c++/13/bits/char_traits.h
- /usr/include/c++/13/bits/charconv.h
- /usr/include/c++/13/bits/concept_check.h
- /usr/include/c++/13/bits/cpp_type_traits.h
- /usr/include/c++/13/bits/cxxabi_forced.h
- /usr/include/c++/13/bits/cxxabi_init_exception.h
- /usr/include/c++/13/bits/exception.h
- /usr/include/c++/13/bits/exception_defines.h
- /usr/include/c++/13/bits/exception_ptr.h
- /usr/include/c++/13/bits/functexcept.h
- /usr/include/c++/13/bits/functional_hash.h
- /usr/include/c++/13/bits/hash_bytes.h
- /usr/include/c++/13/bits/invoke.h
- /usr/include/c++/13/bits/localefwd.h
- /usr/include/c++/13/bits/memoryfwd.h
- /usr/include/c++/13/bits/move.h
- /usr/include/c++/13/bits/nested_exception.h
- /usr/include/c++/13/bits/new_allocator.h
- /usr/include/c++/13/bits/ostream_insert.h
- /usr/include/c++/13/bits/postypes.h
- /usr/include/c++/13/bits/predefined_ops.h
- /usr/include/c++/13/bits/ptr_traits.h
- /usr/include/c++/13/bits/range_access.h
- /usr/include/c++/13/bits/refwrap.h
- /usr/include/c++/13/bits/requires_hosted.h
- /usr/include/c++/13/bits/std_abs.h
- /usr/include/c++/13/bits/stl_algobase.h
- /usr/include/c++/13/bits/stl_construct.h
- /usr/include/c++/13/bits/stl_function.h
- /usr/include/c++/13/bits/stl_iterator.h
- /usr/include/c++/13/bits/stl_iterator_base_funcs.h
- /usr/include/c++/13/bits/stl_iterator_base_types.h
- /usr/include/c++/13/bits/stl_pair.h
- /usr/include/c++/13/bits/stringfwd.h
- /usr/include/c++/13/bits/utility.h
- /usr/include/c++/13/cctype
- /usr/include/c++/13/cerrno
- /usr/include/c++/13/clocale
- /usr/include/c++/13/cstdio
- /usr/include/c++/13/cstdlib
- /usr/include/c++/13/cwchar
- /usr/include/c++/13/debug/assertions.h
- /usr/include/c++/13/debug/debug.h
- /usr/include/c++/13/exception
- /usr/include/c++/13/ext/alloc_traits.h
- /usr/include/c++/13/ext/numeric_traits.h
- /usr/include/c++/13/ext/string_conversions.h
- /usr/include/c++/13/ext/type_traits.h
- /usr/include/c++/13/initializer_list
- /usr/include/c++/13/iosfwd
- /usr/include/c++/13/new
- /usr/include/c++/13/stdexcept
- /usr/include/c++/13/string
- /usr/include/c++/13/system_error
- /usr/include/c++/13/type_traits
- /usr/include/c++/13/typeinfo
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++allocator.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++config.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++locale.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/cpu_defines.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/error_constants.h
- /usr/include/c++/13/x86_64-redhat-linux/bits/os_defines.h
+ /usr/include/c++/14/backward/binders.h
+ /usr/include/c++/14/bits/alloc_traits.h
+ /usr/include/c++/14/bits/allocator.h
+ /usr/include/c++/14/bits/basic_string.h
+ /usr/include/c++/14/bits/basic_string.tcc
+ /usr/include/c++/14/bits/char_traits.h
+ /usr/include/c++/14/bits/charconv.h
+ /usr/include/c++/14/bits/concept_check.h
+ /usr/include/c++/14/bits/cpp_type_traits.h
+ /usr/include/c++/14/bits/cxxabi_forced.h
+ /usr/include/c++/14/bits/cxxabi_init_exception.h
+ /usr/include/c++/14/bits/exception.h
+ /usr/include/c++/14/bits/exception_defines.h
+ /usr/include/c++/14/bits/exception_ptr.h
+ /usr/include/c++/14/bits/functexcept.h
+ /usr/include/c++/14/bits/functional_hash.h
+ /usr/include/c++/14/bits/hash_bytes.h
+ /usr/include/c++/14/bits/invoke.h
+ /usr/include/c++/14/bits/localefwd.h
+ /usr/include/c++/14/bits/memoryfwd.h
+ /usr/include/c++/14/bits/move.h
+ /usr/include/c++/14/bits/nested_exception.h
+ /usr/include/c++/14/bits/new_allocator.h
+ /usr/include/c++/14/bits/ostream_insert.h
+ /usr/include/c++/14/bits/postypes.h
+ /usr/include/c++/14/bits/predefined_ops.h
+ /usr/include/c++/14/bits/ptr_traits.h
+ /usr/include/c++/14/bits/range_access.h
+ /usr/include/c++/14/bits/refwrap.h
+ /usr/include/c++/14/bits/requires_hosted.h
+ /usr/include/c++/14/bits/std_abs.h
+ /usr/include/c++/14/bits/stl_algobase.h
+ /usr/include/c++/14/bits/stl_construct.h
+ /usr/include/c++/14/bits/stl_function.h
+ /usr/include/c++/14/bits/stl_iterator.h
+ /usr/include/c++/14/bits/stl_iterator_base_funcs.h
+ /usr/include/c++/14/bits/stl_iterator_base_types.h
+ /usr/include/c++/14/bits/stl_pair.h
+ /usr/include/c++/14/bits/stringfwd.h
+ /usr/include/c++/14/bits/utility.h
+ /usr/include/c++/14/bits/version.h
+ /usr/include/c++/14/cctype
+ /usr/include/c++/14/cerrno
+ /usr/include/c++/14/clocale
+ /usr/include/c++/14/cstdio
+ /usr/include/c++/14/cstdlib
+ /usr/include/c++/14/cwchar
+ /usr/include/c++/14/debug/assertions.h
+ /usr/include/c++/14/debug/debug.h
+ /usr/include/c++/14/exception
+ /usr/include/c++/14/ext/alloc_traits.h
+ /usr/include/c++/14/ext/numeric_traits.h
+ /usr/include/c++/14/ext/string_conversions.h
+ /usr/include/c++/14/ext/type_traits.h
+ /usr/include/c++/14/initializer_list
+ /usr/include/c++/14/iosfwd
+ /usr/include/c++/14/new
+ /usr/include/c++/14/stdexcept
+ /usr/include/c++/14/string
+ /usr/include/c++/14/system_error
+ /usr/include/c++/14/type_traits
+ /usr/include/c++/14/typeinfo
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++allocator.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++config.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++locale.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/cpu_defines.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/error_constants.h
+ /usr/include/c++/14/x86_64-redhat-linux/bits/os_defines.h
/usr/include/ctype.h
/usr/include/endian.h
/usr/include/errno.h
@@ -1717,8 +1732,8 @@ third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o
/usr/include/sys/select.h
/usr/include/sys/types.h
/usr/include/wchar.h
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdarg.h
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stddef.h
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/config.hpp
- /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include/network/uri/uri_errors.hpp
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdarg.h
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stddef.h
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/config.hpp
+ /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include/network/uri/uri_errors.hpp
diff --git a/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.make b/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.make
index 095ca0a14b..ba32393472 100644
--- a/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.make
+++ b/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.make
@@ -1,5 +1,5 @@
# CMAKE generated file: DO NOT EDIT!
-# Generated by "Unix Makefiles" Generator, CMake Version 3.27
+# Generated by "Unix Makefiles" Generator, CMake Version 3.28
third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o: third_party/uri/src/detail/uri_advance_parts.cpp \
/usr/include/alloca.h \
@@ -25,6 +25,7 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o: t
/usr/include/bits/select.h \
/usr/include/bits/setjmp.h \
/usr/include/bits/stdint-intn.h \
+ /usr/include/bits/stdint-least.h \
/usr/include/bits/stdint-uintn.h \
/usr/include/bits/stdio.h \
/usr/include/bits/stdio_lim.h \
@@ -68,112 +69,113 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o: t
/usr/include/bits/waitstatus.h \
/usr/include/bits/wchar.h \
/usr/include/bits/wordsize.h \
- /usr/include/c++/13/algorithm \
- /usr/include/c++/13/backward/auto_ptr.h \
- /usr/include/c++/13/backward/binders.h \
- /usr/include/c++/13/bit \
- /usr/include/c++/13/bits/algorithmfwd.h \
- /usr/include/c++/13/bits/align.h \
- /usr/include/c++/13/bits/alloc_traits.h \
- /usr/include/c++/13/bits/allocated_ptr.h \
- /usr/include/c++/13/bits/allocator.h \
- /usr/include/c++/13/bits/atomic_base.h \
- /usr/include/c++/13/bits/atomic_lockfree_defines.h \
- /usr/include/c++/13/bits/basic_string.h \
- /usr/include/c++/13/bits/basic_string.tcc \
- /usr/include/c++/13/bits/char_traits.h \
- /usr/include/c++/13/bits/charconv.h \
- /usr/include/c++/13/bits/concept_check.h \
- /usr/include/c++/13/bits/cpp_type_traits.h \
- /usr/include/c++/13/bits/cxxabi_forced.h \
- /usr/include/c++/13/bits/cxxabi_init_exception.h \
- /usr/include/c++/13/bits/exception.h \
- /usr/include/c++/13/bits/exception_defines.h \
- /usr/include/c++/13/bits/exception_ptr.h \
- /usr/include/c++/13/bits/functexcept.h \
- /usr/include/c++/13/bits/functional_hash.h \
- /usr/include/c++/13/bits/hash_bytes.h \
- /usr/include/c++/13/bits/invoke.h \
- /usr/include/c++/13/bits/ios_base.h \
- /usr/include/c++/13/bits/locale_classes.h \
- /usr/include/c++/13/bits/locale_classes.tcc \
- /usr/include/c++/13/bits/localefwd.h \
- /usr/include/c++/13/bits/memoryfwd.h \
- /usr/include/c++/13/bits/move.h \
- /usr/include/c++/13/bits/nested_exception.h \
- /usr/include/c++/13/bits/new_allocator.h \
- /usr/include/c++/13/bits/ostream_insert.h \
- /usr/include/c++/13/bits/postypes.h \
- /usr/include/c++/13/bits/predefined_ops.h \
- /usr/include/c++/13/bits/ptr_traits.h \
- /usr/include/c++/13/bits/range_access.h \
- /usr/include/c++/13/bits/refwrap.h \
- /usr/include/c++/13/bits/requires_hosted.h \
- /usr/include/c++/13/bits/shared_ptr.h \
- /usr/include/c++/13/bits/shared_ptr_atomic.h \
- /usr/include/c++/13/bits/shared_ptr_base.h \
- /usr/include/c++/13/bits/std_abs.h \
- /usr/include/c++/13/bits/stl_algo.h \
- /usr/include/c++/13/bits/stl_algobase.h \
- /usr/include/c++/13/bits/stl_construct.h \
- /usr/include/c++/13/bits/stl_function.h \
- /usr/include/c++/13/bits/stl_heap.h \
- /usr/include/c++/13/bits/stl_iterator.h \
- /usr/include/c++/13/bits/stl_iterator_base_funcs.h \
- /usr/include/c++/13/bits/stl_iterator_base_types.h \
- /usr/include/c++/13/bits/stl_pair.h \
- /usr/include/c++/13/bits/stl_raw_storage_iter.h \
- /usr/include/c++/13/bits/stl_relops.h \
- /usr/include/c++/13/bits/stl_tempbuf.h \
- /usr/include/c++/13/bits/stl_uninitialized.h \
- /usr/include/c++/13/bits/stream_iterator.h \
- /usr/include/c++/13/bits/streambuf.tcc \
- /usr/include/c++/13/bits/streambuf_iterator.h \
- /usr/include/c++/13/bits/stringfwd.h \
- /usr/include/c++/13/bits/uniform_int_dist.h \
- /usr/include/c++/13/bits/unique_ptr.h \
- /usr/include/c++/13/bits/uses_allocator.h \
- /usr/include/c++/13/bits/utility.h \
- /usr/include/c++/13/cassert \
- /usr/include/c++/13/cctype \
- /usr/include/c++/13/cerrno \
- /usr/include/c++/13/clocale \
- /usr/include/c++/13/cstdio \
- /usr/include/c++/13/cstdlib \
- /usr/include/c++/13/cwchar \
- /usr/include/c++/13/debug/assertions.h \
- /usr/include/c++/13/debug/debug.h \
- /usr/include/c++/13/exception \
- /usr/include/c++/13/ext/aligned_buffer.h \
- /usr/include/c++/13/ext/alloc_traits.h \
- /usr/include/c++/13/ext/atomicity.h \
- /usr/include/c++/13/ext/concurrence.h \
- /usr/include/c++/13/ext/numeric_traits.h \
- /usr/include/c++/13/ext/string_conversions.h \
- /usr/include/c++/13/ext/type_traits.h \
- /usr/include/c++/13/initializer_list \
- /usr/include/c++/13/iosfwd \
- /usr/include/c++/13/iterator \
- /usr/include/c++/13/limits \
- /usr/include/c++/13/memory \
- /usr/include/c++/13/new \
- /usr/include/c++/13/stdexcept \
- /usr/include/c++/13/streambuf \
- /usr/include/c++/13/string \
- /usr/include/c++/13/system_error \
- /usr/include/c++/13/tuple \
- /usr/include/c++/13/type_traits \
- /usr/include/c++/13/typeinfo \
- /usr/include/c++/13/utility \
- /usr/include/c++/13/x86_64-redhat-linux/bits/atomic_word.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++allocator.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++config.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++locale.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/cpu_defines.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/error_constants.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/gthr-default.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/gthr.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/os_defines.h \
+ /usr/include/c++/14/algorithm \
+ /usr/include/c++/14/backward/auto_ptr.h \
+ /usr/include/c++/14/backward/binders.h \
+ /usr/include/c++/14/bit \
+ /usr/include/c++/14/bits/algorithmfwd.h \
+ /usr/include/c++/14/bits/align.h \
+ /usr/include/c++/14/bits/alloc_traits.h \
+ /usr/include/c++/14/bits/allocated_ptr.h \
+ /usr/include/c++/14/bits/allocator.h \
+ /usr/include/c++/14/bits/atomic_base.h \
+ /usr/include/c++/14/bits/atomic_lockfree_defines.h \
+ /usr/include/c++/14/bits/basic_string.h \
+ /usr/include/c++/14/bits/basic_string.tcc \
+ /usr/include/c++/14/bits/char_traits.h \
+ /usr/include/c++/14/bits/charconv.h \
+ /usr/include/c++/14/bits/concept_check.h \
+ /usr/include/c++/14/bits/cpp_type_traits.h \
+ /usr/include/c++/14/bits/cxxabi_forced.h \
+ /usr/include/c++/14/bits/cxxabi_init_exception.h \
+ /usr/include/c++/14/bits/exception.h \
+ /usr/include/c++/14/bits/exception_defines.h \
+ /usr/include/c++/14/bits/exception_ptr.h \
+ /usr/include/c++/14/bits/functexcept.h \
+ /usr/include/c++/14/bits/functional_hash.h \
+ /usr/include/c++/14/bits/hash_bytes.h \
+ /usr/include/c++/14/bits/invoke.h \
+ /usr/include/c++/14/bits/ios_base.h \
+ /usr/include/c++/14/bits/locale_classes.h \
+ /usr/include/c++/14/bits/locale_classes.tcc \
+ /usr/include/c++/14/bits/localefwd.h \
+ /usr/include/c++/14/bits/memoryfwd.h \
+ /usr/include/c++/14/bits/move.h \
+ /usr/include/c++/14/bits/nested_exception.h \
+ /usr/include/c++/14/bits/new_allocator.h \
+ /usr/include/c++/14/bits/ostream_insert.h \
+ /usr/include/c++/14/bits/postypes.h \
+ /usr/include/c++/14/bits/predefined_ops.h \
+ /usr/include/c++/14/bits/ptr_traits.h \
+ /usr/include/c++/14/bits/range_access.h \
+ /usr/include/c++/14/bits/refwrap.h \
+ /usr/include/c++/14/bits/requires_hosted.h \
+ /usr/include/c++/14/bits/shared_ptr.h \
+ /usr/include/c++/14/bits/shared_ptr_atomic.h \
+ /usr/include/c++/14/bits/shared_ptr_base.h \
+ /usr/include/c++/14/bits/std_abs.h \
+ /usr/include/c++/14/bits/stl_algo.h \
+ /usr/include/c++/14/bits/stl_algobase.h \
+ /usr/include/c++/14/bits/stl_construct.h \
+ /usr/include/c++/14/bits/stl_function.h \
+ /usr/include/c++/14/bits/stl_heap.h \
+ /usr/include/c++/14/bits/stl_iterator.h \
+ /usr/include/c++/14/bits/stl_iterator_base_funcs.h \
+ /usr/include/c++/14/bits/stl_iterator_base_types.h \
+ /usr/include/c++/14/bits/stl_pair.h \
+ /usr/include/c++/14/bits/stl_raw_storage_iter.h \
+ /usr/include/c++/14/bits/stl_relops.h \
+ /usr/include/c++/14/bits/stl_tempbuf.h \
+ /usr/include/c++/14/bits/stl_uninitialized.h \
+ /usr/include/c++/14/bits/stream_iterator.h \
+ /usr/include/c++/14/bits/streambuf.tcc \
+ /usr/include/c++/14/bits/streambuf_iterator.h \
+ /usr/include/c++/14/bits/stringfwd.h \
+ /usr/include/c++/14/bits/uniform_int_dist.h \
+ /usr/include/c++/14/bits/unique_ptr.h \
+ /usr/include/c++/14/bits/uses_allocator.h \
+ /usr/include/c++/14/bits/utility.h \
+ /usr/include/c++/14/bits/version.h \
+ /usr/include/c++/14/cassert \
+ /usr/include/c++/14/cctype \
+ /usr/include/c++/14/cerrno \
+ /usr/include/c++/14/clocale \
+ /usr/include/c++/14/cstdio \
+ /usr/include/c++/14/cstdlib \
+ /usr/include/c++/14/cwchar \
+ /usr/include/c++/14/debug/assertions.h \
+ /usr/include/c++/14/debug/debug.h \
+ /usr/include/c++/14/exception \
+ /usr/include/c++/14/ext/aligned_buffer.h \
+ /usr/include/c++/14/ext/alloc_traits.h \
+ /usr/include/c++/14/ext/atomicity.h \
+ /usr/include/c++/14/ext/concurrence.h \
+ /usr/include/c++/14/ext/numeric_traits.h \
+ /usr/include/c++/14/ext/string_conversions.h \
+ /usr/include/c++/14/ext/type_traits.h \
+ /usr/include/c++/14/initializer_list \
+ /usr/include/c++/14/iosfwd \
+ /usr/include/c++/14/iterator \
+ /usr/include/c++/14/limits \
+ /usr/include/c++/14/memory \
+ /usr/include/c++/14/new \
+ /usr/include/c++/14/stdexcept \
+ /usr/include/c++/14/streambuf \
+ /usr/include/c++/14/string \
+ /usr/include/c++/14/system_error \
+ /usr/include/c++/14/tuple \
+ /usr/include/c++/14/type_traits \
+ /usr/include/c++/14/typeinfo \
+ /usr/include/c++/14/utility \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/atomic_word.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++allocator.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++config.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++locale.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/cpu_defines.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/error_constants.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/gthr-default.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/gthr.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/os_defines.h \
/usr/include/ctype.h \
/usr/include/endian.h \
/usr/include/errno.h \
@@ -195,9 +197,9 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o: t
/usr/include/sys/types.h \
/usr/include/time.h \
/usr/include/wchar.h \
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdarg.h \
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stddef.h \
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdint.h \
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdarg.h \
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stddef.h \
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdint.h \
third_party/uri/include/network/optional.hpp \
third_party/uri/include/network/string_view.hpp \
third_party/uri/include/network/uri/detail/uri_parts.hpp \
@@ -227,6 +229,7 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o: third
/usr/include/bits/select.h \
/usr/include/bits/setjmp.h \
/usr/include/bits/stdint-intn.h \
+ /usr/include/bits/stdint-least.h \
/usr/include/bits/stdint-uintn.h \
/usr/include/bits/stdio.h \
/usr/include/bits/stdio_lim.h \
@@ -271,132 +274,133 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o: third
/usr/include/bits/wchar.h \
/usr/include/bits/wctype-wchar.h \
/usr/include/bits/wordsize.h \
- /usr/include/c++/13/algorithm \
- /usr/include/c++/13/backward/auto_ptr.h \
- /usr/include/c++/13/backward/binders.h \
- /usr/include/c++/13/bit \
- /usr/include/c++/13/bits/algorithmfwd.h \
- /usr/include/c++/13/bits/align.h \
- /usr/include/c++/13/bits/alloc_traits.h \
- /usr/include/c++/13/bits/allocated_ptr.h \
- /usr/include/c++/13/bits/allocator.h \
- /usr/include/c++/13/bits/atomic_base.h \
- /usr/include/c++/13/bits/atomic_lockfree_defines.h \
- /usr/include/c++/13/bits/basic_string.h \
- /usr/include/c++/13/bits/basic_string.tcc \
- /usr/include/c++/13/bits/char_traits.h \
- /usr/include/c++/13/bits/charconv.h \
- /usr/include/c++/13/bits/codecvt.h \
- /usr/include/c++/13/bits/concept_check.h \
- /usr/include/c++/13/bits/cpp_type_traits.h \
- /usr/include/c++/13/bits/cxxabi_forced.h \
- /usr/include/c++/13/bits/cxxabi_init_exception.h \
- /usr/include/c++/13/bits/exception.h \
- /usr/include/c++/13/bits/exception_defines.h \
- /usr/include/c++/13/bits/exception_ptr.h \
- /usr/include/c++/13/bits/functexcept.h \
- /usr/include/c++/13/bits/functional_hash.h \
- /usr/include/c++/13/bits/hash_bytes.h \
- /usr/include/c++/13/bits/invoke.h \
- /usr/include/c++/13/bits/ios_base.h \
- /usr/include/c++/13/bits/locale_classes.h \
- /usr/include/c++/13/bits/locale_classes.tcc \
- /usr/include/c++/13/bits/locale_conv.h \
- /usr/include/c++/13/bits/locale_facets.h \
- /usr/include/c++/13/bits/locale_facets.tcc \
- /usr/include/c++/13/bits/locale_facets_nonio.h \
- /usr/include/c++/13/bits/locale_facets_nonio.tcc \
- /usr/include/c++/13/bits/localefwd.h \
- /usr/include/c++/13/bits/memoryfwd.h \
- /usr/include/c++/13/bits/move.h \
- /usr/include/c++/13/bits/nested_exception.h \
- /usr/include/c++/13/bits/new_allocator.h \
- /usr/include/c++/13/bits/ostream_insert.h \
- /usr/include/c++/13/bits/postypes.h \
- /usr/include/c++/13/bits/predefined_ops.h \
- /usr/include/c++/13/bits/ptr_traits.h \
- /usr/include/c++/13/bits/range_access.h \
- /usr/include/c++/13/bits/refwrap.h \
- /usr/include/c++/13/bits/requires_hosted.h \
- /usr/include/c++/13/bits/shared_ptr.h \
- /usr/include/c++/13/bits/shared_ptr_atomic.h \
- /usr/include/c++/13/bits/shared_ptr_base.h \
- /usr/include/c++/13/bits/std_abs.h \
- /usr/include/c++/13/bits/std_function.h \
- /usr/include/c++/13/bits/stl_algo.h \
- /usr/include/c++/13/bits/stl_algobase.h \
- /usr/include/c++/13/bits/stl_bvector.h \
- /usr/include/c++/13/bits/stl_construct.h \
- /usr/include/c++/13/bits/stl_function.h \
- /usr/include/c++/13/bits/stl_heap.h \
- /usr/include/c++/13/bits/stl_iterator.h \
- /usr/include/c++/13/bits/stl_iterator_base_funcs.h \
- /usr/include/c++/13/bits/stl_iterator_base_types.h \
- /usr/include/c++/13/bits/stl_pair.h \
- /usr/include/c++/13/bits/stl_raw_storage_iter.h \
- /usr/include/c++/13/bits/stl_relops.h \
- /usr/include/c++/13/bits/stl_tempbuf.h \
- /usr/include/c++/13/bits/stl_uninitialized.h \
- /usr/include/c++/13/bits/stl_vector.h \
- /usr/include/c++/13/bits/stream_iterator.h \
- /usr/include/c++/13/bits/streambuf.tcc \
- /usr/include/c++/13/bits/streambuf_iterator.h \
- /usr/include/c++/13/bits/stringfwd.h \
- /usr/include/c++/13/bits/uniform_int_dist.h \
- /usr/include/c++/13/bits/unique_ptr.h \
- /usr/include/c++/13/bits/uses_allocator.h \
- /usr/include/c++/13/bits/utility.h \
- /usr/include/c++/13/bits/vector.tcc \
- /usr/include/c++/13/cassert \
- /usr/include/c++/13/cctype \
- /usr/include/c++/13/cerrno \
- /usr/include/c++/13/clocale \
- /usr/include/c++/13/cstdint \
- /usr/include/c++/13/cstdio \
- /usr/include/c++/13/cstdlib \
- /usr/include/c++/13/cstring \
- /usr/include/c++/13/ctime \
- /usr/include/c++/13/cwchar \
- /usr/include/c++/13/cwctype \
- /usr/include/c++/13/debug/assertions.h \
- /usr/include/c++/13/debug/debug.h \
- /usr/include/c++/13/exception \
- /usr/include/c++/13/ext/aligned_buffer.h \
- /usr/include/c++/13/ext/alloc_traits.h \
- /usr/include/c++/13/ext/atomicity.h \
- /usr/include/c++/13/ext/concurrence.h \
- /usr/include/c++/13/ext/numeric_traits.h \
- /usr/include/c++/13/ext/string_conversions.h \
- /usr/include/c++/13/ext/type_traits.h \
- /usr/include/c++/13/functional \
- /usr/include/c++/13/initializer_list \
- /usr/include/c++/13/iosfwd \
- /usr/include/c++/13/iterator \
- /usr/include/c++/13/locale \
- /usr/include/c++/13/memory \
- /usr/include/c++/13/new \
- /usr/include/c++/13/stdexcept \
- /usr/include/c++/13/streambuf \
- /usr/include/c++/13/string \
- /usr/include/c++/13/system_error \
- /usr/include/c++/13/tuple \
- /usr/include/c++/13/type_traits \
- /usr/include/c++/13/typeinfo \
- /usr/include/c++/13/utility \
- /usr/include/c++/13/vector \
- /usr/include/c++/13/x86_64-redhat-linux/bits/atomic_word.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++allocator.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++config.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++locale.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/cpu_defines.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/ctype_base.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/ctype_inline.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/error_constants.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/gthr-default.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/gthr.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/messages_members.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/os_defines.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/time_members.h \
+ /usr/include/c++/14/algorithm \
+ /usr/include/c++/14/backward/auto_ptr.h \
+ /usr/include/c++/14/backward/binders.h \
+ /usr/include/c++/14/bit \
+ /usr/include/c++/14/bits/algorithmfwd.h \
+ /usr/include/c++/14/bits/align.h \
+ /usr/include/c++/14/bits/alloc_traits.h \
+ /usr/include/c++/14/bits/allocated_ptr.h \
+ /usr/include/c++/14/bits/allocator.h \
+ /usr/include/c++/14/bits/atomic_base.h \
+ /usr/include/c++/14/bits/atomic_lockfree_defines.h \
+ /usr/include/c++/14/bits/basic_string.h \
+ /usr/include/c++/14/bits/basic_string.tcc \
+ /usr/include/c++/14/bits/char_traits.h \
+ /usr/include/c++/14/bits/charconv.h \
+ /usr/include/c++/14/bits/codecvt.h \
+ /usr/include/c++/14/bits/concept_check.h \
+ /usr/include/c++/14/bits/cpp_type_traits.h \
+ /usr/include/c++/14/bits/cxxabi_forced.h \
+ /usr/include/c++/14/bits/cxxabi_init_exception.h \
+ /usr/include/c++/14/bits/exception.h \
+ /usr/include/c++/14/bits/exception_defines.h \
+ /usr/include/c++/14/bits/exception_ptr.h \
+ /usr/include/c++/14/bits/functexcept.h \
+ /usr/include/c++/14/bits/functional_hash.h \
+ /usr/include/c++/14/bits/hash_bytes.h \
+ /usr/include/c++/14/bits/invoke.h \
+ /usr/include/c++/14/bits/ios_base.h \
+ /usr/include/c++/14/bits/locale_classes.h \
+ /usr/include/c++/14/bits/locale_classes.tcc \
+ /usr/include/c++/14/bits/locale_conv.h \
+ /usr/include/c++/14/bits/locale_facets.h \
+ /usr/include/c++/14/bits/locale_facets.tcc \
+ /usr/include/c++/14/bits/locale_facets_nonio.h \
+ /usr/include/c++/14/bits/locale_facets_nonio.tcc \
+ /usr/include/c++/14/bits/localefwd.h \
+ /usr/include/c++/14/bits/memoryfwd.h \
+ /usr/include/c++/14/bits/move.h \
+ /usr/include/c++/14/bits/nested_exception.h \
+ /usr/include/c++/14/bits/new_allocator.h \
+ /usr/include/c++/14/bits/ostream_insert.h \
+ /usr/include/c++/14/bits/postypes.h \
+ /usr/include/c++/14/bits/predefined_ops.h \
+ /usr/include/c++/14/bits/ptr_traits.h \
+ /usr/include/c++/14/bits/range_access.h \
+ /usr/include/c++/14/bits/refwrap.h \
+ /usr/include/c++/14/bits/requires_hosted.h \
+ /usr/include/c++/14/bits/shared_ptr.h \
+ /usr/include/c++/14/bits/shared_ptr_atomic.h \
+ /usr/include/c++/14/bits/shared_ptr_base.h \
+ /usr/include/c++/14/bits/std_abs.h \
+ /usr/include/c++/14/bits/std_function.h \
+ /usr/include/c++/14/bits/stl_algo.h \
+ /usr/include/c++/14/bits/stl_algobase.h \
+ /usr/include/c++/14/bits/stl_bvector.h \
+ /usr/include/c++/14/bits/stl_construct.h \
+ /usr/include/c++/14/bits/stl_function.h \
+ /usr/include/c++/14/bits/stl_heap.h \
+ /usr/include/c++/14/bits/stl_iterator.h \
+ /usr/include/c++/14/bits/stl_iterator_base_funcs.h \
+ /usr/include/c++/14/bits/stl_iterator_base_types.h \
+ /usr/include/c++/14/bits/stl_pair.h \
+ /usr/include/c++/14/bits/stl_raw_storage_iter.h \
+ /usr/include/c++/14/bits/stl_relops.h \
+ /usr/include/c++/14/bits/stl_tempbuf.h \
+ /usr/include/c++/14/bits/stl_uninitialized.h \
+ /usr/include/c++/14/bits/stl_vector.h \
+ /usr/include/c++/14/bits/stream_iterator.h \
+ /usr/include/c++/14/bits/streambuf.tcc \
+ /usr/include/c++/14/bits/streambuf_iterator.h \
+ /usr/include/c++/14/bits/stringfwd.h \
+ /usr/include/c++/14/bits/uniform_int_dist.h \
+ /usr/include/c++/14/bits/unique_ptr.h \
+ /usr/include/c++/14/bits/uses_allocator.h \
+ /usr/include/c++/14/bits/utility.h \
+ /usr/include/c++/14/bits/vector.tcc \
+ /usr/include/c++/14/bits/version.h \
+ /usr/include/c++/14/cassert \
+ /usr/include/c++/14/cctype \
+ /usr/include/c++/14/cerrno \
+ /usr/include/c++/14/clocale \
+ /usr/include/c++/14/cstdint \
+ /usr/include/c++/14/cstdio \
+ /usr/include/c++/14/cstdlib \
+ /usr/include/c++/14/cstring \
+ /usr/include/c++/14/ctime \
+ /usr/include/c++/14/cwchar \
+ /usr/include/c++/14/cwctype \
+ /usr/include/c++/14/debug/assertions.h \
+ /usr/include/c++/14/debug/debug.h \
+ /usr/include/c++/14/exception \
+ /usr/include/c++/14/ext/aligned_buffer.h \
+ /usr/include/c++/14/ext/alloc_traits.h \
+ /usr/include/c++/14/ext/atomicity.h \
+ /usr/include/c++/14/ext/concurrence.h \
+ /usr/include/c++/14/ext/numeric_traits.h \
+ /usr/include/c++/14/ext/string_conversions.h \
+ /usr/include/c++/14/ext/type_traits.h \
+ /usr/include/c++/14/functional \
+ /usr/include/c++/14/initializer_list \
+ /usr/include/c++/14/iosfwd \
+ /usr/include/c++/14/iterator \
+ /usr/include/c++/14/locale \
+ /usr/include/c++/14/memory \
+ /usr/include/c++/14/new \
+ /usr/include/c++/14/stdexcept \
+ /usr/include/c++/14/streambuf \
+ /usr/include/c++/14/string \
+ /usr/include/c++/14/system_error \
+ /usr/include/c++/14/tuple \
+ /usr/include/c++/14/type_traits \
+ /usr/include/c++/14/typeinfo \
+ /usr/include/c++/14/utility \
+ /usr/include/c++/14/vector \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/atomic_word.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++allocator.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++config.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++locale.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/cpu_defines.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/ctype_base.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/ctype_inline.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/error_constants.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/gthr-default.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/gthr.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/messages_members.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/os_defines.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/time_members.h \
/usr/include/ctype.h \
/usr/include/endian.h \
/usr/include/errno.h \
@@ -422,9 +426,9 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o: third
/usr/include/time.h \
/usr/include/wchar.h \
/usr/include/wctype.h \
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdarg.h \
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stddef.h \
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdint.h \
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdarg.h \
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stddef.h \
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdint.h \
third_party/uri/include/network/optional.hpp \
third_party/uri/include/network/string_view.hpp \
third_party/uri/include/network/uri/config.hpp \
@@ -464,6 +468,7 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o: third_par
/usr/include/bits/select.h \
/usr/include/bits/setjmp.h \
/usr/include/bits/stdint-intn.h \
+ /usr/include/bits/stdint-least.h \
/usr/include/bits/stdint-uintn.h \
/usr/include/bits/stdio.h \
/usr/include/bits/stdio_lim.h \
@@ -508,126 +513,127 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o: third_par
/usr/include/bits/wchar.h \
/usr/include/bits/wctype-wchar.h \
/usr/include/bits/wordsize.h \
- /usr/include/c++/13/algorithm \
- /usr/include/c++/13/backward/auto_ptr.h \
- /usr/include/c++/13/backward/binders.h \
- /usr/include/c++/13/bit \
- /usr/include/c++/13/bits/algorithmfwd.h \
- /usr/include/c++/13/bits/align.h \
- /usr/include/c++/13/bits/alloc_traits.h \
- /usr/include/c++/13/bits/allocated_ptr.h \
- /usr/include/c++/13/bits/allocator.h \
- /usr/include/c++/13/bits/atomic_base.h \
- /usr/include/c++/13/bits/atomic_lockfree_defines.h \
- /usr/include/c++/13/bits/basic_string.h \
- /usr/include/c++/13/bits/basic_string.tcc \
- /usr/include/c++/13/bits/char_traits.h \
- /usr/include/c++/13/bits/charconv.h \
- /usr/include/c++/13/bits/codecvt.h \
- /usr/include/c++/13/bits/concept_check.h \
- /usr/include/c++/13/bits/cpp_type_traits.h \
- /usr/include/c++/13/bits/cxxabi_forced.h \
- /usr/include/c++/13/bits/cxxabi_init_exception.h \
- /usr/include/c++/13/bits/exception.h \
- /usr/include/c++/13/bits/exception_defines.h \
- /usr/include/c++/13/bits/exception_ptr.h \
- /usr/include/c++/13/bits/functexcept.h \
- /usr/include/c++/13/bits/functional_hash.h \
- /usr/include/c++/13/bits/hash_bytes.h \
- /usr/include/c++/13/bits/invoke.h \
- /usr/include/c++/13/bits/ios_base.h \
- /usr/include/c++/13/bits/locale_classes.h \
- /usr/include/c++/13/bits/locale_classes.tcc \
- /usr/include/c++/13/bits/locale_conv.h \
- /usr/include/c++/13/bits/locale_facets.h \
- /usr/include/c++/13/bits/locale_facets.tcc \
- /usr/include/c++/13/bits/locale_facets_nonio.h \
- /usr/include/c++/13/bits/locale_facets_nonio.tcc \
- /usr/include/c++/13/bits/localefwd.h \
- /usr/include/c++/13/bits/memoryfwd.h \
- /usr/include/c++/13/bits/move.h \
- /usr/include/c++/13/bits/nested_exception.h \
- /usr/include/c++/13/bits/new_allocator.h \
- /usr/include/c++/13/bits/ostream_insert.h \
- /usr/include/c++/13/bits/postypes.h \
- /usr/include/c++/13/bits/predefined_ops.h \
- /usr/include/c++/13/bits/ptr_traits.h \
- /usr/include/c++/13/bits/range_access.h \
- /usr/include/c++/13/bits/refwrap.h \
- /usr/include/c++/13/bits/requires_hosted.h \
- /usr/include/c++/13/bits/shared_ptr.h \
- /usr/include/c++/13/bits/shared_ptr_atomic.h \
- /usr/include/c++/13/bits/shared_ptr_base.h \
- /usr/include/c++/13/bits/std_abs.h \
- /usr/include/c++/13/bits/stl_algo.h \
- /usr/include/c++/13/bits/stl_algobase.h \
- /usr/include/c++/13/bits/stl_construct.h \
- /usr/include/c++/13/bits/stl_function.h \
- /usr/include/c++/13/bits/stl_heap.h \
- /usr/include/c++/13/bits/stl_iterator.h \
- /usr/include/c++/13/bits/stl_iterator_base_funcs.h \
- /usr/include/c++/13/bits/stl_iterator_base_types.h \
- /usr/include/c++/13/bits/stl_pair.h \
- /usr/include/c++/13/bits/stl_raw_storage_iter.h \
- /usr/include/c++/13/bits/stl_relops.h \
- /usr/include/c++/13/bits/stl_tempbuf.h \
- /usr/include/c++/13/bits/stl_uninitialized.h \
- /usr/include/c++/13/bits/stream_iterator.h \
- /usr/include/c++/13/bits/streambuf.tcc \
- /usr/include/c++/13/bits/streambuf_iterator.h \
- /usr/include/c++/13/bits/stringfwd.h \
- /usr/include/c++/13/bits/uniform_int_dist.h \
- /usr/include/c++/13/bits/unique_ptr.h \
- /usr/include/c++/13/bits/uses_allocator.h \
- /usr/include/c++/13/bits/utility.h \
- /usr/include/c++/13/cassert \
- /usr/include/c++/13/cctype \
- /usr/include/c++/13/cerrno \
- /usr/include/c++/13/clocale \
- /usr/include/c++/13/cstdio \
- /usr/include/c++/13/cstdlib \
- /usr/include/c++/13/cstring \
- /usr/include/c++/13/ctime \
- /usr/include/c++/13/cwchar \
- /usr/include/c++/13/cwctype \
- /usr/include/c++/13/debug/assertions.h \
- /usr/include/c++/13/debug/debug.h \
- /usr/include/c++/13/exception \
- /usr/include/c++/13/ext/aligned_buffer.h \
- /usr/include/c++/13/ext/alloc_traits.h \
- /usr/include/c++/13/ext/atomicity.h \
- /usr/include/c++/13/ext/concurrence.h \
- /usr/include/c++/13/ext/numeric_traits.h \
- /usr/include/c++/13/ext/string_conversions.h \
- /usr/include/c++/13/ext/type_traits.h \
- /usr/include/c++/13/initializer_list \
- /usr/include/c++/13/iosfwd \
- /usr/include/c++/13/iterator \
- /usr/include/c++/13/limits \
- /usr/include/c++/13/locale \
- /usr/include/c++/13/memory \
- /usr/include/c++/13/new \
- /usr/include/c++/13/stdexcept \
- /usr/include/c++/13/streambuf \
- /usr/include/c++/13/string \
- /usr/include/c++/13/system_error \
- /usr/include/c++/13/tuple \
- /usr/include/c++/13/type_traits \
- /usr/include/c++/13/typeinfo \
- /usr/include/c++/13/utility \
- /usr/include/c++/13/x86_64-redhat-linux/bits/atomic_word.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++allocator.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++config.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++locale.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/cpu_defines.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/ctype_base.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/ctype_inline.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/error_constants.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/gthr-default.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/gthr.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/messages_members.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/os_defines.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/time_members.h \
+ /usr/include/c++/14/algorithm \
+ /usr/include/c++/14/backward/auto_ptr.h \
+ /usr/include/c++/14/backward/binders.h \
+ /usr/include/c++/14/bit \
+ /usr/include/c++/14/bits/algorithmfwd.h \
+ /usr/include/c++/14/bits/align.h \
+ /usr/include/c++/14/bits/alloc_traits.h \
+ /usr/include/c++/14/bits/allocated_ptr.h \
+ /usr/include/c++/14/bits/allocator.h \
+ /usr/include/c++/14/bits/atomic_base.h \
+ /usr/include/c++/14/bits/atomic_lockfree_defines.h \
+ /usr/include/c++/14/bits/basic_string.h \
+ /usr/include/c++/14/bits/basic_string.tcc \
+ /usr/include/c++/14/bits/char_traits.h \
+ /usr/include/c++/14/bits/charconv.h \
+ /usr/include/c++/14/bits/codecvt.h \
+ /usr/include/c++/14/bits/concept_check.h \
+ /usr/include/c++/14/bits/cpp_type_traits.h \
+ /usr/include/c++/14/bits/cxxabi_forced.h \
+ /usr/include/c++/14/bits/cxxabi_init_exception.h \
+ /usr/include/c++/14/bits/exception.h \
+ /usr/include/c++/14/bits/exception_defines.h \
+ /usr/include/c++/14/bits/exception_ptr.h \
+ /usr/include/c++/14/bits/functexcept.h \
+ /usr/include/c++/14/bits/functional_hash.h \
+ /usr/include/c++/14/bits/hash_bytes.h \
+ /usr/include/c++/14/bits/invoke.h \
+ /usr/include/c++/14/bits/ios_base.h \
+ /usr/include/c++/14/bits/locale_classes.h \
+ /usr/include/c++/14/bits/locale_classes.tcc \
+ /usr/include/c++/14/bits/locale_conv.h \
+ /usr/include/c++/14/bits/locale_facets.h \
+ /usr/include/c++/14/bits/locale_facets.tcc \
+ /usr/include/c++/14/bits/locale_facets_nonio.h \
+ /usr/include/c++/14/bits/locale_facets_nonio.tcc \
+ /usr/include/c++/14/bits/localefwd.h \
+ /usr/include/c++/14/bits/memoryfwd.h \
+ /usr/include/c++/14/bits/move.h \
+ /usr/include/c++/14/bits/nested_exception.h \
+ /usr/include/c++/14/bits/new_allocator.h \
+ /usr/include/c++/14/bits/ostream_insert.h \
+ /usr/include/c++/14/bits/postypes.h \
+ /usr/include/c++/14/bits/predefined_ops.h \
+ /usr/include/c++/14/bits/ptr_traits.h \
+ /usr/include/c++/14/bits/range_access.h \
+ /usr/include/c++/14/bits/refwrap.h \
+ /usr/include/c++/14/bits/requires_hosted.h \
+ /usr/include/c++/14/bits/shared_ptr.h \
+ /usr/include/c++/14/bits/shared_ptr_atomic.h \
+ /usr/include/c++/14/bits/shared_ptr_base.h \
+ /usr/include/c++/14/bits/std_abs.h \
+ /usr/include/c++/14/bits/stl_algo.h \
+ /usr/include/c++/14/bits/stl_algobase.h \
+ /usr/include/c++/14/bits/stl_construct.h \
+ /usr/include/c++/14/bits/stl_function.h \
+ /usr/include/c++/14/bits/stl_heap.h \
+ /usr/include/c++/14/bits/stl_iterator.h \
+ /usr/include/c++/14/bits/stl_iterator_base_funcs.h \
+ /usr/include/c++/14/bits/stl_iterator_base_types.h \
+ /usr/include/c++/14/bits/stl_pair.h \
+ /usr/include/c++/14/bits/stl_raw_storage_iter.h \
+ /usr/include/c++/14/bits/stl_relops.h \
+ /usr/include/c++/14/bits/stl_tempbuf.h \
+ /usr/include/c++/14/bits/stl_uninitialized.h \
+ /usr/include/c++/14/bits/stream_iterator.h \
+ /usr/include/c++/14/bits/streambuf.tcc \
+ /usr/include/c++/14/bits/streambuf_iterator.h \
+ /usr/include/c++/14/bits/stringfwd.h \
+ /usr/include/c++/14/bits/uniform_int_dist.h \
+ /usr/include/c++/14/bits/unique_ptr.h \
+ /usr/include/c++/14/bits/uses_allocator.h \
+ /usr/include/c++/14/bits/utility.h \
+ /usr/include/c++/14/bits/version.h \
+ /usr/include/c++/14/cassert \
+ /usr/include/c++/14/cctype \
+ /usr/include/c++/14/cerrno \
+ /usr/include/c++/14/clocale \
+ /usr/include/c++/14/cstdio \
+ /usr/include/c++/14/cstdlib \
+ /usr/include/c++/14/cstring \
+ /usr/include/c++/14/ctime \
+ /usr/include/c++/14/cwchar \
+ /usr/include/c++/14/cwctype \
+ /usr/include/c++/14/debug/assertions.h \
+ /usr/include/c++/14/debug/debug.h \
+ /usr/include/c++/14/exception \
+ /usr/include/c++/14/ext/aligned_buffer.h \
+ /usr/include/c++/14/ext/alloc_traits.h \
+ /usr/include/c++/14/ext/atomicity.h \
+ /usr/include/c++/14/ext/concurrence.h \
+ /usr/include/c++/14/ext/numeric_traits.h \
+ /usr/include/c++/14/ext/string_conversions.h \
+ /usr/include/c++/14/ext/type_traits.h \
+ /usr/include/c++/14/initializer_list \
+ /usr/include/c++/14/iosfwd \
+ /usr/include/c++/14/iterator \
+ /usr/include/c++/14/limits \
+ /usr/include/c++/14/locale \
+ /usr/include/c++/14/memory \
+ /usr/include/c++/14/new \
+ /usr/include/c++/14/stdexcept \
+ /usr/include/c++/14/streambuf \
+ /usr/include/c++/14/string \
+ /usr/include/c++/14/system_error \
+ /usr/include/c++/14/tuple \
+ /usr/include/c++/14/type_traits \
+ /usr/include/c++/14/typeinfo \
+ /usr/include/c++/14/utility \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/atomic_word.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++allocator.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++config.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++locale.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/cpu_defines.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/ctype_base.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/ctype_inline.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/error_constants.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/gthr-default.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/gthr.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/messages_members.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/os_defines.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/time_members.h \
/usr/include/ctype.h \
/usr/include/endian.h \
/usr/include/errno.h \
@@ -653,9 +659,9 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o: third_par
/usr/include/time.h \
/usr/include/wchar.h \
/usr/include/wctype.h \
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdarg.h \
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stddef.h \
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdint.h \
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdarg.h \
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stddef.h \
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdint.h \
third_party/uri/include/network/optional.hpp \
third_party/uri/include/network/string_view.hpp \
third_party/uri/include/network/uri/detail/uri_parts.hpp \
@@ -686,6 +692,7 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o:
/usr/include/bits/select.h \
/usr/include/bits/setjmp.h \
/usr/include/bits/stdint-intn.h \
+ /usr/include/bits/stdint-least.h \
/usr/include/bits/stdint-uintn.h \
/usr/include/bits/stdio.h \
/usr/include/bits/stdio_lim.h \
@@ -730,126 +737,127 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o:
/usr/include/bits/wchar.h \
/usr/include/bits/wctype-wchar.h \
/usr/include/bits/wordsize.h \
- /usr/include/c++/13/algorithm \
- /usr/include/c++/13/backward/auto_ptr.h \
- /usr/include/c++/13/backward/binders.h \
- /usr/include/c++/13/bit \
- /usr/include/c++/13/bits/algorithmfwd.h \
- /usr/include/c++/13/bits/align.h \
- /usr/include/c++/13/bits/alloc_traits.h \
- /usr/include/c++/13/bits/allocated_ptr.h \
- /usr/include/c++/13/bits/allocator.h \
- /usr/include/c++/13/bits/atomic_base.h \
- /usr/include/c++/13/bits/atomic_lockfree_defines.h \
- /usr/include/c++/13/bits/basic_string.h \
- /usr/include/c++/13/bits/basic_string.tcc \
- /usr/include/c++/13/bits/char_traits.h \
- /usr/include/c++/13/bits/charconv.h \
- /usr/include/c++/13/bits/codecvt.h \
- /usr/include/c++/13/bits/concept_check.h \
- /usr/include/c++/13/bits/cpp_type_traits.h \
- /usr/include/c++/13/bits/cxxabi_forced.h \
- /usr/include/c++/13/bits/cxxabi_init_exception.h \
- /usr/include/c++/13/bits/exception.h \
- /usr/include/c++/13/bits/exception_defines.h \
- /usr/include/c++/13/bits/exception_ptr.h \
- /usr/include/c++/13/bits/functexcept.h \
- /usr/include/c++/13/bits/functional_hash.h \
- /usr/include/c++/13/bits/hash_bytes.h \
- /usr/include/c++/13/bits/invoke.h \
- /usr/include/c++/13/bits/ios_base.h \
- /usr/include/c++/13/bits/locale_classes.h \
- /usr/include/c++/13/bits/locale_classes.tcc \
- /usr/include/c++/13/bits/locale_conv.h \
- /usr/include/c++/13/bits/locale_facets.h \
- /usr/include/c++/13/bits/locale_facets.tcc \
- /usr/include/c++/13/bits/locale_facets_nonio.h \
- /usr/include/c++/13/bits/locale_facets_nonio.tcc \
- /usr/include/c++/13/bits/localefwd.h \
- /usr/include/c++/13/bits/memoryfwd.h \
- /usr/include/c++/13/bits/move.h \
- /usr/include/c++/13/bits/nested_exception.h \
- /usr/include/c++/13/bits/new_allocator.h \
- /usr/include/c++/13/bits/ostream_insert.h \
- /usr/include/c++/13/bits/postypes.h \
- /usr/include/c++/13/bits/predefined_ops.h \
- /usr/include/c++/13/bits/ptr_traits.h \
- /usr/include/c++/13/bits/range_access.h \
- /usr/include/c++/13/bits/refwrap.h \
- /usr/include/c++/13/bits/requires_hosted.h \
- /usr/include/c++/13/bits/shared_ptr.h \
- /usr/include/c++/13/bits/shared_ptr_atomic.h \
- /usr/include/c++/13/bits/shared_ptr_base.h \
- /usr/include/c++/13/bits/std_abs.h \
- /usr/include/c++/13/bits/stl_algo.h \
- /usr/include/c++/13/bits/stl_algobase.h \
- /usr/include/c++/13/bits/stl_construct.h \
- /usr/include/c++/13/bits/stl_function.h \
- /usr/include/c++/13/bits/stl_heap.h \
- /usr/include/c++/13/bits/stl_iterator.h \
- /usr/include/c++/13/bits/stl_iterator_base_funcs.h \
- /usr/include/c++/13/bits/stl_iterator_base_types.h \
- /usr/include/c++/13/bits/stl_pair.h \
- /usr/include/c++/13/bits/stl_raw_storage_iter.h \
- /usr/include/c++/13/bits/stl_relops.h \
- /usr/include/c++/13/bits/stl_tempbuf.h \
- /usr/include/c++/13/bits/stl_uninitialized.h \
- /usr/include/c++/13/bits/stream_iterator.h \
- /usr/include/c++/13/bits/streambuf.tcc \
- /usr/include/c++/13/bits/streambuf_iterator.h \
- /usr/include/c++/13/bits/stringfwd.h \
- /usr/include/c++/13/bits/uniform_int_dist.h \
- /usr/include/c++/13/bits/unique_ptr.h \
- /usr/include/c++/13/bits/uses_allocator.h \
- /usr/include/c++/13/bits/utility.h \
- /usr/include/c++/13/cassert \
- /usr/include/c++/13/cctype \
- /usr/include/c++/13/cerrno \
- /usr/include/c++/13/clocale \
- /usr/include/c++/13/cstdio \
- /usr/include/c++/13/cstdlib \
- /usr/include/c++/13/cstring \
- /usr/include/c++/13/ctime \
- /usr/include/c++/13/cwchar \
- /usr/include/c++/13/cwctype \
- /usr/include/c++/13/debug/assertions.h \
- /usr/include/c++/13/debug/debug.h \
- /usr/include/c++/13/exception \
- /usr/include/c++/13/ext/aligned_buffer.h \
- /usr/include/c++/13/ext/alloc_traits.h \
- /usr/include/c++/13/ext/atomicity.h \
- /usr/include/c++/13/ext/concurrence.h \
- /usr/include/c++/13/ext/numeric_traits.h \
- /usr/include/c++/13/ext/string_conversions.h \
- /usr/include/c++/13/ext/type_traits.h \
- /usr/include/c++/13/initializer_list \
- /usr/include/c++/13/iosfwd \
- /usr/include/c++/13/iterator \
- /usr/include/c++/13/limits \
- /usr/include/c++/13/locale \
- /usr/include/c++/13/memory \
- /usr/include/c++/13/new \
- /usr/include/c++/13/stdexcept \
- /usr/include/c++/13/streambuf \
- /usr/include/c++/13/string \
- /usr/include/c++/13/system_error \
- /usr/include/c++/13/tuple \
- /usr/include/c++/13/type_traits \
- /usr/include/c++/13/typeinfo \
- /usr/include/c++/13/utility \
- /usr/include/c++/13/x86_64-redhat-linux/bits/atomic_word.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++allocator.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++config.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++locale.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/cpu_defines.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/ctype_base.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/ctype_inline.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/error_constants.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/gthr-default.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/gthr.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/messages_members.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/os_defines.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/time_members.h \
+ /usr/include/c++/14/algorithm \
+ /usr/include/c++/14/backward/auto_ptr.h \
+ /usr/include/c++/14/backward/binders.h \
+ /usr/include/c++/14/bit \
+ /usr/include/c++/14/bits/algorithmfwd.h \
+ /usr/include/c++/14/bits/align.h \
+ /usr/include/c++/14/bits/alloc_traits.h \
+ /usr/include/c++/14/bits/allocated_ptr.h \
+ /usr/include/c++/14/bits/allocator.h \
+ /usr/include/c++/14/bits/atomic_base.h \
+ /usr/include/c++/14/bits/atomic_lockfree_defines.h \
+ /usr/include/c++/14/bits/basic_string.h \
+ /usr/include/c++/14/bits/basic_string.tcc \
+ /usr/include/c++/14/bits/char_traits.h \
+ /usr/include/c++/14/bits/charconv.h \
+ /usr/include/c++/14/bits/codecvt.h \
+ /usr/include/c++/14/bits/concept_check.h \
+ /usr/include/c++/14/bits/cpp_type_traits.h \
+ /usr/include/c++/14/bits/cxxabi_forced.h \
+ /usr/include/c++/14/bits/cxxabi_init_exception.h \
+ /usr/include/c++/14/bits/exception.h \
+ /usr/include/c++/14/bits/exception_defines.h \
+ /usr/include/c++/14/bits/exception_ptr.h \
+ /usr/include/c++/14/bits/functexcept.h \
+ /usr/include/c++/14/bits/functional_hash.h \
+ /usr/include/c++/14/bits/hash_bytes.h \
+ /usr/include/c++/14/bits/invoke.h \
+ /usr/include/c++/14/bits/ios_base.h \
+ /usr/include/c++/14/bits/locale_classes.h \
+ /usr/include/c++/14/bits/locale_classes.tcc \
+ /usr/include/c++/14/bits/locale_conv.h \
+ /usr/include/c++/14/bits/locale_facets.h \
+ /usr/include/c++/14/bits/locale_facets.tcc \
+ /usr/include/c++/14/bits/locale_facets_nonio.h \
+ /usr/include/c++/14/bits/locale_facets_nonio.tcc \
+ /usr/include/c++/14/bits/localefwd.h \
+ /usr/include/c++/14/bits/memoryfwd.h \
+ /usr/include/c++/14/bits/move.h \
+ /usr/include/c++/14/bits/nested_exception.h \
+ /usr/include/c++/14/bits/new_allocator.h \
+ /usr/include/c++/14/bits/ostream_insert.h \
+ /usr/include/c++/14/bits/postypes.h \
+ /usr/include/c++/14/bits/predefined_ops.h \
+ /usr/include/c++/14/bits/ptr_traits.h \
+ /usr/include/c++/14/bits/range_access.h \
+ /usr/include/c++/14/bits/refwrap.h \
+ /usr/include/c++/14/bits/requires_hosted.h \
+ /usr/include/c++/14/bits/shared_ptr.h \
+ /usr/include/c++/14/bits/shared_ptr_atomic.h \
+ /usr/include/c++/14/bits/shared_ptr_base.h \
+ /usr/include/c++/14/bits/std_abs.h \
+ /usr/include/c++/14/bits/stl_algo.h \
+ /usr/include/c++/14/bits/stl_algobase.h \
+ /usr/include/c++/14/bits/stl_construct.h \
+ /usr/include/c++/14/bits/stl_function.h \
+ /usr/include/c++/14/bits/stl_heap.h \
+ /usr/include/c++/14/bits/stl_iterator.h \
+ /usr/include/c++/14/bits/stl_iterator_base_funcs.h \
+ /usr/include/c++/14/bits/stl_iterator_base_types.h \
+ /usr/include/c++/14/bits/stl_pair.h \
+ /usr/include/c++/14/bits/stl_raw_storage_iter.h \
+ /usr/include/c++/14/bits/stl_relops.h \
+ /usr/include/c++/14/bits/stl_tempbuf.h \
+ /usr/include/c++/14/bits/stl_uninitialized.h \
+ /usr/include/c++/14/bits/stream_iterator.h \
+ /usr/include/c++/14/bits/streambuf.tcc \
+ /usr/include/c++/14/bits/streambuf_iterator.h \
+ /usr/include/c++/14/bits/stringfwd.h \
+ /usr/include/c++/14/bits/uniform_int_dist.h \
+ /usr/include/c++/14/bits/unique_ptr.h \
+ /usr/include/c++/14/bits/uses_allocator.h \
+ /usr/include/c++/14/bits/utility.h \
+ /usr/include/c++/14/bits/version.h \
+ /usr/include/c++/14/cassert \
+ /usr/include/c++/14/cctype \
+ /usr/include/c++/14/cerrno \
+ /usr/include/c++/14/clocale \
+ /usr/include/c++/14/cstdio \
+ /usr/include/c++/14/cstdlib \
+ /usr/include/c++/14/cstring \
+ /usr/include/c++/14/ctime \
+ /usr/include/c++/14/cwchar \
+ /usr/include/c++/14/cwctype \
+ /usr/include/c++/14/debug/assertions.h \
+ /usr/include/c++/14/debug/debug.h \
+ /usr/include/c++/14/exception \
+ /usr/include/c++/14/ext/aligned_buffer.h \
+ /usr/include/c++/14/ext/alloc_traits.h \
+ /usr/include/c++/14/ext/atomicity.h \
+ /usr/include/c++/14/ext/concurrence.h \
+ /usr/include/c++/14/ext/numeric_traits.h \
+ /usr/include/c++/14/ext/string_conversions.h \
+ /usr/include/c++/14/ext/type_traits.h \
+ /usr/include/c++/14/initializer_list \
+ /usr/include/c++/14/iosfwd \
+ /usr/include/c++/14/iterator \
+ /usr/include/c++/14/limits \
+ /usr/include/c++/14/locale \
+ /usr/include/c++/14/memory \
+ /usr/include/c++/14/new \
+ /usr/include/c++/14/stdexcept \
+ /usr/include/c++/14/streambuf \
+ /usr/include/c++/14/string \
+ /usr/include/c++/14/system_error \
+ /usr/include/c++/14/tuple \
+ /usr/include/c++/14/type_traits \
+ /usr/include/c++/14/typeinfo \
+ /usr/include/c++/14/utility \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/atomic_word.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++allocator.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++config.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++locale.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/cpu_defines.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/ctype_base.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/ctype_inline.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/error_constants.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/gthr-default.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/gthr.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/messages_members.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/os_defines.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/time_members.h \
/usr/include/ctype.h \
/usr/include/endian.h \
/usr/include/errno.h \
@@ -875,9 +883,9 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o:
/usr/include/time.h \
/usr/include/wchar.h \
/usr/include/wctype.h \
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdarg.h \
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stddef.h \
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdint.h \
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdarg.h \
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stddef.h \
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdint.h \
third_party/uri/include/network/optional.hpp \
third_party/uri/include/network/string_view.hpp \
third_party/uri/include/network/uri/detail/uri_parts.hpp \
@@ -908,6 +916,7 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o: third_p
/usr/include/bits/select.h \
/usr/include/bits/setjmp.h \
/usr/include/bits/stdint-intn.h \
+ /usr/include/bits/stdint-least.h \
/usr/include/bits/stdint-uintn.h \
/usr/include/bits/stdio.h \
/usr/include/bits/stdio_lim.h \
@@ -951,116 +960,117 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o: third_p
/usr/include/bits/waitstatus.h \
/usr/include/bits/wchar.h \
/usr/include/bits/wordsize.h \
- /usr/include/c++/13/algorithm \
- /usr/include/c++/13/backward/auto_ptr.h \
- /usr/include/c++/13/backward/binders.h \
- /usr/include/c++/13/bit \
- /usr/include/c++/13/bits/algorithmfwd.h \
- /usr/include/c++/13/bits/align.h \
- /usr/include/c++/13/bits/alloc_traits.h \
- /usr/include/c++/13/bits/allocated_ptr.h \
- /usr/include/c++/13/bits/allocator.h \
- /usr/include/c++/13/bits/atomic_base.h \
- /usr/include/c++/13/bits/atomic_lockfree_defines.h \
- /usr/include/c++/13/bits/basic_string.h \
- /usr/include/c++/13/bits/basic_string.tcc \
- /usr/include/c++/13/bits/char_traits.h \
- /usr/include/c++/13/bits/charconv.h \
- /usr/include/c++/13/bits/concept_check.h \
- /usr/include/c++/13/bits/cpp_type_traits.h \
- /usr/include/c++/13/bits/cxxabi_forced.h \
- /usr/include/c++/13/bits/cxxabi_init_exception.h \
- /usr/include/c++/13/bits/exception.h \
- /usr/include/c++/13/bits/exception_defines.h \
- /usr/include/c++/13/bits/exception_ptr.h \
- /usr/include/c++/13/bits/functexcept.h \
- /usr/include/c++/13/bits/functional_hash.h \
- /usr/include/c++/13/bits/hash_bytes.h \
- /usr/include/c++/13/bits/invoke.h \
- /usr/include/c++/13/bits/ios_base.h \
- /usr/include/c++/13/bits/locale_classes.h \
- /usr/include/c++/13/bits/locale_classes.tcc \
- /usr/include/c++/13/bits/localefwd.h \
- /usr/include/c++/13/bits/memoryfwd.h \
- /usr/include/c++/13/bits/move.h \
- /usr/include/c++/13/bits/nested_exception.h \
- /usr/include/c++/13/bits/new_allocator.h \
- /usr/include/c++/13/bits/ostream_insert.h \
- /usr/include/c++/13/bits/postypes.h \
- /usr/include/c++/13/bits/predefined_ops.h \
- /usr/include/c++/13/bits/ptr_traits.h \
- /usr/include/c++/13/bits/range_access.h \
- /usr/include/c++/13/bits/refwrap.h \
- /usr/include/c++/13/bits/requires_hosted.h \
- /usr/include/c++/13/bits/shared_ptr.h \
- /usr/include/c++/13/bits/shared_ptr_atomic.h \
- /usr/include/c++/13/bits/shared_ptr_base.h \
- /usr/include/c++/13/bits/std_abs.h \
- /usr/include/c++/13/bits/std_function.h \
- /usr/include/c++/13/bits/stl_algo.h \
- /usr/include/c++/13/bits/stl_algobase.h \
- /usr/include/c++/13/bits/stl_construct.h \
- /usr/include/c++/13/bits/stl_function.h \
- /usr/include/c++/13/bits/stl_heap.h \
- /usr/include/c++/13/bits/stl_iterator.h \
- /usr/include/c++/13/bits/stl_iterator_base_funcs.h \
- /usr/include/c++/13/bits/stl_iterator_base_types.h \
- /usr/include/c++/13/bits/stl_pair.h \
- /usr/include/c++/13/bits/stl_raw_storage_iter.h \
- /usr/include/c++/13/bits/stl_relops.h \
- /usr/include/c++/13/bits/stl_tempbuf.h \
- /usr/include/c++/13/bits/stl_uninitialized.h \
- /usr/include/c++/13/bits/stream_iterator.h \
- /usr/include/c++/13/bits/streambuf.tcc \
- /usr/include/c++/13/bits/streambuf_iterator.h \
- /usr/include/c++/13/bits/stringfwd.h \
- /usr/include/c++/13/bits/uniform_int_dist.h \
- /usr/include/c++/13/bits/unique_ptr.h \
- /usr/include/c++/13/bits/uses_allocator.h \
- /usr/include/c++/13/bits/utility.h \
- /usr/include/c++/13/cassert \
- /usr/include/c++/13/cctype \
- /usr/include/c++/13/cerrno \
- /usr/include/c++/13/clocale \
- /usr/include/c++/13/cstddef \
- /usr/include/c++/13/cstdint \
- /usr/include/c++/13/cstdio \
- /usr/include/c++/13/cstdlib \
- /usr/include/c++/13/cstring \
- /usr/include/c++/13/cwchar \
- /usr/include/c++/13/debug/assertions.h \
- /usr/include/c++/13/debug/debug.h \
- /usr/include/c++/13/exception \
- /usr/include/c++/13/ext/aligned_buffer.h \
- /usr/include/c++/13/ext/alloc_traits.h \
- /usr/include/c++/13/ext/atomicity.h \
- /usr/include/c++/13/ext/concurrence.h \
- /usr/include/c++/13/ext/numeric_traits.h \
- /usr/include/c++/13/ext/string_conversions.h \
- /usr/include/c++/13/ext/type_traits.h \
- /usr/include/c++/13/functional \
- /usr/include/c++/13/initializer_list \
- /usr/include/c++/13/iosfwd \
- /usr/include/c++/13/iterator \
- /usr/include/c++/13/memory \
- /usr/include/c++/13/new \
- /usr/include/c++/13/stdexcept \
- /usr/include/c++/13/streambuf \
- /usr/include/c++/13/string \
- /usr/include/c++/13/system_error \
- /usr/include/c++/13/tuple \
- /usr/include/c++/13/type_traits \
- /usr/include/c++/13/typeinfo \
- /usr/include/c++/13/utility \
- /usr/include/c++/13/x86_64-redhat-linux/bits/atomic_word.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++allocator.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++config.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++locale.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/cpu_defines.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/error_constants.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/gthr-default.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/gthr.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/os_defines.h \
+ /usr/include/c++/14/algorithm \
+ /usr/include/c++/14/backward/auto_ptr.h \
+ /usr/include/c++/14/backward/binders.h \
+ /usr/include/c++/14/bit \
+ /usr/include/c++/14/bits/algorithmfwd.h \
+ /usr/include/c++/14/bits/align.h \
+ /usr/include/c++/14/bits/alloc_traits.h \
+ /usr/include/c++/14/bits/allocated_ptr.h \
+ /usr/include/c++/14/bits/allocator.h \
+ /usr/include/c++/14/bits/atomic_base.h \
+ /usr/include/c++/14/bits/atomic_lockfree_defines.h \
+ /usr/include/c++/14/bits/basic_string.h \
+ /usr/include/c++/14/bits/basic_string.tcc \
+ /usr/include/c++/14/bits/char_traits.h \
+ /usr/include/c++/14/bits/charconv.h \
+ /usr/include/c++/14/bits/concept_check.h \
+ /usr/include/c++/14/bits/cpp_type_traits.h \
+ /usr/include/c++/14/bits/cxxabi_forced.h \
+ /usr/include/c++/14/bits/cxxabi_init_exception.h \
+ /usr/include/c++/14/bits/exception.h \
+ /usr/include/c++/14/bits/exception_defines.h \
+ /usr/include/c++/14/bits/exception_ptr.h \
+ /usr/include/c++/14/bits/functexcept.h \
+ /usr/include/c++/14/bits/functional_hash.h \
+ /usr/include/c++/14/bits/hash_bytes.h \
+ /usr/include/c++/14/bits/invoke.h \
+ /usr/include/c++/14/bits/ios_base.h \
+ /usr/include/c++/14/bits/locale_classes.h \
+ /usr/include/c++/14/bits/locale_classes.tcc \
+ /usr/include/c++/14/bits/localefwd.h \
+ /usr/include/c++/14/bits/memoryfwd.h \
+ /usr/include/c++/14/bits/move.h \
+ /usr/include/c++/14/bits/nested_exception.h \
+ /usr/include/c++/14/bits/new_allocator.h \
+ /usr/include/c++/14/bits/ostream_insert.h \
+ /usr/include/c++/14/bits/postypes.h \
+ /usr/include/c++/14/bits/predefined_ops.h \
+ /usr/include/c++/14/bits/ptr_traits.h \
+ /usr/include/c++/14/bits/range_access.h \
+ /usr/include/c++/14/bits/refwrap.h \
+ /usr/include/c++/14/bits/requires_hosted.h \
+ /usr/include/c++/14/bits/shared_ptr.h \
+ /usr/include/c++/14/bits/shared_ptr_atomic.h \
+ /usr/include/c++/14/bits/shared_ptr_base.h \
+ /usr/include/c++/14/bits/std_abs.h \
+ /usr/include/c++/14/bits/std_function.h \
+ /usr/include/c++/14/bits/stl_algo.h \
+ /usr/include/c++/14/bits/stl_algobase.h \
+ /usr/include/c++/14/bits/stl_construct.h \
+ /usr/include/c++/14/bits/stl_function.h \
+ /usr/include/c++/14/bits/stl_heap.h \
+ /usr/include/c++/14/bits/stl_iterator.h \
+ /usr/include/c++/14/bits/stl_iterator_base_funcs.h \
+ /usr/include/c++/14/bits/stl_iterator_base_types.h \
+ /usr/include/c++/14/bits/stl_pair.h \
+ /usr/include/c++/14/bits/stl_raw_storage_iter.h \
+ /usr/include/c++/14/bits/stl_relops.h \
+ /usr/include/c++/14/bits/stl_tempbuf.h \
+ /usr/include/c++/14/bits/stl_uninitialized.h \
+ /usr/include/c++/14/bits/stream_iterator.h \
+ /usr/include/c++/14/bits/streambuf.tcc \
+ /usr/include/c++/14/bits/streambuf_iterator.h \
+ /usr/include/c++/14/bits/stringfwd.h \
+ /usr/include/c++/14/bits/uniform_int_dist.h \
+ /usr/include/c++/14/bits/unique_ptr.h \
+ /usr/include/c++/14/bits/uses_allocator.h \
+ /usr/include/c++/14/bits/utility.h \
+ /usr/include/c++/14/bits/version.h \
+ /usr/include/c++/14/cassert \
+ /usr/include/c++/14/cctype \
+ /usr/include/c++/14/cerrno \
+ /usr/include/c++/14/clocale \
+ /usr/include/c++/14/cstddef \
+ /usr/include/c++/14/cstdint \
+ /usr/include/c++/14/cstdio \
+ /usr/include/c++/14/cstdlib \
+ /usr/include/c++/14/cstring \
+ /usr/include/c++/14/cwchar \
+ /usr/include/c++/14/debug/assertions.h \
+ /usr/include/c++/14/debug/debug.h \
+ /usr/include/c++/14/exception \
+ /usr/include/c++/14/ext/aligned_buffer.h \
+ /usr/include/c++/14/ext/alloc_traits.h \
+ /usr/include/c++/14/ext/atomicity.h \
+ /usr/include/c++/14/ext/concurrence.h \
+ /usr/include/c++/14/ext/numeric_traits.h \
+ /usr/include/c++/14/ext/string_conversions.h \
+ /usr/include/c++/14/ext/type_traits.h \
+ /usr/include/c++/14/functional \
+ /usr/include/c++/14/initializer_list \
+ /usr/include/c++/14/iosfwd \
+ /usr/include/c++/14/iterator \
+ /usr/include/c++/14/memory \
+ /usr/include/c++/14/new \
+ /usr/include/c++/14/stdexcept \
+ /usr/include/c++/14/streambuf \
+ /usr/include/c++/14/string \
+ /usr/include/c++/14/system_error \
+ /usr/include/c++/14/tuple \
+ /usr/include/c++/14/type_traits \
+ /usr/include/c++/14/typeinfo \
+ /usr/include/c++/14/utility \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/atomic_word.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++allocator.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++config.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++locale.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/cpu_defines.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/error_constants.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/gthr-default.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/gthr.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/os_defines.h \
/usr/include/ctype.h \
/usr/include/endian.h \
/usr/include/errno.h \
@@ -1084,9 +1094,9 @@ third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o: third_p
/usr/include/sys/types.h \
/usr/include/time.h \
/usr/include/wchar.h \
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdarg.h \
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stddef.h \
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdint.h \
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdarg.h \
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stddef.h \
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdint.h \
third_party/uri/include/network/optional.hpp \
third_party/uri/include/network/string_view.hpp \
third_party/uri/include/network/uri/config.hpp \
@@ -1124,6 +1134,7 @@ third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o: third_party/uri/src/ur
/usr/include/bits/select.h \
/usr/include/bits/setjmp.h \
/usr/include/bits/stdint-intn.h \
+ /usr/include/bits/stdint-least.h \
/usr/include/bits/stdint-uintn.h \
/usr/include/bits/stdio.h \
/usr/include/bits/stdio_lim.h \
@@ -1168,132 +1179,133 @@ third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o: third_party/uri/src/ur
/usr/include/bits/wchar.h \
/usr/include/bits/wctype-wchar.h \
/usr/include/bits/wordsize.h \
- /usr/include/c++/13/algorithm \
- /usr/include/c++/13/backward/auto_ptr.h \
- /usr/include/c++/13/backward/binders.h \
- /usr/include/c++/13/bit \
- /usr/include/c++/13/bits/algorithmfwd.h \
- /usr/include/c++/13/bits/align.h \
- /usr/include/c++/13/bits/alloc_traits.h \
- /usr/include/c++/13/bits/allocated_ptr.h \
- /usr/include/c++/13/bits/allocator.h \
- /usr/include/c++/13/bits/atomic_base.h \
- /usr/include/c++/13/bits/atomic_lockfree_defines.h \
- /usr/include/c++/13/bits/basic_string.h \
- /usr/include/c++/13/bits/basic_string.tcc \
- /usr/include/c++/13/bits/char_traits.h \
- /usr/include/c++/13/bits/charconv.h \
- /usr/include/c++/13/bits/codecvt.h \
- /usr/include/c++/13/bits/concept_check.h \
- /usr/include/c++/13/bits/cpp_type_traits.h \
- /usr/include/c++/13/bits/cxxabi_forced.h \
- /usr/include/c++/13/bits/cxxabi_init_exception.h \
- /usr/include/c++/13/bits/exception.h \
- /usr/include/c++/13/bits/exception_defines.h \
- /usr/include/c++/13/bits/exception_ptr.h \
- /usr/include/c++/13/bits/functexcept.h \
- /usr/include/c++/13/bits/functional_hash.h \
- /usr/include/c++/13/bits/hash_bytes.h \
- /usr/include/c++/13/bits/invoke.h \
- /usr/include/c++/13/bits/ios_base.h \
- /usr/include/c++/13/bits/locale_classes.h \
- /usr/include/c++/13/bits/locale_classes.tcc \
- /usr/include/c++/13/bits/locale_conv.h \
- /usr/include/c++/13/bits/locale_facets.h \
- /usr/include/c++/13/bits/locale_facets.tcc \
- /usr/include/c++/13/bits/locale_facets_nonio.h \
- /usr/include/c++/13/bits/locale_facets_nonio.tcc \
- /usr/include/c++/13/bits/localefwd.h \
- /usr/include/c++/13/bits/memoryfwd.h \
- /usr/include/c++/13/bits/move.h \
- /usr/include/c++/13/bits/nested_exception.h \
- /usr/include/c++/13/bits/new_allocator.h \
- /usr/include/c++/13/bits/ostream_insert.h \
- /usr/include/c++/13/bits/postypes.h \
- /usr/include/c++/13/bits/predefined_ops.h \
- /usr/include/c++/13/bits/ptr_traits.h \
- /usr/include/c++/13/bits/range_access.h \
- /usr/include/c++/13/bits/refwrap.h \
- /usr/include/c++/13/bits/requires_hosted.h \
- /usr/include/c++/13/bits/shared_ptr.h \
- /usr/include/c++/13/bits/shared_ptr_atomic.h \
- /usr/include/c++/13/bits/shared_ptr_base.h \
- /usr/include/c++/13/bits/std_abs.h \
- /usr/include/c++/13/bits/std_function.h \
- /usr/include/c++/13/bits/stl_algo.h \
- /usr/include/c++/13/bits/stl_algobase.h \
- /usr/include/c++/13/bits/stl_bvector.h \
- /usr/include/c++/13/bits/stl_construct.h \
- /usr/include/c++/13/bits/stl_function.h \
- /usr/include/c++/13/bits/stl_heap.h \
- /usr/include/c++/13/bits/stl_iterator.h \
- /usr/include/c++/13/bits/stl_iterator_base_funcs.h \
- /usr/include/c++/13/bits/stl_iterator_base_types.h \
- /usr/include/c++/13/bits/stl_pair.h \
- /usr/include/c++/13/bits/stl_raw_storage_iter.h \
- /usr/include/c++/13/bits/stl_relops.h \
- /usr/include/c++/13/bits/stl_tempbuf.h \
- /usr/include/c++/13/bits/stl_uninitialized.h \
- /usr/include/c++/13/bits/stl_vector.h \
- /usr/include/c++/13/bits/stream_iterator.h \
- /usr/include/c++/13/bits/streambuf.tcc \
- /usr/include/c++/13/bits/streambuf_iterator.h \
- /usr/include/c++/13/bits/stringfwd.h \
- /usr/include/c++/13/bits/uniform_int_dist.h \
- /usr/include/c++/13/bits/unique_ptr.h \
- /usr/include/c++/13/bits/uses_allocator.h \
- /usr/include/c++/13/bits/utility.h \
- /usr/include/c++/13/bits/vector.tcc \
- /usr/include/c++/13/cassert \
- /usr/include/c++/13/cctype \
- /usr/include/c++/13/cerrno \
- /usr/include/c++/13/clocale \
- /usr/include/c++/13/cstdint \
- /usr/include/c++/13/cstdio \
- /usr/include/c++/13/cstdlib \
- /usr/include/c++/13/cstring \
- /usr/include/c++/13/ctime \
- /usr/include/c++/13/cwchar \
- /usr/include/c++/13/cwctype \
- /usr/include/c++/13/debug/assertions.h \
- /usr/include/c++/13/debug/debug.h \
- /usr/include/c++/13/exception \
- /usr/include/c++/13/ext/aligned_buffer.h \
- /usr/include/c++/13/ext/alloc_traits.h \
- /usr/include/c++/13/ext/atomicity.h \
- /usr/include/c++/13/ext/concurrence.h \
- /usr/include/c++/13/ext/numeric_traits.h \
- /usr/include/c++/13/ext/string_conversions.h \
- /usr/include/c++/13/ext/type_traits.h \
- /usr/include/c++/13/functional \
- /usr/include/c++/13/initializer_list \
- /usr/include/c++/13/iosfwd \
- /usr/include/c++/13/iterator \
- /usr/include/c++/13/locale \
- /usr/include/c++/13/memory \
- /usr/include/c++/13/new \
- /usr/include/c++/13/stdexcept \
- /usr/include/c++/13/streambuf \
- /usr/include/c++/13/string \
- /usr/include/c++/13/system_error \
- /usr/include/c++/13/tuple \
- /usr/include/c++/13/type_traits \
- /usr/include/c++/13/typeinfo \
- /usr/include/c++/13/utility \
- /usr/include/c++/13/vector \
- /usr/include/c++/13/x86_64-redhat-linux/bits/atomic_word.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++allocator.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++config.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++locale.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/cpu_defines.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/ctype_base.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/ctype_inline.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/error_constants.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/gthr-default.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/gthr.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/messages_members.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/os_defines.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/time_members.h \
+ /usr/include/c++/14/algorithm \
+ /usr/include/c++/14/backward/auto_ptr.h \
+ /usr/include/c++/14/backward/binders.h \
+ /usr/include/c++/14/bit \
+ /usr/include/c++/14/bits/algorithmfwd.h \
+ /usr/include/c++/14/bits/align.h \
+ /usr/include/c++/14/bits/alloc_traits.h \
+ /usr/include/c++/14/bits/allocated_ptr.h \
+ /usr/include/c++/14/bits/allocator.h \
+ /usr/include/c++/14/bits/atomic_base.h \
+ /usr/include/c++/14/bits/atomic_lockfree_defines.h \
+ /usr/include/c++/14/bits/basic_string.h \
+ /usr/include/c++/14/bits/basic_string.tcc \
+ /usr/include/c++/14/bits/char_traits.h \
+ /usr/include/c++/14/bits/charconv.h \
+ /usr/include/c++/14/bits/codecvt.h \
+ /usr/include/c++/14/bits/concept_check.h \
+ /usr/include/c++/14/bits/cpp_type_traits.h \
+ /usr/include/c++/14/bits/cxxabi_forced.h \
+ /usr/include/c++/14/bits/cxxabi_init_exception.h \
+ /usr/include/c++/14/bits/exception.h \
+ /usr/include/c++/14/bits/exception_defines.h \
+ /usr/include/c++/14/bits/exception_ptr.h \
+ /usr/include/c++/14/bits/functexcept.h \
+ /usr/include/c++/14/bits/functional_hash.h \
+ /usr/include/c++/14/bits/hash_bytes.h \
+ /usr/include/c++/14/bits/invoke.h \
+ /usr/include/c++/14/bits/ios_base.h \
+ /usr/include/c++/14/bits/locale_classes.h \
+ /usr/include/c++/14/bits/locale_classes.tcc \
+ /usr/include/c++/14/bits/locale_conv.h \
+ /usr/include/c++/14/bits/locale_facets.h \
+ /usr/include/c++/14/bits/locale_facets.tcc \
+ /usr/include/c++/14/bits/locale_facets_nonio.h \
+ /usr/include/c++/14/bits/locale_facets_nonio.tcc \
+ /usr/include/c++/14/bits/localefwd.h \
+ /usr/include/c++/14/bits/memoryfwd.h \
+ /usr/include/c++/14/bits/move.h \
+ /usr/include/c++/14/bits/nested_exception.h \
+ /usr/include/c++/14/bits/new_allocator.h \
+ /usr/include/c++/14/bits/ostream_insert.h \
+ /usr/include/c++/14/bits/postypes.h \
+ /usr/include/c++/14/bits/predefined_ops.h \
+ /usr/include/c++/14/bits/ptr_traits.h \
+ /usr/include/c++/14/bits/range_access.h \
+ /usr/include/c++/14/bits/refwrap.h \
+ /usr/include/c++/14/bits/requires_hosted.h \
+ /usr/include/c++/14/bits/shared_ptr.h \
+ /usr/include/c++/14/bits/shared_ptr_atomic.h \
+ /usr/include/c++/14/bits/shared_ptr_base.h \
+ /usr/include/c++/14/bits/std_abs.h \
+ /usr/include/c++/14/bits/std_function.h \
+ /usr/include/c++/14/bits/stl_algo.h \
+ /usr/include/c++/14/bits/stl_algobase.h \
+ /usr/include/c++/14/bits/stl_bvector.h \
+ /usr/include/c++/14/bits/stl_construct.h \
+ /usr/include/c++/14/bits/stl_function.h \
+ /usr/include/c++/14/bits/stl_heap.h \
+ /usr/include/c++/14/bits/stl_iterator.h \
+ /usr/include/c++/14/bits/stl_iterator_base_funcs.h \
+ /usr/include/c++/14/bits/stl_iterator_base_types.h \
+ /usr/include/c++/14/bits/stl_pair.h \
+ /usr/include/c++/14/bits/stl_raw_storage_iter.h \
+ /usr/include/c++/14/bits/stl_relops.h \
+ /usr/include/c++/14/bits/stl_tempbuf.h \
+ /usr/include/c++/14/bits/stl_uninitialized.h \
+ /usr/include/c++/14/bits/stl_vector.h \
+ /usr/include/c++/14/bits/stream_iterator.h \
+ /usr/include/c++/14/bits/streambuf.tcc \
+ /usr/include/c++/14/bits/streambuf_iterator.h \
+ /usr/include/c++/14/bits/stringfwd.h \
+ /usr/include/c++/14/bits/uniform_int_dist.h \
+ /usr/include/c++/14/bits/unique_ptr.h \
+ /usr/include/c++/14/bits/uses_allocator.h \
+ /usr/include/c++/14/bits/utility.h \
+ /usr/include/c++/14/bits/vector.tcc \
+ /usr/include/c++/14/bits/version.h \
+ /usr/include/c++/14/cassert \
+ /usr/include/c++/14/cctype \
+ /usr/include/c++/14/cerrno \
+ /usr/include/c++/14/clocale \
+ /usr/include/c++/14/cstdint \
+ /usr/include/c++/14/cstdio \
+ /usr/include/c++/14/cstdlib \
+ /usr/include/c++/14/cstring \
+ /usr/include/c++/14/ctime \
+ /usr/include/c++/14/cwchar \
+ /usr/include/c++/14/cwctype \
+ /usr/include/c++/14/debug/assertions.h \
+ /usr/include/c++/14/debug/debug.h \
+ /usr/include/c++/14/exception \
+ /usr/include/c++/14/ext/aligned_buffer.h \
+ /usr/include/c++/14/ext/alloc_traits.h \
+ /usr/include/c++/14/ext/atomicity.h \
+ /usr/include/c++/14/ext/concurrence.h \
+ /usr/include/c++/14/ext/numeric_traits.h \
+ /usr/include/c++/14/ext/string_conversions.h \
+ /usr/include/c++/14/ext/type_traits.h \
+ /usr/include/c++/14/functional \
+ /usr/include/c++/14/initializer_list \
+ /usr/include/c++/14/iosfwd \
+ /usr/include/c++/14/iterator \
+ /usr/include/c++/14/locale \
+ /usr/include/c++/14/memory \
+ /usr/include/c++/14/new \
+ /usr/include/c++/14/stdexcept \
+ /usr/include/c++/14/streambuf \
+ /usr/include/c++/14/string \
+ /usr/include/c++/14/system_error \
+ /usr/include/c++/14/tuple \
+ /usr/include/c++/14/type_traits \
+ /usr/include/c++/14/typeinfo \
+ /usr/include/c++/14/utility \
+ /usr/include/c++/14/vector \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/atomic_word.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++allocator.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++config.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++locale.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/cpu_defines.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/ctype_base.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/ctype_inline.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/error_constants.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/gthr-default.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/gthr.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/messages_members.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/os_defines.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/time_members.h \
/usr/include/ctype.h \
/usr/include/endian.h \
/usr/include/errno.h \
@@ -1319,9 +1331,9 @@ third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o: third_party/uri/src/ur
/usr/include/time.h \
/usr/include/wchar.h \
/usr/include/wctype.h \
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdarg.h \
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stddef.h \
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdint.h \
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdarg.h \
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stddef.h \
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdint.h \
third_party/uri/include/network/optional.hpp \
third_party/uri/include/network/string_view.hpp \
third_party/uri/include/network/uri/config.hpp \
@@ -1363,6 +1375,7 @@ third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o: third_party/ur
/usr/include/bits/select.h \
/usr/include/bits/setjmp.h \
/usr/include/bits/stdint-intn.h \
+ /usr/include/bits/stdint-least.h \
/usr/include/bits/stdint-uintn.h \
/usr/include/bits/stdio.h \
/usr/include/bits/stdio_lim.h \
@@ -1407,128 +1420,129 @@ third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o: third_party/ur
/usr/include/bits/wchar.h \
/usr/include/bits/wctype-wchar.h \
/usr/include/bits/wordsize.h \
- /usr/include/c++/13/algorithm \
- /usr/include/c++/13/backward/auto_ptr.h \
- /usr/include/c++/13/backward/binders.h \
- /usr/include/c++/13/bit \
- /usr/include/c++/13/bits/algorithmfwd.h \
- /usr/include/c++/13/bits/align.h \
- /usr/include/c++/13/bits/alloc_traits.h \
- /usr/include/c++/13/bits/allocated_ptr.h \
- /usr/include/c++/13/bits/allocator.h \
- /usr/include/c++/13/bits/atomic_base.h \
- /usr/include/c++/13/bits/atomic_lockfree_defines.h \
- /usr/include/c++/13/bits/basic_string.h \
- /usr/include/c++/13/bits/basic_string.tcc \
- /usr/include/c++/13/bits/char_traits.h \
- /usr/include/c++/13/bits/charconv.h \
- /usr/include/c++/13/bits/codecvt.h \
- /usr/include/c++/13/bits/concept_check.h \
- /usr/include/c++/13/bits/cpp_type_traits.h \
- /usr/include/c++/13/bits/cxxabi_forced.h \
- /usr/include/c++/13/bits/cxxabi_init_exception.h \
- /usr/include/c++/13/bits/exception.h \
- /usr/include/c++/13/bits/exception_defines.h \
- /usr/include/c++/13/bits/exception_ptr.h \
- /usr/include/c++/13/bits/functexcept.h \
- /usr/include/c++/13/bits/functional_hash.h \
- /usr/include/c++/13/bits/hash_bytes.h \
- /usr/include/c++/13/bits/invoke.h \
- /usr/include/c++/13/bits/ios_base.h \
- /usr/include/c++/13/bits/locale_classes.h \
- /usr/include/c++/13/bits/locale_classes.tcc \
- /usr/include/c++/13/bits/locale_conv.h \
- /usr/include/c++/13/bits/locale_facets.h \
- /usr/include/c++/13/bits/locale_facets.tcc \
- /usr/include/c++/13/bits/locale_facets_nonio.h \
- /usr/include/c++/13/bits/locale_facets_nonio.tcc \
- /usr/include/c++/13/bits/localefwd.h \
- /usr/include/c++/13/bits/memoryfwd.h \
- /usr/include/c++/13/bits/move.h \
- /usr/include/c++/13/bits/nested_exception.h \
- /usr/include/c++/13/bits/new_allocator.h \
- /usr/include/c++/13/bits/ostream_insert.h \
- /usr/include/c++/13/bits/postypes.h \
- /usr/include/c++/13/bits/predefined_ops.h \
- /usr/include/c++/13/bits/ptr_traits.h \
- /usr/include/c++/13/bits/range_access.h \
- /usr/include/c++/13/bits/refwrap.h \
- /usr/include/c++/13/bits/requires_hosted.h \
- /usr/include/c++/13/bits/shared_ptr.h \
- /usr/include/c++/13/bits/shared_ptr_atomic.h \
- /usr/include/c++/13/bits/shared_ptr_base.h \
- /usr/include/c++/13/bits/std_abs.h \
- /usr/include/c++/13/bits/std_function.h \
- /usr/include/c++/13/bits/stl_algo.h \
- /usr/include/c++/13/bits/stl_algobase.h \
- /usr/include/c++/13/bits/stl_construct.h \
- /usr/include/c++/13/bits/stl_function.h \
- /usr/include/c++/13/bits/stl_heap.h \
- /usr/include/c++/13/bits/stl_iterator.h \
- /usr/include/c++/13/bits/stl_iterator_base_funcs.h \
- /usr/include/c++/13/bits/stl_iterator_base_types.h \
- /usr/include/c++/13/bits/stl_pair.h \
- /usr/include/c++/13/bits/stl_raw_storage_iter.h \
- /usr/include/c++/13/bits/stl_relops.h \
- /usr/include/c++/13/bits/stl_tempbuf.h \
- /usr/include/c++/13/bits/stl_uninitialized.h \
- /usr/include/c++/13/bits/stream_iterator.h \
- /usr/include/c++/13/bits/streambuf.tcc \
- /usr/include/c++/13/bits/streambuf_iterator.h \
- /usr/include/c++/13/bits/stringfwd.h \
- /usr/include/c++/13/bits/uniform_int_dist.h \
- /usr/include/c++/13/bits/unique_ptr.h \
- /usr/include/c++/13/bits/uses_allocator.h \
- /usr/include/c++/13/bits/utility.h \
- /usr/include/c++/13/cassert \
- /usr/include/c++/13/cctype \
- /usr/include/c++/13/cerrno \
- /usr/include/c++/13/clocale \
- /usr/include/c++/13/cstdint \
- /usr/include/c++/13/cstdio \
- /usr/include/c++/13/cstdlib \
- /usr/include/c++/13/cstring \
- /usr/include/c++/13/ctime \
- /usr/include/c++/13/cwchar \
- /usr/include/c++/13/cwctype \
- /usr/include/c++/13/debug/assertions.h \
- /usr/include/c++/13/debug/debug.h \
- /usr/include/c++/13/exception \
- /usr/include/c++/13/ext/aligned_buffer.h \
- /usr/include/c++/13/ext/alloc_traits.h \
- /usr/include/c++/13/ext/atomicity.h \
- /usr/include/c++/13/ext/concurrence.h \
- /usr/include/c++/13/ext/numeric_traits.h \
- /usr/include/c++/13/ext/string_conversions.h \
- /usr/include/c++/13/ext/type_traits.h \
- /usr/include/c++/13/functional \
- /usr/include/c++/13/initializer_list \
- /usr/include/c++/13/iosfwd \
- /usr/include/c++/13/iterator \
- /usr/include/c++/13/locale \
- /usr/include/c++/13/memory \
- /usr/include/c++/13/new \
- /usr/include/c++/13/stdexcept \
- /usr/include/c++/13/streambuf \
- /usr/include/c++/13/string \
- /usr/include/c++/13/system_error \
- /usr/include/c++/13/tuple \
- /usr/include/c++/13/type_traits \
- /usr/include/c++/13/typeinfo \
- /usr/include/c++/13/utility \
- /usr/include/c++/13/x86_64-redhat-linux/bits/atomic_word.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++allocator.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++config.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++locale.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/cpu_defines.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/ctype_base.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/ctype_inline.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/error_constants.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/gthr-default.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/gthr.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/messages_members.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/os_defines.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/time_members.h \
+ /usr/include/c++/14/algorithm \
+ /usr/include/c++/14/backward/auto_ptr.h \
+ /usr/include/c++/14/backward/binders.h \
+ /usr/include/c++/14/bit \
+ /usr/include/c++/14/bits/algorithmfwd.h \
+ /usr/include/c++/14/bits/align.h \
+ /usr/include/c++/14/bits/alloc_traits.h \
+ /usr/include/c++/14/bits/allocated_ptr.h \
+ /usr/include/c++/14/bits/allocator.h \
+ /usr/include/c++/14/bits/atomic_base.h \
+ /usr/include/c++/14/bits/atomic_lockfree_defines.h \
+ /usr/include/c++/14/bits/basic_string.h \
+ /usr/include/c++/14/bits/basic_string.tcc \
+ /usr/include/c++/14/bits/char_traits.h \
+ /usr/include/c++/14/bits/charconv.h \
+ /usr/include/c++/14/bits/codecvt.h \
+ /usr/include/c++/14/bits/concept_check.h \
+ /usr/include/c++/14/bits/cpp_type_traits.h \
+ /usr/include/c++/14/bits/cxxabi_forced.h \
+ /usr/include/c++/14/bits/cxxabi_init_exception.h \
+ /usr/include/c++/14/bits/exception.h \
+ /usr/include/c++/14/bits/exception_defines.h \
+ /usr/include/c++/14/bits/exception_ptr.h \
+ /usr/include/c++/14/bits/functexcept.h \
+ /usr/include/c++/14/bits/functional_hash.h \
+ /usr/include/c++/14/bits/hash_bytes.h \
+ /usr/include/c++/14/bits/invoke.h \
+ /usr/include/c++/14/bits/ios_base.h \
+ /usr/include/c++/14/bits/locale_classes.h \
+ /usr/include/c++/14/bits/locale_classes.tcc \
+ /usr/include/c++/14/bits/locale_conv.h \
+ /usr/include/c++/14/bits/locale_facets.h \
+ /usr/include/c++/14/bits/locale_facets.tcc \
+ /usr/include/c++/14/bits/locale_facets_nonio.h \
+ /usr/include/c++/14/bits/locale_facets_nonio.tcc \
+ /usr/include/c++/14/bits/localefwd.h \
+ /usr/include/c++/14/bits/memoryfwd.h \
+ /usr/include/c++/14/bits/move.h \
+ /usr/include/c++/14/bits/nested_exception.h \
+ /usr/include/c++/14/bits/new_allocator.h \
+ /usr/include/c++/14/bits/ostream_insert.h \
+ /usr/include/c++/14/bits/postypes.h \
+ /usr/include/c++/14/bits/predefined_ops.h \
+ /usr/include/c++/14/bits/ptr_traits.h \
+ /usr/include/c++/14/bits/range_access.h \
+ /usr/include/c++/14/bits/refwrap.h \
+ /usr/include/c++/14/bits/requires_hosted.h \
+ /usr/include/c++/14/bits/shared_ptr.h \
+ /usr/include/c++/14/bits/shared_ptr_atomic.h \
+ /usr/include/c++/14/bits/shared_ptr_base.h \
+ /usr/include/c++/14/bits/std_abs.h \
+ /usr/include/c++/14/bits/std_function.h \
+ /usr/include/c++/14/bits/stl_algo.h \
+ /usr/include/c++/14/bits/stl_algobase.h \
+ /usr/include/c++/14/bits/stl_construct.h \
+ /usr/include/c++/14/bits/stl_function.h \
+ /usr/include/c++/14/bits/stl_heap.h \
+ /usr/include/c++/14/bits/stl_iterator.h \
+ /usr/include/c++/14/bits/stl_iterator_base_funcs.h \
+ /usr/include/c++/14/bits/stl_iterator_base_types.h \
+ /usr/include/c++/14/bits/stl_pair.h \
+ /usr/include/c++/14/bits/stl_raw_storage_iter.h \
+ /usr/include/c++/14/bits/stl_relops.h \
+ /usr/include/c++/14/bits/stl_tempbuf.h \
+ /usr/include/c++/14/bits/stl_uninitialized.h \
+ /usr/include/c++/14/bits/stream_iterator.h \
+ /usr/include/c++/14/bits/streambuf.tcc \
+ /usr/include/c++/14/bits/streambuf_iterator.h \
+ /usr/include/c++/14/bits/stringfwd.h \
+ /usr/include/c++/14/bits/uniform_int_dist.h \
+ /usr/include/c++/14/bits/unique_ptr.h \
+ /usr/include/c++/14/bits/uses_allocator.h \
+ /usr/include/c++/14/bits/utility.h \
+ /usr/include/c++/14/bits/version.h \
+ /usr/include/c++/14/cassert \
+ /usr/include/c++/14/cctype \
+ /usr/include/c++/14/cerrno \
+ /usr/include/c++/14/clocale \
+ /usr/include/c++/14/cstdint \
+ /usr/include/c++/14/cstdio \
+ /usr/include/c++/14/cstdlib \
+ /usr/include/c++/14/cstring \
+ /usr/include/c++/14/ctime \
+ /usr/include/c++/14/cwchar \
+ /usr/include/c++/14/cwctype \
+ /usr/include/c++/14/debug/assertions.h \
+ /usr/include/c++/14/debug/debug.h \
+ /usr/include/c++/14/exception \
+ /usr/include/c++/14/ext/aligned_buffer.h \
+ /usr/include/c++/14/ext/alloc_traits.h \
+ /usr/include/c++/14/ext/atomicity.h \
+ /usr/include/c++/14/ext/concurrence.h \
+ /usr/include/c++/14/ext/numeric_traits.h \
+ /usr/include/c++/14/ext/string_conversions.h \
+ /usr/include/c++/14/ext/type_traits.h \
+ /usr/include/c++/14/functional \
+ /usr/include/c++/14/initializer_list \
+ /usr/include/c++/14/iosfwd \
+ /usr/include/c++/14/iterator \
+ /usr/include/c++/14/locale \
+ /usr/include/c++/14/memory \
+ /usr/include/c++/14/new \
+ /usr/include/c++/14/stdexcept \
+ /usr/include/c++/14/streambuf \
+ /usr/include/c++/14/string \
+ /usr/include/c++/14/system_error \
+ /usr/include/c++/14/tuple \
+ /usr/include/c++/14/type_traits \
+ /usr/include/c++/14/typeinfo \
+ /usr/include/c++/14/utility \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/atomic_word.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++allocator.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++config.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++locale.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/cpu_defines.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/ctype_base.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/ctype_inline.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/error_constants.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/gthr-default.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/gthr.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/messages_members.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/os_defines.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/time_members.h \
/usr/include/ctype.h \
/usr/include/endian.h \
/usr/include/errno.h \
@@ -1554,9 +1568,9 @@ third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o: third_party/ur
/usr/include/time.h \
/usr/include/wchar.h \
/usr/include/wctype.h \
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdarg.h \
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stddef.h \
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdint.h \
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdarg.h \
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stddef.h \
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdint.h \
third_party/uri/include/network/optional.hpp \
third_party/uri/include/network/string_view.hpp \
third_party/uri/include/network/uri/config.hpp \
@@ -1626,73 +1640,74 @@ third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o: third_party/uri
/usr/include/bits/waitstatus.h \
/usr/include/bits/wchar.h \
/usr/include/bits/wordsize.h \
- /usr/include/c++/13/backward/binders.h \
- /usr/include/c++/13/bits/alloc_traits.h \
- /usr/include/c++/13/bits/allocator.h \
- /usr/include/c++/13/bits/basic_string.h \
- /usr/include/c++/13/bits/basic_string.tcc \
- /usr/include/c++/13/bits/char_traits.h \
- /usr/include/c++/13/bits/charconv.h \
- /usr/include/c++/13/bits/concept_check.h \
- /usr/include/c++/13/bits/cpp_type_traits.h \
- /usr/include/c++/13/bits/cxxabi_forced.h \
- /usr/include/c++/13/bits/cxxabi_init_exception.h \
- /usr/include/c++/13/bits/exception.h \
- /usr/include/c++/13/bits/exception_defines.h \
- /usr/include/c++/13/bits/exception_ptr.h \
- /usr/include/c++/13/bits/functexcept.h \
- /usr/include/c++/13/bits/functional_hash.h \
- /usr/include/c++/13/bits/hash_bytes.h \
- /usr/include/c++/13/bits/invoke.h \
- /usr/include/c++/13/bits/localefwd.h \
- /usr/include/c++/13/bits/memoryfwd.h \
- /usr/include/c++/13/bits/move.h \
- /usr/include/c++/13/bits/nested_exception.h \
- /usr/include/c++/13/bits/new_allocator.h \
- /usr/include/c++/13/bits/ostream_insert.h \
- /usr/include/c++/13/bits/postypes.h \
- /usr/include/c++/13/bits/predefined_ops.h \
- /usr/include/c++/13/bits/ptr_traits.h \
- /usr/include/c++/13/bits/range_access.h \
- /usr/include/c++/13/bits/refwrap.h \
- /usr/include/c++/13/bits/requires_hosted.h \
- /usr/include/c++/13/bits/std_abs.h \
- /usr/include/c++/13/bits/stl_algobase.h \
- /usr/include/c++/13/bits/stl_construct.h \
- /usr/include/c++/13/bits/stl_function.h \
- /usr/include/c++/13/bits/stl_iterator.h \
- /usr/include/c++/13/bits/stl_iterator_base_funcs.h \
- /usr/include/c++/13/bits/stl_iterator_base_types.h \
- /usr/include/c++/13/bits/stl_pair.h \
- /usr/include/c++/13/bits/stringfwd.h \
- /usr/include/c++/13/bits/utility.h \
- /usr/include/c++/13/cctype \
- /usr/include/c++/13/cerrno \
- /usr/include/c++/13/clocale \
- /usr/include/c++/13/cstdio \
- /usr/include/c++/13/cstdlib \
- /usr/include/c++/13/cwchar \
- /usr/include/c++/13/debug/assertions.h \
- /usr/include/c++/13/debug/debug.h \
- /usr/include/c++/13/exception \
- /usr/include/c++/13/ext/alloc_traits.h \
- /usr/include/c++/13/ext/numeric_traits.h \
- /usr/include/c++/13/ext/string_conversions.h \
- /usr/include/c++/13/ext/type_traits.h \
- /usr/include/c++/13/initializer_list \
- /usr/include/c++/13/iosfwd \
- /usr/include/c++/13/new \
- /usr/include/c++/13/stdexcept \
- /usr/include/c++/13/string \
- /usr/include/c++/13/system_error \
- /usr/include/c++/13/type_traits \
- /usr/include/c++/13/typeinfo \
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++allocator.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++config.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/c++locale.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/cpu_defines.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/error_constants.h \
- /usr/include/c++/13/x86_64-redhat-linux/bits/os_defines.h \
+ /usr/include/c++/14/backward/binders.h \
+ /usr/include/c++/14/bits/alloc_traits.h \
+ /usr/include/c++/14/bits/allocator.h \
+ /usr/include/c++/14/bits/basic_string.h \
+ /usr/include/c++/14/bits/basic_string.tcc \
+ /usr/include/c++/14/bits/char_traits.h \
+ /usr/include/c++/14/bits/charconv.h \
+ /usr/include/c++/14/bits/concept_check.h \
+ /usr/include/c++/14/bits/cpp_type_traits.h \
+ /usr/include/c++/14/bits/cxxabi_forced.h \
+ /usr/include/c++/14/bits/cxxabi_init_exception.h \
+ /usr/include/c++/14/bits/exception.h \
+ /usr/include/c++/14/bits/exception_defines.h \
+ /usr/include/c++/14/bits/exception_ptr.h \
+ /usr/include/c++/14/bits/functexcept.h \
+ /usr/include/c++/14/bits/functional_hash.h \
+ /usr/include/c++/14/bits/hash_bytes.h \
+ /usr/include/c++/14/bits/invoke.h \
+ /usr/include/c++/14/bits/localefwd.h \
+ /usr/include/c++/14/bits/memoryfwd.h \
+ /usr/include/c++/14/bits/move.h \
+ /usr/include/c++/14/bits/nested_exception.h \
+ /usr/include/c++/14/bits/new_allocator.h \
+ /usr/include/c++/14/bits/ostream_insert.h \
+ /usr/include/c++/14/bits/postypes.h \
+ /usr/include/c++/14/bits/predefined_ops.h \
+ /usr/include/c++/14/bits/ptr_traits.h \
+ /usr/include/c++/14/bits/range_access.h \
+ /usr/include/c++/14/bits/refwrap.h \
+ /usr/include/c++/14/bits/requires_hosted.h \
+ /usr/include/c++/14/bits/std_abs.h \
+ /usr/include/c++/14/bits/stl_algobase.h \
+ /usr/include/c++/14/bits/stl_construct.h \
+ /usr/include/c++/14/bits/stl_function.h \
+ /usr/include/c++/14/bits/stl_iterator.h \
+ /usr/include/c++/14/bits/stl_iterator_base_funcs.h \
+ /usr/include/c++/14/bits/stl_iterator_base_types.h \
+ /usr/include/c++/14/bits/stl_pair.h \
+ /usr/include/c++/14/bits/stringfwd.h \
+ /usr/include/c++/14/bits/utility.h \
+ /usr/include/c++/14/bits/version.h \
+ /usr/include/c++/14/cctype \
+ /usr/include/c++/14/cerrno \
+ /usr/include/c++/14/clocale \
+ /usr/include/c++/14/cstdio \
+ /usr/include/c++/14/cstdlib \
+ /usr/include/c++/14/cwchar \
+ /usr/include/c++/14/debug/assertions.h \
+ /usr/include/c++/14/debug/debug.h \
+ /usr/include/c++/14/exception \
+ /usr/include/c++/14/ext/alloc_traits.h \
+ /usr/include/c++/14/ext/numeric_traits.h \
+ /usr/include/c++/14/ext/string_conversions.h \
+ /usr/include/c++/14/ext/type_traits.h \
+ /usr/include/c++/14/initializer_list \
+ /usr/include/c++/14/iosfwd \
+ /usr/include/c++/14/new \
+ /usr/include/c++/14/stdexcept \
+ /usr/include/c++/14/string \
+ /usr/include/c++/14/system_error \
+ /usr/include/c++/14/type_traits \
+ /usr/include/c++/14/typeinfo \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++allocator.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++config.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/c++locale.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/cpu_defines.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/error_constants.h \
+ /usr/include/c++/14/x86_64-redhat-linux/bits/os_defines.h \
/usr/include/ctype.h \
/usr/include/endian.h \
/usr/include/errno.h \
@@ -1709,187 +1724,181 @@ third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o: third_party/uri
/usr/include/sys/select.h \
/usr/include/sys/types.h \
/usr/include/wchar.h \
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stdarg.h \
- /usr/lib/gcc/x86_64-redhat-linux/13/include/stddef.h \
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stdarg.h \
+ /usr/lib/gcc/x86_64-redhat-linux/14/include/stddef.h \
third_party/uri/include/network/uri/config.hpp \
third_party/uri/include/network/uri/uri_errors.hpp
-third_party/uri/src/uri_errors.cpp:
+third_party/uri/src/uri_builder.cpp:
third_party/uri/src/uri.cpp:
-third_party/uri/src/detail/algorithm_find.hpp:
+third_party/uri/src/detail/uri_resolve.hpp:
-third_party/uri/src/detail/uri_resolve.cpp:
+third_party/uri/src/detail/algorithm_find.hpp:
third_party/uri/src/detail/uri_parse_authority.hpp:
+third_party/uri/src/detail/uri_parse.hpp:
+
third_party/uri/src/detail/grammar.hpp:
third_party/uri/src/detail/uri_parse.cpp:
-third_party/uri/src/detail/uri_percent_encode.hpp:
-
-third_party/uri/src/detail/algorithm_split.hpp:
+third_party/uri/src/detail/algorithm.hpp:
third_party/uri/include/network/uri/uri_errors.hpp:
+third_party/uri/include/network/uri/uri_builder.hpp:
+
third_party/uri/include/network/uri/uri.hpp:
+third_party/uri/include/network/uri/detail/encode.hpp:
+
third_party/uri/include/network/uri/config.hpp:
/usr/include/string.h:
-/usr/include/c++/13/x86_64-redhat-linux/bits/ctype_inline.h:
+/usr/include/c++/14/x86_64-redhat-linux/bits/ctype_base.h:
-/usr/include/c++/13/x86_64-redhat-linux/bits/ctype_base.h:
+/usr/include/c++/14/locale:
-/usr/include/c++/13/vector:
+/usr/include/c++/14/cwctype:
-third_party/uri/src/detail/algorithm.hpp:
+/usr/include/c++/14/ctime:
-/usr/include/c++/13/ctime:
+/usr/include/c++/14/cstdint:
-/usr/include/c++/13/cstring:
+/usr/include/c++/14/x86_64-redhat-linux/bits/messages_members.h:
-/usr/include/c++/13/bits/locale_facets_nonio.h:
+/usr/include/c++/14/bits/vector.tcc:
-/usr/include/c++/13/bits/locale_facets.h:
+third_party/uri/src/detail/uri_percent_encode.hpp:
-/usr/include/c++/13/bits/locale_conv.h:
+/usr/include/c++/14/bits/stl_vector.h:
-third_party/uri/src/detail/uri_normalize.cpp:
+/usr/include/c++/14/bits/stl_bvector.h:
-/usr/include/c++/13/x86_64-redhat-linux/bits/time_members.h:
+/usr/include/c++/14/bits/std_function.h:
-third_party/uri/include/network/uri/detail/uri_parts.hpp:
+/usr/include/c++/14/x86_64-redhat-linux/bits/time_members.h:
-third_party/uri/include/network/optional.hpp:
+/usr/include/c++/14/bits/locale_facets_nonio.tcc:
-/usr/lib/gcc/x86_64-redhat-linux/13/include/stdint.h:
+/usr/include/c++/14/bits/codecvt.h:
-/usr/lib/gcc/x86_64-redhat-linux/13/include/stddef.h:
+third_party/uri/include/network/uri/detail/uri_parts.hpp:
-/usr/lib/gcc/x86_64-redhat-linux/13/include/stdarg.h:
+third_party/uri/include/network/optional.hpp:
/usr/include/wchar.h:
+/usr/include/time.h:
+
/usr/include/sys/single_threaded.h:
/usr/include/sys/cdefs.h:
-/usr/include/stdlib.h:
+/usr/include/c++/14/bits/locale_facets.tcc:
/usr/include/stdio.h:
-/usr/include/stdint.h:
-
/usr/include/stdc-predef.h:
/usr/include/sched.h:
-/usr/include/pthread.h:
-
/usr/include/linux/errno.h:
-/usr/include/features-time64.h:
-
-/usr/include/c++/13/x86_64-redhat-linux/bits/gthr-default.h:
+/usr/include/c++/14/x86_64-redhat-linux/bits/os_defines.h:
-/usr/include/c++/13/x86_64-redhat-linux/bits/cpu_defines.h:
+/usr/include/c++/14/x86_64-redhat-linux/bits/gthr.h:
-/usr/include/strings.h:
+/usr/include/c++/14/x86_64-redhat-linux/bits/error_constants.h:
-/usr/include/c++/13/x86_64-redhat-linux/bits/c++locale.h:
+/usr/include/locale.h:
-/usr/include/bits/wctype-wchar.h:
+/usr/include/c++/14/x86_64-redhat-linux/bits/c++config.h:
-/usr/include/sys/types.h:
+/usr/include/sys/select.h:
-/usr/include/c++/13/x86_64-redhat-linux/bits/atomic_word.h:
+/usr/include/c++/14/x86_64-redhat-linux/bits/c++allocator.h:
-/usr/include/c++/13/bits/locale_facets_nonio.tcc:
+/usr/include/c++/14/typeinfo:
-/usr/include/c++/13/utility:
+/usr/include/c++/14/type_traits:
-/usr/include/c++/13/type_traits:
+/usr/lib/gcc/x86_64-redhat-linux/14/include/stddef.h:
-third_party/uri/include/network/uri/detail/encode.hpp:
+/usr/include/c++/14/tuple:
-/usr/include/c++/13/tuple:
+/usr/include/c++/14/string:
-/usr/include/c++/13/stdexcept:
+/usr/include/bits/wctype-wchar.h:
-/usr/include/c++/13/memory:
+/usr/include/sys/types.h:
-/usr/include/c++/13/limits:
+/usr/include/c++/14/memory:
-/usr/include/c++/13/iterator:
+/usr/include/c++/14/bits/locale_conv.h:
-/usr/include/c++/13/initializer_list:
+/usr/include/c++/14/iosfwd:
-/usr/include/c++/13/ext/type_traits.h:
+/usr/include/c++/14/initializer_list:
-/usr/include/c++/13/x86_64-redhat-linux/bits/c++allocator.h:
+/usr/include/c++/14/ext/type_traits.h:
-/usr/include/c++/13/ext/string_conversions.h:
+/usr/include/c++/14/ext/string_conversions.h:
-/usr/include/c++/13/ext/numeric_traits.h:
+/usr/lib/gcc/x86_64-redhat-linux/14/include/stdarg.h:
-third_party/uri/src/detail/uri_resolve.hpp:
+/usr/include/c++/14/ext/atomicity.h:
-/usr/include/c++/13/ext/concurrence.h:
+/usr/include/c++/14/ext/alloc_traits.h:
-/usr/include/c++/13/new:
+/usr/include/c++/14/new:
-/usr/include/c++/13/ext/alloc_traits.h:
+/usr/include/c++/14/ext/aligned_buffer.h:
-/usr/include/locale.h:
+/usr/include/errno.h:
-/usr/include/c++/13/ext/aligned_buffer.h:
+/usr/include/c++/14/debug/debug.h:
-/usr/include/gnu/stubs-64.h:
+/usr/include/c++/14/debug/assertions.h:
-/usr/include/c++/13/debug/debug.h:
+/usr/include/c++/14/cstdio:
-/usr/include/c++/13/debug/assertions.h:
+/usr/include/c++/14/cerrno:
-/usr/include/c++/13/cwchar:
+/usr/include/c++/14/bits/version.h:
-/usr/include/c++/13/cstdint:
+/usr/include/c++/14/bits/utility.h:
-/usr/include/c++/13/bits/std_function.h:
+third_party/uri/src/uri_errors.cpp:
-/usr/include/c++/13/cstdlib:
+/usr/include/c++/14/bits/uses_allocator.h:
-/usr/include/c++/13/bits/uniform_int_dist.h:
+/usr/include/c++/14/limits:
-/usr/include/c++/13/bits/stringfwd.h:
+/usr/include/c++/14/bits/unique_ptr.h:
-/usr/include/c++/13/cassert:
+/usr/include/gnu/stubs-64.h:
-/usr/include/bits/types/time_t.h:
+/usr/include/c++/14/bits/stringfwd.h:
-/usr/include/c++/13/cerrno:
+/usr/include/c++/14/bits/locale_facets.h:
-/usr/include/bits/types/struct_tm.h:
+/usr/include/c++/14/bits/streambuf.tcc:
-/usr/include/c++/13/ext/atomicity.h:
+/usr/include/c++/14/streambuf:
-/usr/include/c++/13/cctype:
+/usr/include/bits/types/struct_tm.h:
/usr/include/bits/wchar.h:
-/usr/include/bits/types/struct_timespec.h:
-
-/usr/include/c++/13/bits/stl_bvector.h:
-
-/usr/include/sys/select.h:
-
-/usr/include/c++/13/bits/allocator.h:
+/usr/include/c++/14/bits/stl_construct.h:
-/usr/include/c++/13/bits/locale_classes.tcc:
+/usr/include/bits/types/struct_timespec.h:
/usr/include/bits/types/struct_sched_param.h:
@@ -1897,81 +1906,93 @@ third_party/uri/src/detail/uri_resolve.hpp:
/usr/include/bits/waitflags.h:
-third_party/uri/src/uri_builder.cpp:
-
-/usr/include/c++/13/locale:
-
-/usr/include/c++/13/bits/stl_uninitialized.h:
-
/usr/include/bits/types/struct_FILE.h:
-/usr/include/bits/types/locale_t.h:
-
-/usr/include/c++/13/x86_64-redhat-linux/bits/os_defines.h:
-
-/usr/include/c++/13/bits/stl_heap.h:
-
/usr/include/bits/types/cookie_io_functions_t.h:
/usr/include/bits/sched.h:
/usr/include/bits/types/clockid_t.h:
-/usr/include/bits/atomic_wide_counter.h:
+/usr/include/c++/14/x86_64-redhat-linux/bits/gthr-default.h:
-/usr/include/c++/13/clocale:
+/usr/include/bits/atomic_wide_counter.h:
-/usr/include/c++/13/bits/allocated_ptr.h:
+/usr/include/c++/14/bits/cxxabi_init_exception.h:
-/usr/include/bits/types/__locale_t.h:
+/usr/include/c++/14/bits/streambuf_iterator.h:
/usr/include/bits/types/__FILE.h:
-/usr/include/c++/13/bits/char_traits.h:
+/usr/include/c++/14/bits/align.h:
-/usr/include/c++/13/bits/codecvt.h:
+/usr/include/c++/14/utility:
/usr/include/bits/types/FILE.h:
+/usr/include/c++/14/bits/exception_ptr.h:
+
/usr/include/bits/types.h:
+/usr/include/endian.h:
+
+/usr/include/c++/14/bits/localefwd.h:
+
/usr/include/bits/types/error_t.h:
/usr/include/bits/stdint-intn.h:
+/usr/include/c++/14/system_error:
+
+/usr/include/c++/14/cstdlib:
+
+/usr/include/bits/endian.h:
+
third_party/uri/include/network/uri/detail/translate.hpp:
/usr/include/asm/errno.h:
-/usr/include/bits/thread-shared-types.h:
+/usr/include/stdint.h:
-/usr/include/features.h:
+/usr/include/c++/14/bits/cxxabi_forced.h:
-/usr/include/bits/endianness.h:
+/usr/include/bits/types/time_t.h:
+
+/usr/include/c++/14/bits/atomic_base.h:
+
+/usr/include/libintl.h:
+
+/usr/include/c++/14/bits/stl_uninitialized.h:
+
+/usr/include/bits/floatn-common.h:
-/usr/include/c++/13/bits/unique_ptr.h:
+/usr/include/stdlib.h:
-/usr/include/c++/13/bits/align.h:
+/usr/include/c++/14/algorithm:
/usr/include/bits/struct_mutex.h:
-/usr/include/c++/13/bits/stl_vector.h:
+/usr/include/c++/14/bits/locale_classes.h:
+
+/usr/include/c++/14/bits/new_allocator.h:
+
+/usr/include/c++/14/cstddef:
/usr/include/bits/cpu-set.h:
-/usr/include/bits/typesizes.h:
+/usr/include/c++/14/x86_64-redhat-linux/bits/ctype_inline.h:
+
+/usr/include/c++/14/bits/nested_exception.h:
/usr/include/bits/uintn-identity.h:
-/usr/include/c++/13/iosfwd:
+/usr/include/c++/14/cctype:
-/usr/include/c++/13/bits/predefined_ops.h:
+/usr/include/c++/14/bits/exception.h:
/usr/include/bits/long-double.h:
-/usr/include/bits/stdlib-float.h:
-
-/usr/include/bits/time64.h:
+/usr/include/c++/14/bits/shared_ptr.h:
/usr/include/bits/stdio_lim.h:
@@ -1979,44 +2000,18 @@ third_party/uri/include/network/uri/detail/translate.hpp:
/usr/include/bits/time.h:
-third_party/uri/src/detail/uri_advance_parts.hpp:
-
-/usr/include/c++/13/string:
-
-/usr/include/bits/byteswap.h:
+/usr/include/c++/14/exception:
/usr/include/bits/struct_rwlock.h:
/usr/include/bits/types/struct_itimerspec.h:
-/usr/include/c++/13/bits/ptr_traits.h:
-
-/usr/include/c++/13/bits/stl_construct.h:
-
-/usr/include/c++/13/x86_64-redhat-linux/bits/c++config.h:
-
-/usr/include/alloca.h:
-
-/usr/include/c++/13/x86_64-redhat-linux/bits/messages_members.h:
-
-/usr/include/c++/13/bit:
-
-/usr/include/c++/13/bits/basic_string.tcc:
-
-/usr/include/c++/13/bits/vector.tcc:
+/usr/include/bits/types/__sigset_t.h:
/usr/include/bits/locale.h:
-/usr/include/c++/13/algorithm:
-
-/usr/include/c++/13/bits/stl_raw_storage_iter.h:
-
-/usr/include/c++/13/bits/stream_iterator.h:
-
third_party/uri/src/detail/uri_parse_authority.cpp:
-/usr/include/c++/13/functional:
-
/usr/include/bits/setjmp.h:
/usr/include/bits/types/struct___jmp_buf_tag.h:
@@ -2025,194 +2020,218 @@ third_party/uri/src/detail/uri_parse_authority.cpp:
/usr/include/bits/types/__fpos_t.h:
-/usr/include/c++/13/bits/stl_iterator_base_types.h:
-
-/usr/include/asm-generic/errno-base.h:
+/usr/include/c++/14/bits/predefined_ops.h:
-/usr/include/c++/13/bits/hash_bytes.h:
+/usr/include/asm-generic/errno.h:
-/usr/include/assert.h:
+/usr/include/c++/14/bits/stl_function.h:
-/usr/include/bits/types/__sigset_t.h:
+/usr/include/c++/14/cassert:
-/usr/include/c++/13/backward/auto_ptr.h:
+/usr/include/assert.h:
third_party/uri/src/detail/uri_normalize.hpp:
-third_party/uri/src/detail/uri_advance_parts.cpp:
+/usr/include/c++/14/ext/concurrence.h:
-/usr/include/c++/13/bits/ios_base.h:
+third_party/uri/src/detail/uri_advance_parts.cpp:
/usr/include/bits/floatn.h:
-/usr/include/bits/pthreadtypes.h:
-
/usr/include/bits/libc-header-start.h:
-/usr/include/wctype.h:
+/usr/include/features-time64.h:
+
+/usr/include/c++/14/bits/stl_relops.h:
-/usr/include/c++/13/exception:
+/usr/include/wctype.h:
/usr/include/bits/errno.h:
/usr/include/bits/timex.h:
-/usr/include/c++/13/bits/shared_ptr_atomic.h:
+/usr/include/c++/14/bits/locale_facets_nonio.h:
+
+/usr/include/c++/14/x86_64-redhat-linux/bits/c++locale.h:
/usr/include/bits/pthread_stack_min-dynamic.h:
-/usr/include/endian.h:
+/usr/include/bits/types/struct_timeval.h:
-/usr/include/c++/13/bits/streambuf.tcc:
+/usr/include/c++/14/bits/stl_raw_storage_iter.h:
third_party/uri/include/network/uri/detail/decode.hpp:
+/usr/lib/gcc/x86_64-redhat-linux/14/include/stdint.h:
+
/usr/include/gnu/stubs.h:
+/usr/include/c++/14/x86_64-redhat-linux/bits/atomic_word.h:
+
/usr/include/bits/pthreadtypes-arch.h:
-/usr/include/libintl.h:
+/usr/include/c++/14/bits/invoke.h:
-/usr/include/c++/13/bits/basic_string.h:
+/usr/include/bits/types/__fpos64_t.h:
-/usr/include/bits/stdio.h:
+/usr/include/bits/select.h:
-/usr/include/bits/types/timer_t.h:
+/usr/include/c++/14/cstring:
-/usr/include/c++/13/cwctype:
+/usr/include/c++/14/stdexcept:
-/usr/include/bits/types/wint_t.h:
+/usr/include/c++/14/cwchar:
-/usr/include/bits/timesize.h:
+/usr/include/c++/14/bits/charconv.h:
-/usr/include/c++/13/bits/shared_ptr.h:
+/usr/include/alloca.h:
-/usr/include/bits/waitstatus.h:
+/usr/include/bits/types/locale_t.h:
-/usr/include/c++/13/bits/streambuf_iterator.h:
+/usr/include/c++/14/bits/ptr_traits.h:
-/usr/include/bits/wordsize.h:
+/usr/include/bits/stdint-least.h:
-third_party/uri/include/network/string_view.hpp:
+/usr/include/bits/stdlib-bsearch.h:
-/usr/include/bits/types/sigset_t.h:
+/usr/include/bits/types/mbstate_t.h:
-/usr/include/c++/13/bits/move.h:
+/usr/include/c++/14/bits/shared_ptr_atomic.h:
-third_party/uri/src/detail/uri_parse.hpp:
+/usr/include/c++/14/bits/functional_hash.h:
-/usr/include/c++/13/bits/utility.h:
+/usr/include/bits/types/timer_t.h:
-/usr/include/c++/13/bits/stl_function.h:
+/usr/include/bits/thread-shared-types.h:
-/usr/include/bits/select.h:
+/usr/include/c++/14/bits/stl_pair.h:
-/usr/include/c++/13/backward/binders.h:
+/usr/include/bits/types/wint_t.h:
-/usr/include/c++/13/bits/algorithmfwd.h:
+/usr/include/c++/14/bits/range_access.h:
-/usr/include/bits/types/struct_timeval.h:
+/usr/include/bits/timesize.h:
-/usr/include/c++/13/bits/concept_check.h:
+/usr/include/bits/waitstatus.h:
-/usr/include/c++/13/bits/alloc_traits.h:
+/usr/include/c++/14/vector:
-/usr/include/c++/13/x86_64-redhat-linux/bits/gthr.h:
+/usr/include/c++/14/bits/uniform_int_dist.h:
-/usr/include/bits/types/mbstate_t.h:
+/usr/include/c++/14/bits/shared_ptr_base.h:
-/usr/include/c++/13/bits/atomic_lockfree_defines.h:
+/usr/include/bits/wordsize.h:
-/usr/include/c++/13/bits/cpp_type_traits.h:
+/usr/include/c++/14/bits/allocator.h:
-/usr/include/c++/13/bits/cxxabi_forced.h:
+/usr/include/bits/stdlib-float.h:
-/usr/include/c++/13/typeinfo:
+/usr/include/bits/time64.h:
-/usr/include/c++/13/bits/cxxabi_init_exception.h:
+/usr/include/c++/14/backward/binders.h:
-/usr/include/c++/13/streambuf:
+/usr/include/c++/14/bit:
-/usr/include/c++/13/bits/exception.h:
+/usr/include/bits/typesizes.h:
-/usr/include/c++/13/cstdio:
+/usr/include/c++/14/bits/algorithmfwd.h:
-/usr/include/c++/13/bits/charconv.h:
+/usr/include/c++/14/bits/ostream_insert.h:
-/usr/include/c++/13/bits/stl_pair.h:
+/usr/include/c++/14/bits/alloc_traits.h:
-third_party/uri/include/network/uri/uri_builder.hpp:
+third_party/uri/src/detail/uri_advance_parts.hpp:
-/usr/include/c++/13/bits/exception_defines.h:
+/usr/include/bits/byteswap.h:
-/usr/include/c++/13/bits/localefwd.h:
+/usr/include/c++/14/bits/allocated_ptr.h:
-/usr/include/c++/13/bits/exception_ptr.h:
+/usr/include/c++/14/bits/stl_iterator.h:
-/usr/include/c++/13/bits/stl_iterator.h:
+/usr/include/asm-generic/errno-base.h:
-/usr/include/bits/types/__fpos64_t.h:
+/usr/include/c++/14/bits/stl_algobase.h:
-/usr/include/c++/13/bits/functexcept.h:
+/usr/include/c++/14/x86_64-redhat-linux/bits/cpu_defines.h:
-/usr/include/errno.h:
+/usr/include/c++/14/bits/atomic_lockfree_defines.h:
-/usr/include/c++/13/bits/functional_hash.h:
+/usr/include/bits/pthreadtypes.h:
-/usr/include/c++/13/bits/invoke.h:
+/usr/include/c++/14/bits/basic_string.h:
-/usr/include/c++/13/bits/locale_classes.h:
+/usr/include/c++/14/clocale:
-/usr/include/time.h:
+/usr/include/c++/14/bits/basic_string.tcc:
-/usr/include/c++/13/bits/memoryfwd.h:
+/usr/include/pthread.h:
-/usr/include/c++/13/bits/nested_exception.h:
+/usr/include/c++/14/bits/functexcept.h:
-/usr/include/c++/13/bits/atomic_base.h:
+/usr/include/c++/14/bits/concept_check.h:
-/usr/include/c++/13/bits/new_allocator.h:
+/usr/include/c++/14/bits/cpp_type_traits.h:
-/usr/include/c++/13/bits/ostream_insert.h:
+/usr/include/c++/14/bits/exception_defines.h:
-/usr/include/c++/13/system_error:
+/usr/include/c++/14/bits/char_traits.h:
-/usr/include/c++/13/bits/range_access.h:
+/usr/include/c++/14/bits/hash_bytes.h:
-/usr/include/bits/stdint-uintn.h:
+/usr/include/bits/types/__locale_t.h:
-/usr/include/c++/13/bits/refwrap.h:
+/usr/include/c++/14/bits/ios_base.h:
-/usr/include/c++/13/bits/locale_facets.tcc:
+/usr/include/c++/14/bits/locale_classes.tcc:
-/usr/include/bits/stdlib-bsearch.h:
+third_party/uri/include/network/string_view.hpp:
-/usr/include/c++/13/bits/requires_hosted.h:
+/usr/include/c++/14/backward/auto_ptr.h:
-/usr/include/bits/floatn-common.h:
+/usr/include/bits/types/sigset_t.h:
+
+/usr/include/c++/14/bits/move.h:
-/usr/include/c++/13/bits/shared_ptr_base.h:
+third_party/uri/src/detail/uri_resolve.cpp:
-/usr/include/c++/13/x86_64-redhat-linux/bits/error_constants.h:
+/usr/include/c++/14/bits/memoryfwd.h:
-/usr/include/c++/13/bits/uses_allocator.h:
+/usr/include/c++/14/bits/postypes.h:
-/usr/include/c++/13/bits/postypes.h:
+third_party/uri/src/detail/algorithm_split.hpp:
-/usr/include/c++/13/bits/std_abs.h:
+/usr/include/c++/14/bits/refwrap.h:
-/usr/include/c++/13/cstddef:
+/usr/include/strings.h:
-/usr/include/c++/13/bits/stl_algo.h:
+/usr/include/c++/14/bits/requires_hosted.h:
-/usr/include/c++/13/bits/stl_algobase.h:
+third_party/uri/src/detail/uri_normalize.cpp:
-/usr/include/asm-generic/errno.h:
+/usr/include/c++/14/bits/std_abs.h:
-/usr/include/c++/13/bits/stl_iterator_base_funcs.h:
+/usr/include/c++/14/bits/stl_algo.h:
-/usr/include/c++/13/bits/stl_relops.h:
+/usr/include/c++/14/functional:
-/usr/include/bits/endian.h:
+/usr/include/features.h:
+
+/usr/include/c++/14/iterator:
+
+/usr/include/bits/endianness.h:
+
+/usr/include/c++/14/bits/stl_heap.h:
+
+/usr/include/c++/14/ext/numeric_traits.h:
+
+/usr/include/bits/stdint-uintn.h:
+
+/usr/include/c++/14/bits/stl_iterator_base_funcs.h:
+
+/usr/include/bits/stdio.h:
+
+/usr/include/c++/14/bits/stl_iterator_base_types.h:
+
+/usr/include/c++/14/bits/stl_tempbuf.h:
-/usr/include/c++/13/bits/stl_tempbuf.h:
+/usr/include/c++/14/bits/stream_iterator.h:
diff --git a/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/flags.make b/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/flags.make
index bc29220fff..abe8aebb87 100644
--- a/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/flags.make
+++ b/graphics/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/flags.make
@@ -1,10 +1,10 @@
# CMAKE generated file: DO NOT EDIT!
-# Generated by "Unix Makefiles" Generator, CMake Version 3.27
+# Generated by "Unix Makefiles" Generator, CMake Version 3.28
# compile CXX with /bin/c++
CXX_DEFINES =
-CXX_INCLUDES = -I/usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src -I/usr/local/src/asymptote-2.89/LspCpp/third_party/uri/include
+CXX_INCLUDES = -I/usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src -I/usr/local/src/asymptote-2.90/LspCpp/third_party/uri/include
CXX_FLAGS = -fPIE -D_FILE_OFFSET_BIS=64 -DUSEGC -DLSPCPP_USEGC -I../gc-8.2.4/include -std=c++11 -Wall -Werror -Wno-parentheses -O2 -g -DNDEBUG
diff --git a/graphics/asymptote/LspCpp/third_party/uri/src/Makefile b/graphics/asymptote/LspCpp/third_party/uri/src/Makefile
index 8907cafad6..7948b3894d 100644
--- a/graphics/asymptote/LspCpp/third_party/uri/src/Makefile
+++ b/graphics/asymptote/LspCpp/third_party/uri/src/Makefile
@@ -1,5 +1,5 @@
# CMAKE generated file: DO NOT EDIT!
-# Generated by "Unix Makefiles" Generator, CMake Version 3.27
+# Generated by "Unix Makefiles" Generator, CMake Version 3.28
# Default target executed when no arguments are given to make.
default_target: all
@@ -60,10 +60,10 @@ RM = /usr/bin/cmake -E rm -f
EQUALS = =
# The top-level source directory on which CMake was run.
-CMAKE_SOURCE_DIR = /usr/local/src/asymptote-2.89/LspCpp
+CMAKE_SOURCE_DIR = /usr/local/src/asymptote-2.90/LspCpp
# The top-level build directory on which CMake was run.
-CMAKE_BINARY_DIR = /usr/local/src/asymptote-2.89/LspCpp
+CMAKE_BINARY_DIR = /usr/local/src/asymptote-2.90/LspCpp
#=============================================================================
# Targets provided globally by CMake.
@@ -135,14 +135,14 @@ install/strip/fast: preinstall/fast
# The main all target
all: cmake_check_build_system
- cd /usr/local/src/asymptote-2.89/LspCpp && $(CMAKE_COMMAND) -E cmake_progress_start /usr/local/src/asymptote-2.89/LspCpp/CMakeFiles /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src//CMakeFiles/progress.marks
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/src/all
- $(CMAKE_COMMAND) -E cmake_progress_start /usr/local/src/asymptote-2.89/LspCpp/CMakeFiles 0
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(CMAKE_COMMAND) -E cmake_progress_start /usr/local/src/asymptote-2.90/LspCpp/CMakeFiles /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src//CMakeFiles/progress.marks
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/src/all
+ $(CMAKE_COMMAND) -E cmake_progress_start /usr/local/src/asymptote-2.90/LspCpp/CMakeFiles 0
.PHONY : all
# The main clean target
clean:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/src/clean
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/src/clean
.PHONY : clean
# The main clean target
@@ -151,22 +151,22 @@ clean/fast: clean
# Prepare targets for installation.
preinstall: all
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/src/preinstall
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/src/preinstall
.PHONY : preinstall
# Prepare targets for installation.
preinstall/fast:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/src/preinstall
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/src/preinstall
.PHONY : preinstall/fast
# clear depends
depend:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1
.PHONY : depend
# Convenience name for target.
third_party/uri/src/CMakeFiles/network-uri.dir/rule:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/src/CMakeFiles/network-uri.dir/rule
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/src/CMakeFiles/network-uri.dir/rule
.PHONY : third_party/uri/src/CMakeFiles/network-uri.dir/rule
# Convenience name for target.
@@ -175,7 +175,7 @@ network-uri: third_party/uri/src/CMakeFiles/network-uri.dir/rule
# fast build rule for target.
network-uri/fast:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/build
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/build
.PHONY : network-uri/fast
detail/uri_advance_parts.o: detail/uri_advance_parts.cpp.o
@@ -183,7 +183,7 @@ detail/uri_advance_parts.o: detail/uri_advance_parts.cpp.o
# target to build an object file
detail/uri_advance_parts.cpp.o:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o
.PHONY : detail/uri_advance_parts.cpp.o
detail/uri_advance_parts.i: detail/uri_advance_parts.cpp.i
@@ -191,7 +191,7 @@ detail/uri_advance_parts.i: detail/uri_advance_parts.cpp.i
# target to preprocess a source file
detail/uri_advance_parts.cpp.i:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.i
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.i
.PHONY : detail/uri_advance_parts.cpp.i
detail/uri_advance_parts.s: detail/uri_advance_parts.cpp.s
@@ -199,7 +199,7 @@ detail/uri_advance_parts.s: detail/uri_advance_parts.cpp.s
# target to generate assembly for a file
detail/uri_advance_parts.cpp.s:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.s
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.s
.PHONY : detail/uri_advance_parts.cpp.s
detail/uri_normalize.o: detail/uri_normalize.cpp.o
@@ -207,7 +207,7 @@ detail/uri_normalize.o: detail/uri_normalize.cpp.o
# target to build an object file
detail/uri_normalize.cpp.o:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o
.PHONY : detail/uri_normalize.cpp.o
detail/uri_normalize.i: detail/uri_normalize.cpp.i
@@ -215,7 +215,7 @@ detail/uri_normalize.i: detail/uri_normalize.cpp.i
# target to preprocess a source file
detail/uri_normalize.cpp.i:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.i
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.i
.PHONY : detail/uri_normalize.cpp.i
detail/uri_normalize.s: detail/uri_normalize.cpp.s
@@ -223,7 +223,7 @@ detail/uri_normalize.s: detail/uri_normalize.cpp.s
# target to generate assembly for a file
detail/uri_normalize.cpp.s:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.s
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.s
.PHONY : detail/uri_normalize.cpp.s
detail/uri_parse.o: detail/uri_parse.cpp.o
@@ -231,7 +231,7 @@ detail/uri_parse.o: detail/uri_parse.cpp.o
# target to build an object file
detail/uri_parse.cpp.o:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o
.PHONY : detail/uri_parse.cpp.o
detail/uri_parse.i: detail/uri_parse.cpp.i
@@ -239,7 +239,7 @@ detail/uri_parse.i: detail/uri_parse.cpp.i
# target to preprocess a source file
detail/uri_parse.cpp.i:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.i
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.i
.PHONY : detail/uri_parse.cpp.i
detail/uri_parse.s: detail/uri_parse.cpp.s
@@ -247,7 +247,7 @@ detail/uri_parse.s: detail/uri_parse.cpp.s
# target to generate assembly for a file
detail/uri_parse.cpp.s:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.s
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.s
.PHONY : detail/uri_parse.cpp.s
detail/uri_parse_authority.o: detail/uri_parse_authority.cpp.o
@@ -255,7 +255,7 @@ detail/uri_parse_authority.o: detail/uri_parse_authority.cpp.o
# target to build an object file
detail/uri_parse_authority.cpp.o:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o
.PHONY : detail/uri_parse_authority.cpp.o
detail/uri_parse_authority.i: detail/uri_parse_authority.cpp.i
@@ -263,7 +263,7 @@ detail/uri_parse_authority.i: detail/uri_parse_authority.cpp.i
# target to preprocess a source file
detail/uri_parse_authority.cpp.i:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.i
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.i
.PHONY : detail/uri_parse_authority.cpp.i
detail/uri_parse_authority.s: detail/uri_parse_authority.cpp.s
@@ -271,7 +271,7 @@ detail/uri_parse_authority.s: detail/uri_parse_authority.cpp.s
# target to generate assembly for a file
detail/uri_parse_authority.cpp.s:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.s
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.s
.PHONY : detail/uri_parse_authority.cpp.s
detail/uri_resolve.o: detail/uri_resolve.cpp.o
@@ -279,7 +279,7 @@ detail/uri_resolve.o: detail/uri_resolve.cpp.o
# target to build an object file
detail/uri_resolve.cpp.o:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o
.PHONY : detail/uri_resolve.cpp.o
detail/uri_resolve.i: detail/uri_resolve.cpp.i
@@ -287,7 +287,7 @@ detail/uri_resolve.i: detail/uri_resolve.cpp.i
# target to preprocess a source file
detail/uri_resolve.cpp.i:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.i
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.i
.PHONY : detail/uri_resolve.cpp.i
detail/uri_resolve.s: detail/uri_resolve.cpp.s
@@ -295,7 +295,7 @@ detail/uri_resolve.s: detail/uri_resolve.cpp.s
# target to generate assembly for a file
detail/uri_resolve.cpp.s:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.s
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.s
.PHONY : detail/uri_resolve.cpp.s
uri.o: uri.cpp.o
@@ -303,7 +303,7 @@ uri.o: uri.cpp.o
# target to build an object file
uri.cpp.o:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o
.PHONY : uri.cpp.o
uri.i: uri.cpp.i
@@ -311,7 +311,7 @@ uri.i: uri.cpp.i
# target to preprocess a source file
uri.cpp.i:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.i
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.i
.PHONY : uri.cpp.i
uri.s: uri.cpp.s
@@ -319,7 +319,7 @@ uri.s: uri.cpp.s
# target to generate assembly for a file
uri.cpp.s:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.s
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.s
.PHONY : uri.cpp.s
uri_builder.o: uri_builder.cpp.o
@@ -327,7 +327,7 @@ uri_builder.o: uri_builder.cpp.o
# target to build an object file
uri_builder.cpp.o:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o
.PHONY : uri_builder.cpp.o
uri_builder.i: uri_builder.cpp.i
@@ -335,7 +335,7 @@ uri_builder.i: uri_builder.cpp.i
# target to preprocess a source file
uri_builder.cpp.i:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.i
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.i
.PHONY : uri_builder.cpp.i
uri_builder.s: uri_builder.cpp.s
@@ -343,7 +343,7 @@ uri_builder.s: uri_builder.cpp.s
# target to generate assembly for a file
uri_builder.cpp.s:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.s
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.s
.PHONY : uri_builder.cpp.s
uri_errors.o: uri_errors.cpp.o
@@ -351,7 +351,7 @@ uri_errors.o: uri_errors.cpp.o
# target to build an object file
uri_errors.cpp.o:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o
.PHONY : uri_errors.cpp.o
uri_errors.i: uri_errors.cpp.i
@@ -359,7 +359,7 @@ uri_errors.i: uri_errors.cpp.i
# target to preprocess a source file
uri_errors.cpp.i:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.i
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.i
.PHONY : uri_errors.cpp.i
uri_errors.s: uri_errors.cpp.s
@@ -367,7 +367,7 @@ uri_errors.s: uri_errors.cpp.s
# target to generate assembly for a file
uri_errors.cpp.s:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.s
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/src/CMakeFiles/network-uri.dir/build.make third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.s
.PHONY : uri_errors.cpp.s
# Help Target
@@ -418,6 +418,6 @@ help:
# No rule that depends on this can have commands that come from listfiles
# because they might be regenerated.
cmake_check_build_system:
- cd /usr/local/src/asymptote-2.89/LspCpp && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
+ cd /usr/local/src/asymptote-2.90/LspCpp && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
.PHONY : cmake_check_build_system
diff --git a/graphics/asymptote/LspCpp/third_party/uri/src/cmake_install.cmake b/graphics/asymptote/LspCpp/third_party/uri/src/cmake_install.cmake
index 2295d35b1e..fbf9b52637 100644
--- a/graphics/asymptote/LspCpp/third_party/uri/src/cmake_install.cmake
+++ b/graphics/asymptote/LspCpp/third_party/uri/src/cmake_install.cmake
@@ -1,4 +1,4 @@
-# Install script for directory: /usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src
+# Install script for directory: /usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src
# Set the install prefix
if(NOT DEFINED CMAKE_INSTALL_PREFIX)
@@ -43,6 +43,6 @@ if(NOT DEFINED CMAKE_OBJDUMP)
endif()
if(CMAKE_INSTALL_COMPONENT STREQUAL "Unspecified" OR NOT CMAKE_INSTALL_COMPONENT)
- file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib" TYPE STATIC_LIBRARY FILES "/usr/local/src/asymptote-2.89/LspCpp/third_party/uri/src/libnetwork-uri.a")
+ file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/lib" TYPE STATIC_LIBRARY FILES "/usr/local/src/asymptote-2.90/LspCpp/third_party/uri/src/libnetwork-uri.a")
endif()
diff --git a/graphics/asymptote/Makefile.in b/graphics/asymptote/Makefile.in
index 15b2a7c6bb..1c7866fef1 100644
--- a/graphics/asymptote/Makefile.in
+++ b/graphics/asymptote/Makefile.in
@@ -274,7 +274,7 @@ install-asy: asy sty
${INSTALL} -p -m 644 base/*.asy $(addprefix base/,$(EXTRA)) \
asy-keywords.el $(asydir)
${INSTALL} -p -m 755 GUI/*.py $(GUIdir)
- ${INSTALL} -p -m 755 base/shaders/*.glsl $(shaderdir)
+ ${INSTALL} -p -m 644 base/shaders/*.glsl $(shaderdir)
${INSTALL} -p -m 644 base/webgl/asygl.js \
$(webgldir)
-${INSTALL} -p -m 644 GUI/pyUIClass/*.py $(GUIdir)/pyUIClass
diff --git a/graphics/asymptote/README b/graphics/asymptote/README
index 1e1c510415..686eb44150 100644
--- a/graphics/asymptote/README
+++ b/graphics/asymptote/README
@@ -1,5 +1,5 @@
ASYMPTOTE
- Copyright 2004-23 Andy Hammerlindl, John Bowman, and Tom Prince
+ Copyright 2004-24 Andy Hammerlindl, John Bowman, and Tom Prince
Asymptote is a powerful descriptive vector graphics language for technical
drawing, inspired by MetaPost but with an improved C++-like
diff --git a/graphics/asymptote/ReleaseNotes b/graphics/asymptote/ReleaseNotes
index 035d4c5d88..3afa9be03a 100644
--- a/graphics/asymptote/ReleaseNotes
+++ b/graphics/asymptote/ReleaseNotes
@@ -1,3 +1,19 @@
+Release Notes for Version 2.90
+A bug in the approximate transparency rendering code for GPUs
+without SSBO support was fixed.
+Support was added for templated accesses involving imported types,
+top-level structure types, and static fields.
+ImageMagick magick convert is now used instead of convert.
+The add(picture dest, picture src, pair position) function now respects
+size specifications (backwards incompatible; the previous behaviour can
+be obtained with add(dest,src.fit(identity()),position).
+The terminal is now reset upon exit. The erase command was fixed.
+Picture scalings in different dimensions are decoupled again.
+Flycheck syntax checking support for Emacs was added.
+Portability issues were addressed.
+Improvements were made to the documentation, including an introduction
+to deferred drawing.
+
Release Notes for Version 2.89
Portability fixes were made to allow static builds with or without pkg-config.
diff --git a/graphics/asymptote/absyn.h b/graphics/asymptote/absyn.h
index a25d463c64..9a0421e0d4 100644
--- a/graphics/asymptote/absyn.h
+++ b/graphics/asymptote/absyn.h
@@ -48,7 +48,7 @@ void prettyindent(ostream &out, Int indent);
void prettyname(ostream &out, string name, Int indent, position pos);
class name;
-class ty;
+class astType;
class varinit;
class exp;
class runnable;
diff --git a/graphics/asymptote/arrayop.h b/graphics/asymptote/arrayop.h
index ee1310a914..1fec0cb703 100644
--- a/graphics/asymptote/arrayop.h
+++ b/graphics/asymptote/arrayop.h
@@ -323,7 +323,7 @@ void write(vm::stack *s)
string S=pop<string>(s,emptystring);
vm::item it=pop(s);
bool defaultfile=isdefault(it);
- camp::ofile *f=defaultfile ? &camp::Stdout : vm::get<camp::ofile*>(it);
+ camp::file *f=defaultfile ? &camp::Stdout : vm::get<camp::file*>(it);
if(!f->isOpen() || !f->enabled()) return;
size_t size=checkArray(a);
@@ -354,7 +354,7 @@ void writeArray(vm::stack *s)
string S=pop<string>(s,emptystring);
vm::item it=pop(s);
bool defaultfile=isdefault(it);
- camp::ofile *f=defaultfile ? &camp::Stdout : vm::get<camp::ofile*>(it);
+ camp::file *f=defaultfile ? &camp::Stdout : vm::get<camp::file*>(it);
if(!f->isOpen() || !f->enabled()) return;
size_t asize=checkArray(a);
@@ -409,7 +409,7 @@ void writeArray2(vm::stack *s)
array *a=pop<array*>(s);
vm::item it=pop(s);
bool defaultfile=isdefault(it);
- camp::ofile *f=defaultfile ? &camp::Stdout : vm::get<camp::ofile*>(it);
+ camp::file *f=defaultfile ? &camp::Stdout : vm::get<camp::file*>(it);
if(!f->isOpen() || !f->enabled()) return;
size_t size=checkArray(a);
@@ -441,7 +441,7 @@ void writeArray3(vm::stack *s)
array *a=pop<array*>(s);
vm::item it=pop(s);
bool defaultfile=isdefault(it);
- camp::ofile *f=defaultfile ? &camp::Stdout : vm::get<camp::ofile*>(it);
+ camp::file *f=defaultfile ? &camp::Stdout : vm::get<camp::file*>(it);
if(!f->isOpen() || !f->enabled()) return;
size_t size=checkArray(a);
diff --git a/graphics/asymptote/asy-keywords.el b/graphics/asymptote/asy-keywords.el
index ea0098cd05..071b63017f 100644
--- a/graphics/asymptote/asy-keywords.el
+++ b/graphics/asymptote/asy-keywords.el
@@ -2,16 +2,16 @@
;; This file is automatically generated by asy-list.pl.
;; Changes will be overwritten.
;;
-(defvar asy-keywords-version "2.89")
+(defvar asy-keywords-version "2.90")
(defvar asy-keyword-name '(
and controls tension atleast curl if else while for do return break continue struct typedef new access import unravel from include quote static public private restricted this explicit true false null cycle newframe operator ))
(defvar asy-type-name '(
-Braid FitResult Label Legend Solution TreeNode abscissa arc arrowhead binarytree binarytreeNode block bool bool3 bounds bqe circle conic coord coordsys cputime ellipse evaluatedpoint file filltype frame grid3 guide horner hsv hyperbola int inversion key light line linefit marginT marker mass node object pair parabola patch path path3 pen picture point position positionedvector projection rational real realschur revolution scaleT schur scientific segment side simplex slice solution splitface string surface tensionSpecifier ticklocate ticksgridT tickvalues transform transformation tree triangle trilinear triple vector vertex void ))
+Braid FitResult Label Legend Solution TreeNode abscissa arc arrowhead binarytree binarytreeNode block bool bool3 bounds bqe circle conic coord coordsys cputime ellipse evaluatedpoint file filltype frame grid3 guide horner hsv hyperbola int inversion key light line linefit marginT marker mass node object pair parabola patch path path3 pen picture point position positionedvector projection rational real realschur revolution scaleT schur scientific segment side slice solution splitface string surface tensionSpecifier ticklocate ticksgridT tickvalues transform transformation tree triangle trilinear triple vector vertex void ))
(defvar asy-function-name '(
-AND Align Arc ArcArrow ArcArrows Arrow Arrows AtA Automatic AvantGarde B03 B13 B23 B33 BBox BWRainbow BWRainbow2 Bar Bars BeginArcArrow BeginArrow BeginBar BeginDotMargin BeginMargin BeginPenMargin Blank Bookman Bottom BottomTop Bounds Break Broken BrokenLog CLZ CTZ Ceil Circle CircleBarIntervalMarker Cos Courier CrossIntervalMarker DOSendl DOSnewl DefaultFormat DefaultLogFormat Degrees Dir DotMargin DotMargins Dotted Draw Drawline Embed EndArcArrow EndArrow EndBar EndDotMargin EndMargin EndPenMargin Fill FillDraw Finite Floor Format Full Gaussian Gaussrand Gaussrandpair Gradient Grayscale Helvetica Hermite HookHead InOutTicks InTicks Jn Label Landscape Left LeftRight LeftTicks Legend Linear Log LogFormat Margin Margins Mark MidArcArrow MidArrow NOT NewCenturySchoolBook NoBox NoMargin NoModifier NoTicks NoTicks3 NoZero NoZeroFormat None OR OmitFormat OmitTick OmitTickInterval OmitTickIntervals OutTicks Ox Oy Palatino PaletteTicks Pen PenMargin PenMargins Pentype Portrait RGB RadialShade RadialShadeDraw Rainbow Range Relative Right RightTicks Rotate Round SQR Scale ScaleX ScaleY ScaleZ Seascape Shift Sin Slant Spline StickIntervalMarker Straight Symbol Tan TeXify Ticks Ticks3 TildeIntervalMarker TimesRoman Top TrueMargin UnFill UpsideDown Wheel X XEquals XOR XY XYEquals XYZero XYgrid XZEquals XZZero XZero XZgrid Y YEquals YXgrid YZ YZEquals YZZero YZero YZgrid Yn Z ZX ZXgrid ZYgrid ZapfChancery ZapfDingbats _begingroup3 _cputime _draw _eval _findroot _image _labelpath _projection _schur _shipout _strokepath _texpath aCos aSin aTan abort abs abs2 accel acos acosh acot acsc activatequote add addArrow addMargins addSaveFunction addpenarc addpenline addseg adjust alias align all altitude angabscissa angle angledegrees angpoint animate annotate anticomplementary antipedal apply approximate arc arcarrowsize arccircle arcdir arcfromcenter arcfromfocus arclength arcnodesnumber arcpoint arcsubtended arcsubtendedcenter arctime arctopath array arrow arrow2 arrowbase arrowbasepoints arrowsize ascii asec asin asinh ask assert asy asycode asydir asyfigure asyfilecode asyinclude asywrite atan atan2 atanh atbreakpoint atexit attach attract atupdate autoformat autoscale autoscale3 axes axes3 axialshade axis axiscoverage azimuth babel background bangles bar barmarksize barsize basealign baseline bbox beep begin beginclip begingroup beginpoint between bevel bezier bezierP bezierPP bezierPPP bezulate bibliography bibliographystyle binarytree binarytreeNode binomial bins bisector bisectorpoint bispline bispline0 bitreverse blend blockconnector box bqe brace breakpoint breakpoints brick buildRestoreDefaults buildRestoreThunk buildcycle bulletcolor byte byteinv calculateScaling canonical canonicalcartesiansystem cartesiansystem case1 case2 case3 cbrt cd ceil center centerToFocus centroid cevian change2 changecoordsys checkSegment check_fpt_zero checkconditionlength checker checkincreasing checklengths checkposition checkpt checkptincube checktriangle choose circle circlebarframe circlemarkradius circlenodesnumber circumcenter circumcircle clamped clear clip clipdraw close cmyk code colatitude collect collinear color colorless colors colorspace comma compassmark complement complementary concat concurrent cone conic conicnodesnumber conictype conj connect containmentTree contains contour contour3 controlSpecifier convert coordinates coordsys copy copyPairOrTriple cos cosh cot countIntersections cputime crop cropcode cross crossframe crosshatch crossmarksize csc cubicroots curabscissa curlSpecifier curpoint currentarrow currentexitfunction currentmomarrow currentpolarconicroutine curve cut cutafter cutbefore cyclic cylinder deactivatequote debugger deconstruct defaultdir defaultformat defaultpen defined degenerate degrees delete deletepreamble determinant diagonal diamond diffdiv dir dirSpecifier dirtime display distance divisors do_overpaint dot dotframe dotsize downcase draw drawAll drawCylinder drawDisk drawDoubleLine drawFermion drawGhost drawGluon drawMomArrow drawPhoton drawScalar drawSphere drawTube drawVertex drawVertexBox drawVertexBoxO drawVertexBoxX drawVertexO drawVertexOX drawVertexTriangle drawVertexTriangleO drawVertexX drawarrow drawarrow2 drawbeziertriangle drawline drawpixel drawstrokepath drawtick duplicate elle ellipse ellipsenodesnumber embed embed3 embedplayer empty enclose end endclip endgroup endgroup3 endl endpoint endpoints eof eol equation equations erase erasestep erf erfc error errorbar errorbars eval excenter excircle exit exitfunction exp expfactors expi expm1 exradius extend extension extouch fabs factorial fermat fft fhorner figure file filecode fill filldraw filloutside fillrule filltype find findall findroot finite finiteDifferenceJacobian firstcut firstframe fit fit2 fixedscaling floor flush fmdefaults fmod focusToCenter font fontcommand fontsize foot format frac frequency fromCenter fromFocus fspline functionshade gamma gcd generate_random_backtrace generateticks gergonne getc getint getpair getreal getstring gettriple gluon gouraudshade graph graphic graphicscale graphwithderiv gray grestore grid grid3 gsave halfbox hatch hdiffdiv hermite hex histogram history hline hprojection hsv hyperbola hyperbolanodesnumber hyperlink hypot identity image implicitsurface importv3d incenter incentral incircle increasing incrementposition indexedfigure initdefaults initialized input inradius insert inside insphere integrate interactive interior interp interpolate intersect intersection intersectionpoint intersectionpoints intersections intouch inverse inversion invisible is3D isDuplicate isnan isogonal isogonalconjugate isometry isotomic isotomicconjugate isparabola italic item jobname key kurtosis kurtosisexcess label labelaxis labelmargin labelpath labels labeltick labelx labelx3 labely labely3 labelz labelz3 lastcut latex latitude latticeshade layer layout lcm ldexp leastsquares legend legenditem length lexorder lift light limits line linear linecap lineinversion linejoin linemargin lineskip linetype linewidth link list lm_enorm lm_evaluate_default lm_lmdif lm_lmpar lm_minimize lm_print_default lm_print_quiet lm_qrfac lm_qrsolv locale locate locatefile location log log10 log1p logaxiscoverage longitude lookup make3dgrid makeNode makecircle makedraw makepen maketriangle map mapArray mapArrayString margin markangle markangleradius markanglespace markarc marker markinterval marknodes markrightangle markthin markuniform mass masscenter massformat math max max3 maxAfterTransform maxbezier maxbound maxcoords maxlength maxratio maxtimes mean medial median midpoint min min3 minAfterTransform minbezier minbound minipage minratio mintimes miterlimit mktemp momArrowPath momarrowsize monotonic multifigure nGrad nativeformat natural newl newpage newslide newton newtree nextframe nextnormal nextpage nib nodabscissa node none norm normalout normalvideo notaknot nowarn numberpage nurb object offset onpath opacity opposite orient orientation origin orthic orthocenter orthocentercenter outdirectory outformat outline outname outprefix output overloadedMessage overwrite pack pad pairs palette parabola parabolanodesnumber parallel parallelogram partialsum patchwithnormals path path3 pathbetween pathinface pattern pause pdf pedal periodic perp perpendicular perpendicularmark phantom phi1 phi2 phi3 phi4 photon piecewisestraight point polar polarconicroutine polargraph polygon popcount postcontrol postscript pow10 ppoint prc prc0 prconly precision precontrol prepend primitive printBytecode print_random_addresses progress project projection projecttospan projecttospan_findcoeffs purge pwhermite quadpatches quadrant quadraticroots quantize quarticroots quotient radialshade radians radicalcenter radicalline radius rand randompath rationalidentity rd readline realmult realquarticroots rectangle rectangular rectify reflect relabscissa relative relativedistance reldir relpoint reltime remainder remark removeDuplicates rename render replace report resetdefaultpen restore restoredefaults reverse reversevideo rf rfind rgb rgba rgbint rms rotate rotateO rotation round roundbox roundedpath roundrectangle samecoordsys sameside sample save savedefaults saveline scale scale3 scaleO scaleT scaleless schur scientific search searchtree sec secondaryX secondaryY seconds section sector seek seekeof segment segmentlimits sequence setpens sgn sgnd sharpangle sharpdegrees shift shiftless shipout shipout3 show simeq simplex simplexInit simplexPhase1 simplexPhase2 simplexTableau simplexWrite simpson sin sinh size size3 skewness skip slant sleep slice slope slopefield solve solveBVP sort sourceline sphere split sqrt square srand standardizecoordsys stdev step stickframe stickmarksize stickmarkspace stop straight straightness string stripdirectory stripextension stripfile stripsuffix strokepath subdivide subitem subpath substr sum surface symmedial symmedian system tab tableau tan tangent tangential tangents tanh tell tensionSpecifier tensorshade tex texcolor texify texpath texpreamble texreset texshipout texsize texstring textpath thick thin tick tickMax tickMax3 tickMin tickMin3 ticklabelshift ticklocate tildeframe tildemarksize tile tiling time times title titlepage topbox transform transformation transpose trembleFuzz triangle triangleAbc triangleabc triangletoquads trianglewithnormals triangulate tricoef tridiagonal trilinear trim truepoint tube uncycle unfill uniform unique unit unitrand unitsize unityroot unstraighten upcase updatefunction uperiodic upscale uptodate usepackage usersetting usetypescript usleep value variance variancebiased vbox vector vectorfield verbatim view vline vperiodic vprojection warn warning windingnumber write xasyKEY xaxis xaxis3 xaxis3At xaxisAt xequals xlimits xmap xpart xscale xscaleO xtick xtick3 xtrans yaxis yaxis3 yaxis3At yaxisAt yequals ylimits ypart yscale yscaleO ytick ytick3 ytrans zaxis3 zaxis3At zero zlimits zpart ztick ztick3 ztrans ))
+AND Align Arc ArcArrow ArcArrows Arrow Arrows AtA Automatic AvantGarde B03 B13 B23 B33 BBox BWRainbow BWRainbow2 Bar Bars BeginArcArrow BeginArrow BeginBar BeginDotMargin BeginMargin BeginPenMargin Blank Bookman Bottom BottomTop Bounds Break Broken BrokenLog CLZ CTZ Ceil Circle CircleBarIntervalMarker Cos Courier CrossIntervalMarker DOSendl DOSnewl DefaultFormat DefaultLogFormat Degrees Dir DotMargin DotMargins Dotted Draw Drawline Embed EndArcArrow EndArrow EndBar EndDotMargin EndMargin EndPenMargin Fill FillDraw Finite Floor Format Full Gaussian Gaussrand Gaussrandpair Gradient Grayscale Helvetica Hermite HookHead InOutTicks InTicks Jn Label Landscape Left LeftRight LeftTicks Legend Linear Log LogFormat Margin Margins Mark MidArcArrow MidArrow NOT NewCenturySchoolBook NoBox NoMargin NoModifier NoTicks NoTicks3 NoZero NoZeroFormat None OR OmitFormat OmitTick OmitTickInterval OmitTickIntervals OutTicks Ox Oy Palatino PaletteTicks Pen PenMargin PenMargins Pentype Portrait RGB RadialShade RadialShadeDraw Rainbow Range Relative Right RightTicks Rotate Round SQR Scale ScaleX ScaleY ScaleZ Seascape Shift Sin Slant Spline StickIntervalMarker Straight Symbol Tan TeXify Ticks Ticks3 TildeIntervalMarker TimesRoman Top TrueMargin UnFill UpsideDown Wheel X XEquals XOR XY XYEquals XYZero XYgrid XZEquals XZZero XZero XZgrid Y YEquals YXgrid YZ YZEquals YZZero YZero YZgrid Yn Z ZX ZXgrid ZYgrid ZapfChancery ZapfDingbats _begingroup3 _cputime _draw _eval _findroot _image _labelpath _projection _schur _shipout _strokepath _texpath aCos aSin aTan abort abs abs2 accel acos acosh acot acsc activatequote add addArrow addMargins addSaveFunction addpenarc addpenline addseg adjust alias align all altitude angabscissa angle angledegrees angpoint animate annotate anticomplementary antipedal apply approximate arc arcarrowsize arccircle arcdir arcfromcenter arcfromfocus arclength arcnodesnumber arcpoint arcsubtended arcsubtendedcenter arctime arctopath array arrow arrow2 arrowbase arrowbasepoints arrowsize ascii asec asin asinh ask assert asy asycode asydir asyfigure asyfilecode asyinclude asywrite atan atan2 atanh atbreakpoint atexit attach attract atupdate autoformat autoscale autoscale3 axes axes3 axialshade axis axiscoverage azimuth babel background bangles bar barmarksize barsize basealign baseline bbox beep begin beginclip begingroup beginpoint between bevel bezier bezierP bezierPP bezierPPP bezulate bibliography bibliographystyle binarytree binarytreeNode binomial bins bisector bisectorpoint bispline bispline0 bitreverse blend blockconnector box bqe brace breakpoint breakpoints brick buildRestoreDefaults buildRestoreThunk buildcycle bulletcolor byte byteinv calculateScaling canonical canonicalcartesiansystem cartesiansystem case1 case2 case3 cbrt cd ceil center centerToFocus centroid cevian change2 changecoordsys checkSegment check_fpt_zero checkconditionlength checker checkincreasing checklengths checkposition checkpt checkptincube checktriangle choose circle circlebarframe circlemarkradius circlenodesnumber circumcenter circumcircle clamped clear clip clipdraw close cmyk code colatitude collect collinear color colorless colors colorspace comma compassmark complement complementary concat concurrent cone conic conicnodesnumber conictype conj connect containmentTree contains contour contour3 controlSpecifier convert coordinates coordsys copy copyPairOrTriple cos cosh cot countIntersections cputime crop cropcode cross crossframe crosshatch crossmarksize csc cubicroots curabscissa curlSpecifier curpoint currentarrow currentexitfunction currentmomarrow currentpolarconicroutine curve cut cutafter cutbefore cyclic cylinder deactivatequote debugger deconstruct defaultdir defaultformat defaultpen defined degenerate degrees delete deletepreamble determinant diagonal diamond diffdiv dir dirSpecifier dirtime display distance divisors do_overpaint dot dotframe dotsize downcase draw drawAll drawCylinder drawDisk drawDoubleLine drawFermion drawGhost drawGluon drawMomArrow drawPhoton drawScalar drawSphere drawTube drawVertex drawVertexBox drawVertexBoxO drawVertexBoxX drawVertexO drawVertexOX drawVertexTriangle drawVertexTriangleO drawVertexX drawarrow drawarrow2 drawbeziertriangle drawline drawpixel drawstrokepath drawtick duplicate elle ellipse ellipsenodesnumber embed embed3 embedplayer empty enclose end endclip endgroup endgroup3 endl endpoint endpoints eof eol equation equations erase erasestep erf erfc error errorbar errorbars eval excenter excircle exit exitfunction exp expfactors expi expm1 exradius extend extension extouch fabs factorial fermat fft fhorner figure file filecode fill fillbox filldraw filloutside fillrule filltype find findall findroot finite finiteDifferenceJacobian firstcut firstframe fit fit2 fixedscaling floor flush fmdefaults fmod focusToCenter font fontcommand fontsize foot format frac frequency fromCenter fromFocus fspline functionshade gamma gcd generate_random_backtrace generateticks gergonne getc getint getpair getreal getstring gettriple gluon gouraudshade graph graphic graphicscale graphwithderiv gray grestore grid grid3 gsave halfbox hatch hdiffdiv hermite hex histogram history hline hprojection hsv hyperbola hyperbolanodesnumber hyperlink hypot identity image implicitsurface importv3d incenter incentral incircle increasing incrementposition indexedfigure initdefaults initialized input inradius insert inside insphere integrate interactive interior interp interpolate intersect intersection intersectionpoint intersectionpoints intersections intouch inverse inversion invisible is3D isDuplicate isnan isogonal isogonalconjugate isometry isotomic isotomicconjugate isparabola italic item jobname key kurtosis kurtosisexcess label labelaxis labelmargin labelpath labels labeltick labelx labelx3 labely labely3 labelz labelz3 lastcut latex latitude latticeshade layer layout lcm ldexp leastsquares legend legenditem length lexorder lift light limits line linear linecap lineinversion linejoin linemargin lineskip linetype linewidth link list lm_enorm lm_evaluate_default lm_lmdif lm_lmpar lm_minimize lm_print_default lm_print_quiet lm_qrfac lm_qrsolv locale locate locatefile location log log10 log1p logaxiscoverage longitude lookup make3dgrid makeNode makecircle makedraw makepen maketriangle map mapArray mapArrayString margin markangle markangleradius markanglespace markarc marker markinterval marknodes markrightangle markthin markuniform mass masscenter massformat math max max3 maxAfterTransform maxbezier maxbound maxcoords maxlength maxratio maxtimes mean medial median midpoint min min3 minAfterTransform minbezier minbound minipage minratio mintimes miterlimit mktemp momArrowPath momarrowsize monotonic multifigure nGrad nativeformat natural newl newpage newslide newton newtree nextframe nextnormal nextpage nib nodabscissa node none norm normalout normalvideo notaknot nowarn numberpage nurb object offset onpath opacity opposite orient orientation origin orthic orthocenter orthocentercenter outdirectory outformat outline outname outprefix output overloadedMessage overwrite pack pad pairs palette parabola parabolanodesnumber parallel parallelogram partialsum patchwithnormals path path3 pathbetween pathinface pattern pause pdf pedal periodic perp perpendicular perpendicularmark phantom phi1 phi2 phi3 phi4 photon piecewisestraight point polar polarconicroutine polargraph polygon popcount postcontrol postscript pow10 ppoint prc prc0 prconly precision precontrol prepend primitive printBytecode print_random_addresses progress project projection projecttospan projecttospan_findcoeffs purge pwhermite quadpatches quadrant quadraticroots quantize quarticroots quotient radialshade radians radicalcenter radicalline radius rand randompath rationalidentity rd readline realmult realquarticroots rectangle rectangular rectify reflect relabscissa relative relativedistance reldir relpoint reltime remainder remark removeDuplicates rename render replace report resetdefaultpen restore restoredefaults reverse reversevideo rf rfind rgb rgba rgbint rms rotate rotateO rotation round roundbox roundedpath roundrectangle samecoordsys sameside sample save savedefaults saveline scale scale3 scaleO scaleT scaleless schur scientific search searchtree sec secondaryX secondaryY seconds section sector seek seekeof segment segmentlimits sequence setpens sgn sgnd sharpangle sharpdegrees shift shiftless shipout shipout3 show simeq simplexInit simplexPhase1 simplexPhase2 simplexTableau simplexWrite simpson sin sinh size size3 skewness skip slant sleep slice slope slopefield solve solveBVP sort sourceline sphere split sqrt square srand standardizecoordsys stdev step stickframe stickmarksize stickmarkspace stop straight straightness string stripdirectory stripextension stripfile stripsuffix strokepath subdivide subitem subpath substr sum surface symmedial symmedian system tab tableau tan tangent tangential tangents tanh tell tensionSpecifier tensorshade tex texcolor texify texpath texpreamble texreset texshipout texsize texstring textpath thick thin tick tickMax tickMax3 tickMin tickMin3 ticklabelshift ticklocate tildeframe tildemarksize tile tiling time times title titlepage topbox transform transformation transpose trembleFuzz triangle triangleAbc triangleabc triangletoquads trianglewithnormals triangulate tricoef tridiagonal trilinear trim truepoint tube uncycle unfill uniform unique unit unitrand unitsize unityroot unstraighten upcase updatefunction uperiodic upscale uptodate usepackage usersetting usetypescript usleep value variance variancebiased vbox vector vectorfield verbatim view vline vperiodic vprojection warn warning windingnumber write xasyKEY xaxis xaxis3 xaxis3At xaxisAt xequals xlimits xmap xpart xscale xscaleO xtick xtick3 xtrans yaxis yaxis3 yaxis3At yaxisAt yequals ylimits ypart yscale yscaleO ytick ytick3 ytrans zaxis3 zaxis3At zero zlimits zpart ztick ztick3 ztrans ))
(defvar asy-variable-name '(
-AliceBlue Align Allow AntiqueWhite Apricot Aqua Aquamarine Aspect Azure BeginPoint Beige Bisque Bittersweet Black BlanchedAlmond Blue BlueGreen BlueViolet Both Break BrickRed Brown BurlyWood BurntOrange CCW CW CadetBlue CarnationPink Center Centered Cerulean Chartreuse Chocolate Coeff Coral CornflowerBlue Cornsilk Crimson Crop Cyan Dandelion DarkBlue DarkCyan DarkGoldenrod DarkGray DarkGreen DarkKhaki DarkMagenta DarkOliveGreen DarkOrange DarkOrchid DarkRed DarkSalmon DarkSeaGreen DarkSlateBlue DarkSlateGray DarkTurquoise DarkViolet DeepPink DeepSkyBlue DefaultHead DimGray DodgerBlue Dotted Down Draw E ENE EPS ESE E_Euler E_PC E_RK2 E_RK3BS Emerald EndPoint Euler Fill FillDraw FireBrick FloralWhite ForestGreen Fuchsia Gainsboro GhostWhite Gold Goldenrod Gray Green GreenYellow Honeydew HookHead Horizontal HotPink I IgnoreAspect IndianRed Indigo Infinity Ivory JOIN_IN JOIN_OUT JungleGreen Khaki LM_DWARF LM_MACHEP LM_SQRT_DWARF LM_SQRT_GIANT LM_USERTOL Label Lavender LavenderBlush LawnGreen Left LeftJustified LeftSide LemonChiffon LightBlue LightCoral LightCyan LightGoldenrodYellow LightGreen LightGrey LightPink LightSalmon LightSeaGreen LightSkyBlue LightSlateGray LightSteelBlue LightYellow Lime LimeGreen Linear Linen Log Logarithmic Magenta Mahogany Mark MarkFill MarkFillable MarkPath Maroon Max MediumAquamarine MediumBlue MediumOrchid MediumPurple MediumSeaGreen MediumSlateBlue MediumSpringGreen MediumTurquoise MediumVioletRed Melon MidPoint MidnightBlue Min MintCream MistyRose Moccasin Move MoveQuiet Mulberry N NE NNE NNW NULL_VERTEX NW NavajoWhite Navy NavyBlue NoAlign NoCrop NoFill NoSide OldLace Olive OliveDrab OliveGreen Orange OrangeRed Orchid Ox Oy PC PaleGoldenrod PaleGreen PaleTurquoise PaleVioletRed PapayaWhip Peach PeachPuff Periwinkle Peru PineGreen Pink Plum PowderBlue ProcessBlue Purple RELEASE RK2 RK3 RK3BS RK4 RK5 RK5DP RK5F RawSienna Red RedOrange RedViolet Rhodamine Right RightJustified RightSide RosyBrown RoyalBlue RoyalPurple RubineRed S SE SSE SSW SW SaddleBrown Salmon SandyBrown SeaGreen Seashell Sepia Sienna Silver SimpleHead SkyBlue SlateBlue SlateGray Snow SpringGreen SteelBlue Suppress SuppressQuiet Tan TeXHead Teal TealBlue Thistle Ticksize Tomato Turquoise UnFill Up VERSION Value Vertical Violet VioletRed W WNW WSW Wheat White WhiteSmoke WildStrawberry XHIGH XLOW XYAlign YAlign YHIGH YLOW Yellow YellowGreen YellowOrange ZHIGH ZLOW _outpipe aboveequationskip addpenarc addpenline align allowstepping angularsystem animationdelay appendsuffix arcarrowangle arcarrowfactor arrow2sizelimit arrowangle arrowbarb arrowdir arrowfactor arrowhookfactor arrowlength arrowsizelimit arrowtexfactor artificialColumn authorpen axis axiscoverage axislabelfactor background backgroundcolor backgroundpen barfactor barmarksizefactor basealign baselinetemplate bernstein beveljoin bigvertexpen bigvertexsize black blue bm bottom bp bracedefaultratio braceinnerangle bracemidangle braceouterangle brown bullet byfoci byvertices camerafactor chartreuse circlemarkradiusfactor circlenodesnumberfactor circleprecision circlescale cm codefile codepen codeskip colorPen coloredNodes coloredSegments conditionlength conicnodesfactor count cputimeformat crossmarksizefactor currentcoordsys currentlight currentpatterns currentpen currentpicture currentposition currentprojection curvilinearsystem cuttings cyan darkblue darkbrown darkcyan darkgray darkgreen darkgrey darkmagenta darkolive darkred dashdotted dashed datepen dateskip debuggerlines debugging deepblue deepcyan deepgray deepgreen deepgrey deepmagenta deepred deepyellow default defaultControl defaultS defaultbackpen defaultcoordsys defaultexcursion defaultfilename defaultformat defaultmassformat defaultpen defaultseparator diamond differentlengths dot dotfactor dotfilltype dotframe dotted doublelinepen doublelinespacing down duplicateFuzz ellipsenodesnumberfactor eps epsgeo epsilon evenodd expansionfactor extendcap fermionpen figureborder figuremattpen file3 firstnode firststep foregroundcolor fuchsia fuzz gapfactor ghostpen gluonamplitude gluonpen gluonratio gray green grey hatchepsilon havepagenumber heavyblue heavycyan heavygray heavygreen heavygrey heavymagenta heavyred hline hwratio hyperbolanodesnumberfactor identity identity4 ignore implicitshipout inch inches includegraphicscommand inf infinity institutionpen intMax intMin invert invisible itempen itemskip itemstep labelmargin landscape lastnode left legendhskip legendlinelength legendmargin legendmarkersize legendmaxrelativewidth legendvskip lightblue lightcyan lightgray lightgreen lightgrey lightmagenta lightolive lightred lightyellow linemargin lm_infmsg lm_shortmsg longdashdotted longdashed magenta magneticRadius mantissaBits markangleradius markangleradiusfactor markanglespace markanglespacefactor maxDenominator maxrefinements mediumblue mediumcyan mediumgray mediumgreen mediumgrey mediummagenta mediumred mediumyellow middle minDistDefault minblockheight minblockwidth mincirclediameter minipagemargin minipagewidth minvertexangle miterjoin mm momarrowfactor momarrowlength momarrowmargin momarrowoffset momarrowpen monoPen morepoints nCircle nan newbulletcolor ngraph nil nmesh nobasealign nodeMarginDefault nodesystem nomarker nopoint noprimary nullpath nullpen numarray ocgindex oldbulletcolor olive optimizeTableau orange origin overpaint page pageheight pagemargin pagenumberalign pagenumberpen pagenumberposition pagewidth paleblue palecyan palegray palegreen palegrey palemagenta palered paleyellow parabolanodesnumberfactor perpfactor phi photonamplitude photonpen photonratio pi pink plain plain_bounds plain_scaling plus preamblenodes pt purple r3 r4a r4b randMax realDigits realEpsilon realMax realMin red relativesystem reverse right roundcap roundjoin royalblue salmon saveFunctions scalarpen sequencereal settings signedtrailingzero simplex solid spinner springgreen sqrtEpsilon squarecap squarepen startposition stdin stdout stepfactor stepfraction steppagenumberpen stepping stickframe stickmarksizefactor stickmarkspacefactor swap textpen ticksize tildeframe tildemarksizefactor tinv titlealign titlepagepen titlepageposition titlepen titleskip top trailingzero treeLevelStep treeMinNodeWidth treeNodeStep trembleAngle trembleFrequency trembleRandom tubegranularity undefined unitcircle unitsquare up urlpen urlskip v3dheadertypes v3dtypes version vertexpen vertexsize viewportmargin viewportsize vline white wye yellow ylabelwidth zeroTransform zerotickfuzz zerowinding ))
+AliceBlue Align Allow AntiqueWhite Apricot Aqua Aquamarine Aspect Azure BeginPoint Beige Bisque Bittersweet Black BlanchedAlmond Blue BlueGreen BlueViolet Both Break BrickRed Brown BurlyWood BurntOrange CCW CW CadetBlue CarnationPink Center Centered Cerulean Chartreuse Chocolate Coeff Coral CornflowerBlue Cornsilk Crimson Crop Cyan Dandelion DarkBlue DarkCyan DarkGoldenrod DarkGray DarkGreen DarkKhaki DarkMagenta DarkOliveGreen DarkOrange DarkOrchid DarkRed DarkSalmon DarkSeaGreen DarkSlateBlue DarkSlateGray DarkTurquoise DarkViolet DeepPink DeepSkyBlue DefaultHead DimGray DodgerBlue Dotted Down Draw E ENE EPS ESE E_Euler E_PC E_RK2 E_RK3BS Emerald EndPoint Euler Fill FillDraw FireBrick FloralWhite ForestGreen Fuchsia Gainsboro GhostWhite Gold Goldenrod Gray Green GreenYellow Honeydew HookHead Horizontal HotPink I IgnoreAspect IndianRed Indigo Infinity Ivory JOIN_IN JOIN_OUT JungleGreen Khaki LM_DWARF LM_MACHEP LM_SQRT_DWARF LM_SQRT_GIANT LM_USERTOL Label Lavender LavenderBlush LawnGreen Left LeftJustified LeftSide LemonChiffon LightBlue LightCoral LightCyan LightGoldenrodYellow LightGreen LightGrey LightPink LightSalmon LightSeaGreen LightSkyBlue LightSlateGray LightSteelBlue LightYellow Lime LimeGreen Linear Linen Log Logarithmic Magenta Mahogany Mark MarkFill MarkFillable MarkPath Maroon Max MediumAquamarine MediumBlue MediumOrchid MediumPurple MediumSeaGreen MediumSlateBlue MediumSpringGreen MediumTurquoise MediumVioletRed Melon MidPoint MidnightBlue Min MintCream MistyRose Moccasin Move MoveQuiet Mulberry N NE NNE NNW NULL_VERTEX NW NavajoWhite Navy NavyBlue NoAlign NoCrop NoFill NoSide OldLace Olive OliveDrab OliveGreen Orange OrangeRed Orchid Ox Oy PC PaleGoldenrod PaleGreen PaleTurquoise PaleVioletRed PapayaWhip Peach PeachPuff Periwinkle Peru PineGreen Pink Plum PowderBlue ProcessBlue Purple RELEASE RK2 RK3 RK3BS RK4 RK5 RK5DP RK5F RawSienna Red RedOrange RedViolet Rhodamine Right RightJustified RightSide RosyBrown RoyalBlue RoyalPurple RubineRed S SE SSE SSW SW SaddleBrown Salmon SandyBrown SeaGreen Seashell Sepia Sienna Silver SimpleHead SkyBlue SlateBlue SlateGray Snow SpringGreen SteelBlue Suppress SuppressQuiet Tan TeXHead Teal TealBlue Thistle Ticksize Tomato Turquoise UnFill Up VERSION Value Vertical Violet VioletRed W WNW WSW Wheat White WhiteSmoke WildStrawberry XHIGH XLOW XYAlign YAlign YHIGH YLOW Yellow YellowGreen YellowOrange ZHIGH ZLOW _outpipe aboveequationskip addpenarc addpenline align allowstepping angularsystem animationdelay appendsuffix arcarrowangle arcarrowfactor arrow2sizelimit arrowangle arrowbarb arrowdir arrowfactor arrowhookfactor arrowlength arrowsizelimit arrowtexfactor artificialColumn authorpen axis axiscoverage axislabelfactor background backgroundcolor backgroundpen barfactor barmarksizefactor basealign baselinetemplate bernstein beveljoin bigvertexpen bigvertexsize black blue bm bottom bp bracedefaultratio braceinnerangle bracemidangle braceouterangle brown bullet byfoci byvertices camerafactor chartreuse circlemarkradiusfactor circlenodesnumberfactor circleprecision circlescale cm codefile codepen codeskip colorPen coloredNodes coloredSegments conditionlength conicnodesfactor count cputimeformat crossmarksizefactor currentcoordsys currentlight currentpatterns currentpen currentpicture currentposition currentprojection curvilinearsystem cuttings cyan darkblue darkbrown darkcyan darkgray darkgreen darkgrey darkmagenta darkolive darkred dashdotted dashed datepen dateskip debuggerlines debugging deepblue deepcyan deepgray deepgreen deepgrey deepmagenta deepred deepyellow default defaultControl defaultS defaultbackpen defaultcoordsys defaultexcursion defaultfilename defaultformat defaultmassformat defaultpen defaultseparator diamond differentlengths dot dotfactor dotfilltype dotframe dotted doublelinepen doublelinespacing down duplicateFuzz ellipsenodesnumberfactor eps epsgeo epsilon evenodd expansionfactor extendcap fermionpen figureborder figuremattpen file3 firstnode firststep foregroundcolor fuchsia fuzz gapfactor ghostpen gluonamplitude gluonpen gluonratio gray green grey hatchepsilon havepagenumber heavyblue heavycyan heavygray heavygreen heavygrey heavymagenta heavyred hline hwratio hyperbolanodesnumberfactor identity identity4 ignore implicitshipout inch inches includegraphicscommand inf infinity institutionpen intMax intMin invert invisible itempen itemskip itemstep labelmargin landscape lastnode left legendhskip legendlinelength legendmargin legendmarkersize legendmaxrelativewidth legendvskip lightblue lightcyan lightgray lightgreen lightgrey lightmagenta lightolive lightred lightyellow linemargin lm_infmsg lm_shortmsg longdashdotted longdashed magenta magneticRadius mantissaBits markangleradius markangleradiusfactor markanglespace markanglespacefactor maxDenominator maxrefinements mediumblue mediumcyan mediumgray mediumgreen mediumgrey mediummagenta mediumred mediumyellow middle minDistDefault minblockheight minblockwidth mincirclediameter minipagemargin minipagewidth minvertexangle miterjoin mm momarrowfactor momarrowlength momarrowmargin momarrowoffset momarrowpen monoPen morepoints nCircle nan newbulletcolor ngraph nil nmesh nobasealign nodeMarginDefault nodesystem nomarker nopoint noprimary nullpath nullpen numarray ocgindex oldbulletcolor olive optimizeTableau orange origin overpaint page pageheight pagemargin pagenumberalign pagenumberpen pagenumberposition pagewidth paleblue palecyan palegray palegreen palegrey palemagenta palered paleyellow parabolanodesnumberfactor perpfactor phi photonamplitude photonpen photonratio pi pink plain plain_bounds plus preamblenodes pt purple r3 r4a r4b randMax realDigits realEpsilon realMax realMin red relativesystem reverse right roundcap roundjoin royalblue salmon saveFunctions scalarpen sequencereal settings signedtrailingzero solid spinner springgreen sqrtEpsilon squarecap squarepen startposition stdin stdout stepfactor stepfraction steppagenumberpen stepping stickframe stickmarksizefactor stickmarkspacefactor swap textpen ticksize tildeframe tildemarksizefactor tinv titlealign titlepagepen titlepageposition titlepen titleskip top trailingzero treeLevelStep treeMinNodeWidth treeNodeStep trembleAngle trembleFrequency trembleRandom tubegranularity undefined unitcircle unitsquare up urlpen urlskip v3dheadertypes v3dtypes version vertexpen vertexsize viewportmargin viewportsize vline white wye yellow ylabelwidth zeroTransform zerotickfuzz zerowinding ))
diff --git a/graphics/asymptote/asy.list b/graphics/asymptote/asy.list
index 9a33fd6443..096577c741 100644
--- a/graphics/asymptote/asy.list
+++ b/graphics/asymptote/asy.list
@@ -68,8 +68,8 @@ path3 subpath(path3 p, real a, real b);
bool isnan(real x);
string jobname(string name);
void print_random_addresses(int n=<default>);
-void attach(picture dest=<default>, frame src, pair position, pair align, bool group=<default>, filltype filltype=<default>, bool above=<default>);
void attach(picture dest=<default>, frame src, pair position=<default>, bool group=<default>, filltype filltype=<default>, bool above=<default>);
+void attach(picture dest=<default>, frame src, pair position, pair align, bool group=<default>, filltype filltype=<default>, bool above=<default>);
real[] quadraticroots(real a, real b, real c);
pair[] quadraticroots(explicit pair a, explicit pair b, explicit pair c);
pen darkcyan;
@@ -149,8 +149,8 @@ pen rgb(string s);
real inch;
bool ArcArrow(picture, path, pen, marginT(path, pen))(arrowhead arrowhead=<default>, real size=<default>, real angle=<default>, filltype filltype=<default>, position position=<default>);
bool ArcArrow(picture, path, pen, marginT(path, pen));
-bool ArcArrows(picture, path, pen, marginT(path, pen));
bool ArcArrows(picture, path, pen, marginT(path, pen))(arrowhead arrowhead=<default>, real size=<default>, real angle=<default>, filltype filltype=<default>);
+bool ArcArrows(picture, path, pen, marginT(path, pen));
pen currentpen;
pair precontrol(path p, int t);
pair precontrol(path p, real t);
@@ -246,9 +246,8 @@ pair min(frame f);
pair min(explicit path p);
pair min(path[] p);
triple min(path3 p);
-real min(... real[] a);
-real min(real m, scaling s, coord[] c);
pair min(picture pic, bool user=<default>);
+real min(... real[] a);
real min(real m, scaling s, coord[] c);
int min(... int[] a);
filltype RadialShade(pen penc, pen penr);
@@ -256,22 +255,21 @@ int search(int[] a, int key);
int search(real[] a, real key);
int search(string[] a, string key);
int search(void()()[] a, void key()(), bool less(void()(), void()()));
-int search(marker[] a, marker key, bool less(marker, marker));
int search(real[] a, real key, bool less(real, real));
int search(guide[] a, guide key, bool less(guide, guide));
-int search(picture[] a, picture key, bool less(picture, picture));
+int search(marker[] a, marker key, bool less(marker, marker));
int search(pair[] a, pair key, bool less(pair, pair));
-int search(object[] a, object key, bool less(object, object));
+int search(picture[] a, picture key, bool less(picture, picture));
int search(frame[] a, frame key, bool less(frame, frame));
-int search(Label[] a, Label key, bool less(Label, Label));
+int search(coord[] a, coord key, bool less(coord, coord));
+int search(object[] a, object key, bool less(object, object));
int search(int[] a, int key, bool less(int, int));
-int search(Legend[] a, Legend key, bool less(Legend, Legend));
int search(bool3[] a, bool3 key, bool less(bool3, bool3));
-int search(coord[] a, coord key, bool less(coord, coord));
+int search(Label[] a, Label key, bool less(Label, Label));
+int search(Legend[] a, Legend key, bool less(Legend, Legend));
int search(string[] a, string key, bool less(string, string));
int search(path[] a, path key, bool less(path, path));
int search(pen[] a, pen key, bool less(pen, pen));
-int search(coord[] a, coord key, bool less(coord, coord));
int search(bool[] a, bool key, bool less(bool, bool));
int search(triple[] a, triple key, bool less(triple, triple));
filltype RadialShadeDraw(real xmargin=<default>, real ymargin=<default>, pen penc, pen penr, pen drawpen=<default>);
@@ -289,13 +287,13 @@ pen opacity(real opacity=<default>, string blend=<default>);
real opacity(pen p);
real[] solve(real[][] a, real[] b, bool warn=<default>);
real[][] solve(real[][] a, real[][] b, bool warn=<default>);
-void DOSendl(file file);
int rename(string from, string to);
+void DOSendl(file file);
string debugger(string file, int line, int column, code s=<default>);
string getc(file f);
bool debugging;
-void shipout(string prefix=<default>, frame f, string format=<default>, bool wait=<default>, bool view=<default>, string options=<default>, string script=<default>, light light=<default>, projection P=<default>, transform t=<default>);
void shipout(string prefix=<default>, picture pic=<default>, frame orientation(frame)=<default>, string format=<default>, bool wait=<default>, bool view=<default>, string options=<default>, string script=<default>, light light=<default>, projection P=<default>);
+void shipout(string prefix=<default>, frame f, string format=<default>, bool wait=<default>, bool view=<default>, string options=<default>, string script=<default>, light light=<default>, projection P=<default>, transform t=<default>);
void shipout3(string prefix, frame f, string format=<default>, real width, real height, real angle, real zoom, triple m, triple m, pair shift, pair margin, real[][] t, real[] background, triple[] lights, real[][] diffuse, real[][] specular, bool view=<default>);
void shipout3(string prefix, frame f, string format=<default>);
string getstring(string name=<default>, string default=<default>, string prompt=<default>, bool store=<default>);
@@ -348,19 +346,18 @@ pair max(frame f);
pair max(explicit path p);
pair max(path[] p);
triple max(path3 p);
-pair max(picture pic, bool user=<default>);
real max(real M, scaling s, coord[] c);
int max(... int[] a);
+pair max(picture pic, bool user=<default>);
real max(... real[] a);
-real max(real M, scaling s, coord[] c);
-Label Label(string s, string size=<default>, pair position, align align=<default>, pen p=<default>, transform embed(transform)=<default>, filltype filltype=<default>);
-Label Label(Label L, align align=<default>, pen p=<default>, transform embed(transform)=<default>, filltype filltype=<default>);
-Label Label(Label L, pair position, align align=<default>, pen p=<default>, transform embed(transform)=<default>, filltype filltype=<default>);
Label Label(string s, string size=<default>, explicit position position, align align=<default>, pen p=<default>, transform embed(transform)=<default>, filltype filltype=<default>);
-Label Label;
Label Label(Label L, explicit position position, align align=<default>, pen p=<default>, transform embed(transform)=<default>, filltype filltype=<default>);
Label Label(explicit pair position, align align=<default>, pen p=<default>, transform embed(transform)=<default>, filltype filltype=<default>);
Label Label(string s=<default>, string size=<default>, align align=<default>, pen p=<default>, transform embed(transform)=<default>, filltype filltype=<default>);
+Label Label;
+Label Label(string s, string size=<default>, pair position, align align=<default>, pen p=<default>, transform embed(transform)=<default>, filltype filltype=<default>);
+Label Label(Label L, align align=<default>, pen p=<default>, transform embed(transform)=<default>, filltype filltype=<default>);
+Label Label(Label L, pair position, align align=<default>, pen p=<default>, transform embed(transform)=<default>, filltype filltype=<default>);
string font(pen p=<default>);
pen font(string name, string options=<default>);
pen font(string encoding, string family, string series, string shape);
@@ -395,19 +392,19 @@ filltype NoFill;
real colatitude(triple v, bool warn=<default>);
void drawDisk(frame f, real[][] t, pen[] p, real opacity, real shininess, real metallic, real fresnel0);
void label(frame f, string s, string size, transform t, pair position, pair align, pen p);
-void label(picture pic=<default>, Label L, explicit guide g, align align=<default>, pen p=<default>, filltype filltype=<default>);
-void label(picture pic=<default>, Label L, explicit path g, align align=<default>, pen p=<default>, filltype filltype=<default>);
void label(picture pic=<default>, Label L, align align=<default>, pen p=<default>, filltype filltype=<default>);
void label(pair origin, picture pic=<default>, Label L, align align=<default>, pen p=<default>, filltype filltype=<default>);
void label(frame f, Label L, pair position, align align=<default>, pen p=<default>, filltype filltype=<default>);
void label(picture pic=<default>, Label L, pair position, align align=<default>, pen p=<default>, filltype filltype=<default>);
void label(frame f, Label L, align align=<default>, pen p=<default>, filltype filltype=<default>);
+void label(picture pic=<default>, Label L, explicit guide g, align align=<default>, pen p=<default>, filltype filltype=<default>);
+void label(picture pic=<default>, Label L, explicit path g, align align=<default>, pen p=<default>, filltype filltype=<default>);
real fabs(real x);
real[] fabs(real[] a);
bool labels(frame f);
light light(pen diffuse=<default>, pen specular=<default>, pen background=<default>, real x, real y, real z);
-light light(explicit light light);
light light(pen diffuse=<default>, pen specular=<default>, pen background=<default>, real specularfactor=<default> ... triple[] position);
+light light(explicit light light);
light light(pen[] diffuse, pen[] specular=<default>, pen background=<default>, real specularfactor=<default>, triple[] position);
real remainder(real x, real y);
int byte(real x);
@@ -433,11 +430,11 @@ real erf(real x);
void saveline(string name, string value, bool store=<default>);
pen fuchsia;
filltype filltype(int type=<default>, pen fillpen=<default>, pen drawpen=<default>, void fill2(frame f, path[] g, pen fillpen));
-frame[] fit(string prefix=<default>, picture[] pictures, string format=<default>, bool view=<default>, string options=<default>, string script=<default>, projection P=<default>);
-pen Bookman(string series=<default>, string shape=<default>);
+path box(pair a, pair b);
path box(frame dest, frame src=<default>, real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>, bool above=<default>);
path box(frame f, Label L, real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>, bool above=<default>);
-path box(pair a, pair b);
+frame[] fit(string prefix=<default>, picture[] pictures, string format=<default>, bool view=<default>, string options=<default>, string script=<default>, projection P=<default>);
+pen Bookman(string series=<default>, string shape=<default>);
void seekeof(file f);
path unitcircle;
pair[] conj(pair[] a);
@@ -472,6 +469,7 @@ void deconstruct(picture pic=<default>);
int sgn(real x);
node node(void d(frame f, transform t, transform T, pair lb, pair rt), string key=<default>);
pair minAfterTransform(transform t, path[] p);
+void fillbox(frame dest, path g, pen p=<default>, filltype filltype=<default>, bool above=<default>);
int seconds(string t=<default>, string format=<default>);
pen cyan;
pen grey;
@@ -486,8 +484,6 @@ real arcarrowfactor;
real mm;
real arcarrowsize(pen p=<default>);
real calculateScaling(string dir, coord[] coords, real size, bool warn=<default>);
-real calculateScaling(string dir, coord[] coords, real size, bool warn=<default>);
-real calculateScaling(string dir, coord[] m, coord[] M, real size, bool warn=<default>);
real calculateScaling(string dir, coord[] m, coord[] M, real size, bool warn=<default>);
triple gettriple(string name=<default>, triple default=<default>, string prompt=<default>, bool store=<default>);
void drawpixel(frame f, triple v, pen p, real width=<default>);
@@ -514,10 +510,10 @@ pen rgba(real[] a);
real[] rgba(pen p);
string time(string format=<default>);
string time(int seconds, string format=<default>);
-int MoveQuiet;
void prepend(frame dest, frame src);
real pt;
settings settings;
+int MoveQuiet;
marginT EndMargin(path, pen);
pen nullpen;
side LeftSide;
@@ -528,10 +524,10 @@ triple[] copy(triple[] a, int depth=<default>);
bool[] copy(bool[] a, int depth=<default>);
real[][] copy(real[][] a, int depth=<default>);
pen[] copy(pen[] a, int depth=<default>);
-bool3[] copy(bool3[] a, int depth=<default>);
coord[] copy(coord[] a, int depth=<default>);
-Label[] copy(Label[] a, int depth=<default>);
-picture[] copy(picture[] a, int depth=<default>);
+object[] copy(object[] a, int depth=<default>);
+marker[] copy(marker[] a, int depth=<default>);
+Legend[] copy(Legend[] a, int depth=<default>);
pen[][] copy(pen[][] a, int depth=<default>);
path[] copy(path[] a, int depth=<default>);
string[] copy(string[] a, int depth=<default>);
@@ -540,10 +536,9 @@ int[] copy(int[] a, int depth=<default>);
string[][] copy(string[][] a, int depth=<default>);
frame[] copy(frame[] a, int depth=<default>);
pair[] copy(pair[] a, int depth=<default>);
-coord[] copy(coord[] a, int depth=<default>);
-object[] copy(object[] a, int depth=<default>);
-marker[] copy(marker[] a, int depth=<default>);
-Legend[] copy(Legend[] a, int depth=<default>);
+bool3[] copy(bool3[] a, int depth=<default>);
+Label[] copy(Label[] a, int depth=<default>);
+picture[] copy(picture[] a, int depth=<default>);
pair[][] copy(pair[][] a, int depth=<default>);
real[] abs(pair[] a);
real[] abs(triple[] a);
@@ -576,28 +571,27 @@ pen deepblue;
pen palered;
real[] map(real f(pair), pair[] a);
int[] map(int f(real), real[] a);
-Legend[] map(Legend f(Legend), Legend[] a);
-frame[] map(frame f(frame), frame[] a);
+bool3[] map(bool3 f(bool3), bool3[] a);
Label[] map(Label f(Label), Label[] a);
+frame[] map(frame f(frame), frame[] a);
+coord[] map(coord f(coord), coord[] a);
+object[] map(object f(object), object[] a);
pen[][] map(pen[] f(pen[]), pen[][] a);
triple[] map(triple f(triple), triple[] a);
pen[] map(pen f(pen), pen[] a);
-object[] map(object f(object), object[] a);
-pair[] map(pair f(pair), pair[] a);
picture[] map(picture f(picture), picture[] a);
-string[] map(string f(string), string[] a);
+pair[] map(pair f(pair), pair[] a);
marker[] map(marker f(marker), marker[] a);
+string[] map(string f(string), string[] a);
void()()[] map(void f()()(void()()), void()()[] a);
pair[][] map(pair[] f(pair[]), pair[][] a);
real[] map(real f(real), real[] a);
int[] map(int f(int), int[] a);
string[][] map(string[] f(string[]), string[][] a);
-coord[] map(coord f(coord), coord[] a);
bool[] map(bool f(bool), bool[] a);
path[] map(path f(path), path[] a);
real[][] map(real[] f(real[]), real[][] a);
-bool3[] map(bool3 f(bool3), bool3[] a);
-coord[] map(coord f(coord), coord[] a);
+Legend[] map(Legend f(Legend), Legend[] a);
guide[] map(guide f(guide), guide[] a);
path unstraighten(path p);
path3 unstraighten(path3 p);
@@ -612,10 +606,10 @@ pair minratio(triple[][] p, pair b);
pair minratio(path3 g);
int[] sequence(int n);
pen[][] sequence(pen[] f(int), int n);
-bool3[] sequence(bool3 f(int), int n);
coord[] sequence(coord f(int), int n);
-Label[] sequence(Label f(int), int n);
-picture[] sequence(picture f(int), int n);
+object[] sequence(object f(int), int n);
+marker[] sequence(marker f(int), int n);
+Legend[] sequence(Legend f(int), int n);
int[] sequence(int f(int), int n);
string[][] sequence(string[] f(int), int n);
pair[] sequence(pair f(int), int n);
@@ -626,10 +620,9 @@ void()()[] sequence(void f()()(int), int n);
bool[] sequence(bool f(int), int n);
string[] sequence(string f(int), int n);
pair[][] sequence(pair[] f(int), int n);
-coord[] sequence(coord f(int), int n);
-object[] sequence(object f(int), int n);
-marker[] sequence(marker f(int), int n);
-Legend[] sequence(Legend f(int), int n);
+bool3[] sequence(bool3 f(int), int n);
+Label[] sequence(Label f(int), int n);
+picture[] sequence(picture f(int), int n);
real[][] sequence(real[] f(int), int n);
real[] sequence(real f(int), int n);
int[] sequence(int n, int m);
@@ -649,9 +642,9 @@ pair size(frame f);
int size(path p);
int size(path[] p);
int size(path3 p);
+void size(picture dest, picture src);
pair size(picture pic, bool user=<default>);
void size(picture pic=<default>, transform t);
-void size(picture dest, picture src);
void size(picture pic=<default>, real x, real y=<default>, bool keepAspect=<default>);
void size(picture pic=<default>, real xsize, real ysize, pair min, pair max);
void clear(file f);
@@ -670,18 +663,18 @@ string downcase(string s);
pen mediumgrey;
transform transform(pen p);
string readline(string prompt=<default>, string name=<default>, bool tabcompletion=<default>);
+void beep();
+pair relpoint(path p, real l);
+pair[][] transpose(pair[][] a);
pen[][] transpose(pen[][] a);
string[][] transpose(string[][] a);
real[][] transpose(real[][] a);
-pair[][] transpose(pair[][] a);
-void beep();
-transformation transformation(real[][] modelview, real[][] projection);
-transformation transformation(real[][] modelview);
-pair relpoint(path p, real l);
pen overwrite(int n);
int overwrite(pen p=<default>);
pen linewidth(real x);
real linewidth(pen p=<default>);
+transformation transformation(real[][] modelview);
+transformation transformation(real[][] modelview, real[][] projection);
pair maxratio(frame f);
pair maxratio(triple[][] p, pair b);
pair maxratio(path3 g);
@@ -706,23 +699,23 @@ slice cut(path p, path knife, int n);
bool is3D(frame f);
bool is3D(string format=<default>);
void add(frame dest, frame src);
+void add(frame f, transform t=<default>, Label L);
+void add(picture pic=<default>, void d(frame f, transform t), bool exact=<default>);
+void add(frame dest, frame src, filltype filltype, bool above=<default>);
+void add(frame dest, frame src, bool group, filltype filltype=<default>, bool above=<default>);
+void add(picture pic=<default>, void d(picture, real[][]), bool exact=<default>);
+void add(frame dest, frame src, pair position, bool group=<default>, filltype filltype=<default>, bool above=<default>);
+void add(picture dest=<default>, frame src, pair position=<default>, bool group=<default>, filltype filltype=<default>, bool above=<default>);
+void add(picture src, pair position, bool group=<default>, filltype filltype=<default>, bool above=<default>);
void add(picture dest=<default>, frame src, pair position, pair align, bool group=<default>, filltype filltype=<default>, bool above=<default>);
void add(frame dest, frame src, pair position, pair align, bool group=<default>, filltype filltype=<default>, bool above=<default>);
void add(picture src, bool group=<default>, filltype filltype=<default>, bool above=<default>);
-void add(picture pic=<default>, void d(frame f, transform t), bool exact=<default>);
void add(picture pic=<default>, void d(frame f, real[][] t, picture pic, projection P), bool exact=<default>);
-void add(picture pic=<default>, void d(picture, real[][]), bool exact=<default>);
+void add(picture pic=<default>, void d(picture, transform), bool exact=<default>);
void add(picture dest, picture src, bool group=<default>, filltype filltype=<default>, bool above=<default>);
-void add(picture pic=<default>, Label L);
void add(picture dest, picture src, pair position, bool group=<default>, filltype filltype=<default>, bool above=<default>);
void add(picture dest=<default>, object F, pair position=<default>, bool group=<default>, filltype filltype=<default>, bool above=<default>);
-void add(frame dest, frame src, filltype filltype, bool above=<default>);
-void add(frame dest, frame src, bool group, filltype filltype=<default>, bool above=<default>);
-void add(frame dest, frame src, pair position, bool group=<default>, filltype filltype=<default>, bool above=<default>);
-void add(picture dest=<default>, frame src, pair position=<default>, bool group=<default>, filltype filltype=<default>, bool above=<default>);
-void add(picture pic=<default>, void d(picture, transform), bool exact=<default>);
-void add(frame f, transform t=<default>, Label L);
-void add(picture src, pair position, bool group=<default>, filltype filltype=<default>, bool above=<default>);
+void add(picture pic=<default>, Label L);
plain plain;
void purge(int divisor=<default>);
int Round(real x);
@@ -738,32 +731,30 @@ filltype Draw;
void Draw(picture pic=<default>, explicit path[] g, pen p=<default>);
filltype Draw(real xmargin=<default>, real ymargin=<default>, pen p=<default>);
void tab(file file);
-plain_scaling plain_scaling;
-string file(string s);
plain_bounds plain_bounds;
+string file(string s);
string outprefix(string prefix=<default>);
-object object(Label L, path e(frame dest, frame src=<default>, real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>, bool above=<default>), real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>, bool above=<default>);
object object(frame f);
object object(Label L);
+object object(Label L, path e(frame dest, frame src=<default>, real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>, bool above=<default>), real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>, bool above=<default>);
file stdin;
void()()[] array(int n, void value()(), int depth=<default>);
bool[] array(int n, bool value, int depth=<default>);
string[] array(int n, string value, int depth=<default>);
pair[][] array(int n, pair[] value, int depth=<default>);
-coord[] array(int n, coord value, int depth=<default>);
-object[] array(int n, object value, int depth=<default>);
-marker[] array(int n, marker value, int depth=<default>);
-Legend[] array(int n, Legend value, int depth=<default>);
+bool3[] array(int n, bool3 value, int depth=<default>);
+Label[] array(int n, Label value, int depth=<default>);
+picture[] array(int n, picture value, int depth=<default>);
real[][] array(int n, real[] value, int depth=<default>);
real[] array(int n, real value, int depth=<default>);
triple[] array(int n, triple value, int depth=<default>);
path[] array(int n, path value, int depth=<default>);
frame[] array(int n, frame value, int depth=<default>);
pen[][] array(int n, pen[] value, int depth=<default>);
-bool3[] array(int n, bool3 value, int depth=<default>);
coord[] array(int n, coord value, int depth=<default>);
-Label[] array(int n, Label value, int depth=<default>);
-picture[] array(int n, picture value, int depth=<default>);
+object[] array(int n, object value, int depth=<default>);
+marker[] array(int n, marker value, int depth=<default>);
+Legend[] array(int n, Legend value, int depth=<default>);
int[] array(int n, int value, int depth=<default>);
string[][] array(int n, string[] value, int depth=<default>);
pair[] array(int n, pair value, int depth=<default>);
@@ -778,8 +769,8 @@ int find(string s, string t, int pos=<default>);
position BeginPoint;
marginT BeginMargin(path, pen);
path buildcycle(... path[] p);
-bool BeginArrow(picture, path, pen, marginT(path, pen))(arrowhead arrowhead=<default>, real size=<default>, real angle=<default>, filltype filltype=<default>, position position=<default>);
bool BeginArrow(picture, path, pen, marginT(path, pen));
+bool BeginArrow(picture, path, pen, marginT(path, pen))(arrowhead arrowhead=<default>, real size=<default>, real angle=<default>, filltype filltype=<default>, position position=<default>);
marginT BeginPenMargin(path, pen);
int round(real x);
marginT BeginDotMargin(path, pen);
@@ -810,18 +801,18 @@ void draw(frame f, triple[][] p, triple center, bool straight, pen[] p, real opa
void draw(frame f, triple[] p, real[] knot, real[] weights=<default>, pen p);
void draw(frame f, triple[][] p, real[] uknot, real[] vknot, real[][] weights=<default>, pen[] p, real opacity, real shininess, real metallic, real fresnel0, pen[] colors);
void draw(frame f, triple[] v, int[][] vi, triple center=<default>, triple[] n, int[][] ni, pen[] p, real opacity, real shininess, real metallic, real fresnel0, pen[] c=<default>, int[][] ci=<default>, int interaction);
-void draw(picture pic=<default>, explicit path[] g, pen p=<default>, Label legend=<default>, marker marker=<default>);
-void draw(pair origin, picture pic=<default>, explicit path[] g, pen p=<default>, Label legend=<default>, marker marker=<default>);
void draw(picture pic=<default>, path[] g, pen fillrule=<default>, pen[] p);
-object draw(picture pic=<default>, Label L, path e(frame dest, frame src=<default>, real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>, bool above=<default>), pair position, real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>, bool above=<default>);
+object draw(picture pic=<default>, Label L, path e(frame dest, frame src=<default>, real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>, bool above=<default>), real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>, bool above=<default>);
void draw(frame f, explicit path[] g, pen p=<default>);
void draw(frame f, path g, pen p=<default>, bool arrow(picture, path, pen, marginT(path, pen)));
-object draw(picture pic=<default>, Label L, path e(frame dest, frame src=<default>, real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>, bool above=<default>), real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>, bool above=<default>);
void draw(picture pic=<default>, Label L=<default>, path g, align align=<default>, pen p=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, bool bar(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, Label legend=<default>, marker marker=<default>);
void draw(pair origin, picture pic=<default>, Label L=<default>, path g, align align=<default>, pen p=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, bool bar(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, Label legend=<default>, marker marker=<default>);
-void draw(frame f, guide[] g, pen p=<default>);
void draw(picture pic=<default>, guide[] g, pen p=<default>, Label legend=<default>, marker marker=<default>);
void draw(pair origin, picture pic=<default>, guide[] g, pen p=<default>, Label legend=<default>, marker marker=<default>);
+object draw(picture pic=<default>, Label L, path e(frame dest, frame src=<default>, real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>, bool above=<default>), pair position, real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>, bool above=<default>);
+void draw(picture pic=<default>, explicit path[] g, pen p=<default>, Label legend=<default>, marker marker=<default>);
+void draw(pair origin, picture pic=<default>, explicit path[] g, pen p=<default>, Label legend=<default>, marker marker=<default>);
+void draw(frame f, guide[] g, pen p=<default>);
void draw(frame f, path g, pen p=<default>);
int mantissaBits;
real identity(real x);
@@ -886,18 +877,18 @@ void write(file file=<default>, string s=<default>, guide x, void suffix(file)=<
void write(file file=<default>, string s=<default>, pen x, void suffix(file)=<default> ... pen[]);
void write(file file, string s=<default>, explicit guide[] x, void suffix(file)=<default>);
void write(string s=<default>, cputime c, string format=<default>, void suffix(file)=<default>);
-void write(string s=<default>, bool3 b, void suffix(file)=<default>);
void write(string s=<default>, explicit path[] x, void suffix(file)=<default>);
void write(file file, void suffix(file)=<default>);
void write(file file=<default>, string s=<default>, pen[] p);
void write(void suffix(file)=<default>);
-void write(file file, string s=<default>, bool3 b, void suffix(file)=<default>);
void write(file file, string s=<default>, explicit path[] x, void suffix(file)=<default>);
-void write(file file=<default>, Label L, void suffix(file)=<default>);
+void write(file file=<default>, align align, void suffix(file)=<default>);
void write(file file, string s=<default>, cputime c, string format=<default>, void suffix(file)=<default>);
void write(pairOrTriple a);
+void write(string s=<default>, bool3 b, void suffix(file)=<default>);
+void write(file file, string s=<default>, bool3 b, void suffix(file)=<default>);
void write(string s=<default>, explicit guide[] x, void suffix(file)=<default>);
-void write(file file=<default>, align align, void suffix(file)=<default>);
+void write(file file=<default>, Label L, void suffix(file)=<default>);
void save()();
marginT EndPenMargin(path, pen);
pair NNE;
@@ -950,21 +941,20 @@ string blend(pen p);
arrowhead HookHead;
arrowhead HookHead(real dir=<default>, real barb=<default>);
real[] concat(... real[][]);
-marker[] concat(... marker[][]);
pair[] concat(... pair[][]);
-picture[] concat(... picture[][]);
+marker[] concat(... marker[][]);
pen[] concat(... pen[][]);
-object[] concat(... object[][]);
+picture[] concat(... picture[][]);
path[] concat(... path[][]);
-Label[] concat(... Label[][]);
+coord[] concat(... coord[][]);
+object[] concat(... object[][]);
int[] concat(... int[][]);
void()()[] concat(... void()()[][]);
-Legend[] concat(... Legend[][]);
-string[] concat(... string[][]);
bool3[] concat(... bool3[][]);
-coord[] concat(... coord[][]);
+Label[] concat(... Label[][]);
+string[] concat(... string[][]);
+Legend[] concat(... Legend[][]);
triple[] concat(... triple[][]);
-coord[] concat(... coord[][]);
frame[] concat(... frame[][]);
guide[] concat(... guide[][]);
bool[] concat(... bool[][]);
@@ -974,71 +964,66 @@ real[] log1p(real[] a);
real infinity;
bool alias(pair[][] a, pair[][] b);
bool alias(guide[] a, guide[] b);
-bool alias(bool3 a, bool3 b);
-bool alias(coord a, coord b);
-bool alias(scaling a, scaling b);
-bool alias(ScaleT a, ScaleT b);
-bool alias(side a, side b);
-bool alias(Label[] a, Label[] b);
-bool alias(cputime a, cputime b);
-bool alias(pair[] a, pair[] b);
-bool alias(hsv a, hsv b);
+bool alias(filltype a, filltype b);
bool alias(coord[] a, coord[] b);
-bool alias(projection a, projection b);
-bool alias(pairOrTriple a, pairOrTriple b);
-bool alias(object a, object b);
-bool alias(int[] a, int[] b);
-bool alias(string[][] a, string[][] b);
-bool alias(marginT a, marginT b);
-bool alias(bounds a, bounds b);
-bool alias(scaleT a, scaleT b);
-bool alias(arrowhead a, arrowhead b);
-bool alias(picture[] a, picture[] b);
-bool alias(real[][] a, real[][] b);
-bool alias(scaling a, scaling b);
-bool alias(coords2 a, coords2 b);
bool alias(Legend a, Legend b);
bool alias(position a, position b);
-bool alias(Legend[] a, Legend[] b);
-bool alias(realschur a, realschur b);
-bool alias(string[] a, string[] b);
-bool alias(frame[] a, frame[] b);
-bool alias(slice a, slice b);
-bool alias(simplex a, simplex b);
+bool alias(object[] a, object[] b);
+bool alias(schur a, schur b);
+bool alias(pair[] a, pair[] b);
+bool alias(scaling a, scaling b);
bool alias(light a, light b);
bool alias(picture a, picture b);
-bool alias(bool[] a, bool[] b);
-bool alias(void()()[] a, void()()[] b);
-bool alias(pen[][] a, pen[][] b);
-bool alias(coord a, coord b);
+bool alias(int[] a, int[] b);
+bool alias(string[][] a, string[][] b);
+bool alias(slice a, slice b);
bool alias(autoscaleT a, autoscaleT b);
bool alias(align a, align b);
-bool alias(object[] a, object[] b);
-bool alias(processtime a, processtime b);
-bool alias(path[] a, path[] b);
-bool alias(triple[] a, triple[] b);
+bool alias(marker[] a, marker[] b);
+bool alias(cputime a, cputime b);
+bool alias(real[][] a, real[][] b);
+bool alias(bool3 a, bool3 b);
bool alias(bool3[] a, bool3[] b);
-bool alias(coord[] a, coord[] b);
-bool alias(coords2 a, coords2 b);
bool alias(freezableBounds a, freezableBounds b);
bool alias(transformation a, transformation b);
bool alias(node a, node b);
bool alias(Label a, Label b);
-bool alias(schur a, schur b);
-bool alias(real[] a, real[] b);
-bool alias(pen[] a, pen[] b);
-bool alias(filltype a, filltype b);
+bool alias(Label[] a, Label[] b);
+bool alias(processtime a, processtime b);
+bool alias(string[] a, string[] b);
+bool alias(frame[] a, frame[] b);
+bool alias(coords2 a, coords2 b);
bool alias(coords3 a, coords3 b);
bool alias(marker a, marker b);
-bool alias(marker[] a, marker[] b);
+bool alias(bool[] a, bool[] b);
+bool alias(void()()[] a, void()()[] b);
+bool alias(pen[][] a, pen[][] b);
+bool alias(marginT a, marginT b);
+bool alias(ScaleT a, ScaleT b);
+bool alias(side a, side b);
+bool alias(picture[] a, picture[] b);
+bool alias(realschur a, realschur b);
+bool alias(path[] a, path[] b);
+bool alias(triple[] a, triple[] b);
+bool alias(coord a, coord b);
+bool alias(projection a, projection b);
+bool alias(pairOrTriple a, pairOrTriple b);
+bool alias(object a, object b);
+bool alias(Legend[] a, Legend[] b);
+bool alias(real[] a, real[] b);
+bool alias(pen[] a, pen[] b);
+bool alias(hsv a, hsv b);
+bool alias(bounds a, bounds b);
+bool alias(scaleT a, scaleT b);
+bool alias(arrowhead a, arrowhead b);
real pi;
int getint(string name=<default>, int default=<default>, string prompt=<default>, bool store=<default>);
int bitreverse(int a, int bits);
bool IgnoreAspect;
void postscript(frame f, string s);
void postscript(frame f, string s, pair min, pair max);
-void postscript(picture pic=<default>, string s, pair min, pair max);
void postscript(picture pic=<default>, string s);
+void postscript(picture pic=<default>, string s, pair min, pair max);
transform slant(real s);
void breakpoint(code s=<default>);
void breakpoints();
@@ -1059,10 +1044,10 @@ real[] sort(real[] a);
real[][] sort(real[][] a);
string[] sort(string[] a);
string[][] sort(string[][] a);
-bool3[] sort(bool3[] a, bool less(bool3, bool3), bool stable=<default>);
coord[] sort(coord[] a, bool less(coord, coord), bool stable=<default>);
-Label[] sort(Label[] a, bool less(Label, Label), bool stable=<default>);
-picture[] sort(picture[] a, bool less(picture, picture), bool stable=<default>);
+object[] sort(object[] a, bool less(object, object), bool stable=<default>);
+marker[] sort(marker[] a, bool less(marker, marker), bool stable=<default>);
+Legend[] sort(Legend[] a, bool less(Legend, Legend), bool stable=<default>);
path[] sort(path[] a, bool less(path, path), bool stable=<default>);
pen[][] sort(pen[][] a, bool less(pen[], pen[]), bool stable=<default>);
pair[][] sort(pair[][] a, bool less(pair[], pair[]), bool stable=<default>);
@@ -1070,10 +1055,9 @@ pen[] sort(pen[] a, bool less(pen, pen), bool stable=<default>);
bool[] sort(bool[] a, bool less(bool, bool), bool stable=<default>);
void()()[] sort(void()()[] a, bool less(void()(), void()()), bool stable=<default>);
frame[] sort(frame[] a, bool less(frame, frame), bool stable=<default>);
-coord[] sort(coord[] a, bool less(coord, coord), bool stable=<default>);
-object[] sort(object[] a, bool less(object, object), bool stable=<default>);
-marker[] sort(marker[] a, bool less(marker, marker), bool stable=<default>);
-Legend[] sort(Legend[] a, bool less(Legend, Legend), bool stable=<default>);
+bool3[] sort(bool3[] a, bool less(bool3, bool3), bool stable=<default>);
+Label[] sort(Label[] a, bool less(Label, Label), bool stable=<default>);
+picture[] sort(picture[] a, bool less(picture, picture), bool stable=<default>);
int[] sort(int[] a, bool less(int, int), bool stable=<default>);
string[][] sort(string[][] a, bool less(string[], string[]), bool stable=<default>);
real[] sort(real[] a, bool less(real, real), bool stable=<default>);
@@ -1091,11 +1075,11 @@ void latticeshade(picture pic=<default>, path[] g, bool stroke=<default>, pen fi
pair[] pairs(real[] x, real[] y);
void eval(code s, bool embedded=<default>);
void eval(string s, bool embedded=<default>);
-bool Arrow(picture, path, pen, marginT(path, pen))(arrowhead arrowhead=<default>, real size=<default>, real angle=<default>, filltype filltype=<default>, position position=<default>);
bool Arrow(picture, path, pen, marginT(path, pen));
+bool Arrow(picture, path, pen, marginT(path, pen))(arrowhead arrowhead=<default>, real size=<default>, real angle=<default>, filltype filltype=<default>, position position=<default>);
void drawTube(frame f, triple[] g, real width, pen[] p, real opacity, real shininess, real metallic, real fresnel0, triple min, triple max, bool core=<default>);
-bool Arrows(picture, path, pen, marginT(path, pen))(arrowhead arrowhead=<default>, real size=<default>, real angle=<default>, filltype filltype=<default>);
bool Arrows(picture, path, pen, marginT(path, pen));
+bool Arrows(picture, path, pen, marginT(path, pen))(arrowhead arrowhead=<default>, real size=<default>, real angle=<default>, filltype filltype=<default>);
int tell(file f);
pen Yellow;
pair up;
@@ -1121,9 +1105,9 @@ pen[] mean(pen[][] palette, real opacity(real[])=<default>);
string mktemp(string s);
void sleep(int seconds);
void drawstrokepath(picture pic=<default>, path g, pen strokepen, pen p=<default>);
+void unitsize(picture pic=<default>, real x, real y=<default>, real z=<default>);
void arrow(picture pic=<default>, Label L=<default>, pair b, pair dir, real length=<default>, align align=<default>, pen p=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>);
picture arrow(arrowhead arrowhead=<default>, path g, pen p=<default>, real size=<default>, real angle=<default>, filltype filltype=<default>, position position=<default>, bool forwards=<default>, marginT margin(path, pen)=<default>, bool center=<default>);
-void unitsize(picture pic=<default>, real x, real y=<default>, real z=<default>);
picture arrow2(arrowhead arrowhead=<default>, path g, pen p=<default>, real size=<default>, real angle=<default>, filltype filltype=<default>, marginT margin(path, pen)=<default>);
path unitsquare;
real arrowdir;
@@ -1169,9 +1153,6 @@ real radius(path3 p, real t);
real radius(triple z0, triple c0, triple c1, triple z1, real t);
transform scaleless(transform t);
void makedraw(frame f, path g, pen p, int depth=<default>);
-simplex simplex(real[] c, real[][] A, real[] b, bool phase1=<default>);
-simplex simplex(real[] c, real[][] A, int[] s, real[] b);
-simplex simplex;
real nan;
pair down;
path arc(pair c, real r, real angle1, real angle2);
@@ -1249,9 +1230,9 @@ pair SW;
void flush(file f);
pen thin();
pen palecyan;
+void warning(string s, string t, bool position=<default>);
frame legend(picture pic=<default>, int perline=<default>, real xmargin=<default>, real ymargin=<default>, real linelength=<default>, real hskip=<default>, real vskip=<default>, real maxwidth=<default>, real maxheight=<default>, bool hstretch=<default>, bool vstretch=<default>, pen p=<default>);
picture legend(Legend[] Legend, int perline=<default>, real linelength, real hskip, real vskip, real maxwidth=<default>, real maxheight=<default>, bool hstretch=<default>, bool vstretch=<default>);
-void warning(string s, string t, bool position=<default>);
real Degrees(real radians);
picture legenditem(Legend legenditem, real linelength);
real legendhskip;
@@ -1298,8 +1279,8 @@ triple operator +(triple a);
triple[] operator +(triple[] a);
pen operator +(pen a, pen b);
transform operator +(transform a, transform b);
-marginT operator +(path, pen)(marginT ma(path, pen), marginT mb(path, pen));
pen operator +(pen p, real w);
+marginT operator +(path, pen)(marginT ma(path, pen), marginT mb(path, pen));
pen[] operator +(pen a, pen[] b);
pen operator +(real w, pen p);
string operator +(... string[] a);
@@ -1376,15 +1357,15 @@ triple operator *(real[][] t, triple v);
triple operator *(real x, triple v);
triple operator *(triple v, real x);
path3 operator *(real[][] t, path3 g);
+picture operator *(real[][] t, picture orig);
bounds operator *(transform t, bounds b);
side operator *(real x, side s);
Label operator *(real[][] t, Label L);
-picture operator *(transform t, picture orig);
path[] operator *(transform t, explicit path[] p);
-object operator *(transform t, explicit object F);
+picture operator *(transform t, picture orig);
pair[] operator *(transform t, pair[] z);
+object operator *(transform t, explicit object F);
Label operator *(transform t, Label L);
-picture operator *(real[][] t, picture orig);
bool operator init();
int operator init();
real operator init();
@@ -1398,41 +1379,37 @@ path3 operator init();
pen operator init();
frame operator init();
file operator init();
-bool3 operator init();
-coord operator init();
-scaling operator init();
+filltype operator init();
+Legend operator init();
+position operator init();
+schur operator init();
+marginT operator init();
ScaleT operator init();
side operator init();
-cputime operator init();
-coord operator init();
+realschur operator init();
+slice operator init();
autoscaleT operator init();
align operator init();
-processtime operator init();
-marginT operator init();
+cputime operator init();
+hsv operator init();
bounds operator init();
scaleT operator init();
arrowhead operator init();
-filltype operator init();
+coords2 operator init();
coords3 operator init();
marker operator init();
-slice operator init();
-simplex operator init();
+scaling operator init();
light operator init();
picture operator init();
-hsv operator init();
+coord operator init();
projection operator init();
pairOrTriple operator init();
object operator init();
-coords2 operator init();
+bool3 operator init();
transformation operator init();
node operator init();
Label operator init();
-schur operator init();
-scaling operator init();
-coords2 operator init();
-Legend operator init();
-position operator init();
-realschur operator init();
+processtime operator init();
real operator cast(int);
pair operator cast(int);
pair operator cast(real);
@@ -1475,32 +1452,32 @@ guide operator cast(cycleToken tok);
guide operator cast(curlSpecifier spec);
guide operator cast(tensionSpecifier t);
guide[] operator cast(path[] g);
+position operator cast(int x);
+hsv operator cast(pen p);
+object operator cast(string s);
bool3[] operator cast(bool[] b);
position operator cast(real x);
Label operator cast(string s);
pair operator cast(pairOrTriple a);
triple operator cast(pairOrTriple a);
-pen operator cast(hsv hsv);
frame operator cast(object F);
-align operator cast(side side);
-hsv operator cast(pen p);
-position operator cast(pair x);
guide[] operator cast(pair[] z);
path[] operator cast(guide[] g);
+bool operator cast(bool3 b);
+position operator cast(pair x);
+path[] operator cast(guide g);
+align operator cast(side side);
pair operator cast(position P);
object operator cast(frame f);
-path[] operator cast(guide g);
-object operator cast(Label L);
-Label operator cast(object F);
-bool operator cast(bool3 b);
-bool[] operator cast(bool3[] b);
-align operator cast(pair dir);
path[] operator cast(pair[] z);
path[] operator cast(path p);
-align operator cast(triple dir);
+bool[] operator cast(bool3[] b);
+align operator cast(pair dir);
+object operator cast(Label L);
+Label operator cast(object F);
bool3 operator cast(bool b);
-position operator cast(int x);
-object operator cast(string s);
+align operator cast(triple dir);
+pen operator cast(hsv hsv);
pen deepred;
bool error(file f);
string operator ecast(int);
@@ -1604,44 +1581,40 @@ bool operator ==(transform a, transform b);
bool operator ==(file a, file b);
bool operator ==(path a, path b);
bool operator ==(path3 a, path3 b);
-bool operator ==(bool a, bool3 b);
-bool operator ==(scaling a, scaling b);
-bool operator ==(coords2 a, coords2 b);
-bool operator ==(Legend a, Legend b);
-bool operator ==(position a, position b);
-bool operator ==(realschur a, realschur b);
-bool operator ==(bool3 a, bool b);
-bool operator ==(slice a, slice b);
-bool operator ==(simplex a, simplex b);
-bool operator ==(light a, light b);
-bool operator ==(picture a, picture b);
-bool operator ==(coord a, coord b);
-bool operator ==(autoscaleT a, autoscaleT b);
-bool operator ==(align a, align b);
-bool operator ==(processtime a, processtime b);
-bool operator ==(coords2 a, coords2 b);
+bool operator ==(bool3 a, bool3 b);
bool operator ==(freezableBounds a, freezableBounds b);
bool operator ==(transformation a, transformation b);
bool operator ==(node a, node b);
bool operator ==(Label a, Label b);
-bool operator ==(schur a, schur b);
-bool operator ==(filltype a, filltype b);
+bool operator ==(processtime a, processtime b);
+bool operator ==(coords2 a, coords2 b);
bool operator ==(coords3 a, coords3 b);
bool operator ==(marker a, marker b);
-bool operator ==(bool3 a, bool3 b);
-bool operator ==(coord a, coord b);
-bool operator ==(scaling a, scaling b);
+bool operator ==(marginT a, marginT b);
bool operator ==(ScaleT a, ScaleT b);
bool operator ==(side a, side b);
-bool operator ==(cputime a, cputime b);
-bool operator ==(hsv a, hsv b);
+bool operator ==(realschur a, realschur b);
+bool operator ==(coord a, coord b);
bool operator ==(projection a, projection b);
bool operator ==(pairOrTriple a, pairOrTriple b);
bool operator ==(object a, object b);
-bool operator ==(marginT a, marginT b);
+bool operator ==(hsv a, hsv b);
bool operator ==(bounds a, bounds b);
bool operator ==(scaleT a, scaleT b);
bool operator ==(arrowhead a, arrowhead b);
+bool operator ==(bool3 a, bool b);
+bool operator ==(filltype a, filltype b);
+bool operator ==(Legend a, Legend b);
+bool operator ==(position a, position b);
+bool operator ==(schur a, schur b);
+bool operator ==(scaling a, scaling b);
+bool operator ==(light a, light b);
+bool operator ==(picture a, picture b);
+bool operator ==(bool a, bool3 b);
+bool operator ==(slice a, slice b);
+bool operator ==(autoscaleT a, autoscaleT b);
+bool operator ==(align a, align b);
+bool operator ==(cputime a, cputime b);
bool operator !=(bool a, bool b);
bool[] operator !=(bool a, bool[] b);
bool[] operator !=(bool[] a, bool b);
@@ -1678,44 +1651,40 @@ bool operator !=(transform a, transform b);
bool operator !=(file a, file b);
bool operator !=(path a, path b);
bool operator !=(path3 a, path3 b);
-bool operator !=(bool a, bool3 b);
-bool operator !=(scaling a, scaling b);
-bool operator !=(coords2 a, coords2 b);
-bool operator !=(Legend a, Legend b);
-bool operator !=(position a, position b);
-bool operator !=(realschur a, realschur b);
-bool operator !=(bool3 a, bool b);
-bool operator !=(slice a, slice b);
-bool operator !=(simplex a, simplex b);
-bool operator !=(light a, light b);
-bool operator !=(picture a, picture b);
-bool operator !=(coord a, coord b);
-bool operator !=(autoscaleT a, autoscaleT b);
-bool operator !=(align a, align b);
-bool operator !=(processtime a, processtime b);
-bool operator !=(coords2 a, coords2 b);
+bool operator !=(bool3 a, bool3 b);
bool operator !=(freezableBounds a, freezableBounds b);
bool operator !=(transformation a, transformation b);
bool operator !=(node a, node b);
bool operator !=(Label a, Label b);
-bool operator !=(schur a, schur b);
-bool operator !=(filltype a, filltype b);
+bool operator !=(processtime a, processtime b);
+bool operator !=(coords2 a, coords2 b);
bool operator !=(coords3 a, coords3 b);
bool operator !=(marker a, marker b);
-bool operator !=(bool3 a, bool3 b);
-bool operator !=(coord a, coord b);
-bool operator !=(scaling a, scaling b);
+bool operator !=(marginT a, marginT b);
bool operator !=(ScaleT a, ScaleT b);
bool operator !=(side a, side b);
-bool operator !=(cputime a, cputime b);
-bool operator !=(hsv a, hsv b);
+bool operator !=(realschur a, realschur b);
+bool operator !=(coord a, coord b);
bool operator !=(projection a, projection b);
bool operator !=(pairOrTriple a, pairOrTriple b);
bool operator !=(object a, object b);
-bool operator !=(marginT a, marginT b);
+bool operator !=(hsv a, hsv b);
bool operator !=(bounds a, bounds b);
bool operator !=(scaleT a, scaleT b);
bool operator !=(arrowhead a, arrowhead b);
+bool operator !=(bool3 a, bool b);
+bool operator !=(filltype a, filltype b);
+bool operator !=(Legend a, Legend b);
+bool operator !=(position a, position b);
+bool operator !=(schur a, schur b);
+bool operator !=(scaling a, scaling b);
+bool operator !=(light a, light b);
+bool operator !=(picture a, picture b);
+bool operator !=(bool a, bool3 b);
+bool operator !=(slice a, slice b);
+bool operator !=(autoscaleT a, autoscaleT b);
+bool operator !=(align a, align b);
+bool operator !=(cputime a, cputime b);
bool operator <(int a, int b);
bool[] operator <(int a, int[] b);
bool[] operator <(int[] a, int b);
@@ -1741,7 +1710,6 @@ bool[] operator <=(string a, string[] b);
bool[] operator <=(string[] a, string b);
bool[] operator <=(string[] a, string[] b);
bool operator <=(coord a, coord b);
-bool operator <=(coord a, coord b);
void srand(int seed);
bool operator >(int a, int b);
bool[] operator >(int a, int[] b);
@@ -1768,7 +1736,6 @@ bool[] operator >=(string a, string[] b);
bool[] operator >=(string[] a, string b);
bool[] operator >=(string[] a, string[] b);
bool operator >=(coord a, coord b);
-bool operator >=(coord a, coord b);
filltype UnFill(real xmargin=<default>, real ymargin=<default>);
filltype UnFill;
real degrees(pair z, bool warn=<default>);
@@ -1794,8 +1761,8 @@ guide operator ..(... guide[])(tensionSpecifier t);
path polygon(int n);
guide operator --(... guide[]);
guide operator ---(... guide[]);
-void()()[] saveFunctions;
pen NewCenturySchoolBook(string series=<default>, string shape=<default>);
+void()()[] saveFunctions;
bool operator &(bool a, bool b);
bool[] operator &(bool a, bool[] b);
bool[] operator &(bool[] a, bool b);
@@ -1862,15 +1829,15 @@ real dot(real[] a, real[] b);
pair dot(pair[] a, pair[] b);
real dot(explicit pair z, explicit pair w);
real dot(triple u, triple v);
-void dot(picture pic=<default>, Label L, pair z, align align=<default>, string format=<default>, pen p=<default>, filltype filltype=<default>);
-void dot(picture pic=<default>, Label[] L=<default>, explicit path g, align align=<default>, string format=<default>, pen p=<default>, filltype filltype=<default>);
marker dot(pen p=<default>, filltype filltype=<default>);
void dot(picture pic=<default>, pair z, pen p=<default>, filltype filltype=<default>);
void dot(frame f, pair z, pen p=<default>, filltype filltype=<default>);
-marker dot;
void dot(picture pic=<default>, Label L, pen p=<default>, filltype filltype=<default>);
void dot(picture pic=<default>, Label[] L=<default>, pair[] z, align align=<default>, string format=<default>, pen p=<default>, filltype filltype=<default>);
void dot(picture pic=<default>, path[] g, pen p=<default>, filltype filltype=<default>);
+marker dot;
+void dot(picture pic=<default>, Label L, pair z, align align=<default>, string format=<default>, pen p=<default>, filltype filltype=<default>);
+void dot(picture pic=<default>, Label[] L=<default>, explicit path g, align align=<default>, string format=<default>, pen p=<default>, filltype filltype=<default>);
void list(string s, bool imports=<default>);
pair NNW;
string phantom(string s);
@@ -1903,13 +1870,12 @@ void _draw(frame f, path g, pen p);
void _draw(frame f, path3 g, triple center=<default>, pen[] p, real opacity, real shininess, real metallic, real fresnel0, int interaction=<default>);
void _draw(picture pic, path g, pen p, marginT margin(path, pen));
frame align(frame f, pair align);
-path[] align(path[] g, transform t=<default>, pair position, pair align, pen p=<default>);
object align(object F, pair align);
+path[] align(path[] g, transform t=<default>, pair position, pair align, pen p=<default>);
real unitrand();
string[] history(string name, int n=<default>);
string[] history(int n=<default>);
coord[] maxcoords(coord[] in, bool operator <=(coord, coord));
-coord[] maxcoords(coord[] in, bool operator <=(coord, coord));
pen AvantGarde(string series=<default>, string shape=<default>);
frame enclose(string prefix=<default>, object F, string format=<default>);
int count;
@@ -1951,8 +1917,8 @@ void abort(string s=<default>);
bool Aspect;
string hex(pen p);
int hex(string s);
-path brace(pair a, pair b, real amplitude=<default>);
void deactivatequote(picture pic=<default>);
+path brace(pair a, pair b, real amplitude=<default>);
string format(string format, int x, string locale=<default>);
string format(string format, bool forcemath=<default>, string separator, real x, string locale=<default>);
string format(string format=<default>, bool forcemath=<default>, real x, string locale=<default>);
@@ -1981,16 +1947,16 @@ real braceinnerangle;
real braceouterangle;
void tex(frame f, string s);
void tex(frame f, string s, pair min, pair max);
-void tex(picture pic=<default>, string s, pair min, pair max);
void tex(picture pic=<default>, string s);
+void tex(picture pic=<default>, string s, pair min, pair max);
real bracedefaultratio;
bool prconly(string format=<default>);
pen Black;
triple size3(frame f);
void size3(picture pic=<default>, real x, real y=<default>, real z=<default>, bool keepAspect=<default>);
bool eof(file f);
-frame dotframe(pen p=<default>, filltype filltype=<default>);
frame dotframe;
+frame dotframe(pen p=<default>, filltype filltype=<default>);
real realMax;
pair NE;
real realMin;
@@ -2007,7 +1973,6 @@ pair[][] fft(pair[][] a, int sign=<default>);
pair[][][] fft(pair[][][] a, int sign=<default>);
pair SE;
pen nobasealign;
-sCAD operator init();
real animationdelay;
animation operator init();
frame NoBox(frame f);
@@ -2054,6 +2019,16 @@ bsp operator init();
picture operator cast(face f);
face operator cast(path3 p);
void add(picture pic=<default>, face[] faces, projection P=<default>);
+sCAD operator init();
+surface surface(vertex[][] g);
+weighted operator init();
+bucket operator init();
+vertex operator init();
+object operator init();
+vertex[][] contour3(triple[][][] v, real[][][] f, real[][][] midpoint=<default>, projection P=<default>);
+vertex[][] contour3(real[][][] f, real[][][] midpoint=<default>, triple a, triple b, projection P=<default>);
+vertex[][] contour3(real f(real, real, real), triple a, triple b, int nx=<default>, int ny=<default>, int nz=<default>, projection P=<default>);
+real eps;
segment case1(pair p0, pair p1, int edge);
void draw(picture pic=<default>, Label[] L=<default>, guide[][] g, pen[] p);
void draw(picture pic=<default>, Label[] L=<default>, guide[][] g, pen p=<default>);
@@ -2073,15 +2048,6 @@ guide[][] contour(picture pic=<default>, real f(real, real), pair a, pair b, rea
guide[][] contour(picture pic=<default>, real f(pair), pair a, pair b, real[] c, int nx=<default>, int ny=<default>, guide join(... guide[])=<default>);
guide[][] contour(picture pic=<default>, pair[] z, real[] f, real[] c, guide join(... guide[])=<default>);
real eps;
-surface surface(vertex[][] g);
-weighted operator init();
-bucket operator init();
-vertex operator init();
-object operator init();
-vertex[][] contour3(triple[][][] v, real[][][] f, real[][][] midpoint=<default>, projection P=<default>);
-vertex[][] contour3(real[][][] f, real[][][] midpoint=<default>, triple a, triple b, projection P=<default>);
-vertex[][] contour3(real f(real, real, real), triple a, triple b, int nx=<default>, int ny=<default>, int nz=<default>, projection P=<default>);
-real eps;
void draw(TreeNode root, pair pos);
real treeNodeStep;
void drawAll(TreeNode node, frame f);
@@ -2108,12 +2074,12 @@ void drawVertexX(picture pic=<default>, pair xy, real r=<default>, pen fgpen=<de
void drawVertexBox(picture pic=<default>, pair xy, real r=<default>, pen fgpen=<default>);
void drawVertexBoxO(picture pic=<default>, pair xy, real r=<default>, pen fgpen=<default>, bool erasebg=<default>, pen bgpen=<default>);
void drawVertexOX(picture pic=<default>, pair xy, real r=<default>, pen fgpen=<default>, bool erasebg=<default>, pen bgpen=<default>);
-void drawVertexBoxX(picture pic=<default>, pair xy, real r=<default>, pen fgpen=<default>, bool erasebg=<default>, pen bgpen=<default>);
void drawVertexTriangle(picture pic=<default>, pair xy, real r=<default>, pen fgpen=<default>);
void drawVertexTriangleO(picture pic=<default>, pair xy, real r=<default>, pen fgpen=<default>, bool erasebg=<default>, pen bgpen=<default>);
-void do_overpaint(picture pic, path p, pen bgpen, real halfwidth, real vertexangle);
+void drawVertexBoxX(picture pic=<default>, pair xy, real r=<default>, pen fgpen=<default>, bool erasebg=<default>, pen bgpen=<default>);
pen doublelinepen;
real doublelinespacing;
+void do_overpaint(picture pic, path p, pen bgpen, real halfwidth, real vertexangle);
void texshipout(string stem, picture pic=<default>, bool xalign=<default>);
bool XYAlign;
void drawDoubleLine(picture pic=<default>, path p, pen fgpen=<default>, real dlspacing=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, bool erasebg=<default>, pen bgpen=<default>, real vertexangle=<default>, real margin=<default>);
@@ -2141,8 +2107,8 @@ pen fermionpen;
pen bigvertexpen;
real bigvertexsize;
real minvertexangle;
-void drawMomArrow(picture pic=<default>, path p, align align, position pos=<default>, real offset=<default>, real length=<default>, pen fgpen=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, bool erasebg=<default>, pen bgpen=<default>, real margin=<default>);
pen ghostpen;
+void drawMomArrow(picture pic=<default>, path p, align align, position pos=<default>, real offset=<default>, real length=<default>, pen fgpen=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, bool erasebg=<default>, pen bgpen=<default>, real margin=<default>);
void fmdefaults();
real linemargin;
void drawFermion(picture pic=<default>, path p, pen fgpen=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, bool erasebg=<default>, pen bgpen=<default>, real vertexangle=<default>, real margin=<default>);
@@ -2187,6 +2153,12 @@ point circumcenter(point A, point B, point C);
point circumcenter(triangle t);
circle circumcircle(point A, point B, point C);
circle circumcircle(triangle t);
+line altitude(vertex V);
+line altitude(side side);
+point isogonalconjugate(triangle t, point M);
+point isogonal(side side, point M);
+line isogonal(vertex V, point M);
+triangle isogonal(triangle t, point M);
point point(coordsys R, pair p, real m=<default>);
point point(explicit pair p, real m);
point point(coordsys R, explicit point M, real m=<default>);
@@ -2217,13 +2189,7 @@ point point(explicit vertex V);
point point(trilinear tri);
point point(circle c, point M);
point point(circle c, explicit vector v);
-line altitude(vertex V);
-line altitude(side side);
bool finite(explicit point p);
-point isogonalconjugate(triangle t, point M);
-point isogonal(side side, point M);
-line isogonal(vertex V, point M);
-triangle isogonal(triangle t, point M);
void dot(picture pic=<default>, Label L, explicit point Z, align align=<default>, string format=<default>, pen p=<default>);
real dot(point A, point B);
real dot(point A, explicit pair B);
@@ -2284,8 +2250,8 @@ bool defined(point P);
string conictype(bqe bqe);
triangle antipedal(triangle t, point M);
void clipdraw(picture pic=<default>, Label L=<default>, path g, align align=<default>, pen p=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, bool bar(picture, path, pen, marginT(path, pen))=<default>, real xmargin=<default>, real ymargin=<default>, Label legend=<default>, marker marker=<default>);
-int conicnodesfactor;
real perpfactor;
+int conicnodesfactor;
int conicnodesnumber(conic co, real angle1, real angle2, bool dir=<default>);
line hline(coordsys R=<default>);
line hline;
@@ -2309,6 +2275,7 @@ point orthocenter(point A, point B, point C);
point orthocenter(triangle t);
line extend(line l);
point intersectionpoint(line l1, line l2);
+point[] standardizecoordsys(coordsys R=<default>, bool warn=<default> ... point[] M);
pair[] intersectionpoints(pair A, pair B, real a, real b, real c, real d, real f, real g);
pair[] intersectionpoints(pair A, pair B, real[] equation);
point[] intersectionpoints(line l, path g);
@@ -2355,7 +2322,6 @@ point intouch(side side);
triangle intouch(triangle t);
real rf(real x, real y, real z);
bool concurrent(... line[] l);
-point[] standardizecoordsys(coordsys R=<default>, bool warn=<default> ... point[] M);
real inradius(point A, point B, point C);
real inradius(triangle t);
pen addpenline;
@@ -2432,6 +2398,7 @@ int nodesystem;
bool collinear(vector u, vector v);
point centroid(point A, point B, point C);
point centroid(triangle t);
+bool between(point M, point O, point N);
int angularsystem;
path square(pair z1, pair z2);
void filldraw(picture pic=<default>, circle c, pen fillpen=<default>, pen drawpen=<default>);
@@ -2460,7 +2427,6 @@ vector changecoordsys(coordsys R, vector v);
line changecoordsys(coordsys R, line l);
bqe changecoordsys(coordsys R, bqe bqe);
conic changecoordsys(coordsys R, conic co);
-bool between(point M, point O, point N);
real angle(explicit point M, coordsys R=<default>, bool warn=<default>);
real angle(explicit vector v, coordsys R=<default>, bool warn=<default>);
real angle(line l, coordsys R=<default>);
@@ -2513,6 +2479,9 @@ line[] complementary(explicit segment s);
arc complementary(arc a);
point ppoint(arc a, real x);
path fromFocus(conic co, real angle1, real angle2, int n, bool direction);
+segment segment(point A, point B);
+segment segment(line l);
+segment segment(explicit side side);
bool sameside(point M, point N, point O);
bool sameside(point M, point P, line l);
point[] sameside(point M, line l1, line l2);
@@ -2747,9 +2716,6 @@ triangle triangle(line l1, line l2, line l3);
trilinear trilinear(triangle t, real a, real b, real c);
trilinear trilinear(triangle t, point M);
trilinear trilinear(triangle t, real f(real, real, real), real a=<default>, real b=<default>, real c=<default>);
-segment segment(point A, point B);
-segment segment(line l);
-segment segment(explicit side side);
triangle triangleAbc(real alpha, real b, real c, real angle=<default>, point A=<default>);
triangle triangleabc(real a, real b, real c, real angle=<default>, point A=<default>);
triangle anticomplementary(triangle t);
@@ -2769,14 +2735,14 @@ real approximate(real t);
real[] approximate(real[] T);
void markangle(picture pic=<default>, Label L=<default>, int n=<default>, real radius=<default>, real space=<default>, explicit line l1, explicit line l2, explicit pair align=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, pen p=<default>, filltype filltype=<default>, marginT margin(path, pen)=<default>, marker marker=<default>);
void markangle(picture pic=<default>, Label L=<default>, int n=<default>, real radius=<default>, real space=<default>, explicit line l1, explicit line l2, explicit vector align, bool arrow(picture, path, pen, marginT(path, pen))=<default>, pen p=<default>, filltype filltype=<default>, marginT margin(path, pen)=<default>, marker marker=<default>);
+triangle cevian(triangle t, point P);
+point cevian(side side, point P);
+line cevian(vertex V, point P);
transform hprojection(line l, bool safe=<default>);
point conj(explicit point M);
vector conj(explicit vector u);
hyperbola conj(hyperbola h);
transform vprojection(line l, bool safe=<default>);
-triangle cevian(triangle t, point P);
-point cevian(side side, point P);
-line cevian(vertex V, point P);
parabola parabola(point F, line l);
parabola parabola(point F, point vertex);
parabola parabola(point F, real a, real angle);
@@ -2845,6 +2811,8 @@ string massformat(string format=<default>, string s, mass M);
int relativesystem;
void drawline(picture pic=<default>, triangle t, pen p=<default>);
void addMargins(picture pic=<default>, real lmargin=<default>, real bmargin=<default>, real rmargin=<default>, real tmargin=<default>, bool rigid=<default>, bool allObject=<default>);
+real[] bangles(picture pic=<default>, parabola p);
+real[][] bangles(picture pic=<default>, hyperbola h);
triangle medial(triangle t);
line median(vertex V);
line median(side side);
@@ -2863,8 +2831,127 @@ abscissa curabscissa(ellipse el, point M);
abscissa curabscissa(parabola p, point M);
abscissa curabscissa(conic co, point M);
abscissa curabscissa(arc a, point M);
-real[] bangles(picture pic=<default>, parabola p);
-real[][] bangles(picture pic=<default>, hyperbola h);
+locateT operator init();
+void Straight(flatguide3)(... void(flatguide3)[]);
+void graph(flatguide3)(triple F(real), real, real, int)(void join(flatguide3)(... void(flatguide3)[]));
+void(flatguide3)[] graph(triple F(real), real, real, int)(void join(flatguide3)(... void(flatguide3)[]), bool3 cond(real));
+void graph(flatguide3)(picture pic=<default>, real x(real), real y(real), real z(real), real a, real b, int n=<default>, void join(flatguide3)(... void(flatguide3)[])=<default>);
+void(flatguide3)[] graph(picture pic=<default>, real x(real), real y(real), real z(real), real a, real b, int n=<default>, bool3 cond(real), void join(flatguide3)(... void(flatguide3)[])=<default>);
+void graph(flatguide3)(picture pic=<default>, triple v(real), real a, real b, int n=<default>, void join(flatguide3)(... void(flatguide3)[])=<default>);
+void(flatguide3)[] graph(picture pic=<default>, triple v(real), real a, real b, int n=<default>, bool3 cond(real), void join(flatguide3)(... void(flatguide3)[])=<default>);
+void graph(flatguide3)(picture pic=<default>, triple[] v, void join(flatguide3)(... void(flatguide3)[])=<default>);
+void(flatguide3)[] graph(picture pic=<default>, triple[] v, bool3[] cond, void join(flatguide3)(... void(flatguide3)[])=<default>);
+void graph(flatguide3)(picture pic=<default>, real[] x, real[] y, real[] z, void join(flatguide3)(... void(flatguide3)[])=<default>);
+void(flatguide3)[] graph(picture pic=<default>, real[] x, real[] y, real[] z, bool3[] cond, void join(flatguide3)(... void(flatguide3)[])=<default>);
+void graph(flatguide3)(triple F(path, real), path p, int n=<default>, void join(flatguide3)(... void(flatguide3)[])=<default>);
+void graph(flatguide3)(triple F(pair), path p, int n=<default>, void join(flatguide3)(... void(flatguide3)[])=<default>);
+void graph(flatguide3)(picture pic=<default>, real f(pair), path p, int n=<default>, void join(flatguide3)(... void(flatguide3)[])=<default>);
+void graph(flatguide3)(real f(pair), path p, int n=<default>, real T(pair), void join(flatguide3)(... void(flatguide3)[])=<default>);
+void(flatguide3)[][] lift(real f(real x, real y), guide[][] g, void join(flatguide3)(... void(flatguide3)[])=<default>);
+void(flatguide3)[][] lift(real f(pair z), guide[][] g, void join(flatguide3)(... void(flatguide3)[])=<default>);
+triple polar(real r, real theta, real phi);
+void polargraph(flatguide3)(real r(real, real), real theta(real), real phi(real), int n=<default>, void join(flatguide3)(... void(flatguide3)[])=<default>);
+void xaxis3At(picture pic=<default>, Label L=<default>, void axis(picture, axisT), real xmin=<default>, real xmax=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, bool above=<default>, bool opposite=<default>, bool opposite2=<default>, bool primary=<default>);
+void yaxis3At(picture pic=<default>, Label L=<default>, void axis(picture, axisT), real ymin=<default>, real ymax=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, bool above=<default>, bool opposite=<default>, bool opposite2=<default>, bool primary=<default>);
+void zaxis3At(picture pic=<default>, Label L=<default>, void axis(picture, axisT), real zmin=<default>, real zmax=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, bool above=<default>, bool opposite=<default>, bool opposite2=<default>, bool primary=<default>);
+void xaxis3(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, real xmin=<default>, real xmax=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, bool above=<default>);
+void yaxis3(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, real ymin=<default>, real ymax=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, bool above=<default>);
+void zaxis3(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, real zmin=<default>, real zmax=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, bool above=<default>);
+bool uperiodic(real[][] a);
+bool uperiodic(triple[][] a);
+bool vperiodic(real[][] a);
+bool vperiodic(triple[][] a);
+void OutTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, int N=<default>, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, tickvalues modify(tickvalues)=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>);
+void OutTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, real[] Ticks, real[] ticks=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>);
+void OutTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>);
+void axis(picture pic=<default>, Label L=<default>, path3 g, path3 g2=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>), ticklocate locate, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, int[] divisor=<default>, bool above=<default>, bool opposite=<default>);
+void Bounds(picture, axisT)(int type=<default>, int type2=<default>, triple align=<default>, bool extend=<default>);
+void Bounds(picture, axisT);
+void XZZero(picture, axisT)(triple align=<default>, bool extend=<default>);
+void XZZero(picture, axisT);
+void YZZero(picture, axisT)(triple align=<default>, bool extend=<default>);
+void YZZero(picture, axisT);
+surface surface(picture pic=<default>, triple[][] f, bool[][] cond=<default>);
+surface surface(picture pic=<default>, real[][] f, real[] x, real[] y, real[] xsplinetype(real[], real[])=<default>, real[] ysplinetype(real[], real[])=<default>, bool[][] cond=<default>);
+surface surface(picture pic=<default>, real[][] f, pair a, pair b, real[] xsplinetype(real[], real[]), real[] ysplinetype(real[], real[])=<default>, bool[][] cond=<default>);
+surface surface(picture pic=<default>, real[][] f, pair a, pair b, bool[][] cond=<default>);
+surface surface(picture pic=<default>, triple f(pair z), pair a, pair b, int nu=<default>, int nv=<default>, bool cond(pair z)=<default>);
+surface surface(picture pic=<default>, triple f(pair z), real[] u, real[] v, real[](real[], real[])[] usplinetype, real[](real[], real[])[] vsplinetype=<default>, bool cond(pair z)=<default>);
+surface surface(picture pic=<default>, triple f(pair z), pair a, pair b, int nu=<default>, int nv=<default>, real[](real[], real[])[] usplinetype, real[](real[], real[])[] vsplinetype=<default>, bool cond(pair z)=<default>);
+surface surface(picture pic=<default>, real f(pair z), pair a, pair b, int nx=<default>, int ny=<default>, bool cond(pair z)=<default>);
+surface surface(picture pic=<default>, real f(pair z), pair a, pair b, int nx=<default>, int ny=<default>, real[] xsplinetype(real[], real[]), real[] ysplinetype(real[], real[])=<default>, bool cond(pair z)=<default>);
+void XYEquals(picture, axisT)(real x, real y, triple align=<default>, bool extend=<default>);
+triple Dir(real)(triple dir);
+void draw(picture pic=<default>, Label[] L=<default>, void(flatguide3)[][] g, pen[] p, light light=<default>, string name=<default>, render render=<default>, interaction interaction=<default>);
+void draw(picture pic=<default>, Label[] L=<default>, void(flatguide3)[][] g, pen p=<default>, light light=<default>, string name=<default>, render render=<default>, interaction interaction=<default>);
+void Ticks3(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)(int sign, Label F=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, real[] Ticks=<default>, real[] ticks=<default>, int N=<default>, bool begin=<default>, bool end=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>);
+void Ticks3(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)(int sign, Label F=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, int N, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, tickvalues modify(tickvalues)=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>);
+real maxlength(triple f(pair z), pair a, pair b, int nu, int nv);
+void drawtick(picture pic, real[][] T, path3 g, path3 g2, ticklocate locate, real val, real Size, int sign, pen p, bool extend);
+triple tickMin3(picture pic);
+triple tickMax3(picture pic);
+triple Scale(picture pic=<default>, triple v);
+triple[][] Scale(picture pic=<default>, triple[][] P);
+real ScaleX(picture pic=<default>, real x);
+real ScaleY(picture pic=<default>, real y);
+real ScaleZ(picture pic=<default>, real z);
+real[][] ScaleZ(picture pic=<default>, real[][] P);
+picture vectorfield(path3 vector(pair v), triple f(pair z), pair a, pair b, int nu=<default>, int nv=<default>, bool truesize=<default>, real maxlength=<default>, bool cond(pair z)=<default>, pen p=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, string name=<default>, render render=<default>);
+path3 Circle(triple c, real r, triple normal=<default>, int n=<default>);
+void InTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, int N=<default>, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, tickvalues modify(tickvalues)=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>);
+void InTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, real[] Ticks, real[] ticks=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>);
+void InTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>);
+void Spline(flatguide3)(... void(flatguide3)[]);
+void InOutTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, int N=<default>, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, tickvalues modify(tickvalues)=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>);
+void InOutTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, real[] Ticks, real[] ticks=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>);
+void InOutTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>);
+void axes3(picture pic=<default>, Label xlabel=<default>, Label ylabel=<default>, Label zlabel=<default>, bool extend=<default>, triple min=<default>, triple max=<default>, pen p=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>);
+void label(picture pic, Label L, triple v, real x, align align, string format, pen p);
+void labelx(picture pic=<default>, Label L=<default>, triple v, align align=<default>, string format=<default>, pen p=<default>);
+void labelx3(picture pic=<default>, Label L=<default>, real x, align align=<default>, string format=<default>, pen p=<default>);
+void labeltick(picture pic, real[][] T, path3 g, ticklocate locate, real val, int sign, real Size, string ticklabel(real), Label F, real norm=<default>);
+void labelaxis(picture pic, real[][] T, Label L, path3 g, ticklocate locate=<default>, int sign=<default>, bool ticklabels=<default>);
+void labely(picture pic=<default>, Label L=<default>, triple v, align align=<default>, string format=<default>, pen p=<default>);
+void labely3(picture pic=<default>, Label L=<default>, real y, align align=<default>, string format=<default>, pen p=<default>);
+void labelz(picture pic=<default>, Label L=<default>, triple v, align align=<default>, string format=<default>, pen p=<default>);
+void labelz3(picture pic=<default>, Label L=<default>, real z, align align=<default>, string format=<default>, pen p=<default>);
+void autoscale3(picture pic=<default>, void axis(picture, axisT));
+void xtick(picture pic=<default>, triple v, triple dir=<default>, real size=<default>, pen p=<default>);
+void xtick(picture pic=<default>, Label L, triple v, triple dir=<default>, string format=<default>, real size=<default>, pen p=<default>);
+void xtick3(picture pic=<default>, real x, triple dir=<default>, real size=<default>, pen p=<default>);
+void xtick3(picture pic=<default>, Label L, real x, triple dir=<default>, string format=<default>, real size=<default>, pen p=<default>);
+void ytick(picture pic=<default>, triple v, triple dir=<default>, real size=<default>, pen p=<default>);
+void ytick(picture pic=<default>, Label L, triple v, triple dir=<default>, string format=<default>, real size=<default>, pen p=<default>);
+void ytick3(picture pic=<default>, real y, triple dir=<default>, real size=<default>, pen p=<default>);
+void ytick3(picture pic=<default>, Label L, real y, triple dir=<default>, string format=<default>, real size=<default>, pen p=<default>);
+void ztick(picture pic=<default>, triple v, triple dir=<default>, real size=<default>, pen p=<default>);
+void ztick(picture pic=<default>, Label L, triple v, triple dir=<default>, string format=<default>, real size=<default>, pen p=<default>);
+void ztick3(picture pic=<default>, real z, triple dir=<default>, real size=<default>, pen p=<default>);
+void ztick3(picture pic=<default>, Label L, real z, triple dir=<default>, string format=<default>, real size=<default>, pen p=<default>);
+triple defaultdir(triple X, triple Y, triple Z, bool opposite=<default>, projection P);
+real xtrans(real[][] t, real x);
+real ytrans(real[][] t, real y);
+real ztrans(real[][] t, real z);
+ticklocate ticklocate(real a, real b, autoscaleT S=<default>, real tickmin=<default>, real tickmax=<default>, real time(real)=<default>, triple dir(real));
+triple ticklabelshift(triple align, pen p=<default>);
+path3 Arc(triple c, triple v1, triple v2, triple normal=<default>, bool direction=<default>, int n=<default>);
+path3 Arc(triple c, real r, real theta1, real phi1, real theta2, real phi2, triple normal=<default>, bool direction, int n=<default>);
+path3 Arc(triple c, real r, real theta1, real phi1, real theta2, real phi2, triple normal=<default>, int n=<default>);
+void limits(picture pic=<default>, triple min, triple max);
+void XZEquals(picture, axisT)(real x, real z, triple align=<default>, bool extend=<default>);
+void YZEquals(picture, axisT)(real y, real z, triple align=<default>, bool extend=<default>);
+void XYZero(picture, axisT)(triple align=<default>, bool extend=<default>);
+void XYZero(picture, axisT);
+void zlimits(picture pic=<default>, real min=<default>, real max=<default>, bool crop=<default>);
+void tick(picture pic=<default>, triple v, triple dir, real size=<default>, pen p=<default>);
+void tick(picture pic=<default>, Label L, real value, triple v, triple dir, string format=<default>, real size=<default>, pen p=<default>);
+surface bispline(real[][] z, real[][] p, real[][] q, real[][] r, real[] x, real[] y, bool[][] cond=<default>);
+real[][][] bispline(real[][] f, real[] x, real[] y, real[] xsplinetype(real[], real[])=<default>, real[] ysplinetype(real[], real[])=<default>, bool[][] cond=<default>);
+real[][][] bispline0(real[][] z, real[][] p, real[][] q, real[][] r, real[] x, real[] y, bool[][] cond=<default>);
+path3[] segment(triple[] v, bool[] cond, void join(flatguide3)(... void(flatguide3)[])=<default>);
+real[] uniform(real T(real x), real Tinv(real x), real a, real b, int n);
+void NoTicks3(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)();
+void NoTicks3(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>);
string DefaultFormat(real);
string DefaultLogFormat(real)(int base);
string DefaultLogFormat(real);
@@ -2908,9 +2995,6 @@ picture vectorfield(path vector(pair), pair a, pair b, int nx=<default>, int ny=
string OmitFormat(real)(string s=<default> ... real[] x);
guide Straight(... guide[]);
int Min;
-tickvalues OmitTickIntervals(tickvalues)(real[] a, real[] b);
-tickvalues OmitTickInterval(tickvalues)(real a, real b);
-tickvalues OmitTick(tickvalues)(... real[] x);
string trailingzero;
void label(picture pic, Label L, pair z, real x, align align, string format, pen p);
void labelx(picture pic=<default>, Label L=<default>, explicit pair z, align align=<default>, string format=<default>, pen p=<default>);
@@ -2919,13 +3003,14 @@ void labelx(picture pic=<default>, Label L, string format=<default>, explicit pe
path Arc(pair c, real r, real angle1, real angle2, bool direction, int n=<default>);
path Arc(pair c, real r, real angle1, real angle2, int n=<default>);
path Arc(pair c, explicit pair z1, explicit pair z2, bool direction=<default>, int n=<default>);
+pair labeltick(frame d, transform T, path g, ticklocate locate, real val, pair side, int sign, real Size, string ticklabel(real), Label F, real norm=<default>);
+void labelaxis(frame f, transform T, Label L, path g, ticklocate locate=<default>, int sign=<default>, bool ticklabels=<default>);
void labely(picture pic=<default>, Label L=<default>, explicit pair z, align align=<default>, string format=<default>, pen p=<default>);
void labely(picture pic=<default>, Label L=<default>, real y, align align=<default>, string format=<default>, pen p=<default>);
void labely(picture pic=<default>, Label L, string format=<default>, explicit pen p=<default>);
-pair labeltick(frame d, transform T, path g, ticklocate locate, real val, pair side, int sign, real Size, string ticklabel(real), Label F, real norm=<default>);
-void labelaxis(frame f, transform T, Label L, path g, ticklocate locate=<default>, int sign=<default>, bool ticklabels=<default>);
-picture secondaryX(picture primary=<default>, void f(picture));
-picture secondaryY(picture primary=<default>, void f(picture));
+tickvalues OmitTickIntervals(tickvalues)(real[] a, real[] b);
+tickvalues OmitTickInterval(tickvalues)(real a, real b);
+tickvalues OmitTick(tickvalues)(... real[] x);
void xtick(picture pic=<default>, explicit pair z, pair dir=<default>, real size=<default>, pen p=<default>);
void xtick(picture pic=<default>, real x, pair dir=<default>, real size=<default>, pen p=<default>);
void xtick(picture pic=<default>, Label L, explicit pair z, pair dir=<default>, string format=<default>, real size=<default>, pen p=<default>);
@@ -2934,6 +3019,8 @@ void ytick(picture pic=<default>, explicit pair z, pair dir=<default>, real size
void ytick(picture pic=<default>, real y, pair dir=<default>, real size=<default>, pen p=<default>);
void ytick(picture pic=<default>, Label L, explicit pair z, pair dir=<default>, string format=<default>, real size=<default>, pen p=<default>);
void ytick(picture pic=<default>, Label L, real y, pair dir=<default>, string format=<default>, real size=<default>, pen p=<default>);
+picture secondaryX(picture primary=<default>, void f(picture));
+picture secondaryY(picture primary=<default>, void f(picture));
Label Break;
tickvalues Break(tickvalues)(real, real);
scaleT Linear;
@@ -2941,12 +3028,8 @@ scaleT Linear(bool automin=<default>, bool automax=<default>, real s=<default>,
pair tickMin(picture pic);
pair tickMax(picture pic);
string autoformat(string format=<default>, real norm ... real[] a);
-void xaxisAt(picture pic=<default>, Label L=<default>, void axis(picture, axisT), real xmin=<default>, real xmax=<default>, pen p=<default>, void ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, bool above=<default>, bool opposite=<default>);
real linear(real)(real S(real x)=<default>, real Min, real Max);
pair polar(real r, real theta);
-void yaxisAt(picture pic=<default>, Label L=<default>, void axis(picture, axisT), real ymin=<default>, real ymax=<default>, pen p=<default>, void ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, bool above=<default>, bool opposite=<default>);
-void xaxis(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, real xmin=<default>, real xmax=<default>, pen p=<default>, void ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, bool above=<default>);
-void yaxis(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, real ymin=<default>, real ymax=<default>, pen p=<default>, void ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, bool above=<default>, bool autorotate=<default>);
string Format(real)(string s=<default>);
guide polargraph(picture pic=<default>, real r(real), real a, real b, int n=<default>, guide join(... guide[])=<default>);
guide polargraph(picture pic=<default>, real[] r, real[] theta, guide join(... guide[])=<default>);
@@ -2958,6 +3041,10 @@ string NoZeroFormat(real);
guide Hermite(... guide[])(real[] splinetype(real[], real[]));
guide Hermite(... guide[]);
path Circle(pair c, real r, int n=<default>);
+void xaxisAt(picture pic=<default>, Label L=<default>, void axis(picture, axisT), real xmin=<default>, real xmax=<default>, pen p=<default>, void ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, bool above=<default>, bool opposite=<default>);
+void yaxisAt(picture pic=<default>, Label L=<default>, void axis(picture, axisT), real ymin=<default>, real ymax=<default>, pen p=<default>, void ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, bool above=<default>, bool opposite=<default>);
+void xaxis(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, real xmin=<default>, real xmax=<default>, pen p=<default>, void ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, bool above=<default>);
+void yaxis(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, real ymin=<default>, real ymax=<default>, pen p=<default>, void ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, bool above=<default>, bool autorotate=<default>);
bool axiscoverage(int N, transform T, path g, ticklocate locate, real Step, pair side, int sign, real Size, Label F, string ticklabel(real), real norm, real limit);
scaleT Broken(real a, real b, bool automin=<default>, bool automax=<default>);
scaleT BrokenLog(real a, real b, bool automin=<default>, bool automax=<default>);
@@ -2967,6 +3054,7 @@ void Ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, p
void Ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, real[] Ticks, real[] ticks=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>);
void Ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>);
string noprimary;
+path[] segment(pair[] z, bool[] cond, guide join(... guide[])=<default>);
void xequals(picture pic=<default>, Label L=<default>, real x, bool extend=<default>, real ymin=<default>, real ymax=<default>, pen p=<default>, void ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, bool above=<default>);
void yequals(picture pic=<default>, Label L=<default>, real y, bool extend=<default>, real xmin=<default>, real xmax=<default>, pen p=<default>, void ticks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>)=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, bool above=<default>);
pair Scale(picture pic=<default>, pair z);
@@ -2990,7 +3078,6 @@ axisT operator init();
int Both;
void axes(picture pic=<default>, Label xlabel=<default>, Label ylabel=<default>, bool extend=<default>, pair min=<default>, pair max=<default>, pen p=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, bool above=<default>);
string signedtrailingzero;
-path[] segment(pair[] z, bool[] cond, guide join(... guide[])=<default>);
ticklocate ticklocate(real a, real b, autoscaleT S=<default>, real tickmin=<default>, real tickmax=<default>, real time(real)=<default>, pair dir(real)=<default>);
pair ticklabelshift(pair align, pen p=<default>);
pair zero(real);
@@ -3024,127 +3111,6 @@ void autoscale(picture pic=<default>, void axis(picture, axisT));
guide Spline(... guide[]);
void LeftRight(picture, axisT)(bool extend=<default>);
void LeftRight(picture, axisT);
-path3[] segment(triple[] v, bool[] cond, void join(flatguide3)(... void(flatguide3)[])=<default>);
-locateT operator init();
-void Straight(flatguide3)(... void(flatguide3)[]);
-void graph(flatguide3)(triple F(real), real, real, int)(void join(flatguide3)(... void(flatguide3)[]));
-void(flatguide3)[] graph(triple F(real), real, real, int)(void join(flatguide3)(... void(flatguide3)[]), bool3 cond(real));
-void graph(flatguide3)(picture pic=<default>, real x(real), real y(real), real z(real), real a, real b, int n=<default>, void join(flatguide3)(... void(flatguide3)[])=<default>);
-void(flatguide3)[] graph(picture pic=<default>, real x(real), real y(real), real z(real), real a, real b, int n=<default>, bool3 cond(real), void join(flatguide3)(... void(flatguide3)[])=<default>);
-void graph(flatguide3)(picture pic=<default>, triple v(real), real a, real b, int n=<default>, void join(flatguide3)(... void(flatguide3)[])=<default>);
-void(flatguide3)[] graph(picture pic=<default>, triple v(real), real a, real b, int n=<default>, bool3 cond(real), void join(flatguide3)(... void(flatguide3)[])=<default>);
-void graph(flatguide3)(picture pic=<default>, triple[] v, void join(flatguide3)(... void(flatguide3)[])=<default>);
-void(flatguide3)[] graph(picture pic=<default>, triple[] v, bool3[] cond, void join(flatguide3)(... void(flatguide3)[])=<default>);
-void graph(flatguide3)(picture pic=<default>, real[] x, real[] y, real[] z, void join(flatguide3)(... void(flatguide3)[])=<default>);
-void(flatguide3)[] graph(picture pic=<default>, real[] x, real[] y, real[] z, bool3[] cond, void join(flatguide3)(... void(flatguide3)[])=<default>);
-void graph(flatguide3)(triple F(path, real), path p, int n=<default>, void join(flatguide3)(... void(flatguide3)[])=<default>);
-void graph(flatguide3)(triple F(pair), path p, int n=<default>, void join(flatguide3)(... void(flatguide3)[])=<default>);
-void graph(flatguide3)(picture pic=<default>, real f(pair), path p, int n=<default>, void join(flatguide3)(... void(flatguide3)[])=<default>);
-void graph(flatguide3)(real f(pair), path p, int n=<default>, real T(pair), void join(flatguide3)(... void(flatguide3)[])=<default>);
-void(flatguide3)[][] lift(real f(real x, real y), guide[][] g, void join(flatguide3)(... void(flatguide3)[])=<default>);
-void(flatguide3)[][] lift(real f(pair z), guide[][] g, void join(flatguide3)(... void(flatguide3)[])=<default>);
-triple polar(real r, real theta, real phi);
-void polargraph(flatguide3)(real r(real, real), real theta(real), real phi(real), int n=<default>, void join(flatguide3)(... void(flatguide3)[])=<default>);
-bool uperiodic(real[][] a);
-bool uperiodic(triple[][] a);
-bool vperiodic(real[][] a);
-bool vperiodic(triple[][] a);
-void OutTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, int N=<default>, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, tickvalues modify(tickvalues)=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>);
-void OutTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, real[] Ticks, real[] ticks=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>);
-void OutTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>);
-void axis(picture pic=<default>, Label L=<default>, path3 g, path3 g2=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>), ticklocate locate, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, int[] divisor=<default>, bool above=<default>, bool opposite=<default>);
-void Bounds(picture, axisT)(int type=<default>, int type2=<default>, triple align=<default>, bool extend=<default>);
-void Bounds(picture, axisT);
-void xaxis3At(picture pic=<default>, Label L=<default>, void axis(picture, axisT), real xmin=<default>, real xmax=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, bool above=<default>, bool opposite=<default>, bool opposite2=<default>, bool primary=<default>);
-void yaxis3At(picture pic=<default>, Label L=<default>, void axis(picture, axisT), real ymin=<default>, real ymax=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, bool above=<default>, bool opposite=<default>, bool opposite2=<default>, bool primary=<default>);
-void zaxis3At(picture pic=<default>, Label L=<default>, void axis(picture, axisT), real zmin=<default>, real zmax=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, bool above=<default>, bool opposite=<default>, bool opposite2=<default>, bool primary=<default>);
-void xaxis3(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, real xmin=<default>, real xmax=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, bool above=<default>);
-void yaxis3(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, real ymin=<default>, real ymax=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, bool above=<default>);
-void zaxis3(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, real zmin=<default>, real zmax=<default>, pen p=<default>, void ticks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, bool above=<default>);
-void XZZero(picture, axisT)(triple align=<default>, bool extend=<default>);
-void XZZero(picture, axisT);
-void YZZero(picture, axisT)(triple align=<default>, bool extend=<default>);
-void YZZero(picture, axisT);
-surface surface(picture pic=<default>, triple[][] f, bool[][] cond=<default>);
-surface surface(picture pic=<default>, real[][] f, real[] x, real[] y, real[] xsplinetype(real[], real[])=<default>, real[] ysplinetype(real[], real[])=<default>, bool[][] cond=<default>);
-surface surface(picture pic=<default>, real[][] f, pair a, pair b, real[] xsplinetype(real[], real[]), real[] ysplinetype(real[], real[])=<default>, bool[][] cond=<default>);
-surface surface(picture pic=<default>, real[][] f, pair a, pair b, bool[][] cond=<default>);
-surface surface(picture pic=<default>, triple f(pair z), pair a, pair b, int nu=<default>, int nv=<default>, bool cond(pair z)=<default>);
-surface surface(picture pic=<default>, triple f(pair z), real[] u, real[] v, real[](real[], real[])[] usplinetype, real[](real[], real[])[] vsplinetype=<default>, bool cond(pair z)=<default>);
-surface surface(picture pic=<default>, triple f(pair z), pair a, pair b, int nu=<default>, int nv=<default>, real[](real[], real[])[] usplinetype, real[](real[], real[])[] vsplinetype=<default>, bool cond(pair z)=<default>);
-surface surface(picture pic=<default>, real f(pair z), pair a, pair b, int nx=<default>, int ny=<default>, bool cond(pair z)=<default>);
-surface surface(picture pic=<default>, real f(pair z), pair a, pair b, int nx=<default>, int ny=<default>, real[] xsplinetype(real[], real[]), real[] ysplinetype(real[], real[])=<default>, bool cond(pair z)=<default>);
-void XYEquals(picture, axisT)(real x, real y, triple align=<default>, bool extend=<default>);
-triple Dir(real)(triple dir);
-void draw(picture pic=<default>, Label[] L=<default>, void(flatguide3)[][] g, pen[] p, light light=<default>, string name=<default>, render render=<default>, interaction interaction=<default>);
-void draw(picture pic=<default>, Label[] L=<default>, void(flatguide3)[][] g, pen p=<default>, light light=<default>, string name=<default>, render render=<default>, interaction interaction=<default>);
-void Ticks3(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)(int sign, Label F=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, real[] Ticks=<default>, real[] ticks=<default>, int N=<default>, bool begin=<default>, bool end=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>);
-void Ticks3(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)(int sign, Label F=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, int N, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, tickvalues modify(tickvalues)=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>);
-real maxlength(triple f(pair z), pair a, pair b, int nu, int nv);
-void drawtick(picture pic, real[][] T, path3 g, path3 g2, ticklocate locate, real val, real Size, int sign, pen p, bool extend);
-triple tickMin3(picture pic);
-triple tickMax3(picture pic);
-triple Scale(picture pic=<default>, triple v);
-triple[][] Scale(picture pic=<default>, triple[][] P);
-real ScaleX(picture pic=<default>, real x);
-real ScaleY(picture pic=<default>, real y);
-real ScaleZ(picture pic=<default>, real z);
-real[][] ScaleZ(picture pic=<default>, real[][] P);
-picture vectorfield(path3 vector(pair v), triple f(pair z), pair a, pair b, int nu=<default>, int nv=<default>, bool truesize=<default>, real maxlength=<default>, bool cond(pair z)=<default>, pen p=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>, string name=<default>, render render=<default>);
-path3 Circle(triple c, real r, triple normal=<default>, int n=<default>);
-void InTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, int N=<default>, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, tickvalues modify(tickvalues)=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>);
-void InTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, real[] Ticks, real[] ticks=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>);
-void InTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>);
-void Spline(flatguide3)(... void(flatguide3)[]);
-void InOutTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, int N=<default>, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, tickvalues modify(tickvalues)=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>);
-void InOutTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)(Label format=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, real[] Ticks, real[] ticks=<default>, real Size=<default>, real size=<default>, bool extend=<default>, pen pTick=<default>, pen ptick=<default>);
-void InOutTicks(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>);
-void axes3(picture pic=<default>, Label xlabel=<default>, Label ylabel=<default>, Label zlabel=<default>, bool extend=<default>, triple min=<default>, triple max=<default>, pen p=<default>, bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, marginT3 margin(path3, pen)=<default>);
-void label(picture pic, Label L, triple v, real x, align align, string format, pen p);
-void labelx(picture pic=<default>, Label L=<default>, triple v, align align=<default>, string format=<default>, pen p=<default>);
-void labely(picture pic=<default>, Label L=<default>, triple v, align align=<default>, string format=<default>, pen p=<default>);
-void labeltick(picture pic, real[][] T, path3 g, ticklocate locate, real val, int sign, real Size, string ticklabel(real), Label F, real norm=<default>);
-void labelaxis(picture pic, real[][] T, Label L, path3 g, ticklocate locate=<default>, int sign=<default>, bool ticklabels=<default>);
-void labelx3(picture pic=<default>, Label L=<default>, real x, align align=<default>, string format=<default>, pen p=<default>);
-void labely3(picture pic=<default>, Label L=<default>, real y, align align=<default>, string format=<default>, pen p=<default>);
-void labelz(picture pic=<default>, Label L=<default>, triple v, align align=<default>, string format=<default>, pen p=<default>);
-void labelz3(picture pic=<default>, Label L=<default>, real z, align align=<default>, string format=<default>, pen p=<default>);
-void autoscale3(picture pic=<default>, void axis(picture, axisT));
-void xtick(picture pic=<default>, triple v, triple dir=<default>, real size=<default>, pen p=<default>);
-void xtick(picture pic=<default>, Label L, triple v, triple dir=<default>, string format=<default>, real size=<default>, pen p=<default>);
-void ytick(picture pic=<default>, triple v, triple dir=<default>, real size=<default>, pen p=<default>);
-void ytick(picture pic=<default>, Label L, triple v, triple dir=<default>, string format=<default>, real size=<default>, pen p=<default>);
-void xtick3(picture pic=<default>, real x, triple dir=<default>, real size=<default>, pen p=<default>);
-void xtick3(picture pic=<default>, Label L, real x, triple dir=<default>, string format=<default>, real size=<default>, pen p=<default>);
-void ytick3(picture pic=<default>, real y, triple dir=<default>, real size=<default>, pen p=<default>);
-void ytick3(picture pic=<default>, Label L, real y, triple dir=<default>, string format=<default>, real size=<default>, pen p=<default>);
-void ztick(picture pic=<default>, triple v, triple dir=<default>, real size=<default>, pen p=<default>);
-void ztick(picture pic=<default>, Label L, triple v, triple dir=<default>, string format=<default>, real size=<default>, pen p=<default>);
-void ztick3(picture pic=<default>, real z, triple dir=<default>, real size=<default>, pen p=<default>);
-void ztick3(picture pic=<default>, Label L, real z, triple dir=<default>, string format=<default>, real size=<default>, pen p=<default>);
-triple defaultdir(triple X, triple Y, triple Z, bool opposite=<default>, projection P);
-real xtrans(real[][] t, real x);
-real ytrans(real[][] t, real y);
-real ztrans(real[][] t, real z);
-ticklocate ticklocate(real a, real b, autoscaleT S=<default>, real tickmin=<default>, real tickmax=<default>, real time(real)=<default>, triple dir(real));
-triple ticklabelshift(triple align, pen p=<default>);
-path3 Arc(triple c, triple v1, triple v2, triple normal=<default>, bool direction=<default>, int n=<default>);
-path3 Arc(triple c, real r, real theta1, real phi1, real theta2, real phi2, triple normal=<default>, bool direction, int n=<default>);
-path3 Arc(triple c, real r, real theta1, real phi1, real theta2, real phi2, triple normal=<default>, int n=<default>);
-void limits(picture pic=<default>, triple min, triple max);
-void XZEquals(picture, axisT)(real x, real z, triple align=<default>, bool extend=<default>);
-void YZEquals(picture, axisT)(real y, real z, triple align=<default>, bool extend=<default>);
-void XYZero(picture, axisT)(triple align=<default>, bool extend=<default>);
-void XYZero(picture, axisT);
-void zlimits(picture pic=<default>, real min=<default>, real max=<default>, bool crop=<default>);
-void tick(picture pic=<default>, triple v, triple dir, real size=<default>, pen p=<default>);
-void tick(picture pic=<default>, Label L, real value, triple v, triple dir, string format=<default>, real size=<default>, pen p=<default>);
-surface bispline(real[][] z, real[][] p, real[][] q, real[][] r, real[] x, real[] y, bool[][] cond=<default>);
-real[][][] bispline(real[][] f, real[] x, real[] y, real[] xsplinetype(real[], real[])=<default>, real[] ysplinetype(real[], real[])=<default>, bool[][] cond=<default>);
-real[][][] bispline0(real[][] z, real[][] p, real[][] q, real[][] r, real[] x, real[] y, bool[][] cond=<default>);
-real[] uniform(real T(real x), real Tinv(real x), real a, real b, int n);
-void NoTicks3(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>)();
-void NoTicks3(picture, real[][], Label, path3, path3, pen, bool(picture, path3, material, marginT3(path3, pen), light, light), marginT3(path3, pen), ticklocate, int[], bool opposite=<default>, bool primary=<default>);
bool Crop;
int ngraph;
real epsilon;
@@ -3179,9 +3145,9 @@ grid3(picture pic)[][] operator cast(grid3 gridroutine(picture pic));
triple X(picture pic);
triple Y(picture pic);
triple Z(picture pic);
+position middle;
grid3(picture pic)[] XYXgrid(position pos=<default>);
grid3(picture pic)[] XYXgrid;
-position middle;
grid3(picture pic)[] XY_XZgrid(position posa=<default>, position posb=<default>);
grid3(picture pic)[] XY_XZgrid;
grid3(picture pic)[] ZX_ZYgrid(position posa=<default>, position posb=<default>);
@@ -3190,19 +3156,19 @@ grid3 XYgrid(picture pic)(position pos=<default>);
grid3 XYgrid(picture pic);
grid3 ZYgrid(picture pic)(position pos=<default>);
grid3 ZYgrid(picture pic);
+void xaxis3(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, pen p=<default>, ticksgridT ticks(), bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, bool above=<default>);
+void yaxis3(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, pen p=<default>, ticksgridT ticks(), bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, bool above=<default>);
+void zaxis3(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, pen p=<default>, ticksgridT ticks(), bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, bool above=<default>);
void grid3(picture pic=<default>, grid3(picture pic)[][] gridroutine=<default>, int N=<default>, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, pen pGrid=<default>, pen pgrid=<default>, bool above=<default>);
void grid3(picture pic=<default>, grid3(picture pic)[][] gridroutine, int N=<default>, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, pen[] pGrid, pen[] pgrid, bool above=<default>);
ticksgridT OutTicks()(Label F=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, int N=<default>, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, real Size=<default>, real size=<default>, pen pTick=<default>, pen ptick=<default>, grid3(picture pic)[][] gridroutine, pen pGrid=<default>, pen pgrid=<default>);
triple YZ(picture pic);
-void xaxis3(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, pen p=<default>, ticksgridT ticks(), bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, bool above=<default>);
-void yaxis3(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, pen p=<default>, ticksgridT ticks(), bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, bool above=<default>);
-void zaxis3(picture pic=<default>, Label L=<default>, void axis(picture, axisT)=<default>, pen p=<default>, ticksgridT ticks(), bool arrow(picture, path3, material, marginT3(path3, pen), light, light)=<default>, bool above=<default>);
triple ZX(picture pic);
grid3(picture pic)[] ZXZgrid(position pos=<default>);
grid3(picture pic)[] ZXZgrid;
-position top;
grid3(picture pic)[] XZXgrid(position pos=<default>);
grid3(picture pic)[] XZXgrid;
+position top;
ticksgridT InTicks()(Label F=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, int N=<default>, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, real Size=<default>, real size=<default>, pen pTick=<default>, pen ptick=<default>, grid3(picture pic)[][] gridroutine, pen pGrid=<default>, pen pgrid=<default>);
ticksgridT InOutTicks()(Label F=<default>, string ticklabel(real)=<default>, bool beginlabel=<default>, bool endlabel=<default>, int N=<default>, int n=<default>, real Step=<default>, real step=<default>, bool begin=<default>, bool end=<default>, real Size=<default>, real size=<default>, pen pTick=<default>, pen ptick=<default>, grid3(picture pic)[][] gridroutine, pen pGrid=<default>, pen pgrid=<default>);
grid3(picture pic)[] YX_YZgrid(position posa=<default>, position posb=<default>);
@@ -3229,16 +3195,16 @@ horner diffdiv(real[] x, real[] y);
horner hdiffdiv(real[] x, real[] y, real[] dy);
horner operator init();
real fhorner(real)(horner sh);
-void labelpath(frame f, Label L, path g, string justify=<default>, pen p=<default>);
-void labelpath(picture pic=<default>, Label L, path g, string justify=<default>, pen p=<default>);
-string LeftJustified;
-string Centered;
-string RightJustified;
surface labelpath(string s, path3 p, real angle=<default>, triple optional=<default>);
triple[] firstframe(path3 p, triple optional=<default>);
triple[] nextframe(path3 p, real reltimestart, triple[] start, real reltimeend, int subdiv=<default>);
real eps;
triple nextnormal(triple p, triple q);
+void labelpath(frame f, Label L, path g, string justify=<default>, pen p=<default>);
+void labelpath(picture pic=<default>, Label L, path g, string justify=<default>, pen p=<default>);
+string LeftJustified;
+string Centered;
+string RightJustified;
string[] lm_infmsg;
void lm_qrfac(int m, int n, real[] a, bool pivot, int[] ipvt, real[] rdiag, real[] acnorm, real[] wa);
void lm_qrsolv(int n, real[] r, int ldr, int[] ipvt, real[] diag, real[] qtb, real[] x, real[] sdiag, real[] wa);
@@ -3326,6 +3292,8 @@ bool rectangular(triple[][] m);
bool polygon(path p);
pair unityroot(int n, int k=<default>);
real acot(real x);
+int[][] segmentlimits(bool[] b);
+int[][] segment(bool[] b);
pair[][] fft(pair[][] a, int sign=<default>);
real slope(path g, real x, int n=<default>, real fuzz=<default>);
real slope(path g, explicit pair z, int n=<default>, real fuzz=<default>);
@@ -3333,8 +3301,6 @@ picture grid(int Nx, int Ny, pen p=<default>);
rootfinder_settings operator init();
real frac(real x);
real asec(real x);
-int[][] segmentlimits(bool[] b);
-int[][] segment(bool[] b);
real time(path g, real x, int n=<default>, real fuzz=<default>);
real time(path g, explicit pair z, int n=<default>, real fuzz=<default>);
real[] leastsquares(real[][] A, real[] b, bool warn=<default>);
@@ -3479,11 +3445,14 @@ void simplexPhase2();
int[] artificialColumn;
void simplexWrite(rational[][] E, int[] Bindices, int, int);
path roundedpath(path A, real R, real S=<default>);
+problem operator init();
simplex operator init();
+void nextpage(pen p=<default>);
void display(frame[] f, real margin=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, bool final=<default>);
void display(frame f, real margin=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, bool final=<default>);
void display(string[] s, real margin=<default>, string[] captions=<default>, string caption=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, bool final=<default>);
void display(string s, string caption=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, bool final=<default>);
+void filecode(bool center=<default>, string s, pen p=<default>, real indent=<default>, real skip=<default>, filltype filltype=<default>);
void multifigure(string[] slist, string options=<default>, string caption=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, bool step=<default>);
void subitem(string s, pen p=<default>);
pen pagenumberpen;
@@ -3496,21 +3465,21 @@ pen foregroundcolor;
void bibliography(string name);
void bibliographystyle(string name);
int[] lastnode;
-void item(string s, pen p=<default>, bool step=<default>);
real aboveequationskip;
void asyfigure(string s, string options=<default>, string caption=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, filltype filltype=<default>, bool newslide=<default>);
void asyfilecode(bool center=<default>, string s, string options=<default>, string caption=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, real indent=<default>, real skip=<default>, filltype filltype=<default>, bool newslide=<default>);
bool itemstep;
real itemskip;
void remark(bool center=<default>, string s, pair align=<default>, pen p=<default>, real indent=<default>, bool minipage=<default>, real skip=<default>, filltype filltype=<default>, bool step=<default>);
-pen authorpen;
void usersetting();
+void item(string s, pen p=<default>, bool step=<default>);
bool landscape;
-string cropcode(string s);
+pen authorpen;
real codeskip;
+string cropcode(string s);
+void newslide(bool stepping=<default>);
bool allowstepping;
pair currentposition;
-void newslide(bool stepping=<default>);
pen itempen;
bool reverse;
void reversevideo();
@@ -3527,10 +3496,10 @@ void normalvideo();
void title(string s, pair position=<default>, pair align=<default>, pen p=<default>, bool newslide=<default>);
pen titlepen;
real titleskip;
-pair titlealign;
pair dateskip;
-void titlepage(string title, string author, string institution=<default>, string date=<default>, string url=<default>, bool newslide=<default>);
+pair titlealign;
pen titlepagepen;
+void titlepage(string title, string author, string institution=<default>, string date=<default>, string url=<default>, bool newslide=<default>);
pair titlepageposition;
pen codepen;
void erasestep(int erasenode);
@@ -3550,24 +3519,22 @@ string newbulletcolor;
pen datepen;
void incrementposition(pair z);
pen institutionpen;
-int page;
void skip(real n=<default>);
bool stepping;
real pagemargin;
pen steppagenumberpen;
+int page;
bool empty();
void currentexitfunction();
void step();
string[] codefile;
void outline(string s=<default>, pair position=<default>, pair align=<default>, pen p=<default>);
void center(string s, pen p=<default>);
-void nextpage(pen p=<default>);
void equation(string s, pen p=<default>);
void equations(string s, pen p=<default>);
void asyinclude(string s, real xsize=<default>, real ysize=<default>);
void figure(string[] s, string options=<default>, real margin=<default>, string[] captions=<default>, string caption=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, bool final=<default>);
void figure(string s, string options=<default>, string caption=<default>, pair align=<default>, pen p=<default>, pen figuremattpen=<default>, bool final=<default>);
-void filecode(bool center=<default>, string s, pen p=<default>, real indent=<default>, real skip=<default>, filltype filltype=<default>);
real figureborder;
pen figuremattpen;
string bullet;
@@ -3620,12 +3587,12 @@ string operator cast(positionedvector vv);
triple operator cast(evaluatedpoint p);
surface implicitsurface(real f(triple)=<default>, real ff(real, real, real)=<default>, triple a, triple b, int n=<default>, bool keyword overlapedges=<default>, int keyword nx=<default>, int keyword ny=<default>, int keyword nz=<default>, int keyword maxdepth=<default>, bool keyword usetriangles=<default>);
bool operator ==(edge a, edge b);
-int NULL_VERTEX;
patch[] triangletoquads(path3 external, real f(triple), triple grad(triple), triple a, triple b);
patch trianglewithnormals(path3 external, triple n1, triple n2, triple n3);
-real B03(real t);
+int NULL_VERTEX;
evaluatedpoint[][][] make3dgrid(triple a, triple b, int nx, int ny, int nz, real f(triple), bool allowzero=<default>);
real B33(real t);
+real B03(real t);
evaluatedpoint[][] slice(evaluatedpoint[][] a, int start1, int end1, int start2, int end2);
evaluatedpoint[][][] slice(evaluatedpoint[][][] a, int start1, int end1, int start2, int end2, int start3, int end3);
positionedvector[][] slice(positionedvector[][] a, int start1, int end1, int start2, int end2);
@@ -3643,13 +3610,13 @@ path[] cylinder(path3 base, real h, triple axis=<default>, projection P);
revolution cylinder(triple c=<default>, real r, real h, triple axis=<default>);
revolution cone(triple c=<default>, real r, real h, triple axis=<default>, int n=<default>);
real rms(real[] A);
-real stdev(real[] A);
int[] frequency(real[] data, real[] bins);
int[] frequency(real[] data, real a, real b, int n);
int[][] frequency(real[] x, real[] y, real[] xbins, real[] ybins);
int[][] frequency(real[] x, real[] y, pair a, pair b, int nx, int ny=<default>);
int[][] frequency(pair[] z, pair a, pair b, int nx, int ny=<default>);
real mean(real[] A);
+real stdev(real[] A);
int bins(real[] data, int max=<default>);
path topbox(pair a, pair b);
path halfbox(pair a, pair b);
@@ -3664,16 +3631,16 @@ linefit operator init();
real skewness(real[] A);
linefit leastsquares(real[] x, real[] y);
linefit leastsquares(real[] x, real[] y, real[] w);
-void histogram(picture pic=<default>, real[] bins, real[] count, real low=<default>, pen fillpen=<default>, pen drawpen=<default>, bool bars=<default>, Label legend=<default>, real markersize=<default>);
-void histogram(picture pic=<default>, real[] data, real a, real b, int n, bool normalize=<default>, real low=<default>, pen fillpen=<default>, pen drawpen=<default>, bool bars=<default>, Label legend=<default>, real markersize=<default>);
real kurtosis(real[] A);
real kurtosisexcess(real[] A);
+void histogram(picture pic=<default>, real[] bins, real[] count, real low=<default>, pen fillpen=<default>, pen drawpen=<default>, bool bars=<default>, Label legend=<default>, real markersize=<default>);
+void histogram(picture pic=<default>, real[] data, real a, real b, int n, bool normalize=<default>, real low=<default>, pen fillpen=<default>, pen drawpen=<default>, bool bars=<default>, Label legend=<default>, real markersize=<default>);
pair[] endpoints(guide[] a);
Relation r3;
-Braid apply(Relation r, Braid b, int step, int place);
picture tableau(frame[] cards, bool number=<default>);
pair min(pair[] z);
Component bp;
+Braid apply(Relation r, Braid b, int step, int place);
Component phi;
real gapfactor;
Component bm;
@@ -3684,30 +3651,27 @@ Braid operator init();
Relation operator init();
Syzygy operator init();
real hwratio;
-Relation r4a;
Relation r4b;
+Relation r4a;
pair max(pair[] z);
pen Orchid;
pen Magenta;
pen BrickRed;
pen CadetBlue;
-pen Aquamarine;
pen CarnationPink;
pen SpringGreen;
-pen Lavender;
pen MidnightBlue;
pen OliveGreen;
pen Apricot;
+pen Aquamarine;
+pen Lavender;
pen Cyan;
pen Red;
pen RawSienna;
pen Mahogany;
pen Gray;
-pen YellowOrange;
-pen Maroon;
pen Plum;
pen BlueGreen;
-pen YellowGreen;
pen Cerulean;
pen Blue;
pen BlueViolet;
@@ -3715,40 +3679,43 @@ pen RedOrange;
pen Goldenrod;
pen ForestGreen;
pen BurntOrange;
+pen YellowOrange;
+pen Maroon;
pen Tan;
-pen Sepia;
+pen YellowGreen;
pen Brown;
pen RubineRed;
pen TealBlue;
pen White;
pen Purple;
pen Bittersweet;
-pen VioletRed;
+pen Sepia;
pen Orange;
-pen Violet;
pen OrangeRed;
pen Fuchsia;
-pen PineGreen;
pen Peach;
+pen PineGreen;
pen Dandelion;
+pen VioletRed;
pen Black;
-pen Thistle;
+pen Violet;
pen NavyBlue;
pen Rhodamine;
pen ProcessBlue;
-pen DarkOrchid;
+pen Thistle;
pen LimeGreen;
pen Green;
pen GreenYellow;
-pen WildStrawberry;
+pen DarkOrchid;
pen Emerald;
pen Mulberry;
+pen WildStrawberry;
pen RedViolet;
pen SkyBlue;
pen SeaGreen;
pen Periwinkle;
-pen Salmon;
pen Yellow;
+pen Salmon;
pen JungleGreen;
pen CornflowerBlue;
pen RoyalBlue;
@@ -3790,36 +3757,34 @@ v3dheadertypes operator init();
v3dtypes v3dtypes;
v3dtypes operator init();
string VERSION;
-pen Cornsilk;
pen Orchid;
pen Indigo;
pen Beige;
pen SlateBlue;
pen SlateGray;
+pen Cornsilk;
pen Magenta;
-pen Seashell;
pen CadetBlue;
pen DeepPink;
-pen Aquamarine;
pen SpringGreen;
-pen GhostWhite;
-pen Lavender;
pen MidnightBlue;
pen Olive;
pen OliveDrab;
+pen Seashell;
+pen Aquamarine;
+pen GhostWhite;
+pen Lavender;
pen Chocolate;
pen Cyan;
pen Gainsboro;
pen Ivory;
-pen LavenderBlush;
pen PapayaWhip;
-pen Wheat;
pen Red;
pen Pink;
pen MintCream;
pen DarkTurquoise;
-pen PeachPuff;
pen Gray;
+pen LavenderBlush;
pen MediumBlue;
pen MediumOrchid;
pen MediumPurple;
@@ -3828,12 +3793,10 @@ pen MediumSlateBlue;
pen MediumAquamarine;
pen MediumSpringGreen;
pen MediumTurquoise;
+pen Wheat;
pen MediumVioletRed;
-pen Maroon;
-pen Lime;
-pen SteelBlue;
pen Plum;
-pen YellowGreen;
+pen PeachPuff;
pen Blue;
pen Gold;
pen BlueViolet;
@@ -3841,11 +3804,14 @@ pen Goldenrod;
pen ForestGreen;
pen Chartreuse;
pen NavajoWhite;
+pen Maroon;
+pen Lime;
+pen SteelBlue;
+pen YellowGreen;
pen Tan;
pen DarkMagenta;
pen AntiqueWhite;
pen PaleTurquoise;
-pen LemonChiffon;
pen IndianRed;
pen Crimson;
pen Azure;
@@ -3855,58 +3821,58 @@ pen BurlyWood;
pen Moccasin;
pen DarkBlue;
pen Peru;
-pen Aqua;
pen White;
pen Purple;
pen WhiteSmoke;
+pen LemonChiffon;
pen DimGray;
pen Orange;
-pen Violet;
pen OrangeRed;
pen Fuchsia;
+pen Aqua;
pen Bisque;
pen Honeydew;
pen RosyBrown;
pen Black;
-pen Thistle;
+pen Violet;
pen Khaki;
pen FireBrick;
-pen Sienna;
pen Snow;
-pen DarkOrchid;
+pen Thistle;
pen LimeGreen;
+pen Sienna;
pen OldLace;
pen Green;
pen GreenYellow;
+pen DarkOrchid;
pen DarkCyan;
pen FloralWhite;
pen DarkRed;
-pen DarkOliveGreen;
-pen DarkOrange;
pen BlanchedAlmond;
pen PowderBlue;
pen DarkGray;
pen DarkGreen;
pen DarkGoldenrod;
+pen DarkOliveGreen;
pen SkyBlue;
-pen Silver;
+pen DarkOrange;
pen SeaGreen;
pen DarkViolet;
pen Teal;
pen AliceBlue;
pen HotPink;
pen DodgerBlue;
+pen Silver;
pen SaddleBrown;
pen Tomato;
pen DarkKhaki;
-pen Salmon;
-pen SandyBrown;
pen LightBlue;
pen LightCoral;
pen LightCyan;
pen Yellow;
pen LightGreen;
-pen DeepSkyBlue;
+pen SandyBrown;
+pen Salmon;
pen PaleGreen;
pen Linen;
pen LightGoldenrodYellow;
@@ -3924,6 +3890,7 @@ pen LightSteelBlue;
pen LightYellow;
pen rgbint(int r, int g, int b);
pen Coral;
+pen DeepSkyBlue;
pen MistyRose;
pen DarkSalmon;
pen DarkSeaGreen;
diff --git a/graphics/asymptote/asymptote.spec b/graphics/asymptote/asymptote.spec
index e56bc09e3e..c1bf0606aa 100644
--- a/graphics/asymptote/asymptote.spec
+++ b/graphics/asymptote/asymptote.spec
@@ -3,7 +3,7 @@
%global __python %{__python3}
Name: asymptote
-Version: 2.89
+Version: 2.90
Release: 1%{?dist}
Summary: Descriptive vector graphics language
diff --git a/graphics/asymptote/base/asy-mode.el b/graphics/asymptote/base/asy-mode.el
index 9f6eda793c..7b6d6f5c36 100644
--- a/graphics/asymptote/base/asy-mode.el
+++ b/graphics/asymptote/base/asy-mode.el
@@ -1600,5 +1600,20 @@ If optional argument Force is t then force compilation."
(asy-master-tex-view 'lasy-view-pdf-via-ps2pdf t t))
(define-key asy-mode-map (kbd "<C-M-S-return>") 'asy-master-tex-view-ps2pdf-f)
+;; Integrate with flycheck
+(with-eval-after-load 'flycheck
+ (flycheck-define-command-checker 'asy
+ "Syntax checking of asymptote files."
+ :command (append
+ (split-string (concat asy-command-location asy-command))
+ '("-noV" "-o" temporary-file-name source))
+ :error-patterns
+ ;; filename.asy: 123.45: warning: message
+ ;; filename.asy: 123.45: error message
+ '((warning line-start (file-name) ":" (* space) line (? ?\. column) ": warning: " (message) line-end)
+ (error line-start (file-name) ":" (* space) line (? ?\. column) ": " (message) line-end))
+ :modes '(asy-mode))
+ (add-to-list 'flycheck-checkers 'asy))
+
(provide `asy-mode)
;;; asy-mode.el ends here
diff --git a/graphics/asymptote/base/plain_boxes.asy b/graphics/asymptote/base/plain_boxes.asy
index 9576caff55..0b6746736a 100644
--- a/graphics/asymptote/base/plain_boxes.asy
+++ b/graphics/asymptote/base/plain_boxes.asy
@@ -1,3 +1,12 @@
+void fillbox(frame dest, path g, pen p=currentpen, filltype filltype=NoFill, bool above=true)
+{
+ if(above == false) {
+ frame F;
+ filltype.fill(F,g,p);
+ prepend(dest,F);
+ } else filltype.fill(dest,g,p);
+}
+
// Draw and/or fill a box on frame dest using the dimensions of frame src.
path box(frame dest, frame src=dest, real xmargin=0, real ymargin=xmargin,
pen p=currentpen, filltype filltype=NoFill, bool above=true)
@@ -6,11 +15,7 @@ path box(frame dest, frame src=dest, real xmargin=0, real ymargin=xmargin,
int sign=filltype == NoFill ? 1 : -1;
pair h=0.5*sign*(max(p)-min(p));
path g=box(min(src)-h-z,max(src)+h+z);
- frame F;
- if(above == false) {
- filltype.fill(F,g,p);
- prepend(dest,F);
- } else filltype.fill(dest,g,p);
+ fillbox(dest,g,p,filltype,above);
return g;
}
@@ -28,12 +33,7 @@ path roundbox(frame dest, frame src=dest, real xmargin=0, real ymargin=xmargin,
(dw,b)--(a-dw,b){right}..{down}
(a,b-dw)--(a,dw){down}..{left}
(a-dw,0)--(dw,0){left}..{up}cycle);
-
- frame F;
- if(above == false) {
- filltype.fill(F,g,p);
- prepend(dest,F);
- } else filltype.fill(dest,g,p);
+ fillbox(dest,g,p,filltype,above);
return g;
}
@@ -47,11 +47,7 @@ path ellipse(frame dest, frame src=dest, real xmargin=0, real ymargin=xmargin,
int sign=filltype == NoFill ? 1 : -1;
pair h=0.5*sign*(max(p)-min(p));
path g=ellipse(0.5*(M+m),factor*D.x+h.x+xmargin,factor*D.y+h.y+ymargin);
- frame F;
- if(above == false) {
- filltype.fill(F,g,p);
- prepend(dest,F);
- } else filltype.fill(dest,g,p);
+ fillbox(dest,g,p,filltype,above);
return g;
}
diff --git a/graphics/asymptote/base/plain_picture.asy b/graphics/asymptote/base/plain_picture.asy
index 13619e80ab..9df0e5753e 100644
--- a/graphics/asymptote/base/plain_picture.asy
+++ b/graphics/asymptote/base/plain_picture.asy
@@ -1,5 +1,4 @@
// Pre picture <<<1
-import plain_scaling;
import plain_bounds;
include plain_prethree;
@@ -222,6 +221,8 @@ struct picture { // <<<1
node3[] nodes3;
bool uptodate=true;
+ bool queueErase=false;
+ bool queueErase3=false;
struct bounds3 {
coords3 point,min,max;
@@ -286,6 +287,8 @@ struct picture { // <<<1
// Erase the current picture, retaining bounds.
void clear() {
+ queueErase=nodes.length > 0;
+ queueErase3=nodes3.length > 0;
nodes.delete();
nodes3.delete();
legend.delete();
@@ -1587,13 +1590,11 @@ void add(picture src, bool group=true, filltype filltype=NoFill,
currentpicture.add(src,group,filltype,above);
}
-// Fit the picture src using the identity transformation (so user
-// coordinates and truesize coordinates agree) and add it about the point
-// position to picture dest.
+// Fit the picture src and add it about the point position to picture dest.
void add(picture dest, picture src, pair position, bool group=true,
filltype filltype=NoFill, bool above=true)
{
- add(dest,src.fit(identity()),position,group,filltype,above);
+ add(dest,src.fit(),position,group,filltype,true);
}
void add(picture src, pair position, bool group=true, filltype filltype=NoFill,
diff --git a/graphics/asymptote/base/plain_scaling.asy b/graphics/asymptote/base/plain_scaling.asy
index 4c6beae655..dc21462c8e 100644
--- a/graphics/asymptote/base/plain_scaling.asy
+++ b/graphics/asymptote/base/plain_scaling.asy
@@ -192,8 +192,6 @@ real max(real M, scaling s, coord[] c) {
return M;
}
-import simplex;
-
/*
Calculate the sizing constants for the given array and maximum size.
Solve the two-variable linear programming problem using the simplex method.
@@ -203,19 +201,16 @@ import simplex;
*/
real calculateScaling(string dir, coord[] m, coord[] M, real size,
bool warn=true) {
- real[][] A;
- real[] b;
- real[] c=new real[] {-1,0,0};
+ from simplex2 access problem;
+ problem p=new problem;
void addMinCoord(coord c) {
// (a*user + b) + truesize >= 0:
- A.push(new real[] {c.user,1,-1});
- b.push(-c.truesize);
+ p.addRestriction(c.user,1,c.truesize);
}
void addMaxCoord(coord c) {
// (a*user + b) + truesize <= size:
- A.push(new real[] {-c.user,-1,1});
- b.push(c.truesize-size);
+ p.addRestriction(-c.user,-1,size-c.truesize);
}
for (int i=0; i < m.length; ++i)
@@ -223,17 +218,16 @@ real calculateScaling(string dir, coord[] m, coord[] M, real size,
for (int i=0; i < M.length; ++i)
addMaxCoord(M[i]);
- int[] s=array(A.length,1);
- simplex S=simplex(c,A,s,b);
-
- if(S.case == S.OPTIMAL) {
- return S.x[0];
- } else if(S.case == S.UNBOUNDED) {
+ if(p.rows.length == 2) return 1; // Don't warn if there are no constraints
+ int status=p.optimize();
+ if(status == problem.OPTIMAL) {
+ // TODO: Could just be return a;
+ return scaling.build(p.a(),p.b()).a;
+ } else if(status == problem.UNBOUNDED) {
if(warn) warning("unbounded",dir+" scaling in picture unbounded");
return 0;
} else {
if(!warn) return 1;
-
bool userzero(coord[] coords) {
for(var coord : coords)
if(coord.user != 0) return false;
diff --git a/graphics/asymptote/base/plain_shipout.asy b/graphics/asymptote/base/plain_shipout.asy
index a001ce045c..c784c5f462 100644
--- a/graphics/asymptote/base/plain_shipout.asy
+++ b/graphics/asymptote/base/plain_shipout.asy
@@ -122,7 +122,6 @@ void shipout(string prefix=defaultfilename, picture pic=currentpicture,
string options="", string script="",
light light=currentlight, projection P=currentprojection)
{
- pic.uptodate=true;
if(!uptodate()) {
bool inlinetex=settings.inlinetex;
bool prc=prc(format) || settings.v3d;
@@ -139,7 +138,7 @@ void shipout(string prefix=defaultfilename, picture pic=currentpicture,
settings.inlinetex=settings.inlineimage;
}
frame f;
- transform t=pic.calculateTransform();
+ transform t=empty3 ? pic.calculateTransform() : identity;
if(currentpicture.fitter == null) {
pen background=currentlight.background;
if(settings.outformat == "html" && background == nullpen)
@@ -152,10 +151,14 @@ void shipout(string prefix=defaultfilename, picture pic=currentpicture,
else
f=pic.fit(prefix,format,view=view,options,script,light,P);
- if(!prconly() && (!pic.empty2() || settings.render == 0 || prc || empty3))
+ if(!prconly() && (!pic.empty2() || settings.render == 0 || prc ||
+ pic.queueErase)) {
shipout(prefix,orientation(f),format,wait,view,t);
+ pic.queueErase=false;
+ }
settings.inlinetex=inlinetex;
}
+ pic.uptodate=true;
}
void newpage(picture pic=currentpicture)
diff --git a/graphics/asymptote/base/simplex2.asy b/graphics/asymptote/base/simplex2.asy
new file mode 100644
index 0000000000..e8d073ef0b
--- /dev/null
+++ b/graphics/asymptote/base/simplex2.asy
@@ -0,0 +1,310 @@
+/*****
+ * simplex.asy
+ * Andy Hammerlindl 2004/07/27
+ *
+ * Solves the two-variable linear programming problem using the simplex method.
+ * This problem is specialized in that the second variable, "b", does not have
+ * a non-negativity condition, and the first variable, "a", is the quantity
+ * being maximized.
+ * Correct execution of the algorithm also assumes that the coefficient of "b"
+ * will be +1 or -1 in every added restriction, and that the problem can be
+ * initialized to a valid state by pivoting b with one of the slack
+ * variables. This assumption may in fact be incorrect.
+ *****/
+
+struct problem {
+ typedef int var;
+ static var VAR_A = 0;
+ static var VAR_B = 1;
+
+ static int OPTIMAL = -1;
+ static var UNBOUNDED = -2;
+ static int INVALID = -3;
+
+ struct row {
+ real c, t[];
+ }
+
+ // The variables of the rows.
+ // Initialized for the two variable problem.
+ var[] v = {VAR_A, VAR_B};
+
+ // The rows of equalities.
+ row rowA() {
+ row r = new row;
+ r.c = 0;
+ r.t = new real[] {1, 0};
+ return r;
+ }
+ row rowB() {
+ row r = new row;
+ r.c = 0;
+ r.t = new real[] {0, 1};
+ return r;
+ }
+ row[] rows = {rowA(), rowB()};
+
+ // The number of original variables.
+ int n = rows.length;
+
+ // Pivot the variable v[col] with vp.
+ void pivot(int col, var vp)
+ {
+ var vc=v[col];
+
+ // Recalculate rows v[col] and vp for the pivot-swap.
+ row rvc = rows[vc], rvp = rows[vp];
+ real factor=1/rvp.t[col]; // NOTE: Handle rvp.t[col] == 0 case.
+ rvc.c=-rvp.c*factor;
+ rvp.c=0;
+ rvc.t=-rvp.t*factor;
+ rvp.t *= 0;
+ rvc.t[col]=factor;
+ rvp.t[col]=1;
+
+ var a=min(vc,vp);
+ var b=max(vc,vp);
+
+ // Recalculate the rows other than the two used for the above pivot.
+ for (var i = 0; i < a; ++i) {
+ row r=rows[i];
+ real m = r.t[col];
+ r.c += m*rvc.c;
+ r.t += m*rvc.t;
+ r.t[col]=m*factor;
+ }
+ for (var i = a+1; i < b; ++i) {
+ row r=rows[i];
+ real m = r.t[col];
+ r.c += m*rvc.c;
+ r.t += m*rvc.t;
+ r.t[col]=m*factor;
+ }
+ for (var i = b+1; i < rows.length; ++i) {
+ row r=rows[i];
+ real m = r.t[col];
+ r.c += m*rvc.c;
+ r.t += m*rvc.t;
+ r.t[col]=m*factor;
+ }
+
+ // Relabel the vars.
+ v[col] = vp;
+ }
+
+ // As b does not have a non-negativity condition, it must initially be
+ // pivoted out for a variable that does. This selects the initial
+ // variable to pivot with b. It also assumes that there is a valid
+ // solution with a == 0 to the linear programming problem, and if so, it
+ // picks a pivot to get to that state. In our case, a == 0 corresponds to
+ // a picture with the user coordinates shrunk down to zero, and if that
+ // doesn't fit, nothing will.
+ //
+ // If b has a minimal value, choose a pivot that will give b its minimal
+ // value. Otherwise, if b has maximal value, choose a pivot to give b its
+ // maximal value.
+ var initVar()
+ {
+ real min;
+ var argmin;
+ var i=2;
+ for (; i < rows.length; ++i) {
+ row r=rows[i];
+ if (r.t[VAR_B] > 0) {
+ min=r.c/r.t[VAR_B];
+ argmin=i;
+ break;
+ }
+ }
+ for (; i < rows.length; ++i) {
+ row r=rows[i];
+ if (r.t[VAR_B] > 0) {
+ real val=r.c/r.t[VAR_B];
+ if (val < min) {
+ min=val;
+ argmin=i;
+ }
+ }
+ }
+
+ if(argmin != 0) return argmin;
+
+ real max;
+ var argmax;
+ var i=2;
+ for (; i < rows.length; ++i) {
+ row r=rows[i];
+ if (r.t[VAR_B] < 0) {
+ max=r.c/r.t[VAR_B];
+ argmax=i;
+ break;
+ }
+ }
+
+ for (; i < rows.length; ++i) {
+ row r=rows[i];
+ if (r.t[VAR_B] < 0) {
+ real val=r.c/r.t[VAR_B];
+ if (val > max) {
+ max=val;
+ argmax=i;
+ }
+ }
+ }
+
+ if(argmax != 0) return argmax;
+
+ return UNBOUNDED;
+ }
+
+ // Initialize the linear program problem by moving into an acceptable state
+ // this assumes that b is unrestrained and is the second variable.
+ // NOTE: Works in limited cases, may be bug-ridden.
+ void init()
+ {
+ // Find the lowest constant term in the equations.
+ var lowest = 0;
+ for (var i = 2; i < rows.length; ++i) {
+ if (rows[i].c < rows[lowest].c)
+ lowest = i;
+ }
+
+ // Pivot if necessary.
+ if (lowest != 0)
+ pivot(VAR_B, lowest);
+ }
+
+ // Selects a column to pivot on. Returns OPTIMAL if the current state is
+ // optimal. Assumes we are optimizing the first row.
+ int selectColumn()
+ {
+ int i=find(rows[0].t > 0,1);
+ return (i >= 0) ? i : OPTIMAL;
+ }
+
+ // Select the new variable associated with a pivot on the column given.
+ // Returns UNBOUNDED if the space is unbounded.
+ var selectVar(int col)
+ {
+ // We assume that the first two vars (a and b) once swapped out, won't be
+ // swapped back in. This finds the variable which gives the tightest
+ // non-negativity condition restricting our optimization. This turns
+ // out to be the max of c/t[col]. Note that as c is positive, and
+ // t[col] is negative, all c/t[col] will be negative, so we are finding
+ // the smallest in magnitude.
+ var vp=UNBOUNDED;
+ real max=0;
+ int i=2;
+ for (; i < rows.length; ++i) {
+ row r=rows[i];
+ if(r.c < 0) r.c=0; // Fix any numerical precision error
+ if(r.t[col] < 0) {
+ max=r.c/r.t[col]; vp=i;
+ break;
+ }
+ }
+ for (; i < rows.length; ++i) {
+ row r=rows[i];
+ if(r.c < 0) r.c=0; // Fix any numerical precision error
+ if(r.c < max*r.t[col]) {
+ max=r.c/r.t[col]; vp=i;
+ }
+ }
+
+ return vp;
+ }
+
+ // Checks that the rows are in a valid state.
+ bool valid()
+ {
+ // Checks that constants are valid.
+ bool validConstants() {
+ for (int i = 0; i < rows.length; ++i)
+ // Do not test the row for b, as it does not have a non-negativity
+ // condition.
+ if (i != VAR_B && rows[i].c < 0)
+ return false;
+ return true;
+ }
+
+ // Check a variable to see if its row is simple.
+ // NOTE: Simple rows could be optimized out, since they are not really
+ // used.
+ bool validVar(int col) {
+
+ var vc = v[col];
+ row rvc = rows[vc];
+
+ if (rvc.c != 0)
+ return false;
+ for (int i = 0; i < n; ++i)
+ if (rvc.t[i] != (i == col ? 1 : 0))
+ return false;
+
+ return true;
+ }
+
+ if (!validConstants()) {
+ return false;
+ }
+ for (int i = 0; i < n; ++i)
+ if (!validVar(i)) {
+ return false;
+ }
+
+ return true;
+ }
+
+
+ // Perform the algorithm to find the optimal solution. Returns OPTIMAL,
+ // UNBOUNDED, or INVALID (if no solution is possible).
+ int optimize()
+ {
+ // Put into a valid state to begin and pivot b out.
+ var iv=initVar();
+ if (iv == UNBOUNDED)
+ return iv;
+ pivot(VAR_B, iv);
+
+ if (!valid())
+ return INVALID;
+
+ while(true) {
+ int col = selectColumn();
+
+ if (col == OPTIMAL)
+ return col;
+ var vp = selectVar(col);
+
+ if (vp == UNBOUNDED)
+ return vp;
+
+ pivot(col, vp);
+ }
+
+ // Shouldn't reach here.
+ return INVALID;
+ }
+
+ // Add a restriction to the problem:
+ // t1*a + t2*b + c >= 0
+ void addRestriction(real t1, real t2, real c)
+ {
+ row r = new row;
+ r.c = c;
+ r.t = new real[] {t1, t2};
+ rows.push(r);
+ }
+
+ // Return the value of a computed.
+ real a()
+ {
+ return rows[VAR_A].c;
+ }
+
+ // Return the value of b computed.
+ real b()
+ {
+ return rows[VAR_B].c;
+ }
+}
diff --git a/graphics/asymptote/base/three.asy b/graphics/asymptote/base/three.asy
index cde32f6acb..b93833f666 100644
--- a/graphics/asymptote/base/three.asy
+++ b/graphics/asymptote/base/three.asy
@@ -2681,7 +2681,7 @@ struct scene
if(P.absolute)
this.P=P.copy();
- else if(P.showtarget)
+ else if(P.showtarget && !pic.empty3())
draw(pic,P.target,nullpen);
t=pic.scaling(xsize3,ysize3,zsize3,keepAspect,warn);
@@ -2893,7 +2893,7 @@ object embed(string prefix=outprefix(), string label=prefix,
triple margin=(S.viewportmargin.x,S.viewportmargin.y,0);
M += margin;
m -= margin;
- } else if(M.z >= 0) abort("camera too close");
+ } else if(M.z >= 0 && !S.pic2.empty()) abort("camera too close");
if(primitive())
format=settings.v3d ? "v3d" : settings.outformat;
@@ -3038,12 +3038,15 @@ currentpicture.fitter=new frame(string prefix, picture pic, string format,
light light, projection P) {
frame f;
bool empty3=pic.empty3();
- if(!empty3) f=embedder(new object(string prefix, string format) {
+ if(!empty3 || pic.queueErase3) {
+ f=embedder(new object(string prefix, string format) {
return embed(prefix=prefix,pic,format,xsize,ysize,keepAspect,view,
options,script,light,P);
},prefix,format,view,light);
+ pic.queueErase3=false;
+ }
- if(is3D(format) || empty3)
+ if(is3D(format) || pic.queueErase)
add(f,pic.fit2(xsize,ysize,keepAspect));
return f;
};
diff --git a/graphics/asymptote/base/v3dheadertypes.asy b/graphics/asymptote/base/v3dheadertypes.asy
index 0118208970..aff3ebd34d 100644
--- a/graphics/asymptote/base/v3dheadertypes.asy
+++ b/graphics/asymptote/base/v3dheadertypes.asy
@@ -1,6 +1,6 @@
// Enum class for v3dheadertypes
// AUTO-GENERATED from v3dheadertypes.csv
-// Generated at 2024-03-23 21:31:00
+// Generated at 2024-06-21 17:45:18+00:00
struct v3dheadertypes
{
diff --git a/graphics/asymptote/base/v3dtypes.asy b/graphics/asymptote/base/v3dtypes.asy
index b808b2ae44..97517ebae2 100644
--- a/graphics/asymptote/base/v3dtypes.asy
+++ b/graphics/asymptote/base/v3dtypes.asy
@@ -1,6 +1,6 @@
// Enum class for v3dtypes
// AUTO-GENERATED from v3dtypes.csv
-// Generated at 2024-03-23 21:31:00
+// Generated at 2024-06-21 17:45:18+00:00
struct v3dtypes
{
diff --git a/graphics/asymptote/binaries/i386-windows/README b/graphics/asymptote/binaries/i386-windows/README
index 1e1c510415..686eb44150 100644
--- a/graphics/asymptote/binaries/i386-windows/README
+++ b/graphics/asymptote/binaries/i386-windows/README
@@ -1,5 +1,5 @@
ASYMPTOTE
- Copyright 2004-23 Andy Hammerlindl, John Bowman, and Tom Prince
+ Copyright 2004-24 Andy Hammerlindl, John Bowman, and Tom Prince
Asymptote is a powerful descriptive vector graphics language for technical
drawing, inspired by MetaPost but with an improved C++-like
diff --git a/graphics/asymptote/binaries/x86_64-windows/README b/graphics/asymptote/binaries/x86_64-windows/README
index 1e1c510415..686eb44150 100644
--- a/graphics/asymptote/binaries/x86_64-windows/README
+++ b/graphics/asymptote/binaries/x86_64-windows/README
@@ -1,5 +1,5 @@
ASYMPTOTE
- Copyright 2004-23 Andy Hammerlindl, John Bowman, and Tom Prince
+ Copyright 2004-24 Andy Hammerlindl, John Bowman, and Tom Prince
Asymptote is a powerful descriptive vector graphics language for technical
drawing, inspired by MetaPost but with an improved C++-like
diff --git a/graphics/asymptote/builtin.cc b/graphics/asymptote/builtin.cc
index 36af37d4d5..bb706f99a8 100644
--- a/graphics/asymptote/builtin.cc
+++ b/graphics/asymptote/builtin.cc
@@ -44,7 +44,7 @@
namespace vm {
// Defined in stack.cc
-extern vm::frame *make_dummyframe(string name);
+extern vm::vmFrame *make_dummyframe(string name);
}
using namespace types;
@@ -753,7 +753,7 @@ void addOperators(venv &ve)
dummyRecord *createDummyRecord(venv &ve, symbol name)
{
dummyRecord *r=new dummyRecord(name);
- vm::frame *f = make_dummyframe(name);
+ vm::vmFrame *f = make_dummyframe(name);
addConstant(ve, f, r, name);
addRecordOps(ve, r);
return r;
diff --git a/graphics/asymptote/callable.h b/graphics/asymptote/callable.h
index f870d48d97..da7584f90b 100644
--- a/graphics/asymptote/callable.h
+++ b/graphics/asymptote/callable.h
@@ -43,7 +43,7 @@ public:
// How a function reference to a non-builtin function is stored.
struct func : public callable {
lambda *body;
- frame *closure;
+ vmFrame *closure;
func () : body(), closure() {}
virtual void call (stack*);
virtual bool compare(callable*);
diff --git a/graphics/asymptote/camp.tab.h b/graphics/asymptote/camp.tab.h
index a0d9cee40d..d6b8090e69 100644
--- a/graphics/asymptote/camp.tab.h
+++ b/graphics/asymptote/camp.tab.h
@@ -137,7 +137,7 @@ union YYSTYPE
absyntax::arglist *alist;
absyntax::slice *slice;
absyntax::dimensions *dim;
- absyntax::ty *t;
+ absyntax::astType *t;
absyntax::decid *di;
absyntax::decidlist *dil;
absyntax::decidstart *dis;
diff --git a/graphics/asymptote/camp.y b/graphics/asymptote/camp.y
index 0f2cc5435e..bfa6734651 100644
--- a/graphics/asymptote/camp.y
+++ b/graphics/asymptote/camp.y
@@ -76,7 +76,7 @@ using mem::string;
absyntax::arglist *alist;
absyntax::slice *slice;
absyntax::dimensions *dim;
- absyntax::ty *t;
+ absyntax::astType *t;
absyntax::decid *di;
absyntax::decidlist *dil;
absyntax::decidstart *dis;
diff --git a/graphics/asymptote/coder.cc b/graphics/asymptote/coder.cc
index 1beb3b5860..ee90354239 100644
--- a/graphics/asymptote/coder.cc
+++ b/graphics/asymptote/coder.cc
@@ -38,7 +38,7 @@ vm::lambda *newLambda(string name) {
// Used purely for global variables and static code blocks of file
// level modules.
coder::coder(position pos, string name, modifier sord)
-#if SIMPLE_FRAME
+#ifdef SIMPLE_FRAME
: level(frame::indirect_frame(name)),
#else
: level(new frame(name, 0, 0)),
diff --git a/graphics/asymptote/coder.h b/graphics/asymptote/coder.h
index e07aa11e63..0d50e8c752 100644
--- a/graphics/asymptote/coder.h
+++ b/graphics/asymptote/coder.h
@@ -221,8 +221,9 @@ public:
frame *getFrame()
{
if (isStatic() && !isTopLevel()) {
- assert(parent->getFrame());
- return parent->getFrame();
+ frame *result = parent->getFrame();
+ assert(result);
+ return result;
}
else
return level;
diff --git a/graphics/asymptote/common.h b/graphics/asymptote/common.h
index 6ee3d971f0..7f582e70ff 100644
--- a/graphics/asymptote/common.h
+++ b/graphics/asymptote/common.h
@@ -73,6 +73,7 @@ typedef unsigned long unsignedInt;
#else
#define Int_MAX2 INT_MAX
#define Int_MIN INT_MIN
+#define intIsInt
typedef int Int;
typedef unsigned int unsignedInt;
#endif
diff --git a/graphics/asymptote/configure b/graphics/asymptote/configure
index 4e83c4a259..38dd93bbb9 100755
--- a/graphics/asymptote/configure
+++ b/graphics/asymptote/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.71 for Asymptote 2.89.
+# Generated by GNU Autoconf 2.71 for Asymptote 2.90.
#
# Report bugs to <https://github.com/vectorgraphics/asymptote/issues>.
#
@@ -611,8 +611,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='Asymptote'
PACKAGE_TARNAME='asymptote'
-PACKAGE_VERSION='2.89'
-PACKAGE_STRING='Asymptote 2.89'
+PACKAGE_VERSION='2.90'
+PACKAGE_STRING='Asymptote 2.90'
PACKAGE_BUGREPORT='https://github.com/vectorgraphics/asymptote/issues'
PACKAGE_URL=''
@@ -1326,7 +1326,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures Asymptote 2.89 to adapt to many kinds of systems.
+\`configure' configures Asymptote 2.90 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1392,7 +1392,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of Asymptote 2.89:";;
+ short | recursive ) echo "Configuration of Asymptote 2.90:";;
esac
cat <<\_ACEOF
@@ -1508,7 +1508,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-Asymptote configure 2.89
+Asymptote configure 2.90
generated by GNU Autoconf 2.71
Copyright (C) 2021 Free Software Foundation, Inc.
@@ -1988,7 +1988,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by Asymptote $as_me 2.89, which was
+It was created by Asymptote $as_me 2.90, which was
generated by GNU Autoconf 2.71. Invocation command line was
$ $0$ac_configure_args_raw
@@ -3072,6 +3072,29 @@ VERSION=$PACKAGE_VERSION
# to do *after* running autoupdate.
+# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
+# serial 11 (pkg-config-0.29.1)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -7575,7 +7598,7 @@ fi
if test "x$enable_readline" != "xno"; then
-
+CPPFLAGS="$CPPFLAGS "`pkg-config --silence-errors --cflags readline || echo`
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -7601,16 +7624,15 @@ _ACEOF
if ac_fn_cxx_try_compile "$LINENO"
then :
-PKG_FLAGS=""
+PKG_FLAGS=" "`pkg-config --silence-errors --libs readline || echo`
-
-if test "x$PKG_FLAGS" == "x"; then
+if test "x$PKG_FLAGS" == "x "; then
PKG_FLAGS=-l"readline"
-echo Will try linking with $PKG_FLAGS
+echo will try linking with $PKG_FLAGS
fi
LDFLAGS_SAVE=$LDFLAGS
-LDFLAGS="$LDFLAGS ""$STATIC ""$PKG_FLAGS ""$DYNAMIC "
+LDFLAGS="$LDFLAGS "$STATIC"$PKG_FLAGS "$DYNAMIC
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for history_list in -lreadline" >&5
printf %s "checking for history_list in -lreadline... " >&6; }
if test ${ac_cv_lib_readline_history_list+y}
@@ -7618,7 +7640,7 @@ then :
printf %s "(cached) " >&6
else $as_nop
ac_check_lib_save_LIBS=$LIBS
-LIBS="-lreadline $LIBS"
+LIBS="-lreadline $PKG_FLAGS $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -7663,7 +7685,7 @@ then :
printf %s "(cached) " >&6
else $as_nop
ac_check_lib_save_LIBS=$LIBS
-LIBS="-lreadline $LIBS"
+LIBS="-lreadline $PKG_FLAGS $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -7875,19 +7897,18 @@ fi
rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+CPPFLAGS="$CPPFLAGS "`pkg-config --silence-errors --cflags tinfo || echo`
-PKG_FLAGS=""
-
+PKG_FLAGS=" "`pkg-config --silence-errors --libs tinfo || echo`
-
-if test "x$PKG_FLAGS" == "x"; then
+if test "x$PKG_FLAGS" == "x "; then
PKG_FLAGS=-l"tinfo"
-echo Will try linking with $PKG_FLAGS
+echo will try linking with $PKG_FLAGS
fi
LDFLAGS_SAVE=$LDFLAGS
-LDFLAGS="$LDFLAGS ""$STATIC ""$PKG_FLAGS ""$DYNAMIC "
+LDFLAGS="$LDFLAGS "$STATIC"$PKG_FLAGS "$DYNAMIC
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tgetent in -ltinfo" >&5
printf %s "checking for tgetent in -ltinfo... " >&6; }
if test ${ac_cv_lib_tinfo_tgetent+y}
@@ -7895,7 +7916,7 @@ then :
printf %s "(cached) " >&6
else $as_nop
ac_check_lib_save_LIBS=$LIBS
-LIBS="-ltinfo $LIBS"
+LIBS="-ltinfo $PKG_FLAGS $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -7940,7 +7961,7 @@ then :
printf %s "(cached) " >&6
else $as_nop
ac_check_lib_save_LIBS=$LIBS
-LIBS="-ltinfo $LIBS"
+LIBS="-ltinfo $PKG_FLAGS $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -7994,7 +8015,7 @@ fi
-
+CPPFLAGS="$CPPFLAGS "`pkg-config --silence-errors --cflags ncurses || echo`
for ac_header in ncurses/curses.h ncurses.h curses.h
do :
@@ -8010,16 +8031,15 @@ fi
done
-PKG_FLAGS=""
+PKG_FLAGS=" "`pkg-config --silence-errors --libs ncurses || echo`
-
-if test "x$PKG_FLAGS" == "x"; then
+if test "x$PKG_FLAGS" == "x "; then
PKG_FLAGS=-l"ncurses"
-echo Will try linking with $PKG_FLAGS
+echo will try linking with $PKG_FLAGS
fi
LDFLAGS_SAVE=$LDFLAGS
-LDFLAGS="$LDFLAGS ""$STATIC ""$PKG_FLAGS ""$DYNAMIC "
+LDFLAGS="$LDFLAGS "$STATIC"$PKG_FLAGS "$DYNAMIC
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for setupterm in -lncurses" >&5
printf %s "checking for setupterm in -lncurses... " >&6; }
if test ${ac_cv_lib_ncurses_setupterm+y}
@@ -8027,7 +8047,7 @@ then :
printf %s "(cached) " >&6
else $as_nop
ac_check_lib_save_LIBS=$LIBS
-LIBS="-lncurses $LIBS"
+LIBS="-lncurses $PKG_FLAGS $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -8072,7 +8092,7 @@ then :
printf %s "(cached) " >&6
else $as_nop
ac_check_lib_save_LIBS=$LIBS
-LIBS="-lncurses $LIBS"
+LIBS="-lncurses $PKG_FLAGS $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -8214,22 +8234,21 @@ fi
if test "x$enable_curl" != "xno"; then
-
+CPPFLAGS="$CPPFLAGS "`pkg-config --silence-errors --cflags curl || echo`
ac_fn_cxx_check_header_compile "$LINENO" "curl/curl.h" "ac_cv_header_curl_curl_h" "$ac_includes_default"
if test "x$ac_cv_header_curl_curl_h" = xyes
then :
-PKG_FLAGS=""
+PKG_FLAGS=" "`pkg-config --silence-errors --libs libcurl || echo`
-
-if test "x$PKG_FLAGS" == "x"; then
+if test "x$PKG_FLAGS" == "x "; then
PKG_FLAGS=-l"curl"
-echo Will try linking with $PKG_FLAGS
+echo will try linking with $PKG_FLAGS
fi
LDFLAGS_SAVE=$LDFLAGS
-LDFLAGS="$LDFLAGS ""$STATIC ""$PKG_FLAGS ""$DYNAMIC "
+LDFLAGS="$LDFLAGS "$STATIC"$PKG_FLAGS "$DYNAMIC
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for curl_easy_init in -lcurl" >&5
printf %s "checking for curl_easy_init in -lcurl... " >&6; }
if test ${ac_cv_lib_curl_curl_easy_init+y}
@@ -8237,7 +8256,7 @@ then :
printf %s "(cached) " >&6
else $as_nop
ac_check_lib_save_LIBS=$LIBS
-LIBS="-lcurl $LIBS"
+LIBS="-lcurl $PKG_FLAGS $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -8282,7 +8301,7 @@ then :
printf %s "(cached) " >&6
else $as_nop
ac_check_lib_save_LIBS=$LIBS
-LIBS="-lcurl $LIBS"
+LIBS="-lcurl $PKG_FLAGS $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -8353,22 +8372,21 @@ fi
if test "x$enable_fftw" != "xno"; then
-
+CPPFLAGS="$CPPFLAGS "`pkg-config --silence-errors --cflags fftw3 || echo`
ac_fn_cxx_check_header_compile "$LINENO" "fftw3.h" "ac_cv_header_fftw3_h" "$ac_includes_default"
if test "x$ac_cv_header_fftw3_h" = xyes
then :
-PKG_FLAGS=""
-
+PKG_FLAGS=" "`pkg-config --silence-errors --libs fftw3 || echo`
-if test "x$PKG_FLAGS" == "x"; then
+if test "x$PKG_FLAGS" == "x "; then
PKG_FLAGS=-l"fftw3"
-echo Will try linking with $PKG_FLAGS
+echo will try linking with $PKG_FLAGS
fi
LDFLAGS_SAVE=$LDFLAGS
-LDFLAGS="$LDFLAGS ""$STATIC ""$PKG_FLAGS ""$DYNAMIC "
+LDFLAGS="$LDFLAGS "$STATIC"$PKG_FLAGS "$DYNAMIC
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fftw_execute in -lfftw3" >&5
printf %s "checking for fftw_execute in -lfftw3... " >&6; }
if test ${ac_cv_lib_fftw3_fftw_execute+y}
@@ -8376,7 +8394,7 @@ then :
printf %s "(cached) " >&6
else $as_nop
ac_check_lib_save_LIBS=$LIBS
-LIBS="-lfftw3 $LIBS"
+LIBS="-lfftw3 $PKG_FLAGS $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -8421,7 +8439,7 @@ then :
printf %s "(cached) " >&6
else $as_nop
ac_check_lib_save_LIBS=$LIBS
-LIBS="-lfftw3 $LIBS"
+LIBS="-lfftw3 $PKG_FLAGS $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -8489,7 +8507,7 @@ fi
if test "x$enable_eigen" != "xno"; then
-
+CPPFLAGS="$CPPFLAGS "`pkg-config --silence-errors --cflags eigen3 || echo`
ac_fn_cxx_check_header_compile "$LINENO" "Eigen/Dense" "ac_cv_header_Eigen_Dense" "$ac_includes_default"
if test "x$ac_cv_header_Eigen_Dense" = xyes
@@ -8593,7 +8611,7 @@ printf "%s\n" "#define HAVE_LIBTIRPC 1" >>confdefs.h
;;
*)
-
+CPPFLAGS="$CPPFLAGS "`pkg-config --silence-errors --cflags libtirpc || echo`
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -8609,16 +8627,15 @@ _ACEOF
if ac_fn_cxx_try_compile "$LINENO"
then :
-PKG_FLAGS=""
+PKG_FLAGS=" "`pkg-config --silence-errors --libs libtirpc || echo`
-
-if test "x$PKG_FLAGS" == "x"; then
+if test "x$PKG_FLAGS" == "x "; then
PKG_FLAGS=-l"tirpc"
-echo Will try linking with $PKG_FLAGS
+echo will try linking with $PKG_FLAGS
fi
LDFLAGS_SAVE=$LDFLAGS
-LDFLAGS="$LDFLAGS ""$STATIC ""$PKG_FLAGS ""$DYNAMIC "
+LDFLAGS="$LDFLAGS "$STATIC"$PKG_FLAGS "$DYNAMIC
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for xdrstdio_create in -ltirpc" >&5
printf %s "checking for xdrstdio_create in -ltirpc... " >&6; }
if test ${ac_cv_lib_tirpc_xdrstdio_create+y}
@@ -8626,7 +8643,7 @@ then :
printf %s "(cached) " >&6
else $as_nop
ac_check_lib_save_LIBS=$LIBS
-LIBS="-ltirpc $LIBS"
+LIBS="-ltirpc $PKG_FLAGS $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -8671,7 +8688,7 @@ then :
printf %s "(cached) " >&6
else $as_nop
ac_check_lib_save_LIBS=$LIBS
-LIBS="-ltirpc $LIBS"
+LIBS="-ltirpc $PKG_FLAGS $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -8741,25 +8758,24 @@ fi
if test "x$enable_gsl" != "xno"; then
+CPPFLAGS="$CPPFLAGS "`pkg-config --silence-errors --cflags gsl || echo`
-
-
+LDFLAGS="$LDFLAGS "`pkg-config --silence-errors --libs gsl || echo`
ac_fn_cxx_check_header_compile "$LINENO" "gsl/gsl_sf.h" "ac_cv_header_gsl_gsl_sf_h" "$ac_includes_default"
if test "x$ac_cv_header_gsl_gsl_sf_h" = xyes
then :
-PKG_FLAGS=""
-
+PKG_FLAGS=" "`pkg-config --silence-errors --libs gsl || echo`
-if test "x$PKG_FLAGS" == "x"; then
+if test "x$PKG_FLAGS" == "x "; then
PKG_FLAGS=-l"gsl"
-echo Will try linking with $PKG_FLAGS
+echo will try linking with $PKG_FLAGS
fi
LDFLAGS_SAVE=$LDFLAGS
-LDFLAGS="$LDFLAGS ""$STATIC ""$PKG_FLAGS ""$DYNAMIC "
+LDFLAGS="$LDFLAGS "$STATIC"$PKG_FLAGS "$DYNAMIC
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gsl_sf_debye_6 in -lgsl" >&5
printf %s "checking for gsl_sf_debye_6 in -lgsl... " >&6; }
if test ${ac_cv_lib_gsl_gsl_sf_debye_6+y}
@@ -8767,7 +8783,7 @@ then :
printf %s "(cached) " >&6
else $as_nop
ac_check_lib_save_LIBS=$LIBS
-LIBS="-lgsl $LIBS"
+LIBS="-lgsl $PKG_FLAGS $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -8812,7 +8828,7 @@ then :
printf %s "(cached) " >&6
else $as_nop
ac_check_lib_save_LIBS=$LIBS
-LIBS="-lgsl $LIBS"
+LIBS="-lgsl $PKG_FLAGS $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -10553,7 +10569,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by Asymptote $as_me 2.89, which was
+This file was extended by Asymptote $as_me 2.90, which was
generated by GNU Autoconf 2.71. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -10617,7 +10633,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config='$ac_cs_config_escaped'
ac_cs_version="\\
-Asymptote config.status 2.89
+Asymptote config.status 2.90
configured by $0, generated by GNU Autoconf 2.71,
with options \\"\$ac_cs_config\\"
diff --git a/graphics/asymptote/configure.ac b/graphics/asymptote/configure.ac
index 3fe1598181..7e6dd1aaa1 100644
--- a/graphics/asymptote/configure.ac
+++ b/graphics/asymptote/configure.ac
@@ -3,10 +3,11 @@
# this file.
AC_PREREQ(2)
-AC_INIT([Asymptote],[2.89],[https://github.com/vectorgraphics/asymptote/issues])
+AC_INIT([Asymptote],[2.90],[https://github.com/vectorgraphics/asymptote/issues])
VERSION=$PACKAGE_VERSION
AC_SUBST(VERSION)
m4_include([ax_pthread.m4])
+m4_include([pkg.m4])
AC_C_BIGENDIAN
AC_CANONICAL_HOST
@@ -322,18 +323,17 @@ AC_CHECK_HEADERS(editline/readline.h)
])
AC_DEFUN([PKG_CONFIG],[
-ifdef([PKG_CHECK_MODULES],$1="$2 "`pkg-config --silence-errors $3 $4`,)
+ifdef([PKG_CHECK_MODULES],$1="$2 "`pkg-config --silence-errors $3 $4 || echo`,$1="$2 ")
])
AC_DEFUN([CHECK_LIB_STATIC],[
-PKG_FLAGS=""
PKG_CONFIG(PKG_FLAGS,,--libs,$1)
-if test "x$PKG_FLAGS" == "x"; then
+if test "x$PKG_FLAGS" == "x "; then
PKG_FLAGS=-l"$2"
-echo Will try linking with $PKG_FLAGS
+echo will try linking with $PKG_FLAGS
fi
LDFLAGS_SAVE=$LDFLAGS
-LDFLAGS="$LDFLAGS ""$STATIC ""$PKG_FLAGS ""$DYNAMIC "
+LDFLAGS="$LDFLAGS "$STATIC"$PKG_FLAGS "$DYNAMIC
AC_CHECK_LIB($2,$3,AC_DEFINE($4,1,DEFINE_LIB($2)),
if test "x$enable_static" = "xyes"; then
[
@@ -344,7 +344,7 @@ AC_CHECK_LIB($2,$3,AC_DEFINE($4,1,DEFINE_LIB($2)),
[
LDFLAGS=$LDFLAGS_SAVE
$5
-])
+],$PKG_FLAGS)
]
else
[
@@ -352,7 +352,7 @@ LDFLAGS=$LDFLAGS_SAVE
$5
]
fi
-)]
+,$PKG_FLAGS)]
)
if test "x$enable_readline" != "xno"; then
diff --git a/graphics/asymptote/dec.cc b/graphics/asymptote/dec.cc
index 1b47e0722f..d969ac5f02 100644
--- a/graphics/asymptote/dec.cc
+++ b/graphics/asymptote/dec.cc
@@ -27,7 +27,7 @@ using namespace types;
using mem::list;
-trans::tyEntry *ty::transAsTyEntry(coenv &e, record *where)
+trans::tyEntry *astType::transAsTyEntry(coenv &e, record *where)
{
return new trans::tyEntry(trans(e, false), 0, where, getPos());
}
@@ -128,7 +128,7 @@ arrayTy::operator string() const
}
tyEntryTy::tyEntryTy(position pos, types::ty *t)
- : ty(pos), ent(new trans::tyEntry(t, 0, 0, position()))
+ : astType(pos), ent(new trans::tyEntry(t, 0, 0, position()))
{
}
@@ -200,7 +200,8 @@ void block::transAsField(coenv &e, record *r)
}
bool block::transAsTemplatedField(
- coenv &e, record *r, mem::vector<absyntax::namedTyEntry*>* args
+ coenv &e, record *r, mem::vector<absyntax::namedTyEntry*>* args,
+ frame *caller
) {
Scope scopeHolder(e, scope);
auto p = stms.begin();
@@ -214,7 +215,7 @@ bool block::transAsTemplatedField(
em.sync();
return false;
}
- if(!dec->transAsParamMatcher(e, r, args))
+ if(!dec->transAsParamMatcher(e, r, args, caller))
return false;
while (++p != stms.end()) {
@@ -234,9 +235,10 @@ void block::transAsRecordBody(coenv &e, record *r)
}
bool block::transAsTemplatedRecordBody(
- coenv &e, record *r, mem::vector<absyntax::namedTyEntry*> *args
+ coenv &e, record *r, mem::vector<absyntax::namedTyEntry*> *args,
+ frame *caller
) {
- bool succeeded = transAsTemplatedField(e, r, args);
+ bool succeeded = transAsTemplatedField(e, r, args, caller);
e.c.closeRecord();
return succeeded;
}
@@ -267,10 +269,26 @@ record *block::transAsTemplatedFile(
genv& ge,
symbol id,
mem::vector<absyntax::namedTyEntry*>* args,
- frame *parent
+ coenv& cE
) {
+
+ for (auto p = args->rbegin(); p != args->rend(); ++p) {
+ namedTyEntry *arg = *p;
+ tyEntry *ent = arg->ent;
+ if(ent->t->kind == types::ty_record) {
+ varEntry *v = ent->v;
+ if (v) {
+ // Push the value of v to the stack.
+ v->getLocation()->encode(READ, arg->pos, cE.c);
+ } else {
+ // Push the appropriate frame to the stack.
+ newRecordExp::encodeLevel(arg->pos,cE,ent);
+ }
+ }
+ }
+
// Create the new module.
- record *r = new record(id, new frame(id,parent,0));
+ record *r = new record(id, new frame(id, 0, 0));
// Create coder and environment to translate the module.
// File-level modules have dynamic fields by default.
@@ -283,7 +301,7 @@ record *block::transAsTemplatedFile(
autoplainRunnable()->transAsField(ce, r);
}
- bool succeeded = transAsTemplatedRecordBody(ce, r, args);
+ bool succeeded = transAsTemplatedRecordBody(ce, r, args, cE.c.getFrame());
if (!succeeded) {
return nullptr;
}
@@ -491,7 +509,7 @@ void decidstart::createSymMap(AsymptoteLsp::SymbolContext* symContext)
}
void decidstart::createSymMapWType(
- AsymptoteLsp::SymbolContext* symContext, absyntax::ty* base
+ AsymptoteLsp::SymbolContext* symContext, absyntax::astType* base
) {
#ifdef HAVE_LSP
std::string name(static_cast<std::string>(getName()));
@@ -733,7 +751,7 @@ void decid::createSymMap(AsymptoteLsp::SymbolContext* symContext)
}
void decid::createSymMapWType(
- AsymptoteLsp::SymbolContext* symContext, absyntax::ty* base
+ AsymptoteLsp::SymbolContext* symContext, absyntax::astType* base
) {
#ifdef HAVE_LSP
start->createSymMapWType(symContext, base);
@@ -775,7 +793,7 @@ void decidlist::createSymMap(AsymptoteLsp::SymbolContext* symContext) {
}
void decidlist::createSymMapWType(
- AsymptoteLsp::SymbolContext* symContext, absyntax::ty* base
+ AsymptoteLsp::SymbolContext* symContext, absyntax::astType* base
) {
#ifdef HAVE_LSP
for (auto const& p : decs)
@@ -834,7 +852,7 @@ class loadModuleExp : public exp {
public:
loadModuleExp(position pos, record *imp)
- : exp(pos) {ft=new function(imp,primString(),primString());}
+ : exp(pos) {ft=new function(imp,primString());}
void prettyprint(ostream &out, Int indent) {
prettyname(out, "loadModuleExp", indent, getPos());
@@ -865,18 +883,19 @@ public:
// the import, but doesn't add the import to the environment.
varEntry *accessModule(position pos, coenv &e, record *r, symbol id)
{
- record *imp=e.e.getModule(id, (string)id);
+ string filename=(string) id;
+ record *imp=e.e.getModule(id, filename);
if (!imp) {
em.error(pos);
- em << "could not load module '" << id << "'";
+ em << "could not load module '" << filename << "'";
em.sync();
return 0;
}
else {
// Create a varinit that evaluates to the module.
- // This is effectively the expression 'loadModule(filename,"")'.
+ // This is effectively the expression 'loadModule(filename)'.
callExp init(pos, new loadModuleExp(pos, imp),
- new stringExp(pos, (string)id), new stringExp(pos, ""));
+ new stringExp(pos, filename));
// The varEntry should have whereDefined()==0 as it is not defined inside
// the record r.
@@ -891,14 +910,15 @@ varEntry *accessModule(position pos, coenv &e, record *r, symbol id)
varEntry *accessTemplatedModule(position pos, coenv &e, record *r, symbol id,
formals *args)
{
- stringstream s;
- s << args->getSignature(e)->handle();
- string sigHandle=s.str();
+ string filename=(string) id;
+ stringstream buf;
+ buf << id << '/' << args->getSignature(e)->handle() << '/';
+ symbol index=symbol::literalTrans(buf.str());
auto *computedArgs = new mem::vector<namedTyEntry*>();
mem::vector<tySymbolPair> *fields = args->getFields();
for (auto p = fields->begin(); p != fields->end(); ++p) {
- ty* theType = p->ty;
+ astType* theType = p->ty;
symbol theName = p->sym;
if (theName == symbol::nullsym) {
em.error(theType->getPos());
@@ -911,11 +931,7 @@ varEntry *accessTemplatedModule(position pos, coenv &e, record *r, symbol id,
));
}
- record *imp=e.e.getTemplatedModule(id,
- (string) id,
- sigHandle,
- computedArgs,
- e.c.getFrame());
+ record *imp=e.e.getTemplatedModule(index,filename,computedArgs,e);
if (!imp) {
em.error(pos);
em << "could not load module '" << id << "'";
@@ -924,9 +940,8 @@ varEntry *accessTemplatedModule(position pos, coenv &e, record *r, symbol id,
}
else {
// Create a varinit that evaluates to the module.
- // This is effectively the expression 'loadModule(filename,index)'.
- callExp init(pos, new loadModuleExp(pos, imp),
- new stringExp(pos, (string) id), new stringExp(pos, sigHandle));
+ // This is effectively the expression 'loadModule(index)'.
+ callExp init(pos, new loadModuleExp(pos, imp), new stringExp(pos, index));
// The varEntry should have whereDefined()==0 as it is not defined inside
// the record r.
@@ -1061,7 +1076,22 @@ void typeParam::prettyprint(ostream &out, Int indent) {
out << "typeParam (" << paramSym << ")\n";
}
+void recordInitializer(coenv &e, symbol id, record *parent, position here)
+{
+ // This is equivalent to the code
+ // A operator init() { return new A; }
+ // where A is the name of the record.
+ formals formals(here);
+ simpleName recordName(here, id);
+ nameTy result(here, &recordName);
+ newRecordExp exp(here, &result);
+ returnStm stm(here, &exp);
+ fundec init(here, &result, symbol::opTrans("init"), &formals, &stm);
+ init.transAsField(e, parent);
+}
+
bool typeParam::transAsParamMatcher(coenv &e, record *r, namedTyEntry* arg) {
+ position pos=arg->pos;
if (arg->dest != paramSym) {
em.error(arg->pos);
em << "template argument name does not match module: passed "
@@ -1070,22 +1100,42 @@ bool typeParam::transAsParamMatcher(coenv &e, record *r, namedTyEntry* arg) {
<< paramSym;
return false;
}
- addTypeWithPermission(e, r, arg->ent, paramSym);
- types::ty *t = arg->ent->t;
- if (t->kind == types::ty_record) {
- record *local = dynamic_cast<record *>(t);
- // copied from recorddecc::addPostRecordEnvironment, mutatis mutandis
- if (r) {
- r->e.add(local->postdefenv, 0, e.c);
+
+ if(arg->ent->t->kind == types::ty_record) {
+ record *module = dynamic_cast<record *>(arg->ent->v->getType());
+ symbol Module=symbol::literalTrans(module->getName());
+ record *imp=e.e.getLoadedModule(Module);
+
+ tyEntry *entry;
+ if(imp) {
+ callExp init(pos, new loadModuleExp(pos, imp),
+ new stringExp(pos, module->getName()));
+ varEntry *v=makeVarEntryWhere(e, r, imp, 0, pos);
+ initializeVar(pos, e, v, &init);
+ if (v)
+ addVar(e, r, v, Module);
+
+ record *src = dynamic_cast<record *>(arg->ent->t);
+ qualifiedName *qn=new qualifiedName(
+ pos,
+ new simpleName(pos,module->getName()),
+ src->getName()
+ );
+
+ entry=nameTy(pos,qn).transAsTyEntry(e, r);
+ } else {
+ entry=arg->ent;
}
- e.e.add(local->postdefenv, 0, e.c);
- }
+ addTypeWithPermission(e, r, entry, paramSym);
+ recordInitializer(e,paramSym,r,pos);
+ } else
+ addTypeWithPermission(e, r, arg->ent, paramSym);
//e.e.addType(paramSym, arg->ent);
// The code below would add e.g. operator== to the context, but potentially
// ignore overrides of operator==:
//
- // types::ty *t = arg.ent->t;
+ // types::astType *t = arg.ent->t;
// if (t->kind == types::ty_record) {
// record *r = dynamic_cast<record *>(t);
// if (r) {
@@ -1116,7 +1166,7 @@ void typeParamList::add(typeParam *tp) {
}
bool typeParamList::transAsParamMatcher(
- coenv &e, record *r, mem::vector<namedTyEntry*> *args
+ coenv &e, record *r, mem::vector<namedTyEntry*> *args, frame *caller
) {
if (args->size() != params.size()) {
position pos = getPos();
@@ -1133,8 +1183,30 @@ bool typeParamList::transAsParamMatcher(
}
return false;
}
+ mem::vector<namedTyEntry*> *qualifiedArgs = new mem::vector<namedTyEntry*>();
+
+ const string callerContextName="callerContext/";
+ const static symbol *id0=new symbol(symbol::literalTrans(callerContextName));
+ record *callerContext = new record(*id0, caller);
+ for (namedTyEntry *arg : *args) {
+ if (arg->ent->t->kind == types::ty_record) {
+ varEntry *v = arg->ent->v;
+ varEntry *newV = makeVarEntryWhere(e, r, v ? v->getType() : callerContext, nullptr,
+ arg->pos);
+ newV->getLocation()->encode(WRITE, arg->pos, e.c);
+ e.c.encodePop();
+
+ tyEntry *newEnt = qualifyTyEntry(newV, arg->ent);
+ qualifiedArgs->push_back(
+ new namedTyEntry(arg->pos, arg->dest, newEnt)
+ );
+ } else {
+ qualifiedArgs->push_back(arg);
+ }
+ }
+
for (size_t i = 0; i < params.size(); ++i) {
- bool succeeded = params[i]->transAsParamMatcher(e, r, (*args)[i]);
+ bool succeeded = params[i]->transAsParamMatcher(e, r, (*qualifiedArgs)[i]);
if (!succeeded) return false;
}
return true;
@@ -1152,9 +1224,9 @@ symbol templatedSymbol() {
}
bool receiveTypedefDec::transAsParamMatcher(
- coenv& e, record *r, mem::vector<namedTyEntry*> *args
+ coenv& e, record *r, mem::vector<namedTyEntry*> *args, frame *caller
) {
- bool succeeded = params->transAsParamMatcher(e, r, args);
+ bool succeeded = params->transAsParamMatcher(e, r, args, caller);
types::ty *intTy = e.e.lookupType(intSymbol());
assert(intTy);
@@ -1349,19 +1421,7 @@ void recorddec::prettyprint(ostream &out, Int indent)
void recorddec::transRecordInitializer(coenv &e, record *parent)
{
- position here=getPos();
-
- // This is equivalent to the code
- // A operator init() { return new A; }
- // where A is the name of the record.
- formals formals(here);
- simpleName recordName(here, id);
- nameTy result(here, &recordName);
- newRecordExp exp(here, &result);
- returnStm stm(here, &exp);
- fundec init(here, &result, symbol::opTrans("init"), &formals, &stm);
-
- init.transAsField(e, parent);
+ recordInitializer(e,id,parent,getPos());
}
void recorddec::addPostRecordEnvironment(coenv &e, record *r, record *parent) {
@@ -1420,7 +1480,7 @@ runnable *autoplainRunnable() {
// Abstract syntax for the code:
// private import plain;
position pos=position();
- static importdec ap(pos, new idpair(pos, symbol::trans("plain")));
+ static importdec ap(pos, new idpair(pos, symbol::literalTrans("plain")));
static modifiedRunnable mr(pos, trans::PRIVATE, &ap);
return &mr;
diff --git a/graphics/asymptote/dec.h b/graphics/asymptote/dec.h
index ac6e5b065b..53fee4bfe0 100644
--- a/graphics/asymptote/dec.h
+++ b/graphics/asymptote/dec.h
@@ -45,9 +45,9 @@ using sym::symbol;
class vardec;
-class ty : public absyn {
+class astType : public absyn {
public:
- ty(position pos)
+ astType(position pos)
: absyn(pos) {}
virtual void prettyprint(ostream &out, Int indent) = 0;
@@ -71,15 +71,15 @@ public:
#endif
};
-class nameTy : public ty {
+class nameTy : public astType {
name *id;
public:
nameTy(position pos, name *id)
- : ty(pos), id(id) {}
+ : astType(pos), id(id) {}
nameTy(name *id)
- : ty(id->getPos()), id(id) {}
+ : astType(id->getPos()), id(id) {}
void prettyprint(ostream &out, Int indent) override;
@@ -107,16 +107,16 @@ public:
types::array *truetype(types::ty *base, bool tacit=false);
};
-class arrayTy : public ty {
- ty *cell;
+class arrayTy : public astType {
+ astType *cell;
dimensions *dims;
public:
- arrayTy(position pos, ty *cell, dimensions *dims)
- : ty(pos), cell(cell), dims(dims) {}
+ arrayTy(position pos, astType *cell, dimensions *dims)
+ : astType(pos), cell(cell), dims(dims) {}
arrayTy(name *id, dimensions *dims)
- : ty(dims->getPos()), cell(new nameTy(id)), dims(dims) {}
+ : astType(dims->getPos()), cell(new nameTy(id)), dims(dims) {}
void prettyprint(ostream &out, Int indent) override;
@@ -129,11 +129,11 @@ public:
// Similar to varEntryExp, this helper class always translates to the same
// fixed type.
-class tyEntryTy : public ty {
+class tyEntryTy : public astType {
trans::tyEntry *ent;
public:
tyEntryTy(position pos, trans::tyEntry *ent)
- : ty(pos), ent(ent) {}
+ : astType(pos), ent(ent) {}
tyEntryTy(position pos, types::ty *t);
@@ -240,12 +240,14 @@ public:
void transAsField(coenv &e, record *r) override;
bool transAsTemplatedField(
- coenv &e, record *r, mem::vector<absyntax::namedTyEntry*>* args
+ coenv &e, record *r, mem::vector<absyntax::namedTyEntry*>* args,
+ trans::frame *caller
);
void transAsRecordBody(coenv &e, record *r);
bool transAsTemplatedRecordBody(
- coenv &e, record *r, mem::vector<absyntax::namedTyEntry*> *args
+ coenv &e, record *r, mem::vector<absyntax::namedTyEntry*> *args,
+ trans::frame *caller
);
types::record *transAsFile(genv& ge, symbol id);
@@ -254,7 +256,7 @@ public:
genv& ge,
symbol id,
mem::vector<absyntax::namedTyEntry*> *args,
- trans::frame *parent
+ coenv &e
);
// If the block can be interpreted as a single vardec, return that vardec
@@ -363,7 +365,7 @@ public:
void createSymMap(AsymptoteLsp::SymbolContext* symContext) override;
void createSymMapWType(
- AsymptoteLsp::SymbolContext* symContext, absyntax::ty* base
+ AsymptoteLsp::SymbolContext* symContext, absyntax::astType* base
);
};
@@ -406,7 +408,7 @@ public:
void createSymMap(AsymptoteLsp::SymbolContext* symContext) override;
void createSymMapWType(
- AsymptoteLsp::SymbolContext* symContext, absyntax::ty* base
+ AsymptoteLsp::SymbolContext* symContext, absyntax::astType* base
);
};
@@ -441,7 +443,7 @@ public:
void createSymMap(AsymptoteLsp::SymbolContext* symContext) override;
void createSymMapWType(
- AsymptoteLsp::SymbolContext* symContext, absyntax::ty* base
+ AsymptoteLsp::SymbolContext* symContext, absyntax::astType* base
);
};
@@ -461,14 +463,14 @@ void createVar(position pos, coenv &e, record *r,
symbol id, types::ty *t, varinit *init);
class vardec : public dec {
- ty *base;
+ astType *base;
decidlist *decs;
public:
- vardec(position pos, ty *base, decidlist *decs)
+ vardec(position pos, astType *base, decidlist *decs)
: dec(pos), base(base), decs(decs) {}
- vardec(position pos, ty *base, decid *di)
+ vardec(position pos, astType *base, decid *di)
: dec(pos), base(base), decs(new decidlist(pos))
{
decs->add(di);
@@ -634,7 +636,8 @@ public:
void add(typeParam *tp);
- bool transAsParamMatcher(coenv &e, record *r, mem::vector<namedTyEntry*> *args);
+ bool transAsParamMatcher(coenv &e, record *r,
+ mem::vector<namedTyEntry*> *args, trans::frame *caller);
void prettyprint(ostream &out, Int indent);
};
@@ -644,12 +647,12 @@ class receiveTypedefDec : public dec {
typeParamList* params;
public:
- receiveTypedefDec(position pos, typeParamList* params)
+ receiveTypedefDec(position pos, typeParamList* params)
: dec(pos), params(params) {}
void transAsField(coenv& e, record *r) override;
bool transAsParamMatcher(
- coenv& e, record *r, mem::vector<namedTyEntry*> *args
+ coenv& e, record *r, mem::vector<namedTyEntry*> *args, trans::frame *caller
);
};
@@ -674,7 +677,7 @@ protected:
// from a.B unravel x;
//
// Here, v->getType() will yield A and v->getLocation() will yield the
- // location of the the variable a, but the record type t will be B.
+ // location of the variable a, but the record type t will be B.
record *t;
varEntry *v;
diff --git a/graphics/asymptote/doc/CAD.pdf b/graphics/asymptote/doc/CAD.pdf
index 1906655b54..819509abff 100644
--- a/graphics/asymptote/doc/CAD.pdf
+++ b/graphics/asymptote/doc/CAD.pdf
Binary files differ
diff --git a/graphics/asymptote/doc/FAQ/asy-faq.info b/graphics/asymptote/doc/FAQ/asy-faq.info
index c0665b7144..e66a938dae 100644
--- a/graphics/asymptote/doc/FAQ/asy-faq.info
+++ b/graphics/asymptote/doc/FAQ/asy-faq.info
@@ -10,7 +10,7 @@ END-INFO-DIR-ENTRY
File: asy-faq.info, Node: Top, Next: Question 1.1, Up: (dir)
ASYMPTOTE FREQUENTLY ASKED QUESTIONS
- 2024-03-23
+ 2024-06-21
This is the list of Frequently Asked Questions about Asymptote (asy).
diff --git a/graphics/asymptote/doc/TeXShopAndAsymptote.pdf b/graphics/asymptote/doc/TeXShopAndAsymptote.pdf
index e6493a9c39..de1fb5b2da 100644
--- a/graphics/asymptote/doc/TeXShopAndAsymptote.pdf
+++ b/graphics/asymptote/doc/TeXShopAndAsymptote.pdf
Binary files differ
diff --git a/graphics/asymptote/doc/asy-latex.pdf b/graphics/asymptote/doc/asy-latex.pdf
index 2b327afac6..e09c0b928e 100644
--- a/graphics/asymptote/doc/asy-latex.pdf
+++ b/graphics/asymptote/doc/asy-latex.pdf
Binary files differ
diff --git a/graphics/asymptote/doc/asyRefCard.pdf b/graphics/asymptote/doc/asyRefCard.pdf
index d68b7b1b95..dcfb6417e4 100644
--- a/graphics/asymptote/doc/asyRefCard.pdf
+++ b/graphics/asymptote/doc/asyRefCard.pdf
Binary files differ
diff --git a/graphics/asymptote/doc/asymptote.pdf b/graphics/asymptote/doc/asymptote.pdf
index 4e414de0ef..a5de59f7c4 100644
--- a/graphics/asymptote/doc/asymptote.pdf
+++ b/graphics/asymptote/doc/asymptote.pdf
Binary files differ
diff --git a/graphics/asymptote/doc/asymptote.texi b/graphics/asymptote/doc/asymptote.texi
index ee0e3ae49e..f37789114f 100644
--- a/graphics/asymptote/doc/asymptote.texi
+++ b/graphics/asymptote/doc/asymptote.texi
@@ -81,6 +81,7 @@ Installation
* Compiling from UNIX source:: Building @code{Asymptote} from scratch
* Editing modes:: Convenient @code{emacs} and @code{vim} modes
* Git:: Getting the latest development source
+* Building the documentation:: Building the documentation
* Uninstall:: Goodbye, @code{Asymptote}!
Tutorial
@@ -105,6 +106,7 @@ Programming
* Pens:: Colors, line types, line widths, font sizes
* Transforms:: Affine transforms
* Frames and pictures:: Canvases for immediate and deferred drawing
+* Deferred drawing:: Witholding drawing until all data is available
* Files:: Reading and writing your data
* Variable initializers:: Initialize your variables
* Structures:: Organize your data
@@ -141,6 +143,7 @@ Base modules
* plain:: Default @code{Asymptote} base file
* simplex:: Linear programming: simplex method
+* simplex2:: Two-variable simplex method
* math:: Extend @code{Asymptote}'s math capabilities
* interpolate:: Interpolation routines
* geometry:: Geometry routines
@@ -308,6 +311,7 @@ A quick reference card for @code{Asymptote} is available at
* Compiling from UNIX source:: Building @code{Asymptote} from scratch
* Editing modes:: Convenient @code{emacs} and @code{vim} modes
* Git:: Getting the latest development source
+* Building the documentation:: Building the documentation
* Uninstall:: Goodbye, @code{Asymptote}!
@end menu
@@ -404,7 +408,7 @@ The @code{ImageMagick} package from
@noindent
is required to support output formats other than @acronym{HTML},
-@acronym{PDF}, @acronym{SVG}, and @acronym{PNG} (@pxref{convert}).
+@acronym{PDF}, @acronym{SVG}, and @acronym{PNG} (@pxref{magick}).
The @code{Python 3} interpreter from @url{https://www.python.org} is only
required if you wish to try out the graphical user interface (@pxref{GUI}).
@@ -516,7 +520,7 @@ configuration variables @code{paperwidth} and @code{paperheight}.
@cindex @code{texcommand}
@cindex @code{dvips}
@cindex @code{dvisvgm}
-@cindex @code{convert}
+@cindex @code{magick}
@cindex @code{ImageMagick}
@cindex @code{asygl}
These additional configuration variables normally do not require adjustment:
@@ -531,6 +535,7 @@ asygl
@end verbatim
@noindent
+@cindex @code{warn}
Warnings (such as "unbounded" and "offaxis") may be enabled or disabled with
the functions
@verbatim
@@ -792,6 +797,21 @@ apt-get build-dep asymptote
@end verbatim
@noindent
+@node Building the documentation
+@section Building the documentation
+Here are instructions for building the documentation:
+@verbatim
+cd doc
+make # for both the PDF version doc/asymptote.pdf and the HTML version
+cd png
+make # for the HTML version only: doc/png/index.html
+@end verbatim
+Note that the @code{HTML} version cannot be built without
+executing @code{make} from @code{doc} folder first.
+
+The @code{asy} executable is required for compiling the diagrams
+in the documentation.
+
@node Uninstall, , Git, Installation
@section Uninstall
@cindex uninstall
@@ -883,7 +903,7 @@ followed by @code{Enter}, to obtain the above image.
@cindex arrow keys
@cindex erase
@cindex quit
-@noindent
+
At this point you can type further @code{draw} commands, which will be added
to the displayed figure, @code{erase} to clear the canvas,
@verbatim
@@ -1123,7 +1143,8 @@ use in constructing an optional legend entry.
@cindex @code{Bar}
@cindex @code{Bars}
@cindex @code{barsize}
-Bars are useful for indicating dimensions. The possible values of
+
+Bars @code{bar} are useful for indicating dimensions. The possible values of
@code{bar} are @code{None}, @code{BeginBar}, @code{EndBar} (or
equivalently @code{Bar}), and @code{Bars} (which draws a bar at both
ends of the path). Each of these bar specifiers (except for
@@ -1133,6 +1154,7 @@ bar length is @code{barsize(pen)}.
@cindex arrows
@anchor{arrows}
+@cindex @code{arrowbar}
@cindex @code{None}
@cindex @code{Blank}
@cindex @code{BeginArrow}
@@ -1140,77 +1162,116 @@ bar length is @code{barsize(pen)}.
@cindex @code{EndArrow}
@cindex @code{Arrow}
@cindex @code{Arrows}
-@cindex @code{FillDraw}
-@cindex @code{Fill}
-@cindex @code{Draw}
-@cindex @code{NoFill}
-@cindex @code{UnFill}
+
+The possible values of @code{arrow} are @code{None}, @code{Blank}
+(which draws no arrows or path), @code{BeginArrow}, @code{MidArrow},
+@code{EndArrow} (or equivalently @code{Arrow}),
+and @code{Arrows} (which draws an arrow at both ends of the path).
+
@cindex @code{BeginArcArrow}
@cindex @code{MidArcArrow}
@cindex @code{EndArcArrow}
@cindex @code{ArcArrow}
@cindex @code{ArcArrows}
+There are also arrow versions with
+slightly modified default values of @code{size} and @code{angle} suitable for
+curved arrows: @code{BeginArcArrow}, @code{EndArcArrow} (or equivalently
+@code{ArcArrow}), @code{MidArcArrow}, and @code{ArcArrows}.
+
+For example:
+@verbatim
+draw((0,0)--(1,1),arrow=Arrows);
+@end verbatim
+All of the arrow specifiers except for @code{None} and @code{Blank}
+may be given optional arguments, for example:
+@verbatim
+draw((0,0)--(1,1),arrow=Arrow(
+ arrowhead=HookHead,size=3mm,angle=20,filltype=Draw,position=0.9));
+@end verbatim
+
+The function @code{Arrow} has the signature
+@verbatim
+arrowbar Arrow(arrowhead arrowhead=DefaultHead,
+ real size=0, real angle=arrowangle,
+ filltype filltype=null, position position=EndPoint)
+@end verbatim
+@noindent
+Calling @code{Arrow()} returns @code{Arrow}, which is an @code{arrowbar} object.
+The parameters are:
+
+@itemize
+@cindex @code{arrowhead}
@cindex @code{DefaultHead}
@cindex @code{SimpleHead}
@cindex @code{HookHead}
@cindex @code{TeXHead}
-The possible values of @code{arrow} are @code{None}, @code{Blank}
-(which draws no arrows or path), @code{BeginArrow}, @code{MidArrow},
-@code{EndArrow} (or equivalently @code{Arrow}),
-and @code{Arrows} (which draws an arrow at both ends of the path).
-All of the arrow specifiers except for @code{None} and @code{Blank}
-may be given the optional arguments arrowhead @code{arrowhead} (one of
+@item @code{arrowhead}
+can be one of
the predefined arrowhead styles @code{DefaultHead}, @code{SimpleHead},
-@code{HookHead}, @code{TeXHead}),
-real @code{size} (arrowhead size in @code{PostScript} coordinates),
-real @code{angle} (arrowhead angle
-in degrees), filltype @code{filltype} (one of @code{FillDraw}, @code{Fill},
-@code{NoFill}, @code{UnFill}, @code{Draw}) and (except for
-@code{MidArrow} and @code{Arrows}) a real @code{position} (in the
+@code{HookHead}, @code{TeXHead}.
+@item real @code{size} is the arrowhead size in @code{PostScript} coordinates.
+
+The default arrowhead size when drawn
+with a pen @code{p} is @code{arrowsize(p)}.
+@item real @code{angle} is the arrowhead angle
+in degrees.
+
+@item filltype @code{filltype} (@pxref{filltype}),
+@item (except for
+@code{MidArrow} and @code{Arrows}) real @code{position} (in the
sense of @code{point(path p, real t)}) along the path where the tip of
-the arrow should be placed. The default arrowhead size when drawn
-with a pen @code{p} is @code{arrowsize(p)}. There are also arrow versions with
-slightly modified default values of @code{size} and @code{angle} suitable for
-curved arrows: @code{BeginArcArrow}, @code{EndArcArrow} (or equivalently
-@code{ArcArrow}), @code{MidArcArrow}, and @code{ArcArrows}.
+the arrow should be placed.
+@end itemize
+Margins @code{margin} can be used to shrink the visible portion of a path by
+@code{labelmargin(p)} to avoid overlap with other drawn objects.
+
+Typical values of @code{margin}
+are:
+@table @code
@cindex @code{NoMargin}
+@item NoMargin
@cindex @code{BeginMargin}
+@item BeginMargin
@cindex @code{EndMargin}
@cindex @code{Margin}
+@item EndMargin
+(equivalently @code{Margin})
@cindex @code{Margins}
+@item Margins
+leaves a margin at both ends of the path.
+@item Margin(real begin, real end=begin)
+specify the size of the beginning and ending margin, respectively,
+in multiples of the units @code{labelmargin(p)} used for aligning labels.
@cindex @code{BeginPenMargin}
+@item BeginPenMargin
@cindex @code{EndPenMargin}
@cindex @code{PenMargin}
+@item EndPenMargin
+(equivalently @code{PenMargin})
@cindex @code{PenMargins}
+@item PenMargins
+@item PenMargin(real begin, real end=begin)
+specify a margin in units of
+the pen line width, taking account of the pen line width when drawing
+the path or arrow.
+@cindex @code{DotMargin}
+@item DotMargin
+an abbreviation for @code{PenMargin(-0.5*dotfactor,0.5*dotfactor)},
+used to draw from the usual beginning point just up to the boundary of an
+end dot of width @code{dotfactor*linewidth(p)}.
@cindex @code{BeginDotMargin}
+@item BeginDotMargin
@cindex @code{EndDotMargin}
-@cindex @code{DotMargin}
@cindex @code{DotMargins}
-@cindex @code{Margin}
+@item DotMargins
+work similarly.
@cindex @code{TrueMargin}
-Margins can be used to shrink the visible portion of a path by
-@code{labelmargin(p)} to avoid overlap with other drawn objects.
-Typical values of @code{margin}
-are @code{NoMargin}, @code{BeginMargin}, @code{EndMargin} (or
-equivalently @code{Margin}), and @code{Margins} (which leaves a margin
-at both ends of the path). One may use
-@code{Margin(real begin, real end=begin)}
-to specify the size of the beginning and ending margin, respectively,
-in multiples of the units @code{labelmargin(p)} used for aligning labels.
-Alternatively, @code{BeginPenMargin}, @code{EndPenMargin}
-(or equivalently @code{PenMargin}), @code{PenMargins},
-@code{PenMargin(real begin, real end=begin)} specify a margin in units of
-the pen line width, taking account of the pen line width when drawing
-the path or arrow. For example, use @code{DotMargin}, an
-abbreviation for @code{PenMargin(-0.5*dotfactor,0.5*dotfactor)},
-to draw from the usual beginning point just up to the boundary of an
-end dot of width @code{dotfactor*linewidth(p)}. The qualifiers
-@code{BeginDotMargin}, @code{EndDotMargin}, and @code{DotMargins} work
-similarly. The qualifier @code{TrueMargin(real begin, real end=begin)}
-allows one to specify a margin directly in @code{PostScript} units,
+@item TrueMargin(real begin, real end=begin)
+specify a margin directly in @code{PostScript} units,
independent of the pen line width.
+@end table
The use of arrows, bars, and margins is illustrated by the examples
@code{@uref{https://asymptote.sourceforge.io/gallery/Pythagoras.svg,,Pythagoras}@uref{https://asymptote.sourceforge.io/gallery/Pythagoras.asy,,.asy}} and
@@ -1484,6 +1545,7 @@ For an illustration of picture clipping, see the first example in @ref{LaTeX usa
@node label, , clip, Drawing commands
@section label
@cindex @code{label}
+@cindex @code{labelmargin}
@verbatim
void label(picture pic=currentpicture, Label L, pair position,
align align=NoAlign, pen p=currentpen, filltype filltype=NoFill)
@@ -1494,6 +1556,16 @@ Draw Label @code{L} on picture @code{pic} using pen @code{p}. If
coordinate @code{position}; otherwise it will be aligned in the
direction of @code{align} and displaced from @code{position} by
the @code{PostScript} offset @code{align*labelmargin(p)}.
+
+Here, @code{real labelmargin(pen p=currentpen)} is a quantity used to align labels.
+In the code below,
+@verbatim
+label("abcdefg",(0,0),align=up,basealign);
+@end verbatim
+@noindent
+the baseline of the label will be exactly
+@code{labelmargin(currentpen)} @code{PostScript} units above the center.
+
@cindex @code{Align}
The constant @code{Align} can be used to align the
bottom-left corner of the label at @code{position}.
@@ -1609,11 +1681,14 @@ label(graphic("file.eps","width=1cm"),(0,0),NE);
layer();
@end verbatim
+@anchor{baseline}
@cindex @code{baseline}
The @code{string baseline(string s, string template="\strut")}
-function can be used to enlarge the bounding box of labels to match a
+function can be used to enlarge the bounding box of a label to match a
given template, so that their baselines will be typeset on a
horizontal line. See @code{@uref{https://asymptote.sourceforge.io/gallery/Pythagoras.svg,,Pythagoras}@uref{https://asymptote.sourceforge.io/gallery/Pythagoras.asy,,.asy}} for an example.
+Alternatively, the pen @code{basealign} may be used to force labels to
+respect the TeX baseline (@pxref{basealign}).
One can prevent labels from overwriting one another with the
@code{overwrite} pen attribute (@pxref{overwrite}).
@@ -1626,7 +1701,10 @@ A group of objects may be packed together into single frame with the routine
frame pack(pair align=2S ... object inset[]);
@end verbatim
@noindent
-To draw or fill a box (or ellipse or other path) around a Label and
+@anchor{envelope}
+@cindex @code{envelope}
+@cindex @code{object}
+To draw or fill a box (or ellipse or other path) around a @code{Label} and
return the bounding object, use one of the routines
@verbatim
object draw(picture pic=currentpicture, Label L, envelope e,
@@ -1638,8 +1716,7 @@ object draw(picture pic=currentpicture, Label L, envelope e, pair position,
@end verbatim
@noindent
Here @code{envelope} is a boundary-drawing routine such as @code{box},
-@code{roundbox}, or @code{ellipse} defined in @code{plain_boxes.asy}
-(@pxref{envelope}).
+@code{roundbox}, or @code{ellipse} defined in @code{plain_boxes.asy}.
@cindex @code{texpath}
The function @code{path[] texpath(Label L)} returns the path array that
@@ -1774,6 +1851,7 @@ should coincide with the first node of the second path).
* Pens:: Colors, line types, line widths, font sizes
* Transforms:: Affine transforms
* Frames and pictures:: Canvases for immediate and deferred drawing
+* Deferred drawing:: Witholding drawing until all data is available
* Files:: Reading and writing your data
* Variable initializers:: Initialize your variables
* Structures:: Organize your data
@@ -2222,13 +2300,13 @@ individual characters. The inverse operation is provided by
@cindex @code{format}
returns a string containing @code{n} formatted according to the C-style format
string @code{s} using locale @code{locale} (or the current locale if an
-empty string is specified), following the behaviour of the C function
+empty string is specified), following the behavior of the C function
@code{fprintf}), except that only one data field is allowed.
@item string format(string s=defaultformat, bool forcemath=false, string s=defaultseparator, real x, string locale="")
returns a string containing @code{x} formatted according to the C-style format
string @code{s} using locale @code{locale} (or the current locale if an
-empty string is specified), following the behaviour of the C function
+empty string is specified), following the behavior of the C function
@code{fprintf}), except that only one data field is allowed, trailing
zeros are removed by default (unless @code{#} is specified), and
if @code{s} specifies math mode or @code{forcemath=true}, @TeX{} is
@@ -2665,7 +2743,7 @@ Note that @code{lastcut.before} plays the role of the
@cindex @code{buildcycle}
@item path buildcycle(... path[] p);
This returns the path surrounding a region bounded by a list of two or more
-consecutively intersecting paths, following the behaviour of the
+consecutively intersecting paths, following the behavior of the
@code{MetaPost buildcycle} command.
@cindex @code{min}
@@ -2704,7 +2782,7 @@ otherwise.
@cindex @code{inside}
@item pair inside(path p, pen fillrule=currentpen);
-returns an arbitrary point strictly inside a cyclic path @code{p}
+returns an arbitrary point strictly inside a nondegenerate cyclic path @code{p}
according to the fill rule @code{fillrule} (@pxref{fillrule}).
@cindex @code{strokepath}
@@ -3100,13 +3178,22 @@ pen basealign=basealign(1);
@end verbatim
@noindent
-The default setting, @code{nobasealign},which may be changed with
+The default setting, @code{nobasealign}, which may be changed with
@code{defaultpen(pen)}, causes the label alignment routines to use the
full label bounding box for alignment. In contrast, @code{basealign}
requests that the @TeX{} baseline be respected.
The base align setting of a pen is returned by
@code{int basealign(pen p=currentpen)}.
+For example, in the following image, the baselines of green @math{\pi} and
+@math{\gamma} are aligned, while the bottom border of red @math{-\pi}
+and @math{-\gamma} are aligned.
+@verbatiminclude basealign.asy
+@sp 1
+@center @image{./basealign}
+
+Another method for aligning baselines is provided by the @code{baseline} function (@pxref{baseline}).
+
@cindex @code{fontsize}
@cindex @code{lineskip}
@cindex @code{defaultpen}
@@ -3173,7 +3260,6 @@ pen ZapfDingbats(string series="m", string shape="n");
@item Starting with the 2018/04/01 release, @LaTeX{} takes UTF-8 as
the new default input encoding. However, you can still set different input
encoding (so as the font, font encoding or even language context).
-@noindent
@cindex Cyrillic
@cindex Russian
Here is an example for @code{cp1251} and Russian language in Cyrillic script
@@ -3225,7 +3311,7 @@ as described in
Since @code{PostScript} does not support transparency, this feature is
only effective with the @code{-f pdf} output format option; other
formats can be produced from the resulting @acronym{PDF} file with the
-@code{ImageMagick} @code{convert} program.
+@code{ImageMagick} @code{magick} program.
Labels are always drawn with an @code{opacity} of 1.
A simple example of transparent filling is provided in the example file
@code{@uref{https://asymptote.sourceforge.io/gallery/transparency.svg,,transparency}@uref{https://asymptote.sourceforge.io/gallery/transparency.asy,,.asy}}.
@@ -3300,7 +3386,7 @@ the pen attribute @code{overwrite}, which takes a single argument:
@cindex @code{Allow}
@cindex @code{defaultpen}
@item Allow
-Allow labels to overwrite one another. This is the default behaviour (unless
+Allow labels to overwrite one another. This is the default behavior (unless
overridden with @code{defaultpen(pen)}.
@cindex @code{Suppress}
@@ -3404,7 +3490,7 @@ The function @code{bool isometry(transform t)} can be used to test if @code{t}
is an isometry (preserves distance).
-@node Frames and pictures, Files, Transforms, Programming
+@node Frames and pictures
@section Frames and pictures
@table @code
@@ -3440,24 +3526,6 @@ A frame obtained by aligning frame @code{f} in the direction
frame align(frame f, pair align);
@end verbatim
-@cindex @code{box}
-@cindex @code{ellipse}
-@anchor{envelope}
-@cindex @code{envelope}
-To draw or fill a box or ellipse around a label or frame and return the
-boundary as a path, use one of the predefined @code{envelope} routines
-@verbatim
-path box(frame f, Label L="", real xmargin=0,
- real ymargin=xmargin, pen p=currentpen,
- filltype filltype=NoFill, bool above=true);
-path roundbox(frame f, Label L="", real xmargin=0,
- real ymargin=xmargin, pen p=currentpen,
- filltype filltype=NoFill, bool above=true);
-path ellipse(frame f, Label L="", real xmargin=0,
- real ymargin=xmargin, pen p=currentpen,
- filltype filltype=NoFill, bool above=true);
-@end verbatim
-
@item picture
@cindex @code{picture}
Pictures are high-level structures (@pxref{Structures}) defined in
@@ -3571,7 +3639,7 @@ To rotate the page by @math{-90} degrees, use the orientation @code{Seascape}.
The orientation @code{UpsideDown} rotates the page by 180 degrees.
@cindex subpictures
-@cindex @code{fit}
+@cindex @code{picture.fit}
A picture @code{pic} can be explicitly fit to a frame by calling
@verbatim
frame pic.fit(real xsize=pic.xsize, real ysize=pic.ysize,
@@ -3580,13 +3648,14 @@ frame pic.fit(real xsize=pic.xsize, real ysize=pic.ysize,
The default size and aspect ratio settings are those given to the
@code{size} command (which default to @code{0}, @code{0}, and
@code{true}, respectively).
-@cindex @code{calculateTransform}
+@cindex @code{picture.calculateTransform}
The transformation that would currently be used to fit a picture
@code{pic} to a frame is returned by the member function
@code{pic.calculateTransform()}.
In certain cases (e.g.@ 2D graphs) where only an approximate size
estimate for @code{pic} is available, the picture fitting routine
+@cindex @code{picture.scale}
@verbatim
frame pic.scale(real xsize=this.xsize, real ysize=this.ysize,
bool keepAspect=this.keepAspect);
@@ -3603,6 +3672,7 @@ frame bbox(picture pic=currentpicture, real xmargin=0,
real ymargin=xmargin, pen p=currentpen,
filltype filltype=NoFill);
@end verbatim
+@cindex @code{filltype}
@anchor{filltype}
Here @code{filltype} specifies one of the following fill types:
@table @code
@@ -3730,10 +3800,9 @@ as a single entity (@pxref{GUI}), @code{filltype} requests optional
background filling or clipping, and @code{above} specifies
whether to add @code{src} above or below existing objects.
-There are also routines to add a picture or frame @code{src} specified
-in postscript coordinates to another picture @code{dest} (or
-@code{currentpicture}) about the user coordinate
-@code{position}:
+There are also routines to add a fixed-size picture or frame
+@code{src} to another picture @code{dest} (or @code{currentpicture})
+about the user coordinate @code{position}:
@anchor{add about}
@cindex @code{add}
@cindex picture alignment
@@ -3844,7 +3913,109 @@ that can be used for importing @code{LaTeX} packages.
@end table
-@node Files, Variable initializers, Frames and pictures, Programming
+@node Deferred drawing
+@section Deferred drawing
+It is sometimes desirable to have elements of a fixed absolute size,
+independent of the picture scaling from user to
+@code{PostScript} coordinates.
+For example, normally one would want the size of a dot created with
+@code{dot}, the size of the arrowheads created with @code{arrow}
+(@pxref{arrows}), and labels to be drawn independent of the scaling.
+
+However, because of @code{Asymptote}'s automatic scaling feature (@pxref{Figure size}),
+the translation between user coordinate and @code{PostScript} coordinate
+is not determined until shipout time:
+@verbatim
+size(1cm);
+dot((0,0));
+dot((1,1));
+shipout("x"); // at this point, 1 unit coordinate = 1cm
+dot((2,2));
+shipout("y"); // at this point, 1 unit coordinate = 0.5cm
+@end verbatim
+@noindent
+It is therefore necessary to defer the drawing of these elements until shipout time.
+
+For example, a frame can be added at a specified user coordinate of a
+picture with the deferred drawing routine
+@code{add(picture dest=currentpicture, frame src, pair position)}:
+@verbatim
+frame f;
+fill(f,circle((0,0),1.5pt));
+add(f,position=(1,1),align=(0,0));
+@end verbatim
+
+@cindex @code{picture.add}
+@cindex @code{drawer}
+
+A deferred drawing routine is an object of type @code{drawer},
+which is a function with signature @code{void(frame f, transform t)}.
+For example, if the drawing routine
+@verbatim
+void d(frame f, transform t){
+ fill(f,shift(3cm,0)*circle(t*(1,1),2pt));
+}
+@end verbatim
+@noindent
+is added to @code{currentpicture} with
+@verbatim
+currentpicture.add(d);
+@end verbatim
+@noindent
+a filled circle of radius 2pt will be drawn on currentpicture centered
+3cm to the right of user coordinate @code{(1,1)}. The parameter @code{t} is the
+affine transformation from user coordinates to @code{PostScript} coordinates.
+
+Even though the actual drawing is deferred, you still need to specify to the
+@code{Asymptote} scaling routines that ultimately a fixed-size circle
+of radius 2pt will be drawn 3cm to the right of user-coordinate (1,1),
+by adding a frame about (1,1) that extends beyond (1,1) from
+@code{(3cm-2pt,-2pt)+min(currentpen)} to
+@code{(3cm+2pt,2pt)+max(currentpen)}, where we have even
+accounted for the pen linewidth. The following example will then
+produce a @acronym{PDF} file 10 cm wide:
+
+@cindex @code{picture.addPoint}
+@verbatim
+settings.outformat="pdf";
+size(10cm);
+dot((0,0));
+dot((1,1),red);
+add(new void(frame f, transform t) {
+ fill(f,shift(3cm,0)*circle(t*(1,1),2pt));
+});
+pair trueMin=(3cm-2pt,-2pt)+min(currentpen);
+pair trueMax=(3cm+2pt,2pt)+max(currentpen);
+currentpicture.addPoint((1,1),trueMin);
+currentpicture.addPoint((1,1),trueMax);
+@end verbatim
+@noindent
+Here we specified the minimum and maximum user and truesize (fixed)
+coordinates of the drawer with the @code{picture} routine
+@verbatim
+void addPoint(pair user, pair truesize);
+@end verbatim
+@noindent
+Alternatively, one can use
+@verbatim
+void addBox(pair userMin, pair userMax, pair trueMin=0, pair trueMax=0) {
+@end verbatim
+@noindent
+to specify a bounding box
+with bottom-left corner @code{t*(1,1)+trueMin}
+and top-right corner @code{t*(1,1)+trueMax},
+where @code{t} is the transformation that transforms
+from user coordinates to @code{PostScript} coordinates.
+
+For more details about deferred drawing, see
+``Asymptote: A vector graphics language,'' John C. Bowman and Andy
+Hammerlindl, TUGBOAT: The Communications of the TeX Users Group, 29:2,
+288-294 (2008),
+
+@noindent
+@url{https://www.math.ualberta.ca/~bowman/publications/asyTUG.pdf}.
+
+@node Files
@section Files
@cindex @code{file}
@@ -4102,6 +4273,7 @@ rename file @code{from} to file @code{to}.
Unless the @code{-globalwrite} (or @code{-nosafe}) option is enabled,
this operation is restricted to the current directory.
@cindex @code{convert}
+@cindex @code{magick}
@cindex @code{animate}
The functions
@verbatim
@@ -4109,11 +4281,11 @@ int convert(string args="", string file="", string format="");
int animate(string args="", string file="", string format="");
@end verbatim
@noindent
-call the @code{ImageMagick} commands @code{convert} and @code{animate},
+call the @code{ImageMagick} commands @code{magick} and @code{animate},
respectively, with the arguments @code{args} and the file name constructed
from the strings @code{file} and @code{format}.
-@node Variable initializers, Structures, Files, Programming
+@node Variable initializers
@section Variable initializers
@cindex variable initializers
@cindex @code{operator init}
@@ -4262,7 +4434,7 @@ That is, after the definition of a structure @code{T}, a variable of
type @code{T} is initialized to a new instance (@code{new T}) by
default. During the definition of the structure, however, variables
of type @code{T} are initialized to @code{null} by default. This
-special behaviour is to avoid infinite recursion of creating new
+special behavior is to avoid infinite recursion of creating new
instances in code such as
@verbatim
struct tree {
@@ -4328,59 +4500,8 @@ Creating a new Person is a chore; it takes three lines to create a new instance
and to initialize its fields (that's still considerably less effort than
creating a new person in real life, though).
-We can reduce the work by defining a constructor function
-@code{Person(string,string)}:
-@verbatim
-struct Person {
- string firstname;
- string lastname;
-
- static Person Person(string firstname, string lastname) {
- Person p=new Person;
- p.firstname=firstname;
- p.lastname=lastname;
- return p;
- }
-}
-
-Person joe=Person.Person("Joe", "Jones");
-@end verbatim
-
-While it is now easier than before to create a new instance, we still
-have to refer to the constructor by the qualified name
-@code{Person.Person}. If we add the line
-@verbatim
-from Person unravel Person;
-@end verbatim
-@noindent
-immediately after the structure definition, then the constructor can be used
-without qualification: @code{Person joe=Person("Joe", "Jones");}.
-
-The constructor is now easy to use, but it is quite a hassle to define. If you
-write a lot of constructors, you will find that you are repeating a lot of code
-in each of them. Fortunately, your friendly neighbourhood Asymptote
-developers have devised a way to automate much of the process.
-
+We can reduce the work by defining @code{operator init}:
@cindex @code{operator init}
-If, in the body of a structure, Asymptote encounters the definition of
-a function of the form @code{void operator init(@var{args})}, it implicitly
-defines a constructor function of the arguments @code{@var{args}} that
-uses the @code{void operator init} function to initialize a
-new instance of the structure.
-That is, it essentially defines the following constructor (assuming the
-structure is called @code{Foo}):
-
-@example
-static Foo Foo(@var{args}) @{
- Foo instance=new Foo;
- instance.operator init(@var{args});
- return instance;
-@}
-@end example
-
-This constructor is also implicitly copied to the enclosing scope after the end
-of the structure definition, so that it can used subsequently without qualifying
-it by the structure name. Our @code{Person} example can thus be implemented as:
@verbatim
struct Person {
string firstname;
@@ -4401,26 +4522,6 @@ confused with its use to define default values for variables
first case, the return type of the @code{operator init} must be @code{void}
while in the second, it must be the (non-@code{void}) type of the variable.
-@cindex @code{cputime}
-The function @code{cputime()}
-returns a structure @code{cputime} with cumulative @acronym{CPU} times
-broken down into the fields @code{parent.user}, @code{parent.system},
-@code{child.user}, and @code{child.system}, along with the cumulative
-wall clock time in @code{parent.clock}, all measured in seconds.
-For convenience, the incremental fields @code{change.user},
-@code{change.system}, and @code{change.clock} indicate the change in
-the corresponding fields since the last call to @code{cputime()}. The
-function
-@verbatim
-void write(file file=stdout, string s="", cputime c,
- string format=cputimeformat, suffix suffix=none);
-@end verbatim
-@noindent
-displays the incremental user cputime followed by ``u'',
-the incremental system cputime followed by ``s'',
-the total user cputime followed by ``U'', and
-the total system cputime followed by ``S''.
-
@cindex inheritance
@cindex virtual functions
Much like in C++, casting (@pxref{Casts}) provides for an elegant
@@ -5228,6 +5329,58 @@ If the iteration fails after the maximum allowed number of loops
@item @code{real simpson(real f(real), real a, real b, real acc=realEpsilon, real dxmax=b-a)}
returns the integral of @code{f} from @code{a} to @code{b} using adaptive Simpson integration.
+Internally, @code{operator init} implicitly defines a constructor function
+@code{Person(string,string)} as follows, where @var{args} is
+@code{string firstname, string lastname} in this case:
+@example
+struct Person @{
+ string firstname;
+ string lastname;
+
+ static Person Person(@var{args}) @{
+ Person p=new Person;
+ p.operator init(@var{args});
+ return p;
+ @}
+@}
+@end example
+@noindent
+which then can be used as:
+@verbatim
+Person joe=Person.Person("Joe", "Jones");
+@end verbatim
+
+The following is also implicitly generated in the enclosing scope,
+after the end of the structure definition.
+@verbatim
+from Person unravel Person;
+@end verbatim
+@noindent
+It allows us to use the constructor without qualification,
+otherwise we would have to refer to the constructor by the qualified name
+@code{Person.Person}.
+
+@cindex @code{cputime}
+@noindent
+@item @code{cputime cputime()}
+returns a structure @code{cputime} with cumulative @acronym{CPU} times
+broken down into the fields @code{parent.user}, @code{parent.system},
+@code{child.user}, and @code{child.system}, along with the cumulative
+wall clock time in @code{parent.clock}, all measured in seconds.
+For convenience, the incremental fields @code{change.user},
+@code{change.system}, and @code{change.clock} indicate the change in
+the corresponding fields since the last call to @code{cputime()}. The
+function
+@verbatim
+void write(file file=stdout, string s="", cputime c,
+ string format=cputimeformat, suffix suffix=none);
+@end verbatim
+@noindent
+displays the incremental user cputime followed by ``u'',
+the incremental system cputime followed by ``s'',
+the total user cputime followed by ``U'', and
+the total system cputime followed by ``S''.
+
@end table
@node Arrays, Casts, Functions, Programming
@@ -6073,7 +6226,6 @@ nonalphanumeric characters, enclose it with quotation marks:
@cindex @acronym{libcurl}
If @code{Asymptote} is compiled with support for @code{libcurl},
the file name can even be a @acronym{URL}:
-@noindent
@code{import "https://raw.githubusercontent.com/vectorgraphics/asymptote/HEAD/doc/axis3.asy" as axis3;}
It is an error if modules import themselves (or each other in a cycle).
@@ -6175,10 +6327,9 @@ access templatedModule(T=string, S=int[], Number=real)
@end verbatim
@noindent
Note that this is actually an @emph{access} command rather than an
-@emph{import} command, so the names of types, functions, etc. would have to be
-stated as e.g. @code{templatedModule_string_int_real.Wrapper_Number} rather than
-just @code{Wrapper_Number} (where @code{Wrapper_Number} is a type defined in
-@code{templatedModule.asy}).
+@emph{import} command, so a type, function, or variable @code{A}
+defined in @code{templatedModule.asy} would need to be accessed
+qualified as @code{templatedModule_string_int_real.A}.
Alternatively, the module could be imported via a command like
@verbatim
@@ -6191,12 +6342,12 @@ This command would automatically rename @code{Wrapper_Number} to
@code{Wrapper_real} and would also allow the use of any @code{operator ==}
overloads defined in the module.
-For more information, see the examples in
-@url{https://github.com/vectorgraphics/asymptote/tree/647b6c5732ec94a48f0f0b2446f02c86888fe7e7/tests/template}.
+Further examples can be found in the @code{tests/template} subdirectory
+of the @code{Asymptote} source directory.
-Issues: Certain standard features of almost any type (such as
-@code{==}, @code{new}, and the ability to call static methods on the type) may
-only be available for type arguments that are builtin or defined in the @code{plain} module.
+Issues: Certain expected operators (such as
+@code{operator ==}) may only be available for type arguments that are
+builtin or defined in module @code{plain}.
@node Static, , Import, Programming
@section Static
@@ -6372,7 +6523,6 @@ An even better method for processing a @code{LaTeX} file with embedded
@noindent
after putting the contents of
@url{https://raw.githubusercontent.com/vectorgraphics/asymptote/HEAD/doc/latexmkrc}
-@noindent
in a file @code{latexmkrc} in the same directory. The command
@verbatim
latexmk -pdf latexusage
@@ -6386,7 +6536,6 @@ To store the figures in a separate directory named @code{asy}, one can define
\def\asydir{asy}
@end verbatim
in @code{latexusage.tex}.
-@noindent
External @code{Asymptote} code can be included with
@cindex @code{asyinclude}
@verbatim
@@ -6442,6 +6591,7 @@ Here now is @code{latexusage.tex}:
@menu
* plain:: Default @code{Asymptote} base file
* simplex:: Linear programming: simplex method
+* simplex2:: Two-variable simplex method
* math:: Extend @code{Asymptote}'s math capabilities
* interpolate:: Interpolation routines
* geometry:: Geometry routines
@@ -6500,9 +6650,15 @@ option to disable this feature.
@section @code{simplex}
@cindex @code{simplex}
@cindex @code{deferred drawing}
-This module solves the two-variable linear programming problem using the
-simplex method. It is used by the module @code{plain} for automatic
-sizing of pictures.
+This module solves the general linear programming problem using the
+simplex method.
+
+@node simplex2, math, plain, Base modules
+@section @code{simplex2}
+@cindex @code{simplex2}
+@cindex @code{deferred drawing}
+This module solves a special case of the two-variable linear programming
+problem used by the module @code{plain} for automatic sizing of pictures.
@node math, interpolate, simplex, Base modules
@section @code{math}
@@ -6763,13 +6919,13 @@ sharp corners of paths, as illustrated in the example file @code{@uref{https://a
@node animation, embed, roundedpath, Base modules
@section @code{animation}
@cindex @code{animation}
-@cindex @code{convert}
+@cindex @code{magick}
@cindex animation
@cindex @code{ImageMagick}
This module allows one to generate animations, as illustrated by the
files @code{@uref{https://asymptote.sourceforge.io/gallery/animations/wheel.gif,,wheel}@uref{https://asymptote.sourceforge.io/gallery/animations/wheel.asy,,.asy}}, @code{@uref{https://asymptote.sourceforge.io/gallery/animations/wavepacket.gif,,wavepacket}@uref{https://asymptote.sourceforge.io/gallery/animations/wavepacket.asy,,.asy}}, and @code{@uref{https://asymptote.sourceforge.io/gallery/animations/cube.gif,,cube}@uref{https://asymptote.sourceforge.io/gallery/animations/cube.asy,,.asy}} in
the @code{animations} subdirectory of the examples directory. These
-animations use the @code{ImageMagick} @code{convert} program to
+animations use the @code{ImageMagick} @code{magick} program to
merge multiple images into a @acronym{GIF} or @acronym{MPEG}
movie.
@@ -6780,7 +6936,6 @@ module, generates higher-quality portable clickable @acronym{PDF} movies, with
optional controls. This requires installing the module
@quotation
@url{http://mirror.ctan.org/macros/latex/contrib/animate/animate.sty}
-@noindent
@end quotation
@noindent
(version 2007/11/30 or later) in a new directory @code{animate} in the
@@ -8043,7 +8198,7 @@ light nolight;
@cindex @code{transparent}
The @code{currentlight.background} (or @code{background} member of the
specified @code{light}) can be used
-to set the background colour for 2D (or 3D) images. The default
+to set the background color for 2D (or 3D) images. The default
background is white for @code{HTML} images and transparent for all
other formats. One can request a completely transparent background for
3D @code{WebGL} images with
@@ -8949,7 +9104,6 @@ functions in @code{graph.asy}.
@cindex @code{xaxis3}
@cindex @code{yaxis3}
@cindex @code{zaxis3}
-@noindent
To draw an @math{x} axis in three dimensions, use the routine
@verbatim
void xaxis3(picture pic=currentpicture, Label L="", axis axis=YZZero,
@@ -9194,7 +9348,7 @@ depends of the relative time.
The casting of @code{path} to @code{coloredpath} allows the
use of a @code{path} instead of a @code{coloredpath}; in this case the
-shading behaviour is the default shading behavior for a surface.
+shading behavior is the default shading behavior for a surface.
An example of @code{tube} is provided in the file
@code{@uref{https://asymptote.sourceforge.io/gallery/3Dwebgl/trefoilknot.html,,trefoilknot}@uref{https://asymptote.sourceforge.io/gallery/3Dwebgl/trefoilknot.asy,,.asy}}. Further examples can be found at
@@ -9602,7 +9756,7 @@ settings.autoplain=true;
at the beginning of the configuration file, it can contain arbitrary
@code{Asymptote} code.
-@cindex @code{convert}
+@cindex @code{magick}
@cindex @code{output}
@cindex @code{format}
@cindex @code{ImageMagick}
@@ -9619,7 +9773,7 @@ at the beginning of the configuration file, it can contain arbitrary
@cindex @code{EPS}
@cindex @code{PDF}
@anchor{texengines}
-@anchor{convert}
+@anchor{magick}
The default output format is @acronym{EPS} for the (default)
@code{latex} and @code{tex} tex engine and @acronym{PDF} for the
@code{pdflatex}, @code{xelatex}, @code{context}, @code{luatex}, and
@@ -9638,20 +9792,18 @@ which can display @acronym{SVG} output (used by the
with the default setting @code{settings.dvisvgmOptions="--optimize"}.
@code{Asymptote} can also produce any output format supported
-by the @code{ImageMagick} @code{convert} program (version 6.3.5 or
-later recommended; an @code{Invalid Parameter} error message indicates
-that the @code{MSDOS} utility @code{convert} is being used instead of
-the one that comes with @code{ImageMagick}).
+by the @code{ImageMagick} @code{magick} program (version 7 or
+later.
The optional setting @code{-render n} requests
an output resolution of @code{n} pixels per @code{bp}. Antialiasing is
controlled by the parameter @code{antialias}, which by default
specifies a sampling width of 2 pixels.
-To give other options to @code{convert}, use the
-@code{convertOptions} setting or call convert manually. This example
+To give other options to @code{magick}, use the
+@code{convertOptions} setting or call @code{magick convert} manually. This example
emulates how @code{Asymptote} produces antialiased @code{tiff} output at
one pixel per @code{bp}:
@verbatim
-asy -o - venn | convert -alpha Off -density 144x144 -geometry 50%x eps:- venn.tiff
+asy -o - venn | magick convert -alpha Off -density 144x144 -geometry 50%x eps:- venn.tiff
@end verbatim
@cindex @code{nosafe}
@@ -10006,9 +10158,9 @@ available from @url{https://sourceforge.net/projects/pstoedit/}) includes an
@code{Asymptote} backend. Unlike virtually all other @code{pstoedit}
backends, this driver includes native clipping, even-odd fill rule,
@code{PostScript} subpath, and full image support. Here is an example:
+
@noindent
@code{asy -V @value{Datadir}/doc/asymptote/examples/venn.asy}
-@noindent
@verbatim
pstoedit -f asy venn.eps test.asy
asy -V test
@@ -10219,7 +10371,7 @@ developed the @code{Asymptote Web Application} hosted at
@c LocalWords: MetaPost MetaFont Hammerlindl Healy texinfo autoload setq setf
@c LocalWords: printindex setfilename settitle dircategory direntry titlepage
@c LocalWords: vskip filll insertcopying ifnottex detailmenu alist augroup PQ
-@c LocalWords: bool behaviour facto zxf login Debian dev filetypedetect
+@c LocalWords: bool behavior facto zxf login Debian dev filetypedetect
@c LocalWords: FFTW bp readline gv eps args Boehm gc evenoddoverlap png joe
@c LocalWords: boolean initializer expi dir xpart ypart STL substring rfind
@c LocalWords: pos substr strftime typedef pxref unitcircle yscale Bezier iff
diff --git a/graphics/asymptote/examples/basealign.asy b/graphics/asymptote/doc/basealign.asy
index d653ec3c04..d653ec3c04 100644
--- a/graphics/asymptote/examples/basealign.asy
+++ b/graphics/asymptote/doc/basealign.asy
diff --git a/graphics/asymptote/doc/png/asymptote.info b/graphics/asymptote/doc/png/asymptote.info
index be3ab4d28a..672c1369bd 100644
--- a/graphics/asymptote/doc/png/asymptote.info
+++ b/graphics/asymptote/doc/png/asymptote.info
@@ -1,7 +1,7 @@
-This is asymptote.info, produced by makeinfo version 7.0.2 from
+This is asymptote.info, produced by makeinfo version 7.1 from
asymptote.texi.
-This file documents ‘Asymptote’, version 2.89.
+This file documents ‘Asymptote’, version 2.90.
<https://asymptote.sourceforge.io>
@@ -22,7 +22,7 @@ File: asymptote.info, Node: Top, Next: Description, Prev: (dir), Up: (dir)
Asymptote
*********
-This file documents ‘Asymptote’, version 2.89.
+This file documents ‘Asymptote’, version 2.90.
<https://asymptote.sourceforge.io>
@@ -53,7 +53,7 @@ This file documents ‘Asymptote’, version 2.89.
* Credits:: Contributions and acknowledgments
* Index:: General index
- — The Detailed Node Listing —
+ -- The Detailed Node Listing --
Installation
@@ -65,6 +65,7 @@ Installation
* Compiling from UNIX source:: Building ‘Asymptote’ from scratch
* Editing modes:: Convenient ‘emacs’ and ‘vim’ modes
* Git:: Getting the latest development source
+* Building the documentation:: Building the documentation
* Uninstall:: Goodbye, ‘Asymptote’!
Tutorial
@@ -89,6 +90,7 @@ Programming
* Pens:: Colors, line types, line widths, font sizes
* Transforms:: Affine transforms
* Frames and pictures:: Canvases for immediate and deferred drawing
+* Deferred drawing:: Witholding drawing until all data is available
* Files:: Reading and writing your data
* Variable initializers:: Initialize your variables
* Structures:: Organize your data
@@ -125,7 +127,8 @@ Base modules
* plain:: Default ‘Asymptote’ base file
* simplex:: Linear programming: simplex method
-* math:: Extend ‘Asymptote’’s math capabilities
+* simplex2:: Two-variable simplex method
+* math:: Extend ‘Asymptote’'s math capabilities
* interpolate:: Interpolation routines
* geometry:: Geometry routines
* trembling:: Wavy lines
@@ -280,6 +283,7 @@ File: asymptote.info, Node: Installation, Next: Tutorial, Prev: Description,
* Compiling from UNIX source:: Building ‘Asymptote’ from scratch
* Editing modes:: Convenient ‘emacs’ and ‘vim’ modes
* Git:: Getting the latest development source
+* Building the documentation:: Building the documentation
* Uninstall:: Goodbye, ‘Asymptote’!
After following the instructions for your specific distribution, please
@@ -312,7 +316,7 @@ dnf --enablerepo=rawhide install asymptote
To install the latest version of ‘Asymptote’ on a Debian-based
distribution (e.g. Ubuntu, Mepis, Linspire) follow the instructions for
compiling from ‘UNIX’ source (*note Compiling from UNIX source::).
-Alternatively, Debian users can install one of Hubert Chan’s prebuilt
+Alternatively, Debian users can install one of Hubert Chan's prebuilt
‘Asymptote’ binaries from
<http://ftp.debian.org/debian/pool/main/a/asymptote>
@@ -358,7 +362,7 @@ PDF’ available from <https://www.sumatrapdfreader.org/>.
<https://www.imagemagick.org/script/binary-releases.php>
is required to support output formats other than HTML, PDF, SVG, and PNG
-(*note convert::). The ‘Python 3’ interpreter from
+(*note magick::). The ‘Python 3’ interpreter from
<https://www.python.org> is only required if you wish to try out the
graphical user interface (*note GUI::).
@@ -483,7 +487,7 @@ in the order listed:
by ‘:’ under UNIX and ‘;’ under ‘MSDOS’);
3. The directory specified by the environment variable
‘ASYMPTOTE_HOME’; if this variable is not set, the directory ‘.asy’
- in the user’s home directory (‘%USERPROFILE%\.asy’ under ‘MSDOS’)
+ in the user's home directory (‘%USERPROFILE%\.asy’ under ‘MSDOS’)
is used;
4. The ‘Asymptote’ system directory (by default,
‘/usr/local/share/asymptote’ under ‘UNIX’ and ‘C:\Program
@@ -559,7 +563,7 @@ able to take Fourier transforms of data (say, to compute an audio power
spectrum). The ‘GSL’ library is only required if you require the
special functions that it supports.
- If you don’t want to install ‘Asymptote’ system wide, just make sure
+ If you don't want to install ‘Asymptote’ system wide, just make sure
the compiled binary ‘asy’ and GUI script ‘xasy’ are in your path and set
the configuration variable ‘dir’ to point to the directory ‘base’ (in
the top level directory of the ‘Asymptote’ source code).
@@ -606,7 +610,7 @@ au BufNewFile,BufRead *.asy setf asy
augroup END
filetype plugin on
- If any of these directories or files don’t exist, just create them.
+ If any of these directories or files don't exist, just create them.
To set ‘vim’ up to run the current asymptote script using ‘:make’ just
add to ‘~/.vim/ftplugin/asy.vim’:
setlocal makeprg=asy\ %
@@ -639,10 +643,27 @@ dependencies:
apt-get build-dep asymptote

+File: asymptote.info, Node: Building the documentation, Next: Uninstall, Prev: Git, Up: Installation
+
+2.9 Building the documentation
+==============================
+
+Here are instructions for building the documentation:
+cd doc
+make # for both the PDF version doc/asymptote.pdf and the HTML version
+cd png
+make # for the HTML version only: doc/png/index.html
+ Note that the ‘HTML’ version cannot be built without executing ‘make’
+from ‘doc’ folder first.
+
+ The ‘asy’ executable is required for compiling the diagrams in the
+documentation.
+
+
File: asymptote.info, Node: Uninstall, Prev: Git, Up: Installation
-2.9 Uninstall
-=============
+2.10 Uninstall
+==============
To uninstall a ‘Linux x86_64’ binary distribution, use the commands
tar -zxvf asymptote-x.xx.x86_64.tgz | xargs --replace=% rm /%
@@ -711,12 +732,13 @@ File: asymptote.info, Node: Drawing in interactive mode, Next: Figure size, P
Another method is _interactive mode_, where ‘Asymptote’ reads individual
commands as they are entered by the user. To try this out, enter
-‘Asymptote’’s interactive mode by clicking on the ‘Asymptote’ icon or
+‘Asymptote’'s interactive mode by clicking on the ‘Asymptote’ icon or
typing the command ‘asy’. Then type
draw((0,0)--(100,100));
-followed by ‘Enter’, to obtain the above image. At this point you can
-type further ‘draw’ commands, which will be added to the displayed
-figure, ‘erase’ to clear the canvas,
+followed by ‘Enter’, to obtain the above image.
+
+ At this point you can type further ‘draw’ commands, which will be
+added to the displayed figure, ‘erase’ to clear the canvas,
input test;
to execute all of the commands contained in the file ‘test.asy’, or
‘quit’ to exit interactive mode. You can use the arrow keys in
@@ -871,7 +893,7 @@ File: asymptote.info, Node: Drawing commands, Next: Bezier curves, Prev: Tuto
4 Drawing commands
******************
-All of ‘Asymptote’’s graphical capabilities are based on four primitive
+All of ‘Asymptote’'s graphical capabilities are based on four primitive
commands. The three ‘PostScript’ drawing commands ‘draw’, ‘fill’, and
‘clip’ add objects to a picture in the order in which they are executed,
with the most recently drawn object appearing on top. The labeling
@@ -925,8 +947,8 @@ convenience, the arguments ‘arrow’ and ‘bar’ may be specified in either
order. The argument ‘legend’ is a Label to use in constructing an
optional legend entry.
- Bars are useful for indicating dimensions. The possible values of
-‘bar’ are ‘None’, ‘BeginBar’, ‘EndBar’ (or equivalently ‘Bar’), and
+ Bars ‘bar’ are useful for indicating dimensions. The possible values
+of ‘bar’ are ‘None’, ‘BeginBar’, ‘EndBar’ (or equivalently ‘Bar’), and
‘Bars’ (which draws a bar at both ends of the path). Each of these bar
specifiers (except for ‘None’) will accept an optional real argument
that denotes the length of the bar in ‘PostScript’ coordinates. The
@@ -935,37 +957,71 @@ default bar length is ‘barsize(pen)’.
The possible values of ‘arrow’ are ‘None’, ‘Blank’ (which draws no
arrows or path), ‘BeginArrow’, ‘MidArrow’, ‘EndArrow’ (or equivalently
‘Arrow’), and ‘Arrows’ (which draws an arrow at both ends of the path).
-All of the arrow specifiers except for ‘None’ and ‘Blank’ may be given
-the optional arguments arrowhead ‘arrowhead’ (one of the predefined
-arrowhead styles ‘DefaultHead’, ‘SimpleHead’, ‘HookHead’, ‘TeXHead’),
-real ‘size’ (arrowhead size in ‘PostScript’ coordinates), real ‘angle’
-(arrowhead angle in degrees), filltype ‘filltype’ (one of ‘FillDraw’,
-‘Fill’, ‘NoFill’, ‘UnFill’, ‘Draw’) and (except for ‘MidArrow’ and
-‘Arrows’) a real ‘position’ (in the sense of ‘point(path p, real t)’)
-along the path where the tip of the arrow should be placed. The default
-arrowhead size when drawn with a pen ‘p’ is ‘arrowsize(p)’. There are
-also arrow versions with slightly modified default values of ‘size’ and
-‘angle’ suitable for curved arrows: ‘BeginArcArrow’, ‘EndArcArrow’ (or
-equivalently ‘ArcArrow’), ‘MidArcArrow’, and ‘ArcArrows’.
-
- Margins can be used to shrink the visible portion of a path by
-‘labelmargin(p)’ to avoid overlap with other drawn objects. Typical
-values of ‘margin’ are ‘NoMargin’, ‘BeginMargin’, ‘EndMargin’ (or
-equivalently ‘Margin’), and ‘Margins’ (which leaves a margin at both
-ends of the path). One may use ‘Margin(real begin, real end=begin)’ to
-specify the size of the beginning and ending margin, respectively, in
-multiples of the units ‘labelmargin(p)’ used for aligning labels.
-Alternatively, ‘BeginPenMargin’, ‘EndPenMargin’ (or equivalently
-‘PenMargin’), ‘PenMargins’, ‘PenMargin(real begin, real end=begin)’
-specify a margin in units of the pen line width, taking account of the
-pen line width when drawing the path or arrow. For example, use
-‘DotMargin’, an abbreviation for
-‘PenMargin(-0.5*dotfactor,0.5*dotfactor)’, to draw from the usual
-beginning point just up to the boundary of an end dot of width
-‘dotfactor*linewidth(p)’. The qualifiers ‘BeginDotMargin’,
-‘EndDotMargin’, and ‘DotMargins’ work similarly. The qualifier
-‘TrueMargin(real begin, real end=begin)’ allows one to specify a margin
-directly in ‘PostScript’ units, independent of the pen line width.
+
+ There are also arrow versions with slightly modified default values
+of ‘size’ and ‘angle’ suitable for curved arrows: ‘BeginArcArrow’,
+‘EndArcArrow’ (or equivalently ‘ArcArrow’), ‘MidArcArrow’, and
+‘ArcArrows’.
+
+ For example:
+draw((0,0)--(1,1),arrow=Arrows);
+
+ All of the arrow specifiers except for ‘None’ and ‘Blank’ may be
+given optional arguments, for example:
+draw((0,0)--(1,1),arrow=Arrow(
+ arrowhead=HookHead,size=3mm,angle=20,filltype=Draw,position=0.9));
+
+ The function ‘Arrow’ has the signature
+arrowbar Arrow(arrowhead arrowhead=DefaultHead,
+ real size=0, real angle=arrowangle,
+ filltype filltype=null, position position=EndPoint)
+Calling ‘Arrow()’ returns ‘Arrow’, which is an ‘arrowbar’ object. The
+parameters are:
+
+ • ‘arrowhead’ can be one of the predefined arrowhead styles
+ ‘DefaultHead’, ‘SimpleHead’, ‘HookHead’, ‘TeXHead’.
+ • real ‘size’ is the arrowhead size in ‘PostScript’ coordinates.
+
+ The default arrowhead size when drawn with a pen ‘p’ is
+ ‘arrowsize(p)’.
+ • real ‘angle’ is the arrowhead angle in degrees.
+
+ • filltype ‘filltype’ (*note filltype::),
+ • (except for ‘MidArrow’ and ‘Arrows’) real ‘position’ (in the sense
+ of ‘point(path p, real t)’) along the path where the tip of the
+ arrow should be placed.
+
+ Margins ‘margin’ can be used to shrink the visible portion of a path
+by ‘labelmargin(p)’ to avoid overlap with other drawn objects.
+
+ Typical values of ‘margin’ are:
+‘NoMargin’
+‘BeginMargin’
+‘EndMargin’
+ (equivalently ‘Margin’)
+‘Margins’
+ leaves a margin at both ends of the path.
+‘Margin(real begin, real end=begin)’
+ specify the size of the beginning and ending margin, respectively,
+ in multiples of the units ‘labelmargin(p)’ used for aligning
+ labels.
+‘BeginPenMargin’
+‘EndPenMargin’
+ (equivalently ‘PenMargin’)
+‘PenMargins’
+‘PenMargin(real begin, real end=begin)’
+ specify a margin in units of the pen line width, taking account of
+ the pen line width when drawing the path or arrow.
+‘DotMargin’
+ an abbreviation for ‘PenMargin(-0.5*dotfactor,0.5*dotfactor)’, used
+ to draw from the usual beginning point just up to the boundary of
+ an end dot of width ‘dotfactor*linewidth(p)’.
+‘BeginDotMargin’
+‘DotMargins’
+ work similarly.
+‘TrueMargin(real begin, real end=begin)’
+ specify a margin directly in ‘PostScript’ units, independent of the
+ pen line width.
The use of arrows, bars, and margins is illustrated by the examples
‘Pythagoras.asy’ and ‘sqrtx01.asy’.
@@ -1170,9 +1226,16 @@ void label(picture pic=currentpicture, Label L, pair position,
Draw Label ‘L’ on picture ‘pic’ using pen ‘p’. If ‘align’ is
‘NoAlign’, the label will be centered at user coordinate ‘position’;
otherwise it will be aligned in the direction of ‘align’ and displaced
-from ‘position’ by the ‘PostScript’ offset ‘align*labelmargin(p)’. The
-constant ‘Align’ can be used to align the bottom-left corner of the
-label at ‘position’. The Label ‘L’ can either be a string or the
+from ‘position’ by the ‘PostScript’ offset ‘align*labelmargin(p)’.
+
+ Here, ‘real labelmargin(pen p=currentpen)’ is a quantity used to
+align labels. In the code below,
+label("abcdefg",(0,0),align=up,basealign);
+the baseline of the label will be exactly ‘labelmargin(currentpen)’
+‘PostScript’ units above the center.
+
+ The constant ‘Align’ can be used to align the bottom-left corner of
+the label at ‘position’. The Label ‘L’ can either be a string or the
structure obtained by calling one of the functions
Label Label(string s="", pair position, align align=NoAlign,
pen p=nullpen, embed embed=Rotate, filltype filltype=NoFill);
@@ -1249,9 +1312,11 @@ label(graphic("file.eps","width=1cm"),(0,0),NE);
layer();
The ‘string baseline(string s, string template="\strut")’ function
-can be used to enlarge the bounding box of labels to match a given
+can be used to enlarge the bounding box of a label to match a given
template, so that their baselines will be typeset on a horizontal line.
-See ‘Pythagoras.asy’ for an example.
+See ‘Pythagoras.asy’ for an example. Alternatively, the pen ‘basealign’
+may be used to force labels to respect the TeX baseline (*note
+basealign::).
One can prevent labels from overwriting one another with the
‘overwrite’ pen attribute (*note overwrite::).
@@ -1260,7 +1325,7 @@ See ‘Pythagoras.asy’ for an example.
frames to be treated in a uniform manner. A group of objects may be
packed together into single frame with the routine
frame pack(pair align=2S ... object inset[]);
-To draw or fill a box (or ellipse or other path) around a Label and
+To draw or fill a box (or ellipse or other path) around a ‘Label’ and
return the bounding object, use one of the routines
object draw(picture pic=currentpicture, Label L, envelope e,
real xmargin=0, real ymargin=xmargin, pen p=currentpen,
@@ -1269,7 +1334,7 @@ object draw(picture pic=currentpicture, Label L, envelope e, pair position,
real xmargin=0, real ymargin=xmargin, pen p=currentpen,
filltype filltype=NoFill, bool above=true);
Here ‘envelope’ is a boundary-drawing routine such as ‘box’, ‘roundbox’,
-or ‘ellipse’ defined in ‘plain_boxes.asy’ (*note envelope::).
+or ‘ellipse’ defined in ‘plain_boxes.asy’.
The function ‘path[] texpath(Label L)’ returns the path array that
TeX would fill to draw the Label ‘L’.
@@ -1347,7 +1412,7 @@ draw((0,0)..controls (0,100) and (100,100)..(100,0));
However, it is usually more convenient to just use the ‘..’ operator,
which tells ‘Asymptote’ to choose its own control points using the
-algorithms described in Donald Knuth’s monograph, The MetaFontbook,
+algorithms described in Donald Knuth's monograph, The MetaFontbook,
Chapter 14. The user can still customize the guide (or path) by
specifying direction, tension, and curl values.
@@ -1398,6 +1463,7 @@ File: asymptote.info, Node: Programming, Next: LaTeX usage, Prev: Bezier curv
* Pens:: Colors, line types, line widths, font sizes
* Transforms:: Affine transforms
* Frames and pictures:: Canvases for immediate and deferred drawing
+* Deferred drawing:: Witholding drawing until all data is available
* Files:: Reading and writing your data
* Variable initializers:: Initialize your variables
* Structures:: Organize your data
@@ -1665,7 +1731,7 @@ user-defined types):
Strings delimited by single quotes (‘'’) have the same mappings as
character strings in ANSI ‘C’:
- • \’ maps to ’
+ • \' maps to '
• \" maps to "
• \? maps to ?
• \\ maps to backslash
@@ -1738,14 +1804,14 @@ user-defined types):
returns a string containing ‘n’ formatted according to the
C-style format string ‘s’ using locale ‘locale’ (or the
current locale if an empty string is specified), following the
- behaviour of the C function ‘fprintf’), except that only one
+ behavior of the C function ‘fprintf’), except that only one
data field is allowed.
‘string format(string s=defaultformat, bool forcemath=false, string s=defaultseparator, real x, string locale="")’
returns a string containing ‘x’ formatted according to the
C-style format string ‘s’ using locale ‘locale’ (or the
current locale if an empty string is specified), following the
- behaviour of the C function ‘fprintf’), except that only one
+ behavior of the C function ‘fprintf’), except that only one
data field is allowed, trailing zeros are removed by default
(unless ‘#’ is specified), and if ‘s’ specifies math mode or
‘forcemath=true’, TeX is used to typeset scientific notation
@@ -1788,7 +1854,7 @@ user-defined types):
seconds(time("%b %d %r %z %Y"),"%b %d %r %z %Y");
seconds(time("%b %d %r %Z %Y"),"%b %d %r "+time("%Z")+" %Y");
1+(seconds()-seconds("Jan 1","%b %d"))/(24*60*60);
- The last example returns today’s ordinal date, measured from
+ The last example returns today's ordinal date, measured from
the beginning of the year.
‘string time(int seconds, string format="%a %b %d %T %Z %Y")’
@@ -2088,7 +2154,7 @@ File: asymptote.info, Node: Paths and guides, Next: Pens, Prev: Data types,
returns the portions of path ‘p’ before and after the ‘n’th
intersection of ‘p’ with path ‘knife’ as a structure ‘slice’
(if no intersection exist is found, the entire path is
- considered to be ‘before’ the intersection):
+ considered to be 'before' the intersection):
struct slice {
path before,after;
}
@@ -2106,7 +2172,7 @@ File: asymptote.info, Node: Paths and guides, Next: Pens, Prev: Data types,
‘path buildcycle(... path[] p);’
This returns the path surrounding a region bounded by a list
of two or more consecutively intersecting paths, following the
- behaviour of the ‘MetaPost buildcycle’ command.
+ behavior of the ‘MetaPost buildcycle’ command.
‘pair min(path p);’
returns the pair (left,bottom) for the path bounding box of
@@ -2139,8 +2205,9 @@ File: asymptote.info, Node: Paths and guides, Next: Pens, Prev: Data types,
otherwise.
‘pair inside(path p, pen fillrule=currentpen);’
- returns an arbitrary point strictly inside a cyclic path ‘p’
- according to the fill rule ‘fillrule’ (*note fillrule::).
+ returns an arbitrary point strictly inside a nondegenerate
+ cyclic path ‘p’ according to the fill rule ‘fillrule’ (*note
+ fillrule::).
‘path[] strokepath(path g, pen p=currentpen);’
returns the path array that ‘PostScript’ would fill in drawing
@@ -2340,7 +2407,7 @@ with one or more color components equal to 1.
definitions of some colors (e.g. ‘Green’) actually disagree.
‘Asymptote’ also comes with a ‘asycolors.sty’ ‘LaTeX’ package that
- defines to ‘LaTeX’ CMYK versions of ‘Asymptote’’s predefined
+ defines to ‘LaTeX’ CMYK versions of ‘Asymptote’'s predefined
colors, so that they can be used directly within ‘LaTeX’ strings.
Normally, such colors are passed to ‘LaTeX’ via a pen argument;
however, to change the color of only a portion of a string, say for
@@ -2442,12 +2509,65 @@ with one or more color components equal to 1.
pen nobasealign=basealign(0);
pen basealign=basealign(1);
- The default setting, ‘nobasealign’,which may be changed with
+ The default setting, ‘nobasealign’, which may be changed with
‘defaultpen(pen)’, causes the label alignment routines to use the
full label bounding box for alignment. In contrast, ‘basealign’
requests that the TeX baseline be respected. The base align
setting of a pen is returned by ‘int basealign(pen p=currentpen)’.
+ For example, in the following image, the baselines of green \pi and
+ \gamma are aligned, while the bottom border of red -\pi and -\gamma
+ are aligned.
+ import fontsize;
+ import three;
+
+ settings.autobillboard=false;
+ settings.embed=false;
+ currentprojection=orthographic(Z);
+
+ defaultpen(fontsize(100pt));
+
+ dot(O);
+
+ label("acg",O,align=N,basealign);
+ label("ace",O,align=N,red);
+ label("acg",O,align=S,basealign);
+ label("ace",O,align=S,red);
+ label("acg",O,align=E,basealign);
+ label("ace",O,align=E,red);
+ label("acg",O,align=W,basealign);
+ label("ace",O,align=W,red);
+
+ picture pic;
+ dot(pic,(labelmargin(),0,0),blue);
+ dot(pic,(-labelmargin(),0,0),blue);
+ dot(pic,(0,labelmargin(),0),blue);
+ dot(pic,(0,-labelmargin(),0),blue);
+ add(pic,O);
+
+ dot((0,0));
+
+ label("acg",(0,0),align=N,basealign);
+ label("ace",(0,0),align=N,red);
+ label("acg",(0,0),align=S,basealign);
+ label("ace",(0,0),align=S,red);
+ label("acg",(0,0),align=E,basealign);
+ label("ace",(0,0),align=E,red);
+ label("acg",(0,0),align=W,basealign);
+ label("ace",(0,0),align=W,red);
+
+ picture pic;
+ dot(pic,(labelmargin(),0),blue);
+ dot(pic,(-labelmargin(),0),blue);
+ dot(pic,(0,labelmargin()),blue);
+ dot(pic,(0,-labelmargin()),blue);
+ add(pic,(0,0));
+
+ [./basealign]
+
+ Another method for aligning baselines is provided by the ‘baseline’
+ function (*note baseline::).
+
• The font size is specified in TeX points (1 pt = 1/72.27 inches)
with the function ‘pen fontsize(real size, real
lineskip=1.2*size)’. The default font size, 12pt, may be changed
@@ -2514,7 +2634,7 @@ with one or more color components equal to 1.
pen opacity(real opacity=1, string blend="Compatible");
The opacity can be varied from ‘0’ (fully transparent) to the
default value of ‘1’ (opaque), and ‘blend’ specifies one of the
- following foreground–background blending operations:
+ following foreground-background blending operations:
"Compatible","Normal","Multiply","Screen","Overlay","SoftLight",
"HardLight","ColorDodge","ColorBurn","Darken","Lighten","Difference",
"Exclusion","Hue","Saturation","Color","Luminosity",
@@ -2523,7 +2643,7 @@ with one or more color components equal to 1.
Since ‘PostScript’ does not support transparency, this feature is
only effective with the ‘-f pdf’ output format option; other
formats can be produced from the resulting PDF file with the
- ‘ImageMagick’ ‘convert’ program. Labels are always drawn with an
+ ‘ImageMagick’ ‘magick’ program. Labels are always drawn with an
‘opacity’ of 1. A simple example of transparent filling is
provided in the example file ‘transparency.asy’.
@@ -2621,7 +2741,7 @@ with one or more color components equal to 1.
‘Allow’
Allow labels to overwrite one another. This is the default
- behaviour (unless overridden with ‘defaultpen(pen)’.
+ behavior (unless overridden with ‘defaultpen(pen)’.
‘Suppress’
Suppress, with a warning, each label that would overwrite
@@ -2685,7 +2805,7 @@ power with the ‘^’ operator.
‘transform scale(real x, real y);’
scale by ‘x’ in the x direction and by ‘y’ in the y direction;
‘transform slant(real s);’
- maps ‘(x,y)’ –> ‘(x+s*y,y)’;
+ maps ‘(x,y)’ -> ‘(x+s*y,y)’;
‘transform rotate(real angle, pair z=(0,0));’
rotates by ‘angle’ in degrees about ‘z’;
‘transform reflect(pair a, pair b);’
@@ -2700,7 +2820,7 @@ respectively. The function ‘bool isometry(transform t)’ can be used to
test if ‘t’ is an isometry (preserves distance).

-File: asymptote.info, Node: Frames and pictures, Next: Files, Prev: Transforms, Up: Programming
+File: asymptote.info, Node: Frames and pictures, Next: Deferred drawing, Prev: Transforms, Up: Programming
6.5 Frames and pictures
=======================
@@ -2724,19 +2844,6 @@ File: asymptote.info, Node: Frames and pictures, Next: Files, Prev: Transform
label::), is returned by
frame align(frame f, pair align);
- To draw or fill a box or ellipse around a label or frame and return
- the boundary as a path, use one of the predefined ‘envelope’
- routines
- path box(frame f, Label L="", real xmargin=0,
- real ymargin=xmargin, pen p=currentpen,
- filltype filltype=NoFill, bool above=true);
- path roundbox(frame f, Label L="", real xmargin=0,
- real ymargin=xmargin, pen p=currentpen,
- filltype filltype=NoFill, bool above=true);
- path ellipse(frame f, Label L="", real xmargin=0,
- real ymargin=xmargin, pen p=currentpen,
- filltype filltype=NoFill, bool above=true);
-
‘picture’
Pictures are high-level structures (*note Structures::) defined in
the module ‘plain’ that provide canvases for drawing in user
@@ -2928,9 +3035,9 @@ File: asymptote.info, Node: Frames and pictures, Next: Files, Prev: Transform
optional background filling or clipping, and ‘above’ specifies
whether to add ‘src’ above or below existing objects.
- There are also routines to add a picture or frame ‘src’ specified
- in postscript coordinates to another picture ‘dest’ (or
- ‘currentpicture’) about the user coordinate ‘position’:
+ There are also routines to add a fixed-size picture or frame ‘src’
+ to another picture ‘dest’ (or ‘currentpicture’) about the user
+ coordinate ‘position’:
void add(picture src, pair position, bool group=true,
filltype filltype=NoFill, bool above=true);
void add(picture dest, picture src, pair position,
@@ -3027,9 +3134,86 @@ File: asymptote.info, Node: Frames and pictures, Next: Files, Prev: Transform
that can be used for importing ‘LaTeX’ packages.

-File: asymptote.info, Node: Files, Next: Variable initializers, Prev: Frames and pictures, Up: Programming
+File: asymptote.info, Node: Deferred drawing, Next: Files, Prev: Frames and pictures, Up: Programming
+
+6.6 Deferred drawing
+====================
+
+It is sometimes desirable to have elements of a fixed absolute size,
+independent of the picture scaling from user to ‘PostScript’
+coordinates. For example, normally one would want the size of a dot
+created with ‘dot’, the size of the arrowheads created with ‘arrow’
+(*note arrows::), and labels to be drawn independent of the scaling.
+
+ However, because of ‘Asymptote’'s automatic scaling feature (*note
+Figure size::), the translation between user coordinate and ‘PostScript’
+coordinate is not determined until shipout time:
+size(1cm);
+dot((0,0));
+dot((1,1));
+shipout("x"); // at this point, 1 unit coordinate = 1cm
+dot((2,2));
+shipout("y"); // at this point, 1 unit coordinate = 0.5cm
+It is therefore necessary to defer the drawing of these elements until
+shipout time.
+
+ For example, a frame can be added at a specified user coordinate of a
+picture with the deferred drawing routine ‘add(picture
+dest=currentpicture, frame src, pair position)’:
+frame f;
+fill(f,circle((0,0),1.5pt));
+add(f,position=(1,1),align=(0,0));
+
+ A deferred drawing routine is an object of type ‘drawer’, which is a
+function with signature ‘void(frame f, transform t)’. For example, if
+the drawing routine
+void d(frame f, transform t){
+ fill(f,shift(3cm,0)*circle(t*(1,1),2pt));
+}
+is added to ‘currentpicture’ with
+currentpicture.add(d);
+a filled circle of radius 2pt will be drawn on currentpicture centered
+3cm to the right of user coordinate ‘(1,1)’. The parameter ‘t’ is the
+affine transformation from user coordinates to ‘PostScript’ coordinates.
+
+ Even though the actual drawing is deferred, you still need to specify
+to the ‘Asymptote’ scaling routines that ultimately a fixed-size circle
+of radius 2pt will be drawn 3cm to the right of user-coordinate (1,1),
+by adding a frame about (1,1) that extends beyond (1,1) from
+‘(3cm-2pt,-2pt)+min(currentpen)’ to ‘(3cm+2pt,2pt)+max(currentpen)’,
+where we have even accounted for the pen linewidth. The following
+example will then produce a PDF file 10 cm wide:
+
+settings.outformat="pdf";
+size(10cm);
+dot((0,0));
+dot((1,1),red);
+add(new void(frame f, transform t) {
+ fill(f,shift(3cm,0)*circle(t*(1,1),2pt));
+});
+pair trueMin=(3cm-2pt,-2pt)+min(currentpen);
+pair trueMax=(3cm+2pt,2pt)+max(currentpen);
+currentpicture.addPoint((1,1),trueMin);
+currentpicture.addPoint((1,1),trueMax);
+Here we specified the minimum and maximum user and truesize (fixed)
+coordinates of the drawer with the ‘picture’ routine
+void addPoint(pair user, pair truesize);
+Alternatively, one can use
+void addBox(pair userMin, pair userMax, pair trueMin=0, pair trueMax=0) {
+to specify a bounding box with bottom-left corner ‘t*(1,1)+trueMin’ and
+top-right corner ‘t*(1,1)+trueMax’, where ‘t’ is the transformation that
+transforms from user coordinates to ‘PostScript’ coordinates.
+
+ For more details about deferred drawing, see "Asymptote: A vector
+graphics language," John C. Bowman and Andy Hammerlindl, TUGBOAT: The
+Communications of the TeX Users Group, 29:2, 288-294 (2008),
+
+<https://www.math.ualberta.ca/~bowman/publications/asyTUG.pdf>.
+
+
+File: asymptote.info, Node: Files, Next: Variable initializers, Prev: Deferred drawing, Up: Programming
-6.6 Files
+6.7 Files
=========
‘Asymptote’ can read and write text files (including comma-separated
@@ -3108,7 +3292,7 @@ write(fout,"List: ",1,2,3); // Writes "List: 1 2 3"
A file may be opened with ‘mode="xdr"’, to read or write double
precision (64-bit) reals and single precision (32-bit) integers in Sun
-Microsystem’s XDR (External Data Representation) portable binary format
+Microsystem's XDR (External Data Representation) portable binary format
(available on all ‘UNIX’ platforms). Alternatively, a file may also be
opened with ‘mode="binary"’ to read or write double precision reals and
single precision integers in the native (nonportable) machine binary
@@ -3188,14 +3372,14 @@ file ‘to’. Unless the ‘-globalwrite’ (or ‘-nosafe’) option is enabl
this operation is restricted to the current directory. The functions
int convert(string args="", string file="", string format="");
int animate(string args="", string file="", string format="");
-call the ‘ImageMagick’ commands ‘convert’ and ‘animate’, respectively,
+call the ‘ImageMagick’ commands ‘magick’ and ‘animate’, respectively,
with the arguments ‘args’ and the file name constructed from the strings
‘file’ and ‘format’.

File: asymptote.info, Node: Variable initializers, Next: Structures, Prev: Files, Up: Programming
-6.7 Variable initializers
+6.8 Variable initializers
=========================
A variable can be assigned a value when it is declared, as in ‘int x=3;’
@@ -3267,7 +3451,7 @@ for (var x : a)

File: asymptote.info, Node: Structures, Next: Operators, Prev: Variable initializers, Up: Programming
-6.8 Structures
+6.9 Structures
==============
Users may also define their own data types as structures, along with
@@ -3313,7 +3497,7 @@ form implicitly creates a new instance of ‘T’. That is, after the
definition of a structure ‘T’, a variable of type ‘T’ is initialized to
a new instance (‘new T’) by default. During the definition of the
structure, however, variables of type ‘T’ are initialized to ‘null’ by
-default. This special behaviour is to avoid infinite recursion of
+default. This special behavior is to avoid infinite recursion of
creating new instances in code such as
struct tree {
int value;
@@ -3366,55 +3550,10 @@ Person joe;
joe.firstname="Joe";
joe.lastname="Jones";
Creating a new Person is a chore; it takes three lines to create a new
-instance and to initialize its fields (that’s still considerably less
+instance and to initialize its fields (that's still considerably less
effort than creating a new person in real life, though).
- We can reduce the work by defining a constructor function
-‘Person(string,string)’:
-struct Person {
- string firstname;
- string lastname;
-
- static Person Person(string firstname, string lastname) {
- Person p=new Person;
- p.firstname=firstname;
- p.lastname=lastname;
- return p;
- }
-}
-
-Person joe=Person.Person("Joe", "Jones");
-
- While it is now easier than before to create a new instance, we still
-have to refer to the constructor by the qualified name ‘Person.Person’.
-If we add the line
-from Person unravel Person;
-immediately after the structure definition, then the constructor can be
-used without qualification: ‘Person joe=Person("Joe", "Jones");’.
-
- The constructor is now easy to use, but it is quite a hassle to
-define. If you write a lot of constructors, you will find that you are
-repeating a lot of code in each of them. Fortunately, your friendly
-neighbourhood Asymptote developers have devised a way to automate much
-of the process.
-
- If, in the body of a structure, Asymptote encounters the definition
-of a function of the form ‘void operator init(ARGS)’, it implicitly
-defines a constructor function of the arguments ‘ARGS’ that uses the
-‘void operator init’ function to initialize a new instance of the
-structure. That is, it essentially defines the following constructor
-(assuming the structure is called ‘Foo’):
-
- static Foo Foo(ARGS) {
- Foo instance=new Foo;
- instance.operator init(ARGS);
- return instance;
- }
-
- This constructor is also implicitly copied to the enclosing scope
-after the end of the structure definition, so that it can used
-subsequently without qualifying it by the structure name. Our ‘Person’
-example can thus be implemented as:
+ We can reduce the work by defining ‘operator init’:
struct Person {
string firstname;
string lastname;
@@ -3433,19 +3572,6 @@ not be confused with its use to define default values for variables
type of the ‘operator init’ must be ‘void’ while in the second, it must
be the (non-‘void’) type of the variable.
- The function ‘cputime()’ returns a structure ‘cputime’ with
-cumulative CPU times broken down into the fields ‘parent.user’,
-‘parent.system’, ‘child.user’, and ‘child.system’, along with the
-cumulative wall clock time in ‘parent.clock’, all measured in seconds.
-For convenience, the incremental fields ‘change.user’, ‘change.system’,
-and ‘change.clock’ indicate the change in the corresponding fields since
-the last call to ‘cputime()’. The function
-void write(file file=stdout, string s="", cputime c,
- string format=cputimeformat, suffix suffix=none);
-displays the incremental user cputime followed by “u”, the incremental
-system cputime followed by “s”, the total user cputime followed by “U”,
-and the total system cputime followed by “S”.
-
Much like in C++, casting (*note Casts::) provides for an elegant
implementation of structure inheritance, including a virtual function
‘v’:
@@ -3486,8 +3612,8 @@ write(c.y); // Outputs 3;

File: asymptote.info, Node: Operators, Next: Implicit scaling, Prev: Structures, Up: Programming
-6.9 Operators
-=============
+6.10 Operators
+==============
* Menu:
@@ -3498,8 +3624,8 @@ File: asymptote.info, Node: Operators, Next: Implicit scaling, Prev: Structur

File: asymptote.info, Node: Arithmetic & logical, Next: Self & prefix operators, Prev: Operators, Up: Operators
-6.9.1 Arithmetic & logical operators
-------------------------------------
+6.10.1 Arithmetic & logical operators
+-------------------------------------
‘Asymptote’ uses the standard binary arithmetic operators. However,
when one integer is divided by another, both arguments are converted to
@@ -3572,8 +3698,8 @@ a, int bits)’ (reverse bits within a word of length bits).

File: asymptote.info, Node: Self & prefix operators, Next: User-defined operators, Prev: Arithmetic & logical, Up: Operators
-6.9.2 Self & prefix operators
------------------------------
+6.10.2 Self & prefix operators
+------------------------------
As in C, each of the arithmetic operators ‘+’, ‘-’, ‘*’, ‘/’, ‘#’, ‘%’,
and ‘^’ can be used as a self operator. The prefix operators ‘++’
@@ -3597,8 +3723,8 @@ really needed, one can substitute the expressions ‘(++i-1)’ and

File: asymptote.info, Node: User-defined operators, Prev: Self & prefix operators, Up: Operators
-6.9.3 User-defined operators
-----------------------------
+6.10.3 User-defined operators
+-----------------------------
The following symbols may be used with ‘operator’ to define or redefine
operators on structures and built-in types:
@@ -3631,7 +3757,7 @@ write("g=",g);

File: asymptote.info, Node: Implicit scaling, Next: Functions, Prev: Operators, Up: Programming
-6.10 Implicit scaling
+6.11 Implicit scaling
=====================
If a numeric literal is in front of certain types of expressions, then
@@ -3668,7 +3794,7 @@ write(10cm);

File: asymptote.info, Node: Functions, Next: Arrays, Prev: Implicit scaling, Up: Programming
-6.11 Functions
+6.12 Functions
==============
* Menu:
@@ -3773,7 +3899,7 @@ segmentation fault, unless a fully working version of the GNU library

File: asymptote.info, Node: Default arguments, Next: Named arguments, Prev: Functions, Up: Functions
-6.11.1 Default arguments
+6.12.1 Default arguments
------------------------
‘Asymptote’ supports a more flexible mechanism for default function
@@ -3792,7 +3918,7 @@ defined.

File: asymptote.info, Node: Named arguments, Next: Rest arguments, Prev: Default arguments, Up: Functions
-6.11.2 Named arguments
+6.12.2 Named arguments
----------------------
It is sometimes difficult to remember the order in which arguments
@@ -3826,7 +3952,7 @@ x=3;
write(f(4,3));
and outputs 43.
- Parameters can be specified as “keyword-only” by putting ‘keyword’
+ Parameters can be specified as "keyword-only" by putting ‘keyword’
immediately before the parameter name, as in ‘int f(int keyword x)’ or
‘int f(int keyword x=77)’. This forces the caller of the function to
use a named argument to give a value for this parameter. That is,
@@ -3854,7 +3980,7 @@ would be allowed.

File: asymptote.info, Node: Rest arguments, Next: Mathematical functions, Prev: Named arguments, Up: Functions
-6.11.3 Rest arguments
+6.12.3 Rest arguments
---------------------
Rest arguments allow one to write functions that take a variable number
@@ -3942,7 +4068,7 @@ i(3,4); // ambiguous; the first candidate is better for the first argument,

File: asymptote.info, Node: Mathematical functions, Prev: Rest arguments, Up: Functions
-6.11.4 Mathematical functions
+6.12.4 Mathematical functions
-----------------------------
‘Asymptote’ has built-in versions of the standard ‘libm’ mathematical
@@ -4025,10 +4151,47 @@ write(Si(1.0));
returns the integral of ‘f’ from ‘a’ to ‘b’ using adaptive Simpson
integration.
+ Internally, ‘operator init’ implicitly defines a constructor
+ function ‘Person(string,string)’ as follows, where ARGS is ‘string
+ firstname, string lastname’ in this case:
+ struct Person {
+ string firstname;
+ string lastname;
+
+ static Person Person(ARGS) {
+ Person p=new Person;
+ p.operator init(ARGS);
+ return p;
+ }
+ }
+ which then can be used as:
+ Person joe=Person.Person("Joe", "Jones");
+
+ The following is also implicitly generated in the enclosing scope,
+ after the end of the structure definition.
+ from Person unravel Person;
+ It allows us to use the constructor without qualification,
+ otherwise we would have to refer to the constructor by the
+ qualified name ‘Person.Person’.
+
+‘cputime cputime()’
+ returns a structure ‘cputime’ with cumulative CPU times broken down
+ into the fields ‘parent.user’, ‘parent.system’, ‘child.user’, and
+ ‘child.system’, along with the cumulative wall clock time in
+ ‘parent.clock’, all measured in seconds. For convenience, the
+ incremental fields ‘change.user’, ‘change.system’, and
+ ‘change.clock’ indicate the change in the corresponding fields
+ since the last call to ‘cputime()’. The function
+ void write(file file=stdout, string s="", cputime c,
+ string format=cputimeformat, suffix suffix=none);
+ displays the incremental user cputime followed by "u", the
+ incremental system cputime followed by "s", the total user cputime
+ followed by "U", and the total system cputime followed by "S".
+

File: asymptote.info, Node: Arrays, Next: Casts, Prev: Functions, Up: Programming
-6.12 Arrays
+6.13 Arrays
===========
* Menu:
@@ -4445,7 +4608,7 @@ output with the functions ‘write(file,T[])’, ‘write(file,T[][])’,

File: asymptote.info, Node: Slices, Prev: Arrays, Up: Arrays
-6.12.1 Slices
+6.13.1 Slices
-------------
Asymptote allows a section of an array to be addressed as a slice using
@@ -4529,7 +4692,7 @@ of the cells.

File: asymptote.info, Node: Casts, Next: Import, Prev: Arrays, Up: Programming
-6.13 Casts
+6.14 Casts
==========
‘Asymptote’ implicitly casts ‘int’ to ‘real’, ‘int’ to ‘pair’, ‘real’ to
@@ -4596,7 +4759,7 @@ real operator cast(int x)=convert;

File: asymptote.info, Node: Import, Next: Static, Prev: Casts, Up: Programming
-6.14 Import
+6.15 Import
===========
While ‘Asymptote’ provides many features by default, some applications
@@ -4654,7 +4817,7 @@ name.
usually know all of the internal types and variables of a module, which
can also change as the module writer adds or changes features of the
module. As such, it is prudent to add ‘import’ commands at the start of
-an ‘Asymptote’ file, so that imported names won’t shadow locally defined
+an ‘Asymptote’ file, so that imported names won't shadow locally defined
functions. Still, imported names may shadow other imported names,
depending on the order in which they were imported, and imported
functions may cause overloading resolution problems if they have the
@@ -4744,7 +4907,7 @@ Imported global functions and variables are also listed if ‘imports’ is

File: asymptote.info, Node: Templated imports, Up: Import
-6.14.1 Templated imports
+6.15.1 Templated imports
------------------------
*Warning:* This feature is experimental: it has known issues and its
@@ -4765,10 +4928,9 @@ accessed for types ‘string’, ‘int[]’, and ‘real’ with the import com
access templatedModule(T=string, S=int[], Number=real)
as templatedModule_string_int_real;
Note that this is actually an _access_ command rather than an _import_
-command, so the names of types, functions, etc. would have to be stated
-as e.g. ‘templatedModule_string_int_real.Wrapper_Number’ rather than
-just ‘Wrapper_Number’ (where ‘Wrapper_Number’ is a type defined in
-‘templatedModule.asy’).
+command, so a type, function, or variable ‘A’ defined in
+‘templatedModule.asy’ would need to be accessed qualified as
+‘templatedModule_string_int_real.A’.
Alternatively, the module could be imported via a command like
from templatedModule(T=string, S=int[], Number=real) access
@@ -4778,18 +4940,17 @@ This command would automatically rename ‘Wrapper_Number’ to
‘Wrapper_real’ and would also allow the use of any ‘operator ==’
overloads defined in the module.
- For more information, see the examples in
-<https://github.com/vectorgraphics/asymptote/tree/647b6c5732ec94a48f0f0b2446f02c86888fe7e7/tests/template>.
+ Further examples can be found in the ‘tests/template’ subdirectory of
+the ‘Asymptote’ source directory.
- Issues: Certain standard features of almost any type (such as ‘==’,
-‘new’, and the ability to call static methods on the type) may only be
-available for type arguments that are builtin or defined in the ‘plain’
-module.
+ Issues: Certain expected operators (such as ‘operator ==’) may only
+be available for type arguments that are builtin or defined in module
+‘plain’.

File: asymptote.info, Node: Static, Prev: Import, Up: Programming
-6.15 Static
+6.16 Static
===========
Static qualifiers allocate the memory address of a variable in a higher
@@ -5099,7 +5260,8 @@ File: asymptote.info, Node: Base modules, Next: Options, Prev: LaTeX usage,
* plain:: Default ‘Asymptote’ base file
* simplex:: Linear programming: simplex method
-* math:: Extend ‘Asymptote’’s math capabilities
+* simplex2:: Two-variable simplex method
+* math:: Extend ‘Asymptote’'s math capabilities
* interpolate:: Interpolation routines
* geometry:: Geometry routines
* trembling:: Wavy lines
@@ -5160,17 +5322,25 @@ File: asymptote.info, Node: simplex, Next: math, Prev: plain, Up: Base modul
8.2 ‘simplex’
=============
-This module solves the two-variable linear programming problem using the
-simplex method. It is used by the module ‘plain’ for automatic sizing
-of pictures.
+This module solves the general linear programming problem using the
+simplex method.
+
+
+File: asymptote.info, Node: simplex2, Next: math, Prev: plain, Up: Base modules
+
+8.3 ‘simplex2’
+==============
+
+This module solves a special case of the two-variable linear programming
+problem used by the module ‘plain’ for automatic sizing of pictures.

File: asymptote.info, Node: math, Next: interpolate, Prev: simplex, Up: Base modules
-8.3 ‘math’
+8.4 ‘math’
==========
-This module extends ‘Asymptote’’s mathematical capabilities with useful
+This module extends ‘Asymptote’'s mathematical capabilities with useful
functions such as
‘void drawline(picture pic=currentpicture, pair P, pair Q, pen p=currentpen);’
@@ -5236,7 +5406,7 @@ functions such as

File: asymptote.info, Node: interpolate, Next: geometry, Prev: math, Up: Base modules
-8.4 ‘interpolate’
+8.5 ‘interpolate’
=================
This module implements Lagrange, Hermite, and standard cubic spline
@@ -5246,7 +5416,7 @@ interpolation in ‘Asymptote’, as illustrated in the example

File: asymptote.info, Node: geometry, Next: trembling, Prev: interpolate, Up: Base modules
-8.5 ‘geometry’
+8.6 ‘geometry’
==============
This module, written by Philippe Ivaldi, provides an extensive set of
@@ -5261,7 +5431,7 @@ and an index:

File: asymptote.info, Node: trembling, Next: stats, Prev: geometry, Up: Base modules
-8.6 ‘trembling’
+8.7 ‘trembling’
===============
This module, written by Philippe Ivaldi and illustrated in the example
@@ -5270,7 +5440,7 @@ This module, written by Philippe Ivaldi and illustrated in the example

File: asymptote.info, Node: stats, Next: patterns, Prev: trembling, Up: Base modules
-8.7 ‘stats’
+8.8 ‘stats’
===========
This module implements a Gaussian random number generator and a
@@ -5280,7 +5450,7 @@ collection of statistics routines, including ‘histogram’ and

File: asymptote.info, Node: patterns, Next: markers, Prev: stats, Up: Base modules
-8.8 ‘patterns’
+8.9 ‘patterns’
==============
This module implements ‘PostScript’ tiling patterns and includes several
@@ -5289,8 +5459,8 @@ convenient pattern generation routines.

File: asymptote.info, Node: markers, Next: map, Prev: patterns, Up: Base modules
-8.9 ‘markers’
-=============
+8.10 ‘markers’
+==============
This module implements specialized routines for marking paths and
angles. The principal mark routine provided by this module is
@@ -5335,7 +5505,7 @@ as illustrated in the example ‘markers2.asy’.

File: asymptote.info, Node: map, Next: tree, Prev: markers, Up: Base modules
-8.10 ‘map’
+8.11 ‘map’
==========
This module creates a struct parameterized by the types specified in
@@ -5356,7 +5526,7 @@ write(M.lookup("y"));

File: asymptote.info, Node: tree, Next: binarytree, Prev: map, Up: Base modules
-8.11 ‘tree’
+8.12 ‘tree’
===========
This module implements an example of a dynamic binary search tree.
@@ -5364,7 +5534,7 @@ This module implements an example of a dynamic binary search tree.

File: asymptote.info, Node: binarytree, Next: drawtree, Prev: tree, Up: Base modules
-8.12 ‘binarytree’
+8.13 ‘binarytree’
=================
This module can be used to draw an arbitrary binary tree and includes an
@@ -5389,7 +5559,7 @@ add(pic2.fit(),(0,0),10S);

File: asymptote.info, Node: drawtree, Next: syzygy, Prev: binarytree, Up: Base modules
-8.13 ‘drawtree’
+8.14 ‘drawtree’
===============
This is a simple tree drawing module used by the example ‘treetest.asy’.
@@ -5397,7 +5567,7 @@ This is a simple tree drawing module used by the example ‘treetest.asy’.

File: asymptote.info, Node: syzygy, Next: feynman, Prev: drawtree, Up: Base modules
-8.14 ‘syzygy’
+8.15 ‘syzygy’
=============
This module automates the drawing of braids, relations, and syzygies,
@@ -5407,7 +5577,7 @@ along with the corresponding equations, as illustrated in the example

File: asymptote.info, Node: feynman, Next: roundedpath, Prev: syzygy, Up: Base modules
-8.15 ‘feynman’
+8.16 ‘feynman’
==============
This module, contributed by Martin Wiebusch, is useful for drawing
@@ -5417,7 +5587,7 @@ Feynman diagrams, as illustrated by the examples ‘eetomumu.asy’ and

File: asymptote.info, Node: roundedpath, Next: animation, Prev: feynman, Up: Base modules
-8.16 ‘roundedpath’
+8.17 ‘roundedpath’
==================
This module, contributed by Stefan Knorr, is useful for rounding the
@@ -5427,13 +5597,13 @@ sharp corners of paths, as illustrated in the example file

File: asymptote.info, Node: animation, Next: embed, Prev: roundedpath, Up: Base modules
-8.17 ‘animation’
+8.18 ‘animation’
================
This module allows one to generate animations, as illustrated by the
files ‘wheel.asy’, ‘wavepacket.asy’, and ‘cube.asy’ in the ‘animations’
subdirectory of the examples directory. These animations use the
-‘ImageMagick’ ‘convert’ program to merge multiple images into a GIF or
+‘ImageMagick’ ‘magick’ program to merge multiple images into a GIF or
MPEG movie.
The related ‘animate’ module, derived from the ‘animation’ module,
@@ -5459,7 +5629,7 @@ described here:

File: asymptote.info, Node: embed, Next: slide, Prev: animation, Up: Base modules
-8.18 ‘embed’
+8.19 ‘embed’
============
This module provides an interface to the ‘LaTeX’ package (included with
@@ -5484,7 +5654,7 @@ animate::).

File: asymptote.info, Node: slide, Next: MetaPost, Prev: embed, Up: Base modules
-8.19 ‘slide’
+8.20 ‘slide’
============
This module provides a simple yet high-quality facility for making
@@ -5495,7 +5665,7 @@ file ‘slidemovies.asy’). A simple example is provided in

File: asymptote.info, Node: MetaPost, Next: babel, Prev: slide, Up: Base modules
-8.20 ‘MetaPost’
+8.21 ‘MetaPost’
===============
This module provides some useful routines to help ‘MetaPost’ users
@@ -5513,7 +5683,7 @@ equation solver ‘solve’ instead.

File: asymptote.info, Node: babel, Next: labelpath, Prev: MetaPost, Up: Base modules
-8.21 ‘babel’
+8.22 ‘babel’
============
This module implements the ‘LaTeX’ ‘babel’ package in ‘Asymptote’. For
@@ -5524,7 +5694,7 @@ babel("german");

File: asymptote.info, Node: labelpath, Next: labelpath3, Prev: babel, Up: Base modules
-8.22 ‘labelpath’
+8.23 ‘labelpath’
================
This module uses the ‘PSTricks’ ‘pstextpath’ macro to fit labels along a
@@ -5542,7 +5712,7 @@ inherits the limitations of the ‘PSTricks’ ‘\pstextpath’ macro.

File: asymptote.info, Node: labelpath3, Next: annotate, Prev: labelpath, Up: Base modules
-8.23 ‘labelpath3’
+8.24 ‘labelpath3’
=================
This module, contributed by Jens Schwaiger, implements a 3D version of
@@ -5552,7 +5722,7 @@ provided in ‘curvedlabel3.asy’.

File: asymptote.info, Node: annotate, Next: CAD, Prev: labelpath3, Up: Base modules
-8.24 ‘annotate’
+8.25 ‘annotate’
===============
This module supports PDF annotations for viewing with ‘Adobe Reader’,
@@ -5566,7 +5736,7 @@ and ‘tex’ TeX engines.

File: asymptote.info, Node: CAD, Next: graph, Prev: annotate, Up: Base modules
-8.25 ‘CAD’
+8.26 ‘CAD’
==========
This module, contributed by Mark Henning, provides basic pen definitions
@@ -5576,7 +5746,7 @@ and measurement functions for simple 2D CAD drawings according to DIN

File: asymptote.info, Node: graph, Next: palette, Prev: CAD, Up: Base modules
-8.26 ‘graph’
+8.27 ‘graph’
============
This module implements two-dimensional linear and logarithmic graphs,
@@ -6066,7 +6236,7 @@ following routines:
bool above=true);
In the right-hand graph, the unit n-sided regular polygon
‘polygon(int n)’ and the unit n-point cyclic cross ‘cross(int n,
- bool round=true, real r=0)’ (where ‘r’ is an optional “inner”
+ bool round=true, real r=0)’ (where ‘r’ is an optional "inner"
radius) are used to build a custom marker frame. Here
‘markuniform(bool centered=false, int n, bool rotated=false)’ adds
this frame at ‘n’ uniformly spaced points along the arclength of
@@ -6655,7 +6825,7 @@ following routines:
[./vectorfield]
15. The following scientific graphs, which illustrate many features of
- ‘Asymptote’’s graphics routines, were generated from the examples
+ ‘Asymptote’'s graphics routines, were generated from the examples
‘diatom.asy’ and ‘westnile.asy’, using the comma-separated data in
‘diatom.csv’ and ‘westnile.csv’.
@@ -6667,7 +6837,7 @@ following routines:

File: asymptote.info, Node: palette, Next: three, Prev: graph, Up: Base modules
-8.27 ‘palette’
+8.28 ‘palette’
==============
‘Asymptote’ can also generate color density images and palettes. The
@@ -6880,7 +7050,7 @@ pen[][] palette(real[][] f, pen[] palette);

File: asymptote.info, Node: three, Next: obj, Prev: palette, Up: Base modules
-8.28 ‘three’
+8.29 ‘three’
============
This module fully extends the notion of guides and paths in ‘Asymptote’
@@ -6888,7 +7058,7 @@ to three dimensions. It introduces the new types guide3, path3, and
surface. Guides in three dimensions are specified with the same syntax
as in two dimensions except that triples ‘(x,y,z)’ are used in place of
pairs ‘(x,y)’ for the nodes and direction specifiers. This
-generalization of John Hobby’s spline algorithm is shape-invariant under
+generalization of John Hobby's spline algorithm is shape-invariant under
three-dimensional rotation, scaling, and shifting, and reduces in the
planar case to the two-dimensional algorithm used in ‘Asymptote’,
‘MetaPost’, and ‘MetaFont’ [cf. J. C. Bowman, Proceedings in Applied
@@ -6975,7 +7145,7 @@ currentlight=Headlamp;
light nolight;
The ‘currentlight.background’ (or ‘background’ member of the
-specified ‘light’) can be used to set the background colour for 2D (or
+specified ‘light’) can be used to set the background color for 2D (or
3D) images. The default background is white for ‘HTML’ images and
transparent for all other formats. One can request a completely
transparent background for 3D ‘WebGL’ images with
@@ -6999,7 +7169,7 @@ documented at the beginning of module ‘three’.
The examples ‘elevation.asy’ and ‘sphericalharmonic.asy’ illustrate
how to draw a surface with patch-dependent colors. The examples
‘vertexshading.asy’ and ‘smoothelevation.asy’ illustrate
-vertex-dependent colors, which are supported by ‘Asymptote’’s native
+vertex-dependent colors, which are supported by ‘Asymptote’'s native
‘OpenGL’/‘WebGL’ renderers and the two-dimensional vector output format
(‘settings.render=0’). Since the PRC output format does not currently
support vertex shading of Bezier surfaces, PRC patches are shaded with
@@ -7023,7 +7193,7 @@ from a two-dimensional cyclic path ‘g’ with the constructor
surface surface(path p, triple plane(pair)=XYplane);
and then filled:
draw(surface((0,0)--E+2N--2E--E+N..0.2E..cycle),red);
-Planar Bezier surfaces patches are constructed using Orest Shardt’s
+Planar Bezier surfaces patches are constructed using Orest Shardt's
‘bezulate’ routine, which decomposes (possibly nonsimply connected)
regions bounded (according to the ‘zerowinding’ fill rule) by simple
cyclic paths (intersecting only at the endpoints) into subregions
@@ -7590,7 +7760,7 @@ add(faces);

File: asymptote.info, Node: obj, Next: graph3, Prev: three, Up: Base modules
-8.29 ‘obj’
+8.30 ‘obj’
==========
This module allows one to construct surfaces from simple obj files, as
@@ -7599,7 +7769,7 @@ illustrated in the example files ‘galleon.asy’ and ‘triceratops.asy’.

File: asymptote.info, Node: graph3, Next: grid3, Prev: obj, Up: Base modules
-8.30 ‘graph3’
+8.31 ‘graph3’
=============
This module implements three-dimensional versions of the functions in
@@ -7775,7 +7945,7 @@ picture vectorfield(path3 vector(pair v), triple f(pair z), pair a, pair b,

File: asymptote.info, Node: grid3, Next: solids, Prev: graph3, Up: Base modules
-8.31 ‘grid3’
+8.32 ‘grid3’
============
This module, contributed by Philippe Ivaldi, can be used for drawing 3D
@@ -7805,7 +7975,7 @@ zaxis3(Label("$z$",position=EndPoint,align=(-1,0.5)),Bounds(Min,Min),

File: asymptote.info, Node: solids, Next: tube, Prev: grid3, Up: Base modules
-8.32 ‘solids’
+8.33 ‘solids’
=============
This solid geometry module defines a structure ‘revolution’ that can be
@@ -7840,7 +8010,7 @@ struct skeleton {

File: asymptote.info, Node: tube, Next: flowchart, Prev: solids, Up: Base modules
-8.33 ‘tube’
+8.34 ‘tube’
===========
This module extends the ‘tube’ surfaces constructed in
@@ -7881,7 +8051,7 @@ the third case, the array of pens contains only one pen, which depends
of the relative time.
The casting of ‘path’ to ‘coloredpath’ allows the use of a ‘path’
-instead of a ‘coloredpath’; in this case the shading behaviour is the
+instead of a ‘coloredpath’; in this case the shading behavior is the
default shading behavior for a surface.
An example of ‘tube’ is provided in the file ‘trefoilknot.asy’.
@@ -7891,7 +8061,7 @@ Further examples can be found at

File: asymptote.info, Node: flowchart, Next: contour, Prev: tube, Up: Base modules
-8.34 ‘flowchart’
+8.35 ‘flowchart’
================
This module provides routines for drawing flowcharts. The primary
@@ -8007,7 +8177,7 @@ add(new void(picture pic, transform t) {

File: asymptote.info, Node: contour, Next: contour3, Prev: flowchart, Up: Base modules
-8.35 ‘contour’
+8.36 ‘contour’
==============
This module draws contour lines. To construct contours corresponding to
@@ -8222,14 +8392,14 @@ for(int i=0; i < np; ++i)
The example ‘Gouraudcontour.asy’ illustrates how to produce color
density images over such irregular triangular meshes. ‘Asymptote’ uses
-a robust version of Paul Bourke’s Delaunay triangulation algorithm based
+a robust version of Paul Bourke's Delaunay triangulation algorithm based
on the public-domain exact arithmetic predicates written by Jonathan
Shewchuk.

File: asymptote.info, Node: contour3, Next: smoothcontour3, Prev: contour, Up: Base modules
-8.36 ‘contour3’
+8.37 ‘contour3’
===============
This module draws surfaces described as the null space of real-valued
@@ -8239,7 +8409,7 @@ in the example file ‘magnetic.asy’.

File: asymptote.info, Node: smoothcontour3, Next: slopefield, Prev: contour3, Up: Base modules
-8.37 ‘smoothcontour3’
+8.38 ‘smoothcontour3’
=====================
This module, written by Charles Staats, draws implicitly defined
@@ -8265,17 +8435,17 @@ surface implicitsurface(real f(triple)=null,
int keyword maxdepth=8,
bool usetriangles=true);
The optional parameter ‘overlapedges’ attempts to compensate for an
-artifact that can cause the renderer to “see through” the boundary
+artifact that can cause the renderer to "see through" the boundary
between patches. Although it defaults to ‘false’, it should usually be
set to ‘true’. The example ‘genustwo.asy’ illustrates the use of this
function. Additional examples, together with a more in-depth
-explanation of the module’s usage and pitfalls, are available at
+explanation of the module's usage and pitfalls, are available at
<https://github.com/charlesstaats/smoothcontour3>.

File: asymptote.info, Node: slopefield, Next: ode, Prev: smoothcontour3, Up: Base modules
-8.38 ‘slopefield’
+8.39 ‘slopefield’
=================
To draw a slope field for the differential equation dy/dx=f(x,y) (or
@@ -8315,7 +8485,7 @@ draw(curve((0,0),func,(-3,-3),(3,3)),red);

File: asymptote.info, Node: ode, Prev: slopefield, Up: Base modules
-8.39 ‘ode’
+8.40 ‘ode’
==========
The ‘ode’ module, illustrated in the example ‘odetest.asy’, implements a
@@ -8486,7 +8656,7 @@ configuration file named ‘config.asy’ (or the file specified by the
environment variable ‘ASYMPTOTE_CONFIG’ or ‘-config’ option).
‘Asymptote’ will look for this file in its usual search path (*note
Search paths::). Typically the configuration file is placed in the
-‘.asy’ directory in the user’s home directory (‘%USERPROFILE%\.asy’
+‘.asy’ directory in the user's home directory (‘%USERPROFILE%\.asy’
under ‘MSDOS’). Configuration variables are accessed using the long
form of the option names:
import settings;
@@ -8522,16 +8692,14 @@ with the ‘graphic()’ function. The generated output is optimized with
the default setting ‘settings.dvisvgmOptions="--optimize"’.
‘Asymptote’ can also produce any output format supported by the
-‘ImageMagick’ ‘convert’ program (version 6.3.5 or later recommended; an
-‘Invalid Parameter’ error message indicates that the ‘MSDOS’ utility
-‘convert’ is being used instead of the one that comes with
-‘ImageMagick’). The optional setting ‘-render n’ requests an output
-resolution of ‘n’ pixels per ‘bp’. Antialiasing is controlled by the
-parameter ‘antialias’, which by default specifies a sampling width of 2
-pixels. To give other options to ‘convert’, use the ‘convertOptions’
-setting or call convert manually. This example emulates how ‘Asymptote’
-produces antialiased ‘tiff’ output at one pixel per ‘bp’:
-asy -o - venn | convert -alpha Off -density 144x144 -geometry 50%x eps:- venn.tiff
+‘ImageMagick’ ‘magick’ program (version 7 or later. The optional
+setting ‘-render n’ requests an output resolution of ‘n’ pixels per
+‘bp’. Antialiasing is controlled by the parameter ‘antialias’, which by
+default specifies a sampling width of 2 pixels. To give other options
+to ‘magick’, use the ‘convertOptions’ setting or call ‘magick convert’
+manually. This example emulates how ‘Asymptote’ produces antialiased
+‘tiff’ output at one pixel per ‘bp’:
+asy -o - venn | magick convert -alpha Off -density 144x144 -geometry 50%x eps:- venn.tiff
If the option ‘-nosafe’ is given, ‘Asymptote’ runs in unsafe mode.
This enables the ‘int system(string s)’ and ‘int system(string[] s)’
@@ -8643,7 +8811,7 @@ and must be entered immediately after the prompt:
also accepted unless there exists a top-level variable named ‘q’).
A history of the most recent 1000 (this number can be changed with
the ‘historylines’ configuration variable) previous commands will
- be retained in the file ‘.asy/history’ in the user’s home directory
+ be retained in the file ‘.asy/history’ in the user's home directory
(unless the command-line option ‘-localhistory’ was specified, in
which case the history will be stored in the file ‘.asy_history’ in
the current directory).
@@ -8832,13 +9000,14 @@ The excellent ‘PostScript’ editor ‘pstoedit’ (version 3.50 or later;
available from <https://sourceforge.net/projects/pstoedit/>) includes an
‘Asymptote’ backend. Unlike virtually all other ‘pstoedit’ backends,
this driver includes native clipping, even-odd fill rule, ‘PostScript’
-subpath, and full image support. Here is an example: ‘asy -V
-/usr/local/share/doc/asymptote/examples/venn.asy’
+subpath, and full image support. Here is an example:
+
+‘asy -V /usr/local/share/doc/asymptote/examples/venn.asy’
pstoedit -f asy venn.eps test.asy
asy -V test
-If the line widths aren’t quite correct, try giving ‘pstoedit’ the
-‘-dis’ option. If the fonts aren’t typeset correctly, try giving
+If the line widths aren't quite correct, try giving ‘pstoedit’ the
+‘-dis’ option. If the fonts aren't typeset correctly, try giving
‘pstoedit’ the ‘-dt’ option.

@@ -8962,7 +9131,7 @@ Prince. Sean Healy designed the ‘Asymptote’ logo. Other contributors
include Orest Shardt, Jesse Frohlich, Michail Vidiassov, Charles Staats,
Philippe Ivaldi, Olivier Guibé, Radoslav Marinov, Jeff Samuelson, Chris
Savage, Jacques Pienaar, Mark Henning, Steve Melenchuk, Martin Wiebusch,
-Stefan Knorr, Supakorn “Jamie” Rassameemasmuang, Jacob Skitsko, Joseph
+Stefan Knorr, Supakorn "Jamie" Rassameemasmuang, Jacob Skitsko, Joseph
Chaumont, and Oliver Cheng. Pedram Emami developed the ‘Asymptote Web
Application’ hosted at <http://asymptote.ualberta.ca>:
@@ -8977,11 +9146,48 @@ Index
* Menu:
+* -: Arithmetic & logical.
+ (line 14)
+* --: Paths. (line 16)
+* -- <1>: Self & prefix operators.
+ (line 6)
+* ---: Bezier curves. (line 84)
+* -=: Self & prefix operators.
+ (line 6)
+* -c: Options. (line 222)
+* -l: Options. (line 241)
+* -u: Options. (line 232)
+* -V: Configuring. (line 6)
+* -V <1>: Drawing in batch mode.
+ (line 16)
+* :: Arithmetic & logical.
+ (line 61)
+* ::: Bezier curves. (line 70)
* !: Arithmetic & logical.
(line 57)
* !=: Structures. (line 62)
* != <1>: Arithmetic & logical.
(line 37)
+* ?: Arithmetic & logical.
+ (line 61)
+* ..: Paths. (line 16)
+* .asy: Search paths. (line 12)
+* *: Pens. (line 15)
+* * <1>: Arithmetic & logical.
+ (line 16)
+* **: Arithmetic & logical.
+ (line 31)
+* *=: Self & prefix operators.
+ (line 6)
+* /: Arithmetic & logical.
+ (line 18)
+* /=: Self & prefix operators.
+ (line 6)
+* &: Bezier curves. (line 84)
+* & <1>: Arithmetic & logical.
+ (line 49)
+* &&: Arithmetic & logical.
+ (line 47)
* #: Arithmetic & logical.
(line 20)
* %: Arithmetic & logical.
@@ -8989,17 +9195,12 @@ Index
* % <1>: Interactive mode. (line 16)
* %=: Self & prefix operators.
(line 6)
-* &: Bezier curves. (line 84)
-* & <1>: Arithmetic & logical.
- (line 49)
-* &&: Arithmetic & logical.
- (line 47)
-* *: Pens. (line 15)
-* * <1>: Arithmetic & logical.
- (line 16)
-* **: Arithmetic & logical.
- (line 31)
-* *=: Self & prefix operators.
+* ^: Arithmetic & logical.
+ (line 29)
+* ^ <1>: Arithmetic & logical.
+ (line 55)
+* ^^: Paths. (line 23)
+* ^=: Self & prefix operators.
(line 6)
* +: Pens. (line 15)
* + <1>: Arithmetic & logical.
@@ -9008,33 +9209,6 @@ Index
(line 6)
* +=: Self & prefix operators.
(line 6)
-* -: Arithmetic & logical.
- (line 14)
-* --: Paths. (line 16)
-* -- <1>: Self & prefix operators.
- (line 6)
-* ---: Bezier curves. (line 84)
-* -=: Self & prefix operators.
- (line 6)
-* -c: Options. (line 224)
-* -l: Options. (line 243)
-* -u: Options. (line 234)
-* -V: Configuring. (line 6)
-* -V <1>: Drawing in batch mode.
- (line 16)
-* ..: Paths. (line 16)
-* .asy: Search paths. (line 12)
-* /: Arithmetic & logical.
- (line 18)
-* /=: Self & prefix operators.
- (line 6)
-* 2D graphs: graph. (line 6)
-* 3D graphs: graph3. (line 6)
-* 3D grids: grid3. (line 6)
-* 3D PostScript: three. (line 665)
-* :: Arithmetic & logical.
- (line 61)
-* ::: Bezier curves. (line 70)
* <: Arithmetic & logical.
(line 39)
* <=: Arithmetic & logical.
@@ -9046,19 +9220,14 @@ Index
(line 45)
* >=: Arithmetic & logical.
(line 43)
-* ?: Arithmetic & logical.
- (line 61)
-* ^: Arithmetic & logical.
- (line 29)
-* ^ <1>: Arithmetic & logical.
- (line 55)
-* ^=: Self & prefix operators.
- (line 6)
-* ^^: Paths. (line 23)
* |: Arithmetic & logical.
(line 53)
* ||: Arithmetic & logical.
(line 51)
+* 2D graphs: graph. (line 6)
+* 3D graphs: graph3. (line 6)
+* 3D grids: grid3. (line 6)
+* 3D PostScript: three. (line 665)
* a4: Configuring. (line 63)
* abort: Data types. (line 364)
* abs: Data types. (line 65)
@@ -9082,24 +9251,24 @@ Index
* acosh: Mathematical functions.
(line 6)
* add: Frames and pictures.
- (line 217)
+ (line 204)
* add <1>: Frames and pictures.
- (line 231)
+ (line 218)
* add <2>: three. (line 342)
* addViews: three. (line 459)
* adjust: Pens. (line 123)
* Ai: Mathematical functions.
(line 48)
-* Airy: Mathematical functions.
- (line 48)
* Ai_deriv: Mathematical functions.
(line 48)
+* Airy: Mathematical functions.
+ (line 48)
* alias: Structures. (line 62)
* alias <1>: Arrays. (line 183)
-* Align: label. (line 12)
-* aligndir: Options. (line 216)
+* Align: label. (line 20)
+* aligndir: Options. (line 214)
* all: Arrays. (line 350)
-* Allow: Pens. (line 363)
+* Allow: Pens. (line 416)
* and: Bezier curves. (line 56)
* AND: Arithmetic & logical.
(line 68)
@@ -9117,9 +9286,9 @@ Index
* arc: Paths and guides. (line 24)
* Arc: Paths and guides. (line 37)
* arc <1>: three. (line 353)
-* ArcArrow: draw. (line 26)
+* ArcArrow: draw. (line 30)
* ArcArrow3: three. (line 632)
-* ArcArrows: draw. (line 26)
+* ArcArrows: draw. (line 30)
* ArcArrows3: three. (line 632)
* arclength: Paths and guides. (line 153)
* arclength <1>: three. (line 566)
@@ -9131,15 +9300,17 @@ Index
(line 6)
* array: Data types. (line 284)
* array <1>: Arrays. (line 112)
-* array iteration: Programming. (line 52)
+* array iteration: Programming. (line 53)
* arrays: Arrays. (line 6)
* arrow: Drawing commands. (line 34)
* Arrow: draw. (line 26)
-* arrow <1>: label. (line 70)
+* arrow <1>: label. (line 77)
* arrow keys: Drawing in interactive mode.
(line 11)
* arrow keys <1>: GUI usage. (line 6)
* Arrow3: three. (line 632)
+* arrowbar: draw. (line 26)
+* arrowhead: draw. (line 50)
* arrows: draw. (line 26)
* Arrows: draw. (line 26)
* Arrows3: three. (line 632)
@@ -9153,9 +9324,9 @@ Index
* asinh: Mathematical functions.
(line 6)
* Aspect: Frames and pictures.
- (line 59)
+ (line 46)
* assert: Data types. (line 369)
-* assignment: Programming. (line 26)
+* assignment: Programming. (line 27)
* asy: Data types. (line 359)
* asy <1>: Import. (line 106)
* asy-mode: Editing modes. (line 6)
@@ -9163,9 +9334,9 @@ Index
* asygl: Configuring. (line 69)
* asyinclude: LaTeX usage. (line 42)
* Asymptote Web Application: Description. (line 6)
+* ASYMPTOTE_CONFIG: Options. (line 159)
* asymptote.sty: LaTeX usage. (line 6)
* asymptote.xml: Editing modes. (line 48)
-* ASYMPTOTE_CONFIG: Options. (line 159)
* atan: Mathematical functions.
(line 6)
* aTan: Mathematical functions.
@@ -9176,7 +9347,7 @@ Index
(line 6)
* atleast: Bezier curves. (line 56)
* attach: Frames and pictures.
- (line 276)
+ (line 263)
* attach <1>: LaTeX usage. (line 47)
* attach <2>: graph. (line 407)
* autoadjust: three. (line 428)
@@ -9193,7 +9364,7 @@ Index
* background: three. (line 76)
* background <1>: three. (line 97)
* background color: Frames and pictures.
- (line 180)
+ (line 167)
* BackView: three. (line 452)
* Bar: draw. (line 19)
* Bar3: three. (line 632)
@@ -9202,24 +9373,24 @@ Index
* barsize: draw. (line 19)
* base modules: Base modules. (line 6)
* basealign: Pens. (line 181)
-* baseline: label. (line 90)
+* baseline: label. (line 97)
* batch mode: Drawing in batch mode.
(line 6)
* beep: Data types. (line 382)
-* BeginArcArrow: draw. (line 26)
+* BeginArcArrow: draw. (line 30)
* BeginArcArrow3: three. (line 632)
* BeginArrow: draw. (line 26)
* BeginArrow3: three. (line 632)
* BeginBar: draw. (line 19)
* BeginBar3: three. (line 632)
-* BeginDotMargin: draw. (line 42)
+* BeginDotMargin: draw. (line 87)
* BeginDotMargin3: three. (line 648)
-* BeginMargin: draw. (line 42)
+* BeginMargin: draw. (line 68)
* BeginMargin3: three. (line 648)
-* BeginPenMargin: draw. (line 42)
+* BeginPenMargin: draw. (line 76)
* BeginPenMargin2: three. (line 648)
* BeginPenMargin3: three. (line 648)
-* BeginPoint: label. (line 55)
+* BeginPoint: label. (line 62)
* Bessel: Mathematical functions.
(line 48)
* bevel: flowchart. (line 72)
@@ -9230,14 +9401,14 @@ Index
* bezulate: three. (line 146)
* Bi: Mathematical functions.
(line 48)
+* Bi_deriv: Mathematical functions.
+ (line 48)
* Billboard: three. (line 536)
* binary: Files. (line 80)
* binary format: Files. (line 80)
* binary operators: Arithmetic & logical.
(line 6)
* binarytree: binarytree. (line 6)
-* Bi_deriv: Mathematical functions.
- (line 48)
* black stripes: three. (line 261)
* Blank: draw. (line 26)
* block.bottom: flowchart. (line 19)
@@ -9259,21 +9430,19 @@ Index
* BottomTop: graph. (line 139)
* BottomView: three. (line 452)
* bounding box: Frames and pictures.
- (line 180)
+ (line 167)
* bounds: palette. (line 43)
* Bounds: graph3. (line 21)
* box: Frames and pictures.
- (line 25)
-* box <1>: Frames and pictures.
- (line 130)
-* box <2>: three. (line 375)
-* box <3>: three. (line 377)
+ (line 117)
+* box <1>: three. (line 375)
+* box <2>: three. (line 377)
* bp: Drawing in batch mode.
(line 23)
* brace: Paths and guides. (line 51)
-* break: Programming. (line 48)
+* break: Programming. (line 49)
* breakpoints: Debugger. (line 21)
-* brick: Pens. (line 285)
+* brick: Pens. (line 338)
* broken axis: graph. (line 822)
* bug reports: Help. (line 19)
* buildcycle: Paths and guides. (line 270)
@@ -9283,8 +9452,6 @@ Index
* BWRainbow2: palette. (line 18)
* C string: Data types. (line 217)
* CAD: CAD. (line 6)
-* calculateTransform: Frames and pictures.
- (line 118)
* camera: three. (line 422)
* casts: Casts. (line 6)
* cbrt: Mathematical functions.
@@ -9292,10 +9459,10 @@ Index
* cd: Files. (line 26)
* ceil: Mathematical functions.
(line 26)
-* Center: label. (line 60)
+* Center: label. (line 67)
* center: three. (line 405)
-* checker: Pens. (line 285)
-* Chinese: Pens. (line 244)
+* checker: Pens. (line 338)
+* Chinese: Pens. (line 297)
* choose: Mathematical functions.
(line 39)
* Ci: Mathematical functions.
@@ -9305,7 +9472,7 @@ Index
* circle <1>: three. (line 349)
* circle <2>: flowchart. (line 61)
* circlebarframe: markers. (line 18)
-* CJK: Pens. (line 244)
+* CJK: Pens. (line 297)
* clamped: graph. (line 36)
* clang: Compiling from UNIX source.
(line 48)
@@ -9337,7 +9504,7 @@ Index
(line 6)
* complement: Arrays. (line 149)
* concat: Arrays. (line 179)
-* conditional: Programming. (line 26)
+* conditional: Programming. (line 27)
* conditional <1>: Arithmetic & logical.
(line 61)
* config: Configuring. (line 69)
@@ -9348,17 +9515,14 @@ Index
* conj: Data types. (line 62)
* constructors: Structures. (line 91)
* context: Options. (line 188)
-* continue: Programming. (line 48)
+* continue: Programming. (line 49)
* continue <1>: Debugger. (line 31)
* contour: contour. (line 6)
* contour3: contour3. (line 6)
* controls: Bezier curves. (line 45)
* controls <1>: three. (line 6)
-* controlSpecifier: Paths and guides. (line 396)
-* convert: Configuring. (line 69)
-* convert <1>: Files. (line 159)
-* convert <2>: animation. (line 6)
-* convert <3>: Options. (line 188)
+* controlSpecifier: Paths and guides. (line 397)
+* convert: Files. (line 159)
* convertOptions: Options. (line 174)
* Coons shading: fill. (line 78)
* copy: Arrays. (line 176)
@@ -9368,21 +9532,22 @@ Index
(line 20)
* cosh: Mathematical functions.
(line 6)
-* cputime: Structures. (line 169)
+* cputime: Mathematical functions.
+ (line 109)
* crop: graph. (line 640)
* cropping graphs: graph. (line 640)
* cross: Data types. (line 106)
* cross <1>: Data types. (line 197)
* cross <2>: graph. (line 481)
* crossframe: markers. (line 22)
-* crosshatch: Pens. (line 302)
+* crosshatch: Pens. (line 355)
* csv: Arrays. (line 382)
* CTZ: Arithmetic & logical.
(line 68)
* cubicroots: Arrays. (line 339)
* curl: Bezier curves. (line 66)
* curl <1>: three. (line 6)
-* curlSpecifier: Paths and guides. (line 408)
+* curlSpecifier: Paths and guides. (line 409)
* currentlight: three. (line 76)
* currentpen: Pens. (line 6)
* currentprojection: three. (line 449)
@@ -9395,10 +9560,10 @@ Index
* cycle <1>: Paths. (line 16)
* cycle <2>: three. (line 6)
* cyclic: Paths and guides. (line 85)
-* cyclic <1>: Paths and guides. (line 376)
+* cyclic <1>: Paths and guides. (line 377)
* cyclic <2>: Arrays. (line 39)
* cyclic <3>: three. (line 566)
-* Cyrillic: Pens. (line 238)
+* Cyrillic: Pens. (line 291)
* dashdotted: Pens. (line 102)
* dashed: Pens. (line 102)
* data types: Data types. (line 6)
@@ -9406,21 +9571,22 @@ Index
* Debian: UNIX binary distributions.
(line 19)
* debugger: Debugger. (line 6)
-* declaration: Programming. (line 26)
+* declaration: Programming. (line 27)
* deconstruct: GUI usage. (line 6)
* default arguments: Default arguments. (line 6)
* defaultformat: graph. (line 176)
-* DefaultHead: draw. (line 26)
+* DefaultHead: draw. (line 50)
* DefaultHead3: three. (line 632)
* defaultpen: Pens. (line 49)
* defaultpen <1>: Pens. (line 122)
* defaultpen <2>: Pens. (line 127)
* defaultpen <3>: Pens. (line 139)
-* defaultpen <4>: Pens. (line 192)
-* defaultpen <5>: Pens. (line 363)
-* defaultpen <6>: Pens. (line 387)
+* defaultpen <4>: Pens. (line 245)
+* defaultpen <5>: Pens. (line 416)
+* defaultpen <6>: Pens. (line 440)
* defaultrender: three. (line 46)
* deferred drawing: simplex. (line 6)
+* deferred drawing <1>: simplex2. (line 6)
* degrees: Data types. (line 78)
* degrees <1>: Mathematical functions.
(line 17)
@@ -9442,31 +9608,31 @@ Index
* dir <4>: three. (line 566)
* direction specifier: Bezier curves. (line 6)
* directory: Files. (line 26)
-* dirSpecifier: Paths and guides. (line 390)
+* dirSpecifier: Paths and guides. (line 391)
* dirtime: Paths and guides. (line 166)
* display: Configuring. (line 15)
-* do: Programming. (line 48)
+* do: Programming. (line 49)
* DOSendl: Files. (line 65)
* DOSnewl: Files. (line 65)
-* dot: draw. (line 83)
+* dot: draw. (line 117)
* dot <1>: Data types. (line 103)
* dot <2>: Data types. (line 194)
* dot <3>: Arrays. (line 279)
* dot <4>: Arrays. (line 282)
-* DotMargin: draw. (line 42)
+* DotMargin: draw. (line 83)
* DotMargin3: three. (line 648)
-* DotMargins: draw. (line 42)
+* DotMargins: draw. (line 89)
* DotMargins3: three. (line 648)
* dotted: Pens. (line 102)
* double deferred drawing: three. (line 327)
* double precision: Files. (line 80)
* draw: Drawing commands. (line 34)
* draw <1>: draw. (line 6)
-* Draw: draw. (line 26)
-* draw <2>: draw. (line 113)
-* Draw <1>: Frames and pictures.
- (line 160)
+* draw <2>: draw. (line 147)
+* Draw: Frames and pictures.
+ (line 147)
* draw <3>: three. (line 154)
+* drawer: Deferred drawing. (line 31)
* drawing commands: Drawing commands. (line 6)
* drawline: math. (line 9)
* drawtree: drawtree. (line 6)
@@ -9483,40 +9649,37 @@ Index
* Ei: Mathematical functions.
(line 48)
* ellipse: Paths and guides. (line 45)
-* ellipse <1>: Frames and pictures.
- (line 25)
* elliptic functions: Mathematical functions.
(line 48)
-* else: Programming. (line 26)
+* else: Programming. (line 27)
* emacs: Editing modes. (line 6)
* embed: embed. (line 6)
* Embedded: three. (line 536)
* emissivepen: three. (line 66)
* empty: Frames and pictures.
(line 7)
-* EndArcArrow: draw. (line 26)
+* EndArcArrow: draw. (line 30)
* EndArcArrow3: three. (line 632)
* EndArrow: draw. (line 26)
* EndArrow3: three. (line 632)
* EndBar: draw. (line 19)
* EndBar3: three. (line 632)
-* EndDotMargin: draw. (line 42)
+* EndDotMargin: draw. (line 89)
* EndDotMargin3: three. (line 648)
* endl: Files. (line 65)
-* EndMargin: draw. (line 42)
+* EndMargin: draw. (line 69)
* EndMargin3: three. (line 648)
-* EndPenMargin: draw. (line 42)
+* EndPenMargin: draw. (line 78)
* EndPenMargin2: three. (line 648)
* EndPenMargin3: three. (line 648)
-* EndPoint: label. (line 55)
-* envelope: Frames and pictures.
- (line 25)
+* EndPoint: label. (line 62)
+* envelope: label. (line 111)
* environment variables: Configuring. (line 90)
* eof: Files. (line 97)
* eof <1>: Arrays. (line 364)
* eol: Files. (line 97)
* eol <1>: Arrays. (line 364)
-* EPS: label. (line 78)
+* EPS: label. (line 85)
* EPS <1>: Options. (line 188)
* erase: Drawing in interactive mode.
(line 11)
@@ -9524,7 +9687,7 @@ Index
* erase <2>: Frames and pictures.
(line 7)
* erase <3>: Frames and pictures.
- (line 284)
+ (line 271)
* erf: Mathematical functions.
(line 6)
* erfc: Mathematical functions.
@@ -9572,27 +9735,25 @@ Index
(line 62)
* file: Files. (line 6)
* file <1>: Debugger. (line 44)
-* Fill: draw. (line 26)
-* fill: draw. (line 118)
+* fill: draw. (line 152)
* fill <1>: fill. (line 6)
* fill <2>: fill. (line 17)
-* Fill <1>: Frames and pictures.
- (line 146)
-* FillDraw: draw. (line 26)
+* Fill: Frames and pictures.
+ (line 133)
* filldraw: fill. (line 11)
-* FillDraw <1>: Frames and pictures.
- (line 136)
+* FillDraw: Frames and pictures.
+ (line 123)
* filloutside: fill. (line 27)
* fillrule: Pens. (line 164)
+* filltype: Frames and pictures.
+ (line 122)
* find: Data types. (line 242)
* find <1>: Arrays. (line 158)
* findall: Arrays. (line 163)
* firstcut: Paths and guides. (line 262)
-* fit: Frames and pictures.
- (line 113)
* fit3: three. (line 340)
* fixedscaling: Frames and pictures.
- (line 81)
+ (line 68)
* floor: Mathematical functions.
(line 26)
* flowchart: flowchart. (line 6)
@@ -9600,13 +9761,13 @@ Index
* flush <1>: Files. (line 97)
* fmod: Mathematical functions.
(line 6)
-* font: Pens. (line 206)
-* font <1>: Pens. (line 206)
-* font <2>: Pens. (line 235)
-* font encoding: Pens. (line 235)
-* fontcommand: Pens. (line 219)
-* fontsize: Pens. (line 192)
-* for: Programming. (line 26)
+* font: Pens. (line 259)
+* font <1>: Pens. (line 259)
+* font <2>: Pens. (line 288)
+* font encoding: Pens. (line 288)
+* fontcommand: Pens. (line 272)
+* fontsize: Pens. (line 245)
+* for: Programming. (line 27)
* format: Data types. (line 290)
* format <1>: Options. (line 188)
* forum: Help. (line 6)
@@ -9645,14 +9806,14 @@ Index
* gradient shading: fill. (line 32)
* graph: graph. (line 6)
* graph3: graph3. (line 6)
-* graphic: label. (line 78)
+* graphic: label. (line 85)
* graphic <1>: Options. (line 193)
* graphical user interface: GUI. (line 6)
* graphwithderiv: graph. (line 671)
* gray: Pens. (line 25)
* grayscale: Pens. (line 25)
* Grayscale: palette. (line 9)
-* grid: Pens. (line 285)
+* grid: Pens. (line 338)
* grid <1>: graph. (line 767)
* grid3: grid3. (line 6)
* gs: Configuring. (line 15)
@@ -9664,9 +9825,9 @@ Index
* GUI: GUI. (line 6)
* GUI installation: GUI installation. (line 6)
* GUI usage: GUI usage. (line 6)
-* guide: Paths and guides. (line 314)
+* guide: Paths and guides. (line 315)
* guide3: three. (line 6)
-* hatch: Pens. (line 302)
+* hatch: Pens. (line 355)
* Headlamp: three. (line 76)
* height: LaTeX usage. (line 47)
* help: Interactive mode. (line 42)
@@ -9684,7 +9845,7 @@ Index
* history: Files. (line 147)
* history <1>: Interactive mode. (line 54)
* historylines: Interactive mode. (line 58)
-* HookHead: draw. (line 26)
+* HookHead: draw. (line 50)
* HookHead3: three. (line 632)
* Horizontal: flowchart. (line 77)
* HTML5: three. (line 233)
@@ -9696,6 +9857,8 @@ Index
(line 6)
* I: Mathematical functions.
(line 48)
+* i_scaled: Mathematical functions.
+ (line 48)
* ibl: three. (line 104)
* iconify: three. (line 261)
* identity: Transforms. (line 24)
@@ -9703,9 +9866,9 @@ Index
(line 6)
* identity <2>: Arrays. (line 321)
* identity4: three. (line 504)
-* if: Programming. (line 26)
+* if: Programming. (line 27)
* IgnoreAspect: Frames and pictures.
- (line 63)
+ (line 50)
* image: palette. (line 33)
* image <1>: palette. (line 61)
* image-based lighting: three. (line 104)
@@ -9722,10 +9885,10 @@ Index
* inches: Figure size. (line 18)
* incircle: Data types. (line 120)
* include: Import. (line 131)
-* including images: label. (line 78)
+* including images: label. (line 85)
* increasing: math. (line 55)
* inf: Data types. (line 35)
-* inheritance: Structures. (line 182)
+* inheritance: Structures. (line 124)
* initialized: Arrays. (line 39)
* initializers: Variable initializers.
(line 6)
@@ -9735,7 +9898,7 @@ Index
* input <1>: Files. (line 12)
* input <2>: Interactive mode. (line 45)
* input <3>: Interactive mode. (line 49)
-* input encoding: Pens. (line 235)
+* input encoding: Pens. (line 288)
* insert: Data types. (line 253)
* insert <1>: Arrays. (line 39)
* inside: Paths and guides. (line 294)
@@ -9779,49 +9942,48 @@ Index
* invert: three. (line 494)
* invisible: Pens. (line 43)
* isnan: Data types. (line 35)
-* i_scaled: Mathematical functions.
- (line 48)
* J: Mathematical functions.
(line 6)
* J <1>: Mathematical functions.
(line 48)
-* Japanese: Pens. (line 244)
+* Japanese: Pens. (line 297)
* K: Mathematical functions.
(line 48)
+* k_scaled: Mathematical functions.
+ (line 48)
* Kate: Editing modes. (line 48)
* KDE editor: Editing modes. (line 48)
* keepAspect: Frames and pictures.
- (line 59)
+ (line 46)
* keepAspect <1>: Frames and pictures.
- (line 63)
+ (line 50)
* keepAspect <2>: LaTeX usage. (line 47)
* keyboard bindings:: three. (line 211)
* keys: Arrays. (line 39)
* keyword: Named arguments. (line 37)
* keyword-only: Named arguments. (line 37)
* keywords: Named arguments. (line 6)
-* Korean: Pens. (line 244)
-* k_scaled: Mathematical functions.
- (line 48)
+* Korean: Pens. (line 297)
* label: Labels. (line 6)
-* Label: draw. (line 101)
+* Label: draw. (line 135)
* label <1>: label. (line 6)
-* Label <1>: label. (line 14)
+* Label <1>: label. (line 21)
* Label <2>: graph. (line 331)
* label <2>: three. (line 530)
+* labelmargin: label. (line 6)
* labelpath: labelpath. (line 6)
* labelpath3: labelpath3. (line 6)
* labelx: graph. (line 331)
* labely: graph. (line 331)
* Landscape: Frames and pictures.
- (line 103)
-* language context: Pens. (line 235)
+ (line 90)
+* language context: Pens. (line 288)
* language server protocol: Language server protocol.
(line 6)
* lastcut: Paths and guides. (line 266)
* lasy-mode: Editing modes. (line 6)
* latex: Options. (line 188)
-* LaTeX NFSS fonts: Pens. (line 206)
+* LaTeX NFSS fonts: Pens. (line 259)
* LaTeX usage: LaTeX usage. (line 6)
* latexmk: LaTeX usage. (line 30)
* latitude: Data types. (line 164)
@@ -9831,12 +9993,12 @@ Index
* leastsquares <1>: graph. (line 948)
* Left: graph. (line 270)
* LeftRight: graph. (line 276)
-* LeftSide: label. (line 60)
+* LeftSide: label. (line 67)
* LeftTicks: graph. (line 161)
* LeftTicks <1>: graph. (line 234)
* LeftView: three. (line 452)
* legend: Drawing commands. (line 34)
-* legend <1>: draw. (line 65)
+* legend <1>: draw. (line 99)
* legend <2>: graph. (line 425)
* Legendre: Mathematical functions.
(line 48)
@@ -9844,7 +10006,7 @@ Index
* length <1>: Data types. (line 144)
* length <2>: Data types. (line 239)
* length <3>: Paths and guides. (line 76)
-* length <4>: Paths and guides. (line 373)
+* length <4>: Paths and guides. (line 374)
* length <5>: Arrays. (line 39)
* length <6>: three. (line 566)
* letter: Configuring. (line 63)
@@ -9864,7 +10026,7 @@ Index
* Linear: graph. (line 711)
* linecap: Pens. (line 139)
* linejoin: Pens. (line 149)
-* lineskip: Pens. (line 192)
+* lineskip: Pens. (line 245)
* linetype: Pens. (line 123)
* linewidth: Pens. (line 127)
* locale: Data types. (line 316)
@@ -9883,7 +10045,7 @@ Index
* longdashdotted: Pens. (line 102)
* longdashed: Pens. (line 102)
* longitude: Data types. (line 169)
-* loop: Programming. (line 26)
+* loop: Programming. (line 27)
* LSP: Language server protocol.
(line 6)
* lualatex: Options. (line 188)
@@ -9892,15 +10054,18 @@ Index
(line 6)
* MacOS X configuration: Compiling from UNIX source.
(line 48)
-* makepen: Pens. (line 338)
+* magick: Configuring. (line 69)
+* magick <1>: Files. (line 159)
+* magick <2>: animation. (line 6)
+* magick <3>: Options. (line 188)
+* makepen: Pens. (line 391)
* map: Arrays. (line 135)
* map <1>: Arrays. (line 140)
* map <2>: map. (line 6)
-* Margin: draw. (line 42)
-* Margin <1>: draw. (line 42)
+* Margin: draw. (line 69)
* Margin3: three. (line 648)
* Margin3 <1>: three. (line 648)
-* Margins: draw. (line 42)
+* Margins: draw. (line 70)
* margins: three. (line 333)
* Margins3: three. (line 648)
* mark: graph. (line 481)
@@ -9933,11 +10098,11 @@ Index
* MetaPost pickup: Pens. (line 6)
* MetaPost whatever: MetaPost. (line 10)
* Microsoft Windows: Microsoft Windows. (line 6)
-* MidArcArrow: draw. (line 26)
+* MidArcArrow: draw. (line 30)
* MidArcArrow3: three. (line 632)
* MidArrow: draw. (line 26)
* MidArrow3: three. (line 632)
-* MidPoint: label. (line 55)
+* MidPoint: label. (line 62)
* midpoint: Paths and guides. (line 180)
* min: Paths and guides. (line 275)
* min <1>: Frames and pictures.
@@ -9947,7 +10112,7 @@ Index
* min <4>: three. (line 566)
* minbound: Data types. (line 131)
* minbound <1>: Data types. (line 202)
-* minipage: label. (line 116)
+* minipage: label. (line 125)
* mintimes: Paths and guides. (line 228)
* miterjoin: Pens. (line 149)
* miterlimit: Pens. (line 159)
@@ -9960,8 +10125,8 @@ Index
* mouse: GUI. (line 6)
* mouse bindings: three. (line 192)
* mouse wheel: GUI usage. (line 6)
-* Move: Pens. (line 375)
-* MoveQuiet: Pens. (line 381)
+* Move: Pens. (line 428)
+* MoveQuiet: Pens. (line 434)
* multisample: three. (line 184)
* N: Labels. (line 18)
* name: Files. (line 93)
@@ -9981,58 +10146,58 @@ Index
(line 73)
* next: Debugger. (line 41)
* nobasealign: Pens. (line 181)
-* NoFill: draw. (line 26)
-* NoFill <1>: Frames and pictures.
- (line 154)
+* NoFill: Frames and pictures.
+ (line 141)
* noglobalread: Files. (line 26)
* noglobalread <1>: Files. (line 40)
* nolight: three. (line 76)
-* NoMargin: draw. (line 42)
+* NoMargin: draw. (line 67)
* NoMargin3: three. (line 648)
* None: draw. (line 19)
* None <1>: draw. (line 26)
* none: Files. (line 65)
* normal: three. (line 552)
-* nosafe: Options. (line 211)
+* nosafe: Options. (line 209)
* NOT: Arithmetic & logical.
(line 68)
* notaknot: graph. (line 36)
* NoTicks: graph. (line 161)
* NoTicks3: graph3. (line 35)
* null: Structures. (line 6)
-* nullpen: label. (line 14)
+* nullpen: label. (line 21)
* nullpen <1>: Frames and pictures.
- (line 140)
+ (line 127)
* nullpen <2>: Frames and pictures.
- (line 149)
+ (line 136)
* NURBS: three. (line 432)
* O: three. (line 345)
* obj: obj. (line 6)
+* object: label. (line 111)
* oblique: three. (line 388)
* obliqueX: three. (line 395)
* obliqueY: three. (line 401)
* obliqueZ: three. (line 388)
* ode: ode. (line 6)
* offset: Pens. (line 123)
-* offset <1>: Options. (line 216)
+* offset <1>: Options. (line 214)
* OmitTick: graph. (line 224)
* OmitTickInterval: graph. (line 224)
* OmitTickIntervals: graph. (line 224)
-* opacity: Pens. (line 254)
+* opacity: Pens. (line 307)
* opacity <1>: three. (line 66)
* open: Files. (line 12)
* OpenGL: three. (line 184)
* operator: User-defined operators.
(line 6)
-* operator +(...string[] a).: Data types. (line 284)
* operator --: graph. (line 30)
* operator ..: graph. (line 33)
+* operator +(...string[] a).: Data types. (line 284)
* operator answer: Interactive mode. (line 35)
* operator cast: Casts. (line 38)
* operator ecast: Casts. (line 65)
* operator init: Variable initializers.
(line 6)
-* operator init <1>: Structures. (line 134)
+* operator init <1>: Structures. (line 105)
* operators: Operators. (line 6)
* options: Options. (line 6)
* OR: Arithmetic & logical.
@@ -10040,22 +10205,22 @@ Index
* orient: Data types. (line 108)
* orient <1>: three. (line 583)
* orientation: Frames and pictures.
- (line 103)
+ (line 90)
* orthographic: three. (line 405)
* outformat: three. (line 184)
* outprefix: Frames and pictures.
- (line 91)
+ (line 78)
* output: Files. (line 38)
* output <1>: Options. (line 188)
* OutTicks: graph3. (line 35)
* overloading functions: Functions. (line 55)
-* overwrite: Pens. (line 360)
+* overwrite: Pens. (line 413)
* P: Mathematical functions.
(line 48)
-* pack: label. (line 100)
+* pack: label. (line 109)
* packing: Rest arguments. (line 30)
* pad: Frames and pictures.
- (line 186)
+ (line 173)
* pair: Figure size. (line 6)
* pair <1>: Data types. (line 46)
* pairs: Arrays. (line 245)
@@ -10073,10 +10238,10 @@ Index
* path <2>: three. (line 42)
* path <3>: flowchart. (line 77)
* path markers: graph. (line 481)
+* path[]: Paths. (line 23)
* path3: three. (line 6)
* path3 <1>: three. (line 42)
-* path[]: Paths. (line 23)
-* patterns: Pens. (line 271)
+* patterns: Pens. (line 324)
* patterns <1>: patterns. (line 6)
* PBR: three. (line 74)
* PDF: Options. (line 188)
@@ -10085,10 +10250,10 @@ Index
* pdfviewer: Configuring. (line 15)
* pdfviewerOptions: Options. (line 174)
* pen: Pens. (line 6)
-* PenMargin: draw. (line 42)
+* PenMargin: draw. (line 78)
* PenMargin2: three. (line 648)
* PenMargin3: three. (line 648)
-* PenMargins: draw. (line 42)
+* PenMargins: draw. (line 79)
* PenMargins2: three. (line 648)
* PenMargins3: three. (line 648)
* periodic: graph. (line 36)
@@ -10097,9 +10262,17 @@ Index
* perspective: three. (line 432)
* physically based rendering: three. (line 74)
* picture: Frames and pictures.
- (line 39)
+ (line 26)
* picture alignment: Frames and pictures.
- (line 231)
+ (line 218)
+* picture.add: Deferred drawing. (line 31)
+* picture.addPoint: Deferred drawing. (line 51)
+* picture.calculateTransform: Frames and pictures.
+ (line 105)
+* picture.fit: Frames and pictures.
+ (line 100)
+* picture.scale: Frames and pictures.
+ (line 110)
* piecewisestraight: Paths and guides. (line 92)
* pixel: three. (line 655)
* Pl: Mathematical functions.
@@ -10109,14 +10282,14 @@ Index
* plane: three. (line 371)
* planeproject: three. (line 549)
* point: Paths and guides. (line 95)
-* point <1>: Paths and guides. (line 379)
+* point <1>: Paths and guides. (line 380)
* point <2>: three. (line 566)
* polar: Data types. (line 149)
* polargraph: graph. (line 89)
* polygon: graph. (line 481)
* pop: Arrays. (line 39)
* Portrait: Frames and pictures.
- (line 103)
+ (line 90)
* position: three. (line 76)
* position <1>: three. (line 184)
* postcontrol: Paths and guides. (line 146)
@@ -10124,8 +10297,8 @@ Index
* postfix operators: Self & prefix operators.
(line 19)
* postscript: Frames and pictures.
- (line 297)
-* PostScript fonts: Pens. (line 222)
+ (line 284)
+* PostScript fonts: Pens. (line 275)
* PostScript subpath: Paths. (line 23)
* pow10: Mathematical functions.
(line 6)
@@ -10158,9 +10331,9 @@ Index
(line 6)
* radialshade: fill. (line 52)
* RadialShade: Frames and pictures.
- (line 172)
+ (line 159)
* RadialShadeDraw: Frames and pictures.
- (line 176)
+ (line 163)
* radians: Mathematical functions.
(line 17)
* radius: Paths and guides. (line 135)
@@ -10185,8 +10358,8 @@ Index
* recursion: Functions. (line 100)
* reference: Description. (line 92)
* reflect: Transforms. (line 42)
-* Relative: label. (line 50)
-* Relative <1>: label. (line 60)
+* Relative: label. (line 57)
+* Relative <1>: label. (line 67)
* relpoint: Paths and guides. (line 176)
* reltime: Paths and guides. (line 172)
* remainder: Mathematical functions.
@@ -10196,15 +10369,15 @@ Index
* render <1>: three. (line 184)
* render <2>: Options. (line 188)
* replace: Data types. (line 270)
-* resetdefaultpen: Pens. (line 387)
+* resetdefaultpen: Pens. (line 440)
* rest arguments: Rest arguments. (line 6)
* restore: Frames and pictures.
- (line 291)
+ (line 278)
* restricted: Structures. (line 6)
* return: Debugger. (line 47)
* reverse: Data types. (line 266)
* reverse <1>: Paths and guides. (line 183)
-* reverse <2>: Paths and guides. (line 382)
+* reverse <2>: Paths and guides. (line 383)
* reverse <3>: Arrays. (line 145)
* reverse <4>: three. (line 566)
* rewind: Files. (line 97)
@@ -10215,13 +10388,13 @@ Index
* Riemann zeta function: Mathematical functions.
(line 48)
* Right: graph. (line 273)
-* RightSide: label. (line 60)
+* RightSide: label. (line 67)
* RightTicks: graph. (line 161)
* RightTicks <1>: graph. (line 234)
* RightView: three. (line 452)
-* Rotate: label. (line 36)
+* Rotate: label. (line 43)
* rotate: three. (line 520)
-* Rotate(pair z): label. (line 39)
+* Rotate(pair z): label. (line 46)
* round: Mathematical functions.
(line 26)
* roundcap: Pens. (line 139)
@@ -10231,13 +10404,13 @@ Index
* RPM: UNIX binary distributions.
(line 6)
* runtime imports: Import. (line 102)
-* Russian: Pens. (line 238)
+* Russian: Pens. (line 291)
* S: Labels. (line 18)
-* safe: Options. (line 211)
+* safe: Options. (line 209)
* save: Frames and pictures.
- (line 288)
+ (line 275)
* saveline: Files. (line 139)
-* Scale: label. (line 45)
+* Scale: label. (line 52)
* scale: Pens. (line 123)
* scale <1>: Transforms. (line 34)
* scale <2>: Transforms. (line 36)
@@ -10254,7 +10427,7 @@ Index
* search <1>: Arrays. (line 172)
* search paths: Search paths. (line 6)
* Seascape: Frames and pictures.
- (line 110)
+ (line 97)
* secondary axis: graph. (line 854)
* secondaryX: graph. (line 854)
* secondaryY: graph. (line 854)
@@ -10271,7 +10444,7 @@ Index
* sgn: Mathematical functions.
(line 26)
* shading: fill. (line 32)
-* Shift: label. (line 33)
+* Shift: label. (line 40)
* shift: Transforms. (line 26)
* shift <1>: Transforms. (line 28)
* shift <2>: Transforms. (line 46)
@@ -10279,14 +10452,15 @@ Index
* shiftless: Transforms. (line 46)
* shininess: three. (line 66)
* shipout: Frames and pictures.
- (line 91)
+ (line 78)
* showtarget: three. (line 405)
* Si: Mathematical functions.
(line 48)
* signedint: Files. (line 80)
* signedint <1>: Files. (line 93)
-* SimpleHead: draw. (line 26)
+* SimpleHead: draw. (line 50)
* simplex: simplex. (line 6)
+* simplex2: simplex2. (line 6)
* simpson: Mathematical functions.
(line 82)
* sin: Mathematical functions.
@@ -10305,15 +10479,15 @@ Index
* SixViewsUS: three. (line 467)
* size: Figure size. (line 6)
* size <1>: Paths and guides. (line 81)
-* size <2>: Paths and guides. (line 370)
+* size <2>: Paths and guides. (line 371)
* size <3>: Frames and pictures.
- (line 48)
+ (line 35)
* size <4>: Frames and pictures.
- (line 74)
+ (line 61)
* size <5>: three. (line 566)
* size <6>: Options. (line 188)
* size3: three. (line 330)
-* Slant: label. (line 42)
+* Slant: label. (line 49)
* slant: Transforms. (line 38)
* sleep: Data types. (line 376)
* slice: Paths and guides. (line 251)
@@ -10363,19 +10537,19 @@ Index
* string <1>: Data types. (line 312)
* stroke: fill. (line 36)
* stroke <1>: clip. (line 6)
-* strokepath: Paths and guides. (line 309)
+* strokepath: Paths and guides. (line 310)
* strptime: Data types. (line 330)
* struct: Structures. (line 6)
* structures: Structures. (line 6)
* subpath: Paths and guides. (line 186)
* subpath <1>: three. (line 566)
* subpictures: Frames and pictures.
- (line 113)
+ (line 100)
* substr: Data types. (line 262)
* sum: Arrays. (line 220)
* superpath: Paths. (line 23)
-* Suppress: Pens. (line 367)
-* SuppressQuiet: Pens. (line 371)
+* Suppress: Pens. (line 420)
+* SuppressQuiet: Pens. (line 424)
* surface: three. (line 46)
* surface <1>: three. (line 104)
* surface <2>: three. (line 128)
@@ -10384,7 +10558,7 @@ Index
* surface <5>: graph3. (line 128)
* SVG: Options. (line 193)
* system: Data types. (line 354)
-* system <1>: Options. (line 211)
+* system <1>: Options. (line 209)
* syzygy: syzygy. (line 6)
* tab: Files. (line 65)
* tab completion: Drawing in interactive mode.
@@ -10400,24 +10574,24 @@ Index
* template: Templated imports. (line 6)
* tension: Bezier curves. (line 56)
* tension <1>: three. (line 6)
-* tensionSpecifier: Paths and guides. (line 402)
+* tensionSpecifier: Paths and guides. (line 403)
* tensor product shading: fill. (line 78)
* tensorshade: fill. (line 78)
* tessellation: three. (line 154)
* tex: Frames and pictures.
- (line 305)
+ (line 292)
* tex <1>: Options. (line 188)
-* TeX fonts: Pens. (line 213)
+* TeX fonts: Pens. (line 266)
* TeX string: Data types. (line 208)
* texcommand: Configuring. (line 69)
-* TeXHead: draw. (line 26)
+* TeXHead: draw. (line 50)
* TeXHead3: three. (line 632)
* texpath: Configuring. (line 69)
-* texpath <1>: label. (line 113)
+* texpath <1>: label. (line 122)
* texpreamble: Frames and pictures.
- (line 314)
+ (line 301)
* texreset: Frames and pictures.
- (line 318)
+ (line 305)
* textbook graph: graph. (line 361)
* tgz: UNIX binary distributions.
(line 6)
@@ -10433,8 +10607,8 @@ Index
* Ticks: graph. (line 161)
* Ticks <1>: graph. (line 234)
* tildeframe: markers. (line 24)
-* tile: Pens. (line 285)
-* tilings: Pens. (line 271)
+* tile: Pens. (line 338)
+* tilings: Pens. (line 324)
* time: Data types. (line 321)
* time <1>: Data types. (line 346)
* time <2>: math. (line 26)
@@ -10448,7 +10622,7 @@ Index
* transform: Transforms. (line 6)
* transform <1>: three. (line 541)
* transform3: three. (line 504)
-* transparency: Pens. (line 254)
+* transparency: Pens. (line 307)
* transparent: three. (line 97)
* transpose: Arrays. (line 212)
* transpose <1>: Arrays. (line 215)
@@ -10461,22 +10635,21 @@ Index
* trigonometric integrals: Mathematical functions.
(line 48)
* triple: Data types. (line 137)
-* TrueMargin: draw. (line 42)
+* TrueMargin: draw. (line 90)
* TrueMargin3: three. (line 648)
* tube: three. (line 166)
* tube <1>: tube. (line 6)
* tutorial: Tutorial. (line 6)
-* type1cm: Pens. (line 192)
+* type1cm: Pens. (line 245)
* typedef: Data types. (line 385)
* typedef <1>: Functions. (line 46)
* U3D: embed. (line 22)
* undefined: Paths and guides. (line 283)
-* UnFill: draw. (line 26)
* unfill: fill. (line 110)
+* UnFill: Frames and pictures.
+ (line 152)
* UnFill <1>: Frames and pictures.
- (line 165)
-* UnFill <2>: Frames and pictures.
- (line 168)
+ (line 155)
* uniform: Arrays. (line 154)
* uninstall: Uninstall. (line 6)
* unique: math. (line 59)
@@ -10491,7 +10664,7 @@ Index
(line 39)
* unitsize: Figure size. (line 39)
* unitsize <1>: Frames and pictures.
- (line 69)
+ (line 56)
* UNIX binary distributions: UNIX binary distributions.
(line 6)
* unpacking: Rest arguments. (line 39)
@@ -10499,12 +10672,12 @@ Index
* up: three. (line 405)
* update: Files. (line 38)
* UpsideDown: Frames and pictures.
- (line 103)
+ (line 90)
* UpsideDown <1>: Frames and pictures.
- (line 111)
+ (line 98)
* URL: Import. (line 94)
* usepackage: Frames and pictures.
- (line 321)
+ (line 308)
* user coordinates: Figure size. (line 39)
* user-defined operators: User-defined operators.
(line 6)
@@ -10521,7 +10694,7 @@ Index
* vectorfield3: graph3. (line 167)
* vectorization: Arrays. (line 343)
* verbatim: Frames and pictures.
- (line 297)
+ (line 284)
* vertex-dependent colors: three. (line 119)
* Vertical: flowchart. (line 77)
* Viewport: three. (line 76)
@@ -10531,14 +10704,15 @@ Index
* viewportwidth: LaTeX usage. (line 47)
* views: three. (line 279)
* vim: Editing modes. (line 32)
-* virtual functions: Structures. (line 182)
+* virtual functions: Structures. (line 124)
* void: Data types. (line 10)
* W: Labels. (line 18)
+* warn: Configuring. (line 79)
* WebGL: three. (line 233)
* whatever: Paths and guides. (line 246)
* Wheel: palette. (line 22)
* wheel mouse: GUI. (line 6)
-* while: Programming. (line 48)
+* while: Programming. (line 49)
* White: three. (line 76)
* white-space string delimiter mode: Arrays. (line 374)
* width: LaTeX usage. (line 47)
@@ -10589,8 +10763,6 @@ Index
* YZZero: graph3. (line 21)
* Z: three. (line 345)
* zaxis3: graph3. (line 7)
-* zeroTransform: Transforms. (line 44)
-* zerowinding: Pens. (line 164)
* zero_Ai: Mathematical functions.
(line 48)
* zero_Ai_deriv: Mathematical functions.
@@ -10601,6 +10773,8 @@ Index
(line 48)
* zero_J: Mathematical functions.
(line 48)
+* zeroTransform: Transforms. (line 44)
+* zerowinding: Pens. (line 164)
* zeta: Mathematical functions.
(line 48)
* zpart: Data types. (line 191)
@@ -10612,154 +10786,158 @@ Index

Tag Table:
-Node: Top575
-Node: Description7476
-Node: Installation11883
-Node: UNIX binary distributions12969
-Node: MacOS X binary distributions14146
-Node: Microsoft Windows14758
-Node: Configuring15999
-Node: Search paths20514
-Node: Compiling from UNIX source21608
-Node: Editing modes24913
-Node: Git27493
-Node: Uninstall28016
-Node: Tutorial28370
-Node: Drawing in batch mode29241
-Node: Drawing in interactive mode30165
-Node: Figure size31235
-Node: Labels32922
-Node: Paths33814
-Ref: unitcircle34454
-Node: Drawing commands36447
-Node: draw38317
-Ref: arrows39583
-Node: fill45454
-Ref: gradient shading46536
-Node: clip51382
-Node: label52159
-Ref: Label52807
-Node: Bezier curves58904
-Node: Programming62874
-Ref: array iteration64655
-Node: Data types64822
-Ref: format76484
-Node: Paths and guides81156
-Ref: circle81418
-Ref: extension91770
-Node: Pens98944
-Ref: fillrule107085
-Ref: basealign108043
-Ref: transparency111833
-Ref: makepen115557
-Ref: overwrite116463
-Node: Transforms117723
-Node: Frames and pictures119820
-Ref: envelope121038
-Ref: size122155
-Ref: unitsize123222
-Ref: shipout124351
-Ref: filltype126737
-Ref: add130366
-Ref: add about131364
-Ref: tex134482
-Node: Files135393
-Ref: cd136486
-Ref: scroll141634
-Node: Variable initializers144744
-Node: Structures147625
-Node: Operators155455
-Node: Arithmetic & logical155769
-Node: Self & prefix operators158323
-Node: User-defined operators159181
-Node: Implicit scaling160118
-Node: Functions160681
-Ref: stack overflow163826
-Node: Default arguments164112
-Node: Named arguments164884
-Node: Rest arguments167538
-Node: Mathematical functions170695
-Node: Arrays175856
-Ref: sort183954
-Ref: tridiagonal187512
-Ref: solve188827
-Node: Slices193147
-Node: Casts197167
-Node: Import199581
-Node: Templated imports205225
-Node: Static207316
-Node: LaTeX usage210274
-Node: Base modules216875
-Node: plain219382
-Node: simplex220088
-Node: math220369
-Node: interpolate223302
-Node: geometry223593
-Node: trembling224289
-Node: stats224566
-Node: patterns224837
-Node: markers225080
-Node: map226978
-Node: tree227414
-Node: binarytree227598
-Node: drawtree228273
-Node: syzygy228482
-Node: feynman228764
-Node: roundedpath229050
-Node: animation229340
-Ref: animate229789
-Node: embed230965
-Node: slide231975
-Node: MetaPost232318
-Node: babel233094
-Node: labelpath233342
-Node: labelpath3234206
-Node: annotate234533
-Node: CAD235023
-Node: graph235341
-Ref: ticks242957
-Ref: pathmarkers257145
-Ref: marker257619
-Ref: markuniform257989
-Ref: errorbars259896
-Ref: automatic scaling265073
-Node: palette276895
-Ref: images277017
-Ref: image281481
-Ref: logimage282002
-Ref: penimage283112
-Ref: penfunctionimage283375
-Node: three284151
-Ref: PostScript3D316547
-Node: obj318341
-Node: graph3318602
-Ref: GaussianSurface324473
-Node: grid3325651
-Node: solids326487
-Node: tube327511
-Node: flowchart329895
-Node: contour334614
-Node: contour3341216
-Node: smoothcontour3341540
-Node: slopefield343313
-Node: ode344858
-Node: Options345127
-Ref: configuration file353565
-Ref: settings353565
-Ref: texengines354915
-Ref: convert354915
-Node: Interactive mode358471
-Ref: history360700
-Node: GUI362073
-Node: GUI installation362643
-Node: GUI usage363639
-Node: Command-Line Interface364706
-Node: Language server protocol366194
-Node: PostScript to Asymptote367675
-Node: Help368505
-Node: Debugger370235
-Node: Credits372083
-Node: Index373344
+Node: Top573
+Node: Description7668
+Node: Installation12075
+Node: UNIX binary distributions13220
+Node: MacOS X binary distributions14395
+Node: Microsoft Windows15007
+Node: Configuring16247
+Node: Search paths20762
+Node: Compiling from UNIX source21854
+Node: Editing modes25157
+Node: Git27735
+Node: Building the documentation28258
+Node: Uninstall28824
+Node: Tutorial29180
+Node: Drawing in batch mode30051
+Node: Drawing in interactive mode30975
+Node: Figure size32046
+Node: Labels33733
+Node: Paths34625
+Ref: unitcircle35265
+Node: Drawing commands37258
+Node: draw39126
+Ref: arrows40402
+Node: fill46708
+Ref: gradient shading47790
+Node: clip52636
+Node: label53413
+Ref: Label54327
+Ref: baseline58241
+Ref: envelope58977
+Node: Bezier curves60529
+Node: Programming64497
+Ref: array iteration66357
+Node: Data types66524
+Ref: format78182
+Node: Paths and guides82850
+Ref: circle83112
+Ref: extension93464
+Node: Pens100657
+Ref: fillrule108796
+Ref: basealign109754
+Ref: transparency115119
+Ref: makepen118840
+Ref: overwrite119746
+Node: Transforms121005
+Node: Frames and pictures123100
+Ref: size124772
+Ref: unitsize125839
+Ref: shipout126968
+Ref: filltype129354
+Ref: add132983
+Ref: add about133956
+Ref: tex137074
+Node: Deferred drawing137985
+Node: Files141276
+Ref: cd142366
+Ref: scroll147512
+Node: Variable initializers150621
+Node: Structures153502
+Node: Operators158816
+Node: Arithmetic & logical159132
+Node: Self & prefix operators161688
+Node: User-defined operators162548
+Node: Implicit scaling163487
+Node: Functions164050
+Ref: stack overflow167195
+Node: Default arguments167481
+Node: Named arguments168253
+Node: Rest arguments170903
+Node: Mathematical functions174060
+Node: Arrays180924
+Ref: sort189022
+Ref: tridiagonal192580
+Ref: solve193895
+Node: Slices198215
+Node: Casts202235
+Node: Import204649
+Node: Templated imports210291
+Node: Static212185
+Node: LaTeX usage215143
+Node: Base modules221744
+Node: plain224309
+Node: simplex225015
+Node: simplex2225219
+Node: math225488
+Node: interpolate228419
+Node: geometry228710
+Node: trembling229406
+Node: stats229683
+Node: patterns229954
+Node: markers230197
+Node: map232097
+Node: tree232533
+Node: binarytree232717
+Node: drawtree233392
+Node: syzygy233601
+Node: feynman233883
+Node: roundedpath234169
+Node: animation234459
+Ref: animate234907
+Node: embed236083
+Node: slide237093
+Node: MetaPost237436
+Node: babel238212
+Node: labelpath238460
+Node: labelpath3239324
+Node: annotate239651
+Node: CAD240141
+Node: graph240459
+Ref: ticks248075
+Ref: pathmarkers262263
+Ref: marker262737
+Ref: markuniform263103
+Ref: errorbars265010
+Ref: automatic scaling270187
+Node: palette282007
+Ref: images282129
+Ref: image286593
+Ref: logimage287114
+Ref: penimage288224
+Ref: penfunctionimage288487
+Node: three289263
+Ref: PostScript3D321652
+Node: obj323446
+Node: graph3323707
+Ref: GaussianSurface329578
+Node: grid3330756
+Node: solids331592
+Node: tube332616
+Node: flowchart334999
+Node: contour339718
+Node: contour3346318
+Node: smoothcontour3346642
+Node: slopefield348409
+Node: ode349954
+Node: Options350223
+Ref: configuration file358661
+Ref: settings358661
+Ref: texengines360009
+Ref: magick360009
+Node: Interactive mode363404
+Ref: history365633
+Node: GUI367004
+Node: GUI installation367574
+Node: GUI usage368570
+Node: Command-Line Interface369637
+Node: Language server protocol371125
+Node: PostScript to Asymptote372606
+Node: Help373433
+Node: Debugger375163
+Node: Credits377011
+Node: Index378268

End Tag Table
diff --git a/graphics/asymptote/entry.cc b/graphics/asymptote/entry.cc
index 7a780fdd56..e6e3a031a0 100644
--- a/graphics/asymptote/entry.cc
+++ b/graphics/asymptote/entry.cc
@@ -526,7 +526,7 @@ void venv::namevalue::replaceType(ty *new_t, ty *old_t) {
}
#ifdef DEBUG_CACHE
-void venv::namevalue::popType(ty *s)
+void venv::namevalue::popType(astType *s)
#else
void venv::namevalue::popType()
#endif
diff --git a/graphics/asymptote/entry.h b/graphics/asymptote/entry.h
index e11ad59940..03cdcef4e2 100644
--- a/graphics/asymptote/entry.h
+++ b/graphics/asymptote/entry.h
@@ -395,7 +395,7 @@ class venv {
void replaceType(ty *new_t, ty *old_t);
#if DEBUG_CACHE
- void popType(ty *tnew);
+ void popType(astType *tnew);
#else
void popType();
#endif
diff --git a/graphics/asymptote/env.cc b/graphics/asymptote/env.cc
index f55be74fc9..fc8c4c3899 100644
--- a/graphics/asymptote/env.cc
+++ b/graphics/asymptote/env.cc
@@ -214,14 +214,17 @@ record *env::getModule(symbol id, string filename)
return ge.getModule(id, filename);
}
-record *env::getTemplatedModule(symbol id,
+record *env::getTemplatedModule(symbol index,
string filename,
- string index,
mem::vector<absyntax::namedTyEntry*>* args,
- trans::frame *parent)
+ coenv& e)
{
- return ge.getTemplatedModule(id, filename, index, args, parent);
+ return ge.getTemplatedModule(index, filename, args, e);
}
+record *env::getLoadedModule(symbol id)
+{
+ return ge.getLoadedModule(id);
+}
}
diff --git a/graphics/asymptote/env.h b/graphics/asymptote/env.h
index a63ef9c375..1cf628f095 100644
--- a/graphics/asymptote/env.h
+++ b/graphics/asymptote/env.h
@@ -30,6 +30,7 @@ using types::function;
using types::record;
class genv;
+class coenv;
// Keeps track of the name bindings of variables and types. This is used for
// the fields of a record, whereas the derived class env is used for
@@ -185,12 +186,11 @@ public:
~env();
record *getModule(symbol id, string filename);
- record *getTemplatedModule(symbol id,
+ record *getTemplatedModule(symbol index,
string filename,
- string index,
mem::vector<absyntax::namedTyEntry*> *args,
- trans::frame *parent
- );
+ coenv& e);
+ record *getLoadedModule(symbol id);
};
} // namespace trans
diff --git a/graphics/asymptote/errormsg.cc b/graphics/asymptote/errormsg.cc
index 3870caba28..c9248a6299 100644
--- a/graphics/asymptote/errormsg.cc
+++ b/graphics/asymptote/errormsg.cc
@@ -7,6 +7,7 @@
#include <cstdio>
#include <cstdlib>
+#include <regex>
#include "errormsg.h"
#include "interact.h"
@@ -33,6 +34,7 @@ ostream& operator<< (ostream& out, const position& pos)
while(count > 0 && getline(fin,s)) {
count--;
}
+ s=std::regex_replace(s,std::regex("\t")," ");
out << s << endl;
for(size_t i=1; i < pos.column; ++i)
out << " ";
diff --git a/graphics/asymptote/examples/slope.asy b/graphics/asymptote/examples/slope.asy
index 832f8c13fc..46cf11be43 100644
--- a/graphics/asymptote/examples/slope.asy
+++ b/graphics/asymptote/examples/slope.asy
@@ -37,7 +37,7 @@ real order=3;
for(int i=0; i < n-1; ++i) {
real dt=(b-a)*lambda^(n-i);
- Solution S=integrate(Y0,L,F,a,b,dt,dynamic=false,0.0002,0.0004,ERK3BS,verbose=false);
+ Solution S=integrate(Y0,G,a,b,dt,dynamic=false,0.0002,0.0004,RK3BS,verbose=false);
real maxnorm=0;
Solution E=integrate(Y0,G,a,b,1e-2*dt,dynamic=false,0.0002,0.0004,RK5);
diff --git a/graphics/asymptote/examples/teapot.asy b/graphics/asymptote/examples/teapot.asy
index 847ffd234d..7a12cc3a66 100644
--- a/graphics/asymptote/examples/teapot.asy
+++ b/graphics/asymptote/examples/teapot.asy
@@ -202,6 +202,7 @@ triple[][][] Q0={
}
};
+
surface regularize(triple[][] P, real fraction=0.02)
{
triple[][][] B=hsplit(P,fraction);
@@ -215,7 +216,8 @@ surface regularize(triple[][] P, real fraction=0.02)
surface S=surface(Q);
for(triple[][] q : Q0)
- S.append(regularize(q));
+ // S.append(regularize(q));
+ S.append(surface(patch(q)));
pen color;
real metallic;
diff --git a/graphics/asymptote/exp.h b/graphics/asymptote/exp.h
index d1a60e96dd..152df76ded 100644
--- a/graphics/asymptote/exp.h
+++ b/graphics/asymptote/exp.h
@@ -887,13 +887,13 @@ public:
};
class castExp : public exp {
- ty *target;
+ astType *target;
exp *castee;
types::ty *tryCast(coenv &e, types::ty *t, types::ty *s,
symbol csym);
public:
- castExp(position pos, ty *target, exp *castee)
+ castExp(position pos, astType *target, exp *castee)
: exp(pos), target(target), castee(castee) {}
void prettyprint(ostream &out, Int indent) override;
diff --git a/graphics/asymptote/fileio.h b/graphics/asymptote/fileio.h
index f64ce71d7c..e23bf343f6 100644
--- a/graphics/asymptote/fileio.h
+++ b/graphics/asymptote/fileio.h
@@ -92,6 +92,9 @@ public:
bool Standard() {return standard;}
+ bool enabled() {return !standard || settings::verbose > 1 ||
+ interact::interactive || !settings::getSetting<bool>("quiet");}
+
void standardEOF() {
#if defined(HAVE_LIBREADLINE) && defined(HAVE_LIBCURSES)
cout << endl;
@@ -510,9 +513,6 @@ public:
return 0;
}
- bool enabled() {return !standard || settings::verbose > 1 ||
- interact::interactive || !settings::getSetting<bool>("quiet");}
-
void write(bool val) {*stream << (val ? "true " : "false ");}
void write(Int val) {*stream << val;}
void write(double val) {*stream << val;}
diff --git a/graphics/asymptote/fundec.h b/graphics/asymptote/fundec.h
index bfd10f33d3..8ecf086f58 100644
--- a/graphics/asymptote/fundec.h
+++ b/graphics/asymptote/fundec.h
@@ -15,14 +15,14 @@
namespace absyntax {
class formal : public absyn {
- ty *base;
+ astType *base;
decidstart *start;
bool Explicit;
varinit *defval;
bool keywordOnly;
public:
- formal(position pos, ty *base, decidstart *start=0, varinit *defval=0,
+ formal(position pos, astType *base, decidstart *start=0, varinit *defval=0,
bool Explicit= false, bool keywordOnly=false)
: absyn(pos), base(base), start(start), Explicit(Explicit),
defval(defval), keywordOnly(keywordOnly) {}
@@ -38,7 +38,7 @@ public:
types::ty *getType(coenv &e, bool tacit=false);
- absyntax::ty *getAbsyntaxType() { return base; }
+ absyntax::astType *getAbsyntaxType() { return base; }
virtual void addOps(coenv &e, record *r);
@@ -63,9 +63,9 @@ public:
};
struct tySymbolPair : public gc {
- absyntax::ty* ty;
+ absyntax::astType* ty;
symbol sym;
- tySymbolPair(absyntax::ty* ty, symbol sym) : ty(ty), sym(sym) {}
+ tySymbolPair(absyntax::astType* ty, symbol sym) : ty(ty), sym(sym) {}
};
class formals : public absyn {
@@ -141,7 +141,7 @@ public:
};
class fundef : public exp {
- ty *result;
+ astType *result;
formals *params;
stm *body;
@@ -152,7 +152,7 @@ class fundef : public exp {
friend class fundec;
public:
- fundef(position pos, ty *result, formals *params, stm *body)
+ fundef(position pos, astType *result, formals *params, stm *body)
: exp(pos), result(result), params(params), body(body), id() {}
virtual void prettyprint(ostream &out, Int indent) override;
@@ -176,7 +176,7 @@ class fundec : public dec {
fundef fun;
public:
- fundec(position pos, ty *result, symbol id, formals *params, stm *body)
+ fundec(position pos, astType *result, symbol id, formals *params, stm *body)
: dec(pos), id(id), fun(pos, result, params, body)
{ fun.id = id; }
diff --git a/graphics/asymptote/generate_enums.py b/graphics/asymptote/generate_enums.py
index 6558243745..2843b9c3fe 100755
--- a/graphics/asymptote/generate_enums.py
+++ b/graphics/asymptote/generate_enums.py
@@ -11,7 +11,7 @@
# Written by Supakorn "Jamie" Rassameemasmuang <jamievlin@outlook.com>
from typing import List, Tuple, Any, Union
-from datetime import datetime
+from datetime import datetime, timezone
import io
import argparse
import os
@@ -50,10 +50,8 @@ def create_enums(filename: str) -> List[Union[Tuple[str, int, str], Tuple[str, i
def datetime_now():
- return datetime.utcfromtimestamp(
- int(os.environ.get('SOURCE_DATE_EPOCH', time.time()))
- )
-
+ return datetime.fromtimestamp(
+ int(os.environ.get('SOURCE_DATE_EPOCH', time.time())),tz=timezone.utc)
def generate_enum_cpp(outname, enums, name, comment=None, *args, **kwargs):
with io.open(outname, 'w') as fil:
diff --git a/graphics/asymptote/genv.cc b/graphics/asymptote/genv.cc
index fe8e1b5cab..65e132ef56 100644
--- a/graphics/asymptote/genv.cc
+++ b/graphics/asymptote/genv.cc
@@ -32,7 +32,6 @@
using namespace types;
using settings::getSetting;
using settings::Setting;
-using vm::importIndex_t;
// Dynamic loading of external libraries.
types::record *transExternalModule(
@@ -46,7 +45,7 @@ genv::genv()
{
// Add settings as a module. This is so that the init file ~/.asy/config.asy
// can set settings.
- imap[importIndex_t("settings","")]=settings::getSettingsModule();
+ imap[symbol::literalTrans("settings")]=settings::getSettingsModule();
// Translate plain in advance, if we're using autoplain.
if(getSetting<bool>("autoplain")) {
@@ -58,7 +57,7 @@ genv::genv()
Setting("autoplain")=true;
}
#ifdef HAVE_LIBGSL
- imap[importIndex_t("gsl","")]=trans::getGSLModule();
+ imap[symbol::literalTrans("gsl")]=trans::getGSLModule();
#endif
}
@@ -93,7 +92,7 @@ record *genv::loadTemplatedModule(
symbol id,
string filename,
mem::vector<absyntax::namedTyEntry*> *args,
- trans::frame *parent
+ coenv& e
) {
// Hackish way to load an external library.
#if 0
@@ -109,7 +108,7 @@ record *genv::loadTemplatedModule(
em.sync();
- record *r=ast->transAsTemplatedFile(*this, id, args, parent);
+ record *r=ast->transAsTemplatedFile(*this, id, args, e);
inTranslation.remove(filename);
@@ -130,46 +129,48 @@ void genv::checkRecursion(string filename) {
record *genv::getModule(symbol id, string filename) {
checkRecursion(filename);
- importIndex_t Index(filename,"");
- record *r=imap[Index];
+ symbol index=symbol::literalTrans(filename);
+ record *r=imap[index];
if (r)
return r;
else {
record *r=loadModule(id, filename);
// Don't add an erroneous module to the dictionary in interactive mode, as
// the user may try to load it again.
- if (!interact::interactive || !em.errors())
- imap[Index]=r;
+ if (!interact::interactive || !em.errors()) {
+ imap[index]=r;
+ }
return r;
}
}
record *genv::getTemplatedModule(
- symbol id,
+ symbol index,
string filename,
- string sigHandle,
mem::vector<absyntax::namedTyEntry*>* args,
- frame *parent
+ coenv& e
) {
checkRecursion(filename);
- importIndex_t Index(filename,sigHandle);
-
- record *r=imap[Index];
+ record *r=imap[index];
if (r)
return r;
else {
- record *r=loadTemplatedModule(id, filename, args, parent);
+ record *r=loadTemplatedModule(index, filename, args, e);
// Don't add an erroneous module to the dictionary in interactive mode, as
// the user may try to load it again.
- if (!interact::interactive || !em.errors())
- imap[Index]=r;
+ if (!interact::interactive || !em.errors()) {
+ imap[index]=r;
+ }
return r;
}
}
+record *genv::getLoadedModule(symbol id) {
+ return imap[id];
+}
typedef vm::stack::importInitMap importInitMap;
@@ -179,8 +180,8 @@ importInitMap *genv::getInitMap()
genv &ge;
initMap(genv &ge)
: ge(ge) {}
- lambda *operator[](importIndex_t s) {
- record *r=ge.imap[s];
+ lambda *operator[](string s) {
+ record *r=ge.imap[symbol::literalTrans(s)];
return r ? r->getInit() : 0;
}
};
diff --git a/graphics/asymptote/genv.h b/graphics/asymptote/genv.h
index 7587d9aee5..f78e9c59f2 100644
--- a/graphics/asymptote/genv.h
+++ b/graphics/asymptote/genv.h
@@ -31,7 +31,7 @@ namespace trans {
class genv : public gc {
// The initializer functions for imports, indexed by filename.
- typedef mem::map<vm::importIndex_t,record *> importMap;
+ typedef mem::map<symbol,record *> importMap;
importMap imap;
// List of modules in translation. Used to detect and prevent infinite
@@ -48,21 +48,21 @@ class genv : public gc {
symbol id,
string filename,
mem::vector<absyntax::namedTyEntry*> *args,
- trans::frame *parent
+ coenv& e
);
public:
genv();
// Get an imported module, translating if necessary.
- record *getModule(symbol name, string s);
+ record *getModule(symbol name, string filename);
record *getTemplatedModule(
- symbol id,
+ symbol index,
string filename,
- string sigHandle,
mem::vector<absyntax::namedTyEntry*> *args,
- frame *parent
+ coenv& e
);
+ record *getLoadedModule(symbol index);
// Uses the filename->record map to build a filename->initializer map to be
// used at runtime.
diff --git a/graphics/asymptote/glew.c b/graphics/asymptote/glew.c
index f6b50465b9..a6009a40e8 100644
--- a/graphics/asymptote/glew.c
+++ b/graphics/asymptote/glew.c
@@ -6,9 +6,16 @@
#define _WIN32
#endif
+#ifndef GLEW_INCLUDE
+#include <GL/glew.h>
+#else
+#include GLEW_INCLUDE
+#endif
+
#ifdef HAVE_LIBGL
#ifdef HAVE_LIBOSMESA
#define GLEW_OSMESA
+#define APIENTRY
#endif
#include "GL/glew.c"
diff --git a/graphics/asymptote/glrender.cc b/graphics/asymptote/glrender.cc
index d360d35a8b..c64dc26d0d 100644
--- a/graphics/asymptote/glrender.cc
+++ b/graphics/asymptote/glrender.cc
@@ -1827,6 +1827,10 @@ void init()
glutInit(&argc,argv);
fpu_trap(settings::trap());
+
+#ifdef FREEGLUT
+ glutSetOption(GLUT_ACTION_ON_WINDOW_CLOSE,GLUT_ACTION_GLUTMAINLOOP_RETURNS);
+#endif
screenWidth=glutGet(GLUT_SCREEN_WIDTH);
screenHeight=glutGet(GLUT_SCREEN_HEIGHT);
#endif
@@ -2253,6 +2257,8 @@ void glrender(const string& prefix, const picture *pic, const string& format,
#endif
glutMainLoop();
+ cout << endl;
+ exitHandler(0);
#endif // HAVE_LIBGLUT
} else {
if(glthread) {
@@ -2769,7 +2775,8 @@ void drawBuffers()
drawTriangle();
if(transparent) {
- gl::copied=true;
+ if(camp::ssbo)
+ gl::copied=true;
if(interlock) resizeFragmentBuffer();
drawTransparent();
}
diff --git a/graphics/asymptote/glrender.h b/graphics/asymptote/glrender.h
index 6b99611dfe..1c140584a9 100644
--- a/graphics/asymptote/glrender.h
+++ b/graphics/asymptote/glrender.h
@@ -44,6 +44,9 @@
#endif
#ifdef HAVE_LIBOSMESA
+#ifndef APIENTRY
+#define APIENTRY
+#endif
#include <GL/osmesa.h>
#endif
@@ -61,6 +64,9 @@
#endif
#ifdef HAVE_LIBOSMESA
+#ifndef APIENTRY
+#define APIENTRY
+#endif
#include <GL/osmesa.h>
#endif
diff --git a/graphics/asymptote/item.h b/graphics/asymptote/item.h
index 70d4923445..28bba31b41 100644
--- a/graphics/asymptote/item.h
+++ b/graphics/asymptote/item.h
@@ -115,15 +115,19 @@ public:
item(Int i)
: kind(&typeid(Int)), i(i) {}
+#ifndef intIsInt
item(int i)
: kind(&typeid(Int)), i(i) {}
+#endif
item(double x)
: kind(&typeid(double)), x(x) {}
item(bool b)
: kind(&typeid(bool)), b(b) {}
+#ifndef intIsInt
item& operator= (int a)
{ kind=&typeid(Int); i=a; return *this; }
+#endif
item& operator= (unsigned int a)
{ kind=&typeid(Int); i=a; return *this; }
item& operator= (Int a)
@@ -197,29 +201,29 @@ private:
#ifdef SIMPLE_FRAME
// In the simple implementation, a frame is just an array of items.
-typedef item frame;
+typedef item vmFrame;
#else
-class frame : public gc {
+class vmFrame : public gc {
#ifdef DEBUG_FRAME
string name;
- Int parentIndex;
+ size_t parentIndex;
#endif
- typedef mem::vector<item> internal_vars_t;
+ using internal_vars_t = mem::vector<item>;
internal_vars_t vars;
// Allow the stack direct access to vars.
friend class stack;
public:
#ifdef DEBUG_FRAME
- frame(string name, Int parentIndex, size_t size)
+ vmFrame(string name, size_t parentIndex, size_t size)
: name(name), parentIndex(parentIndex), vars(size)
{}
string getName() { return name; }
- Int getParentIndex() { return parentIndex; }
+ size_t getParentIndex() { return parentIndex; }
#else
- frame(size_t size)
+ vmFrame(size_t size)
: vars(size)
{}
#endif
@@ -248,12 +252,6 @@ inline T get(const item& it)
}
template <>
-inline int get<int>(const item&)
-{
- throw vm::bad_item_value();
-}
-
-template <>
inline Int get<Int>(const item& it)
{
#if COMPACT
diff --git a/graphics/asymptote/main.cc b/graphics/asymptote/main.cc
index 0728ebcdaf..5f440c24c7 100644
--- a/graphics/asymptote/main.cc
+++ b/graphics/asymptote/main.cc
@@ -54,6 +54,12 @@
#include "stack.h"
+#ifdef HAVE_LIBCURSES
+#ifdef HAVE_LIBREADLINE
+#include <readline/readline.h>
+#endif
+#endif
+
using namespace settings;
using interact::interactive;
@@ -245,6 +251,9 @@ void *asymain(void *A)
void exitHandler(int)
{
+#if defined(HAVE_READLINE) && defined(HAVE_LIBCURSES)
+ rl_cleanup_after_signal();
+#endif
exit(returnCode());
}
diff --git a/graphics/asymptote/memory.h b/graphics/asymptote/memory.h
index 5c5d7a41d0..3ddc2aaea1 100644
--- a/graphics/asymptote/memory.h
+++ b/graphics/asymptote/memory.h
@@ -194,7 +194,7 @@ typedef std::basic_stringbuf<char,std::char_traits<char>,
inline void compact(int x) {GC_set_dont_expand(x);}
inline std::string stdString(string s) {return std::string(s.c_str());}
#else
-inline void compact(int x) {}
+inline void compact(int) {}
typedef std::string string;
typedef std::stringstream stringstream;
typedef std::istringstream istringstream;
diff --git a/graphics/asymptote/newexp.cc b/graphics/asymptote/newexp.cc
index c124293928..7d8efbd138 100644
--- a/graphics/asymptote/newexp.cc
+++ b/graphics/asymptote/newexp.cc
@@ -44,7 +44,7 @@ bool newRecordExp::encodeLevel(position pos, coenv &e, trans::tyEntry *ent)
if (ent->v) {
// Put the record on the stack. For instance, in code like
- // import imp;
+ // access imp;
// new imp.t;
// we are putting the instance of imp on the stack, so we can use it to
// allocate an instance of imp.t.
diff --git a/graphics/asymptote/newexp.h b/graphics/asymptote/newexp.h
index d386b18100..cec21abf7b 100644
--- a/graphics/asymptote/newexp.h
+++ b/graphics/asymptote/newexp.h
@@ -19,11 +19,11 @@ namespace absyntax {
typedef fundef newFunctionExp;
class newRecordExp : public exp {
- ty *result;
+ astType *result;
- static bool encodeLevel(position pos, coenv &e, trans::tyEntry *ent);
public:
- newRecordExp(position pos, ty *result)
+ static bool encodeLevel(position pos, coenv &e, trans::tyEntry *ent);
+ newRecordExp(position pos, astType *result)
: exp(pos), result(result) {}
void prettyprint(ostream &out, Int indent);
@@ -36,14 +36,14 @@ public:
};
class newArrayExp : public exp {
- ty *celltype;
+ astType *celltype;
explist *dimexps;
dimensions *dims;
arrayinit *ai;
public:
newArrayExp(position pos,
- ty *celltype,
+ astType *celltype,
explist *dimexps,
dimensions *dims,
arrayinit *ai)
diff --git a/graphics/asymptote/picture.cc b/graphics/asymptote/picture.cc
index 8f67201fb3..8ea6e3bf86 100644
--- a/graphics/asymptote/picture.cc
+++ b/graphics/asymptote/picture.cc
@@ -853,7 +853,10 @@ bool picture::postprocess(const string& prename, const string& outname,
double expand=antialias;
if(expand < 2.0) expand=1.0;
res *= expand;
- cmd.push_back(getSetting<string>("convert"));
+ string s=getSetting<string>("convert");
+ cmd.push_back(s);
+ if(s != "convert")
+ cmd.push_back("convert");
cmd.push_back("-density");
cmd.push_back(String(res)+"x"+String(res));
if(expand == 1.0)
diff --git a/graphics/asymptote/pkg.m4 b/graphics/asymptote/pkg.m4
new file mode 100644
index 0000000000..d8549a4789
--- /dev/null
+++ b/graphics/asymptote/pkg.m4
@@ -0,0 +1,343 @@
+# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
+# serial 11 (pkg-config-0.29.1)
+
+dnl Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
+dnl Copyright © 2012-2015 Dan Nicholson <dbn.lists@gmail.com>
+dnl
+dnl This program is free software; you can redistribute it and/or modify
+dnl it under the terms of the GNU General Public License as published by
+dnl the Free Software Foundation; either version 2 of the License, or
+dnl (at your option) any later version.
+dnl
+dnl This program is distributed in the hope that it will be useful, but
+dnl WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+dnl General Public License for more details.
+dnl
+dnl You should have received a copy of the GNU General Public License
+dnl along with this program; if not, write to the Free Software
+dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+dnl 02111-1307, USA.
+dnl
+dnl As a special exception to the GNU General Public License, if you
+dnl distribute this file as part of a program that contains a
+dnl configuration script generated by Autoconf, you may include it under
+dnl the same distribution terms that you use for the rest of that
+dnl program.
+
+dnl PKG_PREREQ(MIN-VERSION)
+dnl -----------------------
+dnl Since: 0.29
+dnl
+dnl Verify that the version of the pkg-config macros are at least
+dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's
+dnl installed version of pkg-config, this checks the developer's version
+dnl of pkg.m4 when generating configure.
+dnl
+dnl To ensure that this macro is defined, also add:
+dnl m4_ifndef([PKG_PREREQ],
+dnl [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])])
+dnl
+dnl See the "Since" comment for each macro you use to see what version
+dnl of the macros you require.
+m4_defun([PKG_PREREQ],
+[m4_define([PKG_MACROS_VERSION], [0.29.1])
+m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1,
+ [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])])
+])dnl PKG_PREREQ
+
+dnl PKG_PROG_PKG_CONFIG([MIN-VERSION])
+dnl ----------------------------------
+dnl Since: 0.16
+dnl
+dnl Search for the pkg-config tool and set the PKG_CONFIG variable to
+dnl first found in the path. Checks that the version of pkg-config found
+dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is
+dnl used since that's the first version where most current features of
+dnl pkg-config existed.
+AC_DEFUN([PKG_PROG_PKG_CONFIG],
+[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
+m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$])
+m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$])
+AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])
+AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path])
+AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path])
+
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+ AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
+fi
+if test -n "$PKG_CONFIG"; then
+ _pkg_min_version=m4_default([$1], [0.9.0])
+ AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
+ if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ PKG_CONFIG=""
+ fi
+fi[]dnl
+])dnl PKG_PROG_PKG_CONFIG
+
+dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+dnl -------------------------------------------------------------------
+dnl Since: 0.18
+dnl
+dnl Check to see whether a particular set of modules exists. Similar to
+dnl PKG_CHECK_MODULES(), but does not set variables or print errors.
+dnl
+dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+dnl only at the first occurence in configure.ac, so if the first place
+dnl it's called might be skipped (such as if it is within an "if", you
+dnl have to call PKG_CHECK_EXISTS manually
+AC_DEFUN([PKG_CHECK_EXISTS],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+if test -n "$PKG_CONFIG" && \
+ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
+ m4_default([$2], [:])
+m4_ifvaln([$3], [else
+ $3])dnl
+fi])
+
+dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
+dnl ---------------------------------------------
+dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting
+dnl pkg_failed based on the result.
+m4_define([_PKG_CONFIG],
+[if test -n "$$1"; then
+ pkg_cv_[]$1="$$1"
+ elif test -n "$PKG_CONFIG"; then
+ PKG_CHECK_EXISTS([$3],
+ [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes ],
+ [pkg_failed=yes])
+ else
+ pkg_failed=untried
+fi[]dnl
+])dnl _PKG_CONFIG
+
+dnl _PKG_SHORT_ERRORS_SUPPORTED
+dnl ---------------------------
+dnl Internal check to see if pkg-config supports short errors.
+AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi[]dnl
+])dnl _PKG_SHORT_ERRORS_SUPPORTED
+
+
+dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
+dnl [ACTION-IF-NOT-FOUND])
+dnl --------------------------------------------------------------
+dnl Since: 0.4.0
+dnl
+dnl Note that if there is a possibility the first call to
+dnl PKG_CHECK_MODULES might not happen, you should be sure to include an
+dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
+AC_DEFUN([PKG_CHECK_MODULES],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
+AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
+
+pkg_failed=no
+AC_MSG_CHECKING([for $1])
+
+_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
+_PKG_CONFIG([$1][_LIBS], [libs], [$2])
+
+m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
+and $1[]_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.])
+
+if test $pkg_failed = yes; then
+ AC_MSG_RESULT([no])
+ _PKG_SHORT_ERRORS_SUPPORTED
+ if test $_pkg_short_errors_supported = yes; then
+ $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1`
+ else
+ $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
+
+ m4_default([$4], [AC_MSG_ERROR(
+[Package requirements ($2) were not met:
+
+$$1_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+_PKG_TEXT])[]dnl
+ ])
+elif test $pkg_failed = untried; then
+ AC_MSG_RESULT([no])
+ m4_default([$4], [AC_MSG_FAILURE(
+[The pkg-config script could not be found or is too old. Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+_PKG_TEXT
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.])[]dnl
+ ])
+else
+ $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
+ $1[]_LIBS=$pkg_cv_[]$1[]_LIBS
+ AC_MSG_RESULT([yes])
+ $3
+fi[]dnl
+])dnl PKG_CHECK_MODULES
+
+
+dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
+dnl [ACTION-IF-NOT-FOUND])
+dnl ---------------------------------------------------------------------
+dnl Since: 0.29
+dnl
+dnl Checks for existence of MODULES and gathers its build flags with
+dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags
+dnl and VARIABLE-PREFIX_LIBS from --libs.
+dnl
+dnl Note that if there is a possibility the first call to
+dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to
+dnl include an explicit call to PKG_PROG_PKG_CONFIG in your
+dnl configure.ac.
+AC_DEFUN([PKG_CHECK_MODULES_STATIC],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+_save_PKG_CONFIG=$PKG_CONFIG
+PKG_CONFIG="$PKG_CONFIG --static"
+PKG_CHECK_MODULES($@)
+PKG_CONFIG=$_save_PKG_CONFIG[]dnl
+])dnl PKG_CHECK_MODULES_STATIC
+
+
+dnl PKG_INSTALLDIR([DIRECTORY])
+dnl -------------------------
+dnl Since: 0.27
+dnl
+dnl Substitutes the variable pkgconfigdir as the location where a module
+dnl should install pkg-config .pc files. By default the directory is
+dnl $libdir/pkgconfig, but the default can be changed by passing
+dnl DIRECTORY. The user can override through the --with-pkgconfigdir
+dnl parameter.
+AC_DEFUN([PKG_INSTALLDIR],
+[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])])
+m4_pushdef([pkg_description],
+ [pkg-config installation directory @<:@]pkg_default[@:>@])
+AC_ARG_WITH([pkgconfigdir],
+ [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],,
+ [with_pkgconfigdir=]pkg_default)
+AC_SUBST([pkgconfigdir], [$with_pkgconfigdir])
+m4_popdef([pkg_default])
+m4_popdef([pkg_description])
+])dnl PKG_INSTALLDIR
+
+
+dnl PKG_NOARCH_INSTALLDIR([DIRECTORY])
+dnl --------------------------------
+dnl Since: 0.27
+dnl
+dnl Substitutes the variable noarch_pkgconfigdir as the location where a
+dnl module should install arch-independent pkg-config .pc files. By
+dnl default the directory is $datadir/pkgconfig, but the default can be
+dnl changed by passing DIRECTORY. The user can override through the
+dnl --with-noarch-pkgconfigdir parameter.
+AC_DEFUN([PKG_NOARCH_INSTALLDIR],
+[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])])
+m4_pushdef([pkg_description],
+ [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@])
+AC_ARG_WITH([noarch-pkgconfigdir],
+ [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],,
+ [with_noarch_pkgconfigdir=]pkg_default)
+AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir])
+m4_popdef([pkg_default])
+m4_popdef([pkg_description])
+])dnl PKG_NOARCH_INSTALLDIR
+
+
+dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE,
+dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+dnl -------------------------------------------
+dnl Since: 0.28
+dnl
+dnl Retrieves the value of the pkg-config variable for the given module.
+AC_DEFUN([PKG_CHECK_VAR],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl
+
+_PKG_CONFIG([$1], [variable="][$3]["], [$2])
+AS_VAR_COPY([$1], [pkg_cv_][$1])
+
+AS_VAR_IF([$1], [""], [$5], [$4])dnl
+])dnl PKG_CHECK_VAR
+
+dnl PKG_WITH_MODULES(VARIABLE-PREFIX, MODULES,
+dnl [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND],
+dnl [DESCRIPTION], [DEFAULT])
+dnl ------------------------------------------
+dnl
+dnl Prepare a "--with-" configure option using the lowercase
+dnl [VARIABLE-PREFIX] name, merging the behaviour of AC_ARG_WITH and
+dnl PKG_CHECK_MODULES in a single macro.
+AC_DEFUN([PKG_WITH_MODULES],
+[
+m4_pushdef([with_arg], m4_tolower([$1]))
+
+m4_pushdef([description],
+ [m4_default([$5], [build with ]with_arg[ support])])
+
+m4_pushdef([def_arg], [m4_default([$6], [auto])])
+m4_pushdef([def_action_if_found], [AS_TR_SH([with_]with_arg)=yes])
+m4_pushdef([def_action_if_not_found], [AS_TR_SH([with_]with_arg)=no])
+
+m4_case(def_arg,
+ [yes],[m4_pushdef([with_without], [--without-]with_arg)],
+ [m4_pushdef([with_without],[--with-]with_arg)])
+
+AC_ARG_WITH(with_arg,
+ AS_HELP_STRING(with_without, description[ @<:@default=]def_arg[@:>@]),,
+ [AS_TR_SH([with_]with_arg)=def_arg])
+
+AS_CASE([$AS_TR_SH([with_]with_arg)],
+ [yes],[PKG_CHECK_MODULES([$1],[$2],$3,$4)],
+ [auto],[PKG_CHECK_MODULES([$1],[$2],
+ [m4_n([def_action_if_found]) $3],
+ [m4_n([def_action_if_not_found]) $4])])
+
+m4_popdef([with_arg])
+m4_popdef([description])
+m4_popdef([def_arg])
+
+])dnl PKG_WITH_MODULES
+
+dnl PKG_HAVE_WITH_MODULES(VARIABLE-PREFIX, MODULES,
+dnl [DESCRIPTION], [DEFAULT])
+dnl -----------------------------------------------
+dnl
+dnl Convenience macro to trigger AM_CONDITIONAL after PKG_WITH_MODULES
+dnl check._[VARIABLE-PREFIX] is exported as make variable.
+AC_DEFUN([PKG_HAVE_WITH_MODULES],
+[
+PKG_WITH_MODULES([$1],[$2],,,[$3],[$4])
+
+AM_CONDITIONAL([HAVE_][$1],
+ [test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"])
+])dnl PKG_HAVE_WITH_MODULES
+
+dnl PKG_HAVE_DEFINE_WITH_MODULES(VARIABLE-PREFIX, MODULES,
+dnl [DESCRIPTION], [DEFAULT])
+dnl ------------------------------------------------------
+dnl
+dnl Convenience macro to run AM_CONDITIONAL and AC_DEFINE after
+dnl PKG_WITH_MODULES check. HAVE_[VARIABLE-PREFIX] is exported as make
+dnl and preprocessor variable.
+AC_DEFUN([PKG_HAVE_DEFINE_WITH_MODULES],
+[
+PKG_HAVE_WITH_MODULES([$1],[$2],[$3],[$4])
+
+AS_IF([test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"],
+ [AC_DEFINE([HAVE_][$1], 1, [Enable ]m4_tolower([$1])[ support])])
+])dnl PKG_HAVE_DEFINE_WITH_MODULES
diff --git a/graphics/asymptote/program.cc b/graphics/asymptote/program.cc
index 2af41c967d..c22d283fad 100644
--- a/graphics/asymptote/program.cc
+++ b/graphics/asymptote/program.cc
@@ -74,11 +74,11 @@ ostream& operator<< (ostream& out, const item& i)
out << "string, value = " << get<string>(i);
else if (i.type() == typeid(callable))
out << *(get<callable *>(i));
- else if (i.type() == typeid(frame)) {
+ else if (i.type() == typeid(vmFrame)) {
out << "frame";
# ifdef DEBUG_FRAME
{
- frame *f = get<frame *>(i);
+ vmFrame *f = get<vmFrame *>(i);
if (f)
out << " " << f->getName();
else
diff --git a/graphics/asymptote/revision.cc b/graphics/asymptote/revision.cc
index 4ff21c9455..7f032d5189 100644
--- a/graphics/asymptote/revision.cc
+++ b/graphics/asymptote/revision.cc
@@ -1,2 +1,2 @@
-const char *REVISION="2.89";
+const char *REVISION="2.90";
const char *AsyGLVersion="1.02";
diff --git a/graphics/asymptote/runmath.cc b/graphics/asymptote/runmath.cc
index d9ac05bba4..c7d4c65bba 100644
--- a/graphics/asymptote/runmath.cc
+++ b/graphics/asymptote/runmath.cc
@@ -81,7 +81,7 @@ using types::realArray;
using types::pairArray;
using run::integeroverflow;
-using vm::frame;
+using vm::vmFrame;
const char *invalidargument="invalid argument";
@@ -558,8 +558,8 @@ void gen_runmath28(stack *Stack)
#line 367 "runmath.in"
void boolMemEq(stack *Stack)
{
- frame * b=vm::pop<frame *>(Stack);
- frame * a=vm::pop<frame *>(Stack);
+ vmFrame * b=vm::pop<vmFrame *>(Stack);
+ vmFrame * a=vm::pop<vmFrame *>(Stack);
#line 368 "runmath.in"
{Stack->push<bool>(a == b); return;}
}
@@ -567,8 +567,8 @@ void boolMemEq(stack *Stack)
#line 372 "runmath.in"
void boolMemNeq(stack *Stack)
{
- frame * b=vm::pop<frame *>(Stack);
- frame * a=vm::pop<frame *>(Stack);
+ vmFrame * b=vm::pop<vmFrame *>(Stack);
+ vmFrame * a=vm::pop<vmFrame *>(Stack);
#line 373 "runmath.in"
{Stack->push<bool>(a != b); return;}
}
diff --git a/graphics/asymptote/runmath.in b/graphics/asymptote/runmath.in
index 4beba44fc3..36ca583744 100644
--- a/graphics/asymptote/runmath.in
+++ b/graphics/asymptote/runmath.in
@@ -28,7 +28,7 @@ using types::realArray;
using types::pairArray;
using run::integeroverflow;
-using vm::frame;
+using vm::vmFrame;
const char *invalidargument="invalid argument";
@@ -364,12 +364,12 @@ bool !(bool b)
return !b;
}
-bool :boolMemEq(frame *a, frame *b)
+bool :boolMemEq(vmFrame *a, vmFrame *b)
{
return a == b;
}
-bool :boolMemNeq(frame *a, frame *b)
+bool :boolMemNeq(vmFrame *a, vmFrame *b)
{
return a != b;
}
diff --git a/graphics/asymptote/runtime.cc b/graphics/asymptote/runtime.cc
index b0e7e11005..ba5a6d0f66 100644
--- a/graphics/asymptote/runtime.cc
+++ b/graphics/asymptote/runtime.cc
@@ -126,7 +126,7 @@ using namespace utils;
namespace run {
using camp::pair;
using vm::array;
-using vm::frame;
+using vm::vmFrame;
using vm::stack;
using camp::transform;
using absyntax::runnable;
@@ -216,7 +216,7 @@ void writestring(stack *s)
string S=pop<string>(s);
vm::item it=pop(s);
bool defaultfile=isdefault(it);
- camp::ofile *f=defaultfile ? &camp::Stdout : vm::get<camp::ofile*>(it);
+ camp::file *f=defaultfile ? &camp::Stdout : vm::get<camp::file*>(it);
if(!f->isOpen() || !f->enabled()) return;
if(S != "") f->write(S);
if(f->text()) {
@@ -298,7 +298,7 @@ void pushNullArray(stack *Stack)
void pushNullRecord(stack *Stack)
{
#line 256 "runtime.in"
- {Stack->push<frame*>(0); return;}
+ {Stack->push<vmFrame*>(0); return;}
}
#line 260 "runtime.in"
@@ -1135,9 +1135,8 @@ void gen_runtime86(stack *Stack)
void loadModule(stack *Stack)
{
string * index=vm::pop<string *>(Stack);
- string * filename=vm::pop<string *>(Stack);
#line 766 "runtime.in"
- Stack->load(*filename,*index);
+ Stack->load(*index);
}
#line 770 "runtime.in"
diff --git a/graphics/asymptote/runtime.in b/graphics/asymptote/runtime.in
index 63c49c3863..bc9154e4f6 100644
--- a/graphics/asymptote/runtime.in
+++ b/graphics/asymptote/runtime.in
@@ -101,7 +101,7 @@ using namespace utils;
namespace run {
using camp::pair;
using vm::array;
-using vm::frame;
+using vm::vmFrame;
using vm::stack;
using camp::transform;
using absyntax::runnable;
@@ -191,7 +191,7 @@ void writestring(stack *s)
string S=pop<string>(s);
vm::item it=pop(s);
bool defaultfile=isdefault(it);
- camp::ofile *f=defaultfile ? &camp::Stdout : vm::get<camp::ofile*>(it);
+ camp::file *f=defaultfile ? &camp::Stdout : vm::get<camp::file*>(it);
if(!f->isOpen() || !f->enabled()) return;
if(S != "") f->write(S);
if(f->text()) {
@@ -252,7 +252,7 @@ array* :pushNullArray()
return 0;
}
-frame* :pushNullRecord()
+vmFrame* :pushNullRecord()
{
return 0;
}
@@ -762,9 +762,9 @@ string location() {
}
// Wrapper for the stack::load() method.
-void :loadModule(string *filename, string *index)
+void :loadModule(string *index)
{
- Stack->load(*filename,*index);
+ Stack->load(*index);
}
string cd(string s=emptystring)
diff --git a/graphics/asymptote/settings.cc b/graphics/asymptote/settings.cc
index 6ed24a6c50..9a5006cfe4 100644
--- a/graphics/asymptote/settings.cc
+++ b/graphics/asymptote/settings.cc
@@ -1198,7 +1198,7 @@ void initSettings() {
initialize=false;
}
- settingsModule=new types::dummyRecord(symbol::trans("settings"));
+ settingsModule=new types::dummyRecord(symbol::literalTrans("settings"));
// Default mouse bindings
@@ -1510,7 +1510,7 @@ void initSettings() {
addOption(new envSetting("texcommand", ""));
addOption(new envSetting("dvips", "dvips"));
addOption(new envSetting("dvisvgm", "dvisvgm"));
- addOption(new envSetting("convert", "convert"));
+ addOption(new envSetting("convert", "magick"));
addOption(new envSetting("display", defaultDisplay));
addOption(new envSetting("animate", defaultAnimate));
addOption(new envSetting("papertype", "letter"));
diff --git a/graphics/asymptote/stack.cc b/graphics/asymptote/stack.cc
index 7072265176..3623e666cb 100644
--- a/graphics/asymptote/stack.cc
+++ b/graphics/asymptote/stack.cc
@@ -22,7 +22,7 @@
#include <iostream>
namespace vm {
-void draw(ostream& out, frame *v);
+void draw(ostream& out, vmFrame *v);
}
#endif
@@ -57,9 +57,9 @@ inline stack::vars_t base_frame(
#else
# ifdef DEBUG_FRAME
assert(!name.empty());
- vars = new frame(name, parentIndex, size);
+ vars = new vmFrame(name, parentIndex, size);
# else
- vars = new frame(size);
+ vars = new vmFrame(size);
# endif
(*vars)[parentIndex] = closure;
#endif
@@ -98,7 +98,7 @@ stack::vars_t make_dummyframe(string name)
inline stack::vars_t make_globalframe(size_t size)
{
assert(size > 0);
-#if SIMPLE_FRAME
+#ifdef SIMPLE_FRAME
// The global frame is an indirect frame. It holds one item, which is the
// link to another frame.
stack::vars_t direct = new item[1];
@@ -119,13 +119,13 @@ inline stack::vars_t make_globalframe(size_t size)
}
-inline void resize_frame(frame *f, size_t oldsize, size_t newsize)
+inline void resize_frame(vmFrame *f, size_t oldsize, size_t newsize)
{
//assert("Need to fix this" == 0);
assert(newsize > oldsize);
-#if SIMPLE_FRAME
- frame *old_indirect = get<frame *>(f[0]);
- frame *new_indirect = new item[newsize];
+#ifdef SIMPLE_FRAME
+ vmFrame *old_indirect = get<vmFrame *>(f[0]);
+ vmFrame *new_indirect = new item[newsize];
std::copy(old_indirect, old_indirect+oldsize, new_indirect);
f[0] = new_indirect;
#else
@@ -147,12 +147,13 @@ void run(lambda *l)
// Move arguments from stack to frame.
void stack::marshall(size_t args, stack::vars_t vars)
{
- for (size_t i = args; i > 0; --i)
-#if SIMPLE_FRAME
+ for (size_t i = args; i > 0; --i) {
+# ifdef SIMPLE_FRAME
vars[i-1] = pop();
-#else
- (*vars)[i-1] = pop();
-#endif
+# else
+ (*vars)[i-1] = pop();
+# endif
+ }
}
#ifdef PROFILE
@@ -275,7 +276,7 @@ void stack::runWithOrWithoutClosure(lambda *l, vars_t vars, vars_t parent)
#ifdef SIMPLE_FRAME
// Link to the variables, be they in a closure or on the stack.
- frame *varlink;
+ vmFrame *varlink;
# define SET_VARLINK assert(vars); varlink = vars;
# define VAR(n) ( (varlink)[(n) + frameStart] )
@@ -405,7 +406,7 @@ void stack::runWithOrWithoutClosure(lambda *l, vars_t vars, vars_t parent)
case inst::popframe:
{
assert(vars);
- vars=get<frame *>(VAR(0));
+ vars=get<vmFrame *>(VAR(0));
SET_VARLINK;
@@ -554,18 +555,18 @@ void stack::runWithOrWithoutClosure(lambda *l, vars_t vars, vars_t parent)
#undef FRAMEVAR
}
-void stack::load(string filename, string sigHandle) {
- importIndex_t Index(filename,sigHandle);
- frame *inst=instMap[Index];
- if (inst)
+void stack::load(string index) {
+ vmFrame *inst=instMap[index];
+ if (inst) {
push(inst);
+ }
else {
func f;
assert(initMap);
- f.body=(*initMap)[Index];
+ f.body=(*initMap)[index];
assert(f.body);
run(&f);
- instMap[Index]=get<frame *>(top());
+ instMap[index]=get<vmFrame *>(top());
}
}
@@ -597,7 +598,7 @@ void stack::draw(ostream& out)
out << "\n";
}
-void draw(ostream& out, frame* v)
+void draw(ostream& out, vmFrame* v)
{
out << "vars:" << endl;
@@ -613,7 +614,7 @@ void draw(ostream& out, frame* v)
if (i == v->getParentIndex()) {
try {
- frame *parent = get<frame *>(link);
+ vmFrame *parent = get<vmFrame *>(link);
out << (parent ? "link" : "----");
} catch (bad_item_value&) {
out << "non-link " << (*v)[0];
@@ -628,9 +629,9 @@ void draw(ostream& out, frame* v)
out << "\n";
- frame *parent;
+ vmFrame *parent;
try {
- parent = get<frame *>(link);
+ parent = get<vmFrame *>(link);
} catch (bad_item_value&) {
parent = 0;
}
diff --git a/graphics/asymptote/stack.h b/graphics/asymptote/stack.h
index eeff080f14..0522f6bb98 100644
--- a/graphics/asymptote/stack.h
+++ b/graphics/asymptote/stack.h
@@ -42,20 +42,18 @@ class runnable;
extern bool indebugger;
-typedef mem::pair<string, string> importIndex_t;
-
class stack {
public:
- typedef frame* vars_t;
+ using vars_t = vmFrame*;
struct importInitMap {
virtual ~importInitMap() {}
- virtual lambda *operator[](importIndex_t) = 0;
+ virtual lambda *operator[](string) = 0;
};
private:
// stack for operands
- typedef mem::vector<item> stack_t;
+ using stack_t = mem::vector<item>;
stack_t theStack;
void draw(ostream& out);
@@ -66,7 +64,7 @@ private:
// The stack stores a map of initialized imported modules by name, so that
// each module is initialized only once and each import refers to the same
// instance.
- typedef mem::map<CONST importIndex_t,frame *> importInstanceMap;
+ using importInstanceMap = mem::map<CONST mem::string, vmFrame*>;
importInstanceMap instMap;
// One can associate an environment to embedded code while running.
@@ -108,9 +106,9 @@ public:
void breakpoint(absyntax::runnable *r=NULL);
void debug();
- // Put an import (indexed by filename and signature) on top of the
- // stack, initializing it if necessary.
- void load(string filename, string sigHandle);
+ // Put an import (indexed by filename and optional template
+ // parameter signature) on top of the stack, initializing it if necessary.
+ void load(string index);
// These are so that built-in functions can easily manipulate the stack
void push(item next) {
diff --git a/graphics/asymptote/stm.h b/graphics/asymptote/stm.h
index 3ce488985d..b8fb4a86b5 100644
--- a/graphics/asymptote/stm.h
+++ b/graphics/asymptote/stm.h
@@ -164,14 +164,14 @@ public:
};
class extendedForStm : public stm {
- ty *start;
+ astType *start;
symbol var;
exp *set;
stm *body;
public:
- extendedForStm(position pos, ty *start, symbol var, exp *set, stm *body)
+ extendedForStm(position pos, astType *start, symbol var, exp *set, stm *body)
: stm(pos), start(start), var(var), set(set), body(body) {}
void createSymMap(AsymptoteLsp::SymbolContext* symContext) override;
diff --git a/graphics/asymptote/tests/TestLib.asy b/graphics/asymptote/tests/TestLib.asy
index a4a4b23992..f735fef09e 100644
--- a/graphics/asymptote/tests/TestLib.asy
+++ b/graphics/asymptote/tests/TestLib.asy
@@ -6,7 +6,7 @@ bool close(pair a, pair b)
void StartTest(string desc)
{
- write("Testing " + desc + "...",flush);
+ write("Testing " + desc + "...");
}
void EndTest()
diff --git a/graphics/asymptote/tests/template/functionTest.asy b/graphics/asymptote/tests/template/functionTest.asy
new file mode 100644
index 0000000000..770322b2c1
--- /dev/null
+++ b/graphics/asymptote/tests/template/functionTest.asy
@@ -0,0 +1,20 @@
+import TestLib;
+
+typedef real F1(string);
+typedef string F2(int);
+
+real f1(string s) {
+ return length(s);
+}
+
+F2 f2 = operator ecast;
+
+StartTest("Function type parameters");
+
+from 'template/imports/composeFunctions'(R=real, F1=F1, F2=F2, I=int) access
+ compose;
+
+real r = compose(f1, f2)(1234567890);
+assert(r == 10);
+
+EndTest(); \ No newline at end of file
diff --git a/graphics/asymptote/tests/template/imports/A.asy b/graphics/asymptote/tests/template/imports/A.asy
new file mode 100644
index 0000000000..dc737fdb91
--- /dev/null
+++ b/graphics/asymptote/tests/template/imports/A.asy
@@ -0,0 +1,4 @@
+typedef import(T);
+
+struct A {
+}
diff --git a/graphics/asymptote/tests/template/imports/B.asy b/graphics/asymptote/tests/template/imports/B.asy
new file mode 100644
index 0000000000..c048a43f46
--- /dev/null
+++ b/graphics/asymptote/tests/template/imports/B.asy
@@ -0,0 +1 @@
+typedef import(T);
diff --git a/graphics/asymptote/tests/template/imports/C.asy b/graphics/asymptote/tests/template/imports/C.asy
new file mode 100644
index 0000000000..38e8939bad
--- /dev/null
+++ b/graphics/asymptote/tests/template/imports/C.asy
@@ -0,0 +1,6 @@
+typedef import(T);
+
+T a=new T;
+assert(a.x == 1);
+
+int global = 17;
diff --git a/graphics/asymptote/tests/template/imports/composeFunctions.asy b/graphics/asymptote/tests/template/imports/composeFunctions.asy
new file mode 100644
index 0000000000..63678e6c6b
--- /dev/null
+++ b/graphics/asymptote/tests/template/imports/composeFunctions.asy
@@ -0,0 +1,9 @@
+typedef import(R, F1, F2, I);
+
+typedef R FF(I);
+
+FF compose(F1 f1, F2 f2) {
+ return new R(I i) {
+ return f1(f2(i));
+ };
+} \ No newline at end of file
diff --git a/graphics/asymptote/tests/template/imports/notTemplate.asy b/graphics/asymptote/tests/template/imports/notTemplate.asy
new file mode 100644
index 0000000000..bd309b07ba
--- /dev/null
+++ b/graphics/asymptote/tests/template/imports/notTemplate.asy
@@ -0,0 +1,4 @@
+struct A {
+ static int global = 17;
+ int local = 3;
+} \ No newline at end of file
diff --git a/graphics/asymptote/tests/template/imports/notTemplate2.asy b/graphics/asymptote/tests/template/imports/notTemplate2.asy
new file mode 100644
index 0000000000..4c9375c3b3
--- /dev/null
+++ b/graphics/asymptote/tests/template/imports/notTemplate2.asy
@@ -0,0 +1,4 @@
+struct B {
+ import 'template/imports/notTemplate' as notTemplate;
+}
+B b; \ No newline at end of file
diff --git a/graphics/asymptote/tests/template/imports/pureset.asy b/graphics/asymptote/tests/template/imports/pureset.asy
new file mode 100644
index 0000000000..472a37ccb4
--- /dev/null
+++ b/graphics/asymptote/tests/template/imports/pureset.asy
@@ -0,0 +1,116 @@
+typedef import(T);
+
+struct Set_T {
+ int size();
+ bool empty() {
+ return size() == 0;
+ }
+ bool contains(T item);
+ bool insert(T item);
+ T replace(T item); // Inserts item, and returns the item that was
+ // replaced, or emptyresponse if no item was replaced.
+ T get(T item);
+ bool delete(T item);
+ // Calls process on each item in the collection until process returns false.
+ void forEach(bool process(T item));
+}
+
+struct NaiveSet_T {
+ private T[] buffer = new T[0];
+ private T emptyresponse;
+ private bool equiv(T a, T b);
+
+ void operator init(bool equiv(T a, T b), T emptyresponse) {
+ this.equiv = equiv;
+ this.emptyresponse = emptyresponse;
+ }
+
+ int size() {
+ return buffer.length;
+ }
+
+ bool contains(T item) {
+ for (T a : buffer) {
+ if (equiv(a, item)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ bool insert(T item) {
+ if (contains(item)) {
+ return false;
+ }
+ buffer.push(item);
+ return true;
+ }
+
+ T replace(T item) {
+ for (int i = 0; i < buffer.length; ++i) {
+ if (equiv(buffer[i], item)) {
+ T old = buffer[i];
+ buffer[i] = item;
+ return old;
+ }
+ }
+ buffer.push(item);
+ return emptyresponse;
+ }
+
+ T get(T item) {
+ for (T a : buffer) {
+ if (equiv(a, item)) {
+ return a;
+ }
+ }
+ return emptyresponse;
+ }
+
+ bool delete(T item) {
+ for (int i = 0; i < buffer.length; ++i) {
+ if (equiv(buffer[i], item)) {
+ buffer[i] = buffer[buffer.length - 1];
+ buffer.pop();
+ return true;
+ }
+ }
+ return false;
+ }
+
+ void forEach(bool process(T item)) {
+ for (T a : buffer) {
+ if (!process(a)) {
+ return;
+ }
+ }
+ }
+
+}
+
+Set_T operator cast(NaiveSet_T naiveSet) {
+ Set_T set = new Set_T;
+ set.size = naiveSet.size;
+ set.contains = naiveSet.contains;
+ set.insert = naiveSet.insert;
+ set.replace = naiveSet.replace;
+ set.get = naiveSet.get;
+ set.delete = naiveSet.delete;
+ set.forEach = naiveSet.forEach;
+ return set;
+}
+
+T[] operator cast(Set_T set) {
+ T[] buffer = new T[set.size()];
+ int i = 0;
+ set.forEach(new bool(T item) {
+ buffer[i] = item;
+ ++i;
+ return true;
+ });
+ return buffer;
+}
+
+Set_T makeNaiveSet(bool equiv(T, T), T emptyresponse) {
+ return NaiveSet_T(equiv, emptyresponse);
+} \ No newline at end of file
diff --git a/graphics/asymptote/tests/template/imports/sortedset.asy b/graphics/asymptote/tests/template/imports/sortedset.asy
new file mode 100644
index 0000000000..bcef6889e0
--- /dev/null
+++ b/graphics/asymptote/tests/template/imports/sortedset.asy
@@ -0,0 +1,208 @@
+typedef import(T);
+
+from "template/imports/pureset"(T=T) access Set_T, operator cast, makeNaiveSet;
+
+struct SortedSet_T {
+ int size();
+ bool empty() { return size() == 0; }
+ bool contains(T item);
+ T get(T item); // Returns the item in the collection that is
+ // equivalent to item, or emptyresponse if there is no
+ // such item.
+ // Returns the least element > item, or emptyresponse if there is no such
+ // element.
+ T after(T item);
+ // Returns the greatest element < item, or emptyresponse if there is no such
+ // element.
+ T before(T item);
+ T firstGEQ(T item) { return contains(item) ? get(item) : after(item); }
+ T firstLEQ(T item) { return contains(item) ? get(item) : before(item); }
+ T min(); // Returns emptyresponse if collection is empty.
+ T popMin(); // Returns emptyresponse if collection is empty.
+ T max(); // Returns emptyresponse if collection is empty.
+ T popMax(); // Returns emptyresponse if collection is empty.
+ bool insert(T item); // Returns true iff the collection is modified.
+ T replace(T item); // Inserts item, and returns the item that was
+ // replaced, or emptyresponse if no item was replaced.
+ bool delete(T item); // Returns true iff the collection is modified.
+ // Calls process on each item in the collection, in ascending order,
+ // until process returns false.
+ void forEach(bool process(T item));
+}
+
+T[] operator cast(SortedSet_T set) {
+ T[] result;
+ set.forEach(new bool(T item) {
+ result.push(item);
+ return true;
+ });
+ return result;
+}
+
+Set_T unSort(SortedSet_T sorted_set) {
+ Set_T set = new Set_T;
+ set.size = sorted_set.size;
+ set.empty = sorted_set.empty;
+ set.contains = sorted_set.contains;
+ set.insert = sorted_set.insert;
+ set.replace = sorted_set.replace;
+ set.get = sorted_set.get;
+ set.delete = sorted_set.delete;
+ set.forEach = sorted_set.forEach;
+ return set;
+}
+
+Set_T operator cast(SortedSet_T) = unSort;
+
+// For testing purposes, we provide a naive implementation of SortedSet_T.
+// This implementation is highly inefficient, but it is correct, and can be
+// used to test other implementations of SortedSet_T.
+struct NaiveSortedSet_T {
+ private bool lt(T a, T b);
+ private T[] buffer = new T[0];
+ private T emptyresponse;
+
+ private bool leq(T a, T b) {
+ return !lt(b, a);
+ }
+ private bool gt(T a, T b) {
+ return lt(b, a);
+ }
+ private bool geq(T a, T b) {
+ return leq(b, a);
+ }
+ private bool equiv(T a, T b) {
+ return leq(a, b) && leq(b, a);
+ }
+
+ void operator init(bool lessThan(T, T), T emptyresponse) {
+ this.lt = lessThan;
+ this.emptyresponse = emptyresponse;
+ }
+
+ int size() {
+ return buffer.length;
+ }
+
+ bool contains(T item) {
+ for (T possibility : buffer) {
+ if (equiv(possibility, item)) return true;
+ }
+ return false;
+ }
+
+ T after(T item) {
+ for (T possibility : buffer) {
+ if (gt(possibility, item)) return possibility;
+ }
+ return emptyresponse;
+ }
+
+ T before(T item) {
+ for (int ii = buffer.length - 1; ii >= 0; --ii) {
+ T possibility = buffer[ii];
+ if (lt(possibility, item)) return possibility;
+ }
+ return emptyresponse;
+ }
+
+ T min() {
+ if (buffer.length == 0) return emptyresponse;
+ return buffer[0];
+ }
+
+ T popMin() {
+ if (buffer.length == 0) return emptyresponse;
+ T toreturn = buffer[0];
+ buffer.delete(0);
+ return toreturn;
+ }
+
+ T max() {
+ if (buffer.length == 0) return emptyresponse;
+ return buffer[buffer.length - 1];
+ }
+
+ T popMax() {
+ if (buffer.length == 0) return emptyresponse;
+ return buffer.pop();
+ }
+
+ bool insert(T item) {
+ for (int i = 0; i < buffer.length; ++i) {
+ if (equiv(buffer[i], item)) return false;
+ else if (gt(buffer[i], item)) {
+ buffer.insert(i, item);
+ return true;
+ }
+ }
+ buffer.push(item);
+ return true;
+ }
+
+ T replace(T item) {
+ for (int i = 0; i < buffer.length; ++i) {
+ if (equiv(buffer[i], item)) {
+ T toreturn = buffer[i];
+ buffer[i] = item;
+ return toreturn;
+ }
+ else if (gt(buffer[i], item)) {
+ buffer.insert(i, item);
+ return emptyresponse;
+ }
+ }
+ buffer.push(item);
+ return emptyresponse;
+ }
+
+ T get(T item) {
+ for (T possibility : buffer) {
+ if (equiv(possibility, item)) return possibility;
+ }
+ return emptyresponse;
+ }
+
+ bool delete(T item) {
+ for (int i = 0; i < buffer.length; ++i) {
+ if (equiv(buffer[i], item)) {
+ buffer.delete(i);
+ return true;
+ }
+ }
+ return false;
+ }
+
+ void forEach(bool process(T item)) {
+ for (T item : buffer) {
+ if (!process(item)) break;
+ }
+ }
+}
+
+SortedSet_T operator cast(NaiveSortedSet_T naive) {
+ SortedSet_T toreturn;
+ toreturn.size = naive.size;
+ toreturn.contains = naive.contains;
+ toreturn.after = naive.after;
+ toreturn.before = naive.before;
+ toreturn.min = naive.min;
+ toreturn.popMin = naive.popMin;
+ toreturn.max = naive.max;
+ toreturn.popMax = naive.popMax;
+ toreturn.insert = naive.insert;
+ toreturn.replace = naive.replace;
+ toreturn.get = naive.get;
+ toreturn.delete = naive.delete;
+ toreturn.forEach = naive.forEach;
+ return toreturn;
+}
+
+// Compose cast operators, since implicit casting is not transitive.
+T[] operator cast(NaiveSortedSet_T naive) {
+ return (SortedSet_T)naive;
+}
+
+SortedSet_T makeNaiveSortedSet(bool lessThan(T, T), T emptyresponse) {
+ return NaiveSortedSet_T(lessThan, emptyresponse);
+} \ No newline at end of file
diff --git a/graphics/asymptote/tests/template/imports/splaytree.asy b/graphics/asymptote/tests/template/imports/splaytree.asy
new file mode 100644
index 0000000000..d5850482f9
--- /dev/null
+++ b/graphics/asymptote/tests/template/imports/splaytree.asy
@@ -0,0 +1,549 @@
+typedef import(T);
+
+from "template/imports/sortedset"(T=T) access
+ Set_T,
+ SortedSet_T,
+ operator cast;
+
+private struct treenode {
+ treenode leftchild;
+ treenode rightchild;
+ T value;
+ void operator init(T value) {
+ this.value = value;
+ }
+
+ bool inOrder(bool run(T)) {
+ if (leftchild != null) {
+ if (!leftchild.inOrder(run)) return false;
+ }
+ if (!run(value)) return false;
+ if (rightchild != null) {
+ if (!rightchild.inOrder(run)) return false;
+ }
+ return true;
+ }
+}
+
+private struct NodeProgressEnum {
+ restricted static int num = 0;
+ private static int make() {
+ return (++num - 1);
+ }
+ static int NOT_STARTED = make();
+ static int LEFT_DONE = make();
+ static int SELF_DONE = make();
+ static int RIGHT_DONE = make();
+}
+
+private struct NodeInProgress {
+ treenode node;
+ int progress = NodeProgressEnum.NOT_STARTED;
+ void operator init(treenode node) {
+ this.node = node;
+ }
+}
+
+void inOrderNonRecursive(treenode root, bool run(T)) {
+ if (root == null) return;
+ NodeInProgress[] stack = new NodeInProgress[0];
+ stack.cyclic = true;
+ stack.push(NodeInProgress(root));
+ while (stack.length > 0) {
+ NodeInProgress current = stack[-1];
+ if (current.progress == NodeProgressEnum.NOT_STARTED) {
+ if (current.node.leftchild != null) {
+ stack.push(NodeInProgress(current.node.leftchild));
+ }
+ current.progress = NodeProgressEnum.LEFT_DONE;
+ } else if (current.progress == NodeProgressEnum.LEFT_DONE) {
+ if (!run(current.node.value)) return;
+ current.progress = NodeProgressEnum.SELF_DONE;
+ } else if (current.progress == NodeProgressEnum.SELF_DONE) {
+ if (current.node.rightchild != null) {
+ stack.push(NodeInProgress(current.node.rightchild));
+ }
+ current.progress = NodeProgressEnum.RIGHT_DONE;
+ } else {
+ assert(current.progress == NodeProgressEnum.RIGHT_DONE);
+ stack.pop();
+ }
+ }
+}
+
+
+private treenode splay(treenode[] ancestors, bool lessthan(T a, T b)) {
+ bool operator < (T a, T b) = lessthan;
+
+ if (ancestors.length == 0) return null;
+
+ treenode root = ancestors[0];
+ treenode current = ancestors.pop();
+
+ while (ancestors.length >= 2) {
+ treenode parent = ancestors.pop();
+ treenode grandparent = ancestors.pop();
+
+ if (ancestors.length > 0) {
+ treenode greatparent = ancestors[-1];
+ if (greatparent.leftchild == grandparent) {
+ greatparent.leftchild = current;
+ } else greatparent.rightchild = current;
+ }
+
+ bool currentside = (parent.leftchild == current);
+ bool grandside = (grandparent.leftchild == parent);
+
+ if (currentside == grandside) { // zig-zig
+ if (currentside) { // both left
+ treenode B = current.rightchild;
+ treenode C = parent.rightchild;
+
+ current.rightchild = parent;
+ parent.leftchild = B;
+ parent.rightchild = grandparent;
+ grandparent.leftchild = C;
+ } else { // both right
+ treenode B = parent.leftchild;
+ treenode C = current.leftchild;
+
+ current.leftchild = parent;
+ parent.leftchild = grandparent;
+ parent.rightchild = C;
+ grandparent.rightchild = B;
+ }
+ } else { // zig-zag
+ if (grandside) { // left-right
+ treenode B = current.leftchild;
+ treenode C = current.rightchild;
+
+ current.leftchild = parent;
+ current.rightchild = grandparent;
+ parent.rightchild = B;
+ grandparent.leftchild = C;
+ } else { //right-left
+ treenode B = current.leftchild;
+ treenode C = current.rightchild;
+
+ current.leftchild = grandparent;
+ current.rightchild = parent;
+ grandparent.rightchild = B;
+ parent.leftchild = C;
+ }
+ }
+ }
+
+ if (ancestors.length > 0) {
+ ancestors.pop();
+ if (current == root.leftchild) {
+ treenode B = current.rightchild;
+ current.rightchild = root;
+ root.leftchild = B;
+ } else {
+ treenode B = current.leftchild;
+ current.leftchild = root;
+ root.rightchild = B;
+ }
+ }
+
+ return current;
+}
+
+struct SplayTree_T {
+ private treenode root = null;
+ restricted int size = 0;
+ private bool operator < (T a, T b);
+ private T emptyresponse;
+
+ void operator init(bool lessthan(T,T), T emptyresponse) {
+ operator< = lessthan;
+ this.emptyresponse = emptyresponse;
+ }
+
+ int size() {
+ return size;
+ }
+
+ bool empty() {
+ assert((root == null) == (size == 0));
+ return root == null;
+ }
+
+ bool contains(T value) {
+ treenode[] parentStack = new treenode[0];
+ parentStack.cyclic = true;
+ parentStack.push(root);
+ while (true) {
+ treenode current = parentStack[-1];
+ if (current == null) {
+ parentStack.pop();
+ root = splay(parentStack, operator<);
+ return false;
+ }
+ if (value < current.value) {
+ parentStack.push(current.leftchild);
+ } else if (current.value < value) {
+ parentStack.push(current.rightchild);
+ } else break;
+ }
+ root = splay(parentStack, operator<);
+ return true;
+ }
+
+ T after(T item) {
+ treenode[] parentStack = new treenode[0];
+ parentStack.cyclic = true;
+ parentStack.push(root);
+ T strictUpperBound = emptyresponse;
+ bool found = false;
+ while (true) {
+ treenode current = parentStack[-1];
+ if (current == null) {
+ parentStack.pop();
+ root = splay(parentStack, operator<);
+ return strictUpperBound;
+ }
+ if (found || item < current.value) {
+ strictUpperBound = current.value;
+ parentStack.push(current.leftchild);
+ } else {
+ parentStack.push(current.rightchild);
+ if (!(current.value < item))
+ found = true;
+ }
+ }
+ assert(false, "Unreachable code");
+ return emptyresponse;
+ }
+
+ T before(T item) {
+ treenode[] parentStack = new treenode[0];
+ parentStack.cyclic = true;
+ parentStack.push(root);
+ T strictLowerBound = emptyresponse;
+ bool found = false;
+ while (true) {
+ treenode current = parentStack[-1];
+ if (current == null) {
+ parentStack.pop();
+ root = splay(parentStack, operator<);
+ return strictLowerBound;
+ }
+ if (found || current.value < item) {
+ strictLowerBound = current.value;
+ parentStack.push(current.rightchild);
+ } else {
+ parentStack.push(current.leftchild);
+ if (!(item < current.value))
+ found = true;
+ }
+ }
+ assert(false, "Unreachable code");
+ return emptyresponse;
+ }
+
+ T firstGEQ(T item) {
+ treenode[] parentStack = new treenode[0];
+ parentStack.cyclic = true;
+ parentStack.push(root);
+ T upperBound = emptyresponse;
+ while (true) {
+ treenode current = parentStack[-1];
+ if (current == null) {
+ parentStack.pop();
+ root = splay(parentStack, operator<);
+ return upperBound;
+ }
+ if (current.value < item) {
+ parentStack.push(current.rightchild);
+ } else if (item < current.value) {
+ upperBound = current.value;
+ parentStack.push(current.leftchild);
+ } else {
+ root = splay(parentStack, operator<);
+ return current.value;
+ }
+ }
+ assert(false, "Unreachable code");
+ return emptyresponse;
+ }
+
+ T firstLEQ(T item) {
+ treenode[] parentStack = new treenode[0];
+ parentStack.cyclic = true;
+ parentStack.push(root);
+ T lowerBound = emptyresponse;
+ while (true) {
+ treenode current = parentStack[-1];
+ if (current == null) {
+ parentStack.pop();
+ root = splay(parentStack, operator<);
+ return lowerBound;
+ }
+ if (item < current.value) {
+ parentStack.push(current.leftchild);
+ } else if (current.value < item) {
+ lowerBound = current.value;
+ parentStack.push(current.rightchild);
+ } else {
+ root = splay(parentStack, operator<);
+ return current.value;
+ }
+ }
+ assert(false, "Unreachable code");
+ return emptyresponse;
+ }
+
+ T min() {
+ if (root == null) return emptyresponse;
+ treenode[] ancestors = new treenode[0];
+ ancestors.cyclic = true;
+ treenode current = root;
+ while (current != null) {
+ ancestors.push(current);
+ current = current.leftchild;
+ }
+ root = splay(ancestors, operator<);
+ return root.value;
+ }
+
+ T popMin() {
+ if (root == null) return emptyresponse;
+ treenode[] ancestors = new treenode[0];
+ ancestors.cyclic = true;
+ treenode current = root;
+ while (current != null) {
+ ancestors.push(current);
+ current = current.leftchild;
+ }
+ root = splay(ancestors, operator<);
+ T toReturn = root.value;
+ root = root.rightchild;
+ --size;
+ return toReturn;
+ }
+
+ T max() {
+ if (root == null) return emptyresponse;
+ treenode[] ancestors = new treenode[0];
+ ancestors.cyclic = true;
+ treenode current = root;
+ while (current != null) {
+ ancestors.push(current);
+ current = current.rightchild;
+ }
+ root = splay(ancestors, operator<);
+ return root.value;
+ }
+
+ T popMax() {
+ if (root == null) return emptyresponse;
+ treenode[] ancestors = new treenode[0];
+ ancestors.cyclic = true;
+ treenode current = root;
+ while (current != null) {
+ ancestors.push(current);
+ current = current.rightchild;
+ }
+ root = splay(ancestors, operator<);
+ T toReturn = root.value;
+ root = root.leftchild;
+ --size;
+ return toReturn;
+ }
+
+ /*
+ * returns true iff the tree was modified
+ */
+ bool insert(T value) {
+ if (root == null) {
+ root = treenode(value);
+ ++size;
+ return true;
+ }
+ treenode[] ancestors = new treenode[0];
+ ancestors.cyclic = true;
+ ancestors.push(root);
+
+ bool toReturn = false;
+
+ while (!toReturn) {
+ treenode current = ancestors[-1];
+ if (value < current.value) {
+ if (current.leftchild == null) {
+ current.leftchild = treenode(value);
+ toReturn = true;
+ }
+ ancestors.push(current.leftchild);
+ } else if (current.value < value) {
+ if (current.rightchild == null) {
+ current.rightchild = treenode(value);
+ toReturn = true;
+ }
+ ancestors.push(current.rightchild);
+ } else {
+ root = splay(ancestors, operator<);
+ return false;
+ }
+ }
+
+ root = splay(ancestors, operator<);
+ ++size;
+ return true;
+ }
+
+ T replace(T item) {
+ if (root == null) {
+ insert(item);
+ return emptyresponse;
+ }
+ treenode[] ancestors = new treenode[0];
+ ancestors.cyclic = true;
+ ancestors.push(root);
+ treenode current = root;
+ while (true) {
+ if (item < current.value) {
+ if (current.leftchild == null) {
+ current.leftchild = treenode(item);
+ ancestors.push(current.leftchild);
+ break;
+ }
+ ancestors.push(current.leftchild);
+ current = current.leftchild;
+ } else if (current.value < item) {
+ if (current.rightchild == null) {
+ current.rightchild = treenode(item);
+ ancestors.push(current.rightchild);
+ break;
+ }
+ ancestors.push(current.rightchild);
+ current = current.rightchild;
+ } else {
+ T toReturn = current.value;
+ current.value = item;
+ root = splay(ancestors, operator<);
+ return toReturn;
+ }
+ }
+ root = splay(ancestors, operator<);
+ ++size;
+ return emptyresponse;
+ }
+
+ T get(T item) {
+ if (root == null) return emptyresponse;
+ treenode[] parentStack = new treenode[0];
+ parentStack.cyclic = true;
+ parentStack.push(root);
+ while (true) {
+ treenode current = parentStack[-1];
+ if (current == null) {
+ parentStack.pop();
+ root = splay(parentStack, operator<);
+ return emptyresponse;
+ }
+ if (item < current.value) {
+ parentStack.push(current.leftchild);
+ } else if (current.value < item) {
+ parentStack.push(current.rightchild);
+ } else {
+ root = splay(parentStack, operator<);
+ return current.value;
+ }
+ }
+ assert(false, "Unreachable code");
+ return emptyresponse;
+ }
+
+ /*
+ * returns true iff the tree was modified
+ */
+ bool delete(T value) {
+ treenode[] ancestors = new treenode[0];
+ ancestors.cyclic = true; // Makes ancestors[-1] refer to the last entry.
+ ancestors.push(root);
+
+ while (true) {
+ treenode current = ancestors[-1];
+ if (current == null) {
+ ancestors.pop();
+ root = splay(ancestors, operator<);
+ return false;
+ }
+ if (value < current.value)
+ ancestors.push(current.leftchild);
+ else if (current.value < value)
+ ancestors.push(current.rightchild);
+ else break;
+ }
+
+ treenode toDelete = ancestors.pop();
+ treenode parent = null;
+ if (ancestors.length > 0) parent = ancestors[-1];
+
+ if (toDelete.leftchild == null) {
+ if (parent != null) {
+ if (parent.rightchild == toDelete) {
+ parent.rightchild = toDelete.rightchild;
+ } else {
+ parent.leftchild = toDelete.rightchild;
+ }
+ } else root = toDelete.rightchild;
+ } else if (toDelete.rightchild == null) {
+ if (parent == null) {
+ root = toDelete.leftchild;
+ } else if (parent.rightchild == toDelete) {
+ parent.rightchild = toDelete.leftchild;
+ } else parent.leftchild = toDelete.leftchild;
+ } else {
+ treenode[] innerStack = new treenode[0];
+ innerStack.cyclic = true;
+ treenode current = toDelete.rightchild;
+ while (current != null) {
+ innerStack.push(current);
+ current = current.leftchild;
+ }
+ toDelete.rightchild = splay(innerStack, operator<);
+ toDelete.value = toDelete.rightchild.value;
+ toDelete.rightchild = toDelete.rightchild.rightchild;
+ }
+
+ if (parent != null) root = splay(ancestors, operator<);
+ --size;
+ return true;
+ }
+
+ void forEach(bool run(T)) {
+ inOrderNonRecursive(root, run);
+ }
+
+}
+
+SortedSet_T operator cast(SplayTree_T splaytree) {
+ SortedSet_T result = new SortedSet_T;
+ result.size = splaytree.size;
+ result.empty = splaytree.empty;
+ result.contains = splaytree.contains;
+ result.after = splaytree.after;
+ result.before = splaytree.before;
+ result.firstGEQ = splaytree.firstGEQ;
+ result.firstLEQ = splaytree.firstLEQ;
+ result.min = splaytree.min;
+ result.popMin = splaytree.popMin;
+ result.max = splaytree.max;
+ result.popMax = splaytree.popMax;
+ result.insert = splaytree.insert;
+ result.replace = splaytree.replace;
+ result.get = splaytree.get;
+ result.delete = splaytree.delete;
+ result.forEach = splaytree.forEach;
+ return result;
+}
+
+Set_T operator cast(SplayTree_T splaytree) {
+ return (SortedSet_T)splaytree;
+}
+
+T[] operator cast(SplayTree_T splaytree) {
+ return (SortedSet_T)splaytree;
+} \ No newline at end of file
diff --git a/graphics/asymptote/tests/template/imports/structTemplate.asy b/graphics/asymptote/tests/template/imports/structTemplate.asy
new file mode 100644
index 0000000000..5894d2e280
--- /dev/null
+++ b/graphics/asymptote/tests/template/imports/structTemplate.asy
@@ -0,0 +1,36 @@
+// Assumption: T is a struct with a static int `global` and a non-static int
+// `local`. Lib is a struct with a static string `testName`.
+typedef import(T, Lib);
+import TestLib;
+
+StartTest('Accessing static testName');
+Lib.testName;
+EndTest();
+
+StartTest(Lib.testName + ': new');
+new T;
+EndTest();
+
+StartTest(Lib.testName + ': Unspecified Declaration');
+T a;
+EndTest();
+
+StartTest(Lib.testName + ': Initializing to null');
+T b = null;
+EndTest();
+
+StartTest(Lib.testName + ': Initializing to new');
+T c = new T;
+EndTest();
+
+StartTest(Lib.testName + ': Access static member');
+int d = T.global;
+EndTest();
+
+StartTest(Lib.testName + ': Access non-static member');
+int e = c.local;
+EndTest();
+
+StartTest(Lib.testName + ': Access static member from instance');
+int f = c.global;
+EndTest();
diff --git a/graphics/asymptote/tests/template/imports/zip.asy b/graphics/asymptote/tests/template/imports/zip.asy
new file mode 100644
index 0000000000..4d02f98b6a
--- /dev/null
+++ b/graphics/asymptote/tests/template/imports/zip.asy
@@ -0,0 +1,5 @@
+typedef import(T);
+
+T[][] zip(...T[][] arrays) {
+ return transpose(arrays);
+} \ No newline at end of file
diff --git a/graphics/asymptote/tests/template/initTest.asy b/graphics/asymptote/tests/template/initTest.asy
new file mode 100644
index 0000000000..7def279138
--- /dev/null
+++ b/graphics/asymptote/tests/template/initTest.asy
@@ -0,0 +1,23 @@
+access "template/imports/A"(T=int) as a;
+unravel a;
+access "template/imports/B"(T=A) as b;
+unravel b;
+
+import TestLib;
+
+StartTest("init");
+A c;
+EndTest();
+
+StartTest("new");
+struct X {
+ struct A {
+ int x=1;
+ }
+}
+
+X x;
+
+access "template/imports/C"(T=x.A) as p;
+
+EndTest();
diff --git a/graphics/asymptote/tests/template/multiImport.asy b/graphics/asymptote/tests/template/multiImport.asy
new file mode 100644
index 0000000000..94d5c30feb
--- /dev/null
+++ b/graphics/asymptote/tests/template/multiImport.asy
@@ -0,0 +1,25 @@
+import TestLib;
+
+StartTest('multiple_imports');
+struct A {int x=1;}
+access "template/imports/C"(T=A) as p;
+assert(p.global == 17);
+p.global = 42;
+access "template/imports/C"(T=A) as q;
+assert(q.global == 42);
+EndTest();
+
+StartTest('import_in_function');
+struct B {int x=1;}
+void f(int expected, int newValue) {
+ // Importing inside a function is not recommended practice, but it should
+ // work.
+ access "template/imports/C"(T=B) as p;
+ assert(p.global == expected);
+ p.global = newValue;
+}
+f(17, 23);
+f(23, 27);
+access "template/imports/C"(T=B) as p;
+assert(p.global == 27);
+EndTest();
diff --git a/graphics/asymptote/tests/template/sortedsetTest.asy b/graphics/asymptote/tests/template/sortedsetTest.asy
new file mode 100644
index 0000000000..66dbb88ec1
--- /dev/null
+++ b/graphics/asymptote/tests/template/sortedsetTest.asy
@@ -0,0 +1,254 @@
+import TestLib;
+
+StartTest("NaiveSortedSet");
+
+from "template/imports/wrapper"(T=int) access
+ Wrapper_T as wrapped_int,
+ wrap,
+ alias;
+
+bool operator < (wrapped_int a, wrapped_int b) {
+ return a.t < b.t;
+}
+
+bool operator == (wrapped_int a, wrapped_int b) {
+ return a.t == b.t;
+}
+
+from "template/imports/pureset"(T=wrapped_int) access
+ Set_T as Set_wrapped_int,
+ makeNaiveSet;
+
+from "template/imports/sortedset"(T=wrapped_int) access
+ SortedSet_T as SortedSet_wrapped_int,
+ makeNaiveSortedSet,
+ operator cast,
+ unSort;
+
+struct ActionEnum {
+ static restricted int numActions = 0;
+ static private int next() {
+ return ++numActions - 1;
+ }
+ static restricted int INSERT = next();
+ static restricted int REPLACE = next();
+ static restricted int DELETE = next();
+ static restricted int CONTAINS = next();
+ static restricted int DELETE_CONTAINS = next();
+}
+
+from "template/imports/zip"(T=int) access zip;
+from mapArray(Src=wrapped_int, Dst=int) access map;
+int get(wrapped_int a) {
+ return a.t;
+}
+
+int[] operator cast(wrapped_int[] a) {
+ for (wrapped_int x : a) {
+ assert(!alias(x, null), 'Null element in array');
+ }
+ return map(get, a);
+}
+
+string differences(Set_wrapped_int a, Set_wrapped_int b) {
+ if (a.size() != b.size()) {
+ return 'Different sizes: ' + string(a.size()) + ' vs ' + string(b.size());
+ }
+ wrapped_int[] aArray = sort(a, operator<);
+ int[] aIntArray = map(get, aArray);
+ wrapped_int[] bArray = sort(b, operator<);
+ int[] bIntArray = map(get, bArray);
+ string arrayValues = '[\n';
+ bool different = false;
+ for (int i = 0; i < aIntArray.length; ++i) {
+ arrayValues += ' [' + format('%5d', aIntArray[i]) + ','
+ + format('%5d', bIntArray[i]) + ']';
+ if (!alias(aArray[i], bArray[i])) {
+ arrayValues += ' <---';
+ different = true;
+ }
+ arrayValues += '\n';
+ }
+ arrayValues += ']';
+ // write(arrayValues + '\n');
+ if (different) {
+ return arrayValues;
+ }
+ return '';
+}
+
+string string(int[] a) {
+ string result = '[';
+ for (int i = 0; i < a.length; ++i) {
+ if (i > 0) {
+ result += ', ';
+ }
+ result += string(a[i]);
+ }
+ result += ']';
+ return result;
+}
+
+string string(bool[] a) {
+ string result = '[';
+ for (int i = 0; i < a.length; ++i) {
+ if (i > 0) {
+ result += ', ';
+ }
+ result += a[i] ? 'true' : 'false';
+ }
+ result += ']';
+ return result;
+}
+
+typedef void Action(int ...Set_wrapped_int[]);
+
+Action[] actions = new Action[ActionEnum.numActions];
+actions[ActionEnum.INSERT] = new void(int maxItem ...Set_wrapped_int[] sets) {
+ wrapped_int toInsert = wrap(rand() % maxItem);
+ // write('Inserting ' + string(toInsert.t) + '\n');
+ for (Set_wrapped_int s : sets) {
+ s.insert(toInsert);
+ }
+};
+actions[ActionEnum.REPLACE] = new void(int maxItem ...Set_wrapped_int[] sets) {
+ wrapped_int toReplace = wrap(rand() % maxItem);
+ // write('Replacing ' + string(toReplace.t) + '\n');
+ wrapped_int[] results = new wrapped_int[];
+ for (Set_wrapped_int s : sets) {
+ results.push(s.replace(toReplace));
+ }
+ if (results.length > 0) {
+ wrapped_int expected = results[0];
+ for (wrapped_int r : results) {
+ if (!alias(r, expected)) {
+ assert(false, 'Different results: ' + string(results));
+ }
+ }
+ }
+};
+actions[ActionEnum.DELETE] = new void(int maxItem ...Set_wrapped_int[] sets) {
+ wrapped_int toDelete = wrap(rand() % maxItem);
+ // write('Deleting ' + string(toDelete.t) + '\n');
+ bool[] results = new bool[];
+ for (Set_wrapped_int s : sets) {
+ results.push(s.delete(toDelete));
+ }
+ if (results.length > 0) {
+ bool expected = results[0];
+ for (bool r : results) {
+ assert(r == expected, 'Different results: ' + string(results));
+ }
+ }
+};
+actions[ActionEnum.CONTAINS] = new void(int maxItem ...Set_wrapped_int[] sets)
+{
+ int toCheck = rand() % maxItem;
+ // write('Checking ' + string(toCheck) + '\n');
+ bool[] results = new bool[];
+ for (Set_wrapped_int s : sets) {
+ results.push(s.contains(wrap(toCheck)));
+ }
+ if (results.length > 0) {
+ bool expected = results[0];
+ for (bool r : results) {
+ assert(r == expected, 'Different results: ' + string(results));
+ }
+ }
+};
+actions[ActionEnum.DELETE_CONTAINS] = new void(int ...Set_wrapped_int[] sets) {
+ if (sets.length == 0) {
+ return;
+ }
+ int initialSize = sets[0].size();
+ if (initialSize == 0) {
+ return;
+ }
+ int indexToDelete = rand() % initialSize;
+ int i = 0;
+ wrapped_int toDelete = null;
+ bool process(wrapped_int a) {
+ if (i == indexToDelete) {
+ toDelete = wrap(a.t);
+ return false;
+ }
+ ++i;
+ return true;
+ }
+ sets[0].forEach(process);
+ assert(i < initialSize, 'Index out of range');
+ // write('Deleting ' + string(toDelete.t) + '\n');
+ int i = 0;
+ for (Set_wrapped_int s : sets) {
+ assert(s.contains(toDelete), 'Contains failed ' + string(i));
+ assert(s.delete(toDelete), 'Delete failed');
+ assert(!s.contains(toDelete), 'Contains failed');
+ assert(s.size() == initialSize - 1, 'Size failed');
+ ++i;
+ }
+};
+real[] increasingProbs = new real[ActionEnum.numActions];
+increasingProbs[ActionEnum.INSERT] = 0.7;
+increasingProbs[ActionEnum.REPLACE] = 0.1;
+increasingProbs[ActionEnum.DELETE] = 0.05;
+increasingProbs[ActionEnum.CONTAINS] = 0.1;
+increasingProbs[ActionEnum.DELETE_CONTAINS] = 0.05;
+assert(sum(increasingProbs) == 1, 'Probabilities do not sum to 1');
+
+real[] decreasingProbs = new real[ActionEnum.numActions];
+decreasingProbs[ActionEnum.INSERT] = 0.1;
+decreasingProbs[ActionEnum.REPLACE] = 0.1;
+decreasingProbs[ActionEnum.DELETE] = 0.4;
+decreasingProbs[ActionEnum.CONTAINS] = 0.1;
+decreasingProbs[ActionEnum.DELETE_CONTAINS] = 0.3;
+assert(sum(decreasingProbs) == 1, 'Probabilities do not sum to 1');
+
+Set_wrapped_int pure_set = makeNaiveSet(operator ==, (wrapped_int)null);
+SortedSet_wrapped_int sorted_set =
+ makeNaiveSortedSet(operator <, (wrapped_int)null);
+
+int chooseAction(real[] probs) {
+ real r = unitrand();
+ real sum = 0;
+ for (int i = 0; i < probs.length; ++i) {
+ sum += probs[i];
+ if (r < sum) {
+ return i;
+ }
+ }
+ return probs.length - 1;
+}
+
+bool isStrictlySorted(wrapped_int[] arr) {
+ for (int i = 1; i < arr.length; ++i) {
+ if (!(arr[i - 1] < arr[i])) {
+ return false;
+ }
+ }
+ return true;
+}
+
+int maxSize = 0;
+for (int i = 0; i < 2000; ++i) {
+ real[] probs = i < 800 ? increasingProbs : decreasingProbs;
+ int choice = chooseAction(probs);
+ actions[choice](100, pure_set, sorted_set);
+ string diffs = differences(pure_set, sorted_set);
+ assert(diffs == '', 'Pure vs sorted: \n' + diffs);
+ assert(isStrictlySorted(sorted_set), 'Not sorted');
+ maxSize = max(maxSize, pure_set.size());
+}
+// write('Max size: ' + string(maxSize) + '\n');
+
+// int maxSize = 0;
+// for (int i = 0; i < 2000; ++i) {
+// real[] probs = i < 800 ? increasingProbs : decreasingProbs;
+// int choice = chooseAction(probs);
+// actions[choice](1000, pure_set, unSort(sorted_set));
+// string diffs = differences(pure_set, sorted_set);
+// assert(diffs == '', 'Pure vs sorted: \n' + diffs);
+// maxSize = max(maxSize, pure_set.size());
+// }
+// write('Max size: ' + string(maxSize) + '\n');
+
+EndTest(); \ No newline at end of file
diff --git a/graphics/asymptote/tests/template/splaytreeTest.asy b/graphics/asymptote/tests/template/splaytreeTest.asy
new file mode 100644
index 0000000000..3ad5811f26
--- /dev/null
+++ b/graphics/asymptote/tests/template/splaytreeTest.asy
@@ -0,0 +1,553 @@
+
+import TestLib;
+
+StartTest("SplayTree_as_Set");
+
+from "template/imports/wrapper"(T=int) access
+ Wrapper_T as wrapped_int,
+ wrap,
+ alias;
+
+bool operator < (wrapped_int a, wrapped_int b) {
+ return a.t < b.t;
+}
+
+bool operator == (wrapped_int a, wrapped_int b) {
+ return a.t == b.t;
+}
+
+from "template/imports/sortedset"(T=wrapped_int) access
+ makeNaiveSortedSet,
+ SortedSet_T as SortedSet_wrapped_int;
+
+from "template/imports/splaytree"(T=wrapped_int) access
+ SplayTree_T as SplayTree_wrapped_int,
+ operator cast;
+
+struct ActionEnum {
+ static restricted int numActions = 0;
+ static private int next() {
+ return ++numActions - 1;
+ }
+ static restricted int INSERT = next();
+ static restricted int REPLACE = next();
+ static restricted int DELETE = next();
+ static restricted int CONTAINS = next();
+ static restricted int DELETE_CONTAINS = next();
+}
+
+from mapArray(Src=wrapped_int, Dst=int) access map;
+int get(wrapped_int a) {
+ return a.t;
+}
+
+int[] operator cast(wrapped_int[] a) {
+ for (wrapped_int x : a) {
+ assert(!alias(x, null), 'Null element in array');
+ }
+ return map(get, a);
+}
+
+string differences(SortedSet_wrapped_int a, SortedSet_wrapped_int b) {
+ if (a.size() != b.size()) {
+ return 'Different sizes: ' + string(a.size()) + ' vs ' + string(b.size());
+ }
+ wrapped_int[] aArray = a;
+ int[] aIntArray = aArray;
+ wrapped_int[] bArray = b;
+ int[] bIntArray = bArray;
+ string arrayValues = '[\n';
+ bool different = false;
+ for (int i = 0; i < aIntArray.length; ++i) {
+ arrayValues += ' [' + format('%5d', aIntArray[i]) + ','
+ + format('%5d', bIntArray[i]) + ']';
+ if (!alias(aArray[i], bArray[i])) {
+ arrayValues += ' <---';
+ different = true;
+ }
+ arrayValues += '\n';
+ }
+ arrayValues += ']';
+ // write(arrayValues + '\n');
+ if (different) {
+ return arrayValues;
+ }
+ return '';
+}
+
+string string(int[] a) {
+ string result = '[';
+ for (int i = 0; i < a.length; ++i) {
+ if (i > 0) {
+ result += ', ';
+ }
+ result += string(a[i]);
+ }
+ result += ']';
+ return result;
+}
+
+string string(bool[] a) {
+ string result = '[';
+ for (int i = 0; i < a.length; ++i) {
+ if (i > 0) {
+ result += ', ';
+ }
+ result += a[i] ? 'true' : 'false';
+ }
+ result += ']';
+ return result;
+}
+
+typedef void Action(int ...SortedSet_wrapped_int[]);
+
+Action[] actions = new Action[ActionEnum.numActions];
+actions[ActionEnum.INSERT] =
+ new void(int maxItem ...SortedSet_wrapped_int[] sets) {
+ wrapped_int toInsert = wrap(rand() % maxItem);
+ // write('Inserting ' + string(toInsert.t) + '\n');
+ for (SortedSet_wrapped_int s : sets) {
+ s.insert(toInsert);
+ }
+ };
+actions[ActionEnum.REPLACE] =
+ new void(int maxItem ...SortedSet_wrapped_int[] sets) {
+ wrapped_int toReplace = wrap(rand() % maxItem);
+ // write('Replacing ' + string(toReplace.t) + '\n');
+ wrapped_int[] results = new wrapped_int[];
+ for (SortedSet_wrapped_int s : sets) {
+ results.push(s.replace(toReplace));
+ }
+ if (results.length > 0) {
+ wrapped_int expected = results[0];
+ for (wrapped_int r : results) {
+ if (!alias(r, expected)) {
+ assert(false, 'Different results: ' + string(results));
+ }
+ }
+ }
+ };
+actions[ActionEnum.DELETE] =
+ new void(int maxItem ...SortedSet_wrapped_int[] sets) {
+ wrapped_int toDelete = wrap(rand() % maxItem);
+ // write('Deleting ' + string(toDelete.t) + '\n');
+ bool[] results = new bool[];
+ for (SortedSet_wrapped_int s : sets) {
+ results.push(s.delete(toDelete));
+ }
+ if (results.length > 0) {
+ bool expected = results[0];
+ for (bool r : results) {
+ assert(r == expected, 'Different results: ' + string(results));
+ }
+ }
+ };
+actions[ActionEnum.CONTAINS] =
+ new void(int maxItem ...SortedSet_wrapped_int[] sets) {
+ int toCheck = rand() % maxItem;
+ // write('Checking ' + string(toCheck) + '\n');
+ bool[] results = new bool[];
+ for (SortedSet_wrapped_int s : sets) {
+ results.push(s.contains(wrap(toCheck)));
+ }
+ if (results.length > 0) {
+ bool expected = results[0];
+ for (bool r : results) {
+ assert(r == expected, 'Different results: ' + string(results));
+ }
+ }
+ };
+actions[ActionEnum.DELETE_CONTAINS] =
+ new void(int ...SortedSet_wrapped_int[] sets) {
+ if (sets.length == 0) {
+ return;
+ }
+ int initialSize = sets[0].size();
+ if (initialSize == 0) {
+ return;
+ }
+ int indexToDelete = rand() % initialSize;
+ int i = 0;
+ wrapped_int toDelete = null;
+ bool process(wrapped_int a) {
+ if (i == indexToDelete) {
+ toDelete = wrap(a.t);
+ return false;
+ }
+ ++i;
+ return true;
+ }
+ sets[0].forEach(process);
+ assert(i < initialSize, 'Index out of range');
+ // write('Deleting ' + string(toDelete.t) + '\n');
+ int i = 0;
+ for (SortedSet_wrapped_int s : sets) {
+ assert(s.contains(toDelete), 'Contains failed ' + string(i));
+ assert(s.delete(toDelete), 'Delete failed');
+ assert(!s.contains(toDelete), 'Contains failed');
+ assert(s.size() == initialSize - 1, 'Size failed');
+ ++i;
+ }
+ };
+real[] increasingProbs = new real[ActionEnum.numActions];
+increasingProbs[ActionEnum.INSERT] = 0.7;
+increasingProbs[ActionEnum.REPLACE] = 0.1;
+increasingProbs[ActionEnum.DELETE] = 0.05;
+increasingProbs[ActionEnum.CONTAINS] = 0.1;
+increasingProbs[ActionEnum.DELETE_CONTAINS] = 0.05;
+assert(sum(increasingProbs) == 1, 'Probabilities do not sum to 1');
+
+real[] decreasingProbs = new real[ActionEnum.numActions];
+decreasingProbs[ActionEnum.INSERT] = 0.1;
+decreasingProbs[ActionEnum.REPLACE] = 0.1;
+decreasingProbs[ActionEnum.DELETE] = 0.4;
+decreasingProbs[ActionEnum.CONTAINS] = 0.1;
+decreasingProbs[ActionEnum.DELETE_CONTAINS] = 0.3;
+assert(sum(decreasingProbs) == 1, 'Probabilities do not sum to 1');
+
+SortedSet_wrapped_int sorted_set =
+ makeNaiveSortedSet(operator <, (wrapped_int)null);
+SplayTree_wrapped_int splayset =
+ SplayTree_wrapped_int(operator <, (wrapped_int)null);
+
+int chooseAction(real[] probs) {
+ real r = unitrand();
+ real sum = 0;
+ for (int i = 0; i < probs.length; ++i) {
+ sum += probs[i];
+ if (r < sum) {
+ return i;
+ }
+ }
+ return probs.length - 1;
+}
+
+bool isStrictlySorted(wrapped_int[] arr) {
+ for (int i = 1; i < arr.length; ++i) {
+ if (!(arr[i - 1] < arr[i])) {
+ return false;
+ }
+ }
+ return true;
+}
+
+int maxSize = 0;
+for (int i = 0; i < 2000; ++i) {
+ real[] probs = i < 800 ? increasingProbs : decreasingProbs;
+ int choice = chooseAction(probs);
+ actions[choice](100, sorted_set, splayset);
+ string diffs = differences(sorted_set, splayset);
+ assert(diffs == '', 'Naive vs splayset: \n' + diffs);
+ assert(isStrictlySorted(splayset), 'Not sorted');
+ maxSize = max(maxSize, splayset.size());
+}
+EndTest();
+
+StartTest("SplayTree_as_SortedSet");
+
+struct ActionEnum {
+ static restricted int numActions = 0;
+ static private int next() {
+ return ++numActions - 1;
+ }
+ static restricted int CONTAINS = next();
+ static restricted int AFTER = next();
+ static restricted int BEFORE = next();
+ static restricted int FIRST_GEQ = next();
+ static restricted int FIRST_LEQ = next();
+ static restricted int MIN = next();
+ static restricted int POP_MIN = next();
+ static restricted int MAX = next();
+ static restricted int POP_MAX = next();
+ static restricted int INSERT = next();
+ static restricted int REPLACE = next();
+ static restricted int GET = next();
+ static restricted int DELETE = next();
+ static restricted int DELETE_CONTAINS = next();
+}
+
+Action[] actions = new Action[ActionEnum.numActions];
+actions[ActionEnum.CONTAINS] =
+ new void(int maxItem ...SortedSet_wrapped_int[] sets) {
+ int toCheck = rand() % maxItem;
+ // write('Checking ' + string(toCheck) + '\n');
+ bool[] results = new bool[];
+ for (SortedSet_wrapped_int s : sets) {
+ results.push(s.contains(wrap(toCheck)));
+ }
+ if (results.length > 0) {
+ bool expected = results[0];
+ for (bool r : results) {
+ assert(r == expected, 'Different results: ' + string(results));
+ }
+ }
+ };
+actions[ActionEnum.AFTER] =
+ new void(int maxItem ...SortedSet_wrapped_int[] sets) {
+ int toCheck = rand() % maxItem;
+ // write('After ' + string(toCheck) + '\n');
+ wrapped_int[] results = new wrapped_int[];
+ for (SortedSet_wrapped_int s : sets) {
+ results.push(s.after(wrap(toCheck)));
+ }
+ if (results.length > 0) {
+ wrapped_int expected = results[0];
+ for (wrapped_int r : results) {
+ if (!alias(r, expected)) {
+ assert(false, 'Different results: ' + string(results));
+ }
+ }
+ }
+ };
+actions[ActionEnum.BEFORE] =
+ new void(int maxItem ...SortedSet_wrapped_int[] sets) {
+ int toCheck = rand() % maxItem;
+ // write('Before ' + string(toCheck) + '\n');
+ wrapped_int[] results = new wrapped_int[];
+ for (SortedSet_wrapped_int s : sets) {
+ results.push(s.before(wrap(toCheck)));
+ }
+ if (results.length > 0) {
+ wrapped_int expected = results[0];
+ for (wrapped_int r : results) {
+ if (!alias(r, expected)) {
+ assert(false, 'Different results: ' + string(results));
+ }
+ }
+ }
+ };
+actions[ActionEnum.FIRST_GEQ] =
+ new void(int maxItem ...SortedSet_wrapped_int[] sets) {
+ int toCheck = rand() % maxItem;
+ // write('First greater or equal ' + string(toCheck) + '\n');
+ wrapped_int[] results = new wrapped_int[];
+ for (SortedSet_wrapped_int s : sets) {
+ results.push(s.firstGEQ(wrap(toCheck)));
+ }
+ if (results.length > 0) {
+ wrapped_int expected = results[0];
+ for (wrapped_int r : results) {
+ if (!alias(r, expected)) {
+ assert(false, 'Different results: ' + string(results));
+ }
+ }
+ }
+ };
+actions[ActionEnum.FIRST_LEQ] =
+ new void(int maxItem ...SortedSet_wrapped_int[] sets) {
+ int toCheck = rand() % maxItem;
+ // write('First less or equal ' + string(toCheck) + '\n');
+ wrapped_int[] results = new wrapped_int[];
+ for (SortedSet_wrapped_int s : sets) {
+ results.push(s.firstLEQ(wrap(toCheck)));
+ }
+ if (results.length > 0) {
+ wrapped_int expected = results[0];
+ for (wrapped_int r : results) {
+ if (!alias(r, expected)) {
+ assert(false, 'Different results: ' + string(results));
+ }
+ }
+ }
+ };
+actions[ActionEnum.MIN] = new void(int ...SortedSet_wrapped_int[] sets) {
+ // write('Min\n');
+ wrapped_int[] results = new wrapped_int[];
+ for (SortedSet_wrapped_int s : sets) {
+ results.push(s.min());
+ }
+ if (results.length > 0) {
+ wrapped_int expected = results[0];
+ for (wrapped_int r : results) {
+ if (!alias(r, expected)) {
+ assert(false, 'Different results: ' + string(results));
+ }
+ }
+ }
+};
+actions[ActionEnum.POP_MIN] = new void(int ...SortedSet_wrapped_int[] sets) {
+ // write('Pop min\n');
+ wrapped_int[] results = new wrapped_int[];
+ for (SortedSet_wrapped_int s : sets) {
+ results.push(s.popMin());
+ }
+ if (results.length > 0) {
+ wrapped_int expected = results[0];
+ for (wrapped_int r : results) {
+ if (!alias(r, expected)) {
+ assert(false, 'Different results: ' + string(results));
+ }
+ }
+ }
+};
+actions[ActionEnum.MAX] = new void(int ...SortedSet_wrapped_int[] sets) {
+ // write('Max\n');
+ wrapped_int[] results = new wrapped_int[];
+ for (SortedSet_wrapped_int s : sets) {
+ results.push(s.max());
+ }
+ if (results.length > 0) {
+ wrapped_int expected = results[0];
+ for (wrapped_int r : results) {
+ if (!alias(r, expected)) {
+ assert(false, 'Different results: ' + string(results));
+ }
+ }
+ }
+};
+actions[ActionEnum.POP_MAX] = new void(int ...SortedSet_wrapped_int[] sets) {
+ // write('Pop max\n');
+ wrapped_int[] results = new wrapped_int[];
+ for (SortedSet_wrapped_int s : sets) {
+ results.push(s.popMax());
+ }
+ if (results.length > 0) {
+ wrapped_int expected = results[0];
+ for (wrapped_int r : results) {
+ if (!alias(r, expected)) {
+ assert(false, 'Different results: ' + string(results));
+ }
+ }
+ }
+};
+actions[ActionEnum.INSERT] =
+ new void(int maxItem ...SortedSet_wrapped_int[] sets) {
+ wrapped_int toInsert = wrap(rand() % maxItem);
+ // write('Inserting ' + string(toInsert.t) + '\n');
+ for (SortedSet_wrapped_int s : sets) {
+ s.insert(toInsert);
+ }
+ };
+actions[ActionEnum.REPLACE] =
+ new void(int maxItem ...SortedSet_wrapped_int[] sets) {
+ wrapped_int toReplace = wrap(rand() % maxItem);
+ // write('Replacing ' + string(toReplace.t) + '\n');
+ wrapped_int[] results = new wrapped_int[];
+ for (SortedSet_wrapped_int s : sets) {
+ results.push(s.replace(toReplace));
+ }
+ if (results.length > 0) {
+ wrapped_int expected = results[0];
+ for (wrapped_int r : results) {
+ if (!alias(r, expected)) {
+ assert(false, 'Different results: ' + string(results));
+ }
+ }
+ }
+ };
+actions[ActionEnum.GET] = new void(int maxItem ...SortedSet_wrapped_int[] sets)
+{
+ wrapped_int toGet = wrap(rand() % maxItem);
+ // write('Getting ' + string(toGet) + '\n');
+ wrapped_int[] results = new wrapped_int[];
+ for (SortedSet_wrapped_int s : sets) {
+ results.push(s.get(toGet));
+ }
+ if (results.length > 0) {
+ wrapped_int expected = results[0];
+ for (wrapped_int r : results) {
+ if (!alias(r, expected)) {
+ assert(false, 'Different results: ' + string(results));
+ }
+ }
+ }
+};
+actions[ActionEnum.DELETE] =
+ new void(int maxItem ...SortedSet_wrapped_int[] sets) {
+ wrapped_int toDelete = wrap(rand() % maxItem);
+ // write('Deleting ' + string(toDelete.t) + '\n');
+ bool[] results = new bool[];
+ for (SortedSet_wrapped_int s : sets) {
+ results.push(s.delete(toDelete));
+ }
+ if (results.length > 0) {
+ bool expected = results[0];
+ for (bool r : results) {
+ assert(r == expected, 'Different results: ' + string(results));
+ }
+ }
+ };
+actions[ActionEnum.DELETE_CONTAINS] =
+ new void(int ...SortedSet_wrapped_int[] sets) {
+ if (sets.length == 0) {
+ return;
+ }
+ int initialSize = sets[0].size();
+ if (initialSize == 0) {
+ return;
+ }
+ int indexToDelete = rand() % initialSize;
+ int i = 0;
+ wrapped_int toDelete = null;
+ bool process(wrapped_int a) {
+ if (i == indexToDelete) {
+ toDelete = wrap(a.t);
+ return false;
+ }
+ ++i;
+ return true;
+ }
+ sets[0].forEach(process);
+ assert(i < initialSize, 'Index out of range');
+ // write('Deleting ' + string(toDelete.t) + '\n');
+ int i = 0;
+ for (SortedSet_wrapped_int s : sets) {
+ assert(s.delete(toDelete), 'Delete failed');
+ assert(!s.contains(toDelete), 'Contains failed');
+ assert(s.size() == initialSize - 1, 'Size failed');
+ ++i;
+ }
+ };
+
+real[] increasingProbs = array(n=ActionEnum.numActions, value=0.0);
+// Actions that don't modify the set (except for rebalancing):
+increasingProbs[ActionEnum.CONTAINS] = 1 / 2^5;
+increasingProbs[ActionEnum.AFTER] = 1 / 2^5;
+increasingProbs[ActionEnum.BEFORE] = 1 / 2^5;
+increasingProbs[ActionEnum.FIRST_GEQ] = 1 / 2^5;
+increasingProbs[ActionEnum.FIRST_LEQ] = 1 / 2^5;
+increasingProbs[ActionEnum.MIN] = 1 / 2^5;
+increasingProbs[ActionEnum.MAX] = 1 / 2^5;
+increasingProbs[ActionEnum.GET] = 1 / 2^5;
+// 1/4 probability of this sort of action:
+assert(sum(increasingProbs) == 8 / 2^5);
+// Actions that might add an element:
+increasingProbs[ActionEnum.INSERT] = 1 / 4;
+increasingProbs[ActionEnum.REPLACE] = 1 / 4;
+assert(sum(increasingProbs) == 3/4);
+// Actions that might remove an element:
+increasingProbs[ActionEnum.POP_MIN] = 1 / 16;
+increasingProbs[ActionEnum.POP_MAX] = 1 / 16;
+increasingProbs[ActionEnum.DELETE] = 1 / 16;
+increasingProbs[ActionEnum.DELETE_CONTAINS] = 1 / 16;
+assert(sum(increasingProbs) == 1, 'Probabilities do not sum to 1');
+
+real[] decreasingProbs = copy(increasingProbs);
+// Actions that might add an element:
+decreasingProbs[ActionEnum.INSERT] = 1 / 8;
+decreasingProbs[ActionEnum.REPLACE] = 1 / 8;
+// Actions that might remove an element:
+decreasingProbs[ActionEnum.POP_MIN] = 1 / 8;
+decreasingProbs[ActionEnum.POP_MAX] = 1 / 8;
+decreasingProbs[ActionEnum.DELETE] = 1 / 8;
+decreasingProbs[ActionEnum.DELETE_CONTAINS] = 1 / 8;
+assert(sum(decreasingProbs) == 1, 'Probabilities do not sum to 1');
+
+SortedSet_wrapped_int sorted_set =
+ makeNaiveSortedSet(operator <, (wrapped_int)null);
+SplayTree_wrapped_int splayset =
+ SplayTree_wrapped_int(operator <, (wrapped_int)null);
+
+
+int maxSize = 0;
+for (int i = 0; i < 2000; ++i) {
+ real[] probs = i < 800 ? increasingProbs : decreasingProbs;
+ int choice = chooseAction(probs);
+ actions[choice](100, sorted_set, splayset);
+ string diffs = differences(sorted_set, splayset);
+ assert(diffs == '', 'Naive vs splayset: \n' + diffs);
+ assert(isStrictlySorted(splayset), 'Not sorted');
+ maxSize = max(maxSize, splayset.size());
+}
+
+EndTest(); \ No newline at end of file
diff --git a/graphics/asymptote/tests/template/structTest.asy b/graphics/asymptote/tests/template/structTest.asy
new file mode 100644
index 0000000000..e961397e9f
--- /dev/null
+++ b/graphics/asymptote/tests/template/structTest.asy
@@ -0,0 +1,64 @@
+struct BareStruct {
+ static string testName = "bare struct";
+}
+struct A {
+ static int global = 17;
+ int local = 3;
+}
+access 'template/imports/structTemplate'(T=A, Lib=BareStruct) as bareStruct;
+
+struct NestedStruct {
+ static string testName = "nested struct";
+}
+struct B {
+ static struct C {
+ static int global = 17;
+ int local = 3;
+ }
+}
+access 'template/imports/structTemplate'(T=B.C, Lib=NestedStruct)
+ as nestedStruct;
+
+struct InnerStruct {
+ static string testName = "inner struct";
+}
+struct D {
+ struct E {
+ static int global = 17;
+ int local = 3;
+ }
+}
+D d;
+access 'template/imports/structTemplate'(T=d.E, Lib=InnerStruct)
+ as innerStruct;
+
+struct DeeplyNestedStruct {
+ static string testName = "deeply nested struct";
+}
+
+struct G {
+ struct H {
+ static struct I {
+ static int global = 17;
+ int local = 3;
+ }
+ }
+}
+G g;
+
+access 'template/imports/structTemplate'(T=g.H.I, Lib=DeeplyNestedStruct)
+ as deeplyNestedStruct;
+
+struct ImportedStruct {
+ static string testName = "imported struct";
+}
+access 'template/imports/notTemplate' as notTemplate;
+access 'template/imports/structTemplate'(T=notTemplate.A, Lib=ImportedStruct)
+ as importedStruct;
+
+struct NestedImport {
+ static string testName = "nested import";
+}
+access 'template/imports/notTemplate2' as notTemplate2;
+access 'template/imports/structTemplate'(T=notTemplate2.b.A, Lib=NestedImport)
+ as nestedImport; \ No newline at end of file
diff --git a/graphics/asymptote/v3dheadertypes.h b/graphics/asymptote/v3dheadertypes.h
index bc83414a7d..3e29f8469f 100644
--- a/graphics/asymptote/v3dheadertypes.h
+++ b/graphics/asymptote/v3dheadertypes.h
@@ -1,6 +1,6 @@
// Enum class for v3dheadertypes
// AUTO-GENERATED from v3dheadertypes.csv
-// Generated at 2024-03-23 21:30:36
+// Generated at 2024-06-21 17:44:46+00:00
namespace camp
{
diff --git a/graphics/asymptote/v3dheadertypes.py b/graphics/asymptote/v3dheadertypes.py
index 2c354159fb..988128ff44 100644
--- a/graphics/asymptote/v3dheadertypes.py
+++ b/graphics/asymptote/v3dheadertypes.py
@@ -1,7 +1,7 @@
#!/usr/bin/env python3
# Enum class for v3dheadertypes
""" AUTO-GENERATED from v3dheadertypes.csv """
-# Generated at 2024-03-23 21:31:00
+# Generated at 2024-06-21 17:45:18+00:00
class v3dheadertypes:
v3dheadertypes_canvasWidth=1
diff --git a/graphics/asymptote/v3dtypes.h b/graphics/asymptote/v3dtypes.h
index 9236375f63..9713798875 100644
--- a/graphics/asymptote/v3dtypes.h
+++ b/graphics/asymptote/v3dtypes.h
@@ -1,6 +1,6 @@
// Enum class for v3dtypes
// AUTO-GENERATED from v3dtypes.csv
-// Generated at 2024-03-23 21:30:36
+// Generated at 2024-06-21 17:44:46+00:00
namespace camp
{
diff --git a/graphics/asymptote/v3dtypes.py b/graphics/asymptote/v3dtypes.py
index e4fab69f57..9dab614b51 100644
--- a/graphics/asymptote/v3dtypes.py
+++ b/graphics/asymptote/v3dtypes.py
@@ -1,7 +1,7 @@
#!/usr/bin/env python3
# Enum class for v3dtypes
""" AUTO-GENERATED from v3dtypes.csv """
-# Generated at 2024-03-23 21:31:00
+# Generated at 2024-06-21 17:45:18+00:00
class v3dtypes:
v3dtypes_material=1
diff --git a/graphics/pgf/contrib/pgfgantt/README b/graphics/pgf/contrib/pgfgantt/README
index b46f25054c..017c065fc6 100644
--- a/graphics/pgf/contrib/pgfgantt/README
+++ b/graphics/pgf/contrib/pgfgantt/README
@@ -1,19 +1,22 @@
-The pgfgantt package v5.0
+The pgfgantt package v5.0a
------------------------------------------------------------------------------
This package is released under the LaTeX Project Public License v1.3c or later
-(see http://www.latex-project.org/lppl.txt).
+(see https://www.latex-project.org/lppl.txt).
The pgfgantt package provides the ganttchart environment, which
draws a Gantt chart within a TikZ picture. The user may add various
-elements to the chart, for example, titles, bars, groups, milestones and different
-links between these elements. The appearance of the chart elements
+elements to the chart, for example, titles, bars, groups, milestones and
+different links between these elements. The appearance of the chart elements
is highly customizable, and even new chart elements may be defined.
-The package makes use of pgf/TikZ (http://tug.ctan.org/pkg/pgf).
+The package requires pgf/TikZ (https://ctan.org/pkg/pgf).
Installation: Run pgfgantt.ins through LaTeX and follow the instructions.
+This package is unmaintained. If you want to volunteer to take over
+the maintenance, contact me at https://wolfgang.esser-skala.at/contact/ .
+
--
-Wolfgang Skala
-10th January 2018
+Wolfgang Esser-Skala
+2024-06-19
diff --git a/graphics/pgf/contrib/pgfgantt/pgfgantt-doc.pdf b/graphics/pgf/contrib/pgfgantt/pgfgantt-doc.pdf
new file mode 100644
index 0000000000..62c09d84c7
--- /dev/null
+++ b/graphics/pgf/contrib/pgfgantt/pgfgantt-doc.pdf
Binary files differ
diff --git a/graphics/pgf/contrib/pgfgantt/pgfgantt.dtx b/graphics/pgf/contrib/pgfgantt/pgfgantt.dtx
index 7bb4d52138..e734668f59 100644
--- a/graphics/pgf/contrib/pgfgantt/pgfgantt.dtx
+++ b/graphics/pgf/contrib/pgfgantt/pgfgantt.dtx
@@ -1,19 +1,19 @@
% \iffalse meta-comment
%
-% Copyright (C) 2018 by Wolfgang Skala
+% Copyright (C) 2024 by Wolfgang Esser-Skala
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3c
% of this license or (at your option) any later version.
% The latest version of this license is in
-% http://www.latex-project.org/lppl.txt
+% https://www.latex-project.org/lppl.txt
% and version 1.3c or later is part of all distributions of LaTeX
% version 2008/05/04 or later.
%
% \fi
%
% \iffalse
-%<pgfgantt>\ProvidesPackage{pgfgantt}[2018/01/10 v5.0 Draw Gantt diagrams with TikZ]
+%<pgfgantt>\ProvidesPackage{pgfgantt}[2024/06/19 v5.0a Draw Gantt diagrams with TikZ]
%<pgfgantt>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%
%<*driver>
@@ -181,30 +181,10 @@
\ignorespaces}
\let\endoption\endmacro
\let\endintmacro\endmacro
-\renewenvironment{theglossary}{\glossary@prologue\GlossaryParms\let\item\@idxitem\ignorespaces}{}
\makeatother
\AtBeginDocument{\lstMakeShortInline|}
-\begingroup
- \makeatletter
- \def\x\begingroup#1\@nil{%
- \endgroup
- \def\DoNotIndex{%
- \begingroup
- \@makeother\#%
- \@makeother\$%
- \@makeother\%%
- \@makeother\^%
- \@makeother\_%
- \@makeother\~%
- \@makeother\ %
- \@makeother\&%
- #1%
- }%
- }%
-\expandafter\x\DoNotIndex\@nil
-
\usepackage[
hyperfootnotes=false,
bookmarksnumbered,%
@@ -237,27 +217,13 @@
\def\TikZ{Ti\textit{k}Z}
\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}}
-\def\GlossaryParms{%
- \def\pfill##1{}
- \parindent 0pt
- \parskip 0pt plus 1pt
- \small\raggedright
- \def\@idxitem{\par\hangindent 30pt}%
- \def\subitem{\@idxitem\hspace*{15pt}}%
- \def\subsubitem{\@idxitem\hspace*{25pt}}%
- \def\indexspace{\par\vspace{10pt plus 2pt minus 3pt}}%
-}
-
\usepackage{pgfgantt}
\usetikzlibrary{shadows,shadings,decorations.pathmorphing,shapes.misc}
\EnableCrossrefs
\CodelineIndex
-\RecordChanges
\IndexPrologue{\clearpage\section{Index}\markboth{Index}{Index}Bold numbers refer to the page where the corresponding entry is described; italic numbers refer to the code line of the definition; upright numbers refer to the code lines where the entry is used.}
-\GlossaryPrologue{\clearpage\section{Change History}\markboth{Change history}{Change history}}
-
\setkomafont{title}{\rmfamily\bfseries}
\addtokomafont{sectioning}{\rmfamily}
@@ -270,34 +236,15 @@
%</driver>
% \fi
%
-% \CheckSum{2245}
-%
-% \CharacterTable
-% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
-% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
-% Digits \0\1\2\3\4\5\6\7\8\9
-% Exclamation \! Double quote \" Hash (number) \#
-% Dollar \$ Percent \% Ampersand \&
-% Acute accent \' Left paren \( Right paren \)
-% Asterisk \* Plus \+ Comma \,
-% Minus \- Point \. Solidus \/
-% Colon \: Semicolon \; Less than \<
-% Equals \= Greater than \> Question mark \?
-% Commercial at \@ Left bracket \[ Backslash \\
-% Right bracket \] Circumflex \^ Underscore \_
-% Grave accent \` Left brace \{ Vertical bar \|
-% Right brace \} Tilde \~}
-%
-%
% \GetFileInfo{pgfgantt.sty}
%
% \DoNotIndex{\@auxout,\@empty,\@firstoftwo,\@ifundefined,\@namedef,\@nameuse,\@tempa,\@tempb,\@tempc,\@tempcnta,\@tempcntb,\@tempdima,\advance,\anchor,\backgroundpath,\begin,\begingroup,\bfseries,\breakforeach,\clip,\csname,\def,\divide,\draw,\edef,\else,\end,\endcsname,\endgroup,\expandafter,\fi,\foreach,\global,\i,\ifcase,\ifdate,\ifdim,\ifnum,\ifx,\inheritanchor,\inheritanchorborder,\inheritbackgroundpath,\inheritsavedanchors,\itshape,\kernel@ifnextchar,\let,\multiply,\newcommand,\newcount,\newenvironment,\newif,\node,\normalcolor,\normalfont,\normalsize,\northeast,\outernortheast,\PackageError,\PackageWarning,\path,\pgf@process,\pgf@x,\pgf@y,\pgf@xa,\pgf@xb,\pgf@xc,\pgf@ya,\pgf@yb,\pgf@yc,\pgfcalendar,\pgfcalendarbeginjulian,\pgfcalendarcurrentday,\pgfcalendarcurrentjulian,\pgfcalendarcurrentmonth,\pgfcalendarcurrentweekday,\pgfcalendarcurrentyear,\pgfcalendardatetojulian,\pgfcalendarendiso,\pgfcalendarifdateday,\pgfcalendarifdatemonth,\pgfcalendarifdateyear,\pgfcalendarjuliantodate,\pgfcalendarmatchestrue,\pgfdeclareshape,\pgfextractx,\pgfkeys,\pgfkeyscurrentname,\pgfkeyssetvalue,\pgfkeysvalueof,\pgfmathparse,\pgfmathprintnumber,\pgfmathresult,\pgfmathsetlength,\pgfmathsetmacro,\pgfpathclose,\pgfpathlineto,\pgfpathmoveto,\pgfpoint,\pgfpointadd,\pgfpointanchor,\pgfpointdiff,\pgfpointscale,\pgfqkeys,\protected@write,\relax,\RequirePackage,\savedanchor,\scriptsize,\setcounter,\small,\southwest,\stepcounter,\string,\strut,\t,\the,\tikz@align@newline,\usetikzlibrary,\value,\x,\xdef}
%
-%
+%
% \title{Drawing Gantt Charts in \LaTeX\\with \TikZ}
% \subtitle{The \texttt{pgfgantt} Package}
-% \author{Wolfgang Skala\thanks{Department of Biosciences, University of Salzburg, Austria; \texttt{Wolfgang.Skala@sbg.ac.at}}}
-% \date{\fileversion\\\filedate}
+% \author{\texorpdfstring{Wolfgang Esser-Skala\thanks{Computational Systems Biology Group, Department of Biosciences and Medical Biology, University of Salzburg, Austria; \texttt{Wolfgang.Esser-Skala@plus.ac.at}}}{Wolfgang Esser-Skala}}
+% \date{\fileversion\\\filedate}
% \maketitle
%
% \begin{abstract}
@@ -305,72 +252,13 @@
% \end{abstract}
%
% \clearpage\tableofcontents
-% \changes{v5.0}{2018/01/10}{\cs{gantttitlecalendar} now recognizes the \texttt{decade} key.}
-% \changes{v5.0}{2018/01/10}{Key \texttt{compress calendar} has been replaced by \texttt{time slot unit} to allow an additional level of compression (year).}
-% \changes{v5.0}{2018/01/10}{The command \cs{ganttvrule} allows to draw general vertical rules (similar to the today rule). The keys \texttt{vrule}, \texttt{vrule offset}, \texttt{vrule label font} and \texttt{vrule label text} configure those rules.}
-% \changes{v5.0}{2018/01/10}{The key \texttt{expand chart} was added, which specifies that a chart should expand horizontally to a given dimension.}
-% \changes{v5.0}{2018/01/10}{The key \texttt{title label text} was added to allow fine-tuning of title label formatting.}
-% \changes{v5.0}{2018/01/10}{Made \pack{pgfgantt} robust to \pack{amsgen}'s redefinition of \cs{@ifstar}.}
-% \changes{v4.0}{2013/06/01}{The key \texttt{link label anchor} was renamed to \texttt{link label node}.}
-% \changes{v4.0}{2013/06/01}{\cs{newganttchartelement} defines completely new chart elements.}
-% \changes{v4.0}{2013/06/01}{The key \texttt{progress label anchor} was replaced by \texttt{bar}/\texttt{group}/\texttt{milestone progress label node}.}
-% \changes{v4.0}{2013/06/01}{The keys \texttt{bar}/\texttt{group}/\texttt{milestone progress label anchor} were added.}
-% \changes{v4.0}{2013/06/01}{The key \texttt{progress label font} was replaced by the keys \texttt{bar}/\texttt{group}/\texttt{milestone progress label font}.}
-% \changes{v4.0}{2013/06/01}{The key \texttt{incomplete} was removed.}
-% \changes{v4.0}{2013/06/01}{The keys \texttt{group right}/\texttt{left peak} and \texttt{group peaks} were replaced by \texttt{group right}/\texttt{left peak tip position}, \texttt{group peaks tip position}, \texttt{group right}/\texttt{left peak width}, \texttt{group peaks width}, \texttt{group right}/\texttt{left peak height} and \texttt{group peaks height}.}
-% \changes{v4.0}{2013/06/01}{Chart elements are now nodes, so the corresponding styles must specify a node shape.}
-% \changes{v4.0}{2013/06/01}{The key \texttt{time slot modifier} was renamed to \texttt{chart element start border}.}
-% \changes{v4.0}{2013/06/01}{The keys \texttt{bar}/\texttt{group}/\texttt{milestone label inline anchor} were renamed to \texttt{bar}/\texttt{group}/\texttt{milestone inline label node}.}
-% \changes{v4.0}{2013/06/01}{The keys \texttt{bar}/\texttt{group}/\texttt{milestone label shape anchor} were renamed to \texttt{bar}/\texttt{group}/\texttt{milestone inline label anchor}.}
-% \changes{v4.0}{2013/06/01}{The keys \texttt{bar}/\texttt{group}/\texttt{milestone label anchor} were renamed to \texttt{bar}/\texttt{group}/\texttt{milestone label node}.}
-% \changes{v4.0}{2013/06/01}{The key \texttt{title label anchor} was renamed to \texttt{title label node}.}
-% \changes{v4.0}{2013/06/01}{\cs{gantttitlecalendar} prints a title calendar.}
-% \changes{v4.0}{2013/06/01}{The keys \texttt{calendar week text} and \texttt{compress calendar} were added.}
-% \changes{v4.0}{2013/06/01}{The key \texttt{newline shortcut} determines whether the shortcut for line breaks is defined in the chart. In this case, \cs{ganttalignnewline} allows line breaks in the node text.}
-% \changes{v4.0}{2013/06/01}{The keys \texttt{today offset}, \texttt{today label font} and \texttt{today label node} were added.}
-% \changes{v4.0}{2013/06/01}{The key \texttt{today} accepts a time slot specifier.}
-% \changes{v4.0}{2013/06/01}{The canvas is now a node with shape \texttt{rectangle} by default.}
-% \changes{v4.0}{2013/06/01}{\cs{newgantttimeslotformat} allows the user to define custom time slot formats.}
-% \changes{v4.0}{2013/06/01}{The key \texttt{time slot format/start date} specifies the internal date representation of digit 1 in the \texttt{simple} time slot format.}
-% \changes{v4.0}{2013/06/01}{The key \texttt{time slot format/base century} provides the century for autocompletion of two-digit years.}
-% \changes{v4.0}{2013/06/01}{The key \texttt{time slot format} changes the format of time slot specifiers.}
-% \changes{v4.0}{2013/06/01}{The \texttt{ganttchart} environment now requires two mandatory arguments.}
-%
-% \changes{v3.0}{2012/01/25}{\cs{setganttlinklabel} specifies the label for all links of a certain type. The \texttt{link label} key locally overrides any label set by this command.}
-% \changes{v3.0}{2012/01/25}{The \texttt{chart element} shape supports four additional anchors (\texttt{on left}, \texttt{on top}, \texttt{on right} and \texttt{on bottom}).}
-% \changes{v3.0}{2012/01/25}{\cs{@gtt@get} has been renamed to \cs{ganttvalueof} to provide a convenient access for link type authors.}
-% \changes{v3.0}{2012/01/25}{\cs{@gtt@keydef} and \cs{@gtt@stylekeydef} have been rewritten to support \texttt{pgfkey}'s abilities to store key values.}
-% \changes{v3.0}{2012/01/25}{New auxiliary macros for \cs{newganttlinkstyle}: \cs{xLeft}, \cs{xRight}, \cs{yUpper}, \cs{yLower}, \cs{ganttsetstartanchor}, \cs{ganttsetendanchor} and \cs{ganttlinklabel}.}
-% \changes{v3.0}{2012/01/25}{Completely rewrote the code for links (again). Definition of new link types is now possible (via \cs{newganttlinktype} and \cs{newganttlinktypealias}).}
-% \changes{v3.0}{2012/01/25}{The \texttt{bar/group/milestone label shape anchor} keys allow for a fine-tuned placement of chart element labels.}
-% \changes{v3.0}{2012/01/25}{All style keys (\texttt{canvas}, \texttt{bar} etc.) only support the common \TikZ\ style key syntax.}
-% \changes{v2.1}{2011/11/10}{The \texttt{inline} key moves labels close to their respective chart elements.}
-% \changes{v2.1}{2011/11/10}{Added three keys (\texttt{bar/group/milestone label inline anchor}) for placing inline labels.}
-% \changes{v2.1}{2011/11/10}{The \texttt{ganttchart} environment may be used outside a \texttt{tikzpicture}.}
-% \changes{v2.0}{2011/10/10}{The syntax of \cs{ganttlink} was completely changed. The command now takes one optional and \textit{two} mandatory arguments. The latter specify the name of the chart elements to be linked. Consequently, the keys \texttt{b-b}, \texttt{b-m}, \texttt{m-b} and \texttt{m-m} were removed. The keys \texttt{s-s}, \texttt{s-f}, \texttt{f-s} and \texttt{f-f} are now values for the \texttt{link type} key.}
-% \changes{v2.0}{2011/10/10}{The optional argument of \cs{ganttnewline} now also accepts a style.}
-% \changes{v2.0}{2011/10/10}{Removed the \texttt{hgrid shift} and \texttt{last line height} keys.}
-% \changes{v2.0}{2011/10/10}{Removed the \texttt{vgrid lines list} key, as its behaviour can be simulated by an appropriate \meta{style list} for \texttt{vgrid}.}
-% \changes{v2.0}{2011/10/10}{Added style lists for the horizontal and vertical grid.}
-% \changes{v2.0}{2011/10/10}{Removed the \texttt{vgrid style} key.}
-% \changes{v2.0}{2011/10/10}{Completely rewrote the calculation of coordinates.}
-% \changes{v2.0}{2011/10/10}{The \texttt{x unit}, \texttt{y unit title} and \texttt{y unit chart} keys specify the width of time slots and the height of title or chart lines, respectively. Thus, one can draw titles whose height differs from the rest of the chart. Furthermore, the $x$- and $y$-dimensions of the chart are independent of the dimensions of the surrounding \texttt{tikzpicture}.}
-% \changes{v1.1}{2011/04/18}{\texttt{link tolerance} decides whether a five- or a three-part link is drawn.}
-% \changes{v1.1}{2011/04/18}{\texttt{milestone label text} configures the text of a milestone label.}
-% \changes{v1.1}{2011/04/18}{\texttt{bar label text} configures the text of a bar label.}
-% \changes{v1.1}{2011/04/18}{The \texttt{time slot modifier} key has been added. If set to zero, all $x$-coordinates are interpreted as given, without regarding them as time slots.}
-% \changes{v1.1}{2011/04/18}{The \texttt{vgrid lines list} key determines the number of vertical grid lines drawn.}
-% \changes{v1.1}{2011/04/18}{The introduction clarifies what I mean by ``a current \textsc{pgf} installation''.}
-% \changes{v1.1}{2011/04/18}{\texttt{group label text} configures the text of a group label.}
-% \changes{v1.0}{2011/03/01}{Initial release}
-%
%
% \clearpage\section{Introduction}
%
-% The \pack{pgfgantt} package allows you to draw Gantt charts in \LaTeX. Thus, you can describe simple project schedules without having to include images produced by external programs. Similar to Martin Kumm's \pack{gantt} package\footnote{\url{http://www.martin-kumm.de/tex_gantt_package.php}} (which inspired \pack{pgfgantt}'s fundamental aspects), \pack{pgfgantt} bases upon \textsc{pgf} and its \TikZ\ frontend\footnote{\url{http://ctan.org/tex-archive/graphics/pgf/}}. Besides, it provides a comprehensive (and portable) alternative to \pack{pst-gantt}\footnote{\url{http://ctan.org/tex-archive/graphics/pstricks/contrib/pst-gantt/}}.
+% The \pack{pgfgantt} package allows you to draw Gantt charts in \LaTeX. Thus, you can describe simple project schedules without having to include images produced by external programs. Similar to Martin Kumm's \pack{gantt} package\footnote{\url{https://www.martin-kumm.de/tex_gantt_package.php}} (which inspired \pack{pgfgantt}'s fundamental aspects), \pack{pgfgantt} bases upon \textsc{pgf} and its \TikZ\ frontend\footnote{\url{https://ctan.org/pkg/pgf/}}. Besides, it provides a comprehensive (and portable) alternative to \pack{pst-gantt}\footnote{\url{https://ctan.org/pkg/pst-gantt/}}.
%
% \paragraph{Requirements} \pack{pgfgantt} requires a \textit{current} \textsc{pgf} installation. Note that the version number must at least be 2.10, dated October 25th, 2010. Furthermore, \pack{pgfgantt}~\fileversion\ and above is not fully downwards compatible.
-%
+%
% \paragraph{Suggestions} Please report any suggestions and improvements at the project's GitHub page (\url{https://github.com/skafdasschaf/latex-pgfgantt}).
%
% \paragraph{Acknowledgements} I would like to thank the following people for their ideas concerning new features:
@@ -425,7 +313,7 @@
% \end{ganttchart}
% \end{center}
%
-%
+%
% \subsection{Specifying Keys}
%
% \textit{Keys} (sometimes called \textit{options}) modify the output from \pack{pgfgantt}'s commands. You may specify a key in two ways: (1) Pass it to the optional argument present in each command, e.\,g.
@@ -439,7 +327,7 @@
% Since \pack{pgfgantt} uses the \pack{pgfkeys} package for key management, all its keys reside in the |/pgfgantt/| path. However, if you set your keys by one of the methods explained above, this path is automatically prepended to each key.
%
% \subsection{The Canvas}
-%
+%
% Let us have a look at the basic anatomy of a Gantt chart and define some common terms. Each \textit{chart} consists of several \textit{lines}, which may contain one or more \textit{title elements} (at the top) or \textit{chart elements} (such as bars, groups and milestones). From left to right, the chart is divided into an integer number of \textit{time slots} that represent the basic $x$-unit.
%
% The \DescribeEnv{ganttchart}|ganttchart| environment draws a single Gantt chart:
@@ -449,7 +337,7 @@
% \end{ganttchart}
% \end{texcode}
% The environment has one optional argument, which specifies the \meta{options} for the chart, and two mandatory arguments, which indicate the start and end time slot specifier. Although you will often put a |ganttchart| into a |tikzpicture| environment, you may actually use this environment on its own. \pack{pgfgantt} checks whether a chart is surrounded by a |tikzpicture| and adds this environment if necessary.
-%
+%
% \begin{key}{time slot format}{\meta{format}}{simple}
% Sets the \meta{format} of time slot specifiers. A \textbf{time slot specifier} (abbreviated ``tss'') denotes a certain time slot along the horizontal axis. \pack{pgfgantt} defines a range of formats:
% \begin{itemize}
@@ -469,23 +357,23 @@
% \textit{Examples:} \texttt{2013-03-14}, \texttt{13/03/14}, \texttt{2013.3.14}
% \end{itemize}
% \end{key}
-%
+%
% \noindent Two subkeys of \opt{time slot format} let you configure \pack{pgfgantt}'s behavior regarding automatic completion of abbreviated dates:
-%
+%
% \begin{key}{time slot format/base century}{\meta{year}}{2000}
% Sets the century for auto-completion of two-digit years (used by the time slot formats \texttt{little-endian}, \texttt{middle-endian} and \texttt{big-endian}). Consequently, default settings convert a year like \texttt{13} to \texttt{2013}.
% \end{key}
-%
+%
% \begin{key}{time slot format/start date}{\meta{ISO-standard date}}{2000-01-01}
% Numbers denoting time slots in the \texttt{simple} format are internally converted to a date, where \texttt{1} is converted to \meta{ISO-standard date}, \texttt{2} to $\meta{ISO-standard date} + 1$ etc.
% \end{key}
-%
+%
% \bigskip\noindent Advanced users may add their own time slot \DescribeMacro{\newgantttimeslotformat}formats:
% \begin{texcode}
% \newgantttimeslotformat`\marg{name}\marg{converter code}'
% \end{texcode}
% Defines a new time slot format called \meta{name}. The \meta{converter code} must convert the time slot specifier stored in |#1| to its corresponding Julian day number (see section~57 of the \TikZ\ manual) and assign this number to the count register |#2|. The \meta{converter code} is executed within a \TeX\ group, so you may use temporary macros like |\@tempa|, counts like |\@tempcnta| etc.
-%
+%
% For example, we would like to create a format called \texttt{stardate}, where dates are given as ``\meta{year}\texttt{.}\meta{day of year}''. Thus, we will enter 24th February 2259 as ``\texttt{2259.55}''. To this end, we write the following code:
% \par\bigskip\noindent
% \begin{texcode}[numbers=left]
@@ -498,10 +386,10 @@
% \advance#2 by-1\relax%
% \advance#2 by\stardateday\relax%
% }
-%
+%
% \begin{ganttchart}[
% hgrid,
-% vgrid,
+% vgrid,
% time slot format=stardate
% ]{2259.55}{2259.67}
% \gantttitlecalendar{year, month=name, day} \\
@@ -517,18 +405,18 @@
% \advance#2 by-1\relax%
% \advance#2 by\stardateday\relax%
% }
-%
+%
% \begin{ganttchart}[
% hgrid,
-% vgrid,
+% vgrid,
% time slot format=stardate
% ]{2259.55}{2259.67}
% \gantttitlecalendar{year, month=name, day} \\
% \end{ganttchart}
% \end{center}
-%
+%
% \noindent The macro |\decomposestardate| (lines 2--4) has two delimited arguments: The first one is delimited by a period and the second one by |\relax|. The call in line 5 decomposes the tss stored in |#1| and saves the day in |\stardateday| and the year in |\stardateyear|. |\pgfcalendardatetojulian| (section~57.1.1 of the \TikZ\ manual) calculates the Julian date of the first day of |\stardateyear| and stores it in |#2| (line 6). We then subtract 1 from |#2| (line 7) and add the |\stardateday| (line 8).
-%
+%
% \begin{key}[./style=]{canvas}{\meta{style}}{shape=rectangle, draw, fill=white}
% The \opt{canvas} key changes the appearance of the canvas. \meta{style} is a list of \TikZ\ keys suitable for the \meta{options} of a \TikZ\ node (such as |shape=rectangle|, |fill| or |draw|; see chapter~16 of the \TikZ\ manual). By default, the canvas is a white rectangle with a black frame.
% \par\bigskip\noindent
@@ -617,9 +505,9 @@
% \opt{hgrid} draws a horizontal grid which starts immediately below the last title element. The key can be specified in four different ways: Firstly, \opt{hgrid}|=false| eliminates the horizontal grid. You may omit this declaration, since it is the default. Secondly, both \opt{hgrid} and \opt{hgrid}|=true| activate the horizontal grid, which is then drawn in the default style |dotted|. Finally, \opt{hgrid}|=|\meta{style list} draws the horizontal grid in the given \meta{style list} (see below).
%
% \opt{hgrid style} changes the style of single horizontal grid lines that are drawn with |\ganttnewline[grid]| (see section~\ref{ssc:LineBreaks}).
-%
+%
% The \opt{vgrid} key governs the vertical grid; otherwise, use it exactly like \opt{hgrid}.
-%
+%
% \textit{Style lists} allow you to draw the grid lines in different styles. Each style list consists of several \textit{style list items} separated by a comma. A style list item has the general syntax |*{|\meta{n}|}{|\meta{style}|}| and orders the package to repeat the \meta{style} \meta{n}-times. (This syntax is reminiscent of column specifications in a |tabular| environment.) Thus, the list |*2{red}, *1{green}, *{10}{blue, dashed}| instructs \pack{pgfgantt} to draw first two red vertical grid lines, then a green one and finally ten dashed blue lines. If any grid lines remain to be drawn at the end of the list, the package starts again at the beginning of the list.
% \par\bigskip\noindent
% \begin{texcode}
@@ -642,7 +530,7 @@
% \ganttbar{}{9}{20}
% \end{ganttchart}
% \end{center}
-%
+%
% In most situations, you can omit the multiplier |*1|. Hence, the following style lists are equal:\\
% |{*1{red}, *1{blue, dashed}}|\\
% |{{red}, {blue, dashed}}|\\
@@ -653,7 +541,7 @@
% \begin{minipage}[t]{.45\textwidth}
% \begin{texcode}
% % wrong code
-%
+%
% \begin{ganttchart}[
% hgrid=true,
% vgrid={{red, dotted}}
@@ -667,7 +555,7 @@
% \begin{minipage}[t]{.45\textwidth}
% \begin{texcode}
% % correct code
-%
+%
% \begin{ganttchart}[
% hgrid=true,
% vgrid={*1{red, dotted}}
@@ -717,7 +605,7 @@
% \end{ganttchart}
% \end{center}
% \end{key}
-%
+%
% \begin{key}{today}{\meta{tss}}{none}
% \keyline{today offset}{\meta{number}}{1}
% \keyline[/.style=]{today rule}{\meta{style}}{dashed, line width=1pt}
@@ -787,13 +675,13 @@
% \end{ganttchart}
% \end{center}
% \end{key}
-%
-%
+%
+%
% \subsection{Line Breaks between Chart Elements}
% \label{ssc:LineBreaks}
%
% \pack{pgfgantt} does not automatically begin a new line after finishing a \DescribeMacro{\ganttnewline}chart element. Instead, you must insert an explicit line break with |\ganttnewline|.
-%
+%
% \begin{key}{newline shortcut}{\meta{boolean}}{true}
% If true, \DescribeMacro{\\}|\\| is defined as a shortcut for |\ganttnewline| within a |ganttchart| environment, so that the syntax is reminiscent of \LaTeX's |tabular| enviroment.
% \par\bigskip\noindent
@@ -868,7 +756,7 @@
% }{1}{3}
% \end{ganttchart}
% \end{center}
-%
+%
% Even if you prefer a canvas without a horizontal grid, you may nevertheless want to separate certain lines by a grid rule. For this purpose, specify the optional argument |[grid]| for |\ganttnewline| (or |\\|), which draws a grid rule in \opt{hgrid style} between the current and the new line. Alternatively, directly give the desired style as optional argument.
% \par\bigskip\noindent
% \begin{texcode}
@@ -921,7 +809,7 @@
% \gantttitlelist`\oarg{options}\marg{pgffor list}\marg{length of each element}'
% \end{texcode}
% This macro generates one title element for each element of the \meta{pgffor list}. The second mandatory argument specifies the \meta{length of each element}. Refer to section~56 of the \TikZ\ manual for the detailed syntax for the \meta{pgffor list}.
-%
+%
% A simple application is to draw twelve title elements that contain the numbers from 1 to 12. The \meta{pgffor list} is |1,...,12|.
% \par\bigskip\noindent
% \begin{texcode}
@@ -942,9 +830,9 @@
% \begin{texcode}
% \gantttitle{1}{1} \gantttitle{2}{1} `\dots' \gantttitle{12}{1} \\
% \end{texcode}
-%
+%
% As an advanced example, we will draw seven title elements containing the names of the weekdays (``Mon'' to ``Sun''). To this end, we introduce an additional key:
-%
+%
% \begin{key}{title list options}{\meta{pgffor options}}{var=\string\x, evaluate=\string\x}
% Changes the \meta{pgffor options} of the |\foreach| command called by |\gantttitlelist| (see section~56 of the \TikZ\ manual). The macro that yields the labels to be printed by |\gantttitlelist| must be called |\x|.
% \par\bigskip\noindent\shorthandoff{"}
@@ -971,7 +859,7 @@
% \end{ganttchart}
% \end{center}\shorthandon{"}
% \end{key}
-%
+%
% \bigskip While you actually may build any chart title with the two commands described previously, \DescribeMacro{\gantttitlecalendar}|\gantttitlecalendar| saves a lot of time when you wish to create elaborate calendars:
% \begin{texcode}
% \gantttitlecalendar`\oarg{options}\marg{calendar lines}'
@@ -999,7 +887,7 @@
% \bottomrule
% \end{tabular}
% \end{center}
-%
+%
% The \meta{number} for the \texttt{week} line type is the number of the first week in the calendar.
% \par\bigskip\noindent
% \begin{texcode}
@@ -1024,16 +912,16 @@
% \ganttbar{}{2013-01-14}{2013-01-17}
% \end{ganttchart}\hspace*{-51.4pt}
% \end{center}
-%
+%
% You can easily add new output formats for \texttt{month} and \texttt{weekday}. The predefined ones use the macros described in section~57.1.3 of the \TikZ\ manual. For example, |weekday=name| calls |\pgfcalendarweekdayname|. Thus, new macros called |\pgfcalendarmonth|\textcolor{RoyalBlue}{\meta{output format}} or |\pgfcalendarweekday|\textcolor{RoyalBlue}{\meta{output format}} will provide additional \meta{output format}s for |month| and |weekday|, respectively.
-%
+%
% A weekday output format called |letter|, which displays a weekday as single letter, might be implemented as follows:
% \par\bigskip\noindent
% \begin{texcode}
% \def\pgfcalendarweekdayletter#1{%
% \ifcase#1M\or T\or W\or T\or F\or S\or S\fi%
% }
-%
+%
% \begin{ganttchart}[
% hgrid,
% vgrid,
@@ -1050,7 +938,7 @@
% \def\pgfcalendarweekdayletter#1{%
% \ifcase#1M\or T\or W\or T\or F\or S\or S\fi%
% }
-%
+%
% \begin{ganttchart}[
% hgrid,
% vgrid,
@@ -1063,7 +951,7 @@
% }
% \end{ganttchart}
% \end{center}
-%
+%
% \begin{key}{calendar week text}{\meta{format}}{Week\string~\string\currentweek}
% Changes the text displayed in a week title element. In \meta{format}, four additional macros are available: \DescribeMacro{\currentweek}|\currentweek| is the current week number; \DescribeMacro{\startyear}|\startyear|, \DescribeMacro{\startmonth}|\startmonth| and \DescribeMacro{\startday}|\startday| expand to the year, month and day of the current week's Monday.
% \par\bigskip\noindent
@@ -1100,7 +988,7 @@
% \end{ganttchart}
% \end{center}
% \end{key}
-%
+%
% \begin{key}{time slot unit}{\texttt{day}\space\textbar\space\texttt{month}\space\textbar\space\texttt{year}}{day}
% By default, one \textit{calendar day} is one time slot wide. With \opt{time slot unit}\texttt{=month}, one \textit{month} corresponds to one time slot. Consequently, in such calendars only |year| and |month| are sensible line types for |\gantttitlecalendar|, and the time slot format \texttt{isodate-yearmonth} is especially suited.
% \par\bigskip\noindent
@@ -1226,7 +1114,7 @@
% \end{ganttchart}
% \end{center}
% \end{key}
-%
+%
% \begin{key}{title left shift}{\meta{factor}}{0}
% \keyline{title right shift}{\meta{factor}}{0}
% \keyline{title top shift}{\meta{factor}}{0}
@@ -1394,7 +1282,7 @@
%
%
% \subsection{Predefined Chart Elements}
-%
+%
% \pack{pgfgantt} predefines three chart elements:
% \begin{enumerate}
% \item \DescribeMacro{\ganttbar}\textit{Bars} indicate the duration of a task or one of its parts.
@@ -1411,7 +1299,7 @@
% \end{texcode}
% \end{enumerate}
% Each of these macros draws a \meta{label}ed chart element from the \meta{start tss} to the \meta{end tss} (or at the given \meta{tss} in case of |\ganttmilestone|).
-%
+%
% \par\bigskip\noindent
% \begin{texcode}
% \begin{ganttchart}[vgrid, hgrid]{1}{12}
@@ -1443,7 +1331,7 @@
% \begin{minipage}[t]{.49\textwidth}
% \begin{texcode}
% % Short version
-%
+%
% \begin{ganttchart}[
% vgrid,
% hgrid
@@ -1459,7 +1347,7 @@
% \begin{minipage}[t]{.47\textwidth}
% \begin{texcode}
% % Long version
-%
+%
% \begin{ganttchart}[
% vgrid,
% hgrid
@@ -1475,7 +1363,7 @@
% \end{ganttchart}
% \end{texcode}
% \end{minipage}
-%
+%
% \begin{center}
% \begin{ganttchart}[
% vgrid,
@@ -1488,7 +1376,7 @@
% \ganttlinkedbar{Task 3}{7}{11}
% \end{ganttchart}
% \end{center}
-%
+%
% \begin{key}{chart element start border}{\texttt{left}\space\textbar\space\texttt{right}}{left}
% Determines which border of the start time slot a chart element touches. \texttt{left} is the behavior usually expected, while \texttt{right} strictly interprets the start time slot as an $x$-coordinate.
% \par\bigskip\noindent
@@ -1511,10 +1399,10 @@
% \end{ganttchart}
% \end{center}
% \end{key}
-%
-%
+%
+%
% \subsubsection{Options: Chart Element Appearance}
-%
+%
% The following options are similar for all predefined (and user-defined) chart elements:
%
% \begin{key}[/.style=]{bar}{\meta{style}}{shape=ganttbar, inner sep=0pt, draw, fill=white}
@@ -1558,9 +1446,9 @@
% \end{center}
% \end{key}
%
-%
+%
% \subsubsection{Options: Label Formatting}
-%
+%
% \begin{key}{bar label text}{\meta{text}}{\string\strut\#1}
% \keyline{group label text}{\meta{text}}{\string\strut\#1}
% \keyline{milestone label text}{\meta{text}}{\string\strut\#1}
@@ -1611,7 +1499,7 @@
% \end{ganttchart}
% \end{center}
% \end{key}
-%
+%
% \begin{key}{inline}{\meta{boolean}}{false}
% \keyline{bar inline label anchor}{\meta{anchor}}{center}
% \keyline{group inline label anchor}{\meta{anchor}}{center}
@@ -1650,10 +1538,10 @@
% \end{ganttchart}
% \end{center}
% \end{key}
-%
-%
+%
+%
% \subsubsection{Options: Chart Element Positioning}
-%
+%
% \begin{key}{bar left shift}{\meta{factor}}{0}
% \keyline{bar right shift}{\meta{factor}}{0}
% \keyline{bar top shift}{\meta{factor}}{.3}
@@ -1667,7 +1555,7 @@
% \keyline{milestone top shift}{\meta{factor}}{.3}
% \keyline{milestone height}{\meta{factor}}{.4}
% Shift the coordinates of a chart element's borders (\opt{\dots\ shift}) and change its height (\opt{\dots\ height}).
-%
+%
% \begin{center}
% \begin{tikzpicture}[x=.5cm, y=1cm]
% \begin{ganttchart}[vgrid, hgrid]{1}{8}
@@ -1701,7 +1589,7 @@
% \draw[-latex,teal] (8,-4.2) node[right] {End time slot (6)} -- (6,-3.8);
% \end{tikzpicture}
% \end{center}
-%
+%
% The three following figures illustrate the distances modified by these keys. The first figure shows a Gantt chart with a bar, two lines and one time slot.
% \begin{center}
% \begin{tikzpicture}[x=8cm, y=2cm]
@@ -1809,7 +1697,7 @@
% -- (.4,-.85);
% \end{tikzpicture}
% \end{center}
-%
+%
% \begin{key}{group right peak tip position}{\meta{fraction}}{0.5}
% \keyline{group right peak width}{\meta{factor}}{0.4}
% \keyline{group right peak height}{\meta{factor}}{0.1}
@@ -1820,7 +1708,7 @@
% \keyline{group peaks width}{\meta{factor}}{\textrm{(none)}}
% \keyline{group peaks height}{\meta{factor}}{\textrm{(none)}}
% Change the appearance of the peaks at both ends of a group. By default, both the left and right peak are 0.4~units wide and 0.1~units high, their tips lie between the peak sides. The \opt{group peaks \dots} keys set the dimensions for both peaks simultaneously. The figure below exemplifies the keys that apply to the left peak.
-%
+%
% \begin{center}
% \begin{tikzpicture}[x=8cm, y=2cm]
% \small
@@ -1845,7 +1733,7 @@
% \end{tikzpicture}
% \end{center}
% \end{key}
-%
+%
% For example, you might devise the following layout: Bars are small and rounded; they do not touch the borders of their start and end time slots. Groups stay within the start and end time slot, and the peaks are more acute.
% \par\bigskip\noindent
% \begin{texcode}
@@ -1887,12 +1775,12 @@
% \end{ganttchart}
% \end{center}
% \end{key}
-%
-%
+%
+%
% \subsubsection{Options: Progress}
-%
+%
% The \textit{progress} of a chart element illustrates the extent to which this element has been completed.
-%
+%
% \begin{key}{progress}{\texttt{none}\space\textbar\space\texttt{today}\space\textbar\space\meta{number}}{none}
% Indicates that a chart element is \meta{number} percent complete. The value \texttt{none} turns progress calculations off.
% \par\bigskip\noindent
@@ -1950,7 +1838,7 @@
% \end{ganttchart}
% \end{center}
% \end{key}
-%
+%
% \begin{key}[/.style=]{bar incomplete}{\meta{style}}{/pgfgantt/bar, fill=black!25}
% \keyline[/.style=]{group incomplete}{\meta{style}}{/pgfgantt/group, fill=black!25}
% \keyline[/.style=]{milestone incomplete}{\meta{style}}{/pgfgantt/milestone, fill=black!25}
@@ -1993,7 +1881,7 @@
% \end{ganttchart}
% \end{center}
% \end{key}
-%
+%
% \begin{key}{progress label text}{\meta{text}}{\string\pgfmathprintnumber[precision=0, verbatim]\{\#1\}\string\% complete}
% \keyline{bar progress label anchor}{\meta{anchor}}{east}
% \keyline{bar progress label font}{\meta{font commands}}{\string\scriptsize}
@@ -2047,16 +1935,16 @@
% \end{ganttchart}
% \end{center}
% \end{key}
-%
-%
+%
+%
% \subsubsection{New Node Shapes}
% \label{sss:NewNodeShapes}
-%
+%
% \pack{pgfgantt} defines three new node shapes:
-%
+%
% \bigskip\noindent
% (1) The \texttt{ganttbar} node shape derives from shape \texttt{rectangle} (section~48.2 of the \TikZ\ manual). It provides four additional anchors: \texttt{on top}, \texttt{on bottom}, \texttt{on left} and \texttt{on right}. The \meta{fraction} set by the following keys indicates a position between the left and right (for \texttt{on top} and \texttt{on bottom}) or upper and lower border (for \texttt{on left} and \texttt{on right}), similarly to the \opt{/tikz/pos} key.
-%
+%
% \begin{key}{on top fraction}{\meta{fraction}}{0.5}
% \keyline{on bottom fraction}{\meta{fraction}}{0.5}
% \keyline{on left fraction}{\meta{fraction}}{0.5}
@@ -2097,7 +1985,7 @@
% \end{tikzpicture}
% \end{center}
% \end{key}
-%
+%
% \bigskip\noindent
% (2) The \texttt{ganttgroup} node shape also derives from shape \texttt{rectangle}. It provides the additional anchors \texttt{on top}, \texttt{on bottom}, \texttt{on left}, \texttt{on right} (same as above), \texttt{left peak} and \texttt{right peak}.
% \begin{center}
@@ -2138,7 +2026,7 @@
% node [\placement] {\scriptsize\texttt{(s.\anchor)}};
% \end{tikzpicture}
% \end{center}
-%
+%
% \bigskip\noindent
% (3) The \texttt{ganttmilestone} node shape derives from shape \texttt{diamond} (section~48.3 of the \TikZ\ manual), but does not consider any aspect ratio. It provides the additional anchors \texttt{on top}, \texttt{on bottom}, \texttt{on left} and \texttt{on right} (same as above).
% \begin{center}
@@ -2172,19 +2060,19 @@
% node [\placement] {\scriptsize\texttt{(s.\anchor)}};
% \end{tikzpicture}
% \end{center}
-%
-%
+%
+%
% \subsection{Defining Custom Chart Elements}
-%
+%
% You may define completely new chart elements with
% \begin{texcode}
% \newganttchartelement`\marg{name}\marg{new default key values}'
% \newganttchartelement*`\marg{name}\marg{new default key values}'
% \end{texcode}
% \DescribeMacro{\newganttchartelement}|\newganttchartelement| (unstarred) defines a new chart element |\gantt|\textcolor{RoyalBlue}{\meta{name}} and the corresponding |\ganttlinked|\textcolor{RoyalBlue}{\meta{name}}. These chart element macros take one optional argument \meta{options} and \textit{three} mandatory arguments \meta{label}, \meta{start tss} and \meta{end tss} (like |\ganttbar|).
-%
+%
% Chart element macros defined by the starred form, \DescribeMacro{\newganttchartelement*}|\newganttchartelement*|, take the same single optional argument, but \textit{two} mandatory arguments \meta{label} and \meta{tss} (like |\ganttmilestone|).
-%
+%
% For each new chart element, |\newganttchartelement| also introduces a set of nine value-storing keys and five style keys and assigns default values to them:
% \begin{center}
% \begin{tabular}{l >{\ttfamily}l}
@@ -2212,13 +2100,13 @@
% \end{tabular}\hspace*{-120pt}
% \end{center}
% Consequently, a new chart element will look like the standard |\ganttbar| unless you introduce some \meta{new default key values}.
-%
+%
% Let us define a new chart element called ``foobar'', which is basically a fancy-colored and -shaped bar:
% \par\bigskip\noindent
% \begin{texcode}
% \definecolor{foobarblue}{RGB}{0,153,255}
% \definecolor{foobaryellow}{RGB}{234,187,0}
-%
+%
% \newganttchartelement{foobar}{
% foobar/.style={
% shape=rounded rectangle,
@@ -2237,7 +2125,7 @@
% foobar left shift=-.1,
% foobar right shift=.1
% }
-%
+%
% \begin{ganttchart}[
% vgrid,
% progress=today,
@@ -2253,7 +2141,7 @@
% \begin{center}
% \definecolor{foobarblue}{RGB}{0,153,255}
% \definecolor{foobaryellow}{RGB}{234,187,0}
-%
+%
% \newganttchartelement{foobar}{
% foobar/.style={
% shape=rounded rectangle,
@@ -2272,7 +2160,7 @@
% foobar left shift=-.1,
% foobar right shift=.1
% }
-%
+%
% \begin{ganttchart}[
% vgrid,
% progress=today,
@@ -2285,7 +2173,7 @@
% \ganttlinkedfoobar{Foobar 3}{9}{12}
% \end{ganttchart}
% \end{center}
-%
+%
%
% \subsection{Links}
% \label{ssc:Links}
@@ -2294,7 +2182,7 @@
% \begin{texcode}
% \ganttlink`\oarg{options}\marg{start element name}\marg{end element name}'
% \end{texcode}
-%
+%
% \begin{key}{name}{\meta{name}}{\textrm{(empty)}}
% The \DescribeMacro{\ganttlink}|\ganttlink| macro connects two elements, which are specified by their \meta{name}s. By default, chart elements are named automatically: The first one receives the name \texttt{elem0}, the second one is called \texttt{elem1} and so on. However, the \opt{name} key allows you to assign a name to each chart element.
% \par\bigskip\noindent
@@ -2348,7 +2236,7 @@
% \end{ganttchart}
% \end{center}
% \end{key}
-%
+%
% \begin{key}[/.style=]{link}{\meta{style}}{-latex, rounded corners=1pt}
% Sets the appearance of the link.
% \par\bigskip\noindent
@@ -2490,7 +2378,7 @@
% \DescribeMacro{\newganttlinktype}It defines a new link \meta{type} which is drawn by the given \meta{TikZ code}. When you write this code, you do not have to know the final absolute coordinates of each link type instance. On the contrary, several commands that are only available in the second argument of |\newganttlinktype| help you to design generic link types:
% \begin{itemize}
% \item First, you have to choose the border points of the chart elements the link will connect. For this purpose, \DescribeMacro{\ganttsetstartanchor}|\ganttsetstartanchor{|\meta{anchor}|}| and \DescribeMacro{\ganttsetendanchor}|\ganttsetendanchor{|\meta{anchor}|}| select an \meta{anchor} of the start and end element, respectively. See the figures in section~\ref{sss:NewNodeShapes} for possible \meta{anchor}s of the default chart element shapes. You may specify a certain \meta{fraction} for anchors like \texttt{on top} by |\ganttsetstartanchor{on top=|\meta{fraction}|}|.
-%
+%
% \pack{pgfgantt} sets the default anchors to |\ganttsetstartanchor{east}| and |\ganttsetendanchor{west}|, so you even may omit these two commands.
% \item The two macro pairs \DescribeMacro{\xLeft}|\xLeft|/\DescribeMacro{\yUpper}|\yUpper| and \DescribeMacro{\xRight}|\xRight|/\DescribeMacro{\yLower}|\yLower| provide the $x$- and $y$-coordinates of the link start and end points, respectively.
% \begin{center}\makeatletter
@@ -2509,7 +2397,7 @@
% \end{itemize}
% \end{enumerate}
% \end{key}
-%
+%
% \begin{texcode}
% \newganttlinktypealias`\marg{new type}\marg{existing type}'
% \end{texcode}
@@ -2524,7 +2412,7 @@
% \newganttlinktypealias{sta-to-sta}{s-s}
% \newganttlinktypealias{fin-to-fin}{f-f}
% \setganttlinklabel{fin-to-fin}{f2f}
-%
+%
% \begin{ganttchart}[vgrid, hgrid]{1}{12}
% \gantttitle{Title}{12} \\
% \ganttbar{Task 1}{2}{3} \\
@@ -2538,7 +2426,7 @@
% \newganttlinktypealias{sta-to-sta}{s-s}
% \newganttlinktypealias{fin-to-fin}{f-f}
% \setganttlinklabel{fin-to-fin}{f2f}
-%
+%
% \begin{ganttchart}[vgrid, hgrid]{1}{12}
% \gantttitle{Title}{12} \\
% \ganttbar{Task 1}{2}{3} \\
@@ -2552,7 +2440,7 @@
% \par\bigskip\noindent
% \begin{texcode}
% \usetikzlibrary{decorations.pathmorphing}
-%
+%
% \newganttlinktype{zigzag}{
% \ganttsetstartanchor{on right=1}
% \ganttsetendanchor{on left=0}
@@ -2560,7 +2448,7 @@
% (\xLeft, \yUpper) --
% (\xRight, \yLower);
% }
-%
+%
% \begin{ganttchart}[vgrid, hgrid]{1}{12}
% \gantttitle{Title}{12} \\
% \ganttbar{Task 1}{2}{3} \\
@@ -2612,7 +2500,7 @@
% (\xRight, \yLower);
% }
% \setganttlinklabel{drur}{a fancy link}
-%
+%
% \begin{ganttchart}[
% vgrid,
% hgrid,
@@ -2648,7 +2536,7 @@
% (\xRight, \yLower);
% }
% \setganttlinklabel{drur}{a fancy link}
-%
+%
% \begin{ganttchart}[
% vgrid,
% hgrid,
@@ -2663,7 +2551,7 @@
% \end{ganttchart}
% \end{center}
% (Please remove the comments if you copy the code above -- they will confuse \TikZ\ and generate tons of errors.)
-%
+%
% \begin{key}{link label}{\meta{label}}{\textrm{(empty)}}
% \keyline{link label font}{\meta{font commands}}{\string\scriptsize\string\itshape}
% \keyline[/.style=]{link label node}{\meta{options}}{anchor=west, font=\string\ganttvalueof\{link label font\}}
@@ -2812,9 +2700,9 @@
% \ganttlink[link mid=.159]{pp}{T2A}
% \end{ganttchart}
% \end{center}
-%
+%
% \bigskip
-% The second example demonstrates that \pack{pgfgantt} is really flexible: Even an appearance quite different from the standard layout is possible. (More precisely, the code below tries to reproduce the Gantt chart from the English Wikipedia site, see \url{http://en.wikipedia.org/wiki/Gantt_chart}.)
+% The second example demonstrates that \pack{pgfgantt} is really flexible: Even an appearance quite different from the standard layout is possible. (More precisely, the code below tries to reproduce the Gantt chart from the English Wikipedia site, see \url{https://en.wikipedia.org/wiki/Gantt_chart}.)
% \par\bigskip\noindent
% \begin{texcode}
% \definecolor{barblue}{RGB}{153,204,254}
@@ -2967,8 +2855,8 @@
% \end{ganttchart}
% \end{center}
%
-%
-% \StopEventually{\PrintIndex\PrintChanges}
+%
+% \StopEventually{\PrintIndex}
% \lstDeleteShortInline|
% \MakeShortVerb{\|}
% \clearpage\section{Implementation}
@@ -3050,7 +2938,7 @@
%
%
% \subsection{The Horizontal and Vertical Grid}
-%
+%
% \begin{intmacro}{\gtt@currentline}
% \begin{intmacro}{\gtt@lasttitleline}
% \begin{intmacro}{\gtt@currgrid}
@@ -3202,7 +3090,7 @@
%
%
% \subsection{Time Slot Formats}
-%
+%
% \begin{intmacro}{\gtt@smugglecount}
% |\gtt@smugglecount|\marg{count} smuggles the local value of a count register over the end of a \TeX\ group.
% \begin{macrocode}
@@ -3390,11 +3278,11 @@
% \end{macrocode}
% \end{intmacro}
% \end{option}
-%
-%
+%
+%
% \subsection{The Main Environment}
% \label{ssc:ImplMain}
-%
+%
% \begin{option}{x unit}
% \begin{option}{y unit title}
% \begin{option}{y unit chart}
@@ -4222,10 +4110,10 @@
}
% \end{macrocode}
-%
-%
+%
+%
% \subsection{Chart Elements}
-%
+%
% \begin{option}{progress}
% \begin{intmacro}{\gtt@progress}
% \begin{option}{progress label text}
@@ -4606,7 +4494,7 @@
% \end{option}
% \end{macro}
% \end{macro}
-% \clearpage
+% \clearpage
% \begin{macro}{\ganttgroup}
% \begin{macro}{\ganttlinkedgroup}
% \begin{option}{group}
@@ -4772,10 +4660,10 @@
% \end{option}
% \end{macro}
% \end{macro}
-%
-%
+%
+%
% \subsection{Node Shapes}
-%
+%
% \begin{option}{on top fraction}
% \begin{option}{on bottom fraction}
% \begin{option}{on left fraction}
@@ -5067,11 +4955,11 @@
}
% \end{macrocode}
-%
+%
%
% \subsection{Links}
% \label{ssc:ImplLinks}
-%
+%
% \begin{option}{link}
% \begin{option}{link type}
% \begin{option}{link label}
@@ -5302,7 +5190,7 @@
% \end{macrocode}
% \end{intmacro}
% \begin{intmacro}{\@gtt@link@anchor}
-% We need the following keys for setting the start and end anchor of a link: Whenever a key |/pgfgantt/link anchor/|\meta{anchor} is undefined, \pack{pgfgantt} stores \meta{anchor} in |\@gtt@link@anchor|.
+% We need the following keys for setting the start and end anchor of a link: Whenever a key |/pgfgantt/link anchor/|\meta{anchor} is undefined, \pack{pgfgantt} stores \meta{anchor} in |\@gtt@link@anchor|.
% \begin{macrocode}
\ganttset{%
link anchor/.unknown/.code={%
diff --git a/graphics/pgf/contrib/pgfgantt/pgfgantt.ins b/graphics/pgf/contrib/pgfgantt/pgfgantt.ins
index 6e4aa0dd2b..2c6c6a4c03 100644
--- a/graphics/pgf/contrib/pgfgantt/pgfgantt.ins
+++ b/graphics/pgf/contrib/pgfgantt/pgfgantt.ins
@@ -1,6 +1,6 @@
%% pgfgantt.ins
%%
-%% Copyright (C) 2083 by Wolfgang Skala
+%% Copyright (C) 2024 by Wolfgang Esser-Skala
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -10,9 +10,7 @@
%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2008/05/04 or later.
%%
-%% This work has the LPPL maintenance status `maintained'.
-%%
-%% The Current Maintainer of this work is Wolfgang Skala.
+%% This work has the LPPL maintenance status `unmaintained'.
%%
%% This work consists of the files pgfgantt.dtx and pgfgantt.ins
%% and the derived file pgfgantt.sty.
@@ -24,7 +22,7 @@
\preamble
-Copyright (C) 2018 by Wolfgang Skala
+Copyright (C) 2024 by Wolfgang Esser-Skala
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either version 1.3c
@@ -51,11 +49,10 @@ version 2008/05/04 or later.
\Msg{*}
\Msg{* pdflatex pgfgantt.dtx}
\Msg{* makeindex -s gind.ist -o pgfgantt.ind pgfgantt.idx}
-\Msg{* makeindex -s gglo.ist -o pgfgantt.gls pgfgantt.glo}
\Msg{* pdflatex pgfgantt.dtx (2x)}
\Msg{*}
\Msg{* Happy TeXing!}
\Msg{*}
\Msg{****************************************************}
-\endbatchfile \ No newline at end of file
+\endbatchfile
diff --git a/graphics/pgf/contrib/pgfgantt/pgfgantt.pdf b/graphics/pgf/contrib/pgfgantt/pgfgantt.pdf
deleted file mode 100644
index 5536734a4c..0000000000
--- a/graphics/pgf/contrib/pgfgantt/pgfgantt.pdf
+++ /dev/null
Binary files differ
diff --git a/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-en.pdf b/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-en.pdf
new file mode 100644
index 0000000000..6ef7f59476
--- /dev/null
+++ b/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-en.pdf
Binary files differ
diff --git a/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-en.tex b/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-en.tex
new file mode 100644
index 0000000000..88e9abb16a
--- /dev/null
+++ b/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-en.tex
@@ -0,0 +1,1712 @@
+% !TeX TXS-program:compile = txs:///arara
+% arara: pdflatex: {shell: yes, synctex: no, interaction: batchmode}
+% arara: pdflatex: {shell: yes, synctex: no, interaction: batchmode} if found('log', '(undefined references|Please rerun|Rerun to get)')
+
+\documentclass[11pt,a4paper]{ltxdoc}
+\usepackage[T1]{fontenc}
+\usepackage[utf8]{inputenc}
+\usepackage[english]{tkz-grapheur}
+\usepackage{amsmath}
+\usepackage{fancyvrb}
+\usepackage{fancyhdr}
+\usepackage{hyperref}
+\usepackage{nicefrac}
+\usepackage{fontawesome5}
+\usepackage{tcolorbox}
+\tcbuselibrary{skins,minted}
+\fancyhf{}
+\renewcommand{\headrulewidth}{0pt}
+\lfoot{\sffamily\small [tkz-grapheur]}
+\rfoot{\sffamily\small - \thepage{} -}
+\usepackage{hologo}
+\providecommand\tikzlogo{Ti\textit{k}Z}
+\providecommand\TeXLive{\TeX{}Live\xspace}
+\providecommand\PSTricks{\textsf{PSTricks}\xspace}
+\let\pstricks\PSTricks
+\let\TikZ\tikzlogo
+
+\urlstyle{same}
+\hypersetup{pdfborder=0 0 0}
+\usepackage[margin=2cm]{geometry}
+\setlength{\parindent}{0pt}
+\def\TPversion{0.1.5}
+\def\TPdate{22/06/2024}
+\usepackage{soul}
+\usepackage{codehigh}
+\usepackage{tabularray}
+\sethlcolor{lightgray!25}
+\NewDocumentCommand\MontreCode{ m }{%
+ \hl{\vphantom{\texttt{pf}}\texttt{#1}}%
+}
+\usepackage[english]{babel}
+
+\renewcommand{\footnoterule}{\vfill\kern -3pt \hrule width 0.4\columnwidth \kern 2.6pt}
+
+\begin{document}
+
+\pagestyle{fancy}
+
+\thispagestyle{empty}
+
+\begin{center}
+ \begin{minipage}{0.88\linewidth}
+ \begin{tcolorbox}[colframe=yellow,colback=yellow!15]
+ \begin{center}
+ \begin{tabular}{c}
+ {\Huge \texttt{tkz-grapheur [en]}}\\
+ \\
+ {\LARGE A grapher, based}\\
+ \\
+ {\LARGE on \textsf{\TikZ} and \textsf{xint}.}\\
+ \\
+ {\small \texttt{Version \TPversion{} -- \TPdate}}
+ \end{tabular}
+ \end{center}
+ \end{tcolorbox}
+\end{minipage}
+\end{center}
+
+\begin{center}
+ \begin{tabular}{c}
+ \texttt{Cédric Pierquet}\\
+ {\ttfamily c pierquet -- at -- outlook . fr}\\
+ \texttt{\url{https://forge.apps.education.fr/pierquetcedric/package-latex-tkz-grapheur}} \\
+\end{tabular}
+\end{center}
+
+\hrule
+
+\vfill
+
+\begin{tcolorbox}[colframe=lightgray,colback=lightgray!5,halign=center]
+\begin{GraphTikz}[x=0.85cm,y=0.35cm,Xmin=0,Xmax=10,Ymin=0,Ymax=16]
+ %préparation de la fenêtre
+ \DrawAxisGrids[Enlarge=2.5mm,Font=\small]{0,1,...,10}{0,2,...,16}
+ %déf des fonctions avec nom courbe + nom fonction + expression
+ \DefineCurve[Name=cf]<f>{3*x-6}
+ \DefineCurve[Name=cg]<g>{-(x-6)^2+12}
+ %antécédents et intersection
+ \FindIntersections[Disp=false,Name=K]{cf}{cg}
+ \FindCounterimage[DispLine,Color=orange,Name=I]{cg}{8}
+ \FindCounterimage[Disp=false,Name=J]{cg}{0}
+ %intégrale sous une courbe, avec intersection
+ \DrawIntegral%
+ [Colors=blue/purple,Bounds=nodes,Style=hatch,Hatch=bricks]%
+ {g(x)}%
+ {(I-2)}{(J-2)}
+ %intégrale entre les deux courbes
+ \DrawIntegral[Bounds=nodes,Type=fct/fct]{f(x)}[g(x)]{(K-1)}{(K-2)}
+ %tracé des courbes et des points
+ \DrawCurve[Color=red]{f(x)}
+ \DrawCurve[Color=teal]{g(x)}
+ \MarkPts<\small>{(K-1)/below right/L,(K-2)/above left/M}%
+ \MarkPts[violet]<\small>{(I-1)/above left/D,(I-2)/above right/E}%
+ %essai de tangente
+ \DrawTangent[Colors=pink!75!black/yellow,OffsetL=2,OffsetR=2,DispPt]{g}{5}
+ %essai d'image
+ \DrawRanges[Colors=cyan]{g}{7,7.25,7.5}
+ %surimpression des axes
+ \DrawAxisGrids[Grads=false,Grid=false,Enlarge=2.5mm]{0,1,...,10}{0,2,...,16}
+\end{GraphTikz}
+\end{tcolorbox}
+
+\vspace*{5mm}
+
+\begin{tcolorbox}[colframe=lightgray,colback=lightgray!5,halign=center]
+\begin{GraphTikz}%
+ [x=3.5cm,y=4cm,
+ Xmin=0,Xmax=3.5,Xgrid=pi/12,Xgrids=pi/24,
+ Ymin=-1.05,Ymax=1.05,Ygrid=0.2,Ygrids=0.05]
+ %préparation de la fenêtre
+ \DrawAxisGrids[Grads=false,Enlarge=2.5mm,Format=ntrig/nsqrt]%
+ {pi/6,pi/4,pi/3,pi/2,2*pi/3,3*pi/4,5*pi/6,pi}
+ {0,sqrt(2)/2,1/2,sqrt(3)/2,1,-1,-sqrt(3)/2,-1/2,-sqrt(2)/2}
+ %rajouter des valeurs
+ \AddXvalues{0.25,1.4,3.3}{\num{0.25},\num{1.4},\num{3.3}}
+ %fonction trigo (déf + tracé)
+ \DefineCurve[Name=ccos,Start=0,End=pi]<fcos>{cos(x)}
+ \DefineCurve[Name=csin,Start=0,End=pi]<fsin>{sin(x)}
+ %intégrale
+ \FindIntersections[Disp=false,Name=JKL]{ccos}{csin}
+ %\DefinirPts{FIN/pi/0}
+ \DrawIntegral%
+ [Bounds=node/abs,Type=fct/fct,Colors=cyan/cyan!50]%
+ {fsin(x)}[fcos(x)]%
+ {(JKL-1)}{pi}
+ %tracé des courbes
+ \DrawCurve[Color=red,Start=0,End=pi]{fcos(x)}
+ \DrawCurve[Color=olive,Start=0,End=pi]{fsin(x)}
+ %antécédent(s)
+ \DrawCounterimage[Color=blue/teal!50!black,Lines]{ccos}{-0.25}
+ \DrawCounterimage[Colors=red/magenta!50!black,Lines]{csin}{0.5}
+ \DrawCounterimage[Colors=orange/orange!50!black,Lines]{csin}{sqrt(2)/2}
+ \DrawCounterimage[Colors=green!50!black/green,Lines]{csin}{sqrt(3)/2}
+ %surimpression axes
+ \DrawAxisGrids[Grid=false,Enlarge=2.5mm,Format=ntrig/nsqrt]%
+ {pi/6,pi/4,pi/3,pi/2,2*pi/3,3*pi/4,5*pi/6,pi}
+ {0,sqrt(2)/2,1/2,sqrt(3)/2,1,-1,-sqrt(3)/2,-1/2,-sqrt(2)/2}
+\end{GraphTikz}
+\end{tcolorbox}
+
+\vfill
+
+\hfill{\footnotesize\textit{\ttfamily To my Dad.}}
+
+\vspace*{5mm}
+
+\pagebreak
+
+\phantomsection
+
+\hypertarget{matoc}{}
+
+\tableofcontents
+
+\vspace*{5mm}
+
+\hrule
+
+\vspace*{5mm}
+
+\pagebreak
+
+\section{Introduction}
+
+\subsection{Description and general ideas}
+
+With this modest package, far from the capabilities offered by the excellent packages \MontreCode{tkz-*}\footnote{for example tkz-base \url{https://ctan.org/pkg/tkz-base} and tkz- fct \url{https://ctan.org/pkg/tkz-fct}.} (by Alain Matthes) or \MontreCode{tzplot}\footnote{CTAN: \url{https://ctan.org/pkg/ tzplot}.} (by In-Sung Cho), it is possible to work on function graphs, in \TikZ\ language, in an \textit{intuitive} and \textit{explicit} way.
+
+\smallskip
+
+Concerning the overall operation:
+
+\smallskip
+
+\begin{itemize}
+ \item particular styles for the objects used have been defined, but they can be modified locally;
+ \item the name of the commands is in \textit{operational} form, so that the construction of the graphic elements has an almost \textit{algorithmic} form.
+\end{itemize}
+
+\subsection{Overall operation}
+
+To schematize, it \textit{is enough}:
+
+\smallskip
+
+\begin{itemize}
+ \item to declare the parameters of the graphics window (\textbf{units in cm !});
+ \item to display grid/axes/graduations;
+ \item to declare functions or interpolation curves;
+ \item to possibly declare particular points;
+ \item to place a point scatter.
+\end{itemize}
+
+\smallskip
+
+It will then be possible:
+
+\begin{itemize}
+ \item to draw curves;
+ \item to graphically determine images or backgrounds;
+ \item to add elements of derivation (tangents) or integration (domain);
+ \item to draw a linear fit line or the curve of another fit.
+\end{itemize}
+
+\subsection{Packages used, and package options}
+
+The package uses:
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{tikz}, with the libraries \MontreCode{calc,intersections,patterns,patterns.meta,bbox};
+ \item \MontreCode{simplekv}, \MontreCode{xintexpr}, \MontreCode{xstring}, \MontreCode{listofitems};
+ \item \MontreCode{xint-regression}\footnote{CTAN: \url{https://ctan.org/pkg/xint-regression}.} (for regressions, switchable via \MontreCode{[noxintreg]}).
+\end{itemize}
+
+\smallskip
+
+The package also loads \MontreCode{siunitx} with the classic options, but it is possible not to load it using the \MontreCode{[nosiunitx]} option.
+
+\smallskip
+
+The package also loads the \TikZ\ \MontreCode{babel} library, but it is possible not to load it using the \MontreCode{[notikzbabel]} option.
+
+\smallskip
+
+The different options are obviously cumulative.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%loading by default, with french setup of siunitx
+\usepackage{tkz-grapheur}
+%loading by default, with normal setup of siunitx
+\usepackage[english]{tkz-grapheur}
+
+%loading without sinuitx, to be loaded manually
+\usepackage[nosiunitx]{tkz-grapheur}
+
+%loading without tikz.babel
+\usepackage[notikzbabel]{tkz-grapheur}
+\end{tcblisting}
+
+Also note that certain commands can use packages like \MontreCode{nicefrac}, which will therefore have to be loaded if necessary.
+
+\smallskip
+
+Concerning the \textit{calculations} and \textit{plots} part, the \MontreCode{xint} package takes care of it.
+
+\subsection{Warnings}
+
+It is possible, due to the (multiple) calculations carried out internally, that the compilation time may be a little \textit{long}.
+
+\smallskip
+
+The precision of the (determination) results seems to be around $10^{-4}$, which should normally guarantee \textit{satisfactory} plots and readings. It is still advisable to be cautious about the results obtained and those expected.
+
+\subsection{Introductory example}
+
+For example, we can start from the following example to \textit{illustrate} the flow of the commands for this package. The commands and syntax will be detailed in the following sections!
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+\begin{GraphTikz}%
+ [x=7.5cm,y=7.5cm,Xmin=0,Xmax=1.001,Xgrid=0.1,Xgrids=0.02,
+ Ymin=0,Ymax=1.001,Ygrid=0.1,Ygrids=0.02]
+ \DrawAxisGrids[Enlarge=2.5mm,Font=\small]%
+ {0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1}
+ {0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1}
+ \DefineCurve[Name=cf,Start=0,End=1]<f>{x*exp(x-1)}
+ \DefineCurve[Name=delta,Start=0,End=1]<D>{x}
+ \DrawIntegral[Type=fct/fct]{f(x)}[D(x)]{0}{1}
+ \DrawCurve[Color=red]{f(x)}
+ \DrawCurve[Color=teal]{D(x)}
+ \DrawRanges[Colors=blue/cyan,Lines]{f}{0.8,0.9}
+ \DrawCounterimage[Colors=green!50!black/olive,Lines]{cf}{0.5}
+\end{GraphTikz}
+\end{tcblisting}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,text only}
+ \begin{GraphTikz}%
+ [x=7.5cm,y=7.5cm,Xmin=0,Xmax=1.001,Xgrid=0.1,Xgrids=0.02,
+ Ymin=0,Ymax=1.001,Ygrid=0.1,Ygrids=0.02]
+ \DrawAxisGrids[Enlarge=2.5mm,Font=\small]%
+ {0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1}
+ {0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1}
+ \DefineCurve[Name=cf,Start=0,End=1]<f>{x*exp(x-1)}
+ \DefineCurve[Name=delta,Start=0,End=1]<D>{x}
+ \DrawIntegral[Type=fct/fct]{f(x)}[D(x)]{0}{1}
+ \DrawCurve[Color=red]{f(x)}
+ \DrawCurve[Color=teal]{D(x)}
+ \DrawRanges[Colors=blue/cyan,Lines]{f}{0.8,0.9}
+ \DrawCounterimage[Colors=green!50!black/olive,Lines]{cf}{0.5}
+ \end{GraphTikz}
+\end{tcblisting}
+
+\newpage
+
+\section{Basic Styles and Environment Creation}
+
+\subsection{Basic Styles}
+
+The styles used for plots are given below.
+
+\smallskip
+
+For \textit{simplicity} purposes, only the color of the elements can be configured, but if the user wishes, he can redefine the proposed styles.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%parameters declared and stored (usable in the environment a posteriori)
+\tikzset{
+ Xmin/.store in=\pflxmin,Xmin/.default=-3,Xmin=-3,
+ Xmax/.store in=\pflxmax,Xmax/.default=3,Xmax=3,
+ Ymin/.store in=\pflymin,Ymin/.default=-3,Ymin=-3,
+ Ymax/.store in=\pflymax,Ymax/.default=3,Ymax=3,
+ Origx/.store in=\pflOx,Origx/.default=0,Origx=0,
+ Origy/.store in=\pflOy,Origy/.default=0,Origy=0,
+ Xgrid/.store in=\pflgrillex,Xgrid/.default=1,Xgrid=1,
+ Xgrids/.store in=\pflgrillexs,Xgrids/.default=0.5,Xgrids=0.5,
+ Ygrid/.store in=\pflgrilley,Ygrid/.default=1,Ygrid=1,
+ Ygrids/.store in=\pflgrilleys,Ygrids/.default=0.5,Ygrids=0.5
+}
+\end{tcblisting}
+
+We therefore find:
+
+\smallskip
+
+\begin{itemize}
+ \item the origin of the mark (\MontreCode{Origx}/\MontreCode{Origy});
+ \item the extreme values of the axes (\MontreCode{Xmin}/\MontreCode{Xmax}/\MontreCode{Ymin}/\MontreCode{Ymax});
+ \item the parameters of the main and secondary grids (\MontreCode{Xgrid}/\MontreCode{Xgrids}/\MontreCode{Ygrid}/\MontreCode{Ygrids}).
+\end{itemize}
+
+\smallskip
+
+Concerning the styles of \textit{objects}, they are given below.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+\tikzset{tkzgrphnode/.style={}}
+\tikzset{tkzgrphpoint/.style={line width=0.95pt}}
+\tikzset{tkzgrphpointc/.style={radius=1.75pt}}
+\tikzset{tkzgrphscatter/.style={radius=1.75pt}}
+\tikzset{tkzgrphframe/.style={line width=0.8pt,gray}}
+\tikzset{tkzgrphcurve/.style={line width=1.05pt}}
+\tikzset{tkzgrphline/.style={line width=0.8pt}}
+\tikzset{tkzgrpharrowl/.style={<-,>=latex}}
+\tikzset{tkzgrpharrowr/.style={->,>=latex}}
+\tikzset{tkzgrpharrowlr/.style={<->,>=latex}}
+\tikzset{tkzgrphcounterimage/.style={line width=0.9pt,densely dashed}}
+\tikzset{tkzgrphrange/.style={line width=0.9pt,densely dashed,->,>=latex}}
+\tikzset{tkzgrphgridp/.style={thin,lightgray}}
+\tikzset{tkzgrphgrids/.style={very thin,lightgray}}
+\tikzset{tkzgrphaxes/.style={line width=0.8pt,->,>=latex}}
+\end{tcblisting}
+
+The idea is therefore to be able to redefine styles globally or locally, and possibly add elements, using \mintinline{latex}|mystyle/.append style={...}|.
+
+\subsection{Creating the environment}\label{creaenvt}
+
+The proposed environment is based on \TikZ, so that any \textit{classic} command linked to \TikZ\ can be used alongside the package commands!
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+\begin{GraphTikz}[tikz options]<keys>
+ %code(s)
+\end{GraphTikz}
+\end{tcblisting}
+
+The \MontreCode{[tikz options]} are the \textit{classic} options that can be passed to a \TikZ\ environment, as well as the \textsf{axes/grids/window} keys presented previously.
+
+\smallskip
+
+The specific (and optional) \MontreCode{<keys>} are:
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{ThickGrad}: size of the axis graduations (\MontreCode{3pt} for 3pt \textit{above} and 3pt \textit{below});
+ \item \MontreCode{Frame}: boolean (\MontreCode{false} by default) to display a frame which delimits the graphic window (excluding possible graduations).
+\end{itemize}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}
+ [x=0.075cm,y=0.03cm,Xmin=0,Xmax=160,Xgrid=20,Xgrids=10,
+ Origy=250,Ymin=250,Ymax=400,Ygrid=25,Ygrids=5]
+ <Frame>
+\end{GraphTikz}
+\end{tcblisting}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=0.9cm,y=0.425cm,Xmin=4,Xmax=20,Origx=4,
+ Ymin=40,Ymax=56,Ygrid=2,Ygrids=1,Origy=40]
+ <Frame>
+\end{GraphTikz}
+\end{tcblisting}
+
+It will obviously be more meaningful with the added graphic elements!
+
+\pagebreak
+
+\subsection{Grids and axes}\label{creaaxesgr}
+
+The first command \textit{useful} will allow you to create the grids, axes and graduations.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%in the GraphiqueTikz environment
+\DrawAxisGrids[keys]{gradX}{gradY}
+\end{tcblisting}
+
+The optional \MontreCode{[keys]} available are:
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{Grid}: boolean (\MontreCode{true} by default) to display the grids (for a single grid, simply set the identical parameters for \MontreCode{Xgrid}/\MontreCode{Xgrids} or \MontreCode {Ygrid}/\MontreCode{Ygrids});
+ \item \MontreCode{Enlarge}: addition at the end of the axes (\MontreCode{0} by default);
+ \item \MontreCode{Grads}: boolean (\MontreCode{true} by default) for graduations;
+ \item \MontreCode{Font}: global font for graduations {\MontreCode{empty} by default};
+ \item \MontreCode{Format}: special formatting (see below) of the axis values.
+\end{itemize}
+
+\smallskip
+
+Concerning the \MontreCode{Format} key, it allows you to specify a specific setting for the axis values.
+
+\smallskip
+
+It can be given in the form \MontreCode{fmt} for combined formatting, or in the form \MontreCode{fmtX/fmtY} to differentiate the formatting.
+
+\smallskip
+
+The possible options are:
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{num}: format with \textsf{siunitx};
+ \item \MontreCode{year}: format in year;
+ \item \MontreCode{frac}: format as fraction \textsf{frac};
+ \item \MontreCode{dfrac}: format as fraction \textsf{dfrac};
+ \item \MontreCode{nfrac}: format as fraction \textsf{nicefrac};\hfill (to load!)
+ \item \MontreCode{trig}: format in trig with \textsf{frac};
+ \item \MontreCode{dtrig}: format in trig with \textsf{dfrac};
+ \item \MontreCode{ntrig}: format in trig with \textsf{nfrac};
+ \item \MontreCode{sqrt}: format in root with \textsf{frac};
+ \item \MontreCode{dsqrt}: format in root with \textsf{dfrac};
+ \item \MontreCode{nsqrt}: format in root with \textsf{nicefrac}.
+\end{itemize}
+
+\smallskip
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}
+ [x=0.075cm,y=0.03cm,Xmin=0,Xmax=160,Xgrid=20,Xgrids=10,
+ Origy=250,Ymin=250,Ymax=400,Ygrid=25,Ygrids=5]
+ \DrawAxisGrids[Enlarge=2.5mm,Font=\small]{0,10,...,160}{250,275,...,400}
+\end{GraphTikz}
+\end{tcblisting}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=0.9cm,y=0.425cm,Xmin=4,Xmax=20,Origx=4,
+ Ymin=40,Ymax=56,Ygrid=2,Ygrids=1,Origy=40]
+ \DrawAxisGrids[Enlarge=2.5mm,Font=\small]{4,5,...,20}{40,42,...,56}
+\end{GraphTikz}
+\end{tcblisting}
+
+Note that there are the Boolean keys \MontreCode{[Behind]} (without the graduations) and \MontreCode{[Above]} (without the grid) to display the axes in \textit{under/over}-printing mode in the case of integrals for example.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=2.75cm,y=3cm,
+ Xmin=0,Xmax=3.5,Xgrid=pi/12,Xgrids=pi/24,
+ Ymin=-1.05,Ymax=1.05,Ygrid=0.2,Ygrids=0.05]
+ \DrawAxisGrids[Enlarge=2.5mm,Format=dtrig/nsqrt,Font=\footnotesize]%
+ {pi/6,pi/4,pi/3,pi/2,2*pi/3,3*pi/4,5*pi/6,pi}
+ {0,sqrt(2)/2,1/2,sqrt(3)/2,1,-1,-sqrt(3)/2,-1/2,-sqrt(2)/2}
+\end{GraphTikz}
+\end{tcblisting}
+
+In the case where the formatting does not give satisfactory result(s), it is possible to use a generic command for placing the graduations.
+
+\subsection{Adding values manually}\label{additionvals}
+
+It is also possible to use a specific command to place values on the axes, independently of an \textit{automated} formatting system.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+in the environment
+\AddXvalues[keys]{grads}{formatted values}
+\AddYvalues[keys]{grads}{formatted values}
+\end{tcblisting}
+
+The optional \MontreCode{[keys]} available are:
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{Font}: global font for graduations {\MontreCode{empty} by default};
+ \item \MontreCode{Lines}: boolean to add the tick marks {\MontreCode{true} by default}.
+\end{itemize}
+
+\smallskip
+
+The mandatory arguments correspond to the x-coordinates (in \TikZ\ language) and to the labels (in \LaTeX\ language) of the graduations.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=2.75cm,y=3cm,
+ Xmin=0,Xmax=3.5,Xgrid=pi/12,Xgrids=pi/24,
+ Ymin=-1.05,Ymax=1.05,Ygrid=0.2,Ygrids=0.05]
+ \DrawAxisGrids[Grads=false,Enlarge=2.5mm]{}{}
+ \AddXvalues
+ {0.15,0.6,pi/2,2.8284}
+ {\num{0.15},$\frac35$,$\displaystyle\frac{\pi}{2}$,$\sqrt{8}$}
+ \AddYvalues
+ {-1,0.175,0.3,sqrt(3)/2}
+ {\num{-1},\num{0.175},$\nicefrac{3}{10}$,$\frac{\sqrt{3}}{2}$}
+\end{GraphTikz}
+\end{tcblisting}
+
+\pagebreak
+
+\section{Specific definition commands}
+
+\subsection{Draw a line}\label{tracstraight}
+
+The idea is to propose a command to draw a line, from:
+
+\begin{itemize}
+ \item of two points (or nodes);
+ \item of a point (or node) and the slope.
+\end{itemize}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%in the GraphiqueTikz environment
+\DrawLine[keys]{point or node}{point or node or slope}
+\end{tcblisting}
+
+The optional \MontreCode{[keys]} available are:
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{Name}: possible name of the plot (for reuse);
+ \item \MontreCode{Slope}: boolean to specify that the slope is used (\MontreCode{false} by default);
+ \item \MontreCode{Start}: start of the plot (\MontreCode{\textbackslash pflxmin} by default);
+ \item \MontreCode{End}: end of the plot (\MontreCode{\textbackslash pflxmax} by default);
+ \item \MontreCode{Color}: color of the trace (\MontreCode{black} by default).
+\end{itemize}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=0.8cm,y=1cm,Xmin=-7,Xmax=4,Ymin=-3,Ymax=5]
+ \DrawAxisGrids[Enlarge=2.5mm]{auto}{auto}
+ \DefinePts[Mark,Color=gray]{A/-4/3,B/2/0,C/0/-1}
+ \DrawLine[Color=red]{(-2,-1)}{(2,4)}
+ \DrawLine[Color=blue,Start=-5,End=3]{(A)}{(B)}
+ \DrawLine[Color=olive,Slope]{(C)}{0.25}
+\end{GraphTikz}
+\end{tcblisting}
+
+\pagebreak
+
+\subsection{Define a function, draw the curve of a function}\label{deftracfct}
+
+The idea is to define a function, for later reuse. This command \textit{creates} the function, without tracing it, because in certain cases elements will have to be traced beforehand.
+
+\smallskip
+
+There is also a command to plot the curve of a previously defined function.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%in the GraphiqueTikz environment
+\DefineCurve[keys]<fct name>{xint formula}
+\DrawCurve[keys]{xint formula}
+\end{tcblisting}
+
+The optional \MontreCode{[keys]} for definition or tracing are:
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{Start}: lower bound of the definition set (\MontreCode{\textbackslash pflxmin} by default);
+ \item \MontreCode{End}: lower bound of the definition set (\MontreCode{\textbackslash pflxmax} by default);
+ \item \MontreCode{Name}: name of the curve (important for the rest!);
+ \item \MontreCode{Color}: color of the trace (\MontreCode{black} by default);
+ \item \MontreCode{Step}: plot step (it is determined \textit{automatically} at the start but can be modified);
+ \item \MontreCode{Trace}: boolean to also trace the curve (\MontreCode{false} by default).
+\end{itemize}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=0.9cm,y=0.425cm,Xmin=4,Xmax=20,Origx=4,
+ Ymin=40,Ymax=56,Ygrid=2,Ygrids=1,Origy=40]
+ \DrawAxisGrids[Enlarge=2.5mm,Font=\small]{4,5,...,20}{40,42,...,56}
+ %definition of the function + drawing of the curve
+ \DefineCurve[Name=cf,Start=5,End=19]<f>{-2*x+3+24*log(2*x)}
+ \DrawCurve[Color=red,Start=5,End=19]{f(x)}
+ %or in a single command if "sufficient"
+ %\DefineCurve[Name=cf,Start=5,End=19,Trace]<f>{-2*x+3+24*log(2*x)}
+\end{GraphTikz}
+\end{tcblisting}
+
+\pagebreak
+
+\subsection{Define/draw an interpolation curve (simple)}\label{deftracinterpo}
+
+It is also possible to define a curve via support points, therefore a simple interpolation curve.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%in the GraphiqueTikz environment
+\DefineInterpoCurve[keys]{list of support points}
+\DrawInterpoCurve[keys]{list of support points}
+\end{tcblisting}
+
+The optional \MontreCode{[keys]} for definition or tracing are:
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{Name}: name of the interpolation curve (important for the rest!);
+ \item \MontreCode{Color}: color of the trace (\MontreCode{black} by default);
+ \item \MontreCode{Tension}: setting the \textit{tension} of the interpolation plot (\MontreCode{0.5} by default);
+ \item \MontreCode{Trace}: boolean to also trace the curve (\MontreCode{false} by default).
+\end{itemize}
+
+The mandatory argument allows you to specify the list of support points in the form \MontreCode{(x1,y1)(x2,y2)...}.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=0.8cm,y=1cm,Xmin=-7,Xmax=4,Ymin=-3,Ymax=5]
+ \DrawAxisGrids[Enlarge=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+ %simple interpolation curves (with diff tension)
+ \DefineInterpoCurve[Name=interpotest,Color=blue,Trace]%
+ {(-6,4)(-2,-2)(3,3.5)}
+ \DefineInterpoCurve[Name=interpotest,Color=red,Trace,Tension=1]%
+ {(-6,4)(-2,-2)(3,3.5)}
+\end{GraphTikz}
+\end{tcblisting}
+
+\newpage
+
+\subsection{Define/draw an interpolation curve (Hermite)}\label{deftracfctspline}
+
+It is also possible to define a curve via support points, therefore an interpolation curve with derivative control.
+
+\smallskip
+
+Some operations require different techniques depending on the type of function used, a \textsf{Boolean} key \MontreCode{Spline} will allow the code to adapt its calculations depending on the object used.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%in the GraphiqueTikz environment
+\DefineSplineCurve[keys]{list of support points}[\macronomspline]
+\DrawSplineCurve[keys]{list of support points}[\macronomspline]
+\end{tcblisting}
+
+The optional \MontreCode{[keys]} for definition or tracing are:
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{Name}: name of the interpolation curve (important for the rest!);
+ \item \MontreCode{Coeffs}: modify (see the \textsf{ProfLycee}\footnote{CTAN documentation: \url{https://ctan.org/pkg/proflycee}} the \textit{coefficients} of the spline;
+ \item \MontreCode{Color}: color of the trace (\MontreCode{black} by default);
+ \item \MontreCode{Trace}: boolean to also trace the curve (\MontreCode{false} by default).
+\end{itemize}
+
+The mandatory argument allows you to specify the list of support points in the form \MontreCode{x1/y1/f'1§x2/y2/f'2§...} with:
+
+\begin{itemize}
+ \item \MontreCode{xi/yi} the coordinates of the point;
+ \item \MontreCode{f'i} the derivative at the support point.
+\end{itemize}
+
+\smallskip
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=0.8cm,y=1cm,Xmin=-7,Xmax=4,Ymin=-3,Ymax=5]
+ \DrawAxisGrids[Enlarge=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+ %definition of the list of spline support points
+ \def\LISTETEST{-6/4/-2§-5/2/-2§-4/0/-2§-2/-2/0§1/2/2§3/3.5/0.5}
+ %definition and plot of the cubic spline
+ \DefineSplineCurve[Name=splinetest,Trace,Color=olive]{\LISTETEST}
+\end{GraphTikz}
+\end{tcblisting}
+
+\pagebreak
+
+\subsection{Define points as nodes}\label{defpts}
+
+The second idea is to work with \TikZ nodes, which could be useful for tangent plots, representations of integrals$\ldots$
+
+\smallskip
+
+It is also possible to define nodes for \textit{image} points.
+
+\smallskip
+
+Certain commands (explained later) allow you to determine particular points of curves in the form of nodes, so it seems interesting to be able to define them directly.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%by coordinates
+\DefinePts[keys]{Name1/x1/y1,Name2/x2/y2,...}
+\end{tcblisting}
+
+The optional \MontreCode{[keys]} available are:
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{Mark}: boolean to mark points (\MontreCode{false} by default);
+ \item \MontreCode{Color}: color of the points, if \MontreCode{Mark=true} (\MontreCode{black} by default).
+\end{itemize}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%as image
+\DefineRange[keys]{object}{abscissa}
+\end{tcblisting}
+
+The optional \MontreCode{[keys]} available are:
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{Name}: node name (\MontreCode{empty} by default);
+ \item \MontreCode{Spline}: boolean to specify that a spline is used (\MontreCode{false} by default).
+\end{itemize}
+
+The first mandatory argument is the \textit{object} considered (name of the curve for the spline, function otherwise); the second is the abscissa of the point considered.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=0.9cm,y=0.425cm,Xmin=4,Xmax=20,Origx=4,
+ Ymin=40,Ymax=56,Ygrid=2,Ygrids=1,Origy=40]
+ \DrawAxisGrids[Enlarge=2.5mm,Font=\small]{4,5,...,20}{40,42,...,56}
+ %definition of the function + drawing of the curve
+ \DefineFunction[Name=cf,Start=5,End=19,Trace,Color=red]<f>{-2*x+3+24*log(2*x)}
+ %manual nodes
+ \DefinePts[Mark,Color=brown]{A/7/42,B/16/49}
+ %imagenode
+ \DefineRange[Name=IMGf]{f}{14}
+ \MarkPts*[Style=x,Color=blue]{(IMGf)} %see next section ;-)
+\end{GraphTikz}
+\end{tcblisting}
+
+\pagebreak
+
+\subsection{Mark Points}\label{markpts}
+
+The idea is to offer something to score points with a particular style.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%in the GraphiqueTikz environment
+\MarkPts(*)[keys]<font>{list}
+\end{tcblisting}
+
+The \textit{starred} version scores the points without the \textit{names}, while the \textit{unstarred} version displays them:
+
+\begin{itemize}
+ \item in the case of the \textit{starred} version, the list should be given in the form \MontreCode{(ptA),(ptB),...};
+ \item otherwise, the list should be given in the form \MontreCode{(ptA)/poslabelA/labelA,...}.
+\end{itemize}
+
+\smallskip
+
+The optional \MontreCode{[keys]} available are:
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{Color}: color (\MontreCode{black} by default);
+ \item \MontreCode{Style}: style of marks (\MontreCode{o} by default).
+\end{itemize}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}[x=1.5cm,y=1.5cm,Ymin=-2]
+ \DrawAxisGrids[Enlarge=2.5mm]{auto}{auto}
+ \DefinePts{A/1.75,-1.25}\MarkPts[Color=pink]{(A)/below/A} %round (default)
+ \MarkPts[Color=teal]{(1,1)/below/M}
+ \MarkPts[Color=red,Style=x]{(1.25,1)/below/$A$} %cross
+ \MarkPts[Color=orange,Style=+]<\small\sffamily>{(1.5,1)/below/K} %plus
+ \MarkPts[Color=blue,Style=c]{(1.75,1)/below/P} %square
+ \MarkPts[Color=gray,Style=d]{(2,1)/below/P} %diamond
+ \MarkPts*[Color=orange/yellow]{(2,2),(2.5,2.25)} %two-tone round
+ \MarkPts*[Style=+,Color=red]{(1,2)}
+ \MarkPts*[Style=x,Color=blue]{(2.25,1)}
+ \MarkPts*[Style=c,Color=magenta]{(-2,-1)}
+ \MarkPts[Color=red,Style=x]{(-1,1)/below/$A$,(-2,2)/below left/$B$}
+\end{GraphTikz}
+\end{tcblisting}
+
+Note that it is also possible to modify the size of the \MontreCode{o/x/+/c} marks via the \MontreCode{[keys]}:
+
+\begin{itemize}
+ \item \MontreCode{Sizex=...} (\MontreCode{2pt} by default) for points \textit{cross};
+ \item \MontreCode{Sizeo=...} (\MontreCode{1.75pt} by default) for the points \textit{circle};
+ \item \MontreCode{Sizec=...} (\MontreCode{2pt} by default) for the \textit{square} points.
+\end{itemize}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}[x=1cm,y=1cm,Xmin=0,Ymin=0]
+ \DrawAxisGrids[Enlarge=2.5mm]{auto}{auto}
+ \MarkPts[Color=red,Style=x,Size=3.5pt]{(1.25,1.25)/below/$A$}
+ \MarkPts[Color=teal,Size=2.5pt]{(2,2)/right/$A$}
+ \MarkPts*[Color=orange,Style=c,Size=4pt]{(0.5,2.5)}
+\end{GraphTikz}
+\end{tcblisting}
+
+\subsection{Retrieve node coordinates}\label{recupcoordo}
+
+It is also possible, with a view to reusing coordinates, to recover the coordinates of a node (defined or determined).
+
+\smallskip
+
+The calculations are carried out by floating according to the (re)calculated units, the values are therefore approximated !
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%in the GraphiqueTikz environment
+\GetXcoord{node}[\macrox]
+\GetYcoord{node}[\macroy]
+\GetXYcoord{node}[\macrox][\macroy]
+\end{tcblisting}
+
+\subsection{Place text}\label{placetxt}
+
+Note that a text placement command is available.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%in the GraphiqueTikz environment
+\DrawTxt[keys]{(node or coordinates)}{text}
+\end{tcblisting}
+
+The available \MontreCode{[keys]} are:
+
+\begin{itemize}
+ \item \MontreCode{Font=...} (\MontreCode{\textbackslash normalsize\textbackslash normalfont} by default) for the font;
+ \item \MontreCode{Color=...} (\MontreCode{black} by default) for the color;
+ \item \MontreCode{Position=...} (\MontreCode{empty} by default) for the position of the text relative to the coordinates.
+\end{itemize}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}[x=1cm,y=1cm,Xmin=0,Xmax=5,Ymin=0,Ymax=1]
+ \DrawAxisGrids[Enlarge=2.5mm]{auto}{auto}
+ \DrawTxt[Color=red,Font=\LARGE,Position=right]{(1.5,0.5)}{curve $C_1$}
+\end{GraphTikz}
+\end{tcblisting}
+
+\section{Specific commands for using curves}
+
+\subsection{Image placement}\label{images}
+
+It is possible to place points (images) on a curve, with possible construction lines.
+
+The function/curve used must have been declared previously for this command to work.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%in the GraphiqueTikz environment
+\DrawRanges[keys]{function or curve}{list of abscissa}
+\end{tcblisting}
+
+The optional \MontreCode{[keys]} available are:
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{Lines}: boolean to display construction traits (\MontreCode{false} by default);
+ \item \MontreCode{Colors}: color of the points/lines, in the form \MontreCode{Couleurs} or \MontreCode{ColPoint/ColLines};
+ \item \MontreCode{Spline}: boolean to specify that the curve used is defined as a \textsf{spline} (\MontreCode{false} by default).
+\end{itemize}
+
+\smallskip
+
+The first mandatory argument allows you to specify:
+
+\smallskip
+
+\begin{itemize}
+ \item the name of the curve in the case \MontreCode{Spline=true};
+ \item the name of the function otherwise.
+\end{itemize}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=0.9cm,y=0.425cm,Xmin=4,Xmax=20,Origx=4,
+ Ymin=40,Ymax=56,Ygrid=2,Ygrids=1,Origy=40]
+ \DrawAxisGrids[Enlarge=2.5mm,Font=\small]{4,5,...,20}{40,42,...,56}
+ %definition of the function + drawing of the curve
+ \DefineCurve[Name=cf,Start=5,End=19,Trace,Color=red]<f>{-2*x+3+24*log(2*x)}
+ %images
+ \DrawRanges[Lines,Colors=teal/blue]{f}{6,7,8,9,10}
+\end{GraphTikz}
+\end{tcblisting}
+
+\pagebreak
+
+\subsection{Antecedent determination}\label{defanteced}
+
+It is possible to graphically determine the antecedents of a given reality.
+
+The function/curve used must have been declared previously for this command to work.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%in the GraphiqueTikz environment
+\FindCounterimage[keys]{curve}{k}
+\end{tcblisting}
+
+The optional \MontreCode{[keys]} available are:
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{Name}: base of the name of the \textbf{nodes} intersection (\MontreCode{S} by default, which will give \textsf{S-1}, \textsf{S-2}, etc);
+ \item \MontreCode{Disp}: boolean to display the points (\MontreCode{true} by default);
+ \item \MontreCode{Color}: color of the points (\MontreCode{black} by default);
+ \item \MontreCode{DispLine}: boolean to display the horizontal line (\MontreCode{false} by default).
+\end{itemize}
+
+\smallskip
+
+The first mandatory argument allows you to specify the \textbf{name} of the curve.
+
+\smallskip
+
+The second mandatory argument allows you to specify the value to reach.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=0.9cm,y=0.425cm,Xmin=4,Xmax=20,Origx=4,
+ Ymin=40,Ymax=56,Ygrid=2,Ygrids=1,Origy=40]
+ \DrawAxisGrids[Enlarge=2.5mm,Font=\small]{4,5,...,20}{40,42,...,56}
+ %definition of the function + drawing of the curve
+ \DefineCurve[Name=cf,Start=5,End=19,Trace,Color=red]<f>{-2*x+3+24*log(2*x)}
+ %history
+ \FindCounterimage[Color=teal,DispLine,Disp]{cf}{53}
+ %the two antecedents are at nodes (S-1) and (S-2)
+\end{GraphTikz}
+\end{tcblisting}
+
+\pagebreak
+
+\subsection{Antecedent construction}\label{tracanteced}
+
+It is possible to graphically construct the antecedents.
+
+The function/curve used must have been declared previously for this command to work.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%in the GraphiqueTikz environment
+\DrawCounterimage[keys]{curve}{k}
+\end{tcblisting}
+
+The optional \MontreCode{[keys]} available are:
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{Colors}: color of the points/lines, in the form \MontreCode{Color} or \MontreCode{ColPoint/ColLines};
+ \item \MontreCode{Name}: name \textit{possible} for the intersection points linked to the antecedents (\MontreCode{empty} by default);
+ \item \MontreCode{Lines}: boolean to display construction traits (\MontreCode{false} by default).
+\end{itemize}
+
+\smallskip
+
+The first mandatory argument allows you to specify the \textbf{name} of the curve.
+
+\smallskip
+
+The second mandatory argument allows you to specify the value to reach.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=0.9cm,y=0.425cm,Xmin=4,Xmax=20,Origx=4,
+ Ymin=40,Ymax=56,Ygrid=2,Ygrids=1,Origy=40]
+ \DrawAxisGrids[Enlarge=2.5mm,Font=\small]{4,5,...,20}{40,42,...,56}
+ %definition of the function + drawing of the curve
+ \DefineCurve[Name=cf,Start=5,End=19,Trace,Color=red]<f>{-2*x+3+24*log(2*x)}
+ %history
+ \DrawCounterimage[Colors=teal/cyan,Lines,Name=PO]{cf}{53}
+ \GetXcoord{(PO-1)}[\premsol]
+ \GetXcoord{(PO-2)}[\deuxsol]
+\end{GraphTikz}
+
+Graphically, the antecedents of 53 are (approximately):
+
+\begin{itemize}
+ \item \num{\premsol}
+ \item \num{\deuxsol}
+\end{itemize}
+\end{tcblisting}
+
+\pagebreak
+
+\subsection{Intersections of two curves}\label{intersect}
+
+It is also possible to determine (in the form of nodes) the possible points of intersection of two previously defined curves.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%in the GraphiqueTikz environment
+\FindIntersections[keys]{curve1}{curve2}
+\end{tcblisting}
+
+The optional \MontreCode{[keys]} available are:
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{Name}: base of the name of the \textbf{nodes} intersection (\MontreCode{S} by default, which will give \textsf{S-1}, \textsf{S-2}, etc);
+ \item \MontreCode{Disp}: boolean to display the points (\MontreCode{true} by default);
+ \item \MontreCode{Color}: color of the points (\MontreCode{black} by default).
+\end{itemize}
+
+\smallskip
+
+The first mandatory argument allows you to specify the \textbf{name} of the first curve.
+
+\smallskip
+
+The first mandatory argument allows you to specify the \textbf{name} of the second curve.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=0.9cm,y=0.425cm,Xmin=4,Xmax=20,Origx=4,
+ Ymin=40,Ymax=56,Ygrid=2,Ygrids=1,Origy=40]
+ \DrawAxisGrids[Enlarge=2.5mm,Font=\small]{4,5,...,20}{40,42,...,56}
+ \DefineCurve[Name=cf,Start=5,End=19,Trace,Color=red]<f>{-2*x+3+24*log(2*x)}
+ \DefineCurve[Name=cg,Start=5,End=19,Trace,Color=blue]<g>{0.25*(x-12)^2+46}
+ %intersections, named (TT-1) and (TT-2)
+ \FindIntersections[Name=TT,Color=darkgray,Display,Lines]{cf}{cg}
+ %recovery of intersection points
+ \GetXYcoord{(TT-1)}[\alphaA][\betaA]
+ \GetXYcoord{(TT-2)}[\alphaB][\betaB]
+\end{GraphTikz}\\
+The solutions of $f(x)=g(x)$ are $\alpha \approx \num{\alphaA}$ and
+$\beta \approx \num{\alphaB}$.\\
+The points of intersection of the curves of $f$ and $g$ are therefore
+$(\RoundNb[2]{\alphaA};\RoundNb[2]{\betaA})$ and
+$(\RoundNb[2]{\alphaB};\RoundNb[2]{\betaB})$.
+\end{tcblisting}
+
+\pagebreak
+
+\subsection{Extrema}\label{maximum}\label{minimum}
+
+The idea (still \textit{experimental}) is to offer commands to extract the extrema of a curve defined by the package.
+
+The command creates the corresponding node, and it is therefore possible to retrieve its coordinates for later use.
+
+\smallskip
+
+It is possible, by specifying it, to work on the different curves managed by the package (function, interpolation, spline).
+
+For singular curves, it is possible that the results are not quite those expected\ldots
+
+\smallskip
+
+{\small\faBomb} For the moment, the \textit{limitations} are:
+
+\begin{itemize}
+ \item no management of multiple extrema (only the first will be processed)\ldots
+ \item no management of extrema at the boundaries of the route\ldots
+ \item no automatic recovery of curve definition parameters\ldots
+ \item compilation time may be longer\ldots
+\end{itemize}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%in the GraphiqueTikz environment
+\FindMax[keys]{object}[node created]
+\FindMin[keys]{object}[node created]
+\end{tcblisting}
+
+The optional \MontreCode{[keys]} available are:
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{Method}: method, among \MontreCode{function/interpo/spline} for calculations (\MontreCode{function} by default);
+ \item \MontreCode{Start}: start of the plot (\MontreCode{\textbackslash pflxmin} by default);
+ \item \MontreCode{End}: end of the plot (\MontreCode{\textbackslash pflxmax} by default);
+ \item \MontreCode{Step}: not in the plot if \MontreCode{function} (it is determined \textit{automatically} at the start but can be modified);
+ \item \MontreCode{Coeffs}: modify the \textit{coefficients} of the spline if \MontreCode{spline};
+ \item \MontreCode{Tension}: setting the \textit{tension} of the interpolation plot if \MontreCode{interpo}(\MontreCode{0.5} by default).
+\end{itemize}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}[x=1cm,y=1cm,Xmin=-1,Xmax=5,Ymin=-1,Ymax=3]
+ \DrawAxisGrids[Enlarge=2.5mm]{auto}{auto}
+ \DefineCurve[Name=cf,Start=0.35,End=4.2,Trace]%
+ <f>{0.6*cos(4.5*(x-4)+2.1)-1.2*sin(x-4)+0.1*x+0.2}
+ \FindMax[Start=0.35,End=4.2]{f}[cf-max]
+ \FindMax[Start=3,End=4]{f}[cf-maxlocal]
+ \FindMin[Start=1,End=2]{f}[cf-minlocal]
+ \MarkPts*[Color=red,Lines]{(cf-max)}
+ \MarkPts*[Color=blue,Lines]{(cf-maxlocal)}
+ \MarkPts*[Color=olive,Lines]{(cf-minlocal)}
+ \GetXYcoord{(cf-max)}[\MyMaxX][\MyMaxY]
+\end{GraphTikz}\\
+The maximum is $M\approx\RoundNb{\MyMaxY}$, reached in $x\approx\RoundNb{\MyMaxX}$
+\end{tcblisting}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}[x=0.8cm,y=1cm,Xmin=-7,Xmax=4,Ymin=-3,Ymax=5]
+ \DrawAxisGrids[Enlarge=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+ \DefineInterpoCurve[Name=interpotest,Color=red,Trace,Tension=1]%
+ {(-6,4)(-2,-2)(3,3.5)}
+ \FindMin[Method=interpo,Tension=1]{(-6,4)(-2,-2)(3,3.5)}[interpo-min]
+ \MarkPts*[Color=blue]{(interpo-min)}
+ \GetXYcoord{(interpo-min)}[\MinInterpoX][\MinInterpoY]
+\end{GraphTikz}\\
+The minimum is $M\approx\RoundNb[3]{\MinInterpoY}$, reached at $x\approx\RoundNb[3]{\MinInterpoX}$
+\end{tcblisting}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=1.2cm,y=1.6cm,Xmin=-7,Xmax=4,Ymin=-3,Ymax=3,Ygrid=0.5,Ygrids=0.25]
+ \DrawAxisGrids[Enlarge=2.5mm]{auto}{auto}
+ \def\LISTETEST{-6/2/0§-1/-2/0§2/1/0§3.5/0/-1}
+ \DefineSplineCurve[Name=splinetest,Trace]{\LISTETEST}
+ \FindMin[Method=spline]{\LISTETEST}[spline-min]
+ \MarkPts*[Color=red]{(spline-min)}
+\end{GraphTikz}
+\end{tcblisting}
+
+\pagebreak
+
+\subsection{Integrals (improved version)}\label{integr}
+
+We can also work with integrals.
+
+In this case it is preferable to highlight the domain \textbf{before} the plots, to avoid overprinting in relation to the curves/points.
+
+\smallskip
+
+It is possible to :
+
+\begin{itemize}
+ \item represent an integral \textbf{under} a defined curve;
+ \item represent an integral \textbf{between} two curves;
+ \item the integration limits can be x-coordinates and/or nodes.
+\end{itemize}
+
+\smallskip
+
+{\small\faBomb} Given the differences in processing between formula curves, simple interpolation curves or cubic interpolation curves, the arguments and keys may differ depending on the configuration!
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%in the GraphiqueTikz environment
+\DrawIntegral[keys]<specific options>{object1}[object2]{A}{B}
+\end{tcblisting}
+
+The optional \MontreCode{[keys]} for definition or tracing are:
+
+\begin{itemize}
+ \item \MontreCode{Colors} =: colors of the filling, in the form \MontreCode{Col} or \MontreCode{ColBorder/ColBg} (\MontreCode{gray} by default);
+ \item \MontreCode{Style}: type of filling, among \MontreCode{fill}/\MontreCode{hatch} (\MontreCode{fill} by default);
+ \item \MontreCode{Opacity}: opacity (\MontreCode{0.5} by default) of the filling;
+ \item \MontreCode{Hatch}: style (\MontreCode{north west lines} by default) of the hatch filling;
+ \item \MontreCode{Type}: type of integral among
+ \begin{itemize}
+ \item \MontreCode{fct} (default) for an integral under a curve defined by a formula;
+ \item \MontreCode{spl} for an integral under a curve defined by a cubic spline;
+ \item \MontreCode{itp} for an integral under a curve defined by interpolation ;
+ \item \MontreCode{fct/fct} for an integral between two curves defined by a formula;
+ \item \MontreCode{fct/spl} for an integral between a curve (above) defined by a formula and a curve (below) defined by a spline cubic;
+ \item etc.
+ \end{itemize}
+ \item \MontreCode{Step}: steps (calculated by default otherwise) for the plot;
+ \item \MontreCode{Junction}: junction of segments (\MontreCode{bevel} by default);
+ \item \MontreCode{Bounds}: type of terminals among:
+ \begin{itemize}
+ \item \MontreCode{abs} for the limits given by the abscissa;
+ \item \MontreCode{nodes} for the limits given by the nodes;
+ \item \MontreCode{abs/node} for the limits given by abscissa and node;
+ \item \MontreCode{node/abs} for the limits given by node and abscissa;
+ \end{itemize}
+ \item \MontreCode{Border}: boolean (\MontreCode{true} by default) to display the side lines,%
+ \item \MontreCode{SplineName}: macro (important!) of the spline generated previously for a higher version spline;
+ \item \MontreCode{SplineNameB}: macro (important!) of the spline generated previously for a lower version spline;
+ \item \MontreCode{InterpoName}: name (important!) of the interpolation curve generated previously, in higher version;
+ \item \MontreCode{InterpoBName}: name (important!) of the interpolation curve generated previously, in lower version;
+ \item \MontreCode{Tension}: Tension for the interpolation curve generated previously, in higher version;
+ \item \MontreCode{TensionB}: Tension of the interpolation curve generated previously, in lower version.
+\end{itemize}
+
+\smallskip
+
+The first required argument is the spline function or curve or list of interpolation points.
+
+\smallskip
+
+The next optional argument is the spline function or curve or list of interpolation points.
+
+\smallskip
+
+The last two mandatory arguments are the limits of the integral, given in a form consistent with the key \MontreCode{Bounds}.
+
+\pagebreak
+
+In the case of curves defined by \textit{points}, it is necessary to work on intervals on which the first curve is \textbf{above} the second.
+
+It will undoubtedly be interesting to work with \textit{intersections} in this case.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=0.6cm,y=0.06cm,
+ Xmin=0,Xmax=21,Xgrid=1,Xgrids=0.5,
+ Ymin=0,Ymax=155,Ygrid=10,Ygrids=5]
+ \DrawAxisGrids[Grads=false,Enlarge=2.5mm]{}{}
+ \DefineCurve[Name=cf,Start=1,End=20,Color=red]<f>{80*x*exp(-0.2*x)}
+ \DrawIntegral
+ [Bounds=abs,Colors=blue/cyan!50]%
+ {f(x)}{3}{12}
+ \DrawCurve[Color=red,Start=1,End=20]{f(x)}
+ \DrawAxisGrids%
+ [Grid=false,Enlarge=2.5mm,Font=\small]{0,1,...,20}{0,10,...,150}
+\end{GraphTikz}
+\end{tcblisting}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=1.2cm,y=1.6cm,Xmin=-7,Xmax=4,Ymin=-3,Ymax=3,Ygrid=0.5,Ygrids=0.25]
+ \DrawAxisGrids[Grads=false,Enlarge=2.5mm]{}{}
+ \def\LISTETEST{-6/2/0§-1/-2/0§2/1/0§3.5/0/-1}
+ \DefineSplineCurve[Name=splinetest]{\LISTETEST}
+ \DrawIntegral[Type=spl,Style=hatch,Colors=purple]{splinetest}{-5.75}{-4.75}
+ \DrawIntegral[Type=spl,Colors=blue]{splinetest}{-2}{-1}
+ \DrawIntegral[Type=spl,Colors=orange]{splinetest}{1}{3}
+ \DrawSplineCurve[Color=olive]{\LISTETEST}
+ \DrawAxisGrids[Grid=false,Enlarge=2.5mm]
+ {-7,-6,...,4}%
+ {-3,-2.5,...,3}
+\end{GraphTikz}
+\end{tcblisting}
+
+\pagebreak
+
+\subsection{Tangents}\label{tgte}
+
+The idea of this command is to draw the tangent to a previously defined curve, specifying:
+
+\begin{itemize}
+ \item the point (abscissa or node) at which we wish to work;
+ \item possibly the direction (in the case of a discontinuity or a terminal);
+ \item possibly the step ($h$) of the calculation;
+ \item the \textit{lateral spacings} to draw the tangent.
+\end{itemize}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%in the GraphiqueTikz environment
+\DrawTangent[keys]{function or curve}{point}<line options>
+\end{tcblisting}
+
+The optional \MontreCode{[keys]} for definition or tracing are:
+
+\begin{itemize}
+ \item \MontreCode{Colors} =: colors of the plots, in the form \MontreCode{Col} or \MontreCode{ColLine/ColPoint} (\MontreCode{black} by default);
+ \item \MontreCode{OffsetL} =: left horizontal spacing to start the trace (\MontreCode{1} by default);
+ \item \MontreCode{OffsetR} =: left horizontal spacing to start the trace (\MontreCode{1} by default);
+ \item \MontreCode{DispPt}: boolean to display the support point (\MontreCode{false} by default);
+ \item \MontreCode{Spline}: boolean to specify that a spline is used (\MontreCode{false} by default);
+ \item \MontreCode{h}: delta $h$ used for calculations (\MontreCode{0.01} by default);
+ \item \MontreCode{Direction}: allows you to specify the \textit{direction} of the tangent, among \MontreCode{lr}/\MontreCode{l}/\MontreCode{r} (\MontreCode{lr} by default);
+ \item \MontreCode{Node}: boolean to specify that a node is used (\MontreCode{false} by default).
+\end{itemize}
+
+\smallskip
+
+The first required argument is the spline function or curve (if applicable).
+
+\smallskip
+
+The last mandatory argument is the work point (abscissa version or node following the key \MontreCode{Node}).
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=0.9cm,y=0.425cm,Xmin=4,Xmax=20,Origx=4,
+ Ymin=40,Ymax=56,Ygrid=2,Ygrids=1,Origy=40]
+ \DrawAxisGrids[Enlarge=2.5mm,Font=\small]{4,5,...,20}{40,42,...,56}
+ \DefineCurve[Name=cf,Start=5,End=19,Color=red,Trace]<f>{-2*x+3+24*log(2*x)}
+ \FindCounterimage[Color=teal,Name=JKL,Disp=false]{cf}{53}
+ %tangent
+ \DrawTangent%
+ [Colors=cyan/gray,OffsetL=2.5,OffsetR=2.5,Node,DispPt]{f}{(JKL-1)}
+\end{GraphTikz}
+\end{tcblisting}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=0.8cm,y=1cm,Xmin=-7,Xmax=4,Ymin=-3,Ymax=5]
+ \DrawAxisGrids[Enlarge=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+ \def\LISTETEST{-6/4/-0.5§-5/2/-2§-4/0/-2§-2/-2/0§1/2/2§3/3.5/0.5}
+ \DefineSplineCurve[Name=splinetest,Trace,Color=olive]{\LISTETEST}
+ \DrawTangent[Colors=red,Spline,DispPt]{splinetest}{1}
+ \DrawTangent%
+ [Colors=blue,Spline,OffsetL=1.5,OffsetR=1.5,DispPt]{splinetest}{-3}%
+ <tkzgrpharrowlr>
+ \DrawTangent[Direction=l,Colors=orange,Spline,OffsetL=1.5,DispPt]{splinetest}{3}
+ \DrawTangent[Direction=r,Colors=purple,Spline,OffsetR=1.5,DispPt]{splinetest}{-6}
+\end{GraphTikz}
+\end{tcblisting}
+
+\pagebreak
+
+%\section{Specific commands for density functions}
+%
+%\subsection{Normal distribution}\label{normal distribution}
+%
+%The idea is to provide something to work with standard deviation.
+%
+%\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+% %in the GraphiqueTikz environment
+% \DefineNormalDistribution[keys]<fct name>{mu}{sigma}
+% \TraceNormalDistribution[keys]{fct(x)}
+%\end{tcblisting}
+%
+%The optional \MontreCode{[keys]} available are:
+%
+%\smallskip
+%
+%\begin{itemize}
+% \item \MontreCode{Name}: name of the plot (\MontreCode{Gaussian} by default);
+% \item \MontreCode{Trace}: boolean to trace the curve (\MontreCode{false} by default);
+% \item \MontreCode{Couleur}: color of the trace, if requested (\MontreCode{black} by default);
+% \item \MontreCode{Debut}: lower bound of the definition set (\MontreCode{\textbackslash pflxmin} by default);
+% \item \MontreCode{End}: lower bound of the definition set (\MontreCode{\textbackslash pflxmax} by default);
+% \item \MontreCode{Pas}: plot step (it is determined \textit{automatically} at the start but can be modified).
+%\end{itemize}
+%
+%Note that the vertical axis must be adapted according to the parameters of the normal law.
+%
+%\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+% \begin{GraphTikz}%
+% [x=1.25cm,y=15cm,Origx=5,Xmin=5,Xmax=15,Ymin=0,Ymax=0.3,
+% Ygrid=0.1,Ygrids=0.05]
+% \DrawAxisGrids[Enlarge=2.5mm]{auto}{auto}
+% \DefineNormalDistribution[Name=Gaussian]<phi>{10}{1.5}
+% \TracerIntegral
+% [Terminals=abs, Colors=blue/cyan!50]%
+% {phi(x)}{7}{13}
+% \TraceNormalLaw[Color=purple,Start=5,End=15]{phi(x)}
+% \end{GraphTikz}
+%\end{tcblisting}
+%
+%\pagebreak
+%
+%\subsection{Chi-square law}\label{loikhideux}
+%
+%The idea is to provide something to work with normal laws.
+%
+%\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+% %in the GraphiqueTikz environment
+% \DefineKhiTwoLaw[keys]<fct name>{k}
+% \TraceLawKhiTwo[keys]{fct(x)}
+%\end{tcblisting}
+%
+%The optional \MontreCode{[keys]} available are:
+%
+%\smallskip
+%
+%\begin{itemize}
+% \item \MontreCode{Name}: name of the plot (\MontreCode{Gaussian} by default);
+% \item \MontreCode{Trace}: boolean to trace the curve (\MontreCode{false} by default);
+% \item \MontreCode{Couleur}: color of the trace, if requested (\MontreCode{black} by default);
+% \item \MontreCode{Debut}: lower bound of the definition set (\MontreCode{\textbackslash pflxmin} by default);
+% \item \MontreCode{End}: lower bound of the definition set (\MontreCode{\textbackslash pflxmax} by default);
+% \item \MontreCode{Pas}: plot step (it is determined \textit{automatically} at the start but can be modified).
+%\end{itemize}
+%
+%Note that the vertical axis must be adapted according to the parameter of the chi-square law.
+%
+%\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+% \begin{GraphTikz}[
+% x=1.5cm,y=7.5cm,
+% Xmin=0,Xmax=8,Xgrid=1,Xgrids=0.5,
+% Ymin=0,Ymax=0.5,Ygrid=0.1,Ygrids=0.05
+% ]
+% \DrawAxisGrids[Enlarge=2.5mm]{auto}{auto}
+% \DefineKhiTwoLaw[Color=red,Start=0.25,Trace]<phiA>{1}
+% \DefineKhiTwoLaw[Color=blue,Trace]<phiB>{2}
+% \DefineLawKhiDeux[Color=orange,Trace]<phiC>{3}
+% \DefineKhiTwoLaw[Color=purple,Trace]<phiD>{4}
+% \DefineKhiTwoLaw[Color=yellow,Trace]<phiE>{5}
+% \DefineKhiTwoLaw[Color=teal,Trace]<phiF>{6}
+% \end{GraphTikz}
+%\end{tcblisting}
+
+\pagebreak
+
+\section{Commands specific to two-variable statistics}
+
+\subsection{The point cloud}\label{scatter}
+
+In addition to commands linked to functions, it is also possible to represent double statistical series.
+
+\smallskip
+
+The following paragraph shows that adding a key allows you to add the linear adjustment line.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%in the GraphiqueTikz environment
+\DrawScatter[keys]{ListX}{ListY}
+\end{tcblisting}
+
+The optional \MontreCode{[key]} is:
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{ColorScatter}: color of the cloud points (\MontreCode{black} by default).
+\end{itemize}
+
+\smallskip
+
+The mandatory arguments allow you to specify:
+
+\smallskip
+
+\begin{itemize}
+ \item the list of x;
+ \item the list of y.
+\end{itemize}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=0.075cm,y=0.03cm,Xmin=0,Xmax=160,Xgrid=20,Xgrids=10,
+ Origy=250,Ymin=250,Ymax=400,Ygrid=25,Ygrids=5]
+ %window preparation
+ \DrawAxisGrids[Enlarge=2.5mm,Font=\small]{0,10,...,160}{250,275,...,400}
+ %A cloud of dots
+ \DrawScatter[Style=x,ColorScatter=red]{0,50,100,140}{275,290,315,350}
+\end{GraphTikz}
+\end{tcblisting}
+
+\subsection{The regression line}\label{reglin}
+
+The linear regression line (obtained by the least squares method) can easily be added, using the key \MontreCode{DrawLine}.
+
+\smallskip
+
+In this case, new keys are available:
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{ColorLine}: color of the line (\MontreCode{black} by default);
+ \item \MontreCode{Rounds}: precision of coefficients (\MontreCode{empty} by default);
+ \item \MontreCode{Start}: initial abscissa of the plot (\MontreCode{\textbackslash pflxmin} by default);
+ \item \MontreCode{End}: terminal abscissa of the plot (\MontreCode{\textbackslash pflxmax} by default);
+ \item \MontreCode{Name}: name of the line, for later use (\MontreCode{reglin} by default).
+\end{itemize}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=0.075cm,y=0.03cm,Xmin=0,Xmax=160,Xgrid=20,Xgrids=10,
+ Origy=250,Ymin=250,Ymax=400,Ygrid=25,Ygrids=5]
+ \DrawAxisGrids[Enlarge=2.5mm,Font=\small]{0,10,...,160}{250,275,...,400}
+ %cloud and right
+ \DrawScatter%
+ [ColorScatter=red,ColorLine=brown,DrawLine]%
+ {0,50,100,140}{275,290,315,350}
+ %picture
+ \DrawRanges[Colors=cyan/magenta,Lines]{d}{120}
+ %history
+ \DrawCounterimage[Style=x,Colors=blue/green!50!black,Lines]{reglin}{300}
+\end{GraphTikz}
+\end{tcblisting}
+
+\subsection{Other regressions}\label{regressions}
+
+In partnership with the \MontreCode{xint-regression} package, loaded by the package (but \textit{can be deactivated} via the \MontreCode{[noxintreg]} option), it is possible to work on other types of regression:
+
+\begin{itemize}
+ \item linear \fbox{$ax+b$};
+ \item quadratic \fbox{$ax^2+bx+c$};
+ \item cubic \fbox{$ax^3+bx^2+cx+d$};
+ \item power \fbox{$ax^b$};
+ \item exponential \fbox{$ab^x$} or \fbox{$e^{ax+b}$} or \fbox{$b e^{ax}$} or \fbox{$C + be^{ax} $};
+ \item logarithmic \fbox{$a+b\ln(x)$};
+ \item hyperbolic \fbox{$a+\displaystyle\frac{b}{x}$}.
+\end{itemize}
+
+The command, similar to that of defining a curve, is:
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+\DrawRegression[keys]<no fct>{type}<rounded>{listex}{listey}
+\end{tcblisting}
+
+The \MontreCode{[keys]} available are, classically:
+
+\begin{itemize}
+ \item \MontreCode{Start}: lower bound of the definition set (\MontreCode{\textbackslash pflxmin} by default);
+ \item \MontreCode{End}: lower bound of the definition set (\MontreCode{\textbackslash pflxmax} by default);
+ \item \MontreCode{Name}: name of the curve (important for the rest!);
+ \item \MontreCode{Color}: color of the trace (\MontreCode{black} by default);
+ \item \MontreCode{Step}: plot step (it is determined \textit{automatically} at the start but can be modified).
+\end{itemize}
+
+\pagebreak
+
+The second argument, optional and between \MontreCode{<...>}, allows you to name the regression function.
+
+The third argument, mandatory and between \MontreCode{\{...\}} allows you to choose the type of regression, among:
+
+\begin{itemize}
+ \item \MontreCode{lin}: linear \fbox{$ax+b$};
+ \item \MontreCode{quad}: quadratic \fbox{$ax^2+bx+c$};
+ \item \MontreCode{cub}: cubic \fbox{$ax^3+bx^2+cx+d$};
+ \item \MontreCode{pow}: power \fbox{$ax^b$};
+ \item \MontreCode{expab}: exponential \fbox{$ab^x$}
+ \item \MontreCode{hyp}: hyperbolic \fbox{$a+\displaystyle\frac{b}{x}$};
+ \item \MontreCode{log}: logarithmic \fbox{$a+b\ln(x)$};
+ \item \MontreCode{exp}: exponential \fbox{$e^{ax+b}$};
+ \item \MontreCode{expalt}: exponential \fbox{$be^{ax}$};
+ \item \MontreCode{expoff=C}: exponential \fbox{$C + be^{ax}$}.
+\end{itemize}
+
+The fourth argument, optional and between \MontreCode{<...>}, allows you to specify the rounding(s) for the coefficients of the regression function.
+
+The last two arguments are the lists of values of X and Y.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\def\LISTEXX{0,50,100,140}\def\LISTEYY{275,290,315,350}%
+ListX := \LISTEXX\\
+ListY := \LISTEYY
+
+\begin{GraphTikz}
+ [x=0.05cm,y=0.04cm,Xmin=0,Xmax=160,Xgrid=20,Xgrids=10,
+ Origy=250,Ymin=250,Ymax=400,Ygrid=25,Ygrids=5]
+ %window preparation
+ \DrawAxisGrids[Enlarge=2.5mm,Font=\footnotesize]{auto}{auto}
+ %A cloud of dots
+ \DrawScatter[Style=o,ColorScatter=red]{\LISTEXX}{\LISTEYY}
+ %adjustment expoffset
+ \DrawRegression[Color=blue,Name=adjust]<adjust>{expoff=250}{\LISTEXX}{\LISTEYY}
+ %holdings
+ \DrawRanges[Colors=cyan/magenta,Lines]{adjust}{80}
+ \DrawCounterimage[Style=x,Colors=blue/green!50!black,Lines]{adjust}{325}
+\end{GraphTikz}
+
+\xintexpoffreg[offset=250,round=3/1]{\LISTEXX}{\LISTEYY}%
+We obtain $y=250+\num{\expregoffb}\text{e}^{\num{\expregoffa}x}$
+\end{tcblisting}
+
+\newpage
+
+\section{Auxiliary commands}
+
+\subsection{Intro}
+
+In addition to purely \textit{graphic} commands, some auxiliary commands are available:
+
+\begin{itemize}
+ \item a to format a number with a given precision;
+ \item one for working on random numbers, with constraints.
+\end{itemize}
+
+\subsection{Formatted rounding}\label{round number}
+
+The \MontreCode{\textbackslash RoundNb} command allows you to format, using the \MontreCode{siunitx} package, a number (or a calculation), with a given precision. This can be \textit{useful} for formatting results obtained using coordinate retrieval commands, for example.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+\RoundNb[precision]{xint calculation}
+\end{tcblisting}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\RoundNb{1/3}\\
+\RoundNb{16.1}\\
+\RoundNb[3]{log(10)}\\
+\end{tcblisting}
+
+\subsection{Random number under constraints}\label{nbalea}
+
+The idea of this second command is to be able to determine a random number:
+
+\begin{itemize}
+ \item integer or decimal;
+ \item under constraints (between two fixed values).
+\end{itemize}
+
+This can allow, for example, to work on curves with \textit{random} points, but respecting certain constraints.
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+\PickRandomNb(*)[precision (def 0)]{lower limit}{upper limit}[\macro]
+\end{tcblisting}
+
+The star version takes the constraints in strict form ($\text{lower bound} < \text{macro} < \text{upper bound}$) while the normal version takes the constraints in broad form ($\text{lower bound) } \leq \text{macro} \leq \text{upper bound}$).
+
+\smallskip
+
+Note that the \textit{terminals} can be existing \textit{macros}!
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+%a number (2 digits after the decimal point) between 0.75 and 0.95
+%a number (2 digits after the decimal point) between 0.05 and 0.25
+%a number (2 decimal places) between 0.55 and \YrandMax
+%a number (2 decimal places) between \YrandMin and 0.45
+\PickRandomNb[2]{0.75}{0.95}[\YrandMax]%
+\PickRandomNb[2]{0.05}{0.25}[\YrandMin]%
+\PickRandomNb*[2]{0.55}{\YrandMax}[\YrandA]%
+\PickRandomNb*[2]{\YrandMin}{0.45}[\YrandB]%
+%verification
+\num{\YrandMax} \& \num{\YrandMin} \& \num{\YrandA} \& \num{\YrandB}
+\end{tcblisting}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+%a number (2 digits after the decimal point) between 0.75 and 0.95
+%a number (2 digits after the decimal point) between 0.05 and 0.25
+%a number (2 decimal places) between 0.55 and \YrandMax
+%a number (2 decimal places) between \YrandMin and 0.45
+\PickRandomNb[2]{0.75}{0.95}[\YrandMax]%
+\PickRandomNb[2]{0.05}{0.25}[\YrandMin]%
+\PickRandomNb*[2]{0.55}{\YrandMax}[\YrandA]%
+\PickRandomNb*[2]{\YrandMin}{0.45}[\YrandB]%
+%verification
+\num{\YrandMax} \& \num{\YrandMin} \& \num{\YrandA} \& \num{\YrandB}
+\end{tcblisting}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+%the curve is designed so that there are 3 antecedents
+\PickRandomNb[2]{0.75}{0.95}[\YrandMax]%
+\PickRandomNb[2]{0.05}{0.25}[\YrandMin]%
+\PickRandomNb*[2]{0.55}{\YrandMax}[\YrandA]%
+\PickRandomNb*[2]{\YrandMin}{0.45}[\YrandB]%
+
+\begin{GraphTikz}
+ [x=0.075cm,y=7.5cm,Xmin=0,Xmax=150,Xgrid=10,Xgrids=5,
+ Ymin=0,Ymax=1,Ygrid=0.1,Ygrids=0.05]
+ \DrawAxisGrids[Last,Enlarge=2.5mm]{auto}{auto}
+ \DefineInterpoCurve[Color=red,Trace,Name=functiontest,Tension=0.75]
+ {(0,\YrandA)(40,\YrandMin)(90,\YrandMax)(140,\YrandB)}
+ \FindCounterimage[Disp=false,Name=ANTECED]{functiontest}{0.5}
+ \DrawCounterimage[Colors=blue/teal,Lines]{functiontest}{0.5}
+ \GetXcoord{(ANTECED-1)}[\Aalpha]
+ \GetXcoord{(ANTECED-2)}[\Bbeta]
+ \GetXcoord
+ {(ANTECED-3)}[\Cgamma]
+\end{GraphTikz}
+
+The solutions of $f(x)=\num{0.5}$ are, by graphic reading:
+$\begin{cases}
+ \alpha \approx \RoundNb[0]{\Aalpha} \\
+ \beta \approx \RoundNb[0]{\Bbeta} \\
+ \gamma \approx \RoundNb[0]{\Cgamma}
+\end{cases}$.
+\end{tcblisting}
+%
+%\newpage
+%
+%\section{Liste des commandes}
+%
+%Les commandes disponibles sont :
+%
+%\NewDocumentCommand\lstcmd{ m m m }{%
+% \item[\texttt{#1}] : \mintinline{latex}|#2|\hfill{}page \pageref{#3}
+%}
+%
+%\begin{description}
+% \lstcmd{environnement~~}{\begin{GraphiqueTikz}...\end{GraphiqueTikz}}{creaenvt}
+% \lstcmd{axes et grilles}{\TracerAxesGrille}{creaaxesgr}
+% \lstcmd{aj val axes X~~}{\RajouterValeursAxeX}{ajoutvals}
+% \lstcmd{aj val axes Y~~}{\RajouterValeursAxeY}{ajoutvals}
+% \lstcmd{def fonction~~~}{\DefineCurve}{deftracfct}
+% \lstcmd{tracé courbe~~~}{\DrawCurve}{deftracfct}
+% \lstcmd{def interpo~~~~}{\DefineCurveInterpo}{deftracinterpo}
+% \lstcmd{tracé interpo~~}{\DrawCurveInterpo}{deftracinterpo}
+% \lstcmd{def spline~~~~~}{\DefineSplineCurve}{deftracfctspline}
+% \lstcmd{tracé spline~~~}{\DrawSplineCurve}{deftracfctspline}
+% \lstcmd{tracé droite~~~}{\TracerDroite}{tracdroite}
+% \lstcmd{def points~~~~~}{\DefinirPts}{defpts}
+% \lstcmd{def image~~~~~~}{\DefinirImage}{defpts}
+% \lstcmd{marq pts~~~~~~~}{\MarquerPts}{markpts}
+% \lstcmd{placer txt~~~~~}{\PlacerTexte}{placetxt}
+% \lstcmd{récup absc~~~~~}{\RecupererAbscisse}{recupcoordo}
+% \lstcmd{récup ordo~~~~~}{\RecupererOrdonnee}{recupcoordo}
+% \lstcmd{récup coordos~~}{\RecupererCoordonnees}{recupcoordo}
+% \lstcmd{images~~~~~~~~~}{\PlacerImages}{images}
+% \lstcmd{antécédents~~~~}{\TrouverAntecedents}{defanteced}
+% \lstcmd{antécédents~~~~}{\PlacerAntecedents}{tracanteced}
+% \lstcmd{intersection~~~}{\TrouverIntersections}{intersect}
+% \lstcmd{maximum~~~~~~~~}{\TrouverMaximum}{maximum}
+% \lstcmd{minimum~~~~~~~~}{\TrouverMinimum}{minimum}
+% \lstcmd{intégrale~~~~~~}{\DrawIntegral}{integr}
+% \lstcmd{tangente~~~~~~~}{\DrawTangente}{tgte}
+% \lstcmd{loi normale~~~~}{\DefinirLoiNormale}{loinormale}
+% \lstcmd{loi normale~~~~}{\TracerLoiNormale}{loinormale}
+% \lstcmd{loi khideux~~~~}{\DefinirLoiKhiDeux}{loikhideux}
+% \lstcmd{loi khideux~~~~}{\TracerLoiKhiDeux}{loikhideux}
+% \lstcmd{stats 2 var~~~~}{\TracerNuage}{nuage}
+% \lstcmd{regressions~~~~}{\TracerAjustement}{regressions}
+% \lstcmd{arrondi~~~~~~~~}{\RoundNb}{numarrond}
+% \lstcmd{nb aléat~~~~~~~}{\ChoisirNbAlea}{nbalea}
+%\end{description}
+
+\pagebreak
+
+\section{History}
+
+\begin{quote}
+\begin{verbatim}
+0.1.5 : Initial version [en]
+\end{verbatim}
+\end{quote}
+
+\end{document} \ No newline at end of file
diff --git a/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-fr.pdf b/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-fr.pdf
index 83fcc4e4f5..c53d69179c 100644
--- a/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-fr.pdf
+++ b/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-fr.pdf
Binary files differ
diff --git a/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-fr.tex b/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-fr.tex
index 1a79a83cf8..9ea6b13200 100644
--- a/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-fr.tex
+++ b/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-doc-fr.tex
@@ -29,8 +29,8 @@
\hypersetup{pdfborder=0 0 0}
\usepackage[margin=2cm]{geometry}
\setlength{\parindent}{0pt}
-\def\TPversion{0.1.4}
-\def\TPdate{15/06/2024}
+\def\TPversion{0.1.5}
+\def\TPdate{22/06/2024}
\usepackage{soul}
\usepackage{codehigh}
\usepackage{tabularray}
@@ -403,7 +403,7 @@ La première commande \textit{utile} va permettre de créer les grilles, les axe
\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
%dans l'environnement GraphiqueTikz
-\TracerAxesGrille[clés]{gradX}{gradY}
+\TracerAxesGrilles[clés]{gradX}{gradY}
\end{tcblisting}
Les \MontreCode{[clés]}, optionnelles, disponibles sont :
@@ -607,10 +607,11 @@ Les \MontreCode{[clés]} pour la définition ou le tracé, optionnelles, disponi
Ymin=40,Ymax=56,Ygrille=2,Ygrilles=1,Origy=40]
\TracerAxesGrilles[Elargir=2.5mm,Police=\small]{4,5,...,20}{40,42,...,56}
%définition de la fonction + tracé de la courbe
- \DefinirCourbe[Nom=cf,Debut=5,Fin=19]<f>{-2*x+3+24*log(2*x)}
+ %la fonction ln a été créée pour xint !
+ \DefinirCourbe[Nom=cf,Debut=5,Fin=19]<f>{-2*x+3+24*ln(2*x)}
\TracerCourbe[Couleur=red,Debut=5,Fin=19]{f(x)}
%ou en une seule commande si "suffisant"
- %\DefinirCourbe[Nom=cf,Debut=5,Fin=19,Trace]<f>{-2*x+3+24*log(2*x)}
+ %\DefinirCourbe[Nom=cf,Debut=5,Fin=19,Trace]<f>{-2*x+3+24*ln(2*x)}
\end{GraphiqueTikz}
\end{tcblisting}
@@ -706,10 +707,14 @@ La seconde idée est de travailler avec des nœuds \TikZ, qui pourront être uti
\smallskip
+Il est également possible de définir des nœuds pour des points \textit{image}.
+
+\smallskip
+
Certaines commandes (explicités ultérieurement) permettent de déterminer des points particuliers des courbes sous forme de nœuds, donc il semble intéressant de pouvoir en définir directement.
\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
-%dans l'environnement GraphiqueTikz
+%par les coordonnées
\DefinirPts[clés]{Nom1/x1/y1,Nom2/x2/y2,...}
\end{tcblisting}
@@ -722,6 +727,22 @@ Les \MontreCode{[clés]}, optionnelles, disponibles sont :
\item \MontreCode{Couleur} : couleur des points, si \MontreCode{Aff=true} (\MontreCode{black} par défaut).
\end{itemize}
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5,listing only}
+%sous forme d'image
+\DefinirImage[clés]{objet}{abscisse}
+\end{tcblisting}
+
+Les \MontreCode{[clés]}, optionnelles, disponibles sont :
+
+\smallskip
+
+\begin{itemize}
+ \item \MontreCode{Nom} : nom du nœud (\MontreCode{vide} par défaut) ;
+ \item \MontreCode{Spline} : booléen pour spécifier qu'un spline est utilisé (\MontreCode{false} par défaut).
+\end{itemize}
+
+Le premier argument obligatoire est l'\textit{objet} considéré (nom de la courbe pour le spline, fonction sinon) ; le second est l'abscisse du point considéré.
+
\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
\begin{GraphiqueTikz}%
[x=0.9cm,y=0.425cm,Xmin=4,Xmax=20,Origx=4,
@@ -731,6 +752,9 @@ Les \MontreCode{[clés]}, optionnelles, disponibles sont :
\DefinirFonction[Nom=cf,Debut=5,Fin=19,Trace,Couleur=red]<f>{-2*x+3+24*log(2*x)}
%nœuds manuels
\DefinirPts[Aff,Couleur=brown]{A/7/42,B/16/49}
+ %nœud image
+ \DefinirImage[Nom=IMGf]{f}{14}
+ \MarquerPts*[Style=x,Couleur=blue]{(IMGf)}
\end{GraphiqueTikz}
\end{tcblisting}
@@ -1744,6 +1768,7 @@ Les commandes disponibles sont :
\lstcmd{tracé spline~~~}{\TracerCourbeSpline}{deftracfctspline}
\lstcmd{tracé droite~~~}{\TracerDroite}{tracdroite}
\lstcmd{def points~~~~~}{\DefinirPts}{defpts}
+ \lstcmd{def image~~~~~~}{\DefinirImage}{defpts}
\lstcmd{marq pts~~~~~~~}{\MarquerPts}{markpts}
\lstcmd{placer txt~~~~~}{\PlacerTexte}{placetxt}
\lstcmd{récup absc~~~~~}{\RecupererAbscisse}{recupcoordo}
@@ -1773,6 +1798,7 @@ Les commandes disponibles sont :
\begin{quote}
\begin{verbatim}
+0.1.5 : Correction d'un bug sur les rajouts de valeurs + Nœud pour une image + [en] version !
0.1.4 : Placement de texte
0.1.3 : Ajout de régressions avec le package xint-regression
0.1.2 : Droites + Extremums
diff --git a/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-examples-integrals.pdf b/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-examples-integrals.pdf
new file mode 100644
index 0000000000..917caaab19
--- /dev/null
+++ b/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-examples-integrals.pdf
Binary files differ
diff --git a/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-examples-integrals.tex b/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-examples-integrals.tex
new file mode 100644
index 0000000000..068ba103eb
--- /dev/null
+++ b/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-examples-integrals.tex
@@ -0,0 +1,251 @@
+% !TeX TXS-program:compile = txs:///arara
+% arara: pdflatex: {shell: yes, synctex: no, interaction: batchmode}
+
+\documentclass[a4paper,english,11pt]{article}
+\usepackage[margin=1cm,includefoot]{geometry}
+\usepackage[english]{tkz-grapheur}
+\usepackage{tcolorbox}
+\tcbuselibrary{skins,minted}
+\usepackage{babel}
+
+\begin{document}
+
+\part*{Integrals examples}
+
+\section{Below cruve, by default}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=0.8cm,y=1cm,Xmin=-7,Xmax=4,Ymin=-3,Ymax=5]
+ \DrawAxisGrids[Behind,Enlarge=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+ \DefineCurve[Name=ch]<h>{0.25*(x+2)^2+1}
+ \DrawIntegral%
+ [Colors=blue/cyan,Style=fill]%
+ {h(x)} %formula
+ {-5.25}{1.5}
+ \DrawCurve[Color=red]{h(x)}
+ \DrawAxisGrids[Above,Enlarge=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+\end{GraphTikz}
+\end{tcblisting}
+
+\section{Behind interpolation curve}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=0.8cm,y=1cm,Xmin=-7,Xmax=4,Ymin=-3,Ymax=5]
+ \DrawAxisGrids[Grads=false,Enlarge=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+ \DefineLstInterpol{(-6,4)(-2,-2)(3,3.5)}[\interpoA]
+ \DefineInterpoCurve[Name=interpotest,Tension=1.05]{\interpoA}
+ \DrawIntegral%
+ [NameInterpo=interpotest,Colors=blue/cyan,Style=fill,Type=itp,Tension=1.05]%
+ {\interpoA} %pointsinterpo
+ {-5.25}{1.5}
+ \DrawInterpoCurve[Color=red,Tension=1.05]{\interpoA}
+ \DrawAxisGrids[Grid=false,Enlarge=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+\end{GraphTikz}
+\end{tcblisting}
+
+\section{Behind cubic spline}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=0.8cm,y=1cm,Xmin=-7,Xmax=4,Ymin=-3,Ymax=5]
+ \DrawAxisGrids[Grads=false,Enlarge=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+ \DefineLstSpline{-6/4/-2§-5/2/-2§-4/0/-2§-2/-2/0§1/2/2§3/3.5/0.5}[\lstsplineA]
+ \DefineSplineCurve[Name=splinetest]{\lstsplineA}<\SplineTeal>
+ \DrawIntegral%
+ [NameSpline=\SplineTeal,Type=spl,Colors=blue/purple,Style=hatch]%
+ {splinetest} %namesplinecurve
+ {-5}{2}
+ \DrawSplineCurve[Color=teal]{\lstsplineA}
+ \DrawAxisGrids[Grid=false,Enlarge=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+\end{GraphTikz}
+\end{tcblisting}
+
+\section{Between curves}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=0.8cm,y=1cm,Xmin=-7,Xmax=4,Ymin=-3,Ymax=5]
+ \DrawAxisGrids[Grads=false,Enlarge=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+ \DefineCurve[Name=ch]<h>{0.25*(x+2)^2-1}
+ \DefineCurve[Name=ck]<k>{-0.25*x+1}
+ \FindIntersections[Name=ITSC,Disp=false]{ch}{ck}
+ \DrawIntegral%
+ [Colors=olive/pink,Style=fill,Type=fct/fct,Bounds=node/abs]%
+ {h(x)}[k(x)] %formules
+ {(ITSC-1)}{1.5}
+ \DrawCurve[Color=red]{h(x)}
+ \DrawCurve[Color=blue]{k(x)}
+ \DrawAxisGrids[Grid=false,Enlarge=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+\end{GraphTikz}
+\end{tcblisting}
+
+\section{Between splines}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=0.8cm,y=1cm,Xmin=-7,Xmax=4,Ymin=-3,Ymax=5]
+ \DrawAxisGrids[Grads=false,Enlarge=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+ \DefineLstSpline{-6/4/-2§-5/2/-2§-4/0/-2§-2/-2/0§1/2/2§3/3.5/0.5}[\lstsplineA]
+ \DefineLstSpline{-6/-2/3§-2/4/0§3/-1/0}[\lstsplineB]
+ \DefineSplineCurve[Name=splinetestolive]{\lstsplineA}<\SplineOlive>
+ \DefineSplineCurve[Name=splinetestteal]{\lstsplineB}<\SplineTeal>
+ \FindIntersections[Name=ITT,Disp=false]{splinetestteal}{splinetestolive}
+ \DrawIntegral%
+ [NameSpline=\SplineTeal,NameSplineB=\SplineOlive,Type=spl/spl,Colors=blue/purple,Bounds=nodes]%
+ {splinetestolive} %Namecourbespline
+ [splinetestteal] %Namecourbespline
+ {(ITT-1)}{(ITT-2)}
+ \DrawSplineCurve[Color=teal]{\lstsplineA}
+ \DrawSplineCurve[Color=olive]{\lstsplineB}
+ \DrawAxisGrids[Grid=false,Enlarge=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+\end{GraphTikz}
+\end{tcblisting}
+
+\section{Between interpolations}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=0.8cm,y=1cm,Xmin=-7,Xmax=4,Ymin=-3,Ymax=5]
+ \DrawAxisGrids[Grads=false,Enlarge=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+ \DefineLstInterpol{(-6,4)(-2,-2)(3,3.5)}[\interpoA]
+ \DefineInterpoCurve[Name=interpotest]{\interpoA}
+ \DefineLstInterpol{(-6,-2)(-1,4)(3,0)}[\interpoB]
+ \DefineInterpoCurve[Name=interpotesta]{\interpoB}
+ \DrawIntegral%
+ [NameInterpo=interpotesta,NameInterpoB=interpotest,Type=itp/itp,Colors=olive/pink]%
+ {\interpoB} %pointsinterpo
+ [\interpoA] %pointsinterpo
+ {-2}{1}
+ \DrawInterpoCurve[Color=red]{\interpoA}
+ \DrawInterpoCurve[Color=blue]{\interpoB}
+ \DrawAxisGrids[Grid=false,Enlarge=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+\end{GraphTikz}
+\end{tcblisting}
+
+\section{Betweend function and spline}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=0.8cm,y=1cm,Xmin=-7,Xmax=4,Ymin=-3,Ymax=5]
+ \DrawAxisGrids[Grads=false,Enlarge=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+ \DefineCurve[Name=ch]<h>{-0.25*(x+2)^2+3.5}
+ \DefineLstSpline{-6/4/-2§-5/2/-2§-4/0/-2§-2/-2/0§1/2/2§3/3.5/0.5}[\lstsplineA]
+ \DefineSplineCurve[Name=splineblue]{\lstsplineA}<\Splineblue>
+ \DrawIntegral%
+ [NameSplineB=\Splineblue,Type=fct/spl,Colors=olive/pink]%
+ {h(x)} %formule
+ [splineblue] %Namecourbespline
+ {-3}{0}
+ \DrawCurve[Color=red]{h(x)}
+ \DrawSplineCurve[Color=blue]{\lstsplineA}
+ \DrawAxisGrids[Grid=false,Enlarge=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+\end{GraphTikz}
+\end{tcblisting}
+
+\section{Between spline and function}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=0.8cm,y=1cm,Xmin=-7,Xmax=4,Ymin=-3,Ymax=5]
+ \DrawAxisGrids[Grads=false,Enlarge=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+ \DefineCurve[Name=ch]<h>{0.25*(x+2)^2-2}
+ \DefineLstSpline{-6/4/2§-5/-2/-2§-4/0/2§-2/2/0§1/-2/-2§3/3.5/-0.5}[\lstsplineA]
+ \DefineSplineCurve[Name=splineblue]{\lstsplineA}<\Splineblue>
+ \DrawIntegral%
+ [NameSpline=\Splineblue,Type=spl/fct,Colors=olive/pink]%
+ {splineblue} %Namecourbespline
+ [h(x)] %formule
+ {-3}{-1}
+ \DrawCurve[Color=red]{h(x)}
+ \DrawSplineCurve[Color=blue]{\lstsplineA}
+ \DrawAxisGrids[Grid=false,Enlarge=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+\end{GraphTikz}
+\end{tcblisting}
+
+\section{Between function and interpo}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=0.8cm,y=1cm,Xmin=-7,Xmax=4,Ymin=-3,Ymax=5]
+ \DrawAxisGrids[Grads=false,Enlarge=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+ \DefineCurve[Name=cm]<m>{-0.25*(x+2)^2+4}
+ \DefineLstInterpol{(-6,4)(-5,-2)(-2,1)(1,-2)(3,3)}[\interpoB]
+ \DefineInterpoCurve[Name=interpotestb]{\interpoB}
+ \DrawIntegral%
+ [NameInterpoB=interpotestb,Type=fct/itp,Colors=olive/pink]%
+ {m(x)} %formule
+ [\interpoB] %pointsinterpo
+ {-4}{1}
+ \DrawCurve[Color=red]{m(x)}
+ \DrawInterpoCurve[Color=blue]{\interpoB}
+ \DrawAxisGrids[Grid=false,Enlarge=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+\end{GraphTikz}
+\end{tcblisting}
+
+\section{Between interpo and function}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=0.8cm,y=1cm,Xmin=-7,Xmax=4,Ymin=-3,Ymax=5]
+ \DrawAxisGrids[Grads=false,Enlarge=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+ \DefineCurve[Name=courbeQ]<q>{0.25*(x+2)^2-2.5}
+ \DefineLstInterpol{(-6,-2)(-5,4)(-2,-1)(1,2)(3,-2)}[\interpoA]
+ \DefineInterpoCurve[Name=interpotest]{\interpoA}
+ \FindIntersections[Name=FGH,Disp]{interpotest}{courbeQ}
+ \DrawIntegral%
+ [NameInterpo=interpotest,Type=itp/fct,Colors=olive/pink,Bounds=nodes]%
+ {\interpoA} %pointsinterpo
+ [q(x)] %formule
+ {(FGH-1)}{(FGH-2)}
+ \DrawCurve[Color=red]{q(x)}
+ \DrawInterpoCurve[Color=blue]{\interpoA}
+ \DrawAxisGrids[Grid=false,Enlarge=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+\end{GraphTikz}
+\end{tcblisting}
+
+\section{Between spline and interpo}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=0.8cm,y=1cm,Xmin=-7,Xmax=4,Ymin=-3,Ymax=5]
+ \DrawAxisGrids[Grads=false,Enlarge=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+ \DefineLstSpline{-6/-2/2§-3/4/0§3/-2/0}[\lstsplineA]
+ \DefineSplineCurve[Name=splinered]{\lstsplineA}<\Splinered>
+ \DefineLstInterpol{(-6,4)(-5,-2)(-2,1)(1,-2)(3,3)}[\interpoB]
+ \DefineInterpoCurve[Name=interpotestb]{\interpoB}
+ \DrawIntegral%
+ [NameInterpoB=interpotestb,NameSpline=\Splinered,Type=spl/itp,Colors=olive/pink]%
+ {splinered} %Namecourbespline
+ [\interpoB] %pointsinterpo
+ {-4}{-2}
+ \DrawSplineCurve[Color=red]{\lstsplineA}
+ \DrawInterpoCurve[Color=blue]{\interpoB}
+ \DrawAxisGrids[Grid=false,Enlarge=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+\end{GraphTikz}
+\end{tcblisting}
+
+\section{Between interpo and spline}
+
+\begin{tcblisting}{listing engine=minted,minted language=latex,colframe=lightgray,colback=lightgray!5}
+\begin{GraphTikz}%
+ [x=0.8cm,y=1cm,Xmin=-7,Xmax=4,Ymin=-3,Ymax=5]
+ \DrawAxisGrids[Grads=false,Enlarge=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+ \DefineLstSpline{-6/4/-2§-3/-2.25/0§3/3/0}[\lstsplineB]
+ \DefineSplineCurve[Name=splineblue]{\lstsplineB}<\Splineblue>
+ \DefineLstInterpol{(-6,-2)(-5,4)(-2,-1)(1,2)(3,-2.5)}[\interpoA]
+ \DefineInterpoCurve[Name=interpotest]{\interpoA}
+ \FindIntersections[Name=UIO,Disp]{interpotest}{splineblue}
+ \DrawIntegral%
+ [NameInterpo=interpotest,NameSplineB=\Splineblue,Type=itp/spl,Colors=olive/pink,Bounds=nodes]%
+ {\interpoA} %pointsinterpo
+ [splineblue] %Namecourbespline
+ {(UIO-1)}{(UIO-2)}
+ \DrawSplineCurve[Color=blue]{\lstsplineB}
+ \DrawInterpoCurve[Color=red]{\interpoA}
+ \DrawAxisGrids[Grid=false,Enlarge=2.5mm]{-7,-6,...,4}{-3,-2,...,5}
+\end{GraphTikz}
+\end{tcblisting}
+
+\end{document} \ No newline at end of file
diff --git a/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-exemples-integrales.pdf b/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-exemples-integrales.pdf
index 5e0354c490..985d09c617 100644
--- a/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-exemples-integrales.pdf
+++ b/graphics/pgf/contrib/tkz-grapheur/doc/tkz-grapheur-exemples-integrales.pdf
Binary files differ
diff --git a/graphics/pgf/contrib/tkz-grapheur/tex/tkz-grapheur.sty b/graphics/pgf/contrib/tkz-grapheur/tex/tkz-grapheur.sty
index 7fc03cde3c..3de4286c8e 100644
--- a/graphics/pgf/contrib/tkz-grapheur/tex/tkz-grapheur.sty
+++ b/graphics/pgf/contrib/tkz-grapheur/tex/tkz-grapheur.sty
@@ -2,22 +2,32 @@
% licence : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txtf
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{tkz-grapheur}[2024/06/15 0.1.4.Des outils en TikZ pour travailler comme avec un grapheur]
+\ProvidesPackage{tkz-grapheur}[2024/06/22 0.1.5.Des outils en TikZ pour travailler comme avec un grapheur]
%====HISTORIQUE
+% v 0.1.5 Correction d'un bug avec les valeurs manuelles + Nœud pour une image + [en] version !
% v 0.1.4 Ajout des placements de textes
% v 0.1.3 Régressions, avec xintreg (désactivable)
% v 0.1.2 Max/Min + Droites
% v 0.1.1 Densité loi normale + khi deux + Améliorations diverses
% v 0.1.0 Version initiale [fr]
-%====OPTION
+%====OPTIONS
\newif\if@loadsiunitx \@loadsiunitxtrue
\DeclareOption{nonsiunitx}{\@loadsiunitxfalse}%
+\DeclareOption{nosiunitx}{\@loadsiunitxfalse}%
+
\newif\if@loadtikzbabel \@loadtikzbabeltrue
\DeclareOption{nontikzbabel}{\@loadtikzbabelfalse}%
+\DeclareOption{notikzbabel}{\@loadtikzbabelfalse}%
+
\newif\if@loadxintreg \@loadxintregtrue
\DeclareOption{nonxintreg}{\@loadxintregfalse}%
+\DeclareOption{noxintreg}{\@loadxintregfalse}%
+
+\newif\if@lngenglish \@lngenglishfalse
+\DeclareOption{english}{\@lngenglishtrue}%
+
\DeclareOption*{}
\ProcessOptions\relax
@@ -33,10 +43,14 @@
\RequirePackage{xint-regression}
\fi
-%====SIUNITX
+%====SIUNITX + [en]
\if@loadsiunitx
\RequirePackage{siunitx}
- \sisetup{locale=FR,output-decimal-marker={,},mode=match,propagate-math-font=true,reset-math-version=false,reset-text-family=false,reset-text-series=false,reset-text-shape=false,text-family-to-math=true,text-series-to-math=true}
+ \if@lngenglish
+ \sisetup{mode=match,propagate-math-font=true,reset-math-version=false,reset-text-family=false,reset-text-series=false,reset-text-shape=false,text-family-to-math=true,text-series-to-math=true}
+ \else
+ \sisetup{locale=FR,output-decimal-marker={,},mode=match,propagate-math-font=true,reset-math-version=false,reset-text-family=false,reset-text-series=false,reset-text-shape=false,text-family-to-math=true,text-series-to-math=true}
+ \fi
\fi
%====TIKZ.BABEL
@@ -44,6 +58,10 @@
\usetikzlibrary{babel}
\fi
+%++++++++++++++++++++++++++
+%+++++++++FRANÇAIS+++++++++
+%++++++++++++++++++++++++++
+
%====COMMANDE POUR NB DECIMAL ALEA ENTRE BORNES
\NewDocumentCommand\ChoisirNbAlea{ s O{0} m m O{\monbnalea} }{%
\def\tmpborneinf{\xinteval{floor(#3)}}%inf=\tmpborneinf\par%
@@ -134,6 +152,9 @@
%====CONSTANTE PI pour xint, à voir si incompatibilité...
\xintdefvar pi:=3.141592653589793238462643;
+%====focntion ln, en langage xint
+\xintdeffloatfunc ln(x) := log(x);
+
%===COMMANDE INTERNE POUR FORMATER EN FRACTIONS
\NewDocumentCommand\FormatterFraction{ s O{} m }{%
%*=moins sur le numérateur
@@ -680,7 +701,7 @@
\ifboolKV[GraphiqueTikzAxes]{Traits}{\foreach \y in {#2}{\draw[pfltrait] ([xshift=\pflthickgrad]{\pflOx},{\y})--++({-2*\pflthickgrad},0) ;}}{}%
\readlist*\LstValY{#2}%
\readlist*\LstValFmtY{#3}%
- \foreach \i in {1,...,\LstValXlen}{%
+ \foreach \i in {1,...,\LstValYlen}{%
\itemtomacro\LstValY[\i]\mavaly%
\itemtomacro\LstValFmtY[\i]\mavalfmty%
\draw ([xshift=-\pflthickgrad]{\pflOx},{\mavaly}) node[pflnoeud,left,font={\useKV[GraphiqueTikzAxes]{Police}}] {\mavalfmty} ;
@@ -1517,18 +1538,32 @@
%===IMAGES & ANTÉCÉDENTS
\defKV[GraphiqueTikzImg]{
Couleurs=\def\pflimgcolors{#1},%
- Nom=\def\pflantecednoms{#1}%,%
- %Style=\xdef\pflantecedstyle{#1}
+ Nom=\def\pflantecednoms{#1}%
}
\setKVdefault[GraphiqueTikzImg]{
- Couleurs=black,
- Traits=false,
+ Couleurs=black,%
+ Traits=false,%
Spline=false,%
Nom={},%
Style=o
}
+\NewDocumentCommand\DefinirImage{ O{} m m }{%
+ \useKVdefault[GraphiqueTikzImg]%
+ \setKV[GraphiqueTikzImg]{#1}%
+ \ifboolKV[GraphiqueTikzImg]{Spline}%
+ {%
+ \path[draw=none,pflcourbe,name path=tmpimage] ({#3},{\pflymin})--({#3},{\pflymax}) ;
+ \path[name intersections={of=#2 and tmpimage,name=ZZZZ}] ;
+ \coordinate (\pflantecednoms) at (ZZZZ-1) ;
+ }%
+ {%
+ \xdef\tmpresimg{\xintfloateval{#2(#3)}}%
+ \coordinate (\pflantecednoms) at ({#3},{\tmpresimg}) ;
+ }%
+}
+
\NewDocumentCommand\PlacerImages{ O{} m m }{%
\useKVdefault[GraphiqueTikzImg]%
\setKV[GraphiqueTikzImg]{#1}%
@@ -1564,7 +1599,7 @@
\MarquerPts*[Style={\useKV[GraphiqueTikzImg]{Style}},Couleur=\pflimgcolorpt]{({\i},{\tmpresimg})}
%\filldraw[\pflimgcolorpt] ({\i},{\tmpresimg}) circle[radius=2pt] ;
}%
- }
+ }%
}
\NewDocumentCommand\PlacerAntecedents{ O{} m m }{%avec le nom de la courbe...
@@ -2033,4 +2068,1997 @@
\draw #2 node[pflnoeud,font=\pflnodefonte,text=\pflnodecol,\pfnodepos] {#3} ;
}
+%++++++++++++++++++++++++++
+%++++++++++ENGLISH+++++++++
+%++++++++++++++++++++++++++
+
+%====COMMANDE POUR NB DECIMAL ALEA ENTRE BORNES
+\NewDocumentCommand\PickRandomNb{ s O{0} m m O{\mmyrandomnb} }{%
+ \def\tmpborneinf{\xinteval{floor(#3)}}%inf=\tmpborneinf\par%
+ \def\tmpbornesup{\xinteval{ceil(#4)}}%sup=\tmpbornesup\par%
+ \xintifboolexpr{#2 == 0}%
+ {%
+ \xdef#5{\fpeval{randint(\tmpborneinf,\tmpbornesup)}}%
+ }%
+ {%
+ \def\tmptest{0}%
+ \whiledo{\tmptest=0}{%
+ \xintifboolexpr{(\tmpbornesup-\tmpborneinf) == 1}%
+ {%
+ \xdef\tmpresalea{\fpeval{\tmpborneinf+round(rand(),#2)}}%
+ }%
+ {%
+ \xdef\tmpresalea{\fpeval{round(randint(\tmpborneinf,\tmpbornesup)+rand(),#2)}}%
+ }%
+ %essai=\tmpresalea\par
+ \IfBooleanTF{#1}%
+ {%
+ \xintifboolexpr{\tmpresalea < #4 'and' \tmpresalea > #3 }{\def\tmptest{1}}{\def\tmptest{0}}%
+ }%
+ {%
+ \xintifboolexpr{\tmpresalea <= #4 'and' \tmpresalea >= #3 }{\def\tmptest{1}}{\def\tmptest{0}}%
+ }%
+ }%
+ \xdef#5{\tmpresalea}%
+ %res=%
+ }%
+}
+
+%====PATCH NUM
+\@ifundefined{RoundNb}%
+ {%
+ \NewDocumentCommand\RoundNb{ O{2} m}{\num{\xintfloateval{round(#2,#1)}}\relax}%
+ }%
+ {%
+ \RenewDocumentCommand\RoundNb{ O{2} m}{\num{\xintfloateval{round(#2,#1)}}\relax}%
+ }%
+
+%====STYLES DE BASE
+\tikzset{tkzgrphnode/.style={}}
+\tikzset{tkzgrphpoint/.style={line width=0.95pt}}
+\tikzset{tkzgrphpointc/.style={radius=1.75pt}}
+\tikzset{tkzgrphscatter/.style={radius=1.75pt}}
+\tikzset{tkzgrphframe/.style={line width=0.8pt,gray}}
+\tikzset{tkzgrphcurve/.style={line width=1.05pt}}
+\tikzset{tkzgrphline/.style={line width=0.8pt}}
+\tikzset{tkzgrpharrowl/.style={<-,>=latex}}
+\tikzset{tkzgrpharrowr/.style={->,>=latex}}
+\tikzset{tkzgrpharrowlr/.style={<->,>=latex}}
+\tikzset{tkzgrphcounterimage/.style={line width=0.9pt,densely dashed}}
+\tikzset{tkzgrphrange/.style={line width=0.9pt,densely dashed,->,>=latex}}
+\tikzset{tkzgrphgridp/.style={thin,lightgray}}
+\tikzset{tkzgrphgrids/.style={very thin,lightgray}}
+\tikzset{tkzgrphaxes/.style={line width=0.8pt,->,>=latex}}
+\tikzset{
+ Xgrid/.store in=\pflgrillex,Xgrid/.default=1,Xgrid=1,
+ Xgrids/.store in=\pflgrillexs,Xgrids/.default=0.5,Xgrids=0.5,
+ Ygrid/.store in=\pflgrilley,Ygrid/.default=1,Ygrid=1,
+ Ygrids/.store in=\pflgrilleys,Ygrids/.default=0.5,Ygrids=0.5
+}
+\tikzset{%
+ pics/tkzgraphcross/.style args={#1/#2}{
+ code={
+ \draw[tkzgrphpoint,rotate=#2] (-#1,0) -- (#1,0);
+ \draw[tkzgrphpoint,rotate=#2] (0,-#1) -- (0, #1);
+ }
+ },
+ pics/tkzgraphcross/.default={2pt/45}
+}
+\tikzset{%
+ pics/tkzgraphsquare/.style args={#1/#2}{
+ code={
+ \filldraw[draw=none,tkzgrphpoint,rotate=#2] (-#1,-#1) rectangle (#1,#1) ;
+ }
+ },
+ pics/tkzgraphsquare/.default={2pt/0}
+}
+
+%===COMMANDE INTERNE POUR FORMATER EN FRACTIONS
+\NewDocumentCommand\FormatFraction{ s O{} m }{%
+ %*=moins sur le numérateur
+ %2=argument.optionnel[d/t/dec=...]
+ %3=argument mandataire {calcul ou fraction}
+ \def\calculargument{\xintPRaw{\xintIrr{\xinteval{#3}}}}%on calcule et on transforme en A/B
+ \IfSubStr{\calculargument}{/}%on teste si le symbole / apparaît
+ {%si oui := fraction
+ \StrBefore{\calculargument}{/}[\numerateur]%on extrait le numérateur
+ \StrBehind{\calculargument}{/}[\denominateur]%on extrait le dénominateur
+ \ifblank{#2}%
+ {%
+ \IfBooleanTF{#1}%
+ {\ensuremath{\frac{\num{\numerateur}}{\num{\denominateur}}}}%
+ {%
+ \ifthenelse{\numerateur < 0}%
+ {\ensuremath{-\frac{\num{\fpeval{abs(\numerateur)}}}{\num{\denominateur}}}}%
+ {\ensuremath{\frac{\num{\numerateur}}{\num{\denominateur}}}}%
+ }%
+ }%
+ {}%si l'argument optionnel est vide
+ \IfStrEq{#2}{d}%
+ {%
+ \IfBooleanTF{#1}%
+ {\ensuremath{\displaystyle\frac{\num{\numerateur}}{\num{\denominateur}}}}%
+ {%
+ \ifthenelse{\numerateur < 0}%
+ {\ensuremath{-\displaystyle\frac{\num{\fpeval{abs(\numerateur)}}}{\num{\denominateur}}}}%
+ {\ensuremath{\displaystyle\frac{\num{\numerateur}}{\num{\denominateur}}}}%
+ }%
+ }%
+ {}%si l'argument optionnel est vide
+ \IfStrEq{#2}{t}%
+ {%
+ \IfBooleanTF{#1}%
+ {\ensuremath{\tfrac{\num{\numerateur}}{\num{\denominateur}}}}%
+ {%
+ \ifthenelse{\numerateur < 0}%
+ {\ensuremath{-\frac{\num{\fpeval{abs(\numerateur)}}}{\num{\denominateur}}}}%
+ {\ensuremath{\frac{\num{\numerateur}}{\num{\denominateur}}}}%
+ }%
+ }%
+ {}%si l'argument optionnel est vide
+ \IfStrEq{#2}{n}%
+ {%
+ \ensuremath{\nicefrac{\num{\numerateur}}{\num{\denominateur}}}%
+ }%
+ {}%si l'argument optionnel est vide
+ }{%si non := entier
+ \num{\calculargument}%on affiche l'entier, avec le package siunitx
+ }%
+}
+
+%affichage d'un label en radians
+\NewDocumentCommand\FormatTrig{ O{t} m }{%étoilée en dfrac
+ \IfStrEq{#2}{0}%cas où l'argument vaut 0
+ {\def\restmp{0}}%
+ {%
+ \StrDel{#2}{*}[\restmpsansmoins]%
+ \StrSubstitute{\restmpsansmoins}{pi}{\pi}[\restmppi]%
+ \IfSubStr{#2}{/}%
+ {%
+ \StrCut{\restmppi}{/}\tmpnum\tmpdenom%
+ \IfSubStr{\tmpnum}{-}%
+ {%
+ \StrDel{\tmpnum}{-}[\restmppinum]%
+ \IfStrEqCase{#1}{%
+ {t}{\def\restmp{-\frac{\restmppinum}{\tmpdenom}}}%
+ {d}{\def\restmp{-\displaystyle\frac{\restmppinum}{\tmpdenom}}}%
+ {n}{\def\restmp{\nicefrac{-\restmppinum}{\tmpdenom}}}%
+ }%
+ }%
+ {%
+ \IfStrEqCase{#1}{%
+ {t}{\def\restmp{\frac{\tmpnum}{\tmpdenom}}}%
+ {d}{\def\restmp{\displaystyle\frac{\tmpnum}{\tmpdenom}}}%
+ {n}{\def\restmp{\nicefrac{\tmpnum}{\tmpdenom}}}%
+ }%
+ }%
+ }%
+ {%
+ \def\restmp{\restmppi}%
+ }%
+ }%
+ \ensuremath{\restmp}%
+}
+
+%====FORMATAGE DES RACINES SIMPLES
+\NewDocumentCommand\FormatSqrt{ O{t} m }{%
+ \IfStrEq{#2}{0}%cas où l'argument vaut 0
+ {\ensuremath{0}}%
+ {%
+ \IfSubStr{#2}{sqrt}%
+ {%
+ \StrDel{#2}{*}[\tmpargbrut]%
+ \StrBetween[1,1]{\tmpargbrut}{sqrt(}{)}[\tmpargnumrac]%
+ \StrBefore{\tmpargbrut}{sqrt}[\tmparavantrac]%
+ \IfStrEqCase{\tmparavantrac}{
+ {}{\xdef\tmparavantrac{}}%
+ {-}{\xdef\tmparavantrac{-}}%
+ }[\xdef\tmparavantrac{\num{\tmparavantrac}}]%
+ \IfSubStr{\tmpargbrut}{/}%
+ {%
+ \StrBehind{\tmpargbrut}{/}[\tmpargdenomrac]%
+ \IfStrEqCase{#1}{%
+ {d}{%
+ \ensuremath{\displaystyle\frac{\tmparavantrac\sqrt{\num{\tmpargnumrac}}}{\num{\tmpargdenomrac}}}%
+ }%
+ {t}{%
+ \ensuremath{\frac{\tmparavantrac\sqrt{\num{\tmpargnumrac}}}{\num{\tmpargdenomrac}}}%
+ }%
+ {n}{%
+ \ensuremath{\nicefrac{\tmparavantrac\sqrt{\num{\tmpargnumrac}}}{\num{\tmpargdenomrac}}}%
+ }%
+ }%
+ }%
+ {%
+ \ensuremath{\tmparavantrac\sqrt{\num{\tmpargnumrac}}}%
+ }%
+ }%
+ {%
+ \FormatFraction[#1]{#2}%
+ }%
+ }%
+}
+
+%====COMMANDE INTERNE DE CONVERSION
+\ExplSyntaxOn
+ \NewDocumentCommand\ConvertPtToCm{ m } { \dim_to_decimal_in_unit:nn { #1 } { 1 cm } }
+\ExplSyntaxOff
+
+%====RECUPERER COORDONNEES NOEUD
+\NewDocumentCommand\GetXcoord{ m O{\myxcoord} }{%
+ \path #1;
+ \pgfgetlastxy{\macrox}{\macroy}%
+ \xdef#2{\xintfloateval{(\ConvertPtToCm{\macrox})/(\pflxunit)}}%
+}
+\NewDocumentCommand\GetYcoord{ m O{\myycoord} }{%
+ \path #1;
+ \pgfgetlastxy{\macrox}{\macroy}%
+ \xdef#2{\xintfloateval{(\ConvertPtToCm{\macroy})/(\pflyunit)}}%
+}
+
+\NewDocumentCommand\GetXYcoord{ m O{\myxcoord} O{\myycoord} }{%
+ \GetXcoord{#1}[#2]%
+ \GetYcoord{#1}[#3]%
+}
+
+%===UNITÉS
+\newcommand\DistBetweenNodes[3][\MyTmpDist]{%
+ \pgfpointdiff{\pgfpointanchor{#2}{center}}
+ {\pgfpointanchor{#3}{center}}
+ % no need to use a new dimen
+ \pgf@xa=\pgf@x
+ \pgf@ya=\pgf@y
+ % to convert from pt to cm
+ \pgfmathparse{veclen(\pgf@xa,\pgf@ya)/28.45274}
+ \global\let#1\pgfmathresult %macro globale
+}
+
+\newcommand\TikZUnits{
+ \coordinate (@0) at (0,0) ;
+ \coordinate (@X) at (1,0) ;
+ \coordinate (@Y) at (0,1) ;
+ \DistBetweenNodes[\pflxunit]{@0}{@X}
+ \DistBetweenNodes[\pflyunit]{@0}{@Y}
+}
+
+%====ENVIRONNEMENT
+\defKV[GraphicTikz]{%
+ GradThick=\def\pflthickgrad{#1}
+}
+\setKVdefault[GraphicTikz]{%
+ Frame=false,%
+ GradThick=3pt
+}
+
+\NewDocumentEnvironment{GraphTikz}{ O{} D<>{} }%
+%1 = options tikz, classiques
+%2 = clés spécifiques
+{%
+ \restoreKV[GraphicTikz]%
+ \setKV[GraphicTikz]{#2}%
+ %l'environnement
+ \begin{tikzpicture}[#1]%
+ %unités x/y pour des calculs de coordonnées
+ \TikZUnits
+ %noeuds
+ \coordinate (bbxTop) at (current bounding box.north) ;
+ \coordinate (bbxBottom) at (current bounding box.south) ;
+ \ifboolKV[GraphicTikz]{Frame}{\draw[tkzgrphframe] ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax}) ;}{}%
+ %back to normal
+}%
+{%
+ \end{tikzpicture}%
+}
+
+%====AXES
+\defKV[GraphicTikzAxis]{
+ Format=\def\pflformataxes{#1}
+}
+\setKVdefault[GraphicTikzAxis]{%
+ Grid=true,%
+ Enlarge=0,%
+ Grads=true,%
+ Origin=false,%
+ Font={},%
+ Format=num,%
+ Lines=true,%
+ Last=false,%
+ Behind=false,%
+ Above=false
+}
+
+\NewDocumentCommand\FormatXaxisValues{ m m }{%
+ \IfStrEqCase{#1}{%
+ {num}{\num{#2}}%
+ {year}{#2}%
+ {frac}{\FormatFrac{#2}}%
+ {dfrac}{\FormatFrac[d]{#2}}%
+ {nfrac}{\FormatFrac[n]{#2}}%
+ {trig}{\FormatTrig{#2}}%
+ {dtrig}{\FormatTrig[d]{#2}}%
+ {ntrig}{\FormatTrig[n]{#2}}%
+ {sqrt}{\FormatSqrt{#2}}%
+ {dsqrt}{\FormatSqrt[d]{#2}}%
+ {nsqrt}{\FormatSqrt[n]{#2}}%
+ }[#2]%
+}
+
+\NewDocumentCommand\FormatYaxisValues{ m m }{%
+ \IfStrEqCase{#1}{%
+ {num}{\num{#2}}%
+ {year}{#2}%
+ {frac}{\FormatSqrt{#2}}%
+ {dfrac}{\FormatFrac[d]{#2}}%
+ {nfrac}{\FormatFrac[n]{#2}}%
+ {trig}{\FormatTrig{#2}}%
+ {dtrig}{\FormatTrig[d]{#2}}%
+ {ntrig}{\FormatTrig[n]{#2}}%
+ {sqrt}{\FormatSqrt{#2}}%
+ {dsqrt}{\FormatSqrt[d]{#2}}%
+ {nsqrt}{\FormatSqrt[n]{#2}}%
+ }[#2]%
+}
+
+\NewDocumentCommand\DrawAxisGrids{ s O{} m D<>{#3} m D<>{#5} }{%
+ \restoreKV[GraphicTikzAxis]%
+ \setKV[GraphicTikzAxis]{#2}%
+ %cas particuliers sous/sur impression
+ \ifboolKV[GraphicTikzAxis]{Behind}%
+ {%
+ \setKV[GraphicTikzAxis]{Grads=false}
+ }%
+ {}%
+ \ifboolKV[GraphicTikzAxis]{Above}%
+ {%
+ \setKV[GraphicTikzAxis]{Grid=false}
+ }%
+ {}%
+ %suite
+ \IfSubStr{\pflformataxes}{/}%
+ {%
+ \StrCut{\pflformataxes}{/}{\pflformataxex}{\pflformataxey}%
+ }%
+ {%
+ \xdef\pflformataxex{\pflformataxes}\xdef\pflformataxey{\pflformataxes}%
+ }%
+ \ifboolKV[GraphicTikzAxis]{Grid}%
+ {%
+ \draw[tkzgrphgrids,xstep=\pflgrillexs,ystep=\pflgrilleys] ({\pflxmin},{\pflymin}) grid ({\pflxmax},{\pflymax});
+ \draw[tkzgrphgridp,xstep=\pflgrillex,ystep=\pflgrilley] ({\pflxmin},{\pflymin}) grid ({\pflxmax},{\pflymax});
+ \ifboolKV[GraphicTikzAxis]{Last}%
+ {%
+ \draw[tkzgrphgridp] ({\pflxmin},{\pflymax})--({\pflxmax},{\pflymax}) ;
+ \draw[tkzgrphgridp] ({\pflxmax},{\pflymin})--({\pflxmax},{\pflymax}) ;
+ }%
+ {}%
+ }%
+ {}%
+ \draw[tkzgrphaxes] ({\pflxmin},{\pflOy}) -- ([xshift={\useKV[GraphicTikzAxis]{Enlarge}}]{\pflxmax},{\pflOy}) ;
+ \draw[tkzgrphaxes] ({\pflOx},{\pflymin}) -- ([yshift={\useKV[GraphicTikzAxis]{Enlarge}}]{\pflOx},{\pflymax}) ;
+ \IfEq{#3}{auto}%
+ {%
+ \xdef\tmprangexvalues{\xintfloateval{seq(i,i=\pflxmin..[\pflgrillex]..\pflxmax)}}\StrDel{\tmprangexvalues}{ }[\tmprangexvalues]%
+ \xdef\pflformataxex{num}%
+ }%
+ {%
+ \xdef\tmprangexvalues{#3}%
+ }%
+ \IfEq{#5}{auto}%
+ {%
+ \xdef\tmprangeyvalues{\xintfloateval{seq(i,i=\pflymin..[\pflgrilley]..\pflymax)}}\StrDel{\tmprangeyvalues}{ }[\tmprangeyvalues]%
+ \xdef\pflformataxey{num}%
+ }%
+ {%
+ \xdef\tmprangeyvalues{#5}%
+ }%
+ \foreach \x in \tmprangexvalues {\draw[tkzgrphline] ([yshift=\pflthickgrad]{\x},{\pflOy})--++(0,{-2*\pflthickgrad}) ;}
+ \foreach \y in \tmprangeyvalues {\draw[tkzgrphline] ([xshift=\pflthickgrad]{\pflOx},{\y})--++({-2*\pflthickgrad},0) ;}
+ \ifboolKV[GraphicTikzAxis]{Grads}%
+ {%
+ %origine
+ \ifboolKV[GraphicTikzAxis]{Origin}%
+ {%
+ \draw ({\pflOx},{\pflOy}) node[tkzgrphnode,below left,font={\useKV[GraphicTikzAxis]{Font}}] {\FormatXaxisValues{\pflformataxex}{\pflOx}} ;
+ %\draw (\pflOx,\pflOy) node[below left,font={\useKV[GraphicTikzAxis]{Font}}] {\ifboolKV[GraphicTikzAxis]{Num}{\num{\pflOx}}{\pflOx}} ;
+ }%
+ {}%
+ %graduations x, sauf si auto...
+ \foreach \x in \tmprangexvalues {%
+ \IfBooleanTF{#1}%
+ {%
+ \xintifboolexpr{\x == \pflOx}{}{\draw ([yshift=-\pflthickgrad]{\x},{\pflOy}) node[tkzgrphnode,below,font={\useKV[GraphicTikzAxis]{Font}}] {\FormatXaxisValues{\pflformataxex}{\x}} ;}
+ %\xintifboolexpr{\x == \pflOx}{}{\draw ([yshift=-\pflthickgrad]\x,\pflOy) node[below,font={\useKV[GraphicTikzAxis]{Font}}] {\ifboolKV[GraphicTikzAxis]{Num}{\num{\x}}{\x}} ;}
+ }%
+ {%
+ \draw ([yshift=-\pflthickgrad]{\x},{\pflOy}) node[tkzgrphnode,below,font={\useKV[GraphicTikzAxis]{Font}}] {\FormatXaxisValues{\pflformataxex}{\x}} ;
+ %\draw ([yshift=-\pflthickgrad]\x,\pflOy) node[below,font={\useKV[GraphicTikzAxis]{Font}}] {\ifboolKV[GraphicTikzAxis]{Num}{\num{\x}}{\x}} ;
+ }%
+ }%
+ \foreach \y in \tmprangeyvalues {%
+ \IfBooleanTF{#1}%
+ {%
+ \xintifboolexpr{\y == \pflOy}{}{\draw ([xshift=-\pflthickgrad]{\pflOx},{\y}) node[tkzgrphnode,left,font={\useKV[GraphicTikzAxis]{Font}}] {\FormatYaxisValues{\pflformataxey}{\y}} ;}
+ %\xintifboolexpr{\y == \pflOy}{}{\draw ([xshift=-\pflthickgrad]\pflOx,\y) node[left,font={\useKV[GraphicTikzAxis]{Font}}] {\ifboolKV[GraphicTikzAxis]{Num}{\num{\y}}{\y}} ;}
+ }%
+ {%
+ \draw ([xshift=-\pflthickgrad]{\pflOx},{\y}) node[tkzgrphnode,left,font={\useKV[GraphicTikzAxis]{Font}}] {\FormatYaxisValues{\pflformataxey}{\y}} ;
+ %\draw ([xshift=-\pflthickgrad]\pflOx,\y) node[left,font={\useKV[GraphicTikzAxis]{Font}}] {\ifboolKV[GraphicTikzAxis]{Num}{\num{\y}}{\y}} ;
+ }%
+ }%
+ }%
+ {}%
+}
+
+%===DEFINIR POINTS
+\setKVdefault[GraphicTikzDefPoints]{Color=black,Mark=false,Style=o}
+
+\NewDocumentCommand\DefinePts{ O{} m }{%
+ \restoreKV[GraphicTikzDefPoints]%
+ \setKV[GraphicTikzDefPoints]{#1}%
+ \foreach \tmpnamept/\tmpxpt/\tmpypt in {#2}{%
+ \coordinate (\tmpnamept) at ({\tmpxpt},{\tmpypt}) ;
+ \ifboolKV[GraphicTikzDefPoints]{Mark}%
+ {%
+ \MarkPts*[Style={\useKV[GraphicTikzDefPoints]{Style}},Color={\useKV[GraphicTikzDefPoints]{Color}}]{(\tmpnamept)}
+ %\filldraw[{\useKV[GraphicTikzDefPoints]{Color}}] (\tmpnamept) circle[tkzgrphpointc] ;
+ }%
+ {}%
+ }
+}
+
+\defKV[GraphicTikzMarkPoints]{%
+ Color=\def\pflcouleurpoints{#1},%
+ Style=\def\pflstylepoints{#1}
+}
+\setKVdefault[GraphicTikzMarkPoints]{%
+ Color=black,%
+ Sizec=2pt,%
+ Sizex=2pt,%
+ Sizeo=1.75pt,%
+ Style=o,%
+ Lines=false
+}
+\NewDocumentCommand\MarkPts{ s O{} D<>{\normalfont\normalsize} m }{%
+ %étoilée = sans label
+ %2=clés
+ %3=points
+ \restoreKV[GraphicTikzMarkPoints]%
+ \setKV[GraphicTikzMarkPoints]{#2}%
+ \IfBooleanTF{#1}%
+ {%
+ \IfStrEq{\pflstylepoints}{x}%
+ {%
+ \foreach \Point in {#4} {%
+ \ifboolKV[GraphicTikzMarkPoints]{Lines}%
+ {%
+ \draw[{\useKV[GraphicTikzMarkPoints]{Color}},tkzgrphcounterimage] let \p1 = \Point in ({\x1},{\pflOy}) |- ({\pflOx},{\y1}) ;
+ }%
+ {}%
+ \draw[{\useKV[GraphicTikzMarkPoints]{Color}}] \Point pic{tkzgraphcross={\useKV[GraphicTikzMarkPoints]{Sizex}}/45} ;
+ }%
+ }%
+ {}%
+ \IfStrEq{\pflstylepoints}{+}%
+ {%
+ \foreach \Point in {#4} {%
+ \ifboolKV[GraphicTikzMarkPoints]{Lines}%
+ {%
+ \draw[{\useKV[GraphicTikzMarkPoints]{Color}},tkzgrphcounterimage] let \p1 = \Point in ({\x1},{\pflOy}) |- ({\pflOx},{\y1}) ;
+ }%
+ {}%
+ \draw[{\useKV[GraphicTikzMarkPoints]{Color}}] \Point pic{tkzgraphcross={\useKV[GraphicTikzMarkPoints]{Sizex}}/90} ;
+ }%
+ }%
+ {}%
+ \IfStrEq{\pflstylepoints}{c}%
+ {%
+ \foreach \Point in {#4} {%
+ \ifboolKV[GraphicTikzMarkPoints]{Lines}%
+ {%
+ \draw[{\useKV[GraphicTikzMarkPoints]{Color}},tkzgrphcounterimage] let \p1 = \Point in ({\x1},{\pflOy}) |- ({\pflOx},{\y1}) ;
+ }%
+ {}%
+ \filldraw[draw=none,fill={\useKV[GraphicTikzMarkPoints]{Color}}] \Point pic{tkzgraphsquare={\useKV[GraphicTikzMarkPoints]{Sizec}}/0} ;
+ }%
+ }%
+ {}%
+ \IfStrEq{\pflstylepoints}{d}%
+ {%
+ \foreach \Point in {#4} {%
+ \ifboolKV[GraphicTikzMarkPoints]{Lines}%
+ {%
+ \draw[{\useKV[GraphicTikzMarkPoints]{Color}},tkzgrphcounterimage] let \p1 = \Point in ({\x1},{\pflOy}) |- ({\pflOx},{\y1}) ;
+ }%
+ {}%
+ \filldraw[draw=none,fill={\useKV[GraphicTikzMarkPoints]{Color}}] \Point pic{tkzgraphsquare={\useKV[GraphicTikzMarkPoints]{Sizeo}}/45} ;
+ }%
+ }%
+ {}%
+ \IfStrEq{\pflstylepoints}{o}%
+ {%
+ \IfSubStr{\pflcouleurpoints}{/}%
+ {%
+ \StrCut{\pflcouleurpoints}{/}{\pflcouleurpointsA}{\pflcouleurpointsB}%
+ \foreach \Point in {#4} {%
+ \ifboolKV[GraphicTikzMarkPoints]{Lines}%
+ {%
+ \draw[{\useKV[GraphicTikzMarkPoints]{Color}},tkzgrphcounterimage] let \p1 = \Point in ({\x1},{\pflOy}) |- ({\pflOx},{\y1}) ;
+ }%
+ {}%
+ \filldraw[tkzgrphline,fill=\pflcouleurpointsB,draw=\pflcouleurpointsA] \Point circle[radius={\useKV[GraphicTikzMarkPoints]{Sizeo}}] ;
+ }%
+ }%
+ {%
+ \foreach \Point in {#4} {%
+ \ifboolKV[GraphicTikzMarkPoints]{Lines}%
+ {%
+ \draw[{\useKV[GraphicTikzMarkPoints]{Color}},tkzgrphcounterimage] let \p1 = \Point in ({\x1},{\pflOy}) |- ({\pflOx},{\y1}) ;
+ }%
+ {}%
+ \filldraw[\pflcouleurpoints] \Point circle[radius={\useKV[GraphicTikzMarkPoints]{Sizeo}}] ;
+ }%
+ }%
+ }%
+ {}%
+ }%
+ {%avec label
+ \IfStrEq{\pflstylepoints}{x}%
+ {%
+ \foreach \Point/\Pos/\Label in {#4} {%
+ \ifboolKV[GraphicTikzMarkPoints]{Lines}%
+ {%
+ \draw[{\useKV[GraphicTikzMarkPoints]{Color}},tkzgrphcounterimage] let \p1 = \Point in ({\x1},{\pflOy}) |- ({\pflOx},{\y1}) ;
+ }%
+ {}%
+ \draw[{\useKV[GraphicTikzMarkPoints]{Color}}] \Point pic{tkzgraphcross={\useKV[GraphicTikzMarkPoints]{Sizex}}/45} node[tkzgrphnode,\Pos,font=#3] {\Label} ;
+ }%
+ }%
+ {}%
+ \IfStrEq{\pflstylepoints}{+}%
+ {%
+ \foreach \Point/\Pos/\Label in {#4} {%
+ \ifboolKV[GraphicTikzMarkPoints]{Lines}%
+ {%
+ \draw[{\useKV[GraphicTikzMarkPoints]{Color}},tkzgrphcounterimage] let \p1 = \Point in ({\x1},{\pflOy}) |- ({\pflOx},{\y1}) ;
+ }%
+ {}%
+ \draw[{\useKV[GraphicTikzMarkPoints]{Color}}] \Point pic{tkzgraphcross={\useKV[GraphicTikzMarkPoints]{Sizex}}/90} node[tkzgrphnode,\Pos,font=#3] {\Label} ;
+ }%
+ }%
+ {}%
+ \IfStrEq{\pflstylepoints}{c}%
+ {%
+ \foreach \Point/\Pos/\Label in {#4} {%
+ \ifboolKV[GraphicTikzMarkPoints]{Lines}%
+ {%
+ \draw[{\useKV[GraphicTikzMarkPoints]{Color}},tkzgrphcounterimage] let \p1 = \Point in ({\x1},{\pflOy}) |- ({\pflOx},{\y1}) ;
+ }%
+ {}%
+ \filldraw[draw=none,fill={\useKV[GraphicTikzMarkPoints]{Color}}] \Point pic{tkzgraphsquare={\useKV[GraphicTikzMarkPoints]{Sizec}}/0} node[tkzgrphnode,\Pos,{\useKV[GraphicTikzMarkPoints]{Color}},font=#3] {\Label} ;
+ }%
+ }%
+ {}%
+ \IfStrEq{\pflstylepoints}{d}%
+ {%
+ \foreach \Point/\Pos/\Label in {#4} {%
+ \ifboolKV[GraphicTikzMarkPoints]{Lines}%
+ {%
+ \draw[{\useKV[GraphicTikzMarkPoints]{Color}},tkzgrphcounterimage] let \p1 = \Point in ({\x1},{\pflOy}) |- ({\pflOx},{\y1}) ;
+ }%
+ {}%
+ \filldraw[draw=none,fill={\useKV[GraphicTikzMarkPoints]{Color}}] \Point pic{tkzgraphsquare={\useKV[GraphicTikzMarkPoints]{Sizeo}}/45} node[tkzgrphnode,\Pos,{\useKV[GraphicTikzMarkPoints]{Color}},font=#3] {\Label} ;
+ }%
+ }%
+ {}%
+ \IfStrEq{\pflstylepoints}{o}%
+ {%
+ \IfSubStr{\pflcouleurpoints}{/}%
+ {%
+ \StrCut{\pflcouleurpoints}{/}{\pflcouleurpointsA}{\pflcouleurpointsB}%
+ \foreach \Point/\Pos/\Label in {#4} {%
+ \ifboolKV[GraphicTikzMarkPoints]{Lines}%
+ {%
+ \draw[{\useKV[GraphicTikzMarkPoints]{Color}},tkzgrphcounterimage] let \p1 = \Point in ({\x1},{\pflOy}) |- ({\pflOx},{\y1}) ;
+ }%
+ {}%
+ \draw[tkzgrphline,\pflcouleurpointsA,fill=\pflcouleurpointsB] \Point circle[radius={\useKV[GraphicTikzMarkPoints]{Sizeo}}] node[tkzgrphnode,\Pos,font=#3] {\Label} ;
+ }%
+ }%
+ {%
+ \foreach \Point/\Pos/\Label in {#4} {%
+ \ifboolKV[GraphicTikzMarkPoints]{Lines}%
+ {%
+ \draw[{\useKV[GraphicTikzMarkPoints]{Color}},tkzgrphcounterimage] let \p1 = \Point in ({\x1},{\pflOy}) |- ({\pflOx},{\y1}) ;
+ }%
+ {}%
+ \filldraw[\pflcouleurpoints] \Point circle[radius={\useKV[GraphicTikzMarkPoints]{Sizeo}}] node[tkzgrphnode,\Pos,font=#3] {\Label} ;
+ }%
+ }%
+ }%
+ {}%
+ }%
+}
+
+%===AJOUTER DES VALEURS MANUELLEMENT
+\NewDocumentCommand\AddXvalues{ O{} m m }{%
+ \restoreKV[GraphicTikzAxis]%
+ \setKV[GraphicTikzAxis]{#1}%
+ \ifboolKV[GraphicTikzAxis]{Lines}{\foreach \x in {#2}{\draw[tkzgrphline] ([yshift=\pflthickgrad]{\x},{\pflOy})--++(0,{-2*\pflthickgrad}) ;}}{}%
+ \readlist*\LstValX{#2}%
+ \readlist*\LstValFmtX{#3}%
+ \foreach \i in {1,...,\LstValXlen}{%
+ \itemtomacro\LstValX[\i]\mavalx%
+ \itemtomacro\LstValFmtX[\i]\mavalfmtx%
+ \draw ([yshift=-\pflthickgrad]{\mavalx},{\pflOy}) node[tkzgrphnode,below,font={\useKV[GraphicTikzAxis]{Font}}] {\mavalfmtx} ;
+ }%
+}
+
+\NewDocumentCommand\AddYvalues{ O{} m m }{%
+ \restoreKV[GraphicTikzAxis]%
+ \setKV[GraphicTikzAxis]{#1}%
+ \ifboolKV[GraphicTikzAxis]{Lines}{\foreach \y in {#2}{\draw[tkzgrphline] ([xshift=\pflthickgrad]{\pflOx},{\y})--++({-2*\pflthickgrad},0) ;}}{}%
+ \readlist*\LstValY{#2}%
+ \readlist*\LstValFmtY{#3}%
+ \foreach \i in {1,...,\LstValYlen}{%
+ \itemtomacro\LstValY[\i]\mavaly%
+ \itemtomacro\LstValFmtY[\i]\mavalfmty%
+ \draw ([xshift=-\pflthickgrad]{\pflOx},{\mavaly}) node[tkzgrphnode,left,font={\useKV[GraphicTikzAxis]{Font}}] {\mavalfmty} ;
+ }%
+}
+
+%====FONCTIONS ET COURBES 'classique + interpo + spline'
+\defKV[GraphicTikzCourbe]{%
+ Step=\def\pflstepcurve{#1},%
+ Name=\def\pflnamecurve{#1}
+}
+\setKVdefault[GraphicTikzCourbe]{%
+ Color=black,%
+ Start={\pflxmin},%
+ End={\pflxmax},%
+ Step={},%
+ Clip=true,%
+ Name={},%
+ Trace=false,%
+ Tension=0.5
+}
+
+\NewDocumentCommand\DefineFunction{ O{} D<>{f} m }{%old version
+ \restoreKV[GraphicTikzCourbe]%
+ \setKV[GraphicTikzCourbe]{#1}%
+ \xintdeffloatfunc #2(x) := #3 ;
+ \IfStrEq{\pflstepcurve}{}%
+ {%
+ \xdef\pflstepcurve{\xintfloateval{((\useKV[GraphicTikzCourbe]{End})-(\useKV[GraphicTikzCourbe]{Start}))/100}}%
+ }%
+ {}%
+ \ifboolKV[GraphicTikzCourbe]{Clip}{\begin{scope}\clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax});}{}
+ \clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax});
+ \ifboolKV[GraphicTikzCourbe]{Trace}%
+ {%
+ \path[draw,tkzgrphcurve,{\useKV[GraphicTikzCourbe]{Color}},name path global=\pflnamecurve] plot[smooth] coordinates {%
+ \xintthecoords\xintfloatexpr
+ seq((x,#2(x)),x={\useKV[GraphicTikzCourbe]{Start}}..[\pflstepcurve]..{\useKV[GraphicTikzCourbe]{End}},{\useKV[GraphicTikzCourbe]{End}})
+ \relax
+ };
+ }%
+ {%
+ \path[draw=none,tkzgrphcurve,{\useKV[GraphicTikzCourbe]{Color}},name path global=\pflnamecurve] plot[smooth] coordinates {%
+ \xintthecoords\xintfloatexpr
+ seq((x,#2(x)),x={\useKV[GraphicTikzCourbe]{Start}}..[\pflstepcurve]..{\useKV[GraphicTikzCourbe]{End}},{\useKV[GraphicTikzCourbe]{End}})
+ \relax
+ };
+ }%
+ \ifboolKV[GraphicTikzCourbe]{Clip}{\end{scope}}{}
+}
+
+\NewDocumentCommand\DefineCurve{ O{} D<>{f} m }{%
+ \restoreKV[GraphicTikzCourbe]%
+ \setKV[GraphicTikzCourbe]{#1}%
+ \xintdeffloatfunc #2(x) := #3 ;
+ \IfStrEq{\pflstepcurve}{}%
+ {%
+ \xdef\pflstepcurve{\xintfloateval{((\useKV[GraphicTikzCourbe]{End})-(\useKV[GraphicTikzCourbe]{Start}))/100}}%
+ }%
+ {}%
+ \ifboolKV[GraphicTikzCourbe]{Clip}{\begin{scope}\clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax});}{}
+ \clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax});
+ \ifboolKV[GraphicTikzCourbe]{Trace}%
+ {%
+ \path[draw,tkzgrphcurve,{\useKV[GraphicTikzCourbe]{Color}},name path global=\pflnamecurve] plot[smooth] coordinates {%
+ \xintthecoords\xintfloatexpr
+ seq((x,#2(x)),x={\useKV[GraphicTikzCourbe]{Start}}..[\pflstepcurve]..{\useKV[GraphicTikzCourbe]{End}},{\useKV[GraphicTikzCourbe]{End}})
+ \relax
+ };
+ }%
+ {%
+ \path[draw=none,tkzgrphcurve,{\useKV[GraphicTikzCourbe]{Color}},name path global=\pflnamecurve] plot[smooth] coordinates {%
+ \xintthecoords\xintfloatexpr
+ seq((x,#2(x)),x={\useKV[GraphicTikzCourbe]{Start}}..[\pflstepcurve]..{\useKV[GraphicTikzCourbe]{End}},{\useKV[GraphicTikzCourbe]{End}})
+ \relax
+ };
+ }%
+ \ifboolKV[GraphicTikzCourbe]{Clip}{\end{scope}}{}
+}
+
+\NewDocumentCommand\DrawCurve{ O{} D<>{} m }{%
+ \restoreKV[GraphicTikzCourbe]%
+ \setKV[GraphicTikzCourbe]{#1}%
+ \IfStrEq{\pflstepcurve}{}%
+ {%
+ \xdef\pflstepcurve{\xintfloateval{((\useKV[GraphicTikzCourbe]{End})-(\useKV[GraphicTikzCourbe]{Start}))/100}}%
+ }%
+ {}%
+ \ifboolKV[GraphicTikzCourbe]{Clip}{\begin{scope}\clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax});}{}
+ \IfEq{\pflnamecurve}{}%
+ {%
+ \draw[tkzgrphcurve,{\useKV[GraphicTikzCourbe]{Color}}] plot[smooth] coordinates {%
+ \xintthecoords\xintfloatexpr
+ seq((x,#3),x={\useKV[GraphicTikzCourbe]{Start}}..[\pflstepcurve]..{\useKV[GraphicTikzCourbe]{End}},{\useKV[GraphicTikzCourbe]{End}})
+ \relax
+ };
+ }%
+ {%
+ \path[draw,tkzgrphcurve,{\useKV[GraphicTikzCourbe]{Color}},name path global=\pflnamecurve] plot[smooth] coordinates {%
+ \xintthecoords\xintfloatexpr
+ seq((x,#3),x={\useKV[GraphicTikzCourbe]{Start}}..[\pflstepcurve]..{\useKV[GraphicTikzCourbe]{End}},{\useKV[GraphicTikzCourbe]{End}})
+ \relax
+ };
+ }%
+ \ifboolKV[GraphicTikzCourbe]{Clip}{\end{scope}}{}
+}
+
+\NewDocumentCommand\DefineLstInterpol{ m O{\myinterpolist} }{%
+ \def#2{#1}%
+}
+
+\NewDocumentCommand\DefineInterpoCurve{ O{} m }{%
+ \restoreKV[GraphicTikzCourbe]%
+ \setKV[GraphicTikzCourbe]{#1}%
+ \begin{scope}
+ \ifboolKV[GraphicTikzCourbe]{Trace}%
+ {%
+ \path[draw,tkzgrphcurve,{\useKV[GraphicTikzCourbe]{Color}},name path global=\pflnamecurve] plot[smooth,tension={\useKV[GraphicTikzCourbe]{Tension}}] coordinates {#2};
+ }%
+ {%
+ \path[draw=none,tkzgrphcurve,{\useKV[GraphicTikzCourbe]{Color}},name path global=\pflnamecurve] plot[smooth,tension={\useKV[GraphicTikzCourbe]{Tension}}] coordinates {#2};
+ }%
+ \end{scope}
+}
+
+\NewDocumentCommand\DrawInterpoCurve{ O{} m }{%
+ %2=liste
+ \restoreKV[GraphicTikzCourbe]%
+ \setKV[GraphicTikzCourbe]{#1}%
+ \begin{scope}
+ \draw[tkzgrphcurve,{\useKV[GraphicTikzCourbe]{Color}}] plot [smooth,tension={\useKV[GraphicTikzCourbe]{Tension}}] coordinates {#2} ;
+ \end{scope}
+}
+
+\NewDocumentCommand\DefineLstSpline{ m O{\mysplinelst} }{%
+ \def#2{#1}%
+}
+
+\newcommand\tkzextractcoeff[2]{%1=liste,2=numero
+ \setsepchar{§}%
+ \readlist*\lcoeffs{#1}
+ \ifnum \lcoeffslen=1
+ \def\COEFFA{#1}
+ \def\COEFFB{#1}
+ \else
+ \itemtomacro\lcoeffs[#2]\COEFF
+ \IfSubStr{\COEFF}{/}%
+ {\StrCut{\COEFF}{/}{\COEFFA}{\COEFFB}}%
+ {\def\COEFFA{\COEFF}\def\COEFFB{\COEFF}}
+ \fi
+}
+
+\defKV[GraphicTikzSpline]{%
+ Name=\def\pflsplinename{#1},%
+ Coeffs=\def\pflsplinecoeffs{#1}
+}
+
+\setKVdefault[GraphicTikzSpline]{%
+ Name=spline,%
+ Color=black,%
+ Coeffs=3,%
+ Trace=false
+}
+
+\NewDocumentCommand\GenerateSpline{ m m O{\myspline} }{%
+ %1=liste
+ \setsepchar[.]{§./}%
+ \readlist*\SPLlistepoints{#1}%
+ %les données
+ \def\tmpsplinenumdeb{1}
+ \def\tmpsplinenumfin{\SPLlistepointslen}%
+ \tkzextractcoeff{#2}{\tmpsplinenumdeb}%
+ %nb de calculs
+ \def\SPLnbsplines{\inteval{\tmpsplinenumfin-1}}%
+ %extraction des coordonnées
+ \itemtomacro\SPLlistepoints[\tmpsplinenumdeb,1]\xa%
+ \itemtomacro\SPLlistepoints[\tmpsplinenumdeb,2]\ya%
+ \itemtomacro\SPLlistepoints[\tmpsplinenumdeb,3]\fprimea%
+ \itemtomacro\SPLlistepoints[\tmpsplinenumdeb,1]\xb%
+ \itemtomacro\SPLlistepoints[\tmpsplinenumdeb,2]\yb%
+ \itemtomacro\SPLlistepoints[\tmpsplinenumdeb,3]\fprimeb%
+ \xdef#3{(\xa,\ya) ..controls +({atan \fprimea}:{(\xb-\xa)/\COEFFA}) and +({-180 + atan \fprimeb}:{(\xb-\xa)/\COEFFA}).. (\xb,\yb)}%
+ \foreach \i in {\tmpsplinenumdeb,...,\SPLnbsplines}{%
+ %extraction des coeffs de compensation
+ \tkzextractcoeff{#2}{\i}%
+ \def\j{\inteval{\i+1}}%
+ \itemtomacro\SPLlistepoints[\i,1]\xa%
+ \itemtomacro\SPLlistepoints[\i,2]\ya%
+ \itemtomacro\SPLlistepoints[\i,3]\fprimea%
+ \itemtomacro\SPLlistepoints[\j,1]\xb%
+ \itemtomacro\SPLlistepoints[\j,2]\yb%
+ \itemtomacro\SPLlistepoints[\j,3]\fprimeb%
+ \xdef#3{#3 ..controls +({atan \fprimea}:{(\xb-\xa)/\COEFFA}) and +({-180 + atan \fprimeb}:{(\xb-\xa)/\COEFFB}).. (\xb,\yb)}%
+ }%
+}
+
+\NewDocumentCommand\DefineSplineCurve{ O{} m D<>{\myspline} }{%
+ %1=liste
+ \restoreKV[GraphicTikzSpline]%
+ \setKV[GraphicTikzSpline]{#1}%
+ \GenerateSpline{#2}{\pflsplinecoeffs}[#3]%
+ \begin{scope}
+ \ifboolKV[GraphicTikzSpline]{Trace}%
+ {%
+ \path[draw,tkzgrphcurve,{\useKV[GraphicTikzSpline]{Color}},name path global=\pflsplinename] #3 ;
+ }%
+ {%
+ \path[draw=none,tkzgrphcurve,name path global=\pflsplinename] #3 ;
+ }%
+ \end{scope}
+}
+
+\NewDocumentCommand\DefineSpline{ O{} m D<>{\myspline} }{%old version
+ %1=liste
+ \restoreKV[GraphicTikzSpline]%
+ \setKV[GraphicTikzSpline]{#1}%
+ \GenerateSpline{#2}{\pflsplinecoeffs}[#3]%
+ \begin{scope}
+ \ifboolKV[GraphicTikzSpline]{Trace}%
+ {%
+ \path[draw,tkzgrphcurve,{\useKV[GraphicTikzSpline]{Color}},name path global=\pflsplinename] #3 ;
+ }%
+ {%
+ \path[draw=none,tkzgrphcurve,name path global=\pflsplinename] #3 ;
+ }%
+ \end{scope}
+}
+
+\NewDocumentCommand\DrawSplineCurve{ O{} m D<>{\myspline} }{%
+ %1=liste
+ \restoreKV[GraphicTikzSpline]%
+ \setKV[GraphicTikzSpline]{#1}%
+ \GenerateSpline{#2}{\pflsplinecoeffs}[#3]%
+ \begin{scope}
+ \draw[tkzgrphcurve,{\useKV[GraphicTikzSpline]{Color}}] #3 ;
+ \end{scope}
+}
+
+\NewDocumentCommand\DrawSpline{ O{} m D<>{\myspline} }{%old version
+ %1=liste
+ \restoreKV[GraphicTikzSpline]%
+ \setKV[GraphicTikzSpline]{#1}%
+ \GenerateSpline{#2}{\pflsplinecoeffs}[#3]%
+ \begin{scope}
+ \draw[tkzgrphcurve,{\useKV[GraphicTikzSpline]{Color}}] #3 ;
+ \end{scope}
+}
+
+%===INTERSECTION & ANTÉCÉDENTS
+\defKV[GraphicTikzIntersect]{%
+ Name=\def\pflintercurves{#1}
+}
+\setKVdefault[GraphicTikzIntersect]{%
+ Name=S,
+ Disp=true,
+ Color=black,
+ DispLine=false,%
+ Lines=false,%
+ Style=o
+}
+
+\NewDocumentCommand\FindIntersections{ O{} m m D<>{\myt} }{%
+ \restoreKV[GraphicTikzIntersect]%
+ \setKV[GraphicTikzIntersect]{#1}%
+ \path[name intersections={of=#2 and #3,name=\pflintercurves,total=\t}] \pgfextra{\xdef#4{\t}};
+ \ifboolKV[GraphicTikzIntersect]{Disp}%
+ {%
+ \xintifboolexpr{#4 == 0}{}%
+ {%
+ \foreach \i in {1,...,#4}{%
+ \ifboolKV[GraphicTikzIntersect]{Lines}%
+ {%
+ \draw[tkzgrphrange,{\useKV[GraphicTikzIntersect]{Color}}]let \p1 = (\pflintercurves-\i) in (\pflintercurves-\i) -- ({\x1},{\pflOy}) ;
+ }%
+ {}%
+ \MarkPts*[Style={\useKV[GraphicTikzIntersect]{Style}},Color={\useKV[GraphicTikzIntersect]{Color}}]{(\pflintercurves-\i)}
+ %\filldraw[{\useKV[GraphicTikzIntersect]{Color}}] (\pflintercurves-\i) circle[tkzgrphpointc] ;
+ }
+ }%
+ }%
+ {}%
+}
+
+\NewDocumentCommand\FindCounterimage{ O{} m m D<>{\myantec} }{%
+ \restoreKV[GraphicTikzIntersect]%
+ \setKV[GraphicTikzIntersect]{#1}%
+ \begin{scope}
+ \clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax});
+ \ifboolKV[GraphicTikzIntersect]{DispLine}%
+ {%
+ \path[draw,{\useKV[GraphicTikzIntersect]{Color}},tkzgrphcurve,name path=tmpanteced] ({\pflxmin},{#3})--({\pflxmax},{#3}) ;
+ }%
+ {%
+ \path[draw=none,tkzgrphcurve,name path=tmpanteced] ({\pflxmin},{#3})--({\pflxmax},{#3}) ;
+ }%
+ \path[name intersections={of=#2 and tmpanteced,name=\pflintercurves,total=\t}] \pgfextra{\xdef#4{\t}};
+ \ifboolKV[GraphicTikzIntersect]{Disp}%
+ {%
+ \xintifboolexpr{#4 == 0}{}%
+ {%
+ \foreach \i in {1,...,#4}{%
+ \MarkPts*[Style={\useKV[GraphicTikzIntersect]{Style}},Color={\useKV[GraphicTikzIntersect]{Color}}]{(\pflintercurves-\i)}
+ %\filldraw[{\useKV[GraphicTikzIntersect]{Color}}] (\pflintercurves-\i) circle[tkzgrphpointc] ;
+ }
+ }%
+ }%
+ {}%
+ \end{scope}
+}
+
+%====INTÉGRALES
+%v2 avec modification de la clé [Type=...] ?
+\defKV[GraphicTikzIntegr]{%
+ Colors=\def\pfldomtikzcolors{#1},%
+ Style=\def\pfldomtikzstyle{#1},%
+ Opacity=\def\pfldomtikzopac{#1},%
+ Hatch=\def\pfldomtikzhatch{#1},%
+ Type=\def\pfldomtikztype{#1},%
+ Step=\def\pflstepcurve{#1},%
+ Bounds=\def\pflintbornes{#1},%
+ Junction=\def\pfldomtikzjoin{#1},%
+ NameInterpo=\def\pfldomtikznameinterpo{#1},%
+ NameInterpoB=\def\pfldomtikznameinterpob{#1},%
+ NameSpline=\def\pfldomtikznamespline{#1},%
+ NameSplineB=\def\pfldomtikznamesplineb{#1}
+}
+\setKVdefault[GraphicTikzIntegr]{%
+ Colors=gray,%
+ Style=fill,%
+ Opacity=0.5,%
+ Hatch={north west lines},%
+ Type=fct,%
+ Step={},%
+ Junction=bevel,%
+ Bounds=abs,%
+ Border=true,%
+ Spline=false,%
+ SplineB=false,%
+ NameInterpo={\myinterpo},%
+ NameInterpoB={\myinterpoB},%
+ NameSpline={\myspline},%
+ NameSplineB={\myplineB},%
+ Tension=0.5,%
+ TensionB=0.5
+}
+
+\NewDocumentCommand\DrawIntegral{ O{} D<>{} m O{0} m m }{%
+ %1 = clés
+ %2 = options particulières tikz
+ %3 = fonction, en tikz
+ %4 = fonction n°2 éventuelle
+ %de #5 à #6
+ \restoreKV[GraphicTikzIntegr]% revenir au valeurs par défaut
+ \setKV[GraphicTikzIntegr]{#1}% lit les arguments optionnels
+ %les couleurs
+ \IfSubStr{\pfldomtikzcolors}{/}%
+ {%
+ \StrCut{\pfldomtikzcolors}{/}{\pfldomtikzcolorbord}{\pfldomtikzcolorfond}
+ }%
+ {%
+ \xdef\pfldomtikzcolorbord{\pfldomtikzcolors}\xdef\pfldomtikzcolorfond{\pfldomtikzcolors}
+ }%
+ \ifboolKV[GraphicTikzIntegr]{Border}%
+ {%
+ \tikzset{integralebordtikzstyle/.style={draw=\pfldomtikzcolorbord}}
+ }%
+ {%
+ \tikzset{integralebordtikzstyle/.style={draw=none}}
+ }%
+ \IfStrEq{\pfldomtikzstyle}{hatch}%
+ {%
+ \tikzset{integraletikzstyle/.style={tkzgrphline,pattern=\pfldomtikzhatch,pattern color=\pfldomtikzcolorfond,line join=\pfldomtikzjoin}}
+ }%
+ {}%
+ \IfStrEq{\pfldomtikzstyle}{fill}%
+ {%
+ \tikzset{integraletikzstyle/.style={tkzgrphline,fill=\pfldomtikzcolorfond,fill opacity=\pfldomtikzopac,line join=\pfldomtikzjoin}}
+ }%
+ {}%
+ %extraction des infos x/y
+ \IfStrEqCase{\pflintbornes}{%
+ {abs}%
+ {%
+ \xdef\absnoeudA{#5}%
+ \xdef\absnoeudB{#6}%
+ }%
+ {nodes}%
+ {%
+ \path #5;
+ \pgfgetlastxy{\macrox}{\macroy}%
+ \xdef\absnoeudA{\xintfloateval{(\ConvertPtToCm{\macrox})/(\pflxunit)}}%
+ \path #6;
+ \pgfgetlastxy{\macrox}{\macroy}%
+ \xdef\absnoeudB{\xintfloateval{(\ConvertPtToCm{\macrox})/(\pflxunit)}}%
+ }%
+ {abs/node}%
+ {%
+ \xdef\absnoeudA{#5}%
+ \path #6;
+ \pgfgetlastxy{\macrox}{\macroy}%
+ \xdef\absnoeudB{\xintfloateval{(\ConvertPtToCm{\macrox})/(\pflxunit)}}%
+ }%
+ {node/abs}%
+ {%
+ \path #5;
+ \pgfgetlastxy{\macrox}{\macroy}%
+ \xdef\absnoeudA{\xintfloateval{(\ConvertPtToCm{\macrox})/(\pflxunit)}}%
+ \xdef\absnoeudB{#6}%
+ }%
+ }%
+ %suite avec les nbs points
+ \IfStrEq{\pflstepcurve}{}%
+ {%
+ \xdef\pflstepcurve{\xintfloateval{((\absnoeudB)-(\absnoeudA))/100}}%
+ }%
+ {}%
+ %TRACÉSen fonction des types de courbes
+ \IfStrEq{\pfldomtikztype}{fct}%
+ {%OK
+ \begin{scope}
+ \clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax});
+ \draw[integraletikzstyle,integralebordtikzstyle,#2] ({\absnoeudA},{\pflOy}) -- plot[smooth] coordinates {\xintthecoords\xintfloatexpr seq((x,#3),x=\absnoeudA..[\pflstepcurve]..\absnoeudB,\absnoeudB)\relax} -- ({\absnoeudB},{\pflOy}) -- cycle ;
+ \end{scope}
+ }%
+ {}%
+ \IfStrEq{\pfldomtikztype}{spl}%avec 3=courbe spline + clé [Spline] à utiliser !
+ {%OK
+ \begin{scope}
+ \clip ({\absnoeudA},{\pflymin}) rectangle ({\absnoeudB},{\pflymax}) ;
+ \filldraw[integraletikzstyle,integralebordtikzstyle,#2] ({\absnoeudA},{\pflOy}) -- \pfldomtikznamespline -- ({\absnoeudB},{\pflOy}) -- cycle ;
+ \end{scope}
+ \path[draw=none,tkzgrphcurve,name path=tmpintbornea] ({\absnoeudA},{\pflymin})--({\absnoeudA},{\pflymax}) ;
+ \path[name intersections={of=#3 and tmpintbornea,name=YYY}] ;
+ \draw[\pfldomtikzcolorbord,tkzgrphline] ({\absnoeudA},{\pflOy})-- (YYY-1) ;
+ \path[draw=none,tkzgrphcurve,name path=tmpintborneb] ({\absnoeudB},{\pflymin})--({\absnoeudB},{\pflymax}) ;
+ \path[name intersections={of=#3 and tmpintborneb,name=ZZZ}] ;
+ \draw[\pfldomtikzcolorbord,tkzgrphline] ({\absnoeudB},{\pflOy})-- (ZZZ-1) ;
+ }%
+ {}%
+ \IfStrEq{\pfldomtikztype}{itp}%avec 3=courbe interpo
+ {%OK
+ \begin{scope}
+ \clip ({\absnoeudA},{\pflymin}) rectangle ({\absnoeudB},{\pflymax}) ;
+ \filldraw[integraletikzstyle,integralebordtikzstyle,#2] ({\absnoeudA},{\pflOy}) -- plot [smooth,tension={\useKV[GraphicTikzIntegr]{Tension}}] coordinates {#3} -- ({\absnoeudB},{\pflOy}) -- cycle ;
+ \end{scope}
+ \path[draw=none,tkzgrphcurve,name path=tmpintbornea] ({\absnoeudA},{\pflymin})--({\absnoeudA},{\pflymax}) ;
+ \path[name intersections={of=tmpintbornea and \pfldomtikznameinterpo,name=YYY}] ;
+ \draw[\pfldomtikzcolorbord,tkzgrphline] ({\absnoeudA},{\pflOy})-- (YYY-1) ;
+ \path[draw=none,tkzgrphcurve,name path=tmpintborneb] ({\absnoeudB},{\pflymin})--({\absnoeudB},{\pflymax}) ;
+ \path[name intersections={of=tmpintborneb and \pfldomtikznameinterpo,name=ZZZ}] ;
+ \draw[\pfldomtikzcolorbord,tkzgrphline] ({\absnoeudB},{\pflOy})-- (ZZZ-1) ;
+ }%
+ {}%
+ \IfStrEq{\pfldomtikztype}{fct/fct}%avec #3=formule et #4=formule
+ {%
+ \begin{scope}
+ \clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax});
+ \draw[integraletikzstyle,integralebordtikzstyle,#2] plot[smooth] coordinates {\xintthecoords\xintfloatexpr seq((x,#3),x=\absnoeudA..[\pflstepcurve]..\absnoeudB,\absnoeudB)\relax} -- plot[smooth] coordinates {\xintthecoords\xintfloatexpr seq((x,#4),x=\absnoeudB..[-(\pflstepcurve)]..\absnoeudA,\absnoeudA)\relax} -- cycle ;
+ \end{scope}
+ }%
+ {}%
+ \IfStrEq{\pfldomtikztype}{spl/spl}%avec #3=cbe spline + #4=cbe splineB
+ {%
+ \begin{scope}
+ \clip ({\absnoeudA},{\pflymin}) rectangle ({\absnoeudB},{\pflymax}) ;
+ \clip ({\absnoeudA},{\pflymin}) -- \pfldomtikznamespline -- ({\absnoeudB},{\pflymin}) -- cycle ;
+ \clip ({\absnoeudA},{\pflymax}) -- \pfldomtikznamesplineb -- ({\absnoeudB},{\pflymax}) -- cycle ;
+ \filldraw[integraletikzstyle,integralebordtikzstyle,#2] ({\absnoeudA},{\pflymin}) rectangle ({\absnoeudB},{\pflymax}) ;
+ \end{scope}
+ \path[draw=none,tkzgrphcurve,name path=tmpintbornea] ({\absnoeudA},{\pflymin})--({\absnoeudA},{\pflymax}) ;
+ \path[name intersections={of=#3 and tmpintbornea,name=YYYA}] ;
+ \path[name intersections={of=#4 and tmpintbornea,name=ZZZA}] ;
+ \path[draw=none,tkzgrphcurve,name path=tmpintborneb] ({\absnoeudB},{\pflymin})--({\absnoeudB},{\pflymax}) ;
+ \path[name intersections={of=#3 and tmpintborneb,name=YYYB}] ;
+ \path[name intersections={of=#4 and tmpintborneb,name=ZZZB}] ;
+ \draw[\pfldomtikzcolorbord,tkzgrphline] (YYYA-1)-- (ZZZA-1) ;
+ \draw[\pfldomtikzcolorbord,tkzgrphline] (YYYB-1)-- (ZZZB-1) ;
+ }%
+ {}%
+ \IfStrEq{\pfldomtikztype}{itp/itp}%avec #3=cbe interpo + #4=cbe interpoB
+ {%
+ \begin{scope}
+ \clip ({\absnoeudA},{\pflymin}) rectangle ({\absnoeudB},{\pflymax}) ;
+ \clip ({\absnoeudA},{\pflymin}) -- plot [smooth,tension={\useKV[GraphicTikzIntegr]{Tension}}] coordinates {#3} -- ({\absnoeudB},{\pflymin}) ;
+ \clip ({\absnoeudA},{\pflymax}) -- plot [smooth,tension={\useKV[GraphicTikzIntegr]{TensionB}}] coordinates {#4} -- ({\absnoeudB},{\pflymax}) ;
+ \filldraw[integraletikzstyle,integralebordtikzstyle,#2] ({\absnoeudA},{\pflymin}) rectangle ({\absnoeudB},{\pflymax}) ;
+ \end{scope}
+ \path[draw=none,tkzgrphcurve,name path=tmpintbornea] ({\absnoeudA},{\pflymin})--({\absnoeudA},{\pflymax}) ;
+ \path[name intersections={of=tmpintbornea and \pfldomtikznameinterpo,name=YYYA}] ;
+ \path[name intersections={of=tmpintbornea and \pfldomtikznameinterpob,name=ZZZA}] ;
+ \path[draw=none,tkzgrphcurve,name path=tmpintborneb] ({\absnoeudB},{\pflymin})--({\absnoeudB},{\pflymax}) ;
+ \path[name intersections={of=tmpintborneb and \pfldomtikznameinterpo,name=YYYB}] ;
+ \path[name intersections={of=tmpintborneb and \pfldomtikznameinterpob,name=ZZZB}] ;
+ \draw[\pfldomtikzcolorbord,tkzgrphline] (YYYA-1)-- (ZZZA-1) ;
+ \draw[\pfldomtikzcolorbord,tkzgrphline] (YYYB-1)-- (ZZZB-1) ;
+ }%
+ {}%
+ \IfStrEq{\pfldomtikztype}{fct/spl}%avec #3=formule + #4=spline
+ {%
+ \begin{scope}
+ \clip ({\absnoeudA},{\pflymin}) rectangle ({\absnoeudB},{\pflymax}) ;
+ \clip ({\absnoeudA},{\pflymin}) -- plot[smooth] coordinates {\xintthecoords\xintfloatexpr seq((x,#3),x=\absnoeudA..[\pflstepcurve]..\absnoeudB,\absnoeudB)\relax} -- ({\absnoeudB},{\pflymin}) -- cycle ;
+ \clip ({\absnoeudA},{\pflymax}) -- \pfldomtikznamesplineb -- ({\absnoeudB},{\pflymax}) -- cycle ;
+ \filldraw[integraletikzstyle,integralebordtikzstyle,#2] ({\absnoeudA},{\pflymin}) rectangle ({\absnoeudB},{\pflymax}) ;
+ \end{scope}
+ \path[draw=none,tkzgrphcurve,name path=tmpintbornea] ({\absnoeudA},{\pflymin})--({\absnoeudA},{\pflymax}) ;
+ \path[name intersections={of=tmpintbornea and #4,name=ZZZA}] ;
+ \path[draw=none,tkzgrphcurve,name path=tmpintborneb] ({\absnoeudB},{\pflymin})--({\absnoeudB},{\pflymax}) ;
+ \path[name intersections={of=tmpintborneb and #4,name=ZZZB}] ;
+ \draw[\pfldomtikzcolorbord,tkzgrphline] ({\absnoeudA},{\xintfloateval{subs(#3,x=\absnoeudA)}})-- (ZZZA-1) ;
+ \draw[\pfldomtikzcolorbord,tkzgrphline] ({\absnoeudB},{\xintfloateval{subs(#3,x=\absnoeudB)}})-- (ZZZB-1) ;
+ }%
+ {}%
+ \IfStrEq{\pfldomtikztype}{spl/fct}%avec #3=spline + #4=fct
+ {%
+ \begin{scope}
+ \clip ({\absnoeudA},{\pflymin}) rectangle ({\absnoeudB},{\pflymax}) ;
+ \clip ({\absnoeudA},{\pflymax}) -- plot[smooth] coordinates {\xintthecoords\xintfloatexpr seq((x,#4),x=\absnoeudA..[\pflstepcurve]..\absnoeudB,\absnoeudB)\relax} -- ({\absnoeudB},{\pflymax}) -- cycle ;
+ \clip ({\absnoeudA},{\pflymin}) -- \pfldomtikznamespline -- ({\absnoeudB},{\pflymin}) -- cycle ;
+ \filldraw[integraletikzstyle,integralebordtikzstyle,#2] ({\absnoeudA},{\pflymin}) rectangle ({\absnoeudB},{\pflymax}) ;
+ \end{scope}
+ \path[draw=none,tkzgrphcurve,name path=tmpintbornea] ({\absnoeudA},{\pflymin})--({\absnoeudA},{\pflymax}) ;
+ \path[name intersections={of=tmpintbornea and #3,name=ZZZA}] ;
+ \path[draw=none,tkzgrphcurve,name path=tmpintborneb] ({\absnoeudB},{\pflymin})--({\absnoeudB},{\pflymax}) ;
+ \path[name intersections={of=tmpintborneb and #3,name=ZZZB}] ;
+ \draw[\pfldomtikzcolorbord,tkzgrphline] ({\absnoeudA},{\xintfloateval{subs(#4,x=\absnoeudA)}})-- (ZZZA-1) ;
+ \draw[\pfldomtikzcolorbord,tkzgrphline] ({\absnoeudB},{\xintfloateval{subs(#4,x=\absnoeudB)}})-- (ZZZB-1) ;
+ }%
+ {}%
+ \IfStrEq{\pfldomtikztype}{fct/itp}%avec #3=formule + #4=liste interpo
+ {%
+ \begin{scope}
+ \clip ({\absnoeudA},{\pflymin}) rectangle ({\absnoeudB},{\pflymax}) ;
+ \clip ({\absnoeudA},{\pflymin}) -- plot[smooth] coordinates {\xintthecoords\xintfloatexpr seq((x,#3),x=\absnoeudA..[\pflstepcurve]..\absnoeudB,\absnoeudB)\relax} -- ({\absnoeudB},{\pflymin}) -- cycle ;
+ \clip ({\absnoeudA},{\pflymax}) -- plot [smooth,tension={\useKV[GraphicTikzIntegr]{TensionB}}] coordinates {#4} -- ({\absnoeudB},{\pflymax}) ;
+ \filldraw[integraletikzstyle,integralebordtikzstyle,#2] ({\absnoeudA},{\pflymin}) rectangle ({\absnoeudB},{\pflymax}) ;
+ \end{scope}
+ \path[draw=none,tkzgrphcurve,name path=tmpintbornea] ({\absnoeudA},{\pflymin})--({\absnoeudA},{\pflymax}) ;
+ \path[draw=none,tkzgrphcurve,name path=tmpintborneb] ({\absnoeudB},{\pflymin})--({\absnoeudB},{\pflymax}) ;
+ \path[name intersections={of=tmpintbornea and \pfldomtikznameinterpob,name=ZZZAA}] ;
+ \path[name intersections={of=tmpintborneb and \pfldomtikznameinterpob,name=ZZZAB}] ;
+ \draw[\pfldomtikzcolorbord,tkzgrphline] ({\absnoeudA},{\xintfloateval{subs(#3,x=\absnoeudA)}})-- (ZZZAA-1) ;
+ \draw[\pfldomtikzcolorbord,tkzgrphline] ({\absnoeudB},{\xintfloateval{subs(#3,x=\absnoeudB)}})-- (ZZZAB-1) ;
+ }%
+ {}%
+ \IfStrEq{\pfldomtikztype}{itp/fct}%
+ {%
+ \begin{scope}
+ \clip ({\absnoeudA},{\pflymin}) rectangle ({\absnoeudB},{\pflymax}) ;
+ \clip ({\absnoeudA},{\pflymax}) -- plot[smooth] coordinates {\xintthecoords\xintfloatexpr seq((x,#4),x=\absnoeudA..[\pflstepcurve]..\absnoeudB,\absnoeudB)\relax} -- ({\absnoeudB},{\pflymax}) -- cycle ;
+ \clip ({\absnoeudA},{\pflymin}) -- plot [smooth,tension={\useKV[GraphicTikzIntegr]{Tension}}] coordinates {#3} -- ({\absnoeudB},{\pflymin}) ;
+ \filldraw[integraletikzstyle,integralebordtikzstyle,#2] ({\absnoeudA},{\pflymin}) rectangle ({\absnoeudB},{\pflymax}) ;
+ \end{scope}
+ \path[draw=none,tkzgrphcurve,name path=tmpintbornea] ({\absnoeudA},{\pflymin})--({\absnoeudA},{\pflymax}) ;
+ \path[draw=none,tkzgrphcurve,name path=tmpintborneb] ({\absnoeudB},{\pflymin})--({\absnoeudB},{\pflymax}) ;
+ \path[name intersections={of=tmpintbornea and \pfldomtikznameinterpo,name=ZZZAA}] ;
+ \path[name intersections={of=tmpintborneb and \pfldomtikznameinterpo,name=ZZZAB}] ;
+ \draw[\pfldomtikzcolorbord,tkzgrphline] ({\absnoeudA},{\xintfloateval{subs(#4,x=\absnoeudA)}})-- (ZZZAA-1) ;
+ \draw[\pfldomtikzcolorbord,tkzgrphline] ({\absnoeudB},{\xintfloateval{subs(#4,x=\absnoeudB)}})-- (ZZZAB-1) ;
+ }%
+ {}%
+ \IfStrEq{\pfldomtikztype}{itp/spl}%
+ {%
+ \begin{scope}
+ \clip ({\absnoeudA},{\pflymin}) rectangle ({\absnoeudB},{\pflymax}) ;
+ \clip ({\absnoeudA},{\pflymin}) -- plot [smooth,tension={\useKV[GraphicTikzIntegr]{Tension}}] coordinates {#3} -- ({\absnoeudB},{\pflymin}) ;
+ \clip ({\absnoeudA},{\pflymax}) -- \pfldomtikznamesplineb -- ({\absnoeudB},{\pflymax}) -- cycle ;
+ \filldraw[integraletikzstyle,integralebordtikzstyle,#2] ({\absnoeudA},{\pflymin}) rectangle ({\absnoeudB},{\pflymax}) ;
+ \end{scope}
+ \path[draw=none,tkzgrphcurve,name path=tmpintbornea] ({\absnoeudA},{\pflymin})--({\absnoeudA},{\pflymax}) ;%borne inf
+ \path[draw=none,tkzgrphcurve,name path=tmpintborneb] ({\absnoeudB},{\pflymin})--({\absnoeudB},{\pflymax}) ;%borne sup
+ \path[name intersections={of=tmpintbornea and \pfldomtikznameinterpo,name=YYYKAA}] ;
+ \path[name intersections={of=tmpintborneb and \pfldomtikznameinterpo,name=YYYKBB}] ;
+ \path[name intersections={of=tmpintbornea and #4,name=ZZZKAA}] ;
+ \path[name intersections={of=tmpintborneb and #4,name=ZZZKBB}] ;
+ \draw[\pfldomtikzcolorbord,tkzgrphline] (YYYKAA-1)-- (ZZZKAA-1) ;
+ \draw[\pfldomtikzcolorbord,tkzgrphline] (YYYKBB-1)-- (ZZZKBB-1) ;
+ }%
+ {}%
+ \IfStrEq{\pfldomtikztype}{spl/itp}%
+ {%
+ \begin{scope}
+ \clip ({\absnoeudA},{\pflymin}) rectangle ({\absnoeudB},{\pflymax}) ;
+ \clip ({\absnoeudA},{\pflymax}) -- plot [smooth,tension={\useKV[GraphicTikzIntegr]{TensionB}}] coordinates {#4} -- ({\absnoeudB},{\pflymax}) ;
+ \clip ({\absnoeudA},{\pflymin}) -- \pfldomtikznamespline -- ({\absnoeudB},{\pflymin}) -- cycle ;
+ \filldraw[integraletikzstyle,integralebordtikzstyle,#2] ({\absnoeudA},{\pflymin}) rectangle ({\absnoeudB},{\pflymax}) ;
+ \end{scope}
+ \path[draw=none,tkzgrphcurve,name path=tmpintbornea] ({\absnoeudA},{\pflymin})--({\absnoeudA},{\pflymax}) ;%borne inf
+ \path[draw=none,tkzgrphcurve,name path=tmpintborneb] ({\absnoeudB},{\pflymin})--({\absnoeudB},{\pflymax}) ;%borne sup
+ \path[name intersections={of=tmpintbornea and \pfldomtikznameinterpob,name=YYYKAA}] ;
+ \path[name intersections={of=tmpintborneb and \pfldomtikznameinterpob,name=YYYKBB}] ;
+ \path[name intersections={of=tmpintbornea and #3,name=ZZZKAA}] ;
+ \path[name intersections={of=tmpintborneb and #3,name=ZZZKBB}] ;
+ \draw[\pfldomtikzcolorbord,tkzgrphline] (YYYKAA-1)-- (ZZZKAA-1) ;
+ \draw[\pfldomtikzcolorbord,tkzgrphline] (YYYKBB-1)-- (ZZZKBB-1) ;
+ }%
+ {}%
+}
+
+\NewDocumentCommand\DrawPts{ s O{black} D<>{\normalfont\normalsize} m }{%
+ \IfBooleanTF{#1}%
+ {%
+ \foreach \Point in {#4}{%
+ \filldraw[#2] \Point circle[tkzgrphpointc] ;
+ }
+ }%
+ {%
+ \foreach \Point/\Pos/\Label in {#4}{%
+ \filldraw[#2] \Point circle[tkzgrphpointc] node[tkzgrphnode,\Pos,font=#3] {\Label} ;
+ }
+ }%
+}
+
+% %====STATS À 2 VARIABLES
+\defKV[GraphicTikzRegLin]{%
+ Rounds=\def\pflarrondisreglin{#1},
+ Name=\def\pflnamereglin{#1},
+ NameParab=\def\pflnameregquad{#1},
+ Start=\def\pflreglinmin{#1},
+ End=\def\pflreglinmax{#1}
+}
+\setKVdefault[GraphicTikzRegLin]{
+ ColorScatter=black,
+ ColorLine=black,
+ ColorParab=black,
+ Rounds={},
+ Start={\pflxmin},
+ End={\pflxmax},
+ Name=reglin,%
+ NameParab=quadreg,%
+ DrawLine=false,%
+ DrawParab=false,%
+ Style=o
+}
+
+\NewDocumentCommand\DrawScatter{ O{} D<>{d} m m }{%
+ \useKVdefault[GraphicTikzRegLin]%
+ \setKV[GraphicTikzRegLin]{#1}% on paramètres les nouvelles clés et on les simplifie
+ %listes des données
+ \def\xliste{#3}
+ \def\yliste{#4}
+ \readlist*\LX{\xliste}
+ \readlist*\LY{\yliste}
+ %taille des listes
+ \def\LNB{\inteval{\LXlen}}
+ %nuage
+ \foreach \i in {1,...,\LXlen}{%
+ \itemtomacro\LX[\i]\tmpmavalx%
+ \itemtomacro\LY[\i]\tmpmavaly%
+ \MarkPts*[Style={\useKV[GraphicTikzRegLin]{Style}},Color={\useKV[GraphicTikzRegLin]{ColorScatter}}]{(\tmpmavalx,\tmpmavaly)}%
+ }
+ %droite de régression
+ \ifboolKV[GraphicTikzRegLin]{DrawLine}%
+ {%
+ %somme des LX et des LY OK
+ \xdef\LXSomme{0}
+ \xdef\LYSomme{0}
+ \foreach \i in {1,2,...,\LNB}{
+ \xdef\LXSomme{\xintfloateval{\LXSomme+\LX[\i]}}
+ }
+ \foreach \i in {1,2,...,\LNB}{
+ \xdef\LYSomme{\xintfloateval{\LYSomme+\LY[\i]}}
+ }
+ %moyenne des LX et des LY OK
+ \xdef\LXmoy{\xintfloateval{\LXSomme/\LNB}}
+ \xdef\LYmoy{\xintfloateval{\LYSomme/\LNB}}
+ %variance des LX et des LY OK
+ \xdef\LXvar{0}
+ \foreach \i in {1,2,...,\LNB}{
+ \xdef\LXvar{\xintfloateval{\LXvar+(\LX[\i]-\LXmoy)*(\LX[\i]-\LXmoy)}}
+ }
+ \xdef\LXvar{\xintfloateval{\LXvar/\LNB}}
+ \xdef\LYvar{0}
+ \foreach \i in {1,2,...,\LNB}{
+ \xdef\LYvar{\xintfloateval{\LYvar+(\LY[\i]-\LYmoy)*(\LY[\i]-\LYmoy)}}
+ }
+ \xdef\LYvar{\xintfloateval{\LYvar/\LNB}}
+ %covariance des XY OK
+ \xdef\LXYvar{0}
+ \foreach \i in {1,2,...,\LNB}{
+ \xdef\LXYvar{\xintfloateval{\LXYvar+(\LX[\i]-\LXmoy)*(\LY[\i]-\LYmoy)}}
+ }
+ \xdef\LXYvar{\xintfloateval{\LXYvar/\LNB}}
+ %COEFFS OK
+ \IfStrEq{\pflarrondisreglin}{}%
+ {%
+ \xdef\tmpcoeffreglina{\xintfloateval{\LXYvar/\LXvar}}
+ \xdef\tmpcoeffreglinb{\xintfloateval{\LYmoy-\tmpcoeffreglina*\LXmoy}}
+ }%
+ {%
+ \IfSubStr{\pflarrondisreglin}{/}%
+ {%
+ \StrCut{\pflarrondisreglin}{/}{\pflarrondisreglina}{\pflarrondisreglinb}
+ }%
+ {%
+ \xdef\pflarrondisreglina{\pflarrondisreglin}\xdef\pflarrondisreglinb{\pflarrondisreglin}
+ }%
+ \xdef\tmpcoeffreglina{\xintfloateval{round(\LXYvar/\LXvar,\pflarrondisreglina)}}
+ \xdef\tmpcoeffreglinb{\xintfloateval{round(\LYmoy-\tmpcoeffreglina*\LXmoy,\pflarrondisreglinb)}}
+ }%
+ \xintdeffloatfunc #2(x) := (\tmpcoeffreglina)*x+(\tmpcoeffreglinb) ;
+ %tracé
+ \begin{scope}
+ \clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax});
+ \draw[tkzgrphcurve,{\useKV[GraphicTikzRegLin]{ColorLine}},name path global=\pflnamereglin,samples=2,domain=\pflreglinmin:\pflreglinmax] plot (\x,{\tmpcoeffreglina*\x+\tmpcoeffreglinb}) ;
+ \end{scope}
+ }%
+ {}%
+ \ifboolKV[GraphicTikzRegLin]{DrawParab}%
+ {%
+ %somme importantes
+ \xdef\LXSomme{0}%
+ \xdef\LXCSomme{0}%
+ \xdef\LYSomme{0}%
+ \xdef\LXXSomme{0}%
+ \xdef\LXYSomme{0}%
+ \xdef\LXXCSomme{0}%
+ \xdef\LXCXCSomme{0}%
+ \xdef\LXCYSomme{0}%
+ %calculs
+ \foreach \i in {1,2,...,\LNB}{%
+ \xdef\LXSomme{\xintfloateval{\LXSomme+\LX[\i]}}%
+ \xdef\LXCSomme{\xintfloateval{\LXCSomme+(\LX[\i])^2}}%
+ }%
+ \foreach \i in {1,2,...,\LNB}{%
+ \xdef\LYSomme{\xintfloateval{\LYSomme+\LY[\i]}}%
+ }%
+ \xdef\LXmoy{\xintfloateval{\LXSomme/\LNB}}%
+ \xdef\LYmoy{\xintfloateval{\LYSomme/\LNB}}%
+ \xdef\LXCmoy{\xintfloateval{\LXCSomme/\LNB}}%
+ %calculs suites
+ \foreach \i in {1,2,...,\LNB}{%
+ \xdef\LXXSomme{\xintfloateval{\LXXSomme+(\LX[\i]-\LXmoy)^2}}%
+ \xdef\LXYSomme{\xintfloateval{\LXYSomme+(\LX[\i]-\LXmoy)*(\LY[\i]-\LYmoy)}}%
+ \xdef\LXXCSomme{\xintfloateval{\LXXCSomme+(\LX[\i]-\LXmoy)*((\LX[\i])*(\LX[\i])-\LXCmoy)}}%
+ \xdef\LXCXCSomme{\xintfloateval{\LXCXCSomme+((\LX[\i])^2-\LXCmoy)^2}}%
+ \xdef\LXCYSomme{\xintfloateval{\LXCYSomme+((\LX[\i])^2-\LXCmoy)*(\LY[\i]-\LYmoy)}}%
+ }%
+ %COEFFS OK
+ \IfStrEq{\pflarrondisreglin}{}%
+ {%
+ \xdef\tmpcoeffregquadb{\xintfloateval{(\LXYSomme*\LXCXCSomme-\LXCYSomme*\LXXCSomme)/(\LXXSomme*\LXCXCSomme-(\LXXCSomme)^2)}}
+ \xdef\tmpcoeffregquada{\xintfloateval{(\LXCYSomme*\LXXSomme-\LXYSomme*\LXXCSomme)/(\LXXSomme*\LXCXCSomme-(\LXXCSomme)^2)}}
+ \xdef\tmpcoeffregquadc{\xintfloateval{\LYmoy-\tmpcoeffregquadb*\LXmoy-\tmpcoeffregquada*\LXCmoy}}
+ }%
+ {%
+ \xdef\tmpcoeffregquadb{\xintfloateval{round((\LXYSomme*\LXCXCSomme-\LXCYSomme*\LXXCSomme)/(\LXXSomme*\LXCXCSomme-(\LXXCSomme)^2),\pflarrondisreglin)}}
+ \xdef\tmpcoeffregquada{\xintfloateval{round((\LXCYSomme*\LXXSomme-\LXYSomme*\LXXCSomme)/(\LXXSomme*\LXCXCSomme-(\LXXCSomme)^2),\pflarrondisreglin)}}
+ \xdef\tmpcoeffregquadc{\xintfloateval{round(\LYmoy-\tmpcoeffregquadb*\LXmoy-\tmpcoeffregquada*\LXCmoy,\pflarrondisreglin)}}
+ }%
+ \xintdeffloatfunc #2(x) := (\tmpcoeffregquada)*x^2+(\tmpcoeffregquadb)*x+\tmpcoeffregquadc ;
+ %tracé
+ \begin{scope}
+ \clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax});
+ \draw[tkzgrphcurve,{\useKV[GraphicTikzRegLin]{ColorParab}},name path global=\pflnameregquad,samples=250,domain=\pflreglinmin:\pflreglinmax] plot (\x,{\tmpcoeffregquada*(\x)^2+\tmpcoeffregquadb*\x+\tmpcoeffregquadc}) ;
+ \end{scope}
+ }%
+ {}%
+}
+
+\if@loadxintreg
+%régressions alternatives
+\NewDocumentCommand\DrawRegression{ O{} D<>{curvajust} m D<>{} m m }{%
+ %1=options de tracés
+ %2=nom courbe
+ %3=type
+ %4=arrondis
+ %5=liste X
+ %6=liste Y
+ \IfStrEq{#3}{lin}%
+ {%
+ \xintlinreg[round={#4}]{#5}{#6}%
+ \DefineFunction[#1,Trace]<#2>{\linrega*x+\linregb}%
+ }%
+ {}%
+ \IfStrEq{#3}{quad}%
+ {%
+ \xintquadreg[round={#4}]{#5}{#6}%
+ \DefineFunction[#1,Trace]<#2>{\quadrega*x^2+\quadregb*x+\quadregc}%
+ }%
+ {}%
+ \IfStrEq{#3}{pow}%
+ {%
+ \xintpowreg[round={#4}]{#5}{#6}%
+ \DefineFunction[#1,Trace]<#2>{\powrega*x^(\powregb)}%
+ }%
+ {}%
+ \IfStrEq{#3}{expab}%
+ {%
+ \xintexpabreg[round={#4}]{#5}{#6}%
+ \DefineFunction[#1,Trace]<#2>{\expabrega*(\expabregb)^x}%
+ }%
+ {}%
+ \IfStrEq{#3}{hyp}%
+ {%
+ \xinthypreg[round={#4}]{#5}{#6}%
+ \DefineFunction[#1,Trace]<#2>{\hyprega+(\hypregb)/x}%
+ }%
+ {}%
+ \IfStrEq{#3}{log}%
+ {%
+ \xintlogreg[round={#4}]{#5}{#6}%
+ \DefineFunction[#1,Trace]<#2>{\logrega+(\logregb)*log(x)}%
+ }%
+ {}%
+ \IfStrEq{#3}{exp}%
+ {%
+ \xintexpreg[round={#4}]{#5}{#6}%
+ \DefineFunction[#1,Trace]<#2>{exp(\exprega*x+\expregb)}%
+ }%
+ {}%
+ \IfStrEq{#3}{expalt}%
+ {%
+ \xintexpreg[Alt,round={#4}]{#5}{#6}%
+ \DefineFunction[#1,Trace]<#2>{\expregb*exp(\exprega*x)}%
+ }%
+ {}%
+ \IfStrEq{#3}{cub}%
+ {%
+ \xintcubreg[round={#4}]{#5}{#6}%
+ \DefineFunction[#1,Trace]<#2>{\cubrega*x^3+\cubregb*x^2+\cubregc*x+\cubregd}%
+ }%
+ {}%
+ \IfSubStr{#3}{expoff}%
+ {%
+ \StrBehind{#3}{=}[\expoffset]%
+ \xintexpoffreg[round={#4},offset=\expoffset]{#5}{#6}%
+ \DefineFunction[#1,Trace]<#2>{\expoffset+\expregoffb*exp(\expregoffa*x)}%
+ }%
+ {}%
+}
+\fi
+
+%===IMAGES & ANTÉCÉDENTS
+\defKV[GraphicTikzImg]{
+ Colors=\def\pflimgcolors{#1},%
+ Name=\def\pflantecednoms{#1}%
+}
+
+\setKVdefault[GraphicTikzImg]{
+ Colors=black,%
+ Lines=false,%
+ Spline=false,%
+ Name={},%
+ Style=o
+}
+
+\NewDocumentCommand\DefineRange{ O{} m m }{%
+ \useKVdefault[GraphicTikzImg]%
+ \setKV[GraphicTikzImg]{#1}%
+ \ifboolKV[GraphicTikzImg]{Spline}%
+ {%
+ \path[draw=none,tkzgrphcurve,name path=tmpimage] ({#3},{\pflymin})--({#3},{\pflymax}) ;
+ \path[name intersections={of=#2 and tmpimage,name=ZZZZ}] ;
+ \coordinate (\pflantecednoms) at (ZZZZ-1) ;
+ }%
+ {%
+ \xdef\tmpresimg{\xintfloateval{#2(#3)}}%
+ \coordinate (\pflantecednoms) at ({#3},{\tmpresimg}) ;
+ }%
+}
+
+\NewDocumentCommand\DrawRanges{ O{} m m }{%
+ \useKVdefault[GraphicTikzImg]%
+ \setKV[GraphicTikzImg]{#1}%
+ \IfSubStr{\pflimgcolors}{/}%
+ {%
+ \StrCut{\pflimgcolors}{/}{\pflimgcolorpt}{\pflimgcolorline}
+ }%
+ {%
+ \xdef\pflimgcolorpt{\pflimgcolors}\xdef\pflimgcolorline{\pflimgcolors}
+ }%
+ \ifboolKV[GraphicTikzImg]{Spline}%
+ {%
+ \foreach \i in {#3}{%
+ \path[draw=none,tkzgrphcurve,name path=tmpimage] ({\i},{\pflymin})--({\i},{\pflymax}) ;
+ \path[name intersections={of=#2 and tmpimage,name=ZZ}] ;
+ \ifboolKV[GraphicTikzImg]{Lines}%
+ {%
+ \draw[\pflimgcolorline,tkzgrphrange] let \p1 = (ZZ-1) in ({\x1},{\pflOy}) |- ({\pflOx},{\y1}) ;
+ }%
+ {}%
+ \MarkPts*[Style={\useKV[GraphicTikzImg]{Style}},Color=\pflimgcolorpt]{(ZZ-1)}
+ %\filldraw[\pflimgcolorpt] (ZZ-1) circle[radius=2pt] ;
+ }
+ }%
+ {%
+ \foreach \i in {#3}{%
+ \xdef\tmpresimg{\xintfloateval{#2(\i)}}%
+ \ifboolKV[GraphicTikzImg]{Lines}%
+ {%
+ \draw[\pflimgcolorline,tkzgrphrange] ({\i},{\pflOy}) |- ({\pflOx},{\tmpresimg}) ;
+ }%
+ {}%
+ \MarkPts*[Style={\useKV[GraphicTikzImg]{Style}},Color=\pflimgcolorpt]{({\i},{\tmpresimg})}
+ %\filldraw[\pflimgcolorpt] ({\i},{\tmpresimg}) circle[radius=2pt] ;
+ }%
+ }%
+}
+
+\NewDocumentCommand\DrawCounterimage{ O{} m m }{%avec le nom de la courbe...
+ \useKVdefault[GraphicTikzImg]%
+ \setKV[GraphicTikzImg]{#1}%
+ \xdef\pflstepcurve{\xintfloateval{0.1*\pflgrillexs}}
+ \IfSubStr{\pflimgcolors}{/}%
+ {%
+ \StrCut{\pflimgcolors}{/}{\pflimgcolorpt}{\pflimgcolorline}%
+ }%
+ {%
+ \xdef\pflimgcolorpt{\pflimgcolors}\xdef\pflimgcolorline{\pflimgcolors}%
+ }%
+ \begin{scope}
+ \clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax});
+ \path[draw=none,tkzgrphcurve,name path=tmpanteced] ({\pflxmin},{#3})--({\pflxmax},{#3}) ;
+ \path[name intersections={of=#2 and tmpanteced,name=ZZ,total=\t}] \pgfextra{\xdef\tmptotanteced{\t}};
+ \xintifboolexpr{\tmptotanteced == 0}{}%
+ {%
+ \ifboolKV[GraphicTikzImg]{Lines}%
+ {%
+ \draw[\pflimgcolorline,tkzgrphcounterimage] ({\pflxmin},{#3})--({\pflxmax},{#3}) ;
+ }%
+ {}%
+ \foreach \i in {1,...,\tmptotanteced}{%
+ \IfStrEq{\pflantecednoms}{}%
+ {}%
+ {%
+ \coordinate (\pflantecednoms-\i) at (ZZ-\i) ;
+ }%
+ \ifboolKV[GraphicTikzImg]{Lines}%
+ {%
+ \draw[\pflimgcolorline,tkzgrphrange] let \p1 = (ZZ-\i) in (ZZ-\i) -- ({\x1},{\pflOy}) ;
+ }%
+ {}%
+ \MarkPts*[Style={\useKV[GraphicTikzImg]{Style}},Color=\pflimgcolorpt]{(ZZ-\i)}
+ %\filldraw[\pflimgcolorpt] (ZZ-\i) circle[radius=2pt] ;
+ }%
+ }%
+ \end{scope}
+}
+
+%===NOMBRE DÉRIVÉ ET TANGENTE (EXPÉRIEMENTAL)
+\NewDocumentCommand\CalcDerivate{ s m m m }{%*=gauche+nomfct+abspt+h
+ \IfBooleanTF{#1}%
+ {%
+ \xdef\TmpResNbDeriv{\xintfloateval{(#2(#3)-#2(#3-#4))/(#4)}}%
+ }%
+ {%
+ \xdef\TmpResNbDeriv{\xintfloateval{(#2(#3+#4)-#2(#3))/(#4)}}%
+ }%
+}
+
+\defKV[GraphicTikzTgte]{%
+ Colors=\def\pfltgttikzcolors{#1},%
+ OffsetL=\def\pfltgttikzkl{#1},%
+ OffsetR=\def\pfltgttikzkr{#1},%
+ h=\def\pfltgttikzh{#1},%
+ Direction=\def\pfltgttikzsens{#1},%
+ Delta=\def\tmptgtedelta{#1}
+}
+\setKVdefault[GraphicTikzTgte]{%
+ Colors=black,%
+ OffsetL=1,%
+ OffsetR=1,%
+ DispPt=false,%
+ Spline=false,%
+ h=0.1,%
+ Direction=lr,%
+ Node=false,%
+ Delta=0.01,%
+ Style=o
+}
+
+\NewDocumentCommand\DrawTangent{ O{} m m D<>{} }{%
+ \restoreKV[GraphicTikzTgte]%
+ \setKV[GraphicTikzTgte]{#1}%
+ %en fonction de la gestion de l'abscisse
+ \ifboolKV[GraphicTikzTgte]{Node}%
+ {%
+ \path #3;
+ \pgfgetlastxy{\macrox}{\macroy}%
+ \xdef\pfltgttikzx{\xintfloateval{(\ConvertPtToCm{\macrox})/(\pflxunit)}}%
+ }%
+ {%
+ \xdef\pfltgttikzx{#3}%
+ }%
+ %parties communes
+ \IfSubStr{\pfltgttikzcolors}{/}%
+ {%
+ \StrCut{\pfltgttikzcolors}{/}{\pfltgttikzline}{\pfltgttikzpoint}
+ }%
+ {%
+ \xdef\pfltgttikzline{\pfltgttikzcolors}\xdef\pfltgttikzpoint{\pfltgttikzcolors}
+ }%
+ \xdef\tmptgtdeb{\xintfloateval{\pfltgttikzx-(\pfltgttikzkl)}}%
+ \xdef\tmptgtfin{\xintfloateval{\pfltgttikzx+(\pfltgttikzkr)}}%
+ %suivant le type de courbe
+ \ifboolKV[GraphicTikzTgte]{Spline}%
+ {%
+ \path[name path=tmpimage] ({\pfltgttikzx},{\pflymin})--({\pfltgttikzx},{\pflymax}) ;
+ \path[name intersections={of=#2 and tmpimage,name=TANp}] ;
+ \IfStrEq{\pfltgttikzsens}{lr}%
+ {%
+ \path[name path=L-vline] ({\pfltgttikzx-\tmptgtedelta},{\pflymin}) -- ({\pfltgttikzx-\tmptgtedelta},{\pflymax}) ;
+ \path[name path=R-vline] ({\pfltgttikzx+\tmptgtedelta},{\pflymin}) -- ({\pfltgttikzx+\tmptgtedelta},{\pflymax}) ;
+ %\coordinate (LXcoor) at ($(TANp-1)+({-\tmptgtedelta},0)$) ;
+ %\coordinate (RXcoor) at ($(TANp-1)+({\tmptgtedelta},0)$) ;
+ }%
+ {}%
+ \IfStrEq{\pfltgttikzsens}{l}%
+ {%
+ \path[name path=L-vline] ({\pfltgttikzx-\tmptgtedelta},{\pflymin}) -- ({\pfltgttikzx-\tmptgtedelta},{\pflymax}) ;
+ \path[name path=R-vline] ({\pfltgttikzx},{\pflymin}) -- ({\pfltgttikzx},{\pflymax}) ;
+ %\coordinate (LXcoor) at ($(TANp-1)+({-\tmptgtedelta},0)$) ;
+ %\coordinate (RXcoor) at (TANp-1) ;
+ \def\tmptgtfin{\pfltgttikzx}%
+ }%
+ {}%
+ \IfStrEq{\pfltgttikzsens}{r}%
+ {%
+ \path[name path=L-vline] ({\pfltgttikzx},{\pflymin}) -- ({\pfltgttikzx},{\pflymax}) ;
+ \path[name path=R-vline] ({\pfltgttikzx+\tmptgtedelta},{\pflymin}) -- ({\pfltgttikzx+\tmptgtedelta},{\pflymax}) ;
+ \def\tmptgtdeb{\pfltgttikzx}%
+ }%
+ {}%
+ \path[name intersections={of=#2 and L-vline,name=LXcut}] ;
+ \path[name intersections={of=#2 and R-vline,name=RXcut}] ;
+ \coordinate (tzXproj) at ($(LXcut-1)!(TANp-1)!(RXcut-1)$) ; % projection
+ \coordinate (LLpoint) at ($(LXcut-1)+(TANp-1)-(tzXproj)$) ; % move
+ \coordinate (RRpoint) at ($(RXcut-1)+(TANp-1)-(tzXproj)$) ; % move
+ \path (LLpoint);
+ \pgfgetlastxy{\macrox}{\macroy}%
+ \xdef\tzTANLLX{\xintfloateval{(\ConvertPtToCm{\macrox})/(\pflxunit)}}%
+ \xdef\tzTANLLY{\xintfloateval{(\ConvertPtToCm{\macroy})/(\pflyunit)}}%
+ \path (RRpoint);
+ \pgfgetlastxy{\macrox}{\macroy}%
+ \xdef\tzTANRRX{\xintfloateval{(\ConvertPtToCm{\macrox})/(\pflxunit)}}%
+ \xdef\tzTANRRY{\xintfloateval{(\ConvertPtToCm{\macroy})/(\pflyunit)}}%
+ \def\tztangentLFn{(\tzTANRRY-\tzTANLLY)/(\tzTANRRX-\tzTANLLX)*(\x-\tzTANLLX)+\tzTANLLY}%
+ \begin{scope}
+ \clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax}) ;
+ \draw[tkzgrphline,\pfltgttikzline,domain=\tmptgtdeb:\tmptgtfin,samples=2,#4] plot (\x,{\tztangentLFn}) ;
+ \end{scope}
+ }%
+ {%
+ \IfStrEq{\pfltgttikzsens}{l}%
+ {%
+ \CalcDerivate*{#2}{\pfltgttikzx}{\pfltgttikzh}%
+ }%
+ {%
+ \CalcDerivate{#2}{\pfltgttikzx}{\pfltgttikzh}%
+ }%
+ \begin{scope}
+ \clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax}) ;
+ \draw[tkzgrphline,\pfltgttikzline,#4] plot[smooth] coordinates {%
+ \xintthecoords\xintfloatexpr
+ seq((x,\TmpResNbDeriv*(x-(\pfltgttikzx))+#2(\pfltgttikzx)),x=\tmptgtdeb,\tmptgtfin)
+ \relax
+ };
+ \end{scope}
+ }%
+ \ifboolKV[GraphicTikzTgte]{DispPt}%
+ {%
+ \ifboolKV[GraphicTikzTgte]{Spline}%
+ {%
+ \MarkPts*[Style={\useKV[GraphicTikzTgte]{Style}},Color=\pfltgttikzpoint]{(TANp-1)}
+ %\filldraw[] (TANp-1) circle[tkzgrphpointc] ;
+ }%
+ {%
+ \xdef\tmpimgtgt{\xintfloateval{#2(\pfltgttikzx)}}%
+ \MarkPts*[Style={\useKV[GraphicTikzTgte]{Style}},Color=\pfltgttikzpoint]{({\pfltgttikzx},\tmpimgtgt)}
+ %\filldraw[\pfltgttikzpoint] ({\pfltgttikzx},\tmpimgtgt) circle[tkzgrphpointc] ;
+ }%
+ }%
+ {}%
+}
+
+%====loi normale
+\defKV[GraphicTikzGaussienne]{%
+ Step=\def\pflgaussstep{#1},%
+ Name=\def\pflgaussname{#1}
+}
+
+\setKVdefault[GraphicTikzGaussienne]{%
+ Name=gaussian,%
+ Color=black,%
+ Trace=false,%
+ Step={},%
+ Start={\pflxmin},%
+ End={\pflxmax}
+}
+
+\NewDocumentCommand\DefineStandartDeviation{ O{} D<>{phi} m m }{%
+ %1=options
+ %2=mu
+ %3=sigma
+ \restoreKV[GraphicTikzGaussienne]%
+ \setKV[GraphicTikzGaussienne]{#1}%
+ \xintdeffloatfunc #2(x) := 1/((#4)*sqrt(2*pi))*exp(-0.5*((x-(#3))/(#4))^2) ;%
+ \IfStrEq{\pflgaussstep}{}%
+ {%
+ \xdef\pflgaussstep{\xintfloateval{((\useKV[GraphicTikzGaussienne]{End})-(\useKV[GraphicTikzGaussienne]{Start}))/100}}%
+ }%
+ {}%
+ \begin{scope}
+ \clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax});
+ \ifboolKV[GraphicTikzGaussienne]{Trace}%
+ {%
+ \path[draw,tkzgrphcurve,{\useKV[GraphicTikzGaussienne]{Color}},name path global=\pflgaussname] plot[smooth] coordinates {%
+ \xintthecoords\xintfloatexpr
+ seq((x,#2(x)),x={\useKV[GraphicTikzGaussienne]{Start}}..[\pflgaussstep]..{\useKV[GraphicTikzGaussienne]{End}},{\useKV[GraphicTikzGaussienne]{End}})
+ \relax
+ } ;
+ }%
+ {%
+ \path[draw=none,tkzgrphcurve,name path global=\pflgaussname] plot[smooth] coordinates {%
+ \xintthecoords\xintfloatexpr
+ seq((x,#2(x)),x={\useKV[GraphicTikzGaussienne]{Start}}..[\pflgaussstep]..{\useKV[GraphicTikzGaussienne]{End}},{\useKV[GraphicTikzGaussienne]{End}})
+ \relax
+ } ;
+ }%
+ \end{scope}
+}
+
+\NewDocumentCommand\DrawStandartDeviation{ O{} m }{%
+ %1=options
+ %2=mu
+ %3=sigma
+ \restoreKV[GraphicTikzGaussienne]%
+ \setKV[GraphicTikzGaussienne]{#1}%
+ \IfStrEq{\pflgaussstep}{}%
+ {%
+ \xdef\pflgaussstep{\xintfloateval{((\useKV[GraphicTikzGaussienne]{End})-(\useKV[GraphicTikzGaussienne]{Start}))/100}}%
+ }%
+ {}%
+ \begin{scope}
+ \clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax});
+ \draw[tkzgrphcurve,{\useKV[GraphicTikzGaussienne]{Color}}] plot[smooth] coordinates {%
+ \xintthecoords\xintfloatexpr
+ seq((x,#2),x={\useKV[GraphicTikzGaussienne]{Start}}..[\pflgaussstep]..{\useKV[GraphicTikzGaussienne]{End}},{\useKV[GraphicTikzGaussienne]{End}})
+ \relax
+ } ;
+ \end{scope}
+}
+
+\NewDocumentCommand\DefineKhiSquared{ O{} D<>{khi} m }{%
+ %1=options
+ %2=mu
+ %3=sigma
+ \restoreKV[GraphicTikzGaussienne]%
+ \setKV[GraphicTikzGaussienne]{#1}%
+ \xintdeffloatfunc #2(x) := (x<0)?{0}{(1/(2^((#3)/2)*pflgamma((#3)/2)))*x^((#3)/2-1)*exp(-x/2)};
+ \IfStrEq{\pflgaussstep}{}%
+ {%
+ \xdef\pflgaussstep{\xintfloateval{((\useKV[GraphicTikzGaussienne]{End})-(\useKV[GraphicTikzGaussienne]{Start}))/100}}%
+ }%
+ {}%
+ \begin{scope}
+ \clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax});
+ \ifboolKV[GraphicTikzGaussienne]{Trace}%
+ {%
+ \path[draw,tkzgrphcurve,{\useKV[GraphicTikzGaussienne]{Color}},name path global=\pflgaussname] plot[smooth] coordinates {%
+ \xintthecoords\xintfloatexpr
+ seq((x,#2(x)),x={\useKV[GraphicTikzGaussienne]{Start}}..[\pflgaussstep]..{\useKV[GraphicTikzGaussienne]{End}},{\useKV[GraphicTikzGaussienne]{End}})
+ \relax
+ } ;
+ }%
+ {%
+ \path[draw=none,tkzgrphcurve,name path global=\pflgaussname] plot[smooth] coordinates {%
+ \xintthecoords\xintfloatexpr
+ seq((x,#2(x)),x={\useKV[GraphicTikzGaussienne]{Start}}..[\pflgaussstep]..{\useKV[GraphicTikzGaussienne]{End}},{\useKV[GraphicTikzGaussienne]{End}})
+ \relax
+ } ;
+ }%
+ \end{scope}
+}
+
+\NewDocumentCommand\DrawKhiSquared{ O{} m }{%
+ %1=options
+ %2=mu
+ %3=sigma
+ \restoreKV[GraphicTikzGaussienne]%
+ \setKV[GraphicTikzGaussienne]{#1}%
+ \IfStrEq{\pflgaussstep}{}%
+ {%
+ \xdef\pflgaussstep{\xintfloateval{((\useKV[GraphicTikzGaussienne]{End})-(\useKV[GraphicTikzGaussienne]{Start}))/100}}%
+ }%
+ {}%
+ \begin{scope}
+ \clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax});
+ \draw[tkzgrphcurve,{\useKV[GraphicTikzGaussienne]{Color}}] plot[smooth] coordinates {%
+ \xintthecoords\xintfloatexpr
+ seq((x,#2),x={\useKV[GraphicTikzGaussienne]{Start}}..[\pflgaussstep]..{\useKV[GraphicTikzGaussienne]{End}},{\useKV[GraphicTikzGaussienne]{End}})
+ \relax
+ } ;
+ \end{scope}
+}
+
+%====droite
+\defKV[GraphiquetikzDroite]{%
+ Name=\def\pfldroitename{#1}
+}
+
+\setKVdefault[GraphiquetikzDroite]{%
+ Slope=false,%
+ Color=black,%
+ Start={\pflxmin},%
+ End={\pflxmax},%
+ Name={}
+}
+
+\NewDocumentCommand\DrawLine{ O{} m m D<>{} }{%
+ \restoreKV[GraphiquetikzDroite]%
+ \setKV[GraphiquetikzDroite]{#1}%
+ %1er point
+ \path #2;%
+ \pgfgetlastxy{\macrox}{\macroy}%
+ \xdef\pfldtetikzxA{\xintfloateval{(\ConvertPtToCm{\macrox})/(\pflxunit)}}%
+ \xdef\pfldtetikzyA{\xintfloateval{(\ConvertPtToCm{\macroy})/(\pflyunit)}}%
+ %2ème point si besoin
+ \ifboolKV[GraphiquetikzDroite]{Slope}%
+ {%
+ \xdef\pfldtepente{\xintfloateval{#3}}%
+ }%
+ {%
+ \path #3;%
+ \pgfgetlastxy{\macrox}{\macroy}%
+ \xdef\pfldtetikzxB{\xintfloateval{(\ConvertPtToCm{\macrox})/(\pflxunit)}}%
+ \xdef\pfldtetikzyB{\xintfloateval{(\ConvertPtToCm{\macroy})/(\pflyunit)}}%
+ \xdef\pfldtepente{\xintfloateval{(\pfldtetikzyB-\pfldtetikzyA)/(\pfldtetikzxB-\pfldtetikzxA)}}%
+ }%
+ \begin{scope}
+ \clip ({\pflxmin},{\pflymin}) rectangle ({\pflxmax},{\pflymax}) ;
+ \xintifboolexpr{\pfldtetikzxA == \pfldtetikzxB}%
+ {%
+ \IfEq{\pfldroitename}{}%
+ {%
+ \draw[tkzgrphline,{\useKV[GraphiquetikzDroite]{Color}},#4] (\pfldtetikzxA,\pflymin) -- (\pfldtetikzxA,\pflymax) ;
+ }%
+ {%
+ \draw[tkzgrphline,{\useKV[GraphiquetikzDroite]{Color}},#4,name path global=\pfldroitename] (\pfldtetikzxA,\pflymin) -- (\pfldtetikzxA,\pflymax) ;
+ }%
+ }%
+ {%
+ \IfEq{\pfldroitename}{}%
+ {%
+ \draw[tkzgrphline,{\useKV[GraphiquetikzDroite]{Color}},domain={\useKV[GraphiquetikzDroite]{Start}}:{\useKV[GraphiquetikzDroite]{End}},samples=2,#4] plot (\x,{\pfldtepente*(\x-\pfldtetikzxA)+\pfldtetikzyA}) ;
+ }%
+ {%
+ \draw[tkzgrphline,{\useKV[GraphiquetikzDroite]{Color}},domain={\useKV[GraphiquetikzDroite]{Start}}:{\useKV[GraphiquetikzDroite]{End}},samples=2,name path global=\pfldroitename,#4] plot (\x,{\pfldtepente*(\x-\pfldtetikzxA)+\pfldtetikzyA}) ;
+ }%
+ }%
+ \end{scope}
+}
+
+\defKV[GraphicTikzMinMax]{%
+ Pas=\def\pflminmaxstep{#1},%
+ Method=\def\pflminmaxmethode{#1},%
+ Coeffs=\def\pflminmaxcoeffs{#1}
+}
+\setKVdefault[GraphicTikzMinMax]{%
+ Start={\pflxmin},%
+ End={\pflxmax},%
+ Pas={},%
+ Tension=0.5,%
+ Method=function,%
+ Coeffs=3
+}
+
+\NewDocumentCommand\FindMax{ O{} m O{c-max} }{%
+ %1=clés
+ %2=paramètres en fonction de [Methode]
+ \restoreKV[GraphicTikzMinMax]%
+ \setKV[GraphicTikzMinMax]{#1}%
+ \IfStrEq{\pflstepcurve}{}%
+ {%
+ \xdef\pflminmaxstep{\xintfloateval{((\useKV[GraphicTikzMinMax]{End})-(\useKV[GraphicTikzMinMax]{Start}))/100}}%
+ }%
+ {}%
+ \begin{scope}[bezier bounding box,local bounding box=bbtmpmax]
+ \IfStrEq{\pflminmaxmethode}{function}%
+ {%
+ \path[draw=none,name path=curvetmpmax] plot[smooth] coordinates {%
+ \xintthecoords\xintfloatexpr
+ seq((x,#2(x)),x={\useKV[GraphicTikzMinMax]{Start}}..[\pflstepcurve]..{\useKV[GraphicTikzMinMax]{End}},{\useKV[GraphicTikzMinMax]{End}})
+ \relax
+ };
+ }%
+ {}%
+ \IfStrEq{\pflminmaxmethode}{interpo}%
+ {%
+ \path[draw=none,name path=curvetmpmax] plot[smooth,tension={\useKV[GraphicTikzMinMax]{Tension}}] coordinates {#2};
+ }%
+ {}%
+ \IfStrEq{\pflminmaxmethode}{spline}%
+ {%
+ \GenerateSpline{#2}{\pflminmaxcoeffs}[\tmpsplineminmax]%
+ \path[draw=none,name path=curvetmpmax] \tmpsplineminmax ;
+ }%
+ {}%
+ %retour
+ \path[name path=tmpmax] ([yshift=-0.25\pgflinewidth]bbtmpmax.north east) -- ([yshift=-0.25\pgflinewidth]bbtmpmax.north west) ;
+ \path[name intersections={of=curvetmpmax and tmpmax,name=#3}] ;
+ \coordinate (#3) at ($0.5*(#3-1)+0.5*(#3-2)+(0,0.25\pgflinewidth)$) ;
+ \end{scope}
+}
+
+\NewDocumentCommand\FindMin{ O{} m O{c-min} }{%
+ %1=clés
+ %2=paramètres en fonction de [Methode]
+ \restoreKV[GraphicTikzMinMax]%
+ \setKV[GraphicTikzMinMax]{#1}%
+ \IfStrEq{\pflstepcurve}{}%
+ {%
+ \xdef\pflminmaxstep{\xintfloateval{((\useKV[GraphicTikzMinMax]{End})-(\useKV[GraphicTikzMinMax]{Start}))/100}}%
+ }%
+ {}%
+ \begin{scope}[bezier bounding box,local bounding box=bbtmpmin]
+ \IfStrEq{\pflminmaxmethode}{function}%
+ {%
+ \path[draw=none,name path=curvetmpmin] plot[smooth] coordinates {%
+ \xintthecoords\xintfloatexpr
+ seq((x,#2(x)),x={\useKV[GraphicTikzMinMax]{Start}}..[\pflstepcurve]..{\useKV[GraphicTikzMinMax]{End}},{\useKV[GraphicTikzMinMax]{End}})
+ \relax
+ };
+ }%
+ {}%
+ \IfStrEq{\pflminmaxmethode}{interpo}%
+ {%
+ \path[draw=none,name path=curvetmpmin] plot[smooth,tension={\useKV[GraphicTikzMinMax]{Tension}}] coordinates {#2};
+ }%
+ {}%
+ \IfStrEq{\pflminmaxmethode}{spline}%
+ {%
+ \GenerateSpline{#2}{\pflminmaxcoeffs}[\tmpsplineminmax]%
+ \path[draw=none,name path=curvetmpmin] \tmpsplineminmax ;
+ }%
+ {}%
+ %retour
+ \path[name path=tmpmin] ([yshift=0.25\pgflinewidth]bbtmpmin.south east) -- ([yshift=0.25\pgflinewidth]bbtmpmin.south west) ;
+ \path[name intersections={of=curvetmpmin and tmpmin,name=#3}] ;
+ \coordinate (#3) at ($0.5*(#3-1)+0.5*(#3-2)+(0,-0.25\pgflinewidth)$) ;
+ \end{scope}
+}
+
+%====TEXTES
+\defKV[GraphicTikzNode]{%
+ Color=\def\pflnodecol{#1},%
+ Font=\def\pflnodefonte{#1},%
+ Position=\def\pfnodepos{#1}
+}
+\setKVdefault[GraphicTikzNode]{%
+ Color=black,%
+ Start={\normalfont\normalsize},%
+ Position={}
+}
+\NewDocumentCommand\DrawTxt{ O{} m m }{%
+ \restoreKV[GraphicTikzNode]%
+ \setKV[GraphicTikzNode]{#1}%
+ \draw #2 node[tkzgrphnode,font=\pflnodefonte,text=\pflnodecol,\pfnodepos] {#3} ;
+}
+
\endinput \ No newline at end of file