summaryrefslogtreecommitdiff
path: root/Build
diff options
context:
space:
mode:
authorMartin Ruckert <martin.ruckert@hm.edu>2022-02-23 17:27:52 +0000
committerMartin Ruckert <martin.ruckert@hm.edu>2022-02-23 17:27:52 +0000
commite5b3846c9784f7d4f5d8cf0d55ee71f68b4f570b (patch)
tree2458978cbb47065e46012d0f4392116a39792baa /Build
parent24db278b60d9548c734f41c4c6a9a26a12b00749 (diff)
upgrading hitex to version 1.4 of the HINT file format
git-svn-id: svn://tug.org/texlive/trunk@62150 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build')
-rw-r--r--Build/source/texk/web2c/hitexdir/hiformat.hntbin966205 -> 1113708 bytes
-rw-r--r--Build/source/texk/web2c/hitexdir/hiformat.pdfbin1922833 -> 1255126 bytes
-rw-r--r--Build/source/texk/web2c/hitexdir/hiformat.w715
-rw-r--r--Build/source/texk/web2c/hitexdir/hilexer.c1413
-rw-r--r--Build/source/texk/web2c/hitexdir/hintview/src/basetypes.h8
-rw-r--r--Build/source/texk/web2c/hitexdir/hintview/src/error.h2
-rw-r--r--Build/source/texk/web2c/hitexdir/hintview/src/format.h140
-rw-r--r--Build/source/texk/web2c/hitexdir/hintview/src/get.c178
-rw-r--r--Build/source/texk/web2c/hitexdir/hintview/src/get.h69
-rw-r--r--Build/source/texk/web2c/hitexdir/hintview/src/hfonts.c70
-rw-r--r--Build/source/texk/web2c/hitexdir/hintview/src/hfonts.h28
-rw-r--r--Build/source/texk/web2c/hitexdir/hintview/src/hint.c216
-rw-r--r--Build/source/texk/web2c/hitexdir/hintview/src/hint.h40
-rw-r--r--Build/source/texk/web2c/hitexdir/hintview/src/hrender.c206
-rw-r--r--Build/source/texk/web2c/hitexdir/hintview/src/hrender.h10
-rw-r--r--Build/source/texk/web2c/hitexdir/hintview/src/htex.c1351
-rw-r--r--Build/source/texk/web2c/hitexdir/hintview/src/htex.h94
-rw-r--r--Build/source/texk/web2c/hitexdir/hintview/src/rendernative.h22
-rw-r--r--Build/source/texk/web2c/hitexdir/hintview/src/tables.c2
-rw-r--r--Build/source/texk/web2c/hitexdir/hiparser.c2796
-rw-r--r--Build/source/texk/web2c/hitexdir/hiparser.h48
-rw-r--r--Build/source/texk/web2c/hitexdir/hitex.w543
-rw-r--r--Build/source/texk/web2c/hitexdir/hitexman.hntbin0 -> 619775 bytes
-rw-r--r--Build/source/texk/web2c/hitexdir/hitexman.pdfbin165784 -> 219160 bytes
24 files changed, 4146 insertions, 3805 deletions
diff --git a/Build/source/texk/web2c/hitexdir/hiformat.hnt b/Build/source/texk/web2c/hitexdir/hiformat.hnt
index cdd45e13a0e..6ef7d6bbdc6 100644
--- a/Build/source/texk/web2c/hitexdir/hiformat.hnt
+++ b/Build/source/texk/web2c/hitexdir/hiformat.hnt
Binary files differ
diff --git a/Build/source/texk/web2c/hitexdir/hiformat.pdf b/Build/source/texk/web2c/hitexdir/hiformat.pdf
index 13f4e9a75b4..00507294efa 100644
--- a/Build/source/texk/web2c/hitexdir/hiformat.pdf
+++ b/Build/source/texk/web2c/hitexdir/hiformat.pdf
Binary files differ
diff --git a/Build/source/texk/web2c/hitexdir/hiformat.w b/Build/source/texk/web2c/hitexdir/hiformat.w
index b0324de1f57..6e6b7416721 100644
--- a/Build/source/texk/web2c/hitexdir/hiformat.w
+++ b/Build/source/texk/web2c/hitexdir/hiformat.w
@@ -47,9 +47,9 @@
\def\setrevision$#1: #2 ${\gdef\lastrevision{#2}}
-\setrevision$Revision: 2655 $
+\setrevision$Revision: 2690 $
\def\setdate$#1(#2) ${\gdef\lastdate{#2}}
-\setdate$Date: 2022-01-24 09:01:21 +0100 (Mon, 24 Jan 2022) $
+\setdate$Date: 2022-02-22 16:40:16 +0100 (Tue, 22 Feb 2022) $
\null
@@ -85,7 +85,7 @@
{
\baselineskip=1cm\parindent=0pt
{\largetitlefont\raggedright HINT: The File Format}\par
- \leftline{\smalltitlefont Version 1.3}
+ \leftline{\smalltitlefont Version 1.4}
\vskip 10pt plus 0.5fill
\leftline{\smalltitlefont Reflowable}
\vskip-3pt
@@ -334,20 +334,25 @@ to the internal representation of the glyph and finally to a short format descri
\subsection{Scanning the Long Format}
-First, \.{shrink} reads the input file and extracts a sequence of tokens. This is called ``scanning''\index{scanning}.
-We generate the procedure to do the scanning using the program \.{flex}\cite{JL:flexbison}\index{flex+{\tt flex}} which is the
-GNU version of the common UNIX tool \.{lex}\cite{JL:lexyacc}\index{lex+{\tt lex}}.
-
-The input to \.{flex} is a list of pattern/\kern -1pt action rules where the pattern is a regular
-expression and the action is a piece of \CEE\ code.
-Most of the time, the \CEE\ code is very simple: it just returns the right token\index{token} number
-to the parser which we consider shortly.
-
-The code that defines the tokens will be marked with a line ending in ``\redsymbol''.
-This symbol\index{symbol} stands for ``{\it Reading the long format\/}''.
-These code sequences define the syntactical elements of the long format and at the same time
-implement the reading process. All sections where that happens are preceded by a similar heading
-and for reference they are conveniently listed together starting on page~\pageref{codeindex}.
+First, \.{shrink} reads the input file and extracts a sequence of
+tokens. This is called ``scanning''\index{scanning}. We generate the
+procedure to do the scanning using the program
+\.{flex}\cite{JL:flexbison}\index{flex+{\tt flex}} which is the GNU
+version of the common UNIX tool \.{lex}\cite{JL:lexyacc}\index{lex+{\tt lex}}.
+
+The input to \.{flex} is a list of pattern/\kern -1pt action rules
+where the pattern is a regular expression and the action is a piece of
+\CEE\ code. Most of the time, the \CEE\ code is very simple: it just
+returns the right token\index{token} number to the parser which we
+consider shortly.
+
+The code that defines the tokens will be marked with a line ending in
+``\redsymbol''. This symbol\index{symbol} stands for ``{\it Reading
+the long format\/}''. These code sequences define the syntactical
+elements of the long format and at the same time implement the reading
+process. All sections where that happens are preceded by a similar
+heading and for reference they are conveniently listed together
+starting on page~\pageref{codeindex}.
\codesection{\redsymbol}{Reading the Long Format}\redindex{1}{2}{Glyphs}
@s START symbol
@@ -1269,8 +1274,9 @@ void hput_utf8(uint32_t c)
@
\subsection{Floating Point Numbers}
-You know a floating point numbers\index{floating point number} when you see it because it features a radix\index{radix point} point.
-The optional exponent\index{exponent} allows you to ``float'' the point.
+You know a floating point numbers\index{floating point number} when
+you see it because it features a radix\index{radix point} point. The
+optional exponent\index{exponent} allows you to ``float'' the point.
\readcode
@s FPNUM symbol
@@ -1285,7 +1291,8 @@ The optional exponent\index{exponent} allows you to ``float'' the point.
@
The layout of floating point variables of type |double|
-or |float| typically follows the IEEE754\index{IEEE754} standard\cite{IEEE754-1985}\cite{IEEE754-2008}.
+or |float| typically follows the IEEE754\index{IEEE754}
+standard\cite{IEEE754-1985}\cite{IEEE754-2008}.
We use the following definitions:
\index{float32 t+\&{float32\_t}}
@@ -1306,26 +1313,25 @@ We use the following definitions:
@s float32_t int
@s float64_t int
-We expect a variable of type |float64_t| to have a binary representation using 64 bit.
-The most significant bit is the sign bit, then follow $|DBL_E_BITS|=11$ bits for
-the exponent\index{exponent}, and $|DBL_M_BITS|=52$ bits for the mantissa\index{mantissa}.
-The sign\index{sign bit} bit is 1 for a negative number and 0 for a positive number.
-A floating point number is stored in normalized\index{normalization} form which means that
-the mantissa is shifted such that it has exactly 52+1 bit not counting leading zeros.
-The leading bit is then always 1 and there is no need to store it. So 52 bits suffice.
-To store the exponent, the excess $q=1023$ is added and the result is stored as an
-unsigned 11 bit number.
-For example if we regard the exponent bits and the mantissa bits as unsigned binary numbers
-$e$ and $m$ then the absolute value of such a floating point number can be expressed
-as $(1+m*2^{-52})\cdot2^{e-1023}$.
-We make similar assumptions about variables of type |float32_t| using the constants as defined above.
-
-
-
-
-
-To convert the decimal representation of a floating point number to binary values of type |float64_t|,
-we use a \CEE\ library function.
+We expect a variable of type |float64_t| to have a binary
+representation using 64 bit. The most significant bit is the sign
+bit, then follow $|DBL_E_BITS|=11$ bits for the
+exponent\index{exponent}, and $|DBL_M_BITS|=52$ bits for the
+mantissa\index{mantissa}. The sign\index{sign bit} bit is 1 for a
+negative number and 0 for a positive number. A floating point number
+is stored in normalized\index{normalization} form which means that the
+mantissa is shifted such that it has exactly 52+1 bit not counting
+leading zeros. The leading bit is then always 1 and there is no need
+to store it. So 52 bits suffice. To store the exponent, the excess
+$q=1023$ is added and the result is stored as an unsigned 11 bit
+number. For example if we regard the exponent bits and the mantissa
+bits as unsigned binary numbers $e$ and $m$ then the absolute value of
+such a floating point number can be expressed as
+$(1+m*2^{-52})\cdot2^{e-1023}$. We make similar assumptions about
+variables of type |float32_t| using the constants as defined above.
+
+To convert the decimal representation of a floating point number to
+binary values of type |float64_t|, we use a \CEE\ library function.
@<scanning macros@>=
#define SCAN_DECFLOAT @[yylval.f=atof(yytext)@]
@@ -1339,17 +1345,21 @@ an integer number will do as well.
number: UNSIGNED {$$=(float64_t)$1; } | SIGNED {$$=(float64_t)$1; } | FPNUM;
@
-Unfortunately the decimal representation is not optimal for floating point numbers
-since even simple numbers in decimal notation like $0.1$ do not have an exact
-representation as a binary floating point number.
-So if we want a notation that allows an exact representation
-of binary floating point numbers, we must use a hexadecimal\index{hexadecimal} representation.
-Hexadecimal floating point numbers start with an optional sign, then as usual the two characters ``{\tt 0x}'',
-then follows a sequence of hex digits, a radix point, more hex digits, and an optional exponent.
-The optional exponent starts with the character ``{\tt x}'', followed by an optional sign, and some more
-hex digits. The hexadecimal exponent is given as a base 16 number and it is interpreted as an exponent
-with the base 16. As an example an exponent of ``{\tt x10}'', would multiply the mantissa by $16^{16}$.
-In other words it would shift any mantissa 16 hexadecimal digits to the left. Here are the exact rules:
+Unfortunately the decimal representation is not optimal for floating
+point numbers since even simple numbers in decimal notation like $0.1$
+do not have an exact representation as a binary floating point number.
+So if we want a notation that allows an exact representation of binary
+floating point numbers, we must use a hexadecimal\index{hexadecimal}
+representation. Hexadecimal floating point numbers start with an
+optional sign, then as usual the two characters ``{\tt 0x}'', then
+follows a sequence of hex digits, a radix point, more hex digits, and
+an optional exponent. The optional exponent starts with the character
+``{\tt x}'', followed by an optional sign, and some more hex
+digits. The hexadecimal exponent is given as a base 16 number and it
+is interpreted as an exponent with the base 16. As an example an
+exponent of ``{\tt x10}'', would multiply the mantissa by $16^{16}$.
+In other words it would shift any mantissa 16 hexadecimal digits to
+the left. Here are the exact rules:
@<scanning rules@>=
::@=[+-]?0x{HEX}+\.{HEX}+(x[+-]?{HEX}+)?@> :< SCAN_HEXFLOAT; return FPNUM; >:
@@ -1609,12 +1619,16 @@ float32_t hget_float32(void)
@
\subsection{Fixed Point Numbers}
-\TeX\ internally represents most real numbers as fixed\index{fixed point number} point numbers or ``scaled integers''\index{scaled integer}.
-The type {\bf Scaled} is defined as a signed 32 bit integer, but we consider it as a fixed point number
-with the binary radix point just in the middle with sixteen bits before and sixteen bits after it.
-To convert an integer into a scaled number, we multiply it by |ONE|; to convert a floating point number
-into a scaled number, we multiply it by |ONE| and |ROUND| the result to the nearest integer;
-to convert a scaled number to a floating point number we divide it by |(float64_t)ONE|.
+\TeX\ internally represents most real numbers as fixed\index{fixed
+point number} point numbers or ``scaled integers''\index{scaled
+integer}. The type {\bf Scaled} is defined as a signed 32 bit
+integer, but we consider it as a fixed point number with the binary
+radix point just in the middle with sixteen bits before and sixteen
+bits after it. To convert an integer into a scaled number, we
+multiply it by |ONE|; to convert a floating point number into a scaled
+number, we multiply it by |ONE| and |ROUND| the result to the nearest
+integer; to convert a scaled number to a floating point number we
+divide it by |(float64_t)ONE|.
\noindent
@<hint basic types@>=
@@ -1764,8 +1778,6 @@ xdimen: dimension number H number V { $$.w=$1; @+$$.h=$2; @+$$.v=$4; }
| dimension number V { $$.w=$1; @+$$.h=0.0; @+$$.v=$2; }
| dimension { $$.w=$1; @+$$.h=0.0; @+$$.v=0.0; };
-
-
xdimen_node: start XDIMEN xdimen END { hput_tags($1,hput_xdimen(&($3))); };
@
@@ -1810,7 +1822,8 @@ void hget_xdimen(uint8_t a, Xdimen *x)
Note that the info value |b000|, usually indicating a reference,
is not supported for extended dimensions.
Most nodes that need an extended dimension offer the opportunity to give
-a reference directly without the start and end byte. An exception is the glue node,
+a reference directly without the start and end byte.
+An exception is the glue node,
but glue nodes that need an extended width are rare.
@<get functions@>=
@@ -3733,7 +3746,7 @@ case TAG(vpack_kind,b111): HGET_PACK(vpack_kind,b111); @+ break;
if ((I)&b010) { Dimen a; @+HGET32(a); hwritef(" shifted"); @+hwrite_dimension(a);@+}\
{ Stretch p; @+HGET_STRETCH(p);@+hwrite_plus(&p);@+}\
{ Stretch m; @+HGET_STRETCH(m);@+hwrite_minus(&m);@+}\
- if ((I)&b100) {Xdimen x;@+ hget_xdimen_node(&x); @+hwrite_xdimen_node(&x);@+} else HGET_REF(xdimen_kind)@;\
+ if ((I)&b100) {Xdimen x;@+ hget_xdimen_node(&x); @+hwrite_xdimen_node(&x);@+} else HGET_REF(xdimen_kind);\
{ List l; @+hget_list(&l);@+ hwrite_list(&l); @+}
@#
@@ -4258,12 +4271,14 @@ can be embedded in the node (info bit |b010|) or again it is given by a referenc
@
-The following parsing rules are slightly more complicated than I would like them to be, but it seems more important
-to achieve a regular layout of the short format nodes where all sub nodes are located at the end of a node.
-In this case, I want to put a |param_ref| before an |xdimen| node, but otherwise have
-the |xdimen_ref| before a |param_list|.
-The |par_dimen| rule is introduced only to avoid a reduce/reduce conflict in the parser.
-The parsing of |empty_param_list| and |non_empty_param_list| is explained in
+The following parsing rules are slightly more complicated than I would
+like them to be, but it seems more important to achieve a regular
+layout of the short format nodes where all sub nodes are located at
+the end of a node. In this case, I want to put a |param_ref| before
+an |xdimen| node, but otherwise have the |xdimen_ref| before a
+|param_list|. The |par_dimen| rule is introduced only to avoid a
+reduce/reduce conflict in the parser. The parsing of
+|empty_param_list| and |non_empty_param_list| is explained in
section~\secref{paramlist}.
@<parsing rules@>=
@@ -4588,28 +4603,64 @@ Info hput_span_count(uint32_t n)
\section{Extensions to \TeX}\hascode
\subsection{Images}
-Images behave pretty much like glue\index{glue}. They can stretch (or shrink)
-together with the surrounding glue to fill a horizontal or vertical box.
-Like glue, they stretch in the horizontal direction when filling an horizontal box
-and they stretch in the vertical direction as part of a vertical box.
-Stretchability and shrinkability are optional parts of an image node.
-
-Unlike glue, images have both a width and a height.
-The relation of height to width, the aspect ratio, is preserved by stretching and shrinking.
-
-While glue often has a zero width, images usually have a nonzero natural size and making
-them much smaller is undesirable.
-The natural width and height of an image are optional parts of an image node;
-typically this information is contained in the image data.
-
-The only required part of an image node is the number of the auxiliary section
-where the image data can be found.
+In the first implementation attempt, images behaved pretty much
+like glue\index{glue}. They could stretch (or shrink) together with
+the surrounding glue to fill a horizontal or vertical box. While I
+thought this would be in line with \TeX's concepts, it proved to be a
+bad decission because images, as opposed to glue, would stretch or
+shrink horizontaly {\it and} vertically at the same time.
+This would require a two pass algorithm to pack boxes: first to
+determine the glue setting and a secondf pass to determine the proper
+image dimensions. Otherwise incorrect width or height values would
+propagate all the way through a sequence of nested boxes. Even worse
+so, this two pass algorithm would be needed in the viewer if images
+were contained in boxes that had extended dimensions.
+
+The new design described below allows images with extended dimensions.
+This covers the case of stretchable or shrinkable images inside of
+extended boxes. The given extended dimensions are considered maximum
+values. The stretching or shrinking of images will always preserve the
+relation of width${}/{}$height, the aspect ratio.
+
+For convenience, we allow missing values in the long format, for
+example the aspect ratio, if they can be determined from the image
+data. In the short format, the necessary information for a correct
+layout must be available without using the image data.
+
+In the long format, the only required parts of an image node are the
+number of the auxiliary section where the image data can be found and
+the descriptive text which is there to make the document more
+accessible. The section number is followed by the optional aspect
+ratio, width, and height of the image. If some of these values are
+missing, it must be possible to determine them from the image
+data. The node ends with the description.
+
+The short format, starts with the section number of the image data and
+ends with the description. Missing values for aspect ratio, width, and
+height are only allowed if they can be recomputed from the given data.
+A missing width or height is represented by a reference to the zero
+extended dimension. If the |b100| bit is set, the aspect ratio is
+present as a 32 bit floating point value followed by extended
+dimensions for width and height. The info value |b100| indicates a
+width reference followed by a height reference; the value |b111|
+indicates a width node followed by a height node; the value |b110|
+indicates a height reference followed by a width node; and the value
+|b101| indicates a width reference followed by a height node. The
+last two rules reflect the requirement that subnodes are always
+located at the end of a node.
+
+The remaining info values are used as follows:
+The value |b000| is used for a reference to an image.
+The value |b011| indicates an immediate width and an immediate height.
+The value |b010| indicates an aspect ratio and an immediate width.
+The value |b001| indicates an aspect ratio and an immediate height.
@<hint types@>=
typedef struct {@+
uint16_t n;@+
-Dimen w,h;@+
-Stretch p,m;@+
+float32_t a;@+
+Xdimen w,h;@+
+uint8_t wr,hr;@+
} Image;
@
@@ -4617,63 +4668,451 @@ Stretch p,m;@+
\readcode
@s IMAGE symbol
@s image symbol
-@s image_dimen symbol
+@s image_aspect symbol
+@s image_aspect symbol
+@s image_width symbol
+@s image_height symbol
+@s image_spec symbol
@<symbols@>=
%token IMAGE "image"
-%type <x> image image_dimen
+%token WIDTH "width"
+%token HEIGHT "height"
+%type <xd> image_width image_height
+%type <f> image_aspect
+%type <info> image_spec image
@
@<scanning rules@>=
::@=image@> :< return IMAGE; >:
+::@=width@> :< return WIDTH; >:
+::@=height@> :< return HEIGHT; >:
@
@<parsing rules@>=
-image_dimen: dimension dimension {$$.w=$1; $$.h=$2;} | {$$.w=$$.h=0; };
-image: UNSIGNED image_dimen plus minus { $$.w=$2.w; $$.h=$2.h; $$.p=$3; $$.m=$4; RNG("Section number",$1,3,max_section_no);$$.n=$1; };
-content_node: start IMAGE image END { hput_tags($1,hput_image(&($3)));}
+image_aspect: number {$$=$1;} | {$$=0.0;};
+image_width: WIDTH xdimen { $$=$2;}
+ | { $$=xdimen_defaults[zero_xdimen_no];};
+image_height: HEIGHT xdimen { $$=$2; }
+ | { $$=xdimen_defaults[zero_xdimen_no];};
+
+image_spec: UNSIGNED image_aspect image_width image_height
+ {$$=hput_image_spec($1,$2,0,&($3),0,&($4));}
+ | UNSIGNED image_aspect WIDTH REFERENCE image_height
+ {$$=hput_image_spec($1,$2,$4,NULL,0,&($5));}
+ | UNSIGNED image_aspect image_width HEIGHT REFERENCE
+ {$$=hput_image_spec($1,$2,0,&($3),$5,NULL);}
+ | UNSIGNED image_aspect WIDTH REFERENCE HEIGHT REFERENCE
+ {$$=hput_image_spec($1,$2,$4,NULL,$6,NULL);};
+
+image: image_spec list {$$=$1;};
+
+content_node: start IMAGE image END { hput_tags($1,TAG(image_kind,$3));};
@
\writecode
@<write functions@>=
void hwrite_image(Image *x)
-{ hwritef(" %u",x->n);
- if (x->w!=0 ||x->h!=0) { hwrite_dimension(x->w); hwrite_dimension(x->h);@+}
- hwrite_plus(&x->p);
- hwrite_minus(&x->m);
+{ RNG("Section number",x->n,3,max_section_no); hwritef(" %u",x->n);
+ if (x->a!=0.0) hwrite_float64(x->a);
+ if (x->wr!=0) hwritef(" width *%u",x->wr);
+ else if (x->w.w!=0 ||x->w.h!=0.0 || x->w.v!=0.0)
+ { hwritef(" width"); hwrite_xdimen(&x->w); }
+ if (x->hr!=0) hwritef(" height *%u",x->hr);
+ else if (x->h.w!=0 || x->h.h!=0.0 || x->h.v!=0.0)
+ { hwritef(" height"); hwrite_xdimen(&x->h); }
}
@
\getcode
@<cases to get content@>=
@t\1\kern1em@>
-case TAG(image_kind,b100): @+ { Image x;@+HGET_IMAGE(b100,x);@+}@+break;
-case TAG(image_kind,b101): @+ { Image x;@+HGET_IMAGE(b101,x);@+}@+break;
-case TAG(image_kind,b110): @+ { Image x;@+HGET_IMAGE(b110,x);@+}@+break;
-case TAG(image_kind,b111): @+ { Image x;@+HGET_IMAGE(b111,x);@+}@+break;
+case TAG(image_kind,b001): @+ HGET_IMAGE(b001);@+break;
+case TAG(image_kind,b010): @+ HGET_IMAGE(b010);@+break;
+case TAG(image_kind,b011): @+ HGET_IMAGE(b011);@+break;
+case TAG(image_kind,b100): @+ HGET_IMAGE(b100);@+break;
+case TAG(image_kind,b101): @+ HGET_IMAGE(b101);@+break;
+case TAG(image_kind,b110): @+ HGET_IMAGE(b110);@+break;
+case TAG(image_kind,b111): @+ HGET_IMAGE(b111);@+break;
@
@<get macros@>=
-#define @[HGET_IMAGE(I,X)@] @/\
-HGET16((X).n);RNG("Section number",(X).n,3,max_section_no); \
-if (I&b010) {HGET32((X).w);HGET32((X).h);@+} \
-else (X).w=(X).h=0;\
-if (I&b001) {HGET_STRETCH((X).p);HGET_STRETCH((X).m);@+}\
-else { (X).p.f=(X).m.f=0.0; (X).p.o=(X).m.o=normal_o;@+}\
-hwrite_image(&(X));
+#define @[HGET_IMAGE(I)@] @/\
+{ Image x={0};\
+HGET16(x.n);\
+if ((I)&b100) { x.a=hget_float32();\
+ if ((I)==b111) {hget_xdimen_node(&x.w);hget_xdimen_node(&x.h);}\
+ else if ((I)==b110) {x.hr=HGET8;hget_xdimen_node(&x.w);}\
+ else if ((I)==b101) {x.wr=HGET8;hget_xdimen_node(&x.h);}\
+ else {x.wr=HGET8;x.hr=HGET8;}}\
+else if((I)==b011) {HGET32(x.w.w);HGET32(x.h.w);} \
+else if((I)==b010) { x.a=hget_float32(); HGET32(x.w.w);}\
+else if((I)==b001){ x.a=hget_float32(); HGET32(x.h.w);}\
+hwrite_image(&x);\
+{List d; hget_list(&d);hwrite_list(&d);}}@/
@
+
+Because the long format can omit part of the image specification
+which is required for the short format if the necessary information
+is contained in the image data, we have to implement the extraction
+of image information before we can implement the |hput_image_spec|
+function.
+
\putcode
@<put functions@>=
-uint8_t hput_image(Image *x)
-{ Info i=b100;
- HPUT16(x->n);
- if (x->w!=0 || x->h!=0)@+ {HPUT32(x->w); HPUT32(x->h); i|=b010;@+ }
- if (x->p.f!=0.0 || x->m.f!=0.0)@+ {hput_stretch(&x->p); hput_stretch(&x->m); i|=b001;@+ }
- return TAG(image_kind,i);
+@<image functions@>@;
+Info hput_image_spec(uint32_t n, float32_t a,
+ uint32_t wr, Xdimen *w, uint32_t hr, Xdimen *h)
+{ HPUT16(n);
+ if (w!=NULL && h!=NULL)
+ { if (w->h==0.0 && w->v==0.0 && h->h==0.0 && h->v==0.0)
+ return hput_image_dimens(n,a,w->w,h->w);
+ else
+ { hput_image_aspect(n,a);
+ hput_xdimen_node(w);hput_xdimen_node(h);
+ return b111;
+ }
+ }
+ else if (w!=NULL && h==NULL)
+ { if (w->h==0.0 && w->v==0.0 && hr==zero_xdimen_no)
+ return hput_image_dimens(n,a,w->w,0);
+ else
+ { hput_image_aspect(n,a);
+ HPUT8(hr);hput_xdimen_node(w);
+ return b110;
+ }
+ }
+ else if (w==NULL && h!=NULL)
+ { if (wr==zero_xdimen_no && h->h==0.0 && h->v==0.0)
+ return hput_image_dimens(n,a,0,h->w);
+ else
+ { hput_image_aspect(n,a);
+ HPUT8(wr);hput_xdimen_node(h);
+ return b101;
+ }
+ }
+ else
+ { if (wr==zero_xdimen_no && hr==zero_xdimen_no)
+ return hput_image_dimens(n,a,0,0);
+ else
+ { hput_image_aspect(n,a);
+ HPUT8(wr);HPUT8(hr);
+ return b100;
+ }
+ }
+}
+@
+
+If no extended dimensions are involved in an image specification,
+we use |hput_image_dimen|.
+
+@<image functions@>=
+@<auxiliar image functions@>@;
+static Info hput_image_dimens(int n,float32_t a, Dimen w, Dimen h)
+{ Dimen iw,ih;
+ double ia;
+ hget_image_dimens(n,&ia,&iw,&ih);
+ @<merge stored image dimensions with dimensions given@>@;
+ if (w!=0 && h!=0)
+ { HPUT32(iw); HPUT32(ih); return b011; }
+ else if (a!=0.0)
+ { if (h!=0)
+ { hput_float32((float32_t)ia); HPUT32(ih); return b001; }
+ else
+ { hput_float32((float32_t)ia); HPUT32(iw); return b010; }
+ }
+ else
+ { HPUT32(iw); HPUT32(ih); return b011; }
+}
+@
+
+If extended dimensions are involved, we need |hput_image_aspect|.
+@<image functions@>=
+static void hput_image_aspect(int n,double a)
+{
+ if (a==0.0) {Dimen w,h; hget_image_dimens(n,&a,&w,&h);}
+ if (a!=0.0) hput_float32(a);
+ else QUIT("Unable to determine aspect ratio of image %d",n);
+}
+@
+
+
+When we have found the width, height or aspect ratio of the stored
+image, we can merge this information with the information given by the
+user. Note that from width and height the aspect ratio can always be
+determined. The user might very well specify different values than
+stored in the image. In this case the user given dimensions are
+interpreted as maximum dimensions and the aspect ratio as given in the
+image file takes precedence over an user specified value. This is
+accomplished by the following:
+
+@<merge stored image dimensions with dimensions given@>=
+{ if (ia==0.0)
+ { if (a!=0.0) ia=a;
+ else if(w!=0 && h!=0) ia=(double)w/(double)h;
+ else QUIT("Unable to determine dimensions of image %d",n);
+ }
+ if (w==0 && h==0)
+ { if (iw==0) iw=round(ih * ia);
+ else if (ih==0) ih=round(iw/ia);
+ }
+ else if (h==0)
+ { iw=w; ih=round(w/ia); }
+ else if (w==0)
+ { ih=h; iw=round(h*ia);}
+ else
+ { Dimen x;
+ x = round(h*ia);
+ if (w>x) w = x;
+ x = round(w/ia);
+ if (h>x) h=x;
+ ih = h;
+ iw = w;
+ }
}
@
+We define a few macros and variables for the reading of image files.
+
+@<auxiliar image functions@>=
+#define IMG_BUF_MAX 54
+#define IMG_HEAD_MAX 2
+static unsigned char img_buf[IMG_BUF_MAX];
+static size_t img_buf_size;
+#define @[LittleEndian32(X)@] (img_buf[(X)]+(img_buf[(X)+1]<<8)+\
+ (img_buf[(X)+2]<<16)+(img_buf[(X)+3]<<24))
+
+#define @[BigEndian16(X)@] (img_buf[(X)+1]+(img_buf[(X)]<<8))
+
+#define @[BigEndian32(X)@] (img_buf[(X)+3]+(img_buf[(X)+2]<<8)+\
+ (img_buf[(X)+1]<<16)+(img_buf[(X)]<<24))
+
+#define Match2(X,A,B) ((img_buf[(X)]==(A)) && (img_buf[(X)+1]==(B)))
+#define Match4(X,A,B,C,D) (Match2(X,A,B)&&Match2((X)+2,C,D))
+
+#define @[GET_IMG_BUF(X)@] \
+if (img_buf_size<X) \
+ { size_t i=fread(img_buf+img_buf_size,1,(X)-img_buf_size,f); \
+ if (i<0) QUIT("Unable to read image %s",fn); \
+ else if (i==0) QUIT("Unable to read image header %s",fn); \
+ else img_buf_size+=i; \
+ }
+@
+
+Considering the different image formats, we start with Windows
+Bitmaps. A Windows bitmap file usually has the extension {\tt .bmp}
+but the better way to check for a Windows bitmap file ist to examine
+the first two byte of the file: the ASCII codes for `B' and `M'. Once
+we have verified the file type, we find the width and height of the
+bitmap in pixels at offsets |0x12| and |0x16| stored as little-endian
+32 bit integers. At offsets |0x26| and |0x2A|, we find the horizontal
+and vertical resolution in pixel per meter stored in the same format.
+This is sufficient to compute the true width and height of the image
+in scaled points. If either the width or the height is already known,
+we just use the aspect ratio and compute the missing value.
+
+The Windows Bitmap format is easy to process but not very
+efficient. So the support for this format in the \HINT\ format is
+deprecated and will disappear. You should use one of the formats
+described next.
+
+@<auxiliar image functions@>=
+static bool get_BMP_info(FILE *f, char *fn, double *a, Dimen *w, Dimen *h)
+{ double wpx,hpx;
+ double xppm,yppm;
+ GET_IMG_BUF(2);
+ if (!Match2(0,'B','M')) return false;
+ GET_IMG_BUF(0x2E);
+ wpx=(double)LittleEndian32(0x12); /*width in pixel*/
+ hpx=(double)LittleEndian32(0x16); /*height in pixel*/
+ xppm=(double)LittleEndian32(0x26); /* horizontal pixel per meter*/
+ yppm=(double)LittleEndian32(0x2A); /* vertical pixel per meter*/
+ *w= floor(0.5+ONE*(72.00*1000.0/25.4)*wpx/xppm);
+ *h= floor(0.5+ONE*(72.00*1000.0/25.4)*hpx/yppm);
+ *a = (wpx/xppm)/(hpx/yppm);
+ return true;
+}
+@
+
+Now we repeat this process for image files using the Portable Network
+Graphics file format. This file format is well suited to simple
+graphics that do not use color gradients. These images usually have
+the extension {\tt .png} and start with an eight byte signature:
+|0x89| followed by the ASCII Codes `P', `N', `G', followd by a
+carriage return (|0x0D| and line feed (|0x0A|), an DOS end-of-file
+character (|0x1A|) and final line feed (|0x0A|). After the signature
+follows a list of chunks. The first chunk is the image header chunk.
+Each chunk starts with the size of the chunk stored as big-endian 32
+bit integer, followed by the chunk name stored as four ASCII codes
+followed by the chunk data and a CRC. The size, as stored in the
+chunk, does not include the size itself, nor the name, and neither the
+CRC. The first chunk is the IHDR chunk. The chunk data of the IHDR
+chunk starts with the width and the height of the image in pixels
+stored as 32 bit big-endian integers.
+
+Finding the image resolution takes some more effort. The image
+resolution is stored in an optional chunk named ``pHYs'' for the
+physical pixel dimensions. All we know is that this chunk, if it
+exists, will appear after the IHDR chunk and before the (required)
+IDAT chunk. The pHYs chunk contains two 32 bit big-endian integers,
+giving the horizontal and vertical pixels per unit, and a one byte
+unit specifier, which is either 0 for an undefined unit or 1 for the
+meter as unit. With an undefined unit, only the aspect ratio of the
+pixels and hence the aspect ratio of the image can be determined.
+
+
+@<auxiliar image functions@>=
+static bool get_PNG_info(FILE *f, char *fn, double *a, Dimen *w, Dimen *h)
+{ int pos, size;
+ double wpx,hpx;
+ double xppu,yppu;
+ int unit;
+ GET_IMG_BUF(24);
+ if (!Match4(0, 0x89, 'P', 'N', 'G') ||
+ !Match4(4, 0x0D, 0x0A, 0x1A, 0x0A)) return false;
+ size=BigEndian32(8);
+ if (!Match4(12,'I', 'H', 'D', 'R')) return false;
+ wpx=(double)BigEndian32(16);
+ hpx=(double)BigEndian32(20);
+ pos=20+size;
+ while (true)
+ { if (fseek(f,pos,SEEK_SET)!=0) return false;
+ img_buf_size=0;
+ GET_IMG_BUF(17);
+ size=BigEndian32(0);
+ if (Match4(4,'p', 'H', 'Y', 's'))
+ { xppu =(double)BigEndian32(8);
+ yppu =(double)BigEndian32(12);
+ unit=img_buf[16];
+ if (unit==0)
+ { *a =(wpx/xppu)/(hpx/yppu);
+ return true;
+ }
+ else if (unit==1)
+ {
+ *w=floor(0.5+ONE*(72.00/0.0254)*wpx/xppu);
+ *h=floor(0.5+ONE*(72.00/0.0254)*hpx/yppu);
+ *a = (wpx/xppu)/(hpx/yppu);
+ return true;
+ }
+ else
+ return false;
+ }
+ else if (Match4(4,'I', 'D', 'A', 'T'))
+ return false;
+ else
+ pos=pos+12+size;
+ }
+ return false;
+}
+@
+
+For photographs, the JPEG File Interchange Format (JFIF) is more
+appropriate. JPEG files come with all sorts of file extensions like
+{\tt .jpg}, {\tt .jpeg}, or {\tt .jfif}. We check the file siganture:
+it starts with the the SOI (Start of Image) marker |0xFF|, |0xD8|
+followed by the JIFI-Tag. The JIFI-Tag starts with the segment marker
+APP0 (|0xFF|, |0xE0|) followed by the 2 byte segment size, followed by
+the ASCII codes `J', `F', `I', `F' followed by a zero byte. Next is a
+two byte version number which we do not read. Before the resolution
+proper there is a resolution unit indicator byte (0 = no units, 1 =
+dots per inch, 2 = dots per cm) and then comes the horizontal and
+vertical resolution both as 16 Bit big-endian integers. To find the
+actual width and height, we have to search for a start of frame marker
+(|0xFF|, |0xC0|+$n$ with $0\le n\le 15$). Which is followed by the 2
+byte segment size, the 1 byte sample precission, the 2 byte height and
+the 2 byte width.
+
+
+@<auxiliar image functions@>=
+static bool get_JPG_info(FILE *f, char *fn, double *a, Dimen *w, Dimen *h)
+{ int pos, size;
+ double wpx,hpx;
+ double xppu,yppu;
+ int unit;
+ GET_IMG_BUF(18);
+
+ if (!Match4(0, 0xFF,0xD8, 0xFF, 0xE0)) return false;
+ size=BigEndian16(4);
+ if (!Match4(6,'J', 'F', 'I', 'F')) return false;
+ if (img_buf[10] != 0) return false;
+ unit=img_buf[13];
+ xppu=(double)BigEndian16(14);
+ yppu=(double)BigEndian16(16);
+ pos=4+size;
+ while (true)
+ { if (fseek(f,pos,SEEK_SET)!=0) return false;
+ img_buf_size=0;
+ GET_IMG_BUF(10);
+ if (img_buf[0] != 0xFF) return false; /* Not the start of a segment */
+ if ( (img_buf[1]&0xF0) == 0xC0) /* Start of Frame */
+ { hpx =(double)BigEndian16(5);
+ wpx =(double)BigEndian16(7);
+ if (unit==0)
+ { *a = (wpx/xppu)/(hpx/yppu);
+ return true;
+ }
+ else if (unit==1)
+ { *w = floor(0.5+ONE*72.00*wpx/xppu);
+ *h = floor(0.5+ONE*72.00*hpx/yppu);
+ *a = (wpx/xppu)/(hpx/yppu);
+ return true;
+ }
+ else if (unit==2)
+ { *w = floor(0.5+ONE*(72.00/2.54)*wpx/xppu);
+ *h = floor(0.5+ONE*(72.00/2.54)*hpx/yppu);
+ *a = (wpx/xppu)/(hpx/yppu);
+ return true;
+ }
+ else
+ return false;
+ }
+ else
+ { size= BigEndian16(2);
+ pos=pos+2+size;
+ }
+ }
+ return false;
+}
+@
+
+There is still one image format missing: scalable vector graphics.
+In the moment, I tend not to include a further image format into
+the definition of the \HINT\ file format but instead use the
+PostScript subset that is used for Type 1 fonts to encode
+vector graphics. Any \HINT\ viewer must support Type 1
+PostScript fonts and hence it has already the necessary interpreter.
+So it seems reasonable to put the burden of converting vector graphics
+into a Type 1 PostScript font on the generator of \HINT\ files
+and keep the \HINT\ viewer as small and simple as possible.
+Now we determine width, height
+and aspect ratio based on an image file.
+
+
+We combine all three functions into the |hget_image_dimens|
+function.
+
+@<auxiliar image functions@>=
+static void hget_image_dimens(int n, double *a, Dimen *w, Dimen *h)
+{ char *fn;
+ FILE *f;
+ *a=0.0;
+ *w=*h=0;
+ fn=dir[n].file_name;
+ f=fopen(fn,"rb");
+ if (f!=NULL)
+ { img_buf_size=0;
+ if (!get_BMP_info(f,fn,a,w,h) &&
+ !get_PNG_info(f,fn,a,w,h) &&
+ !get_JPG_info(f,fn,a,w,h))
+ DBG(DBGDEF,"Unknown image type %s",fn);
+ fclose(f);
+ DBG(DBGDEF,"image %d: width= %fpt height= %fpt\n",
+ n,*w/(double)ONE,*h/(double)ONE);
+ }
+}
+@
\subsection{Positions, Outlines, Links, and Labels}\label{labels}
\index{position}\index{outline}\index{link}\index{label}
@@ -7670,7 +8109,7 @@ def_node:
| start BASELINE ref baseline END @| { DEF($$,baseline_kind,$3);@+hput_tags($1,TAG(baseline_kind, $4));@+}
| start LIGATURE ref ligature END @| { DEF($$,ligature_kind,$3);@+hput_tags($1,hput_ligature(&($4)));}
| start DISC ref disc END @| { DEF($$,disc_kind,$3);@+ hput_tags($1,hput_disc(&($4)));}
-| start IMAGE ref image END @| { DEF($$,image_kind,$3);@+ hput_tags($1,hput_image(&($4)));}
+| start IMAGE ref image END @| { DEF($$,image_kind,$3);@+ hput_tags($1,TAG(image_kind,$4));}
| start PARAM ref parameters END @| { DEF($$,param_kind,$3);@+ hput_tags($1,hput_list($1+2,&($4)));}
| start PAGE ref page END @| { DEF($$,page_kind,$3);@+ hput_tags($1,TAG(page_kind,0));};
@
@@ -7985,7 +8424,7 @@ font_param: @/
| start GLUE fref glue END { hput_tags($1,hput_glue(&($4)));}
| start LANGUAGE fref string END { hput_string($4);hput_tags($1,TAG(language_kind,0));}
| start RULE fref rule END { hput_tags($1,hput_rule(&($4)));}
-| start IMAGE fref image END { hput_tags($1,hput_image(&($4)));};
+| start IMAGE fref image END { hput_tags($1,TAG(image_kind,$4));};
fref: ref @/{ RNG("Font parameter",$1,0,MAX_FONT_PARAMS); };
@
@@ -9285,13 +9724,16 @@ hnode_size[TAG(item_kind,6)] = I_T(2,1);
@
\subsection{Images}\index{image}
-If not given by a reference, images contain a section reference and optional dimensions, stretch, and shrink.
+If not given by a reference, images contain a section reference and optional dimensions and a descriptive list.
@<initialize the |hnode_size| array@>=
hnode_size[TAG(image_kind,b000)] = 1+1+1;
-hnode_size[TAG(image_kind,b100)] = 1+2+1;
-hnode_size[TAG(image_kind,b101)] = 1+2+4+4+1;
-hnode_size[TAG(image_kind,b110)] = 1+2+4+4+1;
-hnode_size[TAG(image_kind,b111)] = 1+2+4+4+4+4+1;
+hnode_size[TAG(image_kind,b001)] = I_T(1+2+4+4,1);
+hnode_size[TAG(image_kind,b010)] = I_T(1+2+4+4,1);
+hnode_size[TAG(image_kind,b011)] = I_T(1+2+4+4,1);
+hnode_size[TAG(image_kind,b100)] = I_T(1+2+4+1+1,1);
+hnode_size[TAG(image_kind,b101)] = I_T(1+2+4+1,2);
+hnode_size[TAG(image_kind,b110)] = I_T(1+2+4+1,2);
+hnode_size[TAG(image_kind,b111)] = I_T(1+2+4,3);
@
\subsection{Links}\index{link}
@@ -9789,19 +10231,29 @@ case TAG(math_kind,b111): @+ break;
\subsection{Images}\index{image}
\noindent
@<skip macros@>=
-#define @[HTEG_IMAGE(I,X)@] @/\
-if (I&b001) {HTEG_STRETCH((X).m);HTEG_STRETCH((X).p);@+}\
-else { (X).p.f=(X).m.f=0.0; (X).p.o=(X).m.o=normal_o;@+}\
-if (I&b010) {HTEG32((X).h);HTEG32((X).w);@+} \
-else (X).w=(X).h=0;\
-HTEG16((X).n);
+#define @[HTEG_IMAGE(I)@] @/\
+{ Image x={0}; List d; hteg_list(&d);\
+if ((I)&b100) {\
+ if ((I)==b111) {hteg_xdimen_node(&x.h);hteg_xdimen_node(&x.w);}\
+ else if ((I)==b110) {hteg_xdimen_node(&x.w);x.hr=HTEG8;}\
+ else if ((I)==b101) {hteg_xdimen_node(&x.h);x.wr=HTEG8;}\
+ else {x.hr=HTEG8;x.wr=HTEG8;}\
+x.a=hteg_float32();}\
+else if((I)==b011) {HTEG32(x.h.w);HTEG32(x.w.w);} \
+else if((I)==b010) { HTEG32(x.w.w); x.a=hteg_float32();}\
+else if((I)==b001){ HTEG32(x.h.w); x.a=hteg_float32();}\
+HTEG16(x.n);}
@
@<cases to skip content@>=
-@t\1\kern1em@>case TAG(image_kind,b100): @+ { Image x;@+HTEG_IMAGE(b100,x);@+}@+break;
-case TAG(image_kind,b101): @+ { Image x;@+HTEG_IMAGE(b101,x);@+}@+break;
-case TAG(image_kind,b110): @+ { Image x;@+HTEG_IMAGE(b110,x);@+}@+break;
-case TAG(image_kind,b111): @+ { Image x;@+HTEG_IMAGE(b111,x);@+}@+break;
+@t\1\kern1em@>
+case TAG(image_kind,b001): @+ HTEG_IMAGE(b001);@+break;
+case TAG(image_kind,b010): @+ HTEG_IMAGE(b010);@+break;
+case TAG(image_kind,b011): @+ HTEG_IMAGE(b011);@+break;
+case TAG(image_kind,b100): @+ HTEG_IMAGE(b100);@+break;
+case TAG(image_kind,b101): @+ HTEG_IMAGE(b101);@+break;
+case TAG(image_kind,b110): @+ HTEG_IMAGE(b110);@+break;
+case TAG(image_kind,b111): @+ HTEG_IMAGE(b111);@+break;
@
\subsection{Links and Labels}
@@ -9993,12 +10445,10 @@ typedef double float64_t;
#error @=float64 type must have size 8@>
#endif
#define HINT_VERSION 1
-#define HINT_SUB_VERSION 3
+#define HINT_SUB_VERSION 4
#endif
@
-
-
\subsection{{\tt format.h}}\index{format.h+{\tt format.h}}
The \.{format.h} file contains definitions of types, macros, variables and functions
that are needed in other compilation units.
@@ -10233,7 +10683,7 @@ extern void hput_utf8(uint32_t c);
extern uint8_t hput_ligature(Lig *l);
extern uint8_t hput_disc(Disc *h);
extern Info hput_span_count(uint32_t n);
-extern uint8_t hput_image(Image *x);
+extern Info hput_image_spec(uint32_t n, float32_t a, uint32_t wr, Xdimen *w, uint32_t hr, Xdimen *h);
extern void hput_string(char *str);
extern void hput_range(uint8_t pg, bool on);
extern void hput_max_definitions(void);
@@ -10362,6 +10812,7 @@ extern int yylex(void);
@(hishrink.c@>=
#include "hibasetypes.h"
+#include <math.h>
#include <string.h>
#include <ctype.h>
#include <sys/types.h>
diff --git a/Build/source/texk/web2c/hitexdir/hilexer.c b/Build/source/texk/web2c/hitexdir/hilexer.c
index 0ae187127ea..36017f7a51a 100644
--- a/Build/source/texk/web2c/hitexdir/hilexer.c
+++ b/Build/source/texk/web2c/hitexdir/hilexer.c
@@ -1,13 +1,12 @@
-#line 2 "lexer.c"
+#line 1 "lexer.c"
-#line 4 "lexer.c"
+#line 3 "lexer.c"
#define YY_INT_ALIGNED short int
/* A lexical scanner generated by flex */
/* %not-for-header */
-
/* %if-c-only */
/* %if-not-reentrant */
@@ -17,8 +16,8 @@
#define FLEX_SCANNER
#define YY_FLEX_MAJOR_VERSION 2
-#define YY_FLEX_MINOR_VERSION 5
-#define YY_FLEX_SUBMINOR_VERSION 37
+#define YY_FLEX_MINOR_VERSION 6
+#define YY_FLEX_SUBMINOR_VERSION 4
#if YY_FLEX_SUBMINOR_VERSION > 0
#define FLEX_BETA
#endif
@@ -27,7 +26,7 @@
/* %endif */
/* %if-c-only */
-
+
/* %endif */
/* %if-c-only */
@@ -109,50 +108,39 @@ typedef unsigned int flex_uint32_t;
#define UINT32_MAX (4294967295U)
#endif
+#ifndef SIZE_MAX
+#define SIZE_MAX (~(size_t)0)
+#endif
+
#endif /* ! C99 */
#endif /* ! FLEXINT_H */
/* %endif */
+/* begin standard C++ headers. */
/* %if-c++-only */
/* %endif */
-#ifdef __cplusplus
-
-/* The "const" storage-class-modifier is valid. */
-#define YY_USE_CONST
-
-#else /* ! __cplusplus */
-
-/* C99 requires __STDC__ to be defined as 1. */
-#if defined (__STDC__)
-
-#define YY_USE_CONST
-
-#endif /* defined (__STDC__) */
-#endif /* ! __cplusplus */
-
-#ifdef YY_USE_CONST
+/* TODO: this is always defined, so inline it */
#define yyconst const
+
+#if defined(__GNUC__) && __GNUC__ >= 3
+#define yynoreturn __attribute__((__noreturn__))
#else
-#define yyconst
+#define yynoreturn
#endif
/* %not-for-header */
-
/* Returned upon end-of-file. */
#define YY_NULL 0
/* %ok-for-header */
/* %not-for-header */
-
-/* Promotes a possibly negative, possibly signed char to an unsigned
- * integer for use as an array index. If the signed char is negative,
- * we want to instead treat it as an 8-bit unsigned char, hence the
- * double cast.
+/* Promotes a possibly negative, possibly signed char to an
+ * integer in range [0..255] for use as an array index.
*/
-#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
+#define YY_SC_TO_UI(c) ((YY_CHAR) (c))
/* %ok-for-header */
/* %if-reentrant */
@@ -167,25 +155,29 @@ typedef unsigned int flex_uint32_t;
* definition of BEGIN.
*/
#define BEGIN (yy_start) = 1 + 2 *
-
/* Translate the current start state into a value that can be later handed
* to BEGIN to return to the state. The YYSTATE alias is for lex
* compatibility.
*/
#define YY_START (((yy_start) - 1) / 2)
#define YYSTATE YY_START
-
/* Action number for EOF rule of a given start state. */
#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
-
/* Special action meaning "start processing a new file". */
-#define YY_NEW_FILE yyrestart(yyin )
-
+#define YY_NEW_FILE yyrestart( yyin )
#define YY_END_OF_BUFFER_CHAR 0
/* Size of default input buffer. */
#ifndef YY_BUF_SIZE
+#ifdef __ia64__
+/* On IA-64, the buffer size is 16k, not 8k.
+ * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
+ * Ditto for the __ia64__ case accordingly.
+ */
+#define YY_BUF_SIZE 32768
+#else
#define YY_BUF_SIZE 16384
+#endif /* __ia64__ */
#endif
/* The state buf must be large enough to hold one state per character in the main buffer.
@@ -203,7 +195,7 @@ typedef size_t yy_size_t;
#endif
/* %if-not-reentrant */
-extern yy_size_t yyleng;
+extern int yyleng;
/* %endif */
/* %if-c-only */
@@ -215,10 +207,10 @@ extern FILE *yyin, *yyout;
#define EOB_ACT_CONTINUE_SCAN 0
#define EOB_ACT_END_OF_FILE 1
#define EOB_ACT_LAST_MATCH 2
-
+
/* Note: We specifically omit the test for yy_rule_can_match_eol because it requires
* access to the local variable yy_act. Since yyless() is a macro, it would break
- * existing scanners that call yyless() from OUTSIDE yylex.
+ * existing scanners that call yyless() from OUTSIDE yylex.
* One obvious solution it to make yy_act a global. I tried that, and saw
* a 5% performance hit in a non-yylineno scanner, because yy_act is
* normally declared as a register variable-- so it is not worth it.
@@ -230,6 +222,13 @@ extern FILE *yyin, *yyout;
if ( yytext[yyl] == '\n' )\
--yylineno;\
}while(0)
+ #define YY_LINENO_REWIND_TO(dst) \
+ do {\
+ const char *p;\
+ for ( p = yy_cp-1; p >= (dst); --p)\
+ if ( *p == '\n' )\
+ --yylineno;\
+ }while(0)
/* Return all but the first "n" matched characters back to the input stream. */
#define yyless(n) \
@@ -244,7 +243,6 @@ extern FILE *yyin, *yyout;
YY_DO_BEFORE_ACTION; /* set up yytext again */ \
} \
while ( 0 )
-
#define unput(c) yyunput( c, (yytext_ptr) )
#ifndef YY_STRUCT_YY_BUFFER_STATE
@@ -264,12 +262,12 @@ struct yy_buffer_state
/* Size of input buffer in bytes, not including room for EOB
* characters.
*/
- yy_size_t yy_buf_size;
+ int yy_buf_size;
/* Number of characters read into yy_ch_buf, not including EOB
* characters.
*/
- yy_size_t yy_n_chars;
+ int 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
@@ -292,7 +290,7 @@ struct yy_buffer_state
int yy_bs_lineno; /**< The line count. */
int yy_bs_column; /**< The column count. */
-
+
/* Whether to try to fill the input buffer when we reach the
* end of it.
*/
@@ -319,13 +317,12 @@ struct yy_buffer_state
/* %if-c-only Standard (non-C++) definition */
/* %not-for-header */
-
/* %if-not-reentrant */
/* Stack of input buffers. */
static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
-static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
+static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */
/* %endif */
/* %ok-for-header */
@@ -340,7 +337,6 @@ static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
? (yy_buffer_stack)[(yy_buffer_stack_top)] \
: NULL)
-
/* Same as previous macro, but useful when we know that the buffer stack is not
* NULL or when we need an lvalue. For internal use only.
*/
@@ -350,14 +346,13 @@ static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
/* %if-not-reentrant */
/* %not-for-header */
-
/* yy_hold_char holds the character lost when yytext is formed. */
static char yy_hold_char;
-static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */
-yy_size_t yyleng;
+static int yy_n_chars; /* number of characters read into yy_ch_buf */
+int yyleng;
/* Points to current character in buffer. */
-static char *yy_c_buf_p = (char *) 0;
+static char *yy_c_buf_p = NULL;
static int yy_init = 0; /* whether we need to initialize */
static int yy_start = 0; /* start state number */
@@ -369,78 +364,77 @@ static int yy_did_buffer_switch_on_eof;
/* %endif */
-void yyrestart (FILE *input_file );
-void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer );
-YY_BUFFER_STATE yy_create_buffer (FILE *file,int size );
-void yy_delete_buffer (YY_BUFFER_STATE b );
-void yy_flush_buffer (YY_BUFFER_STATE b );
-void yypush_buffer_state (YY_BUFFER_STATE new_buffer );
-void yypop_buffer_state (void );
-
-static void yyensure_buffer_stack (void );
-static void yy_load_buffer_state (void );
-static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file );
+void yyrestart ( FILE *input_file );
+void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer );
+YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size );
+void yy_delete_buffer ( YY_BUFFER_STATE b );
+void yy_flush_buffer ( YY_BUFFER_STATE b );
+void yypush_buffer_state ( YY_BUFFER_STATE new_buffer );
+void yypop_buffer_state ( void );
-#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER )
+static void yyensure_buffer_stack ( void );
+static void yy_load_buffer_state ( void );
+static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file );
+#define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER )
-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,yy_size_t len );
+YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size );
+YY_BUFFER_STATE yy_scan_string ( const char *yy_str );
+YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len );
/* %endif */
-void *yyalloc (yy_size_t );
-void *yyrealloc (void *,yy_size_t );
-void yyfree (void * );
+void *yyalloc ( yy_size_t );
+void *yyrealloc ( void *, yy_size_t );
+void yyfree ( void * );
#define yy_new_buffer yy_create_buffer
-
#define yy_set_interactive(is_interactive) \
{ \
if ( ! YY_CURRENT_BUFFER ){ \
yyensure_buffer_stack (); \
YY_CURRENT_BUFFER_LVALUE = \
- yy_create_buffer(yyin,YY_BUF_SIZE ); \
+ yy_create_buffer( yyin, YY_BUF_SIZE ); \
} \
YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
}
-
#define yy_set_bol(at_bol) \
{ \
if ( ! YY_CURRENT_BUFFER ){\
yyensure_buffer_stack (); \
YY_CURRENT_BUFFER_LVALUE = \
- yy_create_buffer(yyin,YY_BUF_SIZE ); \
+ yy_create_buffer( yyin, YY_BUF_SIZE ); \
} \
YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
}
-
#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
/* %% [1.0] yytext/yyin/yyout/yy_state_type/yylineno etc. def's & init go here */
/* Begin user sect3 */
#define FLEX_DEBUG
+typedef flex_uint8_t YY_CHAR;
-typedef unsigned char YY_CHAR;
-
-FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
+FILE *yyin = NULL, *yyout = NULL;
typedef int yy_state_type;
extern int yylineno;
-
int yylineno = 1;
extern char *yytext;
+#ifdef yytext_ptr
+#undef yytext_ptr
+#endif
#define yytext_ptr yytext
+/* %% [1.5] DFA */
+
/* %if-c-only Standard (non-C++) definition */
-static yy_state_type yy_get_previous_state (void );
-static yy_state_type yy_try_NUL_trans (yy_state_type current_state );
-static int yy_get_next_buffer (void );
-static void yy_fatal_error (yyconst char msg[] );
+static yy_state_type yy_get_previous_state ( void );
+static yy_state_type yy_try_NUL_trans ( yy_state_type current_state );
+static int yy_get_next_buffer ( void );
+static void yynoreturn yy_fatal_error ( const char* msg );
/* %endif */
@@ -450,15 +444,14 @@ static void yy_fatal_error (yyconst char msg[] );
#define YY_DO_BEFORE_ACTION \
(yytext_ptr) = yy_bp; \
/* %% [2.0] code to fiddle yytext and yyleng for yymore() goes here \ */\
- yyleng = (size_t) (yy_cp - yy_bp); \
+ yyleng = (int) (yy_cp - yy_bp); \
(yy_hold_char) = *yy_cp; \
*yy_cp = '\0'; \
/* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\
(yy_c_buf_p) = yy_cp;
-
/* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */
-#define YY_NUM_RULES 126
-#define YY_END_OF_BUFFER 127
+#define YY_NUM_RULES 128
+#define YY_END_OF_BUFFER 129
/* This struct is not used in this scanner,
but its presence is necessary. */
struct yy_trans_info
@@ -466,51 +459,52 @@ struct yy_trans_info
flex_int32_t yy_verify;
flex_int32_t yy_nxt;
};
-static yyconst flex_int16_t yy_accept[371] =
+static const flex_int16_t yy_accept[381] =
{ 0,
- 0, 0, 0, 0, 0, 0, 127, 125, 6, 6,
- 43, 47, 10, 125, 114, 125, 4, 4, 1, 2,
- 41, 124, 124, 124, 124, 124, 124, 124, 31, 124,
- 124, 124, 124, 124, 124, 124, 124, 124, 124, 32,
- 124, 40, 14, 15, 13, 11, 74, 74, 58, 72,
- 48, 73, 49, 50, 74, 126, 126, 126, 126, 0,
- 0, 0, 0, 0, 0, 0, 7, 5, 5, 9,
- 9, 0, 0, 0, 4, 124, 124, 124, 124, 124,
- 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
- 124, 124, 29, 124, 124, 124, 124, 124, 124, 124,
-
- 28, 124, 97, 124, 124, 124, 124, 27, 124, 124,
- 124, 124, 124, 124, 124, 86, 124, 124, 124, 124,
- 12, 0, 58, 58, 0, 59, 55, 52, 56, 60,
- 53, 54, 57, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 51, 71, 75, 0, 0, 20, 20,
- 16, 0, 0, 0, 5, 0, 9, 24, 8, 85,
- 124, 124, 124, 106, 124, 124, 124, 124, 124, 124,
- 124, 124, 124, 33, 124, 124, 124, 124, 124, 124,
- 124, 124, 37, 124, 124, 124, 124, 124, 124, 124,
- 124, 124, 120, 107, 124, 98, 124, 124, 95, 124,
-
- 124, 124, 102, 124, 124, 124, 124, 124, 113, 124,
- 124, 124, 124, 59, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 76, 0, 18, 17, 21, 0,
- 0, 0, 0, 0, 124, 124, 124, 124, 124, 124,
- 124, 124, 124, 124, 94, 124, 34, 124, 122, 44,
- 124, 78, 124, 82, 124, 101, 42, 124, 124, 112,
- 124, 124, 108, 96, 124, 124, 115, 124, 124, 45,
- 124, 39, 124, 124, 124, 124, 79, 124, 84, 124,
- 70, 65, 61, 66, 69, 63, 64, 62, 68, 67,
- 77, 19, 22, 0, 0, 24, 25, 124, 89, 124,
-
- 124, 124, 124, 124, 87, 26, 124, 124, 35, 111,
- 3, 81, 104, 105, 124, 124, 124, 46, 124, 121,
- 124, 116, 124, 124, 124, 100, 83, 124, 23, 0,
- 99, 124, 90, 103, 124, 124, 124, 91, 124, 124,
- 124, 124, 124, 124, 124, 110, 30, 0, 25, 124,
- 123, 124, 124, 124, 88, 124, 109, 36, 118, 80,
- 92, 124, 124, 38, 93, 124, 117, 124, 119, 0
+ 0, 0, 0, 0, 0, 0, 129, 127, 6, 6,
+ 43, 47, 10, 127, 116, 127, 4, 4, 1, 2,
+ 41, 126, 126, 126, 126, 126, 126, 126, 31, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 32,
+ 126, 126, 40, 14, 15, 13, 11, 74, 74, 58,
+ 72, 48, 73, 49, 50, 74, 128, 128, 128, 128,
+ 0, 0, 0, 0, 0, 0, 0, 7, 5, 5,
+ 9, 9, 0, 0, 0, 4, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 29, 126, 126, 126, 126, 126,
+
+ 126, 126, 28, 126, 97, 126, 126, 126, 126, 27,
+ 126, 126, 126, 126, 126, 126, 126, 86, 126, 126,
+ 126, 126, 126, 12, 0, 58, 58, 0, 59, 55,
+ 52, 56, 60, 53, 54, 57, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 51, 71, 75, 0,
+ 0, 20, 20, 16, 0, 0, 0, 5, 0, 9,
+ 24, 8, 85, 126, 126, 126, 108, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 33, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 37, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 122, 109, 126, 98,
+
+ 126, 126, 95, 126, 126, 126, 102, 126, 126, 126,
+ 126, 126, 115, 126, 126, 126, 126, 126, 59, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 76,
+ 0, 18, 17, 21, 0, 0, 0, 0, 0, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 94,
+ 126, 34, 126, 124, 44, 126, 78, 126, 126, 82,
+ 126, 101, 42, 126, 126, 114, 126, 126, 110, 96,
+ 126, 126, 117, 126, 126, 45, 126, 39, 126, 126,
+ 126, 126, 79, 126, 84, 126, 126, 70, 65, 61,
+ 66, 69, 63, 64, 62, 68, 67, 77, 19, 22,
+
+ 0, 0, 24, 25, 126, 89, 126, 126, 126, 126,
+ 126, 87, 26, 126, 126, 35, 113, 3, 126, 81,
+ 104, 107, 126, 126, 126, 46, 126, 123, 126, 118,
+ 126, 126, 126, 100, 83, 105, 126, 23, 0, 99,
+ 126, 90, 103, 126, 126, 126, 91, 106, 126, 126,
+ 126, 126, 126, 126, 126, 112, 30, 0, 25, 126,
+ 125, 126, 126, 126, 88, 126, 111, 36, 120, 80,
+ 92, 126, 126, 38, 93, 126, 119, 126, 121, 0
} ;
-static yyconst flex_int32_t yy_ec[256] =
+static const YY_CHAR yy_ec[256] =
{ 0,
1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
4, 4, 2, 1, 1, 1, 1, 1, 1, 1,
@@ -542,7 +536,7 @@ static yyconst flex_int32_t yy_ec[256] =
65, 65, 65, 65, 65
} ;
-static yyconst flex_int32_t yy_meta[66] =
+static const YY_CHAR yy_meta[66] =
{ 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -553,178 +547,181 @@ static yyconst flex_int32_t yy_meta[66] =
4, 1, 1, 1, 4
} ;
-static yyconst flex_int16_t yy_base[376] =
+static const flex_int16_t yy_base[386] =
{ 0,
- 0, 0, 65, 130, 194, 258, 629, 630, 630, 630,
- 630, 630, 74, 68, 64, 68, 77, 72, 630, 630,
- 630, 53, 61, 58, 59, 570, 57, 581, 65, 57,
- 0, 587, 73, 74, 100, 106, 107, 104, 112, 113,
- 587, 630, 630, 630, 630, 615, 630, 117, 148, 162,
- 630, 630, 630, 630, 322, 630, 562, 561, 560, 611,
- 610, 609, 556, 555, 554, 165, 630, 630, 107, 154,
- 162, 157, 166, 193, 170, 0, 160, 571, 560, 558,
- 563, 24, 63, 153, 560, 173, 561, 148, 559, 572,
- 567, 570, 550, 564, 550, 184, 566, 180, 168, 106,
-
- 0, 560, 0, 545, 182, 550, 542, 0, 548, 538,
- 548, 556, 549, 539, 554, 539, 539, 552, 547, 542,
- 630, 228, 233, 237, 241, 243, 247, 630, 630, 630,
- 630, 630, 630, 250, 253, 257, 263, 266, 269, 272,
- 276, 279, 282, 630, 630, 630, 523, 522, 630, 573,
- 572, 571, 518, 517, 285, 288, 299, 291, 354, 0,
- 522, 535, 536, 0, 520, 518, 518, 528, 516, 530,
- 529, 530, 531, 519, 511, 509, 523, 511, 502, 522,
- 504, 516, 0, 509, 507, 515, 512, 498, 513, 515,
- 504, 506, 0, 0, 492, 0, 500, 506, 509, 508,
-
- 489, 500, 0, 501, 485, 498, 498, 490, 0, 477,
- 497, 479, 485, 249, 357, 364, 367, 370, 375, 378,
- 388, 396, 399, 402, 630, 470, 630, 521, 630, 520,
- 467, 421, 409, 431, 474, 478, 479, 485, 476, 483,
- 473, 478, 471, 479, 0, 450, 451, 439, 0, 0,
- 450, 0, 446, 0, 451, 0, 0, 439, 429, 0,
- 444, 421, 0, 0, 421, 430, 0, 422, 416, 0,
- 422, 0, 417, 398, 416, 411, 0, 397, 0, 402,
- 630, 630, 630, 630, 630, 630, 630, 630, 630, 630,
- 630, 630, 630, 431, 315, 630, 441, 380, 0, 390,
-
- 379, 382, 380, 381, 0, 0, 356, 371, 0, 0,
- 0, 0, 0, 0, 372, 350, 346, 0, 351, 0,
- 344, 0, 340, 317, 297, 0, 0, 292, 630, 454,
- 0, 289, 0, 0, 281, 280, 279, 0, 285, 265,
- 224, 225, 203, 205, 209, 0, 0, 464, 478, 202,
- 0, 186, 172, 163, 0, 151, 0, 0, 0, 0,
- 0, 140, 100, 0, 0, 109, 0, 61, 0, 630,
- 503, 507, 511, 514, 70
+ 0, 0, 65, 130, 194, 258, 638, 639, 639, 639,
+ 639, 639, 74, 68, 64, 68, 77, 72, 639, 639,
+ 639, 53, 61, 58, 59, 579, 57, 590, 65, 65,
+ 0, 596, 81, 74, 100, 106, 107, 69, 108, 108,
+ 591, 595, 639, 639, 639, 639, 623, 639, 144, 148,
+ 161, 639, 639, 639, 639, 322, 639, 570, 569, 568,
+ 619, 618, 617, 564, 563, 562, 111, 639, 639, 151,
+ 157, 161, 164, 168, 187, 172, 0, 121, 579, 568,
+ 566, 571, 24, 166, 170, 568, 172, 569, 143, 567,
+ 572, 579, 574, 577, 557, 571, 557, 183, 573, 159,
+
+ 167, 182, 0, 567, 0, 552, 185, 557, 549, 0,
+ 555, 545, 555, 563, 556, 546, 561, 546, 546, 559,
+ 554, 554, 548, 639, 230, 236, 240, 244, 246, 264,
+ 639, 639, 639, 639, 639, 639, 236, 257, 263, 266,
+ 269, 272, 276, 279, 282, 285, 639, 639, 639, 529,
+ 528, 639, 579, 578, 577, 524, 523, 288, 291, 315,
+ 353, 357, 0, 528, 541, 542, 0, 526, 524, 524,
+ 534, 522, 536, 535, 536, 537, 525, 517, 515, 529,
+ 517, 508, 524, 527, 509, 521, 0, 514, 512, 520,
+ 517, 503, 518, 520, 509, 511, 0, 0, 497, 0,
+
+ 505, 511, 514, 513, 494, 505, 0, 506, 490, 503,
+ 503, 495, 0, 482, 502, 484, 483, 489, 266, 360,
+ 367, 370, 373, 378, 381, 391, 399, 402, 405, 639,
+ 474, 639, 525, 639, 524, 471, 424, 412, 434, 478,
+ 482, 483, 489, 480, 487, 477, 482, 475, 485, 0,
+ 471, 455, 446, 0, 0, 454, 0, 453, 449, 0,
+ 454, 0, 0, 442, 432, 0, 447, 424, 0, 0,
+ 424, 433, 0, 425, 419, 0, 425, 0, 420, 401,
+ 419, 414, 0, 400, 0, 402, 404, 639, 639, 639,
+ 639, 639, 639, 639, 639, 639, 639, 639, 639, 639,
+
+ 428, 294, 639, 444, 382, 0, 391, 381, 383, 379,
+ 370, 0, 0, 358, 372, 0, 0, 0, 351, 0,
+ 0, 0, 369, 350, 346, 0, 308, 0, 290, 0,
+ 291, 298, 288, 0, 0, 0, 286, 639, 457, 0,
+ 280, 0, 0, 272, 264, 268, 0, 0, 235, 217,
+ 212, 223, 191, 196, 202, 0, 0, 467, 481, 195,
+ 0, 186, 176, 132, 0, 131, 0, 0, 0, 0,
+ 0, 105, 66, 0, 0, 57, 0, 50, 0, 639,
+ 506, 510, 514, 517, 70
} ;
-static yyconst flex_int16_t yy_def[376] =
+static const flex_int16_t yy_def[386] =
{ 0,
- 370, 1, 371, 371, 372, 372, 370, 370, 370, 370,
- 370, 370, 373, 374, 370, 370, 370, 370, 370, 370,
- 370, 375, 375, 375, 375, 375, 375, 375, 375, 375,
- 375, 375, 375, 375, 375, 375, 375, 375, 375, 375,
- 375, 370, 370, 370, 370, 370, 370, 370, 370, 370,
- 370, 370, 370, 370, 370, 370, 370, 370, 370, 370,
- 370, 370, 370, 370, 370, 374, 370, 370, 370, 370,
- 370, 370, 370, 370, 370, 375, 375, 375, 375, 375,
- 375, 375, 375, 375, 375, 375, 375, 375, 375, 375,
- 375, 375, 375, 375, 375, 375, 375, 375, 375, 375,
-
- 375, 375, 375, 375, 375, 375, 375, 375, 375, 375,
- 375, 375, 375, 375, 375, 375, 375, 375, 375, 375,
- 370, 370, 370, 370, 370, 370, 370, 370, 370, 370,
- 370, 370, 370, 370, 370, 370, 370, 370, 370, 370,
- 370, 370, 370, 370, 370, 370, 370, 370, 370, 370,
- 370, 370, 370, 370, 370, 370, 370, 370, 370, 375,
- 375, 375, 375, 375, 375, 375, 375, 375, 375, 375,
- 375, 375, 375, 375, 375, 375, 375, 375, 375, 375,
- 375, 375, 375, 375, 375, 375, 375, 375, 375, 375,
- 375, 375, 375, 375, 375, 375, 375, 375, 375, 375,
-
- 375, 375, 375, 375, 375, 375, 375, 375, 375, 375,
- 375, 375, 375, 370, 370, 370, 370, 370, 370, 370,
- 370, 370, 370, 370, 370, 370, 370, 370, 370, 370,
- 370, 370, 370, 370, 375, 375, 375, 375, 375, 375,
- 375, 375, 375, 375, 375, 375, 375, 375, 375, 375,
- 375, 375, 375, 375, 375, 375, 375, 375, 375, 375,
- 375, 375, 375, 375, 375, 375, 375, 375, 375, 375,
- 375, 375, 375, 375, 375, 375, 375, 375, 375, 375,
- 370, 370, 370, 370, 370, 370, 370, 370, 370, 370,
- 370, 370, 370, 370, 370, 370, 370, 375, 375, 375,
-
- 375, 375, 375, 375, 375, 375, 375, 375, 375, 375,
- 375, 375, 375, 375, 375, 375, 375, 375, 375, 375,
- 375, 375, 375, 375, 375, 375, 375, 375, 370, 370,
- 375, 375, 375, 375, 375, 375, 375, 375, 375, 375,
- 375, 375, 375, 375, 375, 375, 375, 370, 370, 375,
- 375, 375, 375, 375, 375, 375, 375, 375, 375, 375,
- 375, 375, 375, 375, 375, 375, 375, 375, 375, 0,
- 370, 370, 370, 370, 370
+ 380, 1, 381, 381, 382, 382, 380, 380, 380, 380,
+ 380, 380, 383, 384, 380, 380, 380, 380, 380, 380,
+ 380, 385, 385, 385, 385, 385, 385, 385, 385, 385,
+ 385, 385, 385, 385, 385, 385, 385, 385, 385, 385,
+ 385, 385, 380, 380, 380, 380, 380, 380, 380, 380,
+ 380, 380, 380, 380, 380, 380, 380, 380, 380, 380,
+ 380, 380, 380, 380, 380, 380, 384, 380, 380, 380,
+ 380, 380, 380, 380, 380, 380, 385, 385, 385, 385,
+ 385, 385, 385, 385, 385, 385, 385, 385, 385, 385,
+ 385, 385, 385, 385, 385, 385, 385, 385, 385, 385,
+
+ 385, 385, 385, 385, 385, 385, 385, 385, 385, 385,
+ 385, 385, 385, 385, 385, 385, 385, 385, 385, 385,
+ 385, 385, 385, 380, 380, 380, 380, 380, 380, 380,
+ 380, 380, 380, 380, 380, 380, 380, 380, 380, 380,
+ 380, 380, 380, 380, 380, 380, 380, 380, 380, 380,
+ 380, 380, 380, 380, 380, 380, 380, 380, 380, 380,
+ 380, 380, 385, 385, 385, 385, 385, 385, 385, 385,
+ 385, 385, 385, 385, 385, 385, 385, 385, 385, 385,
+ 385, 385, 385, 385, 385, 385, 385, 385, 385, 385,
+ 385, 385, 385, 385, 385, 385, 385, 385, 385, 385,
+
+ 385, 385, 385, 385, 385, 385, 385, 385, 385, 385,
+ 385, 385, 385, 385, 385, 385, 385, 385, 380, 380,
+ 380, 380, 380, 380, 380, 380, 380, 380, 380, 380,
+ 380, 380, 380, 380, 380, 380, 380, 380, 380, 385,
+ 385, 385, 385, 385, 385, 385, 385, 385, 385, 385,
+ 385, 385, 385, 385, 385, 385, 385, 385, 385, 385,
+ 385, 385, 385, 385, 385, 385, 385, 385, 385, 385,
+ 385, 385, 385, 385, 385, 385, 385, 385, 385, 385,
+ 385, 385, 385, 385, 385, 385, 385, 380, 380, 380,
+ 380, 380, 380, 380, 380, 380, 380, 380, 380, 380,
+
+ 380, 380, 380, 380, 385, 385, 385, 385, 385, 385,
+ 385, 385, 385, 385, 385, 385, 385, 385, 385, 385,
+ 385, 385, 385, 385, 385, 385, 385, 385, 385, 385,
+ 385, 385, 385, 385, 385, 385, 385, 380, 380, 385,
+ 385, 385, 385, 385, 385, 385, 385, 385, 385, 385,
+ 385, 385, 385, 385, 385, 385, 385, 380, 380, 385,
+ 385, 385, 385, 385, 385, 385, 385, 385, 385, 385,
+ 385, 385, 385, 385, 385, 385, 385, 385, 385, 0,
+ 380, 380, 380, 380, 380
} ;
-static yyconst flex_int16_t yy_nxt[696] =
+static const flex_int16_t yy_nxt[705] =
{ 0,
8, 9, 10, 9, 9, 11, 12, 8, 13, 14,
8, 15, 16, 16, 8, 17, 18, 18, 19, 20,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 21, 22, 23, 24, 25, 26, 27,
28, 29, 30, 31, 32, 33, 34, 31, 35, 36,
- 31, 37, 38, 39, 31, 40, 31, 41, 31, 42,
- 8, 8, 8, 8, 8, 43, 43, 44, 43, 166,
- 67, 167, 76, 46, 60, 60, 60, 60, 67, 68,
- 69, 69, 62, 70, 71, 71, 72, 75, 75, 75,
- 77, 72, 73, 73, 73, 79, 81, 83, 78, 86,
-
- 89, 84, 168, 92, 93, 87, 82, 96, 99, 80,
- 94, 97, 169, 369, 90, 98, 100, 91, 122, 123,
- 101, 122, 155, 155, 155, 43, 43, 43, 43, 43,
- 43, 43, 44, 43, 74, 63, 64, 65, 46, 102,
- 105, 109, 112, 194, 106, 113, 115, 103, 117, 124,
- 123, 107, 124, 195, 104, 110, 368, 114, 367, 108,
- 116, 111, 118, 122, 123, 119, 122, 67, 72, 73,
- 73, 73, 158, 158, 158, 67, 72, 157, 157, 157,
- 72, 73, 73, 73, 72, 75, 75, 75, 366, 365,
- 43, 43, 43, 43, 43, 48, 49, 160, 50, 170,
-
- 51, 364, 177, 161, 171, 172, 178, 52, 159, 159,
- 159, 156, 53, 54, 159, 159, 159, 159, 174, 186,
- 190, 192, 198, 363, 175, 193, 55, 191, 362, 122,
- 123, 187, 122, 199, 124, 123, 188, 124, 124, 123,
- 361, 124, 125, 126, 214, 125, 360, 214, 125, 126,
- 214, 125, 359, 214, 56, 57, 58, 59, 56, 48,
- 49, 358, 50, 357, 51, 215, 215, 215, 216, 216,
- 216, 52, 217, 217, 217, 356, 53, 54, 218, 218,
- 218, 219, 219, 219, 220, 220, 220, 221, 221, 221,
- 55, 222, 222, 222, 223, 223, 223, 224, 224, 224,
-
- 155, 155, 155, 232, 232, 232, 158, 158, 158, 232,
- 232, 232, 232, 72, 157, 157, 157, 355, 56, 57,
- 58, 59, 56, 125, 126, 354, 127, 353, 128, 233,
- 296, 296, 296, 352, 351, 129, 350, 130, 130, 347,
- 131, 132, 133, 346, 134, 135, 136, 137, 138, 139,
- 140, 141, 142, 143, 144, 345, 145, 145, 145, 145,
- 145, 145, 145, 145, 145, 145, 145, 145, 234, 159,
- 159, 159, 215, 215, 215, 159, 159, 159, 159, 216,
- 216, 216, 217, 217, 217, 218, 218, 218, 344, 281,
- 219, 219, 219, 220, 220, 220, 282, 343, 342, 283,
-
- 341, 340, 284, 221, 221, 221, 339, 285, 338, 337,
- 286, 222, 222, 222, 223, 223, 223, 224, 224, 224,
- 287, 295, 295, 336, 296, 296, 296, 335, 288, 334,
- 333, 289, 332, 331, 290, 234, 232, 232, 232, 329,
- 328, 327, 232, 232, 232, 232, 297, 297, 297, 326,
- 325, 324, 297, 297, 297, 297, 297, 297, 297, 323,
- 322, 321, 297, 297, 297, 297, 348, 348, 320, 349,
- 349, 349, 319, 318, 317, 349, 349, 349, 349, 349,
- 349, 349, 316, 315, 314, 349, 349, 349, 349, 313,
- 312, 311, 310, 349, 349, 349, 309, 308, 330, 349,
-
- 349, 349, 349, 45, 45, 45, 45, 47, 47, 47,
- 47, 61, 61, 61, 66, 307, 66, 66, 306, 305,
- 304, 303, 302, 301, 300, 299, 298, 294, 293, 292,
- 291, 280, 279, 278, 277, 276, 275, 274, 273, 272,
- 271, 270, 269, 268, 267, 266, 265, 264, 263, 262,
- 261, 260, 259, 258, 257, 256, 255, 254, 253, 252,
- 251, 250, 249, 248, 247, 246, 245, 244, 243, 242,
- 241, 240, 239, 238, 237, 236, 235, 231, 230, 229,
- 228, 227, 226, 225, 213, 212, 211, 210, 209, 208,
- 207, 206, 205, 204, 203, 202, 201, 200, 197, 196,
-
- 189, 185, 184, 183, 182, 181, 180, 179, 176, 173,
- 165, 164, 163, 162, 154, 153, 152, 151, 150, 149,
- 148, 147, 146, 121, 120, 95, 88, 85, 370, 7,
- 370, 370, 370, 370, 370, 370, 370, 370, 370, 370,
- 370, 370, 370, 370, 370, 370, 370, 370, 370, 370,
- 370, 370, 370, 370, 370, 370, 370, 370, 370, 370,
- 370, 370, 370, 370, 370, 370, 370, 370, 370, 370,
- 370, 370, 370, 370, 370, 370, 370, 370, 370, 370,
- 370, 370, 370, 370, 370, 370, 370, 370, 370, 370,
- 370, 370, 370, 370, 370
-
+ 31, 37, 38, 39, 31, 40, 41, 42, 31, 43,
+ 8, 8, 8, 8, 8, 44, 44, 45, 44, 169,
+ 68, 170, 77, 47, 61, 61, 61, 61, 68, 69,
+ 70, 70, 63, 71, 72, 72, 73, 76, 76, 76,
+ 78, 73, 74, 74, 74, 80, 82, 84, 79, 87,
+
+ 90, 85, 379, 91, 378, 88, 83, 114, 101, 81,
+ 115, 94, 95, 68, 92, 98, 102, 93, 96, 99,
+ 103, 68, 116, 100, 377, 44, 44, 44, 44, 44,
+ 44, 44, 45, 44, 75, 64, 65, 66, 47, 104,
+ 107, 111, 117, 119, 108, 125, 126, 105, 125, 127,
+ 126, 109, 127, 376, 106, 112, 118, 120, 163, 110,
+ 121, 113, 125, 126, 164, 125, 158, 158, 158, 375,
+ 374, 73, 74, 74, 74, 73, 160, 160, 160, 161,
+ 161, 161, 73, 74, 74, 74, 73, 76, 76, 76,
+ 44, 44, 44, 44, 44, 49, 50, 180, 51, 194,
+
+ 52, 181, 162, 162, 162, 171, 195, 53, 162, 162,
+ 162, 162, 54, 55, 159, 172, 173, 177, 190, 198,
+ 196, 174, 175, 178, 197, 202, 56, 373, 372, 199,
+ 191, 125, 126, 371, 125, 192, 203, 127, 126, 370,
+ 127, 127, 126, 369, 127, 128, 129, 219, 128, 368,
+ 219, 220, 220, 220, 57, 58, 59, 60, 57, 49,
+ 50, 367, 51, 366, 52, 128, 129, 219, 128, 365,
+ 219, 53, 221, 221, 221, 364, 54, 55, 222, 222,
+ 222, 223, 223, 223, 224, 224, 224, 225, 225, 225,
+ 56, 226, 226, 226, 227, 227, 227, 228, 228, 228,
+
+ 229, 229, 229, 158, 158, 158, 237, 237, 237, 303,
+ 303, 303, 237, 237, 237, 237, 363, 362, 57, 58,
+ 59, 60, 57, 128, 129, 361, 130, 360, 131, 73,
+ 160, 160, 160, 357, 356, 132, 355, 133, 133, 354,
+ 134, 135, 136, 353, 137, 138, 139, 140, 141, 142,
+ 143, 144, 145, 146, 147, 352, 148, 148, 148, 148,
+ 148, 148, 148, 148, 148, 148, 148, 148, 161, 161,
+ 161, 239, 162, 162, 162, 220, 220, 220, 162, 162,
+ 162, 162, 221, 221, 221, 222, 222, 222, 223, 223,
+ 223, 238, 288, 224, 224, 224, 225, 225, 225, 289,
+
+ 351, 350, 290, 349, 348, 291, 226, 226, 226, 347,
+ 292, 346, 345, 293, 227, 227, 227, 228, 228, 228,
+ 229, 229, 229, 294, 302, 302, 344, 303, 303, 303,
+ 343, 295, 342, 341, 296, 340, 338, 297, 239, 237,
+ 237, 237, 337, 336, 335, 237, 237, 237, 237, 304,
+ 304, 304, 334, 333, 332, 304, 304, 304, 304, 304,
+ 304, 304, 331, 330, 329, 304, 304, 304, 304, 358,
+ 358, 328, 359, 359, 359, 327, 326, 325, 359, 359,
+ 359, 359, 359, 359, 359, 324, 323, 322, 359, 359,
+ 359, 359, 321, 320, 319, 318, 359, 359, 359, 317,
+
+ 316, 339, 359, 359, 359, 359, 46, 46, 46, 46,
+ 48, 48, 48, 48, 62, 62, 62, 67, 315, 67,
+ 67, 314, 313, 312, 311, 310, 309, 308, 307, 306,
+ 305, 301, 300, 299, 298, 287, 286, 285, 284, 283,
+ 282, 281, 280, 279, 278, 277, 276, 275, 274, 273,
+ 272, 271, 270, 269, 268, 267, 266, 265, 264, 263,
+ 262, 261, 260, 259, 258, 257, 256, 255, 254, 253,
+ 252, 251, 250, 249, 248, 247, 246, 245, 244, 243,
+ 242, 241, 240, 236, 235, 234, 233, 232, 231, 230,
+ 218, 217, 216, 215, 214, 213, 212, 211, 210, 209,
+
+ 208, 207, 206, 205, 204, 201, 200, 193, 189, 188,
+ 187, 186, 185, 184, 183, 182, 179, 176, 168, 167,
+ 166, 165, 157, 156, 155, 154, 153, 152, 151, 150,
+ 149, 124, 123, 122, 97, 89, 86, 380, 7, 380,
+ 380, 380, 380, 380, 380, 380, 380, 380, 380, 380,
+ 380, 380, 380, 380, 380, 380, 380, 380, 380, 380,
+ 380, 380, 380, 380, 380, 380, 380, 380, 380, 380,
+ 380, 380, 380, 380, 380, 380, 380, 380, 380, 380,
+ 380, 380, 380, 380, 380, 380, 380, 380, 380, 380,
+ 380, 380, 380, 380, 380, 380, 380, 380, 380, 380,
+
+ 380, 380, 380, 380
} ;
-static yyconst flex_int16_t yy_chk[696] =
+static const flex_int16_t yy_chk[705] =
{ 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -732,81 +729,82 @@ static yyconst flex_int16_t yy_chk[696] =
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 3, 3, 3, 3, 82,
- 14, 82, 375, 3, 13, 13, 13, 13, 14, 15,
+ 1, 1, 1, 1, 1, 3, 3, 3, 3, 83,
+ 14, 83, 385, 3, 13, 13, 13, 13, 14, 15,
15, 15, 13, 16, 16, 16, 18, 18, 18, 18,
22, 17, 17, 17, 17, 23, 24, 25, 22, 27,
- 29, 25, 83, 30, 30, 27, 24, 33, 34, 23,
- 30, 33, 83, 368, 29, 33, 34, 29, 48, 48,
- 34, 48, 69, 69, 69, 3, 3, 3, 3, 3,
+ 29, 25, 378, 29, 376, 27, 24, 38, 34, 23,
+ 38, 30, 30, 67, 29, 33, 34, 29, 30, 33,
+ 34, 67, 38, 33, 373, 3, 3, 3, 3, 3,
4, 4, 4, 4, 17, 13, 13, 13, 4, 35,
- 36, 37, 38, 100, 36, 38, 39, 35, 40, 49,
- 49, 36, 49, 100, 35, 37, 366, 38, 363, 36,
- 39, 37, 40, 50, 50, 40, 50, 66, 70, 70,
- 70, 70, 72, 72, 72, 66, 71, 71, 71, 71,
- 73, 73, 73, 73, 75, 75, 75, 75, 362, 356,
- 4, 4, 4, 4, 4, 5, 5, 77, 5, 84,
-
- 5, 354, 88, 77, 84, 84, 88, 5, 74, 74,
- 74, 70, 5, 5, 74, 74, 74, 74, 86, 96,
- 98, 99, 105, 353, 86, 99, 5, 98, 352, 122,
- 122, 96, 122, 105, 123, 123, 96, 123, 124, 124,
- 350, 124, 125, 125, 126, 125, 345, 126, 127, 127,
- 214, 127, 344, 214, 5, 5, 5, 5, 5, 6,
- 6, 343, 6, 342, 6, 134, 134, 134, 135, 135,
- 135, 6, 136, 136, 136, 341, 6, 6, 137, 137,
- 137, 138, 138, 138, 139, 139, 139, 140, 140, 140,
- 6, 141, 141, 141, 142, 142, 142, 143, 143, 143,
-
- 155, 155, 155, 156, 156, 156, 158, 158, 158, 156,
- 156, 156, 156, 157, 157, 157, 157, 340, 6, 6,
- 6, 6, 6, 55, 55, 339, 55, 337, 55, 158,
- 295, 295, 295, 336, 335, 55, 332, 55, 55, 328,
- 55, 55, 55, 325, 55, 55, 55, 55, 55, 55,
- 55, 55, 55, 55, 55, 324, 55, 55, 55, 55,
- 55, 55, 55, 55, 55, 55, 55, 55, 159, 159,
- 159, 159, 215, 215, 215, 159, 159, 159, 159, 216,
- 216, 216, 217, 217, 217, 218, 218, 218, 323, 215,
- 219, 219, 219, 220, 220, 220, 216, 321, 319, 217,
-
- 317, 316, 218, 221, 221, 221, 315, 219, 308, 307,
- 220, 222, 222, 222, 223, 223, 223, 224, 224, 224,
- 221, 233, 233, 304, 233, 233, 233, 303, 222, 302,
- 301, 223, 300, 298, 224, 232, 232, 232, 232, 294,
- 280, 278, 232, 232, 232, 232, 234, 234, 234, 276,
- 275, 274, 234, 234, 234, 234, 297, 297, 297, 273,
- 271, 269, 297, 297, 297, 297, 330, 330, 268, 330,
- 330, 330, 266, 265, 262, 330, 330, 330, 330, 348,
- 348, 348, 261, 259, 258, 348, 348, 348, 348, 255,
- 253, 251, 248, 349, 349, 349, 247, 246, 297, 349,
-
- 349, 349, 349, 371, 371, 371, 371, 372, 372, 372,
- 372, 373, 373, 373, 374, 244, 374, 374, 243, 242,
- 241, 240, 239, 238, 237, 236, 235, 231, 230, 228,
- 226, 213, 212, 211, 210, 208, 207, 206, 205, 204,
- 202, 201, 200, 199, 198, 197, 195, 192, 191, 190,
- 189, 188, 187, 186, 185, 184, 182, 181, 180, 179,
- 178, 177, 176, 175, 174, 173, 172, 171, 170, 169,
- 168, 167, 166, 165, 163, 162, 161, 154, 153, 152,
- 151, 150, 148, 147, 120, 119, 118, 117, 116, 115,
- 114, 113, 112, 111, 110, 109, 107, 106, 104, 102,
-
- 97, 95, 94, 93, 92, 91, 90, 89, 87, 85,
- 81, 80, 79, 78, 65, 64, 63, 62, 61, 60,
- 59, 58, 57, 46, 41, 32, 28, 26, 7, 370,
- 370, 370, 370, 370, 370, 370, 370, 370, 370, 370,
- 370, 370, 370, 370, 370, 370, 370, 370, 370, 370,
- 370, 370, 370, 370, 370, 370, 370, 370, 370, 370,
- 370, 370, 370, 370, 370, 370, 370, 370, 370, 370,
- 370, 370, 370, 370, 370, 370, 370, 370, 370, 370,
- 370, 370, 370, 370, 370, 370, 370, 370, 370, 370,
- 370, 370, 370, 370, 370
-
+ 36, 37, 39, 40, 36, 49, 49, 35, 49, 50,
+ 50, 36, 50, 372, 35, 37, 39, 40, 78, 36,
+ 40, 37, 51, 51, 78, 51, 70, 70, 70, 366,
+ 364, 71, 71, 71, 71, 72, 72, 72, 72, 73,
+ 73, 73, 74, 74, 74, 74, 76, 76, 76, 76,
+ 4, 4, 4, 4, 4, 5, 5, 89, 5, 100,
+
+ 5, 89, 75, 75, 75, 84, 100, 5, 75, 75,
+ 75, 75, 5, 5, 71, 84, 85, 87, 98, 102,
+ 101, 85, 85, 87, 101, 107, 5, 363, 362, 102,
+ 98, 125, 125, 360, 125, 98, 107, 126, 126, 355,
+ 126, 127, 127, 354, 127, 128, 128, 129, 128, 353,
+ 129, 137, 137, 137, 5, 5, 5, 5, 5, 6,
+ 6, 352, 6, 351, 6, 130, 130, 219, 130, 350,
+ 219, 6, 138, 138, 138, 349, 6, 6, 139, 139,
+ 139, 140, 140, 140, 141, 141, 141, 142, 142, 142,
+ 6, 143, 143, 143, 144, 144, 144, 145, 145, 145,
+
+ 146, 146, 146, 158, 158, 158, 159, 159, 159, 302,
+ 302, 302, 159, 159, 159, 159, 346, 345, 6, 6,
+ 6, 6, 6, 56, 56, 344, 56, 341, 56, 160,
+ 160, 160, 160, 337, 333, 56, 332, 56, 56, 331,
+ 56, 56, 56, 329, 56, 56, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 327, 56, 56, 56, 56,
+ 56, 56, 56, 56, 56, 56, 56, 56, 161, 161,
+ 161, 162, 162, 162, 162, 220, 220, 220, 162, 162,
+ 162, 162, 221, 221, 221, 222, 222, 222, 223, 223,
+ 223, 161, 220, 224, 224, 224, 225, 225, 225, 221,
+
+ 325, 324, 222, 323, 319, 223, 226, 226, 226, 315,
+ 224, 314, 311, 225, 227, 227, 227, 228, 228, 228,
+ 229, 229, 229, 226, 238, 238, 310, 238, 238, 238,
+ 309, 227, 308, 307, 228, 305, 301, 229, 237, 237,
+ 237, 237, 287, 286, 284, 237, 237, 237, 237, 239,
+ 239, 239, 282, 281, 280, 239, 239, 239, 239, 304,
+ 304, 304, 279, 277, 275, 304, 304, 304, 304, 339,
+ 339, 274, 339, 339, 339, 272, 271, 268, 339, 339,
+ 339, 339, 358, 358, 358, 267, 265, 264, 358, 358,
+ 358, 358, 261, 259, 258, 256, 359, 359, 359, 253,
+
+ 252, 304, 359, 359, 359, 359, 381, 381, 381, 381,
+ 382, 382, 382, 382, 383, 383, 383, 384, 251, 384,
+ 384, 249, 248, 247, 246, 245, 244, 243, 242, 241,
+ 240, 236, 235, 233, 231, 218, 217, 216, 215, 214,
+ 212, 211, 210, 209, 208, 206, 205, 204, 203, 202,
+ 201, 199, 196, 195, 194, 193, 192, 191, 190, 189,
+ 188, 186, 185, 184, 183, 182, 181, 180, 179, 178,
+ 177, 176, 175, 174, 173, 172, 171, 170, 169, 168,
+ 166, 165, 164, 157, 156, 155, 154, 153, 151, 150,
+ 123, 122, 121, 120, 119, 118, 117, 116, 115, 114,
+
+ 113, 112, 111, 109, 108, 106, 104, 99, 97, 96,
+ 95, 94, 93, 92, 91, 90, 88, 86, 82, 81,
+ 80, 79, 66, 65, 64, 63, 62, 61, 60, 59,
+ 58, 47, 42, 41, 32, 28, 26, 7, 380, 380,
+ 380, 380, 380, 380, 380, 380, 380, 380, 380, 380,
+ 380, 380, 380, 380, 380, 380, 380, 380, 380, 380,
+ 380, 380, 380, 380, 380, 380, 380, 380, 380, 380,
+ 380, 380, 380, 380, 380, 380, 380, 380, 380, 380,
+ 380, 380, 380, 380, 380, 380, 380, 380, 380, 380,
+ 380, 380, 380, 380, 380, 380, 380, 380, 380, 380,
+
+ 380, 380, 380, 380
} ;
/* Table of booleans, true if rule could match eol. */
-static yyconst flex_int32_t yy_rule_can_match_eol[127] =
+static const flex_int32_t yy_rule_can_match_eol[129] =
{ 0,
0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -814,7 +812,7 @@ static yyconst flex_int32_t yy_rule_can_match_eol[127] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, };
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, };
static yy_state_type yy_last_accepting_state;
static char *yy_last_accepting_cpos;
@@ -822,22 +820,22 @@ static char *yy_last_accepting_cpos;
extern int yy_flex_debug;
int yy_flex_debug = 1;
-static yyconst flex_int16_t yy_rule_linenum[126] =
+static const flex_int16_t yy_rule_linenum[128] =
{ 0,
- 170, 171, 172, 173, 174, 175, 176, 178, 180, 182,
- 184, 185, 186, 187, 188, 193, 194, 195, 196, 197,
- 198, 199, 200, 202, 204, 206, 207, 208, 209, 211,
- 212, 213, 215, 216, 217, 219, 220, 222, 224, 225,
- 226, 228, 229, 231, 232, 233, 235, 238, 240, 241,
- 243, 244, 245, 246, 247, 248, 249, 251, 252, 254,
- 256, 257, 258, 259, 260, 261, 262, 263, 264, 267,
- 269, 270, 271, 273, 274, 275, 276, 279, 280, 281,
- 283, 284, 285, 286, 287, 288, 289, 291, 292, 293,
- 294, 296, 298, 300, 302, 304, 306, 307, 309, 311,
-
- 312, 313, 314, 316, 318, 319, 320, 322, 324, 326,
- 327, 328, 329, 330, 332, 334, 336, 337, 339, 341,
- 343, 345, 347, 349, 350
+ 171, 172, 173, 174, 175, 176, 177, 179, 181, 183,
+ 185, 186, 187, 188, 189, 194, 195, 196, 197, 198,
+ 199, 200, 201, 203, 205, 207, 208, 209, 210, 212,
+ 213, 214, 216, 217, 218, 220, 221, 223, 225, 226,
+ 227, 229, 230, 232, 233, 234, 236, 239, 241, 242,
+ 244, 245, 246, 247, 248, 249, 250, 252, 253, 255,
+ 257, 258, 259, 260, 261, 262, 263, 264, 265, 268,
+ 270, 271, 272, 274, 275, 276, 277, 280, 281, 282,
+ 284, 285, 286, 287, 288, 289, 290, 292, 293, 294,
+ 295, 297, 299, 301, 303, 305, 307, 308, 310, 312,
+
+ 313, 314, 315, 317, 318, 319, 321, 322, 323, 325,
+ 327, 329, 330, 331, 332, 333, 335, 337, 339, 340,
+ 342, 344, 346, 348, 350, 352, 353
} ;
/* The intent behind this definition is that it'll catch
@@ -849,23 +847,23 @@ static yyconst flex_int16_t yy_rule_linenum[126] =
#define YY_RESTORE_YY_MORE_OFFSET
char *yytext;
#line 1 "lexer.l"
-/*511:*/
-#line 3 "lexer.l"
- #line 10275 "format.w"
+#line 2 "lexer.l"
+ /*519:*/
+ #line 10725 "format.w"
#include "hibasetypes.h"
#include "hierror.h"
#include "hiformat.h"
#include "hiput.h"
- /*425:*/
+ /*433:*/
#ifdef DEBUG
#define YYDEBUG 1
extern int yydebug;
#else
#define YYDEBUG 0
#endif
- /*:425*/
+ /*:433*/
#include "hiparser.h"
/*22:*/
@@ -907,7 +905,7 @@ static int scan_level= 0;
float64_t xtof(char*x)
{
- #line 1369 "format.w"
+ #line 1379 "format.w"
int sign,digits,exp;
uint64_t mantissa= 0;
DBG(DBGFLOAT,"converting %s:\n",x);
@@ -987,25 +985,27 @@ float64_t xtof(char*x)
}
/*:61*/
int yywrap(void){
- #line 10286 "format.w"
+ #line 10736 "format.w"
return 1;}
#ifdef _MSC_VER
#pragma warning( disable : 4267)
#endif
+#line 994 "lexer.c"
#define YY_NO_UNISTD_H 1
#define YY_NO_INPUT 1
-/*23:*/
-/*:23*/ /*32:*/
+#line 152 "lexer.l"
+ /*23:*/
+ /*:23*/ /*32:*/
-/*:32*/ /*39:*/
-/*:39*/ /*41:*/
-/*:41*/ /*43:*/
-/*:43*/ /*45:*/
-/*:45*/ /*149:*/
+ /*:32*/ /*39:*/
+ /*:39*/ /*41:*/
+ /*:41*/ /*43:*/
+ /*:43*/ /*45:*/
+ /*:45*/ /*149:*/
-/*:149*/
-#line 1009 "lexer.c"
+ /*:149*/
+#line 1008 "lexer.c"
#define INITIAL 0
#define STR 1
@@ -1031,7 +1031,7 @@ int yywrap(void){
/* %if-reentrant */
/* %if-c-only */
-static int yy_init_globals (void );
+static int yy_init_globals ( void );
/* %endif */
/* %if-reentrant */
@@ -1041,31 +1041,31 @@ static int yy_init_globals (void );
/* Accessor methods to globals.
These are made visible to non-reentrant scanners for convenience. */
-int yylex_destroy (void );
+int yylex_destroy ( void );
-int yyget_debug (void );
+int yyget_debug ( void );
-void yyset_debug (int debug_flag );
+void yyset_debug ( int debug_flag );
-YY_EXTRA_TYPE yyget_extra (void );
+YY_EXTRA_TYPE yyget_extra ( void );
-void yyset_extra (YY_EXTRA_TYPE user_defined );
+void yyset_extra ( YY_EXTRA_TYPE user_defined );
-FILE *yyget_in (void );
+FILE *yyget_in ( void );
-void yyset_in (FILE * in_str );
+void yyset_in ( FILE * _in_str );
-FILE *yyget_out (void );
+FILE *yyget_out ( void );
-void yyset_out (FILE * out_str );
+void yyset_out ( FILE * _out_str );
-yy_size_t yyget_leng (void );
+ int yyget_leng ( void );
-char *yyget_text (void );
+char *yyget_text ( void );
-int yyget_lineno (void );
+int yyget_lineno ( void );
-void yyset_lineno (int line_number );
+void yyset_lineno ( int _line_number );
/* %if-bison-bridge */
/* %endif */
@@ -1076,34 +1076,35 @@ void yyset_lineno (int line_number );
#ifndef YY_SKIP_YYWRAP
#ifdef __cplusplus
-extern "C" int yywrap (void );
+extern "C" int yywrap ( void );
#else
-extern int yywrap (void );
+extern int yywrap ( void );
#endif
#endif
/* %not-for-header */
-
+#ifndef YY_NO_UNPUT
+
+#endif
/* %ok-for-header */
/* %endif */
#ifndef yytext_ptr
-static void yy_flex_strncpy (char *,yyconst char *,int );
+static void yy_flex_strncpy ( char *, const char *, int );
#endif
#ifdef YY_NEED_STRLEN
-static int yy_flex_strlen (yyconst char * );
+static int yy_flex_strlen ( const char * );
#endif
#ifndef YY_NO_INPUT
/* %if-c-only Standard (non-C++) definition */
/* %not-for-header */
-
#ifdef __cplusplus
-static int yyinput (void );
+static int yyinput ( void );
#else
-static int input (void );
+static int input ( void );
#endif
/* %ok-for-header */
@@ -1116,15 +1117,20 @@ static int input (void );
static int yy_start_stack_depth = 0;
static int *yy_start_stack = NULL;
- static void yy_push_state (int new_state );
+ static void yy_push_state ( int _new_state );
- static void yy_pop_state (void );
+ static void yy_pop_state ( void );
/* %endif */
/* Amount of stuff to slurp up with each read. */
#ifndef YY_READ_BUF_SIZE
+#ifdef __ia64__
+/* On IA-64, the buffer size is 16k, not 8k */
+#define YY_READ_BUF_SIZE 16384
+#else
#define YY_READ_BUF_SIZE 8192
+#endif /* __ia64__ */
#endif
/* Copy whatever the last rule matched to the standard output. */
@@ -1133,7 +1139,7 @@ static int input (void );
/* This used to be an fputs(), but since the string might contain NUL's,
* we now use fwrite().
*/
-#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
+#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0)
/* %endif */
/* %if-c++-only C++ definition */
/* %endif */
@@ -1148,7 +1154,7 @@ static int input (void );
if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
{ \
int c = '*'; \
- size_t n; \
+ int n; \
for ( n = 0; n < max_size && \
(c = getc( yyin )) != EOF && c != '\n'; ++n ) \
buf[n] = (char) c; \
@@ -1161,7 +1167,7 @@ static int input (void );
else \
{ \
errno=0; \
- while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
+ while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \
{ \
if( errno != EINTR) \
{ \
@@ -1202,11 +1208,9 @@ static int input (void );
/* %if-tables-serialization structures and prototypes */
/* %not-for-header */
-
/* %ok-for-header */
/* %not-for-header */
-
/* %tables-yydmap generated elements */
/* %endif */
/* end tables serialization structures and prototypes */
@@ -1237,7 +1241,7 @@ extern int yylex (void);
/* Code executed at the end of each rule. */
#ifndef YY_BREAK
-#define YY_BREAK break;
+#define YY_BREAK /*LINTED*/break;
#endif
/* %% [6.0] YY_RULE_SETUP definition goes here */
@@ -1245,22 +1249,14 @@ extern int yylex (void);
YY_USER_ACTION
/* %not-for-header */
-
/** The main scanner function which does all the work.
*/
YY_DECL
{
- register yy_state_type yy_current_state;
- register char *yy_cp, *yy_bp;
- register int yy_act;
+ yy_state_type yy_current_state;
+ char *yy_cp, *yy_bp;
+ int yy_act;
-/* %% [7.0] user's declarations go here */
-#line 167 "lexer.l"
-
-
- /*3:*/
-#line 1263 "lexer.c"
-
if ( !(yy_init) )
{
(yy_init) = 1;
@@ -1289,13 +1285,21 @@ YY_DECL
if ( ! YY_CURRENT_BUFFER ) {
yyensure_buffer_stack ();
YY_CURRENT_BUFFER_LVALUE =
- yy_create_buffer(yyin,YY_BUF_SIZE );
+ yy_create_buffer( yyin, YY_BUF_SIZE );
}
- yy_load_buffer_state( );
+ yy_load_buffer_state( );
}
- while ( 1 ) /* loops until end-of-file is reached */
+ {
+/* %% [7.0] user's declarations go here */
+#line 168 "lexer.l"
+
+
+ /*3:*/
+#line 1300 "lexer.c"
+
+ while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */
{
/* %% [8.0] yymore()-related code goes here */
yy_cp = (yy_c_buf_p);
@@ -1313,7 +1317,7 @@ YY_DECL
yy_match:
do
{
- register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
+ YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ;
if ( yy_accept[yy_current_state] )
{
(yy_last_accepting_state) = yy_current_state;
@@ -1322,13 +1326,13 @@ yy_match:
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 371 )
- yy_c = yy_meta[(unsigned int) yy_c];
+ if ( yy_current_state >= 381 )
+ yy_c = yy_meta[yy_c];
}
- yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+ yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
++yy_cp;
}
- while ( yy_current_state != 370 );
+ while ( yy_current_state != 380 );
yy_cp = (yy_last_accepting_cpos);
yy_current_state = (yy_last_accepting_state);
@@ -1345,7 +1349,7 @@ yy_find_action:
int yyl;
for ( yyl = 0; yyl < yyleng; ++yyl )
if ( yytext[yyl] == '\n' )
-
+
yylineno++;
;
}
@@ -1357,13 +1361,13 @@ do_action: /* This label is used only to access EOF actions. */
{
if ( yy_act == 0 )
fprintf( stderr, "--scanner backing up\n" );
- else if ( yy_act < 126 )
+ else if ( yy_act < 128 )
fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
(long)yy_rule_linenum[yy_act], yytext );
- else if ( yy_act == 126 )
+ else if ( yy_act == 128 )
fprintf( stderr, "--accepting default rule (\"%s\")\n",
yytext );
- else if ( yy_act == 127 )
+ else if ( yy_act == 129 )
fprintf( stderr, "--(end of buffer or a NUL)\n" );
else
fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
@@ -1381,686 +1385,696 @@ do_action: /* This label is used only to access EOF actions. */
case 1:
YY_RULE_SETUP
-#line 170 "lexer.l"
+#line 171 "lexer.l"
SCAN_START;return START;
YY_BREAK
case 2:
YY_RULE_SETUP
-#line 171 "lexer.l"
+#line 172 "lexer.l"
SCAN_END;return END;
YY_BREAK
case 3:
YY_RULE_SETUP
-#line 172 "lexer.l"
+#line 173 "lexer.l"
return GLYPH;
YY_BREAK
case 4:
YY_RULE_SETUP
-#line 173 "lexer.l"
+#line 174 "lexer.l"
SCAN_UDEC(yytext);return UNSIGNED;
YY_BREAK
case 5:
YY_RULE_SETUP
-#line 174 "lexer.l"
+#line 175 "lexer.l"
SCAN_UDEC(yytext+1);return REFERENCE;
YY_BREAK
case 6:
/* rule 6 can match eol */
YY_RULE_SETUP
-#line 175 "lexer.l"
+#line 176 "lexer.l"
;
YY_BREAK
case 7:
/* rule 7 can match eol */
YY_RULE_SETUP
-#line 176 "lexer.l"
+#line 177 "lexer.l"
;
YY_BREAK
/*:3*/ /*24:*/
case 8:
YY_RULE_SETUP
-#line 178 "lexer.l"
+#line 179 "lexer.l"
SCAN_HEX(yytext+2);return UNSIGNED;
YY_BREAK
/*:24*/ /*27:*/
case 9:
YY_RULE_SETUP
-#line 180 "lexer.l"
+#line 181 "lexer.l"
SCAN_DEC(yytext);return SIGNED;
YY_BREAK
/*:27*/ /*34:*/
case 10:
YY_RULE_SETUP
-#line 182 "lexer.l"
+#line 183 "lexer.l"
STR_START;BEGIN(STR);
YY_BREAK
case 11:
YY_RULE_SETUP
-#line 184 "lexer.l"
+#line 185 "lexer.l"
STR_END;SCAN_STR;BEGIN(INITIAL);return STRING;
YY_BREAK
case 12:
YY_RULE_SETUP
-#line 185 "lexer.l"
+#line 186 "lexer.l"
STR_ADD('\'');
YY_BREAK
case 13:
YY_RULE_SETUP
-#line 186 "lexer.l"
+#line 187 "lexer.l"
STR_ADD(yytext[0]);
YY_BREAK
case 14:
YY_RULE_SETUP
-#line 187 "lexer.l"
+#line 188 "lexer.l"
RNG("String character",yytext[0],0x20,0x7E);
YY_BREAK
case 15:
/* rule 15 can match eol */
YY_RULE_SETUP
-#line 188 "lexer.l"
+#line 189 "lexer.l"
QUIT("Unterminated String in line %d",yylineno);
YY_BREAK
/*:34*/ /*48:*/
case 16:
YY_RULE_SETUP
-#line 193 "lexer.l"
+#line 194 "lexer.l"
STR_START;STR_PUT('\'');BEGIN(STR);
YY_BREAK
case 17:
YY_RULE_SETUP
-#line 194 "lexer.l"
+#line 195 "lexer.l"
SCAN_UTF8_1(yytext+1);return CHARCODE;
YY_BREAK
case 18:
YY_RULE_SETUP
-#line 195 "lexer.l"
+#line 196 "lexer.l"
STR_START;STR_PUT(yytext[1]);STR_PUT('\'');BEGIN(STR);
YY_BREAK
case 19:
YY_RULE_SETUP
-#line 196 "lexer.l"
+#line 197 "lexer.l"
STR_START;STR_PUT('\'');STR_PUT('\'');BEGIN(STR);
YY_BREAK
case 20:
/* rule 20 can match eol */
YY_RULE_SETUP
-#line 197 "lexer.l"
+#line 198 "lexer.l"
SCAN_UTF8_1(yytext+1);return CHARCODE;
YY_BREAK
case 21:
YY_RULE_SETUP
-#line 198 "lexer.l"
+#line 199 "lexer.l"
SCAN_UTF8_2(yytext+1);return CHARCODE;
YY_BREAK
case 22:
YY_RULE_SETUP
-#line 199 "lexer.l"
+#line 200 "lexer.l"
SCAN_UTF8_3(yytext+1);return CHARCODE;
YY_BREAK
case 23:
YY_RULE_SETUP
-#line 200 "lexer.l"
+#line 201 "lexer.l"
SCAN_UTF8_4(yytext+1);return CHARCODE;
YY_BREAK
/*:48*/ /*55:*/
case 24:
YY_RULE_SETUP
-#line 202 "lexer.l"
+#line 203 "lexer.l"
SCAN_DECFLOAT;return FPNUM;
YY_BREAK
/*:55*/ /*59:*/
case 25:
YY_RULE_SETUP
-#line 204 "lexer.l"
+#line 205 "lexer.l"
SCAN_HEXFLOAT;return FPNUM;
YY_BREAK
/*:59*/ /*80:*/
case 26:
YY_RULE_SETUP
-#line 206 "lexer.l"
+#line 207 "lexer.l"
return DIMEN;
YY_BREAK
case 27:
YY_RULE_SETUP
-#line 207 "lexer.l"
+#line 208 "lexer.l"
return PT;
YY_BREAK
case 28:
YY_RULE_SETUP
-#line 208 "lexer.l"
+#line 209 "lexer.l"
return MM;
YY_BREAK
case 29:
YY_RULE_SETUP
-#line 209 "lexer.l"
+#line 210 "lexer.l"
return INCH;
YY_BREAK
/*:80*/ /*88:*/
case 30:
YY_RULE_SETUP
-#line 211 "lexer.l"
+#line 212 "lexer.l"
return XDIMEN;
YY_BREAK
case 31:
YY_RULE_SETUP
-#line 212 "lexer.l"
+#line 213 "lexer.l"
return H;
YY_BREAK
case 32:
YY_RULE_SETUP
-#line 213 "lexer.l"
+#line 214 "lexer.l"
return V;
YY_BREAK
/*:88*/ /*99:*/
case 33:
YY_RULE_SETUP
-#line 215 "lexer.l"
+#line 216 "lexer.l"
return FIL;
YY_BREAK
case 34:
YY_RULE_SETUP
-#line 216 "lexer.l"
+#line 217 "lexer.l"
return FILL;
YY_BREAK
case 35:
YY_RULE_SETUP
-#line 217 "lexer.l"
+#line 218 "lexer.l"
return FILLL;
YY_BREAK
/*:99*/ /*103:*/
case 36:
YY_RULE_SETUP
-#line 219 "lexer.l"
+#line 220 "lexer.l"
return PENALTY;
YY_BREAK
case 37:
YY_RULE_SETUP
-#line 220 "lexer.l"
+#line 221 "lexer.l"
return INTEGER;
YY_BREAK
/*:103*/ /*109:*/
case 38:
YY_RULE_SETUP
-#line 222 "lexer.l"
+#line 223 "lexer.l"
return LANGUAGE;
YY_BREAK
/*:109*/ /*115:*/
case 39:
YY_RULE_SETUP
-#line 224 "lexer.l"
+#line 225 "lexer.l"
return RULE;
YY_BREAK
case 40:
YY_RULE_SETUP
-#line 225 "lexer.l"
+#line 226 "lexer.l"
return RUNNING;
YY_BREAK
case 41:
YY_RULE_SETUP
-#line 226 "lexer.l"
+#line 227 "lexer.l"
return RUNNING;
YY_BREAK
/*:115*/ /*124:*/
case 42:
YY_RULE_SETUP
-#line 228 "lexer.l"
+#line 229 "lexer.l"
return KERN;
YY_BREAK
case 43:
YY_RULE_SETUP
-#line 229 "lexer.l"
+#line 230 "lexer.l"
return EXPLICIT;
YY_BREAK
/*:124*/ /*133:*/
case 44:
YY_RULE_SETUP
-#line 231 "lexer.l"
+#line 232 "lexer.l"
return GLUE;
YY_BREAK
case 45:
YY_RULE_SETUP
-#line 232 "lexer.l"
+#line 233 "lexer.l"
return PLUS;
YY_BREAK
case 46:
YY_RULE_SETUP
-#line 233 "lexer.l"
+#line 234 "lexer.l"
return MINUS;
YY_BREAK
/*:133*/ /*151:*/
case 47:
YY_RULE_SETUP
-#line 235 "lexer.l"
+#line 236 "lexer.l"
SCAN_TXT_START;return TXT_START;
YY_BREAK
case 48:
YY_RULE_SETUP
-#line 238 "lexer.l"
+#line 239 "lexer.l"
SCAN_TXT_END;return TXT_END;
YY_BREAK
case 49:
YY_RULE_SETUP
-#line 240 "lexer.l"
+#line 241 "lexer.l"
SCAN_START;return START;
YY_BREAK
case 50:
YY_RULE_SETUP
-#line 241 "lexer.l"
+#line 242 "lexer.l"
QUIT("> not allowed in text mode");
YY_BREAK
case 51:
YY_RULE_SETUP
-#line 243 "lexer.l"
+#line 244 "lexer.l"
yylval.u= '\\';return TXT_CC;
YY_BREAK
case 52:
YY_RULE_SETUP
-#line 244 "lexer.l"
+#line 245 "lexer.l"
yylval.u= '"';return TXT_CC;
YY_BREAK
case 53:
YY_RULE_SETUP
-#line 245 "lexer.l"
+#line 246 "lexer.l"
yylval.u= '<';return TXT_CC;
YY_BREAK
case 54:
YY_RULE_SETUP
-#line 246 "lexer.l"
+#line 247 "lexer.l"
yylval.u= '>';return TXT_CC;
YY_BREAK
case 55:
YY_RULE_SETUP
-#line 247 "lexer.l"
+#line 248 "lexer.l"
yylval.u= ' ';return TXT_CC;
YY_BREAK
case 56:
YY_RULE_SETUP
-#line 248 "lexer.l"
+#line 249 "lexer.l"
yylval.u= '-';return TXT_CC;
YY_BREAK
case 57:
YY_RULE_SETUP
-#line 249 "lexer.l"
+#line 250 "lexer.l"
return TXT_IGNORE;
YY_BREAK
case 58:
/* rule 58 can match eol */
YY_RULE_SETUP
-#line 251 "lexer.l"
+#line 252 "lexer.l"
return TXT_FONT_GLUE;
YY_BREAK
case 59:
/* rule 59 can match eol */
YY_RULE_SETUP
-#line 252 "lexer.l"
+#line 253 "lexer.l"
;
YY_BREAK
case 60:
YY_RULE_SETUP
-#line 254 "lexer.l"
+#line 255 "lexer.l"
yylval.u= yytext[1]-'0';return TXT_FONT;
YY_BREAK
case 61:
YY_RULE_SETUP
-#line 256 "lexer.l"
+#line 257 "lexer.l"
SCAN_REF(font_kind);return TXT_GLOBAL;
YY_BREAK
case 62:
YY_RULE_SETUP
-#line 257 "lexer.l"
+#line 258 "lexer.l"
SCAN_REF(penalty_kind);return TXT_GLOBAL;
YY_BREAK
case 63:
YY_RULE_SETUP
-#line 258 "lexer.l"
+#line 259 "lexer.l"
SCAN_REF(kern_kind);return TXT_GLOBAL;
YY_BREAK
case 64:
YY_RULE_SETUP
-#line 259 "lexer.l"
+#line 260 "lexer.l"
SCAN_REF(ligature_kind);return TXT_GLOBAL;
YY_BREAK
case 65:
YY_RULE_SETUP
-#line 260 "lexer.l"
+#line 261 "lexer.l"
SCAN_REF(disc_kind);return TXT_GLOBAL;
YY_BREAK
case 66:
YY_RULE_SETUP
-#line 261 "lexer.l"
+#line 262 "lexer.l"
SCAN_REF(glue_kind);return TXT_GLOBAL;
YY_BREAK
case 67:
YY_RULE_SETUP
-#line 262 "lexer.l"
+#line 263 "lexer.l"
SCAN_REF(language_kind);return TXT_GLOBAL;
YY_BREAK
case 68:
YY_RULE_SETUP
-#line 263 "lexer.l"
+#line 264 "lexer.l"
SCAN_REF(rule_kind);return TXT_GLOBAL;
YY_BREAK
case 69:
YY_RULE_SETUP
-#line 264 "lexer.l"
+#line 265 "lexer.l"
SCAN_REF(image_kind);return TXT_GLOBAL;
YY_BREAK
case 70:
YY_RULE_SETUP
-#line 267 "lexer.l"
+#line 268 "lexer.l"
SCAN_UDEC(yytext+2);return TXT_CC;
YY_BREAK
case 71:
YY_RULE_SETUP
-#line 269 "lexer.l"
+#line 270 "lexer.l"
yylval.u= yytext[1]-'a';return TXT_LOCAL;
YY_BREAK
case 72:
YY_RULE_SETUP
-#line 270 "lexer.l"
+#line 271 "lexer.l"
return TXT_FONT_GLUE;
YY_BREAK
case 73:
YY_RULE_SETUP
-#line 271 "lexer.l"
+#line 272 "lexer.l"
return TXT_FONT_HYPHEN;
YY_BREAK
case 74:
/* rule 74 can match eol */
YY_RULE_SETUP
-#line 273 "lexer.l"
+#line 274 "lexer.l"
SCAN_UTF8_1(yytext);return TXT_CC;
YY_BREAK
case 75:
YY_RULE_SETUP
-#line 274 "lexer.l"
+#line 275 "lexer.l"
SCAN_UTF8_2(yytext);return TXT_CC;
YY_BREAK
case 76:
YY_RULE_SETUP
-#line 275 "lexer.l"
+#line 276 "lexer.l"
SCAN_UTF8_3(yytext);return TXT_CC;
YY_BREAK
case 77:
YY_RULE_SETUP
-#line 276 "lexer.l"
+#line 277 "lexer.l"
SCAN_UTF8_4(yytext);return TXT_CC;
YY_BREAK
/*:151*/ /*162:*/
case 78:
YY_RULE_SETUP
-#line 279 "lexer.l"
+#line 280 "lexer.l"
return HBOX;
YY_BREAK
case 79:
YY_RULE_SETUP
-#line 280 "lexer.l"
+#line 281 "lexer.l"
return VBOX;
YY_BREAK
case 80:
YY_RULE_SETUP
-#line 281 "lexer.l"
+#line 282 "lexer.l"
return SHIFTED;
YY_BREAK
/*:162*/ /*170:*/
case 81:
YY_RULE_SETUP
-#line 283 "lexer.l"
+#line 284 "lexer.l"
return HPACK;
YY_BREAK
case 82:
YY_RULE_SETUP
-#line 284 "lexer.l"
+#line 285 "lexer.l"
return HSET;
YY_BREAK
case 83:
YY_RULE_SETUP
-#line 285 "lexer.l"
+#line 286 "lexer.l"
return VPACK;
YY_BREAK
case 84:
YY_RULE_SETUP
-#line 286 "lexer.l"
+#line 287 "lexer.l"
return VSET;
YY_BREAK
case 85:
YY_RULE_SETUP
-#line 287 "lexer.l"
+#line 288 "lexer.l"
return ADD;
YY_BREAK
case 86:
YY_RULE_SETUP
-#line 288 "lexer.l"
+#line 289 "lexer.l"
return TO;
YY_BREAK
case 87:
YY_RULE_SETUP
-#line 289 "lexer.l"
+#line 290 "lexer.l"
return DEPTH;
YY_BREAK
/*:170*/ /*175:*/
case 88:
YY_RULE_SETUP
-#line 291 "lexer.l"
+#line 292 "lexer.l"
return LEADERS;
YY_BREAK
case 89:
YY_RULE_SETUP
-#line 292 "lexer.l"
+#line 293 "lexer.l"
return ALIGN;
YY_BREAK
case 90:
YY_RULE_SETUP
-#line 293 "lexer.l"
+#line 294 "lexer.l"
return CENTER;
YY_BREAK
case 91:
YY_RULE_SETUP
-#line 294 "lexer.l"
+#line 295 "lexer.l"
return EXPAND;
YY_BREAK
/*:175*/ /*182:*/
case 92:
YY_RULE_SETUP
-#line 296 "lexer.l"
+#line 297 "lexer.l"
return BASELINE;
YY_BREAK
/*:182*/ /*189:*/
case 93:
YY_RULE_SETUP
-#line 298 "lexer.l"
+#line 299 "lexer.l"
return LIGATURE;
YY_BREAK
/*:189*/ /*197:*/
case 94:
YY_RULE_SETUP
-#line 300 "lexer.l"
+#line 301 "lexer.l"
return DISC;
YY_BREAK
/*:197*/ /*205:*/
case 95:
YY_RULE_SETUP
-#line 302 "lexer.l"
+#line 303 "lexer.l"
return PAR;
YY_BREAK
/*:205*/ /*210:*/
case 96:
YY_RULE_SETUP
-#line 304 "lexer.l"
+#line 305 "lexer.l"
return MATH;
YY_BREAK
/*:210*/ /*215:*/
case 97:
YY_RULE_SETUP
-#line 306 "lexer.l"
+#line 307 "lexer.l"
return ON;
YY_BREAK
case 98:
YY_RULE_SETUP
-#line 307 "lexer.l"
+#line 308 "lexer.l"
return OFF;
YY_BREAK
/*:215*/ /*219:*/
case 99:
YY_RULE_SETUP
-#line 309 "lexer.l"
+#line 310 "lexer.l"
return ADJUST;
YY_BREAK
/*:219*/ /*223:*/
case 100:
YY_RULE_SETUP
-#line 311 "lexer.l"
+#line 312 "lexer.l"
return TABLE;
YY_BREAK
case 101:
YY_RULE_SETUP
-#line 312 "lexer.l"
+#line 313 "lexer.l"
return ITEM;
YY_BREAK
case 102:
YY_RULE_SETUP
-#line 313 "lexer.l"
+#line 314 "lexer.l"
return ITEM;
YY_BREAK
case 103:
YY_RULE_SETUP
-#line 314 "lexer.l"
+#line 315 "lexer.l"
return ITEM;
YY_BREAK
/*:223*/ /*230:*/
case 104:
YY_RULE_SETUP
-#line 316 "lexer.l"
+#line 317 "lexer.l"
return IMAGE;
YY_BREAK
-/*:230*/ /*247:*/
case 105:
YY_RULE_SETUP
#line 318 "lexer.l"
-return LABEL;
+return WIDTH;
YY_BREAK
case 106:
YY_RULE_SETUP
#line 319 "lexer.l"
-return BOT;
+return HEIGHT;
YY_BREAK
+/*:230*/ /*255:*/
case 107:
YY_RULE_SETUP
-#line 320 "lexer.l"
-return MID;
+#line 321 "lexer.l"
+return LABEL;
YY_BREAK
-/*:247*/ /*261:*/
case 108:
YY_RULE_SETUP
#line 322 "lexer.l"
-return LINK;
+return BOT;
YY_BREAK
-/*:261*/ /*271:*/
case 109:
YY_RULE_SETUP
-#line 324 "lexer.l"
-return OUTLINE;
+#line 323 "lexer.l"
+return MID;
YY_BREAK
-/*:271*/ /*278:*/
+/*:255*/ /*269:*/
case 110:
YY_RULE_SETUP
-#line 326 "lexer.l"
-if(section_no==1)return STREAMDEF;else return STREAM;
+#line 325 "lexer.l"
+return LINK;
YY_BREAK
+/*:269*/ /*279:*/
case 111:
YY_RULE_SETUP
#line 327 "lexer.l"
-return FIRST;
+return OUTLINE;
YY_BREAK
+/*:279*/ /*286:*/
case 112:
YY_RULE_SETUP
-#line 328 "lexer.l"
-return LAST;
+#line 329 "lexer.l"
+if(section_no==1)return STREAMDEF;else return STREAM;
YY_BREAK
case 113:
YY_RULE_SETUP
-#line 329 "lexer.l"
-return TOP;
+#line 330 "lexer.l"
+return FIRST;
YY_BREAK
case 114:
YY_RULE_SETUP
-#line 330 "lexer.l"
-return NOREFERENCE;
+#line 331 "lexer.l"
+return LAST;
YY_BREAK
-/*:278*/ /*288:*/
case 115:
YY_RULE_SETUP
#line 332 "lexer.l"
-return PAGE;
+return TOP;
YY_BREAK
-/*:288*/ /*296:*/
case 116:
YY_RULE_SETUP
-#line 334 "lexer.l"
-return RANGE;
+#line 333 "lexer.l"
+return NOREFERENCE;
YY_BREAK
-/*:296*/ /*323:*/
+/*:286*/ /*296:*/
case 117:
YY_RULE_SETUP
-#line 336 "lexer.l"
-return DIRECTORY;
+#line 335 "lexer.l"
+return PAGE;
YY_BREAK
+/*:296*/ /*304:*/
case 118:
YY_RULE_SETUP
#line 337 "lexer.l"
-return SECTION;
+return RANGE;
YY_BREAK
-/*:323*/ /*344:*/
+/*:304*/ /*331:*/
case 119:
YY_RULE_SETUP
#line 339 "lexer.l"
-return DEFINITIONS;
+return DIRECTORY;
YY_BREAK
-/*:344*/ /*352:*/
case 120:
YY_RULE_SETUP
-#line 341 "lexer.l"
-return MAX;
+#line 340 "lexer.l"
+return SECTION;
YY_BREAK
-/*:352*/ /*367:*/
+/*:331*/ /*352:*/
case 121:
YY_RULE_SETUP
-#line 343 "lexer.l"
-return PARAM;
+#line 342 "lexer.l"
+return DEFINITIONS;
YY_BREAK
-/*:367*/ /*376:*/
+/*:352*/ /*360:*/
case 122:
YY_RULE_SETUP
-#line 345 "lexer.l"
-return FONT;
+#line 344 "lexer.l"
+return MAX;
YY_BREAK
-/*:376*/ /*404:*/
+/*:360*/ /*375:*/
case 123:
YY_RULE_SETUP
-#line 347 "lexer.l"
-return CONTENT;
+#line 346 "lexer.l"
+return PARAM;
YY_BREAK
-/*:404*/
+/*:375*/ /*384:*/
case 124:
YY_RULE_SETUP
-#line 349 "lexer.l"
-QUIT("Unexpected keyword '%s' in line %d",yytext,yylineno);
+#line 348 "lexer.l"
+return FONT;
YY_BREAK
+/*:384*/ /*412:*/
case 125:
YY_RULE_SETUP
#line 350 "lexer.l"
-QUIT("Unexpected character '%c' (0x%02X) in line %d",yytext[0]>' '?yytext[0]:' ',yytext[0],yylineno);
+return CONTENT;
YY_BREAK
+/*:412*/
case 126:
YY_RULE_SETUP
#line 352 "lexer.l"
+QUIT("Unexpected keyword '%s' in line %d",yytext,yylineno);
+ YY_BREAK
+case 127:
+YY_RULE_SETUP
+#line 353 "lexer.l"
+QUIT("Unexpected character '%c' (0x%02X) in line %d",yytext[0]>' '?yytext[0]:' ',yytext[0],yylineno);
+ YY_BREAK
+case 128:
+YY_RULE_SETUP
+#line 355 "lexer.l"
ECHO;
YY_BREAK
-#line 2064 "lexer.c"
+#line 2077 "lexer.c"
case YY_STATE_EOF(INITIAL):
case YY_STATE_EOF(STR):
case YY_STATE_EOF(TXT):
@@ -2087,7 +2101,11 @@ case YY_STATE_EOF(TXT):
* back-up) that will match for the new input source.
*/
(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
+/* %if-c-only */
YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
+/* %endif */
+/* %if-c++-only */
+/* %endif */
YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
}
@@ -2142,7 +2160,7 @@ case YY_STATE_EOF(TXT):
{
(yy_did_buffer_switch_on_eof) = 0;
- if ( yywrap( ) )
+ if ( yywrap( ) )
{
/* Note: because we've taken care in
* yy_get_next_buffer() to have set up
@@ -2195,12 +2213,12 @@ case YY_STATE_EOF(TXT):
"fatal flex scanner internal error--no action found" );
} /* end of action switch */
} /* end of scanning one token */
+ } /* end of user's declarations */
} /* end of yylex */
/* %ok-for-header */
/* %if-c++-only */
/* %not-for-header */
-
/* %ok-for-header */
/* %endif */
@@ -2218,9 +2236,9 @@ static int yy_get_next_buffer (void)
/* %if-c++-only */
/* %endif */
{
- register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
- register char *source = (yytext_ptr);
- register int number_to_move, i;
+ char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
+ char *source = (yytext_ptr);
+ int number_to_move, i;
int ret_val;
if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
@@ -2249,7 +2267,7 @@ static int yy_get_next_buffer (void)
/* Try to read more data. */
/* First move last chars to start of buffer. */
- number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
+ number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1);
for ( i = 0; i < number_to_move; ++i )
*(dest++) = *(source++);
@@ -2262,7 +2280,7 @@ static int yy_get_next_buffer (void)
else
{
- yy_size_t num_to_read =
+ int num_to_read =
YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
while ( num_to_read <= 0 )
@@ -2276,7 +2294,7 @@ static int yy_get_next_buffer (void)
if ( b->yy_is_our_buffer )
{
- yy_size_t new_size = b->yy_buf_size * 2;
+ int new_size = b->yy_buf_size * 2;
if ( new_size <= 0 )
b->yy_buf_size += b->yy_buf_size / 8;
@@ -2285,11 +2303,12 @@ static int yy_get_next_buffer (void)
b->yy_ch_buf = (char *)
/* Include room in for 2 EOB chars. */
- yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 );
+ yyrealloc( (void *) b->yy_ch_buf,
+ (yy_size_t) (b->yy_buf_size + 2) );
}
else
/* Can't grow it, we don't own it. */
- b->yy_ch_buf = 0;
+ b->yy_ch_buf = NULL;
if ( ! b->yy_ch_buf )
YY_FATAL_ERROR(
@@ -2317,7 +2336,7 @@ static int yy_get_next_buffer (void)
if ( number_to_move == YY_MORE_ADJ )
{
ret_val = EOB_ACT_END_OF_FILE;
- yyrestart(yyin );
+ yyrestart( yyin );
}
else
@@ -2331,12 +2350,15 @@ static int yy_get_next_buffer (void)
else
ret_val = EOB_ACT_CONTINUE_SCAN;
- if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
+ if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
/* Extend the array by 50%, plus the number we really need. */
- yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
- YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size );
+ int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
+ YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc(
+ (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size );
if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
+ /* "- 2" to take care of EOB's */
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2);
}
(yy_n_chars) += number_to_move;
@@ -2352,14 +2374,13 @@ static int yy_get_next_buffer (void)
/* %if-c-only */
/* %not-for-header */
-
static yy_state_type yy_get_previous_state (void)
/* %endif */
/* %if-c++-only */
/* %endif */
{
- register yy_state_type yy_current_state;
- register char *yy_cp;
+ yy_state_type yy_current_state;
+ char *yy_cp;
/* %% [15.0] code to get the start state into yy_current_state goes here */
yy_current_state = (yy_start);
@@ -2367,7 +2388,7 @@ static int yy_get_next_buffer (void)
for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
{
/* %% [16.0] code to find the next state goes here */
- register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
+ YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
if ( yy_accept[yy_current_state] )
{
(yy_last_accepting_state) = yy_current_state;
@@ -2376,10 +2397,10 @@ static int yy_get_next_buffer (void)
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 371 )
- yy_c = yy_meta[(unsigned int) yy_c];
+ if ( yy_current_state >= 381 )
+ yy_c = yy_meta[yy_c];
}
- yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+ yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
}
return yy_current_state;
@@ -2396,11 +2417,11 @@ static int yy_get_next_buffer (void)
/* %if-c++-only */
/* %endif */
{
- register int yy_is_jam;
+ int yy_is_jam;
/* %% [17.0] code to find the next state, and perhaps do backing up, goes here */
- register char *yy_cp = (yy_c_buf_p);
+ char *yy_cp = (yy_c_buf_p);
- register YY_CHAR yy_c = 1;
+ YY_CHAR yy_c = 1;
if ( yy_accept[yy_current_state] )
{
(yy_last_accepting_state) = yy_current_state;
@@ -2409,18 +2430,20 @@ static int yy_get_next_buffer (void)
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 371 )
- yy_c = yy_meta[(unsigned int) yy_c];
+ if ( yy_current_state >= 381 )
+ yy_c = yy_meta[yy_c];
}
- yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
- yy_is_jam = (yy_current_state == 370);
+ yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
+ yy_is_jam = (yy_current_state == 380);
return yy_is_jam ? 0 : yy_current_state;
}
+#ifndef YY_NO_UNPUT
/* %if-c-only */
/* %endif */
+#endif
/* %if-c-only */
#ifndef YY_NO_INPUT
@@ -2450,7 +2473,7 @@ static int yy_get_next_buffer (void)
else
{ /* need more input */
- yy_size_t offset = (yy_c_buf_p) - (yytext_ptr);
+ int offset = (int) ((yy_c_buf_p) - (yytext_ptr));
++(yy_c_buf_p);
switch ( yy_get_next_buffer( ) )
@@ -2467,14 +2490,14 @@ static int yy_get_next_buffer (void)
*/
/* Reset buffer status. */
- yyrestart(yyin );
+ yyrestart( yyin );
/*FALLTHROUGH*/
case EOB_ACT_END_OF_FILE:
{
- if ( yywrap( ) )
- return EOF;
+ if ( yywrap( ) )
+ return 0;
if ( ! (yy_did_buffer_switch_on_eof) )
YY_NEW_FILE;
@@ -2498,7 +2521,7 @@ static int yy_get_next_buffer (void)
/* %% [19.0] update BOL and yylineno */
if ( c == '\n' )
-
+
yylineno++;
;
@@ -2523,13 +2546,16 @@ static int yy_get_next_buffer (void)
if ( ! YY_CURRENT_BUFFER ){
yyensure_buffer_stack ();
YY_CURRENT_BUFFER_LVALUE =
- yy_create_buffer(yyin,YY_BUF_SIZE );
+ yy_create_buffer( yyin, YY_BUF_SIZE );
}
- yy_init_buffer(YY_CURRENT_BUFFER,input_file );
- yy_load_buffer_state( );
+ yy_init_buffer( YY_CURRENT_BUFFER, input_file );
+ yy_load_buffer_state( );
}
+/* %if-c++-only */
+/* %endif */
+
/** Switch to a different input buffer.
* @param new_buffer The new input buffer.
*
@@ -2559,7 +2585,7 @@ static int yy_get_next_buffer (void)
}
YY_CURRENT_BUFFER_LVALUE = new_buffer;
- yy_load_buffer_state( );
+ yy_load_buffer_state( );
/* We don't actually know whether we did this switch during
* EOF (yywrap()) processing, but the only time this flag
@@ -2577,7 +2603,11 @@ static void yy_load_buffer_state (void)
{
(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
(yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
+/* %if-c-only */
yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
+/* %endif */
+/* %if-c++-only */
+/* %endif */
(yy_hold_char) = *(yy_c_buf_p);
}
@@ -2595,7 +2625,7 @@ static void yy_load_buffer_state (void)
{
YY_BUFFER_STATE b;
- b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) );
+ b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) );
if ( ! b )
YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
@@ -2604,17 +2634,20 @@ static void yy_load_buffer_state (void)
/* yy_ch_buf has to be 2 characters longer than the size given because
* we need to put in 2 end-of-buffer characters.
*/
- b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2 );
+ b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) );
if ( ! b->yy_ch_buf )
YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
b->yy_is_our_buffer = 1;
- yy_init_buffer(b,file );
+ yy_init_buffer( b, file );
return b;
}
+/* %if-c++-only */
+/* %endif */
+
/** Destroy the buffer.
* @param b a buffer created with yy_create_buffer()
*
@@ -2633,9 +2666,9 @@ static void yy_load_buffer_state (void)
YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
if ( b->yy_is_our_buffer )
- yyfree((void *) b->yy_ch_buf );
+ yyfree( (void *) b->yy_ch_buf );
- yyfree((void *) b );
+ yyfree( (void *) b );
}
/* Initializes or reinitializes a buffer.
@@ -2651,9 +2684,13 @@ static void yy_load_buffer_state (void)
{
int oerrno = errno;
- yy_flush_buffer(b );
+ yy_flush_buffer( b );
+/* %if-c-only */
b->yy_input_file = file;
+/* %endif */
+/* %if-c++-only */
+/* %endif */
b->yy_fill_buffer = 1;
/* If b is the current buffer, then yy_init_buffer was _probably_
@@ -2703,7 +2740,7 @@ static void yy_load_buffer_state (void)
b->yy_buffer_status = YY_BUFFER_NEW;
if ( b == YY_CURRENT_BUFFER )
- yy_load_buffer_state( );
+ yy_load_buffer_state( );
}
/* %if-c-or-c++ */
@@ -2739,7 +2776,7 @@ void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
YY_CURRENT_BUFFER_LVALUE = new_buffer;
/* copied from yy_switch_to_buffer. */
- yy_load_buffer_state( );
+ yy_load_buffer_state( );
(yy_did_buffer_switch_on_eof) = 1;
}
/* %endif */
@@ -2764,7 +2801,7 @@ void yypop_buffer_state (void)
--(yy_buffer_stack_top);
if (YY_CURRENT_BUFFER) {
- yy_load_buffer_state( );
+ yy_load_buffer_state( );
(yy_did_buffer_switch_on_eof) = 1;
}
}
@@ -2788,15 +2825,15 @@ static void yyensure_buffer_stack (void)
* scanner will even need a stack. We use 2 instead of 1 to avoid an
* immediate realloc on the next call.
*/
- num_to_alloc = 1;
+ num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */
(yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
(num_to_alloc * sizeof(struct yy_buffer_state*)
);
if ( ! (yy_buffer_stack) )
YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
-
+
memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
-
+
(yy_buffer_stack_max) = num_to_alloc;
(yy_buffer_stack_top) = 0;
return;
@@ -2805,7 +2842,7 @@ static void yyensure_buffer_stack (void)
if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
/* Increase the buffer to prepare for a possible push. */
- int grow_size = 8 /* arbitrary grow size */;
+ yy_size_t grow_size = 8 /* arbitrary grow size */;
num_to_alloc = (yy_buffer_stack_max) + grow_size;
(yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
@@ -2827,7 +2864,7 @@ static void yyensure_buffer_stack (void)
* @param base the character buffer
* @param size the size in bytes of the character buffer
*
- * @return the newly allocated buffer state object.
+ * @return the newly allocated buffer state object.
*/
YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size )
{
@@ -2837,23 +2874,23 @@ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size )
base[size-2] != YY_END_OF_BUFFER_CHAR ||
base[size-1] != YY_END_OF_BUFFER_CHAR )
/* They forgot to leave room for the EOB's. */
- return 0;
+ return NULL;
- b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) );
+ b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) );
if ( ! b )
YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
- b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
+ b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */
b->yy_buf_pos = b->yy_ch_buf = base;
b->yy_is_our_buffer = 0;
- b->yy_input_file = 0;
+ b->yy_input_file = NULL;
b->yy_n_chars = b->yy_buf_size;
b->yy_is_interactive = 0;
b->yy_at_bol = 1;
b->yy_fill_buffer = 0;
b->yy_buffer_status = YY_BUFFER_NEW;
- yy_switch_to_buffer(b );
+ yy_switch_to_buffer( b );
return b;
}
@@ -2868,10 +2905,10 @@ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size )
* @note If you want to scan bytes that may contain NUL values, then use
* yy_scan_bytes() instead.
*/
-YY_BUFFER_STATE yy_scan_string (yyconst char * yystr )
+YY_BUFFER_STATE yy_scan_string (const char * yystr )
{
- return yy_scan_bytes(yystr,strlen(yystr) );
+ return yy_scan_bytes( yystr, (int) strlen(yystr) );
}
/* %endif */
@@ -2883,7 +2920,7 @@ YY_BUFFER_STATE yy_scan_string (yyconst char * yystr )
*
* @return the newly allocated buffer state object.
*/
-YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len )
+YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len )
{
YY_BUFFER_STATE b;
char *buf;
@@ -2891,8 +2928,8 @@ YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len
int i;
/* Get memory for full buffer, including space for trailing EOB's. */
- n = _yybytes_len + 2;
- buf = (char *) yyalloc(n );
+ n = (yy_size_t) (_yybytes_len + 2);
+ buf = (char *) yyalloc( n );
if ( ! buf )
YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
@@ -2901,7 +2938,7 @@ YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len
buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
- b = yy_scan_buffer(buf,n );
+ b = yy_scan_buffer( buf, n );
if ( ! b )
YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
@@ -2915,7 +2952,7 @@ YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len
/* %endif */
/* %if-c-only */
- static void yy_push_state (int new_state )
+ static void yy_push_state (int _new_state )
/* %endif */
/* %if-c++-only */
/* %endif */
@@ -2925,13 +2962,14 @@ YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len
yy_size_t new_size;
(yy_start_stack_depth) += YY_START_STACK_INCR;
- new_size = (yy_start_stack_depth) * sizeof( int );
+ new_size = (yy_size_t) (yy_start_stack_depth) * sizeof( int );
if ( ! (yy_start_stack) )
- (yy_start_stack) = (int *) yyalloc(new_size );
+ (yy_start_stack) = (int *) yyalloc( new_size );
else
- (yy_start_stack) = (int *) yyrealloc((void *) (yy_start_stack),new_size );
+ (yy_start_stack) = (int *) yyrealloc(
+ (void *) (yy_start_stack), new_size );
if ( ! (yy_start_stack) )
YY_FATAL_ERROR( "out of memory expanding start-condition stack" );
@@ -2939,7 +2977,7 @@ YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len
(yy_start_stack)[(yy_start_stack_ptr)++] = YY_START;
- BEGIN(new_state);
+ BEGIN(_new_state);
}
/* %if-c-only */
@@ -2959,9 +2997,9 @@ YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len
#endif
/* %if-c-only */
-static void yy_fatal_error (yyconst char* msg )
+static void yynoreturn yy_fatal_error (const char* msg )
{
- (void) fprintf( stderr, "%s\n", msg );
+ fprintf( stderr, "%s\n", msg );
exit( YY_EXIT_FAILURE );
}
/* %endif */
@@ -2996,7 +3034,7 @@ static void yy_fatal_error (yyconst char* msg )
*/
int yyget_lineno (void)
{
-
+
return yylineno;
}
@@ -3019,7 +3057,7 @@ FILE *yyget_out (void)
/** Get the length of the current token.
*
*/
-yy_size_t yyget_leng (void)
+int yyget_leng (void)
{
return yyleng;
}
@@ -3037,29 +3075,29 @@ char *yyget_text (void)
/* %endif */
/** Set the current line number.
- * @param line_number
+ * @param _line_number line number
*
*/
-void yyset_lineno (int line_number )
+void yyset_lineno (int _line_number )
{
- yylineno = line_number;
+ yylineno = _line_number;
}
/** Set the input stream. This does not discard the current
* input buffer.
- * @param in_str A readable stream.
+ * @param _in_str A readable stream.
*
* @see yy_switch_to_buffer
*/
-void yyset_in (FILE * in_str )
+void yyset_in (FILE * _in_str )
{
- yyin = in_str ;
+ yyin = _in_str ;
}
-void yyset_out (FILE * out_str )
+void yyset_out (FILE * _out_str )
{
- yyout = out_str ;
+ yyout = _out_str ;
}
int yyget_debug (void)
@@ -3067,9 +3105,9 @@ int yyget_debug (void)
return yy_flex_debug;
}
-void yyset_debug (int bdebug )
+void yyset_debug (int _bdebug )
{
- yy_flex_debug = bdebug ;
+ yy_flex_debug = _bdebug ;
}
/* %endif */
@@ -3089,10 +3127,10 @@ static int yy_init_globals (void)
/* We do not touch yylineno unless the option is enabled. */
yylineno = 1;
- (yy_buffer_stack) = 0;
+ (yy_buffer_stack) = NULL;
(yy_buffer_stack_top) = 0;
(yy_buffer_stack_max) = 0;
- (yy_c_buf_p) = (char *) 0;
+ (yy_c_buf_p) = NULL;
(yy_init) = 0;
(yy_start) = 0;
@@ -3105,8 +3143,8 @@ static int yy_init_globals (void)
yyin = stdin;
yyout = stdout;
#else
- yyin = (FILE *) 0;
- yyout = (FILE *) 0;
+ yyin = NULL;
+ yyout = NULL;
#endif
/* For future reference: Set errno on error, since we are called by
@@ -3123,7 +3161,7 @@ int yylex_destroy (void)
/* Pop the buffer stack, destroying each element. */
while(YY_CURRENT_BUFFER){
- yy_delete_buffer(YY_CURRENT_BUFFER );
+ yy_delete_buffer( YY_CURRENT_BUFFER );
YY_CURRENT_BUFFER_LVALUE = NULL;
yypop_buffer_state();
}
@@ -3133,7 +3171,7 @@ int yylex_destroy (void)
(yy_buffer_stack) = NULL;
/* Destroy the start condition stack. */
- yyfree((yy_start_stack) );
+ yyfree( (yy_start_stack) );
(yy_start_stack) = NULL;
/* Reset the globals. This is important in a non-reentrant scanner so the next time
@@ -3151,18 +3189,19 @@ int yylex_destroy (void)
*/
#ifndef yytext_ptr
-static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
+static void yy_flex_strncpy (char* s1, const char * s2, int n )
{
- register int i;
+
+ int i;
for ( i = 0; i < n; ++i )
s1[i] = s2[i];
}
#endif
#ifdef YY_NEED_STRLEN
-static int yy_flex_strlen (yyconst char * s )
+static int yy_flex_strlen (const char * s )
{
- register int n;
+ int n;
for ( n = 0; s[n]; ++n )
;
@@ -3172,11 +3211,12 @@ static int yy_flex_strlen (yyconst char * s )
void *yyalloc (yy_size_t size )
{
- return (void *) malloc( size );
+ return malloc(size);
}
void *yyrealloc (void * ptr, yy_size_t size )
{
+
/* The cast to (char *) in the following accommodates both
* implementations that use char* generic pointers, and those
* that use void* generic pointers. It works with the latter
@@ -3184,12 +3224,12 @@ void *yyrealloc (void * ptr, yy_size_t size )
* any pointer type to void*, and deal with argument conversions
* as though doing an assignment.
*/
- return (void *) realloc( (char *) ptr, size );
+ return realloc(ptr, size);
}
void yyfree (void * ptr )
{
- free( (char *) ptr ); /* see yyrealloc() for (char *) cast */
+ free( (char *) ptr ); /* see yyrealloc() for (char *) cast */
}
/* %if-tables-serialization definitions */
@@ -3199,8 +3239,7 @@ void yyfree (void * ptr )
/* %ok-for-header */
-#line 352 "lexer.l"
-
+#line 355 "lexer.l"
- /*:511*/
+ /*:519*/
diff --git a/Build/source/texk/web2c/hitexdir/hintview/src/basetypes.h b/Build/source/texk/web2c/hitexdir/hintview/src/basetypes.h
index 6f9c1f3cff0..26fe2db801a 100644
--- a/Build/source/texk/web2c/hitexdir/hintview/src/basetypes.h
+++ b/Build/source/texk/web2c/hitexdir/hintview/src/basetypes.h
@@ -1,5 +1,5 @@
- /*503:*/
- #line 9954 "format.w"
+ /*511:*/
+ #line 10407 "format.w"
#ifndef __BASETYPES_H__
#define __BASETYPES_H__
@@ -42,6 +42,6 @@ typedef double float64_t;
#error float64 type must have size 8
#endif
#define HINT_VERSION 1
-#define HINT_SUB_VERSION 3
+#define HINT_SUB_VERSION 4
#endif
- /*:503*/
+ /*:511*/
diff --git a/Build/source/texk/web2c/hitexdir/hintview/src/error.h b/Build/source/texk/web2c/hitexdir/hintview/src/error.h
index e952878199c..633d1d2a92f 100644
--- a/Build/source/texk/web2c/hitexdir/hintview/src/error.h
+++ b/Build/source/texk/web2c/hitexdir/hintview/src/error.h
@@ -1,5 +1,5 @@
/*358:*/
-#line 7159 "hint.w"
+#line 7154 "hint.w"
#ifndef _ERROR_H
#define _ERROR_H
diff --git a/Build/source/texk/web2c/hitexdir/hintview/src/format.h b/Build/source/texk/web2c/hitexdir/hintview/src/format.h
index ad6524eb274..fcfdde70d65 100644
--- a/Build/source/texk/web2c/hitexdir/hintview/src/format.h
+++ b/Build/source/texk/web2c/hitexdir/hintview/src/format.h
@@ -1,19 +1,19 @@
- /*504:*/
- #line 10006 "format.w"
+ /*512:*/
+ #line 10457 "format.w"
#ifndef _HFORMAT_H_
#define _HFORMAT_H_
- /*349:*/
- #line 7408 "format.w"
+ /*357:*/
+ #line 7848 "format.w"
#define REF_RNG(K,N) if ((int)(N)>max_ref[K]) QUIT("Reference %d to %s out of range [0 - %d]",\
(N),definition_name[K],max_ref[K])
- /*:349*/ /*350:*/
- #line 7422 "format.w"
+ /*:357*/ /*358:*/
+ #line 7862 "format.w"
#define MAX_REF(K) ((K)==label_kind?0xFFFF:0xFF)
- /*:350*/ /*423:*/
- #line 8877 "format.w"
+ /*:358*/ /*431:*/
+ #line 9317 "format.w"
#ifdef WIN32
#define SIZE_F "0x%x"
@@ -31,11 +31,11 @@
if ((int)(N)<(int)(A)||(int)(N)>(int)(Z)) QUIT(S " %d out of range [%d - %d]",N,A,Z)
#define TAGERR(A) QUIT("Unknown tag [%s,%d] at " SIZE_F "\n",NAME(A),INFO(A),hpos-hstart)
- /*:423*/
- #line 10009 "format.w"
+ /*:431*/
+ #line 10460 "format.w"
- /*410:*/
- #line 8615 "format.w"
+ /*418:*/
+ #line 9055 "format.w"
#define DBGNONE 0x0
#define DBGBASIC 0x1
@@ -54,63 +54,63 @@
#define DBGFONT 0x2000
#define DBGRENDER 0x4000
#define DBGLABEL 0x8000
- /*:410*/
- #line 10010 "format.w"
+ /*:418*/
+ #line 10461 "format.w"
/*12:*/
- #line 635 "format.w"
+ #line 640 "format.w"
#define KIND(T) (((T)>>3)&0x1F)
#define NAME(T) content_name[KIND(T)]
#define INFO(T) ((T)&0x7)
#define TAG(K,I) (((K)<<3)|(I))
/*:12*/ /*77:*/
- #line 1625 "format.w"
+ #line 1639 "format.w"
#define ROUND(X) ((int)((X)>=0.0?floor((X)+0.5):ceil((X)-0.5)))
/*:77*/ /*112:*/
- #line 2126 "format.w"
+ #line 2139 "format.w"
#define RUNNING_DIMEN 0xC0000000
/*:112*/ /*131:*/
- #line 2468 "format.w"
+ #line 2481 "format.w"
#define ZERO_GLUE(G) ((G).w.w==0 && (G).w.h==0.0 && (G).w.v==0.0 && (G).p.f==0.0 && (G).m.f==0.0)
- /*:131*/ /*236:*/
- #line 4700 "format.w"
+ /*:131*/ /*244:*/
+ #line 5140 "format.w"
#define HINT_NO_POS 0xFFFFFFFF
- /*:236*/ /*243:*/
- #line 4898 "format.w"
+ /*:244*/ /*251:*/
+ #line 5338 "format.w"
#define LABEL_UNDEF 0
#define LABEL_TOP 1
#define LABEL_BOT 2
#define LABEL_MID 3
- /*:243*/ /*294:*/
- #line 6079 "format.w"
+ /*:251*/ /*302:*/
+ #line 6519 "format.w"
#define ALLOCATE(R,S,T) ((R)= (T *)calloc((S),sizeof(T)),\
(((R)==NULL)?QUIT("Out of memory for " #R):0))
#define REALLOCATE(R,S,T) ((R)= (T *)realloc((R),(S)*sizeof(T)),\
(((R)==NULL)?QUIT("Out of memory for " #R):0))
- /*:294*/ /*302:*/
- #line 6244 "format.w"
+ /*:302*/ /*310:*/
+ #line 6684 "format.w"
#define MAX_BANNER 256
- /*:302*/ /*315:*/
- #line 6448 "format.w"
+ /*:310*/ /*323:*/
+ #line 6888 "format.w"
#define MAX_TAG_DISTANCE 32
- /*:315*/
- #line 10011 "format.w"
+ /*:323*/
+ #line 10462 "format.w"
/*6:*/
- #line 487 "format.w"
+ #line 492 "format.w"
#define DEF_KIND(C,D,N) C##_kind= N
typedef enum{ /*9:*/
- #line 556 "format.w"
+ #line 561 "format.w"
DEF_KIND(text,text,0),
DEF_KIND(list,list,1),
@@ -146,21 +146,21 @@ DEF_KIND(undefined3,undefined3,30),
DEF_KIND(penalty,int,31)
/*:9*/
- #line 489 "format.w"
+ #line 494 "format.w"
, /*10:*/
- #line 595 "format.w"
+ #line 600 "format.w"
font_kind= glyph_kind,int_kind= penalty_kind,dimen_kind= kern_kind,label_kind= link_kind,outline_kind= link_kind
/*:10*/
- #line 489 "format.w"
+ #line 494 "format.w"
}Kind;
#undef DEF_KIND
/*:6*/ /*11:*/
- #line 621 "format.w"
+ #line 626 "format.w"
typedef enum{b000= 0,b001= 1,b010= 2,b011= 3,b100= 4,b101= 5,b110= 6,b111= 7}Info;
/*:11*/ /*56:*/
- #line 1294 "format.w"
+ #line 1301 "format.w"
#define FLT_M_BITS 23
@@ -172,43 +172,43 @@ typedef enum{b000= 0,b001= 1,b010= 2,b011= 3,b100= 4,b101= 5,b110= 6,b111= 7}Inf
#define DBL_EXCESS 1023
/*:56*/ /*76:*/
- #line 1620 "format.w"
+ #line 1634 "format.w"
typedef int32_t Scaled;
#define ONE ((Scaled)(1<<16))
/*:76*/ /*81:*/
- #line 1676 "format.w"
+ #line 1690 "format.w"
typedef Scaled Dimen;
#define MAX_DIMEN ((Dimen)(0x3FFFFFFF))
/*:81*/ /*86:*/
- #line 1732 "format.w"
+ #line 1746 "format.w"
typedef struct{
Dimen w;float32_t h,v;
}Xdimen;
/*:86*/ /*95:*/
- #line 1877 "format.w"
+ #line 1890 "format.w"
typedef enum{normal_o= 0,fil_o= 1,fill_o= 2,filll_o= 3}Order;
typedef struct{float64_t f;Order o;}Stretch;
typedef union{float32_t f;uint32_t u;}Stch;
/*:95*/ /*130:*/
- #line 2458 "format.w"
+ #line 2471 "format.w"
typedef struct{
Xdimen w;
Stretch p,m;
}Glue;
/*:130*/ /*180:*/
- #line 3881 "format.w"
+ #line 3894 "format.w"
typedef struct{
Glue bs,ls;
Dimen lsl;
}Baseline;
- /*:180*/ /*242:*/
- #line 4883 "format.w"
+ /*:180*/ /*250:*/
+ #line 5323 "format.w"
typedef struct
{uint32_t pos;
@@ -217,15 +217,15 @@ bool used;
int next;
uint32_t pos0;uint8_t f;
}Label;
- /*:242*/ /*373:*/
- #line 7942 "format.w"
+ /*:250*/ /*381:*/
+ #line 8382 "format.w"
#define MAX_FONT_PARAMS 11
- /*:373*/
- #line 10012 "format.w"
+ /*:381*/
+ #line 10463 "format.w"
- /*385:*/
- #line 8177 "format.w"
+ /*393:*/
+ #line 8617 "format.w"
typedef enum{
zero_int_no= 0,
@@ -253,8 +253,8 @@ hang_after_no= 21,
floating_penalty_no= 22
}Int_no;
#define MAX_INT_DEFAULT floating_penalty_no
- /*:385*/ /*387:*/
- #line 8250 "format.w"
+ /*:393*/ /*395:*/
+ #line 8690 "format.w"
typedef enum{
zero_dimen_no= 0,
@@ -269,8 +269,8 @@ quad_no= 8,
math_quad_no= 9
}Dimen_no;
#define MAX_DIMEN_DEFAULT math_quad_no
- /*:387*/ /*389:*/
- #line 8295 "format.w"
+ /*:395*/ /*397:*/
+ #line 8735 "format.w"
typedef enum{
zero_xdimen_no= 0,
@@ -278,8 +278,8 @@ hsize_xdimen_no= 1,
vsize_xdimen_no= 2
}Xdimen_no;
#define MAX_XDIMEN_DEFAULT vsize_xdimen_no
- /*:389*/ /*391:*/
- #line 8319 "format.w"
+ /*:397*/ /*399:*/
+ #line 8759 "format.w"
typedef enum{
zero_skip_no= 0,
@@ -299,43 +299,43 @@ tab_skip_no= 13,
par_fill_skip_no= 14
}Glue_no;
#define MAX_GLUE_DEFAULT par_fill_skip_no
- /*:391*/ /*393:*/
- #line 8405 "format.w"
+ /*:399*/ /*401:*/
+ #line 8845 "format.w"
typedef enum{
zero_baseline_no= 0
}Baseline_no;
#define MAX_BASELINE_DEFAULT zero_baseline_no
- /*:393*/ /*395:*/
- #line 8430 "format.w"
+ /*:401*/ /*403:*/
+ #line 8870 "format.w"
typedef enum{
zero_label_no= 0
}Label_no;
#define MAX_LABEL_DEFAULT zero_label_no
- /*:395*/ /*397:*/
- #line 8444 "format.w"
+ /*:403*/ /*405:*/
+ #line 8884 "format.w"
typedef enum{
zero_stream_no= 0
}Stream_no;
#define MAX_STREAM_DEFAULT zero_stream_no
- /*:397*/ /*399:*/
- #line 8460 "format.w"
+ /*:405*/ /*407:*/
+ #line 8900 "format.w"
typedef enum{
zero_page_no= 0
}Page_no;
#define MAX_PAGE_DEFAULT zero_page_no
- /*:399*/ /*401:*/
- #line 8477 "format.w"
+ /*:407*/ /*409:*/
+ #line 8917 "format.w"
typedef enum{
zero_range_no= 0
}Range_no;
#define MAX_RANGE_DEFAULT zero_range_no
- /*:401*/
- #line 10013 "format.w"
+ /*:409*/
+ #line 10464 "format.w"
extern const char*content_name[32];
@@ -352,4 +352,4 @@ extern Label label_defaults[MAX_LABEL_DEFAULT+1];
extern signed char hnode_size[0x100];
#endif
- /*:504*/
+ /*:512*/
diff --git a/Build/source/texk/web2c/hitexdir/hintview/src/get.c b/Build/source/texk/web2c/hitexdir/hintview/src/get.c
index 41dadeeed3e..42e69d3e4bf 100644
--- a/Build/source/texk/web2c/hitexdir/hintview/src/get.c
+++ b/Build/source/texk/web2c/hitexdir/hintview/src/get.c
@@ -1,5 +1,5 @@
- /*508:*/
- #line 10153 "format.w"
+ /*516:*/
+ #line 10604 "format.w"
#include "basetypes.h"
#include <string.h>
@@ -13,39 +13,39 @@
#include "format.h"
#include "get.h"
- /*244:*/
- #line 4905 "format.w"
+ /*252:*/
+ #line 5345 "format.w"
Label*labels;
int first_label= -1;
- /*:244*/ /*292:*/
- #line 6068 "format.w"
+ /*:252*/ /*300:*/
+ #line 6508 "format.w"
RangePos*range_pos;
int next_range= 1,max_range;
int*page_on;
- /*:292*/ /*303:*/
- #line 6252 "format.w"
+ /*:300*/ /*311:*/
+ #line 6692 "format.w"
char hbanner[MAX_BANNER+1];
int hbanner_size= 0;
- /*:303*/ /*310:*/
- #line 6393 "format.w"
+ /*:311*/ /*318:*/
+ #line 6833 "format.w"
uint8_t*hpos= NULL,*hstart= NULL,*hend= NULL,*hpos0= NULL;
- /*:310*/ /*316:*/
- #line 6474 "format.w"
+ /*:318*/ /*324:*/
+ #line 6914 "format.w"
char*hin_name= NULL;
uint64_t hin_size= 0;
uint8_t*hin_addr= NULL;
uint64_t hin_time= 0;
- /*:316*/ /*372:*/
- #line 7938 "format.w"
+ /*:324*/ /*380:*/
+ #line 8378 "format.w"
char**hfont_name;
- /*:372*/ /*411:*/
- #line 8638 "format.w"
+ /*:380*/ /*419:*/
+ #line 9078 "format.w"
unsigned int debugflags= DBGNONE;
int option_utf8= false;
@@ -56,16 +56,16 @@ int option_aux= false;
int option_compress= false;
char*stem_name= NULL;
int stem_length= 0;
- /*:411*/ /*414:*/
- #line 8772 "format.w"
+ /*:419*/ /*422:*/
+ #line 9212 "format.w"
FILE*hin= NULL,*hout= NULL,*hlog= NULL;
- /*:414*/
- #line 10166 "format.w"
+ /*:422*/
+ #line 10617 "format.w"
- /*317:*/
- #line 6481 "format.w"
+ /*325:*/
+ #line 6921 "format.w"
#ifndef USE_MMAP
void hget_unmap(void)
@@ -158,11 +158,11 @@ return hin_size;
}
#endif
- /*:317*/
- #line 10168 "format.w"
+ /*:325*/
+ #line 10619 "format.w"
- /*304:*/
- #line 6257 "format.w"
+ /*312:*/
+ #line 6697 "format.w"
bool hcheck_banner(char*magic)
@@ -193,11 +193,11 @@ LOG("%s file version %d.%d:%s",magic,HINT_VERSION,HINT_SUB_VERSION,t);
DBG(DBGDIR,"banner size=0x%x\n",hbanner_size);
return true;
}
- /*:304*/
- #line 10169 "format.w"
+ /*:312*/
+ #line 10620 "format.w"
- /*326:*/
- #line 6814 "format.w"
+ /*334:*/
+ #line 7254 "format.w"
Entry*dir= NULL;
uint16_t section_no,max_section_no;
@@ -208,8 +208,8 @@ max_section_no= entries-1;
ALLOCATE(dir,entries,Entry);
dir[0].section_no= 0;dir[1].section_no= 1;dir[2].section_no= 2;
}
- /*:326*/ /*327:*/
- #line 6827 "format.w"
+ /*:334*/ /*335:*/
+ #line 7267 "format.w"
void hset_entry(Entry*e,uint16_t i,uint32_t size,uint32_t xsize,char*file_name)
{e->section_no= i;
@@ -220,12 +220,12 @@ else
e->file_name= strdup(file_name);
DBG(DBGDIR,"Creating entry %d: \"%s\" size=0x%x xsize=0x%x\n",i,file_name,size,xsize);
}
- /*:327*/
- #line 10170 "format.w"
+ /*:335*/
+ #line 10621 "format.w"
- /*305:*/
- #line 6296 "format.w"
+ /*313:*/
+ #line 6736 "format.w"
void hget_banner(void)
{hbanner_size= 0;
@@ -236,8 +236,8 @@ if(c=='\n')break;
}
hbanner[hbanner_size]= 0;
}
- /*:305*/ /*318:*/
- #line 6586 "format.w"
+ /*:313*/ /*326:*/
+ #line 7026 "format.w"
static void hdecompress(uint16_t n)
@@ -273,8 +273,8 @@ dir[n].bsize= dir[n].xsize;
hpos0= hpos= hstart= buffer;
hend= hstart+dir[n].xsize;
}
- /*:318*/ /*320:*/
- #line 6674 "format.w"
+ /*:326*/ /*328:*/
+ #line 7114 "format.w"
void hget_section(uint16_t n)
{DBG(DBGDIR,"Reading section %d\n",n);
@@ -289,19 +289,19 @@ hend= hstart+dir[n].size;
if(dir[n].xsize>0)hdecompress(n);
}
}
- /*:320*/ /*337:*/
- #line 7052 "format.w"
+ /*:328*/ /*345:*/
+ #line 7492 "format.w"
void hget_entry(Entry*e)
{ /*15:*/
- #line 712 "format.w"
+ #line 717 "format.w"
uint8_t a,z;
uint32_t node_pos= hpos-hstart;
if(hpos>=hend)QUIT("Attempt to read a start byte at the end of the section");
HGETTAG(a);
/*:15*/
- #line 7054 "format.w"
+ #line 7494 "format.w"
DBG(DBGDIR,"Reading directory entry\n");
switch(a)
@@ -316,18 +316,18 @@ case TAG(0,b100+3):HGET_ENTRY(b100+3,*e);break;
default:TAGERR(a);break;
}
/*16:*/
- #line 719 "format.w"
+ #line 724 "format.w"
HGETTAG(z);
if(a!=z)
QUIT("Tag mismatch [%s,%d]!=[%s,%d] at 0x%x to "SIZE_F"\n",
NAME(a),INFO(a),NAME(z),INFO(z),node_pos,hpos-hstart-1);
/*:16*/
- #line 7067 "format.w"
+ #line 7507 "format.w"
}
- /*:337*/ /*338:*/
- #line 7084 "format.w"
+ /*:345*/ /*346:*/
+ #line 7524 "format.w"
static void hget_root(Entry*root)
{DBG(DBGDIR,"Root entry at "SIZE_F"\n",hpos-hstart);
@@ -362,20 +362,20 @@ if(dir[i].xsize>0&&dir[i].buffer!=NULL)free(dir[i].buffer);
free(dir);dir= NULL;
}
- /*:338*/ /*356:*/
- #line 7500 "format.w"
+ /*:346*/ /*364:*/
+ #line 7940 "format.w"
void hget_max_definitions(void)
{Kind k;
/*15:*/
- #line 712 "format.w"
+ #line 717 "format.w"
uint8_t a,z;
uint32_t node_pos= hpos-hstart;
if(hpos>=hend)QUIT("Attempt to read a start byte at the end of the section");
HGETTAG(a);
/*:15*/
- #line 7503 "format.w"
+ #line 7943 "format.w"
if(a!=TAG(list_kind,0))QUIT("Start of maximum list expected");
for(k= 0;k<32;k++)max_ref[k]= max_default[k];max_outline= -1;
@@ -388,15 +388,15 @@ k= KIND(a);
if(k==list_kind)break;
if(INFO(a)&b001)HGET16(n);else n= HGET8;
switch(a)
-{ /*238:*/
- #line 4835 "format.w"
+{ /*246:*/
+ #line 5275 "format.w"
case TAG(outline_kind,b100):
case TAG(outline_kind,b101):max_outline= n;
DBG(DBGDEF|DBGLABEL,"max(outline) = %d\n",max_outline);break;
- /*:238*/
- #line 7515 "format.w"
+ /*:246*/
+ #line 7955 "format.w"
default:
if(max_fixed[k]>max_default[k])
@@ -407,23 +407,23 @@ DBG(DBGDEF,"max(%s) = %d\n",definition_name[k],max_ref[k]);
break;
}
/*16:*/
- #line 719 "format.w"
+ #line 724 "format.w"
HGETTAG(z);
if(a!=z)
QUIT("Tag mismatch [%s,%d]!=[%s,%d] at 0x%x to "SIZE_F"\n",
NAME(a),INFO(a),NAME(z),INFO(z),node_pos,hpos-hstart-1);
/*:16*/
- #line 7524 "format.w"
+ #line 7964 "format.w"
}
if(INFO(a)!=0)QUIT("End of maximum list with info %d",INFO(a));
}
- /*:356*/
- #line 10172 "format.w"
+ /*:364*/
+ #line 10623 "format.w"
/*52:*/
- #line 1228 "format.w"
+ #line 1233 "format.w"
#define HGET_UTF8C(X) (X)= HGET8; if ((X&0xC0)!=0x80) \
QUIT("UTF8 continuation byte expected at " SIZE_F " got 0x%02X\n",hpos-hstart-1,X)
@@ -449,7 +449,7 @@ else QUIT("UTF8 byte sequence expected");
}
}
/*:52*/ /*75:*/
- #line 1603 "format.w"
+ #line 1613 "format.w"
float32_t hget_float32(void)
{union{float32_t d;uint32_t bits;}u;
@@ -457,7 +457,7 @@ HGET32(u.bits);
return u.d;
}
/*:75*/ /*145:*/
- #line 2822 "format.w"
+ #line 2835 "format.w"
void hget_size_boundary(Info info)
{uint32_t n;
@@ -485,35 +485,35 @@ QUIT("List expected at 0x%x",(uint32_t)(hpos-hstart));
else
{
/*15:*/
- #line 712 "format.w"
+ #line 717 "format.w"
uint8_t a,z;
uint32_t node_pos= hpos-hstart;
if(hpos>=hend)QUIT("Attempt to read a start byte at the end of the section");
HGETTAG(a);
/*:15*/
- #line 2848 "format.w"
+ #line 2861 "format.w"
l->k= KIND(a);
HGET_LIST(INFO(a),*l);
/*16:*/
- #line 719 "format.w"
+ #line 724 "format.w"
HGETTAG(z);
if(a!=z)
QUIT("Tag mismatch [%s,%d]!=[%s,%d] at 0x%x to "SIZE_F"\n",
NAME(a),INFO(a),NAME(z),INFO(z),node_pos,hpos-hstart-1);
/*:16*/
- #line 2851 "format.w"
+ #line 2864 "format.w"
DBG(DBGNODE,"Get list at 0x%x size=%u\n",l->p,l->s);
}
}
/*:145*/
- #line 10173 "format.w"
+ #line 10624 "format.w"
- /*426:*/
- #line 8944 "format.w"
+ /*434:*/
+ #line 9384 "format.w"
uint32_t hff_list_pos= 0,hff_list_size= 0;
uint8_t hff_tag;
@@ -532,8 +532,8 @@ hpos++;
return;
}
else if(hff_tag<=TAG(param_kind,5))
- /*428:*/
- #line 8989 "format.w"
+ /*436:*/
+ #line 9429 "format.w"
switch(INFO(hff_tag)){
case 1:hff_list_pos= hpos-hstart+1;hff_list_size= 0;hpos= hpos+2;return;
@@ -542,21 +542,21 @@ case 3:hpos++;HGET16(hff_list_size);hff_list_pos= hpos-hstart+1;hpos= hpos+1+hff
case 4:hpos++;HGET24(hff_list_size);hff_list_pos= hpos-hstart+1;hpos= hpos+1+hff_list_size+1+3+1;return;
case 5:hpos++;HGET32(hff_list_size);hff_list_pos= hpos-hstart+1;hpos= hpos+1+hff_list_size+1+4+1;return;
}
- /*:428*/
- #line 8962 "format.w"
+ /*:436*/
+ #line 9402 "format.w"
TAGERR(hff_tag);
}
- /*:426*/ /*457:*/
- #line 9397 "format.w"
+ /*:434*/ /*465:*/
+ #line 9840 "format.w"
float32_t hteg_float32(void)
{union{float32_t d;uint32_t bits;}u;
HTEG32(u.bits);
return u.d;
}
- /*:457*/ /*495:*/
- #line 9825 "format.w"
+ /*:465*/ /*503:*/
+ #line 10278 "format.w"
void hteg_size_boundary(Info info)
{uint32_t n;
@@ -578,15 +578,15 @@ return n;
}
void hteg_list(List*l)
-{ /*454:*/
- #line 9369 "format.w"
+{ /*462:*/
+ #line 9812 "format.w"
uint8_t a,z;
uint32_t node_pos= hpos-hstart;
if(hpos<=hstart)return;
HTEGTAG(z);
- /*:454*/
- #line 9846 "format.w"
+ /*:462*/
+ #line 10299 "format.w"
if(KIND(z)!=list_kind&&KIND(z)!=text_kind&&KIND(z)!=param_kind)
QUIT("List expected at 0x%x",(uint32_t)(hpos-hstart));
@@ -601,14 +601,14 @@ hteg_size_boundary(INFO(z));
s= hteg_list_size(INFO(z));
if(s!=l->s)QUIT("List sizes at "SIZE_F" and 0x%x do not match 0x%x != 0x%x",
hpos-hstart,node_pos-1,s,l->s);
- /*455:*/
- #line 9376 "format.w"
+ /*463:*/
+ #line 9819 "format.w"
HTEGTAG(a);
if(a!=z)QUIT("Tag mismatch [%s,%d]!=[%s,%d] at "SIZE_F" to 0x%x\n",NAME(a),INFO(a),NAME(z),INFO(z),
hpos-hstart,node_pos-1);
- /*:455*/
- #line 9860 "format.w"
+ /*:463*/
+ #line 10313 "format.w"
}
}
@@ -619,7 +619,7 @@ hteg_list(l);
}
- /*:495*/
- #line 10174 "format.w"
+ /*:503*/
+ #line 10625 "format.w"
- /*:508*/
+ /*:516*/
diff --git a/Build/source/texk/web2c/hitexdir/hintview/src/get.h b/Build/source/texk/web2c/hitexdir/hintview/src/get.h
index bd628745c41..0d6e924cd74 100644
--- a/Build/source/texk/web2c/hitexdir/hintview/src/get.h
+++ b/Build/source/texk/web2c/hitexdir/hintview/src/get.h
@@ -1,25 +1,25 @@
- /*507:*/
- #line 10108 "format.w"
+ /*515:*/
+ #line 10559 "format.w"
/*1:*/
#line 328 "format.w"
typedef struct{uint32_t c;uint8_t f;}Glyph;
/*:1*/ /*113:*/
- #line 2153 "format.w"
+ #line 2166 "format.w"
typedef struct{
Dimen h,d,w;
}Rule;
/*:113*/ /*122:*/
- #line 2267 "format.w"
+ #line 2280 "format.w"
typedef struct{
bool x;
Xdimen d;
}Kern;
/*:122*/ /*140:*/
- #line 2688 "format.w"
+ #line 2701 "format.w"
typedef struct{
Kind k;
@@ -27,37 +27,38 @@ uint32_t p;
uint32_t s;
}List;
/*:140*/ /*148:*/
- #line 3110 "format.w"
+ #line 3123 "format.w"
typedef enum{txt_font= 0x00,txt_global= 0x08,txt_local= 0x11,
txt_cc= 0x1D,txt_node= 0x1E,txt_hyphen= 0x1F,
txt_glue= 0x20,txt_ignore= 0xFB}Txt;
/*:148*/ /*159:*/
- #line 3377 "format.w"
+ #line 3390 "format.w"
typedef struct{Kind k;int n;}Ref;
/*:159*/ /*160:*/
- #line 3414 "format.w"
+ #line 3427 "format.w"
typedef struct{Dimen h,d,w,a;float32_t r;int8_t s,o;List l;}Box;
/*:160*/ /*187:*/
- #line 3970 "format.w"
+ #line 3983 "format.w"
typedef struct{uint8_t f;List l;}Lig;
/*:187*/ /*195:*/
- #line 4087 "format.w"
+ #line 4100 "format.w"
typedef struct{bool x;List p,q;uint8_t r;}Disc;
/*:195*/ /*228:*/
- #line 4608 "format.w"
+ #line 4658 "format.w"
typedef struct{
uint16_t n;
-Dimen w,h;
-Stretch p,m;
+float32_t a;
+Xdimen w,h;
+uint8_t wr,hr;
}Image;
- /*:228*/ /*264:*/
- #line 5247 "format.w"
+ /*:228*/ /*272:*/
+ #line 5687 "format.w"
typedef struct{
uint8_t*t;
@@ -65,16 +66,16 @@ int s;
int d;
uint16_t r;
}Outline;
- /*:264*/ /*291:*/
- #line 6063 "format.w"
+ /*:272*/ /*299:*/
+ #line 6503 "format.w"
typedef
struct{uint8_t pg;uint32_t pos;bool on;int link;}RangePos;
- /*:291*/
- #line 10109 "format.w"
+ /*:299*/
+ #line 10560 "format.w"
- /*325:*/
- #line 6800 "format.w"
+ /*333:*/
+ #line 7240 "format.w"
typedef struct{
uint64_t pos;
@@ -84,17 +85,17 @@ char*file_name;
uint8_t*buffer;
uint32_t bsize;
}Entry;
- /*:325*/
- #line 10110 "format.w"
+ /*:333*/
+ #line 10561 "format.w"
/*37:*/
- #line 1062 "format.w"
+ #line 1067 "format.w"
#define HGET_STRING(S) S= (char*)hpos;\
while(hpos<hend && *hpos!=0) { RNG("String character",*hpos,0x20,0x7E); hpos++;}\
hpos++;
/*:37*/ /*146:*/
- #line 2857 "format.w"
+ #line 2870 "format.w"
#define HGET_LIST(I,L) \
(L).s= hget_list_size(I); hget_size_boundary(I);\
@@ -103,8 +104,8 @@ uint32_t bsize;
{ uint32_t s= hget_list_size(I); \
if (s!=(L).s) \
QUIT("List sizes at 0x%x and " SIZE_F " do not match 0x%x != 0x%x",node_pos+1,hpos-hstart-I-1,(L).s,s);}
- /*:146*/ /*311:*/
- #line 6401 "format.w"
+ /*:146*/ /*319:*/
+ #line 6841 "format.w"
#define HGET_ERROR QUIT("HGET overrun in section %d at " SIZE_F "\n",section_no,hpos-hstart)
#define HEND ((hpos<=hend)?0:(HGET_ERROR,0))
@@ -114,8 +115,8 @@ uint32_t bsize;
#define HGET24(X) ((X)= (hpos[0]<<16)+(hpos[1]<<8)+hpos[2],hpos+= 3,HEND)
#define HGET32(X) ((X)= (hpos[0]<<24)+(hpos[1]<<16)+(hpos[2]<<8)+hpos[3],hpos+= 4,HEND)
#define HGETTAG(A) A= HGET8,DBGTAG(A,hpos-1)
- /*:311*/ /*336:*/
- #line 7028 "format.w"
+ /*:319*/ /*344:*/
+ #line 7468 "format.w"
#define HGET_SIZE(I) \
if ((I)&b100) { \
@@ -138,8 +139,8 @@ uint32_t bsize;
HGET16(i); HGET_SIZE(I); HGET_STRING(file_name); \
hset_entry(&(E),i,s,xs,file_name); \
}
- /*:336*/ /*456:*/
- #line 9384 "format.w"
+ /*:344*/ /*464:*/
+ #line 9827 "format.w"
#define HBACK(X) ((hpos-(X)<hstart)?(QUIT("HTEG underflow\n"),NULL):(hpos-= (X)))
@@ -148,8 +149,8 @@ uint32_t bsize;
#define HTEG24(X) (HBACK(3),(X)= (hpos[0]<<16)+(hpos[1]<<8)+hpos[2])
#define HTEG32(X) (HBACK(4),(X)= (hpos[0]<<24)+(hpos[1]<<16)+(hpos[2]<<8)+hpos[3])
#define HTEGTAG(X) X= HTEG8,DBGTAG(X,hpos)
- /*:456*/
- #line 10111 "format.w"
+ /*:464*/
+ #line 10562 "format.w"
extern Entry*dir;
@@ -187,4 +188,4 @@ extern void hteg_list(List*l);
extern void hff_hpos(void);
extern uint32_t hff_list_pos,hff_list_size;
extern uint8_t hff_tag;
- /*:507*/
+ /*:515*/
diff --git a/Build/source/texk/web2c/hitexdir/hintview/src/hfonts.c b/Build/source/texk/web2c/hitexdir/hintview/src/hfonts.c
index a9713118b0a..5ff776e60d4 100644
--- a/Build/source/texk/web2c/hitexdir/hintview/src/hfonts.c
+++ b/Build/source/texk/web2c/hitexdir/hintview/src/hfonts.c
@@ -1,5 +1,5 @@
/*376:*/
-#line 7614 "hint.w"
+#line 7609 "hint.w"
#include "basetypes.h"
#include "error.h"
@@ -13,19 +13,19 @@
#include "rendernative.h"
/*308:*/
-#line 5720 "hint.w"
+#line 5748 "hint.w"
static Font*fonts[0x100]= {NULL};
/*:308*//*315:*/
-#line 5856 "hint.w"
+#line 5884 "hint.w"
static Gcache g_undefined= {0};
/*:315*//*349:*/
-#line 7003 "hint.w"
+#line 6998 "hint.w"
static FT_Library ft_library= NULL;
/*:349*/
-#line 7626 "hint.w"
+#line 7621 "hint.w"
/*35:*/
#line 562 "hint.w"
@@ -33,10 +33,10 @@ static FT_Library ft_library= NULL;
extern uint16_t hglyph_section(uint8_t f);
extern int32_t font_at_size(uint8_t f);
/*:35*/
-#line 7627 "hint.w"
+#line 7622 "hint.w"
/*314:*/
-#line 5813 "hint.w"
+#line 5841 "hint.w"
#define G0_BITS 7
#define G0_SIZE (1<<G0_BITS)
@@ -71,7 +71,7 @@ return f->g0[cc];
return NULL;
}
/*:314*//*316:*/
-#line 5860 "hint.w"
+#line 5888 "hint.w"
static Gcache*hnew_g(Gcache**g)
{if(*g==NULL)
@@ -126,24 +126,24 @@ else if(cc<G123_SIZE*G123_SIZE*G123_SIZE*G0_SIZE)return hnew_g3(&(f->g3),cc);
else return&g_undefined;
}
/*:316*/
-#line 7628 "hint.w"
+#line 7623 "hint.w"
/*353:*/
-#line 7037 "hint.w"
+#line 7032 "hint.w"
int unpack_ft_file(Font*f)
{int e;
/*350:*/
-#line 7007 "hint.w"
+#line 7002 "hint.w"
if(ft_library==NULL)
{int e= FT_Init_FreeType(&ft_library);
if(e)QUIT("Unable to initialize the FreeType library");
}
/*:350*/
-#line 7041 "hint.w"
+#line 7036 "hint.w"
f->hpxs= 72.27/xdpi;
f->vpxs= 72.27/ydpi;
@@ -151,15 +151,15 @@ e= FT_New_Memory_Face(ft_library,
f->font_data,f->data_size,0,&(f->tt.face));
if(e)return 0;
/*354:*/
-#line 7062 "hint.w"
+#line 7057 "hint.w"
e= FT_Select_Charmap(f->tt.face,FT_ENCODING_ADOBE_CUSTOM);
if(e)LOG("Unable to select custom encoding for font %d\n",f->n);
/*:354*/
-#line 7047 "hint.w"
+#line 7042 "hint.w"
/*355:*/
-#line 7070 "hint.w"
+#line 7065 "hint.w"
e= FT_Set_Char_Size(
f->tt.face,
@@ -170,13 +170,13 @@ f->tt.face,
if(e)QUIT("Unable to set FreeType glyph size");
FT_Set_Transform(f->tt.face,0,0);
/*:355*/
-#line 7048 "hint.w"
+#line 7043 "hint.w"
f->ff= ft_format;
return 1;
}
/*:353*//*356:*/
-#line 7093 "hint.w"
+#line 7088 "hint.w"
static void ft_unpack_glyph(Font*f,Gcache*g,uint32_t cc)
{int e,i;
@@ -201,22 +201,22 @@ nativeSetFreeType(g);
}
/*:356*/
-#line 7630 "hint.w"
+#line 7625 "hint.w"
/*341:*/
-#line 6708 "hint.w"
+#line 6703 "hint.w"
#define PK_READ_1_BYTE() (data[i++])
#define PK_READ_2_BYTE() (k= PK_READ_1_BYTE(),k= k<<8,k= k+data[i++],k)
#define PK_READ_3_BYTE() (k= PK_READ_2_BYTE(),k= k<<8,k= k+data[i++],k)
#define PK_READ_4_BYTE() (k= PK_READ_3_BYTE(),k= k<<8,k= k+data[i++],k)
/*:341*//*343:*/
-#line 6735 "hint.w"
+#line 6730 "hint.w"
#define read_nybble(P) ((P).j&1?((P).data[(P).j++>>1]&0xF):(((P).data[(P).j++>>1]>>4)&0xF))
/*:343*//*344:*/
-#line 6761 "hint.w"
+#line 6756 "hint.w"
static int packed_number(PKparse*p)
{int i,k;
@@ -235,7 +235,7 @@ return packed_number(p);
}
}
/*:344*//*345:*/
-#line 6790 "hint.w"
+#line 6785 "hint.w"
static void pk_runlength(Gcache*g,unsigned char*data){
PKparse p;
@@ -277,7 +277,7 @@ y++;
}
}
/*:345*//*346:*/
-#line 6842 "hint.w"
+#line 6837 "hint.w"
static void pk_bitmap(Gcache*g,unsigned char*data){
unsigned char*bits;
@@ -298,7 +298,7 @@ if(mask==0){data++;mask= 0x80;}
}
}
/*:346*//*347:*/
-#line 6865 "hint.w"
+#line 6860 "hint.w"
static void pkunpack_glyph(Gcache*g)
@@ -341,7 +341,7 @@ else pk_runlength(g,data+i);
nativeSetPK(g);
}
/*:347*//*348:*/
-#line 6910 "hint.w"
+#line 6905 "hint.w"
static Gcache*hnew_glyph(Font*pk,unsigned int cc);
@@ -427,11 +427,11 @@ return 1;
}
/*:348*/
-#line 7632 "hint.w"
+#line 7627 "hint.w"
/*309:*/
-#line 5726 "hint.w"
+#line 5754 "hint.w"
struct font_s*hget_font(unsigned char f)
{Font*fp;
@@ -453,14 +453,14 @@ hpos= spos;hstart= sstart;hend= send;
}
fp->s= font_at_size(f)/(double)(1<<16);
/*338:*/
-#line 6645 "hint.w"
+#line 6640 "hint.w"
if(fp->font_data[0]==0xF7&&fp->font_data[1]==0x59)
{fp->ff= pk_format;
if(!unpack_pk_file(fp)){free(fp);fp= NULL;}
}
/*:338*//*357:*/
-#line 7120 "hint.w"
+#line 7115 "hint.w"
else if(unpack_ft_file(fp))
fp->ff= ft_format;
@@ -469,13 +469,13 @@ else
free(fp);fp= NULL;
}
/*:357*/
-#line 5746 "hint.w"
+#line 5774 "hint.w"
fonts[f]= fp;
return fonts[f];
}
/*:309*//*311:*/
-#line 5764 "hint.w"
+#line 5792 "hint.w"
static void hfree_glyph_cache(Font*f,bool rm);
@@ -489,7 +489,7 @@ if(rm){free(fonts[f]);fonts[f]= NULL;}
}
}
/*:311*//*317:*/
-#line 5924 "hint.w"
+#line 5952 "hint.w"
static void hfree_g0(struct gcache_s**g,bool rm)
{int i;
@@ -554,7 +554,7 @@ if(rm){free(f->g3);f->g3= NULL;}
}
}
/*:317*//*319:*/
-#line 6050 "hint.w"
+#line 6078 "hint.w"
Gcache*hget_glyph(Font*f,unsigned int cc)
{
@@ -574,7 +574,7 @@ else QUIT("Font format not supported");
return g;
}
/*:319*//*321:*/
-#line 6082 "hint.w"
+#line 6110 "hint.w"
void render_char(int x,int y,struct font_s*f,uint32_t cc,uint8_t s)
@@ -590,7 +590,7 @@ nativeGlyph(SP2PT(x),dx,SP2PT(y),dy,w,h,g,s);
}
/*:321*/
-#line 7634 "hint.w"
+#line 7629 "hint.w"
/*:376*/
diff --git a/Build/source/texk/web2c/hitexdir/hintview/src/hfonts.h b/Build/source/texk/web2c/hitexdir/hintview/src/hfonts.h
index 63166cef1b0..8aac51ace99 100644
--- a/Build/source/texk/web2c/hitexdir/hintview/src/hfonts.h
+++ b/Build/source/texk/web2c/hitexdir/hintview/src/hfonts.h
@@ -1,18 +1,18 @@
/*375:*/
-#line 7603 "hint.w"
+#line 7598 "hint.w"
#ifndef _HFONTS_H
#define _HFONTS_H
/*306:*/
-#line 5692 "hint.w"
+#line 5720 "hint.w"
typedef enum{no_format,pk_format,ft_format}FontFormat;
/*:306*//*307:*/
-#line 5704 "hint.w"
+#line 5732 "hint.w"
/*339:*/
-#line 6684 "hint.w"
+#line 6679 "hint.w"
typedef struct
@@ -22,19 +22,19 @@ double ds;
unsigned char id;
}PKfont;
/*:339*//*351:*/
-#line 7015 "hint.w"
+#line 7010 "hint.w"
typedef struct
{FT_Face face;
}FTfont;
/*:351*//*352:*/
-#line 7022 "hint.w"
+#line 7017 "hint.w"
typedef struct
{int dummy;
}FTglyph;
/*:352*/
-#line 5705 "hint.w"
+#line 5733 "hint.w"
typedef struct font_s{
@@ -44,7 +44,7 @@ int data_size;
double s;
double hpxs,vpxs;
/*313:*/
-#line 5799 "hint.w"
+#line 5827 "hint.w"
struct gcache_s**g0;
struct gcache_s***g1;
@@ -52,23 +52,23 @@ struct gcache_s****g2;
struct gcache_s*****g3;
/*:313*/
-#line 5713 "hint.w"
+#line 5741 "hint.w"
FontFormat ff;
union{PKfont pk;FTfont tt;};
}Font;
/*:307*//*318:*/
-#line 6011 "hint.w"
+#line 6039 "hint.w"
/*340:*/
-#line 6697 "hint.w"
+#line 6692 "hint.w"
typedef struct
{unsigned char flag;
unsigned char*encoding;
}PKglyph;
/*:340*//*342:*/
-#line 6724 "hint.w"
+#line 6719 "hint.w"
typedef struct{
int j;
@@ -77,7 +77,7 @@ int f;
unsigned char*data;
}PKparse;
/*:342*/
-#line 6012 "hint.w"
+#line 6040 "hint.w"
struct gcache_s{
@@ -93,7 +93,7 @@ FTglyph tt;
};
typedef struct gcache_s Gcache;
/*:318*/
-#line 7607 "hint.w"
+#line 7602 "hint.w"
diff --git a/Build/source/texk/web2c/hitexdir/hintview/src/hint.c b/Build/source/texk/web2c/hitexdir/hintview/src/hint.c
index 5d71ec97bb2..b2463d6709d 100644
--- a/Build/source/texk/web2c/hitexdir/hintview/src/hint.c
+++ b/Build/source/texk/web2c/hitexdir/hintview/src/hint.c
@@ -1,5 +1,5 @@
/*372:*/
-#line 7524 "hint.w"
+#line 7519 "hint.w"
#include "basetypes.h"
#include <string.h>
@@ -209,17 +209,25 @@ hget_list_pointer();
#line 3129 "hint.w"
#define HGET_IMAGE(I) \
-{ pointer p;\
- p= get_node(image_node_size); type(p)= whatsit_node; subtype(p)= image_node;\
- HGET16(image_no(p));RNG("Section number",image_no(p),3,max_section_no); \
- if (I&b010) {HGET32(image_width(p)); HGET32(image_height(p));} \
- else image_width(p)= image_height(p)= 0;\
- if (I&b001) {HGET_STRETCH(image_stretch(p),image_stretch_order(p)); \
- HGET_STRETCH(image_shrink(p),image_shrink_order(p));}\
- else { image_stretch(p)= image_shrink(p)= 0;image_stretch_order(p)= image_shrink_order(p)= normal;}\
- tail_append(p);}
+{pointer p; float32_t a= 0.0; scaled w,h;\
+p= get_node(image_node_size); type(p)= whatsit_node; subtype(p)= image_node;\
+HGET16(image_no(p));RNG("Section number",image_no(p),3,max_section_no); \
+if ((I)&b100) { a= hget_float32();\
+ if ((I)==b111) {w= hget_xdimen_node();h= hget_xdimen_node();}\
+ else if ((I)==b110) {h= hget_xdimen_ref(HGET8);w= hget_xdimen_node();}\
+ else if ((I)==b101) {w= hget_xdimen_ref(HGET8);h= hget_xdimen_node();}\
+ else {w= hget_xdimen_ref(HGET8);h= hget_xdimen_ref(HGET8);}\
+ if (a!=0.0) { if (h==0) h= round(w/a); else if (w==0) w= round(h*a);\
+ else if (w> round(h*a)) w= round(h*a); else if (h> round(w/a)) h= round(w/a);}}\
+else if((I)==b011) {HGET32(w);HGET32(h);} \
+else if((I)==b010) { a= hget_float32(); HGET32(w); h= round(w/a);}\
+else if((I)==b001){ a= hget_float32(); HGET32(h); w= round(h*a);}\
+if (w==0 || h==0) QUIT("Incomplete dimensions in image %d",image_no(p));\
+image_width(p)= w; image_height(p)= h;\
+image_alt(p)= hget_list_pointer();\
+tail_append(p);}
/*:189*//*193:*/
-#line 3171 "hint.w"
+#line 3194 "hint.w"
#define HGET_LINK(I) \
{ pointer p;\
@@ -230,7 +238,7 @@ hget_list_pointer();
label_has_name(p)= 0;\
tail_append(p);}
/*:193*/
-#line 7536 "hint.w"
+#line 7531 "hint.w"
/*84:*/
#line 1303 "hint.w"
@@ -400,20 +408,29 @@ if ((I)&b100) hteg_xdimen_node(); else hget_xdimen_ref(HTEG8);
subtype(p)= HTEG8;RNG("Stream",subtype(p),1,254);\
tail_append(p);}
/*:186*//*190:*/
-#line 3142 "hint.w"
+#line 3150 "hint.w"
#define HTEG_IMAGE(I) \
-{ pointer p;\
- p= get_node(image_node_size); type(p)= whatsit_node; subtype(p)= image_node;\
- if (I&b001) {HTEG_STRETCH(image_shrink(p),image_shrink_order(p));\
- HTEG_STRETCH(image_stretch(p),image_stretch_order(p)); }\
- else { image_stretch(p)= image_shrink(p)= 0;image_stretch_order(p)= image_shrink_order(p)= normal;}\
- if (I&b010) {HTEG32(image_height(p)); HTEG32(image_width(p)); } \
- else image_width(p)= image_height(p)= 0;\
- HTEG16(image_no(p));RNG("Section number",image_no(p),3,max_section_no); \
- tail_append(p);}
+{ pointer p; float32_t a= 0.0; scaled w,h;\
+p= get_node(image_node_size); type(p)= whatsit_node; subtype(p)= image_node;\
+image_alt(p)= hteg_list_pointer();\
+if ((I)&b100) {\
+ if ((I)==b111) {h= hteg_xdimen_node();w= hteg_xdimen_node();}\
+ else if ((I)==b110) {w= hteg_xdimen_node();h= hget_xdimen_ref(HTEG8);}\
+ else if ((I)==b101) {h= hteg_xdimen_node();w= hget_xdimen_ref(HTEG8);}\
+ else {h= hget_xdimen_ref(HTEG8);w= hget_xdimen_ref(HTEG8);}\
+ a= hteg_float32();\
+ if (a!=0.0) { if (h==0) h= round(w/a); else if (w==0) w= round(h*a);\
+ else if (w> round(h*a)) w= round(h*a); else if (h> round(w/a)) h= round(w/a); }}\
+else if((I)==b011) {HTEG32(h);HTEG32(w);} \
+else if((I)==b010) { HTEG32(w); a= hteg_float32(); h= round(w/a);}\
+else if((I)==b001){ HTEG32(h); a= hteg_float32(); w= round(h*a);}\
+HTEG16(image_no(p));RNG("Section number",image_no(p),3,max_section_no); \
+if (w==0 || h==0) QUIT("Incomplete dimensions in image %d",image_no(p));\
+image_width(p)= w; image_height(p)= h;\
+tail_append(p);}
/*:190*//*194:*/
-#line 3182 "hint.w"
+#line 3205 "hint.w"
#define HTEG_LINK(I) \
{ pointer p;\
@@ -424,7 +441,7 @@ if ((I)&b100) hteg_xdimen_node(); else hget_xdimen_ref(HTEG8);
label_has_name(p)= 0;\
tail_append(p);}
/*:194*/
-#line 7537 "hint.w"
+#line 7532 "hint.w"
/*21:*/
@@ -455,7 +472,7 @@ typedef struct ParamDef{
struct ParamDef*next;
Param p;}ParamDef;
/*:37*/
-#line 7539 "hint.w"
+#line 7534 "hint.w"
@@ -535,16 +552,16 @@ int outline_no= -1;
static ParamDef*line_break_params= NULL;
/*:162*//*205:*/
-#line 3482 "hint.w"
+#line 3505 "hint.w"
static scaled page_height;
static scaled top_so_far[8];
/*:205*//*220:*/
-#line 3760 "hint.w"
+#line 3783 "hint.w"
static uint32_t map[0x10000];
/*:220*//*225:*/
-#line 3824 "hint.w"
+#line 3847 "hint.w"
#define MAX_PAGE_POS (1<<3)
@@ -552,25 +569,25 @@ uint64_t page_loc[MAX_PAGE_POS];
int cur_loc;
static int lo_loc,hi_loc;
/*:225*//*242:*/
-#line 4216 "hint.w"
+#line 4240 "hint.w"
scaled hvsize,hhsize;
/*:242*//*244:*/
-#line 4244 "hint.w"
+#line 4268 "hint.w"
int page_v,page_h,offset_v,offset_h;
/*:244*//*301:*/
-#line 5519 "hint.w"
+#line 5547 "hint.w"
hint_Link*hint_links= NULL;
int max_link= -1;
/*:301*//*359:*/
-#line 7219 "hint.w"
+#line 7214 "hint.w"
jmp_buf error_exit;
char herror_string[MAX_HERROR];
/*:359*/
-#line 7542 "hint.w"
+#line 7537 "hint.w"
/*3:*/
#line 196 "hint.w"
@@ -609,7 +626,7 @@ static pointer hteg_list_pointer(void);
static scaled hget_xdimen_node(void);
/*:124*/
-#line 7543 "hint.w"
+#line 7538 "hint.w"
/*9:*/
#line 253 "hint.w"
@@ -1858,14 +1875,14 @@ ins_ptr(p)= list_ptr(s);
list_ptr(s)= null;flush_node_list(s);
}
/*:184*//*224:*/
-#line 3802 "hint.w"
+#line 3825 "hint.w"
uint64_t hlocation(pointer p)
{return PAGE_LOC(map[p],map[p+1]);
}
/*:224*//*227:*/
-#line 3848 "hint.w"
+#line 3871 "hint.w"
#define NEXT_PAGE(X) (X= (X+1)&(MAX_PAGE_POS-1))
#define PREV_PAGE(X) (X= (X-1)&(MAX_PAGE_POS-1))
@@ -1898,7 +1915,7 @@ return true;
/*:227*//*230:*/
-#line 3910 "hint.w"
+#line 3933 "hint.w"
void hloc_set(uint64_t h)
@@ -1912,12 +1929,13 @@ hloc_clear();
DBG(DBGPAGE,"loc_set: %d < %d < %d\n",lo_loc,cur_loc,hi_loc);
}
/*:230*//*231:*/
-#line 3934 "hint.w"
+#line 3957 "hint.w"
void hloc_set_next(pointer p)
{int i= cur_loc;
uint64_t h= hlocation(p);
+if(h==page_loc[cur_loc])return;
NEXT_PAGE(i);
if(i==hi_loc)
@@ -1934,7 +1952,7 @@ hi_loc= i;
DBG(DBGPAGE,"loc_set_next: %d < %d < %d\n",lo_loc,cur_loc,hi_loc);
}
/*:231*//*232:*/
-#line 3970 "hint.w"
+#line 3994 "hint.w"
void hloc_set_prev(pointer p)
{int i= cur_loc;
@@ -1957,7 +1975,7 @@ cur_loc= i;
DBG(DBGPAGE,"loc_set_prev: %d < %d < %d\n",lo_loc,cur_loc,hi_loc);
}
/*:232*//*245:*/
-#line 4254 "hint.w"
+#line 4278 "hint.w"
static void hset_margins(void)
{if(cur_page==&(page_def[0])){
@@ -1982,14 +2000,18 @@ offset_v= (page_v-hvsize)/2;
}
}
/*:245*//*247:*/
-#line 4286 "hint.w"
+#line 4310 "hint.w"
static void houtput_template(pointer p)
{pointer q,r;
if(p==null)return;
p= vpackage(p,hvsize,exactly,page_max_depth);
-r= new_kern(offset_v);
+if(offset_v!=0)
+{r= new_kern(offset_v);
link(r)= p;
+}
+else
+r= p;
q= new_null_box();
type(q)= vlist_node;
width(q)= width(p)+offset_h;
@@ -1999,7 +2021,7 @@ shift_amount(p)+= offset_h;
streams[0].p= q;
}
/*:247*//*272:*/
-#line 4928 "hint.w"
+#line 4956 "hint.w"
static int trv_string_size= 0;
static char trv_string[256];
@@ -2028,7 +2050,7 @@ trv_string[trv_string_size]= 0;
return trv_string;
}
/*:272*//*369:*/
-#line 7453 "hint.w"
+#line 7448 "hint.w"
static pointer leaks[1<<16]= {0};
@@ -2069,7 +2091,7 @@ fprintf(stderr,"ERROR:leak final: p=%d, s=%d\n",i,leaks[i]);
#endif
}
/*:369*/
-#line 7544 "hint.w"
+#line 7539 "hint.w"
/*1:*/
#line 111 "hint.w"
@@ -2605,7 +2627,7 @@ QUIT("Text in paragraph not yet implemented");
return null;
}
/*:160*/
-#line 7545 "hint.w"
+#line 7540 "hint.w"
/*80:*/
#line 1245 "hint.w"
@@ -2816,15 +2838,18 @@ case TAG(item_kind,b111):hteg_content();(void)HTEG8;break;
case TAG(stream_kind,b000):HTEG_STREAM(b000);break;
case TAG(stream_kind,b010):HTEG_STREAM(b010);break;
/*:188*//*192:*/
-#line 3162 "hint.w"
+#line 3182 "hint.w"
case TAG(image_kind,b000):hget_image_ref(HTEG8);break;
+case TAG(image_kind,b001):HTEG_IMAGE(b001);break;
+case TAG(image_kind,b010):HTEG_IMAGE(b010);break;
+case TAG(image_kind,b011):HTEG_IMAGE(b011);break;
case TAG(image_kind,b100):HTEG_IMAGE(b100);break;
case TAG(image_kind,b101):HTEG_IMAGE(b101);break;
case TAG(image_kind,b110):HTEG_IMAGE(b110);break;
case TAG(image_kind,b111):HTEG_IMAGE(b111);break;
/*:192*//*196:*/
-#line 3199 "hint.w"
+#line 3222 "hint.w"
case TAG(link_kind,b000):HTEG_LINK(b000);break;
case TAG(link_kind,b001):HTEG_LINK(b001);break;
@@ -2967,7 +2992,7 @@ line_break_params= save_lbp;
}
/*:170*/
-#line 7546 "hint.w"
+#line 7541 "hint.w"
/*18:*/
@@ -3251,15 +3276,18 @@ case TAG(item_kind,b111):(void)HGET8;hget_content();break;
case TAG(stream_kind,b000):HGET_STREAM(b000);break;
case TAG(stream_kind,b010):HGET_STREAM(b010);break;
/*:187*//*191:*/
-#line 3155 "hint.w"
+#line 3172 "hint.w"
case TAG(image_kind,b000):hget_image_ref(HGET8);break;
+case TAG(image_kind,b001):HGET_IMAGE(b001);break;
+case TAG(image_kind,b010):HGET_IMAGE(b010);break;
+case TAG(image_kind,b011):HGET_IMAGE(b011);break;
case TAG(image_kind,b100):HGET_IMAGE(b100);break;
case TAG(image_kind,b101):HGET_IMAGE(b101);break;
case TAG(image_kind,b110):HGET_IMAGE(b110);break;
case TAG(image_kind,b111):HGET_IMAGE(b111);break;
/*:191*//*195:*/
-#line 3193 "hint.w"
+#line 3216 "hint.w"
case TAG(link_kind,b000):HGET_LINK(b000);break;
case TAG(link_kind,b001):HGET_LINK(b001);break;
@@ -3315,7 +3343,7 @@ void set_line_break_params(void)
{hset_param_list(line_break_params);
}
/*:163*//*199:*/
-#line 3326 "hint.w"
+#line 3349 "hint.w"
pointer skip(uint8_t n)
{return cur_page->s[n].g;}
@@ -3327,7 +3355,7 @@ scaled dimen(uint8_t n)
{return xdimen(&cur_page->s[n].x);}
/*:199*//*200:*/
-#line 3351 "hint.w"
+#line 3374 "hint.w"
void hpage_init(void)
{int i;
@@ -3350,7 +3378,7 @@ add_glue_ref(top_skip);
}
}
/*:200*//*202:*/
-#line 3382 "hint.w"
+#line 3405 "hint.w"
void hflush_contribution_list(void)
{if(link(contrib_head)!=null)
@@ -3359,7 +3387,7 @@ link(contrib_head)= null;tail= contrib_head;
}
}
/*:202*//*204:*/
-#line 3426 "hint.w"
+#line 3449 "hint.w"
static bool hbuild_page_up(void)
{
@@ -3371,12 +3399,12 @@ int pi= 0;
if(link(contrib_head)==null)return false;
do{p= link(contrib_head);
/*209:*/
-#line 3548 "hint.w"
+#line 3571 "hint.w"
switch(type(p)){
case hlist_node:case vlist_node:case rule_node:
/*206:*/
-#line 3492 "hint.w"
+#line 3515 "hint.w"
if(page_contents<box_there)
{if(page_contents==empty)freeze_page_specs(box_there);
@@ -3385,17 +3413,17 @@ if(depth(p)> page_max_depth)
page_total= depth(p)-page_max_depth;
depth(p)= 0;
/*207:*/
-#line 3518 "hint.w"
+#line 3541 "hint.w"
{page_top_height= width(top_skip);
page_total= page_total+page_top_height;
}
/*:207*/
-#line 3499 "hint.w"
+#line 3522 "hint.w"
}
/*208:*/
-#line 3527 "hint.w"
+#line 3550 "hint.w"
{int i;
for(i= 1;i<=6;i++)
@@ -3404,7 +3432,7 @@ top_so_far[i]= 0;
}
}
/*:208*/
-#line 3501 "hint.w"
+#line 3524 "hint.w"
page_total+= page_height+depth(p);
if(height(p)> page_top_height)
@@ -3414,15 +3442,15 @@ page_height= page_top_height;
else
page_height= height(p);
/*:206*/
-#line 3551 "hint.w"
+#line 3574 "hint.w"
goto contribute;
case whatsit_node:goto contribute;
case glue_node:/*212:*/
-#line 3586 "hint.w"
+#line 3609 "hint.w"
if(link(p)==null)return false;
/*213:*/
-#line 3593 "hint.w"
+#line 3616 "hint.w"
#define top_shrink top_so_far[6]
#define top_total top_so_far[1]
@@ -3435,15 +3463,15 @@ top_shrink+= shrink(q);
top_total+= width(q);
}
/*:213*/
-#line 3588 "hint.w"
+#line 3611 "hint.w"
if(page_contents==empty||!precedes_break(link(p)))goto contribute;
pi= 0;
/*:212*/
-#line 3553 "hint.w"
+#line 3576 "hint.w"
break;
case kern_node:/*214:*/
-#line 3609 "hint.w"
+#line 3632 "hint.w"
top_total+= width(p);
if(page_contents==empty||
@@ -3452,21 +3480,21 @@ type(link(page_head))!=glue_node)
goto contribute;
pi= 0;
/*:214*/
-#line 3554 "hint.w"
+#line 3577 "hint.w"
break;
case penalty_node:if(page_contents==empty)goto done1;else pi= penalty(p);break;
case ins_node:happend_insertion(p);goto contribute;
default:DBG(DBGTEX,"Unexpected node type %d in build_page_up ignored\n",type(p));
}
/*217:*/
-#line 3643 "hint.w"
+#line 3666 "hint.w"
if(pi<inf_penalty)
{/*215:*/
-#line 3623 "hint.w"
+#line 3646 "hint.w"
/*216:*/
-#line 3634 "hint.w"
+#line 3657 "hint.w"
if(page_total<page_goal)
{if((page_so_far[3]!=0)||(page_so_far[4]!=0)||(page_so_far[5]!=0))b= 0;
@@ -3475,7 +3503,7 @@ else b= badness(page_goal-page_total,page_so_far[2]);
else if(page_total-page_goal> page_shrink)b= awful_bad;
else b= badness(page_total-page_goal,page_shrink)
/*:216*/
-#line 3624 "hint.w"
+#line 3647 "hint.w"
;
if(b<awful_bad)
{if(pi<=eject_penalty)c= pi;
@@ -3485,7 +3513,7 @@ else c= deplorable;
else c= b;
if(insert_penalties>=10000)c= awful_bad;
/*:215*/
-#line 3645 "hint.w"
+#line 3668 "hint.w"
if(c<=least_page_cost)
{best_page_break= p;best_size= page_goal;
@@ -3499,7 +3527,7 @@ r= link(r);
if((c==awful_bad)||(pi<=eject_penalty))
{
/*218:*/
-#line 3673 "hint.w"
+#line 3696 "hint.w"
if(p!=best_page_break)
{while(link(page_head)!=best_page_break)
@@ -3511,10 +3539,10 @@ link(head)= q;
}
}
/*:218*/
-#line 3657 "hint.w"
+#line 3680 "hint.w"
/*219:*/
-#line 3691 "hint.w"
+#line 3714 "hint.w"
hloc_set_prev(link(page_head));
while(true){
@@ -3534,7 +3562,7 @@ link(q)= link(page_head);
link(page_head)= q;
best_page_break= null;
/*:219*/
-#line 3658 "hint.w"
+#line 3681 "hint.w"
hpack_page();
hfill_page_template();
@@ -3542,11 +3570,11 @@ return true;
}
}
/*:217*/
-#line 3559 "hint.w"
+#line 3582 "hint.w"
contribute:
/*210:*/
-#line 3566 "hint.w"
+#line 3589 "hint.w"
link(contrib_head)= link(p);
link(p)= link(page_head);
@@ -3554,31 +3582,31 @@ if(link(page_head)==null)page_tail= p;
link(page_head)= p;
goto done;
/*:210*/
-#line 3561 "hint.w"
+#line 3584 "hint.w"
done1:/*211:*/
-#line 3574 "hint.w"
+#line 3597 "hint.w"
link(contrib_head)= link(p);link(p)= null;flush_node_list(p);
/*:211*/
-#line 3562 "hint.w"
+#line 3585 "hint.w"
done:
/*:209*/
-#line 3436 "hint.w"
+#line 3459 "hint.w"
;
}while(link(contrib_head)!=null);
tail= contrib_head;
return false;
}
/*:204*//*221:*/
-#line 3767 "hint.w"
+#line 3790 "hint.w"
static void clear_map(void)
{memset(map,0,sizeof(map));
}
/*:221*//*222:*/
-#line 3780 "hint.w"
+#line 3803 "hint.w"
void store_map(pointer p,uint32_t pos0,uint32_t offset)
{map[p]= pos0;
@@ -3589,7 +3617,7 @@ uint32_t hposition(pointer p)
{return map[p];
}
/*:222*//*229:*/
-#line 3890 "hint.w"
+#line 3913 "hint.w"
void hloc_init(void)
{cur_loc= 0;
@@ -3598,7 +3626,7 @@ page_loc[cur_loc]= 0;
DBG(DBGPAGE,"loc_init: %d < %d < %d\n",lo_loc,cur_loc,hi_loc);
}
/*:229*//*234:*/
-#line 4026 "hint.w"
+#line 4050 "hint.w"
int hint_begin(void)
{if(!hint_map())return 0;
@@ -3635,7 +3663,7 @@ list_leaks();
hclear_dir();
}
/*:234*//*238:*/
-#line 4129 "hint.w"
+#line 4153 "hint.w"
bool hint_forward(void)
{hpage_init();
@@ -3649,7 +3677,7 @@ if(hbuild_page())return true;
return false;
}
/*:238*//*239:*/
-#line 4170 "hint.w"
+#line 4194 "hint.w"
bool hint_backward(void)
{hpage_init();
@@ -3663,7 +3691,7 @@ if(hbuild_page_up())return true;
return false;
}
/*:239*//*241:*/
-#line 4198 "hint.w"
+#line 4222 "hint.w"
bool flush_pages(uint32_t pos)
{pointer p= link(head);
@@ -3680,18 +3708,18 @@ store_map(tail,pos,0);
return false;
}
/*:241*//*263:*/
-#line 4712 "hint.w"
+#line 4740 "hint.w"
int hint_get_outline_max(void)
{return max_outline;}
/*:263*//*268:*/
-#line 4792 "hint.w"
+#line 4820 "hint.w"
hint_Outline*hint_get_outlines(void)
{return hint_outlines;
}
/*:268*//*270:*/
-#line 4851 "hint.w"
+#line 4879 "hint.w"
static bool trv_ignore= false;
static bool trv_skip_space= false;
@@ -3757,7 +3785,7 @@ p= link(p);
}
}
/*:270*/
-#line 7548 "hint.w"
+#line 7543 "hint.w"
/*:372*/
diff --git a/Build/source/texk/web2c/hitexdir/hintview/src/hint.h b/Build/source/texk/web2c/hitexdir/hintview/src/hint.h
index 87cb3e016a1..0713b92ecf4 100644
--- a/Build/source/texk/web2c/hitexdir/hintview/src/hint.h
+++ b/Build/source/texk/web2c/hitexdir/hintview/src/hint.h
@@ -1,5 +1,5 @@
/*371:*/
-#line 7511 "hint.w"
+#line 7506 "hint.w"
#ifndef _HINT_H_
#define _HINT_H_
@@ -43,13 +43,13 @@ extern void hget_par_node(uint32_t offset);
extern void hteg_par_node(uint32_t offset);
/*:171*//*197:*/
-#line 3262 "hint.w"
+#line 3285 "hint.w"
extern pointer*pointer_def[32];
extern scaled*dimen_def;
extern int32_t*integer_def;
/*:197*//*198:*/
-#line 3317 "hint.w"
+#line 3340 "hint.w"
extern Stream*streams;
extern bool flush_pages(uint32_t pos);
@@ -58,15 +58,15 @@ extern pointer*box_ptr(uint8_t n);
extern int count(uint8_t n);
extern scaled dimen(uint8_t n);
/*:198*//*201:*/
-#line 3374 "hint.w"
+#line 3397 "hint.w"
extern void hpage_init(void);
/*:201*//*203:*/
-#line 3391 "hint.w"
+#line 3414 "hint.w"
extern void hflush_contribution_list(void);
/*:203*//*223:*/
-#line 3794 "hint.w"
+#line 3817 "hint.w"
#define HINT_NO_LOC 0xFFFFFFFFFFFFFFFF
#define PAGE_LOC(POS0,OFF) (((uint64_t)((POS0)+(OFF))<<32) + (uint64_t)(OFF))
@@ -74,19 +74,19 @@ extern void hflush_contribution_list(void);
#define LOC_OFF(P) ((P)&0xFFFFFFFF)
#define LOC_POS0(P) (LOC_POS(P)-LOC_OFF(P))
/*:223*//*226:*/
-#line 3831 "hint.w"
+#line 3854 "hint.w"
extern uint64_t page_loc[];
extern int cur_loc;
/*:226*//*228:*/
-#line 3880 "hint.w"
+#line 3903 "hint.w"
extern void hloc_clear(void);
extern bool hloc_next(void);
extern bool hloc_prev(void);
extern uint64_t hlocation(pointer p);
/*:228*//*233:*/
-#line 3995 "hint.w"
+#line 4019 "hint.w"
extern void hloc_init(void);
extern void store_map(pointer p,uint32_t pos,uint32_t offset);
@@ -94,23 +94,23 @@ extern uint32_t hposition(pointer p);
extern void hloc_set(uint64_t h);
extern void hloc_set_next(pointer p);
/*:233*//*235:*/
-#line 4064 "hint.w"
+#line 4088 "hint.w"
extern int hint_begin(void);
extern void hint_end(void);
extern bool hint_map(void);
extern void hint_unmap(void);
/*:235*//*240:*/
-#line 4188 "hint.w"
+#line 4212 "hint.w"
extern bool hint_forward(void);
extern bool hint_backward(void);
/*:240*//*243:*/
-#line 4219 "hint.w"
+#line 4243 "hint.w"
extern scaled hvsize,hhsize;
/*:243*//*264:*/
-#line 4725 "hint.w"
+#line 4753 "hint.w"
typedef struct{
uint64_t pos;
@@ -121,26 +121,26 @@ char*title;
}hint_Outline;
extern hint_Outline*hint_outlines;
/*:264*//*265:*/
-#line 4743 "hint.w"
+#line 4771 "hint.w"
#define LABEL_UNDEF 0
#define LABEL_TOP 1
#define LABEL_BOT 2
#define LABEL_MID 3
/*:265*//*269:*/
-#line 4802 "hint.w"
+#line 4830 "hint.w"
extern int hint_get_outline_max(void);
extern hint_Outline*hint_get_outlines(void);
extern uint64_t hint_outline_page(int i);
/*:269*//*271:*/
-#line 4917 "hint.w"
+#line 4945 "hint.w"
extern void trv_init(void(*f)(uint32_t c));
extern void trv_vlist(pointer p);
extern void trv_hlist(pointer p);
/*:271*//*300:*/
-#line 5509 "hint.w"
+#line 5537 "hint.w"
typedef struct{
uint64_t pos;
@@ -150,17 +150,17 @@ int top,bottom,left,right;
extern hint_Link*hint_links;
extern int max_link;
/*:300*//*305:*/
-#line 5671 "hint.w"
+#line 5699 "hint.w"
extern int hint_find_link(scaled x,scaled y,scaled precission);
extern uint64_t hint_link_page(int i);
/*:305*//*370:*/
-#line 7494 "hint.w"
+#line 7489 "hint.w"
extern void leak_in(pointer p,int s);
extern void leak_out(pointer p,int s);
/*:370*/
-#line 7518 "hint.w"
+#line 7513 "hint.w"
#endif
diff --git a/Build/source/texk/web2c/hitexdir/hintview/src/hrender.c b/Build/source/texk/web2c/hitexdir/hintview/src/hrender.c
index ddd7f66579a..7b9dc0aed13 100644
--- a/Build/source/texk/web2c/hitexdir/hintview/src/hrender.c
+++ b/Build/source/texk/web2c/hitexdir/hintview/src/hrender.c
@@ -1,5 +1,5 @@
/*374:*/
-#line 7583 "hint.w"
+#line 7578 "hint.w"
#include "basetypes.h"
#include "error.h"
@@ -13,57 +13,57 @@
#include "hint.h"
/*310:*/
-#line 5753 "hint.w"
+#line 5781 "hint.w"
extern struct font_s*hget_font(unsigned char f);
/*:310*//*322:*/
-#line 6098 "hint.w"
+#line 6126 "hint.w"
extern void render_char(int x,int y,struct font_s*f,uint32_t cc,uint8_t s);
/*:322*/
-#line 7595 "hint.w"
+#line 7590 "hint.w"
/*236:*/
-#line 4093 "hint.w"
+#line 4117 "hint.w"
double xdpi= 600.0,ydpi= 600.0;
/*:236*//*254:*/
-#line 4452 "hint.w"
+#line 4480 "hint.w"
static bool forward_mode= false,backward_mode= false;
/*:254*//*273:*/
-#line 4964 "hint.w"
+#line 4992 "hint.w"
static char*m_str;
static int m_length,m_chars;
/*:273*//*277:*/
-#line 5035 "hint.w"
+#line 5063 "hint.w"
#define MAX_M_DIST 512
static uint8_t m_dist[MAX_M_DIST+5];
static int m_ptr,m_max;
/*:277*//*280:*/
-#line 5136 "hint.w"
+#line 5164 "hint.w"
static int m_state,m_spaces;
static uint32_t m_d;
/*:280*//*285:*/
-#line 5258 "hint.w"
+#line 5286 "hint.w"
static int m_focus;
static uint64_t m_page;
/*:285*//*288:*/
-#line 5294 "hint.w"
+#line 5322 "hint.w"
static bool c_ignore;
static int m_style;
/*:288*//*296:*/
-#line 5463 "hint.w"
+#line 5491 "hint.w"
static int cur_link= -1;
/*:296*//*325:*/
-#line 6140 "hint.w"
+#line 6169 "hint.w"
static scaled cur_h,cur_v;
static scaled rule_ht,rule_dp,rule_wd;
@@ -71,10 +71,10 @@ static int cur_f;
static struct font_s*cur_fp;
static uint8_t cur_style= 0;
/*:325*/
-#line 7597 "hint.w"
+#line 7592 "hint.w"
/*237:*/
-#line 4097 "hint.w"
+#line 4121 "hint.w"
void hint_resize(int px_h,int px_v,double x_dpi,double y_dpi)
{
@@ -96,7 +96,7 @@ forward_mode= false;
backward_mode= false;
}
/*:237*//*248:*/
-#line 4317 "hint.w"
+#line 4345 "hint.w"
uint64_t hint_page_top(uint64_t h)
@@ -117,7 +117,7 @@ backward_mode= false;
return h;
}
/*:248*//*249:*/
-#line 4340 "hint.w"
+#line 4368 "hint.w"
uint64_t hint_page_get(void)
{
@@ -127,7 +127,7 @@ if(hin_addr==NULL)return 0;
return page_loc[cur_loc];
}
/*:249*//*250:*/
-#line 4356 "hint.w"
+#line 4384 "hint.w"
uint64_t hint_page(void)
{uint64_t i;
@@ -139,7 +139,7 @@ else
return hint_page_top(i);
}
/*:250*//*251:*/
-#line 4372 "hint.w"
+#line 4400 "hint.w"
uint64_t hint_page_home(void)
{uint64_t pos;
@@ -155,21 +155,21 @@ pos= ((uint64_t)labels[n].pos<<32)+(labels[n].pos-labels[n].pos0);
pos= ((uint64_t)labels[n].pos0<<32);
#endif
/*:71*/
-#line 4377 "hint.w"
+#line 4405 "hint.w"
/*267:*/
-#line 4765 "hint.w"
+#line 4793 "hint.w"
if(where==LABEL_TOP)return hint_page_top(pos);
else if(where==LABEL_BOT)return hint_page_bottom(pos);
else if(where==LABEL_MID)return hint_page_middle(pos);
else return hint_page_get();
/*:267*/
-#line 4378 "hint.w"
+#line 4406 "hint.w"
}
/*:251*//*252:*/
-#line 4399 "hint.w"
+#line 4427 "hint.w"
double hint_get_fpos(void)
{
@@ -179,7 +179,7 @@ if(hin_addr==NULL)return 0.0;
return(double)LOC_POS(page_loc[cur_loc])/(double)(hend-hstart);
}
/*:252*//*253:*/
-#line 4413 "hint.w"
+#line 4441 "hint.w"
uint64_t hint_set_fpos(double fpos)
{uint32_t pos,pos0;
@@ -214,7 +214,7 @@ pos= pos0= hpos-hstart;
return hint_page_top(PAGE_LOC(pos0,pos-pos0));
}
/*:253*//*255:*/
-#line 4457 "hint.w"
+#line 4485 "hint.w"
uint64_t hint_page_next(void)
{if(hin_addr==NULL)return 0;
@@ -231,7 +231,7 @@ return hint_page();
}
}
/*:255*//*256:*/
-#line 4482 "hint.w"
+#line 4510 "hint.w"
uint64_t hint_page_prev(void)
{if(hin_addr==NULL)return 0;
@@ -249,7 +249,7 @@ else
return hint_page_bottom(hint_page_get());
}
/*:256*//*257:*/
-#line 4508 "hint.w"
+#line 4536 "hint.w"
uint64_t hint_page_bottom(uint64_t h)
{if(hin_addr==NULL)return 0;
@@ -264,7 +264,7 @@ forward_mode= false;
return hint_page_get();
}
/*:257*//*258:*/
-#line 4533 "hint.w"
+#line 4561 "hint.w"
uint64_t hint_page_middle(uint64_t l)
{uint32_t pos,pos0,offset;
@@ -283,11 +283,11 @@ hget_content();
p= link(contrib_head);
if(offset> 0)
{/*259:*/
-#line 4572 "hint.w"
+#line 4600 "hint.w"
{while(p!=null)
{/*260:*/
-#line 4599 "hint.w"
+#line 4627 "hint.w"
switch(type(p))
{case hlist_node:case vlist_node:case rule_node:
@@ -310,7 +310,7 @@ default:
pi= hp= dp= 0;
}
/*:260*/
-#line 4574 "hint.w"
+#line 4602 "hint.w"
h+= d+hp;
d= dp;
@@ -326,7 +326,7 @@ p= link(p);
if(tp==null)ht= h;
if(ht>=hvsize)
{/*261:*/
-#line 4626 "hint.w"
+#line 4654 "hint.w"
pointer q= contrib_head;
scaled dh= ht-hvsize/2;
@@ -334,7 +334,7 @@ p= link(contrib_head);
h= d= 0;
while(p!=null)
{/*260:*/
-#line 4599 "hint.w"
+#line 4627 "hint.w"
switch(type(p))
{case hlist_node:case vlist_node:case rule_node:
@@ -357,7 +357,7 @@ default:
pi= hp= dp= 0;
}
/*:260*/
-#line 4632 "hint.w"
+#line 4660 "hint.w"
h= h+d+hp;
d= dp;
@@ -372,19 +372,19 @@ flush_node_list(link(contrib_head));
link(contrib_head)= p;
}
/*:261*/
-#line 4588 "hint.w"
+#line 4616 "hint.w"
goto found;
}
}
/*:259*/
-#line 4550 "hint.w"
+#line 4578 "hint.w"
}
else if(p!=null&&type(p)==penalty_node)
pi= penalty(p);
/*262:*/
-#line 4651 "hint.w"
+#line 4679 "hint.w"
{pointer h_save= link(contrib_head);
pointer t_save= tail;
@@ -402,7 +402,7 @@ break;
else
p= link(p);
/*260:*/
-#line 4599 "hint.w"
+#line 4627 "hint.w"
switch(type(p))
{case hlist_node:case vlist_node:case rule_node:
@@ -425,7 +425,7 @@ default:
pi= hp= dp= 0;
}
/*:260*/
-#line 4667 "hint.w"
+#line 4695 "hint.w"
h= h+dp+hp;
if(pi<best_pi)
@@ -456,7 +456,7 @@ tail= t_save;
hpos= hpos_save;
}
/*:262*/
-#line 4554 "hint.w"
+#line 4582 "hint.w"
found:
hloc_set(PAGE_LOC(pos0,offset));
@@ -466,7 +466,7 @@ backward_mode= false;
return hint_page_get();
}
/*:258*//*266:*/
-#line 4754 "hint.w"
+#line 4782 "hint.w"
uint64_t hint_outline_page(int i)
{uint64_t pos;
@@ -475,24 +475,24 @@ if(i<0||i> max_outline)return hint_page_get();
pos= hint_outlines[i].pos;
where= hint_outlines[i].where;
/*267:*/
-#line 4765 "hint.w"
+#line 4793 "hint.w"
if(where==LABEL_TOP)return hint_page_top(pos);
else if(where==LABEL_BOT)return hint_page_bottom(pos);
else if(where==LABEL_MID)return hint_page_middle(pos);
else return hint_page_get();
/*:267*/
-#line 4761 "hint.w"
+#line 4789 "hint.w"
}
/*:266*//*274:*/
-#line 4969 "hint.w"
+#line 4997 "hint.w"
void hint_set_mark(char*m,int s)
{m_str= m;
m_length= s;
/*275:*/
-#line 4980 "hint.w"
+#line 5008 "hint.w"
if(m_length> 0)
{int i,j,k;
@@ -508,12 +508,12 @@ m_length= k;
m_chars= m_length-j;
}
/*:275*/
-#line 4973 "hint.w"
+#line 5001 "hint.w"
hmark_page();
}
/*:274*//*278:*/
-#line 5069 "hint.w"
+#line 5097 "hint.w"
static void m_put(uint32_t d)
{if(m_ptr<MAX_M_DIST)
@@ -550,7 +550,7 @@ x= (x<<7)+y;
}
}
/*:278*//*279:*/
-#line 5110 "hint.w"
+#line 5138 "hint.w"
static int m_next(int i)
{while((0x80&m_dist[i])==0)i++;
@@ -565,7 +565,7 @@ while(i> 0&&(0x80&m_dist[i-1])==0)i--;
return i;
}
/*:279*//*281:*/
-#line 5141 "hint.w"
+#line 5169 "hint.w"
static void next_m_char(uint32_t c)
{
@@ -586,7 +586,7 @@ m_state= 0;
}
else
/*282:*/
-#line 5175 "hint.w"
+#line 5203 "hint.w"
{int i= 0,j= 0;
do{
@@ -598,13 +598,13 @@ m_state= m_state-i;
goto reconsider;
}
/*:282*/
-#line 5160 "hint.w"
+#line 5188 "hint.w"
}
/*:281*//*283:*/
-#line 5188 "hint.w"
+#line 5216 "hint.w"
#if 0
static void next_m_space(void)
@@ -626,7 +626,7 @@ else if(m_state> 0)
}
#endif
/*:283*//*284:*/
-#line 5211 "hint.w"
+#line 5239 "hint.w"
#if 0
static void vlist_mark(pointer p);
@@ -673,7 +673,7 @@ p= link(p);
}
#endif
/*:284*//*286:*/
-#line 5264 "hint.w"
+#line 5292 "hint.w"
void hmark_page(void)
{if(streams==NULL||streams[0].p==null)return;
@@ -695,13 +695,13 @@ m_put(0xFF);
if(m_focus>=m_max)m_focus= 0;
}
/*:286*//*293:*/
-#line 5379 "hint.w"
+#line 5407 "hint.w"
void c_ignore_list(pointer p)
{while(p!=null)
{if(is_char_node(p))
{/*290:*/
-#line 5319 "hint.w"
+#line 5347 "hint.w"
{while(m_d==0)
{m_style^= MARK_BIT;
@@ -717,7 +717,7 @@ m_d= m_get();
m_d--;
}
/*:290*/
-#line 5383 "hint.w"
+#line 5411 "hint.w"
cur_style|= m_style;
}
@@ -729,7 +729,7 @@ case ligature_node:
{pointer q= lig_ptr(p);
while(q!=null)
{/*290:*/
-#line 5319 "hint.w"
+#line 5347 "hint.w"
{while(m_d==0)
{m_style^= MARK_BIT;
@@ -745,7 +745,7 @@ m_d= m_get();
m_d--;
}
/*:290*/
-#line 5393 "hint.w"
+#line 5421 "hint.w"
cur_style|= m_style;
q= link(q);
@@ -758,7 +758,7 @@ p= link(p);
}
}
/*:293*//*294:*/
-#line 5426 "hint.w"
+#line 5454 "hint.w"
bool hint_prev_mark(void)
{m_focus= m_prev(m_focus);
@@ -779,7 +779,7 @@ m_focus= m_next(0);
return(m_focus!=0);
}
/*:294*//*302:*/
-#line 5527 "hint.w"
+#line 5555 "hint.w"
static int links_allocated= 0;
void add_new_link(int n,pointer p,scaled h,scaled v)
@@ -809,7 +809,7 @@ pos= ((uint64_t)labels[n].pos<<32)+(labels[n].pos-labels[n].pos0);
pos= ((uint64_t)labels[n].pos0<<32);
#endif
/*:71*/
-#line 5546 "hint.w"
+#line 5574 "hint.w"
t->where= where;
t->pos= pos;
@@ -837,7 +837,7 @@ else
t->bottom= v;
}
/*:302*//*303:*/
-#line 5596 "hint.w"
+#line 5624 "hint.w"
static scaled hlink_distance(scaled x,scaled y,hint_Link*t)
{scaled d,dx= 0,dy= 0;
@@ -893,7 +893,7 @@ return last_hit;
}
}
/*:303*//*304:*/
-#line 5656 "hint.w"
+#line 5684 "hint.w"
uint64_t hint_link_page(int i)
{uint64_t h;
@@ -907,14 +907,14 @@ else if(w==LABEL_MID)return hint_page_middle(h);
else return hint_page_get();
}
/*:304*//*323:*/
-#line 6105 "hint.w"
+#line 6133 "hint.w"
static void render_rule(int x,int y,int w,int h)
{if(w> 0&&h> 0)
nativeRule(SP2PT(x),SP2PT(y),SP2PT(w),SP2PT(h));
}
/*:323*//*324:*/
-#line 6116 "hint.w"
+#line 6145 "hint.w"
void render_image(int x,int y,int w,int h,uint32_t n)
{
@@ -925,7 +925,7 @@ nativeImage(SP2PT(x),SP2PT(y),SP2PT(w),SP2PT(h),hstart,hend);
hpos= spos;hstart= sstart;hend= send;
}
/*:324*//*326:*/
-#line 6148 "hint.w"
+#line 6177 "hint.w"
static void vlist_render(pointer this_box);
@@ -960,7 +960,7 @@ this_box,mem[this_box].i,p);
base_line= cur_v;
left_edge= cur_h;
/*299:*/
-#line 5493 "hint.w"
+#line 5521 "hint.w"
if(cur_link>=0)
{add_new_link(cur_link,this_box,cur_h,cur_v);
@@ -968,7 +968,7 @@ local_link= cur_link;
cur_link= -1;
}
/*:299*/
-#line 6181 "hint.w"
+#line 6210 "hint.w"
while(p!=null)
{
@@ -985,7 +985,7 @@ c= character(p);
if(!c_ignore&&c!=' ')
{cur_style= cur_style&~(MARK_BIT|FOCUS_BIT);
/*290:*/
-#line 5319 "hint.w"
+#line 5347 "hint.w"
{while(m_d==0)
{m_style^= MARK_BIT;
@@ -1001,7 +1001,7 @@ m_d= m_get();
m_d--;
}
/*:290*/
-#line 6196 "hint.w"
+#line 6225 "hint.w"
cur_style|= m_style;
}
@@ -1051,7 +1051,7 @@ rule_ht= height(p);rule_dp= depth(p);rule_wd= width(p);
goto fin_rule;
case whatsit_node:
/*292:*/
-#line 5356 "hint.w"
+#line 5384 "hint.w"
if(subtype(p)==ignore_node)
{if(ignore_info(p)==1)
@@ -1063,10 +1063,10 @@ else
c_ignore= false;
}
/*:292*/
-#line 6244 "hint.w"
+#line 6273 "hint.w"
else/*297:*/
-#line 5467 "hint.w"
+#line 5495 "hint.w"
if(subtype(p)==start_link_node)
{cur_style|= LINK_BIT;
@@ -1079,29 +1079,12 @@ end_new_link(local_link,this_box,cur_h,cur_v);
local_link= -1;
}
/*:297*/
-#line 6245 "hint.w"
+#line 6274 "hint.w"
else if(subtype(p)==image_node)
{scaled h,w;
w= image_width(p);
h= image_height(p);
-if(g_sign!=normal)
-{if(g_sign==stretching)
-{if(image_stretch_order(p)==g_order)
-{vet_glue((double)(glue_set(this_box))*image_stretch(p));
-w= w+round(glue_temp);
-}
-}
-else if(image_shrink_order(p)==g_order)
-{vet_glue((double)(glue_set(this_box))*image_shrink(p));
-w= w-round(glue_temp);
-}
-}
-if(w!=image_width(p))
-{double f;
-f= (double)w/(double)image_width(p);
-h= round((double)h*f);
-}
render_image(cur_h,cur_v,w,h,image_no(p));
cur_h= cur_h+w;
}
@@ -1174,7 +1157,7 @@ case ligature_node:
f= font(lig_char(p));
c= character(lig_char(p));
/*291:*/
-#line 5338 "hint.w"
+#line 5366 "hint.w"
if(!c_ignore)
{pointer q;
@@ -1182,7 +1165,7 @@ cur_style= cur_style&~(MARK_BIT|FOCUS_BIT);
q= lig_ptr(p);
while(q!=null)
{/*290:*/
-#line 5319 "hint.w"
+#line 5347 "hint.w"
{while(m_d==0)
{m_style^= MARK_BIT;
@@ -1198,14 +1181,14 @@ m_d= m_get();
m_d--;
}
/*:290*/
-#line 5344 "hint.w"
+#line 5372 "hint.w"
cur_style|= m_style;
q= link(q);
}
}
/*:291*/
-#line 6338 "hint.w"
+#line 6350 "hint.w"
goto render_c;
default:;
@@ -1232,14 +1215,14 @@ p= link(p);
}
}
/*298:*/
-#line 5483 "hint.w"
+#line 5511 "hint.w"
if(local_link>=0)
{end_new_link(local_link,this_box,cur_h,cur_v);
cur_link= local_link;
}
/*:298*/
-#line 6363 "hint.w"
+#line 6375 "hint.w"
}
@@ -1298,23 +1281,6 @@ if(subtype(p)==image_node)
{scaled h,w;
w= image_width(p);
h= image_height(p);
-if(g_sign!=normal)
-{if(g_sign==stretching)
-{if(image_stretch_order(p)==g_order)
-{vet_glue((double)(glue_set(this_box))*image_stretch(p));
-h= h+round(glue_temp);
-}
-}
-else if(image_shrink_order(p)==g_order)
-{vet_glue((double)(glue_set(this_box))*image_shrink(p));
-h= h-round(glue_temp);
-}
-}
-if(h!=image_height(p))
-{double f;
-f= (double)h/(double)image_height(p);
-w= round((double)w*f);
-}
cur_v= cur_v+h;
render_image(cur_h,cur_v,w,h,image_no(p));
}
@@ -1409,14 +1375,14 @@ p= link(p);
}
/*:326*//*327:*/
-#line 6538 "hint.w"
+#line 6533 "hint.w"
uint64_t hint_blank(void)
{nativeBlank();
return 0;
}
/*:327*//*328:*/
-#line 6547 "hint.w"
+#line 6542 "hint.w"
void hint_render(void)
@@ -1427,11 +1393,11 @@ cur_v= height(streams[0].p);
cur_f= -1;cur_fp= NULL;
cur_link= -1;max_link= -1;
/*289:*/
-#line 5312 "hint.w"
+#line 5340 "hint.w"
m_ptr= 0;m_d= 0;m_style= MARK_BIT;c_ignore= false;cur_style= 0;
/*:289*/
-#line 6556 "hint.w"
+#line 6551 "hint.w"
if(type(streams[0].p)==vlist_node)
vlist_render(streams[0].p);
@@ -1439,6 +1405,6 @@ else
hlist_render(streams[0].p);
}
/*:328*/
-#line 7598 "hint.w"
+#line 7593 "hint.w"
/*:374*/
diff --git a/Build/source/texk/web2c/hitexdir/hintview/src/hrender.h b/Build/source/texk/web2c/hitexdir/hintview/src/hrender.h
index c7e1f5e13e3..29916a01d63 100644
--- a/Build/source/texk/web2c/hitexdir/hintview/src/hrender.h
+++ b/Build/source/texk/web2c/hitexdir/hintview/src/hrender.h
@@ -1,23 +1,23 @@
/*373:*/
-#line 7553 "hint.w"
+#line 7548 "hint.w"
#ifndef _HRENDER_H
#define _HRENDER_H
/*276:*/
-#line 5002 "hint.w"
+#line 5030 "hint.w"
#define MARK_BIT 0x1
#define FOCUS_BIT 0x2
/*:276*//*295:*/
-#line 5452 "hint.w"
+#line 5480 "hint.w"
#define LINK_BIT 0x4
/*:295*//*320:*/
-#line 6079 "hint.w"
+#line 6107 "hint.w"
#define SP2PT(X) ((X)/(double)(1<<16))
/*:320*/
-#line 7556 "hint.w"
+#line 7551 "hint.w"
extern int page_h,page_v;
diff --git a/Build/source/texk/web2c/hitexdir/hintview/src/htex.c b/Build/source/texk/web2c/hitexdir/hintview/src/htex.c
index 6bbde3f5ee7..5d2bb6c3426 100644
--- a/Build/source/texk/web2c/hitexdir/hintview/src/htex.c
+++ b/Build/source/texk/web2c/hitexdir/hintview/src/htex.c
@@ -16,19 +16,19 @@
#ifdef STAT
#include "hprint.h"
#endif
-/*121:*/
+/*120:*/
#line 2578 "htex.w"
pointer temp_ptr;
-/*:121*//*122:*/
+/*:120*//*121:*/
#line 2610 "htex.w"
memory_word mem0[mem_max-mem_min+1],*const mem= mem0-mem_min;
pointer lo_mem_max;
pointer hi_mem_min;
-/*:122*//*123:*/
+/*:121*//*122:*/
#line 2623 "htex.w"
static int var_used,dyn_used;
@@ -40,43 +40,43 @@ static int var_used,dyn_used;
#define decr_dyn_used
#endif
-/*:123*//*124:*/
+/*:122*//*123:*/
#line 2647 "htex.w"
static pointer avail;
-/*:124*//*130:*/
+/*:123*//*129:*/
#line 2750 "htex.w"
static pointer rover;
-/*:130*//*659:*/
-#line 13058 "htex.w"
+/*:129*//*658:*/
+#line 13057 "htex.w"
static scaled total_stretch0[filll-normal+1],
*const total_stretch= total_stretch0-normal,
total_shrink0[filll-normal+1],*const total_shrink= total_shrink0-normal;
-/*:659*//*661:*/
-#line 13070 "htex.w"
+/*:658*//*660:*/
+#line 13069 "htex.w"
pointer adjust_tail= null;
-/*:661*//*830:*/
-#line 16195 "htex.w"
+/*:660*//*829:*/
+#line 16194 "htex.w"
pointer just_box;
-/*:830*//*838:*/
-#line 16332 "htex.w"
+/*:829*//*837:*/
+#line 16331 "htex.w"
static pointer passive;
static pointer printed_node;
static halfword pass_number;
-/*:838*//*841:*/
-#line 16372 "htex.w"
+/*:837*//*840:*/
+#line 16371 "htex.w"
static scaled active_width0[6],*const active_width= active_width0-1;
@@ -85,21 +85,21 @@ static scaled cur_active_width0[6],
static scaled background0[6],*const background= background0-1;
static scaled break_width0[6],*const break_width= break_width0-1;
-/*:841*//*844:*/
-#line 16431 "htex.w"
+/*:840*//*843:*/
+#line 16430 "htex.w"
static bool no_shrink_error_yet;
-/*:844*//*848:*/
-#line 16474 "htex.w"
+/*:843*//*847:*/
+#line 16473 "htex.w"
static pointer cur_p;
static bool second_pass;
static bool final_pass;
static int threshold;
-/*:848*//*854:*/
-#line 16576 "htex.w"
+/*:847*//*853:*/
+#line 16575 "htex.w"
static int minimal_demerits0[tight_fit-very_loose_fit+1],
*const minimal_demerits= minimal_demerits0-very_loose_fit;
@@ -113,13 +113,13 @@ static halfword best_pl_line0[tight_fit-very_loose_fit+1],
*const best_pl_line= best_pl_line0-very_loose_fit;
-/*:854*//*861:*/
-#line 16698 "htex.w"
+/*:853*//*860:*/
+#line 16697 "htex.w"
static scaled disc_width;
-/*:861*//*870:*/
-#line 16841 "htex.w"
+/*:860*//*869:*/
+#line 16840 "htex.w"
static halfword easy_line;
static halfword last_special_line;
@@ -130,8 +130,8 @@ static scaled second_width;
static scaled first_indent;
static scaled second_indent;
-/*:870*//*896:*/
-#line 17347 "htex.w"
+/*:869*//*895:*/
+#line 17346 "htex.w"
static pointer best_bet;
static int fewest_demerits;
@@ -141,14 +141,14 @@ static int actual_looseness;
static int line_diff;
-/*:896*//*997:*/
-#line 19151 "htex.w"
+/*:895*//*996:*/
+#line 19150 "htex.w"
scaled best_height_plus_depth;
-/*:997*//*1006:*/
-#line 19353 "htex.w"
+/*:996*//*1005:*/
+#line 19352 "htex.w"
pointer page_tail;
int page_contents;
@@ -157,37 +157,37 @@ pointer best_page_break;
int least_page_cost;
scaled best_size;
-/*:1006*//*1008:*/
-#line 19435 "htex.w"
+/*:1005*//*1007:*/
+#line 19434 "htex.w"
scaled page_so_far[8];
int insert_penalties;
-/*:1008*/
+/*:1007*/
#line 271 "htex.w"
-/*98:*/
+/*97:*/
#line 2100 "htex.w"
void overflow(char*s,int n)
{QUIT("Capacity exceeded, sorry [%s=%d=0x%X]\n",s,n,n);
}
-/*:98*//*99:*/
+/*:97*//*98:*/
#line 2113 "htex.w"
void confusion(char*s)
{QUIT("This can't happen(%s)",s);}
-/*:99*/
+/*:98*/
#line 273 "htex.w"
#endif
-/*:4*//*104:*/
+/*:4*//*103:*/
#line 2180 "htex.w"
@@ -196,13 +196,13 @@ static int half(int x)
else return x/2;
}
-/*:104*//*109:*/
+/*:103*//*108:*/
#line 2278 "htex.w"
static bool arith_error;
static scaled rem;
-/*:109*//*111:*/
+/*:108*//*110:*/
#line 2302 "htex.w"
static scaled x_over_n(scaled x,int n)
@@ -224,7 +224,7 @@ else{x_over_n= -((-x)/n);rem= -((-x)%n);
if(negative)negate(rem);
return x_over_n;}
-/*:111*//*112:*/
+/*:110*//*111:*/
#line 2329 "htex.w"
static scaled xn_over_d(scaled x,int n,int d)
@@ -246,7 +246,7 @@ else{xn_over_d= -u;rem= -(v%d);
}
return xn_over_d;}
-/*:112*//*113:*/
+/*:111*//*112:*/
#line 2369 "htex.w"
halfword badness(scaled t,scaled s)
@@ -262,7 +262,7 @@ else return(r*r*r+0400000)/01000000;
}
}
-/*:113*//*126:*/
+/*:112*//*125:*/
#line 2666 "htex.w"
static pointer get_avail(void)
@@ -285,7 +285,7 @@ incr(dyn_used);
return p;
}
-/*:126*//*129:*/
+/*:125*//*128:*/
#line 2713 "htex.w"
static void flush_list(pointer p)
@@ -302,7 +302,7 @@ link(q)= avail;avail= p;
}
}
-/*:129*//*131:*/
+/*:128*//*130:*/
#line 2761 "htex.w"
pointer get_node(int s)
@@ -312,7 +312,7 @@ pointer q;
int r;
int t;
restart:p= rover;
-do{/*133:*/
+do{/*132:*/
#line 2813 "htex.w"
q= p+node_size(p);
@@ -324,7 +324,7 @@ llink(t)= llink(q);rlink(llink(q))= t;
q= q+node_size(q);
}
r= q-s;
-if(r> p+1)/*134:*/
+if(r> p+1)/*133:*/
#line 2828 "htex.w"
{node_size(p)= r-p;
@@ -333,11 +333,11 @@ rover= p;
goto found;
}
-/*:134*/
+/*:133*/
#line 2823 "htex.w"
;
if(r==p)if(rlink(p)!=p)
-/*135:*/
+/*134:*/
#line 2837 "htex.w"
{rover= rlink(p);t= llink(p);
@@ -345,12 +345,12 @@ llink(rover)= t;rlink(t)= rover;
goto found;
}
-/*:135*/
+/*:134*/
#line 2825 "htex.w"
;
node_size(p)= q-p
-/*:133*/
+/*:132*/
#line 2770 "htex.w"
;
@@ -360,7 +360,7 @@ if(s==010000000000)
{return max_halfword;
}
if(lo_mem_max+2<hi_mem_min)if(lo_mem_max+2<=mem_bot+max_halfword)
-/*132:*/
+/*131:*/
#line 2798 "htex.w"
{if(hi_mem_min-lo_mem_max>=1998)t= lo_mem_max+1000;
@@ -373,7 +373,7 @@ lo_mem_max= t;link(lo_mem_max)= null;info(lo_mem_max)= null;
rover= q;goto restart;
}
-/*:132*/
+/*:131*/
#line 2778 "htex.w"
;
overflow("main memory size",mem_max+1-mem_min);
@@ -388,7 +388,7 @@ leak_in(r,s);
return r;
}
-/*:131*//*136:*/
+/*:130*//*135:*/
#line 2848 "htex.w"
static void free_node(pointer p,halfword s)
@@ -405,7 +405,7 @@ var_used= var_used-s;
}
-/*:136*//*142:*/
+/*:135*//*141:*/
#line 2999 "htex.w"
pointer new_null_box(void)
@@ -417,7 +417,7 @@ glue_sign(p)= normal;glue_order(p)= normal;set_glue_ratio_zero(glue_set(p));
return p;
}
-/*:142*//*145:*/
+/*:141*//*144:*/
#line 3030 "htex.w"
pointer new_rule(void)
@@ -428,7 +428,7 @@ width(p)= null_flag;depth(p)= null_flag;height(p)= null_flag;
return p;
}
-/*:145*//*150:*/
+/*:144*//*149:*/
#line 3100 "htex.w"
pointer new_ligature(quarterword f,quarterword c,pointer q)
@@ -439,7 +439,7 @@ subtype(p)= 0;return p;
}
-/*:150*//*151:*/
+/*:149*//*150:*/
#line 3134 "htex.w"
pointer new_disc(void)
@@ -449,7 +449,7 @@ subtype(p)= 0;pre_break(p)= null;post_break(p)= null;
return p;
}
-/*:151*//*153:*/
+/*:150*//*152:*/
#line 3169 "htex.w"
pointer new_math(scaled w,small_number s)
@@ -458,7 +458,7 @@ p= get_node(small_node_size);type(p)= math_node;
subtype(p)= s;width(p)= w;return p;
}
-/*:153*//*157:*/
+/*:152*//*156:*/
#line 3252 "htex.w"
pointer new_spec(pointer p)
@@ -469,7 +469,7 @@ width(q)= width(p);stretch(q)= stretch(p);shrink(q)= shrink(p);
return q;
}
-/*:157*//*159:*/
+/*:156*//*158:*/
#line 3279 "htex.w"
pointer new_glue(pointer q)
@@ -479,7 +479,7 @@ leader_ptr(p)= null;glue_ptr(p)= q;incr(glue_ref_count(q));
return p;
}
-/*:159*//*162:*/
+/*:158*//*161:*/
#line 3318 "htex.w"
pointer new_kern(scaled w)
@@ -490,7 +490,7 @@ width(p)= w;
return p;
}
-/*:162*//*164:*/
+/*:161*//*163:*/
#line 3342 "htex.w"
pointer new_penalty(int m)
@@ -500,12 +500,12 @@ subtype(p)= 0;
penalty(p)= m;return p;
}
-/*:164*//*170:*/
+/*:163*//*169:*/
#line 3422 "htex.w"
void mem_init(void)
{int k;
-/*171:*/
+/*170:*/
#line 3428 "htex.w"
for(k= mem_bot+1;k<=lo_mem_stat_max;k++)mem[k].sc= 0;
@@ -524,34 +524,34 @@ llink(rover)= rover;rlink(rover)= rover;
lo_mem_max= rover+1000;link(lo_mem_max)= null;info(lo_mem_max)= null;
for(k= hi_mem_stat_min;k<=mem_top;k++)
mem[k]= mem[lo_mem_max];
-/*805:*/
-#line 15738 "htex.w"
+/*804:*/
+#line 15737 "htex.w"
info(omit_template)= end_template_token;
-/*:805*//*812:*/
-#line 15845 "htex.w"
+/*:804*//*811:*/
+#line 15844 "htex.w"
link(end_span)= max_quarterword+1;info(end_span)= null;
-/*:812*//*836:*/
-#line 16301 "htex.w"
+/*:811*//*835:*/
+#line 16300 "htex.w"
type(last_active)= hyphenated;line_number(last_active)= max_halfword;
subtype(last_active)= 0;
-/*:836*//*1007:*/
-#line 19406 "htex.w"
+/*:835*//*1006:*/
+#line 19405 "htex.w"
subtype(page_ins_head)= qi(255);
type(page_ins_head)= split_up;link(page_ins_head)= page_ins_head;
-/*:1007*//*1014:*/
-#line 19562 "htex.w"
+/*:1006*//*1013:*/
+#line 19561 "htex.w"
type(page_head)= glue_node;subtype(page_head)= normal;
-/*:1014*/
+/*:1013*/
#line 3445 "htex.w"
;
avail= null;
@@ -559,13 +559,13 @@ hi_mem_min= hi_mem_stat_min;
var_used= lo_mem_stat_max+1-mem_bot;dyn_used= hi_mem_stat_usage;
-/*:171*/
+/*:170*/
#line 3425 "htex.w"
}
-/*:170*//*210:*/
-#line 3978 "htex.w"
+/*:169*//*209:*/
+#line 3976 "htex.w"
static void delete_token_ref(pointer p)
@@ -573,18 +573,19 @@ static void delete_token_ref(pointer p)
else decr(token_ref_count(p));
}
-/*:210*//*211:*/
-#line 3993 "htex.w"
+/*:209*//*210:*/
+#line 3991 "htex.w"
void delete_glue_ref(pointer p)
fast_delete_glue_ref(p)
static void delete_xdimen_ref(pointer p)
-{if(xdimen_ref_count(p)==null)free_node(p,xdimen_node_size);
+{if(p==null)return;
+if(xdimen_ref_count(p)==null)free_node(p,xdimen_node_size);
else decr(xdimen_ref_count(p));
}
-/*:211*//*212:*/
-#line 4006 "htex.w"
+/*:210*//*211:*/
+#line 4005 "htex.w"
void flush_node_list(pointer p)
{
@@ -604,19 +605,19 @@ case ins_node:{flush_node_list(ins_ptr(p));
delete_glue_ref(split_top_ptr(p));
free_node(p,ins_node_size);goto done;
}
-case whatsit_node:/*1388:*/
-#line 25389 "htex.w"
+case whatsit_node:/*1387:*/
+#line 25382 "htex.w"
{switch(subtype(p)){
case close_node:case language_node:free_node(p,small_node_size);break;
+case param_node:
+if(param_type(p)==glue_type)fast_delete_glue_ref(param_value(p).i);
+free_node(p,param_node_size);break;
case par_node:
-if(par_type(p)==glue_type)fast_delete_glue_ref(par_value(p).i);
+delete_xdimen_ref(par_extent(p));
+flush_node_list(par_params(p));
+flush_node_list(par_list(p));
free_node(p,par_node_size);break;
-case graf_node:
-delete_xdimen_ref(graf_extent(p));
-flush_node_list(graf_params(p));
-flush_node_list(graf_list(p));
-free_node(p,graf_node_size);break;
case disp_node:
flush_node_list(display_eqno(p));
flush_node_list(display_formula(p));
@@ -633,6 +634,7 @@ delete_xdimen_ref(set_extent(p));
flush_node_list(list_ptr(p));
free_node(p,set_node_size);break;
case image_node:
+flush_node_list(image_alt(p));
free_node(p,image_node_size);break;
case align_node:
delete_xdimen_ref(align_extent(p));
@@ -679,8 +681,8 @@ default:confusion("ext3");
goto done;
}
-/*:1388*/
-#line 4025 "htex.w"
+/*:1387*/
+#line 4024 "htex.w"
case glue_node:{fast_delete_glue_ref(glue_ptr(p));
if(leader_ptr(p)!=null)flush_node_list(leader_ptr(p));
@@ -700,8 +702,8 @@ p= q;
}
}
-/*:212*//*214:*/
-#line 4069 "htex.w"
+/*:211*//*213:*/
+#line 4068 "htex.w"
pointer copy_node_list(pointer p)
@@ -711,13 +713,13 @@ pointer r;
int words;
h= get_avail();q= h;
while(p!=null)
-{/*215:*/
-#line 4085 "htex.w"
+{/*214:*/
+#line 4084 "htex.w"
words= 1;
if(is_char_node(p))r= get_avail();
-else/*216:*/
-#line 4094 "htex.w"
+else/*215:*/
+#line 4093 "htex.w"
switch(type(p)){
case hlist_node:case vlist_node:case unset_node:{r= get_node(box_node_size);
@@ -732,8 +734,8 @@ add_glue_ref(split_top_ptr(p));
ins_ptr(r)= copy_node_list(ins_ptr(p));
words= ins_node_size-1;
}break;
-case whatsit_node:/*1387:*/
-#line 25271 "htex.w"
+case whatsit_node:/*1386:*/
+#line 25264 "htex.w"
switch(subtype(p)){
case open_node:{r= get_node(open_node_size);words= open_node_size;
@@ -744,17 +746,17 @@ add_token_ref(write_tokens(p));words= write_node_size;
case close_node:case language_node:{r= get_node(small_node_size);
words= small_node_size;
}break;
+case param_node:
+{r= get_node(param_node_size);
+if(param_type(p)==glue_type)add_glue_ref(param_value(p).i);
+words= param_node_size;
+}break;
case par_node:
{r= get_node(par_node_size);
-if(par_type(p)==glue_type)add_glue_ref(par_value(p).i);
-words= par_node_size;
-}break;
-case graf_node:
-{r= get_node(graf_node_size);
-add_xdimen_ref(graf_extent(p));
-graf_params(r)= copy_node_list(graf_params(p));
-graf_list(r)= copy_node_list(graf_list(p));
-words= graf_node_size-1;
+add_xdimen_ref(par_extent(p));
+par_params(r)= copy_node_list(par_params(p));
+par_list(r)= copy_node_list(par_list(p));
+words= par_node_size-1;
}break;
case disp_node:
{r= get_node(disp_node_size);
@@ -771,22 +773,22 @@ words= baseline_node_size;
}break;
case hpack_node:case vpack_node:
{r= get_node(pack_node_size);
-pack_m(r)= pack_m(p);
+mem[r+7]= mem[p+7];mem[r+6]= mem[p+6];mem[r+5]= mem[p+5];
list_ptr(r)= copy_node_list(list_ptr(p));
add_xdimen_ref(pack_extent(p));
-pack_limit(r)= pack_limit(p);
-words= pack_node_size-3;
+words= 5;
}break;
case hset_node:case vset_node:
{r= get_node(set_node_size);
mem[r+8]= mem[p+8];mem[r+7]= mem[p+7];mem[r+6]= mem[p+6];mem[r+5]= mem[p+5];
-add_xdimen_ref(set_extent(p));
list_ptr(r)= copy_node_list(list_ptr(p));
+add_xdimen_ref(set_extent(p));
words= 5;
}break;
case image_node:
r= get_node(image_node_size);
-words= image_node_size;
+image_alt(r)= copy_node_list(image_alt(p));
+words= image_node_size-1;
break;
case align_node:
{r= get_node(align_node_size);
@@ -852,8 +854,8 @@ default:confusion("ext2");
}
-/*:1387*/
-#line 4109 "htex.w"
+/*:1386*/
+#line 4108 "htex.w"
break;
case glue_node:{r= get_node(small_node_size);add_glue_ref(glue_ptr(p));
glue_ptr(r)= glue_ptr(p);leader_ptr(r)= copy_node_list(leader_ptr(p));
@@ -879,15 +881,15 @@ default:confusion("copying");
}
-/*:216*/
-#line 4089 "htex.w"
+/*:215*/
+#line 4088 "htex.w"
;
while(words> 0)
{decr(words);mem[r+words]= mem[p+words];
}
-/*:215*/
-#line 4078 "htex.w"
+/*:214*/
+#line 4077 "htex.w"
;
link(q)= r;q= r;p= link(p);
}
@@ -895,20 +897,20 @@ link(q)= null;q= link(h);free_avail(h);
return q;
}
-/*:214*//*225:*/
-#line 4459 "htex.w"
+/*:213*//*224:*/
+#line 4458 "htex.w"
-/*223:*/
-#line 4440 "htex.w"
+/*222:*/
+#line 4439 "htex.w"
static list_state_record nest[nest_size+1];
int nest_ptr;
static int max_nest_stack;
list_state_record cur_list;
-/*:223*/
-#line 4461 "htex.w"
+/*:222*/
+#line 4460 "htex.w"
void list_init(void)
@@ -918,8 +920,8 @@ memset(&cur_list,0,sizeof(cur_list));
mode= vmode;head= contrib_head;tail= contrib_head;
prev_height= prev_depth= ignore_depth;
}
-/*:225*//*227:*/
-#line 4479 "htex.w"
+/*:224*//*226:*/
+#line 4478 "htex.w"
void push_nest(void)
{if(nest_ptr> max_nest_stack)
@@ -932,15 +934,15 @@ incr(nest_ptr);head= get_avail();tail= head;prev_graf= 0;
cur_list.bs_pos= NULL;cur_bs= baseline_skip;cur_ls= line_skip;cur_lsl= line_skip_limit;
}
-/*:227*//*228:*/
-#line 4496 "htex.w"
+/*:226*//*227:*/
+#line 4495 "htex.w"
void pop_nest(void)
{free_avail(head);decr(nest_ptr);cur_list= nest[nest_ptr];
}
-/*:228*//*561:*/
-#line 10872 "htex.w"
+/*:227*//*560:*/
+#line 10871 "htex.w"
memory_word font_info[font_mem_size+1];
@@ -990,8 +992,8 @@ static int16_t font_false_bchar0[font_max-font_base+1],
*const font_false_bchar= font_false_bchar0-font_base;
-/*:561*//*562:*/
-#line 10930 "htex.w"
+/*:560*//*561:*/
+#line 10929 "htex.w"
int char_base0[font_max-font_base+1],
*const char_base= char_base0-font_base;
@@ -1021,8 +1023,8 @@ static int param_base0[font_max-font_base+1],
*const param_base= param_base0-font_base;
-/*:562*//*572:*/
-#line 11085 "htex.w"
+/*:561*//*571:*/
+#line 11084 "htex.w"
void read_font_info(int f,char*nom,scaled s)
{
@@ -1037,19 +1039,19 @@ int bchar;
scaled z;
int alpha;int beta;
-/*574:*/
-#line 11134 "htex.w"
+/*573:*/
+#line 11133 "htex.w"
-/*575:*/
-#line 11146 "htex.w"
+/*574:*/
+#line 11145 "htex.w"
file_opened= true
-/*:575*/
-#line 11135 "htex.w"
+/*:574*/
+#line 11134 "htex.w"
;
-/*577:*/
-#line 11170 "htex.w"
+/*576:*/
+#line 11169 "htex.w"
{read_sixteen(lf);
fget;read_sixteen(lh);
@@ -1071,11 +1073,11 @@ if(lf!=6+lh+(ec-bc+1)+nw+nh+nd+ni+nl+nk+ne+np)abort;
if((nw==0)||(nh==0)||(nd==0)||(ni==0))abort;
}
-/*:577*/
-#line 11136 "htex.w"
+/*:576*/
+#line 11135 "htex.w"
;
-/*578:*/
-#line 11197 "htex.w"
+/*577:*/
+#line 11196 "htex.w"
lf= lf-6-lh;
if(np<7)lf= lf+7-np;
@@ -1091,11 +1093,11 @@ kern_base[f]= lig_kern_base[f]+nl-kern_base_offset;
exten_base[f]= kern_base[f]+kern_base_offset+nk;
param_base[f]= exten_base[f]+ne
-/*:578*/
-#line 11137 "htex.w"
+/*:577*/
+#line 11136 "htex.w"
;
-/*580:*/
-#line 11225 "htex.w"
+/*579:*/
+#line 11224 "htex.w"
{if(lh<2)abort;
store_four_quarters(font_check[f]);
@@ -1112,11 +1114,11 @@ else z= xn_over_d(z,-s,1000);
font_size[f]= z;
}
-/*:580*/
-#line 11138 "htex.w"
+/*:579*/
+#line 11137 "htex.w"
;
-/*581:*/
-#line 11241 "htex.w"
+/*580:*/
+#line 11240 "htex.w"
for(k= fmem_ptr;k<=width_base[f]-1;k++)
{store_four_quarters(font_info[k].qqqq);
@@ -1125,8 +1127,8 @@ if((a>=nw)||(b/020>=nh)||(b%020>=nd)||
switch(c%4){
case lig_tag:if(d>=nl)abort;break;
case ext_tag:if(d>=ne)abort;break;
-case list_tag:/*582:*/
-#line 11262 "htex.w"
+case list_tag:/*581:*/
+#line 11261 "htex.w"
{check_byte_range(d);
while(d<current_character_being_worked_on)
@@ -1138,21 +1140,21 @@ d= qo(rem_byte(qw));
if(d==current_character_being_worked_on)abort;
not_found:;}
-/*:582*/
-#line 11249 "htex.w"
+/*:581*/
+#line 11248 "htex.w"
break;
default:do_nothing;
}
}
-/*:581*/
-#line 11139 "htex.w"
+/*:580*/
+#line 11138 "htex.w"
;
-/*583:*/
-#line 11297 "htex.w"
+/*582:*/
+#line 11296 "htex.w"
-{/*584:*/
-#line 11307 "htex.w"
+{/*583:*/
+#line 11306 "htex.w"
{alpha= 16;
while(z>=040000000)
@@ -1161,8 +1163,8 @@ while(z>=040000000)
beta= 256/alpha;alpha= alpha*z;
}
-/*:584*/
-#line 11298 "htex.w"
+/*:583*/
+#line 11297 "htex.w"
;
for(k= width_base[f];k<=lig_kern_base[f]-1;k++)
store_scaled(font_info[k].sc);
@@ -1172,11 +1174,11 @@ if(font_info[depth_base[f]].sc!=0)abort;
if(font_info[italic_base[f]].sc!=0)abort;
}
-/*:583*/
-#line 11140 "htex.w"
+/*:582*/
+#line 11139 "htex.w"
;
-/*585:*/
-#line 11321 "htex.w"
+/*584:*/
+#line 11320 "htex.w"
bch_label= 077777;bchar= 256;
if(nl> 0)
@@ -1197,11 +1199,11 @@ if(a==255)bch_label= 256*c+d;
for(k= kern_base[f]+kern_base_offset;k<=exten_base[f]-1;k++)
store_scaled(font_info[k].sc);
-/*:585*/
-#line 11141 "htex.w"
+/*:584*/
+#line 11140 "htex.w"
;
-/*586:*/
-#line 11341 "htex.w"
+/*585:*/
+#line 11340 "htex.w"
for(k= exten_base[f];k<=param_base[f]-1;k++)
{store_four_quarters(font_info[k].qqqq);
@@ -1211,11 +1213,11 @@ if(c!=0)check_existence(c);
check_existence(d);
}
-/*:586*/
-#line 11142 "htex.w"
+/*:585*/
+#line 11141 "htex.w"
;
-/*587:*/
-#line 11353 "htex.w"
+/*586:*/
+#line 11352 "htex.w"
{for(k= 1;k<=np;k++)
if(k==1)
@@ -1229,11 +1231,11 @@ if(hpos>=hend)abort;
for(k= np+1;k<=7;k++)font_info[param_base[f]+k-1].sc= 0;
}
-/*:587*/
-#line 11143 "htex.w"
+/*:586*/
+#line 11142 "htex.w"
;
-/*588:*/
-#line 11373 "htex.w"
+/*587:*/
+#line 11372 "htex.w"
if(np>=7)font_params[f]= np;else font_params[f]= 7;
hyphen_char[f]= skew_char[f]= -1;
@@ -1252,19 +1254,19 @@ adjust(kern_base);adjust(exten_base);
decr(param_base[f]);
fmem_ptr= fmem_ptr+lf;goto done
-/*:588*/
-#line 11144 "htex.w"
+/*:587*/
+#line 11143 "htex.w"
-/*:574*/
-#line 11101 "htex.w"
+/*:573*/
+#line 11100 "htex.w"
;
bad_tfm:QUIT("Bad tfm file: %s\n",nom);
done:;
}
-/*:572*//*594:*/
-#line 11476 "htex.w"
+/*:571*//*593:*/
+#line 11475 "htex.w"
pointer new_character(internal_font_number f,eight_bits c)
{pointer p;
@@ -1276,8 +1278,8 @@ p= get_avail();font(p)= f;character(p)= qi(c);
return p;
}
-/*:594*//*663:*/
-#line 13077 "htex.w"
+/*:593*//*662:*/
+#line 13076 "htex.w"
pointer hpack(pointer p,scaled w,small_number m)
{
@@ -1293,8 +1295,8 @@ eight_bits hd;
r= get_node(box_node_size);type(r)= hlist_node;
subtype(r)= min_quarterword;shift_amount(r)= 0;
q= r+list_offset;link(q)= p;
-h= 0;/*664:*/
-#line 13103 "htex.w"
+h= 0;/*663:*/
+#line 13102 "htex.w"
d= 0;x= 0;
total_stretch[normal]= 0;total_shrink[normal]= 0;
@@ -1302,16 +1304,16 @@ total_stretch[fil]= 0;total_shrink[fil]= 0;
total_stretch[fill]= 0;total_shrink[fill]= 0;
total_stretch[filll]= 0;total_shrink[filll]= 0
-/*:664*/
-#line 13092 "htex.w"
+/*:663*/
+#line 13091 "htex.w"
;
-while(p!=null)/*665:*/
-#line 13110 "htex.w"
+while(p!=null)/*664:*/
+#line 13109 "htex.w"
{reswitch:while(is_char_node(p))
-/*668:*/
-#line 13155 "htex.w"
+/*667:*/
+#line 13154 "htex.w"
{f= font(p);i= char_info(f,character(p));hd= height_depth(i);
x= x+char_width(f,i);
@@ -1320,15 +1322,15 @@ s= char_depth(f,hd);if(s> d)d= s;
p= link(p);
}
-/*:668*/
-#line 13114 "htex.w"
+/*:667*/
+#line 13113 "htex.w"
;
if(p!=null)
{switch(type(p)){
case hlist_node:case vlist_node:case rule_node:
case unset_node:
-/*667:*/
-#line 13143 "htex.w"
+/*666:*/
+#line 13142 "htex.w"
{x= x+width(p);
if(type(p)>=rule_node)s= 0;else s= shift_amount(p);
@@ -1336,12 +1338,12 @@ if(height(p)-s> h)h= height(p)-s;
if(depth(p)+s> d)d= depth(p)+s;
}
-/*:667*/
-#line 13120 "htex.w"
+/*:666*/
+#line 13119 "htex.w"
break;
case ins_node:case mark_node:case adjust_node:if(adjust_tail!=null)
-/*669:*/
-#line 13170 "htex.w"
+/*668:*/
+#line 13169 "htex.w"
{while(link(q)!=p)q= link(q);
if(type(p)==adjust_node)
@@ -1354,25 +1356,22 @@ else{link(adjust_tail)= p;adjust_tail= p;p= link(p);
link(q)= p;p= q;
}
-/*:669*/
-#line 13122 "htex.w"
+/*:668*/
+#line 13121 "htex.w"
break;
-case whatsit_node:/*1390:*/
-#line 25471 "htex.w"
+case whatsit_node:/*1389:*/
+#line 25462 "htex.w"
if(subtype(p)==image_node)
-{glue_ord o;
-if(image_height(p)> h)h= image_height(p);
+{if(image_height(p)> h)h= image_height(p);
x= x+image_width(p);
-o= image_stretch_order(p);total_stretch[o]= total_stretch[o]+image_stretch(p);
-o= image_shrink_order(p);total_shrink[o]= total_shrink[o]+image_shrink(p);
}
-/*:1390*/
-#line 13123 "htex.w"
+/*:1389*/
+#line 13122 "htex.w"
;break;
-case glue_node:/*670:*/
-#line 13182 "htex.w"
+case glue_node:/*669:*/
+#line 13181 "htex.w"
{g= glue_ptr(p);x= x+width(g);
o= stretch_order(g);total_stretch[o]= total_stretch[o]+stretch(g);
@@ -1384,19 +1383,19 @@ if(depth(g)> d)d= depth(g);
}
}
-/*:670*/
-#line 13124 "htex.w"
+/*:669*/
+#line 13123 "htex.w"
break;
case kern_node:case math_node:x= x+width(p);break;
-case ligature_node:/*666:*/
-#line 13134 "htex.w"
+case ligature_node:/*665:*/
+#line 13133 "htex.w"
{mem[lig_trick]= mem[lig_char(p)];link(lig_trick)= link(p);
p= lig_trick;goto reswitch;
}
-/*:666*/
-#line 13126 "htex.w"
+/*:665*/
+#line 13125 "htex.w"
default:do_nothing;
}
@@ -1405,13 +1404,13 @@ p= link(p);
}
-/*:665*/
-#line 13095 "htex.w"
+/*:664*/
+#line 13094 "htex.w"
;
if(adjust_tail!=null)link(adjust_tail)= null;
height(r)= h;depth(r)= d;
-/*671:*/
-#line 13196 "htex.w"
+/*670:*/
+#line 13195 "htex.w"
if(m==additional)w= x+w;
width(r)= w;x= w-x;
@@ -1420,19 +1419,19 @@ if(x==0)
set_glue_ratio_zero(glue_set(r));
goto end;
}
-else if(x> 0)/*672:*/
-#line 13209 "htex.w"
+else if(x> 0)/*671:*/
+#line 13208 "htex.w"
-{/*673:*/
-#line 13220 "htex.w"
+{/*672:*/
+#line 13219 "htex.w"
if(total_stretch[filll]!=0)o= filll;
else if(total_stretch[fill]!=0)o= fill;
else if(total_stretch[fil]!=0)o= fil;
else o= normal
-/*:673*/
-#line 13210 "htex.w"
+/*:672*/
+#line 13209 "htex.w"
;
glue_order(r)= o;glue_sign(r)= stretching;
if(total_stretch[o]!=0)glue_set(r)= unfloat(x/(double)total_stretch[o]);
@@ -1443,22 +1442,22 @@ set_glue_ratio_zero(glue_set(r));
goto end;
}
-/*:672*/
-#line 13205 "htex.w"
+/*:671*/
+#line 13204 "htex.w"
-else/*678:*/
-#line 13265 "htex.w"
+else/*677:*/
+#line 13264 "htex.w"
-{/*679:*/
-#line 13278 "htex.w"
+{/*678:*/
+#line 13277 "htex.w"
if(total_shrink[filll]!=0)o= filll;
else if(total_shrink[fill]!=0)o= fill;
else if(total_shrink[fil]!=0)o= fil;
else o= normal
-/*:679*/
-#line 13266 "htex.w"
+/*:678*/
+#line 13265 "htex.w"
;
glue_order(r)= o;glue_sign(r)= shrinking;
if(total_shrink[o]!=0)glue_set(r)= unfloat((-x)/(double)total_shrink[o]);
@@ -1471,18 +1470,18 @@ set_glue_ratio_one(glue_set(r));
goto end;
}
-/*:678*/
-#line 13207 "htex.w"
+/*:677*/
+#line 13206 "htex.w"
-/*:671*/
-#line 13099 "htex.w"
+/*:670*/
+#line 13098 "htex.w"
;
end:return r;
}
-/*:663*//*683:*/
-#line 13318 "htex.w"
+/*:662*//*682:*/
+#line 13317 "htex.w"
pointer vpackage(pointer p,scaled h,small_number m,scaled l)
{
@@ -1494,8 +1493,8 @@ glue_ord o;
r= get_node(box_node_size);type(r)= vlist_node;
subtype(r)= min_quarterword;shift_amount(r)= 0;
list_ptr(r)= p;
-w= 0;/*664:*/
-#line 13103 "htex.w"
+w= 0;/*663:*/
+#line 13102 "htex.w"
d= 0;x= 0;
total_stretch[normal]= 0;total_shrink[normal]= 0;
@@ -1503,44 +1502,41 @@ total_stretch[fil]= 0;total_shrink[fil]= 0;
total_stretch[fill]= 0;total_shrink[fill]= 0;
total_stretch[filll]= 0;total_shrink[filll]= 0
-/*:664*/
-#line 13329 "htex.w"
+/*:663*/
+#line 13328 "htex.w"
;
-while(p!=null)/*684:*/
-#line 13342 "htex.w"
+while(p!=null)/*683:*/
+#line 13341 "htex.w"
{if(is_char_node(p))confusion("vpack");
else switch(type(p)){
case hlist_node:case vlist_node:case rule_node:
case unset_node:
-/*685:*/
-#line 13359 "htex.w"
+/*684:*/
+#line 13358 "htex.w"
{x= x+d+height(p);d= depth(p);
if(type(p)>=rule_node)s= 0;else s= shift_amount(p);
if(width(p)+s> w)w= width(p)+s;
}
-/*:685*/
-#line 13349 "htex.w"
+/*:684*/
+#line 13348 "htex.w"
break;
-case whatsit_node:/*1389:*/
-#line 25462 "htex.w"
+case whatsit_node:/*1388:*/
+#line 25456 "htex.w"
if(subtype(p)==image_node)
-{glue_ord o;
-if(image_width(p)> w)w= image_width(p);
+{if(image_width(p)> w)w= image_width(p);
x= x+d+image_height(p);d= 0;
-o= image_stretch_order(p);total_stretch[o]= total_stretch[o]+image_stretch(p);
-o= image_shrink_order(p);total_shrink[o]= total_shrink[o]+image_shrink(p);
}
-/*:1389*/
-#line 13350 "htex.w"
+/*:1388*/
+#line 13349 "htex.w"
;break;
-case glue_node:/*686:*/
-#line 13365 "htex.w"
+case glue_node:/*685:*/
+#line 13364 "htex.w"
{x= x+d;d= 0;
g= glue_ptr(p);x= x+width(g);
@@ -1552,8 +1548,8 @@ if(width(g)> w)w= width(g);
}
}
-/*:686*/
-#line 13351 "htex.w"
+/*:685*/
+#line 13350 "htex.w"
break;
case kern_node:{x= x+d+width(p);d= 0;
}break;
@@ -1562,16 +1558,16 @@ default:do_nothing;
p= link(p);
}
-/*:684*/
-#line 13331 "htex.w"
+/*:683*/
+#line 13330 "htex.w"
;
width(r)= w;
if(d> l)
{x= x+d-l;depth(r)= l;
}
else depth(r)= d;
-/*687:*/
-#line 13379 "htex.w"
+/*686:*/
+#line 13378 "htex.w"
if(m==additional)h= x+h;
height(r)= h;x= h-x;
@@ -1580,19 +1576,19 @@ if(x==0)
set_glue_ratio_zero(glue_set(r));
goto end;
}
-else if(x> 0)/*688:*/
-#line 13392 "htex.w"
+else if(x> 0)/*687:*/
+#line 13391 "htex.w"
-{/*673:*/
-#line 13220 "htex.w"
+{/*672:*/
+#line 13219 "htex.w"
if(total_stretch[filll]!=0)o= filll;
else if(total_stretch[fill]!=0)o= fill;
else if(total_stretch[fil]!=0)o= fil;
else o= normal
-/*:673*/
-#line 13393 "htex.w"
+/*:672*/
+#line 13392 "htex.w"
;
glue_order(r)= o;glue_sign(r)= stretching;
if(total_stretch[o]!=0)glue_set(r)= unfloat(x/(double)total_stretch[o]);
@@ -1603,22 +1599,22 @@ set_glue_ratio_zero(glue_set(r));
goto end;
}
-/*:688*/
-#line 13388 "htex.w"
+/*:687*/
+#line 13387 "htex.w"
-else/*691:*/
-#line 13428 "htex.w"
+else/*690:*/
+#line 13427 "htex.w"
-{/*679:*/
-#line 13278 "htex.w"
+{/*678:*/
+#line 13277 "htex.w"
if(total_shrink[filll]!=0)o= filll;
else if(total_shrink[fill]!=0)o= fill;
else if(total_shrink[fil]!=0)o= fil;
else o= normal
-/*:679*/
-#line 13429 "htex.w"
+/*:678*/
+#line 13428 "htex.w"
;
glue_order(r)= o;glue_sign(r)= shrinking;
if(total_shrink[o]!=0)glue_set(r)= unfloat((-x)/(double)total_shrink[o]);
@@ -1631,22 +1627,22 @@ set_glue_ratio_one(glue_set(r));
goto end;
}
-/*:691*/
-#line 13390 "htex.w"
+/*:690*/
+#line 13389 "htex.w"
-/*:687*/
-#line 13338 "htex.w"
+/*:686*/
+#line 13337 "htex.w"
;
end:return r;
}
-/*:683*//*831:*/
-#line 16203 "htex.w"
+/*:682*//*830:*/
+#line 16202 "htex.w"
-/*694:*/
-#line 13461 "htex.w"
+/*693:*/
+#line 13460 "htex.w"
extern pointer happend_to_vlist(pointer b);
void append_to_vlist(pointer b,uint32_t offset)
@@ -1665,8 +1661,8 @@ link(tail)= p;tail= p;
link(tail)= b;tail= b;prev_depth= depth(b);
}
-/*:694*//*845:*/
-#line 16434 "htex.w"
+/*:693*//*844:*/
+#line 16433 "htex.w"
static pointer finite_shrink(pointer p)
{pointer q;
@@ -1675,8 +1671,8 @@ q= new_spec(p);shrink_order(q)= normal;
delete_glue_ref(p);return q;
}
-/*:845*//*849:*/
-#line 16497 "htex.w"
+/*:844*//*848:*/
+#line 16496 "htex.w"
static void try_break(int pi,small_number break_type)
{
@@ -1684,8 +1680,8 @@ pointer r;
pointer prev_r;
halfword old_l;
bool no_break_yet;
-/*850:*/
-#line 16525 "htex.w"
+/*849:*/
+#line 16524 "htex.w"
pointer prev_prev_r;
pointer s;
@@ -1705,24 +1701,24 @@ pointer save_link;
#endif
scaled shortfall;
-/*:850*/
-#line 16504 "htex.w"
+/*:849*/
+#line 16503 "htex.w"
-/*851:*/
-#line 16544 "htex.w"
+/*850:*/
+#line 16543 "htex.w"
if(abs(pi)>=inf_penalty)
if(pi> 0)goto end;
else pi= eject_penalty
-/*:851*/
-#line 16505 "htex.w"
+/*:850*/
+#line 16504 "htex.w"
;
no_break_yet= true;prev_r= active;old_l= 0;
do_all_six(copy_to_cur_active);
loop{resume:r= link(prev_r);
-/*852:*/
-#line 16554 "htex.w"
+/*851:*/
+#line 16553 "htex.w"
if(type(r)==delta_node)
@@ -1730,34 +1726,34 @@ if(type(r)==delta_node)
prev_prev_r= prev_r;prev_r= r;goto resume;
}
-/*:852*/
-#line 16510 "htex.w"
+/*:851*/
+#line 16509 "htex.w"
;
-/*856:*/
-#line 16603 "htex.w"
+/*855:*/
+#line 16602 "htex.w"
{l= line_number(r);
if(l> old_l)
{
if((minimum_demerits<awful_bad)&&
((old_l!=easy_line)||(r==last_active)))
-/*857:*/
-#line 16621 "htex.w"
+/*856:*/
+#line 16620 "htex.w"
-{if(no_break_yet)/*858:*/
-#line 16657 "htex.w"
+{if(no_break_yet)/*857:*/
+#line 16656 "htex.w"
{no_break_yet= false;do_all_six(set_break_width_to_background);
s= cur_p;
if(break_type> unhyphenated)if(cur_p!=null)
-/*862:*/
-#line 16701 "htex.w"
+/*861:*/
+#line 16700 "htex.w"
{t= replace_count(cur_p);v= cur_p;s= post_break(cur_p);
while(t> 0)
{decr(t);v= link(v);
-/*863:*/
-#line 16719 "htex.w"
+/*862:*/
+#line 16718 "htex.w"
if(is_char_node(v))
{f= font(v);
@@ -1775,13 +1771,13 @@ default:confusion("disc1");
}
-/*:863*/
-#line 16705 "htex.w"
+/*:862*/
+#line 16704 "htex.w"
;
}
while(s!=null)
-{/*864:*/
-#line 16736 "htex.w"
+{/*863:*/
+#line 16735 "htex.w"
if(is_char_node(s))
{f= font(s);
@@ -1799,8 +1795,8 @@ default:confusion("disc2");
}
-/*:864*/
-#line 16708 "htex.w"
+/*:863*/
+#line 16707 "htex.w"
;
s= link(s);
}
@@ -1809,22 +1805,22 @@ if(post_break(cur_p)==null)s= link(v);
}
-/*:862*/
-#line 16661 "htex.w"
+/*:861*/
+#line 16660 "htex.w"
;
while(s!=null)
{if(is_char_node(s))goto done;
switch(type(s)){
-case glue_node:/*859:*/
-#line 16676 "htex.w"
+case glue_node:/*858:*/
+#line 16675 "htex.w"
{v= glue_ptr(s);break_width[1]= break_width[1]-width(v);
break_width[2+stretch_order(v)]= break_width[2+stretch_order(v)]-stretch(v);
break_width[6]= break_width[6]-shrink(v);
}
-/*:859*/
-#line 16665 "htex.w"
+/*:858*/
+#line 16664 "htex.w"
break;
case penalty_node:do_nothing;break;
case math_node:break_width[1]= break_width[1]-width(s);break;
@@ -1836,11 +1832,11 @@ s= link(s);
}
done:;}
-/*:858*/
-#line 16622 "htex.w"
+/*:857*/
+#line 16621 "htex.w"
;
-/*865:*/
-#line 16762 "htex.w"
+/*864:*/
+#line 16761 "htex.w"
if(type(prev_r)==delta_node)
{do_all_six(convert_to_break_width);
@@ -1854,16 +1850,16 @@ do_all_six(new_delta_to_break_width);
link(prev_r)= q;prev_prev_r= prev_r;prev_r= q;
}
-/*:865*/
-#line 16623 "htex.w"
+/*:864*/
+#line 16622 "htex.w"
;
if(abs(adj_demerits)>=awful_bad-minimum_demerits)
minimum_demerits= awful_bad-1;
else minimum_demerits= minimum_demerits+abs(adj_demerits);
for(fit_class= very_loose_fit;fit_class<=tight_fit;fit_class++)
{if(minimal_demerits[fit_class]<=minimum_demerits)
-/*867:*/
-#line 16792 "htex.w"
+/*866:*/
+#line 16791 "htex.w"
{q= get_node(passive_node_size);
link(q)= passive;passive= q;cur_break(q)= cur_p;
@@ -1879,8 +1875,8 @@ total_demerits(q)= minimal_demerits[fit_class];
link(q)= r;link(prev_r)= q;prev_r= q;
#ifdef STAT
if(tracing_paragraphs> 0)
-/*868:*/
-#line 16812 "htex.w"
+/*867:*/
+#line 16811 "htex.w"
{print_nl("@@");print_int(serial(passive));
@@ -1893,21 +1889,21 @@ if(prev_break(passive)==null)print_char('0');
else print_int(serial(prev_break(passive)));
}
-/*:868*/
-#line 16807 "htex.w"
+/*:867*/
+#line 16806 "htex.w"
;
#endif
}
-/*:867*/
-#line 16629 "htex.w"
+/*:866*/
+#line 16628 "htex.w"
;
minimal_demerits[fit_class]= awful_bad;
}
minimum_demerits= awful_bad;
-/*866:*/
-#line 16781 "htex.w"
+/*865:*/
+#line 16780 "htex.w"
if(r!=last_active)
{q= get_node(delta_node_size);link(q)= r;type(q)= delta_node;
@@ -1916,17 +1912,17 @@ do_all_six(new_delta_from_break_width);
link(prev_r)= q;prev_prev_r= prev_r;prev_r= q;
}
-/*:866*/
-#line 16633 "htex.w"
+/*:865*/
+#line 16632 "htex.w"
;
}
-/*:857*/
-#line 16609 "htex.w"
+/*:856*/
+#line 16608 "htex.w"
;
if(r==last_active)goto end;
-/*873:*/
-#line 16886 "htex.w"
+/*872:*/
+#line 16885 "htex.w"
if(l> easy_line)
{line_width= second_width;old_l= max_halfword-1;
@@ -1937,24 +1933,24 @@ else if(par_shape_ptr==null)line_width= first_width;
else line_width= mem[par_shape_ptr+2*l].sc;
}
-/*:873*/
-#line 16611 "htex.w"
+/*:872*/
+#line 16610 "htex.w"
;
}
}
-/*:856*/
-#line 16513 "htex.w"
+/*:855*/
+#line 16512 "htex.w"
;
-/*874:*/
-#line 16906 "htex.w"
+/*873:*/
+#line 16905 "htex.w"
{artificial_demerits= false;
shortfall= line_width-cur_active_width[1];
if(shortfall> 0)
-/*875:*/
-#line 16936 "htex.w"
+/*874:*/
+#line 16935 "htex.w"
if((cur_active_width[3]!=0)||(cur_active_width[4]!=0)||
(cur_active_width[5]!=0))
@@ -1971,23 +1967,23 @@ else fit_class= decent_fit;
done1:;
}
-/*:875*/
-#line 16912 "htex.w"
+/*:874*/
+#line 16911 "htex.w"
-else/*876:*/
-#line 16955 "htex.w"
+else/*875:*/
+#line 16954 "htex.w"
{if(-shortfall> cur_active_width[6])b= inf_bad+1;
else b= badness(-shortfall,cur_active_width[6]);
if(b> 12)fit_class= tight_fit;else fit_class= decent_fit;
}
-/*:876*/
-#line 16914 "htex.w"
+/*:875*/
+#line 16913 "htex.w"
;
if((b> inf_bad)||(pi==eject_penalty))
-/*877:*/
-#line 16970 "htex.w"
+/*876:*/
+#line 16969 "htex.w"
{if(final_pass&&(minimum_demerits==awful_bad)&&
(link(r)==last_active)&&
@@ -1997,19 +1993,19 @@ else if(b> threshold)goto deactivate;
node_r_stays_active= false;
}
-/*:877*/
-#line 16917 "htex.w"
+/*:876*/
+#line 16916 "htex.w"
else{prev_r= r;
if(b> threshold)goto resume;
node_r_stays_active= true;
}
-/*878:*/
-#line 16986 "htex.w"
+/*877:*/
+#line 16985 "htex.w"
if(artificial_demerits)d= 0;
-else/*882:*/
-#line 17047 "htex.w"
+else/*881:*/
+#line 17046 "htex.w"
{d= line_penalty+b;
if(abs(d)>=10000)d= 100000000;else d= d*d;
@@ -2022,17 +2018,17 @@ else d= d+final_hyphen_demerits;
if(abs(fit_class-fitness(r))> 1)d= d+adj_demerits;
}
-/*:882*/
-#line 16988 "htex.w"
+/*:881*/
+#line 16987 "htex.w"
;
#ifdef STAT
if(tracing_paragraphs> 0)
-/*879:*/
-#line 17002 "htex.w"
+/*878:*/
+#line 17001 "htex.w"
{if(printed_node!=cur_p)
-/*880:*/
-#line 17024 "htex.w"
+/*879:*/
+#line 17023 "htex.w"
{print_nl("");
if(cur_p==null)short_display(link(printed_node));
@@ -2043,8 +2039,8 @@ link(cur_p)= save_link;
printed_node= cur_p;
}
-/*:880*/
-#line 17004 "htex.w"
+/*:879*/
+#line 17003 "htex.w"
;
print_nl("@");
@@ -2065,8 +2061,8 @@ print(" p=");print_int(pi);print(" d=");
if(artificial_demerits)print_char('*');else print_int(d);
}
-/*:879*/
-#line 16991 "htex.w"
+/*:878*/
+#line 16990 "htex.w"
;
#endif
@@ -2078,16 +2074,16 @@ best_place[fit_class]= break_node(r);best_pl_line[fit_class]= l;
if(d<minimum_demerits)minimum_demerits= d;
}
-/*:878*/
-#line 16922 "htex.w"
+/*:877*/
+#line 16921 "htex.w"
;
if(node_r_stays_active)goto resume;
-deactivate:/*883:*/
-#line 17069 "htex.w"
+deactivate:/*882:*/
+#line 17068 "htex.w"
link(prev_r)= link(r);free_node(r,active_node_size);
-if(prev_r==active)/*884:*/
-#line 17094 "htex.w"
+if(prev_r==active)/*883:*/
+#line 17093 "htex.w"
{r= link(active);
if(type(r)==delta_node)
@@ -2097,8 +2093,8 @@ link(active)= link(r);free_node(r,delta_node_size);
}
}
-/*:884*/
-#line 17072 "htex.w"
+/*:883*/
+#line 17071 "htex.w"
else if(type(prev_r)==delta_node)
{r= link(prev_r);
@@ -2114,19 +2110,19 @@ link(prev_r)= link(r);free_node(r,delta_node_size);
}
}
-/*:883*/
-#line 16924 "htex.w"
+/*:882*/
+#line 16923 "htex.w"
;
}
-/*:874*/
-#line 16516 "htex.w"
+/*:873*/
+#line 16515 "htex.w"
;
}
end:;
#ifdef STAT
-/*881:*/
-#line 17039 "htex.w"
+/*880:*/
+#line 17038 "htex.w"
if(cur_p==printed_node)if(cur_p!=null)if(type(cur_p)==disc_node)
{t= replace_count(cur_p);
@@ -2135,15 +2131,15 @@ while(t> 0)
}
}
-/*:881*/
-#line 16520 "htex.w"
+/*:880*/
+#line 16519 "htex.w"
;
#endif
}
-/*:849*//*901:*/
-#line 17418 "htex.w"
+/*:848*//*900:*/
+#line 17417 "htex.w"
static void post_line_break(int final_widow_penalty)
{
@@ -2157,15 +2153,15 @@ scaled cur_indent;
quarterword t;
int pen;
halfword cur_line;
-/*902:*/
-#line 17469 "htex.w"
+/*901:*/
+#line 17468 "htex.w"
q= break_node(best_bet);cur_p= null;
do{r= q;q= prev_break(q);next_break(r)= cur_p;cur_p= r;
}while(!(q==null))
-/*:902*/
-#line 17432 "htex.w"
+/*:901*/
+#line 17431 "htex.w"
;
cur_line= prev_graf+1;
next_offset= hposition(link(temp_head));
@@ -2185,11 +2181,11 @@ next_offset= next_offset-node_pos;
else
next_offset= 0;
}
-/*904:*/
-#line 17506 "htex.w"
+/*903:*/
+#line 17505 "htex.w"
-/*905:*/
-#line 17518 "htex.w"
+/*904:*/
+#line 17517 "htex.w"
q= cur_break(cur_p);disc_break= false;post_disc_break= false;
if(q!=null)
@@ -2200,8 +2196,8 @@ subtype(q)= right_skip_code+1;add_glue_ref(right_skip);
goto done;
}
else{if(type(q)==disc_node)
-/*906:*/
-#line 17537 "htex.w"
+/*905:*/
+#line 17536 "htex.w"
{pointer pre_q= pre_break(q);
pointer post_q= post_break(q);
@@ -2209,8 +2205,8 @@ t= replace_count(q);
type(q)= whatsit_node;
subtype(q)= ignore_node;
ignore_info(q)= 1;
-/*907:*/
-#line 17556 "htex.w"
+/*906:*/
+#line 17555 "htex.w"
if(t==0){ignore_list(q)= null;r= link(q);}
else{r= q;
@@ -2222,8 +2218,8 @@ r= link(s);link(s)= null;
ignore_list(q)= link(q);
}
-/*:907*/
-#line 17544 "htex.w"
+/*:906*/
+#line 17543 "htex.w"
;
s= get_node(ignore_node_size);
type(s)= whatsit_node;
@@ -2231,54 +2227,54 @@ subtype(s)= ignore_node;
ignore_info(s)= 0;
ignore_list(s)= null;
link(s)= r;r= s;
-if(post_q!=null)/*908:*/
-#line 17570 "htex.w"
+if(post_q!=null)/*907:*/
+#line 17569 "htex.w"
{s= post_q;
while(link(s)!=null)s= link(s);
link(s)= r;r= post_q;post_disc_break= true;
}
-/*:908*/
-#line 17551 "htex.w"
+/*:907*/
+#line 17550 "htex.w"
;
-if(pre_q!=null)/*909:*/
-#line 17579 "htex.w"
+if(pre_q!=null)/*908:*/
+#line 17578 "htex.w"
{s= pre_q;link(q)= s;
while(link(s)!=null)s= link(s);
q= s;
}
-/*:909*/
-#line 17552 "htex.w"
+/*:908*/
+#line 17551 "htex.w"
;
link(q)= r;disc_break= true;
}
-/*:906*/
-#line 17528 "htex.w"
+/*:905*/
+#line 17527 "htex.w"
else if((type(q)==math_node)||(type(q)==kern_node))width(q)= 0;
}
else{q= temp_head;
while(link(q)!=null)q= link(q);
}
-/*910:*/
-#line 17585 "htex.w"
+/*909:*/
+#line 17584 "htex.w"
r= new_glue(right_skip);link(r)= link(q);link(q)= r;q= r
-/*:910*/
-#line 17534 "htex.w"
+/*:909*/
+#line 17533 "htex.w"
;
done:
-/*:905*/
-#line 17508 "htex.w"
+/*:904*/
+#line 17507 "htex.w"
;
-/*911:*/
-#line 17592 "htex.w"
+/*910:*/
+#line 17591 "htex.w"
r= link(q);link(q)= null;q= link(temp_head);link(temp_head)= r;
if(left_skip!=zero_glue)
@@ -2286,11 +2282,11 @@ if(left_skip!=zero_glue)
link(r)= q;q= r;
}
-/*:911*/
-#line 17509 "htex.w"
+/*:910*/
+#line 17508 "htex.w"
;
-/*913:*/
-#line 17618 "htex.w"
+/*912:*/
+#line 17617 "htex.w"
if(cur_line> last_special_line)
{cur_width= second_width;cur_indent= second_indent;
@@ -2304,11 +2300,11 @@ cur_indent= mem[par_shape_ptr+2*cur_line-1].sc;
adjust_tail= adjust_head;just_box= hpack(q,cur_width,exactly);
shift_amount(just_box)= cur_indent
-/*:913*/
-#line 17510 "htex.w"
+/*:912*/
+#line 17509 "htex.w"
;
-/*912:*/
-#line 17599 "htex.w"
+/*911:*/
+#line 17598 "htex.w"
if(first_line)
{pointer p= happend_to_vlist(just_box);
@@ -2323,11 +2319,11 @@ if(adjust_head!=adjust_tail)
}
adjust_tail= null
-/*:912*/
-#line 17512 "htex.w"
+/*:911*/
+#line 17511 "htex.w"
;
-/*914:*/
-#line 17638 "htex.w"
+/*913:*/
+#line 17637 "htex.w"
if(cur_line+1!=best_line)
{pen= inter_line_penalty;
@@ -2340,17 +2336,17 @@ link(tail)= r;tail= r;
}
}
-/*:914*/
-#line 17513 "htex.w"
+/*:913*/
+#line 17512 "htex.w"
-/*:904*/
-#line 17452 "htex.w"
+/*:903*/
+#line 17451 "htex.w"
;
incr(cur_line);cur_p= next_break(cur_p);
if(cur_p!=null)if(!post_disc_break)
-/*903:*/
-#line 17481 "htex.w"
+/*902:*/
+#line 17480 "htex.w"
{r= temp_head;
loop{q= link(r);
@@ -2368,8 +2364,8 @@ link(temp_head)= q;
}
}
-/*:903*/
-#line 17455 "htex.w"
+/*:902*/
+#line 17454 "htex.w"
;
}while(!(cur_p==null));
if((cur_line!=best_line)||(link(temp_head)!=null))
@@ -2378,44 +2374,44 @@ confusion("line breaking");
prev_graf= best_line-1;
}
-/*:901*//*919:*/
-#line 17750 "htex.w"
+/*:900*//*918:*/
+#line 17749 "htex.w"
-/*:919*//*967:*/
-#line 18573 "htex.w"
+/*:918*//*966:*/
+#line 18572 "htex.w"
#ifdef INIT
#endif
-/*:967*/
-#line 16205 "htex.w"
+/*:966*/
+#line 16204 "htex.w"
void line_break(int final_widow_penalty,pointer par_ptr)
{scaled x= cur_list.hs_field;
-/*885:*/
-#line 17123 "htex.w"
+/*884:*/
+#line 17122 "htex.w"
bool auto_breaking;
pointer prev_p;
pointer q,r,s;
internal_font_number f;
-/*:885*//*917:*/
-#line 17733 "htex.w"
+/*:884*//*916:*/
+#line 17732 "htex.w"
-/*:917*/
-#line 16209 "htex.w"
+/*:916*/
+#line 16208 "htex.w"
set_line_break_params();
-/*832:*/
-#line 16230 "htex.w"
+/*831:*/
+#line 16229 "htex.w"
link(temp_head)= par_ptr;
-/*:832*//*846:*/
-#line 16442 "htex.w"
+/*:831*//*845:*/
+#line 16441 "htex.w"
no_shrink_error_yet= true;
check_shrinkage(left_skip);check_shrinkage(right_skip);
@@ -2425,8 +2421,8 @@ background[2+stretch_order(q)]= stretch(q);
background[2+stretch_order(r)]= background[2+stretch_order(r)]+stretch(r);
background[6]= shrink(q)+shrink(r);
-/*:846*//*855:*/
-#line 16589 "htex.w"
+/*:845*//*854:*/
+#line 16588 "htex.w"
minimum_demerits= awful_bad;
minimal_demerits[tight_fit]= awful_bad;
@@ -2434,16 +2430,16 @@ minimal_demerits[decent_fit]= awful_bad;
minimal_demerits[loose_fit]= awful_bad;
minimal_demerits[very_loose_fit]= awful_bad;
-/*:855*//*871:*/
-#line 16854 "htex.w"
+/*:854*//*870:*/
+#line 16853 "htex.w"
if(par_shape_ptr==null)
if(hang_indent==0)
{last_special_line= 0;second_width= x;
second_indent= 0;
}
-else/*872:*/
-#line 16865 "htex.w"
+else/*871:*/
+#line 16864 "htex.w"
{last_special_line= abs(hang_after);
if(hang_after<0)
@@ -2459,18 +2455,18 @@ else second_indent= 0;
}
}
-/*:872*/
-#line 16860 "htex.w"
+/*:871*/
+#line 16859 "htex.w"
else QUIT("parshape not yet implemented");
if(looseness==0)easy_line= last_special_line;
else easy_line= max_halfword
-/*:871*/
-#line 16211 "htex.w"
+/*:870*/
+#line 16210 "htex.w"
;
-/*886:*/
-#line 17133 "htex.w"
+/*885:*/
+#line 17132 "htex.w"
threshold= pretolerance;
if(threshold>=0)
@@ -2489,8 +2485,8 @@ final_pass= (emergency_stretch<=0);
}
loop{if(threshold> inf_bad)threshold= inf_bad;
-/*887:*/
-#line 17186 "htex.w"
+/*886:*/
+#line 17185 "htex.w"
q= get_node(active_node_size);
type(q)= unhyphenated;fitness(q)= decent_fit;
@@ -2499,18 +2495,18 @@ line_number(q)= prev_graf+1;total_demerits(q)= 0;link(active)= q;
do_all_six(store_background);
passive= null;printed_node= temp_head;pass_number= 0;
-/*:887*/
-#line 17151 "htex.w"
+/*:886*/
+#line 17150 "htex.w"
;
cur_p= link(temp_head);auto_breaking= true;
prev_p= cur_p;
while((cur_p!=null)&&(link(active)!=last_active))
-/*889:*/
-#line 17221 "htex.w"
+/*888:*/
+#line 17220 "htex.w"
{if(is_char_node(cur_p))
-/*890:*/
-#line 17255 "htex.w"
+/*889:*/
+#line 17254 "htex.w"
{prev_p= cur_p;
do{f= font(cur_p);
@@ -2519,21 +2515,21 @@ cur_p= link(cur_p);
}while(!(!is_char_node(cur_p)));
}
-/*:890*/
-#line 17223 "htex.w"
+/*:889*/
+#line 17222 "htex.w"
;
switch(type(cur_p)){
case hlist_node:case vlist_node:case rule_node:act_width= act_width+width(cur_p);break;
-case whatsit_node:/*1392:*/
-#line 25484 "htex.w"
+case whatsit_node:/*1391:*/
+#line 25472 "htex.w"
adv_past(cur_p)
-/*:1392*/
-#line 17227 "htex.w"
+/*:1391*/
+#line 17226 "htex.w"
break;
-case glue_node:{/*891:*/
-#line 17266 "htex.w"
+case glue_node:{/*890:*/
+#line 17265 "htex.w"
if(auto_breaking)
{if(is_char_node(prev_p))try_break(0,unhyphenated);
@@ -2547,8 +2543,8 @@ active_width[2+stretch_order(q)]=
active_width[2+stretch_order(q)]+stretch(q);
active_width[6]= active_width[6]+shrink(q)
-/*:891*/
-#line 17229 "htex.w"
+/*:890*/
+#line 17228 "htex.w"
;
}break;
case kern_node:if(subtype(cur_p)==explicit)kern_break
@@ -2556,14 +2552,14 @@ else act_width= act_width+width(cur_p);break;
case ligature_node:{f= font(lig_char(cur_p));
act_width= act_width+char_width(f,char_info(f,character(lig_char(cur_p))));
}break;
-case disc_node:/*892:*/
-#line 17282 "htex.w"
+case disc_node:/*891:*/
+#line 17281 "htex.w"
{if(!is_auto_disc(cur_p)||second_pass||final_pass)
{s= pre_break(cur_p);disc_width= 0;
if(s==null)try_break(ex_hyphen_penalty,hyphenated);
-else{do{/*893:*/
-#line 17302 "htex.w"
+else{do{/*892:*/
+#line 17301 "htex.w"
if(is_char_node(s))
{f= font(s);
@@ -2581,8 +2577,8 @@ default:confusion("disc3");
}
-/*:893*/
-#line 17286 "htex.w"
+/*:892*/
+#line 17285 "htex.w"
;
s= link(s);
}while(!(s==null));
@@ -2593,8 +2589,8 @@ act_width= act_width-disc_width;
}
r= replace_count(cur_p);s= link(cur_p);
while(r> 0)
-{/*894:*/
-#line 17319 "htex.w"
+{/*893:*/
+#line 17318 "htex.w"
if(is_char_node(s))
{f= font(s);
@@ -2612,16 +2608,16 @@ default:confusion("disc4");
}
-/*:894*/
-#line 17296 "htex.w"
+/*:893*/
+#line 17295 "htex.w"
;
decr(r);s= link(s);
}
prev_p= cur_p;cur_p= s;goto done5;
}
-/*:892*/
-#line 17237 "htex.w"
+/*:891*/
+#line 17236 "htex.w"
case math_node:{auto_breaking= (subtype(cur_p)==after);kern_break;
}break;
@@ -2633,17 +2629,17 @@ default:confusion("paragraph");
prev_p= cur_p;cur_p= link(cur_p);
done5:;}
-/*:889*/
-#line 17157 "htex.w"
+/*:888*/
+#line 17156 "htex.w"
;
if(cur_p==null)
-/*897:*/
-#line 17356 "htex.w"
+/*896:*/
+#line 17355 "htex.w"
{try_break(eject_penalty,hyphenated);
if(link(active)!=last_active)
-{/*898:*/
-#line 17366 "htex.w"
+{/*897:*/
+#line 17365 "htex.w"
r= link(active);fewest_demerits= awful_bad;
do{if(type(r)!=delta_node)if(total_demerits(r)<fewest_demerits)
@@ -2653,12 +2649,12 @@ r= link(r);
}while(!(r==last_active));
best_line= line_number(best_bet)
-/*:898*/
-#line 17359 "htex.w"
+/*:897*/
+#line 17358 "htex.w"
;
if(looseness==0)goto done;
-/*899:*/
-#line 17380 "htex.w"
+/*898:*/
+#line 17379 "htex.w"
{r= link(active);actual_looseness= 0;
do{if(type(r)!=delta_node)
@@ -2678,18 +2674,18 @@ r= link(r);
best_line= line_number(best_bet);
}
-/*:899*/
-#line 17361 "htex.w"
+/*:898*/
+#line 17360 "htex.w"
;
if((actual_looseness==looseness)||final_pass)goto done;
}
}
-/*:897*/
-#line 17160 "htex.w"
+/*:896*/
+#line 17159 "htex.w"
;
-/*888:*/
-#line 17194 "htex.w"
+/*887:*/
+#line 17193 "htex.w"
q= link(active);
while(q!=last_active)
@@ -2705,8 +2701,8 @@ free_node(q,passive_node_size);
q= cur_p;
}
-/*:888*/
-#line 17161 "htex.w"
+/*:887*/
+#line 17160 "htex.w"
;
if(!second_pass)
{
@@ -2727,19 +2723,19 @@ done:
#ifdef STAT
#endif
-/*:886*/
-#line 16212 "htex.w"
+/*:885*/
+#line 16211 "htex.w"
;
-/*900:*/
-#line 17404 "htex.w"
+/*899:*/
+#line 17403 "htex.w"
post_line_break(final_widow_penalty)
-/*:900*/
-#line 16214 "htex.w"
+/*:899*/
+#line 16213 "htex.w"
;
-/*888:*/
-#line 17194 "htex.w"
+/*887:*/
+#line 17193 "htex.w"
q= link(active);
while(q!=last_active)
@@ -2755,14 +2751,14 @@ free_node(q,passive_node_size);
q= cur_p;
}
-/*:888*/
-#line 16215 "htex.w"
+/*:887*/
+#line 16214 "htex.w"
;
hrestore_param_list();
}
-/*:831*//*993:*/
-#line 19075 "htex.w"
+/*:830*//*992:*/
+#line 19074 "htex.w"
#define ensure_vbox(N)
@@ -2773,8 +2769,8 @@ pointer q;
prev_p= temp_head;link(temp_head)= p;
while(p!=null)
switch(type(p)){
-case hlist_node:case vlist_node:case rule_node:/*994:*/
-#line 19098 "htex.w"
+case hlist_node:case vlist_node:case rule_node:/*993:*/
+#line 19097 "htex.w"
{temp_ptr= new_spec(pointer_def[glue_kind][split_top_skip_no]);
q= new_glue(temp_ptr);glue_ref_count(temp_ptr)= null;link(prev_p)= q;link(q)= p;
@@ -2784,8 +2780,8 @@ else width(temp_ptr)= 0;
p= null;
}
-/*:994*/
-#line 19086 "htex.w"
+/*:993*/
+#line 19085 "htex.w"
break;
case whatsit_node:case mark_node:case ins_node:{prev_p= p;p= link(prev_p);
}break;
@@ -2798,8 +2794,8 @@ default:confusion("pruning");
return link(temp_head);
}
-/*:993*//*995:*/
-#line 19123 "htex.w"
+/*:992*//*994:*/
+#line 19122 "htex.w"
static pointer vert_break(pointer p,scaled h,scaled d)
@@ -2815,25 +2811,25 @@ scaled prev_dp;
small_number t;
prev_p= p;
least_cost= awful_bad;do_all_six(set_height_zero);prev_dp= 0;
-loop{/*998:*/
-#line 19159 "htex.w"
+loop{/*997:*/
+#line 19158 "htex.w"
if(p==null)pi= eject_penalty;
-else/*999:*/
-#line 19174 "htex.w"
+else/*998:*/
+#line 19173 "htex.w"
switch(type(p)){
case hlist_node:case vlist_node:case rule_node:{
cur_height= cur_height+prev_dp+height(p);prev_dp= depth(p);
goto not_found;
}
-case whatsit_node:/*1395:*/
-#line 25493 "htex.w"
+case whatsit_node:/*1394:*/
+#line 25481 "htex.w"
goto not_found
-/*:1395*/
-#line 19180 "htex.w"
+/*:1394*/
+#line 19179 "htex.w"
;
case glue_node:if(precedes_break(prev_p))pi= 0;
else goto update_heights;break;
@@ -2847,15 +2843,15 @@ default:confusion("vertbreak");
}
-/*:999*/
-#line 19163 "htex.w"
+/*:998*/
+#line 19162 "htex.w"
;
-/*1000:*/
-#line 19195 "htex.w"
+/*999:*/
+#line 19194 "htex.w"
if(pi<inf_penalty)
-{/*1001:*/
-#line 19209 "htex.w"
+{/*1000:*/
+#line 19208 "htex.w"
if(cur_height<h)
if((active_height[3]!=0)||(active_height[4]!=0)||
@@ -2864,8 +2860,8 @@ else b= badness(h-cur_height,active_height[2]);
else if(cur_height-h> active_height[6])b= awful_bad;
else b= badness(cur_height-h,active_height[6])
-/*:1001*/
-#line 19197 "htex.w"
+/*:1000*/
+#line 19196 "htex.w"
;
if(b<awful_bad)
if(pi<=eject_penalty)b= pi;
@@ -2878,12 +2874,12 @@ best_height_plus_depth= cur_height+prev_dp;
if((b==awful_bad)||(pi<=eject_penalty))goto done;
}
-/*:1000*/
-#line 19165 "htex.w"
+/*:999*/
+#line 19164 "htex.w"
;
if((type(p)<glue_node)||(type(p)> kern_node))goto not_found;
-update_heights:/*1002:*/
-#line 19221 "htex.w"
+update_heights:/*1001:*/
+#line 19220 "htex.w"
if(type(p)==kern_node)q= p;
else{q= glue_ptr(p);
@@ -2899,24 +2895,24 @@ glue_ptr(p)= r;q= r;
}
cur_height= cur_height+prev_dp+width(q);prev_dp= 0
-/*:1002*/
-#line 19168 "htex.w"
+/*:1001*/
+#line 19167 "htex.w"
;
not_found:if(prev_dp> d)
{cur_height= cur_height+prev_dp-d;
prev_dp= d;
}
-/*:998*/
-#line 19140 "htex.w"
+/*:997*/
+#line 19139 "htex.w"
;
prev_p= p;p= link(prev_p);
}
done:return best_place;
}
-/*:995*//*1013:*/
-#line 19520 "htex.w"
+/*:994*//*1012:*/
+#line 19519 "htex.w"
void freeze_page_specs(small_number s)
{page_contents= s;
@@ -2935,8 +2931,8 @@ end_diagnostic(false);
}
-/*:1013*//*1021:*/
-#line 19618 "htex.w"
+/*:1012*//*1020:*/
+#line 19617 "htex.w"
bool hbuild_page(void)
{
@@ -2946,30 +2942,31 @@ int b,c;
int pi;
if(link(contrib_head)==null)return false;
do{resume:p= link(contrib_head);
-/*1024:*/
-#line 19658 "htex.w"
+/*1023:*/
+#line 19657 "htex.w"
-/*1027:*/
-#line 19687 "htex.w"
+/*1026:*/
+#line 19686 "htex.w"
switch(type(p)){
case hlist_node:case vlist_node:case rule_node:if(page_contents<box_there)
-/*1028:*/
-#line 19710 "htex.w"
+/*1027:*/
+#line 19709 "htex.w"
{if(page_contents==empty)freeze_page_specs(box_there);
else page_contents= box_there;
temp_ptr= new_spec(pointer_def[glue_kind][top_skip_no]);
q= new_glue(temp_ptr);glue_ref_count(temp_ptr)= null;
+{uint64_t h= page_loc[cur_loc];store_map(q,LOC_POS0(h),LOC_OFF(h));}
if(width(temp_ptr)> height(p))width(temp_ptr)= width(temp_ptr)-height(p);
else width(temp_ptr)= 0;
link(q)= p;link(contrib_head)= q;goto resume;
}
-/*:1028*/
-#line 19691 "htex.w"
+/*:1027*/
+#line 19690 "htex.w"
-else/*1029:*/
+else/*1028:*/
#line 19720 "htex.w"
{page_total= page_total+page_depth+height(p);
@@ -2977,16 +2974,16 @@ page_depth= depth(p);
goto contribute;
}
-/*:1029*/
-#line 19693 "htex.w"
+/*:1028*/
+#line 19692 "htex.w"
break;
-case whatsit_node:/*1394:*/
-#line 25490 "htex.w"
+case whatsit_node:/*1393:*/
+#line 25478 "htex.w"
goto contribute
-/*:1394*/
-#line 19695 "htex.w"
+/*:1393*/
+#line 19694 "htex.w"
;
case glue_node:if(page_contents<box_there)goto done1;
else if(precedes_break(page_tail))pi= 0;
@@ -3002,14 +2999,14 @@ default:confusion("page");
}
-/*:1027*/
-#line 19663 "htex.w"
+/*:1026*/
+#line 19662 "htex.w"
;
-/*1032:*/
+/*1031:*/
#line 19748 "htex.w"
if(pi<inf_penalty)
-{/*1034:*/
+{/*1033:*/
#line 19794 "htex.w"
if(page_total<page_goal)
@@ -3019,7 +3016,7 @@ else b= badness(page_goal-page_total,page_so_far[2]);
else if(page_total-page_goal> page_shrink)b= awful_bad;
else b= badness(page_total-page_goal,page_shrink)
-/*:1034*/
+/*:1033*/
#line 19751 "htex.w"
;
if(b<awful_bad)
@@ -3029,7 +3026,7 @@ else c= deplorable;
else c= b;
if(insert_penalties>=10000)c= awful_bad;
#ifdef STAT
-if(tracing_pages> 0)/*1033:*/
+if(tracing_pages> 0)/*1032:*/
#line 19780 "htex.w"
{begin_diagnostic();print_nl("%");
@@ -3045,7 +3042,7 @@ if(c<=least_page_cost)print_char('#');
end_diagnostic(false);
}
-/*:1033*/
+/*:1032*/
#line 19759 "htex.w"
;
#endif
@@ -3068,11 +3065,11 @@ return true;
}
}
-/*:1032*/
-#line 19666 "htex.w"
+/*:1031*/
+#line 19665 "htex.w"
;
if((type(p)<glue_node)||(type(p)> kern_node))goto contribute;
-update_heights:/*1031:*/
+update_heights:/*1030:*/
#line 19733 "htex.w"
if(type(p)==kern_node)q= p;
@@ -3089,10 +3086,10 @@ glue_ptr(p)= r;q= r;
}
page_total= page_total+page_depth+width(q);page_depth= 0
-/*:1031*/
-#line 19669 "htex.w"
+/*:1030*/
+#line 19668 "htex.w"
;
-contribute:/*1030:*/
+contribute:/*1029:*/
#line 19726 "htex.w"
if(page_depth> page_max_depth)
@@ -3101,45 +3098,45 @@ page_total+page_depth-page_max_depth;
page_depth= page_max_depth;
}
-/*:1030*/
-#line 19670 "htex.w"
+/*:1029*/
+#line 19669 "htex.w"
;
-/*1025:*/
-#line 19675 "htex.w"
+/*1024:*/
+#line 19674 "htex.w"
link(page_tail)= p;page_tail= p;
link(contrib_head)= link(p);link(p)= null;goto done
-/*:1025*/
-#line 19671 "htex.w"
+/*:1024*/
+#line 19670 "htex.w"
;
-done1:/*1026:*/
-#line 19679 "htex.w"
+done1:/*1025:*/
+#line 19678 "htex.w"
link(contrib_head)= link(p);link(p)= null;flush_node_list(p)
-/*:1026*/
-#line 19672 "htex.w"
+/*:1025*/
+#line 19671 "htex.w"
;
done:
-/*:1024*/
-#line 19629 "htex.w"
+/*:1023*/
+#line 19628 "htex.w"
;
}while(!(link(contrib_head)==null));
-/*1022:*/
-#line 19637 "htex.w"
+/*1021:*/
+#line 19636 "htex.w"
if(nest_ptr==0)tail= contrib_head;
else contrib_tail= contrib_head
-/*:1022*/
-#line 19631 "htex.w"
+/*:1021*/
+#line 19630 "htex.w"
;
return false;
}
-/*:1021*//*1035:*/
+/*:1020*//*1034:*/
#line 19802 "htex.w"
void happend_insertion(pointer p)
@@ -3151,7 +3148,7 @@ n= subtype(p);r= page_ins_head;
while(n>=subtype(link(r)))r= link(r);
n= qo(n);
if(subtype(r)!=qi(n))
-/*1036:*/
+/*1035:*/
#line 19834 "htex.w"
{q= get_node(page_ins_node_size);link(q)= link(r);link(r)= q;r= q;
@@ -3169,7 +3166,7 @@ if((shrink_order(q)!=normal)&&(shrink(q)!=0))
DBG(DBGTEX,"Infinite glue shrinkage inserted from stream %d",n);
}
-/*:1036*/
+/*:1035*/
#line 19813 "htex.w"
;
if(type(r)==split_up)insert_penalties= insert_penalties+float_cost(p);
@@ -3181,7 +3178,7 @@ else h= x_over_n(height(p),1000)*count(n);
if(((h<=0)||(h<=delta))&&(height(p)+height(r)<=dimen(n)))
{page_goal= page_goal-h;height(r)= height(r)+height(p);
}
-else/*1037:*/
+else/*1036:*/
#line 19860 "htex.w"
{if(count(n)<=0)w= max_dimen;
@@ -3192,7 +3189,7 @@ if(w> dimen(n)-height(r))w= dimen(n)-height(r);
q= vert_break(ins_ptr(p),w,depth(p));
height(r)= height(r)+best_height_plus_depth;
#ifdef STAT
-if(tracing_pages> 0)/*1038:*/
+if(tracing_pages> 0)/*1037:*/
#line 19880 "htex.w"
{begin_diagnostic();print_nl("% split");print_int(n);
@@ -3206,7 +3203,7 @@ else print_char('0');
end_diagnostic(false);
}
-/*:1038*/
+/*:1037*/
#line 19869 "htex.w"
;
#endif
@@ -3219,13 +3216,13 @@ if(q==null)insert_penalties= insert_penalties+eject_penalty;
else if(type(q)==penalty_node)insert_penalties= insert_penalties+penalty(q);
}
-/*:1037*/
+/*:1036*/
#line 19824 "htex.w"
;
}
}
-/*:1035*//*1042:*/
+/*:1034*//*1041:*/
#line 19952 "htex.w"
void hpack_page(void)
@@ -3247,7 +3244,7 @@ if(box(0)!=null)
{flush_node_list(box(0));box(0)= null;}
insert_penalties= 0;
save_split_top_skip= split_top_skip;
-/*1046:*/
+/*1045:*/
#line 20038 "htex.w"
{r= link(page_ins_head);
@@ -3263,13 +3260,13 @@ r= link(r);
}
}
-/*:1046*/
+/*:1045*/
#line 19972 "htex.w"
;
q= hold_head;link(q)= null;prev_p= page_head;p= link(prev_p);
while(p!=best_page_break)
{if(type(p)==ins_node)
-{/*1048:*/
+{/*1047:*/
#line 20064 "htex.w"
{r= link(page_ins_head);
@@ -3277,7 +3274,7 @@ while(subtype(r)!=subtype(p))r= link(r);
if(best_ins_ptr(r)==null)wait= true;
else{wait= false;s= last_ins_ptr(r);link(s)= ins_ptr(p);
if(best_ins_ptr(r)==p)
-/*1049:*/
+/*1048:*/
#line 20080 "htex.w"
{if(type(r)==split_up)
@@ -3301,14 +3298,14 @@ streams[n].p= temp_ptr;
streams[n].t= s;
}
-/*:1049*/
+/*:1048*/
#line 20071 "htex.w"
else{while(link(s)!=null)s= link(s);
last_ins_ptr(r)= s;
}
}
-/*1050:*/
+/*1049:*/
#line 20102 "htex.w"
link(prev_p)= link(p);link(p)= null;
@@ -3320,19 +3317,19 @@ free_node(p,ins_node_size);
}
p= prev_p
-/*:1050*/
+/*:1049*/
#line 20077 "htex.w"
;
}
-/*:1048*/
+/*:1047*/
#line 19977 "htex.w"
;
}
prev_p= p;p= link(prev_p);
}
split_top_skip= save_split_top_skip;
-/*1045:*/
+/*1044:*/
#line 20016 "htex.w"
if(p!=null)
@@ -3350,10 +3347,10 @@ if(q!=hold_head)
link(contrib_head)= link(hold_head);
}
-/*:1045*/
+/*:1044*/
#line 19983 "htex.w"
;
-/*1047:*/
+/*1046:*/
#line 20052 "htex.w"
r= link(page_ins_head);
@@ -3362,12 +3359,12 @@ while(r!=page_ins_head)
}
link(page_ins_head)= page_ins_head
-/*:1047*/
+/*:1046*/
#line 19984 "htex.w"
;
}
-/*:1042*//*1174:*/
+/*:1041*//*1173:*/
#line 21974 "htex.w"
void hdisplay(pointer p,pointer a,bool l)
@@ -3392,13 +3389,13 @@ pop_nest();
store_map(par_ptr,node_pos,0);
line_break(display_widow_penalty,par_ptr);
x= cur_list.hs_field;
-/*1175:*/
+/*1174:*/
#line 22006 "htex.w"
v= shift_amount(just_box)+2*dimen_def[quad_no];w= -max_dimen;
p= list_ptr(just_box);
while(p!=null)
-{/*1176:*/
+{/*1175:*/
#line 22023 "htex.w"
reswitch:if(is_char_node(p))
@@ -3408,18 +3405,18 @@ goto found;
switch(type(p)){
case hlist_node:case vlist_node:case rule_node:{d= width(p);goto found;
}
-case ligature_node:/*666:*/
-#line 13134 "htex.w"
+case ligature_node:/*665:*/
+#line 13133 "htex.w"
{mem[lig_trick]= mem[lig_char(p)];link(lig_trick)= link(p);
p= lig_trick;goto reswitch;
}
-/*:666*/
+/*:665*/
#line 22031 "htex.w"
case kern_node:case math_node:d= width(p);break;
-case glue_node:/*1177:*/
+case glue_node:/*1176:*/
#line 22045 "htex.w"
{q= glue_ptr(p);d= width(q);
@@ -3436,20 +3433,20 @@ v= max_dimen;
if(subtype(p)>=a_leaders)goto found;
}
-/*:1177*/
+/*:1176*/
#line 22034 "htex.w"
break;
-case whatsit_node:/*1391:*/
-#line 25480 "htex.w"
+case whatsit_node:/*1390:*/
+#line 25468 "htex.w"
d= 0
-/*:1391*/
+/*:1390*/
#line 22035 "htex.w"
;break;
default:d= 0;
}
-/*:1176*/
+/*:1175*/
#line 22011 "htex.w"
;
if(v<max_dimen)v= v+d;
@@ -3463,12 +3460,12 @@ not_found:p= link(p);
}
done:
-/*:1175*/
+/*:1174*/
#line 21999 "htex.w"
;
}
-/*1178:*/
+/*1177:*/
#line 22063 "htex.w"
if(par_shape_ptr==null)
@@ -3486,16 +3483,16 @@ else p= par_shape_ptr+2*(prev_graf+2);
s= mem[p-1].sc;l= mem[p].sc;
}
-/*:1178*/
+/*:1177*/
#line 22002 "htex.w"
;
pre_display_size= w;display_width= l;display_indent= s;
}
-/*:1174*//*1229:*/
+/*:1173*//*1228:*/
#line 22730 "htex.w"
-{/*1227:*/
+{/*1226:*/
#line 22713 "htex.w"
pointer b;
@@ -3509,7 +3506,7 @@ small_number g1,g2;
pointer r;
pointer t;
-/*:1227*/
+/*:1226*/
#line 22731 "htex.w"
adjust_tail= adjust_head;b= hpack(p,natural);p= list_ptr(b);
@@ -3521,7 +3518,7 @@ if(a==null)
else{e= width(a);q= e+math_quad;
}
if(w+q> z)
-/*1231:*/
+/*1230:*/
#line 22769 "htex.w"
{if((e!=0)&&((w-total_shrink[normal]+q<=z)||
@@ -3539,10 +3536,10 @@ b= hpack(p,z,exactly);
w= width(b);
}
-/*:1231*/
+/*:1230*/
#line 22742 "htex.w"
;
-/*1232:*/
+/*1231:*/
#line 22793 "htex.w"
d= half(z-w);
@@ -3551,10 +3548,10 @@ if((e> 0)&&(d<2*e))
if(p!=null)if(!is_char_node(p))if(type(p)==glue_node)d= 0;
}
-/*:1232*/
+/*:1231*/
#line 22744 "htex.w"
;
-/*1233:*/
+/*1232:*/
#line 22806 "htex.w"
tail_append(new_penalty(pre_display_penalty));
@@ -3571,10 +3568,10 @@ tail_append(new_penalty(inf_penalty));store_map(tail,node_pos,offset);
}
else{tail_append(new_glue(pointer_def[glue_kind][g1]));store_map(tail,node_pos,offset);}
-/*:1233*/
+/*:1232*/
#line 22745 "htex.w"
;
-/*1234:*/
+/*1233:*/
#line 22821 "htex.w"
if(e!=0)
@@ -3588,10 +3585,10 @@ b= hpack(b,natural);
}
shift_amount(b)= s+d;append_to_vlist(b,offset)
-/*:1234*/
+/*:1233*/
#line 22746 "htex.w"
;
-/*1235:*/
+/*1234:*/
#line 22833 "htex.w"
if((a!=null)&&(e==0)&&!l)
@@ -3608,7 +3605,7 @@ offset= (hpos-hstart)+1-node_pos;
store_map(tail,node_pos,offset);
if(g2> 0){tail_append(new_glue(pointer_def[glue_kind][g2]));store_map(tail,node_pos,offset);}
-/*:1235*/
+/*:1234*/
#line 22747 "htex.w"
;
prev_graf= prev_graf+3;
@@ -3617,4 +3614,4 @@ push_nest();mode= hmode;
}
}
-/*:1229*/
+/*:1228*/
diff --git a/Build/source/texk/web2c/hitexdir/hintview/src/htex.h b/Build/source/texk/web2c/hitexdir/hintview/src/htex.h
index fb7a9a24427..9beef681ddd 100644
--- a/Build/source/texk/web2c/hitexdir/hintview/src/htex.h
+++ b/Build/source/texk/web2c/hitexdir/hintview/src/htex.h
@@ -1,5 +1,5 @@
-/*1411:*/
-#line 25703 "htex.w"
+/*1410:*/
+#line 25691 "htex.w"
#define banner "This is TeX, Version 3.141592653 (HINT)" \
@@ -325,7 +325,7 @@ else decr(glue_ref_count(A) ) ; \
#define add_token_ref(A) incr(token_ref_count(A) )
#define add_glue_ref(A) incr(glue_ref_count(A) )
-#define add_xdimen_ref(A) incr(xdimen_ref_count(A) ) \
+#define add_xdimen_ref(A) if(A!=null) incr(xdimen_ref_count(A) ) \
#define escape 0 \
@@ -1589,21 +1589,21 @@ str_pool[k+2]= si(qo(w.b2) ) ;str_pool[k+3]= si(qo(w.b3) ) \
#define open_ext(A) link(A+2) \
#define hitex_ext language_node+1
-#define par_node hitex_ext
-#define par_node_size 3
-#define par_type(A) type(A+1)
+#define param_node hitex_ext
+#define param_node_size 3
+#define param_type(A) type(A+1)
#define int_type 0
#define dimen_type 1
#define glue_type 2
-#define par_number(A) subtype(A+1)
-#define par_value(A) mem[A+2] \
+#define param_no(A) subtype(A+1)
+#define param_value(A) mem[A+2] \
-#define graf_node hitex_ext+1
-#define graf_node_size 5
-#define graf_penalty(A) mem[A+1].i
-#define graf_extent(A) link(A+3)
-#define graf_params(A) info(A+4)
-#define graf_list(A) link(A+4) \
+#define par_node hitex_ext+1
+#define par_node_size 5
+#define par_penalty(A) mem[A+1].i
+#define par_extent(A) link(A+3)
+#define par_params(A) info(A+4)
+#define par_list(A) link(A+4) \
#define disp_node hitex_ext+2
#define disp_node_size 3
@@ -1618,18 +1618,14 @@ str_pool[k+2]= si(qo(w.b2) ) ;str_pool[k+3]= si(qo(w.b3) ) \
#define baseline_node_no(A) mem[A+1].i \
#define image_node hitex_ext+4
-#define image_node_size 9
-#define image_width(A) width(A)
-#define image_height(A) height(A)
-#define image_depth(A) depth(A)
-#define image_no(A) mem[A+4].i
-#define image_stretch(A) mem[A+5].sc
-#define image_shrink(A) mem[A+6].sc
-#define image_stretch_order(A) stretch_order(A+7)
-#define image_shrink_order(A) shrink_order(A+7)
-#define image_name(A) link(A+7)
-#define image_area(A) info(A+8)
-#define image_ext(A) link(A+8) \
+#define image_node_size 6
+#define image_width(A) mem[A+1].sc
+#define image_height(A) mem[A+2].sc
+#define image_no(A) link(A+3)
+#define image_name(A) info(A+3)
+#define image_area(A) info(A+4)
+#define image_ext(A) link(A+4)
+#define image_alt(A) link(A+5) \
#define hpack_node hitex_ext+5
#define vpack_node hitex_ext+6
@@ -1728,7 +1724,7 @@ str_pool[k+2]= si(qo(w.b2) ) ;str_pool[k+3]= si(qo(w.b3) ) \
#define end_write_token cs_token_flag+end_write \
-#line 25704 "htex.w"
+#line 25692 "htex.w"
enum{/*11:*/
#line 362 "htex.w"
@@ -1772,7 +1768,7 @@ file_name_size= 1024,
empty_string= 256
/*:11*/
-#line 25705 "htex.w"
+#line 25693 "htex.w"
};
/*18:*/
#line 502 "htex.w"
@@ -1793,14 +1789,14 @@ typedef int32_t pool_pointer;
typedef int16_t str_number;
typedef uint8_t packed_ASCII_code;
-/*:38*//*105:*/
+/*:38*//*104:*/
#line 2194 "htex.w"
typedef int scaled;
typedef int32_t nonnegative_integer;
typedef int8_t small_number;
-/*:105*//*114:*/
+/*:104*//*113:*/
#line 2405 "htex.w"
#if __SIZEOF_FLOAT__==4
@@ -1810,7 +1806,7 @@ typedef float float32_t;
#endif
typedef float glue_ratio;
-/*:114*//*118:*/
+/*:113*//*117:*/
#line 2514 "htex.w"
typedef uint8_t quarterword;
@@ -1838,13 +1834,13 @@ four_quarters qqqq;
};}memory_word;
typedef struct{FILE*f;memory_word d;}word_file;
-/*:118*//*156:*/
+/*:117*//*155:*/
#line 3245 "htex.w"
typedef int8_t glue_ord;
-/*:156*//*222:*/
-#line 4409 "htex.w"
+/*:155*//*221:*/
+#line 4408 "htex.w"
typedef struct{int16_t mode_field;
pointer head_field,tail_field;
@@ -1859,42 +1855,42 @@ uint32_t np_field;
memory_word aux_field;
}list_state_record;
-/*:222*//*280:*/
-#line 5998 "htex.w"
+/*:221*//*279:*/
+#line 5997 "htex.w"
typedef int8_t group_code;
-/*:280*//*311:*/
-#line 6577 "htex.w"
+/*:279*//*310:*/
+#line 6576 "htex.w"
typedef struct{
quarterword state_field,index_field;
halfword start_field,loc_field,limit_field,name_field;
}in_state_record;
-/*:311*//*559:*/
-#line 10859 "htex.w"
+/*:310*//*558:*/
+#line 10858 "htex.w"
typedef uint8_t internal_font_number;
typedef uint16_t font_index;
-/*:559*//*606:*/
-#line 12051 "htex.w"
+/*:558*//*605:*/
+#line 12050 "htex.w"
typedef int8_t dvi_index;
-/*:606*//*945:*/
-#line 18317 "htex.w"
+/*:605*//*944:*/
+#line 18316 "htex.w"
typedef uint16_t trie_pointer;
-/*:945*//*950:*/
-#line 18386 "htex.w"
+/*:944*//*949:*/
+#line 18385 "htex.w"
typedef int16_t hyph_pointer;
-/*:950*/
-#line 25706 "htex.w"
+/*:949*/
+#line 25694 "htex.w"
extern void list_init(void);
extern void hpack_page(void);
@@ -1949,4 +1945,4 @@ extern int nest_ptr;
extern void pop_nest(void);
extern void push_nest(void);
extern void delete_glue_ref(pointer p);
-void line_break(int final_widow_penalty,pointer par_ptr);/*:1411*/
+void line_break(int final_widow_penalty,pointer par_ptr);/*:1410*/
diff --git a/Build/source/texk/web2c/hitexdir/hintview/src/rendernative.h b/Build/source/texk/web2c/hitexdir/hintview/src/rendernative.h
index 211aa545227..d8be265d7b3 100644
--- a/Build/source/texk/web2c/hitexdir/hintview/src/rendernative.h
+++ b/Build/source/texk/web2c/hitexdir/hintview/src/rendernative.h
@@ -1,51 +1,51 @@
/*377:*/
-#line 7642 "hint.w"
+#line 7637 "hint.w"
#ifndef _RENDERNATIVE_H
#define _RENDERNATIVE_H
/*329:*/
-#line 6568 "hint.w"
+#line 6563 "hint.w"
extern void nativeInit(void);
extern void nativeClear(void);
/*:329*//*330:*/
-#line 6575 "hint.w"
+#line 6570 "hint.w"
extern void nativeSetSize(int px_h,int px_v,double xdpi,double ydpi);
/*:330*//*331:*/
-#line 6580 "hint.w"
+#line 6575 "hint.w"
extern void nativeSetDark(int dark);
/*:331*//*332:*/
-#line 6585 "hint.w"
+#line 6580 "hint.w"
extern void nativeBlank(void);
/*:332*//*333:*/
-#line 6595 "hint.w"
+#line 6590 "hint.w"
typedef struct gcache_s*gcache_s_ptr;
extern void nativeGlyph(double x,double dx,double y,double dy,double w,double h,struct gcache_s*g,uint8_t s);
/*:333*//*334:*/
-#line 6606 "hint.w"
+#line 6601 "hint.w"
void nativeRule(double x,double y,double w,double h);
/*:334*//*335:*/
-#line 6612 "hint.w"
+#line 6607 "hint.w"
void nativeImage(double x,double y,double w,double h,unsigned char*istart,unsigned char*iend);
/*:335*//*336:*/
-#line 6618 "hint.w"
+#line 6613 "hint.w"
extern void nativeSetPK(struct gcache_s*g);
extern void nativeSetFreeType(struct gcache_s*g);
/*:336*//*337:*/
-#line 6625 "hint.w"
+#line 6620 "hint.w"
void nativeFreeGlyph(struct gcache_s*g);
/*:337*/
-#line 7646 "hint.w"
+#line 7641 "hint.w"
#endif
diff --git a/Build/source/texk/web2c/hitexdir/hintview/src/tables.c b/Build/source/texk/web2c/hitexdir/hintview/src/tables.c
index ceec250aae4..2680d20dca9 100644
--- a/Build/source/texk/web2c/hitexdir/hintview/src/tables.c
+++ b/Build/source/texk/web2c/hitexdir/hintview/src/tables.c
@@ -54,7 +54,7 @@ signed char hnode_size[0x100]= {
3,0,-4*1+0,-4*1+1,3,0,-4*2+0,-4*2+1, /* disc */
3,2,2,2,2,2,2,2, /* language */
3,6,6,10,6,10,10,14, /* rule */
-3,0,0,0,4,12,12,20, /* image */
+3,-4*11+0,-4*11+0,-4*11+0,-4*9+0,-4*8+1,-4*8+1,-4*7+2, /* image */
3,-4*1+0,-4*1+0,-4*1+0,0,-4*1+1,-4*1+1,-4*1+1, /* leaders */
3,6,-4*1+0,-4*5+0,-4*1+0,-4*5+0,-4*1+1,-4*5+1, /* baseline */
-4*9+0,-4*13+0,-4*13+0,-4*17+0,-4*14+0,-4*18+0,-4*18+0,-4*22+0, /* hbox */
diff --git a/Build/source/texk/web2c/hitexdir/hiparser.c b/Build/source/texk/web2c/hitexdir/hiparser.c
index ff35480a9af..86def04ef44 100644
--- a/Build/source/texk/web2c/hitexdir/hiparser.c
+++ b/Build/source/texk/web2c/hitexdir/hiparser.c
@@ -69,7 +69,7 @@
/* First part of user prologue. */
#line 2 "parser.y"
- #line 10316 "format.w"
+ #line 10766 "format.w"
#include "hibasetypes.h"
#include <string.h>
@@ -79,9 +79,9 @@
#include "hiput.h"
extern char**hfont_name;
- /*358:*/
+ /*366:*/
uint32_t definition_bits[0x100/32][32]= {
- #line 7628 "format.w"
+ #line 8067 "format.w"
{0}};
#define SET_DBIT(N,K) ((N)>0xFF?1:(definition_bits[N/32][K] |= (1<<((N)&(32-1)))))
@@ -91,52 +91,52 @@ uint32_t definition_bits[0x100/32][32]= {
RNG("Definition",(D).n,max_fixed[(D).k]+1,max_ref[(D).k]);
#define REF(K,N) REF_RNG(K,N);if(!GET_DBIT(N,K)) \
QUIT("Reference %d to %s before definition",(N),definition_name[K])
- /*:358*/ /*362:*/
+ /*:366*/ /*370:*/
#define DEF_REF(D,K,M,N) DEF(D,K,M);\
if ((int)(M)>max_default[K]) QUIT("Defining non default reference %d for %s",M,definition_name[K]); \
if ((int)(N)>max_fixed[K]) QUIT("Defining reference %d for %s by non fixed reference %d",M,definition_name[K],N);
- /*:362*/
+ /*:370*/
extern void hset_entry(Entry*e,uint16_t i,uint32_t size,
uint32_t xsize,char*file_name);
- /*425:*/
+ /*433:*/
#ifdef DEBUG
#define YYDEBUG 1
extern int yydebug;
#else
#define YYDEBUG 0
#endif
- /*:425*/
+ /*:433*/
extern int yylex(void);
- /*354:*/
+ /*362:*/
void hset_max(Kind k,int n)
{
- #line 7471 "format.w"
+ #line 7910 "format.w"
DBG(DBGDEF,"Setting max %s to %d\n",definition_name[k],n);
RNG("Maximum",n,max_fixed[k]+1,MAX_REF(k));
if(n>max_ref[k])
max_ref[k]= n;
}
- /*:354*/ /*365:*/
+ /*:362*/ /*373:*/
void check_param_def(Ref*df)
{
- #line 7777 "format.w"
+ #line 8216 "format.w"
if(df->k!=int_kind&&df->k!=dimen_kind&&df->k!=glue_kind)
QUIT("Kind %s not allowed in parameter list",definition_name[df->k]);
if(df->n<=max_fixed[df->k]||max_default[df->k]<df->n)
QUIT("Parameter %d for %s not allowed in parameter list",df->n,definition_name[df->k]);
}
- /*:365*/ /*424:*/
+ /*:373*/ /*432:*/
extern int yylineno;
int yyerror(const char*msg)
{
- #line 8902 "format.w"
+ #line 9341 "format.w"
QUIT(" in line %d %s",yylineno,msg);
return 0;
}
- /*:424*/
+ /*:432*/
@@ -234,132 +234,137 @@ enum yysymbol_kind_t
YYSYMBOL_TABLE = 63, /* "table" */
YYSYMBOL_ITEM = 64, /* "item" */
YYSYMBOL_IMAGE = 65, /* "image" */
- YYSYMBOL_LABEL = 66, /* "label" */
- YYSYMBOL_BOT = 67, /* "bot" */
- YYSYMBOL_MID = 68, /* "mid" */
- YYSYMBOL_LINK = 69, /* "link" */
- YYSYMBOL_OUTLINE = 70, /* "outline" */
- YYSYMBOL_STREAM = 71, /* "stream" */
- YYSYMBOL_STREAMDEF = 72, /* "stream (definition)" */
- YYSYMBOL_FIRST = 73, /* "first" */
- YYSYMBOL_LAST = 74, /* "last" */
- YYSYMBOL_TOP = 75, /* "top" */
- YYSYMBOL_NOREFERENCE = 76, /* "*" */
- YYSYMBOL_PAGE = 77, /* "page" */
- YYSYMBOL_RANGE = 78, /* "range" */
- YYSYMBOL_DIRECTORY = 79, /* "directory" */
- YYSYMBOL_SECTION = 80, /* "entry" */
- YYSYMBOL_DEFINITIONS = 81, /* "definitions" */
- YYSYMBOL_MAX = 82, /* "max" */
- YYSYMBOL_PARAM = 83, /* "param" */
- YYSYMBOL_FONT = 84, /* "font" */
- YYSYMBOL_CONTENT = 85, /* "content" */
- YYSYMBOL_YYACCEPT = 86, /* $accept */
- YYSYMBOL_glyph = 87, /* glyph */
- YYSYMBOL_content_node = 88, /* content_node */
- YYSYMBOL_start = 89, /* start */
- YYSYMBOL_integer = 90, /* integer */
- YYSYMBOL_string = 91, /* string */
- YYSYMBOL_number = 92, /* number */
- YYSYMBOL_dimension = 93, /* dimension */
- YYSYMBOL_xdimen = 94, /* xdimen */
- YYSYMBOL_xdimen_node = 95, /* xdimen_node */
- YYSYMBOL_order = 96, /* order */
- YYSYMBOL_stretch = 97, /* stretch */
- YYSYMBOL_penalty = 98, /* penalty */
- YYSYMBOL_rule_dimension = 99, /* rule_dimension */
- YYSYMBOL_rule = 100, /* rule */
- YYSYMBOL_rule_node = 101, /* rule_node */
- YYSYMBOL_explicit = 102, /* explicit */
- YYSYMBOL_kern = 103, /* kern */
- YYSYMBOL_plus = 104, /* plus */
- YYSYMBOL_minus = 105, /* minus */
- YYSYMBOL_glue = 106, /* glue */
- YYSYMBOL_glue_node = 107, /* glue_node */
- YYSYMBOL_position = 108, /* position */
- YYSYMBOL_content_list = 109, /* content_list */
- YYSYMBOL_estimate = 110, /* estimate */
- YYSYMBOL_list = 111, /* list */
- YYSYMBOL_112_1 = 112, /* $@1 */
- YYSYMBOL_text = 113, /* text */
- YYSYMBOL_txt = 114, /* txt */
- YYSYMBOL_115_2 = 115, /* $@2 */
- YYSYMBOL_box_dimen = 116, /* box_dimen */
- YYSYMBOL_box_shift = 117, /* box_shift */
- YYSYMBOL_box_glue_set = 118, /* box_glue_set */
- YYSYMBOL_box = 119, /* box */
- YYSYMBOL_hbox_node = 120, /* hbox_node */
- YYSYMBOL_vbox_node = 121, /* vbox_node */
- YYSYMBOL_box_flex = 122, /* box_flex */
- YYSYMBOL_xbox = 123, /* xbox */
- YYSYMBOL_box_goal = 124, /* box_goal */
- YYSYMBOL_hpack = 125, /* hpack */
- YYSYMBOL_vpack = 126, /* vpack */
- YYSYMBOL_127_3 = 127, /* $@3 */
- YYSYMBOL_vxbox_node = 128, /* vxbox_node */
- YYSYMBOL_hxbox_node = 129, /* hxbox_node */
- YYSYMBOL_ltype = 130, /* ltype */
- YYSYMBOL_leaders = 131, /* leaders */
- YYSYMBOL_baseline = 132, /* baseline */
- YYSYMBOL_133_4 = 133, /* $@4 */
- YYSYMBOL_cc_list = 134, /* cc_list */
- YYSYMBOL_lig_cc = 135, /* lig_cc */
- YYSYMBOL_ref = 136, /* ref */
- YYSYMBOL_ligature = 137, /* ligature */
- YYSYMBOL_138_5 = 138, /* $@5 */
- YYSYMBOL_replace_count = 139, /* replace_count */
- YYSYMBOL_disc = 140, /* disc */
- YYSYMBOL_disc_node = 141, /* disc_node */
- YYSYMBOL_par_dimen = 142, /* par_dimen */
- YYSYMBOL_par = 143, /* par */
- YYSYMBOL_144_6 = 144, /* $@6 */
- YYSYMBOL_math = 145, /* math */
- YYSYMBOL_on_off = 146, /* on_off */
- YYSYMBOL_span_count = 147, /* span_count */
- YYSYMBOL_table = 148, /* table */
- YYSYMBOL_image_dimen = 149, /* image_dimen */
- YYSYMBOL_image = 150, /* image */
- YYSYMBOL_max_value = 151, /* max_value */
- YYSYMBOL_placement = 152, /* placement */
- YYSYMBOL_def_node = 153, /* def_node */
- YYSYMBOL_stream_link = 154, /* stream_link */
- YYSYMBOL_stream_split = 155, /* stream_split */
- YYSYMBOL_stream_info = 156, /* stream_info */
- YYSYMBOL_157_7 = 157, /* $@7 */
- YYSYMBOL_stream_type = 158, /* stream_type */
- YYSYMBOL_stream_def_node = 159, /* stream_def_node */
- YYSYMBOL_stream_ins_node = 160, /* stream_ins_node */
- YYSYMBOL_stream = 161, /* stream */
- YYSYMBOL_page_priority = 162, /* page_priority */
- YYSYMBOL_stream_def_list = 163, /* stream_def_list */
- YYSYMBOL_page = 164, /* page */
- YYSYMBOL_165_8 = 165, /* $@8 */
- YYSYMBOL_166_9 = 166, /* $@9 */
- YYSYMBOL_hint = 167, /* hint */
- YYSYMBOL_directory_section = 168, /* directory_section */
- YYSYMBOL_169_10 = 169, /* $@10 */
- YYSYMBOL_entry_list = 170, /* entry_list */
- YYSYMBOL_entry = 171, /* entry */
- YYSYMBOL_definition_section = 172, /* definition_section */
- YYSYMBOL_173_11 = 173, /* $@11 */
- YYSYMBOL_definition_list = 174, /* definition_list */
- YYSYMBOL_max_definitions = 175, /* max_definitions */
- YYSYMBOL_max_list = 176, /* max_list */
- YYSYMBOL_def_list = 177, /* def_list */
- YYSYMBOL_parameters = 178, /* parameters */
- YYSYMBOL_empty_param_list = 179, /* empty_param_list */
- YYSYMBOL_non_empty_param_list = 180, /* non_empty_param_list */
- YYSYMBOL_181_12 = 181, /* $@12 */
- YYSYMBOL_font = 182, /* font */
- YYSYMBOL_font_head = 183, /* font_head */
- YYSYMBOL_font_param_list = 184, /* font_param_list */
- YYSYMBOL_font_param = 185, /* font_param */
- YYSYMBOL_fref = 186, /* fref */
- YYSYMBOL_xdimen_ref = 187, /* xdimen_ref */
- YYSYMBOL_param_ref = 188, /* param_ref */
- YYSYMBOL_stream_ref = 189, /* stream_ref */
- YYSYMBOL_content_section = 190, /* content_section */
- YYSYMBOL_191_13 = 191 /* $@13 */
+ YYSYMBOL_WIDTH = 66, /* "width" */
+ YYSYMBOL_HEIGHT = 67, /* "height" */
+ YYSYMBOL_LABEL = 68, /* "label" */
+ YYSYMBOL_BOT = 69, /* "bot" */
+ YYSYMBOL_MID = 70, /* "mid" */
+ YYSYMBOL_LINK = 71, /* "link" */
+ YYSYMBOL_OUTLINE = 72, /* "outline" */
+ YYSYMBOL_STREAM = 73, /* "stream" */
+ YYSYMBOL_STREAMDEF = 74, /* "stream (definition)" */
+ YYSYMBOL_FIRST = 75, /* "first" */
+ YYSYMBOL_LAST = 76, /* "last" */
+ YYSYMBOL_TOP = 77, /* "top" */
+ YYSYMBOL_NOREFERENCE = 78, /* "*" */
+ YYSYMBOL_PAGE = 79, /* "page" */
+ YYSYMBOL_RANGE = 80, /* "range" */
+ YYSYMBOL_DIRECTORY = 81, /* "directory" */
+ YYSYMBOL_SECTION = 82, /* "entry" */
+ YYSYMBOL_DEFINITIONS = 83, /* "definitions" */
+ YYSYMBOL_MAX = 84, /* "max" */
+ YYSYMBOL_PARAM = 85, /* "param" */
+ YYSYMBOL_FONT = 86, /* "font" */
+ YYSYMBOL_CONTENT = 87, /* "content" */
+ YYSYMBOL_YYACCEPT = 88, /* $accept */
+ YYSYMBOL_glyph = 89, /* glyph */
+ YYSYMBOL_content_node = 90, /* content_node */
+ YYSYMBOL_start = 91, /* start */
+ YYSYMBOL_integer = 92, /* integer */
+ YYSYMBOL_string = 93, /* string */
+ YYSYMBOL_number = 94, /* number */
+ YYSYMBOL_dimension = 95, /* dimension */
+ YYSYMBOL_xdimen = 96, /* xdimen */
+ YYSYMBOL_xdimen_node = 97, /* xdimen_node */
+ YYSYMBOL_order = 98, /* order */
+ YYSYMBOL_stretch = 99, /* stretch */
+ YYSYMBOL_penalty = 100, /* penalty */
+ YYSYMBOL_rule_dimension = 101, /* rule_dimension */
+ YYSYMBOL_rule = 102, /* rule */
+ YYSYMBOL_rule_node = 103, /* rule_node */
+ YYSYMBOL_explicit = 104, /* explicit */
+ YYSYMBOL_kern = 105, /* kern */
+ YYSYMBOL_plus = 106, /* plus */
+ YYSYMBOL_minus = 107, /* minus */
+ YYSYMBOL_glue = 108, /* glue */
+ YYSYMBOL_glue_node = 109, /* glue_node */
+ YYSYMBOL_position = 110, /* position */
+ YYSYMBOL_content_list = 111, /* content_list */
+ YYSYMBOL_estimate = 112, /* estimate */
+ YYSYMBOL_list = 113, /* list */
+ YYSYMBOL_114_1 = 114, /* $@1 */
+ YYSYMBOL_text = 115, /* text */
+ YYSYMBOL_txt = 116, /* txt */
+ YYSYMBOL_117_2 = 117, /* $@2 */
+ YYSYMBOL_box_dimen = 118, /* box_dimen */
+ YYSYMBOL_box_shift = 119, /* box_shift */
+ YYSYMBOL_box_glue_set = 120, /* box_glue_set */
+ YYSYMBOL_box = 121, /* box */
+ YYSYMBOL_hbox_node = 122, /* hbox_node */
+ YYSYMBOL_vbox_node = 123, /* vbox_node */
+ YYSYMBOL_box_flex = 124, /* box_flex */
+ YYSYMBOL_xbox = 125, /* xbox */
+ YYSYMBOL_box_goal = 126, /* box_goal */
+ YYSYMBOL_hpack = 127, /* hpack */
+ YYSYMBOL_vpack = 128, /* vpack */
+ YYSYMBOL_129_3 = 129, /* $@3 */
+ YYSYMBOL_vxbox_node = 130, /* vxbox_node */
+ YYSYMBOL_hxbox_node = 131, /* hxbox_node */
+ YYSYMBOL_ltype = 132, /* ltype */
+ YYSYMBOL_leaders = 133, /* leaders */
+ YYSYMBOL_baseline = 134, /* baseline */
+ YYSYMBOL_135_4 = 135, /* $@4 */
+ YYSYMBOL_cc_list = 136, /* cc_list */
+ YYSYMBOL_lig_cc = 137, /* lig_cc */
+ YYSYMBOL_ref = 138, /* ref */
+ YYSYMBOL_ligature = 139, /* ligature */
+ YYSYMBOL_140_5 = 140, /* $@5 */
+ YYSYMBOL_replace_count = 141, /* replace_count */
+ YYSYMBOL_disc = 142, /* disc */
+ YYSYMBOL_disc_node = 143, /* disc_node */
+ YYSYMBOL_par_dimen = 144, /* par_dimen */
+ YYSYMBOL_par = 145, /* par */
+ YYSYMBOL_146_6 = 146, /* $@6 */
+ YYSYMBOL_math = 147, /* math */
+ YYSYMBOL_on_off = 148, /* on_off */
+ YYSYMBOL_span_count = 149, /* span_count */
+ YYSYMBOL_table = 150, /* table */
+ YYSYMBOL_image_aspect = 151, /* image_aspect */
+ YYSYMBOL_image_width = 152, /* image_width */
+ YYSYMBOL_image_height = 153, /* image_height */
+ YYSYMBOL_image_spec = 154, /* image_spec */
+ YYSYMBOL_image = 155, /* image */
+ YYSYMBOL_max_value = 156, /* max_value */
+ YYSYMBOL_placement = 157, /* placement */
+ YYSYMBOL_def_node = 158, /* def_node */
+ YYSYMBOL_stream_link = 159, /* stream_link */
+ YYSYMBOL_stream_split = 160, /* stream_split */
+ YYSYMBOL_stream_info = 161, /* stream_info */
+ YYSYMBOL_162_7 = 162, /* $@7 */
+ YYSYMBOL_stream_type = 163, /* stream_type */
+ YYSYMBOL_stream_def_node = 164, /* stream_def_node */
+ YYSYMBOL_stream_ins_node = 165, /* stream_ins_node */
+ YYSYMBOL_stream = 166, /* stream */
+ YYSYMBOL_page_priority = 167, /* page_priority */
+ YYSYMBOL_stream_def_list = 168, /* stream_def_list */
+ YYSYMBOL_page = 169, /* page */
+ YYSYMBOL_170_8 = 170, /* $@8 */
+ YYSYMBOL_171_9 = 171, /* $@9 */
+ YYSYMBOL_hint = 172, /* hint */
+ YYSYMBOL_directory_section = 173, /* directory_section */
+ YYSYMBOL_174_10 = 174, /* $@10 */
+ YYSYMBOL_entry_list = 175, /* entry_list */
+ YYSYMBOL_entry = 176, /* entry */
+ YYSYMBOL_definition_section = 177, /* definition_section */
+ YYSYMBOL_178_11 = 178, /* $@11 */
+ YYSYMBOL_definition_list = 179, /* definition_list */
+ YYSYMBOL_max_definitions = 180, /* max_definitions */
+ YYSYMBOL_max_list = 181, /* max_list */
+ YYSYMBOL_def_list = 182, /* def_list */
+ YYSYMBOL_parameters = 183, /* parameters */
+ YYSYMBOL_empty_param_list = 184, /* empty_param_list */
+ YYSYMBOL_non_empty_param_list = 185, /* non_empty_param_list */
+ YYSYMBOL_186_12 = 186, /* $@12 */
+ YYSYMBOL_font = 187, /* font */
+ YYSYMBOL_font_head = 188, /* font_head */
+ YYSYMBOL_font_param_list = 189, /* font_param_list */
+ YYSYMBOL_font_param = 190, /* font_param */
+ YYSYMBOL_fref = 191, /* fref */
+ YYSYMBOL_xdimen_ref = 192, /* xdimen_ref */
+ YYSYMBOL_param_ref = 193, /* param_ref */
+ YYSYMBOL_stream_ref = 194, /* stream_ref */
+ YYSYMBOL_content_section = 195, /* content_section */
+ YYSYMBOL_196_13 = 196 /* $@13 */
};
typedef enum yysymbol_kind_t yysymbol_kind_t;
@@ -687,19 +692,19 @@ union yyalloc
/* YYFINAL -- State number of the termination state. */
#define YYFINAL 5
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 657
+#define YYLAST 642
/* YYNTOKENS -- Number of terminals. */
-#define YYNTOKENS 86
+#define YYNTOKENS 88
/* YYNNTS -- Number of nonterminals. */
-#define YYNNTS 106
+#define YYNNTS 109
/* YYNRULES -- Number of rules. */
-#define YYNRULES 266
+#define YYNRULES 274
/* YYNSTATES -- Number of states. */
-#define YYNSTATES 566
+#define YYNSTATES 576
/* YYMAXUTOK -- Last valid token kind. */
-#define YYMAXUTOK 340
+#define YYMAXUTOK 342
/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
@@ -747,40 +752,41 @@ static const yytype_int8 yytranslate[] =
55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
- 85
+ 85, 86, 87
};
#if YYDEBUG
/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
static const yytype_int16 yyrline[] =
{
- 0, 264, 264, 267, 270, 274, 274, 278, 282, 282,
- 288, 290, 292, 294, 297, 300, 304, 307, 310, 313,
- 319, 324, 326, 328, 330, 334, 338, 341, 345, 345,
- 348, 354, 357, 359, 361, 364, 367, 371, 373, 376,
- 378, 381, 384, 388, 394, 397, 398, 399, 402, 405,
- 412, 411, 420, 420, 422, 425, 428, 431, 434, 437,
- 440, 443, 443, 448, 452, 455, 459, 462, 465, 470,
- 474, 477, 480, 480, 482, 485, 488, 492, 495, 498,
- 501, 505, 508, 508, 514, 517, 522, 525, 529, 529,
- 531, 533, 535, 537, 540, 543, 546, 549, 553, 553,
- 562, 567, 567, 570, 573, 576, 579, 579, 586, 590,
- 593, 597, 601, 604, 609, 614, 616, 619, 622, 625,
- 628, 628, 633, 636, 640, 644, 647, 650, 653, 656,
- 659, 662, 665, 668, 672, 676, 678, 681, 685, 689,
- 692, 695, 698, 702, 705, 709, 713, 715, 718, 721,
- 725, 732, 734, 736, 738, 741, 746, 751, 761, 763,
- 766, 769, 769, 773, 775, 777, 779, 783, 789, 794,
- 794, 796, 799, 802, 805, 810, 813, 817, 817, 819,
- 821, 819, 828, 831, 835, 837, 837, 840, 840, 841,
- 846, 846, 853, 853, 855, 880, 880, 882, 885, 888,
- 891, 894, 897, 900, 903, 906, 909, 912, 915, 918,
- 921, 924, 927, 930, 936, 939, 942, 945, 948, 951,
- 954, 957, 960, 963, 966, 969, 972, 975, 980, 983,
- 986, 990, 991, 994, 998, 1001, 1001, 1009, 1011, 1016,
- 1016, 1019, 1022, 1025, 1028, 1031, 1034, 1037, 1040, 1044,
- 1048, 1051, 1054, 1060, 1063, 1067, 1071, 1074, 1077, 1080,
- 1083, 1086, 1089, 1092, 1096, 1103, 1103
+ 0, 268, 268, 271, 274, 278, 278, 282, 286, 286,
+ 292, 294, 296, 298, 301, 304, 308, 311, 314, 317,
+ 321, 326, 328, 330, 332, 336, 340, 343, 347, 347,
+ 350, 356, 359, 361, 363, 366, 369, 373, 375, 378,
+ 380, 383, 386, 390, 396, 399, 400, 401, 404, 407,
+ 414, 413, 422, 422, 424, 427, 430, 433, 436, 439,
+ 442, 445, 445, 450, 454, 457, 461, 464, 467, 472,
+ 476, 479, 482, 482, 484, 487, 490, 494, 497, 500,
+ 503, 507, 510, 510, 516, 519, 524, 527, 531, 531,
+ 533, 535, 537, 539, 542, 545, 548, 551, 555, 555,
+ 564, 569, 569, 572, 575, 578, 581, 581, 588, 592,
+ 595, 599, 603, 606, 611, 616, 618, 621, 624, 627,
+ 630, 630, 635, 638, 642, 646, 649, 652, 655, 658,
+ 661, 664, 667, 670, 674, 678, 680, 683, 687, 691,
+ 694, 697, 700, 704, 707, 711, 715, 717, 720, 723,
+ 726, 729, 733, 737, 741, 745, 750, 754, 758, 765,
+ 767, 769, 771, 774, 779, 784, 794, 796, 799, 802,
+ 802, 806, 808, 810, 812, 816, 822, 827, 827, 829,
+ 832, 835, 838, 843, 846, 850, 850, 852, 854, 852,
+ 861, 864, 868, 870, 870, 873, 873, 874, 879, 879,
+ 886, 886, 888, 913, 913, 915, 918, 921, 924, 927,
+ 930, 933, 936, 939, 942, 945, 948, 951, 954, 957,
+ 960, 963, 969, 972, 975, 978, 981, 984, 987, 990,
+ 993, 996, 999, 1002, 1005, 1008, 1013, 1016, 1019, 1023,
+ 1024, 1027, 1031, 1034, 1034, 1042, 1044, 1049, 1049, 1052,
+ 1055, 1058, 1061, 1064, 1067, 1070, 1073, 1077, 1081, 1084,
+ 1087, 1093, 1096, 1100, 1104, 1107, 1110, 1113, 1116, 1119,
+ 1122, 1125, 1129, 1136, 1136
};
#endif
@@ -808,29 +814,30 @@ static const char *const yytname[] =
"\"depth\"", "\"add\"", "\"to\"", "\"leaders\"", "\"align\"",
"\"center\"", "\"expand\"", "\"baseline\"", "\"ligature\"", "\"disc\"",
"\"par\"", "\"math\"", "\"on\"", "\"off\"", "\"adjust\"", "\"table\"",
- "\"item\"", "\"image\"", "\"label\"", "\"bot\"", "\"mid\"", "\"link\"",
- "\"outline\"", "\"stream\"", "\"stream (definition)\"", "\"first\"",
- "\"last\"", "\"top\"", "\"*\"", "\"page\"", "\"range\"", "\"directory\"",
- "\"entry\"", "\"definitions\"", "\"max\"", "\"param\"", "\"font\"",
- "\"content\"", "$accept", "glyph", "content_node", "start", "integer",
- "string", "number", "dimension", "xdimen", "xdimen_node", "order",
- "stretch", "penalty", "rule_dimension", "rule", "rule_node", "explicit",
- "kern", "plus", "minus", "glue", "glue_node", "position", "content_list",
- "estimate", "list", "$@1", "text", "txt", "$@2", "box_dimen",
- "box_shift", "box_glue_set", "box", "hbox_node", "vbox_node", "box_flex",
- "xbox", "box_goal", "hpack", "vpack", "$@3", "vxbox_node", "hxbox_node",
- "ltype", "leaders", "baseline", "$@4", "cc_list", "lig_cc", "ref",
- "ligature", "$@5", "replace_count", "disc", "disc_node", "par_dimen",
- "par", "$@6", "math", "on_off", "span_count", "table", "image_dimen",
- "image", "max_value", "placement", "def_node", "stream_link",
- "stream_split", "stream_info", "$@7", "stream_type", "stream_def_node",
- "stream_ins_node", "stream", "page_priority", "stream_def_list", "page",
- "$@8", "$@9", "hint", "directory_section", "$@10", "entry_list", "entry",
- "definition_section", "$@11", "definition_list", "max_definitions",
- "max_list", "def_list", "parameters", "empty_param_list",
- "non_empty_param_list", "$@12", "font", "font_head", "font_param_list",
- "font_param", "fref", "xdimen_ref", "param_ref", "stream_ref",
- "content_section", "$@13", YY_NULLPTR
+ "\"item\"", "\"image\"", "\"width\"", "\"height\"", "\"label\"",
+ "\"bot\"", "\"mid\"", "\"link\"", "\"outline\"", "\"stream\"",
+ "\"stream (definition)\"", "\"first\"", "\"last\"", "\"top\"", "\"*\"",
+ "\"page\"", "\"range\"", "\"directory\"", "\"entry\"", "\"definitions\"",
+ "\"max\"", "\"param\"", "\"font\"", "\"content\"", "$accept", "glyph",
+ "content_node", "start", "integer", "string", "number", "dimension",
+ "xdimen", "xdimen_node", "order", "stretch", "penalty", "rule_dimension",
+ "rule", "rule_node", "explicit", "kern", "plus", "minus", "glue",
+ "glue_node", "position", "content_list", "estimate", "list", "$@1",
+ "text", "txt", "$@2", "box_dimen", "box_shift", "box_glue_set", "box",
+ "hbox_node", "vbox_node", "box_flex", "xbox", "box_goal", "hpack",
+ "vpack", "$@3", "vxbox_node", "hxbox_node", "ltype", "leaders",
+ "baseline", "$@4", "cc_list", "lig_cc", "ref", "ligature", "$@5",
+ "replace_count", "disc", "disc_node", "par_dimen", "par", "$@6", "math",
+ "on_off", "span_count", "table", "image_aspect", "image_width",
+ "image_height", "image_spec", "image", "max_value", "placement",
+ "def_node", "stream_link", "stream_split", "stream_info", "$@7",
+ "stream_type", "stream_def_node", "stream_ins_node", "stream",
+ "page_priority", "stream_def_list", "page", "$@8", "$@9", "hint",
+ "directory_section", "$@10", "entry_list", "entry", "definition_section",
+ "$@11", "definition_list", "max_definitions", "max_list", "def_list",
+ "parameters", "empty_param_list", "non_empty_param_list", "$@12", "font",
+ "font_head", "font_param_list", "font_param", "fref", "xdimen_ref",
+ "param_ref", "stream_ref", "content_section", "$@13", YY_NULLPTR
};
static const char *
@@ -840,7 +847,7 @@ yysymbol_name (yysymbol_kind_t yysymbol)
}
#endif
-#define YYPACT_NINF (-326)
+#define YYPACT_NINF (-242)
#define yypact_value_is_default(Yyn) \
((Yyn) == YYPACT_NINF)
@@ -854,63 +861,64 @@ yysymbol_name (yysymbol_kind_t yysymbol)
STATE-NUM. */
static const yytype_int16 yypact[] =
{
- 48, -4, 110, 113, 107, -326, 52, 137, -326, -326,
- 74, -326, -326, 153, -326, 211, 85, -326, -326, 94,
- -326, -326, -326, 275, -326, 278, 190, 280, 159, -326,
- 313, -326, 31, -326, -326, 585, -326, -326, -326, -326,
- -326, -326, -326, -326, 223, 467, -326, 203, 234, 234,
- 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
- 234, 234, 240, 248, 116, 219, 253, 140, 210, 229,
- 182, 182, 220, 182, 220, 182, 121, 229, 234, 71,
- 229, 41, 66, 271, 79, 301, 261, 234, 234, -326,
- -326, 268, 270, 279, 284, 286, 288, 294, 297, 315,
- 325, 326, 327, 328, 333, 334, 335, 337, 338, 339,
- 343, 242, -326, 229, 182, 219, 223, 152, 229, 345,
- 182, 234, 210, 348, 223, 350, 223, 82, 251, 323,
- 342, 353, -326, -326, -326, 355, 357, 358, -326, -326,
- -326, -326, 231, -326, 152, 359, 361, -326, 165, 362,
- 182, 341, 372, 373, 182, 220, 375, 377, 182, 264,
- 379, 220, 380, 305, 384, 385, -326, 363, 200, 387,
- 389, -326, 390, 391, 395, 396, 398, 397, 66, 401,
- 234, -326, -326, 404, 234, -326, -326, -326, -326, 405,
- -326, 66, 66, -326, 350, 406, 264, 264, 407, -326,
- 408, 530, 409, 399, 182, 410, 411, 255, -326, 234,
- 80, -326, -326, -326, -326, -326, -326, -326, -326, -326,
- -326, -326, -326, -326, -326, -326, -326, -326, -326, -326,
- -326, -326, 413, 414, 416, 417, 418, 419, 421, 422,
- 423, 427, 429, -326, 430, 432, 433, -326, 435, -326,
- -326, 436, 182, 437, 345, -326, -326, -326, 438, 440,
- 441, -326, -326, -326, -326, -326, -326, -326, -326, -326,
- 152, -326, -326, 234, -326, 442, -326, 302, 182, 420,
- -326, -326, 182, 293, -326, -326, -326, 121, 121, 66,
- -326, 341, -326, 400, -326, -326, 229, -326, -326, -326,
- 345, -326, -326, 345, -326, -326, -326, 176, -326, -326,
- -326, 66, -326, -326, 66, -326, 66, 66, -326, 38,
- 345, 66, 66, 53, 345, 66, -326, -326, -326, 66,
- 66, -326, -326, -326, 445, 182, 341, -326, -326, 446,
- 448, 66, 66, -326, -326, -326, -326, 439, 450, -326,
- 66, 66, -326, -326, -326, -326, -326, -326, -326, -326,
- -326, -326, -326, -326, -326, -326, 452, -326, -326, 451,
- -326, 453, -326, 345, 345, -326, -326, -326, -326, 456,
- -326, 182, -326, 164, -326, 182, -326, -326, 182, 182,
- 66, -326, -326, -326, -326, -326, 420, 121, 182, 458,
- 460, 49, -326, -326, -326, 345, -326, -326, 434, -326,
- 66, 35, -326, 66, -326, 66, -326, -326, 424, -326,
- -326, 345, 66, -326, -326, -326, 324, 66, 66, -326,
- -326, 420, -326, -326, -326, 66, -326, 182, -326, 345,
- 463, -326, 345, -326, 462, 412, -326, 105, -326, -326,
- 454, -326, -326, -326, -326, -326, -326, -326, -326, -326,
- -326, 66, 66, -326, -326, -326, 152, -326, -326, -326,
- -326, -326, 350, -326, -326, -326, 184, -326, -326, -326,
- -326, -326, 466, 39, 345, -326, 182, -326, 210, 234,
- 234, 234, 234, 234, 234, 234, 234, -326, -326, -326,
- 264, 72, 471, -326, -326, -326, -326, -326, -326, -326,
- -326, -326, 399, -326, -326, -326, 39, -326, 66, -326,
- -326, 242, 223, 152, 210, 182, 234, 210, 348, 66,
- -326, -326, -326, -326, 470, 345, 345, 473, 476, 478,
- 182, 480, 481, 482, 483, 484, -326, -326, 489, 345,
- -326, -326, -326, -326, -326, -326, -326, -326, -326, 66,
- -326, 345, 425, -326, 234, 69
+ 55, 10, 108, 129, 135, -242, 81, 170, -242, -242,
+ 104, -242, -242, 191, -242, 209, 113, -242, -242, 140,
+ -242, -242, -242, 216, -242, 227, 220, 238, 177, -242,
+ 59, -242, -2, -242, -242, 568, -242, -242, -242, -242,
+ -242, -242, -242, -242, 280, 391, -242, 252, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 257, 260, 75, 278, 264, 175, 246, 217,
+ 164, 164, 256, 164, 256, 164, 110, 217, 255, 70,
+ 217, 88, 94, 167, 87, 300, 286, 255, 255, -242,
+ -242, 299, 310, 313, 321, 339, 341, 343, 344, 345,
+ 349, 352, 353, 354, 355, 356, 357, 358, 359, 360,
+ 342, 115, -242, 217, 164, 278, 280, 181, 217, 364,
+ 164, 255, 246, 362, 280, 363, 280, 90, 254, 365,
+ 366, 367, -242, -242, -242, 370, 371, 377, -242, -242,
+ -242, -242, 297, -242, 181, 379, 382, -242, 198, 383,
+ 164, 361, 384, 386, 164, 256, 389, 392, 164, 275,
+ 393, 256, 394, 315, 397, 400, -242, 380, 269, 402,
+ 404, -242, 406, 407, 408, 409, 411, 415, 94, 418,
+ 255, -242, -242, 419, 255, -242, -242, -242, -242, 420,
+ -242, 94, 94, -242, 363, 421, 275, 275, 422, -242,
+ 423, 513, 427, 430, 164, 434, 94, 436, 277, -242,
+ 255, 76, -242, -242, -242, -242, -242, -242, -242, -242,
+ -242, -242, -242, -242, -242, -242, -242, -242, -242, -242,
+ -242, -242, -242, 437, 441, 445, 446, 447, 448, 449,
+ 450, 453, 454, 457, -242, 458, 463, 464, -242, 465,
+ -242, -242, 468, 164, 469, 364, -242, -242, -242, 470,
+ 471, 474, -242, -242, -242, -242, -242, -242, -242, -242,
+ -242, 181, -242, -242, 255, -242, 475, -242, 322, 164,
+ 455, -242, -242, 164, 311, -242, -242, -242, 110, 110,
+ 94, -242, 361, -242, 433, -242, -242, 217, -242, -242,
+ -242, 364, -242, -242, 364, -242, -242, -242, 193, -242,
+ -242, -242, 94, -242, -242, 94, -242, 94, 94, -242,
+ 45, 364, 94, 94, 51, 364, 94, -242, -242, -242,
+ 94, 94, -242, -242, -242, 480, -242, 304, -242, -242,
+ -242, 481, 483, 94, 94, -242, -242, -242, -242, 472,
+ 485, -242, 94, 94, -242, -242, -242, -242, -242, -242,
+ -242, -242, -242, -242, -242, -242, -242, -242, 487, -242,
+ -242, 486, -242, 489, -242, 364, 364, -242, -242, -242,
+ -242, 493, -242, 164, -242, 197, -242, 164, -242, -242,
+ 164, 164, 94, -242, -242, -242, -242, -242, 455, 110,
+ 164, 494, 495, 154, -242, -242, -242, 364, -242, -242,
+ 473, -242, 94, 46, -242, 94, -242, 94, -242, -242,
+ 459, -242, -242, 364, 94, -242, -242, -242, 340, 94,
+ 94, -242, 240, 435, -242, -242, -242, 94, -242, 164,
+ -242, 364, 497, -242, 364, -242, 498, 451, -242, 77,
+ -242, -242, 488, -242, -242, -242, -242, -242, -242, -242,
+ -242, -242, -242, 94, 94, -242, -242, -242, 181, -242,
+ -242, -242, -242, -242, 363, -242, -242, -242, 200, -242,
+ -242, -242, 440, -242, 250, -242, -242, 505, 47, 364,
+ -242, 164, -242, 246, 255, 255, 255, 255, 255, 255,
+ 255, 255, -242, -242, -242, 275, 107, 506, -242, -242,
+ -242, -242, -242, -242, -242, -242, -242, 430, 262, -242,
+ -242, -242, -242, -242, -242, 47, -242, 94, -242, -242,
+ 115, 280, 181, 246, 164, 255, 246, 362, 94, -242,
+ -242, -242, -242, -242, 507, 364, 364, 508, 510, 511,
+ 164, 512, 516, 517, 521, 522, -242, -242, 523, 364,
+ -242, -242, -242, -242, -242, -242, -242, -242, -242, 94,
+ -242, 364, 443, -242, 255, 86
};
/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -918,11 +926,11 @@ static const yytype_int16 yypact[] =
means the default is an error. */
static const yytype_int16 yydefact[] =
{
- 0, 0, 0, 0, 0, 1, 0, 0, 185, 190,
- 0, 184, 187, 0, 265, 0, 0, 192, 44, 0,
- 186, 188, 195, 0, 45, 0, 0, 0, 4, 191,
- 0, 193, 4, 266, 46, 0, 32, 72, 73, 88,
- 89, 115, 169, 170, 0, 0, 194, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 0, 0, 193, 198,
+ 0, 192, 195, 0, 273, 0, 0, 200, 44, 0,
+ 194, 196, 203, 0, 45, 0, 0, 0, 4, 199,
+ 0, 201, 4, 274, 46, 0, 32, 72, 73, 88,
+ 89, 115, 177, 178, 0, 0, 202, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 33, 0,
0, 0, 64, 0, 64, 0, 0, 0, 0, 33,
@@ -930,83 +938,84 @@ static const yytype_int16 yydefact[] =
9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 105, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 33, 0, 0, 47, 0, 154, 0, 0,
+ 0, 0, 33, 0, 0, 47, 0, 162, 0, 0,
0, 0, 6, 5, 26, 0, 0, 0, 10, 11,
12, 29, 0, 28, 0, 0, 0, 34, 0, 0,
19, 37, 0, 0, 0, 64, 0, 0, 0, 0,
0, 64, 0, 0, 0, 0, 4, 0, 90, 0,
0, 98, 0, 0, 106, 0, 109, 0, 113, 0,
- 116, 250, 44, 0, 44, 135, 136, 234, 251, 0,
+ 116, 258, 44, 0, 44, 135, 136, 242, 259, 0,
137, 0, 0, 44, 47, 0, 0, 0, 0, 139,
- 0, 47, 0, 0, 147, 0, 0, 0, 252, 44,
- 0, 189, 199, 208, 198, 203, 204, 202, 206, 207,
- 200, 201, 205, 213, 150, 210, 211, 212, 209, 197,
- 196, 44, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 106, 0, 0, 0, 179, 0, 48,
- 44, 0, 0, 0, 0, 152, 153, 151, 0, 0,
- 0, 2, 7, 3, 27, 253, 263, 13, 15, 14,
- 0, 31, 259, 0, 35, 0, 36, 0, 0, 39,
- 42, 256, 0, 66, 70, 71, 65, 0, 0, 0,
- 87, 37, 86, 0, 85, 84, 0, 91, 92, 93,
- 0, 97, 261, 0, 100, 262, 257, 0, 108, 110,
- 258, 112, 114, 120, 0, 124, 0, 0, 134, 47,
- 128, 0, 0, 47, 125, 0, 50, 44, 138, 0,
- 0, 145, 140, 142, 0, 0, 37, 260, 149, 0,
- 0, 0, 0, 168, 164, 165, 166, 0, 0, 163,
- 0, 0, 216, 229, 219, 215, 228, 217, 220, 218,
- 230, 221, 222, 223, 224, 225, 175, 227, 231, 233,
- 226, 0, 214, 0, 237, 155, 182, 183, 30, 0,
- 254, 17, 18, 0, 38, 0, 41, 63, 0, 0,
- 0, 80, 78, 79, 77, 81, 39, 0, 0, 0,
- 0, 0, 94, 95, 96, 0, 103, 104, 0, 111,
- 0, 47, 123, 0, 119, 0, 117, 235, 0, 129,
- 130, 131, 0, 126, 127, 44, 0, 0, 0, 141,
- 146, 39, 156, 174, 171, 0, 173, 0, 161, 0,
- 0, 176, 0, 232, 0, 0, 239, 0, 240, 255,
- 0, 21, 22, 23, 24, 25, 40, 67, 68, 69,
- 74, 0, 0, 82, 43, 264, 0, 99, 101, 121,
- 122, 118, 47, 132, 133, 52, 61, 49, 143, 144,
- 148, 172, 0, 0, 0, 157, 0, 238, 33, 0,
- 0, 0, 0, 0, 0, 0, 0, 16, 76, 75,
- 0, 0, 0, 51, 60, 58, 59, 55, 57, 56,
- 54, 53, 0, 20, 159, 158, 0, 162, 0, 180,
- 249, 0, 0, 0, 33, 0, 0, 33, 0, 0,
- 107, 102, 236, 62, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 83, 160, 0, 0,
- 241, 246, 247, 242, 245, 243, 244, 248, 167, 0,
- 177, 181, 0, 178, 0, 0
+ 0, 47, 0, 0, 147, 0, 0, 0, 0, 260,
+ 44, 0, 197, 207, 216, 206, 211, 212, 210, 214,
+ 215, 208, 209, 213, 221, 158, 218, 219, 220, 217,
+ 205, 204, 44, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 106, 0, 0, 0, 187, 0,
+ 48, 44, 0, 0, 0, 0, 160, 161, 159, 0,
+ 0, 0, 2, 7, 3, 27, 261, 271, 13, 15,
+ 14, 0, 31, 267, 0, 35, 0, 36, 0, 0,
+ 39, 42, 264, 0, 66, 70, 71, 65, 0, 0,
+ 0, 87, 37, 86, 0, 85, 84, 0, 91, 92,
+ 93, 0, 97, 269, 0, 100, 270, 265, 0, 108,
+ 110, 266, 112, 114, 120, 0, 124, 0, 0, 134,
+ 47, 128, 0, 0, 47, 125, 0, 50, 44, 138,
+ 0, 0, 145, 140, 142, 0, 146, 149, 268, 156,
+ 157, 0, 0, 0, 0, 176, 172, 173, 174, 0,
+ 0, 171, 0, 0, 224, 237, 227, 223, 236, 225,
+ 228, 226, 238, 229, 230, 231, 232, 233, 183, 235,
+ 239, 241, 234, 0, 222, 0, 245, 163, 190, 191,
+ 30, 0, 262, 17, 18, 0, 38, 0, 41, 63,
+ 0, 0, 0, 80, 78, 79, 77, 81, 39, 0,
+ 0, 0, 0, 0, 94, 95, 96, 0, 103, 104,
+ 0, 111, 0, 47, 123, 0, 119, 0, 117, 243,
+ 0, 129, 130, 131, 0, 126, 127, 44, 0, 0,
+ 0, 141, 0, 151, 164, 182, 179, 0, 181, 0,
+ 169, 0, 0, 184, 0, 240, 0, 0, 247, 0,
+ 248, 263, 0, 21, 22, 23, 24, 25, 40, 67,
+ 68, 69, 74, 0, 0, 82, 43, 272, 0, 99,
+ 101, 121, 122, 118, 47, 132, 133, 52, 61, 49,
+ 143, 144, 151, 148, 0, 152, 180, 0, 0, 0,
+ 165, 0, 246, 33, 0, 0, 0, 0, 0, 0,
+ 0, 0, 16, 76, 75, 0, 0, 0, 51, 60,
+ 58, 59, 55, 57, 56, 54, 53, 0, 0, 153,
+ 154, 150, 20, 167, 166, 0, 170, 0, 188, 257,
+ 0, 0, 0, 33, 0, 0, 33, 0, 0, 107,
+ 102, 244, 62, 155, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 83, 168, 0, 0,
+ 249, 254, 255, 250, 253, 251, 252, 256, 175, 0,
+ 185, 189, 0, 186, 0, 0
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
{
- -326, -326, -65, -23, 97, -79, -83, -13, -62, -232,
- -326, -191, -27, -118, -94, 195, -67, -26, -228, -325,
- -97, -226, -1, 172, -86, -55, -326, -326, -326, -326,
- 198, -36, -326, 431, -111, 201, -326, 428, -147, -326,
- -326, -326, -326, -326, -326, 381, 386, -326, -326, -326,
- -45, -96, -326, -326, -95, 132, -326, -326, -326, -326,
- 300, -326, -326, -326, -93, -326, -326, 139, -7, -326,
- -326, -326, -326, -50, -326, -326, -326, -326, -326, -326,
- -326, -326, -326, -326, -326, -326, -326, -326, -326, -326,
- -326, -326, 42, -89, -227, -326, -326, -326, -326, -326,
- -290, -222, -92, -326, -326, -326
+ -242, -242, -83, -23, 100, -87, -86, -8, -54, -233,
+ -242, -137, -19, -94, -96, 229, -51, -5, 239, 134,
+ -99, -217, 28, 205, -95, -35, -242, -242, -242, -242,
+ 127, -33, -242, 476, -147, 242, -242, 466, -169, -242,
+ -242, -242, -242, -242, -242, 425, 426, -242, -242, -242,
+ -45, -103, -242, -242, -97, 174, -242, -242, -242, -242,
+ 331, -242, -242, -242, -242, 63, -242, -100, -242, -242,
+ 179, 26, -242, -242, -242, -242, -18, -242, -242, -242,
+ -242, -242, -242, -242, -242, -242, -242, -242, -242, -242,
+ -242, -242, -242, -242, -242, 82, -110, -188, -242, -242,
+ -242, -242, -242, -166, -241, -73, -242, -242, -242
};
/* YYDEFGOTO[NTERM-NUM]. */
static const yytype_int16 yydefgoto[] =
{
- 0, 131, 34, 194, 134, 91, 142, 150, 151, 348,
- 455, 384, 135, 144, 145, 36, 176, 149, 279, 386,
- 152, 168, 187, 25, 327, 195, 425, 476, 511, 512,
- 155, 159, 390, 156, 37, 38, 397, 162, 289, 160,
- 164, 500, 39, 40, 300, 169, 172, 303, 501, 408,
- 520, 175, 307, 178, 179, 41, 182, 183, 410, 189,
- 190, 203, 198, 336, 206, 110, 258, 31, 516, 517,
- 349, 483, 350, 42, 43, 340, 442, 561, 248, 366,
- 536, 2, 3, 12, 15, 21, 7, 13, 23, 17,
- 27, 369, 251, 191, 322, 472, 253, 254, 374, 448,
- 521, 184, 192, 209, 11, 18
+ 0, 131, 34, 194, 134, 91, 142, 150, 151, 350,
+ 457, 386, 135, 144, 145, 36, 176, 149, 280, 388,
+ 152, 168, 187, 25, 328, 195, 427, 478, 516, 517,
+ 155, 159, 392, 156, 37, 38, 399, 162, 290, 160,
+ 164, 505, 39, 40, 301, 169, 172, 304, 506, 410,
+ 529, 175, 308, 178, 179, 41, 182, 183, 412, 189,
+ 190, 203, 198, 337, 433, 485, 206, 207, 110, 259,
+ 31, 525, 526, 351, 488, 352, 42, 43, 342, 444,
+ 571, 249, 368, 546, 2, 3, 12, 15, 21, 7,
+ 13, 23, 17, 27, 371, 252, 191, 323, 474, 254,
+ 255, 376, 450, 530, 184, 192, 210, 11, 18
};
/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
@@ -1014,237 +1023,237 @@ static const yytype_int16 yydefgoto[] =
number is the opposite. If YYTABLE_NINF, syntax error. */
static const yytype_int16 yytable[] =
{
- 30, 148, 35, 113, 114, 115, 116, 117, 118, 119,
- 120, 121, 122, 123, 124, 125, 126, 24, 180, 200,
- 136, 239, 146, 238, 153, 244, 270, 245, 373, 202,
- 246, 170, 173, 174, 177, 181, 188, 237, 163, 250,
- 205, 249, 208, 210, 249, 247, 112, 252, 112, 329,
- 330, 1, 234, 167, 143, 391, 393, 154, 154, 249,
- 154, 201, 154, 396, 171, 392, 394, 277, 233, 166,
- 236, 460, 166, 240, 466, 4, 243, 405, 112, 70,
- 321, 325, 32, 166, 343, 199, 274, 413, 313, 415,
- 70, 71, 317, 314, 70, 316, 167, 62, 193, 147,
- 232, 185, 186, 275, 143, 530, 480, 171, 431, 63,
- 5, 193, 531, 8, 435, 514, 6, 342, 417, 283,
- 341, 417, 129, 311, 166, 291, 130, 489, 112, 490,
- 491, 143, 492, 9, 493, 188, 320, 324, 334, 188,
- 10, 282, 344, 345, 346, 286, 138, 112, 139, 255,
- 256, 140, 378, 344, 345, 346, 16, 257, 138, 14,
- 139, 494, 495, 140, 188, 461, 141, 22, 319, 323,
- 496, 138, 112, 139, 26, 462, 140, 451, 141, 467,
- 35, 273, 406, 452, 453, 454, 407, 347, 138, 403,
- 139, 335, 326, 140, 456, 383, 44, 457, 458, 399,
- 522, 523, 524, 525, 526, 527, 528, 484, 231, 419,
- 111, 422, 235, 423, 19, 20, 486, 503, 504, 505,
- 506, 507, 508, 509, 510, 132, 112, 133, 379, 47,
- 351, 167, 89, 90, 395, 138, 112, 139, 147, 371,
- 140, 112, 181, 181, 267, 268, 269, 127, 132, 368,
- 133, 400, 297, 298, 299, 128, 409, 143, 518, 412,
- 137, 414, 416, 158, 347, 347, 420, 421, 207, 387,
- 424, 161, 211, 161, 427, 428, 212, 401, 28, 29,
- 167, 32, 33, 45, 46, 213, 434, 436, 196, 197,
- 214, 411, 215, 411, 216, 439, 440, 418, 450, 323,
- 217, 418, 383, 218, 549, 383, 383, 204, 112, 548,
- 473, 259, 260, 287, 288, 185, 186, 559, 411, 381,
- 382, 219, 430, 388, 389, 48, 24, 32, 477, 49,
- 261, 220, 221, 222, 223, 459, 50, 51, 52, 224,
- 225, 226, 53, 227, 228, 229, 30, 230, 166, 262,
- 445, 447, 181, 529, 204, 469, 249, 263, 470, 264,
- 471, 265, 266, 271, 54, 272, 276, 474, 55, 56,
- 57, 278, 478, 479, 347, 482, 280, 281, 58, 284,
- 481, 285, 167, 290, 292, 463, 250, 293, 294, 295,
- 59, 301, 296, 302, 304, 305, 60, 61, 418, 306,
- 308, 310, 32, 35, 309, 312, 498, 499, 315, 318,
- 328, 331, 332, 333, 337, 338, 347, 352, 353, 167,
- 354, 355, 356, 357, 475, 358, 359, 360, 542, 539,
- 543, 361, 544, 362, 363, 545, 364, 365, 515, 367,
- 370, 372, 375, 538, 376, 377, 380, 533, 398, 429,
- 432, 385, 433, 143, 28, 437, 438, 540, 441, 444,
- 449, 167, 464, 535, 465, 70, 468, 485, 487, 488,
- 513, 515, 497, 519, 546, 532, 547, 550, 274, 92,
- 551, 243, 552, 93, 553, 554, 555, 556, 557, 35,
- 94, 95, 96, 558, 537, 402, 97, 564, 541, 426,
- 241, 404, 157, 165, 560, 446, 242, 339, 443, 534,
- 143, 563, 167, 347, 502, 0, 0, 0, 98, 565,
- 0, 0, 99, 100, 101, 0, 347, 0, 0, 0,
- 0, 0, 102, 103, 0, 64, 249, 104, 562, 105,
- 0, 0, 347, 0, 106, 107, 0, 0, 0, 0,
- 108, 109, 65, 0, 66, 67, 0, 68, 0, 69,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 70, 71, 0, 72, 73, 74, 75, 0, 0,
- 0, 76, 0, 0, 0, 77, 78, 79, 80, 81,
- 64, 0, 82, 83, 84, 85, 0, 0, 0, 86,
- 0, 87, 88, 0, 0, 0, 0, 65, 0, 66,
- 67, 0, 68, 0, 69, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 70, 71, 0, 72,
- 73, 74, 75, 0, 0, 0, 76, 0, 0, 0,
- 77, 78, 79, 80, 81, 0, 0, 82, 83, 84,
- 85, 0, 0, 0, 86, 0, 87, 88
+ 30, 200, 35, 113, 114, 115, 116, 117, 118, 119,
+ 120, 121, 122, 123, 124, 125, 126, 148, 245, 240,
+ 136, 239, 146, 247, 153, 246, 180, 330, 331, 238,
+ 251, 170, 173, 174, 177, 181, 188, 248, 375, 253,
+ 205, 163, 209, 211, 322, 326, 24, 394, 396, 202,
+ 271, 250, 250, 167, 112, 393, 395, 250, 1, 143,
+ 235, 201, 154, 154, 278, 154, 62, 154, 234, 171,
+ 237, 48, 315, 241, 317, 49, 244, 112, 63, 166,
+ 345, 129, 50, 51, 52, 130, 70, 407, 53, 166,
+ 32, 4, 70, 199, 275, 112, 167, 166, 147, 494,
+ 343, 495, 496, 276, 497, 233, 498, 314, 5, 143,
+ 54, 318, 171, 166, 55, 56, 57, 112, 336, 193,
+ 335, 132, 284, 133, 58, 523, 193, 415, 292, 417,
+ 419, 419, 6, 499, 500, 188, 143, 344, 59, 188,
+ 539, 8, 501, 312, 60, 61, 283, 540, 185, 186,
+ 287, 346, 347, 348, 405, 437, 321, 325, 464, 256,
+ 257, 346, 347, 348, 9, 188, 463, 258, 320, 324,
+ 138, 339, 139, 10, 421, 140, 424, 380, 425, 468,
+ 35, 138, 112, 139, 196, 197, 140, 138, 349, 139,
+ 469, 14, 140, 385, 16, 70, 71, 22, 401, 408,
+ 161, 141, 161, 409, 138, 112, 139, 141, 489, 140,
+ 453, 232, 19, 20, 274, 236, 454, 455, 456, 28,
+ 29, 327, 26, 138, 112, 139, 44, 491, 140, 381,
+ 32, 33, 167, 508, 509, 510, 511, 512, 513, 514,
+ 515, 45, 46, 181, 181, 373, 138, 482, 139, 47,
+ 458, 140, 402, 459, 460, 397, 138, 520, 139, 111,
+ 353, 140, 112, 143, 127, 349, 349, 128, 138, 543,
+ 139, 137, 527, 140, 147, 389, 475, 411, 403, 370,
+ 414, 167, 416, 418, 132, 112, 133, 422, 423, 89,
+ 90, 426, 413, 208, 413, 429, 430, 452, 420, 158,
+ 324, 385, 420, 212, 385, 385, 204, 112, 436, 438,
+ 268, 269, 270, 559, 260, 261, 213, 441, 442, 214,
+ 413, 298, 299, 300, 288, 289, 569, 215, 558, 531,
+ 532, 533, 534, 535, 536, 537, 538, 185, 186, 383,
+ 384, 390, 391, 32, 479, 216, 231, 217, 30, 218,
+ 219, 220, 447, 449, 181, 221, 24, 461, 222, 223,
+ 224, 225, 226, 227, 228, 229, 230, 166, 204, 250,
+ 432, 264, 262, 263, 265, 266, 349, 471, 483, 251,
+ 472, 267, 473, 272, 167, 487, 273, 277, 281, 476,
+ 282, 279, 465, 285, 480, 481, 286, 291, 293, 294,
+ 420, 295, 486, 92, 296, 35, 302, 93, 303, 297,
+ 305, 306, 307, 309, 94, 95, 96, 310, 349, 311,
+ 97, 167, 313, 316, 319, 329, 332, 333, 503, 504,
+ 521, 334, 553, 32, 542, 552, 549, 555, 338, 554,
+ 340, 354, 98, 524, 548, 355, 99, 100, 101, 356,
+ 357, 358, 359, 360, 361, 477, 102, 362, 363, 103,
+ 143, 364, 365, 104, 521, 105, 167, 366, 367, 369,
+ 106, 107, 372, 374, 377, 378, 108, 109, 379, 382,
+ 524, 400, 550, 528, 431, 434, 387, 435, 439, 28,
+ 244, 440, 545, 443, 35, 446, 275, 451, 466, 467,
+ 70, 490, 484, 556, 492, 470, 502, 518, 493, 522,
+ 541, 547, 560, 557, 561, 562, 563, 574, 64, 250,
+ 564, 565, 167, 349, 143, 566, 567, 568, 551, 575,
+ 404, 398, 462, 428, 570, 65, 349, 66, 67, 341,
+ 68, 165, 69, 406, 242, 519, 243, 157, 572, 448,
+ 445, 544, 349, 573, 70, 71, 507, 72, 73, 74,
+ 75, 0, 0, 0, 76, 0, 0, 0, 77, 78,
+ 79, 80, 81, 64, 0, 82, 83, 84, 85, 0,
+ 0, 0, 0, 0, 86, 0, 87, 88, 0, 0,
+ 65, 0, 66, 67, 0, 68, 0, 69, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 70,
+ 71, 0, 72, 73, 74, 75, 0, 0, 0, 76,
+ 0, 0, 0, 77, 78, 79, 80, 81, 0, 0,
+ 82, 83, 84, 85, 0, 0, 0, 0, 0, 86,
+ 0, 87, 88
};
static const yytype_int16 yycheck[] =
{
- 23, 68, 25, 48, 49, 50, 51, 52, 53, 54,
- 55, 56, 57, 58, 59, 60, 61, 18, 80, 84,
- 65, 118, 67, 117, 69, 121, 144, 122, 254, 84,
- 123, 76, 77, 78, 79, 80, 81, 116, 74, 125,
- 85, 6, 87, 88, 6, 124, 7, 126, 7, 196,
- 197, 3, 114, 76, 67, 287, 288, 70, 71, 6,
- 73, 84, 75, 291, 77, 287, 288, 150, 113, 3,
- 115, 396, 3, 118, 25, 79, 121, 303, 7, 41,
- 191, 192, 3, 3, 4, 6, 148, 314, 180, 316,
- 41, 42, 184, 182, 41, 184, 119, 66, 32, 28,
- 113, 60, 61, 148, 117, 33, 431, 120, 336, 78,
- 0, 32, 40, 6, 341, 76, 3, 209, 83, 155,
- 209, 83, 6, 178, 3, 161, 10, 22, 7, 24,
- 25, 144, 27, 81, 29, 180, 191, 192, 203, 184,
- 3, 154, 73, 74, 75, 158, 6, 7, 8, 67,
- 68, 11, 270, 73, 74, 75, 3, 75, 6, 85,
- 8, 56, 57, 11, 209, 397, 26, 82, 191, 192,
- 65, 6, 7, 8, 80, 397, 11, 13, 26, 405,
- 203, 16, 6, 19, 20, 21, 10, 210, 6, 300,
- 8, 204, 193, 11, 385, 278, 6, 388, 389, 296,
- 490, 491, 492, 493, 494, 495, 496, 439, 111, 320,
- 7, 322, 115, 324, 3, 4, 442, 33, 34, 35,
- 36, 37, 38, 39, 40, 6, 7, 8, 273, 70,
- 231, 254, 9, 10, 289, 6, 7, 8, 28, 252,
- 11, 7, 287, 288, 13, 14, 15, 7, 6, 250,
- 8, 296, 52, 53, 54, 7, 311, 270, 484, 314,
- 7, 316, 317, 43, 287, 288, 321, 322, 7, 282,
- 325, 73, 4, 75, 329, 330, 6, 300, 3, 4,
- 303, 3, 4, 3, 4, 6, 341, 342, 17, 18,
- 6, 314, 6, 316, 6, 350, 351, 320, 381, 322,
- 6, 324, 385, 6, 536, 388, 389, 6, 7, 535,
- 421, 60, 61, 49, 50, 60, 61, 549, 341, 17,
- 18, 6, 335, 30, 31, 12, 327, 3, 4, 16,
- 7, 6, 6, 6, 6, 390, 23, 24, 25, 6,
- 6, 6, 29, 6, 6, 6, 369, 4, 3, 7,
- 373, 374, 397, 500, 6, 410, 6, 4, 413, 4,
- 415, 4, 4, 4, 51, 4, 4, 422, 55, 56,
- 57, 30, 427, 428, 397, 437, 4, 4, 65, 4,
- 435, 4, 405, 4, 4, 398, 472, 82, 4, 4,
- 77, 4, 29, 4, 4, 4, 83, 84, 421, 4,
- 4, 4, 3, 426, 6, 4, 461, 462, 4, 4,
- 4, 4, 4, 4, 4, 4, 439, 4, 4, 442,
- 4, 4, 4, 4, 425, 4, 4, 4, 525, 523,
- 526, 4, 527, 4, 4, 528, 4, 4, 483, 4,
- 4, 4, 4, 522, 4, 4, 4, 512, 48, 4,
- 4, 31, 4, 466, 3, 16, 6, 524, 6, 6,
- 4, 484, 4, 518, 4, 41, 32, 4, 6, 57,
- 4, 516, 18, 486, 529, 4, 6, 4, 540, 12,
- 4, 526, 4, 16, 4, 4, 4, 4, 4, 512,
- 23, 24, 25, 4, 521, 300, 29, 72, 524, 327,
- 119, 300, 71, 75, 559, 373, 120, 207, 369, 516,
- 523, 561, 535, 536, 472, -1, -1, -1, 51, 564,
- -1, -1, 55, 56, 57, -1, 549, -1, -1, -1,
- -1, -1, 65, 66, -1, 5, 6, 70, 561, 72,
- -1, -1, 565, -1, 77, 78, -1, -1, -1, -1,
- 83, 84, 22, -1, 24, 25, -1, 27, -1, 29,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 41, 42, -1, 44, 45, 46, 47, -1, -1,
- -1, 51, -1, -1, -1, 55, 56, 57, 58, 59,
- 5, -1, 62, 63, 64, 65, -1, -1, -1, 69,
- -1, 71, 72, -1, -1, -1, -1, 22, -1, 24,
- 25, -1, 27, -1, 29, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 41, 42, -1, 44,
- 45, 46, 47, -1, -1, -1, 51, -1, -1, -1,
- 55, 56, 57, 58, 59, -1, -1, 62, 63, 64,
- 65, -1, -1, -1, 69, -1, 71, 72
+ 23, 84, 25, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 59, 60, 61, 68, 121, 118,
+ 65, 117, 67, 123, 69, 122, 80, 196, 197, 116,
+ 125, 76, 77, 78, 79, 80, 81, 124, 255, 126,
+ 85, 74, 87, 88, 191, 192, 18, 288, 289, 84,
+ 144, 6, 6, 76, 7, 288, 289, 6, 3, 67,
+ 114, 84, 70, 71, 150, 73, 68, 75, 113, 77,
+ 115, 12, 182, 118, 184, 16, 121, 7, 80, 3,
+ 4, 6, 23, 24, 25, 10, 41, 304, 29, 3,
+ 3, 81, 41, 6, 148, 7, 119, 3, 28, 22,
+ 210, 24, 25, 148, 27, 113, 29, 180, 0, 117,
+ 51, 184, 120, 3, 55, 56, 57, 7, 204, 32,
+ 203, 6, 155, 8, 65, 78, 32, 315, 161, 317,
+ 85, 85, 3, 56, 57, 180, 144, 210, 79, 184,
+ 33, 6, 65, 178, 85, 86, 154, 40, 60, 61,
+ 158, 75, 76, 77, 301, 343, 191, 192, 399, 69,
+ 70, 75, 76, 77, 83, 210, 399, 77, 191, 192,
+ 6, 206, 8, 3, 321, 11, 323, 271, 325, 25,
+ 203, 6, 7, 8, 17, 18, 11, 6, 211, 8,
+ 407, 87, 11, 279, 3, 41, 42, 84, 297, 6,
+ 73, 26, 75, 10, 6, 7, 8, 26, 441, 11,
+ 13, 111, 3, 4, 16, 115, 19, 20, 21, 3,
+ 4, 193, 82, 6, 7, 8, 6, 444, 11, 274,
+ 3, 4, 255, 33, 34, 35, 36, 37, 38, 39,
+ 40, 3, 4, 288, 289, 253, 6, 7, 8, 72,
+ 387, 11, 297, 390, 391, 290, 6, 7, 8, 7,
+ 232, 11, 7, 271, 7, 288, 289, 7, 6, 7,
+ 8, 7, 489, 11, 28, 283, 423, 312, 301, 251,
+ 315, 304, 317, 318, 6, 7, 8, 322, 323, 9,
+ 10, 326, 315, 7, 317, 330, 331, 383, 321, 43,
+ 323, 387, 325, 4, 390, 391, 6, 7, 343, 344,
+ 13, 14, 15, 546, 60, 61, 6, 352, 353, 6,
+ 343, 52, 53, 54, 49, 50, 559, 6, 545, 495,
+ 496, 497, 498, 499, 500, 501, 505, 60, 61, 17,
+ 18, 30, 31, 3, 4, 6, 4, 6, 371, 6,
+ 6, 6, 375, 376, 399, 6, 328, 392, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 3, 6, 6,
+ 66, 4, 7, 7, 4, 4, 399, 412, 432, 474,
+ 415, 4, 417, 4, 407, 439, 4, 4, 4, 424,
+ 4, 30, 400, 4, 429, 430, 4, 4, 4, 84,
+ 423, 4, 437, 12, 4, 428, 4, 16, 4, 29,
+ 4, 4, 4, 4, 23, 24, 25, 6, 441, 4,
+ 29, 444, 4, 4, 4, 4, 4, 4, 463, 464,
+ 484, 4, 535, 3, 517, 534, 532, 537, 4, 536,
+ 4, 4, 51, 488, 531, 4, 55, 56, 57, 4,
+ 4, 4, 4, 4, 4, 427, 65, 4, 4, 68,
+ 468, 4, 4, 72, 518, 74, 489, 4, 4, 4,
+ 79, 80, 4, 4, 4, 4, 85, 86, 4, 4,
+ 525, 48, 533, 491, 4, 4, 31, 4, 16, 3,
+ 535, 6, 527, 6, 517, 6, 550, 4, 4, 4,
+ 41, 4, 67, 538, 6, 32, 18, 67, 57, 4,
+ 4, 530, 4, 6, 4, 4, 4, 74, 5, 6,
+ 4, 4, 545, 546, 532, 4, 4, 4, 533, 574,
+ 301, 292, 398, 328, 569, 22, 559, 24, 25, 208,
+ 27, 75, 29, 301, 119, 482, 120, 71, 571, 375,
+ 371, 525, 575, 571, 41, 42, 474, 44, 45, 46,
+ 47, -1, -1, -1, 51, -1, -1, -1, 55, 56,
+ 57, 58, 59, 5, -1, 62, 63, 64, 65, -1,
+ -1, -1, -1, -1, 71, -1, 73, 74, -1, -1,
+ 22, -1, 24, 25, -1, 27, -1, 29, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 41,
+ 42, -1, 44, 45, 46, 47, -1, -1, -1, 51,
+ -1, -1, -1, 55, 56, 57, 58, 59, -1, -1,
+ 62, 63, 64, 65, -1, -1, -1, -1, -1, 71,
+ -1, 73, 74
};
/* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of
state STATE-NUM. */
static const yytype_uint8 yystos[] =
{
- 0, 3, 167, 168, 79, 0, 3, 172, 6, 81,
- 3, 190, 169, 173, 85, 170, 3, 175, 191, 3,
- 4, 171, 82, 174, 108, 109, 80, 176, 3, 4,
- 89, 153, 3, 4, 88, 89, 101, 120, 121, 128,
- 129, 141, 159, 160, 6, 3, 4, 70, 12, 16,
- 23, 24, 25, 29, 51, 55, 56, 57, 65, 77,
- 83, 84, 66, 78, 5, 22, 24, 25, 27, 29,
+ 0, 3, 172, 173, 81, 0, 3, 177, 6, 83,
+ 3, 195, 174, 178, 87, 175, 3, 180, 196, 3,
+ 4, 176, 84, 179, 110, 111, 82, 181, 3, 4,
+ 91, 158, 3, 4, 90, 91, 103, 122, 123, 130,
+ 131, 143, 164, 165, 6, 3, 4, 72, 12, 16,
+ 23, 24, 25, 29, 51, 55, 56, 57, 65, 79,
+ 85, 86, 68, 80, 5, 22, 24, 25, 27, 29,
41, 42, 44, 45, 46, 47, 51, 55, 56, 57,
- 58, 59, 62, 63, 64, 65, 69, 71, 72, 9,
- 10, 91, 12, 16, 23, 24, 25, 29, 51, 55,
- 56, 57, 65, 66, 70, 72, 77, 78, 83, 84,
- 151, 7, 7, 136, 136, 136, 136, 136, 136, 136,
- 136, 136, 136, 136, 136, 136, 136, 7, 7, 6,
- 10, 87, 6, 8, 90, 98, 136, 7, 6, 8,
- 11, 26, 92, 93, 99, 100, 136, 28, 102, 103,
- 93, 94, 106, 136, 93, 116, 119, 119, 43, 117,
- 125, 116, 123, 117, 126, 123, 3, 89, 107, 131,
- 136, 93, 132, 136, 136, 137, 102, 136, 139, 140,
- 94, 136, 142, 143, 187, 60, 61, 108, 136, 145,
- 146, 179, 188, 32, 89, 111, 17, 18, 148, 6,
- 88, 89, 111, 147, 6, 136, 150, 7, 136, 189,
- 136, 4, 6, 6, 6, 6, 6, 6, 6, 6,
+ 58, 59, 62, 63, 64, 65, 71, 73, 74, 9,
+ 10, 93, 12, 16, 23, 24, 25, 29, 51, 55,
+ 56, 57, 65, 68, 72, 74, 79, 80, 85, 86,
+ 156, 7, 7, 138, 138, 138, 138, 138, 138, 138,
+ 138, 138, 138, 138, 138, 138, 138, 7, 7, 6,
+ 10, 89, 6, 8, 92, 100, 138, 7, 6, 8,
+ 11, 26, 94, 95, 101, 102, 138, 28, 104, 105,
+ 95, 96, 108, 138, 95, 118, 121, 121, 43, 119,
+ 127, 118, 125, 119, 128, 125, 3, 91, 109, 133,
+ 138, 95, 134, 138, 138, 139, 104, 138, 141, 142,
+ 96, 138, 144, 145, 192, 60, 61, 110, 138, 147,
+ 148, 184, 193, 32, 91, 113, 17, 18, 150, 6,
+ 90, 91, 113, 149, 6, 138, 154, 155, 7, 138,
+ 194, 138, 4, 6, 6, 6, 6, 6, 6, 6,
6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
- 4, 90, 93, 136, 94, 90, 136, 91, 100, 106,
- 136, 131, 132, 136, 137, 140, 150, 91, 164, 6,
- 110, 178, 91, 182, 183, 67, 68, 75, 152, 60,
- 61, 7, 7, 4, 4, 4, 4, 13, 14, 15,
- 99, 4, 4, 16, 94, 136, 4, 92, 30, 104,
- 4, 4, 93, 117, 4, 4, 93, 49, 50, 124,
- 4, 117, 4, 82, 4, 4, 29, 52, 53, 54,
- 130, 4, 4, 133, 4, 4, 4, 138, 4, 6,
- 4, 111, 4, 188, 179, 4, 179, 188, 4, 89,
- 111, 120, 180, 89, 111, 120, 108, 110, 4, 124,
- 124, 4, 4, 4, 88, 93, 149, 4, 4, 146,
- 161, 179, 188, 4, 73, 74, 75, 89, 95, 156,
- 158, 108, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 165, 4, 108, 177,
- 4, 93, 4, 107, 184, 4, 4, 4, 99, 136,
- 4, 17, 18, 92, 97, 31, 105, 93, 30, 31,
- 118, 95, 187, 95, 187, 111, 104, 122, 48, 106,
- 136, 89, 101, 120, 121, 107, 6, 10, 135, 111,
- 144, 89, 111, 180, 111, 180, 111, 83, 89, 120,
- 111, 111, 120, 120, 111, 112, 109, 111, 111, 4,
- 93, 104, 4, 4, 111, 180, 111, 16, 6, 111,
- 111, 6, 162, 153, 6, 89, 141, 89, 185, 4,
- 92, 13, 19, 20, 21, 96, 97, 97, 97, 111,
- 105, 95, 187, 93, 4, 4, 25, 107, 32, 111,
- 111, 111, 181, 120, 111, 108, 113, 4, 111, 111,
- 105, 111, 94, 157, 95, 4, 107, 6, 57, 22,
- 24, 25, 27, 29, 56, 57, 65, 18, 111, 111,
- 127, 134, 178, 33, 34, 35, 36, 37, 38, 39,
- 40, 114, 115, 4, 76, 136, 154, 155, 107, 93,
- 136, 186, 186, 186, 186, 186, 186, 186, 186, 124,
- 33, 40, 4, 88, 154, 111, 166, 98, 91, 100,
- 102, 103, 106, 137, 140, 150, 111, 6, 107, 95,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 95,
- 111, 163, 89, 159, 72, 136
+ 6, 4, 92, 95, 138, 96, 92, 138, 93, 102,
+ 108, 138, 133, 134, 138, 139, 142, 155, 93, 169,
+ 6, 112, 183, 93, 187, 188, 69, 70, 77, 157,
+ 60, 61, 7, 7, 4, 4, 4, 4, 13, 14,
+ 15, 101, 4, 4, 16, 96, 138, 4, 94, 30,
+ 106, 4, 4, 95, 119, 4, 4, 95, 49, 50,
+ 126, 4, 119, 4, 84, 4, 4, 29, 52, 53,
+ 54, 132, 4, 4, 135, 4, 4, 4, 140, 4,
+ 6, 4, 113, 4, 193, 184, 4, 184, 193, 4,
+ 91, 113, 122, 185, 91, 113, 122, 110, 112, 4,
+ 126, 126, 4, 4, 4, 90, 94, 151, 4, 113,
+ 4, 148, 166, 184, 193, 4, 75, 76, 77, 91,
+ 97, 161, 163, 110, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 170, 4,
+ 110, 182, 4, 95, 4, 109, 189, 4, 4, 4,
+ 101, 138, 4, 17, 18, 94, 99, 31, 107, 95,
+ 30, 31, 120, 97, 192, 97, 192, 113, 106, 124,
+ 48, 108, 138, 91, 103, 122, 123, 109, 6, 10,
+ 137, 113, 146, 91, 113, 185, 113, 185, 113, 85,
+ 91, 122, 113, 113, 122, 122, 113, 114, 111, 113,
+ 113, 4, 66, 152, 4, 4, 113, 185, 113, 16,
+ 6, 113, 113, 6, 167, 158, 6, 91, 143, 91,
+ 190, 4, 94, 13, 19, 20, 21, 98, 99, 99,
+ 99, 113, 107, 97, 192, 95, 4, 4, 25, 109,
+ 32, 113, 113, 113, 186, 122, 113, 110, 115, 4,
+ 113, 113, 7, 96, 67, 153, 113, 96, 162, 97,
+ 4, 109, 6, 57, 22, 24, 25, 27, 29, 56,
+ 57, 65, 18, 113, 113, 129, 136, 183, 33, 34,
+ 35, 36, 37, 38, 39, 40, 116, 117, 67, 153,
+ 7, 96, 4, 78, 138, 159, 160, 109, 95, 138,
+ 191, 191, 191, 191, 191, 191, 191, 191, 126, 33,
+ 40, 4, 90, 7, 159, 113, 171, 100, 93, 102,
+ 104, 105, 108, 139, 142, 155, 113, 6, 109, 97,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 97,
+ 113, 168, 91, 164, 74, 138
};
/* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */
static const yytype_uint8 yyr1[] =
{
- 0, 86, 87, 88, 89, 90, 90, 87, 91, 91,
- 92, 92, 92, 93, 93, 93, 94, 94, 94, 94,
- 95, 96, 96, 96, 96, 97, 98, 88, 99, 99,
- 100, 101, 88, 102, 102, 103, 88, 104, 104, 105,
- 105, 106, 88, 107, 108, 109, 109, 110, 110, 111,
- 112, 111, 113, 113, 114, 114, 114, 114, 114, 114,
- 114, 115, 114, 116, 117, 117, 118, 118, 118, 119,
- 120, 121, 88, 88, 122, 123, 123, 124, 124, 124,
- 124, 125, 127, 126, 128, 128, 129, 129, 88, 88,
- 130, 130, 130, 130, 131, 131, 131, 88, 133, 132,
- 88, 134, 134, 135, 135, 136, 138, 137, 88, 139,
- 139, 140, 140, 140, 141, 88, 142, 143, 143, 143,
- 144, 143, 143, 143, 88, 145, 145, 145, 145, 145,
- 145, 145, 145, 145, 88, 146, 146, 145, 88, 147,
- 88, 88, 88, 148, 148, 88, 149, 149, 150, 88,
- 151, 152, 152, 152, 152, 88, 88, 153, 154, 154,
- 155, 157, 156, 158, 158, 158, 158, 159, 160, 88,
- 88, 161, 161, 161, 88, 162, 162, 163, 163, 165,
- 166, 164, 88, 88, 167, 169, 168, 170, 170, 171,
- 173, 172, 174, 174, 175, 176, 176, 151, 151, 151,
- 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
- 151, 151, 151, 151, 153, 153, 153, 153, 153, 153,
- 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,
- 153, 177, 177, 178, 179, 181, 180, 182, 183, 184,
- 184, 185, 185, 185, 185, 185, 185, 185, 185, 186,
- 187, 188, 189, 88, 88, 88, 88, 88, 88, 88,
- 88, 88, 88, 88, 107, 191, 190
+ 0, 88, 89, 90, 91, 92, 92, 89, 93, 93,
+ 94, 94, 94, 95, 95, 95, 96, 96, 96, 96,
+ 97, 98, 98, 98, 98, 99, 100, 90, 101, 101,
+ 102, 103, 90, 104, 104, 105, 90, 106, 106, 107,
+ 107, 108, 90, 109, 110, 111, 111, 112, 112, 113,
+ 114, 113, 115, 115, 116, 116, 116, 116, 116, 116,
+ 116, 117, 116, 118, 119, 119, 120, 120, 120, 121,
+ 122, 123, 90, 90, 124, 125, 125, 126, 126, 126,
+ 126, 127, 129, 128, 130, 130, 131, 131, 90, 90,
+ 132, 132, 132, 132, 133, 133, 133, 90, 135, 134,
+ 90, 136, 136, 137, 137, 138, 140, 139, 90, 141,
+ 141, 142, 142, 142, 143, 90, 144, 145, 145, 145,
+ 146, 145, 145, 145, 90, 147, 147, 147, 147, 147,
+ 147, 147, 147, 147, 90, 148, 148, 147, 90, 149,
+ 90, 90, 90, 150, 150, 90, 151, 151, 152, 152,
+ 153, 153, 154, 154, 154, 154, 155, 90, 156, 157,
+ 157, 157, 157, 90, 90, 158, 159, 159, 160, 162,
+ 161, 163, 163, 163, 163, 164, 165, 90, 90, 166,
+ 166, 166, 90, 167, 167, 168, 168, 170, 171, 169,
+ 90, 90, 172, 174, 173, 175, 175, 176, 178, 177,
+ 179, 179, 180, 181, 181, 156, 156, 156, 156, 156,
+ 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
+ 156, 156, 158, 158, 158, 158, 158, 158, 158, 158,
+ 158, 158, 158, 158, 158, 158, 158, 158, 158, 182,
+ 182, 183, 184, 186, 185, 187, 188, 189, 189, 190,
+ 190, 190, 190, 190, 190, 190, 190, 191, 192, 193,
+ 194, 90, 90, 90, 90, 90, 90, 90, 90, 90,
+ 90, 90, 109, 196, 195
};
/* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */
@@ -1264,19 +1273,20 @@ static const yytype_int8 yyr2[] =
2, 3, 2, 1, 4, 1, 1, 3, 4, 3,
0, 4, 4, 3, 4, 2, 3, 3, 2, 3,
3, 3, 4, 4, 4, 1, 1, 1, 4, 1,
- 4, 5, 4, 4, 4, 4, 2, 0, 4, 4,
- 2, 1, 1, 1, 0, 5, 5, 7, 1, 1,
- 3, 0, 4, 1, 1, 1, 1, 10, 4, 1,
- 1, 2, 3, 2, 5, 0, 1, 0, 2, 0,
- 0, 10, 5, 5, 3, 0, 6, 0, 2, 5,
- 0, 6, 0, 2, 4, 0, 4, 2, 2, 2,
+ 4, 5, 4, 4, 4, 4, 1, 0, 2, 0,
+ 2, 0, 4, 5, 5, 6, 2, 4, 2, 1,
+ 1, 1, 0, 5, 5, 7, 1, 1, 3, 0,
+ 4, 1, 1, 1, 1, 10, 4, 1, 1, 2,
+ 3, 2, 5, 0, 1, 0, 2, 0, 0, 10,
+ 5, 5, 3, 0, 6, 0, 2, 5, 0, 6,
+ 0, 2, 4, 0, 4, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 1, 2, 2, 1, 0, 5, 2, 4, 2,
- 2, 5, 5, 5, 5, 5, 5, 5, 5, 1,
- 1, 1, 1, 4, 5, 6, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 0, 5
+ 2, 2, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 1,
+ 2, 2, 1, 0, 5, 2, 4, 2, 2, 5,
+ 5, 5, 5, 5, 5, 5, 5, 1, 1, 1,
+ 1, 4, 5, 6, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 0, 5
};
@@ -2010,1138 +2020,1202 @@ yyreduce:
switch (yyn)
{
case 2: /* glyph: UNSIGNED REFERENCE */
-#line 264 "parser.y"
+#line 268 "parser.y"
{
- #line 418 "format.w"
+ #line 423 "format.w"
(yyval.c).c= (yyvsp[-1].u);REF(font_kind,(yyvsp[0].u));(yyval.c).f= (yyvsp[0].u);}
-#line 2018 "parser.c"
+#line 2028 "parser.c"
break;
case 3: /* content_node: start "glyph" glyph ">" */
-#line 267 "parser.y"
+#line 271 "parser.y"
{
- #line 419 "format.w"
+ #line 424 "format.w"
hput_tags((yyvsp[-3].u),hput_glyph(&((yyvsp[-1].c))));}
-#line 2026 "parser.c"
+#line 2036 "parser.c"
break;
case 4: /* start: "<" */
-#line 270 "parser.y"
+#line 274 "parser.y"
{
- #line 420 "format.w"
+ #line 425 "format.w"
HPUTNODE;(yyval.u)= (uint32_t)(hpos++-hstart);}
-#line 2034 "parser.c"
+#line 2044 "parser.c"
break;
case 6: /* integer: UNSIGNED */
-#line 274 "parser.y"
+#line 278 "parser.y"
{
- #line 941 "format.w"
+ #line 946 "format.w"
RNG("number",(yyvsp[0].u),0,0x7FFFFFFF);}
-#line 2042 "parser.c"
+#line 2052 "parser.c"
break;
case 7: /* glyph: CHARCODE REFERENCE */
-#line 278 "parser.y"
+#line 282 "parser.y"
{
- #line 1082 "format.w"
+ #line 1087 "format.w"
(yyval.c).c= (yyvsp[-1].u);REF(font_kind,(yyvsp[0].u));(yyval.c).f= (yyvsp[0].u);}
-#line 2050 "parser.c"
+#line 2060 "parser.c"
break;
case 9: /* string: CHARCODE */
-#line 282 "parser.y"
+#line 286 "parser.y"
{
- #line 1187 "format.w"
+ #line 1192 "format.w"
static char s[2];
RNG("String element",(yyvsp[0].u),0x20,0x7E);
s[0]= (yyvsp[0].u);s[1]= 0;(yyval.s)= s;}
-#line 2060 "parser.c"
+#line 2070 "parser.c"
break;
case 10: /* number: UNSIGNED */
-#line 288 "parser.y"
+#line 292 "parser.y"
{
- #line 1339 "format.w"
+ #line 1345 "format.w"
(yyval.f)= (float64_t)(yyvsp[0].u);}
-#line 2068 "parser.c"
+#line 2078 "parser.c"
break;
case 11: /* number: SIGNED */
-#line 290 "parser.y"
+#line 294 "parser.y"
{
- #line 1339 "format.w"
+ #line 1345 "format.w"
(yyval.f)= (float64_t)(yyvsp[0].i);}
-#line 2076 "parser.c"
+#line 2086 "parser.c"
break;
case 13: /* dimension: number "pt" */
-#line 294 "parser.y"
+#line 298 "parser.y"
{
- #line 1682 "format.w"
+ #line 1696 "format.w"
(yyval.d)= ROUND((yyvsp[-1].f)*ONE);RNG("Dimension",(yyval.d),-MAX_DIMEN,MAX_DIMEN);}
-#line 2084 "parser.c"
+#line 2094 "parser.c"
break;
case 14: /* dimension: number "in" */
-#line 297 "parser.y"
+#line 301 "parser.y"
{
- #line 1683 "format.w"
+ #line 1697 "format.w"
(yyval.d)= ROUND((yyvsp[-1].f)*ONE*72.27);RNG("Dimension",(yyval.d),-MAX_DIMEN,MAX_DIMEN);}
-#line 2092 "parser.c"
+#line 2102 "parser.c"
break;
case 15: /* dimension: number "mm" */
-#line 300 "parser.y"
+#line 304 "parser.y"
{
- #line 1684 "format.w"
+ #line 1698 "format.w"
(yyval.d)= ROUND((yyvsp[-1].f)*ONE*(72.27/25.4));RNG("Dimension",(yyval.d),-MAX_DIMEN,MAX_DIMEN);}
-#line 2100 "parser.c"
+#line 2110 "parser.c"
break;
case 16: /* xdimen: dimension number "h" number "v" */
-#line 304 "parser.y"
+#line 308 "parser.y"
{
- #line 1762 "format.w"
+ #line 1776 "format.w"
(yyval.xd).w= (yyvsp[-4].d);(yyval.xd).h= (yyvsp[-3].f);(yyval.xd).v= (yyvsp[-1].f);}
-#line 2108 "parser.c"
+#line 2118 "parser.c"
break;
case 17: /* xdimen: dimension number "h" */
-#line 307 "parser.y"
+#line 311 "parser.y"
{
- #line 1763 "format.w"
+ #line 1777 "format.w"
(yyval.xd).w= (yyvsp[-2].d);(yyval.xd).h= (yyvsp[-1].f);(yyval.xd).v= 0.0;}
-#line 2116 "parser.c"
+#line 2126 "parser.c"
break;
case 18: /* xdimen: dimension number "v" */
-#line 310 "parser.y"
+#line 314 "parser.y"
{
- #line 1764 "format.w"
+ #line 1778 "format.w"
(yyval.xd).w= (yyvsp[-2].d);(yyval.xd).h= 0.0;(yyval.xd).v= (yyvsp[-1].f);}
-#line 2124 "parser.c"
+#line 2134 "parser.c"
break;
case 19: /* xdimen: dimension */
-#line 313 "parser.y"
+#line 317 "parser.y"
{
- #line 1765 "format.w"
+ #line 1779 "format.w"
(yyval.xd).w= (yyvsp[0].d);(yyval.xd).h= 0.0;(yyval.xd).v= 0.0;}
-#line 2132 "parser.c"
+#line 2142 "parser.c"
break;
case 20: /* xdimen_node: start "xdimen" xdimen ">" */
-#line 319 "parser.y"
+#line 321 "parser.y"
{
- #line 1769 "format.w"
+ #line 1781 "format.w"
hput_tags((yyvsp[-3].u),hput_xdimen(&((yyvsp[-1].xd))));}
-#line 2140 "parser.c"
+#line 2150 "parser.c"
break;
case 21: /* order: "pt" */
-#line 324 "parser.y"
+#line 326 "parser.y"
{
- #line 1947 "format.w"
+ #line 1960 "format.w"
(yyval.o)= normal_o;}
-#line 2148 "parser.c"
+#line 2158 "parser.c"
break;
case 22: /* order: "fil" */
-#line 326 "parser.y"
+#line 328 "parser.y"
{
- #line 1947 "format.w"
+ #line 1960 "format.w"
(yyval.o)= fil_o;}
-#line 2156 "parser.c"
+#line 2166 "parser.c"
break;
case 23: /* order: "fill" */
-#line 328 "parser.y"
+#line 330 "parser.y"
{
- #line 1947 "format.w"
+ #line 1960 "format.w"
(yyval.o)= fill_o;}
-#line 2164 "parser.c"
+#line 2174 "parser.c"
break;
case 24: /* order: "filll" */
-#line 330 "parser.y"
+#line 332 "parser.y"
{
- #line 1947 "format.w"
+ #line 1960 "format.w"
(yyval.o)= filll_o;}
-#line 2172 "parser.c"
+#line 2182 "parser.c"
break;
case 25: /* stretch: number order */
-#line 334 "parser.y"
+#line 336 "parser.y"
{
- #line 1949 "format.w"
+ #line 1962 "format.w"
(yyval.st).f= (yyvsp[-1].f);(yyval.st).o= (yyvsp[0].o);}
-#line 2180 "parser.c"
+#line 2190 "parser.c"
break;
case 26: /* penalty: integer */
-#line 338 "parser.y"
+#line 340 "parser.y"
{
- #line 2003 "format.w"
+ #line 2016 "format.w"
RNG("Penalty",(yyvsp[0].i),-20000,+20000);(yyval.i)= (yyvsp[0].i);}
-#line 2188 "parser.c"
+#line 2198 "parser.c"
break;
case 27: /* content_node: start "penalty" penalty ">" */
-#line 341 "parser.y"
+#line 343 "parser.y"
{
- #line 2004 "format.w"
+ #line 2017 "format.w"
hput_tags((yyvsp[-3].u),hput_int((yyvsp[-1].i)));}
-#line 2196 "parser.c"
+#line 2206 "parser.c"
break;
case 29: /* rule_dimension: "|" */
-#line 345 "parser.y"
+#line 347 "parser.y"
{
- #line 2179 "format.w"
+ #line 2192 "format.w"
(yyval.d)= RUNNING_DIMEN;}
-#line 2204 "parser.c"
+#line 2214 "parser.c"
break;
case 30: /* rule: rule_dimension rule_dimension rule_dimension */
-#line 349 "parser.y"
+#line 351 "parser.y"
{
- #line 2181 "format.w"
+ #line 2194 "format.w"
(yyval.r).h= (yyvsp[-2].d);(yyval.r).d= (yyvsp[-1].d);(yyval.r).w= (yyvsp[0].d);
if((yyvsp[0].d)==RUNNING_DIMEN&&((yyvsp[-2].d)==RUNNING_DIMEN||(yyvsp[-1].d)==RUNNING_DIMEN))
QUIT("Incompatible running dimensions 0x%x 0x%x 0x%x",(yyvsp[-2].d),(yyvsp[-1].d),(yyvsp[0].d));}
-#line 2214 "parser.c"
+#line 2224 "parser.c"
break;
case 31: /* rule_node: start "rule" rule ">" */
-#line 354 "parser.y"
+#line 356 "parser.y"
{
- #line 2184 "format.w"
+ #line 2197 "format.w"
hput_tags((yyvsp[-3].u),hput_rule(&((yyvsp[-1].r))));}
-#line 2222 "parser.c"
+#line 2232 "parser.c"
break;
case 33: /* explicit: %empty */
-#line 359 "parser.y"
+#line 361 "parser.y"
{
- #line 2292 "format.w"
+ #line 2305 "format.w"
(yyval.b)= false;}
-#line 2230 "parser.c"
+#line 2240 "parser.c"
break;
case 34: /* explicit: "!" */
-#line 361 "parser.y"
+#line 363 "parser.y"
{
- #line 2292 "format.w"
+ #line 2305 "format.w"
(yyval.b)= true;}
-#line 2238 "parser.c"
+#line 2248 "parser.c"
break;
case 35: /* kern: explicit xdimen */
-#line 364 "parser.y"
+#line 366 "parser.y"
{
- #line 2293 "format.w"
+ #line 2306 "format.w"
(yyval.kt).x= (yyvsp[-1].b);(yyval.kt).d= (yyvsp[0].xd);}
-#line 2246 "parser.c"
+#line 2256 "parser.c"
break;
case 36: /* content_node: start "kern" kern ">" */
-#line 367 "parser.y"
+#line 369 "parser.y"
{
- #line 2294 "format.w"
+ #line 2307 "format.w"
hput_tags((yyvsp[-3].u),hput_kern(&((yyvsp[-1].kt))));}
-#line 2254 "parser.c"
+#line 2264 "parser.c"
break;
case 37: /* plus: %empty */
-#line 371 "parser.y"
+#line 373 "parser.y"
{
- #line 2504 "format.w"
+ #line 2517 "format.w"
(yyval.st).f= 0.0;(yyval.st).o= 0;}
-#line 2262 "parser.c"
+#line 2272 "parser.c"
break;
case 38: /* plus: "plus" stretch */
-#line 373 "parser.y"
+#line 375 "parser.y"
{
- #line 2504 "format.w"
+ #line 2517 "format.w"
(yyval.st)= (yyvsp[0].st);}
-#line 2270 "parser.c"
+#line 2280 "parser.c"
break;
case 39: /* minus: %empty */
-#line 376 "parser.y"
+#line 378 "parser.y"
{
- #line 2505 "format.w"
+ #line 2518 "format.w"
(yyval.st).f= 0.0;(yyval.st).o= 0;}
-#line 2278 "parser.c"
+#line 2288 "parser.c"
break;
case 40: /* minus: "minus" stretch */
-#line 378 "parser.y"
+#line 380 "parser.y"
{
- #line 2505 "format.w"
+ #line 2518 "format.w"
(yyval.st)= (yyvsp[0].st);}
-#line 2286 "parser.c"
+#line 2296 "parser.c"
break;
case 41: /* glue: xdimen plus minus */
-#line 381 "parser.y"
+#line 383 "parser.y"
{
- #line 2506 "format.w"
+ #line 2519 "format.w"
(yyval.g).w= (yyvsp[-2].xd);(yyval.g).p= (yyvsp[-1].st);(yyval.g).m= (yyvsp[0].st);}
-#line 2294 "parser.c"
+#line 2304 "parser.c"
break;
case 42: /* content_node: start "glue" glue ">" */
-#line 384 "parser.y"
+#line 386 "parser.y"
{
- #line 2507 "format.w"
+ #line 2520 "format.w"
if(ZERO_GLUE((yyvsp[-1].g))){HPUT8(zero_skip_no);
hput_tags((yyvsp[-3].u),TAG(glue_kind,0));}else hput_tags((yyvsp[-3].u),hput_glue(&((yyvsp[-1].g))));}
-#line 2303 "parser.c"
+#line 2313 "parser.c"
break;
case 43: /* glue_node: start "glue" glue ">" */
-#line 389 "parser.y"
+#line 391 "parser.y"
{
- #line 2510 "format.w"
+ #line 2523 "format.w"
if(ZERO_GLUE((yyvsp[-1].g))){hpos--;(yyval.b)= false;}
else{hput_tags((yyvsp[-3].u),hput_glue(&((yyvsp[-1].g))));(yyval.b)= true;}}
-#line 2312 "parser.c"
+#line 2322 "parser.c"
break;
case 44: /* position: %empty */
-#line 394 "parser.y"
+#line 396 "parser.y"
{
- #line 2786 "format.w"
+ #line 2799 "format.w"
(yyval.u)= hpos-hstart;}
-#line 2320 "parser.c"
+#line 2330 "parser.c"
break;
case 47: /* estimate: %empty */
-#line 399 "parser.y"
+#line 401 "parser.y"
{
- #line 2789 "format.w"
+ #line 2802 "format.w"
hpos+= 2;}
-#line 2328 "parser.c"
+#line 2338 "parser.c"
break;
case 48: /* estimate: UNSIGNED */
-#line 402 "parser.y"
+#line 404 "parser.y"
{
- #line 2790 "format.w"
+ #line 2803 "format.w"
hpos+= hsize_bytes((yyvsp[0].u))+1;}
-#line 2336 "parser.c"
+#line 2346 "parser.c"
break;
case 49: /* list: start estimate content_list ">" */
-#line 406 "parser.y"
+#line 408 "parser.y"
{
- #line 2792 "format.w"
+ #line 2805 "format.w"
(yyval.l).k= list_kind;(yyval.l).p= (yyvsp[-1].u);(yyval.l).s= (hpos-hstart)-(yyvsp[-1].u);
hput_tags((yyvsp[-3].u),hput_list((yyvsp[-3].u)+1,&((yyval.l))));}
-#line 2345 "parser.c"
+#line 2355 "parser.c"
break;
case 50: /* $@1: %empty */
-#line 412 "parser.y"
+#line 414 "parser.y"
{
- #line 3199 "format.w"
+ #line 3212 "format.w"
hpos+= 4;}
-#line 2353 "parser.c"
+#line 2363 "parser.c"
break;
case 51: /* list: TXT_START position $@1 text TXT_END */
-#line 416 "parser.y"
+#line 418 "parser.y"
{
- #line 3201 "format.w"
+ #line 3214 "format.w"
(yyval.l).k= text_kind;(yyval.l).p= (yyvsp[-1].u);(yyval.l).s= (hpos-hstart)-(yyvsp[-1].u);
hput_tags((yyvsp[-3].u),hput_list((yyvsp[-3].u)+1,&((yyval.l))));}
-#line 2362 "parser.c"
+#line 2372 "parser.c"
break;
case 54: /* txt: TXT_CC */
-#line 422 "parser.y"
+#line 424 "parser.y"
{
- #line 3205 "format.w"
+ #line 3218 "format.w"
hput_txt_cc((yyvsp[0].u));}
-#line 2370 "parser.c"
+#line 2380 "parser.c"
break;
case 55: /* txt: TXT_FONT */
-#line 425 "parser.y"
+#line 427 "parser.y"
{
- #line 3206 "format.w"
+ #line 3219 "format.w"
REF(font_kind,(yyvsp[0].u));hput_txt_font((yyvsp[0].u));}
-#line 2378 "parser.c"
+#line 2388 "parser.c"
break;
case 56: /* txt: TXT_GLOBAL */
-#line 428 "parser.y"
+#line 430 "parser.y"
{
- #line 3207 "format.w"
+ #line 3220 "format.w"
REF((yyvsp[0].rf).k,(yyvsp[0].rf).n);hput_txt_global(&((yyvsp[0].rf)));}
-#line 2386 "parser.c"
+#line 2396 "parser.c"
break;
case 57: /* txt: TXT_LOCAL */
-#line 431 "parser.y"
+#line 433 "parser.y"
{
- #line 3208 "format.w"
+ #line 3221 "format.w"
RNG("Font parameter",(yyvsp[0].u),0,11);hput_txt_local((yyvsp[0].u));}
-#line 2394 "parser.c"
+#line 2404 "parser.c"
break;
case 58: /* txt: TXT_FONT_GLUE */
-#line 434 "parser.y"
+#line 436 "parser.y"
{
- #line 3209 "format.w"
+ #line 3222 "format.w"
HPUTX(1);HPUT8(txt_glue);}
-#line 2402 "parser.c"
+#line 2412 "parser.c"
break;
case 59: /* txt: TXT_FONT_HYPHEN */
-#line 437 "parser.y"
+#line 439 "parser.y"
{
- #line 3210 "format.w"
+ #line 3223 "format.w"
HPUTX(1);HPUT8(txt_hyphen);}
-#line 2410 "parser.c"
+#line 2420 "parser.c"
break;
case 60: /* txt: TXT_IGNORE */
-#line 440 "parser.y"
+#line 442 "parser.y"
{
- #line 3211 "format.w"
+ #line 3224 "format.w"
HPUTX(1);HPUT8(txt_ignore);}
-#line 2418 "parser.c"
+#line 2428 "parser.c"
break;
case 61: /* $@2: %empty */
-#line 443 "parser.y"
+#line 445 "parser.y"
{
- #line 3212 "format.w"
+ #line 3225 "format.w"
HPUTX(1);HPUT8(txt_node);}
-#line 2426 "parser.c"
+#line 2436 "parser.c"
break;
case 63: /* box_dimen: dimension dimension dimension */
-#line 449 "parser.y"
+#line 451 "parser.y"
{
- #line 3472 "format.w"
+ #line 3485 "format.w"
(yyval.info)= hput_box_dimen((yyvsp[-2].d),(yyvsp[-1].d),(yyvsp[0].d));}
-#line 2434 "parser.c"
+#line 2444 "parser.c"
break;
case 64: /* box_shift: %empty */
-#line 452 "parser.y"
+#line 454 "parser.y"
{
- #line 3473 "format.w"
+ #line 3486 "format.w"
(yyval.info)= b000;}
-#line 2442 "parser.c"
+#line 2452 "parser.c"
break;
case 65: /* box_shift: "shifted" dimension */
-#line 455 "parser.y"
+#line 457 "parser.y"
{
- #line 3474 "format.w"
+ #line 3487 "format.w"
(yyval.info)= hput_box_shift((yyvsp[0].d));}
-#line 2450 "parser.c"
+#line 2460 "parser.c"
break;
case 66: /* box_glue_set: %empty */
-#line 459 "parser.y"
+#line 461 "parser.y"
{
- #line 3476 "format.w"
+ #line 3489 "format.w"
(yyval.info)= b000;}
-#line 2458 "parser.c"
+#line 2468 "parser.c"
break;
case 67: /* box_glue_set: "plus" stretch */
-#line 462 "parser.y"
+#line 464 "parser.y"
{
- #line 3477 "format.w"
+ #line 3490 "format.w"
(yyval.info)= hput_box_glue_set(+1,(yyvsp[0].st).f,(yyvsp[0].st).o);}
-#line 2466 "parser.c"
+#line 2476 "parser.c"
break;
case 68: /* box_glue_set: "minus" stretch */
-#line 465 "parser.y"
+#line 467 "parser.y"
{
- #line 3478 "format.w"
+ #line 3491 "format.w"
(yyval.info)= hput_box_glue_set(-1,(yyvsp[0].st).f,(yyvsp[0].st).o);}
-#line 2474 "parser.c"
+#line 2484 "parser.c"
break;
case 69: /* box: box_dimen box_shift box_glue_set list */
-#line 470 "parser.y"
+#line 472 "parser.y"
{
- #line 3481 "format.w"
+ #line 3494 "format.w"
(yyval.info)= (yyvsp[-3].info) |(yyvsp[-2].info) |(yyvsp[-1].info);}
-#line 2482 "parser.c"
+#line 2492 "parser.c"
break;
case 70: /* hbox_node: start "hbox" box ">" */
-#line 474 "parser.y"
+#line 476 "parser.y"
{
- #line 3483 "format.w"
+ #line 3496 "format.w"
hput_tags((yyvsp[-3].u),TAG(hbox_kind,(yyvsp[-1].info)));}
-#line 2490 "parser.c"
+#line 2500 "parser.c"
break;
case 71: /* vbox_node: start "vbox" box ">" */
-#line 477 "parser.y"
+#line 479 "parser.y"
{
- #line 3484 "format.w"
+ #line 3497 "format.w"
hput_tags((yyvsp[-3].u),TAG(vbox_kind,(yyvsp[-1].info)));}
-#line 2498 "parser.c"
+#line 2508 "parser.c"
break;
case 74: /* box_flex: plus minus */
-#line 482 "parser.y"
+#line 484 "parser.y"
{
- #line 3665 "format.w"
+ #line 3678 "format.w"
hput_stretch(&((yyvsp[-1].st)));hput_stretch(&((yyvsp[0].st)));}
-#line 2506 "parser.c"
+#line 2516 "parser.c"
break;
case 75: /* xbox: box_dimen box_shift box_flex xdimen_ref list */
-#line 485 "parser.y"
+#line 487 "parser.y"
{
- #line 3666 "format.w"
+ #line 3679 "format.w"
(yyval.info)= (yyvsp[-4].info) |(yyvsp[-3].info);}
-#line 2514 "parser.c"
+#line 2524 "parser.c"
break;
case 76: /* xbox: box_dimen box_shift box_flex xdimen_node list */
-#line 488 "parser.y"
+#line 490 "parser.y"
{
- #line 3667 "format.w"
+ #line 3680 "format.w"
(yyval.info)= (yyvsp[-4].info) |(yyvsp[-3].info) |b100;}
-#line 2522 "parser.c"
+#line 2532 "parser.c"
break;
case 77: /* box_goal: "to" xdimen_ref */
-#line 492 "parser.y"
+#line 494 "parser.y"
{
- #line 3669 "format.w"
+ #line 3682 "format.w"
(yyval.info)= b000;}
-#line 2530 "parser.c"
+#line 2540 "parser.c"
break;
case 78: /* box_goal: "add" xdimen_ref */
-#line 495 "parser.y"
+#line 497 "parser.y"
{
- #line 3670 "format.w"
+ #line 3683 "format.w"
(yyval.info)= b001;}
-#line 2538 "parser.c"
+#line 2548 "parser.c"
break;
case 79: /* box_goal: "to" xdimen_node */
-#line 498 "parser.y"
+#line 500 "parser.y"
{
- #line 3671 "format.w"
+ #line 3684 "format.w"
(yyval.info)= b100;}
-#line 2546 "parser.c"
+#line 2556 "parser.c"
break;
case 80: /* box_goal: "add" xdimen_node */
-#line 501 "parser.y"
+#line 503 "parser.y"
{
- #line 3672 "format.w"
+ #line 3685 "format.w"
(yyval.info)= b101;}
-#line 2554 "parser.c"
+#line 2564 "parser.c"
break;
case 81: /* hpack: box_shift box_goal list */
-#line 505 "parser.y"
+#line 507 "parser.y"
{
- #line 3674 "format.w"
+ #line 3687 "format.w"
(yyval.info)= (yyvsp[-1].info);}
-#line 2562 "parser.c"
+#line 2572 "parser.c"
break;
case 82: /* $@3: %empty */
-#line 508 "parser.y"
+#line 510 "parser.y"
{
- #line 3675 "format.w"
+ #line 3688 "format.w"
HPUT32((yyvsp[0].d));}
-#line 2570 "parser.c"
+#line 2580 "parser.c"
break;
case 83: /* vpack: box_shift "max" "depth" dimension $@3 box_goal list */
-#line 510 "parser.y"
+#line 512 "parser.y"
{
- #line 3675 "format.w"
+ #line 3688 "format.w"
(yyval.info)= (yyvsp[-6].info) |(yyvsp[-1].info);}
-#line 2578 "parser.c"
+#line 2588 "parser.c"
break;
case 84: /* vxbox_node: start "vset" xbox ">" */
-#line 514 "parser.y"
+#line 516 "parser.y"
{
- #line 3677 "format.w"
+ #line 3690 "format.w"
hput_tags((yyvsp[-3].u),TAG(vset_kind,(yyvsp[-1].info)));}
-#line 2586 "parser.c"
+#line 2596 "parser.c"
break;
case 85: /* vxbox_node: start "vpack" vpack ">" */
-#line 517 "parser.y"
+#line 519 "parser.y"
{
- #line 3678 "format.w"
+ #line 3691 "format.w"
hput_tags((yyvsp[-3].u),TAG(vpack_kind,(yyvsp[-1].info)));}
-#line 2594 "parser.c"
+#line 2604 "parser.c"
break;
case 86: /* hxbox_node: start "hset" xbox ">" */
-#line 522 "parser.y"
+#line 524 "parser.y"
{
- #line 3681 "format.w"
+ #line 3694 "format.w"
hput_tags((yyvsp[-3].u),TAG(hset_kind,(yyvsp[-1].info)));}
-#line 2602 "parser.c"
+#line 2612 "parser.c"
break;
case 87: /* hxbox_node: start "hpack" hpack ">" */
-#line 525 "parser.y"
+#line 527 "parser.y"
{
- #line 3682 "format.w"
+ #line 3695 "format.w"
hput_tags((yyvsp[-3].u),TAG(hpack_kind,(yyvsp[-1].info)));}
-#line 2610 "parser.c"
+#line 2620 "parser.c"
break;
case 90: /* ltype: %empty */
-#line 531 "parser.y"
+#line 533 "parser.y"
{
- #line 3792 "format.w"
+ #line 3805 "format.w"
(yyval.info)= 1;}
-#line 2618 "parser.c"
+#line 2628 "parser.c"
break;
case 91: /* ltype: "align" */
-#line 533 "parser.y"
+#line 535 "parser.y"
{
- #line 3792 "format.w"
+ #line 3805 "format.w"
(yyval.info)= 1;}
-#line 2626 "parser.c"
+#line 2636 "parser.c"
break;
case 92: /* ltype: "center" */
-#line 535 "parser.y"
+#line 537 "parser.y"
{
- #line 3792 "format.w"
+ #line 3805 "format.w"
(yyval.info)= 2;}
-#line 2634 "parser.c"
+#line 2644 "parser.c"
break;
case 93: /* ltype: "expand" */
-#line 537 "parser.y"
+#line 539 "parser.y"
{
- #line 3792 "format.w"
+ #line 3805 "format.w"
(yyval.info)= 3;}
-#line 2642 "parser.c"
+#line 2652 "parser.c"
break;
case 94: /* leaders: glue_node ltype rule_node */
-#line 540 "parser.y"
+#line 542 "parser.y"
{
- #line 3793 "format.w"
+ #line 3806 "format.w"
if((yyvsp[-2].b))(yyval.info)= (yyvsp[-1].info) |b100;else (yyval.info)= (yyvsp[-1].info);}
-#line 2650 "parser.c"
+#line 2660 "parser.c"
break;
case 95: /* leaders: glue_node ltype hbox_node */
-#line 543 "parser.y"
+#line 545 "parser.y"
{
- #line 3794 "format.w"
+ #line 3807 "format.w"
if((yyvsp[-2].b))(yyval.info)= (yyvsp[-1].info) |b100;else (yyval.info)= (yyvsp[-1].info);}
-#line 2658 "parser.c"
+#line 2668 "parser.c"
break;
case 96: /* leaders: glue_node ltype vbox_node */
-#line 546 "parser.y"
+#line 548 "parser.y"
{
- #line 3795 "format.w"
+ #line 3808 "format.w"
if((yyvsp[-2].b))(yyval.info)= (yyvsp[-1].info) |b100;else (yyval.info)= (yyvsp[-1].info);}
-#line 2666 "parser.c"
+#line 2676 "parser.c"
break;
case 97: /* content_node: start "leaders" leaders ">" */
-#line 549 "parser.y"
+#line 551 "parser.y"
{
- #line 3796 "format.w"
+ #line 3809 "format.w"
hput_tags((yyvsp[-3].u),TAG(leaders_kind,(yyvsp[-1].info)));}
-#line 2674 "parser.c"
+#line 2684 "parser.c"
break;
case 98: /* $@4: %empty */
-#line 553 "parser.y"
+#line 555 "parser.y"
{
- #line 3902 "format.w"
+ #line 3915 "format.w"
if((yyvsp[0].d)!=0)HPUT32((yyvsp[0].d));}
-#line 2682 "parser.c"
+#line 2692 "parser.c"
break;
case 99: /* baseline: dimension $@4 glue_node glue_node */
-#line 556 "parser.y"
+#line 558 "parser.y"
{
- #line 3903 "format.w"
+ #line 3916 "format.w"
(yyval.info)= b000;if((yyvsp[-3].d)!=0)(yyval.info) |= b001;
if((yyvsp[-1].b))(yyval.info) |= b100;
if((yyvsp[0].b))(yyval.info) |= b010;
}
-#line 2693 "parser.c"
+#line 2703 "parser.c"
break;
case 100: /* content_node: start "baseline" baseline ">" */
-#line 563 "parser.y"
+#line 565 "parser.y"
{
- #line 3908 "format.w"
+ #line 3921 "format.w"
if((yyvsp[-1].info)==b000)HPUT8(0);hput_tags((yyvsp[-3].u),TAG(baseline_kind,(yyvsp[-1].info)));}
-#line 2701 "parser.c"
+#line 2711 "parser.c"
break;
case 102: /* cc_list: cc_list TXT_CC */
-#line 567 "parser.y"
+#line 569 "parser.y"
{
- #line 3991 "format.w"
+ #line 4004 "format.w"
hput_utf8((yyvsp[0].u));}
-#line 2709 "parser.c"
+#line 2719 "parser.c"
break;
case 103: /* lig_cc: UNSIGNED */
-#line 570 "parser.y"
+#line 572 "parser.y"
{
- #line 3992 "format.w"
+ #line 4005 "format.w"
RNG("UTF-8 code",(yyvsp[0].u),0,0x1FFFFF);(yyval.u)= hpos-hstart;hput_utf8((yyvsp[0].u));}
-#line 2717 "parser.c"
+#line 2727 "parser.c"
break;
case 104: /* lig_cc: CHARCODE */
-#line 573 "parser.y"
+#line 575 "parser.y"
{
- #line 3993 "format.w"
+ #line 4006 "format.w"
(yyval.u)= hpos-hstart;hput_utf8((yyvsp[0].u));}
-#line 2725 "parser.c"
+#line 2735 "parser.c"
break;
case 105: /* ref: REFERENCE */
-#line 576 "parser.y"
+#line 578 "parser.y"
{
- #line 3994 "format.w"
+ #line 4007 "format.w"
HPUT8((yyvsp[0].u));(yyval.u)= (yyvsp[0].u);}
-#line 2733 "parser.c"
+#line 2743 "parser.c"
break;
case 106: /* $@5: %empty */
-#line 579 "parser.y"
+#line 581 "parser.y"
{
- #line 3995 "format.w"
+ #line 4008 "format.w"
REF(font_kind,(yyvsp[0].u));}
-#line 2741 "parser.c"
+#line 2751 "parser.c"
break;
case 107: /* ligature: ref $@5 lig_cc TXT_START cc_list TXT_END */
-#line 582 "parser.y"
+#line 584 "parser.y"
{
- #line 3996 "format.w"
+ #line 4009 "format.w"
(yyval.lg).f= (yyvsp[-5].u);(yyval.lg).l.p= (yyvsp[-3].u);(yyval.lg).l.s= (hpos-hstart)-(yyvsp[-3].u);
RNG("Ligature size",(yyval.lg).l.s,0,255);}
-#line 2750 "parser.c"
+#line 2760 "parser.c"
break;
case 108: /* content_node: start "ligature" ligature ">" */
-#line 586 "parser.y"
+#line 588 "parser.y"
{
- #line 3998 "format.w"
+ #line 4011 "format.w"
hput_tags((yyvsp[-3].u),hput_ligature(&((yyvsp[-1].lg))));}
-#line 2758 "parser.c"
+#line 2768 "parser.c"
break;
case 109: /* replace_count: explicit */
-#line 590 "parser.y"
+#line 592 "parser.y"
{
- #line 4108 "format.w"
+ #line 4121 "format.w"
if((yyvsp[0].b)){(yyval.u)= 0x80;HPUT8(0x80);}else (yyval.u)= 0x00;}
-#line 2766 "parser.c"
+#line 2776 "parser.c"
break;
case 110: /* replace_count: explicit UNSIGNED */
-#line 593 "parser.y"
+#line 595 "parser.y"
{
- #line 4109 "format.w"
+ #line 4122 "format.w"
RNG("Replace count",(yyvsp[0].u),0,31);
(yyval.u)= ((yyvsp[0].u)) |(((yyvsp[-1].b))?0x80:0x00);if((yyval.u)!=0)HPUT8((yyval.u));}
-#line 2775 "parser.c"
+#line 2785 "parser.c"
break;
case 111: /* disc: replace_count list list */
-#line 597 "parser.y"
+#line 599 "parser.y"
{
- #line 4111 "format.w"
+ #line 4124 "format.w"
(yyval.dc).r= (yyvsp[-2].u);(yyval.dc).p= (yyvsp[-1].l);(yyval.dc).q= (yyvsp[0].l);
if((yyvsp[0].l).s==0){hpos= hpos-2;if((yyvsp[-1].l).s==0)hpos= hpos-2;}}
-#line 2784 "parser.c"
+#line 2794 "parser.c"
break;
case 112: /* disc: replace_count list */
-#line 601 "parser.y"
+#line 603 "parser.y"
{
- #line 4113 "format.w"
+ #line 4126 "format.w"
(yyval.dc).r= (yyvsp[-1].u);(yyval.dc).p= (yyvsp[0].l);if((yyvsp[0].l).s==0)hpos= hpos-2;(yyval.dc).q.s= 0;}
-#line 2792 "parser.c"
+#line 2802 "parser.c"
break;
case 113: /* disc: replace_count */
-#line 604 "parser.y"
+#line 606 "parser.y"
{
- #line 4114 "format.w"
+ #line 4127 "format.w"
(yyval.dc).r= (yyvsp[0].u);(yyval.dc).p.s= 0;(yyval.dc).q.s= 0;}
-#line 2800 "parser.c"
+#line 2810 "parser.c"
break;
case 114: /* disc_node: start "disc" disc ">" */
-#line 610 "parser.y"
+#line 612 "parser.y"
{
- #line 4118 "format.w"
+ #line 4131 "format.w"
hput_tags((yyvsp[-3].u),hput_disc(&((yyvsp[-1].dc))));}
-#line 2808 "parser.c"
+#line 2818 "parser.c"
break;
case 116: /* par_dimen: xdimen */
-#line 616 "parser.y"
+#line 618 "parser.y"
{
- #line 4270 "format.w"
+ #line 4285 "format.w"
hput_xdimen_node(&((yyvsp[0].xd)));}
-#line 2816 "parser.c"
+#line 2826 "parser.c"
break;
case 117: /* par: xdimen_ref param_ref list */
-#line 619 "parser.y"
+#line 621 "parser.y"
{
- #line 4271 "format.w"
+ #line 4286 "format.w"
(yyval.info)= b000;}
-#line 2824 "parser.c"
+#line 2834 "parser.c"
break;
case 118: /* par: xdimen_ref empty_param_list non_empty_param_list list */
-#line 622 "parser.y"
+#line 624 "parser.y"
{
- #line 4272 "format.w"
+ #line 4287 "format.w"
(yyval.info)= b010;}
-#line 2832 "parser.c"
+#line 2842 "parser.c"
break;
case 119: /* par: xdimen_ref empty_param_list list */
-#line 625 "parser.y"
+#line 627 "parser.y"
{
- #line 4273 "format.w"
+ #line 4288 "format.w"
(yyval.info)= b010;}
-#line 2840 "parser.c"
+#line 2850 "parser.c"
break;
case 120: /* $@6: %empty */
-#line 628 "parser.y"
+#line 630 "parser.y"
{
- #line 4274 "format.w"
+ #line 4289 "format.w"
hput_xdimen_node(&((yyvsp[-1].xd)));}
-#line 2848 "parser.c"
+#line 2858 "parser.c"
break;
case 121: /* par: xdimen param_ref $@6 list */
-#line 630 "parser.y"
+#line 632 "parser.y"
{
- #line 4274 "format.w"
+ #line 4289 "format.w"
(yyval.info)= b100;}
-#line 2856 "parser.c"
+#line 2866 "parser.c"
break;
case 122: /* par: par_dimen empty_param_list non_empty_param_list list */
-#line 633 "parser.y"
+#line 635 "parser.y"
{
- #line 4275 "format.w"
+ #line 4290 "format.w"
(yyval.info)= b110;}
-#line 2864 "parser.c"
+#line 2874 "parser.c"
break;
case 123: /* par: par_dimen empty_param_list list */
-#line 636 "parser.y"
+#line 638 "parser.y"
{
- #line 4276 "format.w"
+ #line 4291 "format.w"
(yyval.info)= b110;}
-#line 2872 "parser.c"
+#line 2882 "parser.c"
break;
case 124: /* content_node: start "par" par ">" */
-#line 640 "parser.y"
+#line 642 "parser.y"
{
- #line 4278 "format.w"
+ #line 4293 "format.w"
hput_tags((yyvsp[-3].u),TAG(par_kind,(yyvsp[-1].info)));}
-#line 2880 "parser.c"
+#line 2890 "parser.c"
break;
case 125: /* math: param_ref list */
-#line 644 "parser.y"
+#line 646 "parser.y"
{
- #line 4344 "format.w"
+ #line 4359 "format.w"
(yyval.info)= b000;}
-#line 2888 "parser.c"
+#line 2898 "parser.c"
break;
case 126: /* math: param_ref list hbox_node */
-#line 647 "parser.y"
+#line 649 "parser.y"
{
- #line 4345 "format.w"
+ #line 4360 "format.w"
(yyval.info)= b001;}
-#line 2896 "parser.c"
+#line 2906 "parser.c"
break;
case 127: /* math: param_ref hbox_node list */
-#line 650 "parser.y"
+#line 652 "parser.y"
{
- #line 4346 "format.w"
+ #line 4361 "format.w"
(yyval.info)= b010;}
-#line 2904 "parser.c"
+#line 2914 "parser.c"
break;
case 128: /* math: empty_param_list list */
-#line 653 "parser.y"
+#line 655 "parser.y"
{
- #line 4347 "format.w"
+ #line 4362 "format.w"
(yyval.info)= b100;}
-#line 2912 "parser.c"
+#line 2922 "parser.c"
break;
case 129: /* math: empty_param_list list hbox_node */
-#line 656 "parser.y"
+#line 658 "parser.y"
{
- #line 4348 "format.w"
+ #line 4363 "format.w"
(yyval.info)= b101;}
-#line 2920 "parser.c"
+#line 2930 "parser.c"
break;
case 130: /* math: empty_param_list hbox_node list */
-#line 659 "parser.y"
+#line 661 "parser.y"
{
- #line 4349 "format.w"
+ #line 4364 "format.w"
(yyval.info)= b110;}
-#line 2928 "parser.c"
+#line 2938 "parser.c"
break;
case 131: /* math: empty_param_list non_empty_param_list list */
-#line 662 "parser.y"
+#line 664 "parser.y"
{
- #line 4350 "format.w"
+ #line 4365 "format.w"
(yyval.info)= b100;}
-#line 2936 "parser.c"
+#line 2946 "parser.c"
break;
case 132: /* math: empty_param_list non_empty_param_list list hbox_node */
-#line 665 "parser.y"
+#line 667 "parser.y"
{
- #line 4351 "format.w"
+ #line 4366 "format.w"
(yyval.info)= b101;}
-#line 2944 "parser.c"
+#line 2954 "parser.c"
break;
case 133: /* math: empty_param_list non_empty_param_list hbox_node list */
-#line 668 "parser.y"
+#line 670 "parser.y"
{
- #line 4352 "format.w"
+ #line 4367 "format.w"
(yyval.info)= b110;}
-#line 2952 "parser.c"
+#line 2962 "parser.c"
break;
case 134: /* content_node: start "math" math ">" */
-#line 672 "parser.y"
+#line 674 "parser.y"
{
- #line 4354 "format.w"
+ #line 4369 "format.w"
hput_tags((yyvsp[-3].u),TAG(math_kind,(yyvsp[-1].info)));}
-#line 2960 "parser.c"
+#line 2970 "parser.c"
break;
case 135: /* on_off: "on" */
-#line 676 "parser.y"
+#line 678 "parser.y"
{
- #line 4404 "format.w"
+ #line 4419 "format.w"
(yyval.i)= 1;}
-#line 2968 "parser.c"
+#line 2978 "parser.c"
break;
case 136: /* on_off: "off" */
-#line 678 "parser.y"
+#line 680 "parser.y"
{
- #line 4404 "format.w"
+ #line 4419 "format.w"
(yyval.i)= 0;}
-#line 2976 "parser.c"
+#line 2986 "parser.c"
break;
case 137: /* math: on_off */
-#line 681 "parser.y"
+#line 683 "parser.y"
{
- #line 4405 "format.w"
+ #line 4420 "format.w"
(yyval.info)= b011 |((yyvsp[0].i)<<2);}
-#line 2984 "parser.c"
+#line 2994 "parser.c"
break;
case 138: /* content_node: start "adjust" list ">" */
-#line 685 "parser.y"
+#line 687 "parser.y"
{
- #line 4436 "format.w"
+ #line 4451 "format.w"
hput_tags((yyvsp[-3].u),TAG(adjust_kind,1));}
-#line 2992 "parser.c"
+#line 3002 "parser.c"
break;
case 139: /* span_count: UNSIGNED */
-#line 689 "parser.y"
+#line 691 "parser.y"
{
- #line 4535 "format.w"
+ #line 4550 "format.w"
(yyval.info)= hput_span_count((yyvsp[0].u));}
-#line 3000 "parser.c"
+#line 3010 "parser.c"
break;
case 140: /* content_node: start "item" content_node ">" */
-#line 692 "parser.y"
+#line 694 "parser.y"
{
- #line 4536 "format.w"
+ #line 4551 "format.w"
hput_tags((yyvsp[-3].u),TAG(item_kind,1));}
-#line 3008 "parser.c"
+#line 3018 "parser.c"
break;
case 141: /* content_node: start "item" span_count content_node ">" */
-#line 695 "parser.y"
+#line 697 "parser.y"
{
- #line 4537 "format.w"
+ #line 4552 "format.w"
hput_tags((yyvsp[-4].u),TAG(item_kind,(yyvsp[-2].info)));}
-#line 3016 "parser.c"
+#line 3026 "parser.c"
break;
case 142: /* content_node: start "item" list ">" */
-#line 698 "parser.y"
+#line 700 "parser.y"
{
- #line 4538 "format.w"
+ #line 4553 "format.w"
hput_tags((yyvsp[-3].u),TAG(item_kind,b000));}
-#line 3024 "parser.c"
+#line 3034 "parser.c"
break;
case 143: /* table: "h" box_goal list list */
-#line 702 "parser.y"
+#line 704 "parser.y"
{
- #line 4540 "format.w"
+ #line 4555 "format.w"
(yyval.info)= (yyvsp[-2].info);}
-#line 3032 "parser.c"
+#line 3042 "parser.c"
break;
case 144: /* table: "v" box_goal list list */
-#line 705 "parser.y"
+#line 707 "parser.y"
{
- #line 4541 "format.w"
+ #line 4556 "format.w"
(yyval.info)= (yyvsp[-2].info) |b010;}
-#line 3040 "parser.c"
+#line 3050 "parser.c"
break;
case 145: /* content_node: start "table" table ">" */
-#line 709 "parser.y"
+#line 711 "parser.y"
{
- #line 4543 "format.w"
+ #line 4558 "format.w"
hput_tags((yyvsp[-3].u),TAG(table_kind,(yyvsp[-1].info)));}
-#line 3048 "parser.c"
+#line 3058 "parser.c"
break;
- case 146: /* image_dimen: dimension dimension */
-#line 713 "parser.y"
- {
- #line 4631 "format.w"
- (yyval.x).w= (yyvsp[-1].d);(yyval.x).h= (yyvsp[0].d);}
-#line 3056 "parser.c"
+ case 146: /* image_aspect: number */
+#line 715 "parser.y"
+ {
+ #line 4692 "format.w"
+ (yyval.f)= (yyvsp[0].f);}
+#line 3066 "parser.c"
break;
- case 147: /* image_dimen: %empty */
-#line 715 "parser.y"
- {
- #line 4631 "format.w"
- (yyval.x).w= (yyval.x).h= 0;}
-#line 3064 "parser.c"
+ case 147: /* image_aspect: %empty */
+#line 717 "parser.y"
+ {
+ #line 4692 "format.w"
+ (yyval.f)= 0.0;}
+#line 3074 "parser.c"
break;
- case 148: /* image: UNSIGNED image_dimen plus minus */
-#line 718 "parser.y"
- {
- #line 4632 "format.w"
- (yyval.x).w= (yyvsp[-2].x).w;(yyval.x).h= (yyvsp[-2].x).h;(yyval.x).p= (yyvsp[-1].st);(yyval.x).m= (yyvsp[0].st);RNG("Section number",(yyvsp[-3].u),3,max_section_no);(yyval.x).n= (yyvsp[-3].u);}
-#line 3072 "parser.c"
+ case 148: /* image_width: "width" xdimen */
+#line 720 "parser.y"
+ {
+ #line 4693 "format.w"
+ (yyval.xd)= (yyvsp[0].xd);}
+#line 3082 "parser.c"
+ break;
+
+ case 149: /* image_width: %empty */
+#line 723 "parser.y"
+ {
+ #line 4694 "format.w"
+ (yyval.xd)= xdimen_defaults[zero_xdimen_no];}
+#line 3090 "parser.c"
+ break;
+
+ case 150: /* image_height: "height" xdimen */
+#line 726 "parser.y"
+ {
+ #line 4695 "format.w"
+ (yyval.xd)= (yyvsp[0].xd);}
+#line 3098 "parser.c"
+ break;
+
+ case 151: /* image_height: %empty */
+#line 729 "parser.y"
+ {
+ #line 4696 "format.w"
+ (yyval.xd)= xdimen_defaults[zero_xdimen_no];}
+#line 3106 "parser.c"
+ break;
+
+ case 152: /* image_spec: UNSIGNED image_aspect image_width image_height */
+#line 734 "parser.y"
+{
+ #line 4699 "format.w"
+ (yyval.info)= hput_image_spec((yyvsp[-3].u),(yyvsp[-2].f),0,&((yyvsp[-1].xd)),0,&((yyvsp[0].xd)));}
+#line 3114 "parser.c"
+ break;
+
+ case 153: /* image_spec: UNSIGNED image_aspect "width" REFERENCE image_height */
+#line 738 "parser.y"
+{
+ #line 4701 "format.w"
+ (yyval.info)= hput_image_spec((yyvsp[-4].u),(yyvsp[-3].f),(yyvsp[-1].u),NULL,0,&((yyvsp[0].xd)));}
+#line 3122 "parser.c"
+ break;
+
+ case 154: /* image_spec: UNSIGNED image_aspect image_width "height" REFERENCE */
+#line 742 "parser.y"
+{
+ #line 4703 "format.w"
+ (yyval.info)= hput_image_spec((yyvsp[-4].u),(yyvsp[-3].f),0,&((yyvsp[-2].xd)),(yyvsp[0].u),NULL);}
+#line 3130 "parser.c"
+ break;
+
+ case 155: /* image_spec: UNSIGNED image_aspect "width" REFERENCE "height" REFERENCE */
+#line 746 "parser.y"
+{
+ #line 4705 "format.w"
+ (yyval.info)= hput_image_spec((yyvsp[-5].u),(yyvsp[-4].f),(yyvsp[-2].u),NULL,(yyvsp[0].u),NULL);}
+#line 3138 "parser.c"
+ break;
+
+ case 156: /* image: image_spec list */
+#line 750 "parser.y"
+ {
+ #line 4707 "format.w"
+ (yyval.info)= (yyvsp[-1].info);}
+#line 3146 "parser.c"
break;
- case 149: /* content_node: start "image" image ">" */
-#line 721 "parser.y"
+ case 157: /* content_node: start "image" image ">" */
+#line 754 "parser.y"
{
- #line 4633 "format.w"
- hput_tags((yyvsp[-3].u),hput_image(&((yyvsp[-1].x))));}
-#line 3080 "parser.c"
+ #line 4709 "format.w"
+ hput_tags((yyvsp[-3].u),TAG(image_kind,(yyvsp[-1].info)));}
+#line 3154 "parser.c"
break;
- case 150: /* max_value: "outline" UNSIGNED */
-#line 725 "parser.y"
+ case 158: /* max_value: "outline" UNSIGNED */
+#line 758 "parser.y"
{
- #line 4870 "format.w"
+ #line 5309 "format.w"
max_outline= (yyvsp[0].u);
RNG("max outline",max_outline,0,0xFFFF);
DBG(DBGDEF |DBGLABEL,"Setting max outline to %d\n",max_outline);
}
-#line 3091 "parser.c"
+#line 3165 "parser.c"
break;
- case 151: /* placement: "top" */
-#line 732 "parser.y"
+ case 159: /* placement: "top" */
+#line 765 "parser.y"
{
- #line 4962 "format.w"
+ #line 5401 "format.w"
(yyval.i)= LABEL_TOP;}
-#line 3099 "parser.c"
+#line 3173 "parser.c"
break;
- case 152: /* placement: "bot" */
-#line 734 "parser.y"
+ case 160: /* placement: "bot" */
+#line 767 "parser.y"
{
- #line 4962 "format.w"
+ #line 5401 "format.w"
(yyval.i)= LABEL_BOT;}
-#line 3107 "parser.c"
+#line 3181 "parser.c"
break;
- case 153: /* placement: "mid" */
-#line 736 "parser.y"
+ case 161: /* placement: "mid" */
+#line 769 "parser.y"
{
- #line 4962 "format.w"
+ #line 5401 "format.w"
(yyval.i)= LABEL_MID;}
-#line 3115 "parser.c"
+#line 3189 "parser.c"
break;
- case 154: /* placement: %empty */
-#line 738 "parser.y"
+ case 162: /* placement: %empty */
+#line 771 "parser.y"
{
- #line 4962 "format.w"
+ #line 5401 "format.w"
(yyval.i)= LABEL_MID;}
-#line 3123 "parser.c"
+#line 3197 "parser.c"
break;
- case 155: /* content_node: "<" "label" REFERENCE placement ">" */
-#line 742 "parser.y"
+ case 163: /* content_node: "<" "label" REFERENCE placement ">" */
+#line 775 "parser.y"
{
- #line 4964 "format.w"
+ #line 5403 "format.w"
hset_label((yyvsp[-2].u),(yyvsp[-1].i));}
-#line 3131 "parser.c"
+#line 3205 "parser.c"
break;
- case 156: /* content_node: start "link" REFERENCE on_off ">" */
-#line 747 "parser.y"
+ case 164: /* content_node: start "link" REFERENCE on_off ">" */
+#line 780 "parser.y"
{
- #line 5222 "format.w"
+ #line 5661 "format.w"
hput_tags((yyvsp[-4].u),hput_link((yyvsp[-2].u),(yyvsp[-1].i)));}
-#line 3139 "parser.c"
+#line 3213 "parser.c"
break;
- case 157: /* def_node: "<" "outline" REFERENCE integer position list ">" */
-#line 751 "parser.y"
+ case 165: /* def_node: "<" "outline" REFERENCE integer position list ">" */
+#line 784 "parser.y"
{
- #line 5352 "format.w"
+ #line 5791 "format.w"
static int outline_no= -1;
(yyval.rf).k= outline_kind;(yyval.rf).n= (yyvsp[-4].u);
@@ -3149,215 +3223,215 @@ yyreduce:
outline_no++;
hset_outline(outline_no,(yyvsp[-4].u),(yyvsp[-3].i),(yyvsp[-2].u));
}
-#line 3153 "parser.c"
+#line 3227 "parser.c"
break;
- case 158: /* stream_link: ref */
-#line 761 "parser.y"
+ case 166: /* stream_link: ref */
+#line 794 "parser.y"
{
- #line 5767 "format.w"
+ #line 6206 "format.w"
REF_RNG(stream_kind,(yyvsp[0].u));}
-#line 3161 "parser.c"
+#line 3235 "parser.c"
break;
- case 159: /* stream_link: "*" */
-#line 763 "parser.y"
+ case 167: /* stream_link: "*" */
+#line 796 "parser.y"
{
- #line 5767 "format.w"
+ #line 6206 "format.w"
HPUT8(255);}
-#line 3169 "parser.c"
+#line 3243 "parser.c"
break;
- case 160: /* stream_split: stream_link stream_link UNSIGNED */
-#line 766 "parser.y"
+ case 168: /* stream_split: stream_link stream_link UNSIGNED */
+#line 799 "parser.y"
{
- #line 5768 "format.w"
+ #line 6207 "format.w"
RNG("split ratio",(yyvsp[0].u),0,1000);HPUT16((yyvsp[0].u));}
-#line 3177 "parser.c"
+#line 3251 "parser.c"
break;
- case 161: /* $@7: %empty */
-#line 769 "parser.y"
+ case 169: /* $@7: %empty */
+#line 802 "parser.y"
{
- #line 5769 "format.w"
+ #line 6208 "format.w"
RNG("magnification factor",(yyvsp[0].u),0,1000);HPUT16((yyvsp[0].u));}
-#line 3185 "parser.c"
+#line 3259 "parser.c"
break;
- case 163: /* stream_type: stream_info */
-#line 773 "parser.y"
+ case 171: /* stream_type: stream_info */
+#line 806 "parser.y"
{
- #line 5771 "format.w"
+ #line 6210 "format.w"
(yyval.info)= 0;}
-#line 3193 "parser.c"
+#line 3267 "parser.c"
break;
- case 164: /* stream_type: "first" */
-#line 775 "parser.y"
+ case 172: /* stream_type: "first" */
+#line 808 "parser.y"
{
- #line 5771 "format.w"
+ #line 6210 "format.w"
(yyval.info)= 1;}
-#line 3201 "parser.c"
+#line 3275 "parser.c"
break;
- case 165: /* stream_type: "last" */
-#line 777 "parser.y"
+ case 173: /* stream_type: "last" */
+#line 810 "parser.y"
{
- #line 5771 "format.w"
+ #line 6210 "format.w"
(yyval.info)= 2;}
-#line 3209 "parser.c"
+#line 3283 "parser.c"
break;
- case 166: /* stream_type: "top" */
-#line 779 "parser.y"
+ case 174: /* stream_type: "top" */
+#line 812 "parser.y"
{
- #line 5771 "format.w"
+ #line 6210 "format.w"
(yyval.info)= 3;}
-#line 3217 "parser.c"
+#line 3291 "parser.c"
break;
- case 167: /* stream_def_node: start "stream (definition)" ref stream_type list xdimen_node glue_node list glue_node ">" */
-#line 785 "parser.y"
+ case 175: /* stream_def_node: start "stream (definition)" ref stream_type list xdimen_node glue_node list glue_node ">" */
+#line 818 "parser.y"
{
- #line 5775 "format.w"
+ #line 6214 "format.w"
DEF((yyval.rf),stream_kind,(yyvsp[-7].u));hput_tags((yyvsp[-9].u),TAG(stream_kind,(yyvsp[-6].info) |b100));}
-#line 3225 "parser.c"
+#line 3299 "parser.c"
break;
- case 168: /* stream_ins_node: start "stream (definition)" ref ">" */
-#line 790 "parser.y"
+ case 176: /* stream_ins_node: start "stream (definition)" ref ">" */
+#line 823 "parser.y"
{
- #line 5778 "format.w"
+ #line 6217 "format.w"
RNG("Stream insertion",(yyvsp[-1].u),0,max_ref[stream_kind]);hput_tags((yyvsp[-3].u),TAG(stream_kind,b100));}
-#line 3233 "parser.c"
+#line 3307 "parser.c"
break;
- case 171: /* stream: empty_param_list list */
-#line 796 "parser.y"
+ case 179: /* stream: empty_param_list list */
+#line 829 "parser.y"
{
- #line 5873 "format.w"
+ #line 6312 "format.w"
(yyval.info)= b010;}
-#line 3241 "parser.c"
+#line 3315 "parser.c"
break;
- case 172: /* stream: empty_param_list non_empty_param_list list */
-#line 799 "parser.y"
+ case 180: /* stream: empty_param_list non_empty_param_list list */
+#line 832 "parser.y"
{
- #line 5874 "format.w"
+ #line 6313 "format.w"
(yyval.info)= b010;}
-#line 3249 "parser.c"
+#line 3323 "parser.c"
break;
- case 173: /* stream: param_ref list */
-#line 802 "parser.y"
+ case 181: /* stream: param_ref list */
+#line 835 "parser.y"
{
- #line 5875 "format.w"
+ #line 6314 "format.w"
(yyval.info)= b000;}
-#line 3257 "parser.c"
+#line 3331 "parser.c"
break;
- case 174: /* content_node: start "stream" stream_ref stream ">" */
-#line 806 "parser.y"
+ case 182: /* content_node: start "stream" stream_ref stream ">" */
+#line 839 "parser.y"
{
- #line 5877 "format.w"
+ #line 6316 "format.w"
hput_tags((yyvsp[-4].u),TAG(stream_kind,(yyvsp[-1].info)));}
-#line 3265 "parser.c"
+#line 3339 "parser.c"
break;
- case 175: /* page_priority: %empty */
-#line 810 "parser.y"
+ case 183: /* page_priority: %empty */
+#line 843 "parser.y"
{
- #line 5980 "format.w"
+ #line 6419 "format.w"
HPUT8(1);}
-#line 3273 "parser.c"
+#line 3347 "parser.c"
break;
- case 176: /* page_priority: UNSIGNED */
-#line 813 "parser.y"
+ case 184: /* page_priority: UNSIGNED */
+#line 846 "parser.y"
{
- #line 5981 "format.w"
+ #line 6420 "format.w"
RNG("page priority",(yyvsp[0].u),0,255);HPUT8((yyvsp[0].u));}
-#line 3281 "parser.c"
+#line 3355 "parser.c"
break;
- case 179: /* $@8: %empty */
-#line 819 "parser.y"
+ case 187: /* $@8: %empty */
+#line 852 "parser.y"
{
- #line 5985 "format.w"
+ #line 6424 "format.w"
hput_string((yyvsp[0].s));}
-#line 3289 "parser.c"
+#line 3363 "parser.c"
break;
- case 180: /* $@9: %empty */
-#line 821 "parser.y"
+ case 188: /* $@9: %empty */
+#line 854 "parser.y"
{
- #line 5985 "format.w"
+ #line 6424 "format.w"
HPUT32((yyvsp[0].d));}
-#line 3297 "parser.c"
+#line 3371 "parser.c"
break;
- case 182: /* content_node: "<" "range" REFERENCE "on" ">" */
-#line 828 "parser.y"
+ case 190: /* content_node: "<" "range" REFERENCE "on" ">" */
+#line 861 "parser.y"
{
- #line 6097 "format.w"
+ #line 6536 "format.w"
REF(page_kind,(yyvsp[-2].u));hput_range((yyvsp[-2].u),true);}
-#line 3305 "parser.c"
+#line 3379 "parser.c"
break;
- case 183: /* content_node: "<" "range" REFERENCE "off" ">" */
-#line 831 "parser.y"
+ case 191: /* content_node: "<" "range" REFERENCE "off" ">" */
+#line 864 "parser.y"
{
- #line 6098 "format.w"
+ #line 6537 "format.w"
REF(page_kind,(yyvsp[-2].u));hput_range((yyvsp[-2].u),false);}
-#line 3313 "parser.c"
+#line 3387 "parser.c"
break;
- case 185: /* $@10: %empty */
-#line 837 "parser.y"
+ case 193: /* $@10: %empty */
+#line 870 "parser.y"
{
- #line 6789 "format.w"
+ #line 7228 "format.w"
new_directory((yyvsp[0].u)+1);new_output_buffers();}
-#line 3321 "parser.c"
+#line 3395 "parser.c"
break;
- case 189: /* entry: "<" "entry" UNSIGNED string ">" */
-#line 842 "parser.y"
+ case 197: /* entry: "<" "entry" UNSIGNED string ">" */
+#line 875 "parser.y"
{
- #line 6792 "format.w"
+ #line 7231 "format.w"
RNG("Section number",(yyvsp[-2].u),3,max_section_no);hset_entry(&(dir[(yyvsp[-2].u)]),(yyvsp[-2].u),0,0,(yyvsp[-1].s));}
-#line 3329 "parser.c"
+#line 3403 "parser.c"
break;
- case 190: /* $@11: %empty */
-#line 846 "parser.y"
+ case 198: /* $@11: %empty */
+#line 879 "parser.y"
{
- #line 7327 "format.w"
+ #line 7766 "format.w"
hput_definitions_start();}
-#line 3337 "parser.c"
+#line 3411 "parser.c"
break;
- case 191: /* definition_section: "<" "definitions" $@11 max_definitions definition_list ">" */
-#line 850 "parser.y"
+ case 199: /* definition_section: "<" "definitions" $@11 max_definitions definition_list ">" */
+#line 883 "parser.y"
{
- #line 7329 "format.w"
+ #line 7768 "format.w"
hput_definitions_end();}
-#line 3345 "parser.c"
+#line 3419 "parser.c"
break;
- case 194: /* max_definitions: "<" "max" max_list ">" */
-#line 856 "parser.y"
+ case 202: /* max_definitions: "<" "max" max_list ">" */
+#line 889 "parser.y"
{
- #line 7445 "format.w"
- /*245:*/
+ #line 7884 "format.w"
+ /*253:*/
if(max_ref[label_kind]>=0)
ALLOCATE(labels,max_ref[label_kind]+1,Label);
- /*:245*/ /*266:*/
+ /*:253*/ /*274:*/
if(max_outline>=0)
ALLOCATE(outlines,max_outline+1,Outline);
- /*:266*/ /*293:*/
+ /*:274*/ /*301:*/
ALLOCATE(page_on,max_ref[page_kind]+1,int);
ALLOCATE(range_pos,2*(max_ref[range_kind]+1),RangePos);
- /*:293*/ /*359:*/
+ /*:301*/ /*367:*/
definition_bits[0][int_kind]= (1<<(MAX_INT_DEFAULT+1))-1;
definition_bits[0][dimen_kind]= (1<<(MAX_DIMEN_DEFAULT+1))-1;
definition_bits[0][xdimen_kind]= (1<<(MAX_XDIMEN_DEFAULT+1))-1;
@@ -3366,544 +3440,544 @@ yyreduce:
definition_bits[0][page_kind]= (1<<(MAX_PAGE_DEFAULT+1))-1;
definition_bits[0][stream_kind]= (1<<(MAX_STREAM_DEFAULT+1))-1;
definition_bits[0][range_kind]= (1<<(MAX_RANGE_DEFAULT+1))-1;
- /*:359*/ /*374:*/
+ /*:367*/ /*382:*/
ALLOCATE(hfont_name,max_ref[font_kind]+1,char*);
- /*:374*/hput_max_definitions();}
-#line 3373 "parser.c"
+ /*:382*/hput_max_definitions();}
+#line 3447 "parser.c"
break;
- case 197: /* max_value: "font" UNSIGNED */
-#line 882 "parser.y"
+ case 205: /* max_value: "font" UNSIGNED */
+#line 915 "parser.y"
{
- #line 7449 "format.w"
+ #line 7888 "format.w"
hset_max(font_kind,(yyvsp[0].u));}
-#line 3381 "parser.c"
+#line 3455 "parser.c"
break;
- case 198: /* max_value: "int" UNSIGNED */
-#line 885 "parser.y"
+ case 206: /* max_value: "int" UNSIGNED */
+#line 918 "parser.y"
{
- #line 7450 "format.w"
+ #line 7889 "format.w"
hset_max(int_kind,(yyvsp[0].u));}
-#line 3389 "parser.c"
+#line 3463 "parser.c"
break;
- case 199: /* max_value: "dimen" UNSIGNED */
-#line 888 "parser.y"
+ case 207: /* max_value: "dimen" UNSIGNED */
+#line 921 "parser.y"
{
- #line 7451 "format.w"
+ #line 7890 "format.w"
hset_max(dimen_kind,(yyvsp[0].u));}
-#line 3397 "parser.c"
+#line 3471 "parser.c"
break;
- case 200: /* max_value: "ligature" UNSIGNED */
-#line 891 "parser.y"
+ case 208: /* max_value: "ligature" UNSIGNED */
+#line 924 "parser.y"
{
- #line 7452 "format.w"
+ #line 7891 "format.w"
hset_max(ligature_kind,(yyvsp[0].u));}
-#line 3405 "parser.c"
+#line 3479 "parser.c"
break;
- case 201: /* max_value: "disc" UNSIGNED */
-#line 894 "parser.y"
+ case 209: /* max_value: "disc" UNSIGNED */
+#line 927 "parser.y"
{
- #line 7453 "format.w"
+ #line 7892 "format.w"
hset_max(disc_kind,(yyvsp[0].u));}
-#line 3413 "parser.c"
+#line 3487 "parser.c"
break;
- case 202: /* max_value: "glue" UNSIGNED */
-#line 897 "parser.y"
+ case 210: /* max_value: "glue" UNSIGNED */
+#line 930 "parser.y"
{
- #line 7454 "format.w"
+ #line 7893 "format.w"
hset_max(glue_kind,(yyvsp[0].u));}
-#line 3421 "parser.c"
+#line 3495 "parser.c"
break;
- case 203: /* max_value: "language" UNSIGNED */
-#line 900 "parser.y"
+ case 211: /* max_value: "language" UNSIGNED */
+#line 933 "parser.y"
{
- #line 7455 "format.w"
+ #line 7894 "format.w"
hset_max(language_kind,(yyvsp[0].u));}
-#line 3429 "parser.c"
+#line 3503 "parser.c"
break;
- case 204: /* max_value: "rule" UNSIGNED */
-#line 903 "parser.y"
+ case 212: /* max_value: "rule" UNSIGNED */
+#line 936 "parser.y"
{
- #line 7456 "format.w"
+ #line 7895 "format.w"
hset_max(rule_kind,(yyvsp[0].u));}
-#line 3437 "parser.c"
+#line 3511 "parser.c"
break;
- case 205: /* max_value: "image" UNSIGNED */
-#line 906 "parser.y"
+ case 213: /* max_value: "image" UNSIGNED */
+#line 939 "parser.y"
{
- #line 7457 "format.w"
+ #line 7896 "format.w"
hset_max(image_kind,(yyvsp[0].u));}
-#line 3445 "parser.c"
+#line 3519 "parser.c"
break;
- case 206: /* max_value: "leaders" UNSIGNED */
-#line 909 "parser.y"
+ case 214: /* max_value: "leaders" UNSIGNED */
+#line 942 "parser.y"
{
- #line 7458 "format.w"
+ #line 7897 "format.w"
hset_max(leaders_kind,(yyvsp[0].u));}
-#line 3453 "parser.c"
+#line 3527 "parser.c"
break;
- case 207: /* max_value: "baseline" UNSIGNED */
-#line 912 "parser.y"
+ case 215: /* max_value: "baseline" UNSIGNED */
+#line 945 "parser.y"
{
- #line 7459 "format.w"
+ #line 7898 "format.w"
hset_max(baseline_kind,(yyvsp[0].u));}
-#line 3461 "parser.c"
+#line 3535 "parser.c"
break;
- case 208: /* max_value: "xdimen" UNSIGNED */
-#line 915 "parser.y"
+ case 216: /* max_value: "xdimen" UNSIGNED */
+#line 948 "parser.y"
{
- #line 7460 "format.w"
+ #line 7899 "format.w"
hset_max(xdimen_kind,(yyvsp[0].u));}
-#line 3469 "parser.c"
+#line 3543 "parser.c"
break;
- case 209: /* max_value: "param" UNSIGNED */
-#line 918 "parser.y"
+ case 217: /* max_value: "param" UNSIGNED */
+#line 951 "parser.y"
{
- #line 7461 "format.w"
+ #line 7900 "format.w"
hset_max(param_kind,(yyvsp[0].u));}
-#line 3477 "parser.c"
+#line 3551 "parser.c"
break;
- case 210: /* max_value: "stream (definition)" UNSIGNED */
-#line 921 "parser.y"
+ case 218: /* max_value: "stream (definition)" UNSIGNED */
+#line 954 "parser.y"
{
- #line 7462 "format.w"
+ #line 7901 "format.w"
hset_max(stream_kind,(yyvsp[0].u));}
-#line 3485 "parser.c"
+#line 3559 "parser.c"
break;
- case 211: /* max_value: "page" UNSIGNED */
-#line 924 "parser.y"
+ case 219: /* max_value: "page" UNSIGNED */
+#line 957 "parser.y"
{
- #line 7463 "format.w"
+ #line 7902 "format.w"
hset_max(page_kind,(yyvsp[0].u));}
-#line 3493 "parser.c"
+#line 3567 "parser.c"
break;
- case 212: /* max_value: "range" UNSIGNED */
-#line 927 "parser.y"
+ case 220: /* max_value: "range" UNSIGNED */
+#line 960 "parser.y"
{
- #line 7464 "format.w"
+ #line 7903 "format.w"
hset_max(range_kind,(yyvsp[0].u));}
-#line 3501 "parser.c"
+#line 3575 "parser.c"
break;
- case 213: /* max_value: "label" UNSIGNED */
-#line 930 "parser.y"
+ case 221: /* max_value: "label" UNSIGNED */
+#line 963 "parser.y"
{
- #line 7465 "format.w"
+ #line 7904 "format.w"
hset_max(label_kind,(yyvsp[0].u));}
-#line 3509 "parser.c"
+#line 3583 "parser.c"
break;
- case 214: /* def_node: start "font" ref font ">" */
-#line 936 "parser.y"
+ case 222: /* def_node: start "font" ref font ">" */
+#line 969 "parser.y"
{
- #line 7662 "format.w"
+ #line 8101 "format.w"
DEF((yyval.rf),font_kind,(yyvsp[-2].u));hput_tags((yyvsp[-4].u),(yyvsp[-1].info));}
-#line 3517 "parser.c"
+#line 3591 "parser.c"
break;
- case 215: /* def_node: start "int" ref integer ">" */
-#line 939 "parser.y"
+ case 223: /* def_node: start "int" ref integer ">" */
+#line 972 "parser.y"
{
- #line 7663 "format.w"
+ #line 8102 "format.w"
DEF((yyval.rf),int_kind,(yyvsp[-2].u));hput_tags((yyvsp[-4].u),hput_int((yyvsp[-1].i)));}
-#line 3525 "parser.c"
+#line 3599 "parser.c"
break;
- case 216: /* def_node: start "dimen" ref dimension ">" */
-#line 942 "parser.y"
+ case 224: /* def_node: start "dimen" ref dimension ">" */
+#line 975 "parser.y"
{
- #line 7664 "format.w"
+ #line 8103 "format.w"
DEF((yyval.rf),dimen_kind,(yyvsp[-2].u));hput_tags((yyvsp[-4].u),hput_dimen((yyvsp[-1].d)));}
-#line 3533 "parser.c"
+#line 3607 "parser.c"
break;
- case 217: /* def_node: start "language" ref string ">" */
-#line 945 "parser.y"
+ case 225: /* def_node: start "language" ref string ">" */
+#line 978 "parser.y"
{
- #line 7665 "format.w"
+ #line 8104 "format.w"
DEF((yyval.rf),language_kind,(yyvsp[-2].u));hput_string((yyvsp[-1].s));hput_tags((yyvsp[-4].u),TAG(language_kind,0));}
-#line 3541 "parser.c"
+#line 3615 "parser.c"
break;
- case 218: /* def_node: start "glue" ref glue ">" */
-#line 948 "parser.y"
+ case 226: /* def_node: start "glue" ref glue ">" */
+#line 981 "parser.y"
{
- #line 7666 "format.w"
+ #line 8105 "format.w"
DEF((yyval.rf),glue_kind,(yyvsp[-2].u));hput_tags((yyvsp[-4].u),hput_glue(&((yyvsp[-1].g))));}
-#line 3549 "parser.c"
+#line 3623 "parser.c"
break;
- case 219: /* def_node: start "xdimen" ref xdimen ">" */
-#line 951 "parser.y"
+ case 227: /* def_node: start "xdimen" ref xdimen ">" */
+#line 984 "parser.y"
{
- #line 7667 "format.w"
+ #line 8106 "format.w"
DEF((yyval.rf),xdimen_kind,(yyvsp[-2].u));hput_tags((yyvsp[-4].u),hput_xdimen(&((yyvsp[-1].xd))));}
-#line 3557 "parser.c"
+#line 3631 "parser.c"
break;
- case 220: /* def_node: start "rule" ref rule ">" */
-#line 954 "parser.y"
+ case 228: /* def_node: start "rule" ref rule ">" */
+#line 987 "parser.y"
{
- #line 7668 "format.w"
+ #line 8107 "format.w"
DEF((yyval.rf),rule_kind,(yyvsp[-2].u));hput_tags((yyvsp[-4].u),hput_rule(&((yyvsp[-1].r))));}
-#line 3565 "parser.c"
+#line 3639 "parser.c"
break;
- case 221: /* def_node: start "leaders" ref leaders ">" */
-#line 957 "parser.y"
+ case 229: /* def_node: start "leaders" ref leaders ">" */
+#line 990 "parser.y"
{
- #line 7669 "format.w"
+ #line 8108 "format.w"
DEF((yyval.rf),leaders_kind,(yyvsp[-2].u));hput_tags((yyvsp[-4].u),TAG(leaders_kind,(yyvsp[-1].info)));}
-#line 3573 "parser.c"
+#line 3647 "parser.c"
break;
- case 222: /* def_node: start "baseline" ref baseline ">" */
-#line 960 "parser.y"
+ case 230: /* def_node: start "baseline" ref baseline ">" */
+#line 993 "parser.y"
{
- #line 7670 "format.w"
+ #line 8109 "format.w"
DEF((yyval.rf),baseline_kind,(yyvsp[-2].u));hput_tags((yyvsp[-4].u),TAG(baseline_kind,(yyvsp[-1].info)));}
-#line 3581 "parser.c"
+#line 3655 "parser.c"
break;
- case 223: /* def_node: start "ligature" ref ligature ">" */
-#line 963 "parser.y"
+ case 231: /* def_node: start "ligature" ref ligature ">" */
+#line 996 "parser.y"
{
- #line 7671 "format.w"
+ #line 8110 "format.w"
DEF((yyval.rf),ligature_kind,(yyvsp[-2].u));hput_tags((yyvsp[-4].u),hput_ligature(&((yyvsp[-1].lg))));}
-#line 3589 "parser.c"
+#line 3663 "parser.c"
break;
- case 224: /* def_node: start "disc" ref disc ">" */
-#line 966 "parser.y"
+ case 232: /* def_node: start "disc" ref disc ">" */
+#line 999 "parser.y"
{
- #line 7672 "format.w"
+ #line 8111 "format.w"
DEF((yyval.rf),disc_kind,(yyvsp[-2].u));hput_tags((yyvsp[-4].u),hput_disc(&((yyvsp[-1].dc))));}
-#line 3597 "parser.c"
+#line 3671 "parser.c"
break;
- case 225: /* def_node: start "image" ref image ">" */
-#line 969 "parser.y"
+ case 233: /* def_node: start "image" ref image ">" */
+#line 1002 "parser.y"
{
- #line 7673 "format.w"
- DEF((yyval.rf),image_kind,(yyvsp[-2].u));hput_tags((yyvsp[-4].u),hput_image(&((yyvsp[-1].x))));}
-#line 3605 "parser.c"
+ #line 8112 "format.w"
+ DEF((yyval.rf),image_kind,(yyvsp[-2].u));hput_tags((yyvsp[-4].u),TAG(image_kind,(yyvsp[-1].info)));}
+#line 3679 "parser.c"
break;
- case 226: /* def_node: start "param" ref parameters ">" */
-#line 972 "parser.y"
+ case 234: /* def_node: start "param" ref parameters ">" */
+#line 1005 "parser.y"
{
- #line 7674 "format.w"
+ #line 8113 "format.w"
DEF((yyval.rf),param_kind,(yyvsp[-2].u));hput_tags((yyvsp[-4].u),hput_list((yyvsp[-4].u)+2,&((yyvsp[-1].l))));}
-#line 3613 "parser.c"
+#line 3687 "parser.c"
break;
- case 227: /* def_node: start "page" ref page ">" */
-#line 975 "parser.y"
+ case 235: /* def_node: start "page" ref page ">" */
+#line 1008 "parser.y"
{
- #line 7675 "format.w"
+ #line 8114 "format.w"
DEF((yyval.rf),page_kind,(yyvsp[-2].u));hput_tags((yyvsp[-4].u),TAG(page_kind,0));}
-#line 3621 "parser.c"
+#line 3695 "parser.c"
break;
- case 228: /* def_node: start "int" ref ref ">" */
-#line 980 "parser.y"
+ case 236: /* def_node: start "int" ref ref ">" */
+#line 1013 "parser.y"
{
- #line 7694 "format.w"
+ #line 8133 "format.w"
DEF_REF((yyval.rf),int_kind,(yyvsp[-2].u),(yyvsp[-1].u));hput_tags((yyvsp[-4].u),TAG(int_kind,0));}
-#line 3629 "parser.c"
+#line 3703 "parser.c"
break;
- case 229: /* def_node: start "dimen" ref ref ">" */
-#line 983 "parser.y"
+ case 237: /* def_node: start "dimen" ref ref ">" */
+#line 1016 "parser.y"
{
- #line 7695 "format.w"
+ #line 8134 "format.w"
DEF_REF((yyval.rf),dimen_kind,(yyvsp[-2].u),(yyvsp[-1].u));hput_tags((yyvsp[-4].u),TAG(dimen_kind,0));}
-#line 3637 "parser.c"
+#line 3711 "parser.c"
break;
- case 230: /* def_node: start "glue" ref ref ">" */
-#line 986 "parser.y"
+ case 238: /* def_node: start "glue" ref ref ">" */
+#line 1019 "parser.y"
{
- #line 7696 "format.w"
+ #line 8135 "format.w"
DEF_REF((yyval.rf),glue_kind,(yyvsp[-2].u),(yyvsp[-1].u));hput_tags((yyvsp[-4].u),TAG(glue_kind,0));}
-#line 3645 "parser.c"
+#line 3719 "parser.c"
break;
- case 232: /* def_list: def_list def_node */
-#line 991 "parser.y"
+ case 240: /* def_list: def_list def_node */
+#line 1024 "parser.y"
{
- #line 7810 "format.w"
+ #line 8249 "format.w"
check_param_def(&((yyvsp[0].rf)));}
-#line 3653 "parser.c"
+#line 3727 "parser.c"
break;
- case 233: /* parameters: estimate def_list */
-#line 994 "parser.y"
+ case 241: /* parameters: estimate def_list */
+#line 1027 "parser.y"
{
- #line 7811 "format.w"
+ #line 8250 "format.w"
(yyval.l).p= (yyvsp[0].u);(yyval.l).k= param_kind;(yyval.l).s= (hpos-hstart)-(yyvsp[0].u);}
-#line 3661 "parser.c"
+#line 3735 "parser.c"
break;
- case 234: /* empty_param_list: position */
-#line 998 "parser.y"
+ case 242: /* empty_param_list: position */
+#line 1031 "parser.y"
{
- #line 7832 "format.w"
+ #line 8271 "format.w"
HPUTX(2);hpos++;hput_tags((yyvsp[0].u),TAG(param_kind,1));}
-#line 3669 "parser.c"
+#line 3743 "parser.c"
break;
- case 235: /* $@12: %empty */
-#line 1001 "parser.y"
+ case 243: /* $@12: %empty */
+#line 1034 "parser.y"
{
- #line 7833 "format.w"
+ #line 8272 "format.w"
hpos= hpos-2;}
-#line 3677 "parser.c"
+#line 3751 "parser.c"
break;
- case 236: /* non_empty_param_list: start "param" $@12 parameters ">" */
-#line 1004 "parser.y"
+ case 244: /* non_empty_param_list: start "param" $@12 parameters ">" */
+#line 1037 "parser.y"
{
- #line 7834 "format.w"
+ #line 8273 "format.w"
hput_tags((yyvsp[-4].u)-2,hput_list((yyvsp[-4].u)-1,&((yyvsp[-1].l))));}
-#line 3685 "parser.c"
+#line 3759 "parser.c"
break;
- case 238: /* font_head: string dimension UNSIGNED UNSIGNED */
-#line 1012 "parser.y"
+ case 246: /* font_head: string dimension UNSIGNED UNSIGNED */
+#line 1045 "parser.y"
{
- #line 7976 "format.w"
+ #line 8415 "format.w"
uint8_t f= (yyvsp[-4].u);SET_DBIT(f,font_kind);hfont_name[f]= strdup((yyvsp[-3].s));(yyval.info)= hput_font_head(f,hfont_name[f],(yyvsp[-2].d),(yyvsp[-1].u),(yyvsp[0].u));}
-#line 3693 "parser.c"
+#line 3767 "parser.c"
break;
- case 241: /* font_param: start "penalty" fref penalty ">" */
-#line 1019 "parser.y"
+ case 249: /* font_param: start "penalty" fref penalty ">" */
+#line 1052 "parser.y"
{
- #line 7981 "format.w"
+ #line 8420 "format.w"
hput_tags((yyvsp[-4].u),hput_int((yyvsp[-1].i)));}
-#line 3701 "parser.c"
+#line 3775 "parser.c"
break;
- case 242: /* font_param: start "kern" fref kern ">" */
-#line 1022 "parser.y"
+ case 250: /* font_param: start "kern" fref kern ">" */
+#line 1055 "parser.y"
{
- #line 7982 "format.w"
+ #line 8421 "format.w"
hput_tags((yyvsp[-4].u),hput_kern(&((yyvsp[-1].kt))));}
-#line 3709 "parser.c"
+#line 3783 "parser.c"
break;
- case 243: /* font_param: start "ligature" fref ligature ">" */
-#line 1025 "parser.y"
+ case 251: /* font_param: start "ligature" fref ligature ">" */
+#line 1058 "parser.y"
{
- #line 7983 "format.w"
+ #line 8422 "format.w"
hput_tags((yyvsp[-4].u),hput_ligature(&((yyvsp[-1].lg))));}
-#line 3717 "parser.c"
+#line 3791 "parser.c"
break;
- case 244: /* font_param: start "disc" fref disc ">" */
-#line 1028 "parser.y"
+ case 252: /* font_param: start "disc" fref disc ">" */
+#line 1061 "parser.y"
{
- #line 7984 "format.w"
+ #line 8423 "format.w"
hput_tags((yyvsp[-4].u),hput_disc(&((yyvsp[-1].dc))));}
-#line 3725 "parser.c"
+#line 3799 "parser.c"
break;
- case 245: /* font_param: start "glue" fref glue ">" */
-#line 1031 "parser.y"
+ case 253: /* font_param: start "glue" fref glue ">" */
+#line 1064 "parser.y"
{
- #line 7985 "format.w"
+ #line 8424 "format.w"
hput_tags((yyvsp[-4].u),hput_glue(&((yyvsp[-1].g))));}
-#line 3733 "parser.c"
+#line 3807 "parser.c"
break;
- case 246: /* font_param: start "language" fref string ">" */
-#line 1034 "parser.y"
+ case 254: /* font_param: start "language" fref string ">" */
+#line 1067 "parser.y"
{
- #line 7986 "format.w"
+ #line 8425 "format.w"
hput_string((yyvsp[-1].s));hput_tags((yyvsp[-4].u),TAG(language_kind,0));}
-#line 3741 "parser.c"
+#line 3815 "parser.c"
break;
- case 247: /* font_param: start "rule" fref rule ">" */
-#line 1037 "parser.y"
+ case 255: /* font_param: start "rule" fref rule ">" */
+#line 1070 "parser.y"
{
- #line 7987 "format.w"
+ #line 8426 "format.w"
hput_tags((yyvsp[-4].u),hput_rule(&((yyvsp[-1].r))));}
-#line 3749 "parser.c"
+#line 3823 "parser.c"
break;
- case 248: /* font_param: start "image" fref image ">" */
-#line 1040 "parser.y"
+ case 256: /* font_param: start "image" fref image ">" */
+#line 1073 "parser.y"
{
- #line 7988 "format.w"
- hput_tags((yyvsp[-4].u),hput_image(&((yyvsp[-1].x))));}
-#line 3757 "parser.c"
+ #line 8427 "format.w"
+ hput_tags((yyvsp[-4].u),TAG(image_kind,(yyvsp[-1].info)));}
+#line 3831 "parser.c"
break;
- case 249: /* fref: ref */
-#line 1044 "parser.y"
+ case 257: /* fref: ref */
+#line 1077 "parser.y"
{
- #line 7990 "format.w"
+ #line 8429 "format.w"
RNG("Font parameter",(yyvsp[0].u),0,MAX_FONT_PARAMS);}
-#line 3765 "parser.c"
+#line 3839 "parser.c"
break;
- case 250: /* xdimen_ref: ref */
-#line 1048 "parser.y"
+ case 258: /* xdimen_ref: ref */
+#line 1081 "parser.y"
{
- #line 8063 "format.w"
+ #line 8502 "format.w"
REF(xdimen_kind,(yyvsp[0].u));}
-#line 3773 "parser.c"
+#line 3847 "parser.c"
break;
- case 251: /* param_ref: ref */
-#line 1051 "parser.y"
+ case 259: /* param_ref: ref */
+#line 1084 "parser.y"
{
- #line 8064 "format.w"
+ #line 8503 "format.w"
REF(param_kind,(yyvsp[0].u));}
-#line 3781 "parser.c"
+#line 3855 "parser.c"
break;
- case 252: /* stream_ref: ref */
-#line 1054 "parser.y"
+ case 260: /* stream_ref: ref */
+#line 1087 "parser.y"
{
- #line 8065 "format.w"
+ #line 8504 "format.w"
REF_RNG(stream_kind,(yyvsp[0].u));}
-#line 3789 "parser.c"
+#line 3863 "parser.c"
break;
- case 253: /* content_node: start "penalty" ref ">" */
-#line 1060 "parser.y"
+ case 261: /* content_node: start "penalty" ref ">" */
+#line 1093 "parser.y"
{
- #line 8069 "format.w"
+ #line 8508 "format.w"
REF(penalty_kind,(yyvsp[-1].u));hput_tags((yyvsp[-3].u),TAG(penalty_kind,0));}
-#line 3797 "parser.c"
+#line 3871 "parser.c"
break;
- case 254: /* content_node: start "kern" explicit ref ">" */
-#line 1064 "parser.y"
+ case 262: /* content_node: start "kern" explicit ref ">" */
+#line 1097 "parser.y"
{
- #line 8071 "format.w"
+ #line 8510 "format.w"
REF(dimen_kind,(yyvsp[-1].u));hput_tags((yyvsp[-4].u),TAG(kern_kind,((yyvsp[-2].b))?b100:b000));}
-#line 3805 "parser.c"
+#line 3879 "parser.c"
break;
- case 255: /* content_node: start "kern" explicit "xdimen" ref ">" */
-#line 1068 "parser.y"
+ case 263: /* content_node: start "kern" explicit "xdimen" ref ">" */
+#line 1101 "parser.y"
{
- #line 8073 "format.w"
+ #line 8512 "format.w"
REF(xdimen_kind,(yyvsp[-1].u));hput_tags((yyvsp[-5].u),TAG(kern_kind,((yyvsp[-3].b))?b101:b001));}
-#line 3813 "parser.c"
+#line 3887 "parser.c"
break;
- case 256: /* content_node: start "glue" ref ">" */
-#line 1071 "parser.y"
+ case 264: /* content_node: start "glue" ref ">" */
+#line 1104 "parser.y"
{
- #line 8074 "format.w"
+ #line 8513 "format.w"
REF(glue_kind,(yyvsp[-1].u));hput_tags((yyvsp[-3].u),TAG(glue_kind,0));}
-#line 3821 "parser.c"
+#line 3895 "parser.c"
break;
- case 257: /* content_node: start "ligature" ref ">" */
-#line 1074 "parser.y"
+ case 265: /* content_node: start "ligature" ref ">" */
+#line 1107 "parser.y"
{
- #line 8075 "format.w"
+ #line 8514 "format.w"
REF(ligature_kind,(yyvsp[-1].u));hput_tags((yyvsp[-3].u),TAG(ligature_kind,0));}
-#line 3829 "parser.c"
+#line 3903 "parser.c"
break;
- case 258: /* content_node: start "disc" ref ">" */
-#line 1077 "parser.y"
+ case 266: /* content_node: start "disc" ref ">" */
+#line 1110 "parser.y"
{
- #line 8076 "format.w"
+ #line 8515 "format.w"
REF(disc_kind,(yyvsp[-1].u));hput_tags((yyvsp[-3].u),TAG(disc_kind,0));}
-#line 3837 "parser.c"
+#line 3911 "parser.c"
break;
- case 259: /* content_node: start "rule" ref ">" */
-#line 1080 "parser.y"
+ case 267: /* content_node: start "rule" ref ">" */
+#line 1113 "parser.y"
{
- #line 8077 "format.w"
+ #line 8516 "format.w"
REF(rule_kind,(yyvsp[-1].u));hput_tags((yyvsp[-3].u),TAG(rule_kind,0));}
-#line 3845 "parser.c"
+#line 3919 "parser.c"
break;
- case 260: /* content_node: start "image" ref ">" */
-#line 1083 "parser.y"
+ case 268: /* content_node: start "image" ref ">" */
+#line 1116 "parser.y"
{
- #line 8078 "format.w"
+ #line 8517 "format.w"
REF(image_kind,(yyvsp[-1].u));hput_tags((yyvsp[-3].u),TAG(image_kind,0));}
-#line 3853 "parser.c"
+#line 3927 "parser.c"
break;
- case 261: /* content_node: start "leaders" ref ">" */
-#line 1086 "parser.y"
+ case 269: /* content_node: start "leaders" ref ">" */
+#line 1119 "parser.y"
{
- #line 8079 "format.w"
+ #line 8518 "format.w"
REF(leaders_kind,(yyvsp[-1].u));hput_tags((yyvsp[-3].u),TAG(leaders_kind,0));}
-#line 3861 "parser.c"
+#line 3935 "parser.c"
break;
- case 262: /* content_node: start "baseline" ref ">" */
-#line 1089 "parser.y"
+ case 270: /* content_node: start "baseline" ref ">" */
+#line 1122 "parser.y"
{
- #line 8080 "format.w"
+ #line 8519 "format.w"
REF(baseline_kind,(yyvsp[-1].u));hput_tags((yyvsp[-3].u),TAG(baseline_kind,0));}
-#line 3869 "parser.c"
+#line 3943 "parser.c"
break;
- case 263: /* content_node: start "language" REFERENCE ">" */
-#line 1092 "parser.y"
+ case 271: /* content_node: start "language" REFERENCE ">" */
+#line 1125 "parser.y"
{
- #line 8081 "format.w"
+ #line 8520 "format.w"
REF(language_kind,(yyvsp[-1].u));hput_tags((yyvsp[-3].u),hput_language((yyvsp[-1].u)));}
-#line 3877 "parser.c"
+#line 3951 "parser.c"
break;
- case 264: /* glue_node: start "glue" ref ">" */
-#line 1096 "parser.y"
+ case 272: /* glue_node: start "glue" ref ">" */
+#line 1129 "parser.y"
{
- #line 8083 "format.w"
+ #line 8522 "format.w"
REF(glue_kind,(yyvsp[-1].u));
if((yyvsp[-1].u)==zero_skip_no){hpos= hpos-2;(yyval.b)= false;}
else{hput_tags((yyvsp[-3].u),TAG(glue_kind,0));(yyval.b)= true;}}
-#line 3887 "parser.c"
+#line 3961 "parser.c"
break;
- case 265: /* $@13: %empty */
-#line 1103 "parser.y"
+ case 273: /* $@13: %empty */
+#line 1136 "parser.y"
{
- #line 8514 "format.w"
+ #line 8953 "format.w"
hput_content_start();}
-#line 3895 "parser.c"
+#line 3969 "parser.c"
break;
- case 266: /* content_section: "<" "content" $@13 content_list ">" */
-#line 1106 "parser.y"
+ case 274: /* content_section: "<" "content" $@13 content_list ">" */
+#line 1139 "parser.y"
{
- #line 8515 "format.w"
+ #line 8954 "format.w"
hput_content_end();hput_range_defs();hput_label_defs();}
-#line 3903 "parser.c"
+#line 3977 "parser.c"
break;
-#line 3907 "parser.c"
+#line 3981 "parser.c"
default: break;
}
@@ -4127,6 +4201,6 @@ yyreturnlab:
return yyresult;
}
-#line 1110 "parser.y"
+#line 1143 "parser.y"
- /*:512*/
+ /*:520*/
diff --git a/Build/source/texk/web2c/hitexdir/hiparser.h b/Build/source/texk/web2c/hitexdir/hiparser.h
index 90c9d2890b2..4dd448d2739 100644
--- a/Build/source/texk/web2c/hitexdir/hiparser.h
+++ b/Build/source/texk/web2c/hitexdir/hiparser.h
@@ -39,7 +39,7 @@
# define YY_YY_PARSER_H_INCLUDED
/* Debug traces. */
#ifndef YYDEBUG
-# define YYDEBUG 0
+# define YYDEBUG 1
#endif
#if YYDEBUG
extern int yydebug;
@@ -117,26 +117,28 @@ extern int yydebug;
TABLE = 318, /* "table" */
ITEM = 319, /* "item" */
IMAGE = 320, /* "image" */
- LABEL = 321, /* "label" */
- BOT = 322, /* "bot" */
- MID = 323, /* "mid" */
- LINK = 324, /* "link" */
- OUTLINE = 325, /* "outline" */
- STREAM = 326, /* "stream" */
- STREAMDEF = 327, /* "stream (definition)" */
- FIRST = 328, /* "first" */
- LAST = 329, /* "last" */
- TOP = 330, /* "top" */
- NOREFERENCE = 331, /* "*" */
- PAGE = 332, /* "page" */
- RANGE = 333, /* "range" */
- DIRECTORY = 334, /* "directory" */
- SECTION = 335, /* "entry" */
- DEFINITIONS = 336, /* "definitions" */
- MAX = 337, /* "max" */
- PARAM = 338, /* "param" */
- FONT = 339, /* "font" */
- CONTENT = 340 /* "content" */
+ WIDTH = 321, /* "width" */
+ HEIGHT = 322, /* "height" */
+ LABEL = 323, /* "label" */
+ BOT = 324, /* "bot" */
+ MID = 325, /* "mid" */
+ LINK = 326, /* "link" */
+ OUTLINE = 327, /* "outline" */
+ STREAM = 328, /* "stream" */
+ STREAMDEF = 329, /* "stream (definition)" */
+ FIRST = 330, /* "first" */
+ LAST = 331, /* "last" */
+ TOP = 332, /* "top" */
+ NOREFERENCE = 333, /* "*" */
+ PAGE = 334, /* "page" */
+ RANGE = 335, /* "range" */
+ DIRECTORY = 336, /* "directory" */
+ SECTION = 337, /* "entry" */
+ DEFINITIONS = 338, /* "definitions" */
+ MAX = 339, /* "max" */
+ PARAM = 340, /* "param" */
+ FONT = 341, /* "font" */
+ CONTENT = 342 /* "content" */
};
typedef enum yytokentype yytoken_kind_t;
#endif
@@ -147,7 +149,7 @@ union YYSTYPE
{
#line 79 "parser.y"
- #line 10341 "format.w"
+ #line 10791 "format.w"
uint32_t u; int32_t i; char *s; float64_t f; Glyph c;
Dimen d;Stretch st;Xdimen xd;Kern kt;
Rule r;Glue g;Image x;
@@ -155,7 +157,7 @@ union YYSTYPE
Ref rf;Info info;Order o;bool b;
-#line 159 "hiparser.h"
+#line 161 "hiparser.h"
};
typedef union YYSTYPE YYSTYPE;
diff --git a/Build/source/texk/web2c/hitexdir/hitex.w b/Build/source/texk/web2c/hitexdir/hitex.w
index eb6b828060c..c026b5fed49 100644
--- a/Build/source/texk/web2c/hitexdir/hitex.w
+++ b/Build/source/texk/web2c/hitexdir/hitex.w
@@ -3772,7 +3772,8 @@ documentation.
@p @<Declare procedures needed for displaying the elements of mlists@>@;
@<Declare the procedure called |print_skip_param|@>@;
static void print_xdimen(pointer p)
-{ print_scaled(xdimen_width(p));
+{ if (p==null) { print_scaled(0); return; }
+ print_scaled(xdimen_width(p));
if (xdimen_hfactor(p)!=0)
{ print_char('+');print_scaled(xdimen_hfactor(p));print("*hsize");}
if (xdimen_vfactor(p)!=0)
@@ -4052,7 +4053,8 @@ specification is being withdrawn.
@p static void delete_glue_ref(pointer @!p) /*|p| points to a glue specification*/
fast_delete_glue_ref(p)
static void delete_xdimen_ref(pointer @!p) /*|p| points to a xdimen specification*/
-{@+if (xdimen_ref_count(p)==null) free_node(p, xdimen_node_size);
+{@+if (p==null) return;
+ if (xdimen_ref_count(p)==null) free_node(p, xdimen_node_size);
else decr(xdimen_ref_count(p));
}
@@ -4117,7 +4119,7 @@ to break \TeX\ by overflowing a reference count. But who would want to do that?)
@d add_token_ref(A) incr(token_ref_count(A)) /*new reference to a token list*/
@d add_glue_ref(A) incr(glue_ref_count(A)) /*new reference to a glue spec*/
-@d add_xdimen_ref(A) incr(xdimen_ref_count(A)) /*new reference to an xdimen*/
+@d add_xdimen_ref(A) if (A!=null) incr(xdimen_ref_count(A)) /*new reference to an xdimen*/
@ The copying procedure copies words en masse without bothering
to look at their individual fields. If the node format changes---for
@@ -8964,7 +8966,8 @@ if (abs(mode)!=m)
if (level!=tok_val) scanned_result(0, dimen_val)@;
else scanned_result(0, int_val);
}
-else if (m==vmode) scanned_result(prev_depth, dimen_val)@;
+else if (m==vmode)
+ scanned_result(prev_depth==unknown_depth?0:prev_depth, dimen_val)@;
else scanned_result(space_factor, int_val)
@ @<Fetch the |dead_cycles| or the |insert_penalties|@>=
@@ -13827,8 +13830,7 @@ baselineskip calculation is handled by the |append_to_vlist| routine.
@p static void append_to_vlist(pointer @!b)@t\2\2@>@/
{ bool height_known;@t\1@>@/
height_known=(type(b)==hlist_node || type(b)==vlist_node ||@|
- (type(b)==whatsit_node && subtype(b)==hset_node) ||@|
- (type(b)==whatsit_node && subtype(b)==image_node));@/
+ (type(b)==whatsit_node && subtype(b)==hset_node));@/
if (prev_depth > ignore_depth && height_known)@/
{@+scaled d;@t\1@> /*deficiency of space between baselines*/
pointer @!p; /*a new glue node*/
@@ -13845,8 +13847,10 @@ baselineskip calculation is handled by the |append_to_vlist| routine.
link(tail)= p;tail= p;
}
link(tail)=b;tail=b;
- if (height_known)
- prev_depth=depth(b); /* then also depth is known */
+ if (height_known ||
+ (type(b)==whatsit_node &&
+ (subtype(b)==hpack_node || subtype(b)==vpack_node)))
+ prev_depth=depth(b); /* then also depth is (probably) known */
else
prev_depth=unknown_depth;
}
@@ -25408,21 +25412,21 @@ to hold the string numbers for name, area, and extension.
@d open_ext(A) link(A+2) /*string number of file extension for |open_name|*/ @#
@d hitex_ext save_pos_code+1
-@d par_node hitex_ext /*|subtype| that records the change of a parameter*/
-@d par_node_size 3 /* number of memory words in a |par_node| */
-@d par_type(A) type(A+1) /* type of parameter */
+@d param_node hitex_ext /*|subtype| that records the change of a parameter*/
+@d param_node_size 3 /* number of memory words in a |param_node| */
+@d param_type(A) type(A+1) /* type of parameter */
@d int_type 0 /* type of an |int_par| node */
@d dimen_type 1 /* type of an |dimen_par| node */
@d glue_type 2 /* type of an |glue_par| node */
-@d par_number(A) subtype(A+1) /* the parameter number */
-@d par_value(A) mem[A+2] /* the parameter value */@#
+@d param_no(A) subtype(A+1) /* the parameter number */
+@d param_value(A) mem[A+2] /* the parameter value */@#
-@d graf_node hitex_ext+1 /*|subtype| that records a paragraph*/
-@d graf_node_size 5 /* number of memory words in a |graf_node| */
-@d graf_penalty(A) mem[A+1].i /* the final penalty */
-@d graf_extent(A) link(A+3) /* the extent */@#
-@d graf_params(A) info(A+4) /* list of parameter nodes */
-@d graf_list(A) link(A+4) /* list of content nodes */
+@d par_node hitex_ext+1 /*|subtype| that records a paragraph*/
+@d par_node_size 5 /* number of memory words in a |par_node| */
+@d par_penalty(A) mem[A+1].i /* the final penalty */
+@d par_extent(A) link(A+3) /* the extent */@#
+@d par_params(A) info(A+4) /* list of parameter nodes */
+@d par_list(A) link(A+4) /* list of content nodes */
@d disp_node hitex_ext+2 /*|subtype| that records a math display*/
@d disp_node_size 3 /* number of memory words in a |disp_node| */
@@ -25436,19 +25440,15 @@ to hold the string numbers for name, area, and extension.
@d baseline_node_size small_node_size /* This is 2; we will convert baseline nodes to glue nodes */
@d baseline_node_no(A) mem[A+1].i /* baseline reference */@#
-@d image_node hitex_ext+4 /*|subtype| that records an image */
-@d image_node_size 9 /* width, depth, height, |shift_amount| like a hbox */
-@d image_width(A) width(A) /*width of image */
-@d image_height(A) height(A) /*height of image */
-@d image_depth(A) depth(A) /* depth of image==zero */
-@d image_no(A) mem[A+4].i /* the section number */
-@d image_stretch(A) mem[A+5].sc /*stretchability of image */
-@d image_shrink(A) mem[A+6].sc /*shrinkability of image */
-@d image_stretch_order(A) stretch_order(A+7)
-@d image_shrink_order(A) shrink_order(A+7)
-@d image_name(A) link(A+7) /*string number of file name */
-@d image_area(A) info(A+8) /*string number of file area */
-@d image_ext(A) link(A+8) /*string number of file extension */@#
+@d image_node hitex_ext+4 /*|subtype| that records an image */
+@d image_node_size 5 /* number of memory words in an |image_node| */
+@d image_xwidth(A) link(A+1) /*extended width of image */
+@d image_xheight(A) info(A+1) /*extended height of image */
+@d image_no(A) link(A+2) /* the section number */
+@d image_name(A) info(A+2) /*string number of file name */
+@d image_area(A) info(A+3) /*string number of file area */
+@d image_ext(A) link(A+3) /*string number of file extension */
+@d image_alt(A) link(A+4) /* alternative image description text */@#
@d hpack_node hitex_ext+5 /* a hlist that needs to go to hpack */
@d vpack_node hitex_ext+6 /* a vlist that needs to go to vpackage */
@@ -25624,8 +25624,8 @@ case extension: switch (chr_code) {
case write_node: print_esc("write");@+break;
case close_node: print_esc("closeout");@+break;
case special_node: print_esc("special");@+break;
- case par_node: print("parameter");@+break;
- case graf_node: print("paragraf");@+break;
+ case param_node: print("parameter");@+break;
+ case par_node: print("paragraf");@+break;
case disp_node: print("display");@+break;
case baseline_node: print("baselineskip");@+break;
case hpack_node: print("hpack");@+break;
@@ -25665,8 +25665,8 @@ case open_node: @<Implement \.{\\openout}@>@;@+break;
case write_node: @<Implement \.{\\write}@>@;@+break;
case close_node: @<Implement \.{\\closeout}@>@;@+break;
case special_node: @<Implement \.{\\special}@>@;@+break;
+case param_node:
case par_node:
-case graf_node:
case disp_node:
case baseline_node:
case hpack_node:
@@ -25681,21 +25681,12 @@ case image_node:@/
p=new_image_node(cur_name,cur_area,cur_ext);
loop {
if (scan_keyword("width"))
- {@+scan_normal_dimen;@+image_width(p)=cur_val;}
+ {@+scan_normal_dimen; image_xwidth(p)=new_xdimen(cur_val,cur_hfactor,cur_vfactor); }
else if (scan_keyword("height"))
- {@+scan_normal_dimen;image_height(p)=cur_val; }
- else if (scan_keyword("plus"))
- { scan_dimen(false, true, false);
- image_stretch(p)=cur_val;image_stretch_order(p)=cur_order;
- }
- else if (scan_keyword("minus"))
- { scan_dimen(false, true, false);
- image_shrink(p)=cur_val;image_shrink_order(p)=cur_order;
- }
+ {@+scan_normal_dimen; image_xheight(p)=new_xdimen(cur_val,cur_hfactor,cur_vfactor); }
else
break;
}
- hget_image_information(p);
if (abs(mode)==vmode)
append_to_vlist(p); /* image nodes have height, width, and depth like boxes */
else
@@ -25749,9 +25740,11 @@ case setpage_node:
if (scan_keyword("priority"))
{@+scan_eight_bit_int();setpage_priority(t)=cur_val; }
else if (scan_keyword("width"))
- {@+scan_normal_dimen; setpage_width(t)=new_xdimen(cur_val,cur_hfactor,cur_vfactor); }
+ {@+scan_normal_dimen; delete_xdimen_ref(setpage_width(t));
+ setpage_width(t)=new_xdimen(cur_val,cur_hfactor,cur_vfactor); }
else if (scan_keyword("height"))
- {@+scan_normal_dimen; setpage_height(t)=new_xdimen(cur_val,cur_hfactor,cur_vfactor); }
+ {@+scan_normal_dimen; delete_xdimen_ref(setpage_height(t));
+ setpage_height(t)=new_xdimen(cur_val,cur_hfactor,cur_vfactor); }
else
break;
}
@@ -25932,17 +25925,17 @@ case language_node: {@+print_esc("setlanguage");
print_int(what_rhm(p));print_char(')');
} @+break;
@/@<Cases for displaying the |whatsit| node@>@/
-case par_node: print_esc("parameter ");
- print_int(par_type(p));print_char(',');print_int(par_number(p));
- print_char(':');print_int(par_value(p).i);
+case param_node: print_esc("parameter ");
+ print_int(param_type(p));print_char(',');print_int(param_no(p));
+ print_char(':');print_int(param_value(p).i);
break;
-case graf_node: print_esc("paragraf(");
- print_xdimen(graf_extent(p));
+case par_node: print_esc("paragraf(");
+ print_xdimen(par_extent(p));
print(", ");
- print_int(graf_penalty(p));
+ print_int(par_penalty(p));
print_char(')');
- node_list_display(graf_params(p));
- node_list_display(graf_list(p));
+ node_list_display(par_params(p));
+ node_list_display(par_list(p));
break;
case disp_node: print_esc("display ");
node_list_display(display_eqno(p));
@@ -25983,12 +25976,9 @@ case hpack_node: case vpack_node:
break;
case image_node:
print_esc("HINTimage(");
- print_char('(');print_scaled(image_height(p));
- print_char('+'); print_scaled(image_depth(p));
- print(")x"); print_scaled(image_width(p));
- if (image_stretch(p)!=0) { print(" plus ");print_glue(image_stretch(p), image_stretch_order(p),"pt"); }
- if (image_shrink(p)!=0) { print(" minus ");print_glue(image_shrink(p), image_shrink_order(p), "pt"); }
- print(", section ");print_int(image_no(p));
+ print("width ");print_xdimen(image_xheight(p));
+ print(" height "); print_xdimen(image_xwidth(p));
+ print("), section ");print_int(image_no(p));
if (image_name(p)!=0) {print(", "); printn(image_name(p));}
break;
case align_node:
@@ -26075,17 +26065,17 @@ case close_node: case language_node: {@+r=get_node(small_node_size);
words=small_node_size;
} @+break;
@/@<Cases for making a partial copy of the whatsit node@>@/
+case param_node:
+{@+r=get_node(param_node_size);
+ if (param_type(p)==glue_type) add_glue_ref(param_value(p).i);
+ words=param_node_size;
+ } @+break;
case par_node:
{@+r=get_node(par_node_size);
- if (par_type(p)==glue_type) add_glue_ref(par_value(p).i);
- words=par_node_size;
- } @+break;
-case graf_node:
-{@+r=get_node(graf_node_size);
- add_xdimen_ref(graf_extent(p));
- graf_params(r)=copy_node_list(graf_params(p));
- graf_list(r)=copy_node_list(graf_list(p));
- words=graf_node_size-1;
+ add_xdimen_ref(par_extent(p));
+ par_params(r)=copy_node_list(par_params(p));
+ par_list(r)=copy_node_list(par_list(p));
+ words=par_node_size-1;
} @+break;
case disp_node:
{@+r=get_node(disp_node_size);
@@ -26116,7 +26106,9 @@ case hset_node: case vset_node:
} @+break;
case image_node:
r=get_node(image_node_size);
- words=image_node_size;
+ add_xdimen_ref(image_xheight(p));add_xdimen_ref(image_xwidth(p));
+ image_alt(r)=copy_node_list(image_alt(p));
+ words=image_node_size-1;
break;
case align_node:
{@+r=get_node(align_node_size);
@@ -26189,14 +26181,14 @@ case write_node: case special_node: {@+delete_token_ref(write_tokens(p));
free_node(p, write_node_size);goto done;
}
case close_node: case language_node: free_node(p, small_node_size);@+break;
+case param_node:
+ if (param_type(p)==glue_type) fast_delete_glue_ref(param_value(p).i);
+ free_node(p, param_node_size);@+break;
case par_node:
- if (par_type(p)==glue_type) fast_delete_glue_ref(par_value(p).i);
+ delete_xdimen_ref(par_extent(p));
+ flush_node_list(par_params(p));
+ flush_node_list(par_list(p));
free_node(p, par_node_size);@+break;
-case graf_node:
- delete_xdimen_ref(graf_extent(p));
- flush_node_list(graf_params(p));
- flush_node_list(graf_list(p));
- free_node(p, graf_node_size);@+break;
case disp_node:
flush_node_list(display_eqno(p));
flush_node_list(display_formula(p));
@@ -26213,6 +26205,8 @@ case hset_node: case vset_node:
flush_node_list(list_ptr(p));
free_node(p, set_node_size);@+break;
case image_node:
+ delete_xdimen_ref(image_xwidth(p)); delete_xdimen_ref(image_xheight(p));
+ flush_node_list(image_alt(p));
free_node(p,image_node_size);@+break;
case align_node:
delete_xdimen_ref(align_extent(p));
@@ -30107,7 +30101,6 @@ static pointer new_setstream_node(eight_bits n);
static pointer new_setpage_node(eight_bits k, str_number n);
static pointer new_disp_node(void);
static pointer new_image_node(str_number n, char *a, char *e);
-static void hget_image_information(pointer p);
static void new_param_node(eight_bits t, eight_bits n, int v);
@@ -30142,13 +30135,15 @@ The following functions create nodes for paragraphs, displayed equations, baseli
hpack nodes, vpack nodes, hset nodes, vset nodes, and image nodes.
@<Hi\TeX\ routines@>=
-static pointer new_graf_node(void)
+static pointer new_par_node(void)
{ @+ pointer p;
- p=get_node(graf_node_size);
+ p=get_node(par_node_size);
type(p)=whatsit_node;
- subtype(p)=graf_node;
- graf_params(p)=null;
- graf_list(p)=null;
+ subtype(p)=par_node;
+ par_params(p)=null;
+ par_list(p)=null;
+ par_extent(p)=null;
+ depth(p)=0;
return p;
}
@@ -30180,6 +30175,7 @@ static pointer new_pack_node(void)
subtype(p)=hpack_node;
width(p)=depth(p)=height(p)=shift_amount(p)=0;
pack_limit(p)=max_dimen;
+ pack_extent(p)=null;
list_ptr(p)=null;
return p;
}
@@ -30189,7 +30185,8 @@ static pointer new_set_node(void)
p=get_node(set_node_size);
type(p)=whatsit_node;
subtype(p)=hset_node;
- width(p)=depth(p)=height(p)=shift_amount(p)=set_stretch(p)=set_shrink(p)=set_extent(p)=0;
+ width(p)=depth(p)=height(p)=shift_amount(p)=set_stretch(p)=set_shrink(p)=0;
+ set_extent(p)=null;
list_ptr(p)=null;
return p;
}
@@ -30202,7 +30199,6 @@ static pointer new_image_node( str_number n, char *a, char *e)
int i;
char *fn;
int l;
-
p=get_node(image_node_size);type(p)=whatsit_node;subtype(p)=image_node;
image_name(p)=n;
image_area(p)=s_no(a);
@@ -30216,8 +30212,7 @@ static pointer new_image_node( str_number n, char *a, char *e)
free(fn);
#endif
image_no(p)=i;
- image_width(p)=image_height(p)=image_stretch(p)=image_shrink(p)=0;
- image_shrink_order(p)=image_stretch_order(p)=normal;@/
+ image_xwidth(p)=image_xheight(p)=image_alt(p)=null;
return p;
}
@@ -30230,19 +30225,19 @@ some time when setting and restoring them later.
There is probably not much savings in memory space, because
most of the times a reference number is found for the parameter list.
@<Create the parameter node@>=
- p=get_node(par_node_size);
+ p=get_node(param_node_size);
type(p)=whatsit_node;
- subtype(p)=par_node;
- par_type(p)=t;
- par_number(p)=n;
+ subtype(p)=param_node;
+ param_type(p)=t;
+ param_no(p)=n;
@ @<Initialize the parameter node@>=
- if (t==int_type) par_value(p).i=v;
- else if (t==dimen_type) par_value(p).sc=v;
+ if (t==int_type) param_value(p).i=v;
+ else if (t==dimen_type) param_value(p).sc=v;
else if (t==glue_type)
- {@+ par_value(p).i=v;add_glue_ref(par_value(p).i); @+}
+ {@+ param_value(p).i=v;add_glue_ref(param_value(p).i); @+}
else
- { free_node(p, par_node_size);
+ { free_node(p, param_node_size);
QUIT("Undefined parameter type %d",t);
}
@@ -30288,6 +30283,7 @@ static void hline_break(int final_widow_penalty)
{@+ bool auto_breaking; /*is node |cur_p| outside a formula?*/
pointer r, s ; /*miscellaneous nodes of temporary interest*/
pointer pp;
+ scaled par_max_depth=0;
bool par_shape_fix=false;
if (DBGTEX&debugflags)
{ print_ln();print("Before hline_break:\n");
@@ -30300,10 +30296,10 @@ static void hline_break(int final_widow_penalty)
return;
}
/* Get ready to start line breaking */
- pp=new_graf_node();
- graf_penalty(pp)=final_widow_penalty;
+ pp=new_par_node();
+ par_penalty(pp)=final_widow_penalty;
if(par_shape_ptr==null)
- graf_extent(pp)=new_xdimen(dimen_par(hsize_code),
+ par_extent(pp)=new_xdimen(dimen_par(hsize_code),
dimen_par_hfactor(hsize_code),dimen_par_vfactor(hsize_code));
else
@<fix the use of parshape = 1 indent length@>@;
@@ -30354,8 +30350,10 @@ static void hline_break(int final_widow_penalty)
{ /*Call |try_break| if |cur_p| is a legal breakpoint...*/
if (is_char_node(cur_p))
{ /* Advance |cur_p| to the node following the present string...*/
- do {
- cur_p=link(cur_p);
+ do { int f=font(cur_p);
+ scaled d = char_depth(f,height_depth(char_info(f,character(cur_p))));
+ if (d>par_max_depth) par_max_depth=d;
+ cur_p=link(cur_p);
} while (is_char_node(cur_p));
if (cur_p==null) goto done5; /* mr: no glue and penalty at the end */
}
@@ -30378,8 +30376,11 @@ static void hline_break(int final_widow_penalty)
cur_p=s;
goto done5;
case math_node:
- auto_breaking=(subtype(cur_p)==after);
- break;
+ auto_breaking=(subtype(cur_p)==after);
+ break;
+ case hlist_node: case vlist_node:
+ if (depth(cur_p)>par_max_depth) par_max_depth=depth(cur_p);
+ break;
default:
break;
}
@@ -30392,7 +30393,8 @@ done5:;
depth_threshold=200;
show_node_list(link(temp_head));print_ln();
}
- graf_list(pp)=link(temp_head);
+ depth(pp)=par_max_depth;
+ par_list(pp)=link(temp_head);
/* adding parameter nodes */
link(temp_head)=null;
@@ -30431,7 +30433,7 @@ done5:;
/* |par_shape| is not yet supported */
- graf_params(pp)=link(temp_head);
+ par_params(pp)=link(temp_head);
link(temp_head)=null;
append_to_vlist(pp);
}
@@ -30450,244 +30452,13 @@ of the normal {\tt \BS hsize} and the given length.
second_width= mem[par_shape_ptr+2*(last_special_line+1)].sc;
second_indent= mem[par_shape_ptr+2*last_special_line+1].sc;
- graf_extent(pp)=new_xdimen(second_indent+second_width,
+ par_extent(pp)=new_xdimen(second_indent+second_width,
par_shape_hfactor,par_shape_vfactor);
second_width=second_width+ round((double)par_shape_hfactor*hhsize/unity
+(double)par_shape_vfactor*hvsize/unity);
par_shape_fix=true;
}
-@*1 Images.
-The handling of images is an integral part of Hi\TeX.
-The {\tt image} primitive requires a filename for the image and
-allows the specification, of width, height, stretch and shrink of an
-image. If either width or height is not given, Hi\TeX\ tries to
-extract this information from the image file itself calling the
-function |hget_image_information| with the pointer |p| to the image
-node as parameter.
-
-@<Hi\TeX\ routines@>=
-static void hget_image_information(pointer p)
-{ char *fn;
- FILE *f;
- if (image_width(p)!=0 && image_height(p)!=0) return;
- fn=dir[image_no(p)].file_name;
- f=fopen(fn,"rb");
- if (f==NULL) QUIT("Unable to open image file %s.", fn);
- MESSAGE("(%s",fn);
- img_buf_size=0;
- if (!get_BMP_info(f,fn,p)&&!get_PNG_info(f,fn,p)&&!get_JPG_info(f,fn,p))
- QUIT("Unable to obtain width and height information for image %s",fn);
- fclose(f);
- MESSAGE(" width= %fpt height= %fpt)",image_width(p)/(double)ONE,image_height(p)/(double)ONE);
-}
-
-@ When we have found the width and height of the stored image, we can
-supplement the information given in the \TeX\ file. Occasionaly, the
-image file will not specify the absolute dimensions of the image. In
-this case, we can still compute the aspect ratio and supplement either
-the width based on the height or vice versa. This is accomplished by
-calling the |set_image_dimensions| function. It returns true on
-success and false otherwise.
-
-@<Hi\TeX\ auxiliar routines@>=
-static bool set_image_dimensions(pointer p, double w, double h, bool absolute)
-{ if (image_width(p)!=0)
- { double aspect=h/w;
- image_height(p)=round(image_width(p)*aspect);
- }
- else if (image_height(p)!=0)
- { double aspect=w/h;
- image_width(p)=round(image_height(p)*aspect);
- }
- else
- { if (!absolute) return false;
- image_width(p)=round(unity*w);
- image_height(p)=round(unity*h);
- }
- return true;
-}
-
-@ We call the following routines with the image buffer partly filled
-with the start of the image file.
-
-@<Hi\TeX\ auxiliar routines@>=
-#define IMG_BUF_MAX 54
-#define IMG_HEAD_MAX 2
-static unsigned char img_buf[IMG_BUF_MAX];
-static size_t img_buf_size;
-#define @[LittleEndian32(X)@] (img_buf[(X)]+(img_buf[(X)+1]<<8)+\
- (img_buf[(X)+2]<<16)+(img_buf[(X)+3]<<24))
-
-#define @[BigEndian16(X)@] (img_buf[(X)+1]+(img_buf[(X)]<<8))
-
-#define @[BigEndian32(X)@] (img_buf[(X)+3]+(img_buf[(X)+2]<<8)+\
- (img_buf[(X)+1]<<16)+(img_buf[(X)]<<24))
-
-#define Match2(X,A,B) ((img_buf[(X)]==(A)) && (img_buf[(X)+1]==(B)))
-#define Match4(X,A,B,C,D) (Match2(X,A,B)&&Match2((X)+2,C,D))
-
-#define @[GET_IMG_BUF(X)@] \
-if (img_buf_size<X) \
- { size_t i=fread(img_buf+img_buf_size,1,(X)-img_buf_size,f); \
- if (i<0) QUIT("Unable to read image %s",fn); \
- else if (i==0) QUIT("Unable to read image header %s",fn); \
- else img_buf_size+=i; \
- }
-
-@ Considering the different image formats, we start with Windows Bitmaps. A Windows bitmap file usually has the extension {\tt .bmp}
-but the better way to check for a Windows bitmap file ist to examine the first two byte
-of the file: the ASCII codes for `B' and `M'.
-Once we have verified the file type, we find the width and height of the bitmap in pixels
-at offsets |0x12| and |0x16| stored as little-endian 32 bit integers. At offsets |0x26| and |0x2A|,
-we find the horizontal and vertical resolution in pixel per meter stored in the same format.
-This is sufficient to compute the true width and height of the image in scaled points.
-If either the width or the height was given in the \TeX\ file, we just compute the aspect ratio
-and compute the missing value.
-
-The Windows Bitmap format is easy to process but not very efficient. So the support for this
-format in Hi\TeX\ is deprecated and will disappear. You should use one of the formats described next.
-
-@<Hi\TeX\ auxiliar routines@>=
-static bool get_BMP_info(FILE *f, char *fn, pointer p)
-{ double w,h;
- double xppm,yppm;
- GET_IMG_BUF(2);
- if (!Match2(0,'B','M')) return false;
- GET_IMG_BUF(0x2E);
- w=(double)LittleEndian32(0x12); /*width in pixel*/
- h=(double)LittleEndian32(0x16); /*height in pixel*/
- xppm=(double)LittleEndian32(0x26); /* horizontal pixel per meter*/
- yppm=(double)LittleEndian32(0x2A); /* vertical pixel per meter*/
- return set_image_dimensions(p,(72.27*1000.0/25.4)*w/xppm,(72.27*1000.0/25.4)*h/yppm,true);
-}
-
-@ Now we repeat this process for image files using the Portable Network Graphics file format. This file format is well suited to simple graphics that do not use color gradients.
-These images usually have the extension {\tt .png} and start with an eight byte signature:
-|0x89| followed by the ASCII Codes `P', `N', `G', followd by a carriage return (|0x0D| and line feed (|0x0A|),
-an DOS end-of-file character (|0x1A|) and final line feed (|0x0A|).
-After the signature follows a list of chunks. The first chunk is the image header chunk.
-Each chunk starts with the size of the chunk stored as big-endian 32 bit integer, followed by the chunk name
-stored as four ASCII codes followed by the chunk data and a CRC.
-The size, as stored in the chunk,
-does not include the size itself, nor the name, and neither the CRC.
-The first chunk is the IHDR chunk.
-The chunk data of the IHDR chunk starts with the width and the height of the image in pixels
-stored as 32 bit big-endian integers.
-
-Finding the image resolution takes some more effort. The image resolution is stored in an optional chunk
-named ``pHYs'' for the physical pixel dimensions.
-All we know is that this chunk, if it exists, will appear after the IHDR
-chunk and before the (required) IDAT chunk. The pHYs chunk contains two 32 bit big-endian integers,
-giving the horizontal and vertical pixels per unit, and a one byte unit specifier, which is either 0
-for an undefined unit or 1 for the meter as unit. With an undefined unit, only the aspect ratio
-of the pixels and hence the aspect ratio of the image can be determined.
-
-
-@<Hi\TeX\ auxiliar routines@>=
-
-static bool get_PNG_info(FILE *f, char *fn, pointer p)
-{ int pos, size;
- double w,h;
- double xppu,yppu;
- int unit;
- GET_IMG_BUF(24);
- if (!Match4(0, 0x89, 'P', 'N', 'G') ||
- !Match4(4, 0x0D, 0x0A, 0x1A, 0x0A)) return false;
- size=BigEndian32(8);
- if (!Match4(12,'I', 'H', 'D', 'R')) return false;
- w=(double)BigEndian32(16);
- h=(double)BigEndian32(20);
- pos=20+size;
- while (true)
- { if (fseek(f,pos,SEEK_SET)!=0) return false;
- img_buf_size=0;
- GET_IMG_BUF(17);
- size=BigEndian32(0);
- if (Match4(4,'p', 'H', 'Y', 's'))
- { xppu =(double)BigEndian32(8);
- yppu =(double)BigEndian32(12);
- unit=img_buf[16];
- if (unit==0)
- return set_image_dimensions(p,w/xppu,h/yppu,false);
- else if (unit==1)
- return set_image_dimensions(p,(72.27/0.0254)*w/xppu,(72.27/0.0254)*h/yppu,true);
- else
- return false;
- }
- else if (Match4(4,'I', 'D', 'A', 'T'))
- return set_image_dimensions(p,w,h,false);
- else
- pos=pos+12+size;
- }
- return false;
-}
-
-@ For photographs, the JPEG File Interchange Format (JFIF) is more appropriate.
-JPEG files come with all sorts of file extensions like {\tt .jpg}, {\tt .jpeg}, or {\tt .jfif}.
-We check the file siganture: it starts with the the SOI (Start of Image) marker |0xFF|, |0xD8|
-followed by the JIFI-Tag. The JIFI-Tag starts with the segment marker APP0 (|0xFF|, |0xE0|) followed by the
-2 byte segment size, followed by the ASCII codes `J', `F', `I', `F' followed by a zero byte.
-Next is a two byte version number which we do not read.
-Before the resolution proper there is a resolution unit indicator byte (0 = no units,
-1 = dots per inch, 2 = dots per cm) and then comes the horizontal and vertical resolution both
-as 16 Bit big-endian integers.
-To find the actual width and height, we have to search for a start of frame marker (|0xFF|, |0xC0|+$n$ with $0\le n\le 15$). Which is followed by the 2 byte segment size, the 1 byte sample precission, the
-2 byte height and the 2 byte width.
-
-
-@<Hi\TeX\ auxiliar routines@>=
-
-static bool get_JPG_info(FILE *f, char *fn, pointer p)
-{ int pos, size;
- double w,h;
- double xppu,yppu;
- int unit;
- GET_IMG_BUF(18);
-
- if (!Match4(0, 0xFF,0xD8, 0xFF, 0xE0)) return false;
- size=BigEndian16(4);
- if (!Match4(6,'J', 'F', 'I', 'F')) return false;
- if (img_buf[10] != 0) return false;
- unit=img_buf[13];
- xppu=(double)BigEndian16(14);
- yppu=(double)BigEndian16(16);
- pos=4+size;
- while (true)
- { if (fseek(f,pos,SEEK_SET)!=0) return false;
- img_buf_size=0;
- GET_IMG_BUF(10);
- if (img_buf[0] != 0xFF) return false; /* Not the start of a segment */
- if ( (img_buf[1]&0xF0) == 0xC0) /* Start of Frame */
- { h =(double)BigEndian16(5);
- w =(double)BigEndian16(7);
- if (unit==0)
- return set_image_dimensions(p,w/xppu,h/yppu,false);
- else if (unit==1)
- return set_image_dimensions(p,72.27*w/xppu,72.27*h/yppu,true);
- else if (unit==2)
- return set_image_dimensions(p,(72.27/2.54)*w/xppu,(72.27/2.54)*h/yppu,true);
- else
- return false;
- }
- else
- { size= BigEndian16(2);
- pos=pos+2+size;
- }
- }
- return false;
-}
-@ There is still one image format missing: scalable vector graphics.
-In the moment, I tend not to include a further image format into
-the definition of the \HINT\ file format but instead use the
-PostScript subset that is used for Type 1 fonts to encode
-vector graphics. Any \HINT\ viewer must support Type 1
-PostScript fonts and hence it has already the necessary interpreter.
-So it seems reasonable to put the burden of converting vector graphics
-into a Type 1 PostScript font on the generator of \HINT\ files
-and keep the \HINT\ viewer as small and simple as possible.
-
-
@*1 Links, Labels, and Outlines.
The \HINT\ format knows about labels, links, and outlines.
When generating a short format \HINT\ file, links are part of
@@ -30944,7 +30715,7 @@ if (page_contents<box_there)
if (subtype(p)==baseline_node) goto recycle_p;
else if (subtype(p)!=hset_node && subtype(p)!=vset_node &&
subtype(p)!=hpack_node && subtype(p)!=vpack_node &&
- subtype(p)!=graf_node && subtype(p)!=disp_node &&
+ subtype(p)!=par_node && subtype(p)!=disp_node &&
subtype(p)!=image_node && subtype(p)!=align_node)
break; /* else fall through */
case hlist_node: case vlist_node: case rule_node:
@@ -31033,8 +30804,8 @@ static bool is_visible(pointer p)
else if (subtype(p)==hset_node || subtype(p)==vset_node ||
subtype(p)==hpack_node || subtype(p)==vpack_node)
return list_ptr(p)!=null;
- else if (subtype(p)==graf_node)
- return graf_list(p)!=null;
+ else if (subtype(p)==par_node)
+ return par_list(p)!=null;
else
return false;
default: return true;
@@ -31131,7 +30902,7 @@ if (!is_char_node(*p))
if (*p==null) return q;
}
break;
- case graf_node: q=collect_output(&graf_list(r),q);
+ case par_node: q=collect_output(&par_list(r),q);
break;
case disp_node:
if (display_left(r)) q=collect_output(&display_eqno(r),q);
@@ -31205,7 +30976,7 @@ if (!is_char_node(p))
{ case open_node: case write_node: case close_node:
out_what(p);
break;
- case graf_node: execute_output(graf_list(p));
+ case par_node: execute_output(par_list(p));
break;
case disp_node:
if (display_left(p)) execute_output(display_eqno(p));
@@ -31366,7 +31137,7 @@ should be only inside |graph_node|s.
@<Incorporate the various extended boxes into an hbox@>=
switch (subtype(p))
-{ case graf_node: break;
+{ case par_node: if (depth(p)> d) d=depth(p); break;
case disp_node: break;
case vpack_node:
case hpack_node:
@@ -31376,10 +31147,18 @@ switch (subtype(p))
repack=true; break;
case stream_node: repack=true; break; /* streams are for page templates only */
case image_node:
- if (image_height(p)> h) h= image_height(p);
- x= x+image_width(p);
- o= image_stretch_order(p);total_stretch[o]= total_stretch[o]+image_stretch(p);
- o= image_shrink_order(p);total_shrink[o]= total_shrink[o]+image_shrink(p);
+ if (image_xheight(p)!=null)
+ { pointer r=image_xheight(p);
+ if (xdimen_hfactor(r)==0 && xdimen_vfactor(r)==0)
+ { if (xdimen_width(r)> h) h= xdimen_width(r);}
+ else { repack=true; break;}
+ }
+ if (image_xwidth(p)!=null)
+ { pointer r=image_xwidth(p);
+ if (xdimen_hfactor(r)==0 && xdimen_vfactor(r)==0)
+ x = x+ xdimen_width(r);
+ else { repack=true; break;}
+ }
break;
default: break;
}
@@ -31414,8 +31193,9 @@ static pointer vpackage(pointer p, scaled h, scaled hf, scaled vf, small_number
case unset_set_node: case unset_pack_node:
goto repack;
case whatsit_node:
- if (subtype(p)==graf_node)
- goto repack;
+ if (subtype(p)==par_node)
+ { if (depth(p) > d) d=depth(p);
+ goto repack; }
else if (subtype(p)==disp_node )
goto repack;
else if (subtype(p)==vpack_node )
@@ -31429,11 +31209,18 @@ static pointer vpackage(pointer p, scaled h, scaled hf, scaled vf, small_number
else if (subtype(p)==stream_node )
goto repack;
else if (subtype(p)==image_node)
- { glue_ord o;
- if (image_width(p)> w) w= image_width(p);
- x= x+d+image_height(p);d=0;
- o= image_stretch_order(p);total_stretch[o]= total_stretch[o]+image_stretch(p);
- o= image_shrink_order(p);total_shrink[o]= total_shrink[o]+image_shrink(p);
+ { if (image_xwidth(p)!=null)
+ { pointer r=image_xwidth(p);
+ if (xdimen_hfactor(r)==0 && xdimen_vfactor(r)==0)
+ { if (xdimen_width(r)> w) w= xdimen_width(r); }
+ else goto repack;
+ }
+ if (image_xheight(p)!=null)
+ { pointer r=image_xheight(p);
+ if (xdimen_hfactor(r)==0 && xdimen_vfactor(r)==0)
+ { x= x+d+xdimen_width(p);d=0;}
+ else goto repack;
+ }
}
break;
case glue_node:
@@ -32230,12 +32017,10 @@ scaled w,h,v; } xdimen_defined[0x100];
xdimen_defined[i].h = ONE*xdimen_defaults[i].h;
xdimen_defined[i].v = ONE*xdimen_defaults[i].v;
}
+
@ To obtain a reference number for an extended dimension, we search the
array and if no match was found, we allocate a new entry,
reallocating the array if needed.
-We use the variable |rover| to mark the place where the
-last entry was inserted, because
-quite often we repeatedly search for the same values.
@<Hi\TeX\ auxiliar routines@>=
int hget_xdimen_no(pointer p)
@@ -33445,20 +33230,20 @@ To determine whether ther is a reference number for the parameter list,
the function |hout_param_list| is writing the parameter list to the output.
\noindent
@<cases to output whatsit content nodes@>=
-case graf_node:
+case par_node:
{ uint32_t pos, xpos, xsize;
List l;
pointer q;
int n,m;
Info i=b000;
- q=graf_extent(p);
+ q=par_extent(p);
n=hget_xdimen_no(q);
if (n>=0) HPUT8(n);
else
{ xpos=hpos-hstart; hout_xdimen_node(p); xsize=(hpos-hstart)-xpos; i|=b100; }
pos=hpos-hstart;
l.k=param_kind;
- m=hout_param_list(graf_params(p),pos,&l);
+ m=hout_param_list(par_params(p),pos,&l);
if (m>=0)
{ if (i&b100)
{ HPUTX(1);
@@ -33470,9 +33255,7 @@ case graf_node:
HPUT8(m);
}
else i|=b010;
- pos=hpos-hstart;
- l.k=list_kind;
- hout_list_node(graf_list(p),pos,&l);
+ hout_list_node2(par_list(p));
tag=TAG(par_kind,i);
}
break;
@@ -33501,9 +33284,7 @@ case graf_node:
if (n>=0) HPUT8(n); else i|=b100;
if (display_eqno(p)!=null && display_left(p))
{ hout_node(display_eqno(p)); i|=b010; }
- pos=hpos-hstart;
- l.k=list_kind;
- hout_list_node(display_formula(p),pos,&l);
+ hout_list_node2(display_formula(p));
if (display_eqno(p)!=null && !display_left(p))
{ hout_node(display_eqno(p)); i|=b001; }
tag=TAG(math_kind,i);
@@ -33729,7 +33510,7 @@ static int hout_param_list(pointer p, uint32_t pos, List *l)
HPUT8(0); /* space for the size boundary byte*/
l->p=hpos-hstart;
while(p> mem_min)
- { hdef_param_node(par_type(p),par_number(p),par_value(p).i);
+ { hdef_param_node(param_type(p),param_no(p),param_value(p).i);
p=link(p);
}
l->s=(hpos-hstart)-l->p;
@@ -33773,15 +33554,21 @@ case outline_node: hpos--; new_outline(p); return;
\indent
@<cases to output whatsit content nodes@>=
case image_node:
- { Image i;
- i.n=image_no(p);
- i.w=image_width(p);
- i.h=image_height(p);
- i.p.f=image_stretch(p)/(double)ONE;
- i.p.o=image_stretch_order(p);
- i.m.f=image_shrink(p)/(double)ONE;
- i.m.o=image_shrink_order(p);
- tag=hput_image(&i);
+ { Xdimen w={0},h={0}; List d; uint32_t pos;
+ if (image_xwidth(p)!=null)
+ { pointer r=image_xwidth(p);
+ w.w=xdimen_width(r);
+ w.h=xdimen_hfactor(r)/(double)ONE;
+ w.v=xdimen_vfactor(r)/(double)ONE;
+ }
+ if (image_xheight(p)!=null)
+ { pointer r=image_xheight(p);
+ h.w=xdimen_width(r);
+ h.h=xdimen_hfactor(r)/(double)ONE;
+ h.v=xdimen_vfactor(r)/(double)ONE;
+ }
+ tag=TAG(image_kind,hput_image_spec(image_no(p),0.0,0,&w,0,&h));
+ hout_list_node2(image_alt(p)); /* should eventually become a text */
}
break;
@*1 Text.
@@ -34745,8 +34532,8 @@ It sets the variable |start_time| and returns a pointer to a |tm| structure
to be used later in |fix_date_and_time|.
To support reproducible output, the environment variable |SOURCE_DATE_EPOCH|
-needs to be checked. If it is set, it is an \ASCII\ representation of
-a \UNIX\ timestamp, defined as the number
+needs to be checked. If it is set, it is an ASCII representation of
+a UNIX timestamp, defined as the number
of seconds, excluding leap seconds, since 01 Jan 1970 00:00:00 UTC.
Its value is then used to initialize the |start_time| variable.
diff --git a/Build/source/texk/web2c/hitexdir/hitexman.hnt b/Build/source/texk/web2c/hitexdir/hitexman.hnt
new file mode 100644
index 00000000000..d2d06569428
--- /dev/null
+++ b/Build/source/texk/web2c/hitexdir/hitexman.hnt
Binary files differ
diff --git a/Build/source/texk/web2c/hitexdir/hitexman.pdf b/Build/source/texk/web2c/hitexdir/hitexman.pdf
index 5441594283d..dd542892c26 100644
--- a/Build/source/texk/web2c/hitexdir/hitexman.pdf
+++ b/Build/source/texk/web2c/hitexdir/hitexman.pdf
Binary files differ