This is the mail archive of the gcc-prs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: c++/7904: Internal compiler error in compensate_edge, at reg-stack.c


The following reply was made to PR c++/7904; it has been noted by GNATS.

From: Quentin Bennett <quentin.bennett@infinity.co.nz>
To: "'nathan@gcc.gnu.org'" <nathan@gcc.gnu.org>, "'gcc-bugs@gcc.gnu.org'"
	 <gcc-bugs@gcc.gnu.org>, "'gcc-prs@gcc.gnu.org'" <gcc-prs@gcc.gnu.org>, 
	"'nobody@gcc.gnu.org'" <nobody@gcc.gnu.org>, "'gcc-gnats@gcc.gnu.org'"
	 <gcc-gnats@gcc.gnu.org>
Cc:  
Subject: RE: c++/7904: Internal compiler error in compensate_edge, at reg-
	stack.c
Date: Mon, 16 Sep 2002 08:20:39 +1200

 This message is in MIME format. Since your mail reader does not understand
 this format, some or all of this message may not be legible.
 
 ------_=_NextPart_000_01C25CF6.8F33C860
 Content-Type: multipart/alternative;
 	boundary="----_=_NextPart_001_01C25CF6.8F33C860"
 
 
 ------_=_NextPart_001_01C25CF6.8F33C860
 Content-Type: text/plain;
 	charset="iso-8859-1"
 
 Hi,
 
 While I appreciate the effort involved in finding bugs relies heavily on
 provision of the correct information from the users (i.e. me), all I can go
 on is what is asked for by the developers, in this case via the web-based
 front end at http://gcc.gnu.org/cgi-bin/gnatsweb.pl, which I though I had.
 
 Anyway, from the address given, in the "What we Need" section
 
 Please include in your bug report all of the following items, the first
 three of which can be obtained from the output of gcc -v: 
 the exact version of GCC; 
 the system type; 
 the options given when GCC was configured/built; 
 
 $gcc -v
 Reading specs from /usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/specs
 Configured with: ../gcc-3.2/configure  : (reconfigured) ../gcc-3.2/configure
 --enable-languages=c,c++
 Thread model: posix
 gcc version 3.2
 the complete command line that triggers the bug; 
 the compiler output (error messages, warnings, etc.); and 
 
 Making all in engine
 /bin/sh ../../libtool --mode=compile c++ -save-temps -DHAVE_CONFIG_H -I. -I.
 -I../../autocfg     -g -O2 -c decimal.cpp
 rm -f .libs/decimal.lo
 c++ -save-temps -DHAVE_CONFIG_H -I. -I. -I../../autocfg -g -O2 -c
 decimal.cpp  -fPIC -DPIC -o .libs/decimal.lo
 decimal.cpp: In member function `Bool DecimalFormat::format(Situation&, 
    Number&, const Str&, Str&)':
 decimal.cpp:194: Internal compiler error in compensate_edge, at reg-stack.c:
    2564
 Please submit a full bug report,
 with preprocessed source if appropriate.
 See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.
 *** Error code 1
 make: Fatal error: Command failed for target `decimal.lo'
 Current working directory /mercury1/data/src/xml/Sablot-0.90/src/engine
 *** Error code 1
 make: Fatal error: Command failed for target `all-recursive'
 Current working directory /mercury1/data/src/xml/Sablot-0.90/src
 *** Error code 1
 make: Fatal error: Command failed for target `all-recursive'
 
 the preprocessed file (*.i*) that triggers the bug, generated by adding
 -save-temps to the complete compilation command, or, in the case of a bug
 report for the GNAT front end, a complete set of source files (see below).
 
 Attached.
 
 I do note that in the 'What we do not want' section, there is the statement
 
 "Duplicate bug reports, or reports of bugs already fixed in the development
 tree, especially those that have already been reported as fixed last week
 :-) "
 
 but no information on where to find a list of bugs that have been fixed,
 which would be useful.
 
 Please let me know if there is something else that you need that I am
 failing to provide.
 
 Thanks & Regards
 
 Quentin Bennett 
 
 -----Original Message-----
 From: nathan@gcc.gnu.org [mailto:nathan@gcc.gnu.org]
 Sent: Saturday, 14 September 2002 2:31 a.m.
 To: gcc-bugs@gcc.gnu.org; gcc-prs@gcc.gnu.org; nobody@gcc.gnu.org;
 quentin.bennett@infinity.co.nz
 Subject: Re: c++/7904: Internal compiler error in compensate_edge, at
 reg-stack.c
 
 
 Synopsis: Internal compiler error in compensate_edge, at reg-stack.c
 
 State-Changed-From-To: open->feedback
 State-Changed-By: nathan
 State-Changed-When: Fri Sep 13 07:31:26 2002
 State-Changed-Why:
     please provide the information detailed at
     http://gcc.gnu.org/bugs.html
 
 http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&p
 r=7904
 
 
 The information contained in this email is privileged and confidential and
 intended for the addressee only. If you are not the intended recipient, you 
 are asked to respect that confidentiality and not disclose, copy or make use 
 of its contents. If received in error you are asked to destroy this email 
 and contact the sender immediately. Your assistance is appreciated.
 
 ------_=_NextPart_001_01C25CF6.8F33C860
 Content-Type: text/html;
 	charset="iso-8859-1"
 Content-Transfer-Encoding: quoted-printable
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
 <HTML>
 <HEAD>
 <META HTTP-EQUIV=3D"Content-Type" CONTENT=3D"text/html; charset=3Diso-885=
 9-1">
 <META NAME=3D"Generator" CONTENT=3D"MS Exchange Server version 5.5.2650.1=
 2">
 <TITLE>RE: c++/7904: Internal compiler error in compensate_edge, at reg-s=
 tack.c</TITLE>
 </HEAD>
 <BODY>
 
 <P><FONT SIZE=3D2>Hi,</FONT>
 </P>
 
 <P><FONT SIZE=3D2>While I appreciate the effort involved in finding bugs =
 relies heavily on provision of the correct information from the users (i.=
 e. me), all I can go on is what is asked for by the developers, in this c=
 ase via the web-based front end at <A HREF=3D"http://gcc.gnu.org/cgi-bin/=
 gnatsweb.pl" TARGET=3D"_blank">http://gcc.gnu.org/cgi-bin/gnatsweb.pl</A>=
 , which I though I had.</FONT></P>
 
 <P><FONT SIZE=3D2>Anyway, from the address given, in the &quot;What we Ne=
 ed&quot; section</FONT>
 </P>
 
 <P><FONT SIZE=3D2>Please include in your bug report all of the following =
 items, the first three of which can be obtained from the output of gcc -v=
 : </FONT></P>
 
 <P><FONT SIZE=3D2>the exact version of GCC; </FONT>
 <BR><FONT SIZE=3D2>the system type; </FONT>
 <BR><FONT SIZE=3D2>the options given when GCC was configured/built; </FON=
 T>
 </P>
 
 <P><FONT SIZE=3D2>$gcc -v</FONT>
 <BR><FONT SIZE=3D2>Reading specs from /usr/local/lib/gcc-lib/i386-pc-sola=
 ris2.6/3.2/specs</FONT>
 <BR><FONT SIZE=3D2>Configured with: ../gcc-3.2/configure&nbsp; : (reconfi=
 gured) ../gcc-3.2/configure --enable-languages=3Dc,c++</FONT>
 <BR><FONT SIZE=3D2>Thread model: posix</FONT>
 <BR><FONT SIZE=3D2>gcc version 3.2</FONT>
 <BR><FONT SIZE=3D2>the complete command line that triggers the bug; </FON=
 T>
 <BR><FONT SIZE=3D2>the compiler output (error messages, warnings, etc.); =
 and </FONT>
 </P>
 
 <P><FONT SIZE=3D2>Making all in engine</FONT>
 <BR><FONT SIZE=3D2>/bin/sh ../../libtool --mode=3Dcompile c++ -save-temps=
 =20-DHAVE_CONFIG_H -I. -I. -I../../autocfg&nbsp;&nbsp;&nbsp;&nbsp; -g -O2=
 =20-c decimal.cpp</FONT>
 <BR><FONT SIZE=3D2>rm -f .libs/decimal.lo</FONT>
 <BR><FONT SIZE=3D2>c++ -save-temps -DHAVE_CONFIG_H -I. -I. -I../../autocf=
 g -g -O2 -c decimal.cpp&nbsp; -fPIC -DPIC -o .libs/decimal.lo</FONT>
 <BR><FONT SIZE=3D2>decimal.cpp: In member function `Bool DecimalFormat::f=
 ormat(Situation&amp;, </FONT>
 <BR><FONT SIZE=3D2>&nbsp;&nbsp; Number&amp;, const Str&amp;, Str&amp;)':<=
 /FONT>
 <BR><FONT SIZE=3D2>decimal.cpp:194: Internal compiler error in compensate=
 _edge, at reg-stack.c:</FONT>
 <BR><FONT SIZE=3D2>&nbsp;&nbsp; 2564</FONT>
 <BR><FONT SIZE=3D2>Please submit a full bug report,</FONT>
 <BR><FONT SIZE=3D2>with preprocessed source if appropriate.</FONT>
 <BR><FONT SIZE=3D2>See &lt;URL:<A HREF=3D"http://www.gnu.org/software/gcc=
 /bugs.html" TARGET=3D"_blank">http://www.gnu.org/software/gcc/bugs.html</=
 A>&gt; for instructions.</FONT>
 <BR><FONT SIZE=3D2>*** Error code 1</FONT>
 <BR><FONT SIZE=3D2>make: Fatal error: Command failed for target `decimal.=
 lo'</FONT>
 <BR><FONT SIZE=3D2>Current working directory /mercury1/data/src/xml/Sablo=
 t-0.90/src/engine</FONT>
 <BR><FONT SIZE=3D2>*** Error code 1</FONT>
 <BR><FONT SIZE=3D2>make: Fatal error: Command failed for target `all-recu=
 rsive'</FONT>
 <BR><FONT SIZE=3D2>Current working directory /mercury1/data/src/xml/Sablo=
 t-0.90/src</FONT>
 <BR><FONT SIZE=3D2>*** Error code 1</FONT>
 <BR><FONT SIZE=3D2>make: Fatal error: Command failed for target `all-recu=
 rsive'</FONT>
 </P>
 
 <P><FONT SIZE=3D2>the preprocessed file (*.i*) that triggers the bug, gen=
 erated by adding -save-temps to the complete compilation command, or, in =
 the case of a bug report for the GNAT front end, a complete set of source=
 =20files (see below).</FONT></P>
 
 <P><FONT SIZE=3D2>Attached.</FONT>
 </P>
 
 <P><FONT SIZE=3D2>I do note that in the 'What we do not want' section, th=
 ere is the statement</FONT>
 </P>
 
 <P><FONT SIZE=3D2>&quot;Duplicate bug reports, or reports of bugs already=
 =20fixed in the development tree, especially those that have already been=
 =20reported as fixed last week :-) &quot;</FONT></P>
 
 <P><FONT SIZE=3D2>but no information on where to find a list of bugs that=
 =20have been fixed, which would be useful.</FONT>
 </P>
 
 <P><FONT SIZE=3D2>Please let me know if there is something else that you =
 need that I am failing to provide.</FONT>
 </P>
 
 <P><FONT SIZE=3D2>Thanks &amp; Regards</FONT>
 </P>
 
 <P><FONT SIZE=3D2>Quentin Bennett </FONT>
 </P>
 
 <P><FONT SIZE=3D2>-----Original Message-----</FONT>
 <BR><FONT SIZE=3D2>From: nathan@gcc.gnu.org [<A HREF=3D"mailto:nathan@gcc=
 .gnu.org">mailto:nathan@gcc.gnu.org</A>]</FONT>
 <BR><FONT SIZE=3D2>Sent: Saturday, 14 September 2002 2:31 a.m.</FONT>
 <BR><FONT SIZE=3D2>To: gcc-bugs@gcc.gnu.org; gcc-prs@gcc.gnu.org; nobody@=
 gcc.gnu.org;</FONT>
 <BR><FONT SIZE=3D2>quentin.bennett@infinity.co.nz</FONT>
 <BR><FONT SIZE=3D2>Subject: Re: c++/7904: Internal compiler error in comp=
 ensate_edge, at</FONT>
 <BR><FONT SIZE=3D2>reg-stack.c</FONT>
 </P>
 <BR>
 
 <P><FONT SIZE=3D2>Synopsis: Internal compiler error in compensate_edge, a=
 t reg-stack.c</FONT>
 </P>
 
 <P><FONT SIZE=3D2>State-Changed-From-To: open-&gt;feedback</FONT>
 <BR><FONT SIZE=3D2>State-Changed-By: nathan</FONT>
 <BR><FONT SIZE=3D2>State-Changed-When: Fri Sep 13 07:31:26 2002</FONT>
 <BR><FONT SIZE=3D2>State-Changed-Why:</FONT>
 <BR><FONT SIZE=3D2>&nbsp;&nbsp;&nbsp; please provide the information deta=
 iled at</FONT>
 <BR><FONT SIZE=3D2>&nbsp;&nbsp;&nbsp; <A HREF=3D"http://gcc.gnu.org/bugs.=
 html" TARGET=3D"_blank">http://gcc.gnu.org/bugs.html</A></FONT>
 </P>
 
 <P><FONT SIZE=3D2><A HREF=3D"http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=3D=
 view%20audit-trail&database=3Dgcc&pr=3D7904" TARGET=3D"_blank">http://gcc=
 .gnu.org/cgi-bin/gnatsweb.pl?cmd=3Dview%20audit-trail&database=3Dgcc&pr=3D=
 7904</A></FONT>
 </P>
 
 <P><FONT FACE=3D"Arial" SIZE=3D2 COLOR=3D"#000000"></FONT>&nbsp;
 
 
 <DIV><FONT color=3D#0080ff=20
 size=3D2><EM><STRONG></STRONG></EM></FONT>&nbsp;</DIV>
 <DIV><FONT color=3D#0080ff size=3D2><EM><STRONG></STRONG></EM></FONT>&nbs=
 p;<FONT color=3D#0080ff size=3D2><EM><STRONG>The information contained in=
 =20this=20
 email is privileged and confidential and intended for the addressee only.=
 =20If you=20
 are not the intended recipient, you are asked to respect that confidentia=
 lity=20
 and not disclose, copy or make use of its contents. If received in error =
 you are=20
 asked to destroy this email and contact the sender immediately. Your assi=
 stance=20
 is appreciated. </STRONG></EM></FONT></DIV>
 </BODY>
 </HTML>=
 
 ------_=_NextPart_001_01C25CF6.8F33C860--
 
 ------_=_NextPart_000_01C25CF6.8F33C860
 Content-Type: application/octet-stream;
 	name="decimal.ii"
 Content-Transfer-Encoding: quoted-printable
 Content-Disposition: attachment;
 	filename="decimal.ii"
 
 # 1 "decimal.cpp"=0A=
 # 1 "<built-in>"=0A=
 # 1 "<command line>"=0A=
 # 1 "decimal.cpp"=0A=
 # 35 "decimal.cpp"=0A=
 # 1 "decimal.h" 1=0A=
 # 36 "decimal.h"=0A=
 # 1 "base.h" 1=0A=
 # 40 "base.h"=0A=
 # 1 "../../autocfg/autocfg.h" 1=0A=
 # 41 "base.h" 2=0A=
 # 49 "base.h"=0A=
 # 1 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/stdlib.h" 1 =
 3 4=0A=
 # 25 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/stdlib.h" 3 =
 4=0A=
 #pragma ident "@(#)stdlib.h	1.40	97/06/30 SMI" =0A=
 =0A=
 # 1 "/usr/include/sys/feature_tests.h" 1 3 4=0A=
 # 11 "/usr/include/sys/feature_tests.h" 3 4=0A=
 #pragma ident "@(#)feature_tests.h	1.13	97/06/26 SMI"=0A=
 =0A=
 =0A=
 extern "C" {=0A=
 # 126 "/usr/include/sys/feature_tests.h" 3 4=0A=
 }=0A=
 # 28 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/stdlib.h" 2 =
 3 4=0A=
 =0A=
 =0A=
 =0A=
 # 1 "/usr/include/sys/wait.h" 1 3 4=0A=
 # 16 "/usr/include/sys/wait.h" 3 4=0A=
 #pragma ident "@(#)wait.h	1.20	97/03/02 SMI" =0A=
 =0A=
 =0A=
 =0A=
 # 1 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/sys/types.h" =
 1 3 4=0A=
 # 25 =
 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/sys/types.h" 3 =
 4=0A=
 #pragma ident "@(#)types.h	1.51	97/05/06 SMI"=0A=
 =0A=
 =0A=
 # 1 =
 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/sys/isa_defs.h" =
 1 3 4=0A=
 # 18 =
 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/sys/isa_defs.h" =
 3 4=0A=
 #pragma ident "@(#)isa_defs.h	1.11	97/03/21 SMI"=0A=
 # 147 =
 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/sys/isa_defs.h" =
 3 4=0A=
 extern "C" {=0A=
 # 353 =
 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/sys/isa_defs.h" =
 3 4=0A=
 }=0A=
 # 29 =
 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/sys/types.h" 2 3 =
 4=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 # 1 "/usr/include/sys/machtypes.h" 1 3 4=0A=
 # 16 "/usr/include/sys/machtypes.h" 3 4=0A=
 #pragma ident "@(#)machtypes.h	1.7	96/05/23 SMI"=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 extern "C" {=0A=
 # 33 "/usr/include/sys/machtypes.h" 3 4=0A=
 typedef struct _physadr_t { int r[1]; } *physadr_t;=0A=
 =0A=
 typedef struct _label_t { int val[6]; } label_t;=0A=
 =0A=
 =0A=
 =0A=
 typedef unsigned char lock_t;=0A=
 =0A=
 =0A=
 }=0A=
 # 34 =
 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/sys/types.h" 2 3 =
 4=0A=
 # 42 =
 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/sys/types.h" 3 =
 4=0A=
 # 1 "/usr/include/sys/int_types.h" 1 3 4=0A=
 # 9 "/usr/include/sys/int_types.h" 3 4=0A=
 #pragma ident "@(#)int_types.h	1.4	96/09/25 SMI"=0A=
 # 45 "/usr/include/sys/int_types.h" 3 4=0A=
 extern "C" {=0A=
 # 62 "/usr/include/sys/int_types.h" 3 4=0A=
 typedef char int8_t;=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 typedef short int16_t;=0A=
 typedef int int32_t;=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 typedef long long int64_t;=0A=
 =0A=
 =0A=
 =0A=
 typedef unsigned char uint8_t;=0A=
 typedef unsigned short uint16_t;=0A=
 typedef unsigned int uint32_t;=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 typedef unsigned long long uint64_t;=0A=
 # 94 "/usr/include/sys/int_types.h" 3 4=0A=
 typedef int64_t intmax_t;=0A=
 typedef uint64_t uintmax_t;=0A=
 # 110 "/usr/include/sys/int_types.h" 3 4=0A=
 typedef int intptr_t;=0A=
 typedef unsigned int uintptr_t;=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 typedef char int_least8_t;=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 typedef short int_least16_t;=0A=
 typedef int int_least32_t;=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 typedef long long int_least64_t;=0A=
 =0A=
 =0A=
 =0A=
 typedef unsigned char uint_least8_t;=0A=
 typedef unsigned short uint_least16_t;=0A=
 typedef unsigned int uint_least32_t;=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 typedef unsigned long long uint_least64_t;=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 }=0A=
 # 43 =
 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/sys/types.h" 2 3 =
 4=0A=
 =0A=
 =0A=
 extern "C" {=0A=
 # 54 =
 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/sys/types.h" 3 =
 4=0A=
 typedef long long longlong_t;=0A=
 typedef unsigned long long u_longlong_t;=0A=
 # 71 =
 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/sys/types.h" 3 =
 4=0A=
 typedef unsigned char uchar_t;=0A=
 typedef unsigned short ushort_t;=0A=
 typedef unsigned int uint_t;=0A=
 typedef unsigned long ulong_t;=0A=
 =0A=
 typedef char * caddr_t;=0A=
 typedef long daddr_t;=0A=
 typedef short cnt_t;=0A=
 =0A=
 typedef ulong_t paddr_t;=0A=
 typedef uchar_t use_t;=0A=
 typedef short sysid_t;=0A=
 typedef short index_t;=0A=
 # 96 =
 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/sys/types.h" 3 =
 4=0A=
 typedef long off_t;=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 typedef longlong_t off64_t;=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 typedef ulong_t ino_t;=0A=
 typedef long blkcnt_t;=0A=
 typedef ulong_t fsblkcnt_t;=0A=
 typedef ulong_t fsfilcnt_t;=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 typedef u_longlong_t ino64_t;=0A=
 typedef longlong_t blkcnt64_t;=0A=
 typedef u_longlong_t fsblkcnt64_t;=0A=
 typedef u_longlong_t fsfilcnt64_t;=0A=
 =0A=
 =0A=
 =0A=
 typedef enum { _B_FALSE, _B_TRUE } boolean_t;=0A=
 # 137 =
 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/sys/types.h" 3 =
 4=0A=
 typedef int64_t pad64_t;=0A=
 typedef uint64_t upad64_t;=0A=
 # 150 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/sys/types.h=
 " 3 4=0A=
 typedef longlong_t offset_t;=0A=
 typedef u_longlong_t u_offset_t;=0A=
 typedef u_longlong_t len_t;=0A=
 typedef longlong_t diskaddr_t;=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 typedef union {=0A=
         offset_t _f;=0A=
         struct {=0A=
                 off_t _l;=0A=
                 long _u;=0A=
         } _p;=0A=
 } lloff_t;=0A=
 # 181 =
 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/sys/types.h" 3 =
 4=0A=
 typedef union {=0A=
         diskaddr_t _f;=0A=
         struct {=0A=
                 daddr_t _l;=0A=
                 long _u;=0A=
         } _p;=0A=
 } lldaddr_t;=0A=
 # 200 =
 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/sys/types.h" 3 =
 4=0A=
 typedef ulong_t k_fltset_t;=0A=
 # 209 =
 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/sys/types.h" 3 =
 4=0A=
 typedef long id_t;=0A=
 # 218 =
 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/sys/types.h" 3 =
 4=0A=
 typedef uint_t useconds_t;=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 typedef ulong_t major_t;=0A=
 typedef ulong_t minor_t;=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 typedef short pri_t;=0A=
 # 242 =
 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/sys/types.h" 3 =
 4=0A=
 typedef ushort_t o_mode_t;=0A=
 typedef short o_dev_t;=0A=
 typedef ushort_t o_uid_t;=0A=
 typedef o_uid_t o_gid_t;=0A=
 typedef short o_nlink_t;=0A=
 typedef short o_pid_t;=0A=
 typedef ushort_t o_ino_t;=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 typedef int key_t;=0A=
 typedef ulong_t mode_t;=0A=
 =0A=
 =0A=
 =0A=
 typedef long uid_t;=0A=
 =0A=
 =0A=
 typedef uid_t gid_t;=0A=
 typedef ulong_t nlink_t;=0A=
 typedef ulong_t dev_t;=0A=
 typedef long pid_t;=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 typedef unsigned int pthread_t;=0A=
 typedef unsigned int pthread_key_t;=0A=
 =0A=
 typedef struct _pthread_mutex {=0A=
         struct {=0A=
                 uint8_t __pthread_mutex_flag[4];=0A=
                 uint32_t __pthread_mutex_type;=0A=
         } __pthread_mutex_flags;=0A=
         union {=0A=
                 struct {=0A=
                         uint8_t __pthread_mutex_pad[8];=0A=
                 } __pthread_mutex_lock64;=0A=
                 upad64_t __pthread_mutex_owner64;=0A=
         } __pthread_mutex_lock;=0A=
         upad64_t __pthread_mutex_data;=0A=
 } pthread_mutex_t;=0A=
 =0A=
 typedef struct _pthread_cond {=0A=
         struct {=0A=
                 uint8_t __pthread_cond_flag[4];=0A=
                 uint32_t __pthread_cond_type;=0A=
         } __pthread_cond_flags;=0A=
         upad64_t __pthread_cond_data;=0A=
 } pthread_cond_t;=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 typedef struct _pthread_attr {=0A=
         void *__pthread_attrp;=0A=
 } pthread_attr_t;=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 typedef struct _pthread_mutexattr {=0A=
         void *__pthread_mutexattrp;=0A=
 } pthread_mutexattr_t;=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 typedef struct _pthread_condattr {=0A=
         void *__pthread_condattrp;=0A=
 } pthread_condattr_t;=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 typedef struct _once {=0A=
         upad64_t __pthread_once_pad[4];=0A=
 } pthread_once_t;=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 typedef unsigned int size_t;=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 typedef int ssize_t;=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 typedef long time_t;=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 typedef long clock_t;=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 typedef int clockid_t;=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 typedef int timer_t;=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 typedef unsigned char unchar;=0A=
 typedef unsigned short ushort;=0A=
 typedef unsigned int uint;=0A=
 typedef unsigned long ulong;=0A=
 # 412 =
 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/sys/types.h" 3 =
 4=0A=
 typedef long hostid_t;=0A=
 # 421 =
 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/sys/types.h" 3 =
 4=0A=
 typedef unsigned char u_char;=0A=
 typedef unsigned short u_short;=0A=
 typedef unsigned int u_int;=0A=
 typedef unsigned long u_long;=0A=
 typedef struct _quad { long val[2]; } quad;=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 # 1 "/usr/include/sys/select.h" 1 3 4=0A=
 # 11 "/usr/include/sys/select.h" 3 4=0A=
 #pragma ident "@(#)select.h	1.11	96/06/20 SMI" =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 # 1 "/usr/include/sys/time.h" 1 3 4=0A=
 # 22 "/usr/include/sys/time.h" 3 4=0A=
 #pragma ident "@(#)time.h	2.52	96/11/15 SMI" =0A=
 # 32 "/usr/include/sys/time.h" 3 4=0A=
 extern "C" {=0A=
 # 44 "/usr/include/sys/time.h" 3 4=0A=
 struct timeval {=0A=
         time_t tv_sec;=0A=
         long tv_usec;=0A=
 };=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 struct timezone {=0A=
         int tz_minuteswest;=0A=
         int tz_dsttime;=0A=
 };=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 }=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 # 1 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/sys/types.h" =
 1 3 4=0A=
 # 72 "/usr/include/sys/time.h" 2 3 4=0A=
 =0A=
 =0A=
 =0A=
 extern "C" {=0A=
 # 126 "/usr/include/sys/time.h" 3 4=0A=
 struct itimerval {=0A=
         struct timeval it_interval;=0A=
         struct timeval it_value;=0A=
 };=0A=
 # 179 "/usr/include/sys/time.h" 3 4=0A=
 typedef struct timespec {=0A=
         time_t tv_sec;=0A=
         long tv_nsec;=0A=
 } timespec_t;=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 typedef struct timespec timestruc_t;=0A=
 # 221 "/usr/include/sys/time.h" 3 4=0A=
 typedef struct itimerspec {=0A=
         struct timespec it_interval;=0A=
         struct timespec it_value;=0A=
 } itimerspec_t;=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 typedef longlong_t hrtime_t;=0A=
 # 323 "/usr/include/sys/time.h" 3 4=0A=
 int adjtime(struct timeval *, struct timeval *);=0A=
 # 332 "/usr/include/sys/time.h" 3 4=0A=
 int getitimer(int, struct itimerval *);=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 int setitimer(int, struct itimerval *, struct itimerval *);=0A=
 # 369 "/usr/include/sys/time.h" 3 4=0A=
 int settimeofday(struct timeval *, void *);=0A=
 =0A=
 hrtime_t gethrtime(void);=0A=
 hrtime_t gethrvtime(void);=0A=
 # 389 "/usr/include/sys/time.h" 3 4=0A=
 int gettimeofday(struct timeval *, void *);=0A=
 # 399 "/usr/include/sys/time.h" 3 4=0A=
 # 1 "/usr/include/time.h" 1 3 4=0A=
 # 18 "/usr/include/time.h" 3 4=0A=
 #pragma ident "@(#)time.h	1.25	96/03/12 SMI" =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 extern "C" {=0A=
 # 53 "/usr/include/time.h" 3 4=0A=
 struct tm {=0A=
         int tm_sec;=0A=
         int tm_min;=0A=
         int tm_hour;=0A=
         int tm_mday;=0A=
         int tm_mon;=0A=
         int tm_year;=0A=
         int tm_wday;=0A=
         int tm_yday;=0A=
         int tm_isdst;=0A=
 };=0A=
 =0A=
 =0A=
 =0A=
 extern clock_t clock(void);=0A=
 extern double difftime(time_t, time_t);=0A=
 extern time_t mktime(struct tm *);=0A=
 extern time_t time(time_t *);=0A=
 extern char *asctime(const struct tm *);=0A=
 extern char *ctime(const time_t *);=0A=
 extern struct tm *gmtime(const time_t *);=0A=
 extern struct tm *localtime(const time_t *);=0A=
 extern size_t strftime(char *, size_t, const char *, const struct tm =
 *);=0A=
 =0A=
 =0A=
 =0A=
 extern struct tm *gmtime_r(const time_t *, struct tm *);=0A=
 extern struct tm *localtime_r(const time_t *, struct tm *);=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 extern char *strptime(const char *, const char *, struct tm *);=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 # 1 "/usr/include/sys/time.h" 1 3 4=0A=
 # 94 "/usr/include/time.h" 2 3 4=0A=
 # 1 "/usr/include/sys/siginfo.h" 1 3 4=0A=
 # 15 "/usr/include/sys/siginfo.h" 3 4=0A=
 #pragma ident "@(#)siginfo.h	1.39	96/06/28 SMI" =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 extern "C" {=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 union sigval {=0A=
         int sival_int;=0A=
         void *sival_ptr;=0A=
 };=0A=
 # 43 "/usr/include/sys/siginfo.h" 3 4=0A=
 struct sigevent {=0A=
         int sigev_notify;=0A=
         union {=0A=
                 int _sigev_signo;=0A=
                 void (*_sigev_notify_function)(union sigval);=0A=
         } _sigev_un;=0A=
         union sigval sigev_value;=0A=
         int _sigev_pad1;=0A=
         void *_sigev_notify_attributes;=0A=
         int _sigev_pad2;=0A=
 };=0A=
 # 88 "/usr/include/sys/siginfo.h" 3 4=0A=
 # 1 "/usr/include/sys/machsig.h" 1 3 4=0A=
 # 16 "/usr/include/sys/machsig.h" 3 4=0A=
 #pragma ident "@(#)machsig.h	1.6	96/04/29 SMI"=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 extern "C" {=0A=
 # 39 "/usr/include/sys/machsig.h" 3 4=0A=
 # 1 "/usr/include/vm/faultcode.h" 1 3 4=0A=
 # 34 "/usr/include/vm/faultcode.h" 3 4=0A=
 #pragma ident "@(#)faultcode.h	1.15	92/07/14 SMI" =0A=
 =0A=
 =0A=
 extern "C" {=0A=
 # 60 "/usr/include/vm/faultcode.h" 3 4=0A=
 typedef int faultcode_t;=0A=
 =0A=
 =0A=
 =0A=
 }=0A=
 # 40 "/usr/include/sys/machsig.h" 2 3 4=0A=
 # 97 "/usr/include/sys/machsig.h" 3 4=0A=
 }=0A=
 # 89 "/usr/include/sys/siginfo.h" 2 3 4=0A=
 # 184 "/usr/include/sys/siginfo.h" 3 4=0A=
 typedef struct siginfo {=0A=
 =0A=
 =0A=
 =0A=
         int si_signo;=0A=
         int si_code;=0A=
         int si_errno;=0A=
 =0A=
         union {=0A=
 =0A=
                 int __pad[((128 / sizeof (int)) - 3)];=0A=
 =0A=
                 struct {=0A=
                         pid_t __pid;=0A=
                         union {=0A=
                                 struct {=0A=
                                         uid_t __uid;=0A=
 =0A=
                                         union sigval __value;=0A=
 =0A=
 =0A=
 =0A=
                                 } __kill;=0A=
                                 struct {=0A=
                                         clock_t __utime;=0A=
                                         int __status;=0A=
                                         clock_t __stime;=0A=
                                 } __cld;=0A=
                         } __pdata;=0A=
                 } __proc;=0A=
 =0A=
                 struct {=0A=
                         void *__addr;=0A=
                         int __trapno;=0A=
                         caddr_t __pc;=0A=
                 } __fault;=0A=
 =0A=
                 struct {=0A=
 =0A=
                         int __fd;=0A=
                         long __band;=0A=
                 } __file;=0A=
 =0A=
                 struct {=0A=
                         caddr_t __faddr;=0A=
                         timestruc_t __tstamp;=0A=
                         short __syscall;=0A=
                         char __nsysarg;=0A=
                         char __fault;=0A=
                         long __sysarg[8];=0A=
                         long __mstate[17];=0A=
                 } __prof;=0A=
 =0A=
         } __data;=0A=
 =0A=
 } siginfo_t;=0A=
 # 248 "/usr/include/sys/siginfo.h" 3 4=0A=
 typedef struct k_siginfo {=0A=
 =0A=
         int si_signo;=0A=
         int si_code;=0A=
         int si_errno;=0A=
 =0A=
         union {=0A=
                 struct {=0A=
                         pid_t __pid;=0A=
                         union {=0A=
                                 struct {=0A=
                                         uid_t __uid;=0A=
                                         union sigval __value;=0A=
                                 } __kill;=0A=
                                 struct {=0A=
                                         clock_t __utime;=0A=
                                         int __status;=0A=
                                         clock_t __stime;=0A=
                                 } __cld;=0A=
                         } __pdata;=0A=
                 } __proc;=0A=
 =0A=
                 struct {=0A=
                         void *__addr;=0A=
                         int __trapno;=0A=
                         caddr_t __pc;=0A=
                 } __fault;=0A=
 =0A=
                 struct {=0A=
 =0A=
                         int __fd;=0A=
                         long __band;=0A=
                 } __file;=0A=
 =0A=
                 struct {=0A=
                         caddr_t __faddr;=0A=
                         timestruc_t __tstamp;=0A=
                         short __syscall;=0A=
                         char __nsysarg;=0A=
                         char __fault;=0A=
 =0A=
 =0A=
 =0A=
                 } __prof;=0A=
 =0A=
         } __data;=0A=
 =0A=
 } k_siginfo_t;=0A=
 =0A=
 typedef struct sigqueue {=0A=
         struct sigqueue *sq_next;=0A=
         k_siginfo_t sq_info;=0A=
         void (*sq_func)(struct sigqueue *);=0A=
         void *sq_backptr;=0A=
 =0A=
 } sigqueue_t;=0A=
 # 333 "/usr/include/sys/siginfo.h" 3 4=0A=
 }=0A=
 # 95 "/usr/include/time.h" 2 3 4=0A=
 extern int clock_getres(clockid_t, struct timespec *);=0A=
 extern int clock_gettime(clockid_t, struct timespec *);=0A=
 extern int clock_settime(clockid_t, const struct timespec *);=0A=
 =0A=
 extern int timer_create(clockid_t, struct sigevent *, timer_t *);=0A=
 extern int timer_delete(timer_t);=0A=
 extern int timer_getoverrun(timer_t);=0A=
 extern int timer_gettime(timer_t, struct itimerspec *);=0A=
 extern int timer_settime(timer_t, int, const struct itimerspec *,=0A=
                 struct itimerspec *);=0A=
 extern int nanosleep(const struct timespec *, struct timespec *);=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 extern void tzset(void);=0A=
 =0A=
 extern char *tzname[2];=0A=
 =0A=
 =0A=
 extern long _sysconf(int);=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 extern long timezone;=0A=
 extern int daylight;=0A=
 # 137 "/usr/include/time.h" 3 4=0A=
 extern struct tm *getdate(const char *);=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 extern int getdate_err;=0A=
 # 249 "/usr/include/time.h" 3 4=0A=
 extern char *asctime_r(const struct tm *, char *, int);=0A=
 extern char *ctime_r(const time_t *, char *, int);=0A=
 # 295 "/usr/include/time.h" 3 4=0A=
 }=0A=
 # 400 "/usr/include/sys/time.h" 2 3 4=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 # 1 "/usr/include/sys/select.h" 1 3 4=0A=
 # 406 "/usr/include/sys/time.h" 2 3 4=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 }=0A=
 # 17 "/usr/include/sys/select.h" 2 3 4=0A=
 =0A=
 =0A=
 =0A=
 extern "C" {=0A=
 # 34 "/usr/include/sys/select.h" 3 4=0A=
 typedef long fd_mask;=0A=
 =0A=
 typedef long fds_mask;=0A=
 # 62 "/usr/include/sys/select.h" 3 4=0A=
 typedef struct fd_set {=0A=
 =0A=
 =0A=
 =0A=
         long fds_bits[(((1024)+(((sizeof (fds_mask) * 8))-1))/((sizeof =
 (fds_mask) * 8)))];=0A=
 } fd_set;=0A=
 # 86 "/usr/include/sys/select.h" 3 4=0A=
 extern int select(int, fd_set *, fd_set *, fd_set *, struct timeval =
 *);=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 }=0A=
 # 432 =
 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/sys/types.h" 2 3 =
 4=0A=
 # 448 =
 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/sys/types.h" 3 =
 4=0A=
 }=0A=
 # 21 "/usr/include/sys/wait.h" 2 3 4=0A=
 =0A=
 =0A=
 =0A=
 # 1 "/usr/include/sys/resource.h" 1 3 4=0A=
 # 15 "/usr/include/sys/resource.h" 3 4=0A=
 #pragma ident "@(#)resource.h	1.21	96/06/03 SMI" =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 extern "C" {=0A=
 # 55 "/usr/include/sys/resource.h" 3 4=0A=
 typedef unsigned long rlim_t;=0A=
 # 71 "/usr/include/sys/resource.h" 3 4=0A=
 struct rlimit {=0A=
         rlim_t rlim_cur;=0A=
         rlim_t rlim_max;=0A=
 };=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 typedef u_longlong_t rlim64_t;=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 struct rlimit64 {=0A=
         rlim64_t rlim_cur;=0A=
         rlim64_t rlim_max;=0A=
 };=0A=
 # 114 "/usr/include/sys/resource.h" 3 4=0A=
 struct rusage {=0A=
         struct timeval ru_utime;=0A=
         struct timeval ru_stime;=0A=
         long ru_maxrss;=0A=
         long ru_ixrss;=0A=
         long ru_idrss;=0A=
         long ru_isrss;=0A=
         long ru_minflt;=0A=
         long ru_majflt;=0A=
         long ru_nswap;=0A=
         long ru_inblock;=0A=
         long ru_oublock;=0A=
         long ru_msgsnd;=0A=
         long ru_msgrcv;=0A=
         long ru_nsignals;=0A=
         long ru_nvcsw;=0A=
         long ru_nivcsw;=0A=
 };=0A=
 # 148 "/usr/include/sys/resource.h" 3 4=0A=
 extern int setrlimit(int, const struct rlimit *);=0A=
 extern int getrlimit(int, struct rlimit *);=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 extern int setrlimit64(int, const struct rlimit64 *);=0A=
 extern int getrlimit64(int, struct rlimit64 *);=0A=
 =0A=
 =0A=
 extern int getpriority(int, id_t);=0A=
 extern int setpriority(int, id_t, int);=0A=
 extern int getrusage(int, struct rusage *);=0A=
 # 183 "/usr/include/sys/resource.h" 3 4=0A=
 }=0A=
 # 25 "/usr/include/sys/wait.h" 2 3 4=0A=
 =0A=
 # 1 "/usr/include/sys/procset.h" 1 3 4=0A=
 # 16 "/usr/include/sys/procset.h" 3 4=0A=
 #pragma ident "@(#)procset.h	1.17	96/04/24 SMI" =0A=
 =0A=
 =0A=
 extern "C" {=0A=
 # 40 "/usr/include/sys/procset.h" 3 4=0A=
 typedef enum=0A=
 =0A=
         idtype=0A=
 =0A=
                 {=0A=
         P_PID,=0A=
         P_PPID,=0A=
         P_PGID,=0A=
 =0A=
         P_SID,=0A=
         P_CID,=0A=
         P_UID,=0A=
         P_GID,=0A=
         P_ALL,=0A=
         P_LWPID=0A=
 } idtype_t;=0A=
 # 64 "/usr/include/sys/procset.h" 3 4=0A=
 typedef enum idop {=0A=
         POP_DIFF,=0A=
 =0A=
 =0A=
         POP_AND,=0A=
 =0A=
 =0A=
         POP_OR,=0A=
 =0A=
 =0A=
         POP_XOR=0A=
 =0A=
 =0A=
 } idop_t;=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 typedef struct procset {=0A=
         idop_t p_op;=0A=
 =0A=
 =0A=
 =0A=
 =0A=
         idtype_t p_lidtype;=0A=
 =0A=
 =0A=
         id_t p_lid;=0A=
 =0A=
         idtype_t p_ridtype;=0A=
 =0A=
 =0A=
         id_t p_rid;=0A=
 } procset_t;=0A=
 # 143 "/usr/include/sys/procset.h" 3 4=0A=
 }=0A=
 # 27 "/usr/include/sys/wait.h" 2 3 4=0A=
 =0A=
 =0A=
 =0A=
 extern "C" {=0A=
 # 86 "/usr/include/sys/wait.h" 3 4=0A=
 extern pid_t wait(int *);=0A=
 extern pid_t waitpid(pid_t, int *, int);=0A=
 =0A=
 =0A=
 extern int waitid(idtype_t, id_t, siginfo_t *, int);=0A=
 extern pid_t wait3(int *, int, struct rusage *);=0A=
 # 108 "/usr/include/sys/wait.h" 3 4=0A=
 }=0A=
 # 32 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/stdlib.h" 2 =
 3 4=0A=
 =0A=
 =0A=
 =0A=
 extern "C" {=0A=
 =0A=
 =0A=
 typedef struct {=0A=
         int quot;=0A=
         int rem;=0A=
 } div_t;=0A=
 =0A=
 typedef struct {=0A=
         long quot;=0A=
         long rem;=0A=
 } ldiv_t;=0A=
 =0A=
 =0A=
 typedef struct {=0A=
         long long quot;=0A=
         long long rem;=0A=
 } lldiv_t;=0A=
 # 107 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/stdlib.h" =
 3 4=0A=
 extern unsigned char __ctype[];=0A=
 =0A=
 =0A=
 =0A=
 extern double atof(const char *);=0A=
 extern int atoi(const char *);=0A=
 extern long int atol(const char *);=0A=
 extern double strtod(const char *, char **);=0A=
 extern long int strtol(const char *, char **, int);=0A=
 extern unsigned long int strtoul(const char *, char **, int);=0A=
 =0A=
 extern int rand(void);=0A=
 extern void srand(unsigned int);=0A=
 =0A=
 =0A=
 extern int rand_r(unsigned int *);=0A=
 =0A=
 =0A=
 extern void *calloc(size_t, size_t);=0A=
 extern void free(void *);=0A=
 extern void *malloc(size_t);=0A=
 extern void *realloc(void *, size_t);=0A=
 =0A=
 extern void abort(void);=0A=
 extern int atexit(void (*)(void));=0A=
 extern void exit(int);=0A=
 extern void _exithandle(void);=0A=
 extern char *getenv(const char *);=0A=
 extern int system(const char *);=0A=
 =0A=
 extern void *bsearch(const void *, const void *, size_t, size_t,=0A=
         int (*)(const void *, const void *));=0A=
 extern void qsort(void *, size_t, size_t,=0A=
         int (*)(const void *, const void *));=0A=
 =0A=
 extern int abs(int);=0A=
 extern div_t div(int, int);=0A=
 extern long int labs(long);=0A=
 extern ldiv_t ldiv(long, long);=0A=
 =0A=
 extern int mbtowc(wchar_t *, const char *, size_t);=0A=
 extern int mblen(const char *, size_t);=0A=
 extern int wctomb(char *, wchar_t);=0A=
 =0A=
 extern size_t mbstowcs(wchar_t *, const char *, size_t);=0A=
 extern size_t wcstombs(char *, const wchar_t *, size_t);=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 extern double drand48(void);=0A=
 extern double erand48(unsigned short *);=0A=
 extern long jrand48(unsigned short *);=0A=
 extern void lcong48(unsigned short *);=0A=
 extern long lrand48(void);=0A=
 extern long mrand48(void);=0A=
 extern long nrand48(unsigned short *);=0A=
 extern unsigned short *seed48(unsigned short *);=0A=
 extern void srand48(long);=0A=
 extern int putenv(const char *);=0A=
 extern void setkey(const char *);=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 extern void swab(const char *, char *, int);=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 extern int mkstemp(char *);=0A=
 =0A=
 =0A=
 extern int mkstemp64(char *);=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 extern long a64l(const char *);=0A=
 extern char *ecvt(double, int, int *, int *);=0A=
 extern char *fcvt(double, int, int *, int *);=0A=
 extern char *gcvt(double, int, char *);=0A=
 extern int getsubopt(char **, char *const *, char **);=0A=
 extern int grantpt(int);=0A=
 extern char *initstate(unsigned, char *, size_t);=0A=
 extern char *l64a(long);=0A=
 extern char *mktemp(char *);=0A=
 extern char *ptsname(int);=0A=
 extern long random(void);=0A=
 extern char *realpath(const char *, char *);=0A=
 extern char *setstate(const char *);=0A=
 extern void srandom(unsigned);=0A=
 extern int ttyslot(void);=0A=
 extern int unlockpt(int);=0A=
 extern void *valloc(size_t);=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 extern int dup2(int, int);=0A=
 extern char *qecvt(long double, int, int *, int *);=0A=
 extern char *qfcvt(long double, int, int *, int *);=0A=
 extern char *qgcvt(long double, int, char *);=0A=
 extern char *getcwd(char *, size_t);=0A=
 extern const char *getexecname(void);=0A=
 extern char *getlogin(void);=0A=
 extern int getopt(int, char *const *, const char *);=0A=
 extern char *optarg;=0A=
 extern int optind, opterr, optopt;=0A=
 extern char *getpass(const char *);=0A=
 extern char *getpassphrase(const char *);=0A=
 extern int getpw(uid_t, char *);=0A=
 extern int isatty(int);=0A=
 extern void *memalign(size_t, size_t);=0A=
 extern char *ttyname(int);=0A=
 =0A=
 =0A=
 extern long long atoll(const char *);=0A=
 extern long long llabs(long long);=0A=
 extern lldiv_t lldiv(long long, long long);=0A=
 extern char *lltostr(long long, char *);=0A=
 extern long long strtoll(const char *, char **, int);=0A=
 extern unsigned long long strtoull(const char *, char **, int);=0A=
 extern char *ulltostr(unsigned long long, char *);=0A=
 # 371 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/stdlib.h" =
 3 4=0A=
 }=0A=
 # 50 "base.h" 2=0A=
 # 1 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/stdio.h" 1 3 =
 4=0A=
 # 14 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/stdio.h" 3 =
 4=0A=
 # 1 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/stdarg.h" 1 =
 3 4=0A=
 # 43 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/stdarg.h" 3 =
 4=0A=
 typedef __builtin_va_list __gnuc_va_list;=0A=
 # 15 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/stdio.h" 2 =
 3 4=0A=
 # 29 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/stdio.h" 3 =
 4=0A=
 #pragma ident "@(#)stdio.h	1.49	97/05/09 SMI" =0A=
 =0A=
 =0A=
 # 1 "/usr/include/sys/va_list.h" 1 3 4=0A=
 # 9 "/usr/include/sys/va_list.h" 3 4=0A=
 #pragma ident "@(#)va_list.h	1.6	96/01/26 SMI"=0A=
 # 22 "/usr/include/sys/va_list.h" 3 4=0A=
 extern "C" {=0A=
 # 44 "/usr/include/sys/va_list.h" 3 4=0A=
 typedef void *__va_list;=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 }=0A=
 # 33 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/stdio.h" 2 =
 3 4=0A=
 # 43 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/stdio.h" 3 =
 4=0A=
 extern "C" {=0A=
 # 58 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/stdio.h" 3 =
 4=0A=
 typedef long long __longlong_t;=0A=
 # 83 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/stdio.h" 3 =
 4=0A=
 typedef long fpos_t;=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 typedef __longlong_t fpos64_t;=0A=
 # 188 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/stdio.h" 3 =
 4=0A=
 typedef struct=0A=
 {=0A=
 =0A=
 =0A=
 =0A=
 =0A=
         int _cnt;=0A=
         unsigned char *_ptr;=0A=
 =0A=
         unsigned char *_base;=0A=
         unsigned char _flag;=0A=
         unsigned char _file;=0A=
 } FILE;=0A=
 =0A=
 =0A=
 extern FILE __iob[60];=0A=
 =0A=
 =0A=
 =0A=
 extern FILE *_lastbuf;=0A=
 extern unsigned char *_bufendtab[];=0A=
 =0A=
 extern unsigned char _sibuf[], _sobuf[];=0A=
 # 240 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/stdio.h" 3 =
 4=0A=
 extern int remove(const char *);=0A=
 extern int rename(const char *, const char *);=0A=
 extern FILE *tmpfile(void);=0A=
 extern char *tmpnam(char *);=0A=
 =0A=
 extern char *tmpnam_r(char *);=0A=
 =0A=
 extern int fclose(FILE *);=0A=
 extern int fflush(FILE *);=0A=
 extern FILE *fopen(const char *, const char *);=0A=
 extern FILE *freopen(const char *, const char *, FILE *);=0A=
 extern void setbuf(FILE *, char *);=0A=
 =0A=
 =0A=
 extern void setbuffer(FILE *, char *, size_t);=0A=
 extern int setlinebuf(FILE *);=0A=
 =0A=
 extern int setvbuf(FILE *, char *, int, size_t);=0A=
 =0A=
 extern int fprintf(FILE *, const char *, ...);=0A=
 =0A=
 extern int fscanf(FILE *, const char *, ...);=0A=
 =0A=
 extern int printf(const char *, ...);=0A=
 =0A=
 extern int scanf(const char *, ...);=0A=
 =0A=
 =0A=
 =0A=
 extern int snprintf(char *, size_t, const char *, ...);=0A=
 =0A=
 =0A=
 extern int sprintf(char *, const char *, ...);=0A=
 =0A=
 extern int sscanf(const char *, const char *, ...);=0A=
 extern int vfprintf(FILE *, const char *, __gnuc_va_list);=0A=
 extern int vprintf(const char *, __gnuc_va_list);=0A=
 =0A=
 =0A=
 extern int vsnprintf(char *, size_t, const char *, __gnuc_va_list);=0A=
 =0A=
 extern int vsprintf(char *, const char *, __gnuc_va_list);=0A=
 extern int fgetc(FILE *);=0A=
 extern char *fgets(char *, int, FILE *);=0A=
 extern int fputc(int, FILE *);=0A=
 extern int fputs(const char *, FILE *);=0A=
 extern int getc(FILE *);=0A=
 extern int getchar(void);=0A=
 extern char *gets(char *);=0A=
 extern int putc(int, FILE *);=0A=
 extern int putchar(int);=0A=
 extern int puts(const char *);=0A=
 extern int ungetc(int, FILE *);=0A=
 extern size_t fread(void *, size_t, size_t, FILE *);=0A=
 extern size_t fwrite(const void *, size_t, size_t, FILE *);=0A=
 extern int fgetpos(FILE *, fpos_t *);=0A=
 extern int fseek(FILE *, long, int);=0A=
 extern int fsetpos(FILE *, const fpos_t *);=0A=
 extern long ftell(FILE *);=0A=
 extern void rewind(FILE *);=0A=
 extern void clearerr(FILE *);=0A=
 extern int feof(FILE *);=0A=
 extern int ferror(FILE *);=0A=
 extern void perror(const char *);=0A=
 =0A=
 extern int __filbuf(FILE *);=0A=
 extern int __flsbuf(int, FILE *);=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 extern FILE *fdopen(int, const char *);=0A=
 extern char *ctermid(char *);=0A=
 extern int fileno(FILE *);=0A=
 # 325 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/stdio.h" 3 =
 4=0A=
 extern void flockfile(FILE *);=0A=
 extern int ftrylockfile(FILE *);=0A=
 extern void funlockfile(FILE *);=0A=
 extern int getc_unlocked(FILE *);=0A=
 extern int getchar_unlocked(void);=0A=
 extern int putc_unlocked(int, FILE *);=0A=
 extern int putchar_unlocked(int);=0A=
 # 340 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/stdio.h" 3 =
 4=0A=
 extern FILE *popen(const char *, const char *);=0A=
 extern char *cuserid(char *);=0A=
 extern char *tempnam(const char *, const char *);=0A=
 extern int getopt(int, char *const *, const char *);=0A=
 =0A=
 =0A=
 =0A=
 extern char *optarg;=0A=
 extern int optind, opterr, optopt;=0A=
 extern int getw(FILE *);=0A=
 extern int putw(int, FILE *);=0A=
 extern int pclose(FILE *);=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 extern int fseeko(FILE *, off_t, int);=0A=
 extern off_t ftello(FILE *);=0A=
 # 369 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/stdio.h" 3 =
 4=0A=
 extern FILE *fopen64(const char *, const char *);=0A=
 extern FILE *freopen64(const char *, const char *, FILE *);=0A=
 extern FILE *tmpfile64(void);=0A=
 extern int fgetpos64(FILE *, fpos64_t *);=0A=
 extern int fsetpos64(FILE *, const fpos64_t *);=0A=
 extern int fseeko64(FILE *, off64_t, int);=0A=
 extern off64_t ftello64(FILE *);=0A=
 # 534 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/stdio.h" 3 =
 4=0A=
 }=0A=
 # 51 "base.h" 2=0A=
 # 1 "/usr/include/assert.h" 1 3 4=0A=
 # 11 "/usr/include/assert.h" 3 4=0A=
 #pragma ident "@(#)assert.h	1.9	92/07/14 SMI" =0A=
 =0A=
 =0A=
 extern "C" {=0A=
 =0A=
 =0A=
 =0A=
 extern void __assert(const char *, const char *, int);=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 }=0A=
 # 52 "base.h" 2=0A=
 # 1 "/usr/include/string.h" 1 3 4=0A=
 # 17 "/usr/include/string.h" 3 4=0A=
 #pragma ident "@(#)string.h	1.19	96/03/12 SMI" =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 extern "C" {=0A=
 # 36 "/usr/include/string.h" 3 4=0A=
 extern void *memcpy(void *, const void *, size_t);=0A=
 extern void *memmove(void *, const void *, size_t);=0A=
 extern char *strcpy(char *, const char *);=0A=
 extern char *strncpy(char *, const char *, size_t);=0A=
 =0A=
 extern char *strcat(char *, const char *);=0A=
 extern char *strncat(char *, const char *, size_t);=0A=
 =0A=
 extern int memcmp(const void *, const void *, size_t);=0A=
 extern int strcmp(const char *, const char *);=0A=
 extern int strcoll(const char *, const char *);=0A=
 extern int strncmp(const char *, const char *, size_t);=0A=
 extern size_t strxfrm(char *, const char *, size_t);=0A=
 =0A=
 extern void *memchr(const void *, int, size_t);=0A=
 extern char *strchr(const char *, int);=0A=
 extern size_t strcspn(const char *, const char *);=0A=
 extern char *strpbrk(const char *, const char *);=0A=
 extern char *strrchr(const char *, int);=0A=
 extern size_t strspn(const char *, const char *);=0A=
 extern char *strstr(const char *, const char *);=0A=
 extern char *strtok(char *, const char *);=0A=
 =0A=
 =0A=
 extern char *strtok_r(char *, const char *, char **);=0A=
 =0A=
 extern void *memset(void *, int, size_t);=0A=
 extern char *strerror(int);=0A=
 extern size_t strlen(const char *);=0A=
 =0A=
 =0A=
 =0A=
 extern void *memccpy(void *, const void *, int, size_t);=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 extern char *strsignal(int);=0A=
 extern int ffs(int);=0A=
 extern int strcasecmp(const char *, const char *);=0A=
 extern int strncasecmp(const char *, const char *, size_t);=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 extern char *strdup(const char *);=0A=
 # 139 "/usr/include/string.h" 3 4=0A=
 }=0A=
 # 53 "base.h" 2=0A=
 =0A=
 =0A=
 # 1 "/usr/include/iconv.h" 1 3 4=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 #pragma ident "@(#)iconv.h	1.2	94/01/21 SMI"=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 extern "C" {=0A=
 =0A=
 =0A=
 typedef struct _iconv_info *iconv_t;=0A=
 =0A=
 =0A=
 extern iconv_t iconv_open(const char *, const char *);=0A=
 extern size_t iconv(iconv_t, const char **, size_t *, char **, size_t =
 *);=0A=
 extern int iconv_close(iconv_t);=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 }=0A=
 # 56 "base.h" 2=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 # 1 "platform.h" 1=0A=
 # 48 "platform.h"=0A=
 extern int isnan__(double x);=0A=
 extern int isinf__(double x);=0A=
 extern double getMillisecs();=0A=
 =0A=
 class DStr;=0A=
 void my_getcwd(DStr &dir);=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 # 1 "/usr/include/strings.h" 1 3 4=0A=
 # 9 "/usr/include/strings.h" 3 4=0A=
 #pragma ident "@(#)strings.h	1.3	96/03/12 SMI"=0A=
 # 19 "/usr/include/strings.h" 3 4=0A=
 extern "C" {=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 extern int bcmp(const void *, const void *, size_t);=0A=
 extern void bcopy(const void *, void *, size_t);=0A=
 extern void bzero(void *, size_t);=0A=
 =0A=
 extern char *index(const char *, int);=0A=
 extern char *rindex(const char *, int);=0A=
 # 65 "/usr/include/strings.h" 3 4=0A=
 }=0A=
 # 62 "platform.h" 2=0A=
 # 62 "base.h" 2=0A=
 # 1 "sablot.h" 1=0A=
 # 42 "sablot.h"=0A=
 typedef void *SablotHandle;=0A=
 typedef void *SDOM_Document;=0A=
 typedef void *SablotSituation;=0A=
 # 66 "sablot.h"=0A=
 # 1 "shandler.h" 1=0A=
 # 36 "shandler.h"=0A=
 # 1 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/stddef.h" 1 =
 3 4=0A=
 # 147 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/stddef.h" =
 3 4=0A=
 typedef int ptrdiff_t;=0A=
 # 37 "shandler.h" 2=0A=
 # 46 "shandler.h"=0A=
 typedef enum=0A=
 {=0A=
     HLR_MESSAGE =3D 0,=0A=
     HLR_SCHEME,=0A=
     HLR_SAX,=0A=
     HLR_MISC,=0A=
     HLR_ENC=0A=
 } HandlerType;=0A=
 =0A=
 extern const char* hlrTypeNames[];=0A=
 =0A=
 typedef enum=0A=
 {=0A=
     SH_ERR_OK =3D 0,=0A=
     SH_ERR_NOT_OK =3D 1,=0A=
     SH_ERR_UNSUPPORTED_SCHEME=0A=
 } SchemeHandlerErrors;=0A=
 # 81 "shandler.h"=0A=
 typedef int SchemeHandlerGetAll(void *userData, SablotHandle =
 processor_,=0A=
     const char *scheme, const char *rest,=0A=
     char **buffer, int *byteCount);=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 typedef int SchemeHandlerFreeMemory(void *userData, SablotHandle =
 processor_,=0A=
     char *buffer);=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 typedef int SchemeHandlerOpen(void *userData, SablotHandle =
 processor_,=0A=
     const char *scheme, const char *rest, int *handle);=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 typedef int SchemeHandlerGet(void *userData, SablotHandle =
 processor_,=0A=
     int handle, char *buffer, int *byteCount);=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 typedef int SchemeHandlerPut(void *userData, SablotHandle =
 processor_,=0A=
     int handle, const char *buffer, int *byteCount);=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 typedef int SchemeHandlerClose(void *userData, SablotHandle =
 processor_,=0A=
     int handle);=0A=
 =0A=
 typedef struct=0A=
 {=0A=
     SchemeHandlerGetAll *getAll;=0A=
     SchemeHandlerFreeMemory *freeMemory;=0A=
     SchemeHandlerOpen *open;=0A=
     SchemeHandlerGet *get;=0A=
     SchemeHandlerPut *put;=0A=
     SchemeHandlerClose *close;=0A=
 } SchemeHandler;=0A=
 # 150 "shandler.h"=0A=
 typedef unsigned long MH_ERROR;=0A=
 =0A=
 =0A=
 =0A=
 typedef enum=0A=
 {=0A=
     MH_LEVEL_DEBUG,=0A=
     MH_LEVEL_INFO,=0A=
     MH_LEVEL_WARN,=0A=
     MH_LEVEL_ERROR,=0A=
     MH_LEVEL_CRITICAL=0A=
 } MH_LEVEL;=0A=
 # 170 "shandler.h"=0A=
 typedef MH_ERROR=0A=
 MessageHandlerMakeCode(=0A=
     void *userData, SablotHandle processor_,=0A=
     int severity, unsigned short facility, unsigned short code);=0A=
 # 182 "shandler.h"=0A=
 typedef MH_ERROR=0A=
 MessageHandlerLog(=0A=
     void *userData, SablotHandle processor_,=0A=
     MH_ERROR code, MH_LEVEL level, char **fields);=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 typedef MH_ERROR=0A=
 MessageHandlerError(void *userData, SablotHandle processor_,=0A=
     MH_ERROR code, MH_LEVEL level, char **fields);=0A=
 =0A=
 =0A=
 =0A=
 typedef struct=0A=
 {=0A=
     MessageHandlerMakeCode *makeCode;=0A=
     MessageHandlerLog *log;=0A=
     MessageHandlerError *error;=0A=
 } MessageHandler;=0A=
 # 219 "shandler.h"=0A=
 typedef void=0A=
 SAXHandlerStartDocument(void* userData, SablotHandle processor_);=0A=
 =0A=
 typedef void=0A=
 SAXHandlerStartElement(void* userData, SablotHandle processor_,=0A=
     const char* name, const char** atts);=0A=
 =0A=
 typedef void=0A=
 SAXHandlerEndElement(void* userData, SablotHandle processor_,=0A=
     const char* name);=0A=
 =0A=
 typedef void=0A=
 SAXHandlerStartNamespace(void* userData, SablotHandle processor_,=0A=
     const char* prefix, const char* uri);=0A=
 =0A=
 typedef void=0A=
 SAXHandlerEndNamespace(void* userData, SablotHandle processor_,=0A=
     const char* prefix);=0A=
 =0A=
 typedef void=0A=
 SAXHandlerComment(void* userData, SablotHandle processor_,=0A=
     const char* contents);=0A=
 =0A=
 typedef void=0A=
 SAXHandlerPI(void* userData, SablotHandle processor_,=0A=
     const char* target, const char* contents);=0A=
 =0A=
 typedef void=0A=
 SAXHandlerCharacters(void* userData, SablotHandle processor_,=0A=
     const char* contents, int length);=0A=
 =0A=
 typedef void=0A=
 SAXHandlerEndDocument(void* userData, SablotHandle processor_);=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 typedef struct=0A=
 {=0A=
     SAXHandlerStartDocument *startDocument;=0A=
     SAXHandlerStartElement *startElement;=0A=
     SAXHandlerEndElement *endElement;=0A=
     SAXHandlerStartNamespace *startNamespace;=0A=
     SAXHandlerEndNamespace *endNamespace;=0A=
     SAXHandlerComment *comment;=0A=
     SAXHandlerPI *processingInstruction;=0A=
     SAXHandlerCharacters *characters;=0A=
     SAXHandlerEndDocument *endDocument;=0A=
 } SAXHandler;=0A=
 # 286 "shandler.h"=0A=
 typedef void=0A=
 MiscHandlerDocumentInfo(void* userData, SablotHandle processor_,=0A=
     const char *contentType, const char *encoding);=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 typedef struct=0A=
 {=0A=
     MiscHandlerDocumentInfo *documentInfo;=0A=
 } MiscHandler;=0A=
 # 313 "shandler.h"=0A=
 typedef void* EHDescriptor;=0A=
 =0A=
 typedef enum=0A=
 {=0A=
     EH_OK,=0A=
     EH_EINVAL,=0A=
     EH_E2BIG,=0A=
     EH_EILSEQ=0A=
 } EHResult;=0A=
 # 330 "shandler.h"=0A=
 typedef EHDescriptor EncHandlerOpen(void* userData, SablotHandle =
 processor_,=0A=
     int direction, const char *encoding);=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 typedef EHResult EncHandlerConv(void* userData, SablotHandle =
 processor_,=0A=
     EHDescriptor cd, const char** inbuf, size_t *inbytesleft,=0A=
     char ** outbuf, size_t *outbytesleft);=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 typedef int EncHandlerClose(void* userData, SablotHandle processor_,=0A=
     EHDescriptor cd);=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 typedef struct=0A=
 {=0A=
     EncHandlerOpen *open;=0A=
     EncHandlerConv *conv;=0A=
     EncHandlerClose *close;=0A=
 } EncHandler;=0A=
 # 67 "sablot.h" 2=0A=
 # 1 "sxpath.h" 1=0A=
 # 36 "sxpath.h"=0A=
 # 1 "sablot.h" 1=0A=
 # 37 "sxpath.h" 2=0A=
 =0A=
 typedef void *SXP_Node;=0A=
 typedef void *SXP_Document;=0A=
 typedef void *SXP_NodeList;=0A=
 =0A=
 typedef enum=0A=
 {=0A=
     ELEMENT_NODE =3D 1,=0A=
     ATTRIBUTE_NODE =3D 2,=0A=
     TEXT_NODE =3D 3,=0A=
     PROCESSING_INSTRUCTION_NODE =3D 7,=0A=
     COMMENT_NODE =3D 8,=0A=
     DOCUMENT_NODE =3D 9,=0A=
     NAMESPACE_NODE =3D 13=0A=
 } SXP_NodeType;=0A=
 =0A=
 typedef enum=0A=
 {=0A=
     SXP_NONE,=0A=
     SXP_NUMBER,=0A=
     SXP_STRING,=0A=
     SXP_BOOLEAN,=0A=
     SXP_NODESET=0A=
 } SXP_ExpressionType;=0A=
 =0A=
 typedef char SXP_char;=0A=
 =0A=
 typedef SXP_Node NodeHandle;=0A=
 =0A=
 typedef void *QueryContext;=0A=
 # 80 "sxpath.h"=0A=
 typedef SXP_NodeType DOMH_getNodeType(SXP_Node n);=0A=
 typedef const SXP_char* DOMH_getNodeName(SXP_Node n);=0A=
 typedef const SXP_char* DOMH_getNodeNameURI(SXP_Node n);=0A=
 typedef const SXP_char* DOMH_getNodeNameLocal(SXP_Node n);=0A=
 typedef const SXP_char* DOMH_getNodeValue(SXP_Node n);=0A=
 typedef SXP_Node DOMH_getNextSibling(SXP_Node n);=0A=
 typedef SXP_Node DOMH_getPreviousSibling(SXP_Node n);=0A=
 typedef SXP_Node DOMH_getNextAttrNS(SXP_Node n);=0A=
 typedef SXP_Node DOMH_getPreviousAttrNS(SXP_Node n);=0A=
 typedef int DOMH_getChildCount(SXP_Node n);=0A=
 typedef int DOMH_getAttributeCount(SXP_Node n);=0A=
 typedef int DOMH_getNamespaceCount(SXP_Node n);=0A=
 typedef SXP_Node DOMH_getChildNo(SXP_Node n, int ndx);=0A=
 typedef SXP_Node DOMH_getAttributeNo(SXP_Node n, int ndx);=0A=
 typedef SXP_Node DOMH_getNamespaceNo(SXP_Node n, int ndx);=0A=
 typedef SXP_Node DOMH_getParent(SXP_Node n);=0A=
 typedef SXP_Document DOMH_getOwnerDocument(SXP_Node n);=0A=
 typedef int DOMH_compareNodes(SXP_Node n1, SXP_Node n2);=0A=
 typedef SXP_Document DOMH_retrieveDocument(const SXP_char* uri,=0A=
                                                void* udata);=0A=
 typedef SXP_Node DOMH_getNodeWithID(SXP_Document doc, const SXP_char* =
 id);=0A=
 =0A=
 typedef struct=0A=
 {=0A=
     DOMH_getNodeType *getNodeType;=0A=
     DOMH_getNodeName *getNodeName;=0A=
     DOMH_getNodeNameURI *getNodeNameURI;=0A=
     DOMH_getNodeNameLocal *getNodeNameLocal;=0A=
     DOMH_getNodeValue *getNodeValue;=0A=
     DOMH_getNextSibling *getNextSibling;=0A=
     DOMH_getPreviousSibling *getPreviousSibling;=0A=
     DOMH_getNextAttrNS *getNextAttrNS;=0A=
     DOMH_getPreviousAttrNS *getPreviousAttrNS;=0A=
     DOMH_getChildCount *getChildCount;=0A=
     DOMH_getAttributeCount *getAttributeCount;=0A=
     DOMH_getNamespaceCount *getNamespaceCount;=0A=
     DOMH_getChildNo *getChildNo;=0A=
     DOMH_getAttributeNo *getAttributeNo;=0A=
     DOMH_getNamespaceNo *getNamespaceNo;=0A=
     DOMH_getParent *getParent;=0A=
     DOMH_getOwnerDocument *getOwnerDocument;=0A=
     DOMH_compareNodes *compareNodes;=0A=
     DOMH_retrieveDocument *retrieveDocument;=0A=
     DOMH_getNodeWithID *getNodeWithID;=0A=
 } DOMHandler;=0A=
 =0A=
 extern "C" { extern void SXP_registerDOMHandler(SablotSituation S, =
 DOMHandler *domh, void* udata); }=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 extern "C" { extern void SXP_unregisterDOMHandler(SablotSituation S); =
 }=0A=
 # 143 "sxpath.h"=0A=
 extern "C" { extern int SXP_createQueryContext(SablotSituation S, =
 QueryContext *Q); }=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 extern "C" { extern int SXP_addVariableBinding(QueryContext Q, const =
 SXP_char* name, QueryContext source); }=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 extern "C" { extern int SXP_addVariableNumber(QueryContext Q, const =
 SXP_char* name, double value); }=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 extern "C" { extern int SXP_addVariableString(QueryContext Q, const =
 SXP_char* name, const SXP_char* value); }=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 extern "C" { extern int SXP_addVariableBoolean(QueryContext Q, const =
 SXP_char* name, int value); }=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 extern "C" { extern int SXP_addNamespaceDeclaration(QueryContext Q, =
 const SXP_char* prefix, const SXP_char* uri); }=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 extern "C" { extern int SXP_query(QueryContext Q, const SXP_char* =
 query, SXP_Node n, int contextPosition, int contextSize); }=0A=
 # 187 "sxpath.h"=0A=
 extern "C" { extern int SXP_destroyQueryContext(QueryContext Q); }=0A=
 # 198 "sxpath.h"=0A=
 extern "C" { extern int SXP_getResultType(QueryContext Q, =
 SXP_ExpressionType *type); }=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 extern "C" { extern int SXP_getResultNumber(QueryContext Q, double =
 *result); }=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 extern "C" { extern int SXP_getResultBool(QueryContext Q, int *result); =
 }=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 extern "C" { extern int SXP_getResultString(QueryContext Q, const char =
 **result); }=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 extern "C" { extern int SXP_getResultNodeset(QueryContext Q, =
 SXP_NodeList *result); }=0A=
 # 229 "sxpath.h"=0A=
 extern "C" { extern int SXP_getNodeListLength(SXP_NodeList l); }=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 extern "C" { extern SXP_Node SXP_getNodeListItem(SXP_NodeList l, int =
 index); }=0A=
 # 68 "sablot.h" 2=0A=
 =0A=
 typedef enum=0A=
 {=0A=
   SAB_NO_ERROR_REPORTING =3D 0x1,=0A=
   SAB_PARSE_PUBLIC_ENTITIES =3D 0x2,=0A=
   SAB_DISABLE_ADDING_META =3D 0x4=0A=
 } SablotFlag;=0A=
 =0A=
 =0A=
 =0A=
 extern "C" { extern int SablotCreateDocument( SablotSituation S, =
 SDOM_Document *D); }=0A=
 # 87 "sablot.h"=0A=
 extern "C" { extern int SablotParse( SablotSituation S, const char =
 *uri, SDOM_Document *D); }=0A=
 # 97 "sablot.h"=0A=
 extern "C" { extern int SablotParseBuffer( SablotSituation S, const =
 char *buffer, SDOM_Document *D); }=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 extern "C" { extern int SablotParseStylesheet( SablotSituation S, const =
 char *uri, SDOM_Document *D); }=0A=
 # 114 "sablot.h"=0A=
 extern "C" { extern int SablotParseStylesheetBuffer( SablotSituation S, =
 const char *buffer, SDOM_Document *D); }=0A=
 # 125 "sablot.h"=0A=
 extern "C" { extern int SablotLockDocument( SablotSituation S, =
 SDOM_Document D); }=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 extern "C" { extern int SablotDestroyDocument( SablotSituation S, =
 SDOM_Document D); }=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 extern "C" { extern int SablotAddParam( SablotSituation S, void =
 *processor_, const char *paramName, const char *paramValue); }=0A=
 # 148 "sablot.h"=0A=
 extern "C" { extern int SablotAddArgBuffer( SablotSituation S, void =
 *processor_, const char *argName, const char *bufferValue); }=0A=
 # 157 "sablot.h"=0A=
 extern "C" { extern int SablotAddArgTree( SablotSituation S, void =
 *processor_, const char *argName, SDOM_Document tree); }=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 extern "C" { extern int SablotRunProcessorGen( SablotSituation S, void =
 *processor_, char *sheetURI, char *inputURI, char *resultURI); }=0A=
 # 181 "sablot.h"=0A=
 extern "C" { extern int SablotCreateSituation(SablotSituation *sPtr); =
 }=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 extern "C" { extern int SablotSetOptions(SablotSituation S, int flags); =
 }=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 extern "C" { extern int SablotClearSituation(SablotSituation S); }=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 extern "C" { extern const char *SablotGetErrorURI(SablotSituation S); =
 }=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 extern "C" { extern int SablotGetErrorLine(SablotSituation S); }=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 extern "C" { extern const char *SablotGetErrorMsg(SablotSituation S); =
 }=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 extern "C" { extern int SablotDestroySituation(SablotSituation S); }=0A=
 # 226 "sablot.h"=0A=
 extern "C" { extern int SablotCreateProcessor(SablotHandle =
 *processorPtr); }=0A=
 # 238 "sablot.h"=0A=
 extern "C" { extern int =
 SablotCreateProcessorForSituation(SablotSituation S, void =
 **processorPtr); }=0A=
 # 249 "sablot.h"=0A=
 extern "C" { extern int SablotDestroyProcessor(SablotHandle =
 processor_); }=0A=
 # 259 "sablot.h"=0A=
 extern "C" { extern int SablotRunProcessor(SablotHandle processor_, =
 char *sheetURI, char *inputURI, char *resultURI, char **params, char =
 **arguments); }=0A=
 # 276 "sablot.h"=0A=
 extern "C" { extern int SablotGetResultArg(SablotHandle processor_, =
 char *argURI, char **argValue); }=0A=
 # 288 "sablot.h"=0A=
 extern "C" { extern int SablotFreeResultArgs(SablotHandle processor_); =
 }=0A=
 # 301 "sablot.h"=0A=
 extern "C" { extern int SablotRegHandler( SablotHandle processor_, =
 HandlerType type, void *handler, void *userData); }=0A=
 # 316 "sablot.h"=0A=
 extern "C" { extern int SablotUnregHandler( SablotHandle processor_, =
 HandlerType type, void *handler, void *userData); }=0A=
 # 332 "sablot.h"=0A=
 extern "C" { extern int SablotSetBase( SablotHandle processor_, const =
 char *theBase); }=0A=
 # 353 "sablot.h"=0A=
 extern "C" { extern int SablotSetBaseForScheme(void* processor_, const =
 char *scheme, const char *base); }=0A=
 # 366 "sablot.h"=0A=
 extern "C" { extern int SablotSetLog( SablotHandle processor_, const =
 char *logFilename, int logLevel); }=0A=
 # 399 "sablot.h"=0A=
 extern "C" { extern int SablotProcess( char *sheetURI, char *inputURI, =
 char *resultURI, char **params, char **arguments, char **resultArg); =
 }=0A=
 # 420 "sablot.h"=0A=
 extern "C" { extern int SablotProcessFiles( char *styleSheetName, char =
 *inputName, char *resultName); }=0A=
 # 443 "sablot.h"=0A=
 extern "C" { extern int SablotProcessStrings( char *styleSheetStr, char =
 *inputStr, char **resultStr); }=0A=
 # 468 "sablot.h"=0A=
 extern "C" { extern int SablotProcessStringsWithBase( char =
 *styleSheetStr, char *inputStr, char **resultStr, char *theHardBase); =
 }=0A=
 # 484 "sablot.h"=0A=
 extern "C" { extern int SablotFree(char *resultStr); }=0A=
 # 495 "sablot.h"=0A=
 extern "C" { extern int SablotClearError(SablotHandle processor_); }=0A=
 # 506 "sablot.h"=0A=
 extern "C" { extern const char *SablotGetMsgText(int code); }=0A=
 # 515 "sablot.h"=0A=
 extern "C" { extern void SablotSetInstanceData(SablotHandle processor_, =
 void *idata); }=0A=
 # 524 "sablot.h"=0A=
 extern "C" { extern void *SablotGetInstanceData(SablotHandle =
 processor_); }=0A=
 # 536 "sablot.h"=0A=
 extern "C" { extern void SablotSetEncoding(SablotHandle processor_, =
 char *encoding_); }=0A=
 # 63 "base.h" 2=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 enum ListSize=0A=
 {=0A=
     LIST_SIZE_1 =3D 0,=0A=
     LIST_SIZE_2 =3D 1,=0A=
     LIST_SIZE_SMALL =3D 2,=0A=
     LIST_SIZE_8 =3D 3,=0A=
     LIST_SIZE_MEDIUM =3D 4,=0A=
     LIST_SIZE_LARGE =3D 5,=0A=
     LIST_SIZE_EXPR_TOKENS =3D LIST_SIZE_MEDIUM=0A=
 };=0A=
 # 115 "base.h"=0A=
 enum VTYPE=0A=
 {=0A=
     VT_VERTEX,VT_ROOT,VT_ELEMENT,VT_ATTRIBUTE,VT_TEXT,=0A=
     VT_PI, VT_COMMENT, VT_NAMESPACE,=0A=
     VT_VERTEX_WF =3D VT_VERTEX,=0A=
     VT_ATTRIBUTE_WF =3D VT_ATTRIBUTE,=0A=
     VT_TEXT_WF =3D VT_TEXT,=0A=
     VT_BASE =3D 0x000f,=0A=
     VT_DADDY_FLAG =3D 0x2000,=0A=
     VT_DADDY_WF =3D VT_VERTEX | VT_DADDY_FLAG,=0A=
     VT_ELEMENT_WF =3D VT_ELEMENT | VT_DADDY_FLAG,=0A=
     VT_ROOT_WF =3D VT_ROOT | VT_DADDY_FLAG,=0A=
     VT_XSL =3D 0x4000,=0A=
     VT_XSL_ELEMENT_WF =3D VT_XSL | VT_ELEMENT_WF,=0A=
     VT_EXT =3D 0x8000,=0A=
     VT_EXT_ELEMENT_WF =3D VT_EXT | VT_ELEMENT_WF,=0A=
     VT_TOP_FOREIGN =3D 0x10000=0A=
 };=0A=
 =0A=
 =0A=
 =0A=
 enum SpeakMode=0A=
 {=0A=
     SM_NAME =3D 1,=0A=
         SM_CONTENTS =3D 2,=0A=
 =0A=
     SM_OFFICIAL =3D SM_NAME | SM_CONTENTS,=0A=
 =0A=
         SM_INS_SPACES =3D 0x1000,=0A=
         SM_DESCRIBE =3D 0x2000,=0A=
         SM_ESCAPE =3D 0x4000=0A=
 };=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 enum XSL_OP=0A=
 {=0A=
     XSL_APPLY_IMPORTS, XSL_APPLY_TEMPLATES,=0A=
     XSL_ATTRIBUTE, XSL_ATTRIBUTE_SET,=0A=
     XSL_CALL_TEMPLATE, XSL_CHOOSE,=0A=
     XSL_COMMENT, XSL_COPY, XSL_COPY_OF,=0A=
     XSL_DECIMAL_FORMAT, XSL_ELEMENT,=0A=
     XSL_FALLBACK, XSL_FOR_EACH,=0A=
     XSL_IF, XSL_IMPORT,=0A=
     XSL_INCLUDE, XSL_KEY,=0A=
     XSL_MESSAGE, XSL_NAMESPACE_ALIAS,=0A=
     XSL_NUMBER, XSL_OTHERWISE,=0A=
     XSL_OUTPUT, XSL_PARAM,=0A=
     XSL_PRESERVE_SPACE, XSL_PROCESSING_INSTR,=0A=
     XSL_SORT, XSL_STRIP_SPACE,=0A=
     XSL_STYLESHEET, XSL_TEMPLATE,=0A=
     XSL_TEXT, XSL_TRANSFORM,=0A=
     XSL_VALUE_OF, XSL_VARIABLE,=0A=
     XSL_WHEN, XSL_WITH_PARAM,=0A=
     XSL_NONE=0A=
 };=0A=
 =0A=
 enum XSL_ATT=0A=
 {=0A=
     XSLA_CASE_ORDER, XSLA_CDATA_SECT_ELEMS, XSLA_COUNT,=0A=
     XSLA_DATA_TYPE, XSLA_DECIMAL_SEPARATOR, XSLA_DIGIT, =
 XSLA_DISABLE_OUTPUT_ESC, XSLA_DOCTYPE_PUBLIC, XSLA_DOCTYPE_SYSTEM,=0A=
     XSLA_ELEMENTS, XSLA_ENCODING, XSLA_EXCL_RES_PREFIXES, =
 XSLA_EXT_ELEM_PREFIXES,=0A=
     XSLA_FORMAT, XSLA_FROM,=0A=
     XSLA_GROUPING_SEPARATOR, XSLA_GROUPING_SIZE,=0A=
     XSLA_HREF,=0A=
     XSLA_ID, XSLA_INDENT, XSLA_INFINITY,=0A=
     XSLA_LANG, XSLA_LETTER_VALUE, XSLA_LEVEL,=0A=
     XSLA_MATCH, XSLA_MEDIA_TYPE, XSLA_METHOD, XSLA_MINUS_SIGN, =
 XSLA_MODE,=0A=
     XSLA_NAME, XSLA_NAMESPACE, XSLA_NAN,=0A=
     XSLA_OMIT_XML_DECL, XSLA_ORDER,=0A=
     XSLA_PATTERN_SEPARATOR, XSLA_PERCENT, XSLA_PER_MILLE, =
 XSLA_PRIORITY,=0A=
     XSLA_RESULT_PREFIX,=0A=
     XSLA_SELECT, XSLA_STANDALONE, XSLA_STYLESHEET_PREFIX,=0A=
     XSLA_TERMINATE, XSLA_TEST,=0A=
     XSLA_USE, XSLA_USE_ATTR_SETS,=0A=
     XSLA_VALUE, XSLA_VERSION,=0A=
     XSLA_ZERO_DIGIT,=0A=
     XSLA_NONE=0A=
 };=0A=
 =0A=
 enum ExAxis=0A=
 {=0A=
     AXIS_ANCESTOR, AXIS_ANC_OR_SELF, AXIS_ATTRIBUTE, AXIS_CHILD,=0A=
         AXIS_DESCENDANT, AXIS_DESC_OR_SELF, AXIS_FOLLOWING, =
 AXIS_FOLL_SIBLING,=0A=
         AXIS_NAMESPACE, AXIS_PARENT, AXIS_PRECEDING, =
 AXIS_PREC_SIBLING,=0A=
         AXIS_SELF,=0A=
         AXIS_NONE,=0A=
 =0A=
 =0A=
         AXIS_ROOT=0A=
 };=0A=
 =0A=
 enum ExNodeType=0A=
 {=0A=
     EXNODE_NODE,=0A=
         EXNODE_TEXT,=0A=
         EXNODE_PI,=0A=
         EXNODE_COMMENT,=0A=
         EXNODE_NONE=0A=
 };=0A=
 # 237 "base.h"=0A=
 typedef unsigned long oolong;=0A=
 typedef oolong HashId;=0A=
 typedef HashId Phrase;=0A=
 =0A=
 typedef int Bool;=0A=
 # 320 "base.h"=0A=
 extern const char* theWhitespace;=0A=
 # 337 "base.h"=0A=
 extern const char* xslOpNames[];=0A=
 extern const char* xslAttNames[];=0A=
 extern const char* axisNames[];=0A=
 extern const char* exNodeTypeNames[];=0A=
 extern const char* vertexTypeNames[];=0A=
 extern int lookup(const char* str, const char** table);=0A=
 extern int lookupNoCase(const char* str, const char** table);=0A=
 extern int fcomp(double,double);=0A=
 extern Bool isstd(const char *);=0A=
 extern int stdclose(FILE *f);=0A=
 extern FILE *stdopen(const char *fn, const char *mode);=0A=
 extern Bool strEqNoCase(const char*, const char*);=0A=
 =0A=
 class SituationObj;=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 extern SchemeHandler *theSchemeHandler;=0A=
 extern MessageHandler *theMessageHandler;=0A=
 extern SAXHandler *theSAXHandler;=0A=
 extern void* theSAXUserData;=0A=
 =0A=
 =0A=
 extern Bool isValidNCName(const char* name);=0A=
 extern Bool isValidQName(const char* name);=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 extern const char *theXSLTNamespace, *oldXSLTNamespace, =
 *theXMLNamespace,=0A=
   *theXHTMLNamespace;=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 extern const char=0A=
     *escNewline, *escTab, *escQuote, *escApos,=0A=
     *escLess, *escGreater;=0A=
 # 408 "base.h"=0A=
 extern void checkLeak();=0A=
 extern void memStats();=0A=
 =0A=
 class Str;=0A=
 extern Str getMillisecsDiff(double originalTime);=0A=
 # 422 "base.h"=0A=
 # 1 "situa.h" 1=0A=
 # 38 "situa.h"=0A=
 # 1 "base.h" 1=0A=
 # 39 "situa.h" 2=0A=
 # 1 "error.h" 1=0A=
 # 79 "error.h"=0A=
 enum MsgCode=0A=
 {=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
     E_OK,=0A=
 =0A=
     E_NOT_OK,=0A=
 =0A=
 =0A=
 =0A=
 =0A=
     E_XML,=0A=
 =0A=
     E1_BAD_CHAR,=0A=
 =0A=
 =0A=
 =0A=
 =0A=
     E_FILE_OPEN,=0A=
 =0A=
     E_MEMORY,=0A=
 =0A=
 =0A=
 =0A=
 =0A=
     E1_UNSUPP_XSL,=0A=
 =0A=
     ET_BAD_XSL,=0A=
 =0A=
     ET_REQ_ATTR,=0A=
 =0A=
     ET_BAD_ATTR,=0A=
 =0A=
     E1_UNKNOWN_AXIS,=0A=
 =0A=
     ET_EXPR_SYNTAX,=0A=
 =0A=
     ET_BAD_NUMBER,=0A=
 =0A=
     ET_BAD_VAR,=0A=
 =0A=
     ET_INFINITE_LITERAL,=0A=
 =0A=
     ET_LPAREN_EXP,=0A=
 =0A=
     ET_RPAREN_EXP,=0A=
 =0A=
     ET_LPARCKET_EXP,=0A=
 =0A=
     ET_RBRACKET_EXP,=0A=
 =0A=
     ET_EMPTY_PATT,=0A=
 =0A=
     ET_BAD_TOKEN,=0A=
 =0A=
     E_BAD_AXIS_IN_PATTERN,=0A=
 =0A=
     E_BAD_PATTERN,=0A=
 =0A=
     E_VAR_IN_MATCH,=0A=
 =0A=
     ET_BAD_PREFIX,=0A=
 =0A=
     E1_EXTRA_COLON,=0A=
 =0A=
     E_ELEM_MUST_EMPTY,=0A=
 =0A=
     E_ELEM_CONT_TEXT_OR_LRE,=0A=
 =0A=
     E_ELEM_CONTAINS_ELEM,=0A=
 =0A=
     E_ELEM_MUST_BE_PCDATA,=0A=
 =0A=
     E1_ELEM_TOPLEVEL,=0A=
 =0A=
     E_BAD_ELEM_CONTENT,=0A=
 =0A=
 =0A=
 =0A=
 =0A=
     ET_DUPLICATE_RULE_NAME,=0A=
 =0A=
     ET_DUPLICATE_ASET_NAME,=0A=
     E1_NONEX_ASET_NAME,=0A=
     E1_CIRCULAR_ASET_REF,=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
     E1_DUPLICIT_KEY,=0A=
 =0A=
     E1_KEY_NOT_FOUND,=0A=
 =0A=
 =0A=
 =0A=
 =0A=
     E1_FORMAT_DUPLICIT_OPTION,=0A=
 =0A=
 =0A=
     E1_FORMAT_OPTION_CHAR,=0A=
 =0A=
 =0A=
     E1_FORMAT_DUPLICIT_NAME,=0A=
 =0A=
 =0A=
     E1_FORMAT_NOT_FOUND,=0A=
 =0A=
 =0A=
     E_FORMAT_INVALID,=0A=
 =0A=
 =0A=
 =0A=
     E1_NUMBER_LEVEL,=0A=
 =0A=
     E1_NUMBER_LETTER_VALUE,=0A=
 =0A=
 =0A=
     E1_CIRCULAR_INCLUSION,=0A=
 =0A=
 =0A=
 =0A=
 =0A=
     E1_VAR_NOT_FOUND,=0A=
 =0A=
     E1_VAR_CIRCULAR_REF,=0A=
 =0A=
     ET_CONTEXT_FOR_BAD_EXPR,=0A=
 =0A=
     ET_BAD_ARGS_N,=0A=
 =0A=
     ET_BAD_ARG_TYPE,=0A=
 =0A=
     ET_FUNC_NOT_SUPPORTED,=0A=
 =0A=
 =0A=
 =0A=
     E1_RULE_NOT_FOUND,=0A=
 =0A=
     E1_MULT_ASSIGNMENT,=0A=
 =0A=
 =0A=
 =0A=
     E1_ATTR_YES_NO,=0A=
 =0A=
     E1_ATTRIBUTE_TOO_LATE,=0A=
 =0A=
     E1_ATTRIBUTE_OUTSIDE,=0A=
 =0A=
     E1_BAD_CHAR_IN_ENC,=0A=
 =0A=
     E1_PI_TARGET,=0A=
 =0A=
     E_ELEM_IN_COMMENT_PI,=0A=
 =0A=
     E1_XSL_MESSAGE_TERM,=0A=
 =0A=
 =0A=
 =0A=
 =0A=
     E1_URI_OPEN,=0A=
 =0A=
     E1_URI_CLOSE,=0A=
 =0A=
     E1_URI_READ,=0A=
 =0A=
     E1_URI_WRITE,=0A=
 =0A=
     E1_ARG_NOT_FOUND,=0A=
 =0A=
     E1_DUPLICATE_ARG,=0A=
 =0A=
     E1_UNSUPPORTED_SCHEME,=0A=
 =0A=
     E1_INVALID_HLR_TYPE,=0A=
 =0A=
     E1_UNKNOWN_ENC,=0A=
 =0A=
 =0A=
 =0A=
     E2_SDOM,=0A=
 =0A=
     E_NONE,=0A=
 =0A=
 =0A=
     E_EX_NAMESPACE_UNKNOWN,=0A=
 =0A=
 =0A=
     E_INVALID_DATA_IN_PI,=0A=
 =0A=
 =0A=
     E_UNSUPPORTED_EXELEMENT,=0A=
     E_ATTR_MISSING,=0A=
     E_JS_EVAL_ERROR,=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
     W_UNSUPP_LANG,=0A=
 =0A=
     W_NO_STYLESHEET,=0A=
 =0A=
 =0A=
 =0A=
 =0A=
     W1_HLR_REGISTERED,=0A=
 =0A=
     W1_HLR_NOT_REGISTERED,=0A=
 =0A=
     W1_OLD_NS_USED,=0A=
 =0A=
     W1_XSL_NOT_XSL,=0A=
 =0A=
     W1_OUTPUT_ATTR,=0A=
 =0A=
     W_DISABLE_OUTPUT_ESC,=0A=
 =0A=
     W1_UNSUPP_OUT_ENCODING,=0A=
 =0A=
     W1_UNSUPP_XSL,=0A=
 =0A=
     W1_XSL_MESSAGE_NOTERM,=0A=
 =0A=
     W1_SORT_DATA_TYPE,=0A=
 =0A=
     W1_SORT_ORDER,=0A=
 =0A=
     W1_SORT_CASE_ORDER,=0A=
 =0A=
     W1_LANG,=0A=
 =0A=
     W_NO_WCSXFRM,=0A=
 =0A=
     W_BAD_START,=0A=
 =0A=
     W_NUMBER_GROUPING,=0A=
 =0A=
     W_NUMBER_NOT_POSITIVE,=0A=
 =0A=
     W2_ATTSET_REDEF,=0A=
 =0A=
     W1_ALIAS_REDEF,=0A=
 =0A=
     E_INVALID_QNAME,=0A=
     E_INVALID_NCNAME,=0A=
 =0A=
     W_NONE,=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
     L_START,=0A=
 =0A=
     L_STOP,=0A=
 =0A=
     L1_PARSING,=0A=
 =0A=
     L1_PARSE_DONE,=0A=
 =0A=
     L1_EXECUTING,=0A=
 =0A=
     L1_EXECUTION_DONE,=0A=
 =0A=
     L1_READING_EXT_ENTITY,=0A=
 =0A=
     L2_DISP_ARENA,=0A=
 =0A=
     L2_DISP_HASH,=0A=
 =0A=
     L2_KEY_ADDED,=0A=
     L_NONE,=0A=
 =0A=
     MSG_ERROR =3D 0x4000,=0A=
     MSG_WARNING,=0A=
     MSG_LOG,=0A=
     MSG_LAST=0A=
 };=0A=
 =0A=
 struct SabMsg=0A=
 {=0A=
     MsgCode code;=0A=
     const char *text;=0A=
 };=0A=
 =0A=
 extern SabMsg* GetMessage(MsgCode e);=0A=
 # 40 "situa.h" 2=0A=
 # 48 "situa.h"=0A=
 enum MsgType=0A=
 {=0A=
     MT_ERROR,=0A=
         MT_WARN,=0A=
         MT_LOG=0A=
 };=0A=
 =0A=
 enum MsgDestination=0A=
 {=0A=
     MD_NONE,=0A=
         MD_FILE,=0A=
         MD_CHERROR=0A=
 };=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 class XSLElement;=0A=
 class Vertex;=0A=
 # 1 "datastr.h" 1=0A=
 # 49 "datastr.h"=0A=
 typedef unsigned long Phrase;=0A=
 class HashTable;=0A=
 class Tree;=0A=
 # 60 "datastr.h"=0A=
 template <class T>=0A=
 class List=0A=
 {=0A=
 public:=0A=
     List(int logBlocksize_ =3D LIST_SIZE_SMALL);=0A=
 =0A=
     void append(T x);=0A=
 =0A=
     void deppend();=0A=
 =0A=
     void deppendall();=0A=
 =0A=
     void rm(int);=0A=
 =0A=
     Bool isEmpty() const;=0A=
 =0A=
     inline int number() const;=0A=
 =0A=
     T& operator[](int ndx) const;=0A=
 =0A=
     inline T& last() const;=0A=
 =0A=
     virtual void swap(int,int);=0A=
     void insertBefore(T newMember, int refIndex);=0A=
     ~List(void);=0A=
 protected:=0A=
     void grow();=0A=
     int nItems;=0A=
     T *block;=0A=
     int blocksize, origBlocksize;=0A=
     virtual T* claimMemory( int nbytes ) const { return (T*) =
 malloc(nbytes); }=0A=
     virtual T* reclaimMemory( T *p, int newbytes, int oldbytes ) =
 const=0A=
         { return (T*) realloc(p, newbytes); }=0A=
     virtual void returnMemory( T* &p ) const { if (p) free(p); p =3D =
 __null; }=0A=
 };=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 template <class T>=0A=
 class PList : public List<T>=0A=
 {=0A=
 public:=0A=
     PList(int logBlocksize_ =3D LIST_SIZE_SMALL);=0A=
 =0A=
     void freelast(Bool);=0A=
 =0A=
     void freeall(Bool);=0A=
 =0A=
     void freerm(int, Bool);=0A=
 };=0A=
 # 122 "datastr.h"=0A=
 struct DynBlockItem=0A=
 {=0A=
     char *data;=0A=
     int byteCount;=0A=
     DynBlockItem *next;=0A=
 };=0A=
 =0A=
 class DynBlock=0A=
 {=0A=
     friend class DStr;=0A=
 public:=0A=
     DynBlock();=0A=
     ~DynBlock();=0A=
     void nadd(const char *data, int bytes);=0A=
     Bool isEmpty() const;=0A=
     char *getPointer() const;=0A=
     char *compactToBuffer() const;=0A=
 protected:=0A=
     int byteCount;=0A=
     DynBlockItem *first, *last;=0A=
     void remove();=0A=
     void compact() const;=0A=
     int compactToBuffer_(char* buf, Bool kill_);=0A=
 };=0A=
 =0A=
 =0A=
 =0A=
 class DynStrBlock : public DynBlock=0A=
 {=0A=
 public:=0A=
 =0A=
 =0A=
     char* compactString_(const char *firstPart, int firstLen);=0A=
 };=0A=
 # 165 "datastr.h"=0A=
 class DStr;=0A=
 =0A=
 class Str=0A=
 {=0A=
 public:=0A=
     friend class DStr;=0A=
 =0A=
 =0A=
     Str();=0A=
     Str(const Str& string);=0A=
     Str(int num);=0A=
     Str(double num);=0A=
     Str(char c);=0A=
     Str(const char *chars);=0A=
     Str(const DStr &dstring);=0A=
 =0A=
 =0A=
     Str& operator=3D(const DStr& string);=0A=
     Str& operator=3D(const Str& string);=0A=
     Str& operator=3D(const char *chars);=0A=
     Str& operator=3D(char c);=0A=
     Str& operator=3D(int number);=0A=
     Str& operator=3D(double dblnum);=0A=
 =0A=
 =0A=
     void nset(const char* chars, int len);=0A=
 =0A=
 =0A=
     virtual void empty();=0A=
 =0A=
 =0A=
     Bool isEmpty() const;=0A=
 =0A=
 =0A=
 =0A=
     char operator[](int index) const;=0A=
 =0A=
 =0A=
 =0A=
     virtual operator char*() const;=0A=
 =0A=
 =0A=
 =0A=
     int compare(const Str &other) const;=0A=
     int compare(const char *otherChars) const;=0A=
 =0A=
 =0A=
 =0A=
     Bool operator< (const Str &);=0A=
     Bool operator< (const char*);=0A=
 =0A=
 =0A=
 =0A=
     Bool operator=3D=3D (const Str& other) const;=0A=
     Bool operator=3D=3D (const char* otherChars) const;=0A=
     Bool operator=3D=3D (char* otherChars) const;=0A=
 =0A=
 =0A=
 =0A=
     Bool eqNoCase(const Str& other) const;=0A=
     Bool eqNoCase(const char* otherChars) const;=0A=
 =0A=
 =0A=
     virtual int length() const;=0A=
 =0A=
 =0A=
 =0A=
     DStr operator+ (const Str& other) const;=0A=
     DStr operator+ (const char *otherChars) const;=0A=
     DStr operator+ (int otherNum) const;=0A=
 =0A=
 =0A=
     Bool toDouble(double& retval) const;=0A=
 =0A=
     DStr& appendSelf(DStr& other);=0A=
 =0A=
 =0A=
 =0A=
 =0A=
     void speakTerse(DStr &);=0A=
 =0A=
     virtual ~Str();=0A=
 protected:=0A=
 =0A=
     virtual void remove_() { returnMemory(text_); }=0A=
 =0A=
 =0A=
     virtual void pack_() const;=0A=
 =0A=
 =0A=
     virtual char* claimMemory( int nbytes ) const { return new =
 char[nbytes]; }=0A=
 =0A=
     virtual void returnMemory( char *&p ) const { if (p) delete[] p; p =
 =3D __null; }=0A=
 =0A=
     char* text_;=0A=
     int byteLength_;=0A=
 };=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 class DStr : public Str=0A=
 {=0A=
 public:=0A=
     DStr();=0A=
     DStr(char c);=0A=
     DStr(const char *chars);=0A=
     DStr(const Str& string);=0A=
     DStr(const DStr& dstring);=0A=
 =0A=
     DStr& operator=3D(const DStr& other);=0A=
 =0A=
 =0A=
     DStr& operator+=3D (const DStr& other);=0A=
     DStr& operator+=3D (const Str& other);=0A=
     DStr& operator+=3D (const char* otherChars);=0A=
     DStr& operator+=3D (char c);=0A=
     DStr& operator+=3D (int num);=0A=
 =0A=
     virtual DStr& appendSelf(DStr& other);=0A=
 =0A=
 =0A=
     DStr& nadd(const char *,int);=0A=
 =0A=
     virtual operator char*() const;=0A=
     virtual int length() const;=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
     virtual ~DStr();=0A=
 private:=0A=
 =0A=
     virtual void remove_();=0A=
 =0A=
     virtual void pack_() const;=0A=
     DynStrBlock blocks;=0A=
 };=0A=
 # 317 "datastr.h"=0A=
 void escapeChars(DStr& result, const Str& what,=0A=
                  const char* toEscape, const char** substitutes);=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 class NamespaceStackObj=0A=
 {=0A=
 public:=0A=
    Str prefix, uri;=0A=
    Bool hide;=0A=
 };=0A=
 =0A=
 class NamespaceStack : public PList<NamespaceStackObj*>=0A=
 {=0A=
 public:=0A=
 =0A=
     int findNum(const Str &_key) const;=0A=
 =0A=
     const Str* getUri(const Str &) const;=0A=
     Bool isHidden(const Str &) const;=0A=
     void appendConstruct(const Str &prefix, const Str& uri, Bool hide =
 =3D 0);=0A=
 };=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 class QName=0A=
 {=0A=
     friend class TreeConstructer;=0A=
 public:=0A=
     QName();=0A=
     QName(const QName &other);=0A=
 =0A=
     QName& operator =3D(const QName& other);=0A=
     Bool isEmpty() const;=0A=
     void empty();=0A=
 =0A=
 =0A=
     void setPrefix(Phrase);=0A=
     void setLocal(Phrase);=0A=
     void setUri(Phrase);=0A=
 =0A=
 =0A=
 =0A=
 =0A=
     Phrase getLocal() const;=0A=
 =0A=
     Phrase getUri() const;=0A=
 =0A=
     Phrase getPrefix() const;=0A=
 =0A=
     Bool hasPrefix() const;=0A=
 =0A=
 =0A=
     Bool operator=3D=3D(const QName &) const;=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 private:=0A=
     Phrase=0A=
         prefix,=0A=
         uri,=0A=
         local;=0A=
 };=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 class QNameList : public PList<QName *>=0A=
 {=0A=
 public:=0A=
 =0A=
     int findNdx(const QName &what) const;=0A=
 };=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 class EQName=0A=
 {=0A=
 =0A=
 public:=0A=
     EQName();=0A=
     EQName(const EQName&);=0A=
     Bool isEmpty() const;=0A=
     void empty();=0A=
 =0A=
     void set(const QName&, const HashTable&);=0A=
     void setPrefix(const Str&);=0A=
     void setLocal(const Str&);=0A=
     void setUri(const Str&);=0A=
 =0A=
 =0A=
     void getname(Str& fullName) const;=0A=
 =0A=
     const Str& getLocal() const;=0A=
 =0A=
     const Str& getUri() const;=0A=
 =0A=
     const Str& getPrefix() const;=0A=
 =0A=
     Bool hasPrefix() const;=0A=
 =0A=
 =0A=
     Bool operator=3D=3D(const EQName &) const;=0A=
 =0A=
 private:=0A=
     Str=0A=
         prefix,=0A=
         uri,=0A=
         local;=0A=
 };=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 class StrStr=0A=
 {=0A=
 public:=0A=
     Str=0A=
         key,=0A=
         value;=0A=
 };=0A=
 =0A=
 class StrStrList : public PList<StrStr*>=0A=
 {=0A=
 public:=0A=
 =0A=
     int findNum(const Str &_key) const;=0A=
 =0A=
     Str* find(const Str &) const;=0A=
     void appendConstruct(const Str &key, const Str& value);=0A=
 };=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 class EQNameList : public PList<EQName *>=0A=
 {=0A=
 public:=0A=
     const EQName* find(const EQName &what) const;=0A=
 };=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 struct EQNameStr=0A=
 {=0A=
     EQNameStr(const EQName& key_, const Str& value_) : key(key_), =
 value(value_)=0A=
     {=0A=
     };=0A=
     EQName key;=0A=
     Str value;=0A=
 };=0A=
 =0A=
 class EQNameStrList : public PList<EQNameStr *>=0A=
 {=0A=
 public:=0A=
     EQNameStrList()=0A=
     {=0A=
     };=0A=
     int findNdx(const EQName &what) const;=0A=
     const Str* find(const EQName &what) const;=0A=
     void appendConstruct(const EQName &key, const Str& value);=0A=
 };=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 template <class T>=0A=
 class SList: public PList<T>=0A=
 {=0A=
 public:=0A=
     SList(int logBlocksize_);=0A=
 =0A=
     virtual int compare(int, int, void *data)=0A=
     { (void)((!"abstract compare") || (__assert("!\"abstract =
 compare\"", "datastr.h", 513), 0)); return 0; }=0A=
 =0A=
     void insert(T, void *data =3D __null);=0A=
     void sort(int from =3D 0, int to =3D - 1, void *data =3D =
 __null);=0A=
 private:=0A=
     void quicksort(int bottom, int top, void *data);=0A=
     void qsPartition(int& i, int& j, void *data);=0A=
     void insertsort(int bottom, int top, void *data);=0A=
 };=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 class Expression;=0A=
 =0A=
 class SortDef=0A=
 {=0A=
 public:=0A=
     Expression *sortExpr;=0A=
     Str lang;=0A=
     Bool asText, ascend, upper1st;=0A=
     SortDef()=0A=
         : sortExpr(__null), asText(1), ascend(1)=0A=
         {};=0A=
     SortDef(Expression *sortExpr_, Str lang_,=0A=
         Bool asText_, Bool ascend_, Bool upper1st_)=0A=
         : sortExpr(sortExpr_), lang(lang_),=0A=
           asText(asText_), ascend(ascend_), upper1st(upper1st_)=0A=
         {};=0A=
 };=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 class SortDefList : public PList<SortDef*>=0A=
 {=0A=
     void appendConstruct(Expression *sortExpr_, Str lang_,=0A=
         Bool asText_, Bool ascend_, Bool upper1st_)=0A=
     {=0A=
         append(new SortDef(sortExpr_, lang_,=0A=
             asText_, ascend_, upper1st_));=0A=
     };=0A=
 };=0A=
 # 570 "datastr.h"=0A=
 class UriList : public PList<Str *>=0A=
 {=0A=
 public:=0A=
   void addUri(Str & uri);=0A=
   void removeUri(Str & uri);=0A=
   int findNdx(Str & uri);=0A=
 };=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 # 1 "situa.h" 1=0A=
 # 585 "datastr.h" 2=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 template <class T>=0A=
 List<T>::List(int logBlocksize_)=0A=
 :=0A=
 origBlocksize((1L << logBlocksize_))=0A=
 {=0A=
     nItems =3D 0;=0A=
     blocksize =3D 0;=0A=
     block =3D __null;=0A=
 };=0A=
 =0A=
 =0A=
 template <class T>=0A=
 void List<T>::append(T what)=0A=
 {=0A=
     if (nItems >=3D blocksize)=0A=
     {=0A=
         if (block)=0A=
             grow();=0A=
         else=0A=
         {=0A=
             blocksize =3D origBlocksize;=0A=
             block =3D (T*) claimMemory(blocksize * sizeof(T));=0A=
 =0A=
             (void)((block) || (__assert("block", "datastr.h", 615), =
 0));=0A=
         }=0A=
     }=0A=
     block[nItems++] =3D what;=0A=
 };=0A=
 =0A=
 template <class T>=0A=
 void List<T>::deppend()=0A=
 {=0A=
     (void)((nItems > 0) || (__assert("nItems > 0", "datastr.h", 624), =
 0));=0A=
     --nItems;=0A=
     if (!(nItems & (nItems - 1)) && (nItems >=3D origBlocksize))=0A=
     {=0A=
         int oldblocksize =3D blocksize;=0A=
         blocksize =3D nItems;=0A=
         if (blocksize)=0A=
         {=0A=
             block =3D (T*) reclaimMemory(block, blocksize * =
 sizeof(T),=0A=
                 oldblocksize * sizeof(T));=0A=
 =0A=
             (void)((block) || (__assert("block", "datastr.h", 635), =
 0));=0A=
         }=0A=
         else=0A=
             returnMemory(block);=0A=
     }=0A=
 };=0A=
 =0A=
 =0A=
 =0A=
 template <class T>=0A=
 void List<T>::grow()=0A=
 {=0A=
     if (!block) return;=0A=
     blocksize =3D blocksize << 1;=0A=
     int nbytes =3D blocksize * sizeof(T);=0A=
     block =3D (T*) reclaimMemory(block, nbytes, nbytes >> 1);=0A=
 =0A=
     (void)((block) || (__assert("block", "datastr.h", 652), 0));=0A=
 }=0A=
 =0A=
 template <class T>=0A=
 void List<T>::rm(int n)=0A=
 {=0A=
     (void)(((n >=3D 0) && (n < nItems)) || (__assert("(n >=3D 0) && (n =
 < nItems)", "datastr.h", 658), 0));=0A=
     memmove(block + n, block + n + 1, (nItems - n - 1) * sizeof(T));=0A=
     deppend();=0A=
 }=0A=
 =0A=
 template <class T>=0A=
 void List<T>::swap(int i, int j)=0A=
 {=0A=
     (void)(((i >=3D 0) && (i < nItems)) || (__assert("(i >=3D 0) && (i =
 < nItems)", "datastr.h", 666), 0));=0A=
     (void)(((j >=3D 0) && (j < nItems)) || (__assert("(j >=3D 0) && (j =
 < nItems)", "datastr.h", 667), 0));=0A=
     T temp =3D block[i];=0A=
     block[i] =3D block[j];=0A=
     block[j] =3D temp;=0A=
 }=0A=
 =0A=
 template <class T>=0A=
 void List<T>::deppendall()=0A=
 {=0A=
     nItems =3D 0;=0A=
     blocksize =3D 0;=0A=
     returnMemory(block);=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 }=0A=
 =0A=
 template <class T>=0A=
 inline int List<T>::number() const=0A=
 {=0A=
     return nItems;=0A=
 }=0A=
 =0A=
 template <class T>=0A=
 List<T>::~List()=0A=
 {=0A=
     deppendall();=0A=
 };=0A=
 =0A=
 template <class T>=0A=
 inline T& List<T>::operator[](int ndx) const=0A=
 {=0A=
     (void)(((ndx < nItems) && (ndx >=3D 0)) || (__assert("(ndx < =
 nItems) && (ndx >=3D 0)", "datastr.h", 700), 0));=0A=
     return block[ndx];=0A=
 };=0A=
 =0A=
 template <class T>=0A=
 inline T& List<T>::last() const=0A=
 {=0A=
     (void)((nItems) || (__assert("nItems", "datastr.h", 707), 0));=0A=
     return block[nItems - 1];=0A=
 }=0A=
 =0A=
 template <class T>=0A=
 Bool List<T>::isEmpty() const=0A=
 {=0A=
     return (Bool) (!nItems);=0A=
 }=0A=
 =0A=
 template <class T>=0A=
 void List<T>::insertBefore(T newMember, int refIndex)=0A=
 {=0A=
     append(newMember);=0A=
     memmove(block + refIndex + 1, block + refIndex,=0A=
         (number()-refIndex-1) * sizeof(T));=0A=
         block[refIndex] =3D newMember;=0A=
 }=0A=
 # 733 "datastr.h"=0A=
 template <class T>=0A=
 PList<T>::PList(int logBlocksize_)=0A=
 : List<T>(logBlocksize_)=0A=
 {=0A=
 }=0A=
 =0A=
 template <class T>=0A=
 void PList<T>::freelast(Bool asArray)=0A=
 {=0A=
     {if (asArray) delete[] this->last(); else delete this->last();};=0A=
     this->deppend();=0A=
 }=0A=
 =0A=
 template <class T>=0A=
 void PList<T>::freeall(Bool asArray)=0A=
 {=0A=
     for (int i =3D 0; i < this->nItems; i++)=0A=
         {if (asArray) delete[] this->block[i]; else delete =
 this->block[i];};=0A=
     this->deppendall();=0A=
 }=0A=
 =0A=
 template <class T>=0A=
 void PList<T>::freerm(int n, Bool asArray)=0A=
 {=0A=
     (void)(((n >=3D 0) && (n < this->nItems)) || (__assert("(n >=3D 0) =
 && (n < this->nItems)", "datastr.h", 757), 0));=0A=
     {if (asArray) delete[] this->block[n]; else delete =
 this->block[n];};=0A=
     this->rm(n);=0A=
 }=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 template <class T>=0A=
 SList<T>::SList(int logBlocksize_)=0A=
     : PList<T>(logBlocksize_)=0A=
 {=0A=
 };=0A=
 =0A=
 template <class T>=0A=
 void SList<T>::insert(T what, void *data )=0A=
 {=0A=
     append(what);=0A=
     int whatndx =3D this->number() - 1;=0A=
     int i, j;=0A=
     for (i=3D0; i < whatndx; i++)=0A=
         if (compare(whatndx, i, data) =3D=3D -1) break;=0A=
     if (i < whatndx)=0A=
     {=0A=
         for (j =3D whatndx; j > i; j--)=0A=
             this->operator[](j) =3D this->operator[](j-1);=0A=
         this->operator[](i) =3D what;=0A=
     };=0A=
 };=0A=
 =0A=
 template <class T>=0A=
 void SList<T>::insertsort(int bottom, int top, void *data)=0A=
 {=0A=
     int ceiling, k;=0A=
     T curr;=0A=
     for (ceiling =3D bottom + 1; ceiling <=3D top; ceiling++)=0A=
     {=0A=
         curr =3D this->block[ceiling];=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
         for (k =3D ceiling - 1; k >=3D bottom && compare(k, k + 1, =
 data) > 0; k--)=0A=
             this->swap(k, k+1);=0A=
     }=0A=
 }=0A=
 =0A=
 template <class T>=0A=
 void SList<T>::qsPartition(int& bottom, int& top, void *data)=0A=
 {=0A=
     int middle =3D (bottom + top) >> 1;=0A=
     if (compare(bottom, top, data) > 0) this->swap(bottom, top);=0A=
     if (compare(middle, top, data) > 0) this->swap(middle, top);=0A=
     if (compare(bottom, middle, data) > 0) this->swap(bottom, =
 middle);=0A=
 =0A=
     while (bottom <=3D top)=0A=
     {=0A=
 =0A=
         while ((++bottom <=3D top) && compare(bottom, middle, data) =
 <=3D 0);=0A=
         while ((--top >=3D bottom) && (compare(top, middle, data) >=3D =
 0));=0A=
 =0A=
         if (bottom < top)=0A=
         {=0A=
             if (middle =3D=3D bottom)=0A=
                 middle =3D top;=0A=
             else if (middle =3D=3D top)=0A=
                 middle =3D bottom;=0A=
             this->swap(bottom, top);=0A=
         }=0A=
     }=0A=
 }=0A=
 =0A=
 template <class T>=0A=
 void SList<T>::quicksort(int bottom, int top, void *data)=0A=
 {=0A=
     (void)((10 >=3D 3) || (__assert("QSORT_THRESHOLD >=3D 3", =
 "datastr.h", 835), 0));=0A=
     int i =3D bottom, j =3D top;=0A=
     if (top - bottom < 10)=0A=
         insertsort(bottom, top, data);=0A=
     else=0A=
     {=0A=
         qsPartition(i, j, data);=0A=
         quicksort(bottom, j, data);=0A=
         quicksort(i, top, data);=0A=
     }=0A=
 }=0A=
 =0A=
 template <class T>=0A=
 void SList<T>::sort(int from , int to , void *data )=0A=
 {=0A=
 =0A=
     if (to =3D=3D -1)=0A=
         to =3D this->nItems - 1;=0A=
     if (this->nItems < 2)=0A=
         return;=0A=
     quicksort(from, to, data);=0A=
 }=0A=
 =0A=
 =0A=
 typedef PList<Expression *> ExprList;=0A=
 # 70 "situa.h" 2=0A=
 =0A=
 class Processor;=0A=
 class DOMProvider;=0A=
 class DOMProviderStandard;=0A=
 =0A=
 class SituaInfo=0A=
 {=0A=
 public:=0A=
     MsgCode pending;=0A=
     Vertex *currV;=0A=
     Str currFile;=0A=
     Str currMsg;=0A=
     int currLine;=0A=
     int currSAXLine;=0A=
     int SDOMExceptionCode;=0A=
     SituaInfo()=0A=
     {=0A=
         pending =3D E_OK;=0A=
         currLine =3D 0;=0A=
         currSAXLine =3D 0;=0A=
         SDOMExceptionCode =3D 0;=0A=
     }=0A=
     SituaInfo& operator=3D (const SituaInfo& other);=0A=
     void clear();=0A=
 };=0A=
 =0A=
 class Recoder;=0A=
 =0A=
 class Situation=0A=
 {=0A=
 public:=0A=
     Situation();=0A=
     ~Situation();=0A=
 =0A=
     Recoder& recoder() const;=0A=
 =0A=
     void setFlag(SablotFlag f);=0A=
     Bool hasFlag(SablotFlag f);=0A=
     void resetFlag(SablotFlag f);=0A=
     void setFlags(int f);=0A=
 =0A=
 =0A=
     void setCurrV(Vertex *v);=0A=
 =0A=
 =0A=
     void setCurrVDoc(Vertex *v);=0A=
 =0A=
 =0A=
     void setCurrFile(const Str &);=0A=
 =0A=
 =0A=
     void setCurrLine(int);=0A=
 =0A=
 =0A=
     void setCurrSAXLine(int);=0A=
     int getCurrSAXLine();=0A=
 =0A=
 =0A=
     void setProcessor(Processor *P) {proc =3D P;}=0A=
 =0A=
 =0A=
     Processor *getProcessor() const {return proc;}=0A=
 =0A=
 =0A=
 =0A=
     void message(MsgType type, MsgCode code, const Str &arg1, const Str =
 &arg2);=0A=
 =0A=
 =0A=
     void clear();=0A=
 =0A=
 =0A=
     void clearError();=0A=
 =0A=
 =0A=
     Bool isError();=0A=
 =0A=
 =0A=
     int getError() const;=0A=
 =0A=
 =0A=
     Bool msgOutputFile(char *_errwfn, char *_logfn);=0A=
 =0A=
 =0A=
     Bool eraseLog(char *newLogFile);=0A=
 =0A=
 =0A=
     Str timeStr();=0A=
 =0A=
 =0A=
     Bool openDefaultFiles();=0A=
 =0A=
 =0A=
     Bool closeFiles();=0A=
 =0A=
 =0A=
     const Str& getMessage();=0A=
 =0A=
         void setSDOMExceptionCode(int code);=0A=
 =0A=
         int getSDOMExceptionCode() const;=0A=
 =0A=
     void getSDOMExceptionExtra(MsgCode& theCode,=0A=
         Str& theMessage, Str& theDocument, int& theLine) const;=0A=
 =0A=
         void swapProcessor(void *&proc_);=0A=
 =0A=
         const Str& findBaseURI(const Str& unmappedBase);=0A=
 =0A=
         void setDOMProvider(DOMHandler *domh, void* udata);=0A=
 =0A=
         DOMProvider& dom() {return *theProvider;}=0A=
 =0A=
         Bool domExternal() {return theProvider !=3D reinterpret_cast =
 <DOMProvider*>(defaultProvider);}=0A=
 =0A=
 private:=0A=
     Processor* proc;=0A=
     SituaInfo info, infoDOM;=0A=
 =0A=
     void generateMessage(MsgType, MsgCode, const Str &arg1, const Str =
 &arg2,=0A=
         Str &theMessage);=0A=
 =0A=
 =0A=
     void report(Situation *S, MsgType, MsgCode, const Str &, const Str =
 &);=0A=
     FILE *logfile, *errwfile;=0A=
     int flags;=0A=
     Recoder *theRecoder;=0A=
     DOMProvider *theProvider;=0A=
     DOMProviderStandard *defaultProvider;=0A=
 };=0A=
 =0A=
 typedef Situation & Sit;=0A=
 # 423 "base.h" 2=0A=
 # 37 "decimal.h" 2=0A=
 =0A=
 =0A=
 class DefaultedStr;=0A=
 class Number;=0A=
 =0A=
 class DefaultedStr=0A=
 {=0A=
 public:=0A=
     DefaultedStr(const char* defaultValue_, Bool singleChar_, XSL_ATT =
 id_);=0A=
     ~DefaultedStr();=0A=
     Bool set(Sit S, const Str& value);=0A=
     const Str& get();=0A=
     void report(Sit S, MsgType type, MsgCode code,=0A=
                 const Str &arg1, const Str &arg2) const;=0A=
 private:=0A=
     char *ownName();=0A=
     Str defaultValue,=0A=
         specifiedValue;=0A=
     Bool specified,=0A=
         singleChar;=0A=
     XSL_ATT id;=0A=
 };=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 class DecimalFormat=0A=
 {=0A=
 public:=0A=
     DecimalFormat(const EQName& name);=0A=
     ~DecimalFormat();=0A=
     Bool setItem(Sit S, XSL_ATT itemId, const Str& value);=0A=
     const Str& getItem(XSL_ATT itemId);=0A=
     Bool format(Sit S, Number& num, const Str& fmt, Str& result);=0A=
     const EQName& getname();=0A=
     void report(Sit S, MsgType type, MsgCode code,=0A=
                 const Str &arg1, const Str &arg2) const;=0A=
 private:=0A=
     EQName name;=0A=
     DefaultedStr=0A=
         decimalSeparator,=0A=
         groupingSeparator,=0A=
         infinity,=0A=
         minusSign,=0A=
         NaN,=0A=
         percent,=0A=
         perMille,=0A=
         zeroDigit,=0A=
         digit,=0A=
         patternSeparator;=0A=
     DefaultedStr* findItem(XSL_ATT itemId);=0A=
     XSL_ATT whichToken(const char* ptr, int len);=0A=
     Bool parseSubpattern(=0A=
         Sit S, const char *&ptr, Bool negative,=0A=
         Str& prefix, Str& suffix, int& factor,=0A=
         int& iDigitsMin, int& fDigits, int& fDigitsMin, int& gSize);=0A=
     Bool parse(=0A=
         Sit S, const Str &src, Bool negative,=0A=
         Str& prefix, Str& suffix, int& factor,=0A=
         int& iDigitsMin, int& fDigits, int& fDigitsMin, int& gSize);=0A=
 };=0A=
 =0A=
 class DecimalFormatList: public PList<DecimalFormat*>=0A=
 {=0A=
 public:=0A=
     DecimalFormatList();=0A=
     void initialize();=0A=
     ~DecimalFormatList();=0A=
     Bool add(Sit S, const EQName& name, DecimalFormat*& result);=0A=
     Bool format(Sit S, const EQName& name, Number& num, const Str& fmt, =
 Str& result);=0A=
     void report(Sit S, MsgType type, MsgCode code,=0A=
                 const Str &arg1, const Str &arg2) const;=0A=
 private:=0A=
     int findNdx(const EQName& name);=0A=
 };=0A=
 # 36 "decimal.cpp" 2=0A=
 # 1 "expr.h" 1=0A=
 # 42 "expr.h"=0A=
 # 1 "proc.h" 1=0A=
 # 40 "proc.h"=0A=
 enum StandardPhrase=0A=
 {=0A=
     PHRASE_EMPTY =3D 0,=0A=
     PHRASE_XSL,=0A=
     PHRASE_XSL_NAMESPACE,=0A=
     PHRASE_XML_NAMESPACE,=0A=
     PHRASE_STAR,=0A=
     PHRASE_XMLNS,=0A=
     PHRASE_LANG,=0A=
     PHRASE_LAST=0A=
 };=0A=
 =0A=
 =0A=
 # 1 "arena.h" 1=0A=
 # 40 "arena.h"=0A=
 struct ArenaBlock=0A=
 {=0A=
     void *data;=0A=
     ArenaBlock *next;=0A=
     int freeSpace;=0A=
 };=0A=
 =0A=
 class Arena=0A=
 {=0A=
 public:=0A=
     Arena(int bloxize_);=0A=
 =0A=
     void *armalloc(int size, int alignment =3D sizeof (void*));=0A=
     void initialize(int bloxize_);=0A=
     void arfree(void *p);=0A=
     void dispose();=0A=
     ~Arena();=0A=
 private:=0A=
     ArenaBlock *newBlock(int size);=0A=
     int bloxize;=0A=
     ArenaBlock *block0, *blockn;=0A=
     int totalAsked, totalMalloced;=0A=
 };=0A=
 =0A=
 class ArenaMember=0A=
 {=0A=
 public:=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
     void *operator new(size_t size, Arena *arena_ =3D __null)=0A=
     {=0A=
 =0A=
 =0A=
         return arena_? arena_ -> armalloc(size) : ::operator =
 new(size);=0A=
     };=0A=
 =0A=
     void operator delete(void *ptr, size_t size)=0A=
     {=0A=
 =0A=
 =0A=
     }=0A=
 };=0A=
 =0A=
 class ArenaStr : public ArenaMember, public Str=0A=
 {=0A=
 public:=0A=
     ArenaStr(Arena *arena__)=0A=
         : arena_(arena__)=0A=
     {};=0A=
     ArenaStr(Str& string, Arena *arena__)=0A=
         : arena_(arena__)=0A=
     {=0A=
         operator =3D(string);=0A=
     };=0A=
 # 116 "arena.h"=0A=
     ArenaStr(char *chars, Arena *arena__)=0A=
         : arena_(arena__)=0A=
     {=0A=
         operator =3D(chars);=0A=
     };=0A=
     ArenaStr(DStr &dstring, Arena *arena__)=0A=
         : arena_(arena__)=0A=
     {=0A=
         operator =3D(dstring);=0A=
     };=0A=
 =0A=
     const ArenaStr& operator=3D (const Str& string)=0A=
     { nset((char*)string, string.length()); return *this; }=0A=
 =0A=
     const ArenaStr& operator=3D (const DStr& dstring)=0A=
     { nset((char*)dstring, dstring.length()); return *this; }=0A=
 =0A=
     const ArenaStr& operator=3D (const char *s)=0A=
     { nset(s, strlen(s)); return *this; }=0A=
 =0A=
     ~ArenaStr()=0A=
     {=0A=
         remove_();=0A=
     }=0A=
 =0A=
 protected:=0A=
     virtual char* claimMemory( int nbytes ) const=0A=
     {=0A=
 =0A=
         return arena_ ? (char*)(arena_ -> armalloc(nbytes,1)) : =
 Str::claimMemory(nbytes);=0A=
     }=0A=
     virtual void returnMemory( char *&p ) const=0A=
     {=0A=
         if (arena_)=0A=
             arena_ -> arfree(p);=0A=
         else=0A=
             if (p) delete[] p;=0A=
         p =3D __null;=0A=
     }=0A=
     Arena *arena_;=0A=
 };=0A=
 # 54 "proc.h" 2=0A=
 # 1 "hash.h" 1=0A=
 # 47 "hash.h"=0A=
 class Processor;=0A=
 class Arena;=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 class HashItem : public ArenaMember=0A=
 {=0A=
 public:=0A=
     HashItem(const char *key_, oolong code_, const void *stuff_, int =
 age_, Arena *arena_)=0A=
         : key( (char*)key_, arena_ ), code( code_ ), stuff( stuff_ =
 ),=0A=
           age( age_ ), next( __null )=0A=
     {};=0A=
     const ArenaStr key;=0A=
     oolong code;=0A=
     const void *stuff;=0A=
     int age;=0A=
     HashItem *next;=0A=
 };=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 class HashItemList : public PList<HashItem*>=0A=
 {=0A=
     friend class HashTable;=0A=
     HashItemList( int logSize_ )=0A=
         : PList<HashItem*>( logSize_ )=0A=
     {}=0A=
 };=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 class HashTable=0A=
 {=0A=
 public:=0A=
 =0A=
     HashTable(Arena *arena_, int logSize_);=0A=
 =0A=
 =0A=
     ~HashTable();=0A=
 =0A=
 =0A=
     void insert(const Str& key, HashId& id, const void *data =3D __null =
 );=0A=
 =0A=
     void insert(const char *key, HashId& id, const void *data =3D =
 __null )=0A=
     {=0A=
         insert(Str(key), id, data);=0A=
     };=0A=
 =0A=
     HashId insert(const Str& key);=0A=
 =0A=
     HashId insert(const char *key, const void *data =3D __null )=0A=
     {=0A=
         return insert(Str(key));=0A=
     };=0A=
 =0A=
 =0A=
 =0A=
 =0A=
     HashId lookup(const Str& key, const void **data =3D __null ) =
 const;=0A=
 =0A=
 =0A=
     const Str& getKey(HashId id) const;=0A=
 =0A=
     void initialize();=0A=
     void destroy(Sit S);=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 protected:=0A=
     oolong codeToIndex(oolong code) const;=0A=
     HashItem *expandWatching(oolong hashed);=0A=
     Bool lookupOrPreceding(const Str& key, oolong hashed, HashItem *&p) =
 const;=0A=
     HashItemList buckets;=0A=
     Arena *theArena;=0A=
     Processor *proc;=0A=
     int visitedBuckets,=0A=
         itemsCount,=0A=
         logSize;=0A=
     void report(Sit S, MsgType type, MsgCode code, const Str& arg1, =
 const Str& arg2);=0A=
 private:=0A=
     Str *_theEmptyKey;=0A=
 };=0A=
 # 55 "proc.h" 2=0A=
 =0A=
 # 1 "uri.h" 1=0A=
 # 56 "uri.h"=0A=
 typedef enum=0A=
 {=0A=
     URI_FILE, URI_ARG, URI_EXTENSION, URI_NONE=0A=
 } URIScheme;=0A=
 # 73 "uri.h"=0A=
 URIScheme makeAbsoluteURI(const char* uri ,const char* base, Str& =
 absolute);=0A=
 URIScheme uri2SchemePath(const char *absolute, Str& scheme, Str& =
 rest);=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 typedef enum=0A=
 {=0A=
     DLMODE_NONE, DLMODE_READ, DLMODE_WRITE, DLMODE_CLOSED=0A=
 } DLAccessMode;=0A=
 # 94 "uri.h"=0A=
 class StrStrList;=0A=
 =0A=
 class DataLine=0A=
 {=0A=
 public:=0A=
     DataLine();=0A=
     ~DataLine();=0A=
 =0A=
     Bool open(Sit S, const char *_uri, DLAccessMode _mode, StrStrList* =
 argList_);=0A=
     Bool close(Sit S);=0A=
 =0A=
     Bool save(Sit S, const char *data, int len);=0A=
     int get(Sit S, char *where, int maxcount);=0A=
     DynBlock *getOutBuffer();=0A=
     Str fullUri;=0A=
     DLAccessMode mode;=0A=
     URIScheme scheme;=0A=
     Bool setURIAndClose(Sit S, const char *_uri);=0A=
 private:=0A=
     FILE *f;=0A=
     char *buffer;=0A=
     DynBlock *outBuf;=0A=
     int bufCurr;=0A=
     SchemeHandler *handler;=0A=
     void *handlerUD;=0A=
     int handle;=0A=
     Bool=0A=
         fileIsStd,=0A=
         utf16Encoded,=0A=
         gotWholeDocument;=0A=
     void report(Sit S, MsgType type, MsgCode code, const Str& arg1, =
 const Str& arg2);=0A=
 };=0A=
 # 57 "proc.h" 2=0A=
 # 1 "output.h" 1=0A=
 # 39 "output.h"=0A=
 # 1 "utf8.h" 1=0A=
 # 46 "utf8.h"=0A=
 extern int utf8SingleCharLength(const char* text);=0A=
 extern int utf8StrLength (const char* text);=0A=
 extern int utf8Strchr(const char* text, const char* character);=0A=
 extern char* utf8StrIndex(char* text, int index);=0A=
 =0A=
 extern unsigned long=0A=
                 utf8CharCode(const char *text);=0A=
 =0A=
 extern int utf8GetChar(char *dest, const char *src);=0A=
 extern Str utf8xfrm(const Str &src);=0A=
 extern int utf8FromCharCode(char *dest, unsigned long code);=0A=
 =0A=
 extern Bool utf8IsDigit(unsigned long c);=0A=
 extern Bool utf8IsBaseChar(unsigned long c);=0A=
 extern Bool utf8IsLetter(unsigned long c);=0A=
 extern Bool utf8IsNameChar(unsigned long c);=0A=
 extern Bool utf8IsIdeographic(unsigned long c);=0A=
 extern Bool utf8IsExtender(unsigned long c);=0A=
 extern Bool utf8IsCombiningChar(unsigned long c);=0A=
 =0A=
 extern int utf8ToUtf16(wchar_t *dest, const char *src);=0A=
 # 40 "output.h" 2=0A=
 # 1 "encoding.h" 1=0A=
 # 40 "encoding.h"=0A=
 enum EncMethod=0A=
 {=0A=
     ENC_ICONV,=0A=
     ENC_INTERNAL,=0A=
     ENC_HANDLER,=0A=
     ENC_NONE=0A=
 };=0A=
 =0A=
 enum EncResult=0A=
 {=0A=
     ENC_OK,=0A=
     ENC_EINVAL,=0A=
     ENC_E2BIG,=0A=
     ENC_EILSEQ=0A=
 };=0A=
 =0A=
 =0A=
 struct ConvInfo=0A=
 {=0A=
     EncMethod method;=0A=
     void* physCD;=0A=
 };=0A=
 =0A=
 typedef ConvInfo* CDesc;=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 class Recoder=0A=
 {=0A=
 public:=0A=
     Recoder();=0A=
     Bool handledByExpat(const Str& enc) const;=0A=
     Bool openFromUTF8(Sit S, const Str& enc, CDesc& cd);=0A=
     Bool openToUTF8(Sit S, const Str& enc, CDesc& cd);=0A=
     Bool conv(Sit S, CDesc cd, const char *&inbuf, size_t =
 &inbytesleft,=0A=
         char *&outbuf, size_t &outbytesleft, EncResult& result);=0A=
     Bool close(Sit S, CDesc cd);=0A=
     void clear(Sit S);=0A=
     ~Recoder();=0A=
 private:=0A=
     Bool open(Sit S, const Str& enc, Bool toUTF8, CDesc& cd);=0A=
     PList<ConvInfo*> items;=0A=
     void report(Sit S, MsgType type, MsgCode code, const Str& arg1, =
 const Str& arg2);=0A=
 };=0A=
 # 41 "output.h" 2=0A=
 =0A=
 class DataLine;=0A=
 =0A=
 enum OutputMethod=0A=
 {=0A=
     OUTPUT_XML,=0A=
     OUTPUT_HTML,=0A=
     OUTPUT_TEXT,=0A=
     OUTPUT_XHTML,=0A=
     OUTPUT_UNKNOWN=0A=
 };=0A=
 =0A=
 enum EscMode=0A=
 {=0A=
     ESCAPING_NONE,=0A=
     ESCAPING_URI,=0A=
     ESCAPING_ATTR,=0A=
 =0A=
     ESCAPING_LT_AMP,=0A=
     ESCAPING_HTML_URI,=0A=
     ESCAPING_HTML_ATTR=0A=
 };=0A=
 =0A=
 enum SAXOutputType=0A=
 {=0A=
     SAXOUTPUT_COPY_TREE,=0A=
     SAXOUTPUT_AS_PHYSICAL=0A=
 };=0A=
 # 94 "output.h"=0A=
 class StrPrec=0A=
 {=0A=
 =0A=
 public:=0A=
     StrPrec()=0A=
         {=0A=
             precedence =3D -3;=0A=
         };=0A=
 =0A=
 =0A=
     Bool set(const Str& newString, int newPrecedence);=0A=
     const Str& get() const=0A=
         {=0A=
             return string;=0A=
         }=0A=
 private:=0A=
     Str string;=0A=
     int precedence;=0A=
 };=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 class EQNamePrec=0A=
 {=0A=
 =0A=
 public:=0A=
     EQNamePrec()=0A=
         {=0A=
             precedence =3D -3;=0A=
         };=0A=
 =0A=
 =0A=
     Bool set(const EQName& newName, int newPrecedence);=0A=
     const EQName& get() const=0A=
         {=0A=
             return name;=0A=
         }=0A=
 private:=0A=
     EQName name;=0A=
     int precedence;=0A=
 };=0A=
 # 151 "output.h"=0A=
 class OutputDefinition=0A=
 {=0A=
 public:=0A=
     OutputDefinition();=0A=
     ~OutputDefinition();=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
     Bool setItemStr(=0A=
         Sit S, XSL_ATT itemId, const Str& value, Vertex *caller, int =
 precedence);=0A=
 =0A=
     Bool setItemEQName(=0A=
         Sit S, XSL_ATT itemId, const EQName& value, Vertex *caller, int =
 precedence);=0A=
     Bool setDefaults(Sit S);=0A=
     const Str& getValueStr(XSL_ATT itemId) const;=0A=
     const EQName& getValueEQName(XSL_ATT itemId) const;=0A=
     Bool askEQNameList(XSL_ATT itemId, const EQName &what) const;=0A=
     int getStatus(XSL_ATT itemId) const;=0A=
     OutputMethod getMethod() const;=0A=
     Bool getIndent() const;=0A=
     const Str& getEncoding() const;=0A=
 private:=0A=
     StrPrec stringItems[8];=0A=
     EQNamePrec=0A=
         method;=0A=
     EQNameList=0A=
         cdataElems;=0A=
     DataLine *targetDataLine;=0A=
     void report(Sit S, MsgType type, MsgCode code, const Str& arg1, =
 const Str& arg2);=0A=
 };=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 class PhysicalOutputLayerObj=0A=
 {=0A=
 public:=0A=
     PhysicalOutputLayerObj(CDesc encodingCD_);=0A=
     ~PhysicalOutputLayerObj();=0A=
     Bool setOptions(Sit S, DataLine *targetDataLine_, OutputDefinition =
 *outDef_);=0A=
     Bool outputElementStart(Sit S, const Str& name,=0A=
         const NamespaceStack& namespaces, const int namespace_index,=0A=
         const StrStrList& atts, Bool isEmpty);=0A=
     Bool outputElementEnd(Sit S, const Str& name, Bool isEmpty);=0A=
     Bool outputText(Sit S, const Str& contents, Bool outputEscaping, =
 Bool inHTMLSpecial);=0A=
     Bool outputComment(Sit S, const Str& contents);=0A=
     Bool outputCDataSection(Sit S, const Str& contents);=0A=
     Bool outputPI(Sit S, const Str& target, const Str& data);=0A=
     Bool outputDTD(Sit S, const Str& name, const Str& publicId, const =
 Str& systemId);=0A=
     Bool outputTrailingNewline(Sit S);=0A=
     Bool outputDone(Sit S);=0A=
     Bool setMethodByDefault(Sit S, OutputMethod method_);=0A=
 private:=0A=
     DataLine *targetDataLine;=0A=
     OutputDefinition *outDef;=0A=
     OutputMethod method;=0A=
     Bool indent;=0A=
     Bool after_markup;=0A=
     int level;=0A=
     char buffer[1024 + 64],=0A=
         smallBuf[32];=0A=
     int curr;=0A=
     Str encoding;=0A=
     CDesc encodingCD;=0A=
     Bool sendOut(Sit S, const char* data, int length, EscMode =
 escapeMode);=0A=
     Bool sendOutUntil(Sit S, const char* & data, int length,=0A=
         EscMode escapeMode, const char* stoppingText);=0A=
     int writeCharacterRef(char* dest, const char *src, EscMode =
 escapeMode);=0A=
     Bool flushBuffer(Sit S);=0A=
     void report(Sit S, MsgType type, MsgCode code, const Str& arg1, =
 const Str& arg2);=0A=
 };=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 enum OutputterState=0A=
 {=0A=
     STATE_OUTSIDE =3D 0,=0A=
     STATE_IN_MARKUP,=0A=
     STATE_IN_ELEMENT,=0A=
     STATE_IN_ATTRIBUTE,=0A=
     STATE_IN_COMMENT,=0A=
     STATE_IN_PI,=0A=
     STATE_DONE,=0A=
     STATE_UNDEFINED=0A=
 };=0A=
 =0A=
 struct OutputHistoryItem=0A=
 {=0A=
     int flags;=0A=
     int firstOwnNS;=0A=
     int firstOwnExNS;=0A=
 };=0A=
 =0A=
 typedef PList<OutputHistoryItem*> OutputHistory;=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 enum FrontMatterKind=0A=
 {=0A=
     FM_TEXT,=0A=
     FM_COMMENT,=0A=
     FM_PI=0A=
 };=0A=
 =0A=
 struct FrontMatterItem=0A=
 {=0A=
     FrontMatterKind kind;=0A=
     Str string1, string2;=0A=
     Bool disableEsc;=0A=
 };=0A=
 =0A=
 class FrontMatter : public PList<FrontMatterItem*>=0A=
 {=0A=
 public:=0A=
     Bool appendConstruct(Sit S, FrontMatterKind kind, const Str& =
 string1,=0A=
         const Str& string2, Bool disableEsc);=0A=
     void report(Sit S, MsgType type, MsgCode code, const Str& arg1, =
 const Str& arg2);=0A=
 };=0A=
 =0A=
 class OutputterObj=0A=
 {=0A=
 public:=0A=
     OutputterObj();=0A=
     ~OutputterObj();=0A=
     Bool setOptions(Sit S, DataLine *targetDataLine_, OutputDefinition =
 *outDef_);=0A=
     Bool setOptionsSAX(Sit S, SAXHandler *streaming_, void *userData, =
 SAXOutputType saxout_);=0A=
     Bool eventBeginOutput(Sit S);=0A=
 =0A=
     Bool eventBeginSubtree(Sit S);=0A=
     Bool eventElementStart(Sit S, const EQName& name);=0A=
     Bool eventElementEnd(Sit S, const EQName& name);=0A=
     Bool eventAttributeStart(Sit S, const EQName& name);=0A=
     Bool eventAttributeEnd(Sit S);=0A=
     Bool eventCommentStart(Sit S);=0A=
     Bool eventCommentEnd(Sit S);=0A=
     Bool eventExcludeNS(Sit S, UriList &exNS);=0A=
     Bool eventNamespace(Sit S, const Str& prefix, const Str& uri);=0A=
     Bool eventPIStart(Sit S, const Str& name);=0A=
     Bool eventPIEnd(Sit S);=0A=
     Bool eventData(Sit S, const Str& data, Bool hardCData =3D 0);=0A=
     Bool eventCDataSection(Sit S, const Str& data);=0A=
     Bool eventDisableEscapingForNext(Sit S);=0A=
     Bool eventEndOutput(Sit S);=0A=
     Bool eventTrailingNewline(Sit S);=0A=
 private:=0A=
     Bool reportCurrData(Sit S, Bool hardCData =3D 0);=0A=
     Bool reportStartTag(Sit S, Bool isEmpty);=0A=
     Bool throwInMeta(Sit S);=0A=
     Str* nameForSAX(Sit S, const EQName& q);=0A=
     void pushLevel(const EQName& name);=0A=
 =0A=
     int getLevel()=0A=
     {=0A=
         return history.number();=0A=
     };=0A=
     int getFlags()=0A=
     {=0A=
         return (history.number()? history.last() -> flags : 0);=0A=
     }=0A=
     int getFirstOwnNS()=0A=
     {=0A=
         return (history.number()? history.last() -> firstOwnNS : 0);=0A=
     }=0A=
     int getFirstOwnExNS()=0A=
     {=0A=
         return (history.number()? history.last() -> firstOwnExNS : =
 0);=0A=
     }=0A=
     Bool nsExcluded(Str & uri);=0A=
     Bool reportXMLDeclIfMust(Sit S);=0A=
     Bool reportDTDIfMust(Sit S, const EQName& docElementName);=0A=
     Bool reportFront(Sit S);=0A=
     void report(Sit S, MsgType type, MsgCode code, const Str& arg1, =
 const Str& arg2);=0A=
 =0A=
     PhysicalOutputLayerObj *physical;=0A=
     SAXHandler *mySAXHandler;=0A=
     void *mySAXUserData;=0A=
     SAXOutputType mySAXOutputType;=0A=
     OutputDefinition *outDef;=0A=
     OutputMethod method;=0A=
     CDesc encodingCD;=0A=
     OutputterState state;=0A=
     Bool outputEscaping;=0A=
     DStr currData;=0A=
     Str=0A=
         currPIName;=0A=
     EQName=0A=
         currElement,=0A=
         currAttName;=0A=
     NamespaceStack=0A=
         currNamespaces;=0A=
     EQNameStrList=0A=
         currAtts;=0A=
     OutputHistory history;=0A=
     Bool noElementYet,=0A=
       noHeadYet,=0A=
       delayedDTD;=0A=
     FrontMatter front;=0A=
     UriList excludedNS;=0A=
 };=0A=
 # 58 "proc.h" 2=0A=
 =0A=
 =0A=
 # 1 "jsext.h" 1=0A=
 # 62 "jsext.h"=0A=
 class Context;=0A=
 =0A=
 class JSManager=0A=
 {=0A=
 public:=0A=
   static void *getRuntime();=0A=
   static void *createContext(int size =3D 0x20000);=0A=
   static void finalize();=0A=
 private:=0A=
 };=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 extern const char* theArrayProtoRoot;=0A=
 =0A=
 class JSContextItem=0A=
 {=0A=
 public:=0A=
   JSContextItem(void *cx_, Str &uri_);=0A=
   ~JSContextItem();=0A=
   void *cx;=0A=
 =0A=
   Str uri;=0A=
   PList<Str*> names;=0A=
   struct {=0A=
     char *message;=0A=
     char *token;=0A=
     int line;=0A=
     int errNumber;=0A=
   } errInfo;=0A=
 =0A=
   void *node;=0A=
   void *domex;=0A=
   void *domimpl;=0A=
   void *nlclass;=0A=
   void *nnmclass;=0A=
   void *array_proto;=0A=
 };=0A=
 =0A=
 class JSContextList: public PList<JSContextItem*>=0A=
 {=0A=
 public:=0A=
   JSContextItem *find(Str uri, Bool canCreate =3D 0);=0A=
 };=0A=
 =0A=
 class External;=0A=
 =0A=
 class JSExternalPrivate=0A=
 {=0A=
   friend class External;=0A=
 public:=0A=
   JSExternalPrivate(void *p_, void *v_);=0A=
   ~JSExternalPrivate();=0A=
 private:=0A=
   void *priv;=0A=
   void *value;=0A=
   int refcnt;=0A=
 };=0A=
 =0A=
 =0A=
 void *SJSGetGlobalClass();=0A=
 Bool SJSEvaluate(JSContextItem &item, DStr &script);=0A=
 Bool SJSCallFunction(Sit S, Context *c, JSContextItem &item, Str =
 &name,=0A=
                       ExprList &atoms, Expression &retxpr);=0A=
 # 61 "proc.h" 2=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 extern const char *theXSLTNamespace;=0A=
 =0A=
 class Tree;=0A=
 class TreeConstructer;=0A=
 class LocStep;=0A=
 class Vertex;=0A=
 class Attribute;=0A=
 class XSLElement;=0A=
 class Expression;=0A=
 class Context;=0A=
 typedef PList<Expression*> ExprList;=0A=
 # 85 "proc.h"=0A=
 class RuleItem=0A=
 {=0A=
 public:=0A=
     RuleItem(XSLElement *,double, QName &, QName *);=0A=
     ~RuleItem();=0A=
     XSLElement *rule;=0A=
     Attribute *match;=0A=
     double priority;=0A=
     QName name,=0A=
         *mode;=0A=
 };=0A=
 =0A=
 =0A=
 class Processor;=0A=
 # 107 "proc.h"=0A=
 class RuleSList : public SList<RuleItem*>=0A=
 {=0A=
 public:=0A=
     RuleSList();=0A=
     ~RuleSList();=0A=
     int compare(int first, int second, void *data);=0A=
     XSLElement *findByName(const Tree &t, const QName &q) const;=0A=
 };=0A=
 # 123 "proc.h"=0A=
 class DataLineItem=0A=
 {=0A=
 public:=0A=
     DataLineItem(Sit S_);=0A=
     ~DataLineItem();=0A=
     DataLine *_dataline;=0A=
     Tree *_tree;=0A=
     Bool _isXSL;=0A=
     Bool _preparsedTree;=0A=
 private:=0A=
     Sit situation;=0A=
 };=0A=
 =0A=
 class DataLinesList: public PList<DataLineItem*>=0A=
 {=0A=
 public:=0A=
     int findNum(Str &absoluteURI, Bool _isXSL,=0A=
         DLAccessMode _mode);=0A=
     Tree *getTree(Str &absoluteURI, Bool _isXSL, DLAccessMode =
 _mode);=0A=
     Bool addLine(Sit S, DataLine *d, Tree *t, Bool isXSL,=0A=
         Bool preparsedTree =3D 0);=0A=
 =0A=
 };=0A=
 # 154 "proc.h"=0A=
 class VarsList;=0A=
 class VertexList;=0A=
 class Element;=0A=
 class KeySet;=0A=
 =0A=
 class Processor=0A=
 {=0A=
 public:=0A=
     Tree *input,=0A=
         *styleSheet;=0A=
     Processor();=0A=
     ~Processor();=0A=
     Bool open(Sit S, char *sheetURI, char *inputURI);=0A=
     Bool run(Sit S, char* resultURI);=0A=
     Bool execute(Sit S, Vertex *, Context *&, Bool =
 resolvingGlobals);=0A=
     Bool execute(Sit S, VertexList&, Context *&, Bool =
 resolvingGlobals);=0A=
 =0A=
 =0A=
 =0A=
     Bool execApplyImports(Sit S, Context *c, Bool resolvingGlobals);=0A=
 =0A=
 =0A=
     Bool builtinRule(Sit S, Context *c, Bool resolvingGlobals);=0A=
 =0A=
     FILE *logfile;=0A=
     unsigned long allocObjects,=0A=
         allocBytes,=0A=
         maxAllocObjects,=0A=
         maxAllocBytes;=0A=
     Expression* getVarBinding(QName &);=0A=
     VarsList *vars;=0A=
     OutputterObj *outputter()=0A=
         {=0A=
             if (outputters_.number())=0A=
                 return outputters_.last();=0A=
             else return __null;=0A=
         }=0A=
     QName *getCurrentMode();=0A=
     void pushMode(QName *);=0A=
     void popMode();=0A=
     Bool readTreeFromURI(Sit S, Tree*& newTree, const Str& location, =
 const Str& base, Bool isXSL);=0A=
     Bool pushOutputterForURI(Sit S, Str& location, Str& base);=0A=
     Bool pushTreeConstructer(Sit S, TreeConstructer *&newTC, Tree =
 *t);=0A=
     Bool pushOutputter(Sit S, OutputterObj* out_);=0A=
     Bool popOutputter(Sit S);=0A=
     Bool popTreeConstructer(Sit S, TreeConstructer *theTC);=0A=
     Bool processVertexAfterParse(Sit S, Vertex *, Tree *, =
 TreeConstructer *tc);=0A=
 =0A=
     Bool setHandler(Sit S, HandlerType type, void *handler, void =
 *userData);=0A=
     SchemeHandler *getSchemeHandler(void **udata);=0A=
     MessageHandler *getMessageHandler(void **udata);=0A=
     SAXHandler *getSAXHandler(void **udata);=0A=
     MiscHandler *getMiscHandler(void **udata);=0A=
     EncHandler *getEncHandler(void **udata);=0A=
 =0A=
     void *getHandlerUserData(HandlerType type, void *handler);=0A=
 =0A=
     void setHardEncoding(const Str& hardEncoding_);=0A=
     const Str& getHardEncoding() const;=0A=
 =0A=
     Bool addLineNoTree(Sit S, DataLine *&d, Str &absolute, Bool =
 isXSL);=0A=
     Bool addLineParse(Sit S, Tree *& newTree, Str &absolute, Bool =
 isXSL);=0A=
     Bool addLineTreeOnly(Sit S, DataLine *&d, Str &absolute, Bool =
 isXSL,=0A=
                           Tree *t);=0A=
     void copyArg(const Str& argName, int* argOrdinal, char*& =
 newCopy);=0A=
     Bool getArg(Sit S, const char*, char*&, Bool);=0A=
     Bool useArg(Sit S, char *name, char *val);=0A=
     Bool useTree(Sit S, char *name, Tree *t);=0A=
     Bool freeResultArgs(Sit S);=0A=
     Bool addGlobalParam(Sit S, char *name, char *val);=0A=
     Bool useGlobalParam(Sit S, char *name, char *val);=0A=
     Bool useGlobalParams(Sit S);=0A=
     const Str& baseForVertex(Element *v);=0A=
     const Str& findBaseURI(const Str& unmappedBase);=0A=
     void addBaseURIMapping(const Str& scheme, const Str& mapping);=0A=
     void setHardBaseURI(const char* hardBase);=0A=
 =0A=
     void setInstanceData(void *idata)=0A=
         {=0A=
             instanceData =3D idata;=0A=
         };=0A=
 =0A=
     void *getInstanceData()=0A=
         {=0A=
             return instanceData;=0A=
         };=0A=
 =0A=
     void rememberSituation(Situation *SP)=0A=
         {=0A=
             instanceSituation =3D SP;=0A=
         }=0A=
 =0A=
     void rememberMasterSituation(Situation *SP)=0A=
         {=0A=
             instanceSituation =3D SP;=0A=
             hasMasterSituation =3D 1;=0A=
         }=0A=
 =0A=
     Situation* recallSituation()=0A=
         {=0A=
             return instanceSituation;=0A=
         }=0A=
 =0A=
     Bool situationIsMaster()=0A=
         {=0A=
             return hasMasterSituation;=0A=
         }=0A=
 =0A=
     void prepareForRun();=0A=
     void cleanupAfterRun(Situation *Sp);=0A=
     const QName theEmptyQName;=0A=
     Arena *getArena();=0A=
     Str getAliasedName(const EQName& name, NamespaceStack& =
 currNamespaces);=0A=
     void report(Sit S, MsgType type, MsgCode code,=0A=
                 const Str &arg1, const Str &arg2) const;=0A=
     Bool getAddedFlag() {return addedFlag;}=0A=
     Bool addKey(Sit S, const EQName& ename,=0A=
                  Expression& match, Expression &use);=0A=
     Bool getKeyNodes(Sit S, const EQName& ename,=0A=
                       const Str& value, Context& result, SXP_Document =
 doc) const;=0A=
     Bool makeKeysForDoc(Sit S, SXP_Document doc);=0A=
     DecimalFormatList& decimals()=0A=
         {=0A=
             return decimalsList;=0A=
         }=0A=
     void initForSXP(Tree *baseTree);=0A=
     void cleanupAfterSXP();=0A=
     Bool evaluateJavaScript(Sit S, Str &uri, DStr &script);=0A=
     Bool supportsFunction(Str &uri, Str &name);=0A=
     Bool callJSFunction(Sit S, Context *c, Str &uri, Str &name,=0A=
                          ExprList &atoms, Expression &retxpr);=0A=
     StrStrList &getArgList() {return argList;};=0A=
     Str getNextNSPrefix();=0A=
 =0A=
 =0A=
     Bool resolveGlobal(Sit S, Context *c, QName &name, XSLElement =
 *varElem =3D __null);=0A=
 =0A=
     Bool resolveGlobals(Sit S, Context *c);=0A=
 private:=0A=
     int nsUnique;=0A=
     Bool openCommon(Sit S);=0A=
     Bool execApplyTemplates(Sit S, Context *c, Bool =
 resolvingGlobals);=0A=
     Bool execApply(Sit S, Context *c, Bool resolvingGlobals);=0A=
     PList<QName*> modes;=0A=
     StrStrList argList;=0A=
     DataLinesList datalines;=0A=
     PList<OutputterObj*> outputters_;=0A=
 =0A=
     SchemeHandler *theSchemeHandler;=0A=
     MessageHandler *theMessageHandler;=0A=
     SAXHandler *theSAXHandler;=0A=
     MiscHandler *theMiscHandler;=0A=
     EncHandler *theEncHandler;=0A=
     void=0A=
     *theSchemeUserData,=0A=
         *theMessageUserData,=0A=
         *theSAXUserData,=0A=
         *theMiscUserData,=0A=
         *theEncUserData;=0A=
     void *instanceData;=0A=
     void freeNonArgDatalines();=0A=
     StrStrList baseURIMappings, globalParamsList;=0A=
     Str hardEncoding;=0A=
     Arena theArena;=0A=
     Situation *instanceSituation;=0A=
     Bool hasMasterSituation;=0A=
     Bool addedFlag;=0A=
     KeySet *keys;=0A=
     DecimalFormatList decimalsList;=0A=
     JSContextList jscontexts;=0A=
 };=0A=
 # 43 "expr.h" 2=0A=
 =0A=
 =0A=
 =0A=
 class Vertex;=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 enum ExToken=0A=
 {=0A=
 =0A=
     TOK_END,=0A=
 =0A=
 =0A=
         TOK_NAME,=0A=
         TOK_AXISNAME,=0A=
         TOK_NTNAME,=0A=
         TOK_FNAME,=0A=
 =0A=
 =0A=
         TOK_LPAREN, TOK_RPAREN,=0A=
         TOK_LBRACKET, TOK_RBRACKET,=0A=
         TOK_PERIOD, TOK_DPERIOD,=0A=
         TOK_ATSIGN, TOK_COMMA,=0A=
         TOK_DCOLON, TOK_DSLASH,=0A=
         TOK_SLASH,=0A=
 =0A=
 =0A=
         TOK_VAR,=0A=
 =0A=
         TOK_LITERAL,=0A=
 =0A=
         TOK_NUMBER,=0A=
 =0A=
 =0A=
         TOKGROUP_OPERATORS,=0A=
         TOK_OR =3D TOKGROUP_OPERATORS,=0A=
         TOK_AND,=0A=
         TOK_EQ,=0A=
         TOK_NEQ,=0A=
         TOK_LT,=0A=
         TOK_GT,=0A=
         TOK_LE,=0A=
         TOK_GE,=0A=
         TOK_PLUS,=0A=
         TOK_MINUS2,=0A=
         TOK_MINUS =3D TOK_MINUS2,=0A=
         TOK_MULT,=0A=
         TOK_MOD,=0A=
         TOK_DIV,=0A=
         TOK_MINUS1,=0A=
         TOK_VERT,=0A=
 =0A=
         TOK_STAR,=0A=
         TOK_NONE=0A=
 };=0A=
 =0A=
 class TokenItem=0A=
 {=0A=
 public:=0A=
     ExToken tok;=0A=
     char* firstc;=0A=
     int len;=0A=
     void speak(DStr &, SpeakMode mode);=0A=
 };=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 class Tokenizer=0A=
 {=0A=
 public:=0A=
     Tokenizer(Expression &owner_);=0A=
     ~Tokenizer();=0A=
         int findTop(ExToken token, int from);=0A=
     Bool tokenize(Sit S, const Str &astring);=0A=
     Bool getToken(Sit S, char *&, TokenItem&, ExToken);=0A=
     Bool getDelim(Sit S, int &, Bool =3D 0);=0A=
     Bool stripParens(Sit S, int &, int &);=0A=
     DStr string;=0A=
     PList<TokenItem*> items;=0A=
 private:=0A=
     ExToken tryShort(char *&, ExToken);=0A=
     Bool lookToken(Sit S, ExToken &, char*, ExToken);=0A=
     Bool getToken_(Sit S, ExToken &, char*&, ExToken);=0A=
     Bool getNumber(Sit S, char *&);=0A=
     Bool getName(Sit S, ExToken&, char *&, ExToken);=0A=
     void report(Sit S, MsgType type, MsgCode code, const Str& arg1, =
 const Str& arg2);=0A=
     Expression &owner;=0A=
 };=0A=
 # 143 "expr.h"=0A=
 enum ExType=0A=
 {=0A=
     EX_NUMBER,=0A=
     EX_STRING,=0A=
     EX_BOOLEAN,=0A=
     EX_NODESET,=0A=
     EX_NODESET_PATTERN,=0A=
     EX_NONE,=0A=
     EX_FRAGMENT,=0A=
     EX_EXTERNAL,=0A=
     EX_UNKNOWN=0A=
 =0A=
 };=0A=
 # 169 "expr.h"=0A=
 enum ExFunctor=0A=
 {=0A=
     EXF_ATOM,=0A=
         EXF_VAR,=0A=
         EXF_LOCPATH,=0A=
         EXF_LOCSTEP,=0A=
         EXF_OTHER_FUNC,=0A=
         EXF_FILTER,=0A=
         EXF_STRINGSEQ,=0A=
         EXF_FRAGMENT,=0A=
         EXF_NONE,=0A=
 =0A=
 =0A=
         EXFO_OR,=0A=
         EXFO_AND,=0A=
         EXFO_EQ,=0A=
         EXFO_NEQ,=0A=
         EXFO_LT,=0A=
         EXFO_LE,=0A=
         EXFO_GT,=0A=
         EXFO_GE,=0A=
         EXFO_PLUS,=0A=
         EXFO_MINUS2,=0A=
         EXFO_MINUS =3D EXFO_MINUS2,=0A=
         EXFO_MULT,=0A=
         EXFO_DIV,=0A=
         EXFO_MOD,=0A=
         EXFO_MINUS1,=0A=
         EXFO_UNION,=0A=
         EXFO_Z,=0A=
 =0A=
 =0A=
         EXF_FUNCTION,=0A=
 =0A=
 =0A=
         EXFF_LAST,=0A=
         EXFF_POSITION,=0A=
         EXFF_COUNT,=0A=
         EXFF_ID,=0A=
         EXFF_LOCAL_NAME,=0A=
         EXFF_NAMESPACE_URI,=0A=
         EXFF_NAME,=0A=
 =0A=
 =0A=
         EXFF_STRING,=0A=
         EXFF_CONCAT,=0A=
         EXFF_STARTS_WITH,=0A=
         EXFF_CONTAINS,=0A=
         EXFF_SUBSTRING_BEFORE,=0A=
         EXFF_SUBSTRING_AFTER,=0A=
         EXFF_SUBSTRING,=0A=
         EXFF_STRING_LENGTH,=0A=
         EXFF_NORMALIZE_SPACE,=0A=
         EXFF_TRANSLATE,=0A=
 =0A=
 =0A=
         EXFF_BOOLEAN,=0A=
         EXFF_NOT,=0A=
         EXFF_TRUE,=0A=
         EXFF_FALSE,=0A=
         EXFF_LANG,=0A=
 =0A=
 =0A=
         EXFF_NUMBER,=0A=
         EXFF_SUM,=0A=
         EXFF_FLOOR,=0A=
         EXFF_CEILING,=0A=
         EXFF_ROUND,=0A=
 =0A=
 =0A=
         EXFF_DOCUMENT,=0A=
         EXFF_KEY,=0A=
         EXFF_FORMAT_NUMBER,=0A=
         EXFF_CURRENT,=0A=
         EXFF_UNPARSED_ENTITY_URI,=0A=
         EXFF_GENERATE_ID,=0A=
         EXFF_SYSTEM_PROPERTY,=0A=
 =0A=
 =0A=
         EXFF_FUNCTION_AVAILABLE,=0A=
         EXFF_ELEMENT_AVAILABLE,=0A=
         EXFF_NONE=0A=
 };=0A=
 =0A=
 class Expression;=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 class Number=0A=
 {=0A=
 public:=0A=
     Number();=0A=
     Number(double);=0A=
     Number& operator=3D (double);=0A=
     Number& operator=3D (const Str &);=0A=
     operator double () const;=0A=
     Bool operator=3D=3D (double);=0A=
     Bool operator< (double);=0A=
     Bool operator> (double);=0A=
     Bool operator=3D=3D (Number&);=0A=
     Bool operator< (Number&);=0A=
     Bool operator> (Number&);=0A=
     Bool isNaN();=0A=
     Bool isInf();=0A=
     void setNaN();=0A=
         int round();=0A=
 private:=0A=
     double x;=0A=
 };=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 class External=0A=
 {=0A=
 public:=0A=
   External() : priv(__null) {};=0A=
   External(void *prv, void *val);=0A=
   External(External& other);=0A=
   ~External();=0A=
   void *getValue();=0A=
   void assign(const External& other);=0A=
 private:=0A=
   void decref();=0A=
   JSExternalPrivate *priv;=0A=
 };=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 class Element;=0A=
 =0A=
 class LocStep=0A=
 {=0A=
     friend class Expression;=0A=
 public:=0A=
     LocStep(Element &ownerV_, ExAxis =3D AXIS_NONE, ExNodeType =3D =
 EXNODE_NONE);=0A=
     ~LocStep();=0A=
     void set(ExAxis, ExNodeType);=0A=
     Bool parse(Sit S, Tokenizer&, int&, Bool defaultToo =3D 0);=0A=
     ExAxis ax;=0A=
     ExNodeType ntype;=0A=
     QName ntest;=0A=
     Str piname;=0A=
     ExprList preds;=0A=
     void speak(Sit S, DStr &s, SpeakMode mode);=0A=
     Bool matchesWithoutPreds(Sit S, NodeHandle v);=0A=
 =0A=
     Bool shift(Sit S, NodeHandle &v, NodeHandle baseV);=0A=
     Bool positional;=0A=
     void report(Sit S, MsgType type, MsgCode code, const Str& arg1, =
 const Str& arg2);=0A=
     Element &getOwnerElement() {return ownerV;}=0A=
 private:=0A=
     int badPreds;=0A=
     Element &ownerV;=0A=
 };=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 class Element;=0A=
 =0A=
 class Expression=0A=
 {=0A=
 public:=0A=
     Expression(Element & owner_, ExFunctor =3D EXF_NONE);=0A=
     ~Expression();=0A=
     void clearContent();=0A=
     void setLS(ExAxis, ExNodeType);=0A=
     Bool speak(Sit S, DStr &,SpeakMode);=0A=
     Bool parse(Sit S, const DStr &, Bool =3D 0, Bool defaultToo =3D =
 0);=0A=
     Bool parse(Sit S, Tokenizer&, int, int, Bool defaultToo =3D 0);=0A=
     Bool eval(Sit S, Expression &, Context *, Bool resolvingGlobals =3D =
 0);=0A=
     Number tonumber(Sit S);=0A=
     External toexternal(Sit S);=0A=
     Bool tostring(Sit S, Str& result);=0A=
     const Str& tostringRef() const;=0A=
     Bool tobool();=0A=
     Context& tonodeset();=0A=
     const Context& tonodesetRef();=0A=
     Bool matchesPattern(Sit S, Context *, Bool &result);=0A=
     Bool trueFor(Sit S, Context *, Bool&);=0A=
 =0A=
     ExType type;=0A=
     ExFunctor functor;=0A=
     ExprList args;=0A=
     Bool createContext(Sit S, Context *&, int =3D -1);=0A=
     LocStep *step;=0A=
     int hasPath;=0A=
     void setAtom(Context*);=0A=
     void setAtom(const Number&);=0A=
     void setAtom(const DStr&);=0A=
     void setAtom(Bool);=0A=
     void setAtom(const External&);=0A=
     Tree *setFragment();=0A=
     Tree *pTree;=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
     int optimizePositional(int level);=0A=
 =0A=
 =0A=
     void optimizePositionBounds();=0A=
 =0A=
 =0A=
 =0A=
     int inBounds(int position) const;=0A=
     Element& getOwnerElement() const;=0A=
     Tree& getOwnerTree() const;=0A=
     void report(Sit S, MsgType type, MsgCode code, const Str& arg1, =
 const Str& arg2);=0A=
     Bool containsFunctor(ExFunctor func);=0A=
 protected:=0A=
 private:=0A=
     union=0A=
     {=0A=
       QName *pName;=0A=
       Str *patomstring;=0A=
       Bool atombool;=0A=
       Number *patomnumber;=0A=
       Context *patomnodeset;=0A=
       External *patomexternal;=0A=
     };=0A=
     Bool compareCC(Sit S, ExFunctor, const Context &, const Context =
 &);=0A=
     Bool compareCS(Sit S, ExFunctor, const Context &, const DStr &);=0A=
     Bool compareCN(Sit S, ExFunctor, const Context &, const Number =
 &);=0A=
     Bool compare(Sit S, Bool &, Expression &, ExFunctor);=0A=
     Bool isOp(ExToken, int &);=0A=
     Bool callOp(Sit S, Expression&, ExprList&);=0A=
     Bool callFunc(Sit S, Expression&, ExprList&, Context *);=0A=
     Bool parseBasic(Sit S, Tokenizer &, int, int, Bool defaultToo =3D =
 0);=0A=
     Bool parseLP(Sit S, Tokenizer&, int &, Bool dropRoot, Bool =
 defaultToo =3D 0);=0A=
     Bool matchesSinglePath(Sit S, NodeHandle v, int lastIndex, Bool =
 &result);=0A=
     Bool matchesSingleStep(Sit S, NodeHandle v, Bool &result);=0A=
     Bool createLPContextLevel(Sit S, int stepLevel, int stepsCount,=0A=
         NodeHandle base, Context& info, Context *theResult);=0A=
     Bool createLPContext(Sit S, Context *&, int, NodeHandle =
 globalCurrent =3D __null);=0A=
     Bool createLPContextSum(Sit S, Context *&, NodeHandle globalCurrent =
 =3D __null);=0A=
     Bool getDocument_(Sit S, NodeHandle& newroot,=0A=
         const Str& location, Processor *proc);=0A=
 =0A=
     Bool=0A=
         isPattern;=0A=
     Bool patternOK(Sit S);=0A=
     void setAtomNoCopy(Context &);=0A=
 =0A=
 =0A=
 =0A=
     int optimizePositionFrom,=0A=
         optimizePositionTo;=0A=
 =0A=
 =0A=
     Bool usesLast,=0A=
         positional;=0A=
 =0A=
         Element &owner;=0A=
 };=0A=
 # 37 "decimal.cpp" 2=0A=
 # 1 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/math.h" 1 3 =
 4=0A=
 # 24 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/math.h" 3 =
 4=0A=
 extern "C" {=0A=
 =0A=
 =0A=
 #pragma ident "@(#)math.h	2.6	97/06/05"=0A=
 # 46 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/math.h" 3 =
 4=0A=
 typedef union _h_val {=0A=
         unsigned long _i[sizeof(double) / sizeof(unsigned long)];=0A=
         double _d;=0A=
 } _h_val;=0A=
 =0A=
 =0A=
 extern const _h_val __huge_val;=0A=
 # 80 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/math.h" 3 =
 4=0A=
 extern int signgam;=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 enum version {libm_ieee =3D -1, c_issue_4, ansi_1, strict_ansi};=0A=
 =0A=
 =0A=
 extern const enum version _lib_version;=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 struct __math_exception {=0A=
         int type;=0A=
         char *name;=0A=
         double arg1;=0A=
         double arg2;=0A=
         double retval;=0A=
 };=0A=
 # 134 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/math.h" 3 =
 4=0A=
 extern double acos (double);=0A=
 extern double asin (double);=0A=
 extern double atan (double);=0A=
 extern double atan2 (double, double);=0A=
 extern double cos (double);=0A=
 extern double sin (double);=0A=
 extern double tan (double);=0A=
 =0A=
 extern double cosh (double);=0A=
 extern double sinh (double);=0A=
 extern double tanh (double);=0A=
 =0A=
 extern double exp (double);=0A=
 extern double frexp (double, int *);=0A=
 extern double ldexp (double, int);=0A=
 extern double log (double);=0A=
 extern double log10 (double);=0A=
 extern double modf (double, double *);=0A=
 =0A=
 extern double pow (double, double);=0A=
 extern double sqrt (double);=0A=
 =0A=
 extern double ceil (double);=0A=
 extern double fabs (double);=0A=
 extern double floor (double);=0A=
 extern double fmod (double, double);=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 extern double erf (double);=0A=
 extern double erfc (double);=0A=
 extern double gamma (double);=0A=
 extern double hypot (double, double);=0A=
 extern int isnan (double);=0A=
 extern double j0 (double);=0A=
 extern double j1 (double);=0A=
 extern double jn (int, double);=0A=
 extern double lgamma (double);=0A=
 extern double y0 (double);=0A=
 extern double y1 (double);=0A=
 extern double yn (int, double);=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 extern double acosh (double);=0A=
 extern double asinh (double);=0A=
 extern double atanh (double);=0A=
 extern double cbrt (double);=0A=
 extern double logb (double);=0A=
 extern double nextafter (double, double);=0A=
 extern double remainder (double, double);=0A=
 extern double scalb (double, double);=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 extern double expm1 (double);=0A=
 extern int ilogb (double);=0A=
 extern double log1p (double);=0A=
 extern double rint (double);=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 extern int matherr (struct __math_exception *);=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 extern double significand (double);=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 extern double copysign (double, double);=0A=
 extern double scalbn (double, int);=0A=
 # 231 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/math.h" 3 =
 4=0A=
 extern float modff (float, float *);=0A=
 =0A=
 # 1 =
 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/floatingpoint.h" =
 1 3 4=0A=
 # 21 =
 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/floatingpoint.h" =
 3 4=0A=
 extern "C" {=0A=
 =0A=
 =0A=
 #pragma ident "@(#)floatingpoint.h	2.4 94/06/09"=0A=
 # 44 =
 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/floatingpoint.h" =
 3 4=0A=
 # 1 =
 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/sys/ieeefp.h" 1 =
 3 4=0A=
 # 17 =
 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/sys/ieeefp.h" 3 =
 4=0A=
 #pragma ident "@(#)ieeefp.h	2.7 94/11/09"=0A=
 =0A=
 =0A=
 extern "C" {=0A=
 # 59 =
 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/sys/ieeefp.h" 3 =
 4=0A=
 enum fp_direction_type {=0A=
         fp_nearest =3D 0,=0A=
         fp_negative =3D 1,=0A=
         fp_positive =3D 2,=0A=
         fp_tozero =3D 3=0A=
 };=0A=
 =0A=
 enum fp_precision_type {=0A=
         fp_single =3D 0,=0A=
         fp_precision_3 =3D 1,=0A=
         fp_double =3D 2,=0A=
         fp_extended =3D 3=0A=
 };=0A=
 =0A=
 enum fp_exception_type {=0A=
         fp_invalid =3D 0,=0A=
         fp_denormalized =3D 1,=0A=
         fp_division =3D 2,=0A=
         fp_overflow =3D 3,=0A=
         fp_underflow =3D 4,=0A=
         fp_inexact =3D 5=0A=
 };=0A=
 =0A=
 enum fp_trap_enable_type {=0A=
         fp_trap_invalid =3D 0,=0A=
         fp_trap_denormalized =3D 1,=0A=
         fp_trap_division =3D 2,=0A=
         fp_trap_overflow =3D 3,=0A=
         fp_trap_underflow =3D 4,=0A=
         fp_trap_inexact =3D 5=0A=
 };=0A=
 # 133 =
 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/sys/ieeefp.h" 3 =
 4=0A=
 enum fp_class_type {=0A=
         fp_zero =3D 0,=0A=
         fp_subnormal =3D 1,=0A=
         fp_normal =3D 2,=0A=
         fp_infinity =3D 3,=0A=
         fp_quiet =3D 4,=0A=
         fp_signaling =3D 5=0A=
 };=0A=
 =0A=
 =0A=
 }=0A=
 # 45 =
 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/floatingpoint.h" =
 2 3 4=0A=
 # 58 =
 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/floatingpoint.h" =
 3 4=0A=
 typedef int sigfpe_code_type;=0A=
 =0A=
 typedef void (*sigfpe_handler_type)();=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 extern sigfpe_handler_type sigfpe (sigfpe_code_type, =
 sigfpe_handler_type);=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 typedef float single;=0A=
 =0A=
 =0A=
 =0A=
 typedef unsigned extended[3];=0A=
 =0A=
 =0A=
 typedef long double quadruple;=0A=
 =0A=
 typedef unsigned fp_exception_field_type;=0A=
 # 90 =
 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/floatingpoint.h" =
 3 4=0A=
 typedef char decimal_string[512];=0A=
 =0A=
 =0A=
 typedef struct {=0A=
         enum fp_class_type fpclass;=0A=
         int sign;=0A=
         int exponent;=0A=
         decimal_string ds;=0A=
 =0A=
 =0A=
         int more;=0A=
 =0A=
 =0A=
         int ndigits;=0A=
 =0A=
 =0A=
 } decimal_record;=0A=
 =0A=
 enum decimal_form {=0A=
         fixed_form,=0A=
 =0A=
 =0A=
         floating_form=0A=
 =0A=
 };=0A=
 =0A=
 typedef struct {=0A=
         enum fp_direction_type rd;=0A=
 =0A=
         enum decimal_form df;=0A=
 =0A=
         int ndigits;=0A=
 } decimal_mode;=0A=
 =0A=
 enum decimal_string_form {=0A=
         invalid_form,=0A=
         whitespace_form,=0A=
         fixed_int_form,=0A=
         fixed_intdot_form,=0A=
         fixed_dotfrac_form,=0A=
         fixed_intdotfrac_form,=0A=
         floating_int_form,=0A=
         floating_intdot_form,=0A=
         floating_dotfrac_form,=0A=
         floating_intdotfrac_form,=0A=
         inf_form,=0A=
         infinity_form,=0A=
         nan_form,=0A=
         nanstring_form=0A=
 };=0A=
 =0A=
 extern void single_to_decimal (single *, decimal_mode *, decimal_record =
 *, fp_exception_field_type *);=0A=
 =0A=
 extern void double_to_decimal (double *, decimal_mode *, decimal_record =
 *, fp_exception_field_type *);=0A=
 =0A=
 extern void extended_to_decimal (extended *, decimal_mode *, =
 decimal_record *, fp_exception_field_type *);=0A=
 =0A=
 extern void quadruple_to_decimal (quadruple *, decimal_mode *, =
 decimal_record *, fp_exception_field_type *);=0A=
 =0A=
 =0A=
 extern void decimal_to_single (single *, decimal_mode *, decimal_record =
 *, fp_exception_field_type *);=0A=
 =0A=
 extern void decimal_to_double (double *, decimal_mode *, decimal_record =
 *, fp_exception_field_type *);=0A=
 =0A=
 extern void decimal_to_extended (extended *, decimal_mode *, =
 decimal_record *, fp_exception_field_type *);=0A=
 =0A=
 extern void decimal_to_quadruple (quadruple *, decimal_mode *, =
 decimal_record *, fp_exception_field_type *);=0A=
 =0A=
 =0A=
 extern void string_to_decimal (char **, int, int, decimal_record *, =
 enum decimal_string_form *, char **);=0A=
 =0A=
 extern void func_to_decimal (char **, int, int, decimal_record *, enum =
 decimal_string_form *, char **, int (*)(void), int *, int (*)(int));=0A=
 =0A=
 =0A=
 extern void file_to_decimal (char **, int, int, decimal_record *, enum =
 decimal_string_form *, char **, FILE *, int *);=0A=
 =0A=
 =0A=
 =0A=
 extern char *seconvert (single *, int, int *, int *, char *);=0A=
 extern char *sfconvert (single *, int, int *, int *, char *);=0A=
 extern char *sgconvert (single *, int, int, char *);=0A=
 extern char *econvert (double, int, int *, int *, char *);=0A=
 extern char *fconvert (double, int, int *, int *, char *);=0A=
 extern char *gconvert (double, int, int, char *);=0A=
 extern char *qeconvert (quadruple *, int, int *, int *, char *);=0A=
 extern char *qfconvert (quadruple *, int, int *, int *, char *);=0A=
 extern char *qgconvert (quadruple *, int, int, char *);=0A=
 =0A=
 extern char *ecvt (double, int, int *, int *);=0A=
 extern char *fcvt (double, int, int *, int *);=0A=
 extern char *gcvt (double, int, char *);=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 extern double atof (const char *);=0A=
 extern double strtod (const char *, char **);=0A=
 =0A=
 =0A=
 }=0A=
 # 234 "/usr/local/lib/gcc-lib/i386-pc-solaris2.6/3.2/include/math.h" 2 =
 3 4=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 }=0A=
 # 38 "decimal.cpp" 2=0A=
 =0A=
 DecimalFormat::DecimalFormat(const EQName& name_)=0A=
     : name(name_),=0A=
       decimalSeparator(".", 1, XSLA_DECIMAL_SEPARATOR),=0A=
       groupingSeparator(",", 1, XSLA_GROUPING_SEPARATOR),=0A=
       infinity("Infinity", 0, XSLA_INFINITY),=0A=
       minusSign("-", 1, XSLA_MINUS_SIGN),=0A=
       NaN("NaN", 0, XSLA_NAN),=0A=
       percent("%", 1, XSLA_PERCENT),=0A=
       perMille("\xe2\x80\x83", 1, XSLA_PER_MILLE),=0A=
       zeroDigit("0", 1, XSLA_ZERO_DIGIT),=0A=
       digit("#", 1, XSLA_DIGIT),=0A=
       patternSeparator(";", 1, XSLA_PATTERN_SEPARATOR)=0A=
 {=0A=
 }=0A=
 =0A=
 DecimalFormat::~DecimalFormat()=0A=
 {=0A=
 }=0A=
 =0A=
 Bool DecimalFormat::setItem(Sit S, XSL_ATT itemId, const Str& value)=0A=
 {=0A=
     return ((void)((findItem(itemId)) || (__assert("findItem(itemId)", =
 "decimal.cpp", 60), 0)),findItem(itemId)) -> set(S, value);=0A=
 }=0A=
 =0A=
 const Str& DecimalFormat::getItem(XSL_ATT itemId)=0A=
 {=0A=
     return ((void)((findItem(itemId)) || (__assert("findItem(itemId)", =
 "decimal.cpp", 65), 0)),findItem(itemId)) -> get();=0A=
 }=0A=
 =0A=
 DefaultedStr* DecimalFormat::findItem(XSL_ATT itemId)=0A=
 {=0A=
     switch(itemId)=0A=
     {=0A=
     case XSLA_DECIMAL_SEPARATOR:=0A=
         return &decimalSeparator;=0A=
     case XSLA_GROUPING_SEPARATOR:=0A=
         return &groupingSeparator;=0A=
     case XSLA_INFINITY:=0A=
         return &infinity;=0A=
     case XSLA_MINUS_SIGN:=0A=
         return &minusSign;=0A=
     case XSLA_NAN:=0A=
         return &NaN;=0A=
     case XSLA_PERCENT:=0A=
         return &percent;=0A=
     case XSLA_PER_MILLE:=0A=
         return &perMille;=0A=
     case XSLA_ZERO_DIGIT:=0A=
         return &zeroDigit;=0A=
     case XSLA_DIGIT:=0A=
         return &digit;=0A=
     case XSLA_PATTERN_SEPARATOR:=0A=
         return &patternSeparator;=0A=
     default:=0A=
         return __null;=0A=
     }=0A=
 }=0A=
 =0A=
 =0A=
 =0A=
 Bool DecimalFormat::format(Sit S, Number& num, const Str& fmt, Str& =
 result)=0A=
 {=0A=
     if (num.isNaN())=0A=
     {=0A=
         result =3D getItem(XSLA_NAN);=0A=
         return 0;=0A=
     }=0A=
     int factor =3D 1,=0A=
         iDigitsMin =3D 0,=0A=
         fDigits =3D 0,=0A=
         fDigitsMin =3D 0,=0A=
         gSize =3D 0;=0A=
     Str prefix,=0A=
         suffix;=0A=
     {if (parse(S, fmt, num < 0.0, prefix, suffix, factor, iDigitsMin, =
 fDigits, fDigitsMin, gSize)) return 1;};=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
     DStr tempResult =3D prefix;=0A=
     if (num.isInf())=0A=
     {=0A=
         tempResult +=3D getItem(XSLA_INFINITY);=0A=
         tempResult +=3D suffix;=0A=
         result =3D tempResult;=0A=
         return 0;=0A=
     }=0A=
 =0A=
 =0A=
 =0A=
     double theNumber =3D fabs((double) num * factor);=0A=
 =0A=
     char buff[64];=0A=
     DStr auxFmt =3D "%";=0A=
     if (iDigitsMin)=0A=
         auxFmt +=3D "0";=0A=
     auxFmt +=3D iDigitsMin + fDigits + 1 ;=0A=
     auxFmt +=3D ".";=0A=
     auxFmt +=3D fDigits;=0A=
     auxFmt +=3D "f";=0A=
     sprintf(buff, (char*) auxFmt, theNumber);=0A=
 =0A=
 =0A=
 =0A=
     int decPt =3D -1,=0A=
         trailingCount =3D 0,=0A=
         j;=0A=
     for (j =3D 0; buff[j]; j++)=0A=
     {=0A=
         if (buff[j] =3D=3D '.' && decPt < 0)=0A=
             decPt =3D j;=0A=
         else if (decPt >=3D 0)=0A=
         {=0A=
             if (buff[j] !=3D '0')=0A=
                 trailingCount =3D 0;=0A=
             else=0A=
                 trailingCount++;=0A=
         }=0A=
     }=0A=
     if (decPt =3D=3D -1)=0A=
         decPt =3D j;=0A=
 =0A=
 =0A=
     int block =3D gSize ? decPt % gSize : decPt;=0A=
     if (!block) block =3D gSize;=0A=
     for (int i =3D 0; i < decPt; i +=3D block, block =3D gSize)=0A=
     {=0A=
         for (int k =3D 0; k < block; k++)=0A=
         {=0A=
             if (buff[i + k] !=3D 0)=0A=
                 tempResult.nadd(buff + i + k, 1);=0A=
             else=0A=
                 tempResult +=3D getItem(XSLA_ZERO_DIGIT);=0A=
         }=0A=
         if (i + block < decPt)=0A=
             tempResult +=3D getItem(XSLA_GROUPING_SEPARATOR);=0A=
     }=0A=
 =0A=
     if (fDigitsMin || !(trailingCount =3D=3D fDigits))=0A=
         tempResult +=3D getItem(XSLA_DECIMAL_SEPARATOR);=0A=
 =0A=
 =0A=
     tempResult.nadd(buff + decPt + 1, (fDigits - trailingCount > =
 fDigitsMin ? fDigits - trailingCount : fDigitsMin));=0A=
 =0A=
 =0A=
     if (factor =3D=3D 100)=0A=
         tempResult +=3D getItem(XSLA_PERCENT);=0A=
     if (factor =3D=3D 1000)=0A=
         tempResult +=3D getItem(XSLA_PER_MILLE );=0A=
 =0A=
 =0A=
     tempResult +=3D suffix;=0A=
     result =3D tempResult;=0A=
     return 0;=0A=
 }=0A=
 =0A=
 const EQName& DecimalFormat::getname()=0A=
 {=0A=
     return name;=0A=
 }=0A=
 =0A=
 =0A=
 =0A=
 XSL_ATT tokensList[] =3D=0A=
 {=0A=
     XSLA_DIGIT,=0A=
     XSLA_ZERO_DIGIT,=0A=
     XSLA_GROUPING_SEPARATOR,=0A=
     XSLA_DECIMAL_SEPARATOR,=0A=
     XSLA_PATTERN_SEPARATOR,=0A=
     XSLA_PERCENT,=0A=
     XSLA_PER_MILLE,=0A=
     XSLA_NONE=0A=
 };=0A=
 =0A=
 XSL_ATT DecimalFormat::whichToken(const char* ptr, int len)=0A=
 {=0A=
     for (int i =3D 0; tokensList[i] !=3D XSLA_NONE; i++)=0A=
         if (!strncmp(ptr, getItem(tokensList[i]), len))=0A=
             return tokensList[i];=0A=
     return XSLA_NONE;=0A=
 }=0A=
 =0A=
 Bool DecimalFormat::parseSubpattern(Sit S, const char *&ptr, Bool =
 negative,=0A=
                                      Str& prefix, Str& suffix, int& =
 factor,=0A=
                                      int& iDigitsMin, int& fDigits, =
 int& fDigitsMin, int& gSize)=0A=
 {=0A=
     int len;=0A=
     int state =3D 0;=0A=
     Bool wasDigit =3D 0;=0A=
     XSL_ATT token;=0A=
     prefix.empty();=0A=
     suffix.empty();=0A=
     iDigitsMin =3D fDigits =3D fDigitsMin =3D 0;=0A=
     gSize =3D -1;=0A=
     factor =3D 1;=0A=
     for (; *ptr && state < 5; ptr +=3D len)=0A=
     {=0A=
         if (*ptr =3D=3D '\'')=0A=
         {=0A=
 =0A=
             ptr++;=0A=
             if (!*ptr) break;=0A=
             len =3D utf8SingleCharLength(ptr);=0A=
             if (whichToken(ptr, len) =3D=3D XSLA_NONE)=0A=
                 { report(S, MT_ERROR, E_FORMAT_INVALID, (char*)__null, =
 (char*)__null); return 1; };=0A=
             token =3D XSLA_NONE;=0A=
         }=0A=
         else=0A=
         {=0A=
             len =3D utf8SingleCharLength(ptr);=0A=
             token =3D whichToken(ptr, len);=0A=
         }=0A=
 =0A=
 =0A=
         if ((unsigned char)*ptr =3D=3D 0xc2 && (unsigned char)(ptr[1]) =
 =3D=3D 0xa4)=0A=
             { report(S, MT_ERROR, E_FORMAT_INVALID, (char*)__null, =
 (char*)__null); return 1; };=0A=
 =0A=
         switch(state)=0A=
         {=0A=
         case 0:=0A=
 =0A=
         {=0A=
             if (token =3D=3D XSLA_NONE)=0A=
             {=0A=
 =0A=
               Str foo;=0A=
               foo.nset(ptr, len);=0A=
               prefix =3D prefix + foo;=0A=
                 break;=0A=
             }=0A=
             state =3D 1;=0A=
         };=0A=
         case 1:=0A=
 =0A=
         {=0A=
             switch(token)=0A=
             {=0A=
             case XSLA_DIGIT:=0A=
             case XSLA_ZERO_DIGIT:=0A=
             {=0A=
                 if (gSize >=3D 0) gSize++;=0A=
                 wasDigit =3D 1;=0A=
                 if (token =3D=3D XSLA_DIGIT)=0A=
                 {=0A=
                     if (iDigitsMin)=0A=
                         { report(S, MT_ERROR, E_FORMAT_INVALID, =
 (char*)__null, (char*)__null); return 1; };=0A=
                 }=0A=
                 else=0A=
                     iDigitsMin++;=0A=
             }; break;=0A=
             case XSLA_GROUPING_SEPARATOR:=0A=
             {=0A=
 =0A=
                 if (!gSize || !wasDigit)=0A=
                     { report(S, MT_ERROR, E_FORMAT_INVALID, =
 (char*)__null, (char*)__null); return 1; };=0A=
                 gSize =3D 0;=0A=
             }; break;=0A=
             case XSLA_DECIMAL_SEPARATOR:=0A=
                 state =3D 2; break;=0A=
             case XSLA_PERCENT:=0A=
             case XSLA_PER_MILLE:=0A=
             {=0A=
                 if (factor !=3D 1)=0A=
                     { report(S, MT_ERROR, E_FORMAT_INVALID, =
 (char*)__null, (char*)__null); return 1; };=0A=
                 factor =3D (token =3D=3D XSLA_PERCENT) ? 100 : 1000;=0A=
 =0A=
             }; break;=0A=
             case XSLA_NONE:=0A=
             {=0A=
                 suffix.nset(ptr, len);=0A=
                 state =3D 4;=0A=
             }; break;=0A=
             case XSLA_PATTERN_SEPARATOR:=0A=
             {=0A=
                 if (negative)=0A=
                     { report(S, MT_ERROR, E_FORMAT_INVALID, =
 (char*)__null, (char*)__null); return 1; };=0A=
                 state =3D 5;=0A=
             }; break;=0A=
             default:=0A=
                 { report(S, MT_ERROR, E_FORMAT_INVALID, (char*)__null, =
 (char*)__null); return 1; };=0A=
             }=0A=
         }; break;=0A=
         case 2:=0A=
 =0A=
         {=0A=
             switch(token)=0A=
             {=0A=
             case XSLA_ZERO_DIGIT:=0A=
             {=0A=
                 if (fDigits > fDigitsMin)=0A=
                     { report(S, MT_ERROR, E_FORMAT_INVALID, =
 (char*)__null, (char*)__null); return 1; };=0A=
                 fDigitsMin++;=0A=
                 fDigits++;=0A=
             }; break;=0A=
             case XSLA_DIGIT:=0A=
                 fDigits++; break;=0A=
             case XSLA_PERCENT:=0A=
             case XSLA_PER_MILLE:=0A=
             {=0A=
                 if (factor !=3D 1)=0A=
                     { report(S, MT_ERROR, E_FORMAT_INVALID, =
 (char*)__null, (char*)__null); return 1; };=0A=
                 factor =3D (token =3D=3D XSLA_PERCENT) ? 100 : 1000;=0A=
 =0A=
             }; break;=0A=
             case XSLA_NONE:=0A=
             {=0A=
                 suffix.nset(ptr, len);=0A=
                 state =3D 4;=0A=
             }; break;=0A=
             case XSLA_PATTERN_SEPARATOR:=0A=
             {=0A=
                 if (negative)=0A=
                     { report(S, MT_ERROR, E_FORMAT_INVALID, =
 (char*)__null, (char*)__null); return 1; };=0A=
                 state =3D 5;=0A=
             }; break;=0A=
             default:=0A=
                 { report(S, MT_ERROR, E_FORMAT_INVALID, (char*)__null, =
 (char*)__null); return 1; };=0A=
             }=0A=
         }; break;=0A=
         case 3:=0A=
 =0A=
         {=0A=
             switch(token)=0A=
             {=0A=
             case XSLA_NONE:=0A=
             {=0A=
                 suffix.nset(ptr, len);=0A=
                 state =3D 4;=0A=
             }; break;=0A=
             case XSLA_PATTERN_SEPARATOR:=0A=
             {=0A=
                 if (negative)=0A=
                     { report(S, MT_ERROR, E_FORMAT_INVALID, =
 (char*)__null, (char*)__null); return 1; };=0A=
                 state =3D 5;=0A=
             }; break;=0A=
             default:=0A=
                 { report(S, MT_ERROR, E_FORMAT_INVALID, (char*)__null, =
 (char*)__null); return 1; };=0A=
             }=0A=
         }; break;=0A=
         case 4:=0A=
 =0A=
         {=0A=
           if (token =3D=3D XSLA_NONE) {=0A=
             Str foo;=0A=
             foo.nset(ptr, len);=0A=
             suffix =3D suffix + foo;=0A=
             break;=0A=
           }=0A=
           if (token !=3D XSLA_PATTERN_SEPARATOR || negative)=0A=
             { report(S, MT_ERROR, E_FORMAT_INVALID, (char*)__null, =
 (char*)__null); return 1; };=0A=
           state =3D 5;=0A=
         }; break;=0A=
         }=0A=
     }=0A=
     if ((negative && *ptr) || !iDigitsMin)=0A=
         { report(S, MT_ERROR, E_FORMAT_INVALID, (char*)__null, =
 (char*)__null); return 1; };=0A=
 =0A=
     if (!negative && !*ptr && state =3D=3D 5)=0A=
         { report(S, MT_ERROR, E_FORMAT_INVALID, (char*)__null, =
 (char*)__null); return 1; };=0A=
     if (gSize =3D=3D -1)=0A=
         gSize =3D 0;=0A=
     return 0;=0A=
 }=0A=
 =0A=
 Bool DecimalFormat::parse(Sit S, const Str &src, Bool negative,=0A=
                            Str& prefix, Str& suffix, int& factor,=0A=
                            int& iDigitsMin, int& fDigits, int& =
 fDigitsMin, int& gSize)=0A=
 {=0A=
     const char *p =3D (const char*) src;=0A=
     {if (parseSubpattern(S, p, 0, prefix, suffix, factor, iDigitsMin, =
 fDigits, fDigitsMin, gSize)) return 1;};=0A=
 =0A=
     if (negative)=0A=
     {=0A=
         if (*p)=0A=
         {=0A=
             int iDigitsMin_, fDigits_, fDigitsMin_, gSize_;=0A=
 =0A=
             {if (parseSubpattern(S, p, 1, prefix, suffix, factor, =
 iDigitsMin_, fDigits_, fDigitsMin_, gSize_)) return 1;};=0A=
 =0A=
         }=0A=
         else=0A=
         {=0A=
 =0A=
             prefix =3D DStr(getItem(XSLA_MINUS_SIGN)) + prefix;=0A=
 =0A=
         }=0A=
     }=0A=
     return 0;=0A=
 }=0A=
 =0A=
 void DecimalFormat::report(Sit S, MsgType type, MsgCode code,=0A=
     const Str &arg1, const Str &arg2) const=0A=
 {=0A=
     S.message(type, code, arg1, arg2);=0A=
 }=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 DefaultedStr::DefaultedStr(const char *defaultValue_, Bool singleChar_, =
 XSL_ATT id_)=0A=
     : defaultValue(defaultValue_), singleChar(singleChar_), =
 specified(0), id(id_)=0A=
 {=0A=
 }=0A=
 =0A=
 DefaultedStr::~DefaultedStr()=0A=
 {=0A=
 }=0A=
 =0A=
 Bool DefaultedStr::set(Sit S, const Str& value)=0A=
 {=0A=
     if (specified && value !=3D specifiedValue)=0A=
         { report(S, MT_ERROR, E1_FORMAT_DUPLICIT_OPTION, ownName(), =
 (char*)__null); return 1; };=0A=
     if (singleChar && utf8StrLength(value) !=3D 1)=0A=
         { report(S, MT_ERROR, E1_FORMAT_OPTION_CHAR, ownName(), =
 (char*)__null); return 1; };=0A=
     specifiedValue =3D value;=0A=
     specified =3D 1;=0A=
     return 0;=0A=
 }=0A=
 =0A=
 const Str& DefaultedStr::get()=0A=
 {=0A=
     if (specified)=0A=
         return specifiedValue;=0A=
     else=0A=
         return defaultValue;=0A=
 }=0A=
 =0A=
 char* DefaultedStr::ownName()=0A=
 {=0A=
     return (char*)xslAttNames[id];=0A=
 }=0A=
 =0A=
 void DefaultedStr::report(Sit S, MsgType type, MsgCode code,=0A=
     const Str &arg1, const Str &arg2) const=0A=
 {=0A=
     S.message(type, code, arg1, arg2);=0A=
 }=0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 =0A=
 DecimalFormatList::DecimalFormatList()=0A=
 {=0A=
     initialize();=0A=
 }=0A=
 =0A=
 void DecimalFormatList::initialize()=0A=
 {=0A=
     freeall(0);=0A=
     EQName emptyName;=0A=
 =0A=
     append(new DecimalFormat(emptyName));=0A=
 }=0A=
 =0A=
 DecimalFormatList::~DecimalFormatList()=0A=
 {=0A=
     freeall(0);=0A=
 }=0A=
 =0A=
 Bool DecimalFormatList::add(Sit S, const EQName& name, DecimalFormat*& =
 result)=0A=
 {=0A=
     int ndx =3D findNdx(name);=0A=
     if (ndx !=3D -1)=0A=
         result =3D (*this)[ndx];=0A=
     else=0A=
         append(result =3D new DecimalFormat(name));=0A=
     return 0;=0A=
 }=0A=
 =0A=
 Bool DecimalFormatList::format(Sit S, const EQName& name, Number& num, =
 const Str& fmt, Str& result)=0A=
 {=0A=
     int ndx =3D findNdx(name);=0A=
     if (ndx !=3D -1)=0A=
         {if ((*this)[ndx] -> format(S, num, fmt, result)) return 1;}=0A=
     else=0A=
     {=0A=
         Str fullname;=0A=
         name.getname(fullname);=0A=
         { report(S, MT_ERROR, E1_FORMAT_NOT_FOUND, fullname, =
 (char*)__null); return 1; };=0A=
     }=0A=
     return 0;=0A=
 }=0A=
 =0A=
 int DecimalFormatList::findNdx(const EQName& name)=0A=
 {=0A=
     int i;=0A=
     for (i =3D 0; i < number(); i++)=0A=
         if ((*this)[i] -> getname() =3D=3D name)=0A=
             return i;=0A=
     return -1;=0A=
 }=0A=
 =0A=
 void DecimalFormatList::report(Sit S, MsgType type, MsgCode code,=0A=
     const Str &arg1, const Str &arg2) const=0A=
 {=0A=
     S.message(type, code, arg1, arg2);=0A=
 }=0A=
 
 ------_=_NextPart_000_01C25CF6.8F33C860--


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]