summaryrefslogtreecommitdiff
path: root/Build
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2013-05-18 21:58:51 +0000
committerKarl Berry <karl@freefriends.org>2013-05-18 21:58:51 +0000
commit1b4cb2401e932a47c4e736a0197d22c7797b58ad (patch)
tree8e478eee9868a06467931e053ec06658ae3a8e06 /Build
parent93dcab8a877f998aafe2bef5e59b7c6ea2f7f434 (diff)
asy 2.22 sources
git-svn-id: svn://tug.org/texlive/trunk@30552 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build')
-rw-r--r--Build/source/utils/README2
-rw-r--r--Build/source/utils/asymptote/ChangeLog220
-rwxr-xr-xBuild/source/utils/asymptote/GUI/xasy2asy.py4
-rwxr-xr-xBuild/source/utils/asymptote/GUI/xasyMainWin.py4
-rw-r--r--Build/source/utils/asymptote/Makefile.in2
-rw-r--r--Build/source/utils/asymptote/ReleaseNotes12
-rw-r--r--Build/source/utils/asymptote/algebra3.cc2
-rw-r--r--Build/source/utils/asymptote/arrayop.h20
-rw-r--r--Build/source/utils/asymptote/asy-keywords.el4
-rw-r--r--Build/source/utils/asymptote/asy.list377
-rw-r--r--Build/source/utils/asymptote/asymptote.spec2
-rw-r--r--Build/source/utils/asymptote/base/geometry.asy2
-rw-r--r--Build/source/utils/asymptote/base/graph.asy6
-rw-r--r--Build/source/utils/asymptote/base/math.asy20
-rw-r--r--Build/source/utils/asymptote/base/plain_picture.asy11
-rw-r--r--Build/source/utils/asymptote/base/three_light.asy2
-rw-r--r--Build/source/utils/asymptote/base/three_surface.asy9
-rw-r--r--Build/source/utils/asymptote/bbox3.h2
-rw-r--r--Build/source/utils/asymptote/camp.l2
-rw-r--r--Build/source/utils/asymptote/camp.tab.cc2350
-rw-r--r--Build/source/utils/asymptote/camp.tab.h103
-rw-r--r--Build/source/utils/asymptote/camp.y5
-rw-r--r--Build/source/utils/asymptote/config.guess574
-rw-r--r--Build/source/utils/asymptote/config.sub89
-rwxr-xr-xBuild/source/utils/asymptote/configure266
-rw-r--r--Build/source/utils/asymptote/configure.ac2
-rw-r--r--Build/source/utils/asymptote/doc/CAD.pdfbin68115 -> 68115 bytes
-rw-r--r--Build/source/utils/asymptote/doc/FAQ/Makefile6
-rw-r--r--Build/source/utils/asymptote/doc/FAQ/asy-faq.info2
-rwxr-xr-xBuild/source/utils/asymptote/doc/TeXShopAndAsymptote.pdfbin31517 -> 31847 bytes
-rwxr-xr-xBuild/source/utils/asymptote/doc/asy-latex.pdfbin194493 -> 194493 bytes
-rw-r--r--Build/source/utils/asymptote/doc/asyRefCard.pdfbin53907 -> 53907 bytes
-rw-r--r--Build/source/utils/asymptote/doc/asymptote.pdfbin1235449 -> 1234580 bytes
-rw-r--r--Build/source/utils/asymptote/doc/asymptote.texi98
-rw-r--r--Build/source/utils/asymptote/doc/png/asymptote.info648
-rw-r--r--Build/source/utils/asymptote/drawelement.h11
-rw-r--r--Build/source/utils/asymptote/drawfill.cc6
-rw-r--r--Build/source/utils/asymptote/drawfill.h17
-rw-r--r--Build/source/utils/asymptote/drawpath3.h15
-rw-r--r--Build/source/utils/asymptote/drawsurface.cc27
-rw-r--r--Build/source/utils/asymptote/drawsurface.h36
-rw-r--r--Build/source/utils/asymptote/examples/shade.asy1
-rw-r--r--Build/source/utils/asymptote/examples/tvgen.asy779
-rw-r--r--Build/source/utils/asymptote/fftw++.cc28
-rw-r--r--Build/source/utils/asymptote/fftw++.h130
-rw-r--r--Build/source/utils/asymptote/glrender.cc1
-rw-r--r--Build/source/utils/asymptote/interact.cc10
-rw-r--r--Build/source/utils/asymptote/lex.yy.cc72
-rw-r--r--Build/source/utils/asymptote/picture.cc133
-rw-r--r--Build/source/utils/asymptote/prc/oPRCFile.cc12
-rw-r--r--Build/source/utils/asymptote/prc/writePRC.cc6
-rw-r--r--Build/source/utils/asymptote/prc/writePRC.h48
-rw-r--r--Build/source/utils/asymptote/psfile.cc6
-rw-r--r--Build/source/utils/asymptote/psfile.h3
-rw-r--r--Build/source/utils/asymptote/runarray.cc687
-rw-r--r--Build/source/utils/asymptote/runarray.in237
-rw-r--r--Build/source/utils/asymptote/runpicture.cc332
-rw-r--r--Build/source/utils/asymptote/runpicture.in12
-rw-r--r--Build/source/utils/asymptote/runtime.cc2
-rw-r--r--Build/source/utils/asymptote/runtime.in2
-rw-r--r--Build/source/utils/asymptote/seconds.h15
-rw-r--r--Build/source/utils/asymptote/settings.cc4
-rw-r--r--Build/source/utils/asymptote/texfile.cc4
-rw-r--r--Build/source/utils/asymptote/texfile.h3
-rw-r--r--Build/source/utils/asymptote/triple.h55
65 files changed, 3845 insertions, 3695 deletions
diff --git a/Build/source/utils/README b/Build/source/utils/README
index 3bd872fa971..fd6d5cf2a9b 100644
--- a/Build/source/utils/README
+++ b/Build/source/utils/README
@@ -4,7 +4,7 @@ Public domain. Originally written 2005 by Karl Berry.
Extra utilities we (optionally) compile for TeX Live.
See comments in ../texk/README.
-asymptote 2.21 - checked 3apr13
+asymptote 2.22 - checked 18may13
update to TL from CTAN, to include prebuilt doc.
see http://tug.org/texlive/build.html#asymptote
and tlpkg/bin/tl-update-asy
diff --git a/Build/source/utils/asymptote/ChangeLog b/Build/source/utils/asymptote/ChangeLog
index 7fc30354b07..0b38dafbf92 100644
--- a/Build/source/utils/asymptote/ChangeLog
+++ b/Build/source/utils/asymptote/ChangeLog
@@ -1,4 +1,224 @@
------------------------------------------------------------------------
+r5562 | jcbowman | 2013-05-15 02:33:47 -0600 (Wed, 15 May 2013) | 2 lines
+Changed paths:
+ M /trunk/asymptote/doc/FAQ/Makefile
+
+Fix dependencies.
+
+------------------------------------------------------------------------
+r5561 | jcbowman | 2013-05-14 21:38:27 -0600 (Tue, 14 May 2013) | 2 lines
+Changed paths:
+ M /trunk/asymptote/fftw++.h
+
+Update FFTW header.
+
+------------------------------------------------------------------------
+r5560 | jcbowman | 2013-05-14 21:37:25 -0600 (Tue, 14 May 2013) | 2 lines
+Changed paths:
+ M /trunk/asymptote/doc/asymptote.texi
+
+Update documentation.
+
+------------------------------------------------------------------------
+r5559 | jcbowman | 2013-05-14 21:06:24 -0600 (Tue, 14 May 2013) | 3 lines
+Changed paths:
+ M /trunk/asymptote/base/plain_picture.asy
+ M /trunk/asymptote/doc/asymptote.texi
+ M /trunk/asymptote/drawfill.cc
+ M /trunk/asymptote/drawfill.h
+ M /trunk/asymptote/examples/shade.asy
+ M /trunk/asymptote/psfile.cc
+ M /trunk/asymptote/psfile.h
+ M /trunk/asymptote/runpicture.in
+ M /trunk/asymptote/texfile.cc
+ M /trunk/asymptote/texfile.h
+
+Expose Postscript extend qualifiers for axial and radial shading
+(setting extend=false can work around certain PDF reader bugs).
+
+------------------------------------------------------------------------
+r5558 | jcbowman | 2013-05-14 14:39:28 -0600 (Tue, 14 May 2013) | 4 lines
+Changed paths:
+ M /trunk/asymptote/arrayop.h
+ M /trunk/asymptote/base/three_light.asy
+ M /trunk/asymptote/base/three_surface.asy
+ M /trunk/asymptote/bbox3.h
+ M /trunk/asymptote/drawelement.h
+ M /trunk/asymptote/drawsurface.cc
+ M /trunk/asymptote/drawsurface.h
+ M /trunk/asymptote/picture.cc
+ M /trunk/asymptote/prc/oPRCFile.cc
+ M /trunk/asymptote/prc/writePRC.cc
+ M /trunk/asymptote/prc/writePRC.h
+ M /trunk/asymptote/runarray.in
+ M /trunk/asymptote/triple.h
+
+Fix transformation of normal vectors.
+
+Revert back to usual row-major matrix format.
+
+------------------------------------------------------------------------
+r5557 | jcbowman | 2013-05-13 11:04:57 -0600 (Mon, 13 May 2013) | 2 lines
+Changed paths:
+ M /trunk/asymptote/picture.cc
+
+Make use of --pipe to enter context interactive mode.
+
+------------------------------------------------------------------------
+r5556 | jcbowman | 2013-05-13 09:07:53 -0600 (Mon, 13 May 2013) | 2 lines
+Changed paths:
+ M /trunk/asymptote/GUI/xasy2asy.py
+ M /trunk/asymptote/GUI/xasyMainWin.py
+
+Support Fedora migration from python-imaging to python-pillow.
+
+------------------------------------------------------------------------
+r5555 | jcbowman | 2013-05-13 08:16:32 -0600 (Mon, 13 May 2013) | 2 lines
+Changed paths:
+ M /trunk/asymptote/doc/asymptote.texi
+
+Fix documentation of irregular contour routine.
+
+------------------------------------------------------------------------
+r5554 | jcbowman | 2013-04-08 13:57:50 -0600 (Mon, 08 Apr 2013) | 4 lines
+Changed paths:
+ M /trunk/asymptote/asymptote.spec
+ M /trunk/asymptote/doc/asymptote.texi
+ M /trunk/asymptote/drawsurface.cc
+
+Support vertex-colored triangles in Adobe XI.
+
+Remove reference to out-of-date trembling examples.
+
+------------------------------------------------------------------------
+r5553 | jcbowman | 2013-04-08 13:46:04 -0600 (Mon, 08 Apr 2013) | 2 lines
+Changed paths:
+ M /trunk/asymptote/settings.cc
+
+Use TEXMFMAN to find TeXLive sysdir.
+
+------------------------------------------------------------------------
+r5552 | jcbowman | 2013-04-04 16:16:19 -0600 (Thu, 04 Apr 2013) | 2 lines
+Changed paths:
+ M /trunk/asymptote/interact.cc
+
+Temporarily revert 5440 for TeXLive 2013 build systems without Posix 2008.
+
+------------------------------------------------------------------------
+r5551 | hammera | 2013-04-04 03:10:22 -0600 (Thu, 04 Apr 2013) | 2 lines
+Changed paths:
+ M /trunk/asymptote/doc/asymptote.texi
+
+Add clarification on 2.. versus 2 ..
+
+------------------------------------------------------------------------
+r5550 | jcbowman | 2013-04-03 11:29:11 -0600 (Wed, 03 Apr 2013) | 2 lines
+Changed paths:
+ M /trunk/asymptote/algebra3.cc
+
+Make portability tweak.
+
+------------------------------------------------------------------------
+r5549 | jcbowman | 2013-04-01 11:12:12 -0600 (Mon, 01 Apr 2013) | 2 lines
+Changed paths:
+ M /trunk/asymptote/runtime.in
+
+Qualify isnan (for solaris).
+
+------------------------------------------------------------------------
+r5548 | jcbowman | 2013-02-23 05:29:51 -0700 (Sat, 23 Feb 2013) | 2 lines
+Changed paths:
+ M /trunk/asymptote/drawpath3.h
+ M /trunk/asymptote/drawsurface.h
+
+Avoid unnecessary buffering.
+
+------------------------------------------------------------------------
+r5547 | jcbowman | 2013-02-23 05:26:04 -0700 (Sat, 23 Feb 2013) | 2 lines
+Changed paths:
+ M /trunk/asymptote/fftw++.cc
+
+Update FFTW++ file.
+
+------------------------------------------------------------------------
+r5546 | jcbowman | 2013-02-23 05:19:12 -0700 (Sat, 23 Feb 2013) | 2 lines
+Changed paths:
+ M /trunk/asymptote/base/math.asy
+
+Express segment(bool[]) in terms of more efficient segmentlimits(bool[]) function.
+
+------------------------------------------------------------------------
+r5545 | jcbowman | 2013-02-23 05:17:20 -0700 (Sat, 23 Feb 2013) | 2 lines
+Changed paths:
+ M /trunk/asymptote/fftw++.h
+ M /trunk/asymptote/seconds.h
+
+Update FFTW++ headers.
+
+------------------------------------------------------------------------
+r5544 | jcbowman | 2013-01-08 14:18:10 -0700 (Tue, 08 Jan 2013) | 3 lines
+Changed paths:
+ M /trunk/asymptote/doc/asymptote.texi
+
+Recommend freeglut 2.6.0 due to broken menu feature in the 2.8.0 release
+(and modifier bugs in various patches for this problem).
+
+------------------------------------------------------------------------
+r5543 | jcbowman | 2013-01-06 09:42:17 -0700 (Sun, 06 Jan 2013) | 4 lines
+Changed paths:
+ M /trunk/asymptote/doc/asymptote.texi
+ M /trunk/asymptote/glrender.cc
+
+Remove unused code.
+
+Update documentation.
+
+------------------------------------------------------------------------
+r5542 | jcbowman | 2013-01-05 08:09:16 -0700 (Sat, 05 Jan 2013) | 2 lines
+Changed paths:
+ M /trunk/asymptote/camp.l
+ M /trunk/asymptote/camp.y
+
+Allow self-defined unary operators.
+
+------------------------------------------------------------------------
+r5541 | jcbowman | 2012-12-31 08:27:13 -0700 (Mon, 31 Dec 2012) | 2 lines
+Changed paths:
+ M /trunk/asymptote/base/graph.asy
+
+Compare formatted strings instead of real values in OmitFormat.
+
+------------------------------------------------------------------------
+r5540 | jcbowman | 2012-10-24 12:33:07 -0600 (Wed, 24 Oct 2012) | 2 lines
+Changed paths:
+ M /trunk/asymptote/examples/tvgen.asy
+
+Update example.
+
+------------------------------------------------------------------------
+r5539 | jcbowman | 2012-10-20 16:32:57 -0600 (Sat, 20 Oct 2012) | 2 lines
+Changed paths:
+ M /trunk/asymptote/Makefile.in
+
+Use C locale for svn info.
+
+------------------------------------------------------------------------
+r5538 | jcbowman | 2012-10-17 20:11:03 -0600 (Wed, 17 Oct 2012) | 3 lines
+Changed paths:
+ M /trunk/asymptote/base/geometry.asy
+ M /trunk/asymptote/doc/asymptote.texi
+
+Temporarily revert to using tan(radians(a)) in numerically unstable arclength
+calculation in geometry module (note r5466).
+
+------------------------------------------------------------------------
+r5537 | jcbowman | 2012-10-10 12:20:47 -0600 (Wed, 10 Oct 2012) | 1 line
+Changed paths:
+ M /trunk/asymptote/asymptote.spec
+ M /trunk/asymptote/configure.ac
+
+Increment version to 2.22svn.
+------------------------------------------------------------------------
r5536 | jcbowman | 2012-10-07 06:33:22 -0600 (Sun, 07 Oct 2012) | 2 lines
Changed paths:
M /trunk/asymptote/doc/asymptote.texi
diff --git a/Build/source/utils/asymptote/GUI/xasy2asy.py b/Build/source/utils/asymptote/GUI/xasy2asy.py
index 7779e073f81..984bd1f5dd9 100755
--- a/Build/source/utils/asymptote/GUI/xasy2asy.py
+++ b/Build/source/utils/asymptote/GUI/xasy2asy.py
@@ -18,8 +18,8 @@ from tempfile import mkdtemp
# PIL support is now mandatory due to rotations
try:
- import ImageTk
- import Image
+ from PIL import ImageTk
+ from PIL import Image
except:
pass
diff --git a/Build/source/utils/asymptote/GUI/xasyMainWin.py b/Build/source/utils/asymptote/GUI/xasyMainWin.py
index 0967107ac1a..e3a0044011a 100755
--- a/Build/source/utils/asymptote/GUI/xasyMainWin.py
+++ b/Build/source/utils/asymptote/GUI/xasyMainWin.py
@@ -40,8 +40,8 @@ from xasyActions import *
import string
try:
- import ImageTk
- import Image
+ from PIL import ImageTk
+ from PIL import Image
PILAvailable = True
except:
PILAvailable = False
diff --git a/Build/source/utils/asymptote/Makefile.in b/Build/source/utils/asymptote/Makefile.in
index fc96e4ff9ed..b58cedc2121 100644
--- a/Build/source/utils/asymptote/Makefile.in
+++ b/Build/source/utils/asymptote/Makefile.in
@@ -88,7 +88,7 @@ latexdir = $(DESTDIR)@latexdir@
contextdir = $(DESTDIR)@contextdir@
INSTALL = @INSTALL@
REVISION = "const char *SVN_REVISION="
-revision = `svn info 2>/dev/null | grep 'Revision' | sed -e 's/Revision: \(.*\)/-r\1/'`
+revision = `LC_ALL="C" svn info 2>/dev/null | grep 'Revision' | sed -e 's/Revision: \(.*\)/-r\1/'`
last = `cat svnrevision.cc | sed -e 's/.*\"\(.*\)\";/\\1/'`
export prefix docdir exampledir mandir infodir INSTALL MAKE DESTDIR TEXI2DVI
diff --git a/Build/source/utils/asymptote/ReleaseNotes b/Build/source/utils/asymptote/ReleaseNotes
index 5b187a9ca43..e9df7350559 100644
--- a/Build/source/utils/asymptote/ReleaseNotes
+++ b/Build/source/utils/asymptote/ReleaseNotes
@@ -1,3 +1,15 @@
+Release Notes for Version 2.22
+
+Self-defined unary operators are now allowed. Formatted strings instead of
+real values are compared in OmitFormat. The segment(bool[]) function was
+rewritten to use the more efficient segmentlimits(bool[]) call.
+Unnecessary buffering of surface and path3 data was removed.
+Portability tweaks were made. References to out-of-date trembling
+examples were removed. Vertex-colored triangles now work again in Adobe XI.
+The transformation of normal vectors was fixed. PostScript extend
+qualifiers were added for axial and radial shading. The TEXMFMAN
+environment variable is now used to find the TeXLive sysdir.
+
Release Notes for Version 2.21
Explicitly transformed billboard labels now work correctly again.
diff --git a/Build/source/utils/asymptote/algebra3.cc b/Build/source/utils/asymptote/algebra3.cc
index 203b430c2ed..4b76942815f 100644
--- a/Build/source/utils/asymptote/algebra3.cc
+++ b/Build/source/utils/asymptote/algebra3.cc
@@ -75,7 +75,7 @@
#include "algebra3.h"
#include <cmath>
-static const double radians=acos(-1)/180.0;
+static const double radians=std::acos(-1)/180.0;
#ifdef VEC_ERROR_FATAL
#ifndef VEC_ERROR
diff --git a/Build/source/utils/asymptote/arrayop.h b/Build/source/utils/asymptote/arrayop.h
index 076f51417bb..98f10e7b248 100644
--- a/Build/source/utils/asymptote/arrayop.h
+++ b/Build/source/utils/asymptote/arrayop.h
@@ -501,7 +501,6 @@ void arrayFunc2(vm::stack *s)
vm::array *Identity(Int n);
camp::triple operator *(const vm::array& a, const camp::triple& v);
-camp::triple multshiftless(const vm::array& t, const camp::triple& v);
double norm(double *a, size_t n);
double norm(camp::triple *a, size_t n);
@@ -537,8 +536,7 @@ inline void copyArrayC(T* &dest, const vm::array *a, T (*cast)(A),
}
template<typename T>
-inline vm::array* copyCArray(const size_t n, const T* p,
- GCPlacement placement=NoGC)
+inline vm::array* copyCArray(const size_t n, const T* p)
{
vm::array* a = new vm::array(n);
for(size_t i=0; i < n; ++i) (*a)[i] = p[i];
@@ -566,10 +564,24 @@ inline void copyArray2C(T* &dest, const vm::array *a, bool square=true,
for(size_t j=0; j < m; j++)
desti[j]=vm::read<T>(ai,j);
} else
- vm::error(square ? "matrix must be square" : "matrix must be rectangular");
+ vm::error(square ? "matrix must be square" :
+ "matrix must be rectangular");
}
}
+template<typename T>
+inline vm::array* copyCArray2(const size_t n, const size_t m, const T* p)
+{
+ vm::array* a=new vm::array(n);
+ for(size_t i=0; i < n; ++i) {
+ array *ai=new array(m);
+ (*a)[i]=ai;
+ for(size_t j=0; j < m; ++j)
+ (*ai)[j]=p[m*i+j];
+ }
+ return a;
+}
+
} // namespace run
#endif // ARRAYOP_H
diff --git a/Build/source/utils/asymptote/asy-keywords.el b/Build/source/utils/asymptote/asy-keywords.el
index 4298d20ef11..505d37c2c4f 100644
--- a/Build/source/utils/asymptote/asy-keywords.el
+++ b/Build/source/utils/asymptote/asy-keywords.el
@@ -2,7 +2,7 @@
;; This file is automatically generated by asy-list.pl.
;; Changes will be overwritten.
;;
-(defvar asy-keywords-version "2.21")
+(defvar asy-keywords-version "2.22")
(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 ))
@@ -11,7 +11,7 @@ and controls tension atleast curl if else while for do return break continue str
Braid FitResult Label Legend Segment Solution TreeNode abscissa arc arrowhead binarytree binarytreeNode block bool bool3 bounds bqe circle conic coord coordsys cputime ellipse file filltype frame grid3 guide horner hsv hyperbola indexedTransform int inversion key light line linefit marginT marker mass object pair parabola path path3 pen picture point position projection real revolution scaleT 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 Arc ArcArrow ArcArrows Arrow Arrows Automatic AvantGarde 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 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 RadialShade RadialShadeDraw Rainbow Range Relative Right RightTicks Rotate Round SQR Scale ScaleX ScaleY ScaleZ Seascape Segment 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 _image _labelpath _projection _strokepath _texpath aCos aSin aTan abort abs accel acos acosh acot acsc activatequote add addArrow addMargins addSaveFunction addpenarc addpenline adjust alias align all altitude angabscissa angle 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 blend blockconnector box bqe breakpoint breakpoints brick buildRestoreDefaults buildRestoreThunk buildcycle bulletcolor byte calculateScaling canonical canonicalcartesiansystem cartesiansystem case1 case2 case3 case4 cbrt cd ceil center centerToFocus centroid cevian change2 changecoordsys checkSegment checkconditionlength checker checkincreasing checklengths checkposition 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 connected connectedindex containmentTree contains contour contour3 contouredges 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 drawDoubleLine drawFermion drawGhost drawGluon drawMomArrow drawPRCcylinder drawPRCdisk drawPRCsphere drawPRCtube drawPhoton drawScalar drawVertex drawVertexBox drawVertexBoxO drawVertexBoxX drawVertexO drawVertexOX drawVertexTriangle drawVertexTriangleO drawVertexX drawarrow drawarrow2 drawline drawpixel drawtick duplicate elle ellipse ellipsenodesnumber embed embed3 embedplayer empty enclose end endScript endclip endgroup endgroup3 endl endpoint endpoints eof eol equation equations erase erasestep erf erfc error errorbar errorbars eval excenter excircle exit exitXasyMode exitfunction exp expfactors expi expm1 exradius extend extension extouch fabs factorial fermat fft fhorner figure file filecode fill filldraw filloutside fillrule filltype find finite finiteDifferenceJacobian firstcut firstframe fit fit2 fixedscaling floor flush fmdefaults fmod focusToCenter font fontcommand fontsize foot format frac frequency fromCenter fromFocus fspline functionshade gamma generate_random_backtrace generateticks gergonne getc getint getpair getreal getstring gettriple gluon gouraudshade graph graphic gray grestore grid grid3 gsave halfbox hatch hdiffdiv hermite hex histogram history hline hprojection hsv hyperbola hyperbolanodesnumber hyperlink hypot identity image incenter incentral incircle increasing incrementposition indexedTransform indexedfigure initXasyMode initdefaults input inradius insert inside integrate interactive interior interp interpolate intersect intersection intersectionpoint intersectionpoints intersections intouch inverse inversion invisible is3D isCCW isDuplicate isnan isogonal isogonalconjugate 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 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 makeNode makedraw makepen map 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 nativeformat natural needshipout newl newpage newslide newton newtree nextframe nextnormal nextpage nib nodabscissa none norm normalvideo notaknot nowarn numberpage nurb object offset onpath opacity opposite orientation origin orthic orthocentercenter outformat outline outname outprefix output overloadedMessage overwrite pack pad pairs palette parabola parabolanodesnumber parallel parallelogram partialsum path path3 pattern pause pdf pedal periodic perp perpendicular perpendicularmark phantom phi1 phi2 phi3 photon piecewisestraight point polar polarconicroutine polargraph polygon postcontrol postscript pow10 ppoint prc prc0 precision precontrol prepend printBytecode print_random_addresses project projection purge pwhermite quadrant quadraticroots quantize quarticroots quotient radialshade radians radicalcenter radicalline radius rand randompath rd readline realmult realquarticroots rectangle rectangular rectify reflect relabscissa relative relativedistance reldir relpoint reltime remainder remark removeDuplicates rename replace report resetdefaultpen restore restoredefaults reverse reversevideo rf rfind rgb rgba rgbint rms rotate rotateO rotation round roundbox roundedpath roundrectangle same samecoordsys sameside sample save savedefaults saveline scale scale3 scaleO scaleT scaleless scientific search searchindex searchtree sec secondaryX secondaryY seconds section sector seek seekeof segment sequence setcontour setpens sgn sgnd sharpangle sharpdegrees shift shiftless shipout shipout3 show side simeq simpson sin sinh size size3 skewness skip slant sleep slope slopefield solve solveBVP sort sourceline sphere split sqrt square srand standardizecoordsys startScript 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 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 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 xaxis xaxis3 xaxis3At xaxisAt xequals xlimits xpart xscale xscaleO xtick xtick3 xtrans yaxis yaxis3 yaxis3At yaxisAt yequals ylimits ypart yscale yscaleO ytick ytick3 ytrans zaxis3 zaxis3At zero zero3 zlimits zpart ztick ztick3 ztrans ))
+AND Arc ArcArrow ArcArrows Arrow Arrows Automatic AvantGarde 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 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 RadialShade RadialShadeDraw Rainbow Range Relative Right RightTicks Rotate Round SQR Scale ScaleX ScaleY ScaleZ Seascape Segment 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 _image _labelpath _projection _strokepath _texpath aCos aSin aTan abort abs accel acos acosh acot acsc activatequote add addArrow addMargins addSaveFunction addpenarc addpenline adjust alias align all altitude angabscissa angle 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 blend blockconnector box bqe breakpoint breakpoints brick buildRestoreDefaults buildRestoreThunk buildcycle bulletcolor byte calculateScaling canonical canonicalcartesiansystem cartesiansystem case1 case2 case3 case4 cbrt cd ceil center centerToFocus centroid cevian change2 changecoordsys checkSegment checkconditionlength checker checkincreasing checklengths checkposition 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 connected connectedindex containmentTree contains contour contour3 contouredges 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 drawDoubleLine drawFermion drawGhost drawGluon drawMomArrow drawPRCcylinder drawPRCdisk drawPRCsphere drawPRCtube drawPhoton drawScalar drawVertex drawVertexBox drawVertexBoxO drawVertexBoxX drawVertexO drawVertexOX drawVertexTriangle drawVertexTriangleO drawVertexX drawarrow drawarrow2 drawline drawpixel drawtick duplicate elle ellipse ellipsenodesnumber embed embed3 embedplayer empty enclose end endScript endclip endgroup endgroup3 endl endpoint endpoints eof eol equation equations erase erasestep erf erfc error errorbar errorbars eval excenter excircle exit exitXasyMode exitfunction exp expfactors expi expm1 exradius extend extension extouch fabs factorial fermat fft fhorner figure file filecode fill filldraw filloutside fillrule filltype find finite finiteDifferenceJacobian firstcut firstframe fit fit2 fixedscaling floor flush fmdefaults fmod focusToCenter font fontcommand fontsize foot format frac frequency fromCenter fromFocus fspline functionshade gamma generate_random_backtrace generateticks gergonne getc getint getpair getreal getstring gettriple gluon gouraudshade graph graphic gray grestore grid grid3 gsave halfbox hatch hdiffdiv hermite hex histogram history hline hprojection hsv hyperbola hyperbolanodesnumber hyperlink hypot identity image incenter incentral incircle increasing incrementposition indexedTransform indexedfigure initXasyMode initdefaults input inradius insert inside integrate interactive interior interp interpolate intersect intersection intersectionpoint intersectionpoints intersections intouch inverse inversion invisible is3D isCCW isDuplicate isnan isogonal isogonalconjugate 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 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 makeNode makedraw makepen map 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 nativeformat natural needshipout newl newpage newslide newton newtree nextframe nextnormal nextpage nib nodabscissa none norm normalvideo notaknot nowarn numberpage nurb object offset onpath opacity opposite orientation origin orthic orthocentercenter outformat outline outname outprefix output overloadedMessage overwrite pack pad pairs palette parabola parabolanodesnumber parallel parallelogram partialsum path path3 pattern pause pdf pedal periodic perp perpendicular perpendicularmark phantom phi1 phi2 phi3 photon piecewisestraight point polar polarconicroutine polargraph polygon postcontrol postscript pow10 ppoint prc prc0 precision precontrol prepend printBytecode print_random_addresses project projection purge pwhermite quadrant quadraticroots quantize quarticroots quotient radialshade radians radicalcenter radicalline radius rand randompath rd readline realmult realquarticroots rectangle rectangular rectify reflect relabscissa relative relativedistance reldir relpoint reltime remainder remark removeDuplicates rename replace report resetdefaultpen restore restoredefaults reverse reversevideo rf rfind rgb rgba rgbint rms rotate rotateO rotation round roundbox roundedpath roundrectangle same samecoordsys sameside sample save savedefaults saveline scale scale3 scaleO scaleT scaleless scientific search searchindex searchtree sec secondaryX secondaryY seconds section sector seek seekeof segment segmentlimits sequence setcontour setpens sgn sgnd sharpangle sharpdegrees shift shiftless shipout shipout3 show side simeq simpson sin sinh size size3 skewness skip slant sleep slope slopefield solve solveBVP sort sourceline sphere split sqrt square srand standardizecoordsys startScript 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 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 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 xaxis xaxis3 xaxis3At xaxisAt xequals xlimits xpart xscale xscaleO xtick xtick3 xtrans yaxis yaxis3 yaxis3At yaxisAt yequals ylimits ypart yscale yscaleO ytick ytick3 ytrans zaxis3 zaxis3At zero zero3 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 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 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 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 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 XYAlign YAlign Yellow YellowGreen YellowOrange addpenarc addpenline align allowstepping angularsystem animationdelay appendsuffix arcarrowangle arcarrowfactor arrow2sizelimit arrowangle arrowbarb arrowdir arrowfactor arrowhookfactor arrowlength arrowsizelimit arrowtexfactor authorpen axis axiscoverage axislabelfactor background backgroundcolor backgroundpen barfactor barmarksizefactor basealign baselinetemplate beveljoin bigvertexpen bigvertexsize black blue bm bottom bp 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 default defaultControl defaultS defaultbackpen defaultcoordsys defaultexcursion defaultfilename defaultformat defaultmassformat defaultpen defaultseparator diagnostics differentlengths dot dotfactor dotframe dotted doublelinepen doublelinespacing down duplicateFuzz edge ellipsenodesnumberfactor eps epsgeo epsilon evenodd expansionfactor extendcap exterior 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 hyperbola hyperbolanodesnumberfactor identity4 ignore inXasyMode inch inches includegraphicscommand inf infinity institutionpen intMax intMin interior invert invisible itempen itemskip itemstep labelmargin landscape lastnode left legendhskip legendlinelength legendmargin legendmarkersize legendmaxrelativewidth legendvskip lightblue lightcyan lightgray lightgreen lightgrey lightmagenta lightolive lightred lightyellow line linemargin lm_infmsg lm_shortmsg longdashdotted longdashed magenta magneticRadius mantissaBits markangleradius markangleradiusfactor markanglespace markanglespacefactor 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 newbulletcolor ngraph nil nmesh nobasealign nodeMarginDefault nodesystem nomarker nopoint noprimary nullpath nullpen numarray ocgindex oldbulletcolor olive 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 shipped signedtrailingzero solid 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 undefined unitcircle unitsquare up urlpen urlskip version vertexpen vertexsize viewportmargin viewportsize vline white wye xformStack yellow ylabelwidth zerotickfuzz zerowinding ))
diff --git a/Build/source/utils/asymptote/asy.list b/Build/source/utils/asymptote/asy.list
index f2ef45381c4..d573f1cf2c5 100644
--- a/Build/source/utils/asymptote/asy.list
+++ b/Build/source/utils/asymptote/asy.list
@@ -299,8 +299,8 @@ bool pdf();
void _eval(string s, bool embedded, bool interactivewrite=<default>);
void _eval(code s, bool embedded);
path[][] textpath(string[] s, pen[] p);
-void radialshade(frame f, path[] g, bool stroke=<default>, pen pena, pair a, real ra, pen penb, pair b, real rb, bool copy=<default>);
-void radialshade(picture pic=<default>, path[] g, bool stroke=<default>, pen pena, pair a, real ra, pen penb, pair b, real rb, bool copy=<default>);
+void radialshade(frame f, path[] g, bool stroke=<default>, pen pena, pair a, real ra, bool extenda=<default>, pen penb, pair b, real rb, bool extendb=<default>, bool copy=<default>);
+void radialshade(picture pic=<default>, path[] g, bool stroke=<default>, pen pena, pair a, real ra, bool extenda=<default>, pen penb, pair b, real rb, bool extendb=<default>, bool copy=<default>);
pair maxbound(pair a, pair b);
triple maxbound(triple a, triple b);
pair maxbound(pair[] a);
@@ -547,8 +547,8 @@ path ellipse(frame dest, frame src=<default>, real xmargin=<default>, real ymarg
path ellipse(frame f, Label L, real xmargin=<default>, real ymargin=<default>, pen p=<default>, filltype filltype=<default>, bool above=<default>);
path ellipse(pair c, real a, real b);
pair getpair(string name=<default>, pair default=<default>, string prompt=<default>, bool store=<default>);
-void axialshade(frame f, path[] g, bool stroke=<default>, pen pena, pair a, pen penb, pair b, bool copy=<default>);
-void axialshade(picture pic=<default>, path[] g, bool stroke=<default>, pen pena, pair a, pen penb, pair b, bool copy=<default>);
+void axialshade(frame f, path[] g, bool stroke=<default>, pen pena, pair a, bool extenda=<default>, pen penb, pair b, bool extendb=<default>, bool copy=<default>);
+void axialshade(picture pic=<default>, path[] g, bool stroke=<default>, pen pena, pair a, bool extenda=<default>, pen penb, pair b, bool extendb=<default>, bool copy=<default>);
string locale(string s=<default>);
real dirtime(path p, pair z);
void copyPairOrTriple(pairOrTriple dest, pairOrTriple src);
@@ -1946,7 +1946,6 @@ bool shipped;
pair[] fft(pair[] a, int sign=<default>);
pair SE;
pen nobasealign;
-sCAD operator init();
real animationdelay;
animation operator init();
frame NoBox(frame f);
@@ -1992,6 +1991,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;
void searchindex(boxcontour bc, bool forward, void f(int i, int j));
segment case1(pair p0, pair p1, pair p2, real v0, real v1, real v2);
void draw(picture pic=<default>, Label[] L=<default>, guide[][] g, pen[] p);
@@ -2004,7 +2013,6 @@ guide connect(Segment S, pair[][] z, guide join(... guide[]));
guide[] connect(Segment[] S, pair[][] z, guide join(... guide[]));
guide[][] connect(Segment[][] S, pair[][] z, guide join(... guide[]));
guide[][] connect(pair[][][] points, real[] c, guide join(... guide[]));
-bool same(gridpoint gp1, gridpoint gp2);
bool connected(boxcontour bc1, boxcontour bc2);
int exterior;
int connectedindex(boxcontour bc, boxcontour[] bca, bool activeonly=<default>);
@@ -2013,6 +2021,7 @@ segment case2(pair p0, pair p1, pair p2, real v0, real v1, real v2);
void collect(pair[][][] points, real[] c);
int hyperbola;
int edge;
+bool same(gridpoint gp1, gridpoint gp2);
int line;
segment case3(pair p0, pair p1, pair p2, real v0, real v1, real v2);
segment checktriangle(pair p0, pair p1, pair p2, real v0, real v1, real v2);
@@ -2030,20 +2039,11 @@ guide[][] contour(real f(pair), pair a, pair b, real[] c, int nx=<default>, int
guide[][] contour(pair[] z, real[] f, real[] c, guide join(... guide[])=<default>);
segment[][] contouredges(real[][] f, real[] c, int subsample=<default>);
void setcontour(real f00, real f10, real f01, real f11, real epsf, boxdata bd, int i, int j, int index);
-Segment[] Segment(segment[] s);
-Segment[][] Segment(segment[][] s);
real eps;
segment case4(pair p0, pair p1, pair p2, real v0, real v1, real v2);
bool isCCW(pair p0, pair p1, pair p2);
-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[] Segment(segment[] s);
+Segment[][] Segment(segment[][] s);
void draw(TreeNode root, pair pos);
real treeNodeStep;
void drawAll(TreeNode node, frame f);
@@ -2449,6 +2449,9 @@ transform projection(line l1, line l2, bool safe=<default>);
bool degenerate(conic c);
bool degenerate(circle c);
bool degenerate(ellipse el);
+segment segment(point A, point B);
+segment segment(line l);
+segment segment(explicit side side);
line line(point A, bool extendA=<default>, point B, bool extendB=<default>);
line line(segment s);
line line(real a, point A=<default>);
@@ -2664,9 +2667,6 @@ mass operator /(explicit mass M, real x);
mass operator /(explicit mass M, int x);
transform scaleO(real x);
real operator ^(point M, explicit circle c);
-segment segment(point A, point B);
-segment segment(line l);
-segment segment(explicit side side);
bool operator ==(coordsys c1, coordsys c2);
bool operator ==(explicit point M, explicit point N);
bool operator ==(explicit vector u, explicit vector v);
@@ -2767,8 +2767,8 @@ inversion inversion(point C, real k);
inversion inversion(circle c1, circle c2, real sgn=<default>);
inversion inversion(circle c1, circle c2, circle c3);
inversion inversion(circle c);
-point isogonalconjugate(triangle t, point M);
coordsys cartesiansystem(pair O=<default>, pair i, pair j);
+point isogonalconjugate(triangle t, point M);
point isogonal(side side, point M);
line isogonal(vertex V, point M);
triangle isogonal(triangle t, point M);
@@ -2814,6 +2814,118 @@ abscissa curabscissa(ellipse el, point M);
abscissa curabscissa(parabola p, point M);
abscissa curabscissa(conic co, point M);
abscissa curabscissa(arc a, point M);
+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(triple[][] 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(triple[][] f, bool[][] cond=<default>);
+surface surface(real[][] f, real[] x, real[] y, real[] xsplinetype(real[], real[])=<default>, real[] ysplinetype(real[], real[])=<default>, bool[][] cond=<default>);
+surface surface(real[][] f, pair a, pair b, real[] xsplinetype(real[], real[]), real[] ysplinetype(real[], real[])=<default>, bool[][] cond=<default>);
+surface surface(real[][] f, pair a, pair b, bool[][] cond=<default>);
+surface surface(triple f(pair z), pair a, pair b, int nu=<default>, int nv=<default>, bool cond(pair z)=<default>);
+surface surface(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(real f(pair z), pair a, pair b, int nx=<default>, int ny=<default>, bool cond(pair z)=<default>);
+surface surface(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);
+real ScaleZ(picture pic=<default>, real z);
+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 zero3(real);
+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>);
+path3[] segment(triple[] v, bool[] cond, void join(flatguide3)(... void(flatguide3)[])=<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>)();
+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);
@@ -2840,10 +2952,7 @@ string LogFormat(real);
axisT axis;
void axis(picture pic=<default>, Label L=<default>, path g, path g2=<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>), ticklocate locate, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>, int[] divisor=<default>, bool above=<default>, bool opposite=<default>);
void drawtick(frame f, transform T, path g, path g2, ticklocate locate, real val, real Size, int sign, pen p, bool extend);
-tickvalues OmitTickIntervals(tickvalues)(real[] a, real[] b);
real maxlength(pair a, pair b, int nx, int ny);
-tickvalues OmitTickInterval(tickvalues)(real a, real b);
-tickvalues OmitTick(tickvalues)(... real[] x);
void errorbar(picture pic, pair z, pair dp, pair dm, pen p=<default>, real size=<default>);
void errorbars(picture pic=<default>, pair[] z, pair[] dp, pair[] dm=<default>, bool[] cond=<default>, pen p=<default>, real size=<default>);
void errorbars(picture pic=<default>, real[] x, real[] y, real[] dpx, real[] dpy, real[] dmx=<default>, real[] dmy=<default>, bool[] cond=<default>, pen p=<default>, real size=<default>);
@@ -2858,6 +2967,9 @@ void crop(picture pic=<default>);
picture vectorfield(path vector(real), path g, int n, bool truesize=<default>, pen p=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>);
picture vectorfield(path vector(pair), pair a, pair b, int nx=<default>, int ny=<default>, bool truesize=<default>, real maxlength=<default>, bool cond(pair z)=<default>, pen p=<default>, bool arrow(picture, path, pen, marginT(path, pen))=<default>, marginT margin(path, pen)=<default>);
string OmitFormat(real)(string s=<default> ... real[] x);
+tickvalues OmitTickIntervals(tickvalues)(real[] a, real[] b);
+tickvalues OmitTickInterval(tickvalues)(real a, real b);
+tickvalues OmitTick(tickvalues)(... real[] x);
guide Straight(... guide[]);
int Min;
string trailingzero;
@@ -2868,19 +2980,15 @@ 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>);
-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 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>);
void xtick(picture pic=<default>, Label L, real x, pair dir=<default>, string format=<default>, real size=<default>, pen p=<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>);
void ytick(picture pic=<default>, explicit pair z, pair dir=<default>, real size=<default>, pen p=<default>);
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>);
@@ -2893,6 +3001,10 @@ scaleT Linear;
scaleT Linear(bool automin=<default>, bool automax=<default>, real s=<default>, real intercept=<default>);
pair tickMin(picture pic);
pair tickMax(picture pic);
+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>);
string autoformat(string format=<default>, real norm ... real[] a);
real linear(real)(real S(real x)=<default>, real Min, real Max);
pair polar(real r, real theta);
@@ -2904,6 +3016,7 @@ void LeftTicks(frame, transform, Label, pair, path, path, pen, bool(picture, pat
void LeftTicks(frame, transform, Label, pair, path, path, pen, bool(picture, path, pen, marginT(path, pen)), marginT(path, pen), ticklocate, int[], bool opposite=<default>);
tickvalues NoZero(tickvalues);
string NoZeroFormat(real);
+path[] segment(pair[] z, bool[] cond, guide join(... guide[])=<default>);
guide Hermite(... guide[])(real[] splinetype(real[], real[]));
guide Hermite(... guide[]);
path Circle(pair c, real r, int n=<default>);
@@ -2936,7 +3049,6 @@ ticklocate operator init();
locateT operator init();
tickvalues operator init();
axisT operator init();
-path[] segment(pair[] z, bool[] cond, guide join(... guide[])=<default>);
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;
@@ -2973,118 +3085,6 @@ void autoscale(picture pic=<default>, void axis(picture, axisT));
guide Spline(... guide[]);
void LeftRight(picture, axisT)(bool extend=<default>);
void LeftRight(picture, axisT);
-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(triple[][] 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(triple[][] f, bool[][] cond=<default>);
-surface surface(real[][] f, real[] x, real[] y, real[] xsplinetype(real[], real[])=<default>, real[] ysplinetype(real[], real[])=<default>, bool[][] cond=<default>);
-surface surface(real[][] f, pair a, pair b, real[] xsplinetype(real[], real[]), real[] ysplinetype(real[], real[])=<default>, bool[][] cond=<default>);
-surface surface(real[][] f, pair a, pair b, bool[][] cond=<default>);
-surface surface(triple f(pair z), pair a, pair b, int nu=<default>, int nv=<default>, bool cond(pair z)=<default>);
-surface surface(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(real f(pair z), pair a, pair b, int nx=<default>, int ny=<default>, bool cond(pair z)=<default>);
-surface surface(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);
-real ScaleZ(picture pic=<default>, real z);
-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 zero3(real);
-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>);
-path3[] segment(triple[] v, bool[] cond, void join(flatguide3)(... void(flatguide3)[])=<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>)();
-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;
@@ -3125,13 +3125,13 @@ 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>);
grid3(picture pic)[] ZX_ZYgrid;
+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>);
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>);
@@ -3169,16 +3169,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);
@@ -3265,12 +3265,13 @@ bool rectangular(pair[][] m);
bool rectangular(triple[][] m);
bool polygon(path p);
pair unityroot(int n, int k=<default>);
+int[][] segmentlimits(bool[] b);
+int[][] segment(bool[] b);
real acot(real x);
pair[][] fft(pair[][] a, int sign=<default>);
real slope(path g, real x, int n=<default>);
real slope(path g, explicit pair z, int n=<default>);
picture grid(int Nx, int Ny, pen p=<default>);
-int[][] segment(bool[] b);
real frac(real x);
real asec(real x);
real time(path g, real x, int n=<default>);
@@ -3366,6 +3367,8 @@ pair align;
path roundedpath(path A, real R, real S=<default>);
problem operator init();
real infinity;
+bool allowstepping;
+pair currentposition;
pen authorpen;
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>);
@@ -3391,8 +3394,8 @@ void remark(bool center=<default>, string s, pair align=<default>, pen p=<defaul
void usersetting();
bool landscape;
real codeskip;
-int page;
void newslide(bool stepping=<default>);
+int page;
pen itempen;
bool reverse;
void reversevideo();
@@ -3405,10 +3408,10 @@ real pagewidth;
picture background;
void background();
pen backgroundcolor;
-void nextpage(pen p=<default>);
void normalvideo();
void title(string s, pair position=<default>, pair align=<default>, pen p=<default>, bool newslide=<default>);
pen titlepen;
+void nextpage(pen p=<default>);
real titleskip;
pair dateskip;
pair titlealign;
@@ -3416,8 +3419,8 @@ 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 filecode(bool center=<default>, string s, pen p=<default>, real indent=<default>, real skip=<default>, filltype filltype=<default>);
void erasestep(int erasenode);
+void filecode(bool center=<default>, string s, pen p=<default>, real indent=<default>, real skip=<default>, filltype filltype=<default>);
bool checkposition();
void setpens(pen red=<default>, pen blue=<default>, pen steppen=<default>);
void code(bool center=<default>, string s, pen p=<default>, real indent=<default>, real skip=<default>, filltype filltype=<default>);
@@ -3434,18 +3437,18 @@ string newbulletcolor;
pen datepen;
void incrementposition(pair z);
pen institutionpen;
-void item(string s, pen p=<default>, bool step=<default>);
void skip(real n=<default>);
bool stepping;
+void item(string s, pen p=<default>, bool step=<default>);
real pagemargin;
pen steppagenumberpen;
bool empty();
void currentexitfunction();
void step();
string[] codefile;
-string cropcode(string s);
void outline(string s=<default>, pair position=<default>, pair align=<default>, pen p=<default>);
void center(string s, pen p=<default>);
+string cropcode(string s);
void equation(string s, pen p=<default>);
void equations(string s, pen p=<default>);
void asyinclude(string s, real xsize=<default>, real ysize=<default>);
@@ -3454,8 +3457,6 @@ void figure(string s, string options=<default>, string caption=<default>, pair a
real figureborder;
pen figuremattpen;
string bullet;
-bool allowstepping;
-pair currentposition;
int preamblenodes;
string bulletcolor(string color);
real minipagewidth;
@@ -3477,6 +3478,8 @@ pen defaultbackpen;
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>);
+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 rms(real[] A);
int[] frequency(real[] data, real[] bins);
int[] frequency(real[] data, real a, real b, int n);
@@ -3488,20 +3491,18 @@ int bins(real[] data, int max=<default>);
path topbox(pair a, pair b);
real stdev(real[] A);
path halfbox(pair a, pair b);
+real variance(real[] A);
+real legendmarkersize;
+real variancebiased(real[] A);
real Gaussian(real x, real sigma);
real Gaussian(real x);
pair Gaussrandpair();
real Gaussrand();
-real variance(real[] A);
-real legendmarkersize;
-real variancebiased(real[] A);
linefit operator init();
real skewness(real[] A);
linefit leastsquares(real[] x, real[] y);
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;
picture tableau(frame[] cards, bool number=<default>);
@@ -3523,8 +3524,8 @@ Relation r4a;
pair max(pair[] z);
pen Orchid;
pen Magenta;
-pen Salmon;
pen BrickRed;
+pen Salmon;
pen CadetBlue;
pen CarnationPink;
pen SpringGreen;
@@ -3536,16 +3537,16 @@ pen Red;
pen RawSienna;
pen Mahogany;
pen Gray;
-pen Aquamarine;
pen Plum;
pen BlueGreen;
pen Cerulean;
+pen Aquamarine;
pen Blue;
-pen Lavender;
pen BlueViolet;
pen RedOrange;
pen Goldenrod;
pen ForestGreen;
+pen Lavender;
pen BurntOrange;
pen Tan;
pen Brown;
@@ -3557,12 +3558,12 @@ pen Bittersweet;
pen Orange;
pen OrangeRed;
pen Fuchsia;
-pen YellowOrange;
-pen Maroon;
pen Peach;
-pen YellowGreen;
pen PineGreen;
pen Dandelion;
+pen YellowOrange;
+pen Maroon;
+pen YellowGreen;
pen Black;
pen NavyBlue;
pen Rhodamine;
@@ -3576,9 +3577,9 @@ pen Violet;
pen Emerald;
pen Mulberry;
pen RedViolet;
-pen Thistle;
pen SkyBlue;
pen SeaGreen;
+pen Thistle;
pen Periwinkle;
pen DarkOrchid;
pen Yellow;
@@ -3614,6 +3615,7 @@ real degrees(rmf a, rmf b);
string VERSION;
pen Orchid;
pen Indigo;
+pen GhostWhite;
pen Beige;
pen SlateBlue;
pen SlateGray;
@@ -3621,16 +3623,16 @@ pen Magenta;
pen Salmon;
pen CadetBlue;
pen DeepPink;
-pen LavenderBlush;
pen SpringGreen;
-pen Wheat;
pen MidnightBlue;
+pen LavenderBlush;
pen Olive;
+pen Wheat;
pen OliveDrab;
pen Chocolate;
-pen SteelBlue;
pen Cyan;
pen Gainsboro;
+pen SteelBlue;
pen Ivory;
pen PapayaWhip;
pen Red;
@@ -3645,19 +3647,19 @@ pen MediumSeaGreen;
pen MediumSlateBlue;
pen MediumAquamarine;
pen MediumSpringGreen;
-pen LemonChiffon;
pen MediumTurquoise;
pen MediumVioletRed;
-pen Aquamarine;
pen Plum;
+pen LemonChiffon;
+pen Aquamarine;
pen Blue;
pen Gold;
pen Sienna;
-pen Lavender;
pen BlueViolet;
pen Goldenrod;
-pen Aqua;
pen ForestGreen;
+pen Lavender;
+pen Aqua;
pen Chartreuse;
pen NavajoWhite;
pen Tan;
@@ -3680,11 +3682,11 @@ pen DimGray;
pen Orange;
pen OrangeRed;
pen Fuchsia;
-pen Maroon;
pen PeachPuff;
-pen YellowGreen;
pen Honeydew;
pen Bisque;
+pen Maroon;
+pen YellowGreen;
pen RosyBrown;
pen Black;
pen Khaki;
@@ -3694,36 +3696,36 @@ pen DarkOliveGreen;
pen DarkOrange;
pen LimeGreen;
pen Lime;
-pen Silver;
pen OldLace;
+pen Silver;
pen Green;
pen GreenYellow;
-pen Violet;
pen DarkCyan;
pen FloralWhite;
pen DarkRed;
+pen Violet;
pen SandyBrown;
pen BlanchedAlmond;
pen PowderBlue;
-pen Thistle;
pen DarkGray;
pen DarkGreen;
pen DarkGoldenrod;
pen SkyBlue;
pen SeaGreen;
pen DarkViolet;
-pen DeepSkyBlue;
+pen Thistle;
pen Teal;
pen AliceBlue;
+pen DeepSkyBlue;
pen HotPink;
-pen DarkOrchid;
pen DodgerBlue;
pen SaddleBrown;
pen Tomato;
pen DarkKhaki;
-pen Cornsilk;
+pen DarkOrchid;
pen LightBlue;
pen LightCoral;
+pen Cornsilk;
pen LightCyan;
pen Yellow;
pen LightGreen;
@@ -3742,14 +3744,13 @@ pen PaleVioletRed;
pen LightSteelBlue;
pen LightYellow;
pen CornflowerBlue;
-pen Seashell;
pen rgbint(int r, int g, int b);
pen Coral;
pen MistyRose;
+pen Seashell;
pen DarkSalmon;
pen DarkSeaGreen;
pen RoyalBlue;
pen DarkSlateBlue;
pen DarkSlateGray;
pen Turquoise;
-pen GhostWhite;
diff --git a/Build/source/utils/asymptote/asymptote.spec b/Build/source/utils/asymptote/asymptote.spec
index aba8814705a..c11d4d48efc 100644
--- a/Build/source/utils/asymptote/asymptote.spec
+++ b/Build/source/utils/asymptote/asymptote.spec
@@ -1,7 +1,7 @@
%{!?_texmf: %define _texmf %(eval "echo `kpsewhich -expand-var '$TEXMFLOCAL'`")}
Name: asymptote
-Version: 2.21
+Version: 2.22
Release: 1%{?dist}
Summary: Descriptive vector graphics language
diff --git a/Build/source/utils/asymptote/base/geometry.asy b/Build/source/utils/asymptote/base/geometry.asy
index bbbc823fc54..6dc10674bd9 100644
--- a/Build/source/utils/asymptote/base/geometry.asy
+++ b/Build/source/utils/asymptote/base/geometry.asy
@@ -4099,7 +4099,7 @@ real arclength(ellipse el, real angle1, real angle2,
real S(real a)
{//Return the arclength from 0 to the angle 'a' (in degrees)
// given form the center of the ellipse.
- real gle = atan(el.a * Tan(a)/el.b)+
+ real gle = atan(el.a * tan(radians(a))/el.b)+
pi * (((a%90 == 0 && a != 0) ? floor(a/90) - 1 : floor(a/90)) -
((a%180 == 0) ? 0 : floor(a/180)) -
(a%360 == 0 ? floor(a/(360)) : 0));
diff --git a/Build/source/utils/asymptote/base/graph.asy b/Build/source/utils/asymptote/base/graph.asy
index 410c59cf13a..c50a7a67b2c 100644
--- a/Build/source/utils/asymptote/base/graph.asy
+++ b/Build/source/utils/asymptote/base/graph.asy
@@ -235,8 +235,10 @@ ticklabel Format(string s=defaultformat)
ticklabel OmitFormat(string s=defaultformat ... real[] x)
{
return new string(real v) {
- int i=find(x == v);
- return i < 0 ? format(s,v) : "";
+ string V=format(s,v);
+ for(real a : x)
+ if(format(s,a) == V) return "";
+ return V;
};
}
diff --git a/Build/source/utils/asymptote/base/math.asy b/Build/source/utils/asymptote/base/math.asy
index 77c0664895f..46d663d3181 100644
--- a/Build/source/utils/asymptote/base/math.asy
+++ b/Build/source/utils/asymptote/base/math.asy
@@ -149,8 +149,9 @@ bool increasing(real[] a, bool strict=false)
return all(b);
}
-// Return the indices of consecutive true-element segments of bool[] b.
-int[][] segment(bool[] b)
+// Return the first and last indices of consecutive true-element segments
+// of bool[] b.
+int[][] segmentlimits(bool[] b)
{
int[][] segment;
bool[] n=copy(b);
@@ -159,15 +160,24 @@ int[][] segment(bool[] b)
int[] edge=(b != n) ? sequence(1,b.length) : null;
edge.insert(0,0);
int stop=edge[0];
- for(int i=0; i < edge.length-1;) {
+ for(int i=1; i < edge.length; ++i) {
int start=stop;
- stop=edge[++i];
+ stop=edge[i];
if(b[start])
- segment.push(sequence(start,stop-1));
+ segment.push(new int[] {start,stop-1});
}
return segment;
}
+// Return the indices of consecutive true-element segments of bool[] b.
+int[][] segment(bool[] b)
+{
+ int[][] S=segmentlimits(b);
+ return sequence(new int[](int i) {
+ return sequence(S[i][0],S[i][1]);
+ },S[0].length);
+}
+
// If the sorted array a does not contain x, insert it sequentially,
// returning the index of x in the resulting array.
int unique(real[] a, real x) {
diff --git a/Build/source/utils/asymptote/base/plain_picture.asy b/Build/source/utils/asymptote/base/plain_picture.asy
index 5b06b7f737c..5f4d759663a 100644
--- a/Build/source/utils/asymptote/base/plain_picture.asy
+++ b/Build/source/utils/asymptote/base/plain_picture.asy
@@ -1250,19 +1250,20 @@ void latticeshade(picture pic=currentpicture, path[] g, bool stroke=false,
}
void axialshade(picture pic=currentpicture, path[] g, bool stroke=false,
- pen pena, pair a, pen penb, pair b, bool copy=true)
+ pen pena, pair a, bool extenda=true,
+ pen penb, pair b, bool extendb=true, bool copy=true)
{
if(copy)
g=copy(g);
pic.add(new void(frame f, transform t) {
- axialshade(f,t*g,stroke,pena,t*a,penb,t*b,false);
+ axialshade(f,t*g,stroke,pena,t*a,extenda,penb,t*b,extendb,false);
},true);
pic.addPath(g);
}
void radialshade(picture pic=currentpicture, path[] g, bool stroke=false,
- pen pena, pair a, real ra, pen penb, pair b, real rb,
- bool copy=true)
+ pen pena, pair a, real ra, bool extenda=true,
+ pen penb, pair b, real rb, bool extendb=true, bool copy=true)
{
if(copy)
g=copy(g);
@@ -1270,7 +1271,7 @@ void radialshade(picture pic=currentpicture, path[] g, bool stroke=false,
pair A=t*a, B=t*b;
real RA=abs(t*(a+ra)-A);
real RB=abs(t*(b+rb)-B);
- radialshade(f,t*g,stroke,pena,A,RA,penb,B,RB,false);
+ radialshade(f,t*g,stroke,pena,A,RA,extenda,penb,B,RB,extendb,false);
},true);
pic.addPath(g);
}
diff --git a/Build/source/utils/asymptote/base/three_light.asy b/Build/source/utils/asymptote/base/three_light.asy
index 73f68b62a86..6cbd9b6f0be 100644
--- a/Build/source/utils/asymptote/base/three_light.asy
+++ b/Build/source/utils/asymptote/base/three_light.asy
@@ -79,7 +79,7 @@ pen color(triple normal, material m, light light, transform3 T=light.T) {
triple[] position=light.position;
if(invisible((pen) m)) return invisible;
if(position.length == 0) return m.diffuse();
- normal=unit(T*normal);
+ normal=unit(transpose(inverse(shiftless(T)))*normal);
if(settings.twosided) normal *= sgn(normal.z);
real s=m.shininess*128;
real[] Diffuse=rgba(m.diffuse());
diff --git a/Build/source/utils/asymptote/base/three_surface.asy b/Build/source/utils/asymptote/base/three_surface.asy
index 0ef497f6d56..85d32b08eb6 100644
--- a/Build/source/utils/asymptote/base/three_surface.asy
+++ b/Build/source/utils/asymptote/base/three_surface.asy
@@ -321,9 +321,12 @@ patch operator * (transform3 t, patch s)
Si[j]=t*si[j];
}
- transform3 t0=shiftless(t);
- for(int i=0; i < s.normals.length; ++i)
- S.normals[i]=t0*s.normals[i];
+ if(s.normals.length > 0) {
+ transform3 t0=shiftless(t);
+ t0=determinant(t0) == 0 ? identity4 : transpose(inverse(t0));
+ for(int i=0; i < s.normals.length; ++i)
+ S.normals[i]=t0*s.normals[i];
+ }
S.colors=copy(s.colors);
S.planar=s.planar;
diff --git a/Build/source/utils/asymptote/bbox3.h b/Build/source/utils/asymptote/bbox3.h
index b28921c305a..b531be4e91c 100644
--- a/Build/source/utils/asymptote/bbox3.h
+++ b/Build/source/utils/asymptote/bbox3.h
@@ -155,7 +155,7 @@ struct bbox3 {
return triple(right,top,upper);
}
- // transform bbox3 by 4x4 column-major matrix
+ // transform bbox3 by 4x4 matrix
void transform(const double* m)
{
const double xmin = left;
diff --git a/Build/source/utils/asymptote/camp.l b/Build/source/utils/asymptote/camp.l
index 278e4b3baad..1aed3fdae5c 100644
--- a/Build/source/utils/asymptote/camp.l
+++ b/Build/source/utils/asymptote/camp.l
@@ -325,7 +325,7 @@ EXTRAOPS <<|>>|$|$$|@|@@|~
">=" {DEFSYMBOL(SYM_GE); return GE; }
"&&" {DEFSYMBOL(SYM_CAND); return CAND; }
"||" {DEFSYMBOL(SYM_COR); return COR; }
-"!" {DEFSYMBOL(SYM_LOGNOT); return LOGNOT; }
+"!" {DEFSYMBOL(SYM_LOGNOT); return OPERATOR; }
"^^" {DEFSYMBOL(SYM_CARETS); return CARETS; }
"::" {DEFSYMBOL(SYM_COLONS); return COLONS; }
"++" {DEFSYMBOL(SYM_INCR); return INCR; }
diff --git a/Build/source/utils/asymptote/camp.tab.cc b/Build/source/utils/asymptote/camp.tab.cc
index d3bdbcc88fb..b04a4535dd5 100644
--- a/Build/source/utils/asymptote/camp.tab.cc
+++ b/Build/source/utils/asymptote/camp.tab.cc
@@ -1,8 +1,8 @@
-/* A Bison parser, made by GNU Bison 2.5. */
+/* A Bison parser, made by GNU Bison 2.6.1. */
/* Bison implementation for Yacc-like parsers in C
- Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
+ Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -44,7 +44,7 @@
#define YYBISON 1
/* Bison version. */
-#define YYBISON_VERSION "2.5"
+#define YYBISON_VERSION "2.6.1"
/* Skeleton name. */
#define YYSKELETON_NAME "yacc.c"
@@ -58,14 +58,11 @@
/* Pull parsers. */
#define YYPULL 1
-/* Using locations. */
-#define YYLSP_NEEDED 0
/* Copy the first part of user declarations. */
-
-/* Line 268 of yacc.c */
+/* Line 336 of yacc.c */
#line 1 "camp.y"
/*****
@@ -125,14 +122,16 @@ using namespace absyntax;
using sym::symbol;
using mem::string;
+/* Line 336 of yacc.c */
+#line 127 "camp.tab.c"
-/* Line 268 of yacc.c */
-#line 131 "camp.tab.c"
-
-/* Enabling traces. */
-#ifndef YYDEBUG
-# define YYDEBUG 1
-#endif
+# ifndef YY_NULL
+# if defined __cplusplus && 201103L <= __cplusplus
+# define YY_NULL nullptr
+# else
+# define YY_NULL 0
+# endif
+# endif
/* Enabling verbose error messages. */
#ifdef YYERROR_VERBOSE
@@ -142,11 +141,17 @@ using mem::string;
# define YYERROR_VERBOSE 0
#endif
-/* Enabling the token table. */
-#ifndef YYTOKEN_TABLE
-# define YYTOKEN_TABLE 0
+/* In a future release of Bison, this section will be replaced
+ by #include "camp.tab.h". */
+#ifndef YY_CAMP_TAB_H
+# define YY_CAMP_TAB_H
+/* Enabling traces. */
+#ifndef YYDEBUG
+# define YYDEBUG 1
+#endif
+#if YYDEBUG
+extern int yydebug;
#endif
-
/* Tokens. */
#ifndef YYTOKENTYPE
@@ -176,50 +181,47 @@ using mem::string;
GT = 277,
GE = 278,
CARETS = 279,
- LOGNOT = 280,
- OPERATOR = 281,
- LOOSE = 282,
- ASSIGN = 283,
- DIRTAG = 284,
- JOIN_PREC = 285,
- AND = 286,
- ELLIPSIS = 287,
- ACCESS = 288,
- UNRAVEL = 289,
- IMPORT = 290,
- INCLUDE = 291,
- FROM = 292,
- QUOTE = 293,
- STRUCT = 294,
- TYPEDEF = 295,
- NEW = 296,
- IF = 297,
- ELSE = 298,
- WHILE = 299,
- DO = 300,
- FOR = 301,
- BREAK = 302,
- CONTINUE = 303,
- RETURN_ = 304,
- THIS = 305,
- EXPLICIT = 306,
- GARBAGE = 307,
- LIT = 308,
- STRING = 309,
- PERM = 310,
- MODIFIER = 311,
- UNARY = 312,
- EXP_IN_PARENS_RULE = 313
+ OPERATOR = 280,
+ LOOSE = 281,
+ ASSIGN = 282,
+ DIRTAG = 283,
+ JOIN_PREC = 284,
+ AND = 285,
+ ELLIPSIS = 286,
+ ACCESS = 287,
+ UNRAVEL = 288,
+ IMPORT = 289,
+ INCLUDE = 290,
+ FROM = 291,
+ QUOTE = 292,
+ STRUCT = 293,
+ TYPEDEF = 294,
+ NEW = 295,
+ IF = 296,
+ ELSE = 297,
+ WHILE = 298,
+ DO = 299,
+ FOR = 300,
+ BREAK = 301,
+ CONTINUE = 302,
+ RETURN_ = 303,
+ THIS = 304,
+ EXPLICIT = 305,
+ GARBAGE = 306,
+ LIT = 307,
+ STRING = 308,
+ PERM = 309,
+ MODIFIER = 310,
+ UNARY = 311,
+ EXP_IN_PARENS_RULE = 312
};
#endif
-
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
typedef union YYSTYPE
{
-
-/* Line 293 of yacc.c */
+/* Line 350 of yacc.c */
#line 60 "camp.y"
position pos;
@@ -268,21 +270,36 @@ typedef union YYSTYPE
absyntax::formals *fls;
-
-/* Line 293 of yacc.c */
-#line 274 "camp.tab.c"
+/* Line 350 of yacc.c */
+#line 275 "camp.tab.c"
} YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1
#endif
+extern YYSTYPE yylval;
-/* Copy the second part of user declarations. */
+#ifdef YYPARSE_PARAM
+#if defined __STDC__ || defined __cplusplus
+int yyparse (void *YYPARSE_PARAM);
+#else
+int yyparse ();
+#endif
+#else /* ! YYPARSE_PARAM */
+#if defined __STDC__ || defined __cplusplus
+int yyparse (void);
+#else
+int yyparse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
+#endif /* !YY_CAMP_TAB_H */
+
+/* Copy the second part of user declarations. */
-/* Line 343 of yacc.c */
-#line 286 "camp.tab.c"
+/* Line 353 of yacc.c */
+#line 303 "camp.tab.c"
#ifdef short
# undef short
@@ -388,6 +405,7 @@ YYID (yyi)
# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
|| defined __cplusplus || defined _MSC_VER)
# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+ /* Use EXIT_SUCCESS as a witness for stdlib.h. */
# ifndef EXIT_SUCCESS
# define EXIT_SUCCESS 0
# endif
@@ -479,20 +497,20 @@ union yyalloc
#endif
#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
-/* Copy COUNT objects from FROM to TO. The source and destination do
+/* Copy COUNT objects from SRC to DST. The source and destination do
not overlap. */
# ifndef YYCOPY
# if defined __GNUC__ && 1 < __GNUC__
-# define YYCOPY(To, From, Count) \
- __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+# define YYCOPY(Dst, Src, Count) \
+ __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
# else
-# define YYCOPY(To, From, Count) \
- do \
- { \
- YYSIZE_T yyi; \
- for (yyi = 0; yyi < (Count); yyi++) \
- (To)[yyi] = (From)[yyi]; \
- } \
+# define YYCOPY(Dst, Src, Count) \
+ do \
+ { \
+ YYSIZE_T yyi; \
+ for (yyi = 0; yyi < (Count); yyi++) \
+ (Dst)[yyi] = (Src)[yyi]; \
+ } \
while (YYID (0))
# endif
# endif
@@ -501,10 +519,10 @@ union yyalloc
/* YYFINAL -- State number of the termination state. */
#define YYFINAL 3
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 1917
+#define YYLAST 1860
/* YYNTOKENS -- Number of terminals. */
-#define YYNTOKENS 76
+#define YYNTOKENS 75
/* YYNNTS -- Number of nonterminals. */
#define YYNNTS 50
/* YYNRULES -- Number of rules. */
@@ -514,7 +532,7 @@ union yyalloc
/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
#define YYUNDEFTOK 2
-#define YYMAXUTOK 313
+#define YYMAXUTOK 312
#define YYTRANSLATE(YYX) \
((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -526,15 +544,15 @@ static const yytype_uint8 yytranslate[] =
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 29, 2, 2,
- 42, 43, 27, 25, 45, 26, 44, 28, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 36, 48,
- 2, 2, 2, 35, 2, 2, 2, 2, 2, 2,
+ 41, 42, 27, 25, 44, 26, 43, 28, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 35, 47,
+ 2, 2, 2, 34, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 46, 2, 47, 30, 2, 2, 2, 2, 2,
+ 2, 45, 2, 46, 30, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 40, 2, 41, 2, 2, 2, 2,
+ 2, 2, 2, 39, 2, 40, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -550,10 +568,10 @@ static const yytype_uint8 yytranslate[] =
2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
- 31, 32, 33, 34, 37, 38, 39, 49, 50, 51,
+ 31, 32, 33, 36, 37, 38, 48, 49, 50, 51,
52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
- 72, 73, 74, 75
+ 72, 73, 74
};
#if YYDEBUG
@@ -586,108 +604,108 @@ static const yytype_uint16 yyprhs[] =
/* YYRHS -- A `-1'-separated list of the rules' RHS. */
static const yytype_int8 yyrhs[] =
{
- 77, 0, -1, 78, -1, -1, 78, 81, -1, -1,
- 79, 81, -1, 3, -1, 80, 44, 3, -1, 29,
- -1, 83, -1, 119, -1, 82, 83, -1, 82, 119,
- -1, 73, -1, 72, -1, 82, 73, -1, 82, 72,
- -1, 89, -1, 106, -1, 107, -1, 50, 88, 48,
- -1, 54, 80, 51, 85, 48, -1, 54, 80, 51,
- 27, 48, -1, 51, 80, 48, -1, 54, 86, 50,
- 85, 48, -1, 54, 86, 50, 27, 48, -1, 52,
- 87, 48, -1, 53, 3, 48, -1, 53, 71, 48,
- -1, 3, -1, 3, 3, 3, -1, 84, -1, 85,
- 45, 84, -1, 3, -1, 71, -1, 3, -1, 86,
- 3, 3, -1, 87, -1, 88, 45, 87, -1, 90,
- 48, -1, 91, 95, -1, 92, -1, 80, 93, -1,
- 80, -1, 46, 47, -1, 93, 46, 47, -1, 46,
- 113, 47, -1, 94, 46, 113, 47, -1, 96, -1,
- 95, 45, 96, -1, 97, -1, 97, 34, 98, -1,
- 3, -1, 3, 93, -1, 3, 42, 43, -1, 3,
- 42, 103, 43, -1, 113, -1, 100, -1, 40, 79,
- 41, -1, 40, 41, -1, 40, 49, 98, 41, -1,
- 40, 101, 41, -1, 40, 101, 49, 98, 41, -1,
- 45, -1, 102, -1, 102, 45, -1, 98, -1, 102,
- 45, 98, -1, 105, -1, 49, 105, -1, 103, 45,
- 105, -1, 103, 49, 105, -1, 68, -1, -1, 104,
- 91, -1, 104, 91, 97, -1, 104, 91, 97, 34,
- 98, -1, 104, 91, 3, 97, -1, 104, 91, 3,
- 97, 34, 98, -1, 91, 3, 42, 43, 121, -1,
- 91, 3, 42, 103, 43, 121, -1, 56, 3, 99,
- -1, 57, 89, -1, 36, -1, 113, 36, -1, 36,
- 113, -1, 113, 36, 113, -1, 109, 44, 3, -1,
- 80, 46, 113, 47, -1, 109, 46, 113, 47, -1,
- 80, 46, 108, 47, -1, 109, 46, 108, 47, -1,
- 80, 42, 43, -1, 80, 42, 111, 43, -1, 109,
- 42, 43, -1, 109, 42, 111, 43, -1, 42, 113,
- 43, -1, 42, 80, 43, -1, 67, -1, 113, -1,
- 3, 34, 113, -1, 110, -1, 49, 110, -1, 111,
- 45, 110, -1, 111, 49, 110, -1, 113, 45, 113,
- -1, 112, 45, 113, -1, 80, -1, 109, -1, 70,
- -1, 71, -1, 70, 113, -1, 42, 80, 43, 113,
- -1, 42, 80, 93, 43, 113, -1, 25, 113, -1,
- 26, 113, -1, 31, 113, -1, 113, 25, 113, -1,
- 113, 26, 113, -1, 113, 27, 113, -1, 113, 28,
- 113, -1, 113, 29, 113, -1, 113, 30, 113, -1,
- 113, 20, 113, -1, 113, 21, 113, -1, 113, 22,
- 113, -1, 113, 23, 113, -1, 113, 18, 113, -1,
- 113, 19, 113, -1, 113, 15, 113, -1, 113, 14,
- 113, -1, 113, 24, 113, -1, 113, 17, 113, -1,
- 113, 16, 113, -1, 113, 32, 113, -1, 113, 8,
- 113, -1, 58, 92, -1, 58, 92, 94, -1, 58,
- 92, 94, 93, -1, 58, 92, 93, -1, 58, 92,
- 93, 100, -1, 58, 92, 42, 43, 121, -1, 58,
- 92, 93, 42, 43, 121, -1, 58, 92, 42, 103,
- 43, 121, -1, 58, 92, 93, 42, 103, 43, 121,
- -1, 113, 35, 113, 36, 113, -1, 113, 34, 113,
- -1, 42, 112, 43, -1, 113, 114, 113, -1, 113,
- 115, -1, 8, 113, -1, 7, 113, -1, 113, 8,
- -1, 113, 4, 113, -1, 55, 40, 78, 41, -1,
- 7, -1, 116, -1, 115, 116, -1, 116, 115, -1,
- 115, 116, 115, -1, 40, 13, 113, 41, -1, 40,
- 113, 41, -1, 40, 113, 45, 113, 41, -1, 40,
- 113, 45, 113, 45, 113, 41, -1, 5, -1, 5,
- 117, 5, -1, 5, 118, 5, -1, 6, -1, 9,
- -1, 11, 113, -1, 11, 113, 39, 113, -1, 11,
- 12, 113, -1, 11, 12, 113, 39, 113, -1, 10,
- 113, -1, 10, 113, 39, 113, -1, 48, -1, 121,
- -1, 120, 48, -1, 59, 42, 113, 43, 119, -1,
- 59, 42, 113, 43, 119, 60, 119, -1, 61, 42,
- 113, 43, 119, -1, 62, 119, 61, 42, 113, 43,
- 48, -1, 63, 42, 122, 48, 123, 48, 124, 43,
- 119, -1, 63, 42, 91, 3, 36, 113, 43, 119,
- -1, 64, 48, -1, 65, 48, -1, 66, 48, -1,
- 66, 113, 48, -1, 113, -1, 99, -1, -1, 125,
- -1, 90, -1, -1, 113, -1, -1, 125, -1, 120,
- -1, 125, 45, 120, -1
+ 76, 0, -1, 77, -1, -1, 77, 80, -1, -1,
+ 78, 80, -1, 3, -1, 79, 43, 3, -1, 29,
+ -1, 82, -1, 118, -1, 81, 82, -1, 81, 118,
+ -1, 72, -1, 71, -1, 81, 72, -1, 81, 71,
+ -1, 88, -1, 105, -1, 106, -1, 49, 87, 47,
+ -1, 53, 79, 50, 84, 47, -1, 53, 79, 50,
+ 27, 47, -1, 50, 79, 47, -1, 53, 85, 49,
+ 84, 47, -1, 53, 85, 49, 27, 47, -1, 51,
+ 86, 47, -1, 52, 3, 47, -1, 52, 70, 47,
+ -1, 3, -1, 3, 3, 3, -1, 83, -1, 84,
+ 44, 83, -1, 3, -1, 70, -1, 3, -1, 85,
+ 3, 3, -1, 86, -1, 87, 44, 86, -1, 89,
+ 47, -1, 90, 94, -1, 91, -1, 79, 92, -1,
+ 79, -1, 45, 46, -1, 92, 45, 46, -1, 45,
+ 112, 46, -1, 93, 45, 112, 46, -1, 95, -1,
+ 94, 44, 95, -1, 96, -1, 96, 33, 97, -1,
+ 3, -1, 3, 92, -1, 3, 41, 42, -1, 3,
+ 41, 102, 42, -1, 112, -1, 99, -1, 39, 78,
+ 40, -1, 39, 40, -1, 39, 48, 97, 40, -1,
+ 39, 100, 40, -1, 39, 100, 48, 97, 40, -1,
+ 44, -1, 101, -1, 101, 44, -1, 97, -1, 101,
+ 44, 97, -1, 104, -1, 48, 104, -1, 102, 44,
+ 104, -1, 102, 48, 104, -1, 67, -1, -1, 103,
+ 90, -1, 103, 90, 96, -1, 103, 90, 96, 33,
+ 97, -1, 103, 90, 3, 96, -1, 103, 90, 3,
+ 96, 33, 97, -1, 90, 3, 41, 42, 120, -1,
+ 90, 3, 41, 102, 42, 120, -1, 55, 3, 98,
+ -1, 56, 88, -1, 35, -1, 112, 35, -1, 35,
+ 112, -1, 112, 35, 112, -1, 108, 43, 3, -1,
+ 79, 45, 112, 46, -1, 108, 45, 112, 46, -1,
+ 79, 45, 107, 46, -1, 108, 45, 107, 46, -1,
+ 79, 41, 42, -1, 79, 41, 110, 42, -1, 108,
+ 41, 42, -1, 108, 41, 110, 42, -1, 41, 112,
+ 42, -1, 41, 79, 42, -1, 66, -1, 112, -1,
+ 3, 33, 112, -1, 109, -1, 48, 109, -1, 110,
+ 44, 109, -1, 110, 48, 109, -1, 112, 44, 112,
+ -1, 111, 44, 112, -1, 79, -1, 108, -1, 69,
+ -1, 70, -1, 69, 112, -1, 41, 79, 42, 112,
+ -1, 41, 79, 92, 42, 112, -1, 25, 112, -1,
+ 26, 112, -1, 31, 112, -1, 112, 25, 112, -1,
+ 112, 26, 112, -1, 112, 27, 112, -1, 112, 28,
+ 112, -1, 112, 29, 112, -1, 112, 30, 112, -1,
+ 112, 20, 112, -1, 112, 21, 112, -1, 112, 22,
+ 112, -1, 112, 23, 112, -1, 112, 18, 112, -1,
+ 112, 19, 112, -1, 112, 15, 112, -1, 112, 14,
+ 112, -1, 112, 24, 112, -1, 112, 17, 112, -1,
+ 112, 16, 112, -1, 112, 31, 112, -1, 112, 8,
+ 112, -1, 57, 91, -1, 57, 91, 93, -1, 57,
+ 91, 93, 92, -1, 57, 91, 92, -1, 57, 91,
+ 92, 99, -1, 57, 91, 41, 42, 120, -1, 57,
+ 91, 92, 41, 42, 120, -1, 57, 91, 41, 102,
+ 42, 120, -1, 57, 91, 92, 41, 102, 42, 120,
+ -1, 112, 34, 112, 35, 112, -1, 112, 33, 112,
+ -1, 41, 111, 42, -1, 112, 113, 112, -1, 112,
+ 114, -1, 8, 112, -1, 7, 112, -1, 112, 8,
+ -1, 112, 4, 112, -1, 54, 39, 77, 40, -1,
+ 7, -1, 115, -1, 114, 115, -1, 115, 114, -1,
+ 114, 115, 114, -1, 39, 13, 112, 40, -1, 39,
+ 112, 40, -1, 39, 112, 44, 112, 40, -1, 39,
+ 112, 44, 112, 44, 112, 40, -1, 5, -1, 5,
+ 116, 5, -1, 5, 117, 5, -1, 6, -1, 9,
+ -1, 11, 112, -1, 11, 112, 38, 112, -1, 11,
+ 12, 112, -1, 11, 12, 112, 38, 112, -1, 10,
+ 112, -1, 10, 112, 38, 112, -1, 47, -1, 120,
+ -1, 119, 47, -1, 58, 41, 112, 42, 118, -1,
+ 58, 41, 112, 42, 118, 59, 118, -1, 60, 41,
+ 112, 42, 118, -1, 61, 118, 60, 41, 112, 42,
+ 47, -1, 62, 41, 121, 47, 122, 47, 123, 42,
+ 118, -1, 62, 41, 90, 3, 35, 112, 42, 118,
+ -1, 63, 47, -1, 64, 47, -1, 65, 47, -1,
+ 65, 112, 47, -1, 112, -1, 98, -1, -1, 124,
+ -1, 89, -1, -1, 112, -1, -1, 124, -1, 119,
+ -1, 124, 44, 119, -1
};
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
static const yytype_uint16 yyrline[] =
{
- 0, 192, 192, 196, 197, 202, 203, 208, 209, 210,
- 215, 216, 217, 219, 224, 225, 226, 228, 233, 234,
- 235, 236, 238, 240, 242, 243, 245, 247, 249, 250,
- 255, 257, 261, 262, 267, 268, 273, 275, 279, 280,
- 285, 289, 293, 294, 298, 302, 303, 307, 308, 313,
- 314, 319, 320, 325, 326, 327, 329, 334, 335, 339,
- 344, 345, 347, 349, 354, 355, 356, 360, 362, 367,
- 368, 369, 371, 376, 377, 381, 383, 385, 388, 391,
- 397, 399, 404, 405, 409, 410, 411, 412, 416, 417,
- 419, 420, 422, 423, 426, 430, 431, 433, 435, 437,
- 441, 442, 446, 447, 449, 451, 457, 458, 462, 463,
- 464, 465, 467, 468, 470, 472, 474, 476, 477, 478,
- 479, 480, 481, 482, 483, 484, 485, 486, 487, 488,
- 489, 490, 491, 492, 493, 494, 495, 496, 498, 500,
- 502, 504, 506, 508, 513, 515, 520, 522, 523, 524,
- 526, 532, 534, 537, 539, 540, 547, 548, 550, 553,
- 556, 562, 563, 564, 567, 573, 574, 576, 578, 579,
- 583, 585, 588, 591, 597, 598, 603, 604, 605, 606,
- 608, 610, 612, 614, 616, 618, 619, 620, 621, 625,
- 629, 633, 634, 635, 639, 640, 644, 645, 649, 650
+ 0, 191, 191, 195, 196, 201, 202, 207, 208, 209,
+ 214, 215, 216, 218, 223, 224, 225, 227, 232, 233,
+ 234, 235, 237, 239, 241, 242, 244, 246, 248, 249,
+ 254, 256, 260, 261, 266, 267, 272, 274, 278, 279,
+ 284, 288, 292, 293, 297, 301, 302, 306, 307, 312,
+ 313, 318, 319, 324, 325, 326, 328, 333, 334, 338,
+ 343, 344, 346, 348, 353, 354, 355, 359, 361, 366,
+ 367, 368, 370, 375, 376, 380, 382, 384, 387, 390,
+ 396, 398, 403, 404, 408, 409, 410, 411, 415, 416,
+ 418, 419, 421, 422, 425, 429, 430, 432, 434, 436,
+ 440, 441, 445, 446, 448, 450, 456, 457, 461, 462,
+ 463, 464, 466, 467, 469, 471, 473, 475, 476, 477,
+ 478, 479, 480, 481, 482, 483, 484, 485, 486, 487,
+ 488, 489, 490, 491, 492, 493, 494, 495, 497, 499,
+ 501, 503, 505, 507, 512, 514, 519, 521, 522, 523,
+ 525, 531, 533, 536, 538, 539, 546, 547, 549, 552,
+ 555, 561, 562, 563, 566, 572, 573, 575, 577, 578,
+ 582, 584, 587, 590, 596, 597, 602, 603, 604, 605,
+ 607, 609, 611, 613, 615, 617, 618, 619, 620, 624,
+ 628, 632, 633, 634, 638, 639, 643, 644, 648, 649
};
#endif
-#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
+#if YYDEBUG || YYERROR_VERBOSE || 0
/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
First, the terminals, then, starting at YYNTOKENS, nonterminals. */
static const char *const yytname[] =
@@ -695,13 +713,13 @@ static const char *const yytname[] =
"$end", "error", "$undefined", "ID", "SELFOP", "DOTS", "COLONS",
"DASHES", "INCR", "LONGDASH", "CONTROLS", "TENSION", "ATLEAST", "CURL",
"COR", "CAND", "BAR", "AMPERSAND", "EQ", "NEQ", "LT", "LE", "GT", "GE",
- "CARETS", "'+'", "'-'", "'*'", "'/'", "'%'", "'^'", "LOGNOT", "OPERATOR",
- "LOOSE", "ASSIGN", "'?'", "':'", "DIRTAG", "JOIN_PREC", "AND", "'{'",
- "'}'", "'('", "')'", "'.'", "','", "'['", "']'", "';'", "ELLIPSIS",
- "ACCESS", "UNRAVEL", "IMPORT", "INCLUDE", "FROM", "QUOTE", "STRUCT",
- "TYPEDEF", "NEW", "IF", "ELSE", "WHILE", "DO", "FOR", "BREAK",
- "CONTINUE", "RETURN_", "THIS", "EXPLICIT", "GARBAGE", "LIT", "STRING",
- "PERM", "MODIFIER", "UNARY", "EXP_IN_PARENS_RULE", "$accept", "file",
+ "CARETS", "'+'", "'-'", "'*'", "'/'", "'%'", "'^'", "OPERATOR", "LOOSE",
+ "ASSIGN", "'?'", "':'", "DIRTAG", "JOIN_PREC", "AND", "'{'", "'}'",
+ "'('", "')'", "'.'", "','", "'['", "']'", "';'", "ELLIPSIS", "ACCESS",
+ "UNRAVEL", "IMPORT", "INCLUDE", "FROM", "QUOTE", "STRUCT", "TYPEDEF",
+ "NEW", "IF", "ELSE", "WHILE", "DO", "FOR", "BREAK", "CONTINUE",
+ "RETURN_", "THIS", "EXPLICIT", "GARBAGE", "LIT", "STRING", "PERM",
+ "MODIFIER", "UNARY", "EXP_IN_PARENS_RULE", "$accept", "file",
"fileblock", "bareblock", "name", "runnable", "modifiers", "dec",
"idpair", "idpairlist", "strid", "stridpair", "stridpairlist", "vardec",
"barevardec", "type", "celltype", "dims", "dimexps", "decidlist",
@@ -709,7 +727,7 @@ static const char *const yytname[] =
"varinits", "formals", "explicitornot", "formal", "fundec", "typedec",
"slice", "value", "argument", "arglist", "tuple", "exp", "join", "dir",
"basicjoin", "tension", "controls", "stm", "stmexp", "blockstm",
- "forinit", "fortest", "forupdate", "stmexplist", 0
+ "forinit", "fortest", "forupdate", "stmexplist", YY_NULL
};
#endif
@@ -721,37 +739,37 @@ static const yytype_uint16 yytoknum[] =
0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
275, 276, 277, 278, 279, 43, 45, 42, 47, 37,
- 94, 280, 281, 282, 283, 63, 58, 284, 285, 286,
- 123, 125, 40, 41, 46, 44, 91, 93, 59, 287,
+ 94, 280, 281, 282, 63, 58, 283, 284, 285, 123,
+ 125, 40, 41, 46, 44, 91, 93, 59, 286, 287,
288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
- 308, 309, 310, 311, 312, 313
+ 308, 309, 310, 311, 312
};
# endif
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
static const yytype_uint8 yyr1[] =
{
- 0, 76, 77, 78, 78, 79, 79, 80, 80, 80,
- 81, 81, 81, 81, 82, 82, 82, 82, 83, 83,
- 83, 83, 83, 83, 83, 83, 83, 83, 83, 83,
- 84, 84, 85, 85, 86, 86, 87, 87, 88, 88,
- 89, 90, 91, 91, 92, 93, 93, 94, 94, 95,
- 95, 96, 96, 97, 97, 97, 97, 98, 98, 99,
- 100, 100, 100, 100, 101, 101, 101, 102, 102, 103,
- 103, 103, 103, 104, 104, 105, 105, 105, 105, 105,
- 106, 106, 107, 107, 108, 108, 108, 108, 109, 109,
- 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
- 110, 110, 111, 111, 111, 111, 112, 112, 113, 113,
- 113, 113, 113, 113, 113, 113, 113, 113, 113, 113,
- 113, 113, 113, 113, 113, 113, 113, 113, 113, 113,
- 113, 113, 113, 113, 113, 113, 113, 113, 113, 113,
- 113, 113, 113, 113, 113, 113, 113, 113, 113, 113,
- 113, 113, 113, 113, 113, 113, 114, 114, 114, 114,
- 114, 115, 115, 115, 115, 116, 116, 116, 116, 116,
- 117, 117, 117, 117, 118, 118, 119, 119, 119, 119,
- 119, 119, 119, 119, 119, 119, 119, 119, 119, 120,
- 121, 122, 122, 122, 123, 123, 124, 124, 125, 125
+ 0, 75, 76, 77, 77, 78, 78, 79, 79, 79,
+ 80, 80, 80, 80, 81, 81, 81, 81, 82, 82,
+ 82, 82, 82, 82, 82, 82, 82, 82, 82, 82,
+ 83, 83, 84, 84, 85, 85, 86, 86, 87, 87,
+ 88, 89, 90, 90, 91, 92, 92, 93, 93, 94,
+ 94, 95, 95, 96, 96, 96, 96, 97, 97, 98,
+ 99, 99, 99, 99, 100, 100, 100, 101, 101, 102,
+ 102, 102, 102, 103, 103, 104, 104, 104, 104, 104,
+ 105, 105, 106, 106, 107, 107, 107, 107, 108, 108,
+ 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
+ 109, 109, 110, 110, 110, 110, 111, 111, 112, 112,
+ 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
+ 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
+ 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
+ 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
+ 112, 112, 112, 112, 112, 112, 113, 113, 113, 113,
+ 113, 114, 114, 114, 114, 115, 115, 115, 115, 115,
+ 116, 116, 116, 116, 117, 117, 118, 118, 118, 118,
+ 118, 118, 118, 118, 118, 118, 118, 118, 118, 119,
+ 120, 121, 121, 121, 122, 122, 123, 123, 124, 124
};
/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
@@ -836,57 +854,57 @@ static const yytype_int16 yydefgoto[] =
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
STATE-NUM. */
-#define YYPACT_NINF -283
+#define YYPACT_NINF -282
static const yytype_int16 yypact[] =
{
- -283, 36, 399, -283, -283, 885, 885, 885, 885, -283,
- 885, -283, 885, -283, 14, 17, 14, 16, 8, 23,
- 53, 17, 17, 31, 41, 541, 46, 50, 101, 684,
- -283, 11, -283, -283, -283, 18, -283, 470, -283, -283,
- 111, 162, -283, -283, -283, -283, 237, 1547, -283, 157,
- -283, 243, 196, 196, 196, 196, -283, 145, 148, 60,
- 1148, 211, -283, 234, -283, 85, 13, 208, 212, 213,
- 216, -21, 218, -283, 231, 138, -283, 269, 229, 49,
- 885, 885, 217, 885, -283, -283, -283, 963, 196, 233,
- 277, 627, 238, -283, -283, -283, -283, -283, 96, 241,
- -283, 256, 641, 293, 698, 885, 34, -283, -283, 11,
- -283, 885, 885, 885, 885, 885, 885, 885, 885, 885,
- 885, 885, 885, 885, 885, 885, 885, 885, 885, 885,
- 885, 754, 885, -283, 258, -283, 698, -283, -283, 11,
- 126, -283, 885, -283, 885, 296, 14, -283, -283, -283,
- -283, -283, 38, 74, 328, -283, 254, 104, -14, 768,
- 105, 259, 1274, 1314, 260, -283, 303, -283, 261, 263,
- -283, 276, -283, 895, -283, 117, 1547, -283, 885, -283,
- 264, 1000, 266, -10, 238, 269, 811, -283, 134, -283,
- 267, 1037, 1547, 885, 842, 307, 310, 195, 1765, 1793,
- 1821, 1849, 1877, 1877, 408, 408, 408, 408, 548, 265,
- 265, 196, 196, 196, 196, 479, 1547, 1510, 885, 1190,
- 195, 258, -283, -283, 885, 1547, 1547, -283, -283, 313,
- 270, -283, 199, 272, 207, -283, 0, 231, 253, -283,
- 184, 17, -283, 1074, 584, 112, -283, 768, 238, 541,
- 541, 885, 121, 885, 885, 885, -283, -283, 895, 895,
- 1547, -283, 885, -283, -283, 231, 189, -283, -283, -283,
- 1547, -283, -283, -283, 1582, 885, 1619, -283, -283, 885,
- 1434, -283, 885, -283, -283, 319, -283, 320, -283, -283,
- -283, -283, 200, -283, -283, 231, 253, 253, 322, -283,
- -283, -283, 811, -283, -1, 281, 231, 220, 1111, 268,
- -283, 1354, 885, 1547, 279, -283, 1547, -283, -283, 1547,
- -283, 231, 885, 1656, 885, 1729, -283, 1232, -283, -283,
- -283, -283, -283, -283, 48, 295, 289, -283, 811, 811,
- -283, 231, -283, 541, 284, 1394, 885, -283, 1693, 885,
- 1693, -283, 885, 304, 811, -283, 298, -283, -283, -283,
- -283, 541, 294, 263, 1693, 1472, 811, -283, -283, -283,
- 541, -283, -283, -283
+ -282, 30, 398, -282, -282, 846, 846, 846, 846, -282,
+ 846, -282, 846, -282, 13, 20, 13, 17, 8, 12,
+ 53, 20, 20, 108, 126, 538, 131, 112, 143, 664,
+ -282, 11, -282, -282, -282, 60, -282, 468, -282, -282,
+ 157, 190, -282, -282, -282, -282, 220, 1493, -282, 165,
+ -282, 228, 192, 192, 192, 192, 1821, 145, 191, 1,
+ 1104, 226, -282, 232, -282, 51, 95, 198, 205, 211,
+ 213, 19, 215, -282, 229, 137, -282, 273, 235, 105,
+ 846, 846, 225, 846, -282, -282, -282, 924, 192, 218,
+ 283, 607, 248, -282, -282, -282, -282, -282, 146, 250,
+ -282, 263, 637, 292, 694, 846, 245, -282, -282, 11,
+ -282, 846, 846, 846, 846, 846, 846, 846, 846, 846,
+ 846, 846, 846, 846, 846, 846, 846, 846, 846, 846,
+ 846, 724, 846, -282, 267, -282, 694, -282, -282, 11,
+ 88, -282, 846, -282, 846, 305, 13, -282, -282, -282,
+ -282, -282, 37, 39, 328, -282, 264, 182, -21, 751,
+ 49, 266, 1227, 1266, 268, -282, 309, -282, 269, 270,
+ -282, 282, -282, 857, -282, 103, 1493, -282, 846, -282,
+ 272, 960, 275, -9, 248, 273, 793, -282, 113, -282,
+ 276, 996, 1493, 846, 804, 315, 318, 300, 1705, 1732,
+ 1759, 1786, 1813, 1813, 274, 274, 274, 274, 405, 262,
+ 262, 192, 192, 192, 192, 1821, 1493, 1457, 846, 1145,
+ 300, 267, -282, -282, 846, 1493, 1493, -282, -282, 329,
+ 290, -282, 193, 291, 194, -282, -7, 229, 278, -282,
+ 118, 20, -282, 1032, 580, 6, -282, 751, 248, 538,
+ 538, 846, 44, 846, 846, 846, -282, -282, 857, 857,
+ 1493, -282, 846, -282, -282, 229, 121, -282, -282, -282,
+ 1493, -282, -282, -282, 1527, 846, 1563, -282, -282, 846,
+ 1383, -282, 846, -282, -282, 337, -282, 338, -282, -282,
+ -282, -282, 135, -282, -282, 229, 278, 278, 340, -282,
+ -282, -282, 793, -282, -4, 302, 229, 176, 1068, 289,
+ -282, 1305, 846, 1493, 303, -282, 1493, -282, -282, 1493,
+ -282, 229, 846, 1599, 846, 1670, -282, 1186, -282, -282,
+ -282, -282, -282, -282, 16, 319, 316, -282, 793, 793,
+ -282, 229, -282, 538, 308, 1344, 846, -282, 1635, 846,
+ 1635, -282, 846, 325, 793, -282, 320, -282, -282, -282,
+ -282, 538, 321, 270, 1635, 1420, 793, -282, -282, -282,
+ 538, -282, -282, -282
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
{
- -283, -283, 273, -283, 10, 283, -283, 306, 54, 192,
- 330, -6, -283, 329, 275, -13, 333, -20, -283, -283,
- 167, -282, -210, 282, 202, -283, -283, -156, -283, -225,
- -283, -283, 262, -283, -123, 271, -283, -5, -283, -125,
- 227, -283, -283, -19, -79, -163, -283, -283, -283, 19
+ -282, -282, 293, -282, 10, 307, -282, 333, 75, 212,
+ 353, -6, -282, 351, 304, -13, 352, -20, -282, -282,
+ 188, -281, -210, 322, 216, -282, -282, -154, -282, -225,
+ -282, -282, 298, -282, -123, 301, -282, -5, -282, -125,
+ 271, -282, -282, -19, -79, -163, -282, -282, -282, 61
};
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
@@ -896,201 +914,196 @@ static const yytype_int16 yypgoto[] =
static const yytype_int16 yytable[] =
{
52, 53, 54, 55, 167, 56, 82, 60, 77, 222,
- 67, 70, 35, 294, 4, 92, 335, 61, 96, 68,
- 4, -44, 58, 90, 87, 66, 88, 266, 71, 237,
- 152, 75, 78, 265, 303, 238, 3, 9, 140, 238,
- 337, 229, 10, 291, 193, 194, 9, 35, 338, 238,
- 256, 157, 353, 12, 239, 92, 74, 90, 239, 160,
- 89, 148, 90, 73, 91, 230, 19, 35, 239, 22,
- 166, 332, 333, 80, 293, 162, 163, 229, 30, 62,
- 292, 31, 32, 81, 176, 62, 181, 69, 83, 307,
- 236, 158, 336, 35, 156, 159, 283, 176, 84, 191,
- 192, 233, 320, 141, 197, 142, 198, 199, 200, 201,
+ 67, 70, 35, 294, 4, 92, 61, 335, 96, 157,
+ 68, 237, 58, 4, 87, 66, 88, 238, 71, 266,
+ 3, 75, 78, 265, 303, 291, 337, 9, 140, 238,
+ 229, 238, 229, 141, 338, 142, 239, 35, 306, 9,
+ 256, 73, 12, 353, 238, 92, 74, 236, 239, 160,
+ 239, 156, 90, -44, 230, 19, 233, 35, 22, 152,
+ 166, 332, 333, 239, 293, 162, 163, 30, 62, 312,
+ 31, 32, 292, 62, 176, 236, 181, 69, 244, 156,
+ 245, 307, 336, 35, 182, 146, 283, 176, 147, 191,
+ 192, 89, 320, 90, 197, 91, 198, 199, 200, 201,
202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
212, 213, 214, 215, 216, 217, 219, 220, 356, 357,
- 146, 181, 331, 147, 223, 317, 318, 225, 183, 226,
- 228, 248, 156, 340, 367, 244, 236, 245, 4, 85,
- 156, 182, 5, 6, 243, 306, 372, 312, 347, 97,
- 257, 238, 258, 236, 35, 98, 259, 156, 176, 224,
- 7, 8, 182, 260, 9, 315, 10, 271, 358, 258,
- 239, 270, 90, 259, 156, 11, 137, 12, 274, 276,
- 89, 139, 90, 13, 91, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 135, 24, 25, 26, 27,
- 28, 29, 30, 280, -34, 31, 32, 33, 34, 284,
- 122, 123, 124, 125, 126, 127, 127, 295, 298, 296,
- 309, 310, 321, 297, 296, 131, 171, 145, 297, 270,
- 5, 6, 308, 330, 287, 296, 311, 288, 313, 297,
- 316, 75, 287, 176, 176, 290, 149, 319, 7, 8,
- 150, 151, 9, 341, 10, 296, -34, 167, 153, 297,
- 323, 11, 157, 90, 325, 12, 172, 327, 164, 102,
- 177, 103, 173, 104, 182, 89, 185, 90, 19, 136,
- 186, 22, 124, 125, 126, 127, 189, 270, 131, 227,
- 30, 179, 251, 31, 32, 247, 252, 345, 254, 253,
- 255, 261, 277, 264, 272, 278, 285, 348, 286, 350,
- 289, 239, 328, 229, 359, 334, 339, 346, 343, 354,
- 355, 4, 360, 270, 270, 5, 6, 370, 366, 368,
- 138, 329, 369, 95, 364, 234, 154, 365, 72, 270,
- 76, 373, 267, 7, 8, 79, 155, 9, 165, 10,
- 221, 270, 246, 0, 0, 363, 190, 0, 11, 235,
- 12, 0, 0, 188, 0, 0, 13, 0, 14, 15,
- 16, 17, 18, 19, 20, 21, 22, 23, 0, 24,
- 25, 26, 27, 28, 29, 30, 0, 0, 31, 32,
- 33, 34, 4, 0, 0, 0, 5, 6, 0, 0,
- 0, 0, 0, 106, 107, 108, 109, 110, 0, 0,
- 0, 0, 0, 0, 7, 8, 0, 0, 9, 0,
- 10, 0, 121, 122, 123, 124, 125, 126, 127, 11,
- 128, 12, 0, 0, 0, 0, 0, 13, 131, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 0,
- 24, 25, 26, 27, 28, 29, 30, 0, 0, 31,
- 32, 33, 34, 4, 0, 0, 0, 5, 6, 0,
- 0, 0, 0, 0, 106, 107, 108, 109, 110, 0,
- 0, 0, 0, 0, 0, 7, 8, 0, 0, 9,
- 0, 10, 0, 121, 122, 123, 124, 125, 126, 127,
- 11, 0, 12, 0, 0, 0, 0, 0, 13, 131,
- 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
- 0, 24, 25, 26, 27, 28, 29, 30, 0, 0,
- 31, 32, 93, 94, 4, 0, 0, 0, 5, 6,
- 0, 0, 0, 106, 107, 108, 109, 110, 0, 0,
- 0, 0, 0, 0, 0, 0, 7, 8, 0, 0,
- 9, 0, 10, 122, 123, 124, 125, 126, 127, 0,
- 0, 11, 0, 12, 0, 0, 0, 4, 131, 13,
- 0, 5, 6, 0, 0, 0, 19, 0, 0, 22,
- 23, 0, 24, 25, 26, 27, 28, 29, 30, 7,
- 8, 31, 32, 9, 0, 10, 0, 0, 0, 0,
- 0, 0, 0, 0, 244, 300, 12, 0, 0, 301,
- 4, 0, 0, 302, 5, 6, 0, 0, 0, 19,
- 0, 0, 22, 0, 171, 0, 0, 0, 5, 6,
- 0, 30, 7, 8, 31, 32, 9, 0, 10, 0,
- 0, 0, 0, 178, 0, 0, 7, 8, 0, 12,
- 9, 0, 10, 0, 179, 0, 0, 0, 0, 0,
- 0, 0, 19, 12, 187, 22, 0, 4, 0, 0,
- 173, 5, 6, 0, 30, 0, 19, 31, 32, 22,
- 0, 4, 0, 0, 0, 5, 6, 0, 30, 7,
- 8, 31, 32, 9, 0, 10, 0, 0, 0, 0,
- 0, 0, 0, 7, 8, 0, 12, 9, 0, 10,
- 0, 0, 86, 0, 178, 0, 0, 0, 0, 19,
- 12, 0, 22, 0, 0, 0, 0, 0, 0, 0,
- 0, 30, 0, 19, 31, 32, 22, 4, 0, 0,
- 0, 5, 6, 0, 0, 30, 0, 218, 31, 32,
- 0, 4, 0, 0, 0, 5, 6, 0, 0, 7,
- 8, 0, 0, 9, 0, 10, 0, 0, 0, 0,
- 0, 0, 0, 7, 8, 0, 12, 9, 0, 10,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 19,
- 12, 0, 22, 0, 4, 179, 0, 0, 5, 6,
- 0, 30, 0, 19, 31, 32, 22, 0, 0, 0,
- 0, 0, 0, 0, 0, 30, 7, 8, 31, 32,
- 9, 0, 10, 0, 0, 4, 0, 0, 0, 5,
- 6, 244, 0, 12, 275, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 19, 7, 8, 22,
- 0, 9, 0, 10, 0, 0, 0, 0, 30, 0,
- 0, 31, 32, 0, 12, 0, 0, 0, 4, 0,
- 0, 0, 5, 6, 0, 0, 0, 19, 171, 0,
- 22, 0, 5, 6, 0, 0, 0, 0, 0, 30,
- 7, 8, 31, 32, 9, 0, 10, 0, 0, 0,
- 7, 8, 0, 0, 9, 0, 10, 12, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 12, 0, 0,
+ 224, 181, 331, 182, 223, 317, 318, 225, 90, 226,
+ 228, 248, 148, 340, 367, 257, 158, 258, 4, 80,
+ 159, 259, 5, 6, 243, 271, 372, 258, 347, 84,
+ 295, 259, 296, 321, 35, 296, 297, 81, 176, 297,
+ 7, 8, 83, 260, 9, 315, 10, 330, 358, 296,
+ 90, 270, 156, 297, 11, 137, 12, 183, 274, 276,
+ 85, 156, 13, 98, 14, 15, 16, 17, 18, 19,
+ 20, 21, 22, 23, 97, 24, 25, 26, 27, 28,
+ 29, 30, 135, 280, 31, 32, 33, 34, 341, 284,
+ 296, 171, 127, 236, 297, 5, 6, 156, 298, -34,
+ 309, 310, 89, 139, 90, 145, 91, 287, 287, 270,
+ 288, 290, 308, 7, 8, 149, 311, 9, 313, 10,
+ 316, 75, 150, 176, 176, 193, 194, 319, 151, 12,
+ 172, 102, -34, 103, 153, 104, 173, 167, 11, 89,
+ 323, 90, 19, 136, 325, 22, 157, 327, 90, 106,
+ 107, 108, 109, 110, 30, 164, 177, 31, 32, 124,
+ 125, 126, 127, 182, 185, 189, 186, 270, 121, 122,
+ 123, 124, 125, 126, 127, 128, 131, 345, 227, 251,
+ 179, 247, 252, 131, 254, 255, 253, 348, 261, 350,
+ 277, 264, 272, 278, 359, 122, 123, 124, 125, 126,
+ 127, 4, 285, 270, 270, 5, 6, 286, 289, 131,
+ 328, 229, 369, 334, 364, 239, 339, 365, 343, 270,
+ 346, 373, 354, 7, 8, 360, 355, 9, 366, 10,
+ 368, 270, 329, 370, 138, 234, 154, 11, 235, 12,
+ 95, 72, 76, 267, 79, 13, 246, 14, 15, 16,
+ 17, 18, 19, 20, 21, 22, 23, 165, 24, 25,
+ 26, 27, 28, 29, 30, 0, 155, 31, 32, 33,
+ 34, 4, 190, 188, 221, 5, 6, 363, 0, 0,
+ 106, 107, 108, 109, 110, 0, 0, 0, 0, 0,
+ 0, 0, 0, 7, 8, 0, 0, 9, 0, 10,
+ 122, 123, 124, 125, 126, 127, 0, 11, 0, 12,
+ 0, 0, 0, 0, 131, 13, 0, 14, 15, 16,
+ 17, 18, 19, 20, 21, 22, 23, 0, 24, 25,
+ 26, 27, 28, 29, 30, 0, 0, 31, 32, 33,
+ 34, 4, 0, 0, 0, 5, 6, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 7, 8, 0, 0, 9, 0, 10,
+ 0, 0, 0, 0, 0, 0, 0, 11, 0, 12,
+ 0, 0, 0, 0, 0, 13, 0, 14, 15, 16,
+ 17, 18, 19, 20, 21, 22, 23, 0, 24, 25,
+ 26, 27, 28, 29, 30, 0, 0, 31, 32, 93,
+ 94, 4, 0, 0, 0, 5, 6, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 7, 8, 0, 0, 9, 0, 10,
+ 0, 0, 0, 0, 0, 0, 0, 11, 0, 12,
+ 0, 0, 0, 4, 0, 13, 0, 5, 6, 0,
+ 0, 0, 19, 0, 0, 22, 23, 0, 24, 25,
+ 26, 27, 28, 29, 30, 7, 8, 31, 32, 9,
+ 4, 10, 0, 0, 5, 6, 0, 0, 0, 244,
+ 300, 12, 0, 0, 301, 0, 0, 0, 302, 0,
+ 0, 0, 7, 8, 19, 0, 9, 22, 10, 0,
+ 171, 0, 178, 0, 5, 6, 30, 0, 12, 31,
+ 32, 0, 0, 179, 0, 0, 0, 0, 0, 0,
+ 0, 19, 7, 8, 22, 0, 9, 4, 10, 0,
+ 0, 5, 6, 30, 0, 0, 31, 32, 12, 187,
+ 0, 0, 0, 0, 0, 173, 0, 0, 0, 7,
+ 8, 19, 0, 9, 22, 10, 0, 4, 0, 0,
+ 0, 5, 6, 30, 0, 12, 31, 32, 0, 0,
+ 0, 86, 0, 0, 0, 0, 0, 0, 19, 7,
+ 8, 22, 0, 9, 0, 10, 0, 4, 0, 178,
+ 30, 5, 6, 31, 32, 12, 0, 218, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 19, 7,
+ 8, 22, 0, 9, 4, 10, 0, 0, 5, 6,
+ 30, 0, 0, 31, 32, 12, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 7, 8, 19, 0,
+ 9, 22, 10, 0, 0, 0, 0, 0, 0, 0,
+ 30, 0, 12, 31, 32, 0, 4, 179, 0, 0,
+ 5, 6, 0, 0, 0, 19, 0, 4, 22, 0,
+ 0, 5, 6, 0, 0, 0, 275, 30, 7, 8,
+ 31, 32, 9, 0, 10, 0, 0, 0, 0, 7,
+ 8, 0, 244, 9, 12, 10, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 12, 0, 19, 0, 4,
+ 22, 0, 0, 5, 6, 0, 0, 0, 19, 30,
+ 171, 22, 31, 32, 5, 6, 0, 0, 0, 0,
+ 30, 7, 8, 31, 32, 9, 0, 10, 0, 0,
+ 0, 0, 7, 8, 0, 0, 9, 12, 10, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 12, 0,
19, 0, 0, 22, 0, 0, 0, 0, 0, 0,
- 19, 0, 30, 22, 0, 31, 32, 0, 0, 0,
- 0, 0, 30, 0, 0, 31, 32, 105, 106, 107,
- 108, 109, 110, 0, 0, 0, 0, 111, 112, 113,
- 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
- 124, 125, 126, 127, 0, 128, 0, 129, 130, 0,
+ 0, 19, 30, 0, 22, 31, 32, 0, 0, 0,
+ 0, 0, 0, 30, 0, 0, 31, 32, 105, 106,
+ 107, 108, 109, 110, 0, 0, 0, 0, 111, 112,
+ 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
+ 123, 124, 125, 126, 127, 128, 0, 129, 130, 0,
0, 0, 0, 131, 105, 106, 107, 108, 109, 110,
0, 170, 0, 0, 111, 112, 113, 114, 115, 116,
117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
- 127, 0, 128, 0, 129, 130, 262, 0, 0, 0,
- 131, 105, 106, 107, 108, 109, 110, 263, 0, 0,
- 0, 111, 112, 113, 114, 115, 116, 117, 118, 119,
- 120, 121, 122, 123, 124, 125, 126, 127, 0, 128,
- 0, 129, 130, 262, 0, 0, 0, 131, 105, 106,
- 107, 108, 109, 110, 273, 0, 0, 0, 111, 112,
- 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
- 123, 124, 125, 126, 127, 0, 128, 0, 129, 130,
- 0, 0, 0, 0, 131, 105, 106, 107, 108, 109,
- 110, 299, 0, 0, 0, 111, 112, 113, 114, 115,
- 116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
- 126, 127, 0, 128, 0, 129, 130, 0, 0, 0,
- 0, 131, 105, 106, 107, 108, 109, 110, 342, 0,
- 0, 0, 111, 112, 113, 114, 115, 116, 117, 118,
- 119, 120, 121, 122, 123, 124, 125, 126, 127, 0,
- 128, 0, 129, 130, 0, 0, 0, 0, 131, 0,
- 0, 143, 0, 144, 105, 106, 107, 108, 109, 110,
- 0, 0, 0, 0, 111, 112, 113, 114, 115, 116,
- 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
- 127, 0, 128, 0, 129, 130, 0, 0, 0, 0,
- 131, 281, 0, 0, 0, 282, 105, 106, 107, 108,
- 109, 110, 0, 0, 0, 0, 111, 112, 113, 114,
+ 127, 128, 0, 129, 130, 262, 0, 0, 0, 131,
+ 105, 106, 107, 108, 109, 110, 263, 0, 0, 0,
+ 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
+ 121, 122, 123, 124, 125, 126, 127, 128, 0, 129,
+ 130, 262, 0, 0, 0, 131, 105, 106, 107, 108,
+ 109, 110, 273, 0, 0, 0, 111, 112, 113, 114,
115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
- 125, 126, 127, 0, 128, 0, 129, 130, 0, 0,
- 0, 0, 131, 351, 0, 0, 0, 352, 105, 106,
- 107, 108, 109, 110, 0, 0, 0, 0, 111, 112,
- 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
- 123, 124, 125, 126, 127, 0, 128, 0, 129, 130,
- 0, 0, 0, 0, 131, 0, 0, 249, 105, 106,
- 107, 108, 109, 110, 0, 0, 0, 0, 111, 112,
- 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
- 123, 124, 125, 126, 127, 0, 128, 0, 129, 130,
- 0, 0, 0, 0, 131, 0, 0, 250, 105, 106,
- 107, 108, 109, 110, 0, 0, 0, 0, 111, 112,
+ 125, 126, 127, 128, 0, 129, 130, 0, 0, 0,
+ 0, 131, 105, 106, 107, 108, 109, 110, 299, 0,
+ 0, 0, 111, 112, 113, 114, 115, 116, 117, 118,
+ 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
+ 0, 129, 130, 0, 0, 0, 0, 131, 105, 106,
+ 107, 108, 109, 110, 342, 0, 0, 0, 111, 112,
113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
- 123, 124, 125, 126, 127, 0, 128, 0, 129, 130,
+ 123, 124, 125, 126, 127, 128, 0, 129, 130, 0,
+ 0, 0, 0, 131, 0, 0, 143, 0, 144, 105,
+ 106, 107, 108, 109, 110, 0, 0, 0, 0, 111,
+ 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
+ 122, 123, 124, 125, 126, 127, 128, 0, 129, 130,
+ 0, 0, 0, 0, 131, 281, 0, 0, 0, 282,
+ 105, 106, 107, 108, 109, 110, 0, 0, 0, 0,
+ 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
+ 121, 122, 123, 124, 125, 126, 127, 128, 0, 129,
+ 130, 0, 0, 0, 0, 131, 351, 0, 0, 0,
+ 352, 105, 106, 107, 108, 109, 110, 0, 0, 0,
+ 0, 111, 112, 113, 114, 115, 116, 117, 118, 119,
+ 120, 121, 122, 123, 124, 125, 126, 127, 128, 0,
+ 129, 130, 0, 0, 0, 0, 131, 0, 0, 249,
+ 105, 106, 107, 108, 109, 110, 0, 0, 0, 0,
+ 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
+ 121, 122, 123, 124, 125, 126, 127, 128, 0, 129,
+ 130, 0, 0, 0, 0, 131, 0, 0, 250, 105,
+ 106, 107, 108, 109, 110, 0, 0, 0, 0, 111,
+ 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
+ 122, 123, 124, 125, 126, 127, 128, 0, 129, 130,
0, 0, 0, 0, 131, 0, 0, 344, 105, 106,
107, 108, 109, 110, 0, 0, 0, 0, 111, 112,
113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
- 123, 124, 125, 126, 127, 0, 128, 0, 129, 130,
- 0, 0, 0, 0, 131, 0, 0, 361, 105, 106,
- 107, 108, 109, 110, 0, 0, 0, 0, 111, 112,
- 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
- 123, 124, 125, 126, 127, 0, 128, 0, 129, 130,
- 0, 0, 0, 0, 131, 326, 105, 106, 107, 108,
- 109, 110, 0, 0, 0, 0, 111, 112, 113, 114,
- 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
- 125, 126, 127, 0, 128, 0, 129, 130, 0, 0,
- 0, 0, 131, 371, 105, 106, 107, 108, 109, 110,
+ 123, 124, 125, 126, 127, 128, 0, 129, 130, 0,
+ 0, 0, 0, 131, 0, 0, 361, 105, 106, 107,
+ 108, 109, 110, 0, 0, 0, 0, 111, 112, 113,
+ 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
+ 124, 125, 126, 127, 128, 0, 129, 130, 0, 0,
+ 0, 0, 131, 326, 105, 106, 107, 108, 109, 110,
0, 0, 0, 0, 111, 112, 113, 114, 115, 116,
117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
- 127, 0, 128, 0, 129, 130, 279, 0, 0, 0,
- 131, 105, 106, 107, 108, 109, 110, 0, 0, 0,
+ 127, 128, 0, 129, 130, 0, 0, 0, 0, 131,
+ 371, 105, 106, 107, 108, 109, 110, 0, 0, 0,
0, 111, 112, 113, 114, 115, 116, 117, 118, 119,
- 120, 121, 122, 123, 124, 125, 126, 127, 0, 128,
- 0, 129, 130, 0, 0, 0, 105, 131, 107, 108,
- 109, 110, 0, 0, 0, 0, 111, 112, 113, 114,
- 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
- 125, 126, 127, 0, 128, 0, 129, 130, 0, 0,
- 0, 322, 131, 105, 0, 107, 108, 109, 110, 0,
- 0, 0, 0, 111, 112, 113, 114, 115, 116, 117,
- 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
- 0, 128, 0, 129, 130, 0, 0, 0, 324, 131,
- 105, 0, 107, 108, 109, 110, 0, 0, 0, 0,
- 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
- 121, 122, 123, 124, 125, 126, 127, 0, 128, 0,
- 129, 130, 0, 0, 0, 349, 131, 105, 0, 107,
+ 120, 121, 122, 123, 124, 125, 126, 127, 128, 0,
+ 129, 130, 279, 0, 0, 0, 131, 105, 106, 107,
+ 108, 109, 110, 0, 0, 0, 0, 111, 112, 113,
+ 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
+ 124, 125, 126, 127, 128, 0, 129, 130, 0, 0,
+ 0, 105, 131, 107, 108, 109, 110, 0, 0, 0,
+ 0, 111, 112, 113, 114, 115, 116, 117, 118, 119,
+ 120, 121, 122, 123, 124, 125, 126, 127, 128, 0,
+ 129, 130, 0, 0, 0, 322, 131, 105, 0, 107,
108, 109, 110, 0, 0, 0, 0, 111, 112, 113,
114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
- 124, 125, 126, 127, 0, 128, 0, 129, 130, 0,
- 0, 0, 0, 131, 106, 107, 108, 109, 110, 0,
+ 124, 125, 126, 127, 128, 0, 129, 130, 0, 0,
+ 0, 324, 131, 105, 0, 107, 108, 109, 110, 0,
0, 0, 0, 111, 112, 113, 114, 115, 116, 117,
118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
- 0, 128, 0, 0, 130, 0, 0, 0, 0, 131,
+ 128, 0, 129, 130, 0, 0, 0, 349, 131, 105,
+ 0, 107, 108, 109, 110, 0, 0, 0, 0, 111,
+ 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
+ 122, 123, 124, 125, 126, 127, 128, 0, 129, 130,
+ 0, 0, 0, 0, 131, 106, 107, 108, 109, 110,
+ 0, 0, 0, 0, 111, 112, 113, 114, 115, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
+ 127, 128, 0, 0, 130, 0, 0, 0, 0, 131,
106, 107, 108, 109, 110, 0, 0, 0, 0, 0,
112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
- 122, 123, 124, 125, 126, 127, 0, 128, 106, 107,
- 108, 109, 110, 0, 0, 131, 0, 0, 0, 113,
- 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
- 124, 125, 126, 127, 0, 128, 106, 107, 108, 109,
- 110, 0, 0, 131, 0, 0, 0, 0, 114, 115,
- 116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
- 126, 127, 0, 128, 106, 107, 108, 109, 110, 0,
- 0, 131, 0, 0, 0, 0, 0, 115, 116, 117,
+ 122, 123, 124, 125, 126, 127, 128, 106, 107, 108,
+ 109, 110, 0, 0, 131, 0, 0, 0, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 125, 126, 127, 128, 106, 107, 108, 109, 110, 0,
+ 0, 131, 0, 0, 0, 0, 114, 115, 116, 117,
118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
- 0, 128, 106, 107, 108, 109, 110, 0, 0, 131,
- 0, 0, 0, 0, 0, 0, 0, 117, 118, 119,
- 120, 121, 122, 123, 124, 125, 126, 127, 0, 128,
- 0, 0, 0, 0, 0, 0, 0, 131
+ 128, 106, 107, 108, 109, 110, 0, 0, 131, 0,
+ 0, 0, 0, 0, 115, 116, 117, 118, 119, 120,
+ 121, 122, 123, 124, 125, 126, 127, 128, 106, 107,
+ 108, 109, 110, 0, 0, 131, 106, 107, 108, 109,
+ 110, 0, 0, 117, 118, 119, 120, 121, 122, 123,
+ 124, 125, 126, 127, 128, 121, 122, 123, 124, 125,
+ 126, 127, 131, 0, 0, 0, 0, 0, 0, 0,
+ 131
};
#define yypact_value_is_default(yystate) \
- ((yystate) == (-283))
+ ((yystate) == (-282))
#define yytable_value_is_error(yytable_value) \
YYID (0)
@@ -1098,241 +1111,236 @@ static const yytype_int16 yytable[] =
static const yytype_int16 yycheck[] =
{
5, 6, 7, 8, 83, 10, 25, 12, 21, 134,
- 16, 3, 2, 238, 3, 35, 298, 3, 37, 3,
- 3, 3, 12, 44, 29, 15, 31, 183, 18, 43,
- 51, 21, 22, 43, 244, 49, 0, 29, 58, 49,
- 41, 3, 31, 43, 10, 11, 29, 37, 49, 49,
- 173, 3, 334, 42, 68, 75, 3, 44, 68, 79,
- 42, 48, 44, 40, 46, 27, 55, 57, 68, 58,
- 83, 296, 297, 42, 237, 80, 81, 3, 67, 71,
- 236, 70, 71, 42, 89, 71, 91, 71, 42, 245,
- 42, 42, 302, 83, 46, 46, 221, 102, 48, 104,
- 105, 27, 265, 43, 109, 45, 111, 112, 113, 114,
+ 16, 3, 2, 238, 3, 35, 3, 298, 37, 3,
+ 3, 42, 12, 3, 29, 15, 31, 48, 18, 183,
+ 0, 21, 22, 42, 244, 42, 40, 29, 58, 48,
+ 3, 48, 3, 42, 48, 44, 67, 37, 42, 29,
+ 173, 39, 41, 334, 48, 75, 3, 41, 67, 79,
+ 67, 45, 43, 3, 27, 54, 27, 57, 57, 50,
+ 83, 296, 297, 67, 237, 80, 81, 66, 70, 35,
+ 69, 70, 236, 70, 89, 41, 91, 70, 39, 45,
+ 41, 245, 302, 83, 45, 44, 221, 102, 47, 104,
+ 105, 41, 265, 43, 109, 45, 111, 112, 113, 114,
115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
125, 126, 127, 128, 129, 130, 131, 132, 338, 339,
- 45, 136, 295, 48, 139, 258, 259, 142, 42, 144,
- 146, 161, 46, 306, 354, 40, 42, 42, 3, 48,
- 46, 46, 7, 8, 159, 43, 366, 36, 321, 48,
- 43, 49, 45, 42, 154, 3, 49, 46, 173, 43,
- 25, 26, 46, 178, 29, 254, 31, 43, 341, 45,
- 68, 186, 44, 49, 46, 40, 41, 42, 193, 194,
- 42, 43, 44, 48, 46, 50, 51, 52, 53, 54,
- 55, 56, 57, 58, 59, 48, 61, 62, 63, 64,
- 65, 66, 67, 218, 3, 70, 71, 72, 73, 224,
- 25, 26, 27, 28, 29, 30, 30, 43, 241, 45,
- 249, 250, 43, 49, 45, 40, 3, 3, 49, 244,
- 7, 8, 247, 43, 45, 45, 251, 48, 253, 49,
- 255, 241, 45, 258, 259, 48, 48, 262, 25, 26,
- 48, 48, 29, 43, 31, 45, 50, 346, 50, 49,
- 275, 40, 3, 44, 279, 42, 43, 282, 61, 42,
- 3, 44, 49, 46, 46, 42, 45, 44, 55, 46,
- 34, 58, 27, 28, 29, 30, 3, 302, 40, 3,
- 67, 47, 42, 70, 71, 46, 3, 312, 45, 48,
- 34, 47, 5, 47, 47, 5, 3, 322, 48, 324,
- 48, 68, 3, 3, 343, 3, 45, 48, 60, 34,
- 41, 3, 48, 338, 339, 7, 8, 43, 34, 41,
- 57, 287, 361, 37, 349, 153, 73, 352, 18, 354,
- 21, 370, 185, 25, 26, 22, 74, 29, 83, 31,
- 133, 366, 160, -1, -1, 346, 104, -1, 40, 41,
- 42, -1, -1, 102, -1, -1, 48, -1, 50, 51,
- 52, 53, 54, 55, 56, 57, 58, 59, -1, 61,
- 62, 63, 64, 65, 66, 67, -1, -1, 70, 71,
- 72, 73, 3, -1, -1, -1, 7, 8, -1, -1,
- -1, -1, -1, 5, 6, 7, 8, 9, -1, -1,
- -1, -1, -1, -1, 25, 26, -1, -1, 29, -1,
- 31, -1, 24, 25, 26, 27, 28, 29, 30, 40,
- 32, 42, -1, -1, -1, -1, -1, 48, 40, 50,
- 51, 52, 53, 54, 55, 56, 57, 58, 59, -1,
- 61, 62, 63, 64, 65, 66, 67, -1, -1, 70,
- 71, 72, 73, 3, -1, -1, -1, 7, 8, -1,
- -1, -1, -1, -1, 5, 6, 7, 8, 9, -1,
- -1, -1, -1, -1, -1, 25, 26, -1, -1, 29,
- -1, 31, -1, 24, 25, 26, 27, 28, 29, 30,
- 40, -1, 42, -1, -1, -1, -1, -1, 48, 40,
- 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
- -1, 61, 62, 63, 64, 65, 66, 67, -1, -1,
- 70, 71, 72, 73, 3, -1, -1, -1, 7, 8,
- -1, -1, -1, 5, 6, 7, 8, 9, -1, -1,
- -1, -1, -1, -1, -1, -1, 25, 26, -1, -1,
- 29, -1, 31, 25, 26, 27, 28, 29, 30, -1,
- -1, 40, -1, 42, -1, -1, -1, 3, 40, 48,
- -1, 7, 8, -1, -1, -1, 55, -1, -1, 58,
- 59, -1, 61, 62, 63, 64, 65, 66, 67, 25,
- 26, 70, 71, 29, -1, 31, -1, -1, -1, -1,
- -1, -1, -1, -1, 40, 41, 42, -1, -1, 45,
- 3, -1, -1, 49, 7, 8, -1, -1, -1, 55,
- -1, -1, 58, -1, 3, -1, -1, -1, 7, 8,
- -1, 67, 25, 26, 70, 71, 29, -1, 31, -1,
- -1, -1, -1, 36, -1, -1, 25, 26, -1, 42,
- 29, -1, 31, -1, 47, -1, -1, -1, -1, -1,
- -1, -1, 55, 42, 43, 58, -1, 3, -1, -1,
- 49, 7, 8, -1, 67, -1, 55, 70, 71, 58,
- -1, 3, -1, -1, -1, 7, 8, -1, 67, 25,
- 26, 70, 71, 29, -1, 31, -1, -1, -1, -1,
- -1, -1, -1, 25, 26, -1, 42, 29, -1, 31,
- -1, -1, 48, -1, 36, -1, -1, -1, -1, 55,
- 42, -1, 58, -1, -1, -1, -1, -1, -1, -1,
- -1, 67, -1, 55, 70, 71, 58, 3, -1, -1,
- -1, 7, 8, -1, -1, 67, -1, 13, 70, 71,
- -1, 3, -1, -1, -1, 7, 8, -1, -1, 25,
- 26, -1, -1, 29, -1, 31, -1, -1, -1, -1,
- -1, -1, -1, 25, 26, -1, 42, 29, -1, 31,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 55,
- 42, -1, 58, -1, 3, 47, -1, -1, 7, 8,
- -1, 67, -1, 55, 70, 71, 58, -1, -1, -1,
- -1, -1, -1, -1, -1, 67, 25, 26, 70, 71,
- 29, -1, 31, -1, -1, 3, -1, -1, -1, 7,
- 8, 40, -1, 42, 12, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 55, 25, 26, 58,
- -1, 29, -1, 31, -1, -1, -1, -1, 67, -1,
- -1, 70, 71, -1, 42, -1, -1, -1, 3, -1,
- -1, -1, 7, 8, -1, -1, -1, 55, 3, -1,
- 58, -1, 7, 8, -1, -1, -1, -1, -1, 67,
- 25, 26, 70, 71, 29, -1, 31, -1, -1, -1,
- 25, 26, -1, -1, 29, -1, 31, 42, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 42, -1, -1,
- 55, -1, -1, 58, -1, -1, -1, -1, -1, -1,
- 55, -1, 67, 58, -1, 70, 71, -1, -1, -1,
- -1, -1, 67, -1, -1, 70, 71, 4, 5, 6,
- 7, 8, 9, -1, -1, -1, -1, 14, 15, 16,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, -1, 32, -1, 34, 35, -1,
- -1, -1, -1, 40, 4, 5, 6, 7, 8, 9,
- -1, 48, -1, -1, 14, 15, 16, 17, 18, 19,
- 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
- 30, -1, 32, -1, 34, 35, 36, -1, -1, -1,
- 40, 4, 5, 6, 7, 8, 9, 47, -1, -1,
- -1, 14, 15, 16, 17, 18, 19, 20, 21, 22,
- 23, 24, 25, 26, 27, 28, 29, 30, -1, 32,
- -1, 34, 35, 36, -1, -1, -1, 40, 4, 5,
- 6, 7, 8, 9, 47, -1, -1, -1, 14, 15,
+ 42, 136, 295, 45, 139, 258, 259, 142, 43, 144,
+ 146, 161, 47, 306, 354, 42, 41, 44, 3, 41,
+ 45, 48, 7, 8, 159, 42, 366, 44, 321, 47,
+ 42, 48, 44, 42, 154, 44, 48, 41, 173, 48,
+ 25, 26, 41, 178, 29, 254, 31, 42, 341, 44,
+ 43, 186, 45, 48, 39, 40, 41, 41, 193, 194,
+ 47, 45, 47, 3, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 47, 60, 61, 62, 63, 64,
+ 65, 66, 47, 218, 69, 70, 71, 72, 42, 224,
+ 44, 3, 30, 41, 48, 7, 8, 45, 241, 3,
+ 249, 250, 41, 42, 43, 3, 45, 44, 44, 244,
+ 47, 47, 247, 25, 26, 47, 251, 29, 253, 31,
+ 255, 241, 47, 258, 259, 10, 11, 262, 47, 41,
+ 42, 41, 49, 43, 49, 45, 48, 346, 39, 41,
+ 275, 43, 54, 45, 279, 57, 3, 282, 43, 5,
+ 6, 7, 8, 9, 66, 60, 3, 69, 70, 27,
+ 28, 29, 30, 45, 44, 3, 33, 302, 24, 25,
+ 26, 27, 28, 29, 30, 31, 39, 312, 3, 41,
+ 46, 45, 3, 39, 44, 33, 47, 322, 46, 324,
+ 5, 46, 46, 5, 343, 25, 26, 27, 28, 29,
+ 30, 3, 3, 338, 339, 7, 8, 47, 47, 39,
+ 3, 3, 361, 3, 349, 67, 44, 352, 59, 354,
+ 47, 370, 33, 25, 26, 47, 40, 29, 33, 31,
+ 40, 366, 287, 42, 57, 153, 73, 39, 40, 41,
+ 37, 18, 21, 185, 22, 47, 160, 49, 50, 51,
+ 52, 53, 54, 55, 56, 57, 58, 83, 60, 61,
+ 62, 63, 64, 65, 66, -1, 74, 69, 70, 71,
+ 72, 3, 104, 102, 133, 7, 8, 346, -1, -1,
+ 5, 6, 7, 8, 9, -1, -1, -1, -1, -1,
+ -1, -1, -1, 25, 26, -1, -1, 29, -1, 31,
+ 25, 26, 27, 28, 29, 30, -1, 39, -1, 41,
+ -1, -1, -1, -1, 39, 47, -1, 49, 50, 51,
+ 52, 53, 54, 55, 56, 57, 58, -1, 60, 61,
+ 62, 63, 64, 65, 66, -1, -1, 69, 70, 71,
+ 72, 3, -1, -1, -1, 7, 8, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 25, 26, -1, -1, 29, -1, 31,
+ -1, -1, -1, -1, -1, -1, -1, 39, -1, 41,
+ -1, -1, -1, -1, -1, 47, -1, 49, 50, 51,
+ 52, 53, 54, 55, 56, 57, 58, -1, 60, 61,
+ 62, 63, 64, 65, 66, -1, -1, 69, 70, 71,
+ 72, 3, -1, -1, -1, 7, 8, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 25, 26, -1, -1, 29, -1, 31,
+ -1, -1, -1, -1, -1, -1, -1, 39, -1, 41,
+ -1, -1, -1, 3, -1, 47, -1, 7, 8, -1,
+ -1, -1, 54, -1, -1, 57, 58, -1, 60, 61,
+ 62, 63, 64, 65, 66, 25, 26, 69, 70, 29,
+ 3, 31, -1, -1, 7, 8, -1, -1, -1, 39,
+ 40, 41, -1, -1, 44, -1, -1, -1, 48, -1,
+ -1, -1, 25, 26, 54, -1, 29, 57, 31, -1,
+ 3, -1, 35, -1, 7, 8, 66, -1, 41, 69,
+ 70, -1, -1, 46, -1, -1, -1, -1, -1, -1,
+ -1, 54, 25, 26, 57, -1, 29, 3, 31, -1,
+ -1, 7, 8, 66, -1, -1, 69, 70, 41, 42,
+ -1, -1, -1, -1, -1, 48, -1, -1, -1, 25,
+ 26, 54, -1, 29, 57, 31, -1, 3, -1, -1,
+ -1, 7, 8, 66, -1, 41, 69, 70, -1, -1,
+ -1, 47, -1, -1, -1, -1, -1, -1, 54, 25,
+ 26, 57, -1, 29, -1, 31, -1, 3, -1, 35,
+ 66, 7, 8, 69, 70, 41, -1, 13, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 54, 25,
+ 26, 57, -1, 29, 3, 31, -1, -1, 7, 8,
+ 66, -1, -1, 69, 70, 41, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 25, 26, 54, -1,
+ 29, 57, 31, -1, -1, -1, -1, -1, -1, -1,
+ 66, -1, 41, 69, 70, -1, 3, 46, -1, -1,
+ 7, 8, -1, -1, -1, 54, -1, 3, 57, -1,
+ -1, 7, 8, -1, -1, -1, 12, 66, 25, 26,
+ 69, 70, 29, -1, 31, -1, -1, -1, -1, 25,
+ 26, -1, 39, 29, 41, 31, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 41, -1, 54, -1, 3,
+ 57, -1, -1, 7, 8, -1, -1, -1, 54, 66,
+ 3, 57, 69, 70, 7, 8, -1, -1, -1, -1,
+ 66, 25, 26, 69, 70, 29, -1, 31, -1, -1,
+ -1, -1, 25, 26, -1, -1, 29, 41, 31, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 41, -1,
+ 54, -1, -1, 57, -1, -1, -1, -1, -1, -1,
+ -1, 54, 66, -1, 57, 69, 70, -1, -1, -1,
+ -1, -1, -1, 66, -1, -1, 69, 70, 4, 5,
+ 6, 7, 8, 9, -1, -1, -1, -1, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
- 26, 27, 28, 29, 30, -1, 32, -1, 34, 35,
- -1, -1, -1, -1, 40, 4, 5, 6, 7, 8,
- 9, 47, -1, -1, -1, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
- 29, 30, -1, 32, -1, 34, 35, -1, -1, -1,
- -1, 40, 4, 5, 6, 7, 8, 9, 47, -1,
- -1, -1, 14, 15, 16, 17, 18, 19, 20, 21,
- 22, 23, 24, 25, 26, 27, 28, 29, 30, -1,
- 32, -1, 34, 35, -1, -1, -1, -1, 40, -1,
- -1, 43, -1, 45, 4, 5, 6, 7, 8, 9,
- -1, -1, -1, -1, 14, 15, 16, 17, 18, 19,
+ 26, 27, 28, 29, 30, 31, -1, 33, 34, -1,
+ -1, -1, -1, 39, 4, 5, 6, 7, 8, 9,
+ -1, 47, -1, -1, 14, 15, 16, 17, 18, 19,
20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
- 30, -1, 32, -1, 34, 35, -1, -1, -1, -1,
- 40, 41, -1, -1, -1, 45, 4, 5, 6, 7,
- 8, 9, -1, -1, -1, -1, 14, 15, 16, 17,
+ 30, 31, -1, 33, 34, 35, -1, -1, -1, 39,
+ 4, 5, 6, 7, 8, 9, 46, -1, -1, -1,
+ 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
+ 24, 25, 26, 27, 28, 29, 30, 31, -1, 33,
+ 34, 35, -1, -1, -1, 39, 4, 5, 6, 7,
+ 8, 9, 46, -1, -1, -1, 14, 15, 16, 17,
18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
- 28, 29, 30, -1, 32, -1, 34, 35, -1, -1,
- -1, -1, 40, 41, -1, -1, -1, 45, 4, 5,
- 6, 7, 8, 9, -1, -1, -1, -1, 14, 15,
- 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
- 26, 27, 28, 29, 30, -1, 32, -1, 34, 35,
- -1, -1, -1, -1, 40, -1, -1, 43, 4, 5,
- 6, 7, 8, 9, -1, -1, -1, -1, 14, 15,
- 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
- 26, 27, 28, 29, 30, -1, 32, -1, 34, 35,
- -1, -1, -1, -1, 40, -1, -1, 43, 4, 5,
- 6, 7, 8, 9, -1, -1, -1, -1, 14, 15,
- 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
- 26, 27, 28, 29, 30, -1, 32, -1, 34, 35,
- -1, -1, -1, -1, 40, -1, -1, 43, 4, 5,
- 6, 7, 8, 9, -1, -1, -1, -1, 14, 15,
+ 28, 29, 30, 31, -1, 33, 34, -1, -1, -1,
+ -1, 39, 4, 5, 6, 7, 8, 9, 46, -1,
+ -1, -1, 14, 15, 16, 17, 18, 19, 20, 21,
+ 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+ -1, 33, 34, -1, -1, -1, -1, 39, 4, 5,
+ 6, 7, 8, 9, 46, -1, -1, -1, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
- 26, 27, 28, 29, 30, -1, 32, -1, 34, 35,
- -1, -1, -1, -1, 40, -1, -1, 43, 4, 5,
+ 26, 27, 28, 29, 30, 31, -1, 33, 34, -1,
+ -1, -1, -1, 39, -1, -1, 42, -1, 44, 4,
+ 5, 6, 7, 8, 9, -1, -1, -1, -1, 14,
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, -1, 33, 34,
+ -1, -1, -1, -1, 39, 40, -1, -1, -1, 44,
+ 4, 5, 6, 7, 8, 9, -1, -1, -1, -1,
+ 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
+ 24, 25, 26, 27, 28, 29, 30, 31, -1, 33,
+ 34, -1, -1, -1, -1, 39, 40, -1, -1, -1,
+ 44, 4, 5, 6, 7, 8, 9, -1, -1, -1,
+ -1, 14, 15, 16, 17, 18, 19, 20, 21, 22,
+ 23, 24, 25, 26, 27, 28, 29, 30, 31, -1,
+ 33, 34, -1, -1, -1, -1, 39, -1, -1, 42,
+ 4, 5, 6, 7, 8, 9, -1, -1, -1, -1,
+ 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
+ 24, 25, 26, 27, 28, 29, 30, 31, -1, 33,
+ 34, -1, -1, -1, -1, 39, -1, -1, 42, 4,
+ 5, 6, 7, 8, 9, -1, -1, -1, -1, 14,
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, -1, 33, 34,
+ -1, -1, -1, -1, 39, -1, -1, 42, 4, 5,
6, 7, 8, 9, -1, -1, -1, -1, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
- 26, 27, 28, 29, 30, -1, 32, -1, 34, 35,
- -1, -1, -1, -1, 40, 41, 4, 5, 6, 7,
- 8, 9, -1, -1, -1, -1, 14, 15, 16, 17,
- 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
- 28, 29, 30, -1, 32, -1, 34, 35, -1, -1,
- -1, -1, 40, 41, 4, 5, 6, 7, 8, 9,
+ 26, 27, 28, 29, 30, 31, -1, 33, 34, -1,
+ -1, -1, -1, 39, -1, -1, 42, 4, 5, 6,
+ 7, 8, 9, -1, -1, -1, -1, 14, 15, 16,
+ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
+ 27, 28, 29, 30, 31, -1, 33, 34, -1, -1,
+ -1, -1, 39, 40, 4, 5, 6, 7, 8, 9,
-1, -1, -1, -1, 14, 15, 16, 17, 18, 19,
20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
- 30, -1, 32, -1, 34, 35, 36, -1, -1, -1,
+ 30, 31, -1, 33, 34, -1, -1, -1, -1, 39,
40, 4, 5, 6, 7, 8, 9, -1, -1, -1,
-1, 14, 15, 16, 17, 18, 19, 20, 21, 22,
- 23, 24, 25, 26, 27, 28, 29, 30, -1, 32,
- -1, 34, 35, -1, -1, -1, 4, 40, 6, 7,
- 8, 9, -1, -1, -1, -1, 14, 15, 16, 17,
- 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
- 28, 29, 30, -1, 32, -1, 34, 35, -1, -1,
- -1, 39, 40, 4, -1, 6, 7, 8, 9, -1,
- -1, -1, -1, 14, 15, 16, 17, 18, 19, 20,
- 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
- -1, 32, -1, 34, 35, -1, -1, -1, 39, 40,
- 4, -1, 6, 7, 8, 9, -1, -1, -1, -1,
- 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
- 24, 25, 26, 27, 28, 29, 30, -1, 32, -1,
- 34, 35, -1, -1, -1, 39, 40, 4, -1, 6,
+ 23, 24, 25, 26, 27, 28, 29, 30, 31, -1,
+ 33, 34, 35, -1, -1, -1, 39, 4, 5, 6,
7, 8, 9, -1, -1, -1, -1, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, -1, 32, -1, 34, 35, -1,
- -1, -1, -1, 40, 5, 6, 7, 8, 9, -1,
+ 27, 28, 29, 30, 31, -1, 33, 34, -1, -1,
+ -1, 4, 39, 6, 7, 8, 9, -1, -1, -1,
+ -1, 14, 15, 16, 17, 18, 19, 20, 21, 22,
+ 23, 24, 25, 26, 27, 28, 29, 30, 31, -1,
+ 33, 34, -1, -1, -1, 38, 39, 4, -1, 6,
+ 7, 8, 9, -1, -1, -1, -1, 14, 15, 16,
+ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
+ 27, 28, 29, 30, 31, -1, 33, 34, -1, -1,
+ -1, 38, 39, 4, -1, 6, 7, 8, 9, -1,
-1, -1, -1, 14, 15, 16, 17, 18, 19, 20,
21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
- -1, 32, -1, -1, 35, -1, -1, -1, -1, 40,
+ 31, -1, 33, 34, -1, -1, -1, 38, 39, 4,
+ -1, 6, 7, 8, 9, -1, -1, -1, -1, 14,
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, -1, 33, 34,
+ -1, -1, -1, -1, 39, 5, 6, 7, 8, 9,
+ -1, -1, -1, -1, 14, 15, 16, 17, 18, 19,
+ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
+ 30, 31, -1, -1, 34, -1, -1, -1, -1, 39,
5, 6, 7, 8, 9, -1, -1, -1, -1, -1,
15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
- 25, 26, 27, 28, 29, 30, -1, 32, 5, 6,
- 7, 8, 9, -1, -1, 40, -1, -1, -1, 16,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, -1, 32, 5, 6, 7, 8,
- 9, -1, -1, 40, -1, -1, -1, -1, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
- 29, 30, -1, 32, 5, 6, 7, 8, 9, -1,
- -1, 40, -1, -1, -1, -1, -1, 18, 19, 20,
+ 25, 26, 27, 28, 29, 30, 31, 5, 6, 7,
+ 8, 9, -1, -1, 39, -1, -1, -1, 16, 17,
+ 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, 5, 6, 7, 8, 9, -1,
+ -1, 39, -1, -1, -1, -1, 17, 18, 19, 20,
21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
- -1, 32, 5, 6, 7, 8, 9, -1, -1, 40,
- -1, -1, -1, -1, -1, -1, -1, 20, 21, 22,
- 23, 24, 25, 26, 27, 28, 29, 30, -1, 32,
- -1, -1, -1, -1, -1, -1, -1, 40
+ 31, 5, 6, 7, 8, 9, -1, -1, 39, -1,
+ -1, -1, -1, -1, 18, 19, 20, 21, 22, 23,
+ 24, 25, 26, 27, 28, 29, 30, 31, 5, 6,
+ 7, 8, 9, -1, -1, 39, 5, 6, 7, 8,
+ 9, -1, -1, 20, 21, 22, 23, 24, 25, 26,
+ 27, 28, 29, 30, 31, 24, 25, 26, 27, 28,
+ 29, 30, 39, -1, -1, -1, -1, -1, -1, -1,
+ 39
};
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
symbol of state STATE-NUM. */
static const yytype_uint8 yystos[] =
{
- 0, 77, 78, 0, 3, 7, 8, 25, 26, 29,
- 31, 40, 42, 48, 50, 51, 52, 53, 54, 55,
- 56, 57, 58, 59, 61, 62, 63, 64, 65, 66,
- 67, 70, 71, 72, 73, 80, 81, 82, 83, 89,
- 90, 91, 92, 99, 106, 107, 109, 113, 119, 120,
- 121, 80, 113, 113, 113, 113, 113, 79, 80, 112,
- 113, 3, 71, 86, 87, 88, 80, 87, 3, 71,
- 3, 80, 86, 40, 3, 80, 89, 91, 80, 92,
- 42, 42, 119, 42, 48, 48, 48, 113, 113, 42,
- 44, 46, 93, 72, 73, 83, 119, 48, 3, 95,
- 96, 97, 42, 44, 46, 4, 5, 6, 7, 8,
+ 0, 76, 77, 0, 3, 7, 8, 25, 26, 29,
+ 31, 39, 41, 47, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 60, 61, 62, 63, 64, 65,
+ 66, 69, 70, 71, 72, 79, 80, 81, 82, 88,
+ 89, 90, 91, 98, 105, 106, 108, 112, 118, 119,
+ 120, 79, 112, 112, 112, 112, 112, 78, 79, 111,
+ 112, 3, 70, 85, 86, 87, 79, 86, 3, 70,
+ 3, 79, 85, 39, 3, 79, 88, 90, 79, 91,
+ 41, 41, 118, 41, 47, 47, 47, 112, 112, 41,
+ 43, 45, 92, 71, 72, 82, 118, 47, 3, 94,
+ 95, 96, 41, 43, 45, 4, 5, 6, 7, 8,
9, 14, 15, 16, 17, 18, 19, 20, 21, 22,
- 23, 24, 25, 26, 27, 28, 29, 30, 32, 34,
- 35, 40, 114, 115, 116, 48, 46, 41, 81, 43,
- 93, 43, 45, 43, 45, 3, 45, 48, 48, 48,
- 48, 48, 51, 50, 78, 99, 46, 3, 42, 46,
- 93, 94, 113, 113, 61, 90, 91, 120, 122, 125,
- 48, 3, 43, 49, 110, 111, 113, 3, 36, 47,
- 108, 113, 46, 42, 93, 45, 34, 43, 111, 3,
- 108, 113, 113, 10, 11, 117, 118, 113, 113, 113,
- 113, 113, 113, 113, 113, 113, 113, 113, 113, 113,
- 113, 113, 113, 113, 113, 113, 113, 113, 13, 113,
- 113, 116, 115, 113, 43, 113, 113, 3, 87, 3,
- 27, 84, 85, 27, 85, 41, 42, 43, 49, 68,
- 103, 104, 105, 113, 40, 42, 100, 46, 93, 43,
- 43, 42, 3, 48, 45, 34, 110, 43, 45, 49,
- 113, 47, 36, 47, 47, 43, 103, 96, 98, 100,
- 113, 43, 47, 47, 113, 12, 113, 5, 5, 36,
- 113, 41, 45, 115, 113, 3, 48, 45, 48, 48,
- 48, 43, 103, 121, 105, 43, 45, 49, 91, 47,
- 41, 45, 49, 98, 101, 102, 43, 103, 113, 119,
- 119, 113, 36, 113, 123, 120, 113, 110, 110, 113,
- 121, 43, 39, 113, 39, 113, 41, 113, 3, 84,
- 43, 121, 105, 105, 3, 97, 98, 41, 49, 45,
- 121, 43, 47, 60, 43, 113, 48, 121, 113, 39,
- 113, 41, 45, 97, 34, 41, 98, 98, 121, 119,
- 48, 43, 124, 125, 113, 113, 34, 98, 41, 119,
- 43, 41, 98, 119
+ 23, 24, 25, 26, 27, 28, 29, 30, 31, 33,
+ 34, 39, 113, 114, 115, 47, 45, 40, 80, 42,
+ 92, 42, 44, 42, 44, 3, 44, 47, 47, 47,
+ 47, 47, 50, 49, 77, 98, 45, 3, 41, 45,
+ 92, 93, 112, 112, 60, 89, 90, 119, 121, 124,
+ 47, 3, 42, 48, 109, 110, 112, 3, 35, 46,
+ 107, 112, 45, 41, 92, 44, 33, 42, 110, 3,
+ 107, 112, 112, 10, 11, 116, 117, 112, 112, 112,
+ 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
+ 112, 112, 112, 112, 112, 112, 112, 112, 13, 112,
+ 112, 115, 114, 112, 42, 112, 112, 3, 86, 3,
+ 27, 83, 84, 27, 84, 40, 41, 42, 48, 67,
+ 102, 103, 104, 112, 39, 41, 99, 45, 92, 42,
+ 42, 41, 3, 47, 44, 33, 109, 42, 44, 48,
+ 112, 46, 35, 46, 46, 42, 102, 95, 97, 99,
+ 112, 42, 46, 46, 112, 12, 112, 5, 5, 35,
+ 112, 40, 44, 114, 112, 3, 47, 44, 47, 47,
+ 47, 42, 102, 120, 104, 42, 44, 48, 90, 46,
+ 40, 44, 48, 97, 100, 101, 42, 102, 112, 118,
+ 118, 112, 35, 112, 122, 119, 112, 109, 109, 112,
+ 120, 42, 38, 112, 38, 112, 40, 112, 3, 83,
+ 42, 120, 104, 104, 3, 96, 97, 40, 48, 44,
+ 120, 42, 46, 59, 42, 112, 47, 120, 112, 38,
+ 112, 40, 44, 96, 33, 40, 97, 97, 120, 118,
+ 47, 42, 123, 124, 112, 112, 33, 97, 40, 118,
+ 42, 40, 97, 118
};
#define yyerrok (yyerrstatus = 0)
@@ -1362,17 +1370,18 @@ static const yytype_uint8 yystos[] =
#define YYRECOVERING() (!!yyerrstatus)
-#define YYBACKUP(Token, Value) \
-do \
- if (yychar == YYEMPTY && yylen == 1) \
- { \
- yychar = (Token); \
- yylval = (Value); \
- YYPOPSTACK (1); \
- goto yybackup; \
- } \
- else \
- { \
+#define YYBACKUP(Token, Value) \
+do \
+ if (yychar == YYEMPTY) \
+ { \
+ yychar = (Token); \
+ yylval = (Value); \
+ YYPOPSTACK (yylen); \
+ yystate = *yyssp; \
+ goto yybackup; \
+ } \
+ else \
+ { \
yyerror (YY_("syntax error: cannot back up")); \
YYERROR; \
} \
@@ -1382,32 +1391,33 @@ while (YYID (0))
#define YYTERROR 1
#define YYERRCODE 256
-
/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
If N is 0, then set CURRENT to the empty location which ends
the previous symbol: RHS[0] (always defined). */
-#define YYRHSLOC(Rhs, K) ((Rhs)[K])
#ifndef YYLLOC_DEFAULT
-# define YYLLOC_DEFAULT(Current, Rhs, N) \
- do \
- if (YYID (N)) \
- { \
- (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
- (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
- (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
- (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
- } \
- else \
- { \
- (Current).first_line = (Current).last_line = \
- YYRHSLOC (Rhs, 0).last_line; \
- (Current).first_column = (Current).last_column = \
- YYRHSLOC (Rhs, 0).last_column; \
- } \
+# define YYLLOC_DEFAULT(Current, Rhs, N) \
+ do \
+ if (YYID (N)) \
+ { \
+ (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
+ (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
+ (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
+ (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
+ } \
+ else \
+ { \
+ (Current).first_line = (Current).last_line = \
+ YYRHSLOC (Rhs, 0).last_line; \
+ (Current).first_column = (Current).last_column = \
+ YYRHSLOC (Rhs, 0).last_column; \
+ } \
while (YYID (0))
#endif
+#define YYRHSLOC(Rhs, K) ((Rhs)[K])
+
+
/* This macro is provided for backward compatibility. */
@@ -1467,6 +1477,8 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep)
YYSTYPE const * const yyvaluep;
#endif
{
+ FILE *yyo = yyoutput;
+ YYUSE (yyo);
if (!yyvaluep)
return;
# ifdef YYPRINT
@@ -1718,12 +1730,12 @@ static int
yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
yytype_int16 *yyssp, int yytoken)
{
- YYSIZE_T yysize0 = yytnamerr (0, yytname[yytoken]);
+ YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]);
YYSIZE_T yysize = yysize0;
YYSIZE_T yysize1;
enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
/* Internationalized format string. */
- const char *yyformat = 0;
+ const char *yyformat = YY_NULL;
/* Arguments of yyformat. */
char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
/* Number of reported tokens (one for the "unexpected", one per
@@ -1783,7 +1795,7 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
break;
}
yyarg[yycount++] = yytname[yyx];
- yysize1 = yysize + yytnamerr (0, yytname[yyx]);
+ yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]);
if (! (yysize <= yysize1
&& yysize1 <= YYSTACK_ALLOC_MAXIMUM))
return 2;
@@ -1875,20 +1887,6 @@ yydestruct (yymsg, yytype, yyvaluep)
}
-/* Prevent warnings from -Wmissing-prototypes. */
-#ifdef YYPARSE_PARAM
-#if defined __STDC__ || defined __cplusplus
-int yyparse (void *YYPARSE_PARAM);
-#else
-int yyparse ();
-#endif
-#else /* ! YYPARSE_PARAM */
-#if defined __STDC__ || defined __cplusplus
-int yyparse (void);
-#else
-int yyparse ();
-#endif
-#endif /* ! YYPARSE_PARAM */
/* The lookahead symbol. */
@@ -1935,7 +1933,7 @@ yyparse ()
`yyss': related to states.
`yyvs': related to semantic values.
- Refer to the stacks thru separate pointers, to allow yyoverflow
+ Refer to the stacks through separate pointers, to allow yyoverflow
to reallocate them elsewhere. */
/* The state stack. */
@@ -1989,7 +1987,6 @@ yyparse ()
The wasted elements are never initialized. */
yyssp = yyss;
yyvsp = yyvs;
-
goto yysetstate;
/*------------------------------------------------------------.
@@ -2167,1008 +2164,866 @@ yyreduce:
switch (yyn)
{
case 2:
-
-/* Line 1806 of yacc.c */
-#line 192 "camp.y"
+/* Line 1787 of yacc.c */
+#line 191 "camp.y"
{ absyntax::root = (yyvsp[(1) - (1)].b); }
break;
case 3:
-
-/* Line 1806 of yacc.c */
-#line 196 "camp.y"
+/* Line 1787 of yacc.c */
+#line 195 "camp.y"
{ (yyval.b) = new file(lexerPos(), false); }
break;
case 4:
-
-/* Line 1806 of yacc.c */
-#line 198 "camp.y"
+/* Line 1787 of yacc.c */
+#line 197 "camp.y"
{ (yyval.b) = (yyvsp[(1) - (2)].b); (yyval.b)->add((yyvsp[(2) - (2)].run)); }
break;
case 5:
-
-/* Line 1806 of yacc.c */
-#line 202 "camp.y"
+/* Line 1787 of yacc.c */
+#line 201 "camp.y"
{ (yyval.b) = new block(lexerPos(), true); }
break;
case 6:
-
-/* Line 1806 of yacc.c */
-#line 204 "camp.y"
+/* Line 1787 of yacc.c */
+#line 203 "camp.y"
{ (yyval.b) = (yyvsp[(1) - (2)].b); (yyval.b)->add((yyvsp[(2) - (2)].run)); }
break;
case 7:
-
-/* Line 1806 of yacc.c */
-#line 208 "camp.y"
+/* Line 1787 of yacc.c */
+#line 207 "camp.y"
{ (yyval.n) = new simpleName((yyvsp[(1) - (1)].ps).pos, (yyvsp[(1) - (1)].ps).sym); }
break;
case 8:
-
-/* Line 1806 of yacc.c */
-#line 209 "camp.y"
+/* Line 1787 of yacc.c */
+#line 208 "camp.y"
{ (yyval.n) = new qualifiedName((yyvsp[(2) - (3)].pos), (yyvsp[(1) - (3)].n), (yyvsp[(3) - (3)].ps).sym); }
break;
case 9:
-
-/* Line 1806 of yacc.c */
-#line 210 "camp.y"
+/* Line 1787 of yacc.c */
+#line 209 "camp.y"
{ (yyval.n) = new simpleName((yyvsp[(1) - (1)].ps).pos,
symbol::trans("operator answer")); }
break;
case 10:
-
-/* Line 1806 of yacc.c */
-#line 215 "camp.y"
+/* Line 1787 of yacc.c */
+#line 214 "camp.y"
{ (yyval.run) = (yyvsp[(1) - (1)].d); }
break;
case 11:
-
-/* Line 1806 of yacc.c */
-#line 216 "camp.y"
+/* Line 1787 of yacc.c */
+#line 215 "camp.y"
{ (yyval.run) = (yyvsp[(1) - (1)].s); }
break;
case 12:
-
-/* Line 1806 of yacc.c */
-#line 218 "camp.y"
+/* Line 1787 of yacc.c */
+#line 217 "camp.y"
{ (yyval.run) = new modifiedRunnable((yyvsp[(1) - (2)].ml)->getPos(), (yyvsp[(1) - (2)].ml), (yyvsp[(2) - (2)].d)); }
break;
case 13:
-
-/* Line 1806 of yacc.c */
-#line 220 "camp.y"
+/* Line 1787 of yacc.c */
+#line 219 "camp.y"
{ (yyval.run) = new modifiedRunnable((yyvsp[(1) - (2)].ml)->getPos(), (yyvsp[(1) - (2)].ml), (yyvsp[(2) - (2)].s)); }
break;
case 14:
-
-/* Line 1806 of yacc.c */
-#line 224 "camp.y"
+/* Line 1787 of yacc.c */
+#line 223 "camp.y"
{ (yyval.ml) = new modifierList((yyvsp[(1) - (1)].mod).pos); (yyval.ml)->add((yyvsp[(1) - (1)].mod).val); }
break;
case 15:
-
-/* Line 1806 of yacc.c */
-#line 225 "camp.y"
+/* Line 1787 of yacc.c */
+#line 224 "camp.y"
{ (yyval.ml) = new modifierList((yyvsp[(1) - (1)].perm).pos); (yyval.ml)->add((yyvsp[(1) - (1)].perm).val); }
break;
case 16:
-
-/* Line 1806 of yacc.c */
-#line 227 "camp.y"
+/* Line 1787 of yacc.c */
+#line 226 "camp.y"
{ (yyval.ml) = (yyvsp[(1) - (2)].ml); (yyval.ml)->add((yyvsp[(2) - (2)].mod).val); }
break;
case 17:
-
-/* Line 1806 of yacc.c */
-#line 229 "camp.y"
+/* Line 1787 of yacc.c */
+#line 228 "camp.y"
{ (yyval.ml) = (yyvsp[(1) - (2)].ml); (yyval.ml)->add((yyvsp[(2) - (2)].perm).val); }
break;
case 18:
-
-/* Line 1806 of yacc.c */
-#line 233 "camp.y"
+/* Line 1787 of yacc.c */
+#line 232 "camp.y"
{ (yyval.d) = (yyvsp[(1) - (1)].vd); }
break;
case 19:
-
-/* Line 1806 of yacc.c */
-#line 234 "camp.y"
+/* Line 1787 of yacc.c */
+#line 233 "camp.y"
{ (yyval.d) = (yyvsp[(1) - (1)].d); }
break;
case 20:
-
-/* Line 1806 of yacc.c */
-#line 235 "camp.y"
+/* Line 1787 of yacc.c */
+#line 234 "camp.y"
{ (yyval.d) = (yyvsp[(1) - (1)].d); }
break;
case 21:
-
-/* Line 1806 of yacc.c */
-#line 237 "camp.y"
+/* Line 1787 of yacc.c */
+#line 236 "camp.y"
{ (yyval.d) = new accessdec((yyvsp[(1) - (3)].pos), (yyvsp[(2) - (3)].ipl)); }
break;
case 22:
-
-/* Line 1806 of yacc.c */
-#line 239 "camp.y"
+/* Line 1787 of yacc.c */
+#line 238 "camp.y"
{ (yyval.d) = new unraveldec((yyvsp[(1) - (5)].pos), (yyvsp[(2) - (5)].n), (yyvsp[(4) - (5)].ipl)); }
break;
case 23:
-
-/* Line 1806 of yacc.c */
-#line 241 "camp.y"
+/* Line 1787 of yacc.c */
+#line 240 "camp.y"
{ (yyval.d) = new unraveldec((yyvsp[(1) - (5)].pos), (yyvsp[(2) - (5)].n), WILDCARD); }
break;
case 24:
-
-/* Line 1806 of yacc.c */
-#line 242 "camp.y"
+/* Line 1787 of yacc.c */
+#line 241 "camp.y"
{ (yyval.d) = new unraveldec((yyvsp[(1) - (3)].pos), (yyvsp[(2) - (3)].n), WILDCARD); }
break;
case 25:
-
-/* Line 1806 of yacc.c */
-#line 244 "camp.y"
+/* Line 1787 of yacc.c */
+#line 243 "camp.y"
{ (yyval.d) = new fromaccessdec((yyvsp[(1) - (5)].pos), (yyvsp[(2) - (5)].ps).sym, (yyvsp[(4) - (5)].ipl)); }
break;
case 26:
-
-/* Line 1806 of yacc.c */
-#line 246 "camp.y"
+/* Line 1787 of yacc.c */
+#line 245 "camp.y"
{ (yyval.d) = new fromaccessdec((yyvsp[(1) - (5)].pos), (yyvsp[(2) - (5)].ps).sym, WILDCARD); }
break;
case 27:
-
-/* Line 1806 of yacc.c */
-#line 248 "camp.y"
+/* Line 1787 of yacc.c */
+#line 247 "camp.y"
{ (yyval.d) = new importdec((yyvsp[(1) - (3)].pos), (yyvsp[(2) - (3)].ip)); }
break;
case 28:
-
-/* Line 1806 of yacc.c */
-#line 249 "camp.y"
+/* Line 1787 of yacc.c */
+#line 248 "camp.y"
{ (yyval.d) = new includedec((yyvsp[(1) - (3)].pos), (yyvsp[(2) - (3)].ps).sym); }
break;
case 29:
-
-/* Line 1806 of yacc.c */
-#line 251 "camp.y"
+/* Line 1787 of yacc.c */
+#line 250 "camp.y"
{ (yyval.d) = new includedec((yyvsp[(1) - (3)].pos), (yyvsp[(2) - (3)].stre)->getString()); }
break;
case 30:
-
-/* Line 1806 of yacc.c */
-#line 255 "camp.y"
+/* Line 1787 of yacc.c */
+#line 254 "camp.y"
{ (yyval.ip) = new idpair((yyvsp[(1) - (1)].ps).pos, (yyvsp[(1) - (1)].ps).sym); }
break;
case 31:
-
-/* Line 1806 of yacc.c */
-#line 257 "camp.y"
+/* Line 1787 of yacc.c */
+#line 256 "camp.y"
{ (yyval.ip) = new idpair((yyvsp[(1) - (3)].ps).pos, (yyvsp[(1) - (3)].ps).sym, (yyvsp[(2) - (3)].ps).sym , (yyvsp[(3) - (3)].ps).sym); }
break;
case 32:
-
-/* Line 1806 of yacc.c */
-#line 261 "camp.y"
+/* Line 1787 of yacc.c */
+#line 260 "camp.y"
{ (yyval.ipl) = new idpairlist(); (yyval.ipl)->add((yyvsp[(1) - (1)].ip)); }
break;
case 33:
-
-/* Line 1806 of yacc.c */
-#line 263 "camp.y"
+/* Line 1787 of yacc.c */
+#line 262 "camp.y"
{ (yyval.ipl) = (yyvsp[(1) - (3)].ipl); (yyval.ipl)->add((yyvsp[(3) - (3)].ip)); }
break;
case 34:
-
-/* Line 1806 of yacc.c */
-#line 267 "camp.y"
+/* Line 1787 of yacc.c */
+#line 266 "camp.y"
{ (yyval.ps) = (yyvsp[(1) - (1)].ps); }
break;
case 35:
-
-/* Line 1806 of yacc.c */
-#line 268 "camp.y"
+/* Line 1787 of yacc.c */
+#line 267 "camp.y"
{ (yyval.ps).pos = (yyvsp[(1) - (1)].stre)->getPos();
(yyval.ps).sym = symbol::literalTrans((yyvsp[(1) - (1)].stre)->getString()); }
break;
case 36:
-
-/* Line 1806 of yacc.c */
-#line 273 "camp.y"
+/* Line 1787 of yacc.c */
+#line 272 "camp.y"
{ (yyval.ip) = new idpair((yyvsp[(1) - (1)].ps).pos, (yyvsp[(1) - (1)].ps).sym); }
break;
case 37:
-
-/* Line 1806 of yacc.c */
-#line 275 "camp.y"
+/* Line 1787 of yacc.c */
+#line 274 "camp.y"
{ (yyval.ip) = new idpair((yyvsp[(1) - (3)].ps).pos, (yyvsp[(1) - (3)].ps).sym, (yyvsp[(2) - (3)].ps).sym , (yyvsp[(3) - (3)].ps).sym); }
break;
case 38:
-
-/* Line 1806 of yacc.c */
-#line 279 "camp.y"
+/* Line 1787 of yacc.c */
+#line 278 "camp.y"
{ (yyval.ipl) = new idpairlist(); (yyval.ipl)->add((yyvsp[(1) - (1)].ip)); }
break;
case 39:
-
-/* Line 1806 of yacc.c */
-#line 281 "camp.y"
+/* Line 1787 of yacc.c */
+#line 280 "camp.y"
{ (yyval.ipl) = (yyvsp[(1) - (3)].ipl); (yyval.ipl)->add((yyvsp[(3) - (3)].ip)); }
break;
case 40:
-
-/* Line 1806 of yacc.c */
-#line 285 "camp.y"
+/* Line 1787 of yacc.c */
+#line 284 "camp.y"
{ (yyval.vd) = (yyvsp[(1) - (2)].vd); }
break;
case 41:
-
-/* Line 1806 of yacc.c */
-#line 289 "camp.y"
+/* Line 1787 of yacc.c */
+#line 288 "camp.y"
{ (yyval.vd) = new vardec((yyvsp[(1) - (2)].t)->getPos(), (yyvsp[(1) - (2)].t), (yyvsp[(2) - (2)].dil)); }
break;
case 42:
-
-/* Line 1806 of yacc.c */
-#line 293 "camp.y"
+/* Line 1787 of yacc.c */
+#line 292 "camp.y"
{ (yyval.t) = (yyvsp[(1) - (1)].t); }
break;
case 43:
-
-/* Line 1806 of yacc.c */
-#line 294 "camp.y"
+/* Line 1787 of yacc.c */
+#line 293 "camp.y"
{ (yyval.t) = new arrayTy((yyvsp[(1) - (2)].n), (yyvsp[(2) - (2)].dim)); }
break;
case 44:
-
-/* Line 1806 of yacc.c */
-#line 298 "camp.y"
+/* Line 1787 of yacc.c */
+#line 297 "camp.y"
{ (yyval.t) = new nameTy((yyvsp[(1) - (1)].n)); }
break;
case 45:
-
-/* Line 1806 of yacc.c */
-#line 302 "camp.y"
+/* Line 1787 of yacc.c */
+#line 301 "camp.y"
{ (yyval.dim) = new dimensions((yyvsp[(1) - (2)].pos)); }
break;
case 46:
-
-/* Line 1806 of yacc.c */
-#line 303 "camp.y"
+/* Line 1787 of yacc.c */
+#line 302 "camp.y"
{ (yyval.dim) = (yyvsp[(1) - (3)].dim); (yyval.dim)->increase(); }
break;
case 47:
-
-/* Line 1806 of yacc.c */
-#line 307 "camp.y"
+/* Line 1787 of yacc.c */
+#line 306 "camp.y"
{ (yyval.elist) = new explist((yyvsp[(1) - (3)].pos)); (yyval.elist)->add((yyvsp[(2) - (3)].e)); }
break;
case 48:
-
-/* Line 1806 of yacc.c */
-#line 309 "camp.y"
+/* Line 1787 of yacc.c */
+#line 308 "camp.y"
{ (yyval.elist) = (yyvsp[(1) - (4)].elist); (yyval.elist)->add((yyvsp[(3) - (4)].e)); }
break;
case 49:
-
-/* Line 1806 of yacc.c */
-#line 313 "camp.y"
+/* Line 1787 of yacc.c */
+#line 312 "camp.y"
{ (yyval.dil) = new decidlist((yyvsp[(1) - (1)].di)->getPos()); (yyval.dil)->add((yyvsp[(1) - (1)].di)); }
break;
case 50:
-
-/* Line 1806 of yacc.c */
-#line 315 "camp.y"
+/* Line 1787 of yacc.c */
+#line 314 "camp.y"
{ (yyval.dil) = (yyvsp[(1) - (3)].dil); (yyval.dil)->add((yyvsp[(3) - (3)].di)); }
break;
case 51:
-
-/* Line 1806 of yacc.c */
-#line 319 "camp.y"
+/* Line 1787 of yacc.c */
+#line 318 "camp.y"
{ (yyval.di) = new decid((yyvsp[(1) - (1)].dis)->getPos(), (yyvsp[(1) - (1)].dis)); }
break;
case 52:
-
-/* Line 1806 of yacc.c */
-#line 321 "camp.y"
+/* Line 1787 of yacc.c */
+#line 320 "camp.y"
{ (yyval.di) = new decid((yyvsp[(1) - (3)].dis)->getPos(), (yyvsp[(1) - (3)].dis), (yyvsp[(3) - (3)].vi)); }
break;
case 53:
-
-/* Line 1806 of yacc.c */
-#line 325 "camp.y"
+/* Line 1787 of yacc.c */
+#line 324 "camp.y"
{ (yyval.dis) = new decidstart((yyvsp[(1) - (1)].ps).pos, (yyvsp[(1) - (1)].ps).sym); }
break;
case 54:
-
-/* Line 1806 of yacc.c */
-#line 326 "camp.y"
+/* Line 1787 of yacc.c */
+#line 325 "camp.y"
{ (yyval.dis) = new decidstart((yyvsp[(1) - (2)].ps).pos, (yyvsp[(1) - (2)].ps).sym, (yyvsp[(2) - (2)].dim)); }
break;
case 55:
-
-/* Line 1806 of yacc.c */
-#line 327 "camp.y"
+/* Line 1787 of yacc.c */
+#line 326 "camp.y"
{ (yyval.dis) = new fundecidstart((yyvsp[(1) - (3)].ps).pos, (yyvsp[(1) - (3)].ps).sym, 0,
new formals((yyvsp[(2) - (3)].pos))); }
break;
case 56:
-
-/* Line 1806 of yacc.c */
-#line 330 "camp.y"
+/* Line 1787 of yacc.c */
+#line 329 "camp.y"
{ (yyval.dis) = new fundecidstart((yyvsp[(1) - (4)].ps).pos, (yyvsp[(1) - (4)].ps).sym, 0, (yyvsp[(3) - (4)].fls)); }
break;
case 57:
-
-/* Line 1806 of yacc.c */
-#line 334 "camp.y"
+/* Line 1787 of yacc.c */
+#line 333 "camp.y"
{ (yyval.vi) = (yyvsp[(1) - (1)].e); }
break;
case 58:
-
-/* Line 1806 of yacc.c */
-#line 335 "camp.y"
+/* Line 1787 of yacc.c */
+#line 334 "camp.y"
{ (yyval.vi) = (yyvsp[(1) - (1)].ai); }
break;
case 59:
-
-/* Line 1806 of yacc.c */
-#line 340 "camp.y"
+/* Line 1787 of yacc.c */
+#line 339 "camp.y"
{ (yyval.b) = (yyvsp[(2) - (3)].b); }
break;
case 60:
-
-/* Line 1806 of yacc.c */
-#line 344 "camp.y"
+/* Line 1787 of yacc.c */
+#line 343 "camp.y"
{ (yyval.ai) = new arrayinit((yyvsp[(1) - (2)].pos)); }
break;
case 61:
-
-/* Line 1806 of yacc.c */
-#line 346 "camp.y"
+/* Line 1787 of yacc.c */
+#line 345 "camp.y"
{ (yyval.ai) = new arrayinit((yyvsp[(1) - (4)].pos)); (yyval.ai)->addRest((yyvsp[(3) - (4)].vi)); }
break;
case 62:
-
-/* Line 1806 of yacc.c */
-#line 348 "camp.y"
+/* Line 1787 of yacc.c */
+#line 347 "camp.y"
{ (yyval.ai) = (yyvsp[(2) - (3)].ai); }
break;
case 63:
-
-/* Line 1806 of yacc.c */
-#line 350 "camp.y"
+/* Line 1787 of yacc.c */
+#line 349 "camp.y"
{ (yyval.ai) = (yyvsp[(2) - (5)].ai); (yyval.ai)->addRest((yyvsp[(4) - (5)].vi)); }
break;
case 64:
-
-/* Line 1806 of yacc.c */
-#line 354 "camp.y"
+/* Line 1787 of yacc.c */
+#line 353 "camp.y"
{ (yyval.ai) = new arrayinit((yyvsp[(1) - (1)].pos)); }
break;
case 65:
-
-/* Line 1806 of yacc.c */
-#line 355 "camp.y"
+/* Line 1787 of yacc.c */
+#line 354 "camp.y"
{ (yyval.ai) = (yyvsp[(1) - (1)].ai); }
break;
case 66:
-
-/* Line 1806 of yacc.c */
-#line 356 "camp.y"
+/* Line 1787 of yacc.c */
+#line 355 "camp.y"
{ (yyval.ai) = (yyvsp[(1) - (2)].ai); }
break;
case 67:
-
-/* Line 1806 of yacc.c */
-#line 360 "camp.y"
+/* Line 1787 of yacc.c */
+#line 359 "camp.y"
{ (yyval.ai) = new arrayinit((yyvsp[(1) - (1)].vi)->getPos());
(yyval.ai)->add((yyvsp[(1) - (1)].vi));}
break;
case 68:
-
-/* Line 1806 of yacc.c */
-#line 363 "camp.y"
+/* Line 1787 of yacc.c */
+#line 362 "camp.y"
{ (yyval.ai) = (yyvsp[(1) - (3)].ai); (yyval.ai)->add((yyvsp[(3) - (3)].vi)); }
break;
case 69:
-
-/* Line 1806 of yacc.c */
-#line 367 "camp.y"
+/* Line 1787 of yacc.c */
+#line 366 "camp.y"
{ (yyval.fls) = new formals((yyvsp[(1) - (1)].fl)->getPos()); (yyval.fls)->add((yyvsp[(1) - (1)].fl)); }
break;
case 70:
-
-/* Line 1806 of yacc.c */
-#line 368 "camp.y"
+/* Line 1787 of yacc.c */
+#line 367 "camp.y"
{ (yyval.fls) = new formals((yyvsp[(1) - (2)].pos)); (yyval.fls)->addRest((yyvsp[(2) - (2)].fl)); }
break;
case 71:
-
-/* Line 1806 of yacc.c */
-#line 370 "camp.y"
+/* Line 1787 of yacc.c */
+#line 369 "camp.y"
{ (yyval.fls) = (yyvsp[(1) - (3)].fls); (yyval.fls)->add((yyvsp[(3) - (3)].fl)); }
break;
case 72:
-
-/* Line 1806 of yacc.c */
-#line 372 "camp.y"
+/* Line 1787 of yacc.c */
+#line 371 "camp.y"
{ (yyval.fls) = (yyvsp[(1) - (3)].fls); (yyval.fls)->addRest((yyvsp[(3) - (3)].fl)); }
break;
case 73:
-
-/* Line 1806 of yacc.c */
-#line 376 "camp.y"
+/* Line 1787 of yacc.c */
+#line 375 "camp.y"
{ (yyval.boo) = true; }
break;
case 74:
-
-/* Line 1806 of yacc.c */
-#line 377 "camp.y"
+/* Line 1787 of yacc.c */
+#line 376 "camp.y"
{ (yyval.boo) = false; }
break;
case 75:
-
-/* Line 1806 of yacc.c */
-#line 382 "camp.y"
+/* Line 1787 of yacc.c */
+#line 381 "camp.y"
{ (yyval.fl) = new formal((yyvsp[(2) - (2)].t)->getPos(), (yyvsp[(2) - (2)].t), 0, 0, (yyvsp[(1) - (2)].boo), 0); }
break;
case 76:
-
-/* Line 1806 of yacc.c */
-#line 384 "camp.y"
+/* Line 1787 of yacc.c */
+#line 383 "camp.y"
{ (yyval.fl) = new formal((yyvsp[(2) - (3)].t)->getPos(), (yyvsp[(2) - (3)].t), (yyvsp[(3) - (3)].dis), 0, (yyvsp[(1) - (3)].boo), 0); }
break;
case 77:
-
-/* Line 1806 of yacc.c */
-#line 386 "camp.y"
+/* Line 1787 of yacc.c */
+#line 385 "camp.y"
{ (yyval.fl) = new formal((yyvsp[(2) - (5)].t)->getPos(), (yyvsp[(2) - (5)].t), (yyvsp[(3) - (5)].dis), (yyvsp[(5) - (5)].vi), (yyvsp[(1) - (5)].boo), 0); }
break;
case 78:
-
-/* Line 1806 of yacc.c */
-#line 389 "camp.y"
+/* Line 1787 of yacc.c */
+#line 388 "camp.y"
{ bool k = checkKeyword((yyvsp[(3) - (4)].ps).pos, (yyvsp[(3) - (4)].ps).sym);
(yyval.fl) = new formal((yyvsp[(2) - (4)].t)->getPos(), (yyvsp[(2) - (4)].t), (yyvsp[(4) - (4)].dis), 0, (yyvsp[(1) - (4)].boo), k); }
break;
case 79:
-
-/* Line 1806 of yacc.c */
-#line 392 "camp.y"
+/* Line 1787 of yacc.c */
+#line 391 "camp.y"
{ bool k = checkKeyword((yyvsp[(3) - (6)].ps).pos, (yyvsp[(3) - (6)].ps).sym);
(yyval.fl) = new formal((yyvsp[(2) - (6)].t)->getPos(), (yyvsp[(2) - (6)].t), (yyvsp[(4) - (6)].dis), (yyvsp[(6) - (6)].vi), (yyvsp[(1) - (6)].boo), k); }
break;
case 80:
-
-/* Line 1806 of yacc.c */
-#line 398 "camp.y"
+/* Line 1787 of yacc.c */
+#line 397 "camp.y"
{ (yyval.d) = new fundec((yyvsp[(3) - (5)].pos), (yyvsp[(1) - (5)].t), (yyvsp[(2) - (5)].ps).sym, new formals((yyvsp[(3) - (5)].pos)), (yyvsp[(5) - (5)].s)); }
break;
case 81:
-
-/* Line 1806 of yacc.c */
-#line 400 "camp.y"
+/* Line 1787 of yacc.c */
+#line 399 "camp.y"
{ (yyval.d) = new fundec((yyvsp[(3) - (6)].pos), (yyvsp[(1) - (6)].t), (yyvsp[(2) - (6)].ps).sym, (yyvsp[(4) - (6)].fls), (yyvsp[(6) - (6)].s)); }
break;
case 82:
-
-/* Line 1806 of yacc.c */
-#line 404 "camp.y"
+/* Line 1787 of yacc.c */
+#line 403 "camp.y"
{ (yyval.d) = new recorddec((yyvsp[(1) - (3)].pos), (yyvsp[(2) - (3)].ps).sym, (yyvsp[(3) - (3)].b)); }
break;
case 83:
-
-/* Line 1806 of yacc.c */
-#line 405 "camp.y"
+/* Line 1787 of yacc.c */
+#line 404 "camp.y"
{ (yyval.d) = new typedec((yyvsp[(1) - (2)].pos), (yyvsp[(2) - (2)].vd)); }
break;
case 84:
-
-/* Line 1806 of yacc.c */
-#line 409 "camp.y"
+/* Line 1787 of yacc.c */
+#line 408 "camp.y"
{ (yyval.slice) = new slice((yyvsp[(1) - (1)].pos), 0, 0); }
break;
case 85:
-
-/* Line 1806 of yacc.c */
-#line 410 "camp.y"
+/* Line 1787 of yacc.c */
+#line 409 "camp.y"
{ (yyval.slice) = new slice((yyvsp[(2) - (2)].pos), (yyvsp[(1) - (2)].e), 0); }
break;
case 86:
-
-/* Line 1806 of yacc.c */
-#line 411 "camp.y"
+/* Line 1787 of yacc.c */
+#line 410 "camp.y"
{ (yyval.slice) = new slice((yyvsp[(1) - (2)].pos), 0, (yyvsp[(2) - (2)].e)); }
break;
case 87:
-
-/* Line 1806 of yacc.c */
-#line 412 "camp.y"
+/* Line 1787 of yacc.c */
+#line 411 "camp.y"
{ (yyval.slice) = new slice((yyvsp[(2) - (3)].pos), (yyvsp[(1) - (3)].e), (yyvsp[(3) - (3)].e)); }
break;
case 88:
-
-/* Line 1806 of yacc.c */
-#line 416 "camp.y"
+/* Line 1787 of yacc.c */
+#line 415 "camp.y"
{ (yyval.e) = new fieldExp((yyvsp[(2) - (3)].pos), (yyvsp[(1) - (3)].e), (yyvsp[(3) - (3)].ps).sym); }
break;
case 89:
-
-/* Line 1806 of yacc.c */
-#line 417 "camp.y"
+/* Line 1787 of yacc.c */
+#line 416 "camp.y"
{ (yyval.e) = new subscriptExp((yyvsp[(2) - (4)].pos),
new nameExp((yyvsp[(1) - (4)].n)->getPos(), (yyvsp[(1) - (4)].n)), (yyvsp[(3) - (4)].e)); }
break;
case 90:
-
-/* Line 1806 of yacc.c */
-#line 419 "camp.y"
+/* Line 1787 of yacc.c */
+#line 418 "camp.y"
{ (yyval.e) = new subscriptExp((yyvsp[(2) - (4)].pos), (yyvsp[(1) - (4)].e), (yyvsp[(3) - (4)].e)); }
break;
case 91:
-
-/* Line 1806 of yacc.c */
-#line 420 "camp.y"
+/* Line 1787 of yacc.c */
+#line 419 "camp.y"
{ (yyval.e) = new sliceExp((yyvsp[(2) - (4)].pos),
new nameExp((yyvsp[(1) - (4)].n)->getPos(), (yyvsp[(1) - (4)].n)), (yyvsp[(3) - (4)].slice)); }
break;
case 92:
-
-/* Line 1806 of yacc.c */
-#line 422 "camp.y"
+/* Line 1787 of yacc.c */
+#line 421 "camp.y"
{ (yyval.e) = new sliceExp((yyvsp[(2) - (4)].pos), (yyvsp[(1) - (4)].e), (yyvsp[(3) - (4)].slice)); }
break;
case 93:
-
-/* Line 1806 of yacc.c */
-#line 423 "camp.y"
+/* Line 1787 of yacc.c */
+#line 422 "camp.y"
{ (yyval.e) = new callExp((yyvsp[(2) - (3)].pos),
new nameExp((yyvsp[(1) - (3)].n)->getPos(), (yyvsp[(1) - (3)].n)),
new arglist()); }
break;
case 94:
-
-/* Line 1806 of yacc.c */
-#line 427 "camp.y"
+/* Line 1787 of yacc.c */
+#line 426 "camp.y"
{ (yyval.e) = new callExp((yyvsp[(2) - (4)].pos),
new nameExp((yyvsp[(1) - (4)].n)->getPos(), (yyvsp[(1) - (4)].n)),
(yyvsp[(3) - (4)].alist)); }
break;
case 95:
-
-/* Line 1806 of yacc.c */
-#line 430 "camp.y"
+/* Line 1787 of yacc.c */
+#line 429 "camp.y"
{ (yyval.e) = new callExp((yyvsp[(2) - (3)].pos), (yyvsp[(1) - (3)].e), new arglist()); }
break;
case 96:
-
-/* Line 1806 of yacc.c */
-#line 432 "camp.y"
+/* Line 1787 of yacc.c */
+#line 431 "camp.y"
{ (yyval.e) = new callExp((yyvsp[(2) - (4)].pos), (yyvsp[(1) - (4)].e), (yyvsp[(3) - (4)].alist)); }
break;
case 97:
-
-/* Line 1806 of yacc.c */
-#line 434 "camp.y"
+/* Line 1787 of yacc.c */
+#line 433 "camp.y"
{ (yyval.e) = (yyvsp[(2) - (3)].e); }
break;
case 98:
-
-/* Line 1806 of yacc.c */
-#line 436 "camp.y"
+/* Line 1787 of yacc.c */
+#line 435 "camp.y"
{ (yyval.e) = new nameExp((yyvsp[(2) - (3)].n)->getPos(), (yyvsp[(2) - (3)].n)); }
break;
case 99:
-
-/* Line 1806 of yacc.c */
-#line 437 "camp.y"
+/* Line 1787 of yacc.c */
+#line 436 "camp.y"
{ (yyval.e) = new thisExp((yyvsp[(1) - (1)].pos)); }
break;
case 100:
-
-/* Line 1806 of yacc.c */
-#line 441 "camp.y"
+/* Line 1787 of yacc.c */
+#line 440 "camp.y"
{ (yyval.arg).name = symbol::nullsym; (yyval.arg).val=(yyvsp[(1) - (1)].e); }
break;
case 101:
-
-/* Line 1806 of yacc.c */
-#line 442 "camp.y"
+/* Line 1787 of yacc.c */
+#line 441 "camp.y"
{ (yyval.arg).name = (yyvsp[(1) - (3)].ps).sym; (yyval.arg).val=(yyvsp[(3) - (3)].e); }
break;
case 102:
-
-/* Line 1806 of yacc.c */
-#line 446 "camp.y"
+/* Line 1787 of yacc.c */
+#line 445 "camp.y"
{ (yyval.alist) = new arglist(); (yyval.alist)->add((yyvsp[(1) - (1)].arg)); }
break;
case 103:
-
-/* Line 1806 of yacc.c */
-#line 448 "camp.y"
+/* Line 1787 of yacc.c */
+#line 447 "camp.y"
{ (yyval.alist) = new arglist(); (yyval.alist)->addRest((yyvsp[(2) - (2)].arg)); }
break;
case 104:
-
-/* Line 1806 of yacc.c */
-#line 450 "camp.y"
+/* Line 1787 of yacc.c */
+#line 449 "camp.y"
{ (yyval.alist) = (yyvsp[(1) - (3)].alist); (yyval.alist)->add((yyvsp[(3) - (3)].arg)); }
break;
case 105:
-
-/* Line 1806 of yacc.c */
-#line 452 "camp.y"
+/* Line 1787 of yacc.c */
+#line 451 "camp.y"
{ (yyval.alist) = (yyvsp[(1) - (3)].alist); (yyval.alist)->addRest((yyvsp[(3) - (3)].arg)); }
break;
case 106:
-
-/* Line 1806 of yacc.c */
-#line 457 "camp.y"
+/* Line 1787 of yacc.c */
+#line 456 "camp.y"
{ (yyval.alist) = new arglist(); (yyval.alist)->add((yyvsp[(1) - (3)].e)); (yyval.alist)->add((yyvsp[(3) - (3)].e)); }
break;
case 107:
-
-/* Line 1806 of yacc.c */
-#line 458 "camp.y"
+/* Line 1787 of yacc.c */
+#line 457 "camp.y"
{ (yyval.alist) = (yyvsp[(1) - (3)].alist); (yyval.alist)->add((yyvsp[(3) - (3)].e)); }
break;
case 108:
-
-/* Line 1806 of yacc.c */
-#line 462 "camp.y"
+/* Line 1787 of yacc.c */
+#line 461 "camp.y"
{ (yyval.e) = new nameExp((yyvsp[(1) - (1)].n)->getPos(), (yyvsp[(1) - (1)].n)); }
break;
case 109:
-
-/* Line 1806 of yacc.c */
-#line 463 "camp.y"
+/* Line 1787 of yacc.c */
+#line 462 "camp.y"
{ (yyval.e) = (yyvsp[(1) - (1)].e); }
break;
case 110:
-
-/* Line 1806 of yacc.c */
-#line 464 "camp.y"
+/* Line 1787 of yacc.c */
+#line 463 "camp.y"
{ (yyval.e) = (yyvsp[(1) - (1)].e); }
break;
case 111:
-
-/* Line 1806 of yacc.c */
-#line 465 "camp.y"
+/* Line 1787 of yacc.c */
+#line 464 "camp.y"
{ (yyval.e) = (yyvsp[(1) - (1)].stre); }
break;
case 112:
-
-/* Line 1806 of yacc.c */
-#line 467 "camp.y"
+/* Line 1787 of yacc.c */
+#line 466 "camp.y"
{ (yyval.e) = new scaleExp((yyvsp[(1) - (2)].e)->getPos(), (yyvsp[(1) - (2)].e), (yyvsp[(2) - (2)].e)); }
break;
case 113:
-
-/* Line 1806 of yacc.c */
-#line 469 "camp.y"
+/* Line 1787 of yacc.c */
+#line 468 "camp.y"
{ (yyval.e) = new castExp((yyvsp[(2) - (4)].n)->getPos(), new nameTy((yyvsp[(2) - (4)].n)), (yyvsp[(4) - (4)].e)); }
break;
case 114:
-
-/* Line 1806 of yacc.c */
-#line 471 "camp.y"
+/* Line 1787 of yacc.c */
+#line 470 "camp.y"
{ (yyval.e) = new castExp((yyvsp[(2) - (5)].n)->getPos(), new arrayTy((yyvsp[(2) - (5)].n), (yyvsp[(3) - (5)].dim)), (yyvsp[(5) - (5)].e)); }
break;
case 115:
-
-/* Line 1806 of yacc.c */
-#line 473 "camp.y"
+/* Line 1787 of yacc.c */
+#line 472 "camp.y"
{ (yyval.e) = new unaryExp((yyvsp[(1) - (2)].ps).pos, (yyvsp[(2) - (2)].e), (yyvsp[(1) - (2)].ps).sym); }
break;
case 116:
-
-/* Line 1806 of yacc.c */
-#line 475 "camp.y"
+/* Line 1787 of yacc.c */
+#line 474 "camp.y"
{ (yyval.e) = new unaryExp((yyvsp[(1) - (2)].ps).pos, (yyvsp[(2) - (2)].e), (yyvsp[(1) - (2)].ps).sym); }
break;
case 117:
-
-/* Line 1806 of yacc.c */
-#line 476 "camp.y"
+/* Line 1787 of yacc.c */
+#line 475 "camp.y"
{ (yyval.e) = new unaryExp((yyvsp[(1) - (2)].ps).pos, (yyvsp[(2) - (2)].e), (yyvsp[(1) - (2)].ps).sym); }
break;
case 118:
-
-/* Line 1806 of yacc.c */
-#line 477 "camp.y"
+/* Line 1787 of yacc.c */
+#line 476 "camp.y"
{ (yyval.e) = new binaryExp((yyvsp[(2) - (3)].ps).pos, (yyvsp[(1) - (3)].e), (yyvsp[(2) - (3)].ps).sym, (yyvsp[(3) - (3)].e)); }
break;
case 119:
-
-/* Line 1806 of yacc.c */
-#line 478 "camp.y"
+/* Line 1787 of yacc.c */
+#line 477 "camp.y"
{ (yyval.e) = new binaryExp((yyvsp[(2) - (3)].ps).pos, (yyvsp[(1) - (3)].e), (yyvsp[(2) - (3)].ps).sym, (yyvsp[(3) - (3)].e)); }
break;
case 120:
-
-/* Line 1806 of yacc.c */
-#line 479 "camp.y"
+/* Line 1787 of yacc.c */
+#line 478 "camp.y"
{ (yyval.e) = new binaryExp((yyvsp[(2) - (3)].ps).pos, (yyvsp[(1) - (3)].e), (yyvsp[(2) - (3)].ps).sym, (yyvsp[(3) - (3)].e)); }
break;
case 121:
-
-/* Line 1806 of yacc.c */
-#line 480 "camp.y"
+/* Line 1787 of yacc.c */
+#line 479 "camp.y"
{ (yyval.e) = new binaryExp((yyvsp[(2) - (3)].ps).pos, (yyvsp[(1) - (3)].e), (yyvsp[(2) - (3)].ps).sym, (yyvsp[(3) - (3)].e)); }
break;
case 122:
-
-/* Line 1806 of yacc.c */
-#line 481 "camp.y"
+/* Line 1787 of yacc.c */
+#line 480 "camp.y"
{ (yyval.e) = new binaryExp((yyvsp[(2) - (3)].ps).pos, (yyvsp[(1) - (3)].e), (yyvsp[(2) - (3)].ps).sym, (yyvsp[(3) - (3)].e)); }
break;
case 123:
-
-/* Line 1806 of yacc.c */
-#line 482 "camp.y"
+/* Line 1787 of yacc.c */
+#line 481 "camp.y"
{ (yyval.e) = new binaryExp((yyvsp[(2) - (3)].ps).pos, (yyvsp[(1) - (3)].e), (yyvsp[(2) - (3)].ps).sym, (yyvsp[(3) - (3)].e)); }
break;
case 124:
-
-/* Line 1806 of yacc.c */
-#line 483 "camp.y"
+/* Line 1787 of yacc.c */
+#line 482 "camp.y"
{ (yyval.e) = new binaryExp((yyvsp[(2) - (3)].ps).pos, (yyvsp[(1) - (3)].e), (yyvsp[(2) - (3)].ps).sym, (yyvsp[(3) - (3)].e)); }
break;
case 125:
-
-/* Line 1806 of yacc.c */
-#line 484 "camp.y"
+/* Line 1787 of yacc.c */
+#line 483 "camp.y"
{ (yyval.e) = new binaryExp((yyvsp[(2) - (3)].ps).pos, (yyvsp[(1) - (3)].e), (yyvsp[(2) - (3)].ps).sym, (yyvsp[(3) - (3)].e)); }
break;
case 126:
-
-/* Line 1806 of yacc.c */
-#line 485 "camp.y"
+/* Line 1787 of yacc.c */
+#line 484 "camp.y"
{ (yyval.e) = new binaryExp((yyvsp[(2) - (3)].ps).pos, (yyvsp[(1) - (3)].e), (yyvsp[(2) - (3)].ps).sym, (yyvsp[(3) - (3)].e)); }
break;
case 127:
-
-/* Line 1806 of yacc.c */
-#line 486 "camp.y"
+/* Line 1787 of yacc.c */
+#line 485 "camp.y"
{ (yyval.e) = new binaryExp((yyvsp[(2) - (3)].ps).pos, (yyvsp[(1) - (3)].e), (yyvsp[(2) - (3)].ps).sym, (yyvsp[(3) - (3)].e)); }
break;
case 128:
-
-/* Line 1806 of yacc.c */
-#line 487 "camp.y"
+/* Line 1787 of yacc.c */
+#line 486 "camp.y"
{ (yyval.e) = new equalityExp((yyvsp[(2) - (3)].ps).pos, (yyvsp[(1) - (3)].e), (yyvsp[(2) - (3)].ps).sym, (yyvsp[(3) - (3)].e)); }
break;
case 129:
-
-/* Line 1806 of yacc.c */
-#line 488 "camp.y"
+/* Line 1787 of yacc.c */
+#line 487 "camp.y"
{ (yyval.e) = new equalityExp((yyvsp[(2) - (3)].ps).pos, (yyvsp[(1) - (3)].e), (yyvsp[(2) - (3)].ps).sym, (yyvsp[(3) - (3)].e)); }
break;
case 130:
-
-/* Line 1806 of yacc.c */
-#line 489 "camp.y"
+/* Line 1787 of yacc.c */
+#line 488 "camp.y"
{ (yyval.e) = new andExp((yyvsp[(2) - (3)].ps).pos, (yyvsp[(1) - (3)].e), (yyvsp[(2) - (3)].ps).sym, (yyvsp[(3) - (3)].e)); }
break;
case 131:
-
-/* Line 1806 of yacc.c */
-#line 490 "camp.y"
+/* Line 1787 of yacc.c */
+#line 489 "camp.y"
{ (yyval.e) = new orExp((yyvsp[(2) - (3)].ps).pos, (yyvsp[(1) - (3)].e), (yyvsp[(2) - (3)].ps).sym, (yyvsp[(3) - (3)].e)); }
break;
case 132:
-
-/* Line 1806 of yacc.c */
-#line 491 "camp.y"
+/* Line 1787 of yacc.c */
+#line 490 "camp.y"
{ (yyval.e) = new binaryExp((yyvsp[(2) - (3)].ps).pos, (yyvsp[(1) - (3)].e), (yyvsp[(2) - (3)].ps).sym, (yyvsp[(3) - (3)].e)); }
break;
case 133:
-
-/* Line 1806 of yacc.c */
-#line 492 "camp.y"
+/* Line 1787 of yacc.c */
+#line 491 "camp.y"
{ (yyval.e) = new binaryExp((yyvsp[(2) - (3)].ps).pos, (yyvsp[(1) - (3)].e), (yyvsp[(2) - (3)].ps).sym, (yyvsp[(3) - (3)].e)); }
break;
case 134:
-
-/* Line 1806 of yacc.c */
-#line 493 "camp.y"
+/* Line 1787 of yacc.c */
+#line 492 "camp.y"
{ (yyval.e) = new binaryExp((yyvsp[(2) - (3)].ps).pos, (yyvsp[(1) - (3)].e), (yyvsp[(2) - (3)].ps).sym, (yyvsp[(3) - (3)].e)); }
break;
case 135:
-
-/* Line 1806 of yacc.c */
-#line 494 "camp.y"
+/* Line 1787 of yacc.c */
+#line 493 "camp.y"
{ (yyval.e) = new binaryExp((yyvsp[(2) - (3)].ps).pos, (yyvsp[(1) - (3)].e), (yyvsp[(2) - (3)].ps).sym, (yyvsp[(3) - (3)].e)); }
break;
case 136:
-
-/* Line 1806 of yacc.c */
-#line 495 "camp.y"
+/* Line 1787 of yacc.c */
+#line 494 "camp.y"
{ (yyval.e) = new binaryExp((yyvsp[(2) - (3)].ps).pos, (yyvsp[(1) - (3)].e), (yyvsp[(2) - (3)].ps).sym, (yyvsp[(3) - (3)].e)); }
break;
case 137:
-
-/* Line 1806 of yacc.c */
-#line 497 "camp.y"
+/* Line 1787 of yacc.c */
+#line 496 "camp.y"
{ (yyval.e) = new newRecordExp((yyvsp[(1) - (2)].pos), (yyvsp[(2) - (2)].t)); }
break;
case 138:
-
-/* Line 1806 of yacc.c */
-#line 499 "camp.y"
+/* Line 1787 of yacc.c */
+#line 498 "camp.y"
{ (yyval.e) = new newArrayExp((yyvsp[(1) - (3)].pos), (yyvsp[(2) - (3)].t), (yyvsp[(3) - (3)].elist), 0, 0); }
break;
case 139:
-
-/* Line 1806 of yacc.c */
-#line 501 "camp.y"
+/* Line 1787 of yacc.c */
+#line 500 "camp.y"
{ (yyval.e) = new newArrayExp((yyvsp[(1) - (4)].pos), (yyvsp[(2) - (4)].t), (yyvsp[(3) - (4)].elist), (yyvsp[(4) - (4)].dim), 0); }
break;
case 140:
-
-/* Line 1806 of yacc.c */
-#line 503 "camp.y"
+/* Line 1787 of yacc.c */
+#line 502 "camp.y"
{ (yyval.e) = new newArrayExp((yyvsp[(1) - (3)].pos), (yyvsp[(2) - (3)].t), 0, (yyvsp[(3) - (3)].dim), 0); }
break;
case 141:
-
-/* Line 1806 of yacc.c */
-#line 505 "camp.y"
+/* Line 1787 of yacc.c */
+#line 504 "camp.y"
{ (yyval.e) = new newArrayExp((yyvsp[(1) - (4)].pos), (yyvsp[(2) - (4)].t), 0, (yyvsp[(3) - (4)].dim), (yyvsp[(4) - (4)].ai)); }
break;
case 142:
-
-/* Line 1806 of yacc.c */
-#line 507 "camp.y"
+/* Line 1787 of yacc.c */
+#line 506 "camp.y"
{ (yyval.e) = new newFunctionExp((yyvsp[(1) - (5)].pos), (yyvsp[(2) - (5)].t), new formals((yyvsp[(3) - (5)].pos)), (yyvsp[(5) - (5)].s)); }
break;
case 143:
-
-/* Line 1806 of yacc.c */
-#line 509 "camp.y"
+/* Line 1787 of yacc.c */
+#line 508 "camp.y"
{ (yyval.e) = new newFunctionExp((yyvsp[(1) - (6)].pos),
new arrayTy((yyvsp[(2) - (6)].t)->getPos(), (yyvsp[(2) - (6)].t), (yyvsp[(3) - (6)].dim)),
new formals((yyvsp[(4) - (6)].pos)),
@@ -3176,16 +3031,14 @@ yyreduce:
break;
case 144:
-
-/* Line 1806 of yacc.c */
-#line 514 "camp.y"
+/* Line 1787 of yacc.c */
+#line 513 "camp.y"
{ (yyval.e) = new newFunctionExp((yyvsp[(1) - (6)].pos), (yyvsp[(2) - (6)].t), (yyvsp[(4) - (6)].fls), (yyvsp[(6) - (6)].s)); }
break;
case 145:
-
-/* Line 1806 of yacc.c */
-#line 516 "camp.y"
+/* Line 1787 of yacc.c */
+#line 515 "camp.y"
{ (yyval.e) = new newFunctionExp((yyvsp[(1) - (7)].pos),
new arrayTy((yyvsp[(2) - (7)].t)->getPos(), (yyvsp[(2) - (7)].t), (yyvsp[(3) - (7)].dim)),
(yyvsp[(5) - (7)].fls),
@@ -3193,37 +3046,32 @@ yyreduce:
break;
case 146:
-
-/* Line 1806 of yacc.c */
-#line 521 "camp.y"
+/* Line 1787 of yacc.c */
+#line 520 "camp.y"
{ (yyval.e) = new conditionalExp((yyvsp[(2) - (5)].pos), (yyvsp[(1) - (5)].e), (yyvsp[(3) - (5)].e), (yyvsp[(5) - (5)].e)); }
break;
case 147:
-
-/* Line 1806 of yacc.c */
-#line 522 "camp.y"
+/* Line 1787 of yacc.c */
+#line 521 "camp.y"
{ (yyval.e) = new assignExp((yyvsp[(2) - (3)].pos), (yyvsp[(1) - (3)].e), (yyvsp[(3) - (3)].e)); }
break;
case 148:
-
-/* Line 1806 of yacc.c */
-#line 523 "camp.y"
+/* Line 1787 of yacc.c */
+#line 522 "camp.y"
{ (yyval.e) = new callExp((yyvsp[(1) - (3)].pos), new nameExp((yyvsp[(1) - (3)].pos), SYM_TUPLE), (yyvsp[(2) - (3)].alist)); }
break;
case 149:
-
-/* Line 1806 of yacc.c */
-#line 525 "camp.y"
+/* Line 1787 of yacc.c */
+#line 524 "camp.y"
{ (yyvsp[(2) - (3)].j)->pushFront((yyvsp[(1) - (3)].e)); (yyvsp[(2) - (3)].j)->pushBack((yyvsp[(3) - (3)].e)); (yyval.e) = (yyvsp[(2) - (3)].j); }
break;
case 150:
-
-/* Line 1806 of yacc.c */
-#line 527 "camp.y"
+/* Line 1787 of yacc.c */
+#line 526 "camp.y"
{ (yyvsp[(2) - (2)].se)->setSide(camp::OUT);
joinExp *jexp =
new joinExp((yyvsp[(2) - (2)].se)->getPos(), SYM_DOTS);
@@ -3232,361 +3080,311 @@ yyreduce:
break;
case 151:
-
-/* Line 1806 of yacc.c */
-#line 533 "camp.y"
+/* Line 1787 of yacc.c */
+#line 532 "camp.y"
{ (yyval.e) = new prefixExp((yyvsp[(1) - (2)].ps).pos, (yyvsp[(2) - (2)].e), SYM_PLUS); }
break;
case 152:
-
-/* Line 1806 of yacc.c */
-#line 535 "camp.y"
+/* Line 1787 of yacc.c */
+#line 534 "camp.y"
{ (yyval.e) = new prefixExp((yyvsp[(1) - (2)].ps).pos, (yyvsp[(2) - (2)].e), SYM_MINUS); }
break;
case 153:
-
-/* Line 1806 of yacc.c */
-#line 538 "camp.y"
+/* Line 1787 of yacc.c */
+#line 537 "camp.y"
{ (yyval.e) = new postfixExp((yyvsp[(2) - (2)].ps).pos, (yyvsp[(1) - (2)].e), SYM_PLUS); }
break;
case 154:
-
-/* Line 1806 of yacc.c */
-#line 539 "camp.y"
+/* Line 1787 of yacc.c */
+#line 538 "camp.y"
{ (yyval.e) = new selfExp((yyvsp[(2) - (3)].ps).pos, (yyvsp[(1) - (3)].e), (yyvsp[(2) - (3)].ps).sym, (yyvsp[(3) - (3)].e)); }
break;
case 155:
-
-/* Line 1806 of yacc.c */
-#line 541 "camp.y"
+/* Line 1787 of yacc.c */
+#line 540 "camp.y"
{ (yyval.e) = new quoteExp((yyvsp[(1) - (4)].pos), (yyvsp[(3) - (4)].b)); }
break;
case 156:
-
-/* Line 1806 of yacc.c */
-#line 547 "camp.y"
+/* Line 1787 of yacc.c */
+#line 546 "camp.y"
{ (yyval.j) = new joinExp((yyvsp[(1) - (1)].ps).pos,(yyvsp[(1) - (1)].ps).sym); }
break;
case 157:
-
-/* Line 1806 of yacc.c */
-#line 549 "camp.y"
+/* Line 1787 of yacc.c */
+#line 548 "camp.y"
{ (yyval.j) = (yyvsp[(1) - (1)].j); }
break;
case 158:
-
-/* Line 1806 of yacc.c */
-#line 551 "camp.y"
+/* Line 1787 of yacc.c */
+#line 550 "camp.y"
{ (yyvsp[(1) - (2)].se)->setSide(camp::OUT);
(yyval.j) = (yyvsp[(2) - (2)].j); (yyval.j)->pushFront((yyvsp[(1) - (2)].se)); }
break;
case 159:
-
-/* Line 1806 of yacc.c */
-#line 554 "camp.y"
+/* Line 1787 of yacc.c */
+#line 553 "camp.y"
{ (yyvsp[(2) - (2)].se)->setSide(camp::IN);
(yyval.j) = (yyvsp[(1) - (2)].j); (yyval.j)->pushBack((yyvsp[(2) - (2)].se)); }
break;
case 160:
-
-/* Line 1806 of yacc.c */
-#line 557 "camp.y"
+/* Line 1787 of yacc.c */
+#line 556 "camp.y"
{ (yyvsp[(1) - (3)].se)->setSide(camp::OUT); (yyvsp[(3) - (3)].se)->setSide(camp::IN);
(yyval.j) = (yyvsp[(2) - (3)].j); (yyval.j)->pushFront((yyvsp[(1) - (3)].se)); (yyval.j)->pushBack((yyvsp[(3) - (3)].se)); }
break;
case 161:
-
-/* Line 1806 of yacc.c */
-#line 562 "camp.y"
+/* Line 1787 of yacc.c */
+#line 561 "camp.y"
{ (yyval.se) = new specExp((yyvsp[(2) - (4)].ps).pos, (yyvsp[(2) - (4)].ps).sym, (yyvsp[(3) - (4)].e)); }
break;
case 162:
-
-/* Line 1806 of yacc.c */
-#line 563 "camp.y"
+/* Line 1787 of yacc.c */
+#line 562 "camp.y"
{ (yyval.se) = new specExp((yyvsp[(1) - (3)].pos), symbol::opTrans("spec"), (yyvsp[(2) - (3)].e)); }
break;
case 163:
-
-/* Line 1806 of yacc.c */
-#line 565 "camp.y"
+/* Line 1787 of yacc.c */
+#line 564 "camp.y"
{ (yyval.se) = new specExp((yyvsp[(1) - (5)].pos), symbol::opTrans("spec"),
new pairExp((yyvsp[(3) - (5)].pos), (yyvsp[(2) - (5)].e), (yyvsp[(4) - (5)].e))); }
break;
case 164:
-
-/* Line 1806 of yacc.c */
-#line 568 "camp.y"
+/* Line 1787 of yacc.c */
+#line 567 "camp.y"
{ (yyval.se) = new specExp((yyvsp[(1) - (7)].pos), symbol::opTrans("spec"),
new tripleExp((yyvsp[(3) - (7)].pos), (yyvsp[(2) - (7)].e), (yyvsp[(4) - (7)].e), (yyvsp[(6) - (7)].e))); }
break;
case 165:
-
-/* Line 1806 of yacc.c */
-#line 573 "camp.y"
+/* Line 1787 of yacc.c */
+#line 572 "camp.y"
{ (yyval.j) = new joinExp((yyvsp[(1) - (1)].ps).pos, (yyvsp[(1) - (1)].ps).sym); }
break;
case 166:
-
-/* Line 1806 of yacc.c */
-#line 575 "camp.y"
+/* Line 1787 of yacc.c */
+#line 574 "camp.y"
{ (yyval.j) = new joinExp((yyvsp[(1) - (3)].ps).pos, (yyvsp[(1) - (3)].ps).sym); (yyval.j)->pushBack((yyvsp[(2) - (3)].e)); }
break;
case 167:
-
-/* Line 1806 of yacc.c */
-#line 577 "camp.y"
+/* Line 1787 of yacc.c */
+#line 576 "camp.y"
{ (yyval.j) = new joinExp((yyvsp[(1) - (3)].ps).pos, (yyvsp[(1) - (3)].ps).sym); (yyval.j)->pushBack((yyvsp[(2) - (3)].e)); }
break;
case 168:
-
-/* Line 1806 of yacc.c */
-#line 578 "camp.y"
+/* Line 1787 of yacc.c */
+#line 577 "camp.y"
{ (yyval.j) = new joinExp((yyvsp[(1) - (1)].ps).pos, (yyvsp[(1) - (1)].ps).sym); }
break;
case 169:
-
-/* Line 1806 of yacc.c */
-#line 579 "camp.y"
+/* Line 1787 of yacc.c */
+#line 578 "camp.y"
{ (yyval.j) = new joinExp((yyvsp[(1) - (1)].ps).pos, (yyvsp[(1) - (1)].ps).sym); }
break;
case 170:
-
-/* Line 1806 of yacc.c */
-#line 583 "camp.y"
+/* Line 1787 of yacc.c */
+#line 582 "camp.y"
{ (yyval.e) = new binaryExp((yyvsp[(1) - (2)].ps).pos, (yyvsp[(2) - (2)].e), (yyvsp[(1) - (2)].ps).sym,
new booleanExp((yyvsp[(1) - (2)].ps).pos, false)); }
break;
case 171:
-
-/* Line 1806 of yacc.c */
-#line 586 "camp.y"
+/* Line 1787 of yacc.c */
+#line 585 "camp.y"
{ (yyval.e) = new ternaryExp((yyvsp[(1) - (4)].ps).pos, (yyvsp[(2) - (4)].e), (yyvsp[(1) - (4)].ps).sym, (yyvsp[(4) - (4)].e),
new booleanExp((yyvsp[(1) - (4)].ps).pos, false)); }
break;
case 172:
-
-/* Line 1806 of yacc.c */
-#line 589 "camp.y"
+/* Line 1787 of yacc.c */
+#line 588 "camp.y"
{ (yyval.e) = new binaryExp((yyvsp[(1) - (3)].ps).pos, (yyvsp[(3) - (3)].e), (yyvsp[(1) - (3)].ps).sym,
new booleanExp((yyvsp[(2) - (3)].ps).pos, true)); }
break;
case 173:
-
-/* Line 1806 of yacc.c */
-#line 592 "camp.y"
+/* Line 1787 of yacc.c */
+#line 591 "camp.y"
{ (yyval.e) = new ternaryExp((yyvsp[(1) - (5)].ps).pos, (yyvsp[(3) - (5)].e), (yyvsp[(1) - (5)].ps).sym, (yyvsp[(5) - (5)].e),
new booleanExp((yyvsp[(2) - (5)].ps).pos, true)); }
break;
case 174:
-
-/* Line 1806 of yacc.c */
-#line 597 "camp.y"
+/* Line 1787 of yacc.c */
+#line 596 "camp.y"
{ (yyval.e) = new unaryExp((yyvsp[(1) - (2)].ps).pos, (yyvsp[(2) - (2)].e), (yyvsp[(1) - (2)].ps).sym); }
break;
case 175:
-
-/* Line 1806 of yacc.c */
-#line 599 "camp.y"
+/* Line 1787 of yacc.c */
+#line 598 "camp.y"
{ (yyval.e) = new binaryExp((yyvsp[(1) - (4)].ps).pos, (yyvsp[(2) - (4)].e), (yyvsp[(1) - (4)].ps).sym, (yyvsp[(4) - (4)].e)); }
break;
case 176:
-
-/* Line 1806 of yacc.c */
-#line 603 "camp.y"
+/* Line 1787 of yacc.c */
+#line 602 "camp.y"
{ (yyval.s) = new emptyStm((yyvsp[(1) - (1)].pos)); }
break;
case 177:
-
-/* Line 1806 of yacc.c */
-#line 604 "camp.y"
+/* Line 1787 of yacc.c */
+#line 603 "camp.y"
{ (yyval.s) = (yyvsp[(1) - (1)].s); }
break;
case 178:
-
-/* Line 1806 of yacc.c */
-#line 605 "camp.y"
+/* Line 1787 of yacc.c */
+#line 604 "camp.y"
{ (yyval.s) = (yyvsp[(1) - (2)].s); }
break;
case 179:
-
-/* Line 1806 of yacc.c */
-#line 607 "camp.y"
+/* Line 1787 of yacc.c */
+#line 606 "camp.y"
{ (yyval.s) = new ifStm((yyvsp[(1) - (5)].pos), (yyvsp[(3) - (5)].e), (yyvsp[(5) - (5)].s)); }
break;
case 180:
-
-/* Line 1806 of yacc.c */
-#line 609 "camp.y"
+/* Line 1787 of yacc.c */
+#line 608 "camp.y"
{ (yyval.s) = new ifStm((yyvsp[(1) - (7)].pos), (yyvsp[(3) - (7)].e), (yyvsp[(5) - (7)].s), (yyvsp[(7) - (7)].s)); }
break;
case 181:
-
-/* Line 1806 of yacc.c */
-#line 611 "camp.y"
+/* Line 1787 of yacc.c */
+#line 610 "camp.y"
{ (yyval.s) = new whileStm((yyvsp[(1) - (5)].pos), (yyvsp[(3) - (5)].e), (yyvsp[(5) - (5)].s)); }
break;
case 182:
-
-/* Line 1806 of yacc.c */
-#line 613 "camp.y"
+/* Line 1787 of yacc.c */
+#line 612 "camp.y"
{ (yyval.s) = new doStm((yyvsp[(1) - (7)].pos), (yyvsp[(2) - (7)].s), (yyvsp[(5) - (7)].e)); }
break;
case 183:
-
-/* Line 1806 of yacc.c */
-#line 615 "camp.y"
+/* Line 1787 of yacc.c */
+#line 614 "camp.y"
{ (yyval.s) = new forStm((yyvsp[(1) - (9)].pos), (yyvsp[(3) - (9)].run), (yyvsp[(5) - (9)].e), (yyvsp[(7) - (9)].sel), (yyvsp[(9) - (9)].s)); }
break;
case 184:
-
-/* Line 1806 of yacc.c */
-#line 617 "camp.y"
+/* Line 1787 of yacc.c */
+#line 616 "camp.y"
{ (yyval.s) = new extendedForStm((yyvsp[(1) - (8)].pos), (yyvsp[(3) - (8)].t), (yyvsp[(4) - (8)].ps).sym, (yyvsp[(6) - (8)].e), (yyvsp[(8) - (8)].s)); }
break;
case 185:
-
-/* Line 1806 of yacc.c */
-#line 618 "camp.y"
+/* Line 1787 of yacc.c */
+#line 617 "camp.y"
{ (yyval.s) = new breakStm((yyvsp[(1) - (2)].pos)); }
break;
case 186:
-
-/* Line 1806 of yacc.c */
-#line 619 "camp.y"
+/* Line 1787 of yacc.c */
+#line 618 "camp.y"
{ (yyval.s) = new continueStm((yyvsp[(1) - (2)].pos)); }
break;
case 187:
-
-/* Line 1806 of yacc.c */
-#line 620 "camp.y"
+/* Line 1787 of yacc.c */
+#line 619 "camp.y"
{ (yyval.s) = new returnStm((yyvsp[(1) - (2)].pos)); }
break;
case 188:
-
-/* Line 1806 of yacc.c */
-#line 621 "camp.y"
+/* Line 1787 of yacc.c */
+#line 620 "camp.y"
{ (yyval.s) = new returnStm((yyvsp[(1) - (3)].pos), (yyvsp[(2) - (3)].e)); }
break;
case 189:
-
-/* Line 1806 of yacc.c */
-#line 625 "camp.y"
+/* Line 1787 of yacc.c */
+#line 624 "camp.y"
{ (yyval.s) = new expStm((yyvsp[(1) - (1)].e)->getPos(), (yyvsp[(1) - (1)].e)); }
break;
case 190:
-
-/* Line 1806 of yacc.c */
-#line 629 "camp.y"
+/* Line 1787 of yacc.c */
+#line 628 "camp.y"
{ (yyval.s) = new blockStm((yyvsp[(1) - (1)].b)->getPos(), (yyvsp[(1) - (1)].b)); }
break;
case 191:
-
-/* Line 1806 of yacc.c */
-#line 633 "camp.y"
+/* Line 1787 of yacc.c */
+#line 632 "camp.y"
{ (yyval.run) = 0; }
break;
case 192:
-
-/* Line 1806 of yacc.c */
-#line 634 "camp.y"
+/* Line 1787 of yacc.c */
+#line 633 "camp.y"
{ (yyval.run) = (yyvsp[(1) - (1)].sel); }
break;
case 193:
-
-/* Line 1806 of yacc.c */
-#line 635 "camp.y"
+/* Line 1787 of yacc.c */
+#line 634 "camp.y"
{ (yyval.run) = (yyvsp[(1) - (1)].vd); }
break;
case 194:
-
-/* Line 1806 of yacc.c */
-#line 639 "camp.y"
+/* Line 1787 of yacc.c */
+#line 638 "camp.y"
{ (yyval.e) = 0; }
break;
case 195:
-
-/* Line 1806 of yacc.c */
-#line 640 "camp.y"
+/* Line 1787 of yacc.c */
+#line 639 "camp.y"
{ (yyval.e) = (yyvsp[(1) - (1)].e); }
break;
case 196:
-
-/* Line 1806 of yacc.c */
-#line 644 "camp.y"
+/* Line 1787 of yacc.c */
+#line 643 "camp.y"
{ (yyval.sel) = 0; }
break;
case 197:
-
-/* Line 1806 of yacc.c */
-#line 645 "camp.y"
+/* Line 1787 of yacc.c */
+#line 644 "camp.y"
{ (yyval.sel) = (yyvsp[(1) - (1)].sel); }
break;
case 198:
-
-/* Line 1806 of yacc.c */
-#line 649 "camp.y"
+/* Line 1787 of yacc.c */
+#line 648 "camp.y"
{ (yyval.sel) = new stmExpList((yyvsp[(1) - (1)].s)->getPos()); (yyval.sel)->add((yyvsp[(1) - (1)].s)); }
break;
case 199:
-
-/* Line 1806 of yacc.c */
-#line 651 "camp.y"
+/* Line 1787 of yacc.c */
+#line 650 "camp.y"
{ (yyval.sel) = (yyvsp[(1) - (3)].sel); (yyval.sel)->add((yyvsp[(3) - (3)].s)); }
break;
-
-/* Line 1806 of yacc.c */
-#line 3590 "camp.tab.c"
+/* Line 1787 of yacc.c */
+#line 3388 "camp.tab.c"
default: break;
}
/* User semantic actions sometimes alter yychar, and that requires
@@ -3773,7 +3571,7 @@ yyabortlab:
yyresult = 1;
goto yyreturn;
-#if !defined(yyoverflow) || YYERROR_VERBOSE
+#if !defined yyoverflow || YYERROR_VERBOSE
/*-------------------------------------------------.
| yyexhaustedlab -- memory exhaustion comes here. |
`-------------------------------------------------*/
diff --git a/Build/source/utils/asymptote/camp.tab.h b/Build/source/utils/asymptote/camp.tab.h
index 79c827add98..50c87c2ad63 100644
--- a/Build/source/utils/asymptote/camp.tab.h
+++ b/Build/source/utils/asymptote/camp.tab.h
@@ -1,8 +1,8 @@
-/* A Bison parser, made by GNU Bison 2.5. */
+/* A Bison parser, made by GNU Bison 2.6.1. */
/* Bison interface for Yacc-like parsers in C
- Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
+ Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -30,6 +30,15 @@
This special exception was added by the Free Software Foundation in
version 2.2 of Bison. */
+#ifndef YY_CAMP_TAB_H
+# define YY_CAMP_TAB_H
+/* Enabling traces. */
+#ifndef YYDEBUG
+# define YYDEBUG 1
+#endif
+#if YYDEBUG
+extern int yydebug;
+#endif
/* Tokens. */
#ifndef YYTOKENTYPE
@@ -59,50 +68,47 @@
GT = 277,
GE = 278,
CARETS = 279,
- LOGNOT = 280,
- OPERATOR = 281,
- LOOSE = 282,
- ASSIGN = 283,
- DIRTAG = 284,
- JOIN_PREC = 285,
- AND = 286,
- ELLIPSIS = 287,
- ACCESS = 288,
- UNRAVEL = 289,
- IMPORT = 290,
- INCLUDE = 291,
- FROM = 292,
- QUOTE = 293,
- STRUCT = 294,
- TYPEDEF = 295,
- NEW = 296,
- IF = 297,
- ELSE = 298,
- WHILE = 299,
- DO = 300,
- FOR = 301,
- BREAK = 302,
- CONTINUE = 303,
- RETURN_ = 304,
- THIS = 305,
- EXPLICIT = 306,
- GARBAGE = 307,
- LIT = 308,
- STRING = 309,
- PERM = 310,
- MODIFIER = 311,
- UNARY = 312,
- EXP_IN_PARENS_RULE = 313
+ OPERATOR = 280,
+ LOOSE = 281,
+ ASSIGN = 282,
+ DIRTAG = 283,
+ JOIN_PREC = 284,
+ AND = 285,
+ ELLIPSIS = 286,
+ ACCESS = 287,
+ UNRAVEL = 288,
+ IMPORT = 289,
+ INCLUDE = 290,
+ FROM = 291,
+ QUOTE = 292,
+ STRUCT = 293,
+ TYPEDEF = 294,
+ NEW = 295,
+ IF = 296,
+ ELSE = 297,
+ WHILE = 298,
+ DO = 299,
+ FOR = 300,
+ BREAK = 301,
+ CONTINUE = 302,
+ RETURN_ = 303,
+ THIS = 304,
+ EXPLICIT = 305,
+ GARBAGE = 306,
+ LIT = 307,
+ STRING = 308,
+ PERM = 309,
+ MODIFIER = 310,
+ UNARY = 311,
+ EXP_IN_PARENS_RULE = 312
};
#endif
-
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
typedef union YYSTYPE
{
-
-/* Line 2068 of yacc.c */
+/* Line 2049 of yacc.c */
#line 60 "camp.y"
position pos;
@@ -151,9 +157,8 @@ typedef union YYSTYPE
absyntax::formals *fls;
-
-/* Line 2068 of yacc.c */
-#line 157 "camp.tab.h"
+/* Line 2049 of yacc.c */
+#line 162 "camp.tab.h"
} YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
@@ -162,4 +167,18 @@ typedef union YYSTYPE
extern YYSTYPE yylval;
+#ifdef YYPARSE_PARAM
+#if defined __STDC__ || defined __cplusplus
+int yyparse (void *YYPARSE_PARAM);
+#else
+int yyparse ();
+#endif
+#else /* ! YYPARSE_PARAM */
+#if defined __STDC__ || defined __cplusplus
+int yyparse (void);
+#else
+int yyparse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
+#endif /* !YY_CAMP_TAB_H */
diff --git a/Build/source/utils/asymptote/camp.y b/Build/source/utils/asymptote/camp.y
index 33691100edb..82b8f0f9e8e 100644
--- a/Build/source/utils/asymptote/camp.y
+++ b/Build/source/utils/asymptote/camp.y
@@ -108,7 +108,7 @@ using mem::string;
DOTS COLONS DASHES INCR LONGDASH
CONTROLS TENSION ATLEAST CURL
COR CAND BAR AMPERSAND EQ NEQ LT LE GT GE CARETS
- '+' '-' '*' '/' '%' '^' LOGNOT OPERATOR
+ '+' '-' '*' '/' '%' '^' OPERATOR
%token <pos> LOOSE ASSIGN '?' ':'
DIRTAG JOIN_PREC AND
'{' '}' '(' ')' '.' ',' '[' ']' ';' ELLIPSIS
@@ -140,7 +140,6 @@ using mem::string;
%left '*' '/' '%' LIT
%left UNARY
%right '^'
-%left LOGNOT
%left EXP_IN_PARENS_RULE
%left '(' ')'
@@ -473,7 +472,7 @@ exp:
{ $$ = new unaryExp($1.pos, $2, $1.sym); }
| '-' exp %prec UNARY
{ $$ = new unaryExp($1.pos, $2, $1.sym); }
-| LOGNOT exp { $$ = new unaryExp($1.pos, $2, $1.sym); }
+| OPERATOR exp { $$ = new unaryExp($1.pos, $2, $1.sym); }
| exp '+' exp { $$ = new binaryExp($2.pos, $1, $2.sym, $3); }
| exp '-' exp { $$ = new binaryExp($2.pos, $1, $2.sym, $3); }
| exp '*' exp { $$ = new binaryExp($2.pos, $1, $2.sym, $3); }
diff --git a/Build/source/utils/asymptote/config.guess b/Build/source/utils/asymptote/config.guess
index 120cc0d239e..f32079abda6 100644
--- a/Build/source/utils/asymptote/config.guess
+++ b/Build/source/utils/asymptote/config.guess
@@ -1,12 +1,14 @@
#! /bin/sh
# Attempt to guess a canonical system name.
-# Copyright 1992-2013 Free Software Foundation, Inc.
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+# Free Software Foundation, Inc.
-timestamp='2013-05-16'
+timestamp='2008-01-23'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
+# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
@@ -15,22 +17,26 @@ timestamp='2013-05-16'
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
-# along with this program; if not, see <http://www.gnu.org/licenses/>.
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
+# 02110-1301, USA.
#
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that
-# program. This Exception is an additional permission under section 7
-# of the GNU General Public License, version 3 ("GPLv3").
-#
-# Originally written by Per Bothner.
+# the same distribution terms that you use for the rest of that program.
+
+
+# Originally written by Per Bothner <per@bothner.com>.
+# Please send patches to <config-patches@gnu.org>. Submit a context
+# diff and a properly formatted ChangeLog entry.
#
-# You can get the latest version of this script from:
-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+# This script attempts to guess a canonical system name similar to
+# config.sub. If it succeeds, it prints the system name on stdout, and
+# exits with 0. Otherwise, it exits with 1.
#
-# Please send patches with a ChangeLog entry to config-patches@gnu.org.
-
+# The plan is that this can be called by configure scripts if you
+# don't specify an explicit build system type.
me=`echo "$0" | sed -e 's,.*/,,'`
@@ -50,7 +56,8 @@ version="\
GNU config.guess ($timestamp)
Originally written by Per Bothner.
-Copyright 1992-2013 Free Software Foundation, Inc.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
+2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -132,33 +139,12 @@ UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
-case "${UNAME_SYSTEM}" in
-Linux|GNU|GNU/*)
- # If the system lacks a compiler, then just pick glibc.
- # We could probably try harder.
- LIBC=gnu
-
- eval $set_cc_for_build
- cat <<-EOF > $dummy.c
- #include <features.h>
- #if defined(__UCLIBC__)
- LIBC=uclibc
- #elif defined(__dietlibc__)
- LIBC=dietlibc
- #else
- LIBC=gnu
- #endif
- EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
- ;;
-esac
-
# Note: order is significant - the case branches are not exclusive.
case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
*:NetBSD:*:*)
# NetBSD (nbsd) targets should (where applicable) match one or
- # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
+ # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
# *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
# switched to ELF, *-*-netbsd* would select the old
# object file format. This provides both forward
@@ -184,7 +170,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
arm*|i386|m68k|ns32k|sh3*|sparc|vax)
eval $set_cc_for_build
if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
- | grep -q __ELF__
+ | grep __ELF__ >/dev/null
then
# Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
# Return netbsd for either. FIX?
@@ -194,7 +180,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
fi
;;
*)
- os=netbsd
+ os=netbsd
;;
esac
# The OS release
@@ -215,10 +201,6 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
echo "${machine}-${os}${release}"
exit ;;
- *:Bitrig:*:*)
- UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
- echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
- exit ;;
*:OpenBSD:*:*)
UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
@@ -241,7 +223,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
;;
*5.*)
- UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
;;
esac
# According to Compaq, /usr/sbin/psrinfo has been available on
@@ -287,10 +269,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# A Xn.n version is an unreleased experimental baselevel.
# 1.2 uses "1.2" for uname -r.
echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
- exitcode=$?
- trap '' 0
- exit $exitcode ;;
+ exit ;;
Alpha\ *:Windows_NT*:*)
# How do we know it's Interix rather than the generic POSIX subsystem?
# Should we change UNAME_MACHINE based on the output of uname instead
@@ -316,12 +295,12 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
echo s390-ibm-zvmoe
exit ;;
*:OS400:*:*)
- echo powerpc-ibm-os400
+ echo powerpc-ibm-os400
exit ;;
arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
echo arm-acorn-riscix${UNAME_RELEASE}
exit ;;
- arm*:riscos:*:*|arm*:RISCOS:*:*)
+ arm:riscos:*:*|arm:RISCOS:*:*)
echo arm-unknown-riscos
exit ;;
SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
@@ -345,33 +324,14 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
case `/usr/bin/uname -p` in
sparc) echo sparc-icl-nx7; exit ;;
esac ;;
- s390x:SunOS:*:*)
- echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit ;;
sun4H:SunOS:5.*:*)
echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit ;;
sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit ;;
- i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
- echo i386-pc-auroraux${UNAME_RELEASE}
- exit ;;
i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
- eval $set_cc_for_build
- SUN_ARCH="i386"
- # If there is a compiler, see if it is configured for 64-bit objects.
- # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
- # This test works for both compilers.
- if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
- if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
- (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
- grep IS_64BIT_ARCH >/dev/null
- then
- SUN_ARCH="x86_64"
- fi
- fi
- echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit ;;
sun4*:SunOS:6*:*)
# According to config.sub, this is the proper way to canonicalize
@@ -415,23 +375,23 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# MiNT. But MiNT is downward compatible to TOS, so this should
# be no problem.
atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
+ echo m68k-atari-mint${UNAME_RELEASE}
exit ;;
atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
echo m68k-atari-mint${UNAME_RELEASE}
- exit ;;
+ exit ;;
*falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
- echo m68k-atari-mint${UNAME_RELEASE}
+ echo m68k-atari-mint${UNAME_RELEASE}
exit ;;
milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
- echo m68k-milan-mint${UNAME_RELEASE}
- exit ;;
+ echo m68k-milan-mint${UNAME_RELEASE}
+ exit ;;
hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
- echo m68k-hades-mint${UNAME_RELEASE}
- exit ;;
+ echo m68k-hades-mint${UNAME_RELEASE}
+ exit ;;
*:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
- echo m68k-unknown-mint${UNAME_RELEASE}
- exit ;;
+ echo m68k-unknown-mint${UNAME_RELEASE}
+ exit ;;
m68k:machten:*:*)
echo m68k-apple-machten${UNAME_RELEASE}
exit ;;
@@ -501,8 +461,8 @@ EOF
echo m88k-motorola-sysv3
exit ;;
AViiON:dgux:*:*)
- # DG/UX returns AViiON for all architectures
- UNAME_PROCESSOR=`/usr/bin/uname -p`
+ # DG/UX returns AViiON for all architectures
+ UNAME_PROCESSOR=`/usr/bin/uname -p`
if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
then
if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
@@ -515,7 +475,7 @@ EOF
else
echo i586-dg-dgux${UNAME_RELEASE}
fi
- exit ;;
+ exit ;;
M88*:DolphinOS:*:*) # DolphinOS (SVR3)
echo m88k-dolphin-sysv3
exit ;;
@@ -572,7 +532,7 @@ EOF
echo rs6000-ibm-aix3.2
fi
exit ;;
- *:AIX:*:[4567])
+ *:AIX:*:[456])
IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
IBM_ARCH=rs6000
@@ -615,52 +575,52 @@ EOF
9000/[678][0-9][0-9])
if [ -x /usr/bin/getconf ]; then
sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
- sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
- case "${sc_cpu_version}" in
- 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
- 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
- 532) # CPU_PA_RISC2_0
- case "${sc_kernel_bits}" in
- 32) HP_ARCH="hppa2.0n" ;;
- 64) HP_ARCH="hppa2.0w" ;;
+ sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+ case "${sc_cpu_version}" in
+ 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+ 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+ 532) # CPU_PA_RISC2_0
+ case "${sc_kernel_bits}" in
+ 32) HP_ARCH="hppa2.0n" ;;
+ 64) HP_ARCH="hppa2.0w" ;;
'') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
- esac ;;
- esac
+ esac ;;
+ esac
fi
if [ "${HP_ARCH}" = "" ]; then
eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
+ sed 's/^ //' << EOF >$dummy.c
- #define _HPUX_SOURCE
- #include <stdlib.h>
- #include <unistd.h>
+ #define _HPUX_SOURCE
+ #include <stdlib.h>
+ #include <unistd.h>
- int main ()
- {
- #if defined(_SC_KERNEL_BITS)
- long bits = sysconf(_SC_KERNEL_BITS);
- #endif
- long cpu = sysconf (_SC_CPU_VERSION);
+ int main ()
+ {
+ #if defined(_SC_KERNEL_BITS)
+ long bits = sysconf(_SC_KERNEL_BITS);
+ #endif
+ long cpu = sysconf (_SC_CPU_VERSION);
- switch (cpu)
- {
- case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
- case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
- case CPU_PA_RISC2_0:
- #if defined(_SC_KERNEL_BITS)
- switch (bits)
- {
- case 64: puts ("hppa2.0w"); break;
- case 32: puts ("hppa2.0n"); break;
- default: puts ("hppa2.0"); break;
- } break;
- #else /* !defined(_SC_KERNEL_BITS) */
- puts ("hppa2.0"); break;
- #endif
- default: puts ("hppa1.0"); break;
- }
- exit (0);
- }
+ switch (cpu)
+ {
+ case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+ case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+ case CPU_PA_RISC2_0:
+ #if defined(_SC_KERNEL_BITS)
+ switch (bits)
+ {
+ case 64: puts ("hppa2.0w"); break;
+ case 32: puts ("hppa2.0n"); break;
+ default: puts ("hppa2.0"); break;
+ } break;
+ #else /* !defined(_SC_KERNEL_BITS) */
+ puts ("hppa2.0"); break;
+ #endif
+ default: puts ("hppa1.0"); break;
+ }
+ exit (0);
+ }
EOF
(CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
test -z "$HP_ARCH" && HP_ARCH=hppa
@@ -680,7 +640,7 @@ EOF
# => hppa64-hp-hpux11.23
if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
- grep -q __LP64__
+ grep __LP64__ >/dev/null
then
HP_ARCH="hppa2.0w"
else
@@ -751,22 +711,22 @@ EOF
exit ;;
C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
echo c1-convex-bsd
- exit ;;
+ exit ;;
C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
if getsysinfo -f scalar_acc
then echo c32-convex-bsd
else echo c2-convex-bsd
fi
- exit ;;
+ exit ;;
C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
echo c34-convex-bsd
- exit ;;
+ exit ;;
C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
echo c38-convex-bsd
- exit ;;
+ exit ;;
C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
echo c4-convex-bsd
- exit ;;
+ exit ;;
CRAY*Y-MP:*:*:*)
echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
exit ;;
@@ -790,14 +750,14 @@ EOF
exit ;;
F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
- FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
- echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
- exit ;;
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+ echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+ exit ;;
5000:UNIX_System_V:4.*:*)
- FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
- FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
- echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+ echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
exit ;;
i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
@@ -809,39 +769,34 @@ EOF
echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
exit ;;
*:FreeBSD:*:*)
- UNAME_PROCESSOR=`/usr/bin/uname -p`
- case ${UNAME_PROCESSOR} in
+ case ${UNAME_MACHINE} in
+ pc98)
+ echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
amd64)
echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
*)
- echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
esac
exit ;;
i*:CYGWIN*:*)
echo ${UNAME_MACHINE}-pc-cygwin
exit ;;
- *:MINGW64*:*)
- echo ${UNAME_MACHINE}-pc-mingw64
- exit ;;
*:MINGW*:*)
echo ${UNAME_MACHINE}-pc-mingw32
exit ;;
- i*:MSYS*:*)
- echo ${UNAME_MACHINE}-pc-msys
- exit ;;
i*:windows32*:*)
- # uname -m includes "-pc" on this system.
- echo ${UNAME_MACHINE}-mingw32
+ # uname -m includes "-pc" on this system.
+ echo ${UNAME_MACHINE}-mingw32
exit ;;
i*:PW*:*)
echo ${UNAME_MACHINE}-pc-pw32
exit ;;
- *:Interix*:*)
- case ${UNAME_MACHINE} in
+ *:Interix*:[3456]*)
+ case ${UNAME_MACHINE} in
x86)
echo i586-pc-interix${UNAME_RELEASE}
exit ;;
- authenticamd | genuineintel | EM64T)
+ EM64T | authenticamd)
echo x86_64-unknown-interix${UNAME_RELEASE}
exit ;;
IA64)
@@ -851,9 +806,6 @@ EOF
[345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
echo i${UNAME_MACHINE}-pc-mks
exit ;;
- 8664:Windows_NT:*)
- echo x86_64-pc-mks
- exit ;;
i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
# How do we know it's Interix rather than the generic POSIX subsystem?
# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
@@ -874,151 +826,210 @@ EOF
exit ;;
*:GNU:*:*)
# the GNU system
- echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+ echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
exit ;;
*:GNU/*:*:*)
# other systems with GNU libc and userland
- echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
+ echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
exit ;;
i*86:Minix:*:*)
echo ${UNAME_MACHINE}-pc-minix
exit ;;
- aarch64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- aarch64_be:Linux:*:*)
- UNAME_MACHINE=aarch64_be
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- alpha:Linux:*:*)
- case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
- EV5) UNAME_MACHINE=alphaev5 ;;
- EV56) UNAME_MACHINE=alphaev56 ;;
- PCA56) UNAME_MACHINE=alphapca56 ;;
- PCA57) UNAME_MACHINE=alphapca56 ;;
- EV6) UNAME_MACHINE=alphaev6 ;;
- EV67) UNAME_MACHINE=alphaev67 ;;
- EV68*) UNAME_MACHINE=alphaev68 ;;
- esac
- objdump --private-headers /bin/sh | grep -q ld.so.1
- if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- arc:Linux:*:* | arceb:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
arm*:Linux:*:*)
eval $set_cc_for_build
if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ARM_EABI__
then
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
else
- if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
- | grep -q __ARM_PCS_VFP
- then
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
- else
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
- fi
+ echo ${UNAME_MACHINE}-unknown-linux-gnueabi
fi
exit ;;
avr32*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
cris:Linux:*:*)
- echo ${UNAME_MACHINE}-axis-linux-${LIBC}
+ echo cris-axis-linux-gnu
exit ;;
crisv32:Linux:*:*)
- echo ${UNAME_MACHINE}-axis-linux-${LIBC}
+ echo crisv32-axis-linux-gnu
exit ;;
frv:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- hexagon:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- i*86:Linux:*:*)
- echo ${UNAME_MACHINE}-pc-linux-${LIBC}
+ echo frv-unknown-linux-gnu
exit ;;
ia64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
m32r*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
m68*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
- mips:Linux:*:* | mips64:Linux:*:*)
+ mips:Linux:*:*)
eval $set_cc_for_build
sed 's/^ //' << EOF >$dummy.c
#undef CPU
- #undef ${UNAME_MACHINE}
- #undef ${UNAME_MACHINE}el
+ #undef mips
+ #undef mipsel
#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
- CPU=${UNAME_MACHINE}el
+ CPU=mipsel
#else
#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
- CPU=${UNAME_MACHINE}
+ CPU=mips
#else
CPU=
#endif
#endif
EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
- test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
+ eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
+ /^CPU/{
+ s: ::g
+ p
+ }'`"
+ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+ ;;
+ mips64:Linux:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #undef CPU
+ #undef mips64
+ #undef mips64el
+ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+ CPU=mips64el
+ #else
+ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+ CPU=mips64
+ #else
+ CPU=
+ #endif
+ #endif
+EOF
+ eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
+ /^CPU/{
+ s: ::g
+ p
+ }'`"
+ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
;;
- or1k:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
or32:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo or32-unknown-linux-gnu
exit ;;
- padre:Linux:*:*)
- echo sparc-unknown-linux-${LIBC}
+ ppc:Linux:*:*)
+ echo powerpc-unknown-linux-gnu
exit ;;
- parisc64:Linux:*:* | hppa64:Linux:*:*)
- echo hppa64-unknown-linux-${LIBC}
+ ppc64:Linux:*:*)
+ echo powerpc64-unknown-linux-gnu
+ exit ;;
+ alpha:Linux:*:*)
+ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+ EV5) UNAME_MACHINE=alphaev5 ;;
+ EV56) UNAME_MACHINE=alphaev56 ;;
+ PCA56) UNAME_MACHINE=alphapca56 ;;
+ PCA57) UNAME_MACHINE=alphapca56 ;;
+ EV6) UNAME_MACHINE=alphaev6 ;;
+ EV67) UNAME_MACHINE=alphaev67 ;;
+ EV68*) UNAME_MACHINE=alphaev68 ;;
+ esac
+ objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
+ if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+ echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
exit ;;
parisc:Linux:*:* | hppa:Linux:*:*)
# Look for CPU level
case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
- PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
- PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
- *) echo hppa-unknown-linux-${LIBC} ;;
+ PA7*) echo hppa1.1-unknown-linux-gnu ;;
+ PA8*) echo hppa2.0-unknown-linux-gnu ;;
+ *) echo hppa-unknown-linux-gnu ;;
esac
exit ;;
- ppc64:Linux:*:*)
- echo powerpc64-unknown-linux-${LIBC}
- exit ;;
- ppc:Linux:*:*)
- echo powerpc-unknown-linux-${LIBC}
+ parisc64:Linux:*:* | hppa64:Linux:*:*)
+ echo hppa64-unknown-linux-gnu
exit ;;
s390:Linux:*:* | s390x:Linux:*:*)
- echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
+ echo ${UNAME_MACHINE}-ibm-linux
exit ;;
sh64*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
sh*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
sparc:Linux:*:* | sparc64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
- exit ;;
- tile*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
vax:Linux:*:*)
- echo ${UNAME_MACHINE}-dec-linux-${LIBC}
+ echo ${UNAME_MACHINE}-dec-linux-gnu
exit ;;
x86_64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo x86_64-unknown-linux-gnu
exit ;;
xtensa*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
+ i*86:Linux:*:*)
+ # The BFD linker knows what the default object file format is, so
+ # first see if it will tell us. cd to the root directory to prevent
+ # problems with other programs or directories called `ld' in the path.
+ # Set LC_ALL=C to ensure ld outputs messages in English.
+ ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
+ | sed -ne '/supported targets:/!d
+ s/[ ][ ]*/ /g
+ s/.*supported targets: *//
+ s/ .*//
+ p'`
+ case "$ld_supported_targets" in
+ elf32-i386)
+ TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
+ ;;
+ a.out-i386-linux)
+ echo "${UNAME_MACHINE}-pc-linux-gnuaout"
+ exit ;;
+ coff-i386)
+ echo "${UNAME_MACHINE}-pc-linux-gnucoff"
+ exit ;;
+ "")
+ # Either a pre-BFD a.out linker (linux-gnuoldld) or
+ # one that does not give us useful --help.
+ echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
+ exit ;;
+ esac
+ # Determine whether the default compiler is a.out or elf
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #include <features.h>
+ #ifdef __ELF__
+ # ifdef __GLIBC__
+ # if __GLIBC__ >= 2
+ LIBC=gnu
+ # else
+ LIBC=gnulibc1
+ # endif
+ # else
+ LIBC=gnulibc1
+ # endif
+ #else
+ #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC)
+ LIBC=gnu
+ #else
+ LIBC=gnuaout
+ #endif
+ #endif
+ #ifdef __dietlibc__
+ LIBC=dietlibc
+ #endif
+EOF
+ eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
+ /^LIBC/{
+ s: ::g
+ p
+ }'`"
+ test x"${LIBC}" != x && {
+ echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+ exit
+ }
+ test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }
+ ;;
i*86:DYNIX/ptx:4*:*)
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
# earlier versions are messed up and put the nodename in both
@@ -1026,11 +1037,11 @@ EOF
echo i386-sequent-sysv4
exit ;;
i*86:UNIX_SV:4.2MP:2.*)
- # Unixware is an offshoot of SVR4, but it has its own version
- # number series starting with 2...
- # I am not positive that other SVR4 systems won't match this,
+ # Unixware is an offshoot of SVR4, but it has its own version
+ # number series starting with 2...
+ # I am not positive that other SVR4 systems won't match this,
# I just have to hope. -- rms.
- # Use sysv4.2uw... so that sysv4* matches it.
+ # Use sysv4.2uw... so that sysv4* matches it.
echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
exit ;;
i*86:OS/2:*:*)
@@ -1047,7 +1058,7 @@ EOF
i*86:syllable:*:*)
echo ${UNAME_MACHINE}-pc-syllable
exit ;;
- i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
+ i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
echo i386-unknown-lynxos${UNAME_RELEASE}
exit ;;
i*86:*DOS:*:*)
@@ -1062,7 +1073,7 @@ EOF
fi
exit ;;
i*86:*:5:[678]*)
- # UnixWare 7.x, OpenUNIX and OpenServer 6.
+ # UnixWare 7.x, OpenUNIX and OpenServer 6.
case `/bin/uname -X | grep "^Machine"` in
*486*) UNAME_MACHINE=i486 ;;
*Pentium) UNAME_MACHINE=i586 ;;
@@ -1090,13 +1101,10 @@ EOF
exit ;;
pc:*:*:*)
# Left here for compatibility:
- # uname -m prints for DJGPP always 'pc', but it prints nothing about
- # the processor, so we play safe by assuming i586.
- # Note: whatever this is, it MUST be the same as what config.sub
- # prints for the "djgpp" host, or else GDB configury will decide that
- # this is a cross-build.
- echo i586-pc-msdosdjgpp
- exit ;;
+ # uname -m prints for DJGPP always 'pc', but it prints nothing about
+ # the processor, so we play safe by assuming i386.
+ echo i386-pc-msdosdjgpp
+ exit ;;
Intel:Mach:3*:*)
echo i386-pc-mach3
exit ;;
@@ -1131,18 +1139,8 @@ EOF
/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
&& { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
- /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && { echo i486-ncr-sysv4; exit; } ;;
- NCR*:*:4.2:* | MPRAS*:*:4.2:*)
- OS_REL='.3'
- test -r /etc/.relid \
- && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
- /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
- && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
- /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
- && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
- /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
- && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4; exit; } ;;
m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
echo m68k-unknown-lynxos${UNAME_RELEASE}
exit ;;
@@ -1155,7 +1153,7 @@ EOF
rs6000:LynxOS:2.*:*)
echo rs6000-unknown-lynxos${UNAME_RELEASE}
exit ;;
- PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
+ PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
echo powerpc-unknown-lynxos${UNAME_RELEASE}
exit ;;
SM[BE]S:UNIX_SV:*:*)
@@ -1175,10 +1173,10 @@ EOF
echo ns32k-sni-sysv
fi
exit ;;
- PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
- # says <Richard.M.Bartel@ccMail.Census.GOV>
- echo i586-unisys-sysv4
- exit ;;
+ PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+ # says <Richard.M.Bartel@ccMail.Census.GOV>
+ echo i586-unisys-sysv4
+ exit ;;
*:UNIX_System_V:4*:FTX*)
# From Gerald Hewes <hewes@openmarket.com>.
# How about differentiating between stratus architectures? -djm
@@ -1204,11 +1202,11 @@ EOF
exit ;;
R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
if [ -d /usr/nec ]; then
- echo mips-nec-sysv${UNAME_RELEASE}
+ echo mips-nec-sysv${UNAME_RELEASE}
else
- echo mips-unknown-sysv${UNAME_RELEASE}
+ echo mips-unknown-sysv${UNAME_RELEASE}
fi
- exit ;;
+ exit ;;
BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
echo powerpc-be-beos
exit ;;
@@ -1218,12 +1216,6 @@ EOF
BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
echo i586-pc-beos
exit ;;
- BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
- echo i586-pc-haiku
- exit ;;
- x86_64:Haiku:*:*)
- echo x86_64-unknown-haiku
- exit ;;
SX-4:SUPER-UX:*:*)
echo sx4-nec-superux${UNAME_RELEASE}
exit ;;
@@ -1250,21 +1242,9 @@ EOF
exit ;;
*:Darwin:*:*)
UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
- eval $set_cc_for_build
- if test "$UNAME_PROCESSOR" = unknown ; then
- UNAME_PROCESSOR=powerpc
- fi
- if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
- if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
- (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
- grep IS_64BIT_ARCH >/dev/null
- then
- case $UNAME_PROCESSOR in
- i386) UNAME_PROCESSOR=x86_64 ;;
- powerpc) UNAME_PROCESSOR=powerpc64 ;;
- esac
- fi
- fi
+ case $UNAME_PROCESSOR in
+ unknown) UNAME_PROCESSOR=powerpc ;;
+ esac
echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
exit ;;
*:procnto*:*:* | *:QNX:[0123456789]*:*)
@@ -1278,10 +1258,7 @@ EOF
*:QNX:*:4*)
echo i386-pc-qnx
exit ;;
- NEO-?:NONSTOP_KERNEL:*:*)
- echo neo-tandem-nsk${UNAME_RELEASE}
- exit ;;
- NSE-*:NONSTOP_KERNEL:*:*)
+ NSE-?:NONSTOP_KERNEL:*:*)
echo nse-tandem-nsk${UNAME_RELEASE}
exit ;;
NSR-?:NONSTOP_KERNEL:*:*)
@@ -1326,13 +1303,13 @@ EOF
echo pdp10-unknown-its
exit ;;
SEI:*:*:SEIUX)
- echo mips-sei-seiux${UNAME_RELEASE}
+ echo mips-sei-seiux${UNAME_RELEASE}
exit ;;
*:DragonFly:*:*)
echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
exit ;;
*:*VMS:*:*)
- UNAME_MACHINE=`(uname -p) 2>/dev/null`
+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
case "${UNAME_MACHINE}" in
A*) echo alpha-dec-vms ; exit ;;
I*) echo ia64-dec-vms ; exit ;;
@@ -1347,14 +1324,11 @@ EOF
i*86:rdos:*:*)
echo ${UNAME_MACHINE}-pc-rdos
exit ;;
- i*86:AROS:*:*)
- echo ${UNAME_MACHINE}-pc-aros
- exit ;;
- x86_64:VMkernel:*:*)
- echo ${UNAME_MACHINE}-unknown-esx
- exit ;;
esac
+#echo '(No uname command or uname output not recognized.)' 1>&2
+#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
+
eval $set_cc_for_build
cat >$dummy.c <<EOF
#ifdef _SEQUENT_
@@ -1372,11 +1346,11 @@ main ()
#include <sys/param.h>
printf ("m68k-sony-newsos%s\n",
#ifdef NEWSOS4
- "4"
+ "4"
#else
- ""
+ ""
#endif
- ); exit (0);
+ ); exit (0);
#endif
#endif
diff --git a/Build/source/utils/asymptote/config.sub b/Build/source/utils/asymptote/config.sub
index 8b612ab89df..59bb593f109 100644
--- a/Build/source/utils/asymptote/config.sub
+++ b/Build/source/utils/asymptote/config.sub
@@ -1,18 +1,24 @@
#! /bin/sh
# Configuration validation subroutine script.
-# Copyright 1992-2013 Free Software Foundation, Inc.
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+# 2011, 2012 Free Software Foundation, Inc.
-timestamp='2013-04-24'
+timestamp='2012-04-18'
-# This file is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
+# This file is (in principle) common to ALL GNU software.
+# The presence of a machine in this file suggests that SOME GNU software
+# can handle that machine. It does not imply ALL GNU software can.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, see <http://www.gnu.org/licenses/>.
@@ -20,12 +26,11 @@ timestamp='2013-04-24'
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that
-# program. This Exception is an additional permission under section 7
-# of the GNU General Public License, version 3 ("GPLv3").
+# the same distribution terms that you use for the rest of that program.
-# Please send patches with a ChangeLog entry to config-patches@gnu.org.
+# Please send patches to <config-patches@gnu.org>. Submit a context
+# diff and a properly formatted GNU ChangeLog entry.
#
# Configuration subroutine to validate and canonicalize a configuration type.
# Supply the specified configuration type as an argument.
@@ -68,7 +73,9 @@ Report bugs and patches to <config-patches@gnu.org>."
version="\
GNU config.sub ($timestamp)
-Copyright 1992-2013 Free Software Foundation, Inc.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
+Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -116,7 +123,7 @@ esac
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
case $maybe_os in
nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
- linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
+ linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
knetbsd*-gnu* | netbsd*-gnu* | \
kopensolaris*-gnu* | \
storm-chaos* | os2-emx* | rtmk-nova*)
@@ -149,7 +156,7 @@ case $os in
-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
- -apple | -axis | -knuth | -cray | -microblaze*)
+ -apple | -axis | -knuth | -cray | -microblaze)
os=
basic_machine=$1
;;
@@ -252,10 +259,8 @@ case $basic_machine in
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
| am33_2.0 \
- | arc | arceb \
- | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
- | avr | avr32 \
- | be32 | be64 \
+ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
+ | be32 | be64 \
| bfin \
| c4x | clipper \
| d10v | d30v | dlx | dsp16xx \
@@ -268,7 +273,7 @@ case $basic_machine in
| le32 | le64 \
| lm32 \
| m32c | m32r | m32rle | m68000 | m68k | m88k \
- | maxq | mb | microblaze | microblazeel | mcore | mep | metag \
+ | maxq | mb | microblaze | mcore | mep | metag \
| mips | mipsbe | mipseb | mipsel | mipsle \
| mips16 \
| mips64 | mips64el \
@@ -286,17 +291,16 @@ case $basic_machine in
| mipsisa64r2 | mipsisa64r2el \
| mipsisa64sb1 | mipsisa64sb1el \
| mipsisa64sr71k | mipsisa64sr71kel \
- | mipsr5900 | mipsr5900el \
| mipstx39 | mipstx39el \
| mn10200 | mn10300 \
| moxie \
| mt \
| msp430 \
| nds32 | nds32le | nds32be \
- | nios | nios2 | nios2eb | nios2el \
+ | nios | nios2 \
| ns16k | ns32k \
| open8 \
- | or1k | or32 \
+ | or32 \
| pdp10 | pdp11 | pj | pjl \
| powerpc | powerpc64 | powerpc64le | powerpcle \
| pyramid \
@@ -366,7 +370,7 @@ case $basic_machine in
| aarch64-* | aarch64_be-* \
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
- | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
+ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \
| avr-* | avr32-* \
| be32-* | be64-* \
@@ -385,8 +389,7 @@ case $basic_machine in
| lm32-* \
| m32c-* | m32r-* | m32rle-* \
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
- | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
- | microblaze-* | microblazeel-* \
+ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
| mips16-* \
| mips64-* | mips64el-* \
@@ -404,13 +407,12 @@ case $basic_machine in
| mipsisa64r2-* | mipsisa64r2el-* \
| mipsisa64sb1-* | mipsisa64sb1el-* \
| mipsisa64sr71k-* | mipsisa64sr71kel-* \
- | mipsr5900-* | mipsr5900el-* \
| mipstx39-* | mipstx39el-* \
| mmix-* \
| mt-* \
| msp430-* \
| nds32-* | nds32le-* | nds32be-* \
- | nios-* | nios2-* | nios2eb-* | nios2el-* \
+ | nios-* | nios2-* \
| none-* | np1-* | ns16k-* | ns32k-* \
| open8-* \
| orion-* \
@@ -786,13 +788,9 @@ case $basic_machine in
basic_machine=ns32k-utek
os=-sysv
;;
- microblaze*)
+ microblaze)
basic_machine=microblaze-xilinx
;;
- mingw64)
- basic_machine=x86_64-pc
- os=-mingw64
- ;;
mingw32)
basic_machine=i386-pc
os=-mingw32
@@ -1021,11 +1019,7 @@ case $basic_machine in
basic_machine=i586-unknown
os=-pw32
;;
- rdos | rdos64)
- basic_machine=x86_64-pc
- os=-rdos
- ;;
- rdos32)
+ rdos)
basic_machine=i386-pc
os=-rdos
;;
@@ -1352,21 +1346,21 @@ case $os in
-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
| -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
| -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
- | -sym* | -kopensolaris* | -plan9* \
+ | -sym* | -kopensolaris* \
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
| -aos* | -aros* \
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
| -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
- | -bitrig* | -openbsd* | -solidbsd* \
+ | -openbsd* | -solidbsd* \
| -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
| -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
| -chorusos* | -chorusrdb* | -cegcc* \
| -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
- | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
- | -linux-newlib* | -linux-musl* | -linux-uclibc* \
+ | -mingw32* | -linux-gnu* | -linux-android* \
+ | -linux-newlib* | -linux-uclibc* \
| -uxpv* | -beos* | -mpeix* | -udk* \
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
@@ -1498,6 +1492,9 @@ case $os in
-aros*)
os=-aros
;;
+ -kaos*)
+ os=-kaos
+ ;;
-zvmoe)
os=-zvmoe
;;
@@ -1546,9 +1543,6 @@ case $basic_machine in
c4x-* | tic4x-*)
os=-coff
;;
- hexagon-*)
- os=-elf
- ;;
tic54x-*)
os=-coff
;;
@@ -1589,9 +1583,6 @@ case $basic_machine in
mips*-*)
os=-elf
;;
- or1k-*)
- os=-elf
- ;;
or32-*)
os=-coff
;;
diff --git a/Build/source/utils/asymptote/configure b/Build/source/utils/asymptote/configure
index af719ea6d63..ff512dcc36d 100755
--- a/Build/source/utils/asymptote/configure
+++ b/Build/source/utils/asymptote/configure
@@ -1,13 +1,11 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68 for Asymptote 2.21.
+# Generated by GNU Autoconf 2.69 for Asymptote 2.22.
#
# Report bugs to <http://sourceforge.net/projects/asymptote>.
#
#
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
-# Foundation, Inc.
+# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
#
#
# This configure script is free software; the Free Software Foundation
@@ -136,6 +134,31 @@ export LANGUAGE
# CDPATH.
(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+# Use a proper internal environment variable to ensure we don't fall
+ # into an infinite loop, continuously re-executing ourselves.
+ if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
+ _as_can_reexec=no; export _as_can_reexec;
+ # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+ *v*x* | *x*v* ) as_opts=-vx ;;
+ *v* ) as_opts=-v ;;
+ *x* ) as_opts=-x ;;
+ * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+as_fn_exit 255
+ fi
+ # We don't want this to propagate to other subprocesses.
+ { _as_can_reexec=; unset _as_can_reexec;}
if test "x$CONFIG_SHELL" = x; then
as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
emulate sh
@@ -169,7 +192,8 @@ if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
else
exitcode=1; echo positional parameters were not saved.
fi
-test x\$exitcode = x0 || exit 1"
+test x\$exitcode = x0 || exit 1
+test -x / || exit 1"
as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
@@ -214,21 +238,25 @@ IFS=$as_save_IFS
if test "x$CONFIG_SHELL" != x; then :
- # We cannot yet assume a decent shell, so we have to provide a
- # neutralization value for shells without unset; and this also
- # works around shells that cannot unset nonexistent variables.
- # Preserve -v and -x to the replacement shell.
- BASH_ENV=/dev/null
- ENV=/dev/null
- (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
- export CONFIG_SHELL
- case $- in # ((((
- *v*x* | *x*v* ) as_opts=-vx ;;
- *v* ) as_opts=-v ;;
- *x* ) as_opts=-x ;;
- * ) as_opts= ;;
- esac
- exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"}
+ export CONFIG_SHELL
+ # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+ *v*x* | *x*v* ) as_opts=-vx ;;
+ *v* ) as_opts=-v ;;
+ *x* ) as_opts=-x ;;
+ * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
fi
if test x$as_have_required = xno; then :
@@ -331,6 +359,14 @@ $as_echo X"$as_dir" |
} # as_fn_mkdir_p
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+ test -f "$1" && test -x "$1"
+} # as_fn_executable_p
# as_fn_append VAR VALUE
# ----------------------
# Append the text in VALUE to the end of the definition contained in VAR. Take
@@ -452,6 +488,10 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits
chmod +x "$as_me.lineno" ||
{ $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+ # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
+ # already done that, so ensure we don't try to do so again and fall
+ # in an infinite loop. This has already happened in practice.
+ _as_can_reexec=no; export _as_can_reexec
# Don't try to exec as it changes $[0], causing all sort of problems
# (the dirname of $[0] is not the place where we might find the
# original and so on. Autoconf is especially sensitive to this).
@@ -486,16 +526,16 @@ if (echo >conf$$.file) 2>/dev/null; then
# ... but there are two gotchas:
# 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
# 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
- # In both cases, we have to default to `cp -p'.
+ # In both cases, we have to default to `cp -pR'.
ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
elif ln conf$$.file conf$$ 2>/dev/null; then
as_ln_s=ln
else
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
fi
else
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
fi
rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
rmdir conf$$.dir 2>/dev/null
@@ -507,28 +547,8 @@ else
as_mkdir_p=false
fi
-if test -x / >/dev/null 2>&1; then
- as_test_x='test -x'
-else
- if ls -dL / >/dev/null 2>&1; then
- as_ls_L_option=L
- else
- as_ls_L_option=
- fi
- as_test_x='
- eval sh -c '\''
- if test -d "$1"; then
- test -d "$1/.";
- else
- case $1 in #(
- -*)set "./$1";;
- esac;
- case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
- ???[sx]*):;;*)false;;esac;fi
- '\'' sh
- '
-fi
-as_executable_p=$as_test_x
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
# Sed expression to map a string onto a valid CPP name.
as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
@@ -560,8 +580,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='Asymptote'
PACKAGE_TARNAME='asymptote'
-PACKAGE_VERSION='2.21'
-PACKAGE_STRING='Asymptote 2.21'
+PACKAGE_VERSION='2.22'
+PACKAGE_STRING='Asymptote 2.22'
PACKAGE_BUGREPORT='http://sourceforge.net/projects/asymptote'
PACKAGE_URL=''
@@ -1176,8 +1196,6 @@ target=$target_alias
if test "x$host_alias" != x; then
if test "x$build_alias" = x; then
cross_compiling=maybe
- $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host.
- If a cross compiler is detected then cross compile mode will be used" >&2
elif test "x$build_alias" != "x$host_alias"; then
cross_compiling=yes
fi
@@ -1263,7 +1281,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.21 to adapt to many kinds of systems.
+\`configure' configures Asymptote 2.22 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1328,7 +1346,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of Asymptote 2.21:";;
+ short | recursive ) echo "Configuration of Asymptote 2.22:";;
esac
cat <<\_ACEOF
@@ -1441,10 +1459,10 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-Asymptote configure 2.21
-generated by GNU Autoconf 2.68
+Asymptote configure 2.22
+generated by GNU Autoconf 2.69
-Copyright (C) 2010 Free Software Foundation, Inc.
+Copyright (C) 2012 Free Software Foundation, Inc.
This configure script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it.
_ACEOF
@@ -1668,7 +1686,7 @@ $as_echo "$ac_try_echo"; } >&5
test ! -s conftest.err
} && test -s conftest$ac_exeext && {
test "$cross_compiling" = yes ||
- $as_test_x conftest$ac_exeext
+ test -x conftest$ac_exeext
}; then :
ac_retval=0
else
@@ -1909,7 +1927,7 @@ $as_echo "$ac_try_echo"; } >&5
test ! -s conftest.err
} && test -s conftest$ac_exeext && {
test "$cross_compiling" = yes ||
- $as_test_x conftest$ac_exeext
+ test -x conftest$ac_exeext
}; then :
ac_retval=0
else
@@ -2027,8 +2045,8 @@ 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.21, which was
-generated by GNU Autoconf 2.68. Invocation command line was
+It was created by Asymptote $as_me 2.22, which was
+generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -2508,7 +2526,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="${ac_tool_prefix}gcc"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -2548,7 +2566,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CC="gcc"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -2601,7 +2619,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="${ac_tool_prefix}cc"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -2642,7 +2660,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
ac_prog_rejected=yes
continue
@@ -2700,7 +2718,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -2744,7 +2762,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CC="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3190,8 +3208,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdarg.h>
#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
+struct stat;
/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
struct buf { int x; };
FILE * (*rcsopen) (struct buf *, struct stat *, int);
@@ -3431,7 +3448,7 @@ do
for ac_prog in grep ggrep; do
for ac_exec_ext in '' $ac_executable_extensions; do
ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
- { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+ as_fn_executable_p "$ac_path_GREP" || continue
# Check for GNU ac_path_GREP and select it if it is found.
# Check for GNU $ac_path_GREP
case `"$ac_path_GREP" --version 2>&1` in
@@ -3497,7 +3514,7 @@ do
for ac_prog in egrep; do
for ac_exec_ext in '' $ac_executable_extensions; do
ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
- { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+ as_fn_executable_p "$ac_path_EGREP" || continue
# Check for GNU ac_path_EGREP and select it if it is found.
# Check for GNU $ac_path_EGREP
case `"$ac_path_EGREP" --version 2>&1` in
@@ -3930,7 +3947,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_kpsewhich="true"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -4029,7 +4046,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_kpsewhich="true"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -4077,7 +4094,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_TEXI2DVI="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -4189,7 +4206,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -4233,7 +4250,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CXX="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -4437,7 +4454,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_LEX="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -4469,7 +4486,8 @@ a { ECHO; }
b { REJECT; }
c { yymore (); }
d { yyless (1); }
-e { yyless (input () != 0); }
+e { /* IRIX 6.5 flex 2.5.4 underquotes its yyless argument. */
+ yyless ((input () != 0)); }
f { unput (yytext[0]); }
. { BEGIN INITIAL; }
%%
@@ -4605,7 +4623,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -4649,7 +4667,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CXX="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -4900,7 +4918,7 @@ case $as_dir/ in #((
# by default.
for ac_prog in ginstall scoinst install; do
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
if test $ac_prog = install &&
grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
# AIX install. It has an incompatible calling convention.
@@ -4978,7 +4996,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="${ac_tool_prefix}gcc"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -5018,7 +5036,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CC="gcc"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -5071,7 +5089,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="${ac_tool_prefix}cc"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -5112,7 +5130,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
ac_prog_rejected=yes
continue
@@ -5170,7 +5188,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -5214,7 +5232,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CC="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -5410,8 +5428,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdarg.h>
#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
+struct stat;
/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
struct buf { int x; };
FILE * (*rcsopen) (struct buf *, struct stat *, int);
@@ -5545,7 +5562,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_YACC="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -6310,7 +6327,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_ax_pthread_config="yes"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -6513,7 +6530,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_PTHREAD_CC="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -7460,11 +7477,11 @@ else
int
main ()
{
-/* FIXME: Include the comments suggested by Paul. */
+
#ifndef __cplusplus
- /* Ultrix mips cc rejects this. */
+ /* Ultrix mips cc rejects this sort of thing. */
typedef int charset[2];
- const charset cs;
+ const charset cs = { 0, 0 };
/* SunOS 4.1.1 cc rejects this. */
char const *const *pcpcc;
char **ppc;
@@ -7481,8 +7498,9 @@ main ()
++pcpcc;
ppc = (char**) pcpcc;
pcpcc = (char const *const *) ppc;
- { /* SCO 3.2v4 cc rejects this. */
- char *t;
+ { /* SCO 3.2v4 cc rejects this sort of thing. */
+ char tx;
+ char *t = &tx;
char const *s = 0 ? (char *) 0 : (char const *) 0;
*t++ = 0;
@@ -7498,10 +7516,10 @@ main ()
iptr p = 0;
++p;
}
- { /* AIX XL C 1.02.0.0 rejects this saying
+ { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying
"k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
- struct s { int j; const int *ap[3]; };
- struct s *b; b->j = 5;
+ struct s { int j; const int *ap[3]; } bx;
+ struct s *b = &bx; b->j = 5;
}
{ /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
const int foo = 10;
@@ -8418,16 +8436,16 @@ if (echo >conf$$.file) 2>/dev/null; then
# ... but there are two gotchas:
# 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
# 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
- # In both cases, we have to default to `cp -p'.
+ # In both cases, we have to default to `cp -pR'.
ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
elif ln conf$$.file conf$$ 2>/dev/null; then
as_ln_s=ln
else
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
fi
else
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
fi
rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
rmdir conf$$.dir 2>/dev/null
@@ -8487,28 +8505,16 @@ else
as_mkdir_p=false
fi
-if test -x / >/dev/null 2>&1; then
- as_test_x='test -x'
-else
- if ls -dL / >/dev/null 2>&1; then
- as_ls_L_option=L
- else
- as_ls_L_option=
- fi
- as_test_x='
- eval sh -c '\''
- if test -d "$1"; then
- test -d "$1/.";
- else
- case $1 in #(
- -*)set "./$1";;
- esac;
- case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
- ???[sx]*):;;*)false;;esac;fi
- '\'' sh
- '
-fi
-as_executable_p=$as_test_x
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+ test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
# Sed expression to map a string onto a valid CPP name.
as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
@@ -8529,8 +8535,8 @@ 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.21, which was
-generated by GNU Autoconf 2.68. Invocation command line was
+This file was extended by Asymptote $as_me 2.22, which was
+generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
CONFIG_HEADERS = $CONFIG_HEADERS
@@ -8591,11 +8597,11 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-Asymptote config.status 2.21
-configured by $0, generated by GNU Autoconf 2.68,
+Asymptote config.status 2.22
+configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
-Copyright (C) 2010 Free Software Foundation, Inc.
+Copyright (C) 2012 Free Software Foundation, Inc.
This config.status script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it."
@@ -8684,7 +8690,7 @@ fi
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
if \$ac_cs_recheck; then
- set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+ set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
shift
\$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
CONFIG_SHELL='$SHELL'
diff --git a/Build/source/utils/asymptote/configure.ac b/Build/source/utils/asymptote/configure.ac
index 1930886e361..cbcd2d2a28f 100644
--- a/Build/source/utils/asymptote/configure.ac
+++ b/Build/source/utils/asymptote/configure.ac
@@ -3,7 +3,7 @@
# this file.
AC_PREREQ(2)
-AC_INIT([Asymptote],[2.21],[http://sourceforge.net/projects/asymptote])
+AC_INIT([Asymptote],[2.22],[http://sourceforge.net/projects/asymptote])
VERSION=$PACKAGE_VERSION
AC_SUBST(VERSION)
m4_include([ax_pthread.m4])
diff --git a/Build/source/utils/asymptote/doc/CAD.pdf b/Build/source/utils/asymptote/doc/CAD.pdf
index c5c3fef48b6..63384ce0276 100644
--- a/Build/source/utils/asymptote/doc/CAD.pdf
+++ b/Build/source/utils/asymptote/doc/CAD.pdf
Binary files differ
diff --git a/Build/source/utils/asymptote/doc/FAQ/Makefile b/Build/source/utils/asymptote/doc/FAQ/Makefile
index de93f0d7fcf..07d40b0ace4 100644
--- a/Build/source/utils/asymptote/doc/FAQ/Makefile
+++ b/Build/source/utils/asymptote/doc/FAQ/Makefile
@@ -1,16 +1,12 @@
BFNNCONV = bfnnconv.pl m-ascii.pl m-html.pl m-info.pl m-lout.pl m-post.pl
-FAQ = asy-faq.html asy-faq.ascii asy-faq.info
-
all: faq
-$(FAQ): $(BFNNCONV) asy-faq.bfnn
+faq: $(BFNNCONV) asy-faq.bfnn
mkdir -p asy-faq.html
perl bfnnconv.pl asy-faq.bfnn
perl bfnnconv.pl asy-faq.bfnn
-faq: $(FAQ)
-
clean: FORCE
-rm -f *~ core a.out *.lout *.ps *.info *.ascii *.xrefdb *.post
-rm -rf *.html
diff --git a/Build/source/utils/asymptote/doc/FAQ/asy-faq.info b/Build/source/utils/asymptote/doc/FAQ/asy-faq.info
index fe63cc4aadf..9034e009096 100644
--- a/Build/source/utils/asymptote/doc/FAQ/asy-faq.info
+++ b/Build/source/utils/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
- 10 Oct 2012
+ 15 May 2013
This is the list of Frequently Asked Questions about Asymptote (asy).
diff --git a/Build/source/utils/asymptote/doc/TeXShopAndAsymptote.pdf b/Build/source/utils/asymptote/doc/TeXShopAndAsymptote.pdf
index 83e2f90ea74..0a0d2b16423 100755
--- a/Build/source/utils/asymptote/doc/TeXShopAndAsymptote.pdf
+++ b/Build/source/utils/asymptote/doc/TeXShopAndAsymptote.pdf
Binary files differ
diff --git a/Build/source/utils/asymptote/doc/asy-latex.pdf b/Build/source/utils/asymptote/doc/asy-latex.pdf
index 49a797348ee..ec56b3bc517 100755
--- a/Build/source/utils/asymptote/doc/asy-latex.pdf
+++ b/Build/source/utils/asymptote/doc/asy-latex.pdf
Binary files differ
diff --git a/Build/source/utils/asymptote/doc/asyRefCard.pdf b/Build/source/utils/asymptote/doc/asyRefCard.pdf
index fa105896284..cc95d25d1df 100644
--- a/Build/source/utils/asymptote/doc/asyRefCard.pdf
+++ b/Build/source/utils/asymptote/doc/asyRefCard.pdf
Binary files differ
diff --git a/Build/source/utils/asymptote/doc/asymptote.pdf b/Build/source/utils/asymptote/doc/asymptote.pdf
index d6463b5390c..69c5e84ff67 100644
--- a/Build/source/utils/asymptote/doc/asymptote.pdf
+++ b/Build/source/utils/asymptote/doc/asymptote.pdf
Binary files differ
diff --git a/Build/source/utils/asymptote/doc/asymptote.texi b/Build/source/utils/asymptote/doc/asymptote.texi
index bd245e2c3cc..f7acf237532 100644
--- a/Build/source/utils/asymptote/doc/asymptote.texi
+++ b/Build/source/utils/asymptote/doc/asymptote.texi
@@ -89,7 +89,7 @@ Drawing commands
Programming
* Data types:: void, bool, int, real, pair, triple, string
-* Paths and guides::
+* Paths and guides::
* Pens:: Colors, line types, line widths, font sizes
* Transforms:: Affine transforms
* Frames and pictures:: Canvases for immediate and deferred drawing
@@ -167,7 +167,7 @@ Base modules
Graphical User Interface
* GUI installation:: Installing @code{xasy}
-* GUI usage::
+* GUI usage::
@end detailmenu
@end menu
@@ -390,7 +390,7 @@ The @code{ImageMagick} package from
@noindent
is required to support output formats other than @acronym{EPS},
@acronym{PDF}, @acronym{SVG}, and @acronym{PNG} (@pxref{convert}).
-The @code{Python} interpreter from @url{http://www.python.org} is only required
+The @code{Python 2} interpreter from @url{http://www.python.org} is only required
if you wish to try out the graphical user interface (@pxref{GUI}).
@noindent
@@ -587,30 +587,24 @@ used; if it is old we recommend first putting
@url{http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/gc-7.2d.tar.gz}
in the @code{Asymptote} source directory.
-@cindex @code{freeglut}
-@cindex 3D rendering
-@cindex antialiasing
-@cindex multisampling
-@anchor{multisampling}
-@noindent
-If your graphics card supports multisampling, we recommend using version
-@code{2.6.0} of @code{freeglut} to support antialiasing in
-@code{Asymptote}'s adaptive @code{OpenGL} 3D renderer
-(@code{MacOS X} users can skip this step since @code{Asymptote} is configured
-to use the native glut library on that platform). Download
+On @code{UNIX} platforms (other than @code{MacOS X}), we recommend
+using version @code{2.8.1} of the @code{freeglut} library. To compile
+@code{freeglut}, download
@quotation
-@url{http://prdownloads.sourceforge.net/freeglut/freeglut-2.6.0.tar.gz}
+@url{http://prdownloads.sourceforge.net/freeglut/freeglut-2.8.1.tar.gz}
@end quotation
@noindent
and type (as the root user):
@verbatim
-tar -zxf freeglut-2.6.0.tar.gz
-cd freeglut-2.6.0
+gunzip freeglut-2.8.1.tar.gz
+tar -xf freeglut-2.8.1.tar
+cd freeglut-2.8.1
./configure --prefix=/usr
make install
cd ..
@end verbatim
@noindent
+
Then compile @code{Asymptote} with the commands
@verbatim
./configure
@@ -1281,9 +1275,13 @@ Axial gradient shading varying smoothly from @code{pena} to @code{penb} in the
direction of the line segment @code{a--b} can be achieved with
@verbatim
void axialshade(picture pic=currentpicture, path g, bool stroke=false,
- pen pena, pair a,
- pen penb, pair b);
+ pen pena, pair a, bool extenda=true,
+ pen penb, pair b, bool extendb=true);
@end verbatim
+@noindent
+The boolean parameters @code{extenda} and @code{extendb} indicate
+whether the shading should extend beyond the axis endpoints @code{a}
+and @code{b}.
@cindex @code{radialshade}
Radial gradient shading varying smoothly from
@@ -1292,10 +1290,12 @@ Radial gradient shading varying smoothly from
is similar:
@verbatim
void radialshade(picture pic=currentpicture, path g, bool stroke=false,
- pen pena, pair a, real ra,
- pen penb, pair b, real rb);
+ pen pena, pair a, real ra, bool extenda=true,
+ pen penb, pair b, real rb, bool extendb=true);
@end verbatim
@noindent
+The boolean parameters @code{extenda} and @code{extendb} indicate
+whether the shading should extend beyond the radii @code{a} and @code{b}.
Illustrations of radial shading are provided in the example files
@code{shade.asy}, @code{ring.asy}, and @code{shadestroke.asy}.
@@ -1639,10 +1639,13 @@ real value greater than or equal to 0.75 (cf. John D. Hobby, Discrete and
Computational Geometry 1, 1986):
@verbatim
draw((100,0)..tension 2 ..(100,100)..(0,100));
-draw((100,0)..tension 2 and 1 ..(100,100)..(0,100));
-draw((100,0)..tension atleast 1 ..(100,100)..(0,100));
+draw((100,0)..tension 3 and 2 ..(100,100)..(0,100));
+draw((100,0)..tension atleast 2 ..(100,100)..(0,100));
@end verbatim
+In these examples there is a space between @code{2} and @code{..}.
+This is needed as @code{2.} is interpreted as a numerical constant.
+
@cindex @code{curl}
The curl parameter specifies the curvature at the endpoints of a path
(0 means straight; the default value of 1 means approximately circular):
@@ -1734,7 +1737,7 @@ In addition, it supports many features beyond the ones found in those languages.
@menu
* Data types:: void, bool, int, real, pair, triple, string
-* Paths and guides::
+* Paths and guides::
* Pens:: Colors, line types, line widths, font sizes
* Transforms:: Affine transforms
* Frames and pictures:: Canvases for immediate and deferred drawing
@@ -3568,6 +3571,7 @@ or more subpictures, group them two at a time:
Alternatively, one can use @code{attach} to automatically increase the
size of picture @code{dest} to accommodate adding a frame @code{src}
about the user coordinate @code{position}:
+@cindex @code{attach}
@verbatim
void attach(picture dest=currentpicture, frame src,
pair position=0, bool group=true,
@@ -6289,8 +6293,7 @@ including an extensive set of examples,
@cindex @code{trembling}
This module, written by Philippe Ivaldi and illustrated in the example
@code{floatingdisk.asy}, allows one to draw wavy lines, as if drawn by
-hand. Further examples are posted at
-@url{http://www.piprime.fr/files/asymptote/trembling/}
+hand.
@node stats
@section @code{stats}
@@ -7767,9 +7770,7 @@ renderer (with the command-line option @code{-V} and the default settings
@code{outformat=""} and @code{render=-1}). If you encounter warnings
from your graphics card driver, try specifying @code{-glOptions=-indirect}
on the command line. On @code{UNIX} systems with graphics support for
-multisampling, we recommend installing the latest SVN (antialiased)
-version of the @code{freeglut} library
-(@pxref{multisampling}); the sample width can be
+multisampling, the sample width can be
controlled with the setting @code{multisample}. An initial screen
position can be specified with the pair setting @code{position}, where
negative values are interpreted as relative to the corresponding
@@ -8844,8 +8845,7 @@ guide[][] contour(pair[][] z, real[][] f, real[] c,
To construct contours for an array of values @code{f} specified at
irregularly positioned points @code{z}, use the routine
@verbatim
-guide[][] contour(pair[] z, real[] f, real[] c,
- interpolate join=operator --, int subsample=1);
+guide[][] contour(pair[] z, real[] f, real[] c, interpolate join=operator --);
@end verbatim
@noindent
The contours themselves can be drawn with one of the routines
@@ -9258,7 +9258,7 @@ The modified figure can then be saved as a normal @code{Asymptote} file.
@menu
* GUI installation:: Installing @code{xasy}
-* GUI usage::
+* GUI usage::
@end menu
@node GUI installation
@@ -9282,9 +9282,9 @@ and @code{tk-devel} packages.
Pictures are deconstructed into the @acronym{PNG} image format, which
supports full alpha channel transparency. Under @code{Microsoft Windows},
-this requires @code{Python 2.7.3} and the @code{Python Imaging Library}:
+this requires @code{Python 2.7.4} and the @code{Python Imaging Library}:
@quotation
-@url{http://www.python.org/ftp/python/2.7.3/python-2.7.3.msi}
+@url{http://www.python.org/ftp/python/2.7.4/python-2.7.4.msi}
@end quotation
@quotation
@url{http://effbot.org/downloads/PIL-1.1.7.win32-py2.7.exe}.
@@ -9654,7 +9654,7 @@ Mark Henning, Steve Melenchuk, Martin Wiebusch, and Stefan Knorr.
@c LocalWords: pdfreloadOptions deferred OpenGL Phong Blinn renderer unitbox
@c LocalWords: bezulate Shardt's rasterized viewport unitdisk unitplane devel
@c LocalWords: unitcylinder unitcone solidcone unitfrustum unitsphere nslices
-@c LocalWords: DPostScript YZZero freeglut externalprc nonrendered nosafe KDE
+@c LocalWords: DPostScript YZZero externalprc nonrendered nosafe KDE
@c LocalWords: unithemisphere versa XYplane xypart unitsolidcone YZEquals xml
@c LocalWords: XZEquals XYEquals XZZero XYZero InTicks OutTicks InOutTicks
@c LocalWords: fitscreen planeproject strokepath meshlight nullpens arrowdir
@@ -9686,4 +9686,30 @@ Mark Henning, Steve Melenchuk, Martin Wiebusch, and Stefan Knorr.
@c LocalWords: ascii piecewise arcpoint spacings tilings sncndn resizing
@c LocalWords: differentiable vectorization vectorized asydir normals quartic
@c LocalWords: wavepacket kerned parametrized specular hyperboloid Bourke's
-@c LocalWords: Michail
+@c LocalWords: Michail 0pt 1filll 's 3D latin1 labelpath3 2D graph3
+@c LocalWords: grid3 contour3 i386 psv a4 gsview32 freeglut 'load '
+@c LocalWords: 'asy 'lasy 'auto 5bp 1cm sqrtx01 4g extenda extendb
+@c LocalWords: bb llx 2S 100pt 3t bezier2 bool3 x0 angle1 angle2 z1
+@c LocalWords: z2 before' struct X11 x11colors type1cm 12pt OT1 5mm
+@c LocalWords: cmr12 x' y' xsize ysize 25cm s1 s2 neighbourhood u''
+@c LocalWords: s'' 3x 5x 3y 602e 2x 2y 3sin 10cm 204e addby7 10x Ai
+@c LocalWords: only'' pow10 log10 expm1 log1p atan2 Ai Ai Ai Ai Ai
+@c LocalWords: Ai Ai x1 x2 graph2d attachfile2 n0 P0 n1 P1 markers1
+@c LocalWords: interpolate1 markers2 inlinemovie3 media9 U3D T2A 5E
+@c LocalWords: embeddedu3d curvedlabel3 value2 tickvalue inner'' 2N
+@c LocalWords: lineargraph0 scalings log2 log2graph 5cm BWRainbow2
+@c LocalWords: guide3 path3 unitcircle3 2E 2n noV 100d PostScript3D
+@c LocalWords: size3 fit3 theta1 phi1 theta2 phi2 v1 v2 unitsquare3
+@c LocalWords: t1 t2 5z 5y transform3 identity4 xscale3 yscale3
+@c LocalWords: zscale3 scale3 join3 BeginBar3 EndBar3 Bar3 Bars3
+@c LocalWords: BeginArrow3 MidArrow3 EndArrow3 Arrow3 Arrows3 axes3
+@c LocalWords: BeginArcArrow3 MidArcArrow3 EndArcArrow3 ArcArrow3
+@c LocalWords: ArcArrows3 DefaultHead3 HookHead3 TeXHead3 HookHead2
+@c LocalWords: DefaultHead2 TeXHead2 arrows3 NoMargin3 BeginMargin3
+@c LocalWords: EndMargin3 Margin3 Margins3 BeginPenMargin2 xaxis3
+@c LocalWords: EndPenMargin2 PenMargin2 PenMargins2 BeginPenMargin3
+@c LocalWords: EndPenMargin3 PenMargin3 PenMargins3 BeginDotMargin3
+@c LocalWords: EndDotMargin3 DotMargin3 DotMargins3 TrueMargin3
+@c LocalWords: yaxis3 zaxis3 ticks3 NoTicks3 arrowbar3 type2 axis3
+@c LocalWords: generalaxis3 vectorfield3 margin3 grid3xyz 5unit
+@c LocalWords: slopefield1 144x144
diff --git a/Build/source/utils/asymptote/doc/png/asymptote.info b/Build/source/utils/asymptote/doc/png/asymptote.info
index 5b88055da4c..c336f360af4 100644
--- a/Build/source/utils/asymptote/doc/png/asymptote.info
+++ b/Build/source/utils/asymptote/doc/png/asymptote.info
@@ -1,7 +1,7 @@
This is asymptote.info, produced by makeinfo version 4.13 from
../asymptote.texi.
-This file documents `Asymptote', version 2.21.
+This file documents `Asymptote', version 2.22.
`http://asymptote.sourceforge.net'
@@ -23,7 +23,7 @@ File: asymptote.info, Node: Top, Next: Description, Up: (dir)
Asymptote
*********
-This file documents `Asymptote', version 2.21.
+This file documents `Asymptote', version 2.22.
`http://asymptote.sourceforge.net'
@@ -351,7 +351,7 @@ file::).
`http://www.imagemagick.org/script/binary-releases.php'
is required to support output formats other than EPS, PDF, SVG, and PNG
-(*note convert::). The `Python' interpreter from
+(*note convert::). The `Python 2' interpreter from
`http://www.python.org' is only required if you wish to try out the
graphical user interface (*note GUI::).
@@ -502,16 +502,15 @@ used; if it is old we recommend first putting
`http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/gc-7.2d.tar.gz'
in the `Asymptote' source directory.
-If your graphics card supports multisampling, we recommend using version
-`2.6.0' of `freeglut' to support antialiasing in `Asymptote''s adaptive
-`OpenGL' 3D renderer (`MacOS X' users can skip this step since
-`Asymptote' is configured to use the native glut library on that
-platform). Download
+ On `UNIX' platforms (other than `MacOS X'), we recommend using
+version `2.8.1' of the `freeglut' library. To compile `freeglut',
+download
- `http://prdownloads.sourceforge.net/freeglut/freeglut-2.6.0.tar.gz'
+ `http://prdownloads.sourceforge.net/freeglut/freeglut-2.8.1.tar.gz'
and type (as the root user):
-tar -zxf freeglut-2.6.0.tar.gz
-cd freeglut-2.6.0
+gunzip freeglut-2.8.1.tar.gz
+tar -xf freeglut-2.8.1.tar
+cd freeglut-2.8.1
./configure --prefix=/usr
make install
cd ..
@@ -1024,17 +1023,21 @@ promote pens to a higher color space, as illustrated in the example file
Axial gradient shading varying smoothly from `pena' to `penb' in the
direction of the line segment `a--b' can be achieved with
void axialshade(picture pic=currentpicture, path g, bool stroke=false,
- pen pena, pair a,
- pen penb, pair b);
+ pen pena, pair a, bool extenda=true,
+ pen penb, pair b, bool extendb=true);
+ The boolean parameters `extenda' and `extendb' indicate whether the
+shading should extend beyond the axis endpoints `a' and `b'.
Radial gradient shading varying smoothly from `pena' on the circle
with center `a' and radius `ra' to `penb' on the circle with center `b'
and radius `rb' is similar:
void radialshade(picture pic=currentpicture, path g, bool stroke=false,
- pen pena, pair a, real ra,
- pen penb, pair b, real rb);
- Illustrations of radial shading are provided in the example files
-`shade.asy', `ring.asy', and `shadestroke.asy'.
+ pen pena, pair a, real ra, bool extenda=true,
+ pen penb, pair b, real rb, bool extendb=true);
+ The boolean parameters `extenda' and `extendb' indicate whether the
+shading should extend beyond the radii `a' and `b'. Illustrations of
+radial shading are provided in the example files `shade.asy',
+`ring.asy', and `shadestroke.asy'.
Gouraud shading using fill rule `fillrule' and the vertex colors in
the pen array `p' on a triangular lattice defined by the vertices `z'
@@ -1303,8 +1306,11 @@ approximates a straight line. One can change the spline tension from
its default value of 1 to any real value greater than or equal to 0.75
(cf. John D. Hobby, Discrete and Computational Geometry 1, 1986):
draw((100,0)..tension 2 ..(100,100)..(0,100));
-draw((100,0)..tension 2 and 1 ..(100,100)..(0,100));
-draw((100,0)..tension atleast 1 ..(100,100)..(0,100));
+draw((100,0)..tension 3 and 2 ..(100,100)..(0,100));
+draw((100,0)..tension atleast 2 ..(100,100)..(0,100));
+
+ In these examples there is a space between `2' and `..'. This is
+needed as `2.' is interpreted as a numerical constant.
The curl parameter specifies the curvature at the endpoints of a path
(0 means straight; the default value of 1 means approximately circular):
@@ -5051,8 +5057,6 @@ File: asymptote.info, Node: trembling, Next: stats, Prev: geometry, Up: Base
This module, written by Philippe Ivaldi and illustrated in the example
`floatingdisk.asy', allows one to draw wavy lines, as if drawn by hand.
-Further examples are posted at
-`http://www.piprime.fr/files/asymptote/trembling/'

File: asymptote.info, Node: stats, Next: patterns, Prev: trembling, Up: Base modules
@@ -6766,12 +6770,11 @@ There are four choices for viewing 3D `Asymptote' output:
`outformat=""' and `render=-1'). If you encounter warnings from
your graphics card driver, try specifying `-glOptions=-indirect'
on the command line. On `UNIX' systems with graphics support for
- multisampling, we recommend installing the latest SVN (antialiased)
- version of the `freeglut' library (*note multisampling::); the
- sample width can be controlled with the setting `multisample'. An
- initial screen position can be specified with the pair setting
- `position', where negative values are interpreted as relative to
- the corresponding maximum screen dimension. The default settings import settings;
+ multisampling, the sample width can be controlled with the setting
+ `multisample'. An initial screen position can be specified with
+ the pair setting `position', where negative values are interpreted
+ as relative to the corresponding maximum screen dimension. The
+ default settings import settings;
leftbutton=new string[] {"rotate","zoom","shift","pan"};
middlebutton=new string[] {"menu"};
rightbutton=new string[] {"zoom/menu","rotateX","rotateY","rotateZ"};
@@ -7709,8 +7712,7 @@ guide[][] contour(pair[][] z, real[][] f, real[] c,
To construct contours for an array of values `f' specified at
irregularly positioned points `z', use the routine
-guide[][] contour(pair[] z, real[] f, real[] c,
- interpolate join=operator --, int subsample=1);
+guide[][] contour(pair[] z, real[] f, real[] c, interpolate join=operator --);
The contours themselves can be drawn with one of the routines
void draw(picture pic=currentpicture, Label[] L=new Label[],
guide[][] g, pen p=currentpen);
@@ -8264,9 +8266,9 @@ packages.
Pictures are deconstructed into the PNG image format, which supports
full alpha channel transparency. Under `Microsoft Windows', this
-requires `Python 2.7.3' and the `Python Imaging Library':
+requires `Python 2.7.4' and the `Python Imaging Library':
- `http://www.python.org/ftp/python/2.7.3/python-2.7.3.msi'
+ `http://www.python.org/ftp/python/2.7.4/python-2.7.4.msi'
`http://effbot.org/downloads/PIL-1.1.7.win32-py2.7.exe'.
On `UNIX' systems, place
@@ -8467,7 +8469,7 @@ Index
(line 6)
* & <1>: Arithmetic & logical.
(line 56)
-* &: Bezier curves. (line 83)
+* &: Bezier curves. (line 86)
* &&: Arithmetic & logical.
(line 53)
* * <1>: Arithmetic & logical.
@@ -8489,7 +8491,7 @@ Index
* -- <1>: Self & prefix operators.
(line 6)
* --: Tutorial. (line 127)
-* ---: Bezier curves. (line 83)
+* ---: Bezier curves. (line 86)
* -=: Self & prefix operators.
(line 6)
* -c: Options. (line 175)
@@ -8506,12 +8508,10 @@ Index
* 2D graphs: graph. (line 6)
* 3D graphs: graph3. (line 6)
* 3D grids: grid3. (line 6)
-* 3D PostScript: three. (line 594)
-* 3D rendering: Compiling from UNIX source.
- (line 16)
+* 3D PostScript: three. (line 593)
* :: Arithmetic & logical.
(line 73)
-* ::: Bezier curves. (line 67)
+* ::: Bezier curves. (line 70)
* <: Arithmetic & logical.
(line 41)
* <=: Arithmetic & logical.
@@ -8535,7 +8535,7 @@ Index
* abs <1>: Mathematical functions.
(line 35)
* abs: Data types. (line 62)
-* accel <1>: three. (line 520)
+* accel <1>: three. (line 519)
* accel: Paths and guides. (line 115)
* access: Import. (line 6)
* acknowledgments: Credits. (line 6)
@@ -8545,9 +8545,9 @@ Index
(line 6)
* acosh: Mathematical functions.
(line 6)
-* add <1>: three. (line 284)
+* add <1>: three. (line 283)
* add: Frames and pictures. (line 196)
-* addViews: three. (line 406)
+* addViews: three. (line 405)
* adjust: Pens. (line 115)
* Ai: Mathematical functions.
(line 48)
@@ -8571,22 +8571,20 @@ Index
* animation: animation. (line 6)
* annotate: annotate. (line 6)
* antialias <1>: Options. (line 144)
-* antialias: three. (line 223)
-* antialiasing: Compiling from UNIX source.
- (line 16)
+* antialias: three. (line 222)
* append <1>: Arrays. (line 39)
* append: Files. (line 36)
-* arc: three. (line 296)
+* arc: three. (line 295)
* Arc: Paths and guides. (line 32)
* arc: Paths and guides. (line 22)
* ArcArrow: draw. (line 26)
-* ArcArrow3: three. (line 561)
+* ArcArrow3: three. (line 560)
* ArcArrows: draw. (line 26)
-* ArcArrows3: three. (line 561)
-* arclength <1>: three. (line 520)
+* ArcArrows3: three. (line 560)
+* arclength <1>: three. (line 519)
* arclength: Paths and guides. (line 142)
* arcpoint: Paths and guides. (line 152)
-* arctime <1>: three. (line 520)
+* arctime <1>: three. (line 519)
* arctime: Paths and guides. (line 146)
* arguments: Default arguments. (line 6)
* arithmetic operators: Arithmetic & logical.
@@ -8598,10 +8596,10 @@ Index
* Arrow: draw. (line 26)
* arrow: Drawing commands. (line 31)
* arrow keys: Tutorial. (line 37)
-* Arrow3: three. (line 561)
+* Arrow3: three. (line 560)
* Arrows: draw. (line 26)
* arrows: draw. (line 26)
-* Arrows3: three. (line 561)
+* Arrows3: three. (line 560)
* as: Import. (line 68)
* ascii: Data types. (line 286)
* aSin: Mathematical functions.
@@ -8631,8 +8629,9 @@ Index
(line 6)
* atleast: Bezier curves. (line 56)
* attach <1>: graph. (line 416)
-* attach: LaTeX usage. (line 51)
-* autoadjust: three. (line 372)
+* attach <2>: LaTeX usage. (line 51)
+* attach: Frames and pictures. (line 252)
+* autoadjust: three. (line 371)
* autoimport: Options. (line 112)
* automatic scaling: graph. (line 682)
* axialshade: fill. (line 43)
@@ -8641,11 +8640,11 @@ Index
* azimuth: Data types. (line 126)
* babel: babel. (line 6)
* background color: Frames and pictures. (line 168)
-* BackView: three. (line 399)
+* BackView: three. (line 398)
* Bar: draw. (line 19)
-* Bar3: three. (line 561)
+* Bar3: three. (line 560)
* Bars: draw. (line 19)
-* Bars3: three. (line 561)
+* Bars3: three. (line 560)
* barsize: draw. (line 19)
* base modules: Base modules. (line 6)
* basealign: Pens. (line 168)
@@ -8653,18 +8652,18 @@ Index
* batch mode: Tutorial. (line 6)
* beep: Data types. (line 357)
* BeginArcArrow: draw. (line 26)
-* BeginArcArrow3: three. (line 561)
+* BeginArcArrow3: three. (line 560)
* BeginArrow: draw. (line 26)
-* BeginArrow3: three. (line 561)
+* BeginArrow3: three. (line 560)
* BeginBar: draw. (line 19)
-* BeginBar3: three. (line 561)
+* BeginBar3: three. (line 560)
* BeginDotMargin: draw. (line 42)
-* BeginDotMargin3: three. (line 577)
+* BeginDotMargin3: three. (line 576)
* BeginMargin: draw. (line 42)
-* BeginMargin3: three. (line 577)
+* BeginMargin3: three. (line 576)
* BeginPenMargin: draw. (line 42)
-* BeginPenMargin2: three. (line 577)
-* BeginPenMargin3: three. (line 577)
+* BeginPenMargin2: three. (line 576)
+* BeginPenMargin3: three. (line 576)
* BeginPoint: label. (line 56)
* Bessel: Mathematical functions.
(line 48)
@@ -8676,13 +8675,13 @@ Index
(line 48)
* Bi_deriv: Mathematical functions.
(line 48)
-* Billboard: three. (line 490)
+* Billboard: three. (line 489)
* binary: Files. (line 75)
* binary format: Files. (line 75)
* binary operators: Arithmetic & logical.
(line 6)
* binarytree: binarytree. (line 6)
-* black stripes: three. (line 223)
+* black stripes: three. (line 222)
* Blank: draw. (line 26)
* block.bottom: flowchart. (line 19)
* block.bottomleft: flowchart. (line 19)
@@ -8701,10 +8700,10 @@ Index
(line 6)
* Bottom: graph. (line 134)
* BottomTop: graph. (line 140)
-* BottomView: three. (line 399)
+* BottomView: three. (line 398)
* bounding box: Frames and pictures. (line 168)
* Bounds: graph3. (line 21)
-* box <1>: three. (line 318)
+* box <1>: three. (line 317)
* box: Frames and pictures. (line 22)
* bp: Tutorial. (line 26)
* break: Programming. (line 29)
@@ -8720,14 +8719,14 @@ Index
* C string: Data types. (line 191)
* CAD: CAD. (line 6)
* calculateTransform: Frames and pictures. (line 107)
-* camera: three. (line 367)
+* camera: three. (line 366)
* casts: Casts. (line 6)
* cbrt: Mathematical functions.
(line 6)
* cd: Files. (line 25)
* ceil: Mathematical functions.
(line 26)
-* center: three. (line 351)
+* center: three. (line 350)
* Center: label. (line 61)
* checker: Pens. (line 251)
* Chinese: unicode. (line 12)
@@ -8736,7 +8735,7 @@ Index
* Ci: Mathematical functions.
(line 48)
* circle <1>: flowchart. (line 64)
-* circle: three. (line 292)
+* circle: three. (line 291)
* Circle: Paths and guides. (line 17)
* circle: Paths and guides. (line 10)
* circlebarframe: markers. (line 18)
@@ -8744,7 +8743,7 @@ Index
* clamped: graph. (line 37)
* clear <1>: Debugger. (line 23)
* clear: Files. (line 92)
-* clip: fill. (line 111)
+* clip: fill. (line 115)
* CLZ: Arithmetic & logical.
(line 80)
* cm: Tutorial. (line 63)
@@ -8789,7 +8788,7 @@ Index
* convert <3>: Files. (line 154)
* convert: Configuring. (line 67)
* convertOptions: Options. (line 131)
-* Coons shading: fill. (line 74)
+* Coons shading: fill. (line 78)
* copy: Arrays. (line 174)
* Cos: Mathematical functions.
(line 20)
@@ -8809,10 +8808,10 @@ Index
(line 80)
* cubicroots: Arrays. (line 318)
* curl <1>: three. (line 6)
-* curl: Bezier curves. (line 63)
+* curl: Bezier curves. (line 66)
* curlSpecifier: Paths and guides. (line 394)
* currentpen: Pens. (line 6)
-* currentprojection: three. (line 396)
+* currentprojection: three. (line 395)
* curve: slopefield. (line 20)
* custom axis types: graph. (line 144)
* custom mark routine: graph. (line 577)
@@ -8820,7 +8819,7 @@ Index
* cut: Paths and guides. (line 240)
* cycle <1>: three. (line 6)
* cycle: Tutorial. (line 75)
-* cyclic <1>: three. (line 520)
+* cyclic <1>: three. (line 519)
* cyclic <2>: Arrays. (line 39)
* cyclic: Paths and guides. (line 74)
* Cyrillic: unicode. (line 7)
@@ -8836,7 +8835,7 @@ Index
* default arguments: Default arguments. (line 6)
* defaultformat: graph. (line 175)
* DefaultHead: draw. (line 26)
-* DefaultHead3: three. (line 561)
+* DefaultHead3: three. (line 560)
* defaultpen: Pens. (line 46)
* defaultrender: three. (line 47)
* deferred drawing: simplex. (line 6)
@@ -8851,7 +8850,7 @@ Index
* diagonal: Arrays. (line 303)
* diamond: flowchart. (line 57)
* dimension: Arrays. (line 367)
-* dir <1>: three. (line 520)
+* dir <1>: three. (line 519)
* dir <2>: Paths and guides. (line 98)
* dir <3>: Data types. (line 87)
* dir: Search paths. (line 10)
@@ -8867,11 +8866,11 @@ Index
* dot <2>: Data types. (line 100)
* dot: draw. (line 83)
* DotMargin: draw. (line 42)
-* DotMargin3: three. (line 577)
+* DotMargin3: three. (line 576)
* DotMargins: draw. (line 42)
-* DotMargins3: three. (line 577)
+* DotMargins3: three. (line 576)
* dotted: Pens. (line 95)
-* double deferred drawing: three. (line 269)
+* double deferred drawing: three. (line 268)
* double precision: Files. (line 75)
* draw: three. (line 112)
* Draw: Frames and pictures. (line 147)
@@ -8897,22 +8896,22 @@ Index
* else: Programming. (line 8)
* emacs: Editing modes. (line 6)
* embed: embed. (line 6)
-* Embedded: three. (line 490)
+* Embedded: three. (line 489)
* empty: Frames and pictures. (line 7)
* EndArcArrow: draw. (line 26)
-* EndArcArrow3: three. (line 561)
+* EndArcArrow3: three. (line 560)
* EndArrow: draw. (line 26)
-* EndArrow3: three. (line 561)
+* EndArrow3: three. (line 560)
* EndBar: draw. (line 19)
-* EndBar3: three. (line 561)
+* EndBar3: three. (line 560)
* EndDotMargin: draw. (line 42)
-* EndDotMargin3: three. (line 577)
+* EndDotMargin3: three. (line 576)
* endl: Files. (line 61)
* EndMargin: draw. (line 42)
-* EndMargin3: three. (line 577)
+* EndMargin3: three. (line 576)
* EndPenMargin: draw. (line 42)
-* EndPenMargin2: three. (line 577)
-* EndPenMargin3: three. (line 577)
+* EndPenMargin2: three. (line 576)
+* EndPenMargin3: three. (line 576)
* EndPoint: label. (line 56)
* envelope: Frames and pictures. (line 22)
* environment variables: Configuring. (line 87)
@@ -8951,12 +8950,12 @@ Index
* extension <1>: MetaPost. (line 10)
* extension: Paths and guides. (line 235)
* external: embed. (line 13)
-* extrude: three. (line 514)
+* extrude: three. (line 513)
* F: Mathematical functions.
(line 48)
* fabs: Mathematical functions.
(line 6)
-* face: three. (line 602)
+* face: three. (line 601)
* factorial: Mathematical functions.
(line 39)
* Fedora: UNIX binary distributions.
@@ -8965,7 +8964,7 @@ Index
* fft <1>: math. (line 26)
* fft: Arrays. (line 246)
* FFTW: Compiling from UNIX source.
- (line 58)
+ (line 57)
* file <1>: Debugger. (line 45)
* file: Files. (line 6)
* Fill: Frames and pictures. (line 133)
@@ -8981,7 +8980,7 @@ Index
* find: Data types. (line 226)
* firstcut: Paths and guides. (line 250)
* fit: Frames and pictures. (line 103)
-* fit3: three. (line 282)
+* fit3: three. (line 281)
* fixedscaling: Frames and pictures. (line 74)
* floor: Mathematical functions.
(line 26)
@@ -8998,17 +8997,15 @@ Index
* format: Data types. (line 269)
* forum: Help. (line 6)
* frame: Frames and pictures. (line 7)
-* freeglut: Compiling from UNIX source.
- (line 16)
* from: Import. (line 17)
-* FrontView: three. (line 399)
+* FrontView: three. (line 398)
* function declarations: Functions. (line 67)
-* function shading: fill. (line 96)
-* Function shading: fill. (line 96)
+* function shading: fill. (line 100)
+* Function shading: fill. (line 100)
* functions <1>: Mathematical functions.
(line 6)
* functions: Functions. (line 6)
-* functionshade: fill. (line 96)
+* functionshade: fill. (line 100)
* gamma: Mathematical functions.
(line 6)
* Gaussrand: Mathematical functions.
@@ -9020,10 +9017,10 @@ Index
* getstring: Files. (line 117)
* gettriple: Files. (line 117)
* glOptions <1>: Options. (line 131)
-* glOptions: three. (line 223)
+* glOptions: three. (line 222)
* GNU Scientific Library: Mathematical functions.
(line 48)
-* gouraudshade: fill. (line 58)
+* gouraudshade: fill. (line 62)
* Gradient: palette. (line 25)
* gradient shading: fill. (line 32)
* graph: graph. (line 6)
@@ -9040,7 +9037,7 @@ Index
* gsl: Mathematical functions.
(line 48)
* GSL: Compiling from UNIX source.
- (line 58)
+ (line 57)
* gsOptions: Options. (line 131)
* GUI: GUI. (line 6)
* GUI installation: GUI installation. (line 6)
@@ -9058,14 +9055,14 @@ Index
* hex: Data types. (line 283)
* hexidecimal <1>: Pens. (line 59)
* hexidecimal: Data types. (line 283)
-* hidden surface removal: three. (line 602)
+* hidden surface removal: three. (line 601)
* histogram: Mathematical functions.
(line 39)
* history <1>: Interactive mode. (line 59)
* history: Files. (line 142)
* historylines: Interactive mode. (line 64)
* HookHead: draw. (line 26)
-* HookHead3: three. (line 561)
+* HookHead3: three. (line 560)
* Horizontal: flowchart. (line 81)
* hyperrefOptions: Options. (line 131)
* hypot: Mathematical functions.
@@ -9074,12 +9071,12 @@ Index
(line 48)
* i_scaled: Mathematical functions.
(line 48)
-* iconic: three. (line 223)
+* iconic: three. (line 222)
* identity <1>: Arrays. (line 300)
* identity <2>: Mathematical functions.
(line 6)
* identity: Transforms. (line 24)
-* identity4: three. (line 450)
+* identity4: three. (line 449)
* if: Programming. (line 8)
* IgnoreAspect: Frames and pictures. (line 58)
* image: palette. (line 34)
@@ -9118,22 +9115,22 @@ Index
* interp: Arithmetic & logical.
(line 76)
* interpolate: interpolate. (line 6)
-* intersect <1>: three. (line 520)
+* intersect <1>: three. (line 519)
* intersect <2>: math. (line 13)
* intersect: Paths and guides. (line 184)
-* intersectionpoint <1>: three. (line 520)
+* intersectionpoint <1>: three. (line 519)
* intersectionpoint <2>: math. (line 17)
* intersectionpoint: Paths and guides. (line 227)
-* intersectionpoints <1>: three. (line 520)
+* intersectionpoints <1>: three. (line 519)
* intersectionpoints: Paths and guides. (line 231)
-* intersections <1>: three. (line 520)
+* intersections <1>: three. (line 519)
* intersections: Paths and guides. (line 195)
* InTicks: graph3. (line 35)
* intMax: Data types. (line 28)
* intMin: Data types. (line 28)
* inverse <1>: Arrays. (line 306)
* inverse: Transforms. (line 16)
-* invert: three. (line 440)
+* invert: three. (line 439)
* invisible: Pens. (line 39)
* isnan: Data types. (line 33)
* J: Mathematical functions.
@@ -9147,13 +9144,13 @@ Index
* KDE editor: Editing modes. (line 49)
* keepAspect <1>: LaTeX usage. (line 51)
* keepAspect: Frames and pictures. (line 54)
-* keyboard bindings:: three. (line 182)
+* keyboard bindings:: three. (line 181)
* keys: Arrays. (line 39)
* keyword: Named arguments. (line 37)
* keyword-only: Named arguments. (line 37)
* keywords: Named arguments. (line 6)
* Korean: unicode. (line 12)
-* label: three. (line 484)
+* label: three. (line 483)
* Label <1>: graph. (line 343)
* Label: label. (line 14)
* label: clip. (line 16)
@@ -9179,13 +9176,13 @@ Index
* LeftRight: graph. (line 290)
* LeftSide: label. (line 61)
* LeftTicks: graph. (line 161)
-* LeftView: three. (line 399)
+* LeftView: three. (line 398)
* legend <1>: graph. (line 432)
* legend <2>: draw. (line 64)
* legend: Drawing commands. (line 31)
* Legendre: Mathematical functions.
(line 48)
-* length <1>: three. (line 520)
+* length <1>: three. (line 519)
* length <2>: Arrays. (line 39)
* length <3>: Paths and guides. (line 65)
* length: Data types. (line 62)
@@ -9226,10 +9223,10 @@ Index
* makepen: Pens. (line 300)
* map: Arrays. (line 141)
* Margin: draw. (line 42)
-* Margin3: three. (line 577)
-* margins: three. (line 275)
+* Margin3: three. (line 576)
+* margins: three. (line 274)
* Margins: draw. (line 42)
-* Margins3: three. (line 577)
+* Margins3: three. (line 576)
* mark: graph. (line 485)
* markangle: markers. (line 38)
* marker: graph. (line 485)
@@ -9240,28 +9237,28 @@ Index
* math: math. (line 6)
* mathematical functions: Mathematical functions.
(line 6)
-* max <1>: three. (line 520)
+* max <1>: three. (line 519)
* max <2>: Arrays. (line 225)
* max <3>: Frames and pictures. (line 7)
* max: Paths and guides. (line 267)
* maxbound: Data types. (line 106)
-* maxtile: three. (line 223)
+* maxtile: three. (line 222)
* maxtimes: Paths and guides. (line 222)
-* maxviewport: three. (line 223)
+* maxviewport: three. (line 222)
* MetaPost: MetaPost. (line 6)
-* MetaPost ... : Bezier curves. (line 67)
+* MetaPost ... : Bezier curves. (line 70)
* MetaPost cutafter: Paths and guides. (line 255)
* MetaPost cutbefore: Paths and guides. (line 251)
* MetaPost pickup: Pens. (line 6)
* MetaPost whatever: MetaPost. (line 10)
* Microsoft Windows: Microsoft Windows. (line 6)
* MidArcArrow: draw. (line 26)
-* MidArcArrow3: three. (line 561)
+* MidArcArrow3: three. (line 560)
* MidArrow: draw. (line 26)
-* MidArrow3: three. (line 561)
+* MidArrow3: three. (line 560)
* midpoint: Paths and guides. (line 169)
* MidPoint: label. (line 56)
-* min <1>: three. (line 520)
+* min <1>: three. (line 519)
* min <2>: Arrays. (line 218)
* min <3>: Frames and pictures. (line 7)
* min: Paths and guides. (line 263)
@@ -9275,12 +9272,10 @@ Index
* mode: Files. (line 75)
* monotonic: graph. (line 37)
* mouse: GUI. (line 6)
-* mouse bindings: three. (line 150)
+* mouse bindings: three. (line 149)
* Move: Pens. (line 339)
* MoveQuiet: Pens. (line 345)
* multisample: three. (line 140)
-* multisampling: Compiling from UNIX source.
- (line 16)
* N: Tutorial. (line 106)
* name: Files. (line 88)
* named arguments: Named arguments. (line 6)
@@ -9297,10 +9292,10 @@ Index
* NoFill <1>: Frames and pictures. (line 141)
* NoFill: draw. (line 26)
* NoMargin: draw. (line 42)
-* NoMargin3: three. (line 577)
+* NoMargin3: three. (line 576)
* none: Files. (line 61)
* None: draw. (line 19)
-* normal: three. (line 506)
+* normal: three. (line 505)
* nosafe: Options. (line 164)
* NOT: Arithmetic & logical.
(line 80)
@@ -9310,13 +9305,13 @@ Index
* null: Structures. (line 6)
* nullpen <1>: Frames and pictures. (line 127)
* nullpen: label. (line 14)
-* NURBS: three. (line 376)
-* O: three. (line 287)
+* NURBS: three. (line 375)
+* O: three. (line 286)
* obj: obj. (line 9)
-* oblique: three. (line 332)
-* obliqueX: three. (line 340)
-* obliqueY: three. (line 347)
-* obliqueZ: three. (line 332)
+* oblique: three. (line 331)
+* obliqueX: three. (line 339)
+* obliqueY: three. (line 346)
+* obliqueZ: three. (line 331)
* ode: ode. (line 9)
* offset <1>: Options. (line 169)
* offset: Pens. (line 115)
@@ -9341,7 +9336,7 @@ Index
* OR: Arithmetic & logical.
(line 80)
* orientation: Frames and pictures. (line 95)
-* orthographic: three. (line 351)
+* orthographic: three. (line 350)
* outformat: three. (line 140)
* outprefix: Frames and pictures. (line 83)
* output <1>: Options. (line 144)
@@ -9378,33 +9373,33 @@ Index
* pdfviewerOptions: Options. (line 131)
* pen: Pens. (line 6)
* PenMargin: draw. (line 42)
-* PenMargin2: three. (line 577)
-* PenMargin3: three. (line 577)
+* PenMargin2: three. (line 576)
+* PenMargin3: three. (line 576)
* PenMargins: draw. (line 42)
-* PenMargins2: three. (line 577)
-* PenMargins3: three. (line 577)
+* PenMargins2: three. (line 576)
+* PenMargins3: three. (line 576)
* periodic: graph. (line 37)
* perl: LaTeX usage. (line 30)
* perpendicular: geometry. (line 6)
-* perspective: three. (line 376)
+* perspective: three. (line 375)
* picture: Frames and pictures. (line 35)
* picture alignment: Frames and pictures. (line 209)
* piecewisestraight: Paths and guides. (line 81)
-* pixel: three. (line 584)
+* pixel: three. (line 583)
* Pl: Mathematical functions.
(line 48)
* plain: plain. (line 6)
* planar: three. (line 89)
-* plane: three. (line 314)
-* planeproject: three. (line 503)
-* point <1>: three. (line 520)
+* plane: three. (line 313)
+* planeproject: three. (line 502)
+* point <1>: three. (line 519)
* point: Paths and guides. (line 84)
* polar: Data types. (line 121)
* polargraph: graph. (line 90)
* polygon: graph. (line 485)
* pop: Arrays. (line 39)
* Portrait: Frames and pictures. (line 95)
-* postcontrol <1>: three. (line 520)
+* postcontrol <1>: three. (line 519)
* postcontrol: Paths and guides. (line 135)
* postfix operators: Self & prefix operators.
(line 19)
@@ -9413,9 +9408,9 @@ Index
* PostScript subpath: Tutorial. (line 134)
* pow10: Mathematical functions.
(line 6)
-* prc: three. (line 244)
+* prc: three. (line 243)
* precision: Files. (line 92)
-* precontrol <1>: three. (line 520)
+* precontrol <1>: three. (line 519)
* precontrol: Paths and guides. (line 128)
* prefix operators: Self & prefix operators.
(line 6)
@@ -9440,11 +9435,11 @@ Index
* quotient: Arithmetic & logical.
(line 6)
* RadialShade: Frames and pictures. (line 159)
-* radialshade: fill. (line 49)
+* radialshade: fill. (line 51)
* RadialShadeDraw: Frames and pictures. (line 163)
* radians: Mathematical functions.
(line 17)
-* radius <1>: three. (line 520)
+* radius <1>: three. (line 519)
* radius: Paths and guides. (line 124)
* Rainbow: palette. (line 12)
* rand: Mathematical functions.
@@ -9479,7 +9474,7 @@ Index
* restore: Frames and pictures. (line 265)
* restricted: Structures. (line 6)
* return: Debugger. (line 48)
-* reverse <1>: three. (line 520)
+* reverse <1>: three. (line 519)
* reverse <2>: Arrays. (line 146)
* reverse <3>: Paths and guides. (line 172)
* reverse: Data types. (line 250)
@@ -9491,8 +9486,8 @@ Index
* Right: graph. (line 287)
* RightSide: label. (line 61)
* RightTicks: graph. (line 161)
-* RightView: three. (line 399)
-* rotate: three. (line 471)
+* RightView: three. (line 398)
+* rotate: three. (line 470)
* Rotate: label. (line 36)
* Rotate(pair z): label. (line 39)
* round: Mathematical functions.
@@ -9509,13 +9504,13 @@ Index
* safe: Options. (line 164)
* save: Frames and pictures. (line 262)
* saveline: Files. (line 134)
-* scale: three. (line 470)
+* scale: three. (line 469)
* Scale: graph. (line 698)
* scale <1>: graph. (line 682)
* scale <2>: Transforms. (line 39)
* scale: Pens. (line 115)
* Scale: label. (line 45)
-* scale3: three. (line 467)
+* scale3: three. (line 466)
* scaled graph: graph. (line 663)
* scientific graph: graph. (line 397)
* scroll: Files. (line 108)
@@ -9538,12 +9533,12 @@ Index
* sgn: Mathematical functions.
(line 26)
* shading: fill. (line 32)
-* shift <1>: three. (line 455)
+* shift <1>: three. (line 454)
* shift: Transforms. (line 27)
* Shift: label. (line 33)
* shiftless: Transforms. (line 53)
* shipout: Frames and pictures. (line 83)
-* showtarget: three. (line 351)
+* showtarget: three. (line 350)
* Si: Mathematical functions.
(line 48)
* signedint: Files. (line 75)
@@ -9560,14 +9555,14 @@ Index
* singlereal: Files. (line 75)
* sinh: Mathematical functions.
(line 6)
-* SixViews: three. (line 414)
-* SixViewsFR: three. (line 414)
-* SixViewsUS: three. (line 414)
+* SixViews: three. (line 413)
+* SixViewsFR: three. (line 413)
+* SixViewsUS: three. (line 413)
* size <1>: Options. (line 144)
-* size <2>: three. (line 520)
+* size <2>: three. (line 519)
* size <3>: Frames and pictures. (line 43)
* size: Paths and guides. (line 70)
-* size3: three. (line 272)
+* size3: three. (line 271)
* slant: Transforms. (line 45)
* Slant: label. (line 42)
* sleep: Data types. (line 351)
@@ -9599,7 +9594,7 @@ Index
* step: Debugger. (line 39)
* stickframe: markers. (line 16)
* stop: Debugger. (line 10)
-* straight: three. (line 520)
+* straight: three. (line 519)
* Straight: graph. (line 31)
* straight: Paths and guides. (line 77)
* strftime: Data types. (line 298)
@@ -9609,7 +9604,7 @@ Index
* strptime: Data types. (line 306)
* struct: Structures. (line 6)
* structures: Structures. (line 6)
-* subpath <1>: three. (line 520)
+* subpath <1>: three. (line 519)
* subpath: Paths and guides. (line 175)
* subpictures: Frames and pictures. (line 103)
* substr: Data types. (line 246)
@@ -9633,13 +9628,13 @@ Index
(line 6)
* tanh: Mathematical functions.
(line 6)
-* target: three. (line 351)
+* target: three. (line 350)
* tell: Files. (line 92)
* tension <1>: three. (line 6)
* tension: Bezier curves. (line 56)
* tensionSpecifier: Paths and guides. (line 388)
-* tensor product shading: fill. (line 74)
-* tensorshade: fill. (line 74)
+* tensor product shading: fill. (line 78)
+* tensorshade: fill. (line 78)
* tessellation: three. (line 112)
* tex <1>: Options. (line 144)
* tex: Frames and pictures. (line 278)
@@ -9647,7 +9642,7 @@ Index
* TeX string: Data types. (line 181)
* texcommand: Configuring. (line 67)
* TeXHead: draw. (line 26)
-* TeXHead3: three. (line 561)
+* TeXHead3: three. (line 560)
* texpath <1>: label. (line 115)
* texpath: Configuring. (line 67)
* texpreamble: Frames and pictures. (line 286)
@@ -9659,9 +9654,9 @@ Index
* thin: three. (line 123)
* this: Structures. (line 6)
* three: three. (line 6)
-* ThreeViews: three. (line 414)
-* ThreeViewsFR: three. (line 414)
-* ThreeViewsUS: three. (line 414)
+* ThreeViews: three. (line 413)
+* ThreeViewsFR: three. (line 413)
+* ThreeViewsUS: three. (line 413)
* tick: graph. (line 343)
* Ticks: graph. (line 161)
* ticks: graph. (line 161)
@@ -9672,25 +9667,25 @@ Index
* time: Data types. (line 298)
* times: Paths and guides. (line 209)
* Top: graph. (line 137)
-* TopView: three. (line 399)
+* TopView: three. (line 398)
* trace: Debugger. (line 51)
* trailingzero: graph. (line 175)
-* transform <1>: three. (line 495)
+* transform <1>: three. (line 494)
* transform: Transforms. (line 6)
-* transform3: three. (line 450)
+* transform3: three. (line 449)
* transparency: Pens. (line 222)
* transpose: Arrays. (line 205)
* tree: tree. (line 9)
* trembling: trembling. (line 6)
* triangle: geometry. (line 6)
* triangles: three. (line 112)
-* triangulate: contour. (line 157)
+* triangulate: contour. (line 156)
* tridiagonal: Arrays. (line 266)
* trigonometric integrals: Mathematical functions.
(line 48)
* triple: Data types. (line 110)
* TrueMargin: draw. (line 42)
-* TrueMargin3: three. (line 577)
+* TrueMargin3: three. (line 576)
* tube <1>: tube. (line 6)
* tube: three. (line 123)
* tutorial: Tutorial. (line 6)
@@ -9700,16 +9695,16 @@ Index
* U3D: embed. (line 24)
* undefined: Paths and guides. (line 271)
* UnFill: Frames and pictures. (line 152)
-* unfill: fill. (line 106)
+* unfill: fill. (line 110)
* UnFill: draw. (line 26)
* unicode: unicode. (line 6)
* uniform: Arrays. (line 155)
* Uninstall: Uninstall. (line 6)
* unique: math. (line 64)
* unit: Data types. (line 80)
-* unitbox <1>: three. (line 320)
+* unitbox <1>: three. (line 319)
* unitbox: Tutorial. (line 155)
-* unitcircle <1>: three. (line 287)
+* unitcircle <1>: three. (line 286)
* unitcircle: Tutorial. (line 128)
* unitrand: Mathematical functions.
(line 39)
@@ -9719,7 +9714,7 @@ Index
(line 6)
* unpacking: Rest arguments. (line 39)
* unravel: Import. (line 30)
-* up: three. (line 351)
+* up: three. (line 350)
* update: Files. (line 36)
* UpsideDown: Frames and pictures. (line 95)
* usepackage: Frames and pictures. (line 291)
@@ -9739,10 +9734,10 @@ Index
* vertex-dependent colors: three. (line 81)
* Vertical: flowchart. (line 81)
* viewportheight: LaTeX usage. (line 51)
-* viewportmargin: three. (line 275)
-* viewportsize: three. (line 275)
+* viewportmargin: three. (line 274)
+* viewportsize: three. (line 274)
* viewportwidth: LaTeX usage. (line 51)
-* views: three. (line 244)
+* views: three. (line 243)
* vim: Editing modes. (line 33)
* virtual functions: Structures. (line 181)
* void: Data types. (line 10)
@@ -9757,7 +9752,7 @@ Index
* word: Arrays. (line 354)
* write <1>: Arrays. (line 394)
* write: Files. (line 53)
-* X: three. (line 287)
+* X: three. (line 286)
* xasy: GUI. (line 6)
* xaxis3: graph3. (line 7)
* xdr: Files. (line 75)
@@ -9769,15 +9764,15 @@ Index
(line 80)
* xpart: Data types. (line 91)
* xscale: Transforms. (line 33)
-* xscale3: three. (line 458)
+* xscale3: three. (line 457)
* xtick: graph. (line 343)
-* XY: three. (line 480)
+* XY: three. (line 479)
* XYEquals: graph3. (line 21)
* XYZero: graph3. (line 21)
* XZEquals: graph3. (line 21)
* XZero: graph. (line 275)
* XZZero: graph3. (line 21)
-* Y <1>: three. (line 287)
+* Y <1>: three. (line 286)
* Y: Mathematical functions.
(line 6)
* yaxis3: graph3. (line 7)
@@ -9786,14 +9781,14 @@ Index
* ylimits: graph. (line 637)
* ypart: Data types. (line 94)
* yscale: Transforms. (line 36)
-* yscale3: three. (line 461)
+* yscale3: three. (line 460)
* ytick: graph. (line 343)
-* YX: three. (line 495)
-* YZ: three. (line 495)
+* YX: three. (line 494)
+* YZ: three. (line 494)
* YZEquals: graph3. (line 21)
* YZero: graph. (line 125)
* YZZero: graph3. (line 21)
-* Z: three. (line 287)
+* Z: three. (line 286)
* zaxis3: graph3. (line 7)
* zero_Ai: Mathematical functions.
(line 48)
@@ -9809,9 +9804,9 @@ Index
* zeta: Mathematical functions.
(line 48)
* zpart: Data types. (line 163)
-* zscale3: three. (line 464)
-* ZX: three. (line 495)
-* ZY: three. (line 495)
+* zscale3: three. (line 463)
+* ZX: three. (line 494)
+* ZY: three. (line 494)
* |: Arithmetic & logical.
(line 62)
* ||: Arithmetic & logical.
@@ -9827,139 +9822,138 @@ Node: UNIX binary distributions11503
Node: MacOS X binary distributions12609
Node: Microsoft Windows13493
Ref: psview14203
-Node: Configuring15135
-Node: Search paths19349
-Node: Compiling from UNIX source20191
-Ref: multisampling20781
-Node: Editing modes23176
-Node: Subversion25608
-Node: Uninstall26071
-Node: Tutorial26421
-Ref: unitcircle30719
-Node: Drawing commands32655
-Node: draw34366
-Ref: arrows35514
-Node: fill40757
-Ref: gradient shading41801
-Node: clip46029
-Node: label46621
-Ref: Label47219
-Node: Bezier curves53022
-Node: Programming56599
-Ref: array iteration57413
-Node: Data types58494
-Ref: format67691
-Node: Paths and guides71944
-Ref: circle72198
-Ref: extension81618
-Node: Pens88301
-Ref: fillrule95669
-Ref: basealign96566
-Ref: transparency99392
-Ref: makepen102835
-Ref: overwrite103673
-Node: Transforms104883
-Node: Frames and pictures106674
-Ref: envelope107815
-Ref: size108898
-Ref: unitsize109885
-Ref: shipout110945
-Ref: filltype113278
-Ref: add116415
-Ref: add about117361
-Ref: tex120299
-Node: Files121173
-Ref: cd122156
-Ref: scroll126830
-Node: Variable initializers129745
-Node: Structures132470
-Node: Operators139914
-Node: Arithmetic & logical140228
-Node: Self & prefix operators142201
-Node: User-defined operators142989
-Node: Implicit scaling143900
-Node: Functions144463
-Ref: stack overflow147216
-Node: Default arguments147780
-Node: Named arguments148519
-Node: Rest arguments151090
-Node: Mathematical functions154211
-Node: Arrays158876
-Ref: sort165865
-Ref: tridiagonal168269
-Ref: solve169497
-Node: Slices173690
-Node: Casts177580
-Node: Import179545
-Node: Static184782
-Node: LaTeX usage187676
-Node: Base modules194088
-Node: plain196588
-Node: simplex197240
-Node: math197513
-Node: interpolate200218
-Node: geometry200497
-Node: trembling201091
-Node: stats201442
-Node: patterns201702
-Node: markers201938
-Node: tree203721
-Node: binarytree203909
-Node: drawtree204529
-Node: syzygy204733
-Node: feynman205007
-Node: roundedpath205282
-Node: animation205565
-Ref: animate205985
-Node: embed207124
-Node: slide208151
-Node: MetaPost208491
-Node: unicode209207
-Node: latin1210095
-Node: babel210463
-Node: labelpath210692
-Node: labelpath3211512
-Node: annotate211823
-Node: CAD212294
-Node: graph212604
-Ref: ticks219733
-Ref: pathmarkers233060
-Ref: marker233525
-Ref: markuniform233876
-Ref: errorbars235667
-Ref: automatic scaling239704
-Node: palette250333
-Ref: images250451
-Ref: image254623
-Ref: logimage255101
-Ref: penimage256162
-Ref: penfunctionimage256383
-Node: three257107
-Ref: PostScript3D282792
-Node: obj284484
-Node: graph3284736
-Ref: GaussianSurface289891
-Node: grid3290995
-Node: solids291735
-Node: tube292683
-Node: flowchart294918
-Node: contour299487
-Node: contour3304612
-Node: slopefield304919
-Node: ode306356
-Node: Options306616
-Ref: configuration file312661
-Ref: settings312661
-Ref: convert313862
-Node: Interactive mode316829
-Ref: history318982
-Node: GUI320287
-Node: GUI installation320790
-Node: GUI usage321920
-Node: PostScript to Asymptote322823
-Node: Help323579
-Node: Debugger325315
-Node: Credits327100
-Node: Index328032
+Node: Configuring15137
+Node: Search paths19351
+Node: Compiling from UNIX source20193
+Node: Editing modes23051
+Node: Subversion25483
+Node: Uninstall25946
+Node: Tutorial26296
+Ref: unitcircle30594
+Node: Drawing commands32530
+Node: draw34241
+Ref: arrows35389
+Node: fill40632
+Ref: gradient shading41676
+Node: clip46231
+Node: label46823
+Ref: Label47421
+Node: Bezier curves53224
+Node: Programming56926
+Ref: array iteration57740
+Node: Data types58821
+Ref: format68018
+Node: Paths and guides72271
+Ref: circle72525
+Ref: extension81945
+Node: Pens88628
+Ref: fillrule95996
+Ref: basealign96893
+Ref: transparency99719
+Ref: makepen103162
+Ref: overwrite104000
+Node: Transforms105210
+Node: Frames and pictures107001
+Ref: envelope108142
+Ref: size109225
+Ref: unitsize110212
+Ref: shipout111272
+Ref: filltype113605
+Ref: add116742
+Ref: add about117688
+Ref: tex120626
+Node: Files121500
+Ref: cd122483
+Ref: scroll127157
+Node: Variable initializers130072
+Node: Structures132797
+Node: Operators140241
+Node: Arithmetic & logical140555
+Node: Self & prefix operators142528
+Node: User-defined operators143316
+Node: Implicit scaling144227
+Node: Functions144790
+Ref: stack overflow147543
+Node: Default arguments148107
+Node: Named arguments148846
+Node: Rest arguments151417
+Node: Mathematical functions154538
+Node: Arrays159203
+Ref: sort166192
+Ref: tridiagonal168596
+Ref: solve169824
+Node: Slices174017
+Node: Casts177907
+Node: Import179872
+Node: Static185109
+Node: LaTeX usage188003
+Node: Base modules194415
+Node: plain196915
+Node: simplex197567
+Node: math197840
+Node: interpolate200545
+Node: geometry200824
+Node: trembling201418
+Node: stats201687
+Node: patterns201947
+Node: markers202183
+Node: tree203966
+Node: binarytree204154
+Node: drawtree204774
+Node: syzygy204978
+Node: feynman205252
+Node: roundedpath205527
+Node: animation205810
+Ref: animate206230
+Node: embed207369
+Node: slide208396
+Node: MetaPost208736
+Node: unicode209452
+Node: latin1210340
+Node: babel210708
+Node: labelpath210937
+Node: labelpath3211757
+Node: annotate212068
+Node: CAD212539
+Node: graph212849
+Ref: ticks219978
+Ref: pathmarkers233305
+Ref: marker233770
+Ref: markuniform234121
+Ref: errorbars235912
+Ref: automatic scaling239949
+Node: palette250578
+Ref: images250696
+Ref: image254868
+Ref: logimage255346
+Ref: penimage256407
+Ref: penfunctionimage256628
+Node: three257352
+Ref: PostScript3D282920
+Node: obj284612
+Node: graph3284864
+Ref: GaussianSurface290019
+Node: grid3291123
+Node: solids291863
+Node: tube292811
+Node: flowchart295046
+Node: contour299615
+Node: contour3304705
+Node: slopefield305012
+Node: ode306449
+Node: Options306709
+Ref: configuration file312754
+Ref: settings312754
+Ref: convert313955
+Node: Interactive mode316922
+Ref: history319075
+Node: GUI320380
+Node: GUI installation320883
+Node: GUI usage322013
+Node: PostScript to Asymptote322916
+Node: Help323672
+Node: Debugger325408
+Node: Credits327193
+Node: Index328125

End Tag Table
diff --git a/Build/source/utils/asymptote/drawelement.h b/Build/source/utils/asymptote/drawelement.h
index c0761d081b0..e3975c5c6f8 100644
--- a/Build/source/utils/asymptote/drawelement.h
+++ b/Build/source/utils/asymptote/drawelement.h
@@ -206,17 +206,6 @@ public:
drawElementLC() : T(NULL) {}
- drawElementLC(double t1, double t2, double t3, double t4,
- double t5, double t6, double t7, double t8,
- double t9, double t10, double t11, double t12,
- double t13, double t14, double t15, double t16) {
- T=new(UseGC) double[16];
- T[0]=t1; T[4]=t5; T[ 8]=t9; T[12]=t13;
- T[1]=t2; T[5]=t6; T[ 9]=t10; T[13]=t14;
- T[2]=t3; T[6]=t7; T[10]=t11; T[14]=t15;
- T[3]=t4; T[7]=t8; T[11]=t12; T[15]=t16;
- }
-
drawElementLC(const double *t) : T(NULL) {
copyTransform3(T,t);
}
diff --git a/Build/source/utils/asymptote/drawfill.cc b/Build/source/utils/asymptote/drawfill.cc
index 9dc1dbc8767..3147fbe8850 100644
--- a/Build/source/utils/asymptote/drawfill.cc
+++ b/Build/source/utils/asymptote/drawfill.cc
@@ -63,7 +63,8 @@ drawElement *drawLatticeShade::transformed(const transform& t)
drawElement *drawAxialShade::transformed(const transform& t)
{
pair A=t*a, B=t*b;
- return new drawAxialShade(transpath(t),stroke,pentype,A,penb,B);
+ return new drawAxialShade(transpath(t),stroke,pentype,A,extenda,penb,B,
+ extendb);
}
drawElement *drawRadialShade::transformed(const transform& t)
@@ -71,7 +72,8 @@ drawElement *drawRadialShade::transformed(const transform& t)
pair A=t*a, B=t*b;
double RA=length(t*(a+ra)-A);
double RB=length(t*(b+rb)-B);
- return new drawRadialShade(transpath(t),stroke,pentype,A,RA,penb,B,RB);
+ return new drawRadialShade(transpath(t),stroke,pentype,A,RA,extenda,penb,B,RB,
+ extendb);
}
drawElement *drawGouraudShade::transformed(const transform& t)
diff --git a/Build/source/utils/asymptote/drawfill.h b/Build/source/utils/asymptote/drawfill.h
index 9f152d45a57..c75c714d962 100644
--- a/Build/source/utils/asymptote/drawfill.h
+++ b/Build/source/utils/asymptote/drawfill.h
@@ -115,13 +115,16 @@ public:
class drawAxialShade : public drawShade {
protected:
pair a;
+ bool extenda;
pen penb;
pair b;
+ bool extendb;
ColorSpace colorspace;
public:
drawAxialShade(const vm::array& src, bool stroke, pen pentype,
- pair a, pen penb, pair b)
- : drawShade(src,stroke,pentype), a(a), penb(penb), b(b) {}
+ pair a, bool extenda, pen penb, pair b, bool extendb)
+ : drawShade(src,stroke,pentype), a(a), extenda(extenda), penb(penb),
+ b(b), extendb(extendb) {}
bool svgpng() {return false;}
@@ -132,7 +135,7 @@ public:
}
void shade(psfile *out) {
- out->gradientshade(true,colorspace,pentype,a,0,penb,b,0);
+ out->gradientshade(true,colorspace,pentype,a,0,extenda,penb,b,0,extendb);
}
drawElement *transformed(const transform& t);
@@ -144,8 +147,10 @@ protected:
double rb;
public:
drawRadialShade(const vm::array& src, bool stroke,
- pen pentype, pair a, double ra, pen penb, pair b, double rb)
- : drawAxialShade(src,stroke,pentype,a,penb,b), ra(ra), rb(rb) {}
+ pen pentype, pair a, double ra, bool extenda, pen penb,
+ pair b, double rb, bool extendb)
+ : drawAxialShade(src,stroke,pentype,a,extenda,penb,b,extendb),
+ ra(ra), rb(rb) {}
bool svgpng() {return ra > 0.0;}
@@ -154,7 +159,7 @@ public:
}
void shade(psfile *out) {
- out->gradientshade(false,colorspace,pentype,a,ra,penb,b,rb);
+ out->gradientshade(false,colorspace,pentype,a,ra,extenda,penb,b,rb,extendb);
}
drawElement *transformed(const transform& t);
diff --git a/Build/source/utils/asymptote/drawpath3.h b/Build/source/utils/asymptote/drawpath3.h
index 80c86ae2c03..ae9c6321de3 100644
--- a/Build/source/utils/asymptote/drawpath3.h
+++ b/Build/source/utils/asymptote/drawpath3.h
@@ -127,22 +127,11 @@ public:
}
drawNurbsPath3(const double* t, const drawNurbsPath3 *s) :
- degree(s->degree), n(s->n), color(s->color), invisible(s->invisible) {
+ degree(s->degree), n(s->n), weights(s->weights), knots(s->knots),
+ color(s->color), invisible(s->invisible) {
controls=new(UseGC) Triple[n];
transformTriples(t,n,controls,s->controls);
- if(s->weights) {
- weights=new(UseGC) double[n];
- for(size_t i=0; i < n; ++i)
- weights[i]=s->weights[i];
- } else weights=NULL;
-
- size_t nknots=degree+n+1;
- knots=new(UseGC) double[nknots];
-
- for(size_t i=0; i < nknots; ++i)
- knots[i]=s->knots[i];
-
#ifdef HAVE_GL
Controls=NULL;
#endif
diff --git a/Build/source/utils/asymptote/drawsurface.cc b/Build/source/utils/asymptote/drawsurface.cc
index 9775db2cb5c..5576023c9f1 100644
--- a/Build/source/utils/asymptote/drawsurface.cc
+++ b/Build/source/utils/asymptote/drawsurface.cc
@@ -304,6 +304,8 @@ void drawSurface::render(GLUnurbs *nurb, double size2,
if(perspective || !havebillboard) {
static double t[16];
glGetDoublev(GL_MODELVIEW_MATRIX,t);
+// Like Fortran, OpenGL uses transposed (column-major) format!
+ run::transpose(t,4);
bbox3 B(this->Min,this->Max);
B.transform(t);
@@ -544,7 +546,8 @@ void drawNurbs::render(GLUnurbs *nurb, double size2,
static double t[16]; // current transform
glGetDoublev(GL_MODELVIEW_MATRIX,t);
-
+ run::transpose(t,4);
+
bbox3 B(this->Min,this->Max);
B.transform(t);
@@ -596,13 +599,13 @@ void drawSphere::P(Triple& t, double x, double y, double z)
double temp=z; z=x; x=-temp;
}
- double f=T[3]*x+T[7]*y+T[11]*z+T[15];
+ double f=T[12]*x+T[13]*y+T[14]*z+T[15];
if(f == 0.0) run::dividebyzero();
f=1.0/f;
- t[0]=(T[0]*x+T[4]*y+T[ 8]*z+T[12])*f;
- t[1]=(T[1]*x+T[5]*y+T[ 9]*z+T[13])*f;
- t[2]=(T[2]*x+T[6]*y+T[10]*z+T[14])*f;
+ t[0]=(T[0]*x+T[1]*y+T[2]*z+T[3])*f;
+ t[1]=(T[4]*x+T[5]*y+T[6]*z+T[7])*f;
+ t[2]=(T[8]*x+T[9]*y+T[10]*z+T[11])*f;
}
bool drawSphere::write(prcfile *out, unsigned int *, double, groupsmap&)
@@ -860,9 +863,16 @@ bool drawTriangles::write(prcfile *out, unsigned int *, double, groupsmap&)
if(invisible)
return true;
- PRCmaterial m(ambient,diffuse,emissive,specular,opacity,PRCshininess);
-
- out->addTriangles(nP,P,nI,PI,m,nN,N,NI,0,NULL,NULL,nC,C,CI,0,NULL,NULL,30);
+ if (nC) {
+ const RGBAColour white(1,1,1,opacity);
+ const RGBAColour black(0,0,0,opacity);
+ const PRCmaterial m(black,white,black,specular,opacity,PRCshininess);
+ out->addTriangles(nP,P,nI,PI,m,nN,N,NI,0,NULL,NULL,nC,C,CI,0,NULL,NULL,30);
+ } else {
+ const PRCmaterial m(ambient,diffuse,emissive,specular,opacity,PRCshininess);
+ out->addTriangles(nP,P,nI,PI,m,nN,N,NI,0,NULL,NULL,0,NULL,NULL,0,NULL,NULL,
+ 30);
+ }
return true;
}
@@ -880,6 +890,7 @@ void drawTriangles::render(GLUnurbs *nurb, double size2, const triple& Min,
triple m,M;
static double t[16]; // current transform
glGetDoublev(GL_MODELVIEW_MATRIX,t);
+ run::transpose(t,4);
bbox3 B(this->Min,this->Max);
B.transform(t);
diff --git a/Build/source/utils/asymptote/drawsurface.h b/Build/source/utils/asymptote/drawsurface.h
index 46a42ad25d9..15b07d857c3 100644
--- a/Build/source/utils/asymptote/drawsurface.h
+++ b/Build/source/utils/asymptote/drawsurface.h
@@ -101,8 +101,8 @@ public:
drawSurface(const double* t, const drawSurface *s) :
straight(s->straight), diffuse(s->diffuse), ambient(s->ambient),
- emissive(s->emissive), specular(s->specular), opacity(s->opacity),
- shininess(s->shininess), PRCshininess(s->PRCshininess),
+ emissive(s->emissive), specular(s->specular), colors(s->colors),
+ opacity(s->opacity), shininess(s->shininess), PRCshininess(s->PRCshininess),
invisible(s->invisible),
interaction(s->interaction), prc(s->prc) {
@@ -115,14 +115,8 @@ public:
#ifdef HAVE_GL
center=t*s->center;
- normal=multshiftless(t,s->normal);
+ normal=transformNormal(t,s->normal);
#endif
-
- if(s->colors) {
- colors=new(UseGC) RGBAColour[4];
- for(size_t i=0; i < 4; ++i)
- colors[i]=s->colors[i];
- } else colors=NULL;
}
bool is3D() {return true;}
@@ -247,6 +241,7 @@ public:
drawNurbs(const double* t, const drawNurbs *s) :
udegree(s->udegree), vdegree(s->vdegree), nu(s->nu), nv(s->nv),
+ weights(s->weights), uknots(s->uknots), vknots(s->vknots),
diffuse(s->diffuse), ambient(s->ambient),
emissive(s->emissive), specular(s->specular), opacity(s->opacity),
shininess(s->shininess), PRCshininess(s->PRCshininess),
@@ -257,30 +252,9 @@ public:
transformTriples(t,n,controls,s->controls);
- if(s->weights) {
- weights=new(UseGC) double[n];
- for(size_t i=0; i < n; ++i)
- weights[i]=s->weights[i];
- } else weights=NULL;
-
- size_t nuknots=udegree+nu+1;
- size_t nvknots=vdegree+nv+1;
- uknots=new(UseGC) double[nuknots];
- vknots=new(UseGC) double[nvknots];
-
- for(size_t i=0; i < nuknots; ++i)
- uknots[i]=s->uknots[i];
-
- for(size_t i=0; i < nvknots; ++i)
- vknots[i]=s->vknots[i];
-
#ifdef HAVE_GL
Controls=NULL;
- if(s->colors) {
- colors=new(UseGC) GLfloat[16];
- for(size_t i=0; i < 16; ++i)
- colors[i]=s->colors[i];
- } else colors=NULL;
+ colors=s->colors;
#endif
}
diff --git a/Build/source/utils/asymptote/examples/shade.asy b/Build/source/utils/asymptote/examples/shade.asy
index 66b8880fd4b..889834585cb 100644
--- a/Build/source/utils/asymptote/examples/shade.asy
+++ b/Build/source/utils/asymptote/examples/shade.asy
@@ -1,4 +1,3 @@
-
size(100,0);
radialshade(unitsquare,yellow,(0,0),0,red,(0,0),1);
diff --git a/Build/source/utils/asymptote/examples/tvgen.asy b/Build/source/utils/asymptote/examples/tvgen.asy
index 1a9f151df26..c7898fe7129 100644
--- a/Build/source/utils/asymptote/examples/tvgen.asy
+++ b/Build/source/utils/asymptote/examples/tvgen.asy
@@ -1,5 +1,5 @@
/* tvgen - draw pm5544-like television test cards.
- * Copyright (C) 2007, 2009, Servaas Vandenberghe.
+ * Copyright (C) 2007, 2009, 2012, Servaas Vandenberghe.
*
* The tvgen code below is free software: you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License as
@@ -16,13 +16,14 @@
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*
- * tvgen-1.1/tvgen.asy
+ * tvgen-1.2/tvgen.asy http://picaros.org/ftp/soft/tvgen-1.2.tgz
* This asy script generates pm5544-like television test cards. The image
* parameters were derived from a 1990 recording. The basic parameters
* conform to itu-r bt.470, bt.601, and bt.709. There is no unique image
* since local variants exist and parameters have varied over time.
*/
//papertype="a4";
+import plain;
int verbose=settings.verbose/*+2*/; /* uncomment for debug info */
/* tv dot coordinates --> PS points */
@@ -46,25 +47,144 @@ path tvrect(int lc, int tr, int rc, int br, real xd, real yd, int Nv) {
return z[0]--z[1]--z[2]--z[3]--cycle;
}
+/********************* horizontal castellations ********************/
+/* Draw a horizontal red line in the top left and the bottom right
+ * castellation. These testlines disappear if the monitor is not set
+ * in a dot-exact mode. An example is image crop due to overscan.
+ *
+ * For 625 line systems any analog-compatible processing removes
+ * these red testlines since the first halfline of the odd field and
+ * the last halfline of the even field are ignored. A full 576
+ * visible line frame often results via a final copy paste operation.
+ */
+void castelhor(int colortv, int[] rccoll, int[] rccolr, int cmaxi, int Nh,
+ int topdist, int botdist,
+ pen pdef, real xd, real yd, int Nv) {
+ pen pblack, pwhite, pred;
+ int i;
+
+ pblack = pdef+gray(0.0);
+ pwhite = pdef+gray(1.0);
+ pred = pdef+rgb(0.75, 0, 0);
+
+ /** top and bottom: white corners. **/
+ for (i=-1; i<=cmaxi; ++i) {
+ pen pcast;
+ int inext, lc, rc, tr, br;
+ path zzc;
+
+ inext = i+1;
+ if (inext%2 == 0) {
+ pcast = pwhite;
+ } else {
+ pcast = pblack;
+ }
+
+ if (i >= 0) {
+ lc = rccolr[i];
+ } else {
+ lc = 0;
+ }
+ if (inext <= cmaxi) {
+ rc = rccoll[inext];
+ } else {
+ rc = Nh;
+ }
+
+ if (i == 0 && colortv > 0 && topdist > 1) {
+ path zzr;
+ zzr = tvrect(lc,0, rc,1, xd,yd,Nv);
+ fill(zzr, p=pred);
+ tr = 1;
+ } else {
+ tr = 0;
+ }
+ zzc = tvrect(lc,tr, rc,topdist, xd,yd,Nv);
+ fill(zzc, p=pcast);
+
+ if (inext == cmaxi && colortv > 0 && botdist+1 < Nv) {
+ path zzr;
+ zzr = tvrect(lc,Nv-1, rc,Nv, xd,yd,Nv);
+ fill(zzr, p=pred);
+ br = Nv-1;
+ } else {
+ br = Nv;
+ }
+ zzc = tvrect(lc,botdist, rc,br, xd,yd,Nv);
+ fill(zzc, p=pcast);
+ }
+
+ return;
+}
+
+/********************* vertical castellations ********************/
+/* The bottom right red rectangle tests for a non causal color FIR
+ * filter in the receiver. The last 2..4 dots then typically appear
+ * colorless, green, or cyan.
+ *
+ * This stems from the fact that the chroma subcarrier is of lower
+ * bandwidth than luma and thus continues after the last active sample.
+ * These trailing (y,u,v) samples result from an abrupt signal to zero
+ * transition and depend on the transmit and receive filters. Samples
+ * from VHS, system B/G/D/K, system I, or a DVD player output are
+ * different. Nevertheless, a sharpening filter uses this data and so
+ * adds false color to the last dots.
+ */
+void castelver(int colortv, int leftdist, int rightdist, int Nh,
+ int[] rcrowb, int[] rcrowt, int rmaxi,
+ pen pdef, real xd, real yd, int Nv) {
+ pen pblack, pwhite;
+ int i;
+
+ pblack = pdef+gray(0.0);
+ pwhite = pdef+gray(1.0);
+
+ for (i=0; i<rmaxi; ++i) {
+ int inext = i+1;
+ pen pcastl, pcastr;
+ int tr, br;
+ path zzc;
+
+ if (inext%2 == 0) {
+ pcastl = pwhite;
+ } else {
+ pcastl = pblack;
+ }
+ if (inext == rmaxi && colortv>0) {
+ pcastr = pdef+rgb(0.75,0.0,0);
+ } else {
+ pcastr = pcastl;
+ }
+
+ tr=rcrowb[i];
+ br=rcrowt[i+1];
+ zzc=tvrect( 0,tr, leftdist,br, xd,yd,Nv);
+ fill(zzc, p=pcastl);
+ zzc=tvrect(rightdist,tr, Nh,br, xd,yd,Nv);
+ fill(zzc, p=pcastr);
+ }
+ return;
+}
/********************* image aspect ratio markers ********************/
-void rimarkers(real rimage, int Nh, int Nhc, int os, int Nvc, int Nsy, pen pdef, real xd, real yd, int Nv) {
+void rimarkers(real rimage, int Nh, int Nhc, int os, int Nvc, int Nsy,
+ pen pdef, real xd, real yd, int Nv) {
int[] ridefN={ 4, 16 };
int[] ridefD={ 3, 9 };
int i;
- for(i=0; i<2; ++i) {
+ for (i=0; i<2; ++i) {
real rid=ridefN[i]/ridefD[i];
- if(rimage>rid) {
+ if (rimage>rid) {
int off, offa, offb;
- /* Nhdef=Nh/rimage*rid */
- off=round(Nh/rimage*rid/2);
+ /* Nhdef=Nh*rid/rimage */
+ off=round(Nh*rid/rimage/2);
offa=off+os;
offb=off-os;
// write(offa,offb);
- if(2*offa<Nh) {
+ if (2*offa<Nh) {
int hy, tr, br;
path zz;
@@ -83,50 +203,113 @@ void rimarkers(real rimage, int Nh, int Nhc, int os, int Nvc, int Nsy, pen pdef,
return;
}
-/************* cross hatch: line pairing, center interlace test *************/
-void centerline(int[] coff, int[] coffa, int[] coffb, int Nhc, int divsx,
- int os, int[] rcrowc, int Nvc, int divsy,
+/************* crosshatch: line pairing, center interlace test *************/
+/* There are 2 coordinate systems in use:
+ * 1. integer number based for the gridlines
+ *
+ * coff, Nhc, rccoll[], rccolc[], rccolr[] : vertical gridlines,
+ * rcrowc, Nvc : horizontal gridlines,
+ *
+ * 2. real number based for the center circle
+ *
+ * ccenter={ cx=Nh/2, cy=Nv/2} : the true image center,
+ * rcoff rcright rcleft : offset to ccenter and points on the circle.
+ *
+ * Both centers coincide if Nh and Nv are even.
+ */
+void centerline(int colortv,
+ int[] rccoll, int[] rccolc, int[] rccolr, int divsx,
+ int Nhc, int os,
+ int[] rcrowt, int[] rcrowc, int[] rcrowb, int divsy,
+ int Nvc,
pair ccenter, real[] rcoff, pair[] rcright, pair[] rcleft,
pen pdef, real xd, real yd, int Nv) {
- pair[] z;
- int col;
- pen pblack=pdef+gray(0.0), pwhite=pdef+gray(1.0);
-
- z[0]=rcright[divsy];
-
- col=Nhc+coff[0];
- z[1]=tvps(col,rcrowc[divsy], xd,yd,Nv);
- z[2]=tvps(col,rcrowc[divsy-1], xd,yd,Nv);
- col=Nhc-coff[0];
- z[3]=tvps(col,rcrowc[divsy-1], xd,yd,Nv);
- z[4]=tvps(col,rcrowc[divsy], xd,yd,Nv);
-
- z[5]=rcleft[divsy];
- z[6]=rcleft[divsy+1];
-
- z[7]=tvps(col,rcrowc[divsy+1], xd,yd,Nv);
- z[8]=tvps(col,rcrowc[divsy+2], xd,yd,Nv);
- col=Nhc+coff[0];
- z[9]=tvps(col,rcrowc[divsy+2], xd,yd,Nv);
- z[10]=tvps(col,rcrowc[divsy+1], xd,yd,Nv);
-
- z[11]=rcright[divsy+1];
- fill(z[1]--z[2]--z[3]--z[4] //--z[5]--z[6]
- --arc(ccenter, z[5], z[6])
- --z[7]--z[8]--z[9]--z[10] //--z[11]--z[0]
- --arc(ccenter,z[11], z[0])
- --cycle, p=pblack);
-
- int i, maxoff, rows, tr, br;
+ pen pblack, pwhite;
+ int cmaxi, maxoff, mincol, maxcol;
+ int rows, tr, br;
path zz;
- maxoff=floor(rcoff[divsy]);
+ cmaxi=2*divsx+1;
+
+ pblack=pdef+gray(0.0);
+ pwhite=pdef+gray(1.0);
+
+ /* black background for center cross */
+ if (colortv > 0) {
+ /* black, vertical gridlines redrawn below */
+ pair[] z;
+ int col;
+
+ z[0]=rcright[divsy];
+
+ col = rccolc[divsx+1];
+ z[1]=tvps(col,rcrowc[divsy], xd,yd,Nv);
+ z[2]=tvps(col,rcrowc[divsy-1], xd,yd,Nv);
+ col = rccolc[divsx];
+ z[3]=tvps(col,rcrowc[divsy-1], xd,yd,Nv);
+ z[4]=tvps(col,rcrowc[divsy], xd,yd,Nv);
+ z[5]=rcleft[divsy];
+ z[6]=rcleft[divsy+1];
+
+ z[7]=tvps(col,rcrowc[divsy+1], xd,yd,Nv);
+ z[8]=tvps(col,rcrowc[divsy+2], xd,yd,Nv);
+ col = rccolc[divsx+1];
+ z[9]=tvps(col,rcrowc[divsy+2], xd,yd,Nv);
+ z[10]=tvps(col,rcrowc[divsy+1], xd,yd,Nv);
+
+ z[11]=rcright[divsy+1];
+ fill(z[1]--z[2]--z[3]--z[4] //--z[5]--z[6]
+ --arc(ccenter, z[5], z[6])
+ --z[7]--z[8]--z[9]--z[10] //--z[11]--z[0]
+ --arc(ccenter,z[11], z[0])
+ --cycle, p=pblack);
+ } else {
+ /* 3 rows of black squares inside the gratings */
+ int i, imax = divsy+1;
+
+ for (i=divsy-1; i<=imax; ++i) { /* all 3 rows */
+ int lmaxoff, lmincol, lmaxcol;
+ int inext = i+1;
+ int tr, br, j;
+
+ /* XXX rcoff is relative to ccenter */
+ lmaxoff = min(floor(rcoff[i]), floor(rcoff[inext]));
+ lmincol = Nhc-lmaxoff;
+ lmaxcol = Nhc+lmaxoff;
+
+ /* square top and bottom */
+ tr = rcrowb[i];
+ br = rcrowt[inext];
+
+ for (j=0; j<cmaxi; ++j) { /* column j */
+ int jnext = j+1;
+
+ if (lmincol<=rccolc[j] && rccolc[jnext]<=lmaxcol) {
+ /* square is inside circle */
+ int lc, rc;
+ path zzsq;
+
+ lc = rccolr[j];
+ rc = rccoll[jnext];
+ zzsq = tvrect(lc, tr, rc, br, xd,yd,Nv);
+ fill(zzsq, p=pblack); /* draw black squares */
+ }
+ } /* for col j */
+ } /* for row i */
+ }
+
/* center cross: vertical and horizontal centerline */
+ maxoff = floor(rcoff[divsy]); /* XXX rcoff is relative to ccenter */
+ mincol = Nhc-maxoff;
+ maxcol = Nhc+maxoff;
+
rows=min(Nvc-rcrowc[divsy-1], rcrowc[divsy+2]-Nvc);
tr=Nvc-rows;
br=Nvc+rows;
- //write("centerline long: rows tr br ", rows, tr, br);
+ if (verbose > 1) {
+ write("centerline long : rows tr br ", rows, tr, br);
+ }
zz=tvrect(Nhc-os, tr, Nhc+os, br, xd,yd,Nv);
fill(zz, p=pwhite);
zz=tvrect(Nhc-maxoff,Nvc-1, Nhc+maxoff,Nvc+1, xd,yd,Nv);
@@ -136,27 +319,28 @@ void centerline(int[] coff, int[] coffa, int[] coffb, int Nhc, int divsx,
rows=min(Nvc-rcrowc[divsy], rcrowc[divsy+1]-Nvc);
tr=Nvc-rows;
br=Nvc+rows;
- if(verbose>1)
- write("centerline: rows tr br ", rows, tr, br);
- for(i=0; i<=divsx; ++i) {
- int off;
+ if (verbose > 1) {
+ write("centerline short: rows tr br ", rows, tr, br);
+ }
+
+ if (colortv > 0) {
+ int i;
+ for (i=0; i<=cmaxi; ++i) {
+ int coll, colr;
- off=coff[i];
- if(off<maxoff) {
- int offa, offb;
- path zzv;
- offa=coffa[i];
- offb=coffb[i];
-
- zzv=tvrect(Nhc+offb, tr, Nhc+offa, br, xd,yd,Nv);
- fill(zzv, p=pwhite);
- zzv=tvrect(Nhc-offa, tr, Nhc-offb, br, xd,yd,Nv);
- fill(zzv, p=pwhite);
+ coll=rccoll[i];
+ colr=rccolr[i];
+
+ if (mincol<=coll && colr<=maxcol) {
+ path zzv;
+ zzv=tvrect(coll, tr, colr, br, xd,yd,Nv);
+ fill(zzv, p=pwhite);
+ }
}
}
return;
}
-
+
/************************ topbw **************************************/
void topbw(int[] coff, int Nhc, int os, int urow, int trow, int brow,
pair ccenter, pair rclt, pair rclb, pair rcrt, pair rcrb,
@@ -206,29 +390,29 @@ void topbw(int[] coff, int Nhc, int os, int urow, int trow, int brow,
* crad circle radius in y units, true size=crad*yd
*/
real testcircx(real x, real crad, real xd, real yd) {
- real relx, phi, y;
+ real relx, ph, y;
relx=x*xd/yd/crad;
- if(relx>1) {
- phi=0;
+ if (relx>1) {
+ ph=0;
} else {
- phi=acos(relx);
+ ph=acos(relx);
}
- y=crad*sin(phi); // or (x*xd)^2+(y*yd)^2=(crad*yd)^2
+ y=crad*sin(ph); // or (x*xd)^2+(y*yd)^2=(crad*yd)^2
return y;
}
/* y on circle -> return x>=0 */
real testcircy(real y, real crad, real xd, real yd) {
- real rely, phi, x;
+ real rely, ph, x;
rely=y/crad;
- if(rely>1) {
- phi=pi/2;
+ if (rely>1) {
+ ph=pi/2;
} else {
- phi=asin(rely);
+ ph=asin(rely);
}
- x=crad*cos(phi)*yd/xd; // or (x*xd)^2+(y*yd)^2=(crad*yd)^2
+ x=crad*cos(ph)*yd/xd; // or (x*xd)^2+(y*yd)^2=(crad*yd)^2
return x;
}
@@ -251,14 +435,14 @@ void testtone(real Tt, int trow, int brow,
blocks=floor(2*xb/Tt);
- for(i=-blocks-1; i<=blocks; ++i) {
+ for (i=-blocks-1; i<=blocks; ++i) {
real tl, tr;
path zz;
tl=max(-xb,min(i*Ttt,xb)); /* limit [-xb..xb] */
tr=max(-xb,min((i+1)*Ttt,xb));
- if(tl<-xt && tr<=-xt || tr>xt && tl>=xt) { /* top full circle */
+ if (tl<-xt && tr<=-xt || tr>xt && tl>=xt) { /* top full circle */
pair[] z;
real yl, yr;
@@ -306,8 +490,8 @@ void testtone(real Tt, int trow, int brow,
zz=z[0]--z[1]--z[2]--z[3]--cycle;
}
- if(tl<tr) {
- if(i%2 == 0) {
+ if (tl<tr) {
+ if (i%2 == 0) {
fill(zz, p=pdef+gray(0.0));
} else {
fill(zz, p=pdef+gray(0.75));
@@ -329,13 +513,13 @@ void colorbars(int[] coff, int Nhc, int trow, int crow, int brow,
rows=brow-trow;
poff=0;
- for(i=0; i<=cmax; ++i) {
+ for (i=0; i<=cmax; ++i) {
int off;
int ii=2*i, il=cmax-i, ir=i+cmax+1;
path zzl, zzr;
off=ceil((coff[1+ii]+coff[2+ii])/2);
- if(i!=0 && i<cmax) {
+ if (i!=0 && i<cmax) {
zzr=tvrect(Nhc+poff,trow, Nhc+off,brow, xd,yd,Nv);
zzl=tvrect(Nhc-off,trow, Nhc-poff,brow, xd,yd,Nv);
} else {
@@ -403,7 +587,7 @@ real addphase(real theta, real freq, real step) {
cycles=freq*step;
coverflow=floor(abs(cycles));
- if(coverflow>1) {
+ if (coverflow>1) {
thetaret=0;
} else {
real dpi=2*pi;
@@ -411,9 +595,9 @@ real addphase(real theta, real freq, real step) {
cycles-=coverflow*sgn(cycles);
thetaret=theta+cycles*dpi; /* cycles=(-1 .. 1) */
- if(thetaret>pi) {
+ if (thetaret>pi) {
thetaret-=dpi;
- } else if(thetaret<-pi) {
+ } else if (thetaret<-pi) {
thetaret-=dpi;
}
}
@@ -431,11 +615,11 @@ void testfreqs(real[] ftones, int[] coff, int Nhc, int trow,int crow,int brow,
real fl, fr, thr, thl;
/* Segment info for PAL continental test card
- * segment i extends from [divc[i] .. divc[i+1]) with frequency divf[i]
+ * segment i extends from (divc[i] .. divc[i+1]) with frequency divf[i]
*/
- divs=2; // the number of segments on the right, total=2*divs+1
+ divs=2; // the number of segments to the right, total=2*divs+1
divc[0]=0;
- for(i=0; i<=divs; ++i) {
+ for (i=0; i<=divs; ++i) {
int ii=i*2, il=divs-i, ir=divs+i;
divc[i+1]=ceil((coff[ii]+coff[ii+1])/2); /* xdot distance to center */
@@ -453,19 +637,19 @@ void testfreqs(real[] ftones, int[] coff, int Nhc, int trow,int crow,int brow,
divnext=0;
fl=0;
fr=0;
- thl=0;
- thr=0;
- // draw a vertical line at off..off+1
- for(off=0; off<coffmax; ++off) {
+ thl=0; /* ={ 0, -pi/2 } : initial angle at center vertical line Nhc */
+ thr=thl;
+ /* draw a vertical line at off..off+1, use theta for off+1/2 */
+ for (off=0; off<coffmax; ++off) {
real ampl, ampr;
int col;
path zz;
- if(off==trowlim) {
+ if (off==trowlim) {
tr=trow;
}
- if(off == divc[divnext]) {
+ if (off == divc[divnext]) {
/* switch frequency: cycles=0.5*fcur+0.5*fnext */
thl=addphase(thl, fl, -0.5);
thr=addphase(thr, fr, 0.5);
@@ -509,18 +693,17 @@ void testfreqs(real[] ftones, int[] coff, int Nhc, int trow,int crow,int brow,
void graybars(int[] coff, int Nhc, int trow, int brow,
pair ccenter, pair rclt, pair rclb, pair rcrt, pair rcrb,
pen pdef, real xd, real yd, int Nv) {
- int[] gs={0, 51, 102, 153, 204, 255};
- int cmax=2, poff, rows, i;
+ int[] gs={0, 20, 40, 60, 80, 100};
+ int cmax=2, poff, i;
- rows=brow-trow;
poff=0;
- for(i=0; i<=cmax; ++i) {
+ for (i=0; i<=cmax; ++i) {
int off;
int ii=2*i, il=cmax-i, ir=i+cmax+1;
path zzl, zzr;
off=ceil((coff[1+ii]+coff[2+ii])/2);
- if(i<cmax) {
+ if (i<cmax) {
zzl=tvrect(Nhc-off,trow, Nhc-poff,brow, xd,yd,Nv);
zzr=tvrect(Nhc+poff,trow, Nhc+off,brow, xd,yd,Nv);
} else {
@@ -537,8 +720,8 @@ void graybars(int[] coff, int Nhc, int trow, int brow,
zrt=tvps(pcol,trow, xd,yd,Nv);
zzr=zrb--arc(ccenter,rcrb,rcrt)--zrt--cycle;
}
- fill(zzl, p=pdef+gray(gs[il]/255));
- fill(zzr, p=pdef+gray(gs[ir]/255));
+ fill(zzl, p=pdef+gray(gs[il]/100));
+ fill(zzr, p=pdef+gray(gs[ir]/100));
poff=off;
}
@@ -608,15 +791,16 @@ void bottomcirc(int off, int Nhc, int trow, real cx, real cy, real crad,
return;
}
-/****************************** PAL ears ***********************************
+/****************************** PAL ears ***********************************/
+/* values pro mille
* left y R G B
- * 0.55 98 162 140
- * 0.5 103 128 191
- * 0.5 152 128 64
- * 0.45 157 93 115
+ * 550 306 674 550
+ * 500 363 500 859
+ * 500 637 500 141
+ * 450 694 326 450
* right
- * 0.6 153 168 76
- * 0.4 102 87 179
+ * 600 600 684 166
+ * 400 400 316 834
*
* in: dright= -1 left ear, +1 right ear
*/
@@ -633,9 +817,10 @@ void palears(int[] coff, int[] coffa, int[] coffb, int Nhc,
*/
real cI=0.214;
- /* (u,v) for zero G-y, phase of -34.5 degrees */
+ /* itu-r */
real wr=0.299, wb=0.114, wg=1-wr-wb; /* wg=0.587, y=wr*R+wg*G+wb*B */
real wu=0.493, wv=0.877; /* u=wu*(B-y) v=wv*(R-y) */
+ /* (u,v) for zero G-y, phase of -34.5 degrees */
real colu=wu*wg/wb, colv=-wv*wg/wr; /* for w=(G-y)/0.696 == 0 */
/* ears: U==0 W==0 W==0 U==0 */
@@ -653,9 +838,13 @@ void palears(int[] coff, int[] coffa, int[] coffb, int Nhc,
path[] zz;
int lcol, ccol, cicol, rcol, i;
- if(dright>0) {
+ if (dright>0) {
+ if (verbose > 1)
+ write("right ears");
cy=cyr; cu=cur; cv=cvr;
} else {
+ if (verbose > 1)
+ write("left ears");
cy=cyl; cu=cul; cv=cvl;
}
@@ -690,7 +879,7 @@ void palears(int[] coff, int[] coffa, int[] coffb, int Nhc,
z[5]=tvps(rcol,arow, xd,yd,Nv);
zz[3]=z[0]--z[1]--z[2]--z[3]--z[4]--z[5]--cycle;
- for(i=0; i<4; ++i) {
+ for (i=0; i<4; ++i) {
real y, u, v, A, ph, By, Ry, Gy, R, G, B;
y=cy[i];
@@ -699,12 +888,14 @@ void palears(int[] coff, int[] coffa, int[] coffb, int Nhc,
A=hypot(u,v);
ph= (u!=0 || v!=0) ? atan2(v,u) : 0.0;
- if(v>=0) {
- if(ph<0) ph=ph+pi;
+ if (v>=0) {
+ if (ph<0)
+ ph=ph+pi;
} else {
- if(ph>0) ph=ph-pi;
+ if (ph>0)
+ ph=ph-pi;
}
- if(A>0) {
+ if (A>0) {
u=u/A*cI;
v=v/A*cI;
}
@@ -717,22 +908,22 @@ void palears(int[] coff, int[] coffa, int[] coffb, int Nhc,
R=Ry+y;
G=Gy+y;
B=By+y;
- if(verbose > 1)
- write(y,round(R*255),round(G*255),round(B*255));
+ if (verbose > 1)
+ write(y*1000, round(R*1000), round(G*1000), round(B*1000));
fill(zz[i], p=pdef+rgb(R,G,B));
}
return;
}
-/****************************** NTSC bars ***********************************
- * amplitude equals color burst smpte (pm: -V +U)
+/****************************** NTSC bars ***********************************/
+/* amplitude equals color burst smpte (pm: -V +U)
* y campl sat R G B
* left 0.5 0.21 70% -I?
* right 0.5 0.17 60% +Q?
*/
-void ntscbars(int[] coff, int[] coffa, int[] coffb, int Nhc,
- int[] rcrowt, int[] rcrowb, int Nvc, int divsy, int dright,
+void ntscbars(int[] rccoll, int[] rccolr, int divsx,
+ int[] rcrowt, int[] rcrowb, int divsy, int dright,
pen pdef, real xd, real yd, int Nv) {
/* The amplitude of (i,q) as seen on a vectorscope,
* max 0.292 Vn for 100% saturation in I==0 ears.
@@ -747,35 +938,34 @@ void ntscbars(int[] coff, int[] coffa, int[] coffb, int Nhc,
/* iT : iq -> RyBy : rotation+scaling */
real iT11=0.95, iT12=0.62, iT21=-1.11, iT22=1.71;
- /* bars -2 -1 0 1 2 */
- real[] cyl={ 0.50, 0.50, 0, 0.50, 0.50 };
- real[] cil={ 0, 0, 0, -1, 1 };
- real[] cql={ -1, 1, 0, 0, 0 };
- int[] offil={ 6, 7, 5, 7, 6 };
-
+ /* bars -2 -1 0 1 2 */
+ real[] cyl={ 0.50, 0.50, 1, 0.50, 0.50 };
+ real[] cil={ 0, 0, 0, -1, 1 };
+ real[] cql={ -1, 1, 0, 0, 0 };
+ int[] indl={ -7, -8, 0, 8, 7 };
+
real cy, ci, cq;
- int dri, dris, offi, lcol, rcol, i;
+ int rmaxi, dri, ind, ibase, lcol, rcol, i;
- if(dright>=0) {
- dris=1;
- } else {
- dris=-1;
- }
- if(dright<-2 || dright>2) {
+ rmaxi=2*divsy+1;
+ if (dright<-2 || dright>2) {
dri=2;
} else {
dri=2+dright;
}
- cy=cyl[dri]; ci=cil[dri]; cq=cql[dri];
- offi=offil[dri];
- lcol=Nhc+dris*coffa[offi];
- rcol=Nhc+dris*coffb[offi+1];
+ cy=cyl[dri];
+ ci=cil[dri];
+ cq=cql[dri];
+ ind=indl[dri];
+ ibase=divsx+ind;
+ lcol=rccolr[ibase];
+ rcol=rccoll[ibase+1];
real A, By, Ry, Gy, R, G, B;
A=hypot(ci,cq);
- if(A>0) {
+ if (A>0) {
ci=ci/A*campl;
cq=cq/A*campl;
}
@@ -787,33 +977,33 @@ void ntscbars(int[] coff, int[] coffa, int[] coffb, int Nhc,
R=Ry+cy;
G=Gy+cy;
B=By+cy;
- if(verbose > 1)
- write(cy,ci,cq,round(R*255),round(G*255),round(B*255));
+ if (verbose > 1)
+ write(ind, cy*1000, round(ci*1000), round(cq*1000),
+ round(R*1000), round(G*1000), round(B*1000));
- for(i=-divsy; i<=divsy; ++i) {
+ for (i=0; i<rmaxi; ++i) {
path zz;
- int brow, trow;
+ int brow, trow, inext=i+1;
- if(i>-divsy) {
- trow=rcrowb[divsy+i];
+ if (i>0) {
+ trow=rcrowb[i];
} else {
- trow=floor((rcrowb[divsy+i]+rcrowt[divsy+i+1])/2);
+ trow=floor((rcrowb[i]+rcrowt[inext])/2);
}
- if(divsy>i) {
- brow=rcrowt[divsy+i+1];
+ if (inext<rmaxi) {
+ brow=rcrowt[inext];
} else {
- brow=floor((rcrowb[divsy+i]+rcrowt[divsy+i+1])/2);
+ brow=floor((rcrowb[i]+rcrowt[inext])/2);
}
- zz=tvrect(lcol,brow, rcol,trow, xd,yd,Nv);
+ zz=tvrect(lcol,trow, rcol,brow, xd,yd,Nv);
fill(zz, p=pdef+rgb(R,G,B));
}
return;
}
-
/****************************** main ***********************************/
/* Conversion to bitmap:
* EPSPNG='gs -dQUIET -dNOPAUSE -dBATCH -sDEVICE=png16m'
@@ -834,14 +1024,17 @@ int bsys=2, colortv=1, os=1;
* 5 4/3 768 bsys=1, square dot cable TV info channel
* 6 131/96 786 bsys=2, total square dot broadcast camera
* 7 16/9 720 new broadcast 16/9, SD from HD-1440 or itu-r bt.709
- * 8 4/3 704 525 analog broadcast itu-r bt.470 711*485
+ * 8 4/3 704 525 analog broadcast itu-r bt.470 711x485
* 9 4/3 720 525 new broadcast
* 10 15/11 720 525 total aperture analog broadcast
* 11 16/9 1920 1250, 1080 square dot at 12.5 frames/second
* 12 4/3 1600 1250, 1200 square dot at 12.5 frames/second
*
* colortv:
- * set 0 for monochrome crosshatch, 1 for pal ears, 2 for ntsc bars
+ * 0 monochrome crosshatch,
+ * 1 pal ears,
+ * 2 ntsc bars,
+ * 3 neither ears nor bars.
*
* os: horizontal oversampling, typical values for 13.5MHz:
* 2 4/3 704*576, 15/11 720*576
@@ -854,9 +1047,9 @@ int bsys=2, colortv=1, os=1;
access settings;
usersetting();
-if(bsys<0 || bsys>12 || colortv<0 || colortv>3 || os<=0 || os>16) {
- write('Error: bad user input: bsys, colortv, os=\t', bsys, colortv, os);
- abort('Bad option -u bsys=N ?');
+if (bsys<0 || bsys>12 || colortv<0 || colortv>3 || os<=0 || os>16) {
+ write("Error: bad user input: bsys, colortv, os=\t", bsys, colortv, os);
+ abort("Bad option -u bsys=N ?");
}
int[] bNdot=
@@ -905,13 +1098,14 @@ int[] bNsh=
*
* resolution DPI from image aspect ratio
* Rv=Nv/ly, ly=4in
- * ri=Ni/Di, Ni={4,15,16} Di={3,11,9}
+ * ri=Ni/Di, Ni={ 4, 15, 16} Di={ 3, 11, 9}
* lx=ri*ly
*
* Rh=Nh/lx=Di*(Nh/(Ni*ly))
- * ==> ri=4/Di => Nh=k*16
- * ri=15/Di => Nh=k*60
- * ri=16/Di => Nh=k*64
+ * integer Rh:
+ * Ni=4 ri=4/Di => Nh=k*16
+ * Ni=15 ri=15/Di => Nh=k*60
+ * Ni=16 ri=16/Di => Nh=k*64
*
* resolution DPI from dot aspect ratio, general algorithm,
*
@@ -947,18 +1141,19 @@ Nv=bNv[bsys];
Ly=4; // 4 inch vertical size
m=floor(0.5+Nv/(Ly*Nd));
-if(m<1) m=1;
+if (m < 1) m=1;
ly=Nv/(m*Nd);
lx=Nh/(m*Dd);
ysize=ly*1inch;
xsize=lx*1inch;
rimage=xsize/ysize;
-if(verbose > 1)
- write('#Nd Dd m ri:\t', Nd, Dd, m, rimage);
-//size(xsize,ysize,Aspect); // should not have any effect
+if (verbose > 1) {
+ write("#Nd Dd m ri:\t", Nd, Dd, m, rimage);
+}
+//size(xsize, ysize, Aspect); // should not have any effect
-Nsy=bNsy[bsys]; // grating size in lines 42,43, 34,35
+Nsy=bNsy[bsys]; // grating size in lines 42,43 or 34,35
Nshift=bNsh[bsys]; // shift image up: pre 1997 =3, 2007 =0
fs=1e6*bfs[bsys]*os;
Na=0; // add 1,0,-1 to height of hor center squares for even Na+Nsy
@@ -970,21 +1165,25 @@ xd=xsize/Nh;
yd=ysize/Nv;
pwidth=min(abs(xd),abs(yd));
-pen pdefault=squarecap+linewidth(pwidth);
-pen pblack=pdefault+gray(0.0);
-pen pwhite=pdefault+gray(1.0);
+pen pdefault = squarecap+linewidth(pwidth);
+pen pblack = pdefault+gray(0.0);
+pen pwhite = pdefault+gray(1.0);
/**** calculate grating repeats and size in tv dots ****/
-// horizontal lines
-int divsy, rdisty, Nvc, Nt, Nb;
+/* horizontal lines */
+int divsy, rdisty, Nvc, Nt, Nb, rmaxi;
Nvc=floor(Nv/2)-Nshift;
-divsy=floor(((Nv-Na-2)/Nsy-1)/2); // (Nv-Na-2)/2-Nsy/2 dots for Nsy lengths
+/* top half picture (Nv-2)/2-(Nsy+Na)/2 dots for divisions of Nsy dots */
+divsy=floor(((Nv-2-Na)/Nsy-1)/2);
rdisty=Na+Nsy*(1+2*divsy);
+/* first guess free lines top and bottom */
Nt=Nvc-ceil(rdisty/2);
Nb=Nv-Nt-rdisty;
-if(verbose > 1)
- write('#divsy t b: \t',divsy,Nt,Nb);
+if (verbose > 1) {
+ write('#divsy t b: \t', divsy, Nt, Nb);
+}
+rmaxi=2*divsy+1;
/* Nsyc: center square height
* line pairing test: verify distance of center to top and bot
@@ -1000,9 +1199,10 @@ if(verbose > 1)
* rcrowc true center for color info, distance to top of image.
* rcrowb bot dist of hor line
*
- * Nt=Nvc-(offu+divsy*Nsy);
- * Nb=Nv-( Nvc-(offd-divsy*Nsy) );
- * ==> Nt+Nb=Nv-Nsyc-2*divsy*Nsy
+ * offd = offu-Nsyc
+ * Nt = Nvc-(offu+divsy*Nsy);
+ * Nb = Nv-( Nvc-(offd-divsy*Nsy) );
+ * ==> Nt+Nb = Nv-Nsyc-2*divsy*Nsy
*/
int Nsyc, offu, offd, Nyst=0, i;
int[] rcrowt, rcrowc, rcrowb;
@@ -1010,12 +1210,12 @@ int[] rcrowt, rcrowc, rcrowb;
Nsyc=Nsy+Na;
offu=floor(Nsyc/2);
offd=offu-Nsyc;
-if(Nsyc%2 != 0) {
+if (Nsyc%2 != 0) {
Nyst=1;
-} else if(Nsyc%4 == 0) {
+} else if (Nsyc%4 == 0) {
Nyst=1; /* stagger */
}
-for(i=0; i<=divsy; ++i) {
+for (i=0; i<=divsy; ++i) {
int iu, id, ou, od, ru, rd;
iu=divsy-i;
@@ -1023,8 +1223,9 @@ for(i=0; i<=divsy; ++i) {
ou=offu+Nsy*i;
od=offd-Nsy*i;
- if(verbose > 1)
+ if (verbose > 1) {
write(ou,od);
+ }
rcrowc[iu]=Nvc-ou;
rcrowc[id]=Nvc-od;
@@ -1039,30 +1240,71 @@ for(i=0; i<=divsy; ++i) {
}
Nt=floor((rcrowt[0]+rcrowb[0])/2);
Nb=Nv-Nt-Nsyc-2*Nsy*divsy;
-if(verbose > 1)
- write('#st t b: \t',Nyst,Nt,Nb);
+if (verbose > 1) {
+ write('#st t b: \t', Nyst, Nt, Nb);
+}
/* vertical lines
* (Nh-2*os)/2-Nsx/2 dots available for divisions of Nsx dots.
* At least 5 dots margin left and right ==> use -10*os
*/
-real lsq, Nsx;
-int divsx, Nhc, Nl;
+real lsq, Nsx, rdistx;
+int divsx, Nhc, Nl, Nr, cmaxi;
lsq=Nsy*yd;
-Nsx=lsq/xd;
+Nsx=lsq/xd; /* floating point */
divsx=floor(((Nh-10*os)/Nsx-1)/2);
Nhc=round(Nh/2);
-Nl=Nhc-round((1+2*divsx)*Nsx/2);
-if(verbose > 1)
- write('#Nsx divsx Nl:\t',Nsx,divsx,Nl);
+rdistx=(1+2*divsx)*Nsx;
+Nl=Nhc-round(rdistx/2);
+if (verbose > 1) {
+ write('#divsx Nsx l:\t', divsx, Nsx, Nl);
+}
+cmaxi=2*divsx+1;
+
+int[] coff, coffl, coffr;
+int[] rccoll, rccolc, rccolr;
+for (i=0; i<=divsx; ++i) {
+ int off, offl, offr, il, ir;
+ real cdist;
+
+ cdist=Nsx*(1+2*i); /* horizontal distance 2 symmetrical vert lines */
+ off=round(cdist/2);
+ // write(cdist, off);
+ offl=off-os;
+ offr=off+os;
+
+ coff[i]=off;
+ coffl[i]=offl;
+ coffr[i]=offr;
+
+ if (verbose > 1) {
+ write(cdist, off);
+ }
+ il=divsx-i;
+ ir=divsx+i+1;
+
+ rccoll[il]=Nhc-offr;
+ rccolc[il]=Nhc-off;
+ rccolr[il]=Nhc-offl;
+
+ rccoll[ir]=Nhc+offl;
+ rccolc[ir]=Nhc+off;
+ rccolr[ir]=Nhc+offr;
+}
+Nl=rccolc[0];
+Nr=Nh-rccolc[cmaxi];
+if (verbose > 1) {
+ write('#divsx Nsx l r:\t', divsx, Nsx, Nl, Nr);
+}
/**** draw gray background ****/
{
path zz;
+
//zz=tvrect(0,0, Nh,Nv, xd,yd,Nv);
/* keep white canvas for castellations */
- zz=tvrect(Nl,Nt, Nh-Nl,Nv-Nb, xd,yd,Nv);
+ zz=tvrect(rccoll[0],rcrowt[0], rccolr[cmaxi],rcrowb[rmaxi], xd,yd,Nv);
fill(zz, p=pdefault+gray(0.5));
//dot(zz);
}
@@ -1073,36 +1315,35 @@ path ccirc;
cx=Nh/2;
cy=Nv/2-Nshift;
crad=6*Nsy;
-if(Nv%2 != 0) {
- crad+=0.5;
+if (Nv%2 != 0) {
+ crad+=0.5;
}
ccenter=tvps(cx,cy, xd,yd,Nv);
ccirc=circle(ccenter, crad*yd);
-if(colortv<=0) {
+if (colortv<=0) {
draw(ccirc, p=pwhite+linewidth(2*yd));
}
-/****** draw 2*divsy+2 horizontal lines **********************************/
+/**** draw 2*divsy+2 horizontal gridlines ****/
real[] rcang, rcoff;
pair[] rcright, rcleft;
-int i, iend=2*divsy+1;
-for(i=0; i<=iend; ++i) {
- real y, phi, x;
+int i;
+for (i=0; i<=rmaxi; ++i) {
+ real y, ph, x;
path zzh;
pair zd;
- zzh=tvrect(0,rcrowt[i], Nh,rcrowb[i], xd,yd,Nv);
- fill(zzh, p=pwhite);
+ zzh=tvrect(0,rcrowt[i], Nh,rcrowb[i], xd,yd,Nv);
+ fill(zzh, p=pwhite);
y=cy-rcrowc[i];
- //write(roff);
- if(abs(y)<crad) {
- phi=asin(y/crad);
+ if (abs(y)<crad) {
+ ph=asin(y/crad);
} else {
- phi=pi/2;
+ ph=pi/2;
}
- rcang[i]=phi;
- x=(crad*cos(phi))*yd/xd;
+ rcang[i]=ph;
+ x=(crad*cos(ph))*yd/xd;
rcoff[i]=x;
zd=tvps(cx+x,cy-y, xd,yd,Nv);
rcright[i]=zd;
@@ -1111,109 +1352,31 @@ for(i=0; i<=iend; ++i) {
rcleft[i]=zd;
}
-/****** draw 2*divsx+2 vertical lines ***************************/
-int[] coff, coffa, coffb;
-int poffa=0, ccenterwhite=divsx%2;
-for(i=0; i<=divsx; ++i) {
- real cdist=(1+2*i)*Nsx;
- int off, offa, offb;
+/**** draw 2*divsx+2 vertical gridlines ****/
+for (i=0; i<=cmaxi; ++i) {
path zzv;
-
- off=round(cdist/2);
- //write(cdist,off);
- offa=off+os;
- offb=off-os;
-
- coff[i]=off;
- coffa[i]=offa;
- coffb[i]=offb;
-
- //write(Nhc-offa);
- zzv=tvrect(Nhc+offb,0, Nhc+offa,Nv, xd,yd,Nv);
+ zzv=tvrect(rccoll[i],0, rccolr[i],Nv, xd,yd,Nv);
fill(zzv, p=pwhite);
- zzv=tvrect(Nhc-offa,0, Nhc-offb,Nv, xd,yd,Nv);
- fill(zzv, p=pwhite);
-
- /** top castellations, must end with black **/
- if(i%2 == ccenterwhite) {
- int j, jnum;
-
- if(poffa == 0) {
- poffa=-offb;
- jnum=1;
- } else {
- jnum=2;
- }
-
- for(j=0; j<jnum; ++j) {
- int lc, rc;
- path zzc;
-
- if(j==0) {
- lc=Nhc+poffa;
- rc=Nhc+offb;
- } else {
- lc=Nhc-offb;
- rc=Nhc-poffa;
- }
-
- zzc=tvrect(lc,0, rc,Nt-1, xd,yd,Nv);
- fill(zzc, p=pblack);
- zzc=tvrect(lc,Nv-Nb+1, rc,Nv, xd,yd,Nv);
- fill(zzc, p=pblack);
- }
- }
-
- poffa=offa;
}
-//write(coff);
-/** left and right castellations **/
-/* The bottom right red rectangle tests for a non causal color FIR
- * filter in the receiver. The last 2..4 dots then typically appear
- * colorless, green, or cyan.
- *
- * This comes from the fact that the chroma subcarrier is of lower
- * bandwidth than luma and thus continues after the last active sample.
- * These trailing (y,u,v) samples result from a signal to zero
- * transition and depend on the transmit and receive filters. Samples
- * from VHS, system B/G/D/K, system I, or a DVD player output are
- * different. Nevertheless, a sharpening filter uses this data and so
- * adds false color to the last dots.
- */
-int lc, rc;
-iend=2*divsy+1;
-lc=Nhc-coffa[divsx];
-rc=Nhc+coffa[divsx];
-for(i=1; i<=iend; ++i) {
- pen pcast;
- if(i == iend && colortv>0) {
- pcast=pdefault+rgb(0.75,0.0,0);
- } else {
- pcast=pblack;
- }
- if(i%2 == 1) {
- int tr, br;
- path zzc;
-
- tr=rcrowb[i-1];
- br=rcrowt[i];
- zzc=tvrect( 0,tr, lc,br, xd,yd,Nv);
- fill(zzc, p=pblack);
- zzc=tvrect(rc,tr, Nh,br, xd,yd,Nv);
- fill(zzc, p=pcast);
- }
-}
+/**** castellations ****/
+castelhor(colortv, rccoll, rccolr, cmaxi, Nh, rcrowt[0], rcrowb[rmaxi],
+ pdefault, xd, yd, Nv);
+
+castelver(colortv, rccoll[0], rccolr[cmaxi], Nh, rcrowb, rcrowt, rmaxi,
+ pdefault, xd, yd, Nv);
/****** markers for 4/3 aspect ratio ******/
-if(rimage>4/3)
+if (rimage>4/3) {
rimarkers(rimage, Nh, Nhc, os, Nvc, Nsy, pwhite, xd, yd, Nv);
+}
/****** line pairing center ******/
-centerline(coff, coffa, coffb, Nhc, divsx, os, rcrowc, Nvc, divsy,
+centerline(colortv, rccoll, rccolc, rccolr, divsx, Nhc, os,
+ rcrowt, rcrowc, rcrowb, divsy, Nvc,
ccenter, rcoff, rcright, rcleft, pdefault, xd, yd, Nv);
-if(colortv>0) {
+if (colortv>0) {
/* topbw structure */
topbw(coff, Nhc, os, rcrowc[divsy-5], rcrowc[divsy-4], rcrowc[divsy-3],
ccenter, rcleft[divsy-4], rcleft[divsy-3], rcright[divsy-4],
@@ -1239,19 +1402,19 @@ if(colortv>0) {
rcright[divsy+3], rcright[divsy+4], pdefault, xd,yd,Nv);
/* PAL ears */
- if(colortv==1) {
- palears(coff,coffa,coffb, Nhc, rcrowt, rcrowb, Nvc, divsy, -1,
+ if (colortv == 1) {
+ palears(coff,coffr,coffl, Nhc, rcrowt, rcrowb, Nvc, divsy, -1,
pdefault, xd, yd, Nv);
- palears(coff,coffa,coffb, Nhc, rcrowt, rcrowb, Nvc, divsy, 1,
+ palears(coff,coffr,coffl, Nhc, rcrowt, rcrowb, Nvc, divsy, 1,
pdefault, xd, yd, Nv);
- } else if(colortv==2) {
- ntscbars(coff,coffa,coffb, Nhc, rcrowt, rcrowb, Nvc, divsy, -1,
+ } else if (colortv == 2) {
+ ntscbars(rccoll, rccolr, divsx, rcrowt, rcrowb, divsy, -1,
pdefault, xd, yd, Nv);
- ntscbars(coff,coffa,coffb, Nhc, rcrowt, rcrowb, Nvc, divsy, 1,
+ ntscbars(rccoll, rccolr, divsx, rcrowt, rcrowb, divsy, 1,
pdefault, xd, yd, Nv);
- ntscbars(coff,coffa,coffb, Nhc, rcrowt, rcrowb, Nvc, divsy, -2,
+ ntscbars(rccoll, rccolr, divsx, rcrowt, rcrowb, divsy, -2,
pdefault, xd, yd, Nv);
- ntscbars(coff,coffa,coffb, Nhc, rcrowt, rcrowb, Nvc, divsy, 2,
+ ntscbars(rccoll, rccolr, divsx, rcrowt, rcrowb, divsy, 2,
pdefault, xd, yd, Nv);
}
@@ -1294,20 +1457,24 @@ if(colortv>0) {
itot=insert(ifm,0, itot);
/* size of square */
- int rowNsy=round((rcrowc[divsy+5]+rcrowc[divsy+6])/2);
- pair Npos=tvps(Nhc+round((coff[4]+coff[5])/2),rowNsy, xd,yd,Nv);
- string iNsy=format("%i",Nsy);
-
+ int rowNsy, colNsy;
+ pair Npos;
+ string iNsy;
pen pbw;
- if(colortv>0) {
- pbw=pdefault+gray(1.0);
+
+ rowNsy = round((rcrowc[divsy+5]+rcrowc[divsy+6])/2);
+ colNsy = round((rccolc[divsx+5]+rccolc[divsx+6])/2);
+ Npos = tvps(colNsy,rowNsy, xd,yd,Nv);
+ iNsy = format("%i", Nsy);
+
+ if (colortv>0) {
+ pbw=pdefault+gray(1.0);
} else {
- pbw=pdefault+gray(0.0);
+ pbw=pdefault+gray(0.0);
}
label(ires, rpos, p=pbw);
label(itot, tpos, p=pbw);
label(iNsy, Npos, p=pbw);
- if(verbose > 1)
+ if (verbose > 1)
write('#res:\t', ires, itot, iNsy);
}
-
diff --git a/Build/source/utils/asymptote/fftw++.cc b/Build/source/utils/asymptote/fftw++.cc
index 77a1dabb704..d055639a6d0 100644
--- a/Build/source/utils/asymptote/fftw++.cc
+++ b/Build/source/utils/asymptote/fftw++.cc
@@ -1,23 +1,29 @@
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#ifdef HAVE_LIBFFTW3
#include "fftw++.h"
namespace fftwpp {
-std::ifstream fftw::ifWisdom;
-std::ofstream fftw::ofWisdom;
bool fftw::Wise=false;
+bool fftw::autothreads=true;
const double fftw::twopi=2.0*acos(-1.0);
-unsigned int fftw::maxthreads=1;
-double fftw::testseconds=0.1; // Time limit for threading efficiency tests
// User settings:
unsigned int fftw::effort=FFTW_MEASURE;
-const char *fftw::WisdomName=".wisdom";
+const char *WisdomName="wisdom3.txt";
+unsigned int fftw::maxthreads=1;
+double fftw::testseconds=0.1; // Time limit for threading efficiency tests
+void fftw::LoadWisdom() {
+ std::ifstream ifWisdom;
+ ifWisdom.open(WisdomName);
+ fftwpp_import_wisdom(GetWisdom,ifWisdom);
+ ifWisdom.close();
}
-#endif
+void fftw::SaveWisdom() {
+ std::ofstream ofWisdom;
+ ofWisdom.open(WisdomName);
+ fftwpp_export_wisdom(PutWisdom,ofWisdom);
+ ofWisdom.close();
+}
+
+}
diff --git a/Build/source/utils/asymptote/fftw++.h b/Build/source/utils/asymptote/fftw++.h
index be68c899290..addb91cff05 100644
--- a/Build/source/utils/asymptote/fftw++.h
+++ b/Build/source/utils/asymptote/fftw++.h
@@ -18,7 +18,7 @@
#ifndef __fftwpp_h__
#define __fftwpp_h__ 1
-#define __FFTWPP_H_VERSION__ 1.12
+#define __FFTWPP_H_VERSION__ 1.14
#include <cstdlib>
#include <fstream>
@@ -30,21 +30,21 @@
#include <omp.h>
#endif
-inline int get_max_threads()
+inline int get_thread_num()
{
#ifdef FFTWPP_SINGLE_THREAD
- return 1;
+ return 0;
#else
- return omp_get_max_threads();
+ return omp_get_thread_num();
#endif
}
-inline int get_thread_num()
+inline int get_max_threads()
{
#ifdef FFTWPP_SINGLE_THREAD
- return 0;
+ return 1;
#else
- return omp_get_thread_num();
+ return omp_get_max_threads();
#endif
}
@@ -198,7 +198,7 @@ protected:
fftw_plan plan;
bool inplace;
- unsigned int Dist(unsigned int n, unsigned int stride, unsigned int dist) {
+ unsigned int Dist(unsigned int n, size_t stride, size_t dist) {
return dist ? dist : ((stride == 1) ? n : 1);
}
@@ -214,13 +214,12 @@ protected:
return realsize(n,(Complex *) in,out);
}
- static std::ifstream ifWisdom;
- static std::ofstream ofWisdom;
static bool Wise;
static const double twopi;
unsigned int threads;
public:
+ static unsigned int effort;
static unsigned int maxthreads;
static double testseconds;
@@ -296,18 +295,15 @@ public:
}
}
- static unsigned int effort;
- static const char *WisdomName;
-
+ static bool autothreads;
fftw(unsigned int doubles, int sign, unsigned int n=0) :
doubles(doubles), sign(sign), norm(1.0/(n ? n : (doubles+1)/2)),
plan(NULL) {
- static bool initialize=true;
- if(initialize) {
+ if(autothreads) {
#ifndef FFTWPP_SINGLE_THREAD
fftw_init_threads();
#endif
- initialize=false;
+ autothreads=false;
}
}
@@ -330,6 +326,13 @@ public:
exit(1);
}
+ void planThreads(unsigned int threads) {
+#ifndef FFTWPP_SINGLE_THREAD
+ omp_set_num_threads(threads);
+ fftw_plan_with_nthreads(threads);
+#endif
+ }
+
void Setup(Complex *in, Complex *out=NULL) {
if(!Wise) LoadWisdom();
bool alloc=!in;
@@ -343,48 +346,53 @@ public:
#endif
inplace=(out==in);
-#ifndef FFTWPP_SINGLE_THREAD
- fftw_plan_with_nthreads(1);
-#endif
+ planThreads(1);
fftw_plan plan1=Plan(in,out);
if(!plan1) noplan();
plan=plan1;
if(maxthreads > 1) {
- double sum=0.0;
double sum2=0.0;
unsigned int N=1;
- const unsigned int microseconds=1000000;
- unsigned int limit=(int) (testseconds*microseconds);
- for(; N < limit; ++N) {
- seconds();
+ double begin=totalseconds();
+ double lastseconds=begin;
+ double stop=begin+testseconds;
+ for(;;++N) {
fft(in,out);
- double t=seconds();
- sum += t;
- sum2 += t*t;
- if(sum > testseconds)
+ double t=totalseconds();
+ double seconds=t-lastseconds;
+ sum2 += seconds*seconds;
+ lastseconds=t;
+ if(t > stop)
break;
}
+
+ double end=totalseconds();
+ double sum=end-begin;
double mean1=sum/N;
double stdev1=stdev(N,sum,sum2);
- threads=get_max_threads();
- if(maxthreads > threads) maxthreads=threads;
-#ifndef FFTWPP_SINGLE_THREAD
- fftw_plan_with_nthreads(maxthreads);
-#endif
+ threads=maxthreads;
+ planThreads(threads);
plan=Plan(in,out);
if(!plan) noplan();
if(plan) {
- sum=0.0;
- seconds();
- for(unsigned int i=1; i <= N; ++i) {
- seconds();
+ double begin=totalseconds();
+ double lastseconds=begin;
+ double stop=begin+testseconds;
+ N=1;
+ for(;;++N) {
fft(in,out);
- double t=seconds();
- sum += t;
+ double t=totalseconds();
+ double seconds=t-lastseconds;
+ sum2 += seconds*seconds;
+ lastseconds=t;
+ if(t > stop)
+ break;
}
+ double end=totalseconds();
+ double sum=end-begin;
double mean2=sum/N;
if(mean2 > mean1-stdev1) {
@@ -406,18 +414,8 @@ public:
void Setup(Complex *in, double *out) {Setup(in,(Complex *) out);}
void Setup(double *in, Complex *out=NULL) {Setup((Complex *) in,out);}
- void LoadWisdom() {
- ifWisdom.open(WisdomName);
- fftwpp_import_wisdom(GetWisdom,ifWisdom);
- ifWisdom.close();
- Wise=true;
- }
-
- void SaveWisdom() {
- ofWisdom.open(WisdomName);
- fftwpp_export_wisdom(PutWisdom,ofWisdom);
- ofWisdom.close();
- }
+ void LoadWisdom();
+ void SaveWisdom();
virtual void Execute(Complex *in, Complex *out, bool=false) {
fftw_execute_dft(plan,(fftw_complex *) in,(fftw_complex *) out);
@@ -507,7 +505,7 @@ public:
void fftNormalized(Complex *in, Complex *out,
unsigned int nx, unsigned int M,
- unsigned int stride, unsigned int dist) {
+ size_t stride, size_t dist) {
if(stride == 1 && dist == nx) fftw::fftNormalized(in,out);
else if(stride == nx && dist == 1) fftw::fftNormalized(in,out);
else {
@@ -590,11 +588,11 @@ public:
class mfft1d : public fftw {
unsigned int nx;
unsigned int M;
- unsigned int stride;
- unsigned int dist;
+ size_t stride;
+ size_t dist;
public:
- mfft1d(unsigned int nx, int sign, unsigned int M=1, unsigned int stride=1,
- unsigned int dist=0, Complex *in=NULL, Complex *out=NULL)
+ mfft1d(unsigned int nx, int sign, unsigned int M=1, size_t stride=1,
+ size_t dist=0, Complex *in=NULL, Complex *out=NULL)
: fftw(2*((nx-1)*stride+(M-1)*Dist(nx,stride,dist)+1),sign,nx),
nx(nx), M(M), stride(stride), dist(Dist(nx,stride,dist))
{Setup(in,out);}
@@ -734,16 +732,16 @@ public:
class mrcfft1d : public fftw {
unsigned int nx;
unsigned int M;
- unsigned int stride;
- unsigned int dist;
+ size_t stride;
+ size_t dist;
public:
- mrcfft1d(unsigned int nx, unsigned int M=1, unsigned int stride=1,
- unsigned int dist=0, Complex *out=NULL)
+ mrcfft1d(unsigned int nx, unsigned int M=1, size_t stride=1,
+ size_t dist=0, Complex *out=NULL)
: fftw(2*(nx/2*stride+(M-1)*Dist(nx,stride,dist)+1),-1,nx), nx(nx), M(M),
stride(stride), dist(Dist(nx,stride,dist)) {Setup(out);}
- mrcfft1d(unsigned int nx, unsigned int M=1, unsigned int stride=1,
- unsigned int dist=0, double *in=NULL, Complex *out=NULL)
+ mrcfft1d(unsigned int nx, unsigned int M=1, size_t stride=1,
+ size_t dist=0, double *in=NULL, Complex *out=NULL)
: fftw(2*(nx/2*stride+(M-1)*Dist(nx,stride,dist)+1),-1,nx), nx(nx), M(M),
stride(stride), dist(Dist(nx,stride,dist)) {Setup(in,out);}
@@ -790,11 +788,11 @@ public:
class mcrfft1d : public fftw {
unsigned int nx;
unsigned int M;
- unsigned int stride;
- unsigned int dist;
+ size_t stride;
+ size_t dist;
public:
- mcrfft1d(unsigned int nx, unsigned int M=1, unsigned int stride=1,
- unsigned int dist=0, Complex *in=NULL, double *out=NULL)
+ mcrfft1d(unsigned int nx, unsigned int M=1, size_t stride=1,
+ size_t dist=0, Complex *in=NULL, double *out=NULL)
: fftw((realsize(nx,in,out)-2)*stride+2*(M-1)*Dist(nx,stride,dist)+2,1,nx),
nx(nx), M(M), stride(stride), dist(Dist(nx,stride,dist)) {Setup(in,out);}
diff --git a/Build/source/utils/asymptote/glrender.cc b/Build/source/utils/asymptote/glrender.cc
index 22486129110..824ecc6e07a 100644
--- a/Build/source/utils/asymptote/glrender.cc
+++ b/Build/source/utils/asymptote/glrender.cc
@@ -871,7 +871,6 @@ void rotateZ(int x, int y)
if(x > 0 && y > 0) {
if(Menu) {
disableMenu();
- x=x0; y=y0;
return;
}
Motion=true;
diff --git a/Build/source/utils/asymptote/interact.cc b/Build/source/utils/asymptote/interact.cc
index 2a6c37e8811..51373077fcf 100644
--- a/Build/source/utils/asymptote/interact.cc
+++ b/Build/source/utils/asymptote/interact.cc
@@ -85,10 +85,20 @@ FILE *fin=NULL;
char *readpipeline(const char *prompt)
{
+ const int max_size=256;
+ static char buf[max_size];
+ ostringstream s;
+ do {
+ if(fgets(buf,max_size-1,fin) == NULL) break;
+ s << buf;
+ } while(buf[strlen(buf)-1] != '\n');
+ return StrdupMalloc(s.str());
+ /* Simpler version (requires POSIX 2008; temporarily removed for TeXLive 2013):
char *line=NULL;
size_t n;
n=getline(&line,&n,fin);
return line;
+ */
}
void pre_readline()
diff --git a/Build/source/utils/asymptote/lex.yy.cc b/Build/source/utils/asymptote/lex.yy.cc
index da266207e7b..b59638f36b0 100644
--- a/Build/source/utils/asymptote/lex.yy.cc
+++ b/Build/source/utils/asymptote/lex.yy.cc
@@ -18,7 +18,7 @@
#define FLEX_SCANNER
#define YY_FLEX_MAJOR_VERSION 2
#define YY_FLEX_MINOR_VERSION 5
-#define YY_FLEX_SUBMINOR_VERSION 35
+#define YY_FLEX_SUBMINOR_VERSION 36
#if YY_FLEX_SUBMINOR_VERSION > 0
#define FLEX_BETA
#endif
@@ -79,7 +79,6 @@ typedef int flex_int32_t;
typedef unsigned char flex_uint8_t;
typedef unsigned short int flex_uint16_t;
typedef unsigned int flex_uint32_t;
-#endif /* ! C99 */
/* Limits of integral types. */
#ifndef INT8_MIN
@@ -110,6 +109,8 @@ typedef unsigned int flex_uint32_t;
#define UINT32_MAX (4294967295U)
#endif
+#endif /* ! C99 */
+
#endif /* ! FLEXINT_H */
/* %endif */
@@ -196,8 +197,13 @@ typedef unsigned int flex_uint32_t;
typedef struct yy_buffer_state *YY_BUFFER_STATE;
#endif
+#ifndef YY_TYPEDEF_YY_SIZE_T
+#define YY_TYPEDEF_YY_SIZE_T
+typedef size_t yy_size_t;
+#endif
+
/* %if-not-reentrant */
-extern int yyleng;
+extern yy_size_t yyleng;
/* %endif */
/* %if-c-only */
@@ -228,11 +234,6 @@ extern FILE *yyin, *yyout;
#define unput(c) yyunput( c, (yytext_ptr) )
-#ifndef YY_TYPEDEF_YY_SIZE_T
-#define YY_TYPEDEF_YY_SIZE_T
-typedef size_t yy_size_t;
-#endif
-
#ifndef YY_STRUCT_YY_BUFFER_STATE
#define YY_STRUCT_YY_BUFFER_STATE
struct yy_buffer_state
@@ -255,7 +256,7 @@ struct yy_buffer_state
/* Number of characters read into yy_ch_buf, not including EOB
* characters.
*/
- int yy_n_chars;
+ yy_size_t yy_n_chars;
/* Whether we "own" the buffer - i.e., we know we created it,
* and can realloc() it to grow it, and should free() it to
@@ -339,8 +340,8 @@ static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
/* yy_hold_char holds the character lost when yytext is formed. */
static char yy_hold_char;
-static int yy_n_chars; /* number of characters read into yy_ch_buf */
-int yyleng;
+static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */
+yy_size_t yyleng;
/* Points to current character in buffer. */
static char *yy_c_buf_p = (char *) 0;
@@ -371,7 +372,7 @@ static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file );
YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size );
YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str );
-YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len );
+YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len );
/* %endif */
@@ -992,7 +993,7 @@ void getstring(void)
-#line 996 "lex.yy.cc"
+#line 997 "lex.yy.cc"
#define INITIAL 0
#define lexcomment 1
@@ -1049,7 +1050,7 @@ FILE *yyget_out (void );
void yyset_out (FILE * out_str );
-int yyget_leng (void );
+yy_size_t yyget_leng (void );
char *yyget_text (void );
@@ -1132,7 +1133,7 @@ static int input (void );
if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
{ \
int c = '*'; \
- unsigned n; \
+ size_t n; \
for ( n = 0; n < max_size && \
(c = getc( yyin )) != EOF && c != '\n'; ++n ) \
buf[n] = (char) c; \
@@ -1242,7 +1243,7 @@ YY_DECL
#line 209 "camp.l"
-#line 1246 "lex.yy.cc"
+#line 1247 "lex.yy.cc"
if ( !(yy_init) )
{
@@ -1724,7 +1725,7 @@ YY_RULE_SETUP
case 59:
YY_RULE_SETUP
#line 328 "camp.l"
-{DEFSYMBOL(SYM_LOGNOT); return LOGNOT; }
+{DEFSYMBOL(SYM_LOGNOT); return OPERATOR; }
YY_BREAK
case 60:
YY_RULE_SETUP
@@ -2091,7 +2092,7 @@ YY_RULE_SETUP
#line 443 "camp.l"
ECHO;
YY_BREAK
-#line 2095 "lex.yy.cc"
+#line 2096 "lex.yy.cc"
case YY_END_OF_BUFFER:
{
@@ -2288,21 +2289,21 @@ static int yy_get_next_buffer (void)
else
{
- int num_to_read =
+ yy_size_t num_to_read =
YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
while ( num_to_read <= 0 )
{ /* Not enough room in the buffer - grow it. */
/* just a shorter name for the current buffer */
- YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
+ YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
int yy_c_buf_p_offset =
(int) ((yy_c_buf_p) - b->yy_ch_buf);
if ( b->yy_is_our_buffer )
{
- int new_size = b->yy_buf_size * 2;
+ yy_size_t new_size = b->yy_buf_size * 2;
if ( new_size <= 0 )
b->yy_buf_size += b->yy_buf_size / 8;
@@ -2333,7 +2334,7 @@ static int yy_get_next_buffer (void)
/* Read in more data. */
YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
- (yy_n_chars), (size_t) num_to_read );
+ (yy_n_chars), num_to_read );
YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
}
@@ -2441,7 +2442,7 @@ static int yy_get_next_buffer (void)
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
yy_is_jam = (yy_current_state == 334);
- return yy_is_jam ? 0 : yy_current_state;
+ return yy_is_jam ? 0 : yy_current_state;
}
/* %if-c-only */
@@ -2461,7 +2462,7 @@ static int yy_get_next_buffer (void)
if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
{ /* need to shift things up to make room */
/* +2 for EOB chars. */
- register int number_to_move = (yy_n_chars) + 2;
+ register yy_size_t number_to_move = (yy_n_chars) + 2;
register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
register char *source =
@@ -2519,7 +2520,7 @@ static int yy_get_next_buffer (void)
else
{ /* need more input */
- int offset = (yy_c_buf_p) - (yytext_ptr);
+ yy_size_t offset = (yy_c_buf_p) - (yytext_ptr);
++(yy_c_buf_p);
switch ( yy_get_next_buffer( ) )
@@ -2703,17 +2704,6 @@ static void yy_load_buffer_state (void)
yyfree((void *) b );
}
-/* %if-c-only */
-
-#ifndef __cplusplus
-extern int isatty (int );
-#endif /* __cplusplus */
-
-/* %endif */
-
-/* %if-c++-only */
-/* %endif */
-
/* Initializes or reinitializes a buffer.
* This function is sometimes called more than once on the same buffer,
* such as during a yyrestart() or at EOF.
@@ -2856,7 +2846,7 @@ static void yyensure_buffer_stack (void)
/* %if-c++-only */
/* %endif */
{
- int num_to_alloc;
+ yy_size_t num_to_alloc;
if (!(yy_buffer_stack)) {
@@ -2954,12 +2944,12 @@ YY_BUFFER_STATE yy_scan_string (yyconst char * yystr )
/* %if-c-only */
/** Setup the input buffer state to scan the given bytes. The next call to yylex() will
* scan from a @e copy of @a bytes.
- * @param bytes the byte buffer to scan
- * @param len the number of bytes in the buffer pointed to by @a bytes.
+ * @param yybytes the byte buffer to scan
+ * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
*
* @return the newly allocated buffer state object.
*/
-YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len )
+YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len )
{
YY_BUFFER_STATE b;
char *buf;
@@ -3055,7 +3045,7 @@ FILE *yyget_out (void)
/** Get the length of the current token.
*
*/
-int yyget_leng (void)
+yy_size_t yyget_leng (void)
{
return yyleng;
}
diff --git a/Build/source/utils/asymptote/picture.cc b/Build/source/utils/asymptote/picture.cc
index 6ac8be8dcfc..8be37dc013d 100644
--- a/Build/source/utils/asymptote/picture.cc
+++ b/Build/source/utils/asymptote/picture.cc
@@ -47,10 +47,10 @@ namespace camp {
bool isIdTransform3(const double* t)
{
- return (t == NULL || (t[0]==1 && t[4]==0 && t[ 8]==0 && t[12]==0 &&
- t[1]==0 && t[5]==1 && t[ 9]==0 && t[13]==0 &&
- t[2]==0 && t[6]==0 && t[10]==1 && t[14]==0 &&
- t[3]==0 && t[7]==0 && t[11]==0 && t[15]==1));
+ return (t == NULL || (t[0]==1 && t[1]==0 && t[2]==0 && t[3]==0 &&
+ t[4]==0 && t[5]==1 && t[6]==0 && t[7]==0 &&
+ t[8]==0 && t[9]==0 && t[10]==1 && t[11]==0 &&
+ t[12]==0 && t[13]==0 && t[14]==0 && t[15]==1));
}
// copy array to 4x4 transform matrix with range checks
@@ -64,47 +64,48 @@ void copyArray4x4C(double*& dest, const vm::array *a)
for(size_t i=0; i < 4; i++) {
const vm::array *ai=vm::read<vm::array*>(a,i);
const size_t aisize=checkArray(ai);
+ double *tti=tt+4*i;
if(aisize == 4) {
for(size_t j=0; j < 4; j++)
- tt[i+j*4]=vm::read<double>(ai,j);
+ tti[j]=vm::read<double>(ai,j);
} else reportError(fourbyfour);
}
copyTransform3(dest,tt);
}
-void copyTransform3(double*& d, const double* s)
+void copyTransform3(double*& d, const double* s, GCPlacement placement)
+
{
- if(isIdTransform3(s)) {
- d=NULL;
- }
- else {
- if (d == NULL)
- d=new(UseGC) double[16];
+ if(!isIdTransform3(s) || d != NULL) {
+ if(d == NULL)
+ d=placement == NoGC ? new double[16] : new(placement) double[16];
memcpy(d,s,sizeof(double)*16);
}
}
// t = s*r
-void multiplyTransform3(double*& t, const double* s, const double* r )
+void multiplyTransform3(double*& t, const double* s, const double* r)
{
if(isIdTransform3(s)) {
copyTransform3(t, r);
} else if(isIdTransform3(r)) {
copyTransform3(t, s);
} else {
- double tt[16];
+ t=new(UseGC) double[16];
for(size_t i=0; i < 4; i++) {
- const double& s0=s[i+0];
- const double& s1=s[i+4];
- const double& s2=s[i+8];
- const double& s3=s[i+12];
- tt[i]=s0*r[0]+s1*r[1]+s2*r[2]+s3*r[3];
- tt[i+4]=s0*r[4]+s1*r[5]+s2*r[6]+s3*r[7];
- tt[i+8]=s0*r[8]+s1*r[9]+s2*r[10]+s3*r[11];
- tt[i+12]=s0*r[12]+s1*r[13]+s2*r[14]+s3*r[15];
+ size_t i4=4*i;
+ const double *si=s+i4;
+ const double& s0=si[0];
+ const double& s1=si[1];
+ const double& s2=si[2];
+ const double& s3=si[3];
+ double *ti=t+i4;
+ ti[0]=s0*r[0]+s1*r[4]+s2*r[8]+s3*r[12];
+ ti[1]=s0*r[1]+s1*r[5]+s2*r[9]+s3*r[13];
+ ti[2]=s0*r[2]+s1*r[6]+s2*r[10]+s3*r[14];
+ ti[3]=s0*r[3]+s1*r[7]+s2*r[11]+s3*r[15];
}
- copyTransform3(t,tt);
}
}
@@ -113,81 +114,32 @@ void transformTriples(const double* t, size_t n, Triple* d, const Triple* s)
if(n == 0 || s == NULL || d == NULL)
return;
- if(isIdTransform3(t)) {
- copyTriples(n, d, s);
- return;
- }
- for(size_t i=0; i < n; i++) {
- const double& x = s[i][0];
- const double& y = s[i][1];
- const double& z = s[i][2];
- double f=t[3]*x+t[7]*y+t[11]*z+t[15];
- if(f == 0.0)
- reportError("division by 0 in transformTriples");
- f=1.0/f;
- d[i][0]=(t[0]*x+t[4]*y+t[8]*z+t[12])*f;
- d[i][1]=(t[1]*x+t[5]*y+t[9]*z+t[13])*f;
- d[i][2]=(t[2]*x+t[6]*y+t[10]*z+t[14])*f;
- }
-}
-
-void transformshiftlessTriples(const double* t, size_t n, Triple* d,
- const Triple* s)
-{
- if(n == 0 || s == NULL || d == NULL)
- return;
-
- if(isIdTransform3(t)) {
- copyTriples(n, d, s);
- return;
- }
for(size_t i=0; i < n; i++) {
- const double& x=s[i][0];
- const double& y=s[i][1];
- const double& z=s[i][2];
- double f=t[3]*x+t[7]*y+t[11]*z+t[15];
- if(f == 0.0)
- reportError("division by 0 in transformshiftlessTriples");
- f=1.0/f;
- d[i][0]=(t[0]*x+t[4]*y+t[8]*z)*f;
- d[i][1]=(t[1]*x+t[5]*y+t[9]*z)*f;
- d[i][2]=(t[2]*x+t[6]*y+t[10]*z)*f;
+ const double *si=s[i];
+ triple v=t*triple(si[0],si[1],si[2]);
+ double *di=d[i];
+ di[0]=v.getx();
+ di[1]=v.gety();
+ di[2]=v.getz();
}
}
void transformNormalsTriples(const double* t, size_t n, Triple* d,
const Triple* s)
{
- if(n==0 || s==NULL || d==NULL)
+ if(n == 0 || s == NULL || d == NULL)
return;
- if(isIdTransform3(t)) {
- copyTriples(n, d, s);
- return;
- }
for(size_t i=0; i < n; i++) {
- const double& x = s[i][0];
- const double& y = s[i][1];
- const double& z = s[i][2];
- double& X = d[i][0];
- double& Y = d[i][1];
- double& Z = d[i][2];
- double f=t[3]*x+t[7]*y+t[11]*z+t[15];
- if(f == 0.0)
- reportError("division by 0 in transformNormalsTriples");
- f=1.0/f;
- X=(t[0]*x+t[4]*y+t[8]*z)*f;
- Y=(t[1]*x+t[5]*y+t[9]*z)*f;
- Z=(t[2]*x+t[6]*y+t[10]*z)*f;
- const double scale=sqrt(X*X+Y*Y+Z*Z);
- if(scale != 0.0) {
- X /= scale;
- Y /= scale;
- Z /= scale;
- }
+ const double *si=s[i];
+ triple v=transformNormal(t,triple(si[0],si[1],si[2]));
+ double *di=d[i];
+ di[0]=v.getx();
+ di[1]=v.gety();
+ di[2]=v.getz();
}
}
-
+
void unitTriples(size_t n, Triple* d)
{
for (size_t i=0; i < n; i++) {
@@ -515,12 +467,7 @@ void texinit()
mem::vector<string> cmd;
cmd.push_back(texprogram());
if(context) {
- // Create a null texput.tex file as a portable way of tricking ConTeXt
- // into entering interactive mode (pending the implementation of --pipe).
- string texput="texput.tex";
- ofstream(texput.c_str());
- cmd.push_back("--scrollmode");
- cmd.push_back(texput);
+ cmd.push_back("--pipe");
} else {
if(!dir.empty())
cmd.push_back("-output-directory="+dir.substr(0,dir.length()-1));
@@ -1436,7 +1383,7 @@ picture *picture::transformed(const array& t)
{
picture *pic = new picture;
double* T=NULL;
- copyArray4x4C(T, &t);
+ copyArray4x4C(T,&t);
size_t level = 0;
for (nodelist::iterator p = nodes.begin(); p != nodes.end(); ++p) {
assert(*p);
diff --git a/Build/source/utils/asymptote/prc/oPRCFile.cc b/Build/source/utils/asymptote/prc/oPRCFile.cc
index 10f9431652c..9724d0735f1 100644
--- a/Build/source/utils/asymptote/prc/oPRCFile.cc
+++ b/Build/source/utils/asymptote/prc/oPRCFile.cc
@@ -1251,8 +1251,8 @@ uint32_t oPRCFile::addTransform(PRCGeneralTransformation3d*& transform)
return pTransform->second;
PRCCoordinateSystem *coordinateSystem = new PRCCoordinateSystem();
bool transform_replaced = false;
- if( transform->M(0,1)==0 && transform->M(0,2)==0 &&
- transform->M(1,0)==0 && transform->M(1,2)==0 &&
+ if( transform->M(0,1)==0 && transform->M(0,2)==0 &&
+ transform->M(1,0)==0 && transform->M(1,2)==0 &&
transform->M(2,0)==0 && transform->M(2,1)==0 &&
transform->M(3,0)==0 && transform->M(3,1)==0 && transform->M(3,2)==0 && transform->M(3,3)==1 )
{
@@ -1417,10 +1417,10 @@ uint32_t oPRCFile::addMaterial(const PRCmaterial& m)
bool isid(const double* t)
{
return(
- t[0]==1 && t[4]==0 && t[ 8]==0 && t[12]==0 &&
- t[1]==0 && t[5]==1 && t[ 9]==0 && t[13]==0 &&
- t[2]==0 && t[6]==0 && t[10]==1 && t[14]==0 &&
- t[3]==0 && t[7]==0 && t[11]==0 && t[15]==1 );
+ t[0]==1 && t[1]==0 && t[2]==0 && t[3]==0 &&
+ t[4]==0 && t[5]==1 && t[6]==0 && t[7]==0 &&
+ t[8]==0 && t[9]==0 && t[10]==1 && t[11]==0 &&
+ t[12]==0 && t[13]==0 && t[14]==0 && t[15]==1 );
}
void oPRCFile::begingroup(const char *name, PRCoptions *options,
diff --git a/Build/source/utils/asymptote/prc/writePRC.cc b/Build/source/utils/asymptote/prc/writePRC.cc
index 5f62ea6731e..5c5b6875b3d 100644
--- a/Build/source/utils/asymptote/prc/writePRC.cc
+++ b/Build/source/utils/asymptote/prc/writePRC.cc
@@ -764,8 +764,10 @@ void PRCPolyWire::serializePolyWire(PRCbitStream &pbs)
void PRCGeneralTransformation3d::serializeGeneralTransformation3d(PRCbitStream &pbs) const
{
WriteUnsignedInteger (PRC_TYPE_MISC_GeneralTransformation)
- for (uint32_t i=0; i<16; i++)
- WriteDouble(m_coef[i]);
+ // Like Fortran, PRC uses transposed (column-major) format!
+ for (int j=0;j<4;j++)
+ for (int i=0;i<4;i++)
+ WriteDouble(mat[i][j]);
}
void PRCCartesianTransformation3d::serializeCartesianTransformation3d(PRCbitStream &pbs) const
diff --git a/Build/source/utils/asymptote/prc/writePRC.h b/Build/source/utils/asymptote/prc/writePRC.h
index a1c794c919c..3be7569e3af 100644
--- a/Build/source/utils/asymptote/prc/writePRC.h
+++ b/Build/source/utils/asymptote/prc/writePRC.h
@@ -749,54 +749,54 @@ public:
void serializeGeneralTransformation3d(PRCbitStream&) const;
void serializeTransformation3d(PRCbitStream& pbs) const { serializeGeneralTransformation3d(pbs); }
- double m_coef[16];
+ double mat[4][4];
bool operator==(const PRCGeneralTransformation3d &t) const
{
- for (size_t i=0;i<16;i++)
- if(m_coef[i]!=t.m_coef[i])
+ for (size_t i=0;i<4;i++)
+ for (size_t j=0;j<4;j++)
+ if(mat[i][j]!=t.mat[i][j])
return false;
return true;
}
bool operator<(const PRCGeneralTransformation3d &t) const
{
- for (size_t i=0;i<16;i++)
- if(m_coef[i]!=t.m_coef[i])
+ for (size_t i=0;i<4;i++)
+ for (size_t j=0;j<4;j++)
+ if(mat[i][j]!=t.mat[i][j])
{
- return (m_coef[i]<t.m_coef[i]);
+ return (mat[i][j]<t.mat[i][j]);
}
return false;
}
void set(const double t[])
{
if(t!=NULL)
- for (size_t i=0;i<16;i++)
- m_coef[i]=t[i];
+ for (size_t i=0;i<4;i++)
+ for (size_t j=0;j<4;j++)
+ mat[i][j]=t[4*i+j];
else
setidentity();
}
void setidentity()
{
- m_coef[0]=1; m_coef[4]=0; m_coef[ 8]=0; m_coef[12]=0;
- m_coef[1]=0; m_coef[5]=1; m_coef[ 9]=0; m_coef[13]=0;
- m_coef[2]=0; m_coef[6]=0; m_coef[10]=1; m_coef[14]=0;
- m_coef[3]=0; m_coef[7]=0; m_coef[11]=0; m_coef[15]=1;
- }
- bool isnotidtransform() const {
- return(
- m_coef[0]!=1 || m_coef[4]!=0 || m_coef[ 8]!=0 || m_coef[12]!=0 ||
- m_coef[1]!=0 || m_coef[5]!=1 || m_coef[ 9]!=0 || m_coef[13]!=0 ||
- m_coef[2]!=0 || m_coef[6]!=0 || m_coef[10]!=1 || m_coef[14]!=0 ||
- m_coef[3]!=0 || m_coef[7]!=0 || m_coef[11]!=0 || m_coef[15]!=1 );
+ mat[0][0]=1; mat[0][1]=0; mat[0][2]=0; mat[0][3]=0;
+ mat[1][0]=0; mat[1][1]=1; mat[1][2]=0; mat[1][3]=0;
+ mat[2][0]=0; mat[2][1]=0; mat[2][2]=1; mat[2][3]=0;
+ mat[3][0]=0; mat[3][1]=0; mat[3][2]=0; mat[3][3]=1;
}
bool isidtransform() const {
return(
- m_coef[0]==1 && m_coef[4]==0 && m_coef[ 8]==0 && m_coef[12]==0 &&
- m_coef[1]==0 && m_coef[5]==1 && m_coef[ 9]==0 && m_coef[13]==0 &&
- m_coef[2]==0 && m_coef[6]==0 && m_coef[10]==1 && m_coef[14]==0 &&
- m_coef[3]==0 && m_coef[7]==0 && m_coef[11]==0 && m_coef[15]==1 );
+ mat[0][0]==1 && mat[0][1]==0 && mat[0][2]==0 && mat[0][3]==0 &&
+ mat[1][0]==0 && mat[1][1]==1 && mat[1][2]==0 && mat[1][3]==0 &&
+ mat[2][0]==0 && mat[2][1]==0 && mat[2][2]==1 && mat[2][3]==0 &&
+ mat[3][0]==0 && mat[3][1]==0 && mat[3][2]==0 && mat[3][3]==1);
+ }
+ bool isnotidtransform() const {
+ return !isidtransform();
}
double M(size_t i, size_t j) const {
- return m_coef[i+j*4];
+ // Like Fortran, PRC uses transposed (column-major) format!
+ return mat[j][i];
}
};
typedef std::deque <PRCGeneralTransformation3d> PRCGeneralTransformation3dList;
diff --git a/Build/source/utils/asymptote/psfile.cc b/Build/source/utils/asymptote/psfile.cc
index 3886db6d46f..faf6a2c810a 100644
--- a/Build/source/utils/asymptote/psfile.cc
+++ b/Build/source/utils/asymptote/psfile.cc
@@ -47,6 +47,7 @@ psfile::psfile(const string& filename, bool pdfformat)
{
if(filename.empty()) out=&cout;
else out=new ofstream(filename.c_str());
+ out->setf(std::ios::boolalpha);
if(!out || !*out)
reportError("Cannot write to "+filename);
}
@@ -348,7 +349,8 @@ void psfile::latticeshade(const vm::array& a, const transform& t)
// Axial and radial shading
void psfile::gradientshade(bool axial, ColorSpace colorspace,
const pen& pena, const pair& a, double ra,
- const pen& penb, const pair& b, double rb)
+ bool extenda, const pen& penb, const pair& b,
+ double rb, bool extendb)
{
checkLevel();
endclip(pena);
@@ -364,7 +366,7 @@ void psfile::gradientshade(bool axial, ColorSpace colorspace,
write(b);
if(!axial) write(rb);
*out << "]" << newl
- << "/Extend [true true]" << newl
+ << "/Extend [" << extenda << " " << extendb << "]" << newl
<< "/Function" << newl
<< "<< /FunctionType 2" << newl
<< "/Domain [0 1]" << newl
diff --git a/Build/source/utils/asymptote/psfile.h b/Build/source/utils/asymptote/psfile.h
index 4251be86599..fd25663cb74 100644
--- a/Build/source/utils/asymptote/psfile.h
+++ b/Build/source/utils/asymptote/psfile.h
@@ -278,7 +278,8 @@ public:
virtual void gradientshade(bool axial, ColorSpace colorspace,
const pen& pena, const pair& a, double ra,
- const pen& penb, const pair& b, double rb);
+ bool extenda, const pen& penb, const pair& b,
+ double rb, bool extendb);
virtual void begingouraudshade(const vm::array& pens,
const vm::array& vertices,
diff --git a/Build/source/utils/asymptote/runarray.cc b/Build/source/utils/asymptote/runarray.cc
index 5841f70fa68..354d388cc10 100644
--- a/Build/source/utils/asymptote/runarray.cc
+++ b/Build/source/utils/asymptote/runarray.cc
@@ -154,6 +154,20 @@ static const char *incommensurate="Incommensurate matrices";
static const char *singular="Singular matrix";
static size_t *pivot,*Row,*Col;
+static inline void inverseAllocate(size_t n)
+{
+ pivot=new size_t[n];
+ Row=new size_t[n];
+ Col=new size_t[n];
+}
+
+static inline void inverseDeallocate()
+{
+ delete[] pivot;
+ delete[] Row;
+ delete[] Col;
+}
+
namespace run {
array *copyArray(array *a)
@@ -245,33 +259,6 @@ triple operator *(const array& t, const triple& v)
read<real>(t2,3))*f);
}
-triple multshiftless(const array& t, const triple& v)
-{
- size_t n=checkArray(&t);
- if(n != 4) error(incommensurate);
- array *t0=read<array*>(t,0);
- array *t1=read<array*>(t,1);
- array *t2=read<array*>(t,2);
- array *t3=read<array*>(t,3);
-
- if(checkArray(t0) != 4 || checkArray(t1) != 4 ||
- checkArray(t2) != 4 || checkArray(t3) != 4)
- error(incommensurate);
-
- double x=v.getx();
- double y=v.gety();
- double z=v.getz();
-
- double f=read<real>(t3,0)*x+read<real>(t3,1)*y+read<real>(t3,2)*z+
- read<real>(t3,3);
- if(f == 0.0) run::dividebyzero();
- f=1.0/f;
-
- return triple((read<real>(t0,0)*x+read<real>(t0,1)*y+read<real>(t0,2)*z)*f,
- (read<real>(t1,0)*x+read<real>(t1,1)*y+read<real>(t1,2)*z)*f,
- (read<real>(t2,0)*x+read<real>(t2,1)*y+read<real>(t2,2)*z)*f);
-}
-
template<class T>
array *mult(array *a, array *b)
{
@@ -327,20 +314,106 @@ double norm(triple *a, size_t n)
return sqrt(M);
}
-}
-
-static inline void inverseAllocate(size_t n)
+// Transpose an n x n matrix in place.
+void transpose(double *a, size_t n)
{
- pivot=new size_t[n];
- Row=new size_t[n];
- Col=new size_t[n];
+ for(size_t i=1; i < n; i++) {
+ for(size_t j=0; j < i; j++) {
+ size_t ij=n*i+j;
+ size_t ji=n*j+i;
+ double temp=a[ij];
+ a[ij]=a[ji];
+ a[ji]=temp;
+ }
+ }
}
-static inline void inverseDeallocate()
+// Invert an n x n array in place.
+void inverse(double *a, size_t n)
{
- delete[] pivot;
- delete[] Row;
- delete[] Col;
+ inverseAllocate(n);
+
+ for(size_t i=0; i < n; i++)
+ pivot[i]=0;
+
+ size_t col=0, row=0;
+ // This is the main loop over the columns to be reduced.
+ for(size_t i=0; i < n; i++) {
+ real big=0.0;
+ // This is the outer loop of the search for a pivot element.
+ for(size_t j=0; j < n; j++) {
+ double *aj=a+n*j;
+ if(pivot[j] != 1) {
+ for(size_t k=0; k < n; k++) {
+ if(pivot[k] == 0) {
+ real temp=fabs(aj[k]);
+ if(temp >= big) {
+ big=temp;
+ row=j;
+ col=k;
+ }
+ } else if(pivot[k] > 1) {
+ inverseDeallocate();
+ error(singular);
+ }
+ }
+ }
+ }
+ ++(pivot[col]);
+
+ // Interchange rows, if needed, to put the pivot element on the diagonal.
+ double *acol=a+n*col;
+ if(row != col) {
+ double *arow=a+n*row;
+ for(size_t k=0; k < n; k++) {
+ real temp=arow[k];
+ arow[k]=acol[k];
+ acol[k]=temp;
+ }
+ }
+
+ Row[i]=row;
+ Col[i]=col;
+
+ // Divide the pivot row by the pivot element.
+ real denom=acol[col];
+ if(denom == 0.0) {
+ inverseDeallocate();
+ error(singular);
+ }
+ real pivinv=1.0/denom;
+ acol[col]=1.0;
+ for(size_t k=0; k < n; k++)
+ acol[k]=acol[k]*pivinv;
+
+ // Reduce all rows except for the pivoted one.
+ for(size_t k=0; k < n; k++) {
+ if(k != col) {
+ double *ak=a+n*k;
+ real akcol=ak[col];
+ ak[col]=0.0;
+ for(size_t j=0; j < n; j++)
+ ak[j] -= acol[j]*akcol;
+ }
+ }
+ }
+
+ // Unscramble the inverse matrix in view of the column interchanges.
+ for(size_t k=n; k > 0;) {
+ k--;
+ size_t r=Row[k];
+ size_t c=Col[k];
+ if(r != c) {
+ for(size_t j=0; j < n; j++) {
+ double *aj=a+n*j;
+ real temp=aj[r];
+ aj[r]=aj[c];
+ aj[c]=temp;
+ }
+ }
+ }
+ inverseDeallocate();
+}
}
callable *Func;
@@ -470,10 +543,10 @@ void integeroverflow(size_t i)
#endif
namespace run {
// Create an empty array.
-#line 425 "runarray.in"
+#line 498 "runarray.in"
void emptyArray(stack *Stack)
{
-#line 426 "runarray.in"
+#line 499 "runarray.in"
{Stack->push<array*>(new array(0)); return;}
}
@@ -482,11 +555,11 @@ void emptyArray(stack *Stack)
// is popped off the stack, followed by each dimension in reverse order.
// The array itself is technically a one dimensional array of one
// dimension arrays and so on.
-#line 435 "runarray.in"
+#line 508 "runarray.in"
void newDeepArray(stack *Stack)
{
Int depth=vm::pop<Int>(Stack);
-#line 436 "runarray.in"
+#line 509 "runarray.in"
assert(depth > 0);
Int *dims = new Int[depth];
@@ -505,11 +578,11 @@ void newDeepArray(stack *Stack)
// Creates an array with elements already specified. First, the number
// of elements is popped off the stack, followed by each element in
// reverse order.
-#line 455 "runarray.in"
+#line 528 "runarray.in"
void newInitializedArray(stack *Stack)
{
Int n=vm::pop<Int>(Stack);
-#line 456 "runarray.in"
+#line 529 "runarray.in"
assert(n >= 0);
array *a = new array(n);
@@ -522,12 +595,12 @@ void newInitializedArray(stack *Stack)
// Similar to newInitializedArray, but after the n elements, append another
// array to it.
-#line 469 "runarray.in"
+#line 542 "runarray.in"
void newAppendedArray(stack *Stack)
{
Int n=vm::pop<Int>(Stack);
array* tail=vm::pop<array*>(Stack);
-#line 470 "runarray.in"
+#line 543 "runarray.in"
assert(n >= 0);
array *a = new array(n);
@@ -544,14 +617,14 @@ void newAppendedArray(stack *Stack)
// typeDepth is the true depth of the array determined at compile-time when the
// operations for the array type are added. This typeDepth argument is
// automatically pushed on the stack and is not visible to the user.
-#line 487 "runarray.in"
+#line 560 "runarray.in"
void copyArrayValue(stack *Stack)
{
Int typeDepth=vm::pop<Int>(Stack);
Int depth=vm::pop<Int>(Stack,Int_MAX);
item value=vm::pop(Stack);
Int n=vm::pop<Int>(Stack);
-#line 488 "runarray.in"
+#line 561 "runarray.in"
if(n < 0) error("cannot create a negative length array");
if(depth < 0) error("cannot copy to a negative depth");
if(depth > typeDepth) depth=typeDepth;
@@ -562,25 +635,25 @@ void copyArrayValue(stack *Stack)
// typeDepth is the true depth of the array determined at compile-time when the
// operations for the array type are added. This typeDepth argument is
// automatically pushed on the stack and is not visible to the user.
-#line 499 "runarray.in"
+#line 572 "runarray.in"
void copyArray(stack *Stack)
{
Int typeDepth=vm::pop<Int>(Stack);
Int depth=vm::pop<Int>(Stack,Int_MAX);
array * a=vm::pop<array *>(Stack);
-#line 500 "runarray.in"
+#line 573 "runarray.in"
if(depth < 0) error("cannot copy to a negative depth");
if(depth > typeDepth) depth=typeDepth;
{Stack->push<array*>(a->copyToDepth(depth)); return;}
}
// Read an element from an array. Checks for initialization & bounds.
-#line 507 "runarray.in"
+#line 580 "runarray.in"
void arrayRead(stack *Stack)
{
Int n=vm::pop<Int>(Stack);
array * a=vm::pop<array *>(Stack);
-#line 508 "runarray.in"
+#line 581 "runarray.in"
item& i=arrayRead(a,n);
if (i.empty()) {
ostringstream buf;
@@ -591,37 +664,37 @@ void arrayRead(stack *Stack)
}
// Slice a substring from an array.
-#line 519 "runarray.in"
+#line 592 "runarray.in"
void arraySliceRead(stack *Stack)
{
Int right=vm::pop<Int>(Stack);
Int left=vm::pop<Int>(Stack);
array * a=vm::pop<array *>(Stack);
-#line 520 "runarray.in"
+#line 593 "runarray.in"
checkArray(a);
{Stack->push(a->slice(left, right)); return;}
}
// Slice a substring from an array. This implements the cases a[i:] and a[:]
// where the endpoint is not given, and assumed to be the length of the array.
-#line 527 "runarray.in"
+#line 600 "runarray.in"
void arraySliceReadToEnd(stack *Stack)
{
Int left=vm::pop<Int>(Stack);
array * a=vm::pop<array *>(Stack);
-#line 528 "runarray.in"
+#line 601 "runarray.in"
size_t len=checkArray(a);
{Stack->push(a->slice(left, (Int)len)); return;}
}
// Read an element from an array of arrays. Check bounds and initialize
// as necessary.
-#line 535 "runarray.in"
+#line 608 "runarray.in"
void arrayArrayRead(stack *Stack)
{
Int n=vm::pop<Int>(Stack);
array * a=vm::pop<array *>(Stack);
-#line 536 "runarray.in"
+#line 609 "runarray.in"
item& i=arrayRead(a,n);
if (i.empty()) i=new array(0);
{Stack->push(i); return;}
@@ -629,13 +702,13 @@ void arrayArrayRead(stack *Stack)
// Write an element to an array. Increase size if necessary.
// TODO: Add arrayWriteAndPop
-#line 544 "runarray.in"
+#line 617 "runarray.in"
void arrayWrite(stack *Stack)
{
item value=vm::pop(Stack);
Int n=vm::pop<Int>(Stack);
array * a=vm::pop<array *>(Stack);
-#line 545 "runarray.in"
+#line 618 "runarray.in"
size_t len=checkArray(a);
bool cyclic=a->cyclic();
if(cyclic && len > 0) n=imod(n,len);
@@ -649,27 +722,27 @@ void arrayWrite(stack *Stack)
{Stack->push(value); return;}
}
-#line 559 "runarray.in"
+#line 632 "runarray.in"
void arraySliceWrite(stack *Stack)
{
array * src=vm::pop<array *>(Stack);
Int right=vm::pop<Int>(Stack);
Int left=vm::pop<Int>(Stack);
array * dest=vm::pop<array *>(Stack);
-#line 560 "runarray.in"
+#line 633 "runarray.in"
checkArray(src);
checkArray(dest);
dest->setSlice(left, right, src);
{Stack->push<array*>(src); return;}
}
-#line 567 "runarray.in"
+#line 640 "runarray.in"
void arraySliceWriteToEnd(stack *Stack)
{
array * src=vm::pop<array *>(Stack);
Int left=vm::pop<Int>(Stack);
array * dest=vm::pop<array *>(Stack);
-#line 568 "runarray.in"
+#line 641 "runarray.in"
checkArray(src);
size_t len=checkArray(dest);
dest->setSlice(left, (Int) len, src);
@@ -677,20 +750,20 @@ void arraySliceWriteToEnd(stack *Stack)
}
// Returns the length of an array.
-#line 576 "runarray.in"
+#line 649 "runarray.in"
void arrayLength(stack *Stack)
{
array * a=vm::pop<array *>(Stack);
-#line 577 "runarray.in"
+#line 650 "runarray.in"
{Stack->push<Int>((Int) checkArray(a)); return;}
}
// Returns an array of integers representing the keys of the array.
-#line 582 "runarray.in"
+#line 655 "runarray.in"
void arrayKeys(stack *Stack)
{
array * a=vm::pop<array *>(Stack);
-#line 583 "runarray.in"
+#line 656 "runarray.in"
size_t size=checkArray(a);
array *keys=new array();
@@ -704,33 +777,33 @@ void arrayKeys(stack *Stack)
}
// Return the cyclic flag for an array.
-#line 597 "runarray.in"
+#line 670 "runarray.in"
void arrayCyclicFlag(stack *Stack)
{
array * a=vm::pop<array *>(Stack);
-#line 598 "runarray.in"
+#line 671 "runarray.in"
checkArray(a);
{Stack->push<bool>(a->cyclic()); return;}
}
-#line 603 "runarray.in"
+#line 676 "runarray.in"
void arraySetCyclicFlag(stack *Stack)
{
array * a=vm::pop<array *>(Stack);
bool b=vm::pop<bool>(Stack);
-#line 604 "runarray.in"
+#line 677 "runarray.in"
checkArray(a);
a->cyclic(b);
{Stack->push<bool>(b); return;}
}
// Check to see if an array element is initialized.
-#line 611 "runarray.in"
+#line 684 "runarray.in"
void arrayInitializedHelper(stack *Stack)
{
array * a=vm::pop<array *>(Stack);
Int n=vm::pop<Int>(Stack);
-#line 612 "runarray.in"
+#line 685 "runarray.in"
size_t len=checkArray(a);
bool cyclic=a->cyclic();
if(cyclic && len > 0) n=imod(n,len);
@@ -740,62 +813,62 @@ void arrayInitializedHelper(stack *Stack)
}
// Returns the initialize method for an array.
-#line 622 "runarray.in"
+#line 695 "runarray.in"
void arrayInitialized(stack *Stack)
{
array * a=vm::pop<array *>(Stack);
-#line 623 "runarray.in"
+#line 696 "runarray.in"
{Stack->push<callable*>(new thunk(new bfunc(arrayInitializedHelper),a)); return;}
}
// The helper function for the cyclic method that sets the cyclic flag.
-#line 628 "runarray.in"
+#line 701 "runarray.in"
void arrayCyclicHelper(stack *Stack)
{
array * a=vm::pop<array *>(Stack);
bool b=vm::pop<bool>(Stack);
-#line 629 "runarray.in"
+#line 702 "runarray.in"
checkArray(a);
a->cyclic(b);
}
// Set the cyclic flag for an array.
-#line 635 "runarray.in"
+#line 708 "runarray.in"
void arrayCyclic(stack *Stack)
{
array * a=vm::pop<array *>(Stack);
-#line 636 "runarray.in"
+#line 709 "runarray.in"
{Stack->push<callable*>(new thunk(new bfunc(arrayCyclicHelper),a)); return;}
}
// The helper function for the push method that does the actual operation.
-#line 641 "runarray.in"
+#line 714 "runarray.in"
void arrayPushHelper(stack *Stack)
{
array * a=vm::pop<array *>(Stack);
item x=vm::pop(Stack);
-#line 642 "runarray.in"
+#line 715 "runarray.in"
checkArray(a);
a->push(x);
{Stack->push(x); return;}
}
// Returns the push method for an array.
-#line 649 "runarray.in"
+#line 722 "runarray.in"
void arrayPush(stack *Stack)
{
array * a=vm::pop<array *>(Stack);
-#line 650 "runarray.in"
+#line 723 "runarray.in"
{Stack->push<callable*>(new thunk(new bfunc(arrayPushHelper),a)); return;}
}
// The helper function for the append method that appends b to a.
-#line 655 "runarray.in"
+#line 728 "runarray.in"
void arrayAppendHelper(stack *Stack)
{
array * a=vm::pop<array *>(Stack);
array * b=vm::pop<array *>(Stack);
-#line 656 "runarray.in"
+#line 729 "runarray.in"
checkArray(a);
size_t size=checkArray(b);
for(size_t i=0; i < size; i++)
@@ -803,20 +876,20 @@ void arrayAppendHelper(stack *Stack)
}
// Returns the append method for an array.
-#line 664 "runarray.in"
+#line 737 "runarray.in"
void arrayAppend(stack *Stack)
{
array * a=vm::pop<array *>(Stack);
-#line 665 "runarray.in"
+#line 738 "runarray.in"
{Stack->push<callable*>(new thunk(new bfunc(arrayAppendHelper),a)); return;}
}
// The helper function for the pop method.
-#line 670 "runarray.in"
+#line 743 "runarray.in"
void arrayPopHelper(stack *Stack)
{
array * a=vm::pop<array *>(Stack);
-#line 671 "runarray.in"
+#line 744 "runarray.in"
size_t asize=checkArray(a);
if(asize == 0)
error("cannot pop element from empty array");
@@ -824,22 +897,22 @@ void arrayPopHelper(stack *Stack)
}
// Returns the pop method for an array.
-#line 679 "runarray.in"
+#line 752 "runarray.in"
void arrayPop(stack *Stack)
{
array * a=vm::pop<array *>(Stack);
-#line 680 "runarray.in"
+#line 753 "runarray.in"
{Stack->push<callable*>(new thunk(new bfunc(arrayPopHelper),a)); return;}
}
// The helper function for the insert method.
-#line 685 "runarray.in"
+#line 758 "runarray.in"
void arrayInsertHelper(stack *Stack)
{
array * a=vm::pop<array *>(Stack);
array * x=vm::pop<array *>(Stack);
Int i=vm::pop<Int>(Stack);
-#line 686 "runarray.in"
+#line 759 "runarray.in"
size_t asize=checkArray(a);
checkArray(x);
if(a->cyclic() && asize > 0) i=imod(i,asize);
@@ -849,39 +922,39 @@ void arrayInsertHelper(stack *Stack)
}
// Returns the insert method for an array.
-#line 696 "runarray.in"
+#line 769 "runarray.in"
void arrayInsert(stack *Stack)
{
array * a=vm::pop<array *>(Stack);
-#line 697 "runarray.in"
+#line 770 "runarray.in"
{Stack->push<callable*>(new thunk(new bfunc(arrayInsertHelper),a)); return;}
}
// Returns the delete method for an array.
-#line 702 "runarray.in"
+#line 775 "runarray.in"
void arrayDelete(stack *Stack)
{
array * a=vm::pop<array *>(Stack);
-#line 703 "runarray.in"
+#line 776 "runarray.in"
{Stack->push<callable*>(new thunk(new bfunc(arrayDeleteHelper),a)); return;}
}
-#line 707 "runarray.in"
+#line 780 "runarray.in"
void arrayAlias(stack *Stack)
{
array * b=vm::pop<array *>(Stack);
array * a=vm::pop<array *>(Stack);
-#line 708 "runarray.in"
+#line 781 "runarray.in"
{Stack->push<bool>(a==b); return;}
}
// Return array formed by indexing array a with elements of integer array b
-#line 713 "runarray.in"
+#line 786 "runarray.in"
void arrayIntArray(stack *Stack)
{
array * b=vm::pop<array *>(Stack);
array * a=vm::pop<array *>(Stack);
-#line 714 "runarray.in"
+#line 787 "runarray.in"
size_t asize=checkArray(a);
size_t bsize=checkArray(b);
array *r=new array(bsize);
@@ -899,13 +972,13 @@ void arrayIntArray(stack *Stack)
// returns the complement of the integer array a in {0,2,...,n-1},
// so that b[complement(a,b.length)] yields the complement of b[a].
-#line 732 "runarray.in"
+#line 805 "runarray.in"
// Intarray* complement(Intarray *a, Int n);
void gen_runarray32(stack *Stack)
{
Int n=vm::pop<Int>(Stack);
Intarray * a=vm::pop<Intarray *>(Stack);
-#line 733 "runarray.in"
+#line 806 "runarray.in"
size_t asize=checkArray(a);
array *r=new array(0);
bool *keep=new bool[n];
@@ -922,12 +995,12 @@ void gen_runarray32(stack *Stack)
}
// Generate the sequence {f(i) : i=0,1,...n-1} given a function f and integer n
-#line 750 "runarray.in"
+#line 823 "runarray.in"
void arraySequence(stack *Stack)
{
Int n=vm::pop<Int>(Stack);
callable * f=vm::pop<callable *>(Stack);
-#line 751 "runarray.in"
+#line 824 "runarray.in"
if(n < 0) n=0;
array *a=new array(n);
for(Int i=0; i < n; ++i) {
@@ -939,12 +1012,12 @@ void arraySequence(stack *Stack)
}
// Return the array {0,1,...n-1}
-#line 763 "runarray.in"
+#line 836 "runarray.in"
// Intarray* sequence(Int n);
void gen_runarray34(stack *Stack)
{
Int n=vm::pop<Int>(Stack);
-#line 764 "runarray.in"
+#line 837 "runarray.in"
if(n < 0) n=0;
array *a=new array(n);
for(Int i=0; i < n; ++i) {
@@ -954,12 +1027,12 @@ void gen_runarray34(stack *Stack)
}
// Apply a function to each element of an array
-#line 774 "runarray.in"
+#line 847 "runarray.in"
void arrayFunction(stack *Stack)
{
array * a=vm::pop<array *>(Stack);
callable * f=vm::pop<callable *>(Stack);
-#line 775 "runarray.in"
+#line 848 "runarray.in"
size_t size=checkArray(a);
array *b=new array(size);
for(size_t i=0; i < size; ++i) {
@@ -970,12 +1043,12 @@ void arrayFunction(stack *Stack)
{Stack->push<array*>(b); return;}
}
-#line 786 "runarray.in"
+#line 859 "runarray.in"
void arraySort(stack *Stack)
{
callable * less=vm::pop<callable *>(Stack);
array * a=vm::pop<array *>(Stack);
-#line 787 "runarray.in"
+#line 860 "runarray.in"
array *c=copyArray(a);
compareFunc=less;
FuncStack=Stack;
@@ -983,13 +1056,13 @@ void arraySort(stack *Stack)
{Stack->push<array*>(c); return;}
}
-#line 795 "runarray.in"
+#line 868 "runarray.in"
void arraySearch(stack *Stack)
{
callable * less=vm::pop<callable *>(Stack);
item key=vm::pop(Stack);
array * a=vm::pop<array *>(Stack);
-#line 796 "runarray.in"
+#line 869 "runarray.in"
size_t size=a->size();
compareFunc=less;
FuncStack=Stack;
@@ -1007,12 +1080,12 @@ void arraySearch(stack *Stack)
{Stack->push<Int>(0); return;}
}
-#line 814 "runarray.in"
+#line 887 "runarray.in"
// bool all(boolarray *a);
void gen_runarray38(stack *Stack)
{
boolarray * a=vm::pop<boolarray *>(Stack);
-#line 815 "runarray.in"
+#line 888 "runarray.in"
size_t size=checkArray(a);
bool c=true;
for(size_t i=0; i < size; i++)
@@ -1020,12 +1093,12 @@ void gen_runarray38(stack *Stack)
{Stack->push<bool>(c); return;}
}
-#line 823 "runarray.in"
+#line 896 "runarray.in"
// boolarray* !(boolarray* a);
void gen_runarray39(stack *Stack)
{
boolarray* a=vm::pop<boolarray*>(Stack);
-#line 824 "runarray.in"
+#line 897 "runarray.in"
size_t size=checkArray(a);
array *c=new array(size);
for(size_t i=0; i < size; i++)
@@ -1033,12 +1106,12 @@ void gen_runarray39(stack *Stack)
{Stack->push<boolarray*>(c); return;}
}
-#line 832 "runarray.in"
+#line 905 "runarray.in"
// Int sum(boolarray *a);
void gen_runarray40(stack *Stack)
{
boolarray * a=vm::pop<boolarray *>(Stack);
-#line 833 "runarray.in"
+#line 906 "runarray.in"
size_t size=checkArray(a);
Int sum=0;
for(size_t i=0; i < size; i++)
@@ -1046,11 +1119,11 @@ void gen_runarray40(stack *Stack)
{Stack->push<Int>(sum); return;}
}
-#line 841 "runarray.in"
+#line 914 "runarray.in"
void arrayConcat(stack *Stack)
{
array * a=vm::pop<array *>(Stack);
-#line 842 "runarray.in"
+#line 915 "runarray.in"
// a is an array of arrays to be concatenated together.
// The signature is
// T[] concat(... T[][] a);
@@ -1077,11 +1150,11 @@ void arrayConcat(stack *Stack)
{Stack->push<array*>(result); return;}
}
-#line 869 "runarray.in"
+#line 942 "runarray.in"
void array2Transpose(stack *Stack)
{
array * a=vm::pop<array *>(Stack);
-#line 870 "runarray.in"
+#line 943 "runarray.in"
size_t asize=checkArray(a);
array *c=new array(0);
for(size_t i=0; i < asize; i++) {
@@ -1108,12 +1181,12 @@ void array2Transpose(stack *Stack)
// permutation (021 or 120, etc; original is 012).
// Transpose by sending respective members to the permutated locations:
// return the array obtained by putting a[i][j][k] into position perm{ijk}.
-#line 897 "runarray.in"
+#line 970 "runarray.in"
void array3Transpose(stack *Stack)
{
array * perm=vm::pop<array *>(Stack);
array * a=vm::pop<array *>(Stack);
-#line 898 "runarray.in"
+#line 971 "runarray.in"
const size_t DIM=3;
if(checkArray(perm) != DIM) {
@@ -1197,13 +1270,13 @@ void array3Transpose(stack *Stack)
// In a boolean array, find the index of the nth true value or -1 if not found
// If n is negative, search backwards.
-#line 982 "runarray.in"
+#line 1055 "runarray.in"
// Int find(boolarray *a, Int n=1);
void gen_runarray44(stack *Stack)
{
Int n=vm::pop<Int>(Stack,1);
boolarray * a=vm::pop<boolarray *>(Stack);
-#line 983 "runarray.in"
+#line 1056 "runarray.in"
size_t size=checkArray(a);
Int j=-1;
if(n > 0)
@@ -1221,13 +1294,13 @@ void gen_runarray44(stack *Stack)
// construct vector obtained by replacing those elements of b for which the
// corresponding elements of a are false by the corresponding element of c.
-#line 1001 "runarray.in"
+#line 1074 "runarray.in"
void arrayConditional(stack *Stack)
{
array * c=vm::pop<array *>(Stack);
array * b=vm::pop<array *>(Stack);
array * a=vm::pop<array *>(Stack);
-#line 1002 "runarray.in"
+#line 1075 "runarray.in"
size_t size=checkArray(a);
array *r=new array(size);
if(b && c) {
@@ -1251,122 +1324,42 @@ void arrayConditional(stack *Stack)
}
// Return an n x n identity matrix.
-#line 1026 "runarray.in"
+#line 1099 "runarray.in"
// realarray2* identity(Int n);
void gen_runarray46(stack *Stack)
{
Int n=vm::pop<Int>(Stack);
-#line 1027 "runarray.in"
+#line 1100 "runarray.in"
{Stack->push<realarray2*>(Identity(n)); return;}
}
// Return the inverse of an n x n matrix a using Gauss-Jordan elimination.
-#line 1032 "runarray.in"
+#line 1105 "runarray.in"
// realarray2* inverse(realarray2 *a);
void gen_runarray47(stack *Stack)
{
realarray2 * a=vm::pop<realarray2 *>(Stack);
-#line 1033 "runarray.in"
- a=copyArray2(a);
+#line 1106 "runarray.in"
size_t n=checkArray(a);
- checkSquare(a);
-
- inverseAllocate(n);
-
- for(size_t i=0; i < n; i++)
- pivot[i]=0;
-
- size_t col=0, row=0;
- // This is the main loop over the columns to be reduced.
- for(size_t i=0; i < n; i++) {
- real big=0.0;
- // This is the outer loop of the search for a pivot element.
- for(size_t j=0; j < n; j++) {
- array *aj=read<array*>(a,j);
- if(pivot[j] != 1) {
- for(size_t k=0; k < n; k++) {
- if(pivot[k] == 0) {
- real temp=fabs(read<real>(aj,k));
- if(temp >= big) {
- big=temp;
- row=j;
- col=k;
- }
- } else if(pivot[k] > 1) {
- inverseDeallocate();
- error(singular);
- }
- }
- }
- }
- ++(pivot[col]);
-
- // Interchange rows, if needed, to put the pivot element on the diagonal.
- array *acol=read<array*>(a,col);
- if(row != col) {
- array *arow=read<array*>(a,row);
- for(size_t l=0; l < n; l++) {
- real temp=read<real>(arow,l);
- (*arow)[l]=read<real>(acol,l);
- (*acol)[l]=temp;
- }
- }
-
- Row[i]=row;
- Col[i]=col;
-
- // Divide the pivot row by the pivot element.
- real denom=read<real>(acol,col);
- if(denom == 0.0) {
- inverseDeallocate();
- error(singular);
- }
- real pivinv=1.0/denom;
- (*acol)[col]=1.0;
- for(size_t l=0; l < n; l++)
- (*acol)[l]=read<real>(acol,l)*pivinv;
-
- // Reduce all rows except for the pivoted one.
- for(size_t k=0; k < n; k++) {
- if(k != col) {
- array *ak=read<array*>(a,k);
- real akcol=read<real>(ak,col);
- (*ak)[col]=0.0;
- for(size_t l=0; l < n; l++)
- (*ak)[l]=read<real>(ak,l)-read<real>(acol,l)*akcol;
- }
- }
- }
-
- // Unscramble the inverse matrix in view of the column interchanges.
- for(size_t l=n; l > 0;) {
- l--;
- size_t r=Row[l];
- size_t c=Col[l];
- if(r != c) {
- for(size_t k=0; k < n; k++) {
- array *ak=read<array*>(a,k);
- real temp=read<real>(ak,r);
- (*ak)[r]=read<real>(ak,c);
- (*ak)[c]=temp;
- }
- }
- }
- inverseDeallocate();
+ double *A;
+ copyArray2C(A,a,true,0,NoGC);
+ inverse(A,n);
+ a=copyCArray2(n,n,A);
+ delete A;
{Stack->push<realarray2*>(a); return;}
}
// Solve the linear equation ax=b by LU decomposition, returning the
// solution x, where a is an n x n matrix and b is an array of length n.
// If no solution exists, return an empty array.
-#line 1126 "runarray.in"
+#line 1119 "runarray.in"
// realarray* solve(realarray2 *a, realarray *b, bool warn=true);
void gen_runarray48(stack *Stack)
{
bool warn=vm::pop<bool>(Stack,true);
realarray * b=vm::pop<realarray *>(Stack);
realarray2 * a=vm::pop<realarray2 *>(Stack);
-#line 1127 "runarray.in"
+#line 1120 "runarray.in"
size_t n=checkArray(a);
if(n == 0) {Stack->push<realarray*>(new array(0)); return;}
@@ -1418,14 +1411,14 @@ void gen_runarray48(stack *Stack)
// Solve the linear equation ax=b by LU decomposition, returning the
// solution x, where a is an n x n matrix and b is an n x m matrix.
// If no solution exists, return an empty array.
-#line 1179 "runarray.in"
+#line 1172 "runarray.in"
// realarray2* solve(realarray2 *a, realarray2 *b, bool warn=true);
void gen_runarray49(stack *Stack)
{
bool warn=vm::pop<bool>(Stack,true);
realarray2 * b=vm::pop<realarray2 *>(Stack);
realarray2 * a=vm::pop<realarray2 *>(Stack);
-#line 1180 "runarray.in"
+#line 1173 "runarray.in"
size_t n=checkArray(a);
if(n == 0) {Stack->push<realarray2*>(new array(0)); return;}
@@ -1487,12 +1480,12 @@ void gen_runarray49(stack *Stack)
}
// Compute the determinant of an n x n matrix.
-#line 1242 "runarray.in"
+#line 1235 "runarray.in"
// real determinant(realarray2 *a);
void gen_runarray50(stack *Stack)
{
realarray2 * a=vm::pop<realarray2 *>(Stack);
-#line 1243 "runarray.in"
+#line 1236 "runarray.in"
real *A;
copyArray2C(A,a);
size_t n=checkArray(a);
@@ -1507,13 +1500,13 @@ void gen_runarray50(stack *Stack)
{Stack->push<real>(det); return;}
}
-#line 1258 "runarray.in"
+#line 1251 "runarray.in"
// realarray* *(realarray2 *a, realarray *b);
void gen_runarray51(stack *Stack)
{
realarray * b=vm::pop<realarray *>(Stack);
realarray2 * a=vm::pop<realarray2 *>(Stack);
-#line 1259 "runarray.in"
+#line 1252 "runarray.in"
size_t n=checkArray(a);
size_t m=checkArray(b);
array *c=new array(n);
@@ -1531,13 +1524,13 @@ void gen_runarray51(stack *Stack)
{Stack->push<realarray*>(c); return;}
}
-#line 1277 "runarray.in"
+#line 1270 "runarray.in"
// realarray* *(realarray *a, realarray2 *b);
void gen_runarray52(stack *Stack)
{
realarray2 * b=vm::pop<realarray2 *>(Stack);
realarray * a=vm::pop<realarray *>(Stack);
-#line 1278 "runarray.in"
+#line 1271 "runarray.in"
size_t n=checkArray(a);
if(n != checkArray(b)) error(incommensurate);
real *A;
@@ -1565,53 +1558,53 @@ void gen_runarray52(stack *Stack)
{Stack->push<realarray*>(c); return;}
}
-#line 1306 "runarray.in"
+#line 1299 "runarray.in"
// Intarray2* *(Intarray2 *a, Intarray2 *b);
void gen_runarray53(stack *Stack)
{
Intarray2 * b=vm::pop<Intarray2 *>(Stack);
Intarray2 * a=vm::pop<Intarray2 *>(Stack);
-#line 1307 "runarray.in"
+#line 1300 "runarray.in"
{Stack->push<Intarray2*>(mult<Int>(a,b)); return;}
}
-#line 1311 "runarray.in"
+#line 1304 "runarray.in"
// realarray2* *(realarray2 *a, realarray2 *b);
void gen_runarray54(stack *Stack)
{
realarray2 * b=vm::pop<realarray2 *>(Stack);
realarray2 * a=vm::pop<realarray2 *>(Stack);
-#line 1312 "runarray.in"
+#line 1305 "runarray.in"
{Stack->push<realarray2*>(mult<real>(a,b)); return;}
}
-#line 1316 "runarray.in"
+#line 1309 "runarray.in"
// pairarray2* *(pairarray2 *a, pairarray2 *b);
void gen_runarray55(stack *Stack)
{
pairarray2 * b=vm::pop<pairarray2 *>(Stack);
pairarray2 * a=vm::pop<pairarray2 *>(Stack);
-#line 1317 "runarray.in"
+#line 1310 "runarray.in"
{Stack->push<pairarray2*>(mult<pair>(a,b)); return;}
}
-#line 1321 "runarray.in"
+#line 1314 "runarray.in"
// triple *(realarray2 *t, triple v);
void gen_runarray56(stack *Stack)
{
triple v=vm::pop<triple>(Stack);
realarray2 * t=vm::pop<realarray2 *>(Stack);
-#line 1322 "runarray.in"
+#line 1315 "runarray.in"
{Stack->push<triple>(*t*v); return;}
}
-#line 1326 "runarray.in"
+#line 1319 "runarray.in"
// pair project(triple v, realarray2 *t);
void gen_runarray57(stack *Stack)
{
realarray2 * t=vm::pop<realarray2 *>(Stack);
triple v=vm::pop<triple>(Stack);
-#line 1327 "runarray.in"
+#line 1320 "runarray.in"
size_t n=checkArray(t);
if(n != 4) error(incommensurate);
array *t0=read<array*>(t,0);
@@ -1636,13 +1629,13 @@ void gen_runarray57(stack *Stack)
}
// Compute the dot product of vectors a and b.
-#line 1352 "runarray.in"
+#line 1345 "runarray.in"
// real dot(realarray *a, realarray *b);
void gen_runarray58(stack *Stack)
{
realarray * b=vm::pop<realarray *>(Stack);
realarray * a=vm::pop<realarray *>(Stack);
-#line 1353 "runarray.in"
+#line 1346 "runarray.in"
size_t n=checkArrays(a,b);
real sum=0.0;
for(size_t i=0; i < n; ++i)
@@ -1651,13 +1644,13 @@ void gen_runarray58(stack *Stack)
}
// Compute the complex dot product of vectors a and b.
-#line 1362 "runarray.in"
+#line 1355 "runarray.in"
// pair dot(pairarray *a, pairarray *b);
void gen_runarray59(stack *Stack)
{
pairarray * b=vm::pop<pairarray *>(Stack);
pairarray * a=vm::pop<pairarray *>(Stack);
-#line 1363 "runarray.in"
+#line 1356 "runarray.in"
size_t n=checkArrays(a,b);
pair sum=zero;
for(size_t i=0; i < n; ++i)
@@ -1672,7 +1665,7 @@ void gen_runarray59(stack *Stack)
// [ a[2] b[2] c[2] ]
// [ ... ]
// [ c[n-1] a[n-1] b[n-1] ]
-#line 1378 "runarray.in"
+#line 1371 "runarray.in"
// realarray* tridiagonal(realarray *a, realarray *b, realarray *c, realarray *f);
void gen_runarray60(stack *Stack)
{
@@ -1680,7 +1673,7 @@ void gen_runarray60(stack *Stack)
realarray * c=vm::pop<realarray *>(Stack);
realarray * b=vm::pop<realarray *>(Stack);
realarray * a=vm::pop<realarray *>(Stack);
-#line 1379 "runarray.in"
+#line 1372 "runarray.in"
size_t n=checkArrays(a,b);
checkEqual(n,checkArray(c));
checkEqual(n,checkArray(f));
@@ -1777,7 +1770,7 @@ void gen_runarray60(stack *Stack)
}
// Root solve by Newton-Raphson
-#line 1476 "runarray.in"
+#line 1469 "runarray.in"
// real newton(Int iterations=100, callableReal *f, callableReal *fprime, real x, bool verbose=false);
void gen_runarray61(stack *Stack)
{
@@ -1786,7 +1779,7 @@ void gen_runarray61(stack *Stack)
callableReal * fprime=vm::pop<callableReal *>(Stack);
callableReal * f=vm::pop<callableReal *>(Stack);
Int iterations=vm::pop<Int>(Stack,100);
-#line 1478 "runarray.in"
+#line 1471 "runarray.in"
static const real fuzz=1000.0*DBL_EPSILON;
Int i=0;
size_t oldPrec=0;
@@ -1832,7 +1825,7 @@ void gen_runarray61(stack *Stack)
// Root solve by Newton-Raphson bisection
// cf. routine rtsafe (Press et al., Numerical Recipes, 1991).
-#line 1524 "runarray.in"
+#line 1517 "runarray.in"
// real newton(Int iterations=100, callableReal *f, callableReal *fprime, real x1, real x2, bool verbose=false);
void gen_runarray62(stack *Stack)
{
@@ -1842,7 +1835,7 @@ void gen_runarray62(stack *Stack)
callableReal * fprime=vm::pop<callableReal *>(Stack);
callableReal * f=vm::pop<callableReal *>(Stack);
Int iterations=vm::pop<Int>(Stack,100);
-#line 1526 "runarray.in"
+#line 1519 "runarray.in"
static const real fuzz=1000.0*DBL_EPSILON;
size_t oldPrec=0;
if(verbose)
@@ -1920,7 +1913,7 @@ void gen_runarray62(stack *Stack)
{Stack->push<real>((j == iterations) ? DBL_MAX : x); return;}
}
-#line 1604 "runarray.in"
+#line 1597 "runarray.in"
// real simpson(callableReal *f, real a, real b, real acc=DBL_EPSILON, real dxmax=0);
void gen_runarray63(stack *Stack)
{
@@ -1929,7 +1922,7 @@ void gen_runarray63(stack *Stack)
real b=vm::pop<real>(Stack);
real a=vm::pop<real>(Stack);
callableReal * f=vm::pop<callableReal *>(Stack);
-#line 1606 "runarray.in"
+#line 1599 "runarray.in"
real integral;
if(dxmax <= 0) dxmax=fabs(b-a);
Func=f;
@@ -1940,13 +1933,13 @@ void gen_runarray63(stack *Stack)
}
// Compute the fast Fourier transform of a pair array
-#line 1617 "runarray.in"
+#line 1610 "runarray.in"
// pairarray* fft(pairarray *a, Int sign=1);
void gen_runarray64(stack *Stack)
{
Int sign=vm::pop<Int>(Stack,1);
pairarray * a=vm::pop<pairarray *>(Stack);
-#line 1618 "runarray.in"
+#line 1611 "runarray.in"
unsigned n=(unsigned) checkArray(a);
#ifdef HAVE_LIBFFTW3
array *c=new array(n);
@@ -1975,12 +1968,12 @@ void gen_runarray64(stack *Stack)
{Stack->push<pairarray*>(c); return;}
}
-#line 1647 "runarray.in"
+#line 1640 "runarray.in"
// Intarray2* triangulate(pairarray *z);
void gen_runarray65(stack *Stack)
{
pairarray * z=vm::pop<pairarray *>(Stack);
-#line 1648 "runarray.in"
+#line 1641 "runarray.in"
size_t nv=checkArray(z);
// Call robust version of Gilles Dumoulin's port of Paul Bourke's
// triangulation code.
@@ -2014,12 +2007,12 @@ void gen_runarray65(stack *Stack)
{Stack->push<Intarray2*>(t); return;}
}
-#line 1682 "runarray.in"
+#line 1675 "runarray.in"
// real norm(realarray *a);
void gen_runarray66(stack *Stack)
{
realarray * a=vm::pop<realarray *>(Stack);
-#line 1683 "runarray.in"
+#line 1676 "runarray.in"
size_t n=checkArray(a);
real M=0.0;
for(size_t i=0; i < n; ++i) {
@@ -2029,12 +2022,12 @@ void gen_runarray66(stack *Stack)
{Stack->push<real>(M); return;}
}
-#line 1693 "runarray.in"
+#line 1686 "runarray.in"
// real norm(realarray2 *a);
void gen_runarray67(stack *Stack)
{
realarray2 * a=vm::pop<realarray2 *>(Stack);
-#line 1694 "runarray.in"
+#line 1687 "runarray.in"
size_t n=checkArray(a);
real M=0.0;
for(size_t i=0; i < n; ++i) {
@@ -2048,12 +2041,12 @@ void gen_runarray67(stack *Stack)
{Stack->push<real>(M); return;}
}
-#line 1708 "runarray.in"
+#line 1701 "runarray.in"
// real norm(triplearray2 *a);
void gen_runarray68(stack *Stack)
{
triplearray2 * a=vm::pop<triplearray2 *>(Stack);
-#line 1709 "runarray.in"
+#line 1702 "runarray.in"
size_t n=checkArray(a);
real M=0.0;
for(size_t i=0; i < n; ++i) {
@@ -2067,12 +2060,12 @@ void gen_runarray68(stack *Stack)
{Stack->push<real>(sqrt(M)); return;}
}
-#line 1723 "runarray.in"
+#line 1716 "runarray.in"
// real change2(triplearray2 *a);
void gen_runarray69(stack *Stack)
{
triplearray2 * a=vm::pop<triplearray2 *>(Stack);
-#line 1724 "runarray.in"
+#line 1717 "runarray.in"
size_t n=checkArray(a);
if(n == 0) {Stack->push<real>(0.0); return;}
@@ -2093,13 +2086,13 @@ void gen_runarray69(stack *Stack)
{Stack->push<real>(M); return;}
}
-#line 1745 "runarray.in"
+#line 1738 "runarray.in"
// triple minbezier(triplearray2 *P, triple b);
void gen_runarray70(stack *Stack)
{
triple b=vm::pop<triple>(Stack);
triplearray2 * P=vm::pop<triplearray2 *>(Stack);
-#line 1746 "runarray.in"
+#line 1739 "runarray.in"
real *A=copyTripleArray2Components(P,true,4);
b=triple(bound(A,::min,b.getx(),sqrtFuzz*norm(A,16)),
bound(A+16,::min,b.gety(),sqrtFuzz*norm(A+16,16)),
@@ -2108,13 +2101,13 @@ void gen_runarray70(stack *Stack)
{Stack->push<triple>(b); return;}
}
-#line 1755 "runarray.in"
+#line 1748 "runarray.in"
// triple maxbezier(triplearray2 *P, triple b);
void gen_runarray71(stack *Stack)
{
triple b=vm::pop<triple>(Stack);
triplearray2 * P=vm::pop<triplearray2 *>(Stack);
-#line 1756 "runarray.in"
+#line 1749 "runarray.in"
real *A=copyTripleArray2Components(P,true,4);
b=triple(bound(A,::max,b.getx(),sqrtFuzz*norm(A,16)),
bound(A+16,::max,b.gety(),sqrtFuzz*norm(A+16,16)),
@@ -2123,13 +2116,13 @@ void gen_runarray71(stack *Stack)
{Stack->push<triple>(b); return;}
}
-#line 1765 "runarray.in"
+#line 1758 "runarray.in"
// pair minratio(triplearray2 *P, pair b);
void gen_runarray72(stack *Stack)
{
pair b=vm::pop<pair>(Stack);
triplearray2 * P=vm::pop<triplearray2 *>(Stack);
-#line 1766 "runarray.in"
+#line 1759 "runarray.in"
triple *A;
copyArray2C(A,P,true,4);
real fuzz=sqrtFuzz*norm(A,16);
@@ -2139,13 +2132,13 @@ void gen_runarray72(stack *Stack)
{Stack->push<pair>(b); return;}
}
-#line 1776 "runarray.in"
+#line 1769 "runarray.in"
// pair maxratio(triplearray2 *P, pair b);
void gen_runarray73(stack *Stack)
{
pair b=vm::pop<pair>(Stack);
triplearray2 * P=vm::pop<triplearray2 *>(Stack);
-#line 1777 "runarray.in"
+#line 1770 "runarray.in"
triple *A;
copyArray2C(A,P,true,4);
real fuzz=sqrtFuzz*norm(A,16);
@@ -2155,11 +2148,11 @@ void gen_runarray73(stack *Stack)
{Stack->push<pair>(b); return;}
}
-#line 1787 "runarray.in"
+#line 1780 "runarray.in"
// realarray* _projection();
void gen_runarray74(stack *Stack)
{
-#line 1788 "runarray.in"
+#line 1781 "runarray.in"
#ifdef HAVE_GL
array *a=new array(14);
gl::projection P=gl::camera();
@@ -2196,155 +2189,155 @@ namespace trans {
void gen_runarray_venv(venv &ve)
{
-#line 424 "runarray.in"
+#line 497 "runarray.in"
REGISTER_BLTIN(run::emptyArray,"emptyArray");
-#line 430 "runarray.in"
+#line 503 "runarray.in"
REGISTER_BLTIN(run::newDeepArray,"newDeepArray");
-#line 452 "runarray.in"
+#line 525 "runarray.in"
REGISTER_BLTIN(run::newInitializedArray,"newInitializedArray");
-#line 467 "runarray.in"
+#line 540 "runarray.in"
REGISTER_BLTIN(run::newAppendedArray,"newAppendedArray");
-#line 483 "runarray.in"
+#line 556 "runarray.in"
REGISTER_BLTIN(run::copyArrayValue,"copyArrayValue");
-#line 495 "runarray.in"
+#line 568 "runarray.in"
REGISTER_BLTIN(run::copyArray,"copyArray");
-#line 506 "runarray.in"
+#line 579 "runarray.in"
REGISTER_BLTIN(run::arrayRead,"arrayRead");
-#line 518 "runarray.in"
+#line 591 "runarray.in"
REGISTER_BLTIN(run::arraySliceRead,"arraySliceRead");
-#line 525 "runarray.in"
+#line 598 "runarray.in"
REGISTER_BLTIN(run::arraySliceReadToEnd,"arraySliceReadToEnd");
-#line 533 "runarray.in"
+#line 606 "runarray.in"
REGISTER_BLTIN(run::arrayArrayRead,"arrayArrayRead");
-#line 542 "runarray.in"
+#line 615 "runarray.in"
REGISTER_BLTIN(run::arrayWrite,"arrayWrite");
-#line 559 "runarray.in"
+#line 632 "runarray.in"
REGISTER_BLTIN(run::arraySliceWrite,"arraySliceWrite");
-#line 567 "runarray.in"
+#line 640 "runarray.in"
REGISTER_BLTIN(run::arraySliceWriteToEnd,"arraySliceWriteToEnd");
-#line 575 "runarray.in"
+#line 648 "runarray.in"
REGISTER_BLTIN(run::arrayLength,"arrayLength");
-#line 581 "runarray.in"
+#line 654 "runarray.in"
REGISTER_BLTIN(run::arrayKeys,"arrayKeys");
-#line 596 "runarray.in"
+#line 669 "runarray.in"
REGISTER_BLTIN(run::arrayCyclicFlag,"arrayCyclicFlag");
-#line 603 "runarray.in"
+#line 676 "runarray.in"
REGISTER_BLTIN(run::arraySetCyclicFlag,"arraySetCyclicFlag");
-#line 610 "runarray.in"
+#line 683 "runarray.in"
REGISTER_BLTIN(run::arrayInitializedHelper,"arrayInitializedHelper");
-#line 621 "runarray.in"
+#line 694 "runarray.in"
REGISTER_BLTIN(run::arrayInitialized,"arrayInitialized");
-#line 627 "runarray.in"
+#line 700 "runarray.in"
REGISTER_BLTIN(run::arrayCyclicHelper,"arrayCyclicHelper");
-#line 634 "runarray.in"
+#line 707 "runarray.in"
REGISTER_BLTIN(run::arrayCyclic,"arrayCyclic");
-#line 640 "runarray.in"
+#line 713 "runarray.in"
REGISTER_BLTIN(run::arrayPushHelper,"arrayPushHelper");
-#line 648 "runarray.in"
+#line 721 "runarray.in"
REGISTER_BLTIN(run::arrayPush,"arrayPush");
-#line 654 "runarray.in"
+#line 727 "runarray.in"
REGISTER_BLTIN(run::arrayAppendHelper,"arrayAppendHelper");
-#line 663 "runarray.in"
+#line 736 "runarray.in"
REGISTER_BLTIN(run::arrayAppend,"arrayAppend");
-#line 669 "runarray.in"
+#line 742 "runarray.in"
REGISTER_BLTIN(run::arrayPopHelper,"arrayPopHelper");
-#line 678 "runarray.in"
+#line 751 "runarray.in"
REGISTER_BLTIN(run::arrayPop,"arrayPop");
-#line 684 "runarray.in"
+#line 757 "runarray.in"
REGISTER_BLTIN(run::arrayInsertHelper,"arrayInsertHelper");
-#line 695 "runarray.in"
+#line 768 "runarray.in"
REGISTER_BLTIN(run::arrayInsert,"arrayInsert");
-#line 701 "runarray.in"
+#line 774 "runarray.in"
REGISTER_BLTIN(run::arrayDelete,"arrayDelete");
-#line 707 "runarray.in"
+#line 780 "runarray.in"
REGISTER_BLTIN(run::arrayAlias,"arrayAlias");
-#line 712 "runarray.in"
+#line 785 "runarray.in"
REGISTER_BLTIN(run::arrayIntArray,"arrayIntArray");
-#line 730 "runarray.in"
+#line 803 "runarray.in"
addFunc(ve, run::gen_runarray32, IntArray(), SYM(complement), formal(IntArray(), SYM(a), false, false), formal(primInt(), SYM(n), false, false));
-#line 749 "runarray.in"
+#line 822 "runarray.in"
REGISTER_BLTIN(run::arraySequence,"arraySequence");
-#line 762 "runarray.in"
+#line 835 "runarray.in"
addFunc(ve, run::gen_runarray34, IntArray(), SYM(sequence), formal(primInt(), SYM(n), false, false));
-#line 773 "runarray.in"
+#line 846 "runarray.in"
REGISTER_BLTIN(run::arrayFunction,"arrayFunction");
-#line 786 "runarray.in"
+#line 859 "runarray.in"
REGISTER_BLTIN(run::arraySort,"arraySort");
-#line 795 "runarray.in"
+#line 868 "runarray.in"
REGISTER_BLTIN(run::arraySearch,"arraySearch");
-#line 814 "runarray.in"
+#line 887 "runarray.in"
addFunc(ve, run::gen_runarray38, primBoolean(), SYM(all), formal(booleanArray(), SYM(a), false, false));
-#line 823 "runarray.in"
+#line 896 "runarray.in"
addFunc(ve, run::gen_runarray39, booleanArray(), SYM_LOGNOT, formal(booleanArray(), SYM(a), false, false));
-#line 832 "runarray.in"
+#line 905 "runarray.in"
addFunc(ve, run::gen_runarray40, primInt(), SYM(sum), formal(booleanArray(), SYM(a), false, false));
-#line 841 "runarray.in"
+#line 914 "runarray.in"
REGISTER_BLTIN(run::arrayConcat,"arrayConcat");
-#line 869 "runarray.in"
+#line 942 "runarray.in"
REGISTER_BLTIN(run::array2Transpose,"array2Transpose");
-#line 893 "runarray.in"
+#line 966 "runarray.in"
REGISTER_BLTIN(run::array3Transpose,"array3Transpose");
-#line 980 "runarray.in"
+#line 1053 "runarray.in"
addFunc(ve, run::gen_runarray44, primInt(), SYM(find), formal(booleanArray(), SYM(a), false, false), formal(primInt(), SYM(n), true, false));
-#line 999 "runarray.in"
+#line 1072 "runarray.in"
REGISTER_BLTIN(run::arrayConditional,"arrayConditional");
-#line 1025 "runarray.in"
+#line 1098 "runarray.in"
addFunc(ve, run::gen_runarray46, realArray2(), SYM(identity), formal(primInt(), SYM(n), false, false));
-#line 1031 "runarray.in"
+#line 1104 "runarray.in"
addFunc(ve, run::gen_runarray47, realArray2(), SYM(inverse), formal(realArray2(), SYM(a), false, false));
-#line 1123 "runarray.in"
+#line 1116 "runarray.in"
addFunc(ve, run::gen_runarray48, realArray(), SYM(solve), formal(realArray2(), SYM(a), false, false), formal(realArray(), SYM(b), false, false), formal(primBoolean(), SYM(warn), true, false));
-#line 1176 "runarray.in"
+#line 1169 "runarray.in"
addFunc(ve, run::gen_runarray49, realArray2(), SYM(solve), formal(realArray2(), SYM(a), false, false), formal(realArray2(), SYM(b), false, false), formal(primBoolean(), SYM(warn), true, false));
-#line 1241 "runarray.in"
+#line 1234 "runarray.in"
addFunc(ve, run::gen_runarray50, primReal(), SYM(determinant), formal(realArray2(), SYM(a), false, false));
-#line 1258 "runarray.in"
+#line 1251 "runarray.in"
addFunc(ve, run::gen_runarray51, realArray(), SYM_TIMES, formal(realArray2(), SYM(a), false, false), formal(realArray(), SYM(b), false, false));
-#line 1277 "runarray.in"
+#line 1270 "runarray.in"
addFunc(ve, run::gen_runarray52, realArray(), SYM_TIMES, formal(realArray(), SYM(a), false, false), formal(realArray2(), SYM(b), false, false));
-#line 1306 "runarray.in"
+#line 1299 "runarray.in"
addFunc(ve, run::gen_runarray53, IntArray2(), SYM_TIMES, formal(IntArray2(), SYM(a), false, false), formal(IntArray2(), SYM(b), false, false));
-#line 1311 "runarray.in"
+#line 1304 "runarray.in"
addFunc(ve, run::gen_runarray54, realArray2(), SYM_TIMES, formal(realArray2(), SYM(a), false, false), formal(realArray2(), SYM(b), false, false));
-#line 1316 "runarray.in"
+#line 1309 "runarray.in"
addFunc(ve, run::gen_runarray55, pairArray2(), SYM_TIMES, formal(pairArray2(), SYM(a), false, false), formal(pairArray2(), SYM(b), false, false));
-#line 1321 "runarray.in"
+#line 1314 "runarray.in"
addFunc(ve, run::gen_runarray56, primTriple(), SYM_TIMES, formal(realArray2(), SYM(t), false, false), formal(primTriple(), SYM(v), false, false));
-#line 1326 "runarray.in"
+#line 1319 "runarray.in"
addFunc(ve, run::gen_runarray57, primPair(), SYM(project), formal(primTriple(), SYM(v), false, false), formal(realArray2(), SYM(t), false, false));
-#line 1351 "runarray.in"
+#line 1344 "runarray.in"
addFunc(ve, run::gen_runarray58, primReal(), SYM(dot), formal(realArray(), SYM(a), false, false), formal(realArray(), SYM(b), false, false));
-#line 1361 "runarray.in"
+#line 1354 "runarray.in"
addFunc(ve, run::gen_runarray59, primPair(), SYM(dot), formal(pairArray(), SYM(a), false, false), formal(pairArray(), SYM(b), false, false));
-#line 1371 "runarray.in"
+#line 1364 "runarray.in"
addFunc(ve, run::gen_runarray60, realArray(), SYM(tridiagonal), formal(realArray(), SYM(a), false, false), formal(realArray(), SYM(b), false, false), formal(realArray(), SYM(c), false, false), formal(realArray(), SYM(f), false, false));
-#line 1475 "runarray.in"
+#line 1468 "runarray.in"
addFunc(ve, run::gen_runarray61, primReal(), SYM(newton), formal(primInt(), SYM(iterations), true, false), formal(realRealFunction(), SYM(f), false, false), formal(realRealFunction(), SYM(fprime), false, false), formal(primReal(), SYM(x), false, false), formal(primBoolean(), SYM(verbose), true, false));
-#line 1522 "runarray.in"
+#line 1515 "runarray.in"
addFunc(ve, run::gen_runarray62, primReal(), SYM(newton), formal(primInt(), SYM(iterations), true, false), formal(realRealFunction(), SYM(f), false, false), formal(realRealFunction(), SYM(fprime), false, false), formal(primReal(), SYM(x1), false, false), formal(primReal(), SYM(x2), false, false), formal(primBoolean(), SYM(verbose), true, false));
-#line 1604 "runarray.in"
+#line 1597 "runarray.in"
addFunc(ve, run::gen_runarray63, primReal(), SYM(simpson), formal(realRealFunction(), SYM(f), false, false), formal(primReal(), SYM(a), false, false), formal(primReal(), SYM(b), false, false), formal(primReal(), SYM(acc), true, false), formal(primReal(), SYM(dxmax), true, false));
-#line 1616 "runarray.in"
+#line 1609 "runarray.in"
addFunc(ve, run::gen_runarray64, pairArray(), SYM(fft), formal(pairArray(), SYM(a), false, false), formal(primInt(), SYM(sign), true, false));
-#line 1647 "runarray.in"
+#line 1640 "runarray.in"
addFunc(ve, run::gen_runarray65, IntArray2(), SYM(triangulate), formal(pairArray(), SYM(z), false, false));
-#line 1682 "runarray.in"
+#line 1675 "runarray.in"
addFunc(ve, run::gen_runarray66, primReal(), SYM(norm), formal(realArray(), SYM(a), false, false));
-#line 1693 "runarray.in"
+#line 1686 "runarray.in"
addFunc(ve, run::gen_runarray67, primReal(), SYM(norm), formal(realArray2(), SYM(a), false, false));
-#line 1708 "runarray.in"
+#line 1701 "runarray.in"
addFunc(ve, run::gen_runarray68, primReal(), SYM(norm), formal(tripleArray2(), SYM(a), false, false));
-#line 1723 "runarray.in"
+#line 1716 "runarray.in"
addFunc(ve, run::gen_runarray69, primReal(), SYM(change2), formal(tripleArray2(), SYM(a), false, false));
-#line 1745 "runarray.in"
+#line 1738 "runarray.in"
addFunc(ve, run::gen_runarray70, primTriple(), SYM(minbezier), formal(tripleArray2(), SYM(p), false, false), formal(primTriple(), SYM(b), false, false));
-#line 1755 "runarray.in"
+#line 1748 "runarray.in"
addFunc(ve, run::gen_runarray71, primTriple(), SYM(maxbezier), formal(tripleArray2(), SYM(p), false, false), formal(primTriple(), SYM(b), false, false));
-#line 1765 "runarray.in"
+#line 1758 "runarray.in"
addFunc(ve, run::gen_runarray72, primPair(), SYM(minratio), formal(tripleArray2(), SYM(p), false, false), formal(primPair(), SYM(b), false, false));
-#line 1776 "runarray.in"
+#line 1769 "runarray.in"
addFunc(ve, run::gen_runarray73, primPair(), SYM(maxratio), formal(tripleArray2(), SYM(p), false, false), formal(primPair(), SYM(b), false, false));
-#line 1787 "runarray.in"
+#line 1780 "runarray.in"
addFunc(ve, run::gen_runarray74, realArray(), SYM(_projection));
}
diff --git a/Build/source/utils/asymptote/runarray.in b/Build/source/utils/asymptote/runarray.in
index dcaa5b08104..4d0aaaa8d28 100644
--- a/Build/source/utils/asymptote/runarray.in
+++ b/Build/source/utils/asymptote/runarray.in
@@ -112,6 +112,20 @@ static const char *incommensurate="Incommensurate matrices";
static const char *singular="Singular matrix";
static size_t *pivot,*Row,*Col;
+static inline void inverseAllocate(size_t n)
+{
+ pivot=new size_t[n];
+ Row=new size_t[n];
+ Col=new size_t[n];
+}
+
+static inline void inverseDeallocate()
+{
+ delete[] pivot;
+ delete[] Row;
+ delete[] Col;
+}
+
namespace run {
array *copyArray(array *a)
@@ -203,33 +217,6 @@ triple operator *(const array& t, const triple& v)
read<real>(t2,3))*f);
}
-triple multshiftless(const array& t, const triple& v)
-{
- size_t n=checkArray(&t);
- if(n != 4) error(incommensurate);
- array *t0=read<array*>(t,0);
- array *t1=read<array*>(t,1);
- array *t2=read<array*>(t,2);
- array *t3=read<array*>(t,3);
-
- if(checkArray(t0) != 4 || checkArray(t1) != 4 ||
- checkArray(t2) != 4 || checkArray(t3) != 4)
- error(incommensurate);
-
- double x=v.getx();
- double y=v.gety();
- double z=v.getz();
-
- double f=read<real>(t3,0)*x+read<real>(t3,1)*y+read<real>(t3,2)*z+
- read<real>(t3,3);
- if(f == 0.0) run::dividebyzero();
- f=1.0/f;
-
- return triple((read<real>(t0,0)*x+read<real>(t0,1)*y+read<real>(t0,2)*z)*f,
- (read<real>(t1,0)*x+read<real>(t1,1)*y+read<real>(t1,2)*z)*f,
- (read<real>(t2,0)*x+read<real>(t2,1)*y+read<real>(t2,2)*z)*f);
-}
-
template<class T>
array *mult(array *a, array *b)
{
@@ -285,20 +272,106 @@ double norm(triple *a, size_t n)
return sqrt(M);
}
-}
-
-static inline void inverseAllocate(size_t n)
+// Transpose an n x n matrix in place.
+void transpose(double *a, size_t n)
{
- pivot=new size_t[n];
- Row=new size_t[n];
- Col=new size_t[n];
+ for(size_t i=1; i < n; i++) {
+ for(size_t j=0; j < i; j++) {
+ size_t ij=n*i+j;
+ size_t ji=n*j+i;
+ double temp=a[ij];
+ a[ij]=a[ji];
+ a[ji]=temp;
+ }
+ }
}
-static inline void inverseDeallocate()
+// Invert an n x n array in place.
+void inverse(double *a, size_t n)
{
- delete[] pivot;
- delete[] Row;
- delete[] Col;
+ inverseAllocate(n);
+
+ for(size_t i=0; i < n; i++)
+ pivot[i]=0;
+
+ size_t col=0, row=0;
+ // This is the main loop over the columns to be reduced.
+ for(size_t i=0; i < n; i++) {
+ real big=0.0;
+ // This is the outer loop of the search for a pivot element.
+ for(size_t j=0; j < n; j++) {
+ double *aj=a+n*j;
+ if(pivot[j] != 1) {
+ for(size_t k=0; k < n; k++) {
+ if(pivot[k] == 0) {
+ real temp=fabs(aj[k]);
+ if(temp >= big) {
+ big=temp;
+ row=j;
+ col=k;
+ }
+ } else if(pivot[k] > 1) {
+ inverseDeallocate();
+ error(singular);
+ }
+ }
+ }
+ }
+ ++(pivot[col]);
+
+ // Interchange rows, if needed, to put the pivot element on the diagonal.
+ double *acol=a+n*col;
+ if(row != col) {
+ double *arow=a+n*row;
+ for(size_t k=0; k < n; k++) {
+ real temp=arow[k];
+ arow[k]=acol[k];
+ acol[k]=temp;
+ }
+ }
+
+ Row[i]=row;
+ Col[i]=col;
+
+ // Divide the pivot row by the pivot element.
+ real denom=acol[col];
+ if(denom == 0.0) {
+ inverseDeallocate();
+ error(singular);
+ }
+ real pivinv=1.0/denom;
+ acol[col]=1.0;
+ for(size_t k=0; k < n; k++)
+ acol[k]=acol[k]*pivinv;
+
+ // Reduce all rows except for the pivoted one.
+ for(size_t k=0; k < n; k++) {
+ if(k != col) {
+ double *ak=a+n*k;
+ real akcol=ak[col];
+ ak[col]=0.0;
+ for(size_t j=0; j < n; j++)
+ ak[j] -= acol[j]*akcol;
+ }
+ }
+ }
+
+ // Unscramble the inverse matrix in view of the column interchanges.
+ for(size_t k=n; k > 0;) {
+ k--;
+ size_t r=Row[k];
+ size_t c=Col[k];
+ if(r != c) {
+ for(size_t j=0; j < n; j++) {
+ double *aj=a+n*j;
+ real temp=aj[r];
+ aj[r]=aj[c];
+ aj[c]=temp;
+ }
+ }
+ }
+ inverseDeallocate();
+}
}
callable *Func;
@@ -1031,92 +1104,12 @@ realarray2 *identity(Int n)
// Return the inverse of an n x n matrix a using Gauss-Jordan elimination.
realarray2 *inverse(realarray2 *a)
{
- a=copyArray2(a);
size_t n=checkArray(a);
- checkSquare(a);
-
- inverseAllocate(n);
-
- for(size_t i=0; i < n; i++)
- pivot[i]=0;
-
- size_t col=0, row=0;
- // This is the main loop over the columns to be reduced.
- for(size_t i=0; i < n; i++) {
- real big=0.0;
- // This is the outer loop of the search for a pivot element.
- for(size_t j=0; j < n; j++) {
- array *aj=read<array*>(a,j);
- if(pivot[j] != 1) {
- for(size_t k=0; k < n; k++) {
- if(pivot[k] == 0) {
- real temp=fabs(read<real>(aj,k));
- if(temp >= big) {
- big=temp;
- row=j;
- col=k;
- }
- } else if(pivot[k] > 1) {
- inverseDeallocate();
- error(singular);
- }
- }
- }
- }
- ++(pivot[col]);
-
- // Interchange rows, if needed, to put the pivot element on the diagonal.
- array *acol=read<array*>(a,col);
- if(row != col) {
- array *arow=read<array*>(a,row);
- for(size_t l=0; l < n; l++) {
- real temp=read<real>(arow,l);
- (*arow)[l]=read<real>(acol,l);
- (*acol)[l]=temp;
- }
- }
-
- Row[i]=row;
- Col[i]=col;
-
- // Divide the pivot row by the pivot element.
- real denom=read<real>(acol,col);
- if(denom == 0.0) {
- inverseDeallocate();
- error(singular);
- }
- real pivinv=1.0/denom;
- (*acol)[col]=1.0;
- for(size_t l=0; l < n; l++)
- (*acol)[l]=read<real>(acol,l)*pivinv;
-
- // Reduce all rows except for the pivoted one.
- for(size_t k=0; k < n; k++) {
- if(k != col) {
- array *ak=read<array*>(a,k);
- real akcol=read<real>(ak,col);
- (*ak)[col]=0.0;
- for(size_t l=0; l < n; l++)
- (*ak)[l]=read<real>(ak,l)-read<real>(acol,l)*akcol;
- }
- }
- }
-
- // Unscramble the inverse matrix in view of the column interchanges.
- for(size_t l=n; l > 0;) {
- l--;
- size_t r=Row[l];
- size_t c=Col[l];
- if(r != c) {
- for(size_t k=0; k < n; k++) {
- array *ak=read<array*>(a,k);
- real temp=read<real>(ak,r);
- (*ak)[r]=read<real>(ak,c);
- (*ak)[c]=temp;
- }
- }
- }
- inverseDeallocate();
+ double *A;
+ copyArray2C(A,a,true,0,NoGC);
+ inverse(A,n);
+ a=copyCArray2(n,n,A);
+ delete A;
return a;
}
diff --git a/Build/source/utils/asymptote/runpicture.cc b/Build/source/utils/asymptote/runpicture.cc
index 3f1e84a1703..00b77c4fa53 100644
--- a/Build/source/utils/asymptote/runpicture.cc
+++ b/Build/source/utils/asymptote/runpicture.cc
@@ -236,42 +236,48 @@ void gen_runpicture8(stack *Stack)
}
#line 155 "runpicture.in"
-// void axialshade(picture *f, patharray *g, bool stroke=false, pen pena, pair a, pen penb, pair b, bool copy=true);
+// void axialshade(picture *f, patharray *g, bool stroke=false, pen pena, pair a, bool extenda=true, pen penb, pair b, bool extendb=true, bool copy=true);
void gen_runpicture9(stack *Stack)
{
bool copy=vm::pop<bool>(Stack,true);
+ bool extendb=vm::pop<bool>(Stack,true);
pair b=vm::pop<pair>(Stack);
pen penb=vm::pop<pen>(Stack);
+ bool extenda=vm::pop<bool>(Stack,true);
pair a=vm::pop<pair>(Stack);
pen pena=vm::pop<pen>(Stack);
bool stroke=vm::pop<bool>(Stack,false);
patharray * g=vm::pop<patharray *>(Stack);
picture * f=vm::pop<picture *>(Stack);
-#line 157 "runpicture.in"
+#line 158 "runpicture.in"
array *(*copyarray)(array *a)=copy ? copyArray: nop;
- f->append(new drawAxialShade(*copyarray(g),stroke,pena,a,penb,b));
+ f->append(new drawAxialShade(*copyarray(g),stroke,pena,a,extenda,penb,b,
+ extendb));
}
-#line 162 "runpicture.in"
-// void radialshade(picture *f, patharray *g, bool stroke=false, pen pena, pair a, real ra, pen penb, pair b, real rb, bool copy=true);
+#line 164 "runpicture.in"
+// void radialshade(picture *f, patharray *g, bool stroke=false, pen pena, pair a, real ra, bool extenda=true, pen penb, pair b, real rb, bool extendb=true, bool copy=true);
void gen_runpicture10(stack *Stack)
{
bool copy=vm::pop<bool>(Stack,true);
+ bool extendb=vm::pop<bool>(Stack,true);
real rb=vm::pop<real>(Stack);
pair b=vm::pop<pair>(Stack);
pen penb=vm::pop<pen>(Stack);
+ bool extenda=vm::pop<bool>(Stack,true);
real ra=vm::pop<real>(Stack);
pair a=vm::pop<pair>(Stack);
pen pena=vm::pop<pen>(Stack);
bool stroke=vm::pop<bool>(Stack,false);
patharray * g=vm::pop<patharray *>(Stack);
picture * f=vm::pop<picture *>(Stack);
-#line 164 "runpicture.in"
+#line 167 "runpicture.in"
array *(*copyarray)(array *a)=copy ? copyArray: nop;
- f->append(new drawRadialShade(*copyarray(g),stroke,pena,a,ra,penb,b,rb));
+ f->append(new drawRadialShade(*copyarray(g),stroke,pena,a,ra,extenda,
+ penb,b,rb,extendb));
}
-#line 169 "runpicture.in"
+#line 173 "runpicture.in"
// void gouraudshade(picture *f, patharray *g, bool stroke=false, pen fillrule=CURRENTPEN, penarray *p, pairarray *z, Intarray *edges, bool copy=true);
void gen_runpicture11(stack *Stack)
{
@@ -283,7 +289,7 @@ void gen_runpicture11(stack *Stack)
bool stroke=vm::pop<bool>(Stack,false);
patharray * g=vm::pop<patharray *>(Stack);
picture * f=vm::pop<picture *>(Stack);
-#line 172 "runpicture.in"
+#line 176 "runpicture.in"
array *(*copyarray)(array *a)=copy ? copyArray: nop;
checkArrays(p,z);
checkArrays(z,edges);
@@ -291,7 +297,7 @@ void gen_runpicture11(stack *Stack)
*copyarray(z),*copyarray(edges)));
}
-#line 180 "runpicture.in"
+#line 184 "runpicture.in"
// void gouraudshade(picture *f, patharray *g, bool stroke=false, pen fillrule=CURRENTPEN, penarray *p, Intarray *edges, bool copy=true);
void gen_runpicture12(stack *Stack)
{
@@ -302,7 +308,7 @@ void gen_runpicture12(stack *Stack)
bool stroke=vm::pop<bool>(Stack,false);
patharray * g=vm::pop<patharray *>(Stack);
picture * f=vm::pop<picture *>(Stack);
-#line 183 "runpicture.in"
+#line 187 "runpicture.in"
array *(*copyarray)(array *a)=copy ? copyArray: nop;
size_t n=checkArrays(p,edges);
size_t m=checkArray(g);
@@ -323,7 +329,7 @@ void gen_runpicture12(stack *Stack)
*z,*copyarray(edges)));
}
-#line 204 "runpicture.in"
+#line 208 "runpicture.in"
// void tensorshade(picture *f, patharray *g, bool stroke=false, pen fillrule=CURRENTPEN, penarray2 *p, patharray *b=NULL, pairarray2 *z=emptyarray, bool copy=true);
void gen_runpicture13(stack *Stack)
{
@@ -335,7 +341,7 @@ void gen_runpicture13(stack *Stack)
bool stroke=vm::pop<bool>(Stack,false);
patharray * g=vm::pop<patharray *>(Stack);
picture * f=vm::pop<picture *>(Stack);
-#line 207 "runpicture.in"
+#line 211 "runpicture.in"
array *(*copyarray)(array *a)=copy ? copyArray: nop;
array *(*copyarray2)(array *a)=copy ? copyArray2: nop;
if(b == NULL) b=g;
@@ -347,7 +353,7 @@ void gen_runpicture13(stack *Stack)
*copyarray(b),*copyarray2(z)));
}
-#line 219 "runpicture.in"
+#line 223 "runpicture.in"
// void functionshade(picture *f, patharray *g, bool stroke=false, pen fillrule=CURRENTPEN, string shader=emptystring, bool copy=true);
void gen_runpicture14(stack *Stack)
{
@@ -357,14 +363,14 @@ void gen_runpicture14(stack *Stack)
bool stroke=vm::pop<bool>(Stack,false);
patharray * g=vm::pop<patharray *>(Stack);
picture * f=vm::pop<picture *>(Stack);
-#line 222 "runpicture.in"
+#line 226 "runpicture.in"
array *(*copyarray)(array *a)=copy ? copyArray: nop;
f->append(new drawFunctionShade(*copyarray(g),stroke,fillrule,shader));
}
// Clip a picture to a superpath using the given fill rule.
// Subsequent additions to the picture will not be affected by the clipping.
-#line 229 "runpicture.in"
+#line 233 "runpicture.in"
// void clip(picture *f, patharray *g, bool stroke=false, pen fillrule=CURRENTPEN, bool copy=true);
void gen_runpicture15(stack *Stack)
{
@@ -373,13 +379,13 @@ void gen_runpicture15(stack *Stack)
bool stroke=vm::pop<bool>(Stack,false);
patharray * g=vm::pop<patharray *>(Stack);
picture * f=vm::pop<picture *>(Stack);
-#line 231 "runpicture.in"
+#line 235 "runpicture.in"
array *(*copyarray)(array *a)=copy ? copyArray: nop;
drawClipBegin *begin=new drawClipBegin(*copyarray(g),stroke,fillrule,true);
f->enclose(begin,new drawClipEnd(true,begin));
}
-#line 237 "runpicture.in"
+#line 241 "runpicture.in"
// void beginclip(picture *f, patharray *g, bool stroke=false, pen fillrule=CURRENTPEN, bool copy=true);
void gen_runpicture16(stack *Stack)
{
@@ -388,57 +394,57 @@ void gen_runpicture16(stack *Stack)
bool stroke=vm::pop<bool>(Stack,false);
patharray * g=vm::pop<patharray *>(Stack);
picture * f=vm::pop<picture *>(Stack);
-#line 239 "runpicture.in"
+#line 243 "runpicture.in"
array *(*copyarray)(array *a)=copy ? copyArray: nop;
f->append(new drawClipBegin(*copyarray(g),stroke,fillrule,false));
}
-#line 244 "runpicture.in"
+#line 248 "runpicture.in"
// void endclip(picture *f);
void gen_runpicture17(stack *Stack)
{
picture * f=vm::pop<picture *>(Stack);
-#line 245 "runpicture.in"
+#line 249 "runpicture.in"
f->append(new drawClipEnd(false));
}
-#line 249 "runpicture.in"
+#line 253 "runpicture.in"
// void gsave(picture *f);
void gen_runpicture18(stack *Stack)
{
picture * f=vm::pop<picture *>(Stack);
-#line 250 "runpicture.in"
+#line 254 "runpicture.in"
f->append(new drawGsave());
}
-#line 254 "runpicture.in"
+#line 258 "runpicture.in"
// void grestore(picture *f);
void gen_runpicture19(stack *Stack)
{
picture * f=vm::pop<picture *>(Stack);
-#line 255 "runpicture.in"
+#line 259 "runpicture.in"
f->append(new drawGrestore());
}
-#line 259 "runpicture.in"
+#line 263 "runpicture.in"
// void begingroup(picture *f);
void gen_runpicture20(stack *Stack)
{
picture * f=vm::pop<picture *>(Stack);
-#line 260 "runpicture.in"
+#line 264 "runpicture.in"
f->append(new drawBegin());
}
-#line 264 "runpicture.in"
+#line 268 "runpicture.in"
// void endgroup(picture *f);
void gen_runpicture21(stack *Stack)
{
picture * f=vm::pop<picture *>(Stack);
-#line 265 "runpicture.in"
+#line 269 "runpicture.in"
f->append(new drawEnd());
}
-#line 269 "runpicture.in"
+#line 273 "runpicture.in"
// void _begingroup3(picture *f, string name, real compression, real granularity, bool closed, bool tessellate, bool dobreak, bool nobreak, triple center, Int interaction);
void gen_runpicture22(stack *Stack)
{
@@ -452,62 +458,62 @@ void gen_runpicture22(stack *Stack)
real compression=vm::pop<real>(Stack);
string name=vm::pop<string>(Stack);
picture * f=vm::pop<picture *>(Stack);
-#line 272 "runpicture.in"
+#line 276 "runpicture.in"
f->append(new drawBegin3(name,compression,granularity,
closed,tessellate,dobreak,nobreak,
center,(Interaction) intcast(interaction)));
}
-#line 278 "runpicture.in"
+#line 282 "runpicture.in"
// void endgroup3(picture *f);
void gen_runpicture23(stack *Stack)
{
picture * f=vm::pop<picture *>(Stack);
-#line 279 "runpicture.in"
+#line 283 "runpicture.in"
f->append(new drawEnd3());
}
-#line 283 "runpicture.in"
+#line 287 "runpicture.in"
// void add(picture *dest, picture *src);
void gen_runpicture24(stack *Stack)
{
picture * src=vm::pop<picture *>(Stack);
picture * dest=vm::pop<picture *>(Stack);
-#line 284 "runpicture.in"
+#line 288 "runpicture.in"
dest->add(*src);
}
-#line 288 "runpicture.in"
+#line 292 "runpicture.in"
// void prepend(picture *dest, picture *src);
void gen_runpicture25(stack *Stack)
{
picture * src=vm::pop<picture *>(Stack);
picture * dest=vm::pop<picture *>(Stack);
-#line 289 "runpicture.in"
+#line 293 "runpicture.in"
dest->prepend(*src);
}
-#line 293 "runpicture.in"
+#line 297 "runpicture.in"
// void postscript(picture *f, string s);
void gen_runpicture26(stack *Stack)
{
string s=vm::pop<string>(Stack);
picture * f=vm::pop<picture *>(Stack);
-#line 294 "runpicture.in"
+#line 298 "runpicture.in"
f->append(new drawVerbatim(PostScript,s));
}
-#line 298 "runpicture.in"
+#line 302 "runpicture.in"
// void tex(picture *f, string s);
void gen_runpicture27(stack *Stack)
{
string s=vm::pop<string>(Stack);
picture * f=vm::pop<picture *>(Stack);
-#line 299 "runpicture.in"
+#line 303 "runpicture.in"
f->append(new drawVerbatim(TeX,s));
}
-#line 303 "runpicture.in"
+#line 307 "runpicture.in"
// void postscript(picture *f, string s, pair min, pair max);
void gen_runpicture28(stack *Stack)
{
@@ -515,11 +521,11 @@ void gen_runpicture28(stack *Stack)
pair min=vm::pop<pair>(Stack);
string s=vm::pop<string>(Stack);
picture * f=vm::pop<picture *>(Stack);
-#line 304 "runpicture.in"
+#line 308 "runpicture.in"
f->append(new drawVerbatim(PostScript,s,min,max));
}
-#line 308 "runpicture.in"
+#line 312 "runpicture.in"
// void tex(picture *f, string s, pair min, pair max);
void gen_runpicture29(stack *Stack)
{
@@ -527,33 +533,33 @@ void gen_runpicture29(stack *Stack)
pair min=vm::pop<pair>(Stack);
string s=vm::pop<string>(Stack);
picture * f=vm::pop<picture *>(Stack);
-#line 309 "runpicture.in"
+#line 313 "runpicture.in"
f->append(new drawVerbatim(TeX,s,min,max));
}
-#line 313 "runpicture.in"
+#line 317 "runpicture.in"
// void texpreamble(string s);
void gen_runpicture30(stack *Stack)
{
string s=vm::pop<string>(Stack);
-#line 314 "runpicture.in"
+#line 318 "runpicture.in"
string t=s+"\n";
processDataStruct &pd=processData();
pd.TeXpipepreamble.push_back(t);
pd.TeXpreamble.push_back(t);
}
-#line 321 "runpicture.in"
+#line 325 "runpicture.in"
// void deletepreamble();
void gen_runpicture31(stack *)
{
-#line 322 "runpicture.in"
+#line 326 "runpicture.in"
if(getSetting<bool>("inlinetex")) {
unlink(buildname(outname(),"pre").c_str());
}
}
-#line 328 "runpicture.in"
+#line 332 "runpicture.in"
// void _labelpath(picture *f, string s, string size, path g, string justify, pair offset, pen p);
void gen_runpicture32(stack *Stack)
{
@@ -564,40 +570,40 @@ void gen_runpicture32(stack *Stack)
string size=vm::pop<string>(Stack);
string s=vm::pop<string>(Stack);
picture * f=vm::pop<picture *>(Stack);
-#line 330 "runpicture.in"
+#line 334 "runpicture.in"
f->append(new drawLabelPath(s,size,g,justify,offset,p));
}
-#line 334 "runpicture.in"
+#line 338 "runpicture.in"
// void texreset();
void gen_runpicture33(stack *)
{
-#line 335 "runpicture.in"
+#line 339 "runpicture.in"
processDataStruct &pd=processData();
pd.TeXpipepreamble.clear();
pd.TeXpreamble.clear();
pd.tex.pipeclose();
}
-#line 342 "runpicture.in"
+#line 346 "runpicture.in"
// void layer(picture *f);
void gen_runpicture34(stack *Stack)
{
picture * f=vm::pop<picture *>(Stack);
-#line 343 "runpicture.in"
+#line 347 "runpicture.in"
f->append(new drawLayer());
}
-#line 347 "runpicture.in"
+#line 351 "runpicture.in"
// void newpage(picture *f);
void gen_runpicture35(stack *Stack)
{
picture * f=vm::pop<picture *>(Stack);
-#line 348 "runpicture.in"
+#line 352 "runpicture.in"
f->append(new drawNewPage());
}
-#line 352 "runpicture.in"
+#line 356 "runpicture.in"
// void _image(picture *f, realarray2 *data, pair initial, pair final, penarray *palette=NULL, transform t=identity, bool copy=true, bool antialias=false);
void gen_runpicture36(stack *Stack)
{
@@ -609,14 +615,14 @@ void gen_runpicture36(stack *Stack)
pair initial=vm::pop<pair>(Stack);
realarray2 * data=vm::pop<realarray2 *>(Stack);
picture * f=vm::pop<picture *>(Stack);
-#line 355 "runpicture.in"
+#line 359 "runpicture.in"
array *(*copyarray)(array *a)=copy ? copyArray: nop;
array *(*copyarray2)(array *a)=copy ? copyArray2: nop;
f->append(new drawPaletteImage(*copyarray2(data),*copyarray(palette),
t*matrix(initial,final),antialias));
}
-#line 362 "runpicture.in"
+#line 366 "runpicture.in"
// void _image(picture *f, penarray2 *data, pair initial, pair final, transform t=identity, bool copy=true, bool antialias=false);
void gen_runpicture37(stack *Stack)
{
@@ -627,13 +633,13 @@ void gen_runpicture37(stack *Stack)
pair initial=vm::pop<pair>(Stack);
penarray2 * data=vm::pop<penarray2 *>(Stack);
picture * f=vm::pop<picture *>(Stack);
-#line 364 "runpicture.in"
+#line 368 "runpicture.in"
array *(*copyarray2)(array *a)=copy ? copyArray2: nop;
f->append(new drawNoPaletteImage(*copyarray2(data),t*matrix(initial,final),
antialias));
}
-#line 370 "runpicture.in"
+#line 374 "runpicture.in"
// void _image(picture *f, callablePen *F, Int width, Int height, pair initial, pair final, transform t=identity, bool antialias=false);
void gen_runpicture38(stack *Stack)
{
@@ -645,36 +651,36 @@ void gen_runpicture38(stack *Stack)
Int width=vm::pop<Int>(Stack);
callablePen * F=vm::pop<callablePen *>(Stack);
picture * f=vm::pop<picture *>(Stack);
-#line 372 "runpicture.in"
+#line 376 "runpicture.in"
f->append(new drawFunctionImage(Stack,F,width,height,
t*matrix(initial,final),antialias));
}
-#line 377 "runpicture.in"
+#line 381 "runpicture.in"
// string nativeformat();
void gen_runpicture39(stack *Stack)
{
-#line 378 "runpicture.in"
+#line 382 "runpicture.in"
{Stack->push<string>(nativeformat()); return;}
}
-#line 382 "runpicture.in"
+#line 386 "runpicture.in"
// bool latex();
void gen_runpicture40(stack *Stack)
{
-#line 383 "runpicture.in"
+#line 387 "runpicture.in"
{Stack->push<bool>(latex(getSetting<string>("tex"))); return;}
}
-#line 387 "runpicture.in"
+#line 391 "runpicture.in"
// bool pdf();
void gen_runpicture41(stack *Stack)
{
-#line 388 "runpicture.in"
+#line 392 "runpicture.in"
{Stack->push<bool>(pdf(getSetting<string>("tex"))); return;}
}
-#line 392 "runpicture.in"
+#line 396 "runpicture.in"
// void shipout(string prefix=emptystring, picture *f, picture *preamble=NULL, string format=emptystring, bool wait=false, bool view=true, callableTransform *xform);
void gen_runpicture42(stack *Stack)
{
@@ -685,7 +691,7 @@ void gen_runpicture42(stack *Stack)
picture * preamble=vm::pop<picture *>(Stack,NULL);
picture * f=vm::pop<picture *>(Stack);
string prefix=vm::pop<string>(Stack,emptystring);
-#line 395 "runpicture.in"
+#line 399 "runpicture.in"
if(prefix.empty()) prefix=outname();
picture *result=new picture;
@@ -734,7 +740,7 @@ void gen_runpicture42(stack *Stack)
result->shipout(preamble,prefix,format,0.0,wait,view);
}
-#line 444 "runpicture.in"
+#line 448 "runpicture.in"
// void shipout3(string prefix, picture *f, string format=emptystring, real width, real height, real angle, real zoom, triple m, triple M, pair shift, realarray2 *t, realarray *background, triplearray *lights, realarray2 *diffuse, realarray2 *ambient, realarray2 *specular, bool viewportlighting, bool view=true);
void gen_runpicture43(stack *Stack)
{
@@ -756,7 +762,7 @@ void gen_runpicture43(stack *Stack)
string format=vm::pop<string>(Stack,emptystring);
picture * f=vm::pop<picture *>(Stack);
string prefix=vm::pop<string>(Stack);
-#line 450 "runpicture.in"
+#line 454 "runpicture.in"
size_t n=checkArrays(lights,diffuse);
checkEqual(n,checkArray(ambient));
checkEqual(n,checkArray(specular));
@@ -778,17 +784,17 @@ void gen_runpicture43(stack *Stack)
delete[] T;
}
-#line 472 "runpicture.in"
+#line 476 "runpicture.in"
// void shipout3(string prefix, picture *f);
void gen_runpicture44(stack *Stack)
{
picture * f=vm::pop<picture *>(Stack);
string prefix=vm::pop<string>(Stack);
-#line 473 "runpicture.in"
+#line 477 "runpicture.in"
f->shipout3(prefix);
}
-#line 477 "runpicture.in"
+#line 481 "runpicture.in"
// void deconstruct(picture *f, picture *preamble=NULL, real magnification=1, callableTransform *xform);
void gen_runpicture45(stack *Stack)
{
@@ -796,7 +802,7 @@ void gen_runpicture45(stack *Stack)
real magnification=vm::pop<real>(Stack,1);
picture * preamble=vm::pop<picture *>(Stack,NULL);
picture * f=vm::pop<picture *>(Stack);
-#line 479 "runpicture.in"
+#line 483 "runpicture.in"
unsigned level=0;
unsigned n=0;
@@ -928,7 +934,7 @@ void gen_runpicture45(stack *Stack)
// Three-dimensional picture and surface operations
// Bezier curve
-#line 611 "runpicture.in"
+#line 615 "runpicture.in"
// void _draw(picture *f, path3 g, triple center=Zero, pen p, Int interaction=0);
void gen_runpicture46(stack *Stack)
{
@@ -937,13 +943,13 @@ void gen_runpicture46(stack *Stack)
triple center=vm::pop<triple>(Stack,Zero);
path3 g=vm::pop<path3>(Stack);
picture * f=vm::pop<picture *>(Stack);
-#line 612 "runpicture.in"
+#line 616 "runpicture.in"
if(g.size() > 0)
f->append(new drawPath3(g,center,p,(Interaction) intcast(interaction)));
}
// Bezier patch
-#line 618 "runpicture.in"
+#line 622 "runpicture.in"
// void draw(picture *f, triplearray2 *P, triple center, bool straight, penarray *p, real opacity, real shininess, real PRCshininess, triple normal, penarray *colors, Int interaction, bool prc=true);
void gen_runpicture47(stack *Stack)
{
@@ -959,14 +965,14 @@ void gen_runpicture47(stack *Stack)
triple center=vm::pop<triple>(Stack);
triplearray2 * P=vm::pop<triplearray2 *>(Stack);
picture * f=vm::pop<picture *>(Stack);
-#line 621 "runpicture.in"
+#line 625 "runpicture.in"
f->append(new drawSurface(*P,center,straight,*p,opacity,shininess,
PRCshininess,normal,*colors,
(Interaction) intcast(interaction),prc));
}
// General NURBS curve
-#line 628 "runpicture.in"
+#line 632 "runpicture.in"
// void draw(picture *f, triplearray *P, realarray *knot, realarray *weights=emptyarray, pen p);
void gen_runpicture48(stack *Stack)
{
@@ -975,12 +981,12 @@ void gen_runpicture48(stack *Stack)
realarray * knot=vm::pop<realarray *>(Stack);
triplearray * P=vm::pop<triplearray *>(Stack);
picture * f=vm::pop<picture *>(Stack);
-#line 630 "runpicture.in"
+#line 634 "runpicture.in"
f->append(new drawNurbsPath3(*P,knot,weights,p));
}
// General NURBS surface
-#line 635 "runpicture.in"
+#line 639 "runpicture.in"
// void draw(picture *f, triplearray2 *P, realarray *uknot, realarray *vknot, realarray2 *weights=emptyarray, penarray *p, real opacity, real shininess, real PRCshininess, penarray *colors);
void gen_runpicture49(stack *Stack)
{
@@ -994,13 +1000,13 @@ void gen_runpicture49(stack *Stack)
realarray * uknot=vm::pop<realarray *>(Stack);
triplearray2 * P=vm::pop<triplearray2 *>(Stack);
picture * f=vm::pop<picture *>(Stack);
-#line 638 "runpicture.in"
+#line 642 "runpicture.in"
f->append(new drawNurbs(*P,uknot,vknot,weights,*p,opacity,shininess,
PRCshininess,*colors));
}
// PRC unit sphere
-#line 644 "runpicture.in"
+#line 648 "runpicture.in"
// void drawPRCsphere(picture *f, realarray2 *t, bool half=false, penarray *p, real opacity, real shininess, Int type);
void gen_runpicture50(stack *Stack)
{
@@ -1011,12 +1017,12 @@ void gen_runpicture50(stack *Stack)
bool half=vm::pop<bool>(Stack,false);
realarray2 * t=vm::pop<realarray2 *>(Stack);
picture * f=vm::pop<picture *>(Stack);
-#line 646 "runpicture.in"
+#line 650 "runpicture.in"
f->append(new drawSphere(*t,half,*p,opacity,shininess,intcast(type)));
}
// PRC unit cylinder
-#line 651 "runpicture.in"
+#line 655 "runpicture.in"
// void drawPRCcylinder(picture *f, realarray2 *t, penarray *p, real opacity, real shininess);
void gen_runpicture51(stack *Stack)
{
@@ -1025,12 +1031,12 @@ void gen_runpicture51(stack *Stack)
penarray * p=vm::pop<penarray *>(Stack);
realarray2 * t=vm::pop<realarray2 *>(Stack);
picture * f=vm::pop<picture *>(Stack);
-#line 653 "runpicture.in"
+#line 657 "runpicture.in"
f->append(new drawCylinder(*t,*p,opacity,shininess));
}
// PRC unit disk
-#line 658 "runpicture.in"
+#line 662 "runpicture.in"
// void drawPRCdisk(picture *f, realarray2 *t, penarray *p, real opacity, real shininess);
void gen_runpicture52(stack *Stack)
{
@@ -1039,12 +1045,12 @@ void gen_runpicture52(stack *Stack)
penarray * p=vm::pop<penarray *>(Stack);
realarray2 * t=vm::pop<realarray2 *>(Stack);
picture * f=vm::pop<picture *>(Stack);
-#line 660 "runpicture.in"
+#line 664 "runpicture.in"
f->append(new drawDisk(*t,*p,opacity,shininess));
}
// General PRC tube
-#line 665 "runpicture.in"
+#line 669 "runpicture.in"
// void drawPRCtube(picture *f, path3 center, path3 g, penarray *p, real opacity, real shininess);
void gen_runpicture53(stack *Stack)
{
@@ -1054,12 +1060,12 @@ void gen_runpicture53(stack *Stack)
path3 g=vm::pop<path3>(Stack);
path3 center=vm::pop<path3>(Stack);
picture * f=vm::pop<picture *>(Stack);
-#line 667 "runpicture.in"
+#line 671 "runpicture.in"
f->append(new drawTube(center,g,*p,opacity,shininess));
}
// Draw pixel
-#line 672 "runpicture.in"
+#line 676 "runpicture.in"
// void drawpixel(picture *f, triple v, pen p, real width=1.0);
void gen_runpicture54(stack *Stack)
{
@@ -1067,12 +1073,12 @@ void gen_runpicture54(stack *Stack)
pen p=vm::pop<pen>(Stack);
triple v=vm::pop<triple>(Stack);
picture * f=vm::pop<picture *>(Stack);
-#line 673 "runpicture.in"
+#line 677 "runpicture.in"
f->append(new drawPixel(v,p,width));
}
// Draw triangles
-#line 678 "runpicture.in"
+#line 682 "runpicture.in"
// void draw(picture *f, triplearray *v, Intarray2 *vi, triplearray *n, Intarray2 *ni, penarray *p, real opacity, real shininess, real PRCshininess, penarray *c=emptyarray, Intarray2 *ci=emptyarray);
void gen_runpicture55(stack *Stack)
{
@@ -1087,63 +1093,63 @@ void gen_runpicture55(stack *Stack)
Intarray2 * vi=vm::pop<Intarray2 *>(Stack);
triplearray * v=vm::pop<triplearray *>(Stack);
picture * f=vm::pop<picture *>(Stack);
-#line 682 "runpicture.in"
+#line 686 "runpicture.in"
f->append(new drawTriangles(*v,*vi,*n,*ni,*p,opacity,shininess,PRCshininess,
*c,*ci));
}
-#line 687 "runpicture.in"
+#line 691 "runpicture.in"
// triple min3(picture *f);
void gen_runpicture56(stack *Stack)
{
picture * f=vm::pop<picture *>(Stack);
-#line 688 "runpicture.in"
+#line 692 "runpicture.in"
{Stack->push<triple>(f->bounds3().Min()); return;}
}
-#line 692 "runpicture.in"
+#line 696 "runpicture.in"
// triple max3(picture *f);
void gen_runpicture57(stack *Stack)
{
picture * f=vm::pop<picture *>(Stack);
-#line 693 "runpicture.in"
+#line 697 "runpicture.in"
{Stack->push<triple>(f->bounds3().Max()); return;}
}
-#line 697 "runpicture.in"
+#line 701 "runpicture.in"
// triple size3(picture *f);
void gen_runpicture58(stack *Stack)
{
picture * f=vm::pop<picture *>(Stack);
-#line 698 "runpicture.in"
+#line 702 "runpicture.in"
bbox3 b=f->bounds3();
{Stack->push<triple>(b.Max()-b.Min()); return;}
}
-#line 703 "runpicture.in"
+#line 707 "runpicture.in"
// pair minratio(picture *f);
void gen_runpicture59(stack *Stack)
{
picture * f=vm::pop<picture *>(Stack);
-#line 704 "runpicture.in"
+#line 708 "runpicture.in"
{Stack->push<pair>(f->ratio(::min)); return;}
}
-#line 708 "runpicture.in"
+#line 712 "runpicture.in"
// pair maxratio(picture *f);
void gen_runpicture60(stack *Stack)
{
picture * f=vm::pop<picture *>(Stack);
-#line 709 "runpicture.in"
+#line 713 "runpicture.in"
{Stack->push<pair>(f->ratio(::max)); return;}
}
-#line 713 "runpicture.in"
+#line 717 "runpicture.in"
// bool is3D(picture *f);
void gen_runpicture61(stack *Stack)
{
picture * f=vm::pop<picture *>(Stack);
-#line 714 "runpicture.in"
+#line 718 "runpicture.in"
{Stack->push<bool>(f->have3D()); return;}
}
@@ -1172,110 +1178,110 @@ void gen_runpicture_venv(venv &ve)
#line 146 "runpicture.in"
addFunc(ve, run::gen_runpicture8, primVoid(), SYM(latticeshade), formal(primPicture(), SYM(f), false, false), formal(pathArray() , SYM(g), false, false), formal(primBoolean(), SYM(stroke), true, false), formal(primPen(), SYM(fillrule), true, false), formal(penArray2() , SYM(p), false, false), formal(primTransform(), SYM(t), true, false), formal(primBoolean(), SYM(copy), true, false));
#line 155 "runpicture.in"
- addFunc(ve, run::gen_runpicture9, primVoid(), SYM(axialshade), formal(primPicture(), SYM(f), false, false), formal(pathArray() , SYM(g), false, false), formal(primBoolean(), SYM(stroke), true, false), formal(primPen(), SYM(pena), false, false), formal(primPair(), SYM(a), false, false), formal(primPen(), SYM(penb), false, false), formal(primPair(), SYM(b), false, false), formal(primBoolean(), SYM(copy), true, false));
-#line 162 "runpicture.in"
- addFunc(ve, run::gen_runpicture10, primVoid(), SYM(radialshade), formal(primPicture(), SYM(f), false, false), formal(pathArray() , SYM(g), false, false), formal(primBoolean(), SYM(stroke), true, false), formal(primPen(), SYM(pena), false, false), formal(primPair(), SYM(a), false, false), formal(primReal(), SYM(ra), false, false), formal(primPen(), SYM(penb), false, false), formal(primPair(), SYM(b), false, false), formal(primReal(), SYM(rb), false, false), formal(primBoolean(), SYM(copy), true, false));
-#line 169 "runpicture.in"
+ addFunc(ve, run::gen_runpicture9, primVoid(), SYM(axialshade), formal(primPicture(), SYM(f), false, false), formal(pathArray() , SYM(g), false, false), formal(primBoolean(), SYM(stroke), true, false), formal(primPen(), SYM(pena), false, false), formal(primPair(), SYM(a), false, false), formal(primBoolean(), SYM(extenda), true, false), formal(primPen(), SYM(penb), false, false), formal(primPair(), SYM(b), false, false), formal(primBoolean(), SYM(extendb), true, false), formal(primBoolean(), SYM(copy), true, false));
+#line 164 "runpicture.in"
+ addFunc(ve, run::gen_runpicture10, primVoid(), SYM(radialshade), formal(primPicture(), SYM(f), false, false), formal(pathArray() , SYM(g), false, false), formal(primBoolean(), SYM(stroke), true, false), formal(primPen(), SYM(pena), false, false), formal(primPair(), SYM(a), false, false), formal(primReal(), SYM(ra), false, false), formal(primBoolean(), SYM(extenda), true, false), formal(primPen(), SYM(penb), false, false), formal(primPair(), SYM(b), false, false), formal(primReal(), SYM(rb), false, false), formal(primBoolean(), SYM(extendb), true, false), formal(primBoolean(), SYM(copy), true, false));
+#line 173 "runpicture.in"
addFunc(ve, run::gen_runpicture11, primVoid(), SYM(gouraudshade), formal(primPicture(), SYM(f), false, false), formal(pathArray() , SYM(g), false, false), formal(primBoolean(), SYM(stroke), true, false), formal(primPen(), SYM(fillrule), true, false), formal(penArray() , SYM(p), false, false), formal(pairArray(), SYM(z), false, false), formal(IntArray(), SYM(edges), false, false), formal(primBoolean(), SYM(copy), true, false));
-#line 180 "runpicture.in"
+#line 184 "runpicture.in"
addFunc(ve, run::gen_runpicture12, primVoid(), SYM(gouraudshade), formal(primPicture(), SYM(f), false, false), formal(pathArray() , SYM(g), false, false), formal(primBoolean(), SYM(stroke), true, false), formal(primPen(), SYM(fillrule), true, false), formal(penArray() , SYM(p), false, false), formal(IntArray(), SYM(edges), false, false), formal(primBoolean(), SYM(copy), true, false));
-#line 204 "runpicture.in"
+#line 208 "runpicture.in"
addFunc(ve, run::gen_runpicture13, primVoid(), SYM(tensorshade), formal(primPicture(), SYM(f), false, false), formal(pathArray() , SYM(g), false, false), formal(primBoolean(), SYM(stroke), true, false), formal(primPen(), SYM(fillrule), true, false), formal(penArray2() , SYM(p), false, false), formal(pathArray() , SYM(b), true, false), formal(pairArray2(), SYM(z), true, false), formal(primBoolean(), SYM(copy), true, false));
-#line 219 "runpicture.in"
+#line 223 "runpicture.in"
addFunc(ve, run::gen_runpicture14, primVoid(), SYM(functionshade), formal(primPicture(), SYM(f), false, false), formal(pathArray() , SYM(g), false, false), formal(primBoolean(), SYM(stroke), true, false), formal(primPen(), SYM(fillrule), true, false), formal(primString() , SYM(shader), true, false), formal(primBoolean(), SYM(copy), true, false));
-#line 227 "runpicture.in"
+#line 231 "runpicture.in"
addFunc(ve, run::gen_runpicture15, primVoid(), SYM(clip), formal(primPicture(), SYM(f), false, false), formal(pathArray() , SYM(g), false, false), formal(primBoolean(), SYM(stroke), true, false), formal(primPen(), SYM(fillrule), true, false), formal(primBoolean(), SYM(copy), true, false));
-#line 237 "runpicture.in"
+#line 241 "runpicture.in"
addFunc(ve, run::gen_runpicture16, primVoid(), SYM(beginclip), formal(primPicture(), SYM(f), false, false), formal(pathArray() , SYM(g), false, false), formal(primBoolean(), SYM(stroke), true, false), formal(primPen(), SYM(fillrule), true, false), formal(primBoolean(), SYM(copy), true, false));
-#line 244 "runpicture.in"
+#line 248 "runpicture.in"
addFunc(ve, run::gen_runpicture17, primVoid(), SYM(endclip), formal(primPicture(), SYM(f), false, false));
-#line 249 "runpicture.in"
+#line 253 "runpicture.in"
addFunc(ve, run::gen_runpicture18, primVoid(), SYM(gsave), formal(primPicture(), SYM(f), false, false));
-#line 254 "runpicture.in"
+#line 258 "runpicture.in"
addFunc(ve, run::gen_runpicture19, primVoid(), SYM(grestore), formal(primPicture(), SYM(f), false, false));
-#line 259 "runpicture.in"
+#line 263 "runpicture.in"
addFunc(ve, run::gen_runpicture20, primVoid(), SYM(begingroup), formal(primPicture(), SYM(f), false, false));
-#line 264 "runpicture.in"
+#line 268 "runpicture.in"
addFunc(ve, run::gen_runpicture21, primVoid(), SYM(endgroup), formal(primPicture(), SYM(f), false, false));
-#line 269 "runpicture.in"
+#line 273 "runpicture.in"
addFunc(ve, run::gen_runpicture22, primVoid(), SYM(_begingroup3), formal(primPicture(), SYM(f), false, false), formal(primString() , SYM(name), false, false), formal(primReal(), SYM(compression), false, false), formal(primReal(), SYM(granularity), false, false), formal(primBoolean(), SYM(closed), false, false), formal(primBoolean(), SYM(tessellate), false, false), formal(primBoolean(), SYM(dobreak), false, false), formal(primBoolean(), SYM(nobreak), false, false), formal(primTriple(), SYM(center), false, false), formal(primInt(), SYM(interaction), false, false));
-#line 278 "runpicture.in"
+#line 282 "runpicture.in"
addFunc(ve, run::gen_runpicture23, primVoid(), SYM(endgroup3), formal(primPicture(), SYM(f), false, false));
-#line 283 "runpicture.in"
+#line 287 "runpicture.in"
addFunc(ve, run::gen_runpicture24, primVoid(), SYM(add), formal(primPicture(), SYM(dest), false, false), formal(primPicture(), SYM(src), false, false));
-#line 288 "runpicture.in"
+#line 292 "runpicture.in"
addFunc(ve, run::gen_runpicture25, primVoid(), SYM(prepend), formal(primPicture(), SYM(dest), false, false), formal(primPicture(), SYM(src), false, false));
-#line 293 "runpicture.in"
+#line 297 "runpicture.in"
addFunc(ve, run::gen_runpicture26, primVoid(), SYM(postscript), formal(primPicture(), SYM(f), false, false), formal(primString() , SYM(s), false, false));
-#line 298 "runpicture.in"
+#line 302 "runpicture.in"
addFunc(ve, run::gen_runpicture27, primVoid(), SYM(tex), formal(primPicture(), SYM(f), false, false), formal(primString() , SYM(s), false, false));
-#line 303 "runpicture.in"
+#line 307 "runpicture.in"
addFunc(ve, run::gen_runpicture28, primVoid(), SYM(postscript), formal(primPicture(), SYM(f), false, false), formal(primString() , SYM(s), false, false), formal(primPair(), SYM(min), false, false), formal(primPair(), SYM(max), false, false));
-#line 308 "runpicture.in"
+#line 312 "runpicture.in"
addFunc(ve, run::gen_runpicture29, primVoid(), SYM(tex), formal(primPicture(), SYM(f), false, false), formal(primString() , SYM(s), false, false), formal(primPair(), SYM(min), false, false), formal(primPair(), SYM(max), false, false));
-#line 313 "runpicture.in"
+#line 317 "runpicture.in"
addFunc(ve, run::gen_runpicture30, primVoid(), SYM(texpreamble), formal(primString() , SYM(s), false, false));
-#line 321 "runpicture.in"
+#line 325 "runpicture.in"
addFunc(ve, run::gen_runpicture31, primVoid(), SYM(deletepreamble));
-#line 328 "runpicture.in"
+#line 332 "runpicture.in"
addFunc(ve, run::gen_runpicture32, primVoid(), SYM(_labelpath), formal(primPicture(), SYM(f), false, false), formal(primString() , SYM(s), false, false), formal(primString() , SYM(size), false, false), formal(primPath(), SYM(g), false, false), formal(primString() , SYM(justify), false, false), formal(primPair(), SYM(offset), false, false), formal(primPen(), SYM(p), false, false));
-#line 334 "runpicture.in"
+#line 338 "runpicture.in"
addFunc(ve, run::gen_runpicture33, primVoid(), SYM(texreset));
-#line 342 "runpicture.in"
+#line 346 "runpicture.in"
addFunc(ve, run::gen_runpicture34, primVoid(), SYM(layer), formal(primPicture(), SYM(f), false, false));
-#line 347 "runpicture.in"
+#line 351 "runpicture.in"
addFunc(ve, run::gen_runpicture35, primVoid(), SYM(newpage), formal(primPicture(), SYM(f), false, false));
-#line 352 "runpicture.in"
+#line 356 "runpicture.in"
addFunc(ve, run::gen_runpicture36, primVoid(), SYM(_image), formal(primPicture(), SYM(f), false, false), formal(realArray2(), SYM(data), false, false), formal(primPair(), SYM(initial), false, false), formal(primPair(), SYM(final), false, false), formal(penArray() , SYM(palette), true, false), formal(primTransform(), SYM(t), true, false), formal(primBoolean(), SYM(copy), true, false), formal(primBoolean(), SYM(antialias), true, false));
-#line 362 "runpicture.in"
+#line 366 "runpicture.in"
addFunc(ve, run::gen_runpicture37, primVoid(), SYM(_image), formal(primPicture(), SYM(f), false, false), formal(penArray2() , SYM(data), false, false), formal(primPair(), SYM(initial), false, false), formal(primPair(), SYM(final), false, false), formal(primTransform(), SYM(t), true, false), formal(primBoolean(), SYM(copy), true, false), formal(primBoolean(), SYM(antialias), true, false));
-#line 370 "runpicture.in"
+#line 374 "runpicture.in"
addFunc(ve, run::gen_runpicture38, primVoid(), SYM(_image), formal(primPicture(), SYM(f), false, false), formal(penFunction(), SYM(f), false, false), formal(primInt(), SYM(width), false, false), formal(primInt(), SYM(height), false, false), formal(primPair(), SYM(initial), false, false), formal(primPair(), SYM(final), false, false), formal(primTransform(), SYM(t), true, false), formal(primBoolean(), SYM(antialias), true, false));
-#line 377 "runpicture.in"
+#line 381 "runpicture.in"
addFunc(ve, run::gen_runpicture39, primString() , SYM(nativeformat));
-#line 382 "runpicture.in"
+#line 386 "runpicture.in"
addFunc(ve, run::gen_runpicture40, primBoolean(), SYM(latex));
-#line 387 "runpicture.in"
+#line 391 "runpicture.in"
addFunc(ve, run::gen_runpicture41, primBoolean(), SYM(pdf));
-#line 392 "runpicture.in"
+#line 396 "runpicture.in"
addFunc(ve, run::gen_runpicture42, primVoid(), SYM(shipout), formal(primString() , SYM(prefix), true, false), formal(primPicture(), SYM(f), false, false), formal(primPicture(), SYM(preamble), true, false), formal(primString() , SYM(format), true, false), formal(primBoolean(), SYM(wait), true, false), formal(primBoolean(), SYM(view), true, false), formal(transformFunction(), SYM(xform), false, false));
-#line 444 "runpicture.in"
+#line 448 "runpicture.in"
addFunc(ve, run::gen_runpicture43, primVoid(), SYM(shipout3), formal(primString() , SYM(prefix), false, false), formal(primPicture(), SYM(f), false, false), formal(primString() , SYM(format), true, false), formal(primReal(), SYM(width), false, false), formal(primReal(), SYM(height), false, false), formal(primReal(), SYM(angle), false, false), formal(primReal(), SYM(zoom), false, false), formal(primTriple(), SYM(m), false, false), formal(primTriple(), SYM(m), false, false), formal(primPair(), SYM(shift), false, false), formal(realArray2(), SYM(t), false, false), formal(realArray(), SYM(background), false, false), formal(tripleArray(), SYM(lights), false, false), formal(realArray2(), SYM(diffuse), false, false), formal(realArray2(), SYM(ambient), false, false), formal(realArray2(), SYM(specular), false, false), formal(primBoolean(), SYM(viewportlighting), false, false), formal(primBoolean(), SYM(view), true, false));
-#line 472 "runpicture.in"
+#line 476 "runpicture.in"
addFunc(ve, run::gen_runpicture44, primVoid(), SYM(shipout3), formal(primString() , SYM(prefix), false, false), formal(primPicture(), SYM(f), false, false));
-#line 477 "runpicture.in"
+#line 481 "runpicture.in"
addFunc(ve, run::gen_runpicture45, primVoid(), SYM(deconstruct), formal(primPicture(), SYM(f), false, false), formal(primPicture(), SYM(preamble), true, false), formal(primReal(), SYM(magnification), true, false), formal(transformFunction(), SYM(xform), false, false));
-#line 607 "runpicture.in"
+#line 611 "runpicture.in"
addFunc(ve, run::gen_runpicture46, primVoid(), SYM(_draw), formal(primPicture(), SYM(f), false, false), formal(primPath3(), SYM(g), false, false), formal(primTriple(), SYM(center), true, false), formal(primPen(), SYM(p), false, false), formal(primInt(), SYM(interaction), true, false));
-#line 617 "runpicture.in"
+#line 621 "runpicture.in"
addFunc(ve, run::gen_runpicture47, primVoid(), SYM(draw), formal(primPicture(), SYM(f), false, false), formal(tripleArray2(), SYM(p), false, false), formal(primTriple(), SYM(center), false, false), formal(primBoolean(), SYM(straight), false, false), formal(penArray() , SYM(p), false, false), formal(primReal(), SYM(opacity), false, false), formal(primReal(), SYM(shininess), false, false), formal(primReal(), SYM(prcshininess), false, false), formal(primTriple(), SYM(normal), false, false), formal(penArray() , SYM(colors), false, false), formal(primInt(), SYM(interaction), false, false), formal(primBoolean(), SYM(prc), true, false));
-#line 627 "runpicture.in"
+#line 631 "runpicture.in"
addFunc(ve, run::gen_runpicture48, primVoid(), SYM(draw), formal(primPicture(), SYM(f), false, false), formal(tripleArray(), SYM(p), false, false), formal(realArray(), SYM(knot), false, false), formal(realArray(), SYM(weights), true, false), formal(primPen(), SYM(p), false, false));
-#line 634 "runpicture.in"
+#line 638 "runpicture.in"
addFunc(ve, run::gen_runpicture49, primVoid(), SYM(draw), formal(primPicture(), SYM(f), false, false), formal(tripleArray2(), SYM(p), false, false), formal(realArray(), SYM(uknot), false, false), formal(realArray(), SYM(vknot), false, false), formal(realArray2(), SYM(weights), true, false), formal(penArray() , SYM(p), false, false), formal(primReal(), SYM(opacity), false, false), formal(primReal(), SYM(shininess), false, false), formal(primReal(), SYM(prcshininess), false, false), formal(penArray() , SYM(colors), false, false));
-#line 643 "runpicture.in"
+#line 647 "runpicture.in"
addFunc(ve, run::gen_runpicture50, primVoid(), SYM(drawPRCsphere), formal(primPicture(), SYM(f), false, false), formal(realArray2(), SYM(t), false, false), formal(primBoolean(), SYM(half), true, false), formal(penArray() , SYM(p), false, false), formal(primReal(), SYM(opacity), false, false), formal(primReal(), SYM(shininess), false, false), formal(primInt(), SYM(type), false, false));
-#line 650 "runpicture.in"
+#line 654 "runpicture.in"
addFunc(ve, run::gen_runpicture51, primVoid(), SYM(drawPRCcylinder), formal(primPicture(), SYM(f), false, false), formal(realArray2(), SYM(t), false, false), formal(penArray() , SYM(p), false, false), formal(primReal(), SYM(opacity), false, false), formal(primReal(), SYM(shininess), false, false));
-#line 657 "runpicture.in"
+#line 661 "runpicture.in"
addFunc(ve, run::gen_runpicture52, primVoid(), SYM(drawPRCdisk), formal(primPicture(), SYM(f), false, false), formal(realArray2(), SYM(t), false, false), formal(penArray() , SYM(p), false, false), formal(primReal(), SYM(opacity), false, false), formal(primReal(), SYM(shininess), false, false));
-#line 664 "runpicture.in"
+#line 668 "runpicture.in"
addFunc(ve, run::gen_runpicture53, primVoid(), SYM(drawPRCtube), formal(primPicture(), SYM(f), false, false), formal(primPath3(), SYM(center), false, false), formal(primPath3(), SYM(g), false, false), formal(penArray() , SYM(p), false, false), formal(primReal(), SYM(opacity), false, false), formal(primReal(), SYM(shininess), false, false));
-#line 671 "runpicture.in"
+#line 675 "runpicture.in"
addFunc(ve, run::gen_runpicture54, primVoid(), SYM(drawpixel), formal(primPicture(), SYM(f), false, false), formal(primTriple(), SYM(v), false, false), formal(primPen(), SYM(p), false, false), formal(primReal(), SYM(width), true, false));
-#line 677 "runpicture.in"
+#line 681 "runpicture.in"
addFunc(ve, run::gen_runpicture55, primVoid(), SYM(draw), formal(primPicture(), SYM(f), false, false), formal(tripleArray(), SYM(v), false, false), formal(IntArray2(), SYM(vi), false, false), formal(tripleArray(), SYM(n), false, false), formal(IntArray2(), SYM(ni), false, false), formal(penArray() , SYM(p), false, false), formal(primReal(), SYM(opacity), false, false), formal(primReal(), SYM(shininess), false, false), formal(primReal(), SYM(prcshininess), false, false), formal(penArray() , SYM(c), true, false), formal(IntArray2(), SYM(ci), true, false));
-#line 687 "runpicture.in"
+#line 691 "runpicture.in"
addFunc(ve, run::gen_runpicture56, primTriple(), SYM(min3), formal(primPicture(), SYM(f), false, false));
-#line 692 "runpicture.in"
+#line 696 "runpicture.in"
addFunc(ve, run::gen_runpicture57, primTriple(), SYM(max3), formal(primPicture(), SYM(f), false, false));
-#line 697 "runpicture.in"
+#line 701 "runpicture.in"
addFunc(ve, run::gen_runpicture58, primTriple(), SYM(size3), formal(primPicture(), SYM(f), false, false));
-#line 703 "runpicture.in"
+#line 707 "runpicture.in"
addFunc(ve, run::gen_runpicture59, primPair(), SYM(minratio), formal(primPicture(), SYM(f), false, false));
-#line 708 "runpicture.in"
+#line 712 "runpicture.in"
addFunc(ve, run::gen_runpicture60, primPair(), SYM(maxratio), formal(primPicture(), SYM(f), false, false));
-#line 713 "runpicture.in"
+#line 717 "runpicture.in"
addFunc(ve, run::gen_runpicture61, primBoolean(), SYM(is3D), formal(primPicture(), SYM(f), false, false));
}
diff --git a/Build/source/utils/asymptote/runpicture.in b/Build/source/utils/asymptote/runpicture.in
index 872d557071f..40209ed5860 100644
--- a/Build/source/utils/asymptote/runpicture.in
+++ b/Build/source/utils/asymptote/runpicture.in
@@ -153,17 +153,21 @@ void latticeshade(picture *f, patharray *g, bool stroke=false,
}
void axialshade(picture *f, patharray *g, bool stroke=false, pen pena, pair a,
- pen penb, pair b, bool copy=true)
+ bool extenda=true, pen penb, pair b, bool extendb=true,
+ bool copy=true)
{
array *(*copyarray)(array *a)=copy ? copyArray: nop;
- f->append(new drawAxialShade(*copyarray(g),stroke,pena,a,penb,b));
+ f->append(new drawAxialShade(*copyarray(g),stroke,pena,a,extenda,penb,b,
+ extendb));
}
void radialshade(picture *f, patharray *g, bool stroke=false, pen pena,
- pair a, real ra, pen penb, pair b, real rb, bool copy=true)
+ pair a, real ra, bool extenda=true, pen penb, pair b, real rb,
+ bool extendb=true, bool copy=true)
{
array *(*copyarray)(array *a)=copy ? copyArray: nop;
- f->append(new drawRadialShade(*copyarray(g),stroke,pena,a,ra,penb,b,rb));
+ f->append(new drawRadialShade(*copyarray(g),stroke,pena,a,ra,extenda,
+ penb,b,rb,extendb));
}
void gouraudshade(picture *f, patharray *g, bool stroke=false,
diff --git a/Build/source/utils/asymptote/runtime.cc b/Build/source/utils/asymptote/runtime.cc
index ac97f0dc39f..99a9149d45c 100644
--- a/Build/source/utils/asymptote/runtime.cc
+++ b/Build/source/utils/asymptote/runtime.cc
@@ -274,7 +274,7 @@ void gen_runtime3(stack *Stack)
{
real x=vm::pop<real>(Stack);
#line 241 "runtime.in"
- {Stack->push<bool>(isnan(x)); return;}
+ {Stack->push<bool>(std::isnan(x)); return;}
}
#line 245 "runtime.in"
diff --git a/Build/source/utils/asymptote/runtime.in b/Build/source/utils/asymptote/runtime.in
index 49e6de4d3eb..56ab4d8447f 100644
--- a/Build/source/utils/asymptote/runtime.in
+++ b/Build/source/utils/asymptote/runtime.in
@@ -239,7 +239,7 @@ bool :boolFalse()
bool isnan(real x)
{
- return isnan(x);
+ return std::isnan(x);
}
array* :pushNullArray()
diff --git a/Build/source/utils/asymptote/seconds.h b/Build/source/utils/asymptote/seconds.h
index c9fb4f0482c..3259471ba59 100644
--- a/Build/source/utils/asymptote/seconds.h
+++ b/Build/source/utils/asymptote/seconds.h
@@ -77,14 +77,19 @@ inline int gettimeofday(struct timeval *tv, struct timezone *tz)
#endif
-inline double seconds()
+inline double totalseconds()
{
- static timeval lasttime;
timeval tv;
gettimeofday(&tv,NULL);
- double seconds=tv.tv_sec-lasttime.tv_sec+
- ((double) tv.tv_usec-lasttime.tv_usec)/1000000.0;
- lasttime=tv;
+ return tv.tv_sec+tv.tv_usec/1000000.0;
+}
+
+inline double seconds()
+{
+ static double lastseconds=totalseconds();
+ double t=totalseconds();
+ double seconds=t-lastseconds;
+ lastseconds=t;
return seconds;
}
diff --git a/Build/source/utils/asymptote/settings.cc b/Build/source/utils/asymptote/settings.cc
index d25e69f48c6..ba4c980cb23 100644
--- a/Build/source/utils/asymptote/settings.cc
+++ b/Build/source/utils/asymptote/settings.cc
@@ -1347,9 +1347,9 @@ string lookup(const string& symbol)
void initDir() {
if(getSetting<string>("sysdir").empty()) {
- string s=lookup("SELFAUTOPARENT");
+ string s=lookup("TEXMFMAIN");
if(s.size() > 1) {
- string texmf=s+dirsep+"texmf-dist"+dirsep;
+ string texmf=s+dirsep;
docdir=texmf+"doc"+dirsep+"asymptote";
Setting("sysdir")=texmf+"asymptote";
s=lookup("ASYMPTOTE_HOME");
diff --git a/Build/source/utils/asymptote/texfile.cc b/Build/source/utils/asymptote/texfile.cc
index 8e1e07b9c4b..6299f0d9dfb 100644
--- a/Build/source/utils/asymptote/texfile.cc
+++ b/Build/source/utils/asymptote/texfile.cc
@@ -539,7 +539,9 @@ void svgtexfile::begingradientshade(bool axial, ColorSpace colorspace,
void svgtexfile::gradientshade(bool axial, ColorSpace colorspace,
const pen& pena, const pair& a, double ra,
- const pen& penb, const pair& b, double rb)
+ bool, const pen& penb, const pair& b,
+ double rb, bool)
+
{
*out << "' fill='url(#grad" << gradientcount << ")'";
fillrule(pena);
diff --git a/Build/source/utils/asymptote/texfile.h b/Build/source/utils/asymptote/texfile.h
index 3d2fb7024da..1965b98f758 100644
--- a/Build/source/utils/asymptote/texfile.h
+++ b/Build/source/utils/asymptote/texfile.h
@@ -349,7 +349,8 @@ public:
const pen& penb, const pair& b, double rb);
void gradientshade(bool axial, ColorSpace colorspace,
const pen& pena, const pair& a, double ra,
- const pen& penb, const pair& b, double rb);
+ bool extenda, const pen& penb, const pair& b,
+ double rb, bool extendb);
void gouraudshade(const pen& p0, const pair& z0,
const pen& p1, const pair& z1,
diff --git a/Build/source/utils/asymptote/triple.h b/Build/source/utils/asymptote/triple.h
index 62bda62d914..312a16b24c6 100644
--- a/Build/source/utils/asymptote/triple.h
+++ b/Build/source/utils/asymptote/triple.h
@@ -18,6 +18,11 @@
#include "angle.h"
#include "pair.h"
+namespace run {
+void transpose(double *a, size_t n);
+void inverse(double *a, size_t n);
+}
+
namespace camp {
typedef double Triple[3];
@@ -25,7 +30,8 @@ typedef double Triple[3];
class triple;
bool isIdTransform3(const double* t);
-void copyTransform3(double*& d, const double* s);
+void copyTransform3(double*& d, const double* s,
+ GCPlacement placement=NoGC);
void multiplyTransform3(double*& t, const double* s, const double* r);
void copyTriples(size_t n, Triple* d, const Triple* s);
@@ -59,35 +65,35 @@ public:
double gety() const { return y; }
double getz() const { return z; }
- // transform by column-major matrix
+ // transform by row-major matrix
friend triple operator* (const double* t, const triple& v)
{
if(t == NULL)
return v;
- double f=t[3]*v.x+t[7]*v.y+t[11]*v.z+t[15];
+ double f=t[12]*v.x+t[13]*v.y+t[14]*v.z+t[15];
if(f == 0.0)
reportError("division by 0 in transform of a triple");
f=1.0/f;
- return triple((t[0]*v.x+t[4]*v.y+t[8]*v.z+t[12])*f,
- (t[1]*v.x+t[5]*v.y+t[9]*v.z+t[13])*f,
- (t[2]*v.x+t[6]*v.y+t[10]*v.z+t[14])*f);
+ return triple((t[0]*v.x+t[1]*v.y+t[2]*v.z+t[3])*f,
+ (t[4]*v.x+t[5]*v.y+t[6]*v.z+t[7])*f,
+ (t[8]*v.x+t[9]*v.y+t[10]*v.z+t[11])*f);
}
- friend triple multshiftless(const double* t, const triple& v)
+ friend triple transformNormal(const double* t, const triple& v)
{
if(t == NULL)
return v;
- double f=t[3]*v.x+t[7]*v.y+t[11]*v.z+t[15];
- if(f == 0.0)
- reportError("division by 0 in shiftless transform of a triple");
- f=1.0/f;
-
- return triple((t[0]*v.x+t[4]*v.y+t[8]*v.z)*f,
- (t[1]*v.x+t[5]*v.y+t[9]*v.z)*f,
- (t[2]*v.x+t[6]*v.y+t[10]*v.z)*f);
+ double *T=new double[16];
+ copyTransform3(T,t);
+ T[3]=T[7]=T[11]=0.0;
+ run::inverse(T,4);
+ run::transpose(T,4);
+ triple V=T*v;
+ delete T;
+ return unit(V);
}
friend void transformtriples(const double* t, size_t n, triple* d,
@@ -96,23 +102,8 @@ public:
if(n == 0 || d == NULL || s == NULL)
return;
- if(isIdTransform3(t)) {
- copytriples(n, d, s);
- return;
- }
-
- for(size_t i=0; i < n; i++) {
- const double& x = s[i].x;
- const double& y = s[i].y;
- const double& z = s[i].z;
- double f=t[3]*x+t[7]*y+t[11]*z+t[15];
- if(f == 0.0)
- reportError("division by 0 in transformtriples");
- f=1.0/f;
- d[i].x=(t[0]*x+t[4]*y+t[8]*z+t[12])*f;
- d[i].y=(t[1]*x+t[5]*y+t[9]*z+t[13])*f;
- d[i].z=(t[2]*x+t[6]*y+t[10]*z+t[14])*f;
- }
+ for(size_t i=0; i < n; i++)
+ d[i]=t*s[i];
}
friend void copytriples(size_t n, triple* d, const triple* s)