diff options
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 Binary files differindex cdd45e13a0e..6ef7d6bbdc6 100644 --- a/Build/source/texk/web2c/hitexdir/hiformat.hnt +++ b/Build/source/texk/web2c/hitexdir/hiformat.hnt diff --git a/Build/source/texk/web2c/hitexdir/hiformat.pdf b/Build/source/texk/web2c/hitexdir/hiformat.pdf Binary files differindex 13f4e9a75b4..00507294efa 100644 --- a/Build/source/texk/web2c/hitexdir/hiformat.pdf +++ b/Build/source/texk/web2c/hitexdir/hiformat.pdf 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 Binary files differnew file mode 100644 index 00000000000..d2d06569428 --- /dev/null +++ b/Build/source/texk/web2c/hitexdir/hitexman.hnt diff --git a/Build/source/texk/web2c/hitexdir/hitexman.pdf b/Build/source/texk/web2c/hitexdir/hitexman.pdf Binary files differindex 5441594283d..dd542892c26 100644 --- a/Build/source/texk/web2c/hitexdir/hitexman.pdf +++ b/Build/source/texk/web2c/hitexdir/hitexman.pdf |