openjade-1.3.2/0040775000076400007640000000000007572433176011436 5ustar ianianopenjade-1.3.2/ChangeLog0100664000076400007640000016360207572424460013211 0ustar ianian2002-12-01 14:55 icastle * jade/TransformFOTBuilder.cxx: XML backend doesn't quote "&" in attribute values Ref: Toby Speight, Debian Bug 147073 2002-12-01 11:56 icastle * Makefile.comm.in: Make find OpenSP include files more robust Make sure that files included from OpenSP can in turn also include files from OpenSP - without the OpenSP files being in a standard include directory. Of course this is hack that will disappear in due course. 2002-12-01 11:53 icastle * config/configure.in: Improved support for configuration on PPC64 architecture On PPC64 libosp is to be found in /usr/lib64 - so make sure we use this directory. Ref: Karl Eichwalder, email to openjade-devel list. 2002-12-01 11:43 icastle * dsssl/builtins.dsl: SGML Property Operations - typo in definition Correct the implementation of ISO/IEC 10179:1996 section 10.2.5 SGML Property Operations (attribute string nl). Ref: Toby Speight, Debian Bug 145242: "attribute" builtin misdefined 2002-11-16 18:27 icastle * configure, config/configure.in: Correct speling misteak 2002-11-16 18:01 icastle * configure, grove/Node.cxx, include/config.h.in, spgrove/GroveBuilder.cxx: Get rid of warnings. Fix compilation warnings. Gcc 3.x (and RH 2.96) don't like pasting tokens after "::". Make GroveImpl's destructor public... Make config.h a bit happier about swallowing OpenSP's config.h 2002-11-16 08:33 icastle * config/configure.in: Make checking for location of libosp and include file more flexible and robust 2002-11-15 22:46 icastle * jade/Makefile.sub, spgrove/Makefile.sub, style/Makefile.sub: libosp is now elsewhere; and let libtool take the strain of trying to find all the libraries 2002-11-15 18:08 icastle * config/configure.in, include/config.h.in: Make sure that openjade config info is in sync with opensp 2002-10-20 22:57 icastle * Makefile.comm.in, instmac.pl, lib/instmac.pl: instmac.pl can't be in lib - because there isn't really one now! 2002-10-20 22:47 icastle * include/config.h.in: file config.h.in was initially added on branch RELEASE-1_3. 2002-10-20 22:47 icastle * include/dsssl_ns.h: file dsssl_ns.h was initially added on branch RELEASE-1_3. 2002-10-20 22:47 icastle * Makefile.comm.in, Makefile.in, NEWS, README, RELEASE, VERSION, configure, msggen.pl, config/configure.in, docsrc/releasenotes.xml, grove/Makefile.sub, grove/Node.h, include/Allocator.h, include/ArcEngine.h, include/Attribute.h, include/Attributed.h, include/Big5CodingSystem.h, include/Boolean.h, include/CharMap.cxx, include/CharMap.h, include/CharsetDecl.h, include/CharsetInfo.h, include/CharsetRegistry.h, include/CmdLineApp.h, include/CodingSystem.h, include/CodingSystemKit.h, include/ConsoleOutput.h, include/ContentState.h, include/ContentToken.h, include/CopyOwner.cxx, include/CopyOwner.h, include/DescriptorManager.h, include/Dtd.h, include/EUCJPCodingSystem.h, include/ElementType.h, include/Entity.h, include/EntityApp.h, include/EntityCatalog.h, include/EntityDecl.h, include/EntityManager.h, include/ErrnoMessageArg.h, include/ErrorCountEventHandler.h, include/Event.h, include/EventsWanted.h, include/ExtendEntityManager.h, include/ExternalId.h, include/Fixed2CodingSystem.h, include/GenericEventHandler.h, include/Hash.h, include/HashTable.cxx, include/HashTable.h, include/HashTableItemBase.cxx, include/HashTableItemBase.h, include/IList.h, include/IListBase.h, include/IListIter.h, include/IListIterBase.h, include/IQueue.cxx, include/IQueue.h, include/ISet.cxx, include/ISet.h, include/ISetIter.h, include/IdentityCodingSystem.h, include/InputSource.h, include/InternalInputSource.h, include/Link.h, include/LinkProcess.h, include/List.cxx, include/List.h, include/ListIter.h, include/LiteralStorage.h, include/Location.h, include/Lpd.h, include/Markup.h, include/Message.h, include/MessageArg.h, include/MessageBuilder.h, include/MessageEventHandler.h, include/MessageFormatter.h, include/MessageReporter.h, include/MessageTable.h, include/Mode.h, include/NCVector.h, include/NCVector.sed, include/Named.h, include/NamedResource.h, include/NamedResourceTable.h, include/NamedTable.h, include/Notation.h, include/NotationStorage.h, include/OpenElement.h, include/Options.cxx, include/Options.h, include/OutputByteStream.h, include/OutputCharStream.h, include/Owner.cxx, include/Owner.h, include/OwnerTable.cxx, include/OwnerTable.h, include/ParserApp.h, include/ParserOptions.h, include/PointerTable.cxx, include/PointerTable.h, include/PosixStorage.h, include/Ptr.cxx, include/Ptr.h, include/RangeMap.cxx, include/RangeMap.h, include/Resource.h, include/RewindStorageObject.h, include/SJISCodingSystem.h, include/SOEntityCatalog.h, include/Sd.h, include/SdText.h, include/SearchResultMessageArg.h, include/SgmlParser.h, include/ShortReferenceMap.h, include/StdioStorage.h, include/StorageManager.h, include/StringC.h, include/StringOf.cxx, include/StringOf.h, include/StringResource.h, include/SubstTable.cxx, include/SubstTable.h, include/Syntax.h, include/Text.h, include/TranslateCodingSystem.h, include/TypeId.h, include/URLStorage.h, include/UTF8CodingSystem.h, include/UnicodeCodingSystem.h, include/UnivCharsetDesc.h, include/Vector.cxx, include/Vector.h, include/Win32CodingSystem.h, include/WinApp.h, include/WinInetStorage.h, include/XMLCodingSystem.h, include/XcharMap.cxx, include/XcharMap.h, include/config.h, include/config.h.in, include/constant.h, include/dsssl_ns.h, include/macros.h, include/rtti.h, include/sptchar.h, include/types.h, include/xnew.h, jade/Makefile.sub, jade/SgmlFOTBuilder.cxx, spgrove/GroveBuilder.cxx, spgrove/Makefile.sub, style/DssslApp.cxx, style/DssslAppMessages.msg, style/DssslSpecEventHandler.cxx, style/DssslSpecEventHandler.h, style/Makefile.sub, style/MessageModule.cxx: Allow openjade to be built against the standalone, independent opensp (currently 1.5). Note two extract options to configure --spincludedir= --splibdir= These default to /usr/include/OpenSP and /usr/lib because that is where they are on my system. 2002-03-20 11:01 icastle * style/MessageModule.cxx: Tidy up jades use of the new opensp modular message functions. Add some .cvsignore entries for clarity 2002-03-13 12:21 icastle * NEWS, RELEASE, config/configure.in, jade/MifFOTBuilder.cxx, style/SchemeParser.cxx, style/jade_version.h, style/primitive.cxx, testsuite/Makefile, testsuite/expr-lang.dsl, testsuite/expr-lang.expected: Merge with old jade_1_3_branch. A couple of fixes to the MIF backend, some minor bug fixes and small updates to the testsuite. Called this openjade 1.3.2 2002-01-25 15:34 icastle * docsrc/releasenotes.xml: Minor corrections (SuSE build information + some typos) 2002-01-24 18:30 icastle * RELEASE, docsrc/Makefile, docsrc/releasenotes.xml: More final changes 2002-01-24 17:51 icastle * ChangeLog: Update Changelog for release 1.3.1 2002-01-24 17:48 icastle * RELEASE: file RELEASE was initially added on branch RELEASE-1_3. 2002-01-24 17:48 icastle * docsrc/jadetex.cfg: file jadetex.cfg was initially added on branch RELEASE-1_3. 2002-01-24 17:48 icastle * docsrc/logo.png: file logo.png was initially added on branch RELEASE-1_3. 2002-01-24 17:48 icastle * NEWS, RELEASE, docsrc/.cvsignore, docsrc/Makefile, docsrc/jadetex.cfg, docsrc/logo.png, docsrc/onsgmls.xml, docsrc/openjade.xml, docsrc/osgmlnorm.xml, docsrc/ospam.xml, docsrc/releasenotes.dsl, docsrc/releasenotes.xml: Final changes to release notes and other documentation. 2002-01-23 18:10 icastle * docsrc/: .cvsignore, releasenotes.xml: More work on the releasenotes 2002-01-23 07:37 icastle * docsrc/releasenotes.xml: More work on releasenotes 2002-01-22 18:23 icastle * ChangeLog, docsrc/onsgmls.xml, docsrc/openjade.xml, docsrc/osgmlnorm.xml, docsrc/ospam.xml, docsrc/ospent.xml, docsrc/osx.xml, docsrc/releasenotes.xml, style/jade_version.h: Save work-in-progress. Mainly working on the release notes. Set the version to 1.3.1 2002-01-22 11:57 icastle * Makefile.lib.in, Makefile.prog.in, configure, config/configure.in, include/config.h: Darwin/Mac OS X support Ref: Kogulé, Ryo Darwin / Mac OS X doesn't want "-fno-explicit-templates", SP_DEFINE_TEMPLATES must be set and SP_MANUAL_INST must not. libtool linking requires "-no-undefined". 2002-01-21 17:24 icastle * docsrc/releasenotes.dsl: file releasenotes.dsl was initially added on branch RELEASE-1_3. 2002-01-21 17:24 icastle * docsrc/: releasenotes.dsl, releasenotes.xml: Add skeleton for release notes 2002-01-21 17:24 icastle * docsrc/releasenotes.xml: file releasenotes.xml was initially added on branch RELEASE-1_3. 2002-01-21 17:06 icastle * Makefile.in: Add remaining man pages to the install-man target 2002-01-21 16:56 icastle * docsrc/: .cvsignore, Makefile, openjade.xml, osgmlnorm.xml, ospam.xml, ospent.xml: More updates to man pages. Should be finished now for 1.3.1 2002-01-19 09:40 icastle * configure: Make sure we have a valid configure in CVS. 2002-01-19 09:38 icastle * config/configure.in: AC_CONFIG_AUX_DIR was run to late for AM_INIT_AUTOMAKE 2002-01-19 09:16 icastle * config/missing: file missing was initially added on branch RELEASE-1_3. 2002-01-19 09:16 icastle * config/: install-sh, missing, mkinstalldirs: More autoconf/automake work Forgot to add install-sh, missing and mkinstalldirs on last commit 2002-01-19 09:16 icastle * config/mkinstalldirs: file mkinstalldirs was initially added on branch RELEASE-1_3. 2002-01-18 23:17 icastle * Makefile.comm.in, Makefile.in, Makefile.lib.in, config/aclocal.m4, config/configure.in, config/install.sh: More work on autoconf - introduce elements of automake Ref: Various bugs on source forge. The Makefiles/configure script was not as clever as it needed to be. Various people have reported a variety of problems (install directories not being created etc). Incorporate some automake elements into the script... which should make installation a bit more robust. Also added an "install-man" target to install the manpages. 2002-01-18 23:14 icastle * lib/UTF8CodingSystem.cxx: Accept Byte Order Marks as valid XML Ref: Source Forge #442560 (Terje Bless/Liam Quinn) Determination of Character Encoding of an XML file brought in line with Second Edition XML 1.0 Specification (REC-xml-20001006) - Byte Order Marks now accepted as valid XML. 2002-01-18 23:06 icastle * jade/TransformFOTBuilder.cxx: Fix missing white space problem in processing instruction flow object Ref: Source Forge Bug #505113 and patch #505124 (Markus Hoenicka) No white space was emitted between the public-id and the system-id causing a malformed xml file to be generated. This patch introduces a space between the elements 2002-01-18 22:51 icastle * docsrc/spent.1: file spent.1 was initially added on branch RELEASE-1_3. 2002-01-18 22:51 icastle * docsrc/jade.1: file jade.1 was initially added on branch RELEASE-1_3. 2002-01-18 22:51 icastle * docsrc/nsgmls.1: file nsgmls.1 was initially added on branch RELEASE-1_3. 2002-01-18 22:51 icastle * docsrc/spam.1: file spam.1 was initially added on branch RELEASE-1_3. 2002-01-18 22:51 icastle * docsrc/sgmlnorm.1: file sgmlnorm.1 was initially added on branch RELEASE-1_3. 2002-01-18 22:51 icastle * docsrc/: .cvsignore, jade.1, nsgmls.1, openjade.xml, ospent.xml, osx.xml, sgmlnorm.1, spam.1, spent.1, sx.1: More man page updates 2002-01-18 22:51 icastle * docsrc/ospent.xml: file ospent.xml was initially added on branch RELEASE-1_3. 2002-01-18 22:51 icastle * docsrc/sx.1: file sx.1 was initially added on branch RELEASE-1_3. 2002-01-17 18:40 icastle * ChangeLog, configure, style/jade_version.h: Prepare for openjade-1.3.1-pre4 2002-01-17 18:37 icastle * docsrc/: Makefile, openjade.xml: More man page updates 2002-01-17 16:51 icastle * config/aclocal.m4, config/configure.in, lib/parser_inst.m4: Include re-worked version of RedHat's size_t patch Ref: redhat openjade-1.3-21 Redhat's RPM contains a patch to provide a single #define to determine if size_t is the same as unsigned int. This patch was only applied if the build architecture was s390 or s390x. However, I can't really see how this patch has a bearing on the S/390. And the patch didn't actually work with any GNU C++ compiler from 2.8 up to an including 3.0. The idea is quite good though, so I've reworked the patch to make it work as it is supposed to. Anyway, this may or may not have a bearing on S/390 support. 2002-01-17 16:41 icastle * docsrc/onsgmls.xml: file onsgmls.xml was initially added on branch RELEASE-1_3. 2002-01-17 16:41 icastle * docsrc/Makefile: file Makefile was initially added on branch RELEASE-1_3. 2002-01-17 16:41 icastle * docsrc/.cvsignore: file .cvsignore was initially added on branch RELEASE-1_3. 2002-01-17 16:41 icastle * docsrc/osx.xml: file osx.xml was initially added on branch RELEASE-1_3. 2002-01-17 16:41 icastle * docsrc/ospam.xml: file ospam.xml was initially added on branch RELEASE-1_3. 2002-01-17 16:41 icastle * docsrc/openjade.xml: file openjade.xml was initially added on branch RELEASE-1_3. 2002-01-17 16:41 icastle * docsrc/osgmlnorm.xml: file osgmlnorm.xml was initially added on branch RELEASE-1_3. 2002-01-17 16:41 icastle * doc/onsgmls.xml, doc/osgmlnorm.xml, doc/ospam.xml, docsrc/.cvsignore, docsrc/Makefile, docsrc/onsgmls.xml, docsrc/openjade.xml, docsrc/osgmlnorm.xml, docsrc/ospam.xml, docsrc/osx.xml, jadedoc/openjade.xml: Move source of documentation to docsrc. Will place the published versions in doc, jadedoc, man or whatever at release/build time 2002-01-17 14:35 icastle * include/config.h, spgrove/threads.h: MacOS X patches (fink) 2002-01-17 13:52 icastle * Makefile, Makefile.comm, Makefile.lib, Makefile.prog: Remove files generated by ./configure 2002-01-17 13:45 icastle * Makefile, Makefile.comm, Makefile.comm.in, Makefile.in, Makefile.lib, Makefile.lib.in, Makefile.prog, Makefile.prog.in, configure, config/aclocal.m4, config/config.guess, config/config.sub, config/configure.in, config/ltconfig, config/ltmain.sh: Upgrade autoconf/libtool Ref: Update the autocof/libtool infrastructure. Use the latest config.sub/config/guess Use autoconf 2.52 and libtool 1.4.x Move the hack from configure to be a proper test for towupper in configure.in. Correct some complaints about smr_SWITCH being passed the wrong number of arguments (which is what DUMMY is all about). Create new aclocal.m4 and adjust various *.in files to use new style libtool (the one without ltconfig). 2002-01-17 13:36 icastle * doc/osgmlnorm.xml: file osgmlnorm.xml was initially added on branch RELEASE-1_3. 2002-01-17 13:36 icastle * doc/osgmlnorm.xml: Another man page 2002-01-17 12:12 icastle * testsuite/expr-lang.dsl: Make the stylesheet a valid one 2002-01-17 12:11 icastle * jadedoc/openjade.xml: Manual page for openjade(1) 2002-01-17 12:11 icastle * jadedoc/openjade.xml: file openjade.xml was initially added on branch RELEASE-1_3. 2002-01-17 12:09 icastle * dsssl/README.jadetex: file README.jadetex was initially added on branch RELEASE-1_3. 2002-01-17 12:09 icastle * dsssl/: ChangeLog, Makefile.jadetex, README.jadetex, demo.dsl, demo.sgm, jadetex.dtx, jadetex.ini, jadetex.ins, pdfjadetex.ini, unicode.sty: Make the demo actually work without errors Remove jadetex as it is now distributed seperately from openjade at http://jadetex.sourceforge.net 2002-01-16 17:39 icastle * doc/ospam.xml: file ospam.xml was initially added on branch RELEASE-1_3. 2002-01-16 17:39 icastle * doc/: onsgmls.xml, ospam.xml: More man pages 2002-01-16 13:26 icastle * doc/onsgmls.xml: file onsgmls.xml was initially added on branch RELEASE-1_3. 2002-01-16 13:26 icastle * doc/: nsgmls.xml, onsgmls.xml: Really, the command should be onsgmls because this is openjade. Renamed accordingly 2002-01-16 08:28 icastle * doc/nsgmls.xml: file nsgmls.xml was initially added on branch RELEASE-1_3. 2002-01-16 08:28 icastle * doc/: nsgmls.xml, openjade.1: Far better to mark up the man pages as XML/SGML. However, the best stylesheet for processing docbook refentries is an XLST one... It would be nice to have DSSSL version, of course. 2002-01-15 18:48 icastle * style/jade_version.h: Prepare for openjade-1.3.1-pre3 2002-01-15 18:36 icastle * configure, lib/CmdLineApp.cxx, lib/lib.dsp, style/DssslApp.cxx, style/Interpreter.cxx, style/LangObj.cxx, style/LangObj.h, style/primitive.cxx, style/style.dsp: Support for BSD (freeBSD 4.4) and MacOS X Ref: FreeBSD 4.4 patches + Fink patches This provides equivalent functionality to the freebsd 4.4 patch-aa and patch-ab patches. However, the standard BSD patches simply clobber the build environment - so if you use these, builds on other platforms break. The problem is that support for the POSIX locale in openjade requires two things: setlocale, and reasonable wchar support. FreeBSD 4.4 has setlocale support but is missing some wchar functions that are required. (towupper for example). The best solution would be to rework the POSIX locale support so that it will work with FreeBSD. However, I've made a simple hack: - Left the configure setlocale check in place - Added a new "wchar" check (which tests for towupper). This defines an additional build parameters SP_HAVE_WCHAR. This is simply applied with the same scope as SP_HAVE_SETLOCALE. This means that to get the locale support you must have an environment where both these are set. The result is that all environments that worked before will still work... I've directly edited configure rather than configure.in, but as it is already impossible to generate configure from configure.in I don't think this is too much of a problem. 2002-01-15 18:29 icastle * spgrove/GroveBuilder.cxx: Support for GCC version supplied with MacOS X Ref: fink project Tidy up C++ a bit for MacOS X builds 2002-01-15 18:28 icastle * spgrove/Makefile.sub, style/Makefile.sub: Support for old versions of libtool (1.3.x) Ref: FreeBSD 4.4 only has libtool 1.3 installed. Make sure this works as well as libtool 1.4 2002-01-15 15:31 icastle * doc/openjade.1: file openjade.1 was initially added on branch RELEASE-1_3. 2002-01-15 15:31 icastle * doc/openjade.1: First go at a manual page for openjade Info taken from the HTML 2002-01-15 13:26 icastle * ChangeLog: file ChangeLog was initially added on branch RELEASE-1_3. 2002-01-15 13:26 icastle * ChangeLog: Add a ChangeLog. People like ChangeLogs 2002-01-15 13:14 icastle * style/jade_version.h: Prepare for 1.3.1-pre2 2002-01-15 10:35 icastle * jade/TeXFOTBuilder.cxx: Red Hat bugzilla # 31525 Ref: https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=31525 Work around to a problem with "special" characters in table of contents This is not a real fix for the problem - but has been in use for a while. People have document collections which depend on this fix, so while it is not perfect, it is probably expedient to include it. 2002-01-14 16:30 icastle * doc/build.htm, jade/TeXFOTBuilder.cxx, lib/lib.dsp: Fixes for Win32 and Visual C++ 6.0 Ref: Clive George, LOOK Systems VC++ 6.0 and below does not support static const int x = value inside a class. Work around by using enum. Can't use precompiled header when header file is not included... Update the build instructions 2002-01-14 08:55 icastle * README: Update README Ref: James Clark probably doesn't want to know about bug reports anymore. 2002-01-14 08:54 icastle * Makefile.in: Allow "libdir" to be specified by configure Ref: SuSe Linux 7.3 2002-01-14 08:15 icastle * Makefile.in, Makefile.lib.in, Makefile.prog.in: Add DESTDIR to enable easier packaging Ref: SuSe Linux 7.3 Add DESTDIR (defaults to nothing so that existing build/packaging scripts are not affected) to Makefile. 2002-01-14 07:29 icastle * nsgmls/RastEventHandler.h, spgrove/GroveBuilder.cxx: GCC 3.1 support Ref: SuSe Linux 7.3 (Andreas Schwab) Suppress compiler complaints about inaccessible class "Messenger" 2002-01-13 11:36 icastle * config/configure.in: Support autoconf 2.52 Ref: SuSe Linux 7.3 RPM (Andreas Schwab) Allow newer versions of autoconf to work with configure.in 2002-01-12 09:13 icastle * configure: Clean up "configure" to remove spurious "command not found" error 2002-01-12 09:11 icastle * include/config.h: Support for GCC C++ 3.1 (new std namespace) 2002-01-11 16:41 icastle * style/jade_version.h: Make a 1.3.1-pre1 release for some wider testing 2002-01-11 15:55 icastle * dsssl/extensions.dsl, jade/TeXFOTBuilder.cxx: Add support for jadetex \TwoSideStartOnRight parameter Ref: sf.net/projects/openjade patch #439755 2002-01-11 15:51 icastle * jade/TeXFOTBuilder.cxx: Prevent tex output generating ligatures when it shouldn't Ref: Redhat bugs #11497, #11779 openjade-1.3-ligature.patch 2002-01-11 15:48 icastle * dsssl/extensions.dsl, jade/TeXFOTBuilder.cxx, jade/TeXFOTBuilder_inst.m4, style/ELObj.cxx, style/ELObj.h, style/InterpreterMessages.msg, style/ProcessContext.cxx, style/SosofoObj.h, style/primitive.cxx: Francis J. Lacoste's feature and bug fixes Ref: http://iNdev.iNsu.COM/openjade/openjade-1.3.patch - Better (time<=?) support This fixes bugs in the time string support of OpenJade. It makes it possible to compare time, date and datetime (not only datetime). Also partial format (like YY-MM-DD, YYYY-MM or HH:MM) are now supported. - Optimization of sosofo-append This fix optimizes sosofo-append to reduce its memory and stack usage when using it to build long list of sosofo : (let loop ( (res (empty-sosofo)) (nl (node-list-rest (children (current-node))))) (loop (sosofo-append res (process-node-list (node-list-first nl))) (node-list-rest nl))) - twoside optional characteristic JadeTeX turns on the twoside LaTeX feature by default. Those patches make it optional by using an extension characteristics. - Better table support These makes the support for tables in the TeX backend a lot better. o Support for nested tables. o cell-after-column-margin: and cell-before-column-margin: wasn't really working. o Row spanning was broken. This patch only supports 'start row alignment though. o Paragraphs in cell spanning multiple column are now working. o Support for the row-alignment: characteristic. o Support for cell-background? and background-color properties - Support for 'asis and 'asis-wrap This adds support for the 'asis and 'asis-wrap values for the paragraph's lines: characteristic. 2002-01-11 15:37 icastle * jade/MifFOTBuilder.cxx: Support for newer compiler versions ref: redhat openjade-foo.patch 2002-01-11 15:35 icastle * spgrove/Makefile.sub, style/Makefile.sub: Fix problems with newer libtool Ref: Redhat Bug #46212, openjade-1.3-lt.patch 2002-01-11 15:21 icastle * style/LangObj.cxx: Support for newer GCC libstdc++ ref: Redhat openjade-1.3-strdup.patch Connectiva openjade-1.3-ia64.patch Newer libstdc++ has strdup 2002-01-11 15:16 icastle * nsgmls/nsgmls.cxx, spgrove/GroveBuilder.cxx: Support for newer compilers. ref: redhat openjade-1.3-decl.patch 2002-01-11 14:28 icastle * style/jade_version.h: Make sure that CVS really does contain the source for openjade-1.3 It should now be possible to do cvs co -r RELEASE-1_3_0 and get the exact same source that is in the old openjade-1.3.tar.gz tarball 1999-11-11 21:48 clasen * config/install-sh: Remove generated and unneeded files. 1999-11-11 18:36 clasen * instmac.pl: Need the perl scripts here too. 1999-10-15 22:19 clasen * include/CharMap.cxx, lib/Attribute.cxx, lib/SOEntityCatalog.cxx, lib/WinApp.cxx, lib/XMLCodingSystem.cxx: Include the relevant patches from sp-1.3.4 (ignoring fixes to template instantiation with gcc-2.95 and an sx patch which we already had). 1999-10-15 22:01 clasen * NEWS, jade/TransformFOTBuilder.cxx, jade/TransformFOTBuilder.h, jade/jade.cxx, jadedoc/index.htm: Add the sgml-raw, xml-raw backends (patch by Brandon Ibach). 1999-10-15 21:44 clasen * spgrove/GroveBuilder.cxx: Fix a crash with empty CDATA attributes. 1999-10-07 08:19 clasen * grove/grove.dsp, lib/lib.dsp, spgrove/spgrove.dsp, style/style.dsp: Correct dll names. Untested. Windows hackers, test this!!! 1999-10-07 08:12 clasen * style/primitive.cxx: Apply the fix for duplicate property rcsname `tokens' already in main branch. 1999-10-06 09:59 pn * style/primitive.cxx: StringToList: Protect the list while it is built with a ELObjDynamicRoot. (important bug fix). 1999-09-29 08:34 clasen * style/style_inst.m4: Make manual inst work with gcc-2.95. 1999-09-10 12:58 clasen * jadedoc/index.htm: Document internal definitions as missing. 1999-09-09 16:28 clasen * jadedoc/: autoconf.htm, dsssl2.htm, index.htm, mif.htm, rtf.htm, tex.htm, transform.htm, xmlfo.htm: More doc improvements. 1999-09-08 07:13 pn * jadedoc/: contributors.htm, dsssl2.htm, index.htm, mif.htm, rtf.htm, tex.htm, transform.htm, xmlfo.htm: Merged fixes from main branch. 1999-09-07 22:51 clasen * jadedoc/index.htm: Lift some sections from the old docs. 1999-09-07 10:51 clasen * jadedoc/: contributors.htm, dsssl2.htm, index.htm, mif.htm, rtf.htm, tex.htm, transform.htm, xmlfo.htm, images/background.gif, images/dsssltitle.gif, images/space.gif, images/top-of-page.gif: More documentation fixes, images added. 1999-09-07 00:55 clasen * jadedoc/: contributors.htm, copying.txt, dsssl2.htm, index.htm, mif.htm, rtf.htm, tex.htm, transform.htm, xmlfo.htm: The new documentation, images still missing. 1999-09-01 20:38 clasen * style/sdata.h: fix sdata entity map for cyrillic-capital-letter-de. 1999-09-01 08:25 clasen * Makefile.lib.in, configure, config/configure.in, grove/Makefile.sub, lib/Makefile.sub, spgrove/Makefile.sub, style/Makefile.sub: Set library versions explicitly. All renamed libraries start out as 0:0:0. 1999-08-30 11:25 Avi * grove/Makefile.sub, jade/Makefile.sub, lib/Makefile.sub, nsgmls/Makefile.sub, sgmlnorm/Makefile.sub, spam/Makefile.sub, spent/Makefile.sub, spgrove/Makefile.sub, style/Makefile.sub, sx/Makefile.sub, grove/grove.dsp, groveoa/groveoa.dsp, jade/jade.dsp, lib/lib.dsp, nsgmls/nsgmls.dsp, sgmlnorm/sgmlnorm.dsp, spam/spam.dsp, spent/spent.dsp, spgrove/spgrove.dsp, style/style.dsp, sx/sx.dsp: Binaries renamed to avoid conflict with Jade package. 1999-08-29 22:15 clasen * config/install-sh: Apply a cleanup patch by Adam, rename install.sh to install-sh since the autoconf manual recommends it. 1999-08-24 16:59 pn * style/InterpreterMessages.msg: varCharPropertyExprUnsupported: New message. 1999-08-24 16:58 pn * style/Interpreter.cxx: (Interpreter::addCharProperty, Interpreter::setCharProperty): Avoid crashing when expression is non-constant. 1999-08-24 11:18 clasen * Makefile.prog.in, configure, config/configure.in: Support --program-prefix and friends in configure. 1999-08-23 10:14 Avi * jadedist/bin-files.txt: Added dsssl/extensions.dsl to the binary distribution. 1999-08-22 15:37 Avi * Makefile.comm, Makefile.comm.in: .msg implicit rule fix; old rule remains for non-gnu make. 1999-08-22 15:13 Avi * Makefile, Makefile.in: Inter-directory dependency fixes. 1999-08-21 19:25 Avi * contrib/: catalog, transform.dsl: SGML transformation procedures. 1999-08-21 16:52 Avi * style/jade_version.h: Version number: 1.3pre1 1999-08-21 13:22 Avi * Makefile, Makefile.in: Directory dependency fix. 1999-08-21 13:19 Avi * Makefile.comm: Removed dependency on m4. 1999-08-21 12:39 Avi * testsuite/expr-lang.dsl: Tests defined a little less painfully. 1999-08-21 12:27 Avi * testsuite/expr-lang.dsl: Line-terminator fix. 1999-08-21 12:26 Avi * testsuite/expr-lang.expected: Language-dependent char tests. 1999-08-21 12:09 Avi * testsuite/expr-lang.dsl: Language-dependent char tests. 1999-08-21 12:08 Avi * testsuite/Makefile: 'make clean' target 1999-08-20 21:36 Avi * testsuite/expr-lang.expected: Expression language expected test results. 1999-08-20 21:33 Avi * testsuite/: expr-lang.dsl, null.sgml: Copyright information. 1999-08-20 21:31 Avi * testsuite/Makefile: Testsuite driver. 1999-08-20 21:18 Avi * testsuite/expr-lang.dsl: Expression language tests. Currently tests only the char=? procedure, but ready for much more. 1999-08-20 21:17 Avi * testsuite/null.sgml: Null SGML instance. 1999-08-20 20:41 clasen * dsssl/builtins.dsl: Fix some bugs introduced by blindly typing in the definitions from the standard. 1999-08-20 20:10 clasen * style/: StyleEngine.h, Interpreter.h, StyleEngine.cxx: Parse cmdline definitions properly and allow -Vvariable1 -Vvariable2=value2 -V\(define\ variable3\ value3\) as equivalent to (define variable1 #t) (define variable2 "value2") (define variable3 value3) 1999-08-20 20:05 Avi * dsssl/builtins.dsl: Implemented char and string primitives. 1999-08-20 19:44 Avi * dsssl/builtins.dsl: (ancestors) infinite loop fixed. 1999-08-20 19:42 Avi * lib/entmgr_inst.m4: Corrected usage of config macros. 1999-08-20 11:49 Avi * contrib/rtf2doc.pl: Handle Word errors gracefully 1999-08-20 08:05 clasen * lib/: entmgr_inst.m4, parser_inst.m4: Replace gcc-2.95 specific fixes by more generic ones. 1999-08-19 23:54 Avi * contrib/: README, rtf2doc.pl: Script to convert .rtf files to .doc, embedding graphics in the process. 1999-08-19 22:55 Avi * contrib/README: A short description of what this directory is and what's in it. 1999-08-19 13:59 Avi * style/FlowObj.cxx: Fix for MSVC++. 1999-08-19 13:51 Avi * groveoa/GroveNode.cxx: Fix typo in ElementTypeNode implementation. 1999-08-18 21:48 pn * style/charProps.h: Interpreter::installCharProperties(): Add values for break-before-priority and break-after-priority character properties. 1999-08-17 19:53 clasen * lib/entmgr_inst.m4: OK, I'll stop committing now until I'm sure there are no more dupes. 1999-08-17 19:51 clasen * lib/entmgr_inst.m4: One more duplicate removed. 1999-08-17 19:41 clasen * jade/MifFOTBuilder_inst.m4, lib/entmgr_inst.m4: Remove duplicate instantiations. 1999-08-17 18:45 clasen * develdoc/missing: Doc updates. 1999-08-17 11:44 clasen * grove/Node.cxx, grove/Node.h, groveoa/CGroveBuilder.cxx, groveoa/CGroveBuilder.h, groveoa/GroveNode.cxx, groveoa/groveoa.idl, style/ELObjPropVal.h: Apply prlabs1 patch contained in JadeMIF-1.0h by Kathleen Marszalek. 1999-08-16 22:48 clasen * style/Expression.cxx: Implement force!. 1999-08-16 19:38 clasen * jade/MifFOTBuilder_inst.m4, lib/entmgr_inst.m4, lib/parser_inst.m4: Temp fixes for template initialization to allow compilation with gcc-2.95. 1999-08-16 19:16 clasen * style/FlowObj.cxx: Remove forgotten printf. 1999-08-16 01:00 clasen * style/InheritedC.cxx: Change PublicIdInheritedC to return a string, not a symbol. 1999-08-15 23:45 clasen * style/: FlowObj.cxx, Interpreter.h, SchemeParser.cxx, SchemeParser.h, primitive.h: Implement declare-char-characteristic+property. We do not actually support any nonstandard character NICs, they are just ignored (and are available as char properties). Move the nonstandard functionality of sgml-parse and expt to external procedures of the same name. Apply a patch by Peter Nilsson to fix several bugs in the SchemeParser part of the character properties implementation. 1999-08-15 22:31 clasen * dsssl/extensions.dsl: All extensions known to jade. 1999-08-14 12:43 clasen * style/primitive.h: Forgot to remove map and c..r from the header. 1999-08-13 21:38 clasen * dsssl/builtins.dsl: Replace the cxx map and c..r primitives by scheme equivalents. 1999-08-13 21:28 clasen * jade/TeXFOTBuilder.cxx: Emit all character NICs, emit script as string without prefix. Mainly for testing purposes. Since the character NICs are not used at all by the jadetex macros and blow up the size of the tex files, this should probably be changed before 1.3. 1999-08-13 21:26 clasen * style/: ProcessContext.cxx, FOTBuilder.h, FlowObj.cxx, Insn.cxx, SosofoObj.h, charProps.h, ELObjPropVal.h, Expression.cxx, FOTBuilder.cxx, Insn2.h: {Interpreter,SchemeParser}.{h,cxx},InterpreterMessages.msg,primitiv e.cxx, style_inst.m4: EL side of character properties. ProcessContext.cxx: process-children-trim uses input-whitespace?. charProps.h: New file, some standard character properties extracted from Unicode. SosofoObj.h,ProcessContext.cxx,Insn.cxx: Save current node in SetNonInheritedCsSosofoObj. FOTBuilder.{h,cxx},FlowObj.cxx,Insn2.h,Insn.cxx,Expression.cxx: Special inheritance for character NICs, using a new SetImplicitCharInsn. ELObjPropVal.h: New file, extracted from primitive.cxx. 1999-08-13 21:09 clasen * style/: Interpreter.h, SchemeParser.cxx, SchemeParser.h: The expression language part of character properties. 1999-08-12 14:54 clasen * style/SchemeParser.cxx: Check that a unit-name is not an exponent-marker. 1999-08-05 23:30 clasen * develdoc/missing: Doc updates. 1999-08-05 23:29 clasen * style/: Interpreter.h, SchemeParser.cxx, SchemeParser.h: Implement special-query-expressions. Note: the keywords are treated as syntactic keywords (the standard isn't explicit about this). 1999-08-04 21:01 clasen * style/StyleEngine.cxx: Fix parsing of declarations in multiple parts. 1999-08-04 20:57 clasen * style/: Style.h, Style.cxx: Correct subobject handling of color spaces. 1999-08-04 20:55 clasen * style/: Interpreter.h, SchemeParser.cxx: Fixes for default-language-declaration (Peter Nilsson ). Check for valid character-names and numbers when parsing standard-chars (test case: xyz$!% #d-5). Check for valid unit-name when parsing unit-declaration (test case: (define-unit xyz$!% 2m) ). Fix parsing of numbers with #d prefix and decimal dot (test case: #d6.0e+2m2). 1999-08-04 20:51 clasen * style/: ELObj.cxx, ELObj.h: Print methods for UnspecifiedObj and ErrorObj by Peter Nilsson . 1999-08-02 19:34 clasen * style/SchemeParser.cxx: Fix keyword and identifier parsing. Previously, some valid keywords were not accepted, eg ::, a: and :a:. 1999-08-02 19:33 clasen * dsssl/builtins.dsl: replace all occurrences of siblings by rsiblings. 1999-07-31 19:53 clasen * style/DssslApp.cxx: Applied patch to allow -Dvar=val for string values. 1999-07-23 22:00 Avi * style/jade_version.h: Version number indicates 1.3 development. 1999-07-23 21:57 Avi * include/Entity.h: Classes declared SP_API in order to survive MSVC (caused by builtins.dsl entity dereference) 1999-07-23 21:28 Avi * style/common_inst.m4: More uninstantiated templates 1999-07-23 20:49 Avi * style/common_inst.m4: Add uninstantiated templates 1999-07-23 19:56 Avi * build-win32.bat: Script to build Jade for Win32 1999-07-23 19:56 Avi * jade-generate.mak, sp-generate.mak: Removed dependencies on unix tools (m4, chmod, rm) 1999-07-23 19:10 Avi * jade/MifFOTBuilder.cxx, jade/RtfFOTBuilder.cxx, jade/SgmlFOTBuilder.cxx, jade/TeXFOTBuilder.cxx, style/FOTBuilder.cxx, style/FOTBuilder.h, style/FlowObj.cxx, style/ProcessContext.cxx, style/ProcessContext.h: simple-page-sequence headers and footers unserialized 1999-07-23 19:00 Avi * Makefile: Mif and HTML enabled by default 1999-07-23 18:55 Avi * dsssl/catalog: System id resolved for builtins.dsl 1999-07-23 18:36 clasen * Makefile, Makefile.comm, Makefile.lib, Makefile.prog: Restore original Makefiles. 1999-07-23 18:19 Avi * msggen.pl: Fix Perl -w warning 1999-07-23 18:15 clasen * Makefile, Makefile.comm, Makefile.lib, Makefile.prog, jade/TeXFOTBuilder.cxx: Cleanup to make it compile. Added enough dependencies for ./configure; make to work without intermediate make gen. 1999-07-23 16:50 clasen * VERSION, config/aclocal.m4, config/ltconfig, config/ltmain.sh, include/config.h, jade/TeXFOTBuilder.cxx, lib/CmdLineAppMessages.msg, spgrove/threads.h, style/DssslAppMessages.msg, style/jade_version.h: Just merged jade_1_2_2 to the main branch. 1999-07-22 23:00 clasen * develdoc/missing: List of missing pieces from DSSSL. 1999-07-22 22:58 clasen * style/: Interpreter.h, Style.cxx, Style.h: support for all standard color-spaces via conversion to device rgb. 1999-07-22 22:56 clasen * develdoc/jadedoc.sgml: Documentation of jade internals. 1999-07-19 22:45 clasen * Makefile.comm.in: Change rule for m4.cxx to use perl and remove check for m4 from configure. 1999-07-13 12:50 Avi * lib/instmac.pl: Replacement for instmac.m4 1999-07-13 12:47 Avi * lib/instmac.pl: file instmac.pl was initially added on branch jade_1_2_1_branch. 1999-07-11 20:11 clasen * style/FOTBuilder.cxx, style/FOTBuilder.h, jade/TeXFOTBuilder.cxx, style/InheritedC.cxx: inline-space-space is no longer ignored by FOTBuilder and TeXFOTBuilder. I haven't yet added support to jadetex. 1999-07-09 00:48 clasen * sx/XmlOutputEventHandler.cxx: merge the fix applied in the stable branch. 1999-07-08 21:52 clasen * style/SchemeParser.cxx: SchemeParser::parseMake(): ignore duplicate keywords in make expressions. 1999-07-08 01:00 clasen * dsssl/style-sheet.dtd: allow declarations before the first part. 1999-07-08 00:57 clasen * dsssl/jadetex.dtx: jadetex 2.7 again. The previous commit had this file truncated. 1999-07-08 00:45 clasen * include/config.h: add a default value for DEFAULT_SCHEME_BUILTINS. 1999-07-08 00:43 clasen * Makefile.comm.in: generate dependency information for libtool objects (.lo) as well. 1999-07-08 00:40 clasen * style/: Interpreter.h, SchemeParser.cxx, SchemeParser.h, StyleEngine.cxx: cleanup the declaration element stuff. The parsing is done by the SchemeParser, the Interpreter simply holds the resulting values. 1999-07-01 23:49 clasen * style/: Interpreter.h, LangObj.cxx, LangObj.h, ELObj.cxx, ELObj.h, EvalContext.h, SchemeParser.cxx, SchemeParser.h, primitive.h: language-dependent expression language procedures and external procedure "UNREGISTERED::OpenJade//Procedure::language" to create language objects by reference to a POSIX locale. 1999-07-01 23:44 clasen * dsssl/: catalog, style-sheet.dtd: add supported decl archforms to dtd, change pubid to "-//OpenJade//DTD DSSSL Style Sheet//EN", add catalog entry for new pubid, but leave old entry. 1999-06-30 01:34 clasen * dsssl/Makefile.jadetex, dsssl/jadetex.dtx, jade/TeXFOTBuilder.cxx, jade/TeXFOTBuilder_inst.m4: merge the TeX backend additions from the stable branch. 1999-06-30 01:20 clasen * dsssl/ChangeLog: forgotten file. 1999-06-30 01:19 clasen * dsssl/unicode.sty: PDF bookmarks support for TeX backend/jadetex from Sebastian, who gives credit for the patches to J.-M. Kubek (kubek@insa-tlse.fr). 1999-06-30 00:54 clasen * style/: DssslApp.cxx, DssslApp.h, Interpreter.h, SchemeParser.cxx, SchemeParser.h, StyleEngine.cxx, StyleEngine.h: char-repertoire, add-name-chars and add-separator-chars declaration element type forms, -s cmdline switch to make jade forget its builtin character repertoire. 1999-06-30 00:51 clasen * Makefile.comm.in, dsssl/builtins.dsl: fix default location for builtins.dsl (you can change that at runtime via a SYSTEM catalog entry); remove duplicate procedures from builtins.dsl. 1999-06-29 22:20 clasen * msggen.pl: prepare msggen.pl to create .po files for gettext. 1999-06-29 22:04 clasen * Makefile.in, dsssl/builtins.dsl, style/DssslApp.cxx, style/DssslApp.h, style/GroveManager.h, style/Interpreter.h: support for "scheme builtins" and a little fix for gettext detection. The following things are still to do for the "scheme builtins": the windows build process has to install builtins.dsl somewhere and define DEFAULT_SCHEME_BUILTINS accordingly; we have to decide which of the added expression language procedures should stay in cxx and which should be defined in scheme. 1999-06-26 21:47 clasen * style/charNames.h: "line-feed" and "carriage-return" predefined character names. 1999-06-26 21:44 clasen * style/: DssslSpecEventHandler.cxx, DssslSpecEventHandler.h, Interpreter.h, StyleEngine.cxx: standard-chars and map-sdata-entity declaration element type forms, "line-feed" and "carriage-return" predefined character names. 1999-06-23 00:17 clasen * style/primitive.h: Add a lot of expression language primitives, and map-constructor. 1999-05-02 16:46 Avi * FILES, jade.dsw, jade.mak, README, SP.dsw, SP.mak, all/all.dsp, doc/index.htm, grove/LocNode.cxx, grove/LocNode.h, include/CharMap.h, include/Event.h, include/InternalInputSource.h, include/Mode.h, include/OpenElement.h, include/OwnerTable.cxx, include/RangeMap.h, include/Text.h, jade/HtmlFOTBuilder.cxx, jade/TmpOutputByteStream.h, jadedist/files.txt, jadedist/jadedist.dsp, lib/ArcEngine.cxx, lib/CharsetRegistry.cxx, lib/Entity.cxx, lib/Location.cxx, lib/MessageTable.cxx, lib/parseDecl.cxx, lib/ParserState.cxx, lib/ParserState.h, lib/Recognizer.h, lib/Text.cxx, lib/Undo.h, lib/xentmgr_inst.m4, spgrove/SdNode.cxx, spgrove/SdNode.h, style/Collector.cxx, style/Collector.h, style/dsssl_ns.h, style/FlowObj_inst.m4, style/primitive_inst.m4, style/ProcessingMode.h: Jade 1.2.1 1999-05-02 16:44 Avi * Makefile.comm.in, Makefile.in, config/aclocal.m4, config/ltconfig, config/ltmain.sh, dsssl/Makefile.jadetex, dsssl/jadetex.dtx, jade/MifFOTBuilder.cxx, jade/MifFOTBuilder_inst.m4, jade/TeXFOTBuilder_inst.m4: Initial revision 1999-05-02 16:44 Avi * jade.mak, SP.mak, config/config.guess, config/config.sub, config/install.sh, dsssl/fot.dtd, dsssl/jadetex.ini, dsssl/jadetex.ins, dsssl/pdfjadetex.ini, include/InputSource.h, include/MessageTable.h, jade/MifFOTBuilder.h, jade/jade.rc, jade/MifMessages.msg, jade/TmpOutputByteStream.h, jadedist/files.txt, lib/ArcEngine.cxx, lib/MessageTable.cxx, lib/Mutex.h, lib/parseInstance.cxx, spam/CopyEventHandler.cxx: Jade 1.2 1999-05-02 16:40 Avi * COPYING, FILES, SP.mak, doc/catalog.htm, lib/CmdLineApp.cxx, lib/parseParam.cxx, lib/ParserMessages.msg, lib/Priority.h, pubtext/html.dtd, pubtext/html.soc, pubtext/HTML4.soc, style/ProcessingMode.cxx, style/ProcessingMode.h: Jade 1.1.1 1999-05-02 16:37 Avi * style/charNames.h, style/SchemeParser.cxx, style/SchemeParser.h, sx/XmlOutputEventHandler.cxx: Initial revision 1999-05-02 16:36 Avi * FILES, jade.mak, SP.mak, doc/archform.htm, doc/catalog.htm, doc/charset.htm, doc/generic.htm, doc/index.htm, doc/new.htm, doc/nsgmls.htm, doc/sx.htm, doc/xml.htm, dsssl/fot.dtd, include/Attribute.h, include/CharsetInfo.h, include/CmdLineApp.h, include/ContentState.h, include/Dtd.h, include/EntityDecl.h, include/ExternalId.h, include/Mode.h, include/OpenElement.h, include/ParserOptions.h, include/SOEntityCatalog.h, include/Sd.h, include/Syntax.h, include/XMLCodingSystem.h, jade/HtmlFOTBuilder.cxx, jadedist/files.txt, lib/ArcEngine.cxx, lib/ArcProcessor.h, lib/CharsetInfo.cxx, lib/CmdLineApp.cxx, lib/CodingSystemKit.cxx, lib/ContentState.cxx, lib/Dtd.cxx, lib/Entity.cxx, lib/EntityApp.cxx, lib/ExtendEntityManager.cxx, lib/ExternalId.cxx, lib/GenericEventHandler.cxx, lib/InputSource.cxx, lib/ModeInfo.cxx, lib/parseAttribute.cxx, lib/parseCommon.cxx, lib/parseDecl.cxx, lib/parseInstance.cxx, lib/parseMode.cxx, lib/parseParam.cxx, lib/Parser.cxx, lib/Parser.h, lib/ParserApp.cxx, lib/ParserMessages.msg, lib/ParserOptions.cxx, lib/ParserState.cxx, lib/ParserState.h, lib/parseSd.cxx, lib/Priority.h, lib/Sd.cxx, lib/Syntax.cxx, lib/token.h, lib/UTF8CodingSystem.cxx, pubtext/HTML4-f.dtd, pubtext/HTML4-s.dtd, pubtext/HTML4.dcl, pubtext/HTML4.dtd, pubtext/HTMLlat1.ent, pubtext/HTMLspec.ent, pubtext/HTMLsym.ent, pubtext/xml.dcl, spam/CopyEventHandler.cxx, spam/CopyEventHandler.h, style/Collector.cxx, style/Collector.h, style/Expression.h, style/Insn.h, style/MacroFlowObj.cxx, style/MacroFlowObj.h, style/NumberCache.cxx, style/Pattern.cxx, style/Pattern.h, style/ProcessingMode.cxx, style/ProcessingMode.h, style/primitive_inst.m4, style/VM.h, style/style_pch.h, sx/SxMessages.msg, sx/XmlOutputEventHandler.h, sx/XmlOutputMessages.msg, sx/sx.cxx, sx/sx.rc, sx/sx_inst.m4: Jade 1.1 1999-05-02 14:09 Avi * doc/archform.htm, doc/new.htm, lib/CatalogMessages.msg, lib/ParserMessages.msg, lib/parseSd.cxx, lib/UnicodeCodingSystem.cxx, lib/UnivCharsetDesc.cxx, pubtext/xml.dcl, spam/CopyEventHandler.cxx: Jade 1.0.1 1999-05-02 14:06 Avi * FILES, jade.mak, Makefile.wat, SP.mak, include/EntityCatalog.h, include/NotationStorage.h, include/Syntax.h, include/WinApp.h, jadedist/files.txt, lib/EntityApp.cxx, lib/EntityCatalog.cxx, lib/ExtendEntityManager.cxx, lib/NotationStorage.cxx, lib/Parser.h, lib/ParserMessages.msg, lib/ParserState.cxx, lib/parseSd.cxx, lib/splibpch.h, lib/Syntax.cxx, lib/URLStorage.cxx, style/style_pch.h: Jade 1.0 1999-05-02 14:03 Avi * jade.mak, Makefile.wat, SP.mak, doc/build.htm, include/Attribute.h, include/Boolean.h, include/OutputByteStream.h, include/SubstTable.cxx, jade/RtfOle.cxx, jade/TeXFOTBuilder.h, lib/CmdLineApp.cxx, lib/GenericEventHandler.cxx, lib/parseSd.cxx: Jade 0.9 1999-05-02 13:57 Avi * groveoa/CGroveBuilder.cxx, groveoa/CGroveBuilder.h, groveoa/GroveNode.cxx, groveoa/groveoa.idl, style/DssslApp.cxx, style/DssslApp.h, style/DssslAppMessages.msg, style/GroveManager.h, style/jade_version.h: Initial revision 1999-05-02 13:57 Avi * jade.mak, dsssl/fot.dtd, groveoa/GroveBuilder.rgs, groveoa/GroveNode.h, groveoa/StdAfx.cxx, groveoa/StdAfx.h, groveoa/groveoa.cxx, groveoa/groveoa.def, groveoa/groveoa.rc, groveoa/resource.h, jade/HtmlFOTBuilder.cxx, jade/HtmlFOTBuilder_inst.m4, jade/JadeMessages.msg, jade/RtfFOTBuilder_inst.m4, jade/RtfMessages.msg, jade/RtfOle.cxx, jade/RtfOle.h, jadedist/files.txt, lib/ParserMessages.msg, spgrove/GroveApp.cxx, spgrove/GroveApp.h, spgrove/GroveBuilder.h, spgrove/SdNode.cxx, spgrove/SdNode.h, spgrove/grove_inst.m4, style/Expression.h, style/GroveManager.cxx, style/Insn.h, style/NumberCache.cxx, style/ProcessingMode.cxx, style/ProcessingMode.h, style/VM.h, style/style_pch.h: Jade 0.8 1999-05-02 13:52 Avi * jade.mak, SP.mak: Jade 0.7 1999-05-02 13:51 Avi * FILES, jade.mak, Makefile.wat, SP.mak, doc/new.htm, doc/nsgmls.htm, doc/sgmlsout.htm, doc/spam.htm, dsssl/fot.dtd, grove/LocNode.cxx, grove/LocNode.h, include/Attribute.h, include/CmdLineApp.h, include/CodingSystem.h, include/ContentState.h, include/Dtd.h, include/ElementType.h, include/EntityCatalog.h, include/Event.h, include/ExtendEntityManager.h, include/Location.h, include/MessageFormatter.h, include/MessageReporter.h, include/OutputByteStream.h, include/OutputCharStream.h, include/ParserOptions.h, include/PointerTable.h, include/StringOf.cxx, include/Text.h, include/Vector.cxx, include/Vector.h, include/xnew.h, jade/HtmlFOTBuilder.cxx, jade/HtmlFOTBuilder.h, jade/HtmlFOTBuilder_inst.m4, jade/jade.rc, jade/RtfFOTBuilder.h, jade/RtfFOTBuilder_inst.m4, jade/TeXFOTBuilder.h, jade/TeXMessages.msg, jade/TransformFOTBuilder_inst.m4, jadedist/files.txt, lib/ArcEngine.cxx, lib/ArcProcessor.h, lib/Big5CodingSystem.cxx, lib/CmdLineApp.cxx, lib/CodingSystem.cxx, lib/CodingSystemKit.cxx, lib/ConsoleOutput.cxx, lib/ContentState.cxx, lib/Entity.cxx, lib/EntityCatalog.cxx, lib/EUCJPCodingSystem.cxx, lib/Event.cxx, lib/ExtendEntityManager.cxx, lib/Fixed2CodingSystem.cxx, lib/GenericEventHandler.cxx, lib/IdentityCodingSystem.cxx, lib/lib.rc, lib/Location.cxx, lib/MessageFormatter.cxx, lib/MessageFormatterMessages.msg, lib/MessageReporter.cxx, lib/MessageReporterMessages.msg, lib/Mutex.h, lib/OffsetOrderedList.cxx, lib/OffsetOrderedList.h, lib/OutputByteStream.cxx, lib/OutputCharStream.cxx, lib/parseAttribute.cxx, lib/parseCommon.cxx, lib/parseDecl.cxx, lib/parseInstance.cxx, lib/parseParam.cxx, lib/Parser.cxx, lib/Parser.h, lib/ParserApp.cxx, lib/ParserEventGeneratorKit.cxx, lib/ParserMessages.msg, lib/ParserOptions.cxx, lib/ParserState.cxx, lib/ParserState.h, lib/SJISCodingSystem.cxx, lib/parseSd.cxx, lib/StorageObjectPosition.h, lib/Text.cxx, lib/TranslateCodingSystem.cxx, lib/splibpch.h, lib/UTF8CodingSystem.cxx, lib/UnicodeCodingSystem.cxx, lib/Win32CodingSystem.cxx, nsgmls/NsgmlsMessages.msg, nsgmls/RastEventHandler.cxx, nsgmls/SgmlsEventHandler.cxx, nsgmls/SgmlsEventHandler.h, nsgmls/nsgmls.cxx, pubtext/xml.dcl, pubtext/xml.soc, spam/CopyEventHandler.cxx, spam/spam.cxx, spent/spent.cxx, spgrove/GroveApp.cxx, spgrove/GroveBuilder.h, spgrove/grove_inst.m4, style/FlowObj_inst.m4, style/Insn.h, style/ProcessingMode.h, style/primitive_inst.m4, style/VM.h: Jade 0.6 1999-05-02 13:50 Avi * Makefile, Makefile.comm, Makefile.lib, Makefile.prog, VERSION, msggen.pl, sp-generate.mak, include/Entity.h, include/config.h, lib/CmdLineAppMessages.msg, lib/entmgr_inst.m4, lib/parser_inst.m4: Initial revision 1999-05-02 13:50 Avi * COPYING, FILES, jade.mak, Makefile.lib.CC, Makefile.lib.sun, Makefile.wat, README, SP.mak, japan.sgmldecl, sunfix.sh, all/README, doc/Makefile, doc/archform.htm, doc/build.htm, doc/catalog, doc/catalog.htm, doc/charset.htm, doc/features.htm, doc/generic.htm, doc/ideas.htm, doc/index.htm, doc/new.htm, doc/nsgmls.htm, doc/sgmldecl.htm, doc/sgmlnorm.htm, doc/sgmlsout.htm, doc/spam.htm, doc/spent.htm, doc/sysdecl.htm, doc/sysid.htm, dsssl/dsssl.dtd, dsssl/fot.dtd, generic/EventGenerator.h, generic/ParserEventGeneratorKit.h, generic/SGMLApplication.h, include/Allocator.h, include/ArcEngine.h, include/Attribute.h, include/Attributed.h, include/Big5CodingSystem.h, include/Boolean.h, include/CharMap.h, include/CharsetDecl.h, include/CharsetInfo.h, include/CharsetRegistry.h, include/CmdLineApp.h, include/CodingSystem.h, include/CodingSystemKit.h, include/ConsoleOutput.h, include/ContentState.h, include/ContentToken.h, include/CopyOwner.cxx, include/CopyOwner.h, include/DescriptorManager.h, include/Dtd.h, include/EUCJPCodingSystem.h, include/ElementType.h, include/EntityApp.h, include/EntityCatalog.h, include/EntityDecl.h, include/EntityManager.h, include/ErrnoMessageArg.h, include/ErrorCountEventHandler.h, include/Event.h, include/EventsWanted.h, include/ExtendEntityManager.h, include/ExternalId.h, include/Fixed2CodingSystem.h, include/GenericEventHandler.h, include/Hash.h, include/HashTable.cxx, include/HashTable.h, include/HashTableItemBase.cxx, include/HashTableItemBase.h, include/IList.h, include/IListBase.h, include/IListIter.h, include/IListIterBase.h, include/IQueue.cxx, include/IQueue.h, include/ISet.cxx, include/ISet.h, include/ISetIter.h, include/IdentityCodingSystem.h, include/InputSource.h, include/InternalInputSource.h, include/Link.h, include/LinkProcess.h, include/constant.h, include/List.cxx, include/List.h, include/ListIter.h, include/LiteralStorage.h, include/Location.h, include/Lpd.h, include/Markup.h, include/Message.h, include/MessageArg.h, include/MessageBuilder.h, include/MessageEventHandler.h, include/MessageReporter.h, include/MessageTable.h, include/Mode.h, include/NCVector.h, include/NCVector.sed, include/Named.h, include/NamedResource.h, include/NamedResourceTable.h, include/NamedTable.h, include/Notation.h, include/OpenElement.h, include/Options.cxx, include/Options.h, include/OutputCharStream.h, include/Owner.cxx, include/Owner.h, include/OwnerTable.cxx, include/OwnerTable.h, include/ParserApp.h, include/ParserOptions.h, include/PointerTable.cxx, include/PointerTable.h, include/PosixStorage.h, include/Ptr.cxx, include/Ptr.h, include/RangeMap.cxx, include/RangeMap.h, include/Resource.h, include/RewindStorageObject.h, include/SJISCodingSystem.h, include/SOEntityCatalog.h, include/Sd.h, include/SdText.h, include/SearchResultMessageArg.h, include/SgmlParser.h, include/ShortReferenceMap.h, include/StdioStorage.h, include/StorageManager.h, include/StringC.h, include/StringOf.cxx, include/StringOf.h, include/StringResource.h, include/SubstTable.cxx, include/SubstTable.h, include/Syntax.h, include/Text.h, include/TranslateCodingSystem.h, include/TypeId.h, include/URLStorage.h, include/UTF8CodingSystem.h, include/UnicodeCodingSystem.h, include/UnivCharsetDesc.h, include/Vector.cxx, include/Vector.h, include/Win32CodingSystem.h, include/WinInetStorage.h, include/XcharMap.cxx, include/macros.h, include/rtti.h, include/sptchar.h, include/types.h, include/XcharMap.h, include/xnew.h, jade/HtmlFOTBuilder.cxx, jade/HtmlFOTBuilder.h, jade/jade.rc, jade/RtfFOTBuilder.h, jade/RtfMessages.msg, jadedist/files.txt, jadedist/makedist.bat, lib/Allocator.cxx, lib/ArcEngine.cxx, lib/ArcEngineMessages.msg, lib/ArcProcessor.h, lib/Big5CodingSystem.cxx, lib/CatalogEntry.h, lib/CatalogMessages.msg, lib/CharsetDecl.cxx, lib/CharsetInfo.cxx, lib/CharsetRegistry.cxx, lib/CmdLineApp.cxx, lib/CodingSystem.cxx, lib/CodingSystemKit.cxx, lib/ConsoleOutput.cxx, lib/ContentState.cxx, lib/ContentToken.cxx, lib/DescriptorManager.cxx, lib/Dtd.cxx, lib/EUCJPCodingSystem.cxx, lib/ElementType.cxx, lib/Entity.cxx, lib/EntityApp.cxx, lib/EntityCatalog.cxx, lib/EntityDecl.cxx, lib/EntityManager.cxx, lib/EntityManagerMessages.msg, lib/EquivClass.h, lib/ErrnoMessageArg.cxx, lib/ErrorCountEventHandler.cxx, lib/Event.cxx, lib/EventGenerator.cxx, lib/EventQueue.h, lib/ExtendEntityManager.cxx, lib/ExternalId.cxx, lib/Fixed2CodingSystem.cxx, lib/GenericEventHandler.cxx, lib/Group.cxx, lib/Group.h, lib/app_inst.m4, lib/arc_inst.m4, lib/assert.cxx, lib/big5.h, lib/events.h, lib/gb2312.h, lib/Hash.cxx, lib/IListBase.cxx, lib/Id.cxx, lib/Id.h, lib/IdentityCodingSystem.cxx, lib/InputSource.cxx, lib/InternalInputSource.cxx, lib/Link.cxx, lib/LinkProcess.cxx, lib/LiteralStorage.cxx, lib/Location.cxx, lib/Lpd.cxx, lib/LpdEntityRef.h, lib/Markup.cxx, lib/MarkupScan.h, lib/Message.cxx, lib/MessageArg.cxx, lib/MessageEventHandler.cxx, lib/MessageReporter.cxx, lib/MessageReporterMessages.msg, lib/MessageTable.cxx, lib/ModeInfo.cxx, lib/ModeInfo.h, lib/NameToken.h, lib/Notation.cxx, lib/NumericCharRefOrigin.cxx, lib/NumericCharRefOrigin.h, lib/OffsetOrderedList.cxx, lib/OffsetOrderedList.h, lib/OpenElement.cxx, lib/OutputCharStream.cxx, lib/OutputState.cxx, lib/OutputState.h, lib/Param.cxx, lib/Param.h, lib/Parser.cxx, lib/Parser.h, lib/ParserApp.cxx, lib/ParserAppMessages.msg, lib/ParserEventGeneratorKit.cxx, lib/ParserMessages.msg, lib/ParserOptions.cxx, lib/ParserState.cxx, lib/ParserState.h, lib/iso646-jis.h, lib/iso8859-2.h, lib/iso8859-3.h, lib/iso8859-4.h, lib/iso8859-5.h, lib/iso8859-6.h, lib/iso8859-7.h, lib/iso8859-8.h, lib/iso8859-9.h, lib/jis0201.h, lib/jis0208.h, lib/jis0212.h, lib/ksc5601.h, lib/lib.rc, lib/memmove.c, lib/mkversion.pl, lib/parseAttribute.cxx, lib/parseCommon.cxx, lib/parseDecl.cxx, lib/parseInstance.cxx, lib/parseMode.cxx, lib/parseParam.cxx, lib/Partition.cxx, lib/Partition.h, lib/PosixStorage.cxx, lib/PosixStorageMessages.msg, lib/Priority.h, lib/Recognizer.cxx, lib/Recognizer.h, lib/RewindStorageObject.cxx, lib/SGMLApplication.cxx, lib/SJISCodingSystem.cxx, lib/Sd.cxx, lib/SdFormalError.h, lib/SdText.cxx, lib/SearchResultMessageArg.cxx, lib/SgmlParser.cxx, lib/ShortReferenceMap.cxx, lib/SrInfo.h, lib/StdioStorage.cxx, lib/StdioStorageMessages.msg, lib/StorageManager.cxx, lib/StorageObjectPosition.h, lib/StringVectorMessageArg.cxx, lib/StringVectorMessageArg.h, lib/Syntax.cxx, lib/Text.cxx, lib/TokenMessageArg.cxx, lib/TokenMessageArg.h, lib/TranslateCodingSystem.cxx, lib/Trie.h, lib/TrieBuilder.cxx, lib/TrieBuilder.h, lib/TypeId.cxx, lib/Undo.cxx, lib/Undo.h, lib/parseSd.cxx, lib/splib.cxx, lib/splib.h, lib/splibpch.h, lib/strerror.c, lib/token.h, lib/URLStorage.cxx, lib/URLStorageMessages.msg, lib/UTF8CodingSystem.cxx, lib/UnicodeCodingSystem.cxx, lib/UnivCharsetDesc.cxx, lib/Win32CodingSystem.cxx, lib/WinInetStorage.cxx, lib/WinInetStorageMessages.msg, lib/xentmgr_inst.m4, nsgmls/NsgmlsMessages.msg, nsgmls/RastEventHandler.cxx, nsgmls/RastEventHandler.h, nsgmls/RastEventHandlerMessages.msg, nsgmls/SgmlsEventHandler.cxx, nsgmls/SgmlsEventHandler.h, nsgmls/StringSet.cxx, nsgmls/StringSet.h, nsgmls/nsgmls.cxx, nsgmls/nsgmls.rc, nsgmls/nsgmls_inst.m4, pubtext/HTML32.dcl, pubtext/HTML32.dtd, pubtext/HTML32.soc, pubtext/ISOlat1.ent, pubtext/ISOlat1.sgm, pubtext/html-1.dtd, pubtext/html-1s.dtd, pubtext/html-s.dtd, pubtext/html.dcl, pubtext/html.dtd, pubtext/html.soc, sgmlnorm/SGMLGenerator.cxx, sgmlnorm/SGMLGenerator.h, sgmlnorm/sgmlnorm.cxx, spam/CopyEventHandler.cxx, spam/CopyEventHandler.h, spam/MarkupEventHandler.cxx, spam/MarkupEventHandler.h, spam/SpamMessages.msg, spam/spam.cxx, spam/spam.rc, spam/spam_inst.m4, spent/spent.cxx, spgrove/GroveApp.cxx, spgrove/GroveApp.h, style/Collector.cxx, style/FlowObj_inst.m4, unicode/catalog, unicode/demo.sgm, unicode/gensyntax.pl, unicode/unicode.sd, unicode/unicode.syn: Jade 0.5 1999-05-02 13:49 Avi * jade.mak, style/Collector.h: Jade 0.4 1999-05-02 13:48 Avi * jade.mak: Jade 0.3 1999-05-02 13:40 Avi * jade.mak: Jade 0.2 1999-05-02 13:39 Avi * jade-generate.mak, dsssl/catalog, dsssl/style-sheet.dtd, grove/Node.cxx, grove/Node.h, jade/RtfFOTBuilder.cxx, jade/SgmlFOTBuilder.cxx, jade/TeXFOTBuilder.cxx, spgrove/threads.h, style/DssslSpecEventHandler.cxx, style/DssslSpecEventHandler.h, style/ELObj.cxx, style/ELObj.h, style/common_inst.m4, style/EvalContext.h, style/Expression.cxx, style/FOTBuilder.cxx, style/FOTBuilder.h, style/FlowObj.cxx, style/InheritedC.cxx, style/Insn.cxx, style/Insn2.h, style/Interpreter.h, style/ProcessContext.cxx, style/ProcessContext.h, style/SosofoObj.h, style/Style.cxx, style/Style.h, style/StyleEngine.cxx, style/StyleEngine.h, style/primitive.h: Initial revision 1999-05-02 13:39 Avi * jade.mak, dsssl/demo.dsl, dsssl/demo.sgm, dsssl/dsssl.dtd, jade/HtmlFOTBuilder.cxx, jade/HtmlFOTBuilder.h, jade/HtmlFOTBuilder_inst.m4, jade/HtmlMessages.msg, jade/JadeMessages.msg, jade/RtfFOTBuilder.h, jade/RtfFOTBuilder_inst.m4, jade/SgmlFOTBuilder.h, jade/TeXFOTBuilder.h, jade/jade.rc, jadedist/files.txt, spgrove/GroveApp.cxx, spgrove/GroveApp.h, spgrove/GroveBuilder.h, spgrove/grove_inst.m4, style/Collector.cxx, style/Collector.h, style/dsssl_ns.h, style/ELObjMessageArg.cxx, style/ELObjMessageArg.h, style/Expression.h, style/FlowObj_inst.m4, style/Insn.h, style/NumberCache.cxx, style/NumberCache.h, style/ProcessingMode.cxx, style/ProcessingMode.h, style/VM.h, style/style_pch.h, style/stylelib.cxx, style/stylelib.h: Jade 0.1 openjade-1.3.2/COPYING0100664000076400007640000000240306713070767012464 0ustar ianianCopyright (c) 1994, 1995, 1996, 1997, 1998 James Clark Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL JAMES CLARK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of James Clark shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from James Clark. openjade-1.3.2/Makefile.in0100664000076400007640000001045207572430554013477 0ustar ianian# # Makefile.in - Makefile template for Jade # # $Id: Makefile.in,v 1.4.4.7 2002/12/01 15:57:32 icastle Exp $ # # Copyright (C) 1998 Cees A. de Groot # # Original SP Makefile.in Copyright (C) 1996 Henry S. Thompson # Original SP Makefile Copyright (c) 1994, 1995, 1996 James Clark SHELL=@SHELL@ top_builddir=@TOP@ TOP=@TOP@ prefix=@prefix@ exec_prefix=@exec_prefix@ srcdir=@srcdir@ bindir=@bindir@ datadir=@datadir@ libdir=@libdir@ mandir=@mandir@ includedir=@includedir@ oldincludedir=/usr/include spincludedir=@SPINCLUDEDIR@ splibdir=@SPLIBDIR@ DESTDIR= LIBTOOL=@LIBTOOL@ LIBTOOL_DEPS=@LIBTOOL_DEPS@ INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) INSTALL_DATA = @INSTALL_DATA@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ transform = @program_transform_name@ mkinstalldirs = $(SHELL) $(TOP)/config/mkinstalldirs man1dir=$(mandir)/man1 man_MANS = openjade.1 MANS = $(man_MANS) SP_LIBDIRS=$(splibdir) $(XLIBDIRS) LIBDIRS=grove spgrove style PROGDIRS=jade dodirs=$(LIBDIRS) $(PROGDIRS) # Automatic template instantiation can cause compilers to generate # various extra files; the clean target won't delete these. TARGETS=all install depend gen clean pure do=all $(TARGETS): FORCE @$(MAKE) -f Makefile do=$@ $(dodirs) @if test $@ = 'install'; then \ $(LIBTOOL) --finish $(DESTDIR)$(libdir); \ mkdir -p $(DESTDIR)$(datadir); \ cp -f dsssl/builtins.dsl $(DESTDIR)$(datadir); \ fi; $(LIBDIRS): FORCE @if test $(srcdir) = .; \ then srcdir=.; \ else srcdir=`cd $(srcdir); pwd`/$@; \ fi; \ test -d $@ || mkdir $@; \ cd $@; \ test -f $$srcdir/Makefile.dep || touch $$srcdir/Makefile.dep; \ test -f $$srcdir/Makefile.lt || \ $(MAKE) srcdir=$$srcdir VPATH=$$srcdir \ -f $$srcdir/../Makefile.comm -f $$srcdir/Makefile.sub \ -f $$srcdir/../Makefile.lib -f $$srcdir/Makefile.dep \ Makefile.lt; \ $(MAKE) srcdir=$$srcdir VPATH=$$srcdir \ -f $$srcdir/../Makefile.comm -f $$srcdir/Makefile.sub \ -f $$srcdir/Makefile.lt -f $$srcdir/../Makefile.lib \ -f $$srcdir/Makefile.dep $(do) $(PROGDIRS): FORCE @if test $(srcdir) = .; \ then srcdir=.; \ else srcdir=`cd $(srcdir); pwd`/$@; \ fi; \ test -d $@ || mkdir $@; \ cd $@; \ test -f $$srcdir/Makefile.dep || touch $$srcdir/Makefile.dep; \ test -f $$srcdir/Makefile.lt || \ $(MAKE) srcdir=$$srcdir VPATH=$$srcdir \ -f $$srcdir/../Makefile.comm -f $$srcdir/Makefile.sub \ -f $$srcdir/../Makefile.prog -f $$srcdir/Makefile.dep \ Makefile.lt; \ $(MAKE) srcdir=$$srcdir VPATH=$$srcdir \ -f $$srcdir/../Makefile.comm -f $$srcdir/Makefile.sub \ -f $$srcdir/Makefile.lt -f $$srcdir/../Makefile.prog \ -f $$srcdir/Makefile.dep $(do) $(PROGDIRS): $(SP_LIBDIRS) jade: grove spgrove style spgrove: grove style: grove spgrove # GNU tar TAR=tar distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) dist: FORCE cd test; ./CLEAN version=`cat VERSION`; \ rm -fr sp-$$version; \ mkdir sp-$$version; \ cd sp-$$version; \ ln -s ../* .; \ rm sp-$$version; \ rm SP.mak ; \ sed -e '/^ CD /s/[A-Z]:\\.*\\//' -e "s/$$/`echo @ | tr @ \\\\015`/" \ ../SP.mak >SP.mak; \ cd ..; \ ln -s `pwd` sp-$$version; \ $(TAR) -c -f sp-$$version.tar.gz -h -z \ --exclude sp-$$version/test/cap \ --exclude sp-$$version/test/out \ --exclude sp-$$version/test/err \ `sed -e "s|.*|sp-$$version/&|" FILES`; \ rm -fr sp-$$version mrproper: -rm -f Makefile Makefile.comm Makefile.lib Makefile.prog \ config.cache config.log config.status -test -f Makefile.dist && mv Makefile.dist Makefile -test -f Makefile.comm.dist && mv Makefile.comm.dist Makefile.comm -test -f Makefile.prog.dist && mv Makefile.prog.dist Makefile.prog -test -f Makefile.lib.dist && mv Makefile.lib.dist Makefile.lib FORCE: libtool: $(LIBTOOL_DEPS) $(SHELL) ./config.status --recheck install-man: $(mkinstalldirs) $(DESTDIR)$(man1dir) @list='$(man1_MANS)'; \ l2='$(man_MANS)'; for i in $$l2; do \ case "$$i" in \ *.1*) list="$$list $$i" ;; \ esac; \ done; \ for i in $$list; do \ if test -f $(TOP)/docsrc/$$i; then file=$(TOP)/docsrc/$$i; \ else file=$$i; fi; \ ext=`echo $$i | sed -e 's/^.*\\.//'`; \ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ inst=`echo $$inst | sed '$(transform)'`.$$ext; \ echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst"; \ $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst; \ done openjade-1.3.2/FILES0100664000076400007640000002223406713071514012211 0ustar ianianCOPYING FILES Makefile Makefile.comm Makefile.lib Makefile.lib.CC Makefile.lib.sun Makefile.prog Makefile.wat README SP.dsw SP.mak VERSION all/README doc/Makefile doc/archform.htm doc/build.htm doc/catalog doc/catalog.htm doc/charset.htm doc/features.htm doc/generic.htm doc/ideas.htm doc/index.htm doc/new.htm doc/nsgmls.htm doc/sgmldecl.htm doc/sgmlnorm.htm doc/sgmlsout.htm doc/spam.htm doc/spent.htm doc/sx.htm doc/sysdecl.htm doc/sysid.htm doc/xml.htm generic/EventGenerator.h generic/ParserEventGeneratorKit.h generic/SGMLApplication.h pubtext/ISOlat1.ent pubtext/ISOlat1.sgm pubtext/html.soc pubtext/html-1.dtd pubtext/html-1s.dtd pubtext/html-s.dtd pubtext/html.dcl pubtext/html.dtd pubtext/HTML32.dcl pubtext/HTML32.dtd pubtext/HTML32.soc pubtext/HTML4.dcl pubtext/HTML4-s.dtd pubtext/HTML4.dtd pubtext/HTML4.soc pubtext/HTML4-f.dtd pubtext/HTMLlat1.ent pubtext/HTMLspec.ent pubtext/HTMLsym.ent pubtext/xml.dcl pubtext/xml.soc include/Allocator.h include/ArcEngine.h include/Attribute.h include/Attributed.h include/Big5CodingSystem.h include/Boolean.h include/CharMap.cxx include/CharMap.h include/CharsetDecl.h include/CharsetInfo.h include/CharsetRegistry.h include/CmdLineApp.h include/CodingSystem.h include/CodingSystemKit.h include/ConsoleOutput.h include/ContentState.h include/ContentToken.h include/CopyOwner.cxx include/CopyOwner.h include/DescriptorManager.h include/Dtd.h include/EUCJPCodingSystem.h include/ElementType.h include/Entity.h include/EntityApp.h include/EntityCatalog.h include/EntityDecl.h include/EntityManager.h include/ErrnoMessageArg.h include/ErrorCountEventHandler.h include/Event.h include/EventsWanted.h include/ExtendEntityManager.h include/ExternalId.h include/Fixed2CodingSystem.h include/GenericEventHandler.h include/Hash.h include/HashTable.cxx include/HashTable.h include/HashTableItemBase.cxx include/HashTableItemBase.h include/IList.h include/IListBase.h include/IListIter.h include/IListIterBase.h include/IQueue.cxx include/IQueue.h include/ISet.cxx include/ISet.h include/ISetIter.h include/IdentityCodingSystem.h include/InputSource.h include/InternalInputSource.h include/Link.h include/LinkProcess.h include/List.cxx include/List.h include/ListIter.h include/LiteralStorage.h include/Location.h include/Lpd.h include/Markup.h include/Message.h include/MessageArg.h include/MessageBuilder.h include/MessageEventHandler.h include/MessageFormatter.h include/MessageReporter.h include/MessageTable.h include/Mode.h include/NCVector.h include/NCVector.sed include/Named.h include/NamedResource.h include/NamedResourceTable.h include/NamedTable.h include/Notation.h include/NotationStorage.h include/OpenElement.h include/Options.cxx include/Options.h include/OutputByteStream.h include/OutputCharStream.h include/Owner.cxx include/Owner.h include/OwnerTable.cxx include/OwnerTable.h include/ParserApp.h include/ParserOptions.h include/PointerTable.cxx include/PointerTable.h include/PosixStorage.h include/Ptr.cxx include/Ptr.h include/RangeMap.cxx include/RangeMap.h include/Resource.h include/RewindStorageObject.h include/SJISCodingSystem.h include/SOEntityCatalog.h include/Sd.h include/SdText.h include/SearchResultMessageArg.h include/SgmlParser.h include/ShortReferenceMap.h include/StdioStorage.h include/StorageManager.h include/StringC.h include/StringOf.cxx include/StringOf.h include/StringResource.h include/SubstTable.cxx include/SubstTable.h include/Syntax.h include/Text.h include/TranslateCodingSystem.h include/TypeId.h include/URLStorage.h include/UTF8CodingSystem.h include/UnicodeCodingSystem.h include/UnivCharsetDesc.h include/Vector.cxx include/Vector.h include/Win32CodingSystem.h include/WinApp.h include/WinInetStorage.h include/XMLCodingSystem.h include/XcharMap.cxx include/XcharMap.h include/config.h include/constant.h include/macros.h include/rtti.h include/sptchar.h include/types.h include/xnew.h japan.sgmldecl lib/Allocator.cxx lib/ArcEngine.cxx lib/ArcEngineMessages.h lib/ArcEngineMessages.msg lib/ArcEngineMessages.rc lib/ArcProcessor.h lib/Attribute.cxx lib/Big5CodingSystem.cxx lib/CatalogEntry.h lib/CatalogMessages.msg lib/CatalogMessages.rc lib/CatalogMessages.h lib/CharsetDecl.cxx lib/CharsetInfo.cxx lib/CharsetRegistry.cxx lib/CmdLineApp.cxx lib/CmdLineAppMessages.h lib/CmdLineAppMessages.msg lib/CmdLineAppMessages.rc lib/CodingSystem.cxx lib/CodingSystemKit.cxx lib/ConsoleOutput.cxx lib/ContentState.cxx lib/ContentToken.cxx lib/DescriptorManager.cxx lib/Dtd.cxx lib/EUCJPCodingSystem.cxx lib/ElementType.cxx lib/Entity.cxx lib/EntityApp.cxx lib/EntityCatalog.cxx lib/EntityDecl.cxx lib/EntityManager.cxx lib/EntityManagerMessages.msg lib/EntityManagerMessages.rc lib/EntityManagerMessages.h lib/EquivClass.h lib/ErrnoMessageArg.cxx lib/ErrorCountEventHandler.cxx lib/Event.cxx lib/EventGenerator.cxx lib/EventQueue.h lib/ExtendEntityManager.cxx lib/ExternalId.cxx lib/Fixed2CodingSystem.cxx lib/GenericEventHandler.cxx lib/Group.cxx lib/Group.h lib/Hash.cxx lib/IListBase.cxx lib/Id.cxx lib/Id.h lib/IdentityCodingSystem.cxx lib/InputSource.cxx lib/InternalInputSource.cxx lib/Link.cxx lib/LinkProcess.cxx lib/LiteralStorage.cxx lib/Location.cxx lib/Lpd.cxx lib/LpdEntityRef.h lib/Makefile.sub lib/Markup.cxx lib/MarkupScan.h lib/Message.cxx lib/MessageArg.cxx lib/MessageEventHandler.cxx lib/MessageFormatter.cxx lib/MessageFormatterMessages.h lib/MessageFormatterMessages.msg lib/MessageFormatterMessages.rc lib/MessageReporter.cxx lib/MessageReporterMessages.h lib/MessageReporterMessages.msg lib/MessageReporterMessages.rc lib/MessageTable.cxx lib/ModeInfo.cxx lib/ModeInfo.h lib/Mutex.h lib/NameToken.h lib/Notation.cxx lib/NotationStorage.cxx lib/NumericCharRefOrigin.cxx lib/NumericCharRefOrigin.h lib/OffsetOrderedList.cxx lib/OffsetOrderedList.h lib/OpenElement.cxx lib/OutputByteStream.cxx lib/OutputCharStream.cxx lib/OutputState.cxx lib/OutputState.h lib/Param.cxx lib/Param.h lib/Parser.cxx lib/Parser.h lib/ParserApp.cxx lib/ParserAppMessages.h lib/ParserAppMessages.msg lib/ParserAppMessages.rc lib/ParserEventGeneratorKit.cxx lib/ParserMessages.cxx lib/ParserMessages.msg lib/ParserMessages.rc lib/ParserMessages.h lib/ParserOptions.cxx lib/ParserState.cxx lib/ParserState.h lib/Partition.cxx lib/Partition.h lib/PosixStorage.cxx lib/PosixStorageMessages.msg lib/PosixStorageMessages.rc lib/PosixStorageMessages.h lib/Priority.h lib/Recognizer.cxx lib/Recognizer.h lib/RewindStorageObject.cxx lib/SJISCodingSystem.cxx lib/SOEntityCatalog.cxx lib/Sd.cxx lib/SdFormalError.h lib/SdText.cxx lib/SearchResultMessageArg.cxx lib/SgmlParser.cxx lib/SGMLApplication.cxx lib/ShortReferenceMap.cxx lib/SrInfo.h lib/StdioStorage.cxx lib/StdioStorageMessages.msg lib/StdioStorageMessages.rc lib/StdioStorageMessages.h lib/StorageManager.cxx lib/StorageObjectPosition.h lib/StringVectorMessageArg.cxx lib/StringVectorMessageArg.h lib/Syntax.cxx lib/Text.cxx lib/TokenMessageArg.cxx lib/TokenMessageArg.h lib/TranslateCodingSystem.cxx lib/Trie.h lib/TrieBuilder.cxx lib/TrieBuilder.h lib/TypeId.cxx lib/URLStorage.cxx lib/URLStorageMessages.msg lib/URLStorageMessages.rc lib/URLStorageMessages.h lib/UTF8CodingSystem.cxx lib/Undo.cxx lib/Undo.h lib/UnicodeCodingSystem.cxx lib/UnivCharsetDesc.cxx lib/Win32CodingSystem.cxx lib/WinApp.cxx lib/WinInetStorage.cxx lib/WinInetStorageMessages.msg lib/WinInetStorageMessages.rc lib/WinInetStorageMessages.h lib/XMLCodingSystem.cxx lib/app_inst.cxx lib/app_inst.m4 lib/arc_inst.cxx lib/arc_inst.m4 lib/assert.cxx lib/big5.h lib/entmgr_inst.cxx lib/entmgr_inst.m4 lib/events.h lib/instmac.m4 lib/gb2312.h lib/iso646-jis.h lib/iso8859-2.h lib/iso8859-3.h lib/iso8859-4.h lib/iso8859-5.h lib/iso8859-6.h lib/iso8859-7.h lib/iso8859-8.h lib/iso8859-9.h lib/jis0201.h lib/jis0208.h lib/jis0212.h lib/ksc5601.h lib/lib.dsp lib/lib.rc lib/memmove.c lib/mkversion.pl lib/parseAttribute.cxx lib/parseCommon.cxx lib/parseDecl.cxx lib/parseInstance.cxx lib/parseMode.cxx lib/parseParam.cxx lib/parseSd.cxx lib/parser_inst.cxx lib/parser_inst.m4 lib/splib.cxx lib/splib.h lib/splibpch.h lib/strerror.c lib/token.h lib/version.h lib/xentmgr_inst.cxx lib/xentmgr_inst.m4 msggen.pl nsgmls/Makefile.sub nsgmls/NsgmlsMessages.h nsgmls/NsgmlsMessages.msg nsgmls/NsgmlsMessages.rc nsgmls/RastEventHandler.cxx nsgmls/RastEventHandler.h nsgmls/RastEventHandlerMessages.h nsgmls/RastEventHandlerMessages.msg nsgmls/RastEventHandlerMessages.rc nsgmls/SgmlsEventHandler.cxx nsgmls/SgmlsEventHandler.h nsgmls/StringSet.cxx nsgmls/StringSet.h nsgmls/nsgmls.cxx nsgmls/nsgmls.dsp nsgmls/nsgmls.rc nsgmls/nsgmls_inst.cxx nsgmls/nsgmls_inst.m4 sgmlnorm/Makefile.sub sgmlnorm/SGMLGenerator.cxx sgmlnorm/SGMLGenerator.h sgmlnorm/sgmlnorm.cxx sgmlnorm/sgmlnorm.dsp spam/CopyEventHandler.cxx spam/CopyEventHandler.h spam/MarkupEventHandler.cxx spam/MarkupEventHandler.h spam/SpamMessages.h spam/SpamMessages.msg spam/SpamMessages.rc spam/Makefile.sub spam/spam.cxx spam/spam.dsp spam/spam.rc spam/spam_inst.cxx spam/spam_inst.m4 spent/Makefile.sub spent/spent.cxx spent/spent.dsp sp-generate.mak sunfix.sh sx/Makefile.sub sx/SxMessages.h sx/SxMessages.msg sx/SxMessages.rc sx/XmlOutputEventHandler.cxx sx/XmlOutputEventHandler.h sx/XmlOutputMessages.h sx/XmlOutputMessages.msg sx/XmlOutputMessages.rc sx/sx.cxx sx/sx.dsp sx/sx.rc sx/sx_inst.cxx sx/sx_inst.m4 unicode/catalog unicode/demo.sgm unicode/gensyntax.pl unicode/unicode.sd unicode/unicode.syn openjade-1.3.2/all/0040775000076400007640000000000007572430604012177 5ustar ianianopenjade-1.3.2/all/README0100664000076400007640000000016706713045031013050 0ustar ianianThis file exists only to ensure that the all directory exists. This directory is used in the Visual C++ build process. openjade-1.3.2/all/all.dsp0100664000076400007640000000466406713071550013463 0ustar ianian# Microsoft Developer Studio Project File - Name="all" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) External Target" 0x0106 CFG=all - Win32 Release !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "all.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "all.mak" CFG="all - Win32 Release" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "all - Win32 Release" (based on "Win32 (x86) External Target") !MESSAGE "all - Win32 Debug" (based on "Win32 (x86) External Target") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" !IF "$(CFG)" == "all - Win32 Release" # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir ".\Release" # PROP BASE Intermediate_Dir ".\Release" # PROP BASE Cmd_Line "NMAKE /f all.mak" # PROP BASE Rebuild_Opt "/a" # PROP BASE Target_File "all\all.exe" # PROP BASE Bsc_Name "all\all.bsc" # PROP BASE Target_Dir "." # PROP Use_Debug_Libraries 0 # PROP Output_Dir ".\Release" # PROP Intermediate_Dir ".\Release" # PROP Cmd_Line "" # PROP Rebuild_Opt "" # PROP Target_File "all" # PROP Bsc_Name "" # PROP Target_Dir "." !ELSEIF "$(CFG)" == "all - Win32 Debug" # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir ".\Debug" # PROP BASE Intermediate_Dir ".\Debug" # PROP BASE Cmd_Line "NMAKE /f all.mak" # PROP BASE Rebuild_Opt "/a" # PROP BASE Target_File "all\all.exe" # PROP BASE Bsc_Name "all\all.bsc" # PROP BASE Target_Dir "." # PROP Use_Debug_Libraries 1 # PROP Output_Dir ".\Debug" # PROP Intermediate_Dir ".\Debug" # PROP Cmd_Line "" # PROP Rebuild_Opt "" # PROP Target_File "all" # PROP Bsc_Name "" # PROP Target_Dir "." !ENDIF # Begin Target # Name "all - Win32 Release" # Name "all - Win32 Debug" !IF "$(CFG)" == "all - Win32 Release" !ELSEIF "$(CFG)" == "all - Win32 Debug" !ENDIF # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;for;f90" # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe" # End Group # End Target # End Project openjade-1.3.2/doc/0040775000076400007640000000000007572430612012173 5ustar ianianopenjade-1.3.2/doc/Makefile0100664000076400007640000000051406713045031013621 0ustar ianianNSGMLS=nsgmls DOCS=archform.htm \ build.htm \ catalog.htm \ charset.htm \ features.htm \ generic.htm \ ideas.htm \ index.htm \ new.htm \ nsgmls.htm \ sgmldecl.htm \ sgmlnorm.htm \ sgmlsout.htm \ spam.htm \ spent.htm \ sysdecl.htm \ sysid.htm validate: $(DOCS) $(NSGMLS) -sB $(DOCS) touch validate openjade-1.3.2/doc/archform.htm0100664000076400007640000003326706713070376014521 0ustar ianian Architectural Form Processing

Architectural Form Processing

The Hytime standard (ISO/IEC 10744) introduced the concept of architectural forms. This document assumes you are already familiar with this concept. HyTime 2nd Edition generalizes this, and makes it possible to have an architecture engine which can perform architectural form processing for arbitrary architectures. SP includes such an architecture engine.

Non-markup sensitive applications built using SP now support architectural form processing using the -A archname option. When this option is specified, the document will be validated against all declared base architectures, and the output will be for the architectural document for that architecture: the element types, notations and attributes will be those defined in the meta-DTD.

Although spam does not support the -A option because it works with the markup of your document, sgmlnorm does.

Architectural Support Attributes

To use the -A option with a document, you must add

  • an architecture base declaration for archname,
  • a notation declaration and associated attribute definition list declaration for archname; this is called the architecture notation declaration.

An architecture base declaration is a processing instruction of the form:

<?IS10744 ArcBase archname>

The processing instruction is recognized either in the DTD or in an active LPD.

The architecture notation declaration and associated attribute definition list declaration serve to declare a number of architectural support attributes which control the architecture engine. The value for each architecture support attribute is taken from the default value, if any, specified for that attribute in the attribute definition list declaration. It is an error to declare an architecture support attribute as #REQUIRED.

The following architectural support attributes are recognized:

ArcDTD
The name of an external entity that contains the meta-DTD. This attribute is required. If the name starts with the PERO delimiter %, the entity is a parameter entity, otherwise it is a general entity.
ArcQuant
A list of tokens that looks like what follows QUANTITY SGMLREF in the quantity set section of an SGML declaration. The quantities used for parsing the meta-DTD and validating the architectural document will be the maximum of the quantities in the document's concrete syntax and the quantities specified here.
ArcDocF
The name of the document element type in the meta-DTD. This would be HyDoc for HyTime. This defaults to archname.
ArcFormA
The name of the attribute that elements use to specify the corresponding element type, if any, in the meta-DTD. Data entities also use this attribute to specify the corresponding notation in the meta-DTD. This would be HyTime for HyTime. This defaults to archname.
ArcNamrA
The name of the attribute that elements use to specify substitutes for the names of attributes in the meta-DTD. A value of #DEFAULT is allowed for a substitute name; this inhibits mapping of an attribute to an architectural attribute, but specifies that the value of the architectural attribute should be defaulted rather than taken from the value of another attribute in the document. For HyTime the value of this attribute would be HyNames. By default no attribute name substitutition is done.
ArcSuprA
The name of an attribute that elements may use to suppress processing of their descendants. This attribute is not recognized for data entities. The value of the attribute must be one of the following tokens:
sArcAll
Completely suppress all architectural processing of descendants. It is not possible to restore architectural processing for a descendant.
sArcForm
Suppress processing of the ArcFormA attribute of all descendants of this element, except for those elements that have a non-implied ArcSuprA attribute.
sArcNone
Don't suppress architectural processing for the descendants of this element.

The value may also be implied, in which case the state of architectural processing is inherited.

If an element has an ArcSuprA attribute that was processed, its ArcFormA attribute will always be processed. Otherwise its ArcFormA attribute will be processed unless its closest ancestor that has a non-implied value for the ArcSuprA attribute suppressed processing of the ArcFormA attribute. An element whose ArcFormA attribute is processed will not be treated as architectural if it has an implied value for the ArcFormA attribute.

ArcSuprF
The name of the element type in the meta-DTD that suppresses architectural processing in the same manner as does the sHyTime form in HyTime. By default, no element type does. This behaves like an element with an ArcSuprA attribute of sArcForm. The element type should be declared in the meta-DTD. You should not specify a value for this attribute if you specified a value for the ArcSuprA attribute.

This is a non-standardized extension.

ArcIgnDA
The name of an attribute that elements may use to control whether data is ignored. The value of the attribute must be one of the following values:
nArcIgnD
Data is not ignored. It is an error if data occurs where not allowed by the meta-DTD.
cArcIgnD
Data is conditionally ignored. Data will be ignored only when it occurs where the meta-DTD does not allow it.
ArcIgnD
Data is always ignored.

The value may also be implied, in which case the state of architectural processing is inherited. If no the document element has no value specified, cArcIgnD will be used.

ArcBridF
The name of a default element type declared in a meta-DTD, to which elements in the document should be automatically mapped if they have an ID and would not otherwise be considered architectural. This would be HyBrid for HyTime. If your meta-DTD declares IDREF attributes, it will usually be appropriate to specify a value for ArcBridF, and to declare an ID attribute for that form in your meta-DTD.
ArcDataF
The name of a default notation declared in the meta-DTD, to which the external data entities in the document should be automatically mapped if they would not otherwise be considered architectural. If this attribute is defined, then general entities will be automatically architectural: any external data entity whose notation cannot otherwise be mapped into a notation in the meta-DTD will be automatically treated as an instance of the ArcDataF notation. This would be data for HyTime. If your meta-DTD declares entity attributes, it will usually be appropriate to specify a value for ArcDataF even if your meta-DTD declares no data attributes for the notation.
ArcAuto
This must have one of the following values:
ArcAuto
If an element does not have an ArcFormA attribute and the meta-DTD defines an element type with the same name as the element's type, the element will be automatically treated as being an instance of the meta-type. This rule does not apply to the document element type; this is automatically treated as being an instance of the meta-DTD's document element type. Note that this automatic mapping is prevented if the element has an ArcFormA attribute with an implied value. It is also prevented if processing of the ArcFormA attribute is suppressed. This applies equally to the notations of external data entities. The default element or notation specified with the ArcBridF or ArcDfltN attribute is only considered after the mapping specified by ArcAuto.
nArcAuto
Automatic mapping is not performed.

The default value is ArcAuto.

ArcOptSA
A list of names of architectural support attributes, each of which is interpreted as a list of parameter entities to be defined with a replacement text of INCLUDE when parsing the meta-DTD. The default value is ArcOpt.

Meta-DTDs

A meta-DTD is allowed to use the following extensions:

  • a single element type or notation is allowed to be an associated element type or associated notation name for multiple attribute definition lists.
  • #ALL can be used as an associated element type or associated notation name in an attribute definition list to define attributes for all element types or notations in the meta-DTD

Before any of these extensions can be used, the meta-DTD must include a declaration

<!AFDR "ISO/IEC 10744:1997">

This declaration should only be included if the extensions are used.

In all other respects a meta-DTD must be a valid SGML DTD.

A declared value of ENTITY for an attribute in a meta-DTD means that the value of the attribute must be an entity declared in the (non-meta) DTD that is architectural. An external data entity is architectural only if its notation can be mapped into a notation in the meta-DTD. All other kinds of data entities and subdoc entities are automatically architectural.

An IDREF attribute in the meta-document must have a corresponding ID in the meta-document. An attribute with a declared value of ID in the document will be automatically mapped to an attribute with a declared value of ID in the meta-DTD.

A declared value of NOTATION in the meta-DTD means that the value of the attribute must have one the values specified in the name group and that it must be a notation in the meta-DTD. (Perhaps if the attribute also has a declared value of NOTATION in the non-meta-DTD, the value should be mapped in a similar way to the notation of an external data entity.)

Differences from HyTime

There are a number of differences from how architectural processing is defined in the pre-Corringendum version of the HyTime standard.

  • The ArcNamrA and ArcFormA attributes are not part of the meta-DTD. Rather they are used by the architecture engine in deriving the meta-document that is validated against the meta-DTD.
  • The use: conventional comment is not recognized. Instead a single element type is allowed to be an associated element type for multiple attribute definition lists.
  • The notation and data attributes of an external data entity are treated just like the element type and attributes of an element. The notation of an external data entity is mapped into a notation in the meta-DTD and the data attributes of the entity are mapped onto attributes defined for the meta-DTD notation.
  • #FIXED has the same meaning in a meta-DTD that it does in a regular DTD: the value of the attribute must be the same as the default value of the attribute specified in the meta-DTD.

Specifying architectural processing with an LPD

Link attributes defined by an implicit link process are treated in the same way as non-link attributes. The only complication is that SGML allows link attributes to have the same name as non-link attributes. If there is a link attribute and a non-link attribute with the same name, the architecture engine will only look at the link attribute, even if the value of the link attribute is implied. The only exception is the ArcNamrA attribute: the architecture engine will use both the link attribute and the non-link attribute, but the substitute names in the value of the non-link attribute cannot refer to link attribute names.

The -A archname option automatically activates any link type archname.

The architecture notation declaration and associated attribute definition list declaration are allowed in the LPD. Although the productions of ISO 8879 do not allow a notation declaration in a link type declaration subset, it is clearly the intent of the standard that they be allowed. You can use a -wlpd-notation option to disallow them.

Derived architectures

A meta-DTD can have one or more base architectures in the same way as a normal DTD. Multiple -A options can be used to exploit this. For example,

-A arch1 -A arch2

will perform architectural processing on the source document to produce an architectural document conforming to the architecture arch1 declared in the source document, and will then perform architectural processing on this architectural document to produce an architectural document conforming to the arch2 architecture declared in arch1's meta-DTD.

A document that is validated against a meta-DTD will automatically be validated against any base architectures of that meta-DTD.

Unimplemented features

The following features from the AFDR specification in HyTime 2nd edition are not yet implemented:

  • use of #MAPTOKEN in the architectural attribute renamer.

James Clark
jjc@jclark.com
openjade-1.3.2/doc/build.htm0100664000076400007640000000766307420603701014006 0ustar ianian Building SP

Building SP

You will need a C++ compiler with good template support to build this. Support for exceptions is not required.

In most cases you should be able to port to a new compiler just by editing include/config.h.

Unix

To build on Unix, edit the Makefile, and do a make. You can also build in a different directory. This requires GNU make or another make that implements VPATH. Copy or link the top-level Makefile to the build directory, change srcdir in the Makefile to point to the original directory, and do a make in the build directory.

make install installs the programs.

You can use the following compilers:

gcc
gcc 2.7.2 works (gcc 2.7.0 won't work at least on the sparc). You will also an iostream library (eg as provided by libg++ 2.7). This distribution builds on Solaris 2.3 and on Linux 1.2. I expect it will build on SunOS 4 as well with little difficulty.

With gcc 2.6.3/SunOS 4, you'll need to compile with -Dsig_atomic_t=int, and, if you want to compile with -DSP_HAVE_SOCKET, you'll need to make netdb.h and arpa/inet.h C++ compatible.

Sun C++
To compile with Sun C++ 4.0.1, run first sunfix.sh. Also in the top-level Makefile, change set libMakefile to Makefile.lib.sun. This makes the library build use the -xar option.

Nelson Beebe has ported SP to a variety of other Unix systems and has produced some notes about his experiences.

DOS/Windows

You must use a compiler that generates 32-bit code.

The following compilers have been tested:

Visual C++ 4.2
Open SP.mak as a Makefile in the Developer Studio and build whatever you want. Don't use Batch Build or Rebuild All: these rebuild the library repeatedly. You can build all the targets in a particular configuration by building the all target. The sp-generate.mak makefile can be used to make all the .cxx and .h files that are automatically generated. (These are included in the distribution, so you don't need to do this unless you want to modify SP.)

To create a new program, make a new project in the SP project workspace using the Build>Subprojects command, and include lib and maybe generic as subprojects. You may also want to add your project as a subproject to all. Then, in Build>Settings under the C/C++ tab in the Preprocessor category, copy the Preprocessor definitions and Additional include directories entries from the nsgmls subproject. In the Code Generation category make sure you've selected the same run-time library as that used by the corresponding configuration of lib.

Visual C++ 5.0
Use SP.mak as with Visual C++ 4.2. Visual C++ 5.0 has a bug which will cause it to crash when converting the makefile. To work around this, rename the lib directory to x, say, before converting the makefile and then, after conversion but before building, rename it back to lib. Then proceed as with Visual C++ 4.2.

You should be aware that Visual C++ 5.0 also has some optimization bugs. There are workarounds for those I've discovered, but it would be safer to use Visual C++ 4.2.

Visual C++ 6.0
Use jade.dsw. Build debug with all.dsp, release with jadedist.dsp.

The style library needs cleaning between builds, but rebuild all takes care of this.

OpenJade 1.3.1 has only been built with VC++ 6.0 SP3.

Remember you need perl installed on your system - www.activestate.com.

Watcom C++ 11.0
Use Makefile.wat.

You must compile on a platform that supports long filenames.

James Clark
jjc@jclark.com
openjade-1.3.2/doc/catalog0100664000076400007640000000003406713045031013513 0ustar ianianCATALOG ../pubtext/html.soc openjade-1.3.2/doc/catalog.htm0100664000076400007640000001510506713071017014312 0ustar ianian SP - Catalogs

Catalogs

The entity manager generates a system identifier for every external entity using catalog entry files in the format defined by SGML Open Technical Resolution TR9401:1997. The entity manager will give an error if it is unable to generate a system identifier for an external entity. Normally if the external identifier for an entity includes a system identifier then the entity manager will use that as the effective system identifier for the entity; this behaviour can be changed using OVERRIDE or SYSTEM entries in a catalog entry file.

A catalog entry file contains a sequence of entries in one of the following forms:

PUBLIC pubid sysid
This specifies that sysid should be used as the effective system identifier if the public identifier is pubid. Sysid is a system identifier as defined in ISO 8879 and pubid is a public identifier as defined in ISO 8879.
ENTITY name sysid
This specifies that sysid should be used as the effective system identifier if the entity is a general entity whose name is name.
ENTITY %name sysid
This specifies that sysid should be used as the effective system identifier if the entity is a parameter entity whose name is name. Note that there is no space between the % and the name.
DOCTYPE name sysid
This specifies that sysid should be used as the effective system identifier if the entity is an entity declared in a document type declaration whose document type name is name.
LINKTYPE name sysid
This specifies that sysid should be used as the effective system identifier if the entity is an entity declared in a link type declaration whose link type name is name.
NOTATION name sysid
This specifies that sysid should be used as the effective system identifier for a notation whose name is name. This is relevant only with the -n option.
OVERRIDE bool
bool may be YES or NO. This sets the overriding mode for entries up to the next occurrence of OVERRIDE or the end of the catalog entry file. At the beginning of a catalog entry file the overriding mode will be NO. A PUBLIC, ENTITY, DOCTYPE, LINKTYPE or NOTATION entry with an overriding mode of YES will be used whether or not the external identifier has an explicit system identifier; those with an overriding mode of NO will be ignored if external identifier has an explicit system identifier.
SYSTEM sysid1 sysid2
This specifies that sysid2 should be used as the effective system identifier if the system identifier specified in the external identifier was sysid1. sysid2 should always be quoted to ensure that it is not misinterpreted when parsed by a system that does not support this extension.
SGMLDECL sysid
This specifies that if the document does not contain an SGML declaration, the SGML declaration in sysid should be implied.
DOCUMENT sysid
This specifies that the document entity is sysid. This entry is used only with the -C option.
CATALOG sysid
This specifies that sysid is the system identifier of an additional catalog entry file to be read after this one. Multiple CATALOG entries are allowed and will be read in order.
BASE sysid
This specifies that relative storage object identifiers in system identifiers in the catalog entry file following this entry should be resolved using first storage object identifier in sysid as the base, instead of the storage object identifiers of the storage objects comprising the catalog entry file. Note that the sysid must exist.
DELEGATE pubid-prefix sysid
This specifies that entities with a public identifier that has pubid-prefix as a prefix should be resolved using a catalog whose system identfier is sysid. For more details, see A Proposal for Delegating SGML Open Catalogs.

The delimiters can be omitted from the sysid provided it does not contain any white space. Comments are allowed between parameters delimited by -- as in SGML.

The entity manager will look for catalog entry files as follows:

  1. a file called catalog in the same directory as the document entity, unless the environment variable SP_USE_DOCUMENT_CATALOG has the value NO or 0;
  2. any catalog entry files specified using the -c option;
  3. a list of files specified by the environment variable SGML_CATALOG_FILES; the list is separated by colons under Unix and by semi-colons under MS-DOS and Windows; if this environment variable is not set, then a system dependent list of catalog entry files will be used.

In fact catalog entry files are not restricted to being files: the name of a catalog entry file is interpreted as a system identifier.

A match in one catalog entry file will take precedence over any match in a later catalog entry file. A more specific matching entry in one catalog entry file will take priority over a less specific matching entry in the same catalog entry file. For this purpose, the order of specificity is (most specific first):

  • SYSTEM entries;
  • PUBLIC entries;
  • DELEGATE entries ordered by the length of the prefix, longest first;
  • ENTITY, DOCTYPE, LINKTYPE and NOTATION entries.

James Clark
jjc@jclark.com
openjade-1.3.2/doc/charset.htm0100664000076400007640000002176606713070377014353 0ustar ianian SP - Character sets

Handling of character sets in SP

The following description applies only to the multi-byte version of SP. In the single-byte version of SP, each character is represented both internally and in storage objects by a single byte equal to the number of the character in the document character set.

SP's entity manager converts the bytes comprising a storage object into a sequence of characters. This conversion is determined by the encoding associated with the storage object.

An encoding may be specified using the name of a mapping from sequences of characters to sequences of bytes.

An encoding can also be specified relative to the document character set. This kind of an encoding maps a sequence of characters in the repertoire of the document character set into a sequence of bytes by

  1. mapping each character to its bit combination in the document character set, and then
  2. applying a transformation that maps sequences of bit combinations to sequences of bytes.

The transformation applied in the second step is called a bit combination transformation format (BCTF). A document character set relative encoding is specified by giving the name of a BCTF.

An application receives characters from SP represented as non-negative integers. The mapping from characters to integers is determined by SP's internal character set. SP can operate in a mode in which the internal character set is the same as the document character set. (Versions of SP up to 1.1.1 always operated in this mode.) The multibyte version of SP can also operate in a mode in which the internal character set does not vary with the document character set, but is always a fixed character set, known as the system character set; this mode of operation is called fixed character set mode.

Environment

SP's character set handling is controlled by the following environment variables:

SP_CHARSET_FIXED
If this variable is 1 or YES, then SP will operate in fixed character set mode.
SP_SYSTEM_CHARSET
This identifies the system character set. When in fixed character set mode, this character set is used as the internal character set. When not in fixed character set mode this character set is used as the internal character set until the document character set has been read, at which point the document character set is used as the internal character set.

The only currently recognized value for this is JIS. This refers to a character set which combines JIS X 0201, JIS X 0208 and JIS X 0212 by adding 0x8080 to the codes of characters in JIS X 0208 and 0x8000 to the codes of characters in JIS X 0212.

The default system character set is Unicode 2.0.

SP_ENCODING
This specifies the default encoding when operating in fixed character set mode. The value must be the name of an available encoding. The default encoding cannot be document character set relative when operating in fixed character set mode.
SP_BCTF
This specifies the default encoding when not operating in fixed character set mode. The value must be the name of an available BCTF. When not operating in fixed character set mode, the default encoding is the document character set relative encoding with this BCTF. The default encoding is required to be document character set relative when not operating in fixed character set mode.

The default encoding is used for file input and output, and, except under Windows 95 and Windows NT, for all other interfaces with the operating system including filenames, environment varable names, environment variable values and command line arguments.

Under Windows 95 and Windows NT there are no restrictions on the default encoding. Note that in order for non-ASCII characters to be correctly displayed on your console you must select a TrueType font, such as Lucida Console, as your console font. (This seems to work only on Windows NT.)

Under other operating systems, the default encoding must be one in which ASCII characters are represented by a single byte.

Applications built with SP may require fixed character set mode and a particular system character set; such applications will ignore the SP_SYSTEM_CHARSET and SP_CHARSET_FIXED environment variables.

Available encodings

Encoding names are case insensitive. The following named encodings are available:

utf-8
Each character is represented by a variable number of bytes according to UCS Transformation Format 8 defined in Annex P to be added by the first proposed drafted amendment (PDAM 1) to ISO/IEC 10646-1:1993.
ucs-2
iso-10646-ucs-2
This is ISO/IEC 10646 with the UCS-2 transformation format. Each character is represented by 2 bytes. No special treatment is given to the byte order mark character.
unicode
Each character is represented by 2 bytes. The bytes representing the entire storage object may be preceded by a pair of bytes representing the byte order mark character (0xFEFF). The bytes representing each character are in the system byte order, unless the byte order mark character is present, in which case the order of its bytes determines the byte order. When the storage object is read, any byte order mark character is discarded.
euc-jp
This is equivalent to the Extended_UNIX_Code_Packed_Format_for_Japanese Internet charset. Each character is encoded by a variable length sequence of octets.
euc-kr
This is ASCII and KSC 5601 encoded with the EUC encoding as defined by KS C 5861-1992.
euc-cn
cn-gb
gb2312
This is ASCII and GB 2312-80 encoded with the EUC encoding. It is equivalent to the CN-GB MIME charset defined in RFC 1922.
sjis
shift_jis
This is equivalent to the Shift_JIS Internet charset. Each character is encoded by a variable length sequence of octets. This is Microsoft's standard encoding for Japanese.
big5
cn-big5
This is equivalent to the CN-Big5 MIME charset defined in RFC 1922.
is8859-n
iso-8859-n
n can be any single digit other than 0. Each character in the repertoire of ISO 8859-n is represented by a single byte.
xml
On input, this uses XML's rules to determine the encoding. On output, this uses UTF-8.

The following additional encodings are supported under Windows 95 and Windows NT:

windows
Specify this encoding when a storage object is encoded using your system's default Windows character set. This uses the so-called ANSI code page.
wunicode
This uses the unicode encoding if the storage object starts with a byte order mark and otherwise the windows encoding. If you are working with Unicode, this is probably the best value for SP_ENCODING.
ms-dos
Specify this encoding when a storage object (file) uses the OEM code page. The OEM code-page for a particular machine is the code-page used by FAT file-systems on that machine and is the default code-page for MS-DOS consoles.

Available BCTFs

The following BCTFs are available:

identity
Each bit combination is represented by a single byte.
fixed-2
Each bit combination is represented by exactly 2 bytes, with the more significant byte first.
euc
Each bit combination is represented by a variable number of bytes depending on the values of the 0x80 and 0x8000 bits:
  • if neither bits are set, then the bit combination is represented by a single byte equal to the bit combination;
  • bit combinations with both bits set, are represented by the MSB of the bit combination followed by the LSB of the bit combination;
  • bit combinations with just the 0x80 bit set are represented by 0x8E followed by a byte equal to the bit combination;
  • bit combinations with just the 0x8000 bit set are represented by 0x8F followed by the MSB of the bit combination followed by the LSB of the bit combination.
sjis
A bit combination between 0 and 127 or between 161 and 223 is encoded as a single byte with the same value as the bit combination. A bit combination with the 0x8000 and 0x80 bits set is encoded by the sequence of bytes with which the SJIS encoding encodes the character whose number in JIS X 0208 added to 0x8080 is equal to the bit combination.
big5
A bit combination less than 0x80 is encoded as a single byte. A bit combination with the 0x8000 bit set is encoded as two bytes, the MSB of the bit combination followed by the LSB of the bit combination.

James Clark
jjc@jclark.com
openjade-1.3.2/doc/features.htm0100664000076400007640000000426606713045031014521 0ustar ianian SP - Features Summary

SP

A free, object-oriented toolkit for SGML parsing and entity management

Features summary

  • Includes nsgmls
    • Compatible with sgmls
    • Also generates RAST (ISO/IEC 13673)
  • Provides access to all information about SGML document
    • Access to DTD and SGML declaration as well as document instance
    • Access to markup as well as abstract document
    • Sufficient to recreate character-for-character identical copy of any SGML document
  • Supports almost all optional SGML features
    • Arbitrary concrete syntaxes
    • SHORTTAG, OMITTAG, RANK
    • SUBDOC
    • LINK (SIMPLE, IMPLICIT and EXPLICIT)
    • Only DATATAG and CONCUR not supported
  • Sophisticated entity manager
    • Supports ISO/IEC 10744 Formal System Identifiers
    • Supports SGML Open catalogs
    • Supports WWW
    • Can be used independently of parser
  • Supports multi-byte character sets
    • Parser can use 16-bit characters internally
    • 16-bit characters can be used in tag names and other markup
    • Supports ISO/IEC 10646 (Unicode) using both UCS-2 and UTF-8
    • Supports Japanese character sets (Shift-JIS, EUC)
  • Object-oriented
  • Written in C++ from scratch
    • Not a modified version of a parser originally written in C
    • Reentrant
    • Sophisticated architecture
  • Fast
    • Up to twice as fast as sgmls on large documents
  • Portable
    • All major Unix variants
    • MS-DOS
    • Win32: Windows 95/Windows NT
    • OS/2
  • Production quality
    • Version 1.0 recently released, after a year of test releases
    • Tested using several SGML test suites
    • Already used in several new commercial products
    • Written by James Clark, previously responsible for turning arcsgml into sgmls
  • Free
    • Includes source code
    • No restrictions on commercial use
  • Disadvantages
    • Programmer-level documentation only for generic API and not for native API.

James Clark
jjc@jclark.com
openjade-1.3.2/doc/generic.htm0100664000076400007640000007166706713070377014343 0ustar ianian The generic API to SP

The generic API to SP

SP provides a generic API in addition to its native API. The generic interface is much simpler than the native interface. It is generic in the sense that it could be easily implemented using parsers other than SP. It provides all ESIS information as well as some other information about the instance that is commonly needed by applications. However, it doesn't provide access to all information available from SP; in particular, it doesn't provide information about the DTD. It is also slightly less efficient than the native interface.

The interface uses two related abstract classes. An SGMLApplication is an object that can handle a number of different kinds of event which correspond to information in an SGML document. An EventGenerator is an object that can generate a sequence of events of the kinds handled by an SGMLApplication. The ParserEventGeneratorKit class makes an EventGenerator that generates events using SP.

Types

SGMLApplication has a number of local types that are used in several contexts:

Char
This typedef is an unsigned integral type that represents a single bit combination (character). It is unsigned short if SP_MULTI_BYTE is defined and unsigned char otherwise.
CharString
This struct represents a string of Char. It has the following members:
const Char *ptr
A pointer to the Chars of the string.
size_t len
The number of Chars in the string.
Location
This struct holds information about a location in the entity structure of a document. It is constucted using an OpenEntityPtr and a Position. The CharStrings in it will remain valid as long as the OpenEntity that is pointed to by the OpenEntityPtr that was used to construct it remains valid.

It has the following members:

unsigned long lineNumber
The line number. (unsigned long)-1 if invalid.
unsigned long columnNumber
The column number. Note that tabs are not treated specially. (unsigned long)-1 if invalid.
unsigned long byteOffset
The number of bytes in the storage object preceding the location. (unsigned long)-1 if invalid.
unsigned long entityOffset
The number of bit combinations in the entity preceding the location. (unsigned long)-1 if invalid.
CharString entityName
The name of the external entity containing the location. An empty string if invalid.
CharString filename
The name of the file containing the location. An empty string if invalid.
const void *other
Other implementation-dependent information about the location. In the SP implementation it will be a pointer to a StorageObjectSpec. 0 if invalid.

When a location is in an internal entity, the location of the reference to the entity will be used instead.

OpenEntity
This class represents a currently open entity. The only use for an OpenEntity is, in conjunction with a Position, to create a Location. An OpenEntity is accessed using an OpenEntityPtr.
OpenEntityPtr
This class is a reference-counted pointer to an OpenEntity.
Position
This is an integral type that represents a position in an open entity. The meaning of a Position is completely determined by the OpenEntity object with which it is associated. The only use for an Position is, in conjunction with an OpenEntity, to create a Location.
ExternalId
This struct represents an external identifier. It has the following members:
bool haveSystemId
True iff the external identifier included an explicit system identifier.
CharString systemId
The system identifier included in the external identifier. Valid only if havePublicId is true.
bool havePublicId
True iff the external identifier included an explicit public identifier.
CharString publicId
The public identifier included in the external identifier. Valid only if havePublicId is true.
bool haveGeneratedSystemId
True iff a system identifier was generated for the external identifier.
CharString generatedSystemId
The system identifier generated for the external identifier. Valid only if haveGeneratedSystemId is true.
Notation
This struct represents a notation. It has the following members:
CharString name
The name of the notation.
ExternalId externalId
The external identifier of the notation.
Entity
This struct represents an entity. It has the following members.
CharString name
The name of the entity.
Entity::DataType dataType
The type of the data of the entity.

Entity::DataType is a local enum with the following possible values:

Entity::sgml
Entity::cdata
Entity::sdata
Entity::ndata
Entity::subdoc
Entity::pi
Entity::DeclType declType
The type of the declaration of the entity.

Entity::DeclType is a local enum with the following possible values:

Entity::general
The entity is a general entity.
Entity::parameter
The entity is a parameter entity.
Entity::doctype
The entity was declared in a doctype declaration.
Entity::linktype
The entity was declared in a linktype declaration.
bool isInternal
True iff the entity is internal rather than external.
CharString text
The replacement text of the entity. Valid only if isInternal is true.
ExternalId externalId
The external identifier of the entity. Valid only if isInternal is false.
const Attribute *attributes
Pointer to the data attributes of the entity. Valid only if isInternal is false.
size_t nAttributes
The number of data attributes of the entity. Valid only if isInternal is false.
Notation notation
The entity's notation. An empty string if the entity has no notation. Valid only if isInternal is false.
Attribute
This struct represents an attribute. More precisely it represents the assignment of an attribute value to an attribute name. It has the following members:
CharString name
The attribute name.
Attribute::Type type
An enumeration describing the type of the attribute.

Attribute::Type is a local type with the following possible values:

Attribute::invalid
The attribute is invalid.
Attribute::implied
The attribute is an impliable attribute for which no value was specified.
Attribute::cdata
The attribute is a CDATA attribute.
Attribute::tokenized
The attribute is a tokenized attribute.
Attribute::Defaulted defaulted
An enumeration specifying whether the entity was defaulted, and, if so, how. This is non-ESIS information.

Attribute::Defaulted is a local enum with the following possible values:

Attribute::specified
The value was explicitly specified.
Attribute::definition
The value was defaulted from the attribute definition.
Attribute::current
The value was defaulted using the CURRENT value of the attribute.
size_t nCdataChunks
The number of Attribute::CdataChunks comprising the value of the attribute. Valid only if type is cdata.
const Attribute::CdataChunk *cdataChunks
The Attribute::CdataChunks comprising the value of this attribute. Valid only if type is cdata.

Attribute::CdataChunk is a local struct with the following members:

bool isSdata
True iff this chunk is the replacement text of an internal SDATA entity.
CharString data
The data of this chunk.
CharString entityName
The name of the internal SDATA entity that this chunk is the replacement text of. Valid only if isSdata is true. This is non-ESIS information.
CharString tokens
Valid only if type is Attribute::tokenized.
bool isId
True iff the declared value is ID. This is non-ESIS information.
size_t nEntities
The number of entities associated with this attribute. This will be zero unless the declared value is ENTITY or ENTITIES.
const Entity *entities
The entities associated with this attribute.
Notation notation
The notation associated with this attribute. If the declared value of the attribute is not NOTATION, then the name member will be an empty string.

Events

For each event xyzEvent handled by SGMLApplication, there is a virtual function of SGMLApplication named xyz to handle the event, and a local struct of SGMLApplication named XyzEvent.

Pointers within an event xyzEvent are valid only during the call to xyz. None of the structs in events have copy constructors or assignment operators defined. It is up to the event handling function to make a copy of any data that it needs to preserve after the function returns.

Except as otherwise stated, the information in events is ESIS information. All position information is non-ESIS information.

There are the following types of event:

AppinfoEvent
Generated for the APPINFO section of the SGML declaration. The event has the following members:
Position pos
The position of APPINFO parameter of the SGML declaration.
bool none
True iff APPINFO NONE was specified.
CharString string
The interpreted value of the minimum literal specified in the appinfo parameter of the SGML declaration. Valid only if none is false.
PiEvent
Generated for a processing instruction. The event has the following members:
Position pos
The position of the processing instruction.
CharString data
The system data of the processing instuction.
CharString entityName
If the processing instruction was the result of the reference to a PI entity, the name of the entity. If not, an empty string. This is non-ESIS information.
StartElementEvent
Generated for the start of an element. The event has the following members:
Position pos
The position of the start of the element.
CharString gi
The generic identifier of the element.
Element::ContentType contentType
The type of the element's content. This is non-ESIS information.

Element::ContentType is an enum with the following possible values:

Element::empty
The element has empty content, either because it was declared as EMPTY or because there was a #CONREF attribute.
Element::cdata
The element has CDATA content.
Element::rcdata
The element has RCDATA content.
Element::mixed
The element has mixed content.
Element::element
The element has element content.
bool included
True iff the element was an included subelement (rather than a proper subelement). This is non-ESIS information.
size_t nAttributes
The number of attributes of this element.
const Attribute *attributes
A pointer to the attributes for this element.
EndElementEvent
Generated for the end of an elemenet. The event has the following members:
Position pos
The position of the end of the element.
CharString gi
The generic identifier of the element.
DataEvent
Generated for character data. Separate data events may be generated for consecutive data characters. Applications should make no assumptions about how character data is split into DataEvents. The event has the following members:
Position pos
The position of the first character of the data.
CharString data
The data.
SdataEvent
Generated for a reference to an internal sdata entity in content. The event has the following members:
Position pos
The position of the entity reference.
CharString text
The replacement text of the entity.
CharString entityName
The entity name. This is non-ESIS information.
ExternalDataEntityRefEvent
Generated for a reference to an external data entity. The event has the following members:
Position pos
The position of the entity reference.
Entity entity
The referenced entity.
SubdocEntityRefEvent
Generated for a reference to a subdoc entity. The event has the following members:
Position pos
The position of the entity reference.
Entity entity
The referenced entity.
StartDtdEvent
Generated at the start of a document type declaration. This is non-ESIS information. The event has the following members:
Position pos
The position of the start of the document type declaration.
CharString name
The document type name.
bool haveExternalId
The external identifier for the entity declared in the document type declaration.
ExternalId externalId
Valid iff haveExternalId is true.
EndDtdEvent
Generated at the end of a document type declaration. This is non-ESIS information. The event has the following members:
Position pos
The position of the end of the DTD.
CharString name
EndPrologEvent
Generated at the end of the prolog. The event has the following members:
Position pos
The position of the start of the instance.
GeneralEntityEvent
Generated for each general entity in the name space of the governing doctype, but only if the ParserEventGeneratorKit::outputGeneralEntities option is enabled. This is non-ESIS information. The event has the following members:
Entity entity
The entity.

No event will be generated for the declaration of the #default entity; instead an event will be generated when an entity reference uses the #default entity if that is the first time on which an entity with that name is used. This means that GeneralEntityEvent can occur after the end of the prolog.

CommentDeclEvent
Generated for each comment declaration in the instance, but only if ParserEventGeneratorKit::outputCommentDecls option is enabled. This is non-ESIS information. The event has the following members:
Position pos
The position of the start of the comment declaration.
size_t nComments
The number of comments in the comment declaration.
const CharString *comments
The content of each comment in the declaration. This excludes the com delimiters.
const CharString *seps
The separator following each comment in the declaration.
MarkedSectionStartEvent
Generated for the start of a marked section in the instance, but only if the ParserEventGeneratorKit::outputMarkedSections option is enabled. This is non-ESIS information. The event has the following members:
Position pos
The position of the start of the marked section declaration.
MarkedSectionStartEvent::Status status
The effective status of the marked section.

MarkedSectionStartEvent::Status is a local enum with the following possible values:

  • MarkedSectionStartEvent::include
  • MarkedSectionStartEvent::rcdata
  • MarkedSectionStartEvent::cdata
  • MarkedSectionStartEvent::ignore
size_t nParams
The number of top-level parameters in the status keyword specification.
const MarkedSectionStartEvent::Param *params
The top-level parameters in the status keyword specification.

Param is a local struct with the following members:

MarkedSectionStartEvent::Param::Type type
The type of top-level parameter:

MarkedSectionStartEvent::Param::Type is a local enum with the following possible values:

MarkedSectionStartEvent::Param::temp
MarkedSectionStartEvent::Param::include
MarkedSectionStartEvent::Param::rcdata
MarkedSectionStartEvent::Param::cdata
MarkedSectionStartEvent::Param::ignore
The parameter is the corresponding keyword.
MarkedSectionStartEvent::Param::entityRef
The parameter is an entity reference.
CharString entityName
Valid when type is MarkedSectionStartEvent::Param::entityRef.
MarkedSectionEndEvent
Generated for the end of a marked section in the instance, but only if the ParserEventGeneratorKit::outputMarkedSections option is enabled. This is non-ESIS information. The event has the following members:
Position pos
The position of the end of the marked section declaration.
MarkedSectionEndEvent::Status status
The effective status of the marked section.

MarkedSectionEndEvent::Status is a local enum with the following possible values:

  • MarkedSectionEndEvent::include
  • MarkedSectionEndEvent::rcdata
  • MarkedSectionEndEvent::cdata
  • MarkedSectionEndEvent::ignore
IgnoredCharsEvent
Generated for a sequence of characters in an ignored marked section in the instance, but only if the ParserEventGeneratorKit::outputMarkedSections option is enabled. This is non-ESIS information. The event has the following members:
Position pos
The position of the first of the ignored characters.
CharString data
The ignored characters.
ErrorEvent
Generated for each error detected by the parser, and also for any other cases where the parser produces a message. This is non-ESIS information. It has the following members:
Position pos
The position at which the error was detected.
ErrorEvent::Type type
The type of error.

ErrorEvent::Type is a local enum with the following possible values:

ErrorEvent::quantity
Exceeding a quantity limit.
ErrorEvent::idref
An IDREF to a non-existent ID.
ErrorEvent::capacity
Exceeding a capacity limit.
ErrorEvent::otherError
Any other kind of error.
ErrorEvent::warning
A warning. Not actually an error.
ErrorEvent::info
An informational message. Not actually an error.
CharString message
The message produced by the parser. If messages are not disabled, this will be the same as the message printed to standard error.

SGMLApplication also has a virtual function

void openEntityChange(const OpenEntityPtr &);

which is similar to an event. An application that wishes to makes use of position information must maintain a variable of type OpenEntityPtr representing the current open entity, and must provide an implementation of the openEntityChange function that updates this variable. It can then use the value of this variable in conjunction with a Position to obtain a Location; this can be relatively slow. Unlike events, an OpenEntityPtr has copy constructors and assignment operators defined.

EventGenerator

The EventGenerator interface provides the following functions:

unsigned run(SGMLApplication &app)
Generate the sequence of events, calling the corresponding member of app for each event. Returns the number of errors. This must not be called more than once for any EventGeneratorobject.
EventGenerator *makeSubdocEventGenerator(const SGMLApplication::Char *s, size_t n)
Makes a new EventGenerator for a subdocument of the current document. s and n together specify the system identifier of the subdocument entity. These should usually be obtained from the generatedSystemId member of the externalId member of the Entity object for the subdocument entity. This function can only be called after run has been called; the call to run need not have returned, but the SGMLApplication must have been passed events from the prolog or instance (ie the SGML declaration must have been parsed).
void inhibitMessages(bool b)
If b is true, disables error and warning messages, otherwise enables them. Initially errors and warnings are enabled. This function may be called at any time, including while run() is executing.
void halt()
Halt the generation of events by run(). This can be at any point during the execution of run(). It is safe to call this function from a different thread from that which called run().

ParserEventGeneratorKit

The ParserEventGeneratorKit class is used to create an EventGenerator that generate events using SP. It provides the following members:

EventGenerator *makeEventGenerator(int nFiles, char *const *files)
This returns a new EventGenerator that will generate events for the SGML document whose document entity is contained in the files. The returned EventGenerator should be deleted when it is no longer needed. makeEventGenerator may be called more than once.
void setOption(ParserEventGeneratorKit::Option opt)
This can be called any time before makeEventGenerator() is called.

ParserEventGeneratorKit::Option is a local enum with the following possible values:

ParserEventGeneratorKit::showOpenEntities
This corresponds to the -e option of nsgmls.
ParserEventGeneratorKit::showOpenElements
This corresponds to the -g option of nsgmls.
ParserEventGeneratorKit::outputCommentDecls
This will cause CommentDeclEvents to be generated.
ParserEventGeneratorKit::outputMarkedSections
This will cause MarkedSectionStartEvents, MarkedSectionStartEvents and IgnoredCharsEvents to be generated.
ParserEventGeneratorKit::outputGeneralEntities
This will cause GeneralEntityEvents to be generated.
void setOption(ParserEventGeneratorKit::OptionWithArg opt, const char *arg)
This can be called any time before makeEventGenerator() is called.

ParserEventGeneratorKit::OptionWithArg is a local enum with the following possible values:

ParserEventGeneratorKit::addCatalog
This corresponds to the -m option of nsgmls.
ParserEventGeneratorKit::includeParam
This corresponds to the -i option of nsgmls.
ParserEventGeneratorKit::enableWarning
This corresponds to the -w option of nsgmls.
ParserEventGeneratorKit::addSearchDir
This corresponds to the -D option of nsgmls.

Using the interface

Creating an application with this interface involves the following steps:

  • Derive a class from SGMLApplication, called, say, MyApplication.
  • For each kind of event FooEvent that the application needs information from, define a member of MyApplication void MyApplication::foo(const FooEvent &).
  • Declare an object of type ParserEventGeneratorKit.
  • Optionally set options for the ParserEventGeneratorKit using ParserEventGeneratorKit::setOption.
  • Create an EventGenerator using ParserEventGeneratorKit::makeEventGenerator.
  • Create an instance of MyApplication (usually on the stack).
  • Call EventGenerator::run passing it a reference to the instance of MyApplication.
  • Delete the EventGenerator.

The application must include the ParserEventGeneratorKit.h file (which in turn includes EventGenerator.h and SGMLApplication.h), which is in the generic directory. If your compiler does not support the standard C++ bool type, you must ensure that bool is defined as a typedef for int, before including this. One way to do this is to include config.h and then Boolean.h from the lib subdirectory of the SP distribution.

On Unix, the application must be linked with the lib/libsp.a library.

Example

Here's a simple example of an application that uses this interface. The application prints an outline of the element structure of a document, using indentation to represent nesting.

// The next two lines are only to ensure bool gets defined appropriately.
#include "config.h"
#include "Boolean.h"

#include "ParserEventGeneratorKit.h"
#include <iostream.h>

ostream &operator<<(ostream &os, SGMLApplication::CharString s)
{
  for (size_t i = 0; i < s.len; i++)
    os << char(s.ptr[i]);
  return os;
}

class OutlineApplication : public SGMLApplication {
public:
  OutlineApplication() : depth_(0) { }
  void startElement(const StartElementEvent &event) {
    for (unsigned i = 0; i < depth_; i++)
      cout << "    ";
    cout << event.gi << '\n';
    depth_++;
  }
  void endElement(const EndElementEvent &) { depth_--; }
private:
  unsigned depth_;
};

int main(int argc, char **argv)
{
  ParserEventGeneratorKit parserKit;
  // Use all the arguments after argv[0] as filenames.
  EventGenerator *egp = parserKit.makeEventGenerator(argc - 1, argv + 1);
  OutlineApplication app;
  unsigned nErrors = egp->run(app);
  delete egp;
  return nErrors > 0;
}

This example will only work for the non-multibyte version of SP; for the multibyte version you will need to use the standard C++ library's facilities for wide character output, or roll your own equivalents (like the OutputCharStream used by SP applications).

There's a bigger example in the sgmlnorm directory in the SP distribution. This uses the SGMLApplication interface, but it doesn't use the ParserEventGeneratorKit interface.

James Clark
jjc@jclark.com
openjade-1.3.2/doc/ideas.htm0100664000076400007640000003703406713045031013767 0ustar ianian Ideas for improving SP

Ideas for improving SP

Parser

When !internalCharsetIsDocCharset, need to check that every significant character is an SGML character.

Treat "ISO Registration Number NNN//" public ids specially. Warn if they use designating sequence inconsistently.

Pass non-declared attributes through to application.

Avoid expensive overflow test in stringToNumber when length of number is less then something guaranteed not to overflow.

Allow external character set to be complete character set description.

Maybe distinguish non-SGML characters as separate event even when internalCharsetIsDocCharset.

Supporting caching across multiple runs of parser in single process.

Make Dtd copiable.

?Subdoc parser needs character set for system id (should be system character set).

Recover better from non-existent documents or subdocuments.

Think about entity declarations/references in inactive LPDs.

Don't allow name groups in parameter entity references in document type specifications in start-/end-tags.

With link, don't do a pass 2 unless we replace a referenced entity (what about default entity?).

Options to warn about things that HTML disallows: marked sections in instance, explicit subsets.

Option to warn about MDCs in comments in comment declarations.

Option to warn about omitted REFC.

Check that names of added functions are valid names in concrete syntax (both characters and lengths). Also need to do upper-case substitution on them?

Recover from nested doctype declaration intelligently.

Recover from missing doctype declaration intelligently.

Could optimize parsing of attribute literals using technique similar to extendData().

attributeValueLength error should give actual length of value.

Recover better from entity reference with name group in literal.

At start of pass 2 clear everything in pass1LPDs except entity sets.

Give an error if EXPLICIT > 1 and LPDs don't chain as required by 436:5-7 and 436:18-20.

Handle quantity errors by reporting at the end of the prolog and the end of the instance any quantities that need to be increased.

Make noSuchReservedName error more helpful.

Function characters should perform their function even when markup recognition is suppressed. (I think I've handled this.)

Give a warning for notation attribute that is #CONREF.

Try to separate out Parser::compileModes().

In CompiledModelGroup have vector that gives an index for each element type that occurs in the model group. Then in each leaf content token have a vector that maps this index to a LeafContentToken *, if there is a simple transition (no and groups involved) to that element type.

MatchState::minAndDepth and MatchState::AndInfo should be separated off info object pointed to from MatchState; pointer would be null for elements with no AND groups.

What to do if we encounter USELINK or USEMAP declaration after DTD in prolog? Should stop prolog and start DTD. If we have SCOPE INSTANCE then if we get an unknown declaration type in prolog, don't give error, but unget token and start instance.

?Have separate version of reportNonSgml() for case where datachar is allowed.

Implement CONCUR.

AttributeDefinition constructors should have Owner<DeclaredValue> &, arguments to avoid storage leaks when exceptions are thrown.

Create a list like IList but which keeps track of length. Then combine tagLevel into openElement stack, and inputLevel into inputStack.

AttributeDefinition::makeValue should return ConstResourcePointer<AttributeValue>.

Syntax member functions should use reference for result.

Have a LocationKey data structure that can be used to determine the relative order of locations in possibly different concurrent instances. Contains: offset in document instance; is it a replacement of named character reference; for each entity and numeric character reference: location in entity and index of dtd in which instance is declared.

On systems with fixed stacks, avoid unlimited stack growth: hard limits on number of SUBDOCS and GRPLVL.

With extendData and extendS don't extend more than some fixed amount (eg 1024), otherwise could overrun InputSource buffer on 16-bit system.

Have a location in ElementType saying where the first mention of the element name was. Useful for giving warnings about undefined elements.

How to detect 310:8-10?

AttributeSemantics should return const pointers rather than ResourcePointer's

Rename Parser -> ParserImpl SgmlParser -> Parser Syntax::isB -> Syntax::isBlank

What mode should be used for parsing other prolog after document element?

Flag out of context data.

Provide mechanism to allow character names to be mapped onto universal character numbers.

Provide mechanism to allow specification of wbat characters are control characters (for the purposes of SHUNCHAR controls).

With SCOPE INSTANCE, which syntax should be used for delimiters in bracketed text entities?

Better error messages for ambiguous delimiters.

Do we need both EndLpd and ComplexLink/SimpleLink events?

What to do about 457:19-21?

Rename lpd_ to activeLpd_; allLpd_ to lpd_.

Test for validity of character numbers in syn ref charset (perhaps unnecessary, because bad numbers won't be translateable into doc charset).

Option to read bootstrap character set from entity.

In AttributeDefinitionList have a flag that is true if any checking of unspecified values in attribute list is needed (ie CURRENT, REQUIRED, non-implied ENTITY, non-implied NOTATION). In this case can avoid running over attributes in AttributeList::finish, by computing value only when user calls Attribute::value().

Construct link attributes from definition if no applicable link rule. (RAST maybe doesn't want this. Make it a separate method in LinkProcess and use in SgmlsEventHandler. Very useful with ArcEngine.)

Shouldn't have OpenElementInfo in Message. Instead use RTTI.

noSuchAttribute: include gi in message; if element is undefined, don't give error at all

noSuchAttributeToken: say what element or entity

nonExistentEntityRef should say document/link type

Distinguish errors that are totally recoverable.

Find better way to unpack entity information in entity attribute.

Entity Manager

Build document<->internal translation tables once per document not once per entity.

Avoid document<->internal translations when one is the subset of the other (or something like that).

In cases where it won't cause problems, don't translate non-SGML/unrepresentable characters when doing document<->internal translations, so that user gets better error message.

Recover better from unknown document character sets (shouldn't report them as non-SGML characters).

Maybe need to keep track of set of SGML characters as numbers in document character set.

Optimize TranslateDecoder where underlying codingSystem is identity by using simple lookup table.

Make use of charset parameter in MIME header for HTTP. Also generate AcceptCharsets line in request.

Implement .mim files (if extension of file is same as environment variable SP_MIME_EXT assume it has a MIME header).

Avoid using TranslateCodingSystem when translation is a no-op.

Make SP_CONVERT when !SP_MULTI_BYTE.

Avoid requiring that BASE sysid exist.

When FSI has only a single storage manager and that is a literal, return an InternalInputSource.

Allow user of InputSource to specify what bit combinations they want to see for RS and RE.

Have environment variable SP_INPUT_BCTF that overrides SP_BCTF for input.

Avoid using numeric character references for all characters in storage object identifier of literal storage manager in effective system identifier.

Instead of registering coding system pass CodingSystemKit that can create that can create coding systems.

Need BCTF entry in catalog that specifies default BCTF.

Allow encodings to be externally specified (eg in a catalog) as a combination of a BCTF and a character set.

An SOEntityCatalog should consist of a Vector<ConstPtr<EntityCatalog> > which can be shared between several catalogs. This would facilitate > caching.

Maybe need to be able to specify two types of catalog entry file: one used for all documents; one used for this document alone.

Allow end-tags in FSIs. Support alternative SOSs.

Character sets in the catalog need rethinking. Also character set of ParsedSystemId::Map::publicId.

Allow for HTTP proxy.

Cache catalogs.

Use Microsoft ActiveX (formerly Sweeper) DLL on Win95 or NT.

Implement DTDDECL catalog entry.

Support FILE URLs.

Perhaps don't want to do searching for catalog files (and perhaps command line files).

Provide mechanism for specifying when (if at all) base dir is searched relative to other dirs.

Provide extension to catalog format to distinguish entities declared in non-base DTDs. Perhaps precede entity name by document type name surrounded by GRPO/GRPC delimiters.

URLStorageManager should use a DescriptorManager shared with PosixStorageManager.

URLStorageManager::resolveRelative should delete "xxx/../" and "./" components. Might also be a good idea to resolve host names.

Implement JIS encoding system (what should be done with half-width yen and overbar in JIS-Roman? translate to Unicode).

ExternalInfoImpl::convertOffset: when the position is the character past the last character and the last character was a newline, line number should be number of lines + 1.

Try harder to rewind in StdioStorageObject.

Generic

Provide mechanism to access data entities using generated system id.

Support IMPLICIT/SIMPLE LINK.

Character set information.

Need to know space character that separates token. Alternatively provide broken down view of tokens.

Need to know IDREF (and other declared values)?

nsgmls

Problem with "\#n;" escape sequence is that it might get used other than in data. Probably should get rid of this feature, and give a warning when there's an unencodable character.

Internal

Make sure all files use #pragma i/i.

Get rid of assumption that Vector<T>::size_type, String<T>::size_type is size_t.

Maybe align Owner with auto_ptr.

Get rid of uses of string as identifier.

?Maybe support non-const copy constructors for NCVector/Owner.

Get rid of asEntityOrigin (as far as possible). Make InputSourceOrigin::defLocation virtual on origin. Avoid excessive use of asInputSourceOrigin.

Hash should define Hash(String<unsigned char>), Hash(String<unsigned short>) etc.

Invert sense of SP_HAVE_BOOL define.

Get rid of OutputCharStream::open. Instead have OutputCharStream::setEncoding. (Perhaps make a friend so we can use ostream if we're not interested in encodings.) Allow use of ostream instead of OutputCharStream. Change ParserToolkit::errorStream_'s coding system when we change the coding system.

Support 32-bit Char. Need to fix XcharMap and SubstTable. Detemplatize SubstTable. Then support UTF-16.

Have a common version of Ptr for things that have a virtual destructor.

Have a common version of Owner for all things that have a virtual destructor.

Inheritance in AttributeSemantics unnecesary.

Rename ISet -> RangeSet.

ISet and RangeMap should use binary search.

Better hash function for wide characters.

OutputCharStream should canonically use RS/RE and translate to system newline char with raw option that prevents this.

Avoid having Entity.h depend on ParserState, perhaps by double dispatching.

Add uses of explicit keyword.

When generating message.h file; if we don't have .cxx file and namespaces are supported, use anonymous namespace.

Application framework

Only use static programName for outOfMemory message.

Need to use AppChar *const * not AppChar ** in CmdLineApp.

When reporting message with MessageEventHandler need to be able to update error count.

Option argument names need to be internationalized.

Support response files for DOS.

Sort options in usage message.

StringMessageArg should be associated with a character set (in particular, need to distinguish parser character sets from StorageManager character sets).

Should translate StringMessageArg from document character set to system character set. Have MessageReporter::setDocumentCharacter function.

In MessageReporter, maybe distinguish messages coming from the parser.

Don't ever give a non-existent file as a location in a error message.

Text of messages should be able to specify that an open quote or close quote should be inserted at a particular point.

When outputting a StringMessageArg translate \r to \n.

Make sure wild cards work in VC++ and MS-DOS.

Win32

Remove path and extension from program name in error messages.

Compilers can typically eliminate unused templates. Reengineer Vector to reduce code size with such compilers.

Store messages in resources; requires numeric tags for messages.

Should automatically register all available code pages.

Make use of IsTextUnicode() API.

Have StorageManager that uses Win32 API directly. Would avoid limits on number of open files. Also use flag that says file is being accessed sequentially.

Allow DTDs to be compiled into binary by having storage manager that uses resource ids.

Architecture engine

Should give an error with -A if the specified arch does not exist.

Interpret APPINFO parameter, and automatically enable architectural processing based on this.

Handle derived architecture support attributes.

When doing architectural processing in link type, not possible to have notation declaration, so need some other way to specify public identifier for architecture.

Allow DOCTYPE to be declared inline (as with CONCUR or EXPLICIT LINK).

Grok conventional comments.

Make work automatically with EventHandlers that process subdoc. Make references to subdocs architectural.

Support different SGML declaration for meta-DTD.

Maybe should map internal sdata/cdata entities to copies in meta-DTD.

Perhaps when getting open element info should indicate that gis are architectural.

Think about references to SDATA entities in default values in meta-DTD.

Add default entity from real DTD to meta-DTD.

Tokenize ArcForm attribute appropriately.

Make special case for parsing DTD when entity can't be accessed.

Try to provide extension that would allow architecture elements be asynchronous with actual elements? This would provide CONCUR functionality.

sgmlnorm

Avoid bogus newline from invalid empty document.

Avoid always escaping >.

Option to say whether to use character references for 8-bit characters.

Option to output implied attributes.

Option to output all non-implied attributes.

Option to omit attribute name with name tokens.

Protect against recognition of short references.

Option to preserve CDATA entity references.

Option to output general entity declarations in DTD subset (but what about data attributes)?

spam

Option to normalize names.

Add comments round expanded entities to prevent false delimiter recognition.

Add newline at the end if last thing was omitted tag.

Option to warn about changes in internal entities when not expanding.

Documentation

Error message format.

<catalog> FSI tag.

James Clark
jjc@jclark.com
openjade-1.3.2/doc/index.htm0100664000076400007640000000467606713071553014027 0ustar ianian SP

SP

An SGML System Conforming to International Standard ISO 8879 -- Standard Generalized Markup Language

The following documents are available:

There is a mailing list for programmer-level discussions of SP. Mail subscription requests sp-prog-request@jclark.com. Messages for the list should go to sp-prog@jclark.com.

For information about SGML, see

I would like to hear about any bugs you find in SP. When reporting a bug, please always include a complete self-contained file that will enable me to reproduce the bug. I am also interested in receiving suggestions for improvements to SP no matter how small.

James Clark
jjc@jclark.com
openjade-1.3.2/doc/new.htm0100664000076400007640000001706006713070400013466 0ustar ianian What's new in SP?

What's new?

This document describes recent user-visible changes in SP. Bug fixes are not described.

Version 1.3

Better support for XML based on the Web SGML Adaptations Annex to ISO 8879.

New SX application that converts SGML to XML.

The architecture engine has been updated to match HyTime 2nd Edition (This means that you must use <?IS10744 ArcBase arch> rather than <?ArcBase arch>.)

Version 1.2

The Extended Naming Rules TC is supported. The extensions supported in external concrete syntaxes have been changed for compatibility with this.

The handling of character sets in the multi-byte version is more sophisticated. The character sets HTML page gives more information.

SP has built-in knowledge of many more base character sets.

nsgmls will report empty elements if the -oempty option is used.

DTD-less parsing is possible, by using the -wno-valid option to allow undefined elements and attributes. This allows parsing of well-formed XML documents, whether or not valid.

Version 1.1

There is now generalized support for architectural form processing.

Documentation is now in HTML format.

A BASE catalog entry can be used to specify a base system identifier for resolving relative storage object identifiers occurring in the catalog.

A LITERAL storage manager is now provided.

Programs have a -E option that sets the maximum number of errors.

A DELEGATE catalog entry allows distributed resolution of public identifiers.

nsgmls has a -B (batch mode) option that allows you to parse multiple documents with a single invocation of nsgmls.

In nsgmls the -c option now specifies a catalog as it does in spam and sgmlnorm, in addition to the -m option that previously did this.

The -n option has been replaced by a -onotation-sysid which applies to nsgmls only, and a -wnotation-sysid which applies generally.

SP can be built as a DLL under Win32.

Version 1.0

The syntax of system identifiers has completely changed. The new syntax is based on the syntax of formal system identifiers defined in ISO/IEC 10744 (HyTime) Technical Corrigendum 1, Annex D.

The NSGMLS_CODE environment variable has been renamed to SP_BCTF. nsgmls has a -b option to specify the bit combination transformation format to be used for output.

A list of directories in which files specified in system identifiers should be searched for can be specified using the environment variable SGML_SEARCH_PATH or the option -D.

Individual SYSTEM identifiers in external identifiers can be overridden using SYSTEM entries in the catalog.

The OVERRIDE catalog entry now takes a YES/NO argument. (This change was required for conformance to the SGML Open TR.) It applies to each entry individually rather than to the entire catalog.

The -w options of nsgmls and spam have been enhanced. In spam, the -w option takes an argument as with nsgmls. There are new warnings for minimized start and end tags (-wunclosed, -wempty, -wnet and -wmin-tag); for unused short reference maps (-wunused-maps); for unused parameter entities (-wunused-param). -wall now doesn't include those warnings that are about conditions that, in the opinion of the author, there is no reason to avoid. A warning can be turned off by using its name prefixed by no-; thus -wmin-tag -wno-net is equivalent to -wunclosed -wempty. The -w option is also used to turn off errors: -wno-idref replaces the -x option; -wno-significant replaces the -X option.

In the output of nsgmls, characters that cannot be represented in the encoding translation specified by the NSGMLS_BCTF environment variable are represented using an escape sequence of the form \#N; when N is a decimal integer.

In the multi-byte versions of nsgmls there are new BCTFs is8859-N for N = 1,...,9.

There is a -o option to nsgmls which makes it output additional information: -oentity outputs information about all entities; -oid distinguish attributes with a declared value of id; -oincluded distinguishes included subelements.

nsgmls now automatically searches for a catalog entry file called "catalog" in the same place as the document entity. Note that when the document entity is specified with a URL, this matches the behaviour of Panorama.

A catalog entry file can contain CATALOG entries specifying additional catalog entry files. This matches the behaviour of Panorama.

The parser can now make available to an application complete information about the markup of prologs and SGML declarations. It would now be possible, for example, to use SP to write a DTD editor. spam exploits this to a limited extent: if the -p option is specified twice, then parameter entity references between declarations will be expanded; the -mreserved option puts all reserved names in upper-case; with the -mshortref option short reference use declarations and short reference mapping declarations will be removed; attribute specification lists in data attribute specifications in entity declarations can be normalized like attribute specification lists in start-tags; with -mms it resolves IGNORE/INCLUDE marked sections.

nsgmls has a -C option which causes the command line filenames to be treated as a catalog whose DOCUMENT entry specifies the document entity.

nsgmls has a -n option which causes it to generate system identifiers for notations in the same way as it does for entities.

spam now has a -f option like nsgmls.

The interface between the parser and entity manager has been redesigned so that the entity manager can be used independently of the parser. This is exploited by a new program called spent that prints an entity with a specified system identifier on the standard output.

In most cases, a Control-Z occurring as the last byte in a file will be stripped. This is controlled by the zapeof attribute in formal system identifiers.

Version 0.4

External concrete syntaxes, character sets and capacity sets are supported using PUBLIC entries in catalog files. The multicode code core and reference syntaxes are no longer built-in. Only a few character sets are now built-in.

Within external concrete syntaxes, various useful extensions are permitted. In particular, an ellipsis syntax is allowed for the specification of name characters and single character short references. It is now practical to specify tens of thousands of additional name characters.

The default SGML declaration is more permissive.

nsgmls has a -x option that inhibits checking of idrefs.

nsgmls has a -w option that can enable additional warnings. In particular, -wmixed will warn about mixed content models that do not allow #pcdata everywhere.

The meaning of the f command in the output of nsgmls has changed slightly. It now gives the effective system identifier of the entity.

The functionality of the rast program has been merged into the nsgmls program and the rast program has been removed. The -t option makes nsgmls generate a RAST result.

spam has a -l option that uses lower-case for added names that were subject to upper-case substitution.

spam has a -mcurrent option that adds omitted attribute specifications for current attributes.

James Clark
jjc@jclark.com
openjade-1.3.2/doc/nsgmls.htm0100664000076400007640000002611006713070400014174 0ustar ianian NSGMLS

NSGMLS

An SGML System Conforming to International Standard ISO 8879 --
Standard Generalized Markup Language

SYNOPSIS

nsgmls [ -BCdeglprsuv ] [ -alinktype ] [ -bbctf ] [ -csysid ] [ -Ddirectory ] [ -Emax_errors ] [ -ffile ] [ -iname ] [ -ooutput_option ] [ -tfile ] [ -wwarning_type ] [ sysid... ]

DESCRIPTION

Nsgmls parses and validates the SGML document whose document entity is specified by the system identifiers sysid... and prints on the standard output a simple text representation of its Element Structure Information Set. (This is the information set which a structure-controlled conforming SGML application should act upon.) If more than one system identifier is specified, then the corresponding entities will be concatenated to form the document entity. Thus the document entity may be spread amongst several files; for example, the SGML declaration, prolog and document instance set could each be in a separate file. If no system identifiers are specified, then nsgmls will read the document entity from the standard input. A command line system identifier of - can be used to refer to the standard input. (Normally in a system identifier, <osfd>0 is used to refer to standard input.)

OPTIONS

The following options are available:

-alinktype
Make link type linktype active. Not all ESIS information is output in this case: the active LPDs are not explicitly reported, although each link attribute is qualified with its link type name; there is no information about result elements; when there are multiple link rules applicable to the current element, nsgmls always chooses the first.
-bbctf
-bencoding
This determines the encoding used for output. If in fixed character set mode it specifies the name of an encoding; if not, it specifies the name of a BCTF.
-B
Batch mode. Parse each sysid... specified on the command line separately, rather than concatenating them. This is useful mainly with -s.

If -tfilename is also specified, then the specified filename will be prefixed to the sysid to make the filename for the RAST result for each sysid.

-csysid
Map public identifiers and entity names to system identifiers using the catalog entry file whose system identifier is sysid. Multiple -c options are allowed. If there is a catalog entry file called catalog in the same place as the document entity, it will be searched for immediately after those specified by -c.
-C
The filename... arguments specify catalog files rather than the document entity. The document entity is specified by the first DOCUMENT entry in the catalog files.
-Ddirectory
Search directory for files specified in system identifiers. Multiple -D options are allowed. See the description of the osfile storage manager for more information about file searching.
-e
Describe open entities in error messages. Error messages always include the position of the most recently opened external entity.
-Emax_errors
Nsgmls will exit after max_errors errors. If max_errors is 0, there is no limit on the number of errors. The default is 200.
-ffile
Redirect errors to file. This is useful mainly with shells that do not support redirection of stderr.
-g
Show the generic identifiers of open elements in error messages.
-iname
Pretend that
<!ENTITY % name "INCLUDE">

occurs at the start of the document type declaration subset in the SGML document entity. Since repeated definitions of an entity are ignored, this definition will take precedence over any other definitions of this entity in the document type declaration. Multiple -i options are allowed. If the SGML declaration replaces the reserved name INCLUDE then the new reserved name will be the replacement text of the entity. Typically the document type declaration will contain

<!ENTITY % name "IGNORE">

and will use %name; in the status keyword specification of a marked section declaration. In this case the effect of the option will be to cause the marked section not to be ignored.

-ooutput_option
Output additional information accordig to output_option:
entity
Output definitions of all general entities not just for data or subdoc entities that are referenced or named in an ENTITY or ENTITIES attribute.
id
Distinguish attributes whose declared value is ID.
line
Output L commands giving the current line number and filename.
included
Output an i command for included subelements.
empty
Output an e command for elements which are not allowed to have an end-tag, that is those with a declared content of empty or with a content reference attribute.
notation-sysid
Output an f command before an N command, if a system identifier could be generated for that notation.
nonsgml
In fixed character set mode, output \% escape sequences for non-SGML data characters. Non-SGML data characters can result from numeric character references.

Multiple -o options are allowed.

-p
Parse only the prolog. Nsgmls will exit after parsing the document type declaration. Implies -s.
-s
Suppress output. Error messages will still be printed.
-tfile
Output to file the RAST result as defined by ISO/IEC 13673:1995 (actually this isn't quite an IS yet; this implements the Intermediate Editor's Draft of 1994/08/29, with changes to implement ISO/IEC JTC1/SC18/WG8 N1777). The normal output is not produced.
-v
Print the version number.
-wtype
Control warnings and errors. Multiple -w options are allowed. The following values of type enable warnings:
xml
Warn about constructs that are not allowed by XML.
mixed
Warn about mixed content models that do not allow #pcdata anywhere.
sgmldecl
Warn about various dubious constructions in the SGML declaration.
should
Warn about various recommendations made in ISO 8879 that the document does not comply with. (Recommendations are expressed with ``should'', as distinct from requirements which are usually expressed with ``shall''.)
default
Warn about defaulted references.
duplicate
Warn about duplicate entity declarations.
undefined
Warn about undefined elements: elements used in the DTD but not defined.
unclosed
Warn about unclosed start and end-tags.
empty
Warn about empty start and end-tags.
net
Warn about net-enabling start-tags and null end-tags.
min-tag
Warn about minimized start and end-tags. Equivalent to combination of unclosed, empty and net warnings.
unused-map
Warn about unused short reference maps: maps that are declared with a short reference mapping declaration but never used in a short reference use declaration in the DTD.
unused-param
Warn about parameter entities that are defined but not used in a DTD. Unused internal parameter entities whose text is INCLUDE or IGNORE won't get the warning.
notation-sysid
Warn about notations for which no system identifier could be generated.
all
Warn about conditions that should usually be avoided (in the opinion of the author). Equivalent to: mixed, should, default, undefined, sgmldecl, unused-map, unused-param, empty and unclosed.

A warning can be disabled by using its name prefixed with no-. Thus -wall -wno-duplicate will enable all warnings except those about duplicate entity declarations.

The following values for warning_type disable errors:

no-idref
Do not give an error for an ID reference value which no element has as its ID. The effect will be as if each attribute declared as an ID reference value had been declared as a name.
no-significant
Do not give an error when a character that is not a significant character in the reference concrete syntax occurs in a literal in the SGML declaration. This may be useful in conjunction with certain buggy test suites.
no-valid
Do not require the document to be type-valid. This has the effect of changing the SGML declaration to specify VALIDITY NOASSERT and IMPLYDEF ATTLIST YES ELEMENT YES. An option of -wvalid has the effect of changing the SGML declaration to specify VALIDITY TYPE and IMPLYDEF ATTLIST NO ELEMENT NO. If neither -wvalid nor -wno-valid are specified, then the VALIDITY and IMPLYDEF specified in the SGML declaration will be used.

The following options are also supported for backwards compatibility with sgmls:

-d
Same as -wduplicate.
-l
Same as -oline.
-msysid
Same as -c.
-r
Same as -wdefault.
-u
Same as -wundef.

James Clark
jjc@jclark.com
openjade-1.3.2/doc/sgmldecl.htm0100664000076400007640000001626406713045031014476 0ustar ianian SP - SGML declaration

Handling of the SGML declaration in SP

Extended Naming Rules

SP supports the Extended Naming Rules as specified in Annex J of ISO 8879:1986 (added by the 1996 technical corrigendum).

Default SGML declaration

If the SGML declaration is omitted and there is no applicable SGMLDECL entry in a catalog, the following declaration will be implied:

		    <!SGML "ISO 8879:1986"
			    CHARSET
BASESET  "ISO 646-1983//CHARSET
	  International Reference Version (IRV)//ESC 2/5 4/0"
DESCSET    0  9 UNUSED
	   9  2  9
	  11  2 UNUSED
	  13  1 13
	  14 18 UNUSED
	  32 95 32
	 127  1 UNUSED
CAPACITY PUBLIC    "ISO 8879:1986//CAPACITY Reference//EN"
SCOPE    DOCUMENT
SYNTAX
SHUNCHAR CONTROLS 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
	 18 19 20 21 22 23 24 25 26 27 28 29 30 31 127 255
BASESET  "ISO 646-1983//CHARSET International Reference Version
	  (IRV)//ESC 2/5 4/0"
DESCSET  0 128 0
FUNCTION RE                    13
	 RS                    10
	 SPACE                 32
	 TAB       SEPCHAR     9
NAMING   LCNMSTRT  ""
	 UCNMSTRT  ""
	 LCNMCHAR  "-."
	 UCNMCHAR  "-."
	 NAMECASE  GENERAL     YES
		   ENTITY      NO
DELIM    GENERAL   SGMLREF
	 SHORTREF  SGMLREF
NAMES    SGMLREF
QUANTITY SGMLREF
	 ATTCNT    99999999
	 ATTSPLEN  99999999
	 DTEMPLEN  24000
	 ENTLVL    99999999
	 GRPCNT    99999999
	 GRPGTCNT  99999999
	 GRPLVL    99999999
	 LITLEN    24000
	 NAMELEN   99999999
	 PILEN     24000
	 TAGLEN    99999999
	 TAGLVL    99999999
			   FEATURES
MINIMIZE DATATAG   NO
	 OMITTAG   YES
	 RANK      YES
	 SHORTTAG  YES
LINK     SIMPLE    YES 1000
	 IMPLICIT  YES
	 EXPLICIT  YES 1
OTHER    CONCUR    NO
	 SUBDOC    YES 99999999
	 FORMAL    YES
			  APPINFO NONE>

with the exception that all characters that are neither significant nor shunned will be assigned to DATACHAR.

Character sets

A character in a base character set is described either by giving its number in a universal character set, or by specifying a minimum literal. The first 65536 character numbers in the universal character set are assumed to be the same as in Unicode 2.0 (ISO/IEC 10646). The remaining character numbers can be assigned in any way convenient.

The public identifier of a base character set can be associated with an entity that describes it by using a PUBLIC entry in the catalog entry file. The entity must be a fragment of an SGML declaration consisting of the portion of a character set description, following the DESCSET keyword, that is, it must be a sequence of character descriptions, where each character description specifies a described character number, the number of characters and either a character number in the universal character set, a minimum literal or the keyword UNUSED. Character numbers in the universal character set can be as big as 99999999.

In addition SP has built in knowledge of many character sets. These are identified using the designating sequence in the public identifier. The following designating sequences are recognized:

ESC 2/5 4/0
The full set of ISO 646 IRV. This is not a registered character set, but is recommended by ISO 8879 (clause 10.2.2.4).
ESC 2/8 4/0
G0 set of ISO 646 IRV, ISO Registration Number 2.
ESC 2/8 4/2
G0 set of ASCII, ISO Registration Number 6.
ESC 2/1 4/0
C0 set of ISO 646, ISO Registration Number 1.
ESC 2/13 4/1
G1 set of ISO 8859-1
ESC 2/13 4/2
G1 set of ISO 8859-2
ESC 2/13 4/3
G1 set of ISO 8859-3
ESC 2/13 4/4
G1 set of ISO 8859-4
ESC 2/13 4/12
G1 set of ISO 8859-5
ESC 2/13 4/7
G1 set of ISO 8859-6
ESC 2/13 4/6
G1 set of ISO 8859-7
ESC 2/13 4/8
G1 set of ISO 8859-8
ESC 2/13 4/13
G1 set of ISO 8859-9
ESC 2/8 4/10
Roman set from JIS-X-0202. JIS version of ISO 646. ISO Registration Number 14.
ESC 2/8 4/9
Katakana set from JIS X 0201. ISO Registration Number 13.
ESC 2/4 4/2
ESC 2/6 4/0 ESC 2/4 4/2
JIS X 0208-1990. ISO Registration Numbers 87 and 168.
ESC 2/4 2/8 4/4
JIS X 0212-1990. ISO Registration Number 159.
ESC 2/4 4/1
GB 2312-80. ISO Registration Number 58.
ESC 2/4 2/8 4/3
KS C 5601-1992. ISO Registration Number 149.
ESC 2/5 2/15 4/0
ESC 2/5 2/15 4/3
ESC 2/5 2/15 4/5
ISO/IEC 10646 UCS-2
ESC 2/5 2/15 4/1
ESC 2/5 2/15 4/4
ESC 2/5 2/15 4/6
ISO/IEC 10646 UCS-4

Concrete syntaxes

The public identifier for a public concrete syntax can be associated with an entity that describes using a PUBLIC entry in the catalog entry file. The entity must be a fragment of an SGML declaration consisting of a concrete syntax description starting with the SHUNCHAR keyword as in an SGML declaration. The entity can also make use of the following extensions:

  • The Extended Naming Rules extensions can be used regardless of the minimum literal used in the SGML declaration.
  • An added function can be expressed as a parameter literal instead of a name.
  • The replacement for a reference reserved name can be expressed as a parameter literal instead of a name.
  • The total number of characters specified for UCNMCHAR or UCNMSTRT may exceed the total number of characters specified for LCNMCHAR or LCNMSTRT respectively. Each character in UCNMCHAR or UCNMSTRT which does not have a corresponding character in the same position in LCNMCHAR or LCNMSTRT is simply assigned to UCNMCHAR or UCNMSTRT without making it the upper-case form of any character.
  • Within the specification of the short reference delimiters, a parameter literal containing exactly one character may be followed by the delimiter - and another parameter literal containing exactly one character. This has the same meaning as a sequence of parameter literals one for each character number that is greater than or equal to the number of the character in the first parameter literal and less than or equal to the number of the character in the second parameter literal.
  • A number may be used as a delimiter in the DELIM section with the same meaning as a parameter literal containing just a numeric character reference with that number.

Capacity sets

The public identifier for a public capacity set can be associated with an entity that describes using a PUBLIC entry in the catalog entry file. The entity must be a fragment of an SGML declaration consisting of a sequence of capacity names and numbers.

James Clark
jjc@jclark.com
openjade-1.3.2/doc/sgmlnorm.htm0100664000076400007640000000727606713045031014545 0ustar ianian SGMLNORM

SGMLNORM

An SGML System Conforming to International Standard ISO 8879 --
Standard Generalized Markup Language

SYNOPSIS

sgmlnorm [ -Cdemnv ] [ -bbctf ] [ -ccatalog ] [ -Ddir ] [ -iname ] [ -wwarning ] sysid...

DESCRIPTION

Sgmlnorm prints on the standard output a normalized document instance for the SGML document contained in the concatenation of the entities with system identifiers sysid....

When the normalized instance is prefixed with the original SGML declaration and prolog, it will have the same ESIS as the original SGML document, with the following exceptions:

  • The output of sgmlnorm does not protect against the recognition of short reference delimiters, so any USEMAP declarations must be removed from the DTD.
  • The normalized instance will use the reference delimiters, even if the original instance did not.
  • If marked sections are included in the output using the -m option, the reference reserved names will be used for the status keywords even if the original instance did not.
  • Any ESIS information relating to the SGML LINK feature will be lost.

The normalized instance will not use any markup minimization features except that:

  • Any attributes that were not specified in the original instance will not be included in the normalized instance. (Current attributes will be included.)
  • If the declared value of an attribute was a name token group, and a value was specified that was the same as the name of the attribute, then the attribute name and value indicator will be omitted. For example, with HTML sgmlnorm would output <DL COMPACT> rather than <DL COMPACT="COMPACT">

The following options are available:

-bbctf
Use the BCTF with name bctf for output.
-cfile
Use the catalog entry file file.
-C
This has the same effect as in nsgmls.
-d
Output a document type declaration with the same external identifier as the input document, and with no internal declaration subset. No check is performed that the document instance is valid with respect to this DTD.
-Ddirectory
Search directory for files specified in system identifiers. This has the same effect as in nsgmls.
-e
Describe open entities in error messages.
-iname
This has the same effect as in nsgmls.
-m
Output any marked sections that were in the input document instance.
-n
Output any comments that were in the input document instance.
-r
Raw output. Don't perform any conversion on RSs and REs when printing the entity. The entity would typically have the storage manager attribute records=asis.
-v
Print the version number.
-wtype
Control warnings and errors according to type. This has the same effect as in nsgmls.

James Clark
jjc@jclark.com
openjade-1.3.2/doc/sgmlsout.htm0100664000076400007640000002463106713045130014556 0ustar ianian Nsgmls Output Format

Nsgmls Output Format

The output is a series of lines. Lines can be arbitrarily long. Each line consists of an initial command character and one or more arguments. Arguments are separated by a single space, but when a command takes a fixed number of arguments the last argument can contain spaces. There is no space between the command character and the first argument. Arguments can contain the following escape sequences:

\\
A \.
\n
A record end character.
\|
Internal SDATA entities are bracketed by these.
\nnn
The character whose code is nnn octal.

A record start character will be represented by \012. Most applications will need to ignore \012 and translate \n into newline.

\#n;
The character whose number is n decimal in the internal character set. n can have any number of digits. This is used for characters that are not representable by the encoding used for output. This will only occur with the multibyte version of nsgmls.
\%n;
The character whose number is n decimal in the document character set. n can have any number of digits. This is used for data characters resulting from numeric character references to non-SGML characters in fixed character set mode.

The possible command characters and arguments are as follows:

(gi
The start of an element whose generic identifier is gi. Any attributes for this element will have been specified with A commands.
)gi
The end of an element whose generic identifier is gi.
-data
Data.
&name
A reference to an external data entity name; name will have been defined using an E command.
?pi
A processing instruction with data pi.
Aname val
The next element to start has an attribute name with value val which takes one of the following forms:
IMPLIED
The value of the attribute is implied.
CDATA data
The attribute is character data. This is used for attributes whose declared value is CDATA.
NOTATION nname
The attribute is a notation name; nname will have been defined using a N command. This is used for attributes whose declared value is NOTATION.
ENTITY name...
The attribute is a list of general entity names. Each entity name will have been defined using an I, E or S command. This is used for attributes whose declared value is ENTITY or ENTITIES.
TOKEN token...
The attribute is a list of tokens. This is used for attributes whose declared value is anything else.
ID token
The attribute is an ID value. This will be output only if the -oid option is specified. Otherwise TOKEN will be used for ID values.
Dename name val
This is the same as the A command, except that it specifies a data attribute for an external entity named ename. Any D commands will come after the E command that defines the entity to which they apply, but before any & or A commands that reference the entity.
atype name val
The next element to start has a link attribute with link type type, name name, and value val, which takes the same form as with the A command.
Nnname
Define a notation nname. This command will be preceded by a p command if the notation was declared with a public identifier, and by a s command if the notation was declared with a system identifier. If the -onotation-sysid option was specified, this command will also be preceded by an f command giving the system identifier generated by the entity manager (unless it was unable to generate one). A notation will only be defined if it is to be referenced in an E command or in an A command for an attribute with a declared value of NOTATION.
Eename typ nname
Define an external data entity named ename with type typ (CDATA, NDATA or SDATA) and notation not. Thiscommand will be preceded by an f command giving the system identifier generated by the entity manager (unless it was unable to generate one), by a p command if a public identifier was declared for the entity, and by a s command if a system identifier was declared for the entity. not will have been defined using a N command. Data attributes may be specified for the entity using D commands. If the -oentity option is not specified, an external data entity will only be defined if it is to be referenced in a & command or in an A command for an attribute whose declared value is ENTITY or ENTITIES.
Iename typ text
Define an internal data entity named ename with type typ and entity text text. The typ will be CDATA or SDATA unless the -oentity option was specified, in which case it can also be PI or TEXT (for an SGML text entity). If the -oentity option is not specified, an internal data entity will only be defined if it is referenced in an A command for an attribute whose declared value is ENTITY or ENTITIES.
Sename
Define a subdocument entity named ename. This command will be preceded by an f command giving the system identifier generated by the entity manager (unless it was unable to generate one), by a p command if a public identifier was declared for the entity, and by a s command if a system identifier was declared for the entity. If the -oentity option is not specified, a subdocument entity will only be defined if it is referenced in a { command or in an A command for an attribute whose declared value is ENTITY or ENTITIES.
Tename
Define an external SGML text entity named ename. This command will be preceded by an f command giving the system identifier generated by the entity manager (unless it was unable to generate one), by a p command if a public identifier was declared for the entity, and by a s command if a system identifier was declared for the entity. This command will be output only if the -oentity option is specified.
ssysid
This command applies to the next E, S, T or N command and specifies the associated system identifier.
ppubid
This command applies to the next E, S, T or N command and specifies the associated public identifier.
fsysid
This command applies to the next E, S, T or, if the -onotation-sysid option was specified, N command and specifies the system identifier generated by the entity manager from the specified external identifier and other information about the entity or notation.
{ename
The start of the SGML subdocument entity ename; ename will have been defined using a S command.
}ename
The end of the SGML subdocument entity ename.
Llineno file
Llineno
Set the current line number and filename. The file argument will be omitted if only the line number has changed. This will be output only if the -l option has been given.
#text
An APPINFO parameter of text was specified in the SGML declaration. This is not strictly part of the ESIS, but a structure-controlled application is permitted to act on it. No # command will be output if APPINFO NONE was specified. A # command will occur at most once, and may be preceded only by a single L command.
C
This command indicates that the document was a conforming SGML document. If this command is output, it will be the last command. An SGML document is not conforming if it references a subdocument entity that is not conforming.
i
The next element to start is an included subelement. This will be output only if the -oincluded option is specified.
e
The next element to start has a declared content of EMPTY or a content reference attribute, and so its end-tag must be omitted. This will be output only if the -oempty option is specified.

James Clark
jjc@jclark.com
openjade-1.3.2/doc/spam.htm0100664000076400007640000001475206713045130013644 0ustar ianian SPAM

SPAM

An SGML System Conforming to International Standard ISO 8879 --
Standard Generalized Markup Language

SYNOPSIS

spam [ -Cehilprvx ] [ -ccatalog_file ] [ -Ddirectory ] [ -ffile ] [ -mmarkup_option ] [ -oentity_name ] [ -wwarning_type ] sysid...

DESCRIPTION

Spam (SP Add Markup) is an SGML markup stream editor implemented using the SP parser. Spam parses the SGML document contained in sysid... and copies to the standard output the portion of the document entity containing the document instance, adding or changing markup as specified by the -m options. The -p option can be used to include the SGML declaration and prolog in the output. The -o option can be used to output other entities. The -x option can be used to expand entity references.

The following options are available:

-cfile
Use the catalog entry file file.
-C
This has the same effect as in nsgmls.
-Ddirectory
Search directory for files specified in system identifiers. This has the same effect as in nsgmls.
-e
Describe open entities in error messages.
-ffile
Redirect errors to file. This is useful mainly with shells that do not support redirection of stderr.
-h
Hoist omitted tags out from the start of internal entities. If the text at the beginning of an internal entity causes a tag to be implied, the tag will usually be treated as being in that internal entity; this option will instead cause it to be treated as being in the entity that referenced the internal entity. This option makes a difference in conjunction with -momittag or -x -x.
-iname
This has the same effect as in nsgmls.
-l
Prefer lower-case. Added names that were subject to upper-case substitution will be converted to lower-case.
-mmarkup_option
Change the markup in the output according to the value of markup_option as follows:
omittag
Add tags that were omitted using omitted tag minimization. End tags that were omitted because the element has a declared content of EMPTY or an explicit content reference will not be added.
shortref
Replace short references by named entity references.
net
Change null end-tags into unminimized end-tags, and change net-enabling start-tags into unminimized start-tags.
emptytag
Change empty tags into unminimized tags.
unclosed
Change unclosed tags into unminimized tags.
attname
Add omitted attribute names and vis.
attvalue
Add literal delimiters omitted from attribute values.
attspec
Add omitted attribute specifications.
current
Add omitted attribute specifications for current attributes. This option is implied by the attspec option.
shorttag
Equivalent to combination of net, emptytag, unclosed, attname, attvalue and attspec options.
rank
Add omitted rank suffixes.
reserved
Put reserved names in upper-case.
ms
Remove marked section declarations whose effective status is IGNORE, and replace each marked section declaration whose effective status is INCLUDE by its marked section. In the document instance, empty comments will be added before or after the marked section declaration to ensure that ignored record ends remain ignored.

Multiple -m options are allowed.

-oname
Output the general entity name instead of the document entity. The output will correspond to the first time that the entity is referenced in content.
-p
Output the part of the document entity containing the SGML declaration (if it was explicitly present in the document entity) and the prolog before anything else. If this option is specified two or more times, then all entity references occurring between declarations in the prolog will be expanded; this includes the implicit reference to the entity containing the external subset of the DTD, if there is one. Note that the SGML declaration will not be included if it was specified by an SGMLDECL entry in a catalog.
-r
Don't perform any conversion on RSs and REs when outputting the entity. The entity would typically have the storage manager attribute records=asis.
-v
Print the version number.
-wtype
Control warnings and errors according to type. This has the same effect as in nsgmls.
-x
Expand references to entities that are changed. If this option is specified two or more times, then all references to entities that contain tags will be expanded.

BUGS

Omitted tags are added at the point where they are implied by the SGML parser (except as modified by the -h option); this is often not quite where they are wanted.

The case of general delimiters is not preserved.

Incorrect results may be produced if a variant concrete syntax is used which is such that there are delimiters in markup to be added that have a prefix that is a proper suffix of some other delimiter.

If an entity reference in a default value uses the default entity and an entity with that name is subsequently defined and that default value is added to the document instance, then the resulting document may not be equivalent to the original document. Spam will give a warning when the first two conditions are met.

James Clark
jjc@jclark.com
openjade-1.3.2/doc/spent.htm0100664000076400007640000000277306713045031014035 0ustar ianian SPENT

SPENT

SYNOPSIS

spent [ -Cnrv ] [ -bbctf ] [ -Ddirectory ] sysid...

DESCRIPTION

Spent (SGML print entity) prints the concatenation of the entities with system identifiers sysid... on the standard output.

The following options are available:

-bbctf
Use the BCTF with name bctf for output.
-C
This has the same effect as in nsgmls.
-Ddirectory
Search directory for files specified in system identifiers. This has the same effect as in nsgmls.
-n
The entity is a non-SGML data entity. This option forces the octets in the storage objects comprising the entity to be copied exactly without any of the conversions that are done for text entities. Implies -r.
-r
Raw output. Don't perform any conversion on RSs and REs when printing the entity. The entity would typically have the storage manager attribute records=asis.
-v
Print the version number.

James Clark
jjc@jclark.com
openjade-1.3.2/doc/sx.htm0100664000076400007640000000751206713070400013330 0ustar ianian SX

SX

An SGML System Conforming to International Standard ISO 8879 --
Standard Generalized Markup Language

SYNOPSIS

sx [ -Cehilprvx ] [ -bencoding ] [ -ccatalog_file ] [ -Ddirectory ] [ -ffile ] [ -wwarning_type ] [ -xxml_output_option ] sysid...

DESCRIPTION

SX converts SGML to XML. SX parses and validates the SGML document contained in sysid... and writes an equivalent XML document to the standard output. SX will warn about SGML constructs which have no XML equivalent.

The following options are available:

-bencoding
Use encoding for output. By default SX uses UTF-8.
-cfile
Use the catalog entry file file.
-C
This has the same effect as in nsgmls.
-Ddirectory
Search directory for files specified in system identifiers. This has the same effect as in nsgmls.
-e
Describe open entities in error messages.
-ffile
Redirect errors to file. This is useful mainly with shells that do not support redirection of stderr.
-iname
This has the same effect as in nsgmls.
-v
Print the version number.
-wtype
Control warnings and errors according to type. This has the same effect as in nsgmls.
-xxml_output_option
Control the XML output according to the value of xml_output_option as follows:
no-nl-in-tag
Don't use newlines inside start-tags. Usually SX uses newlines inside start-tags so as to reduce the probability of excessively long lines.
id
Output attribute declarations for ID attributes.
notation
Output declarations for notations.
ndata
Output declarations for external data entities. XML requires these to be NDATA. SX will warn about CDATA and SDATA external data entities and output them as NDATA entities.
cdata
Use XML CDATA sections for CDATA marked sections and for elements with a declared content of CDATA.
comment
Output comment declarations. Comment declarations in the DTD will not be output.
lower
Prefer lower case. Names that were subjected to upper-case substitution by SGML will be folded to lower case. This does not include reserved names; XML requires these to be in upper-case.
pi-escape
Escape &<> in the contents of processing instructions using the amp, lt and gt entities. This allows processing instructions to contain the string >?, but requires that applications handle the escapes.
empty
Use the <e/> syntax for element types e declared as EMPTY.
attlist
Output a ATTLIST declaration for every element specifying the type of all attributes. The default will always be #IMPLIED.

Multiple -x options are allowed.

James Clark
jjc@jclark.com
openjade-1.3.2/doc/sysdecl.htm0100664000076400007640000000211706713045031014342 0ustar ianian SP - System declaration

SP System Declaration

The system declaration for SP is as follows:

			<!SYSTEM "ISO 8879:1986"
				CHARSET
BASESET  "ISO 646-1983//CHARSET
	  International Reference Version (IRV)//ESC 2/5 4/0"
DESCSET  0 128 0
CAPACITY PUBLIC  "ISO 8879:1986//CAPACITY Reference//EN"
			       FEATURES
MINIMIZE DATATAG NO        OMITTAG  YES     RANK     YES   SHORTTAG YES
LINK     SIMPLE  YES 65535 IMPLICIT YES     EXPLICIT YES 1
OTHER    CONCUR  NO        SUBDOC   YES 100 FORMAL   YES
SCOPE    DOCUMENT
SYNTAX   PUBLIC  "ISO 8879:1986//SYNTAX Reference//EN"
SYNTAX   PUBLIC  "ISO 8879:1986//SYNTAX Core//EN"
			       VALIDATE
	 GENERAL YES       MODEL    YES     EXCLUDE  YES   CAPACITY NO
	 NONSGML YES       SGML     YES     FORMAL   YES
				 SDIF
	 PACK    NO        UNPACK   NO>

The limit for the SUBDOC parameter is memory dependent.

Any legal concrete syntax may be used.

James Clark
jjc@jclark.com
openjade-1.3.2/doc/sysid.htm0100664000076400007640000002320206713045031014025 0ustar ianian SP - System identifiers

System identifiers

There are two kinds of system identifier: formal system identifiers and simple system identifiers. A system identifier that does not start with < will always be interpreted as a simple system identifier. A simple system identifier will always be interpreted either as a filename or as a URL.

Formal system identifiers

Formal system identifiers are based on the System Identifier facility defined in ISO/IEC 10744 (HyTime) Technical Corrigendum 1, Annex D. A system identifier that is a formal system identifier consists of a sequence of one or more storage object specifications. The objects specified by the storage object specifications are concatenated to form the entity. A storage object specification consists of an SGML start-tag in the reference concrete syntax followed by character data content. The generic identifier of the start-tag is the name of a storage manager. The content is a storage object identifier which identifies the storage object in a manner dependent on the storage manager. The start-tag can also specify attributes giving additional information about the storage object. Numeric character references are recognized in storage object identifiers and attribute value literals in the start-tag. Record ends are ignored in the storage object identifier as with SGML. A system identifier will be interpreted as a formal system identifier if it starts with a < followed by a storage manager name, followed by either > or white-space; otherwise it will be interpreted as a simple system identifier. A storage object identifier extends until the end of the system identifier or until the first occurrence of < followed by a storage manager name, followed by either > or white-space.

The following storage managers are available:

osfile
The storage object identifier is a filename. If the filename is relative it is resolved using a base filename. Normally the base filename is the name of the file in which the storage object identifier was specified, but this can be changed using the base attribute. The filename will be searched for first in the directory of the base filename. If it is not found there, then it will be searched for in directories specified with the -D option in the order in which they were specified on the command line, and then in the list of directories specified by the environment variable SGML_SEARCH_PATH. The list is separated by colons under Unix and by semi-colons under MSDOS.
osfd
The storage object identifier is an integer specifying a file descriptor. Thus a system identifier of <osfd>0 will refer to the standard input.
url
The storage object identifier is a URL. Only the http scheme is currently supported and not on all systems.
neutral
The storage manager is the storage manager of storage object in which the system identifier was specified (the underlying storage manager). However if the underlying storage manager does not support named storage objects (ie it is osfd), then the storage manager will be osfile. The storage object identifier is treated as a relative, hierarchical name separated by slashes (/) and will be transformed as appropriate for the underlying storage manager.
literal
The bit combinations of the storage object identifier are the contents of the storage object.

The following attributes are supported:

records
This describes how records are delimited in the storage object:
cr
Records are terminated by a carriage return.
lf
Records are terminated by a line feed.
crlf
Records are terminated by a carriage return followed by a line feed.
find
Records are terminated by whichever of cr, lf or crlf is first encountered in the storage object.
asis
No recognition of records is performed.

The default is find except for NDATA entities for which the default is asis. This attribute is not applicable to the literal storage manager.

When records are recognized in a storage object, a record start is inserted at the beginning of each record, and a record end at the end of each record. If there is a partial record (a record that doesn't end with the record terminator) at the end of the entity, then a record start will be inserted before it but no record end will be inserted after it.

The attribute name and = can be omitted for this attribute.

zapeof
This specifies whether a Control-Z character that occurs as the final byte in the storage object should be stripped. The following values are allowed:
zapeof
A final Control-Z should be stripped.
nozapeof
A final Control-Z should not be stripped.

The default is zapeof except for NDATA entities, entities declared in storage objects with zapeof=nozapeof and storage objects with records=asis. This attribute is not applicable to the literal storage manager.

The attribute name and = can be omitted for this attribute.

encoding
The encoding attribute specifies the encoding of the storage object. This attribute is used when the encoding is independent of the document character set. The value must be the name of an encoding. This attribute is not applicable to the literal storage manager.
bctf
The BCTF attribute specifies that the encoding of the storage object. This attribute is used when the encoding is document character set dependent. The value must be the name of a BCTF. This attribute is not applicable to the literal storage manager.
tracking
This specifies whether line boundaries should be tracked for this object: a value of track specifies that they should; a value of notrack specifies that they should not. The default value is track. Keeping track of where line boundaries occur in a storage object requires approximately one byte of storage per line and it may be desirable to disable this for very large storage objects.

The attribute name and = can be omitted for this attribute.

base
When the storage object identifier specified in the content of the storage object specification is relative, this specifies the base storage object identifier relative to which that storage object identifier should be resolved. When not specified a storage object identifier is interpreted relative to the storage object in which it is specified, provided that this has the same storage manager. This applies both to system identifiers specified in SGML documents and to system identifiers specified in the catalog entry files.
smcrd
The value is a single character that will be recognized in storage object identifiers (both in the content of storage object specifications and in the value of base attributes) as a storage manager character reference delimiter when followed by a digit. A storage manager character reference is like an SGML numeric character reference except that the number is interpreted as a character number in the inherent character set of the storage manager rather than the document character set. The default is for no character to be recognized as a storage manager character reference delimiter. Numeric character references cannot be used to prevent recognition of storage manager character reference delimiters.
fold
This applies only to the neutral storage manager. It specifies whether the storage object identifier should be folded to the customary case of the underlying storage manager if storage object identifiers for the underlying storage manager are case sensitive. The following values are allowed:
fold
The storage object identifier will be folded.
nofold
The storage object identifier will not be folded.

The default value is fold. The attribute name and = can be omitted for this attribute.

For example, on Unix filenames are case-sensitive and the customary case is lower-case. So if the underlying storage manager were osfile and the system was a Unix system, then <neutral>FOO.SGM would be equivalent to <osfile>foo.sgm.

Simple system identfiers

A simple system identifier is interpreted as a storage object identifier with a storage manager that depends on where the system identifier was specified: if it was specified in a storage object whose storage manager was url or if the system identifier looks like an absolute URL in a supported scheme, the storage manager will be url; otherwise the storage manager will be osfile. The storage manager attributes are defaulted as for a formal system identifier. Numeric character references are not recognized in simple system identifiers.

James Clark
jjc@jclark.com
openjade-1.3.2/doc/xml.htm0100664000076400007640000000443306713070400013475 0ustar ianian SP - XML support

XML support

Using SP to parse XML

To enable SP's support for XML 1.0:

  • Set the SP_CHARSET_FIXED environment variable to YES.
  • Set the SP_ENCODING environment variable to XML.
  • Set the SGML_CATALOG_FILES environment variable to point to the file pubtext/xml.soc.
  • Use the -wxml option.
  • If the document is not supposed to be valid, use -wno-valid option.

Limitations

SP does not enforce the following XML constraints:

  • XML constrains processing instructions with a target matching [Xx][Mm][Ll], both in terms of where they can occur and their content.
  • XML does not allow a parameter separator that is adjacent to a delimiter to be omitted.
  • XML has constraints on the use of & in parameter literals. In SGML terms, XML says that the ero delimiter is recognized in a parameter literal, and that it must be followed by an entity reference, but the entity reference is not expanded.

Line ends are normalized using SGML conventions to a CR/LF character pair rather than using the XML convention of a single LF character.

There is no support for characters outside the basic multilingual plane (ie those with scalar values greater than U+FFFF).

SP does not enforce XML's rules on not continuing normal processing after an error. Applications can enforce these if they choose.

Web SGML Adaptations Annex

SP's support for SGML is based on Annex K of ISO 8879 (the Web SGML Adaptations Annex). The following features of Annex K are not yet implemented:

  • Checking of ENTITIES REF assertions
  • #IMPLIED document type name
  • Implying definitions of notations and entities (IMPLYDEF ENTITY YES and NOTATION YES)
  • SGML declarations on subdocuments
  • DATA declared value
  • URN feature

James Clark
jjc@jclark.com
openjade-1.3.2/Makefile.comm.in0100664000076400007640000000326107572374377014443 0ustar ianian# # Makefile.sub.in - Common rules and definitions # # $Id: Makefile.comm.in,v 1.5.10.5 2002/12/01 11:56:47 icastle Exp $ # # Copyright (C) 1998 Cees de Groot # top_builddir=@TOP@ TOP=@TOP@ prefix=@prefix@ exec_prefix=@exec_prefix@ srcdir=@srcdir@ bindir=@bindir@ libdir=@libdir@ datadir=@datadir@ mandir=@mandir@ spincludedir=@SPINCLUDEDIR@ splibdir=@SPLIBDIR@ CXX=@CXX@ CC=@CC@ PERL=@PERL@ LIBTOOL=@LIBTOOL@ INSTALL=@INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) INSTALL_DATA = @INSTALL_DATA@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ LIBS=@LIBS@ DEFS=@DEFS@ -DDEFAULT_SCHEME_BUILTINS=\"${datadir}/builtins.dsl\" INCS=-I$(srcdir) -I$(srcdir)/../include -I$(spincludedir) -I$(spincludedir)/.. $(INCLUDE) CXXFLAGS=@CXXFLAGS@ $(INCS) $(DEBUG) $(DEFS) CFLAGS=@CFLAGS@ $(DEBUG) $(DEFS) LDFLAGS=@LDFLAGS@ MSGGENFLAGS= -l jstyleModule CXXDEPGENFLAGS=-MM .SUFFIXES: .cxx .c .o .m4 .msg .lo .cxx.o: $(CXX) $(CXXFLAGS) -c $< .cxx.lo: @$(LIBTOOL) --mode=compile $(CXX) $(CXXFLAGS) -c $< .c.o: $(CC) $(CFLAGS) -c $< .c.lo: @$(LIBTOOL) --mode=compile $(CC) $(CFLAGS) -c $< .m4.cxx: rm -f $@ $(PERL) $(srcdir)/../instmac.pl $< >$@ chmod -w $@ %.h %.cxx %.rc: %.msg $(PERL) -w $(srcdir)/../msggen.pl $(MSGGENFLAGS) $< .msg.h: $(PERL) -w $(srcdir)/../msggen.pl $(MSGGENFLAGS) $< depend_src: depend.temp mv depend.temp Makefile.dep depend.temp: FORCE $(CXX) -MM $(CXXFLAGS) $(CXXDEPGENFLAGS) $(OBJS:.o=.cxx) \ | sed -e 's; \([^/ ][^/ ]*\)/; $$(srcdir)/\1/;g' >depend.temp1 cat depend.temp1 > depend.temp cat depend.temp1 | sed -e 's/\.o:/.lo:/g' >> depend.temp rm depend.temp1 clean: FORCE -rm -f $(CLEANFILES) FORCE: %: RCS/%,v test -w $@ || co -u $@ openjade-1.3.2/Makefile.lib.CC0100664000076400007640000000102206713045031014100 0ustar ianianall pure: lib$(LIB).a # FIXME needs also to depend on template files REPOSITORY=ptrepository lib$(LIB).a: $(OBJS) $(COBJS) $(DEPLIBS) - $(CXX) $(ALL_CXXFLAGS) $(OBJS) $(COBJS) $(DEPLIBS) -rm -f a.out if test -d $(REPOSITORY); then \ i=1; \ tmpdir=/tmp/ar.$$$$; \ rm -fr $$tmpdir; \ mkdir $$tmpdir; \ for o in $(REPOSITORY)/*.o; do \ cp $$o $$tmpdir/$$i.o; \ i=`expr $$i + 1`; \ done ; \ $(AR) r $@ $$tmpdir/*.o ; \ fi $(AR) r $@ $? depend: depend_src depend.temp: $(GENSRCS) gen: $(GENSRCS) openjade-1.3.2/Makefile.lib.in0100664000076400007640000000166207423251701014235 0ustar ianian# # Makefile.lib.in - Makerules for building libraries # # $Id: Makefile.lib.in,v 1.2.4.1.2.4 2002/01/22 11:57:53 icastle Exp $ # # Copyright (C) 1998 Cees A. de Groot # CLEANFILES=-r lib$(LIB).la $(OBJS) $(COBJS) $(LT_OBJS) core .libs Makefile.lt top_builddir=@TOP@ LIB_THREADS=@LIB_THREADS@ mkinstalldirs = $(SHELL) $(TOP)/config/mkinstalldirs INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) transform = @program_transform_name@ LINKFLAGS = @LINKFLAGS@ all: lib$(LIB).la pure: all Makefile.lt: echo 'LT_OBJS='`echo $(OBJS)|sed 's/\.o/.lo/g'` >Makefile.lt lib$(LIB).la: $(LT_OBJS) $(LIBTOOL) --mode=link $(CC) $(LINKFLAGS) -o lib$(LIB).la $(LT_OBJS) \ -rpath $(libdir) -version-info $(LTVERSION) $(DEPLIBS) install: $(mkinstalldirs) $(DESTDIR)$(libdir) $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) lib$(LIB).la $(DESTDIR)$(libdir) depend: depend_src depend.temp: $(GENSRCS) gen: $(GENSRCS) openjade-1.3.2/Makefile.lib.sun0100664000076400007640000000037206713045031014427 0ustar ianianCLEANFILES=lib$(LIB).a $(OBJS) $(COBJS) core all: lib$(LIB).a lib$(LIB).a: $(OBJS) $(COBJS) $(DEPLIBS) $(CXX) $(ALL_CXXFLAGS) -xar -o $@ $(OBJS) $(COBJS) $(DEPLIBS) install: install-man: depend: depend_src depend.temp: $(GENSRCS) gen: $(GENSRCS) openjade-1.3.2/Makefile.prog.in0100664000076400007640000000155407423251701014436 0ustar ianian# # Makefile.prog.in - Makerules for bilding programs # # $Id: Makefile.prog.in,v 1.1.1.2.6.1.2.3 2002/01/22 11:57:53 icastle Exp $ # # Copyright (C) 1998 Cees A. de Groot # CLEANFILES=-r $(PROG) $(OBJS) core .libs Makefile.lt top_builddir=@TOP@ LINKFLAGS = @LINKFLAGS@ ALL_LIBS = $(XLIBS) $(LIBS) Makefile.lt: echo 'LT_LIBS='`echo $(ALL_LIBS)|sed 's/\.a/.la/g'` >Makefile.lt PROG:=$(shell echo "$(PROG)" | sed '@program_transform_name@') all: $(PROG) $(PROG): $(OBJS) $(COBJS) $(LT_LIBS) $(LIBTOOL) --mode=link $(CXX) $(LINKFLAGS) $(CXXFLAGS) $(LDFLAGS) -o $@ $(OBJS) $(COBJS) $(LT_LIBS) install: $(PROG) -test -d $(DESTDIR)$(bindir) || \ (mkdir $(DESTDIR)$(bindir); chmod 755 $(DESTDIR)$(bindir)) -rm -f $(DESTDIR)$(bindir)/$(PROG) $(LIBTOOL) --mode=install $(INSTALL) $(PROG) $(DESTDIR)$(bindir) depend: depend_src depend.temp: $(GENSRCS) gen: $(GENSRCS) openjade-1.3.2/Makefile.wat0100664000076400007640000000657606713046711013672 0ustar ianian# Copyright (c) 1994, 1995 James Clark # See the file COPYING for copying permission. # Makefile for Watcom C/C++ 10.5a CXX=wcl386 srcdir=.. TARGET=dos LINK_SYSTEM=dos4g STACK_SIZE=128k OPTIMIZE=/otx /zp4 /4 SEARCHPATH=$(srcdir)\include;$(srcdir)\lib;$(srcdir)\generic;$(srcdir)\nsgmls;$(srcdir)\spam;$(srcdir)\sgmlnorm;$(srcdir)\spent CXXFLAGS=/bt=$(TARGET) /zq $(OPTIMIZE) /i=$(SEARCHPATH) LIBFLAGS=-p=32 LDFLAGS=/l=$(LINK_SYSTEM) /k$(STACK_SIZE) NSGMLS_OBJS=nsgmls.obj SgmlsEventHandler.obj RastEventHandler.obj & StringSet.obj nsgmls_inst.obj SPAM_OBJS=spam.obj CopyEventHandler.obj MarkupEventHandler.obj spam_inst.obj SGMLNORM_OBJS=sgmlnorm.obj SGMLGenerator.obj SPENT_OBJS=spent.obj LIB_OBJS=Allocator.obj & ArcEngine.obj & Attribute.obj & Big5CodingSystem.obj & CharsetDecl.obj & CharsetInfo.obj & CharsetRegistry.obj & CmdLineApp.obj & CodingSystem.obj & CodingSystemKit.obj & ConsoleOutput.obj & ContentState.obj & ContentToken.obj & DescriptorManager.obj & Dtd.obj & EUCJPCodingSystem.obj & ElementType.obj & Entity.obj & EntityApp.obj & EntityCatalog.obj & EntityDecl.obj & EntityManager.obj & ErrnoMessageArg.obj & ErrorCountEventHandler.obj & Event.obj & EventGenerator.obj & ExtendEntityManager.obj & ExternalId.obj & Fixed2CodingSystem.obj & GenericEventHandler.obj & Group.obj & Hash.obj & IListBase.obj & Id.obj & IdentityCodingSystem.obj & InputSource.obj & InternalInputSource.obj & Link.obj & LinkProcess.obj & LiteralStorage.obj & Location.obj & Lpd.obj & Markup.obj & Message.obj & MessageArg.obj & MessageEventHandler.obj & MessageFormatter.obj & MessageReporter.obj & MessageTable.obj & ModeInfo.obj & Notation.obj & NotationStorage.obj & NumericCharRefOrigin.obj & OffsetOrderedList.obj & OpenElement.obj & OutputByteStream.obj & OutputCharStream.obj & OutputState.obj & Param.obj & Parser.obj & ParserApp.obj & ParserEventGeneratorKit.obj & ParserMessages.obj & ParserOptions.obj & ParserState.obj & Partition.obj & PosixStorage.obj & Recognizer.obj & RewindStorageObject.obj & SJISCodingSystem.obj & SOEntityCatalog.obj & Sd.obj & SdText.obj & SearchResultMessageArg.obj & SgmlParser.obj & SGMLApplication.obj & ShortReferenceMap.obj & StdioStorage.obj & StorageManager.obj & StringVectorMessageArg.obj & Syntax.obj & Text.obj & TokenMessageArg.obj & TranslateCodingSystem.obj & TrieBuilder.obj & TypeId.obj & URLStorage.obj & UTF8CodingSystem.obj & Undo.obj & UnicodeCodingSystem.obj & UnivCharsetDesc.obj & Win32CodingSystem.obj & app_inst.obj & arc_inst.obj & assert.obj & entmgr_inst.obj & parseAttribute.obj & parseCommon.obj & parseDecl.obj & parseInstance.obj & parseMode.obj & parseParam.obj & parseSd.obj & parser_inst.obj & xentmgr_inst.obj & LIB=libsp.lib all: nsgmls.exe spam.exe sgmlnorm.exe spent.exe nsgmls.exe: $(NSGMLS_OBJS) $(LIB) $(CXX) $(NSGMLS_OBJS) $(LIB) /fe=$@ $(CXXFLAGS) $(LDFLAGS) spam.exe: $(SPAM_OBJS) $(LIB) $(CXX) $(SPAM_OBJS) $(LIB) /fe=$@ $(CXXFLAGS) $(LDFLAGS) sgmlnorm.exe: $(SGMLNORM_OBJS) $(LIB) $(CXX) $(SGMLNORM_OBJS) $(LIB) /fe=$@ $(CXXFLAGS) $(LDFLAGS) spent.exe: $(SPENT_OBJS) $(LIB) $(CXX) $(SPENT_OBJS) $(LIB) /fe=$@ $(CXXFLAGS) $(LDFLAGS) $(LIB): $(LIB_OBJS) wlib $(LIBFLAGS) $(LIB) $? .cxx.obj: .AUTODEPEND $(CXX) $[@ /c $(CXXFLAGS) .cxx: $(SEARCHPATH) openjade-1.3.2/NEWS0100664000076400007640000001060707572424460012132 0ustar ianianChanges in OpenJade 1.3.2 (December 2002) * Build against OpenSP 1.5 * Minor fixes to MIF backend * Correct typo in definition of "attribute" in builtin.dsl (Toby Speight) * Fix quoted of ampersand in XML/SGML transformations (Toby Speight) Changes in OpenJade 1.3.1 (January 2002) * Support for newer GNU source configuration tools (autoconf, libtool, automake) * Support for newer GNU and Microsoft compilers * Support for more/up to date platforms (Mac OS X, Darwin, BSD, Cygwin etc.) * Numerous bug fixes to TeX backend for improved table support and two sided output. Two new external procedures two control double sided output (required by jadetex 3.4 or greater). "UNREGISTERED::OpenJade//Characteristic::page-two-side?" "UNREGISTERED::OpenJade//Characteristic::two-side-start-on-right?" * Support for XML Byte Order Marks Changes in OpenJade 1.3 * The SGML backend will no emit linebreaks when used as -t sgml-raw. * Jade can bind variables to arbitrary values on the command line. * The prlabs1 module of the SGML property set is supported. * Style sheet extensions.dsl lists all known external procedures ready for easy inclusion as an external-specification. * External procedure with public identifier "UNREGISTERED::OpenJade//Procedure::expt" allows to form integral powers of quantities. * External procedure with public identifier "UNREGISTERED::OpenJade//Procedure::sgml-parse" allows to parse wrt. an architecture. * Jade supports force! for inherited characteristics. * Jade supports character properties. * Jade supports special-query-expressions. * Jade can bind variables to string values on the command line. * All standard color spaces supported. * Jade ignores duplicate keywords in make expressions, as mandated by DSSSL. * External procedure with public identifier "UNREGISTERED::OpenJade//Procedure::language" to create a language object by reference to a POSIX locale. * Language-dependent procedures of the expression language: language?, current-language, declare-default-language, with-language, define-language, char?, char<=?, char>=?, char-ci=?, char-ci?, char-ci<=?, char-ci>=?, char-upcase, char-downcase, string-ci=?, string-equiv?, string?, string<=?, string>=?, string-ci?, string-ci<=?, string-ci>=?. * The style-sheet.dtd derived from the dsssl architecture has been extended (in a backwards compatible way) to include the delaration element type forms supported by Jade. The public identifier for the dtd is "-//OpenJade//DTD DSSSL Style Sheet//EN" * char-repertoire, add-name-chars and add-separator-chars declaration element type forms are supported. When given the -s cmdline flag, Jade doesn't use its builtin character repertoire. * Most of the derived procedures in the query language: current-root, node-list-reduce, node-list-contains?, node-list-remove-duplicates, node-list-union, node-list-intersection, node-list-difference, node-list-symmetric-difference, node-list-union-map, node-list-some?, node-list-every?, node-list-filter, node-list->list, node-list-tail, node-list-head, node-list-sublist, node-list-count, node-list-last, node-list-property, origin, origin-to-subnode-rel, tree-root, grove-root, source, subtree, subgrove, ancestors, grove-root-path, rsiblings, ipreced, ifollow, grove-before?, sort-in-tree-order, tree-before?, tree-before, property-lookup, select-by-property, select-by-null-property, select-by-missing-property, attribute, referent, q-element, q-class, q-sdata. Changes in OpenJade 1.2.2 * The HTML and MIF backends are now enabled by default. * The TeX backend has support for PDF bookmarks. This is supported by the new version of jadetex which is included. * Predefined character names line-feed and carriage-return for the character numbers 10 and 13. * standard-chars and map-sdata-entity declaration element type forms are supported. * Style language additions: map-constructor. * + and - return a length-spec if any of there arguments is a length-spec. * Most of the non-core expression language: c...r, assoc, keyword->string, string->keyword, exact?, inexact?, zero?, positive?, negative?, odd?, even?, exp, log, sin, cos, tan, asin, acos, atan, expt, exact->inexact, inexact->exact, quantity->number, string->list, list->string, map, time?, time<=?, time>=?. 1.2.1 The begin. openjade-1.3.2/README0100664000076400007640000000111207554622153012301 0ustar ianianCopyright (c) 1994, 1995, 1996 James Clark Copyright (c) 1999, 2002 OpenJade Project This package contains - a DSSSL processor called OpenJade. If you got this file as part of an OpenJade distribution, then you can find information about OpenJade in HTML format in jadedoc/jade.htm. See the file COPYING for copying permission. This is a production release. The version number of SP is given in the file VERSION. All documentation is in HTML format in the doc directory. Start with doc/index.htm. Please report any bugs you find to http://sourceforge.net/projects/openjade. openjade-1.3.2/SP.dsw0100664000076400007640000000413106713071521012457 0ustar ianianMicrosoft Developer Studio Workspace File, Format Version 6.00 # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! ############################################################################### Project: "lib"=".\lib\lib.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Project: "nsgmls"=".\nsgmls\nsgmls.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name lib End Project Dependency }}} ############################################################################### Project: "sgmlnorm"=".\sgmlnorm\sgmlnorm.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name lib End Project Dependency }}} ############################################################################### Project: "spam"=".\spam\spam.dsp" - Package Owner=<4> Package=<5> {{{ begin source code control c:\home\work\jade-vc6\spam\spam.pj .\spam end source code control }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name lib End Project Dependency }}} ############################################################################### Project: "spent"=".\spent\spent.dsp" - Package Owner=<4> Package=<5> {{{ begin source code control c:\home\work\jade-vc6\spent\spent.pj .\spent end source code control }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name lib End Project Dependency }}} ############################################################################### Project: "sx"=".\sx\sx.dsp" - Package Owner=<4> Package=<5> {{{ begin source code control c:\home\work\jade-vc6\sx\sx.pj .\sx end source code control }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name lib End Project Dependency }}} ############################################################################### Global: Package=<5> {{{ }}} Package=<3> {{{ }}} ############################################################################### openjade-1.3.2/SP.mak0100664000076400007640000224143706713071534012454 0ustar ianian# Microsoft Developer Studio Generated NMAKE File, Format Version 4.20 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 # TARGTYPE "Win32 (x86) External Target" 0x0106 # TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 !IF "$(CFG)" == "" CFG=sx - Win32 Debug !MESSAGE No configuration specified. Defaulting to sx - Win32 Debug. !ENDIF !IF "$(CFG)" != "lib - Win32 Release" && "$(CFG)" != "lib - Win32 Debug" &&\ "$(CFG)" != "nsgmls - Win32 Release" && "$(CFG)" != "nsgmls - Win32 Debug" &&\ "$(CFG)" != "spam - Win32 Release" && "$(CFG)" != "spam - Win32 Debug" &&\ "$(CFG)" != "spent - Win32 Release" && "$(CFG)" != "spent - Win32 Debug" &&\ "$(CFG)" != "sgmlnorm - Win32 Release" && "$(CFG)" != "sgmlnorm - Win32 Debug"\ && "$(CFG)" != "all - Win32 Release" && "$(CFG)" != "all - Win32 Debug" &&\ "$(CFG)" != "sx - Win32 Release" && "$(CFG)" != "sx - Win32 Debug" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE on this makefile !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "SP.mak" CFG="sx - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "lib - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE "lib - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE "nsgmls - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "nsgmls - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE "spam - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "spam - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE "spent - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "spent - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE "sgmlnorm - Win32 Release" (based on\ "Win32 (x86) Console Application") !MESSAGE "sgmlnorm - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE "all - Win32 Release" (based on "Win32 (x86) External Target") !MESSAGE "all - Win32 Debug" (based on "Win32 (x86) External Target") !MESSAGE "sx - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "sx - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF ################################################################################ # Begin Project # PROP Target_Last_Scanned "lib - Win32 Debug" !IF "$(CFG)" == "lib - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "lib\Release" # PROP BASE Intermediate_Dir "lib\Release" # PROP BASE Target_Dir "lib" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "lib\Release" # PROP Intermediate_Dir "lib\Release" # PROP Target_Dir "lib" OUTDIR=.\lib\Release INTDIR=.\lib\Release ALL : ".\bin\sp133.dll" CLEAN : -@erase "$(INTDIR)\Allocator.obj" -@erase "$(INTDIR)\app_inst.obj" -@erase "$(INTDIR)\arc_inst.obj" -@erase "$(INTDIR)\ArcEngine.obj" -@erase "$(INTDIR)\assert.obj" -@erase "$(INTDIR)\Attribute.obj" -@erase "$(INTDIR)\Big5CodingSystem.obj" -@erase "$(INTDIR)\CharsetDecl.obj" -@erase "$(INTDIR)\CharsetInfo.obj" -@erase "$(INTDIR)\CharsetRegistry.obj" -@erase "$(INTDIR)\CmdLineApp.obj" -@erase "$(INTDIR)\CodingSystem.obj" -@erase "$(INTDIR)\CodingSystemKit.obj" -@erase "$(INTDIR)\ConsoleOutput.obj" -@erase "$(INTDIR)\ContentState.obj" -@erase "$(INTDIR)\ContentToken.obj" -@erase "$(INTDIR)\DescriptorManager.obj" -@erase "$(INTDIR)\Dtd.obj" -@erase "$(INTDIR)\ElementType.obj" -@erase "$(INTDIR)\Entity.obj" -@erase "$(INTDIR)\EntityApp.obj" -@erase "$(INTDIR)\EntityCatalog.obj" -@erase "$(INTDIR)\EntityDecl.obj" -@erase "$(INTDIR)\EntityManager.obj" -@erase "$(INTDIR)\entmgr_inst.obj" -@erase "$(INTDIR)\ErrnoMessageArg.obj" -@erase "$(INTDIR)\ErrorCountEventHandler.obj" -@erase "$(INTDIR)\EUCJPCodingSystem.obj" -@erase "$(INTDIR)\Event.obj" -@erase "$(INTDIR)\EventGenerator.obj" -@erase "$(INTDIR)\ExtendEntityManager.obj" -@erase "$(INTDIR)\ExternalId.obj" -@erase "$(INTDIR)\Fixed2CodingSystem.obj" -@erase "$(INTDIR)\GenericEventHandler.obj" -@erase "$(INTDIR)\Group.obj" -@erase "$(INTDIR)\Hash.obj" -@erase "$(INTDIR)\Id.obj" -@erase "$(INTDIR)\IdentityCodingSystem.obj" -@erase "$(INTDIR)\IListBase.obj" -@erase "$(INTDIR)\InputSource.obj" -@erase "$(INTDIR)\InternalInputSource.obj" -@erase "$(INTDIR)\lib.pch" -@erase "$(INTDIR)\lib.res" -@erase "$(INTDIR)\Link.obj" -@erase "$(INTDIR)\LinkProcess.obj" -@erase "$(INTDIR)\LiteralStorage.obj" -@erase "$(INTDIR)\Location.obj" -@erase "$(INTDIR)\Lpd.obj" -@erase "$(INTDIR)\Markup.obj" -@erase "$(INTDIR)\Message.obj" -@erase "$(INTDIR)\MessageArg.obj" -@erase "$(INTDIR)\MessageEventHandler.obj" -@erase "$(INTDIR)\MessageFormatter.obj" -@erase "$(INTDIR)\MessageReporter.obj" -@erase "$(INTDIR)\MessageTable.obj" -@erase "$(INTDIR)\ModeInfo.obj" -@erase "$(INTDIR)\Notation.obj" -@erase "$(INTDIR)\NotationStorage.obj" -@erase "$(INTDIR)\NumericCharRefOrigin.obj" -@erase "$(INTDIR)\OffsetOrderedList.obj" -@erase "$(INTDIR)\OpenElement.obj" -@erase "$(INTDIR)\OutputByteStream.obj" -@erase "$(INTDIR)\OutputCharStream.obj" -@erase "$(INTDIR)\OutputState.obj" -@erase "$(INTDIR)\Param.obj" -@erase "$(INTDIR)\parseAttribute.obj" -@erase "$(INTDIR)\parseCommon.obj" -@erase "$(INTDIR)\parseDecl.obj" -@erase "$(INTDIR)\parseInstance.obj" -@erase "$(INTDIR)\parseMode.obj" -@erase "$(INTDIR)\parseParam.obj" -@erase "$(INTDIR)\Parser.obj" -@erase "$(INTDIR)\parser_inst.obj" -@erase "$(INTDIR)\ParserApp.obj" -@erase "$(INTDIR)\ParserEventGeneratorKit.obj" -@erase "$(INTDIR)\ParserMessages.obj" -@erase "$(INTDIR)\ParserOptions.obj" -@erase "$(INTDIR)\ParserState.obj" -@erase "$(INTDIR)\parseSd.obj" -@erase "$(INTDIR)\Partition.obj" -@erase "$(INTDIR)\PosixStorage.obj" -@erase "$(INTDIR)\Recognizer.obj" -@erase "$(INTDIR)\RewindStorageObject.obj" -@erase "$(INTDIR)\Sd.obj" -@erase "$(INTDIR)\SdText.obj" -@erase "$(INTDIR)\SearchResultMessageArg.obj" -@erase "$(INTDIR)\SGMLApplication.obj" -@erase "$(INTDIR)\SgmlParser.obj" -@erase "$(INTDIR)\ShortReferenceMap.obj" -@erase "$(INTDIR)\SJISCodingSystem.obj" -@erase "$(INTDIR)\SOEntityCatalog.obj" -@erase "$(INTDIR)\splib.obj" -@erase "$(INTDIR)\StdioStorage.obj" -@erase "$(INTDIR)\StorageManager.obj" -@erase "$(INTDIR)\StringVectorMessageArg.obj" -@erase "$(INTDIR)\Syntax.obj" -@erase "$(INTDIR)\Text.obj" -@erase "$(INTDIR)\TokenMessageArg.obj" -@erase "$(INTDIR)\TranslateCodingSystem.obj" -@erase "$(INTDIR)\TrieBuilder.obj" -@erase "$(INTDIR)\TypeId.obj" -@erase "$(INTDIR)\Undo.obj" -@erase "$(INTDIR)\UnicodeCodingSystem.obj" -@erase "$(INTDIR)\UnivCharsetDesc.obj" -@erase "$(INTDIR)\URLStorage.obj" -@erase "$(INTDIR)\UTF8CodingSystem.obj" -@erase "$(INTDIR)\Win32CodingSystem.obj" -@erase "$(INTDIR)\WinApp.obj" -@erase "$(INTDIR)\WinInetStorage.obj" -@erase "$(INTDIR)\xentmgr_inst.obj" -@erase "$(INTDIR)\XMLCodingSystem.obj" -@erase "$(OUTDIR)\sp133.exp" -@erase "$(OUTDIR)\sp133.lib" -@erase ".\bin\sp133.dll" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP=cl.exe # ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c # ADD CPP /nologo /MD /W3 /GX /O2 /I "include" /I "generic" /D "NDEBUG" /D "_WINDOWS" /D "WINSOCK" /D "WIN32" /D SP_NAMESPACE=James_Clark_SP /D "SP_MULTI_BYTE" /Yu"splib.h" /c CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "include" /I "generic" /D "NDEBUG" /D\ "_WINDOWS" /D "WINSOCK" /D "WIN32" /D SP_NAMESPACE=James_Clark_SP /D\ "SP_MULTI_BYTE" /Fp"$(INTDIR)/lib.pch" /Yu"splib.h" /Fo"$(INTDIR)/" /c CPP_OBJS=.\lib\Release/ CPP_SBRS=.\. .c{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .cpp{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .cxx{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .c{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< .cpp{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< .cxx{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< MTL=mktyplib.exe # ADD BASE MTL /nologo /D "NDEBUG" /win32 # ADD MTL /nologo /D "NDEBUG" /win32 MTL_PROJ=/nologo /D "NDEBUG" /win32 RSC=rc.exe # ADD BASE RSC /l 0x809 /d "NDEBUG" # ADD RSC /l 0x809 /d "NDEBUG" RSC_PROJ=/l 0x809 /fo"$(INTDIR)/lib.res" /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo BSC32_FLAGS=/nologo /o"$(OUTDIR)/lib.bsc" BSC32_SBRS= \ LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /machine:I386 # ADD LINK32 wininet.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /machine:I386 /out:"bin/sp133.dll" # SUBTRACT LINK32 /profile LINK32_FLAGS=wininet.lib wsock32.lib kernel32.lib user32.lib gdi32.lib\ winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib\ uuid.lib /nologo /subsystem:windows /dll /incremental:no\ /pdb:"$(OUTDIR)/sp133.pdb" /machine:I386 /out:"bin/sp133.dll"\ /implib:"$(OUTDIR)/sp133.lib" LINK32_OBJS= \ "$(INTDIR)\Allocator.obj" \ "$(INTDIR)\app_inst.obj" \ "$(INTDIR)\arc_inst.obj" \ "$(INTDIR)\ArcEngine.obj" \ "$(INTDIR)\assert.obj" \ "$(INTDIR)\Attribute.obj" \ "$(INTDIR)\Big5CodingSystem.obj" \ "$(INTDIR)\CharsetDecl.obj" \ "$(INTDIR)\CharsetInfo.obj" \ "$(INTDIR)\CharsetRegistry.obj" \ "$(INTDIR)\CmdLineApp.obj" \ "$(INTDIR)\CodingSystem.obj" \ "$(INTDIR)\CodingSystemKit.obj" \ "$(INTDIR)\ConsoleOutput.obj" \ "$(INTDIR)\ContentState.obj" \ "$(INTDIR)\ContentToken.obj" \ "$(INTDIR)\DescriptorManager.obj" \ "$(INTDIR)\Dtd.obj" \ "$(INTDIR)\ElementType.obj" \ "$(INTDIR)\Entity.obj" \ "$(INTDIR)\EntityApp.obj" \ "$(INTDIR)\EntityCatalog.obj" \ "$(INTDIR)\EntityDecl.obj" \ "$(INTDIR)\EntityManager.obj" \ "$(INTDIR)\entmgr_inst.obj" \ "$(INTDIR)\ErrnoMessageArg.obj" \ "$(INTDIR)\ErrorCountEventHandler.obj" \ "$(INTDIR)\EUCJPCodingSystem.obj" \ "$(INTDIR)\Event.obj" \ "$(INTDIR)\EventGenerator.obj" \ "$(INTDIR)\ExtendEntityManager.obj" \ "$(INTDIR)\ExternalId.obj" \ "$(INTDIR)\Fixed2CodingSystem.obj" \ "$(INTDIR)\GenericEventHandler.obj" \ "$(INTDIR)\Group.obj" \ "$(INTDIR)\Hash.obj" \ "$(INTDIR)\Id.obj" \ "$(INTDIR)\IdentityCodingSystem.obj" \ "$(INTDIR)\IListBase.obj" \ "$(INTDIR)\InputSource.obj" \ "$(INTDIR)\InternalInputSource.obj" \ "$(INTDIR)\lib.res" \ "$(INTDIR)\Link.obj" \ "$(INTDIR)\LinkProcess.obj" \ "$(INTDIR)\LiteralStorage.obj" \ "$(INTDIR)\Location.obj" \ "$(INTDIR)\Lpd.obj" \ "$(INTDIR)\Markup.obj" \ "$(INTDIR)\Message.obj" \ "$(INTDIR)\MessageArg.obj" \ "$(INTDIR)\MessageEventHandler.obj" \ "$(INTDIR)\MessageFormatter.obj" \ "$(INTDIR)\MessageReporter.obj" \ "$(INTDIR)\MessageTable.obj" \ "$(INTDIR)\ModeInfo.obj" \ "$(INTDIR)\Notation.obj" \ "$(INTDIR)\NotationStorage.obj" \ "$(INTDIR)\NumericCharRefOrigin.obj" \ "$(INTDIR)\OffsetOrderedList.obj" \ "$(INTDIR)\OpenElement.obj" \ "$(INTDIR)\OutputByteStream.obj" \ "$(INTDIR)\OutputCharStream.obj" \ "$(INTDIR)\OutputState.obj" \ "$(INTDIR)\Param.obj" \ "$(INTDIR)\parseAttribute.obj" \ "$(INTDIR)\parseCommon.obj" \ "$(INTDIR)\parseDecl.obj" \ "$(INTDIR)\parseInstance.obj" \ "$(INTDIR)\parseMode.obj" \ "$(INTDIR)\parseParam.obj" \ "$(INTDIR)\Parser.obj" \ "$(INTDIR)\parser_inst.obj" \ "$(INTDIR)\ParserApp.obj" \ "$(INTDIR)\ParserEventGeneratorKit.obj" \ "$(INTDIR)\ParserMessages.obj" \ "$(INTDIR)\ParserOptions.obj" \ "$(INTDIR)\ParserState.obj" \ "$(INTDIR)\parseSd.obj" \ "$(INTDIR)\Partition.obj" \ "$(INTDIR)\PosixStorage.obj" \ "$(INTDIR)\Recognizer.obj" \ "$(INTDIR)\RewindStorageObject.obj" \ "$(INTDIR)\Sd.obj" \ "$(INTDIR)\SdText.obj" \ "$(INTDIR)\SearchResultMessageArg.obj" \ "$(INTDIR)\SGMLApplication.obj" \ "$(INTDIR)\SgmlParser.obj" \ "$(INTDIR)\ShortReferenceMap.obj" \ "$(INTDIR)\SJISCodingSystem.obj" \ "$(INTDIR)\SOEntityCatalog.obj" \ "$(INTDIR)\splib.obj" \ "$(INTDIR)\StdioStorage.obj" \ "$(INTDIR)\StorageManager.obj" \ "$(INTDIR)\StringVectorMessageArg.obj" \ "$(INTDIR)\Syntax.obj" \ "$(INTDIR)\Text.obj" \ "$(INTDIR)\TokenMessageArg.obj" \ "$(INTDIR)\TranslateCodingSystem.obj" \ "$(INTDIR)\TrieBuilder.obj" \ "$(INTDIR)\TypeId.obj" \ "$(INTDIR)\Undo.obj" \ "$(INTDIR)\UnicodeCodingSystem.obj" \ "$(INTDIR)\UnivCharsetDesc.obj" \ "$(INTDIR)\URLStorage.obj" \ "$(INTDIR)\UTF8CodingSystem.obj" \ "$(INTDIR)\Win32CodingSystem.obj" \ "$(INTDIR)\WinApp.obj" \ "$(INTDIR)\WinInetStorage.obj" \ "$(INTDIR)\xentmgr_inst.obj" \ "$(INTDIR)\XMLCodingSystem.obj" ".\bin\sp133.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "lib - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "lib\Debug" # PROP BASE Intermediate_Dir "lib\Debug" # PROP BASE Target_Dir "lib" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "lib\Debug" # PROP Intermediate_Dir "lib\Debug" # PROP Target_Dir "lib" OUTDIR=.\lib\Debug INTDIR=.\lib\Debug ALL : ".\dbgbin\sp133d.dll" CLEAN : -@erase "$(INTDIR)\Allocator.obj" -@erase "$(INTDIR)\app_inst.obj" -@erase "$(INTDIR)\arc_inst.obj" -@erase "$(INTDIR)\ArcEngine.obj" -@erase "$(INTDIR)\assert.obj" -@erase "$(INTDIR)\Attribute.obj" -@erase "$(INTDIR)\Big5CodingSystem.obj" -@erase "$(INTDIR)\CharsetDecl.obj" -@erase "$(INTDIR)\CharsetInfo.obj" -@erase "$(INTDIR)\CharsetRegistry.obj" -@erase "$(INTDIR)\CmdLineApp.obj" -@erase "$(INTDIR)\CodingSystem.obj" -@erase "$(INTDIR)\CodingSystemKit.obj" -@erase "$(INTDIR)\ConsoleOutput.obj" -@erase "$(INTDIR)\ContentState.obj" -@erase "$(INTDIR)\ContentToken.obj" -@erase "$(INTDIR)\DescriptorManager.obj" -@erase "$(INTDIR)\Dtd.obj" -@erase "$(INTDIR)\ElementType.obj" -@erase "$(INTDIR)\Entity.obj" -@erase "$(INTDIR)\EntityApp.obj" -@erase "$(INTDIR)\EntityCatalog.obj" -@erase "$(INTDIR)\EntityDecl.obj" -@erase "$(INTDIR)\EntityManager.obj" -@erase "$(INTDIR)\entmgr_inst.obj" -@erase "$(INTDIR)\ErrnoMessageArg.obj" -@erase "$(INTDIR)\ErrorCountEventHandler.obj" -@erase "$(INTDIR)\EUCJPCodingSystem.obj" -@erase "$(INTDIR)\Event.obj" -@erase "$(INTDIR)\EventGenerator.obj" -@erase "$(INTDIR)\ExtendEntityManager.obj" -@erase "$(INTDIR)\ExternalId.obj" -@erase "$(INTDIR)\Fixed2CodingSystem.obj" -@erase "$(INTDIR)\GenericEventHandler.obj" -@erase "$(INTDIR)\Group.obj" -@erase "$(INTDIR)\Hash.obj" -@erase "$(INTDIR)\Id.obj" -@erase "$(INTDIR)\IdentityCodingSystem.obj" -@erase "$(INTDIR)\IListBase.obj" -@erase "$(INTDIR)\InputSource.obj" -@erase "$(INTDIR)\InternalInputSource.obj" -@erase "$(INTDIR)\lib.pch" -@erase "$(INTDIR)\lib.res" -@erase "$(INTDIR)\Link.obj" -@erase "$(INTDIR)\LinkProcess.obj" -@erase "$(INTDIR)\LiteralStorage.obj" -@erase "$(INTDIR)\Location.obj" -@erase "$(INTDIR)\Lpd.obj" -@erase "$(INTDIR)\Markup.obj" -@erase "$(INTDIR)\Message.obj" -@erase "$(INTDIR)\MessageArg.obj" -@erase "$(INTDIR)\MessageEventHandler.obj" -@erase "$(INTDIR)\MessageFormatter.obj" -@erase "$(INTDIR)\MessageReporter.obj" -@erase "$(INTDIR)\MessageTable.obj" -@erase "$(INTDIR)\ModeInfo.obj" -@erase "$(INTDIR)\Notation.obj" -@erase "$(INTDIR)\NotationStorage.obj" -@erase "$(INTDIR)\NumericCharRefOrigin.obj" -@erase "$(INTDIR)\OffsetOrderedList.obj" -@erase "$(INTDIR)\OpenElement.obj" -@erase "$(INTDIR)\OutputByteStream.obj" -@erase "$(INTDIR)\OutputCharStream.obj" -@erase "$(INTDIR)\OutputState.obj" -@erase "$(INTDIR)\Param.obj" -@erase "$(INTDIR)\parseAttribute.obj" -@erase "$(INTDIR)\parseCommon.obj" -@erase "$(INTDIR)\parseDecl.obj" -@erase "$(INTDIR)\parseInstance.obj" -@erase "$(INTDIR)\parseMode.obj" -@erase "$(INTDIR)\parseParam.obj" -@erase "$(INTDIR)\Parser.obj" -@erase "$(INTDIR)\parser_inst.obj" -@erase "$(INTDIR)\ParserApp.obj" -@erase "$(INTDIR)\ParserEventGeneratorKit.obj" -@erase "$(INTDIR)\ParserMessages.obj" -@erase "$(INTDIR)\ParserOptions.obj" -@erase "$(INTDIR)\ParserState.obj" -@erase "$(INTDIR)\parseSd.obj" -@erase "$(INTDIR)\Partition.obj" -@erase "$(INTDIR)\PosixStorage.obj" -@erase "$(INTDIR)\Recognizer.obj" -@erase "$(INTDIR)\RewindStorageObject.obj" -@erase "$(INTDIR)\Sd.obj" -@erase "$(INTDIR)\SdText.obj" -@erase "$(INTDIR)\SearchResultMessageArg.obj" -@erase "$(INTDIR)\SGMLApplication.obj" -@erase "$(INTDIR)\SgmlParser.obj" -@erase "$(INTDIR)\ShortReferenceMap.obj" -@erase "$(INTDIR)\SJISCodingSystem.obj" -@erase "$(INTDIR)\SOEntityCatalog.obj" -@erase "$(INTDIR)\splib.obj" -@erase "$(INTDIR)\StdioStorage.obj" -@erase "$(INTDIR)\StorageManager.obj" -@erase "$(INTDIR)\StringVectorMessageArg.obj" -@erase "$(INTDIR)\Syntax.obj" -@erase "$(INTDIR)\Text.obj" -@erase "$(INTDIR)\TokenMessageArg.obj" -@erase "$(INTDIR)\TranslateCodingSystem.obj" -@erase "$(INTDIR)\TrieBuilder.obj" -@erase "$(INTDIR)\TypeId.obj" -@erase "$(INTDIR)\Undo.obj" -@erase "$(INTDIR)\UnicodeCodingSystem.obj" -@erase "$(INTDIR)\UnivCharsetDesc.obj" -@erase "$(INTDIR)\URLStorage.obj" -@erase "$(INTDIR)\UTF8CodingSystem.obj" -@erase "$(INTDIR)\vc40.pdb" -@erase "$(INTDIR)\Win32CodingSystem.obj" -@erase "$(INTDIR)\WinApp.obj" -@erase "$(INTDIR)\WinInetStorage.obj" -@erase "$(INTDIR)\xentmgr_inst.obj" -@erase "$(INTDIR)\XMLCodingSystem.obj" -@erase "$(OUTDIR)\sp133d.exp" -@erase "$(OUTDIR)\sp133d.lib" -@erase "$(OUTDIR)\sp133d.pdb" -@erase ".\dbgbin\sp133d.dll" -@erase ".\dbgbin\sp133d.ilk" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP=cl.exe # ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c # ADD CPP /nologo /MDd /W3 /GX /Zi /Od /I "include" /I "generic" /D "_DEBUG" /D "_WINDOWS" /D "WINSOCK" /D "WIN32" /D SP_NAMESPACE=James_Clark_SP /D "SP_MULTI_BYTE" /Yu"splib.h" /c CPP_PROJ=/nologo /MDd /W3 /GX /Zi /Od /I "include" /I "generic" /D "_DEBUG" /D\ "_WINDOWS" /D "WINSOCK" /D "WIN32" /D SP_NAMESPACE=James_Clark_SP /D\ "SP_MULTI_BYTE" /Fp"$(INTDIR)/lib.pch" /Yu"splib.h" /Fo"$(INTDIR)/"\ /Fd"$(INTDIR)/" /c CPP_OBJS=.\lib\Debug/ CPP_SBRS=.\. .c{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .cpp{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .cxx{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .c{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< .cpp{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< .cxx{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< MTL=mktyplib.exe # ADD BASE MTL /nologo /D "_DEBUG" /win32 # ADD MTL /nologo /D "_DEBUG" /win32 MTL_PROJ=/nologo /D "_DEBUG" /win32 RSC=rc.exe # ADD BASE RSC /l 0x809 /d "_DEBUG" # ADD RSC /l 0x809 /d "_DEBUG" RSC_PROJ=/l 0x809 /fo"$(INTDIR)/lib.res" /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo BSC32_FLAGS=/nologo /o"$(OUTDIR)/lib.bsc" BSC32_SBRS= \ LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /debug /machine:I386 # ADD LINK32 wininet.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /dll /debug /machine:I386 /out:"dbgbin/sp133d.dll" LINK32_FLAGS=wininet.lib wsock32.lib kernel32.lib user32.lib gdi32.lib\ winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib\ uuid.lib /nologo /subsystem:windows /dll /incremental:yes\ /pdb:"$(OUTDIR)/sp133d.pdb" /debug /machine:I386 /out:"dbgbin/sp133d.dll"\ /implib:"$(OUTDIR)/sp133d.lib" LINK32_OBJS= \ "$(INTDIR)\Allocator.obj" \ "$(INTDIR)\app_inst.obj" \ "$(INTDIR)\arc_inst.obj" \ "$(INTDIR)\ArcEngine.obj" \ "$(INTDIR)\assert.obj" \ "$(INTDIR)\Attribute.obj" \ "$(INTDIR)\Big5CodingSystem.obj" \ "$(INTDIR)\CharsetDecl.obj" \ "$(INTDIR)\CharsetInfo.obj" \ "$(INTDIR)\CharsetRegistry.obj" \ "$(INTDIR)\CmdLineApp.obj" \ "$(INTDIR)\CodingSystem.obj" \ "$(INTDIR)\CodingSystemKit.obj" \ "$(INTDIR)\ConsoleOutput.obj" \ "$(INTDIR)\ContentState.obj" \ "$(INTDIR)\ContentToken.obj" \ "$(INTDIR)\DescriptorManager.obj" \ "$(INTDIR)\Dtd.obj" \ "$(INTDIR)\ElementType.obj" \ "$(INTDIR)\Entity.obj" \ "$(INTDIR)\EntityApp.obj" \ "$(INTDIR)\EntityCatalog.obj" \ "$(INTDIR)\EntityDecl.obj" \ "$(INTDIR)\EntityManager.obj" \ "$(INTDIR)\entmgr_inst.obj" \ "$(INTDIR)\ErrnoMessageArg.obj" \ "$(INTDIR)\ErrorCountEventHandler.obj" \ "$(INTDIR)\EUCJPCodingSystem.obj" \ "$(INTDIR)\Event.obj" \ "$(INTDIR)\EventGenerator.obj" \ "$(INTDIR)\ExtendEntityManager.obj" \ "$(INTDIR)\ExternalId.obj" \ "$(INTDIR)\Fixed2CodingSystem.obj" \ "$(INTDIR)\GenericEventHandler.obj" \ "$(INTDIR)\Group.obj" \ "$(INTDIR)\Hash.obj" \ "$(INTDIR)\Id.obj" \ "$(INTDIR)\IdentityCodingSystem.obj" \ "$(INTDIR)\IListBase.obj" \ "$(INTDIR)\InputSource.obj" \ "$(INTDIR)\InternalInputSource.obj" \ "$(INTDIR)\lib.res" \ "$(INTDIR)\Link.obj" \ "$(INTDIR)\LinkProcess.obj" \ "$(INTDIR)\LiteralStorage.obj" \ "$(INTDIR)\Location.obj" \ "$(INTDIR)\Lpd.obj" \ "$(INTDIR)\Markup.obj" \ "$(INTDIR)\Message.obj" \ "$(INTDIR)\MessageArg.obj" \ "$(INTDIR)\MessageEventHandler.obj" \ "$(INTDIR)\MessageFormatter.obj" \ "$(INTDIR)\MessageReporter.obj" \ "$(INTDIR)\MessageTable.obj" \ "$(INTDIR)\ModeInfo.obj" \ "$(INTDIR)\Notation.obj" \ "$(INTDIR)\NotationStorage.obj" \ "$(INTDIR)\NumericCharRefOrigin.obj" \ "$(INTDIR)\OffsetOrderedList.obj" \ "$(INTDIR)\OpenElement.obj" \ "$(INTDIR)\OutputByteStream.obj" \ "$(INTDIR)\OutputCharStream.obj" \ "$(INTDIR)\OutputState.obj" \ "$(INTDIR)\Param.obj" \ "$(INTDIR)\parseAttribute.obj" \ "$(INTDIR)\parseCommon.obj" \ "$(INTDIR)\parseDecl.obj" \ "$(INTDIR)\parseInstance.obj" \ "$(INTDIR)\parseMode.obj" \ "$(INTDIR)\parseParam.obj" \ "$(INTDIR)\Parser.obj" \ "$(INTDIR)\parser_inst.obj" \ "$(INTDIR)\ParserApp.obj" \ "$(INTDIR)\ParserEventGeneratorKit.obj" \ "$(INTDIR)\ParserMessages.obj" \ "$(INTDIR)\ParserOptions.obj" \ "$(INTDIR)\ParserState.obj" \ "$(INTDIR)\parseSd.obj" \ "$(INTDIR)\Partition.obj" \ "$(INTDIR)\PosixStorage.obj" \ "$(INTDIR)\Recognizer.obj" \ "$(INTDIR)\RewindStorageObject.obj" \ "$(INTDIR)\Sd.obj" \ "$(INTDIR)\SdText.obj" \ "$(INTDIR)\SearchResultMessageArg.obj" \ "$(INTDIR)\SGMLApplication.obj" \ "$(INTDIR)\SgmlParser.obj" \ "$(INTDIR)\ShortReferenceMap.obj" \ "$(INTDIR)\SJISCodingSystem.obj" \ "$(INTDIR)\SOEntityCatalog.obj" \ "$(INTDIR)\splib.obj" \ "$(INTDIR)\StdioStorage.obj" \ "$(INTDIR)\StorageManager.obj" \ "$(INTDIR)\StringVectorMessageArg.obj" \ "$(INTDIR)\Syntax.obj" \ "$(INTDIR)\Text.obj" \ "$(INTDIR)\TokenMessageArg.obj" \ "$(INTDIR)\TranslateCodingSystem.obj" \ "$(INTDIR)\TrieBuilder.obj" \ "$(INTDIR)\TypeId.obj" \ "$(INTDIR)\Undo.obj" \ "$(INTDIR)\UnicodeCodingSystem.obj" \ "$(INTDIR)\UnivCharsetDesc.obj" \ "$(INTDIR)\URLStorage.obj" \ "$(INTDIR)\UTF8CodingSystem.obj" \ "$(INTDIR)\Win32CodingSystem.obj" \ "$(INTDIR)\WinApp.obj" \ "$(INTDIR)\WinInetStorage.obj" \ "$(INTDIR)\xentmgr_inst.obj" \ "$(INTDIR)\XMLCodingSystem.obj" ".\dbgbin\sp133d.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "nsgmls - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "nsgmls\Release" # PROP BASE Intermediate_Dir "nsgmls\Release" # PROP BASE Target_Dir "nsgmls" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "nsgmls\Release" # PROP Intermediate_Dir "nsgmls\Release" # PROP Target_Dir "nsgmls" OUTDIR=.\nsgmls\Release INTDIR=.\nsgmls\Release ALL : "lib - Win32 Release" ".\bin\nsgmls.exe" CLEAN : -@erase "$(INTDIR)\nsgmls.obj" -@erase "$(INTDIR)\nsgmls.res" -@erase "$(INTDIR)\nsgmls_inst.obj" -@erase "$(INTDIR)\RastEventHandler.obj" -@erase "$(INTDIR)\SgmlsEventHandler.obj" -@erase "$(INTDIR)\StringSet.obj" -@erase ".\bin\nsgmls.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP=cl.exe # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c # ADD CPP /nologo /MD /W3 /GX /O2 /I "include" /D "NDEBUG" /D "_CONSOLE" /D "WIN32" /D SP_NAMESPACE=James_Clark_SP /D "SP_MULTI_BYTE" /YX /c CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "include" /D "NDEBUG" /D "_CONSOLE" /D\ "WIN32" /D SP_NAMESPACE=James_Clark_SP /D "SP_MULTI_BYTE"\ /Fp"$(INTDIR)/nsgmls.pch" /YX /Fo"$(INTDIR)/" /c CPP_OBJS=.\nsgmls\Release/ CPP_SBRS=.\. .c{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .cpp{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .cxx{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .c{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< .cpp{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< .cxx{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< RSC=rc.exe # ADD BASE RSC /l 0x809 /d "NDEBUG" # ADD RSC /l 0x809 /d "NDEBUG" RSC_PROJ=/l 0x809 /fo"$(INTDIR)/nsgmls.res" /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo BSC32_FLAGS=/nologo /o"$(OUTDIR)/nsgmls.bsc" BSC32_SBRS= \ LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /machine:I386 /out:"bin/nsgmls.exe" # SUBTRACT LINK32 /profile LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\ advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo\ /subsystem:console /incremental:no /pdb:"$(OUTDIR)/nsgmls.pdb" /machine:I386\ /out:"bin/nsgmls.exe" LINK32_OBJS= \ "$(INTDIR)\nsgmls.obj" \ "$(INTDIR)\nsgmls.res" \ "$(INTDIR)\nsgmls_inst.obj" \ "$(INTDIR)\RastEventHandler.obj" \ "$(INTDIR)\SgmlsEventHandler.obj" \ "$(INTDIR)\StringSet.obj" \ ".\lib\Release\sp133.lib" ".\bin\nsgmls.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "nsgmls - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "nsgmls\Debug" # PROP BASE Intermediate_Dir "nsgmls\Debug" # PROP BASE Target_Dir "nsgmls" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "nsgmls\Debug" # PROP Intermediate_Dir "nsgmls\Debug" # PROP Target_Dir "nsgmls" OUTDIR=.\nsgmls\Debug INTDIR=.\nsgmls\Debug ALL : "lib - Win32 Debug" ".\dbgbin\nsgmls.exe" CLEAN : -@erase "$(INTDIR)\nsgmls.obj" -@erase "$(INTDIR)\nsgmls.res" -@erase "$(INTDIR)\nsgmls_inst.obj" -@erase "$(INTDIR)\RastEventHandler.obj" -@erase "$(INTDIR)\SgmlsEventHandler.obj" -@erase "$(INTDIR)\StringSet.obj" -@erase "$(INTDIR)\vc40.idb" -@erase "$(INTDIR)\vc40.pdb" -@erase "$(OUTDIR)\nsgmls.pdb" -@erase ".\dbgbin\nsgmls.exe" -@erase ".\dbgbin\nsgmls.ilk" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP=cl.exe # ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /c # ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "include" /D "_DEBUG" /D "_CONSOLE" /D "WIN32" /D SP_NAMESPACE=James_Clark_SP /D "SP_MULTI_BYTE" /YX /c CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I "include" /D "_DEBUG" /D\ "_CONSOLE" /D "WIN32" /D SP_NAMESPACE=James_Clark_SP /D "SP_MULTI_BYTE"\ /Fp"$(INTDIR)/nsgmls.pch" /YX /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c CPP_OBJS=.\nsgmls\Debug/ CPP_SBRS=.\. .c{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .cpp{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .cxx{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .c{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< .cpp{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< .cxx{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< RSC=rc.exe # ADD BASE RSC /l 0x809 /d "_DEBUG" # ADD RSC /l 0x809 /d "_DEBUG" RSC_PROJ=/l 0x809 /fo"$(INTDIR)/nsgmls.res" /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo BSC32_FLAGS=/nologo /o"$(OUTDIR)/nsgmls.bsc" BSC32_SBRS= \ LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:I386 /out:"dbgbin/nsgmls.exe" LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\ advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo\ /subsystem:console /incremental:yes /pdb:"$(OUTDIR)/nsgmls.pdb" /debug\ /machine:I386 /out:"dbgbin/nsgmls.exe" LINK32_OBJS= \ "$(INTDIR)\nsgmls.obj" \ "$(INTDIR)\nsgmls.res" \ "$(INTDIR)\nsgmls_inst.obj" \ "$(INTDIR)\RastEventHandler.obj" \ "$(INTDIR)\SgmlsEventHandler.obj" \ "$(INTDIR)\StringSet.obj" \ ".\lib\Debug\sp133d.lib" ".\dbgbin\nsgmls.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "spam - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "spam\Release" # PROP BASE Intermediate_Dir "spam\Release" # PROP BASE Target_Dir "spam" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "spam\Release" # PROP Intermediate_Dir "spam\Release" # PROP Target_Dir "spam" OUTDIR=.\spam\Release INTDIR=.\spam\Release ALL : "lib - Win32 Release" ".\bin\spam.exe" CLEAN : -@erase "$(INTDIR)\CopyEventHandler.obj" -@erase "$(INTDIR)\MarkupEventHandler.obj" -@erase "$(INTDIR)\spam.obj" -@erase "$(INTDIR)\spam.res" -@erase "$(INTDIR)\spam_inst.obj" -@erase ".\bin\spam.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP=cl.exe # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c # ADD CPP /nologo /MD /W3 /GX /O2 /I "include" /D "NDEBUG" /D "_CONSOLE" /D "WIN32" /D SP_NAMESPACE=James_Clark_SP /D "SP_MULTI_BYTE" /YX /c CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "include" /D "NDEBUG" /D "_CONSOLE" /D\ "WIN32" /D SP_NAMESPACE=James_Clark_SP /D "SP_MULTI_BYTE"\ /Fp"$(INTDIR)/spam.pch" /YX /Fo"$(INTDIR)/" /c CPP_OBJS=.\spam\Release/ CPP_SBRS=.\. .c{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .cpp{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .cxx{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .c{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< .cpp{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< .cxx{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< RSC=rc.exe # ADD BASE RSC /l 0x809 /d "NDEBUG" # ADD RSC /l 0x809 /d "NDEBUG" RSC_PROJ=/l 0x809 /fo"$(INTDIR)/spam.res" /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo BSC32_FLAGS=/nologo /o"$(OUTDIR)/spam.bsc" BSC32_SBRS= \ LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /machine:I386 /out:"bin/spam.exe" # SUBTRACT LINK32 /profile LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\ advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo\ /subsystem:console /incremental:no /pdb:"$(OUTDIR)/spam.pdb" /machine:I386\ /out:"bin/spam.exe" LINK32_OBJS= \ "$(INTDIR)\CopyEventHandler.obj" \ "$(INTDIR)\MarkupEventHandler.obj" \ "$(INTDIR)\spam.obj" \ "$(INTDIR)\spam.res" \ "$(INTDIR)\spam_inst.obj" \ ".\lib\Release\sp133.lib" ".\bin\spam.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "spam - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "spam\Debug" # PROP BASE Intermediate_Dir "spam\Debug" # PROP BASE Target_Dir "spam" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "spam\Debug" # PROP Intermediate_Dir "spam\Debug" # PROP Target_Dir "spam" OUTDIR=.\spam\Debug INTDIR=.\spam\Debug ALL : "lib - Win32 Debug" ".\dbgbin\spam.exe" CLEAN : -@erase "$(INTDIR)\CopyEventHandler.obj" -@erase "$(INTDIR)\MarkupEventHandler.obj" -@erase "$(INTDIR)\spam.obj" -@erase "$(INTDIR)\spam.res" -@erase "$(INTDIR)\spam_inst.obj" -@erase "$(INTDIR)\vc40.idb" -@erase "$(INTDIR)\vc40.pdb" -@erase "$(OUTDIR)\spam.pdb" -@erase ".\dbgbin\spam.exe" -@erase ".\dbgbin\spam.ilk" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP=cl.exe # ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /c # ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "include" /D "_DEBUG" /D "_CONSOLE" /D "WIN32" /D SP_NAMESPACE=James_Clark_SP /D "SP_MULTI_BYTE" /YX /c CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I "include" /D "_DEBUG" /D\ "_CONSOLE" /D "WIN32" /D SP_NAMESPACE=James_Clark_SP /D "SP_MULTI_BYTE"\ /Fp"$(INTDIR)/spam.pch" /YX /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c CPP_OBJS=.\spam\Debug/ CPP_SBRS=.\. .c{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .cpp{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .cxx{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .c{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< .cpp{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< .cxx{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< RSC=rc.exe # ADD BASE RSC /l 0x809 /d "_DEBUG" # ADD RSC /l 0x809 /d "_DEBUG" RSC_PROJ=/l 0x809 /fo"$(INTDIR)/spam.res" /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo BSC32_FLAGS=/nologo /o"$(OUTDIR)/spam.bsc" BSC32_SBRS= \ LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:I386 /out:"dbgbin/spam.exe" LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\ advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo\ /subsystem:console /incremental:yes /pdb:"$(OUTDIR)/spam.pdb" /debug\ /machine:I386 /out:"dbgbin/spam.exe" LINK32_OBJS= \ "$(INTDIR)\CopyEventHandler.obj" \ "$(INTDIR)\MarkupEventHandler.obj" \ "$(INTDIR)\spam.obj" \ "$(INTDIR)\spam.res" \ "$(INTDIR)\spam_inst.obj" \ ".\lib\Debug\sp133d.lib" ".\dbgbin\spam.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "spent - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "spent\Release" # PROP BASE Intermediate_Dir "spent\Release" # PROP BASE Target_Dir "spent" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "spent\Release" # PROP Intermediate_Dir "spent\Release" # PROP Target_Dir "spent" OUTDIR=.\spent\Release INTDIR=.\spent\Release ALL : "lib - Win32 Release" ".\bin\spent.exe" CLEAN : -@erase "$(INTDIR)\spent.obj" -@erase ".\bin\spent.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP=cl.exe # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c # ADD CPP /nologo /MD /W3 /GX /O2 /I "include" /D "NDEBUG" /D "_CONSOLE" /D "WIN32" /D SP_NAMESPACE=James_Clark_SP /D "SP_MULTI_BYTE" /YX /c CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "include" /D "NDEBUG" /D "_CONSOLE" /D\ "WIN32" /D SP_NAMESPACE=James_Clark_SP /D "SP_MULTI_BYTE"\ /Fp"$(INTDIR)/spent.pch" /YX /Fo"$(INTDIR)/" /c CPP_OBJS=.\spent\Release/ CPP_SBRS=.\. .c{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .cpp{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .cxx{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .c{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< .cpp{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< .cxx{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< RSC=rc.exe # ADD BASE RSC /l 0x809 /d "NDEBUG" # ADD RSC /l 0x809 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo BSC32_FLAGS=/nologo /o"$(OUTDIR)/spent.bsc" BSC32_SBRS= \ LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /machine:I386 /out:"bin/spent.exe" # SUBTRACT LINK32 /profile LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\ advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo\ /subsystem:console /incremental:no /pdb:"$(OUTDIR)/spent.pdb" /machine:I386\ /out:"bin/spent.exe" LINK32_OBJS= \ "$(INTDIR)\spent.obj" \ ".\lib\Release\sp133.lib" ".\bin\spent.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "spent - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "spent\Debug" # PROP BASE Intermediate_Dir "spent\Debug" # PROP BASE Target_Dir "spent" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "spent\Debug" # PROP Intermediate_Dir "spent\Debug" # PROP Target_Dir "spent" OUTDIR=.\spent\Debug INTDIR=.\spent\Debug ALL : "lib - Win32 Debug" ".\dbgbin\spent.exe" CLEAN : -@erase "$(INTDIR)\spent.obj" -@erase "$(INTDIR)\vc40.idb" -@erase "$(INTDIR)\vc40.pdb" -@erase "$(OUTDIR)\spent.pdb" -@erase ".\dbgbin\spent.exe" -@erase ".\dbgbin\spent.ilk" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP=cl.exe # ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /c # ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "include" /D "_DEBUG" /D "_CONSOLE" /D "WIN32" /D SP_NAMESPACE=James_Clark_SP /D "SP_MULTI_BYTE" /YX /c CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I "include" /D "_DEBUG" /D\ "_CONSOLE" /D "WIN32" /D SP_NAMESPACE=James_Clark_SP /D "SP_MULTI_BYTE"\ /Fp"$(INTDIR)/spent.pch" /YX /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c CPP_OBJS=.\spent\Debug/ CPP_SBRS=.\. .c{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .cpp{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .cxx{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .c{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< .cpp{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< .cxx{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< RSC=rc.exe # ADD BASE RSC /l 0x809 /d "_DEBUG" # ADD RSC /l 0x809 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo BSC32_FLAGS=/nologo /o"$(OUTDIR)/spent.bsc" BSC32_SBRS= \ LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:I386 /out:"dbgbin/spent.exe" LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\ advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo\ /subsystem:console /incremental:yes /pdb:"$(OUTDIR)/spent.pdb" /debug\ /machine:I386 /out:"dbgbin/spent.exe" LINK32_OBJS= \ "$(INTDIR)\spent.obj" \ ".\lib\Debug\sp133d.lib" ".\dbgbin\spent.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "sgmlnorm - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "sgmlnorm\Release" # PROP BASE Intermediate_Dir "sgmlnorm\Release" # PROP BASE Target_Dir "sgmlnorm" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "sgmlnorm\Release" # PROP Intermediate_Dir "sgmlnorm\Release" # PROP Target_Dir "sgmlnorm" OUTDIR=.\sgmlnorm\Release INTDIR=.\sgmlnorm\Release ALL : "lib - Win32 Release" ".\bin\sgmlnorm.exe" CLEAN : -@erase "$(INTDIR)\SGMLGenerator.obj" -@erase "$(INTDIR)\sgmlnorm.obj" -@erase ".\bin\sgmlnorm.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP=cl.exe # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c # ADD CPP /nologo /MD /W3 /GX /O2 /I "include" /I "generic" /D "NDEBUG" /D "_CONSOLE" /D "WIN32" /D SP_NAMESPACE=James_Clark_SP /D "SP_MULTI_BYTE" /YX /c CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "include" /I "generic" /D "NDEBUG" /D\ "_CONSOLE" /D "WIN32" /D SP_NAMESPACE=James_Clark_SP /D "SP_MULTI_BYTE"\ /Fp"$(INTDIR)/sgmlnorm.pch" /YX /Fo"$(INTDIR)/" /c CPP_OBJS=.\sgmlnorm\Release/ CPP_SBRS=.\. .c{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .cpp{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .cxx{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .c{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< .cpp{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< .cxx{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< RSC=rc.exe # ADD BASE RSC /l 0x809 /d "NDEBUG" # ADD RSC /l 0x809 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo BSC32_FLAGS=/nologo /o"$(OUTDIR)/sgmlnorm.bsc" BSC32_SBRS= \ LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /machine:I386 /out:"bin/sgmlnorm.exe" # SUBTRACT LINK32 /profile LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\ advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo\ /subsystem:console /incremental:no /pdb:"$(OUTDIR)/sgmlnorm.pdb" /machine:I386\ /out:"bin/sgmlnorm.exe" LINK32_OBJS= \ "$(INTDIR)\SGMLGenerator.obj" \ "$(INTDIR)\sgmlnorm.obj" \ ".\lib\Release\sp133.lib" ".\bin\sgmlnorm.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "sgmlnorm - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "sgmlnorm\Debug" # PROP BASE Intermediate_Dir "sgmlnorm\Debug" # PROP BASE Target_Dir "sgmlnorm" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "sgmlnorm\Debug" # PROP Intermediate_Dir "sgmlnorm\Debug" # PROP Target_Dir "sgmlnorm" OUTDIR=.\sgmlnorm\Debug INTDIR=.\sgmlnorm\Debug ALL : "lib - Win32 Debug" ".\dbgbin\sgmlnorm.exe" CLEAN : -@erase "$(INTDIR)\SGMLGenerator.obj" -@erase "$(INTDIR)\sgmlnorm.obj" -@erase "$(INTDIR)\vc40.idb" -@erase "$(INTDIR)\vc40.pdb" -@erase "$(OUTDIR)\sgmlnorm.pdb" -@erase ".\dbgbin\sgmlnorm.exe" -@erase ".\dbgbin\sgmlnorm.ilk" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP=cl.exe # ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /c # ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "include" /I "generic" /D "_DEBUG" /D "_CONSOLE" /D "WIN32" /D SP_NAMESPACE=James_Clark_SP /D "SP_MULTI_BYTE" /YX /c CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I "include" /I "generic" /D "_DEBUG"\ /D "_CONSOLE" /D "WIN32" /D SP_NAMESPACE=James_Clark_SP /D "SP_MULTI_BYTE"\ /Fp"$(INTDIR)/sgmlnorm.pch" /YX /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c CPP_OBJS=.\sgmlnorm\Debug/ CPP_SBRS=.\. .c{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .cpp{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .cxx{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .c{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< .cpp{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< .cxx{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< RSC=rc.exe # ADD BASE RSC /l 0x809 /d "_DEBUG" # ADD RSC /l 0x809 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo BSC32_FLAGS=/nologo /o"$(OUTDIR)/sgmlnorm.bsc" BSC32_SBRS= \ LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:I386 /out:"dbgbin/sgmlnorm.exe" LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\ advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo\ /subsystem:console /incremental:yes /pdb:"$(OUTDIR)/sgmlnorm.pdb" /debug\ /machine:I386 /out:"dbgbin/sgmlnorm.exe" LINK32_OBJS= \ "$(INTDIR)\SGMLGenerator.obj" \ "$(INTDIR)\sgmlnorm.obj" \ ".\lib\Debug\sp133d.lib" ".\dbgbin\sgmlnorm.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "all - Win32 Release" # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "all\Release" # PROP BASE Intermediate_Dir "all\Release" # PROP BASE Target_Dir "all" # PROP BASE Cmd_Line "NMAKE /f all.mak" # PROP BASE Rebuild_Opt "/a" # PROP BASE Target_File "all\all.exe" # PROP BASE Bsc_Name "all\all.bsc" # PROP Use_Debug_Libraries 0 # PROP Output_Dir "all\Release" # PROP Intermediate_Dir "all\Release" # PROP Target_Dir "all" # PROP Cmd_Line "" # PROP Rebuild_Opt "" # PROP Target_File "all" # PROP Bsc_Name "" OUTDIR=.\all\Release INTDIR=.\all\Release ALL : "sx - Win32 Release" "spent - Win32 Release" "spam - Win32 Release"\ "sgmlnorm - Win32 Release" "nsgmls - Win32 Release" "lib - Win32 Release" CLEAN : -@erase "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" !ELSEIF "$(CFG)" == "all - Win32 Debug" # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "all\Debug" # PROP BASE Intermediate_Dir "all\Debug" # PROP BASE Target_Dir "all" # PROP BASE Cmd_Line "NMAKE /f all.mak" # PROP BASE Rebuild_Opt "/a" # PROP BASE Target_File "all\all.exe" # PROP BASE Bsc_Name "all\all.bsc" # PROP Use_Debug_Libraries 1 # PROP Output_Dir "all\Debug" # PROP Intermediate_Dir "all\Debug" # PROP Target_Dir "all" # PROP Cmd_Line "" # PROP Rebuild_Opt "" # PROP Target_File "all" # PROP Bsc_Name "" OUTDIR=.\all\Debug INTDIR=.\all\Debug ALL : "sx - Win32 Debug" "spent - Win32 Debug" "spam - Win32 Debug"\ "sgmlnorm - Win32 Debug" "nsgmls - Win32 Debug" "lib - Win32 Debug" CLEAN : -@erase "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" !ELSEIF "$(CFG)" == "sx - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "sx\Release" # PROP BASE Intermediate_Dir "sx\Release" # PROP BASE Target_Dir "sx" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "sx\Release" # PROP Intermediate_Dir "sx\Release" # PROP Target_Dir "sx" OUTDIR=.\sx\Release INTDIR=.\sx\Release ALL : "lib - Win32 Release" ".\bin\sx.exe" CLEAN : -@erase "$(INTDIR)\sx.obj" -@erase "$(INTDIR)\sx.res" -@erase "$(INTDIR)\sx_inst.obj" -@erase "$(INTDIR)\XmlOutputEventHandler.obj" -@erase ".\bin\sx.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP=cl.exe # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c # ADD CPP /nologo /MD /W3 /GX /O2 /I "include" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D SP_NAMESPACE=James_Clark_SP /D "SP_MULTI_BYTE" /YX /c CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "include" /D "NDEBUG" /D "WIN32" /D\ "_CONSOLE" /D SP_NAMESPACE=James_Clark_SP /D "SP_MULTI_BYTE"\ /Fp"$(INTDIR)/sx.pch" /YX /Fo"$(INTDIR)/" /c CPP_OBJS=.\sx\Release/ CPP_SBRS=.\. .c{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .cpp{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .cxx{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .c{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< .cpp{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< .cxx{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< RSC=rc.exe # ADD BASE RSC /l 0x809 /d "NDEBUG" # ADD RSC /l 0x809 /d "NDEBUG" RSC_PROJ=/l 0x809 /fo"$(INTDIR)/sx.res" /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo BSC32_FLAGS=/nologo /o"$(OUTDIR)/sx.bsc" BSC32_SBRS= \ LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /machine:I386 /out:"bin/sx.exe" LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\ advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo\ /subsystem:console /incremental:no /pdb:"$(OUTDIR)/sx.pdb" /machine:I386\ /out:"bin/sx.exe" LINK32_OBJS= \ "$(INTDIR)\sx.obj" \ "$(INTDIR)\sx.res" \ "$(INTDIR)\sx_inst.obj" \ "$(INTDIR)\XmlOutputEventHandler.obj" \ ".\lib\Release\sp133.lib" ".\bin\sx.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "sx - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "sx\Debug" # PROP BASE Intermediate_Dir "sx\Debug" # PROP BASE Target_Dir "sx" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "sx\Debug" # PROP Intermediate_Dir "sx\Debug" # PROP Target_Dir "sx" OUTDIR=.\sx\Debug INTDIR=.\sx\Debug ALL : "lib - Win32 Debug" ".\dbgbin\sx.exe" CLEAN : -@erase "$(INTDIR)\sx.obj" -@erase "$(INTDIR)\sx.res" -@erase "$(INTDIR)\sx_inst.obj" -@erase "$(INTDIR)\vc40.idb" -@erase "$(INTDIR)\vc40.pdb" -@erase "$(INTDIR)\XmlOutputEventHandler.obj" -@erase "$(OUTDIR)\sx.pdb" -@erase ".\dbgbin\sx.exe" -@erase ".\dbgbin\sx.ilk" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP=cl.exe # ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /c # ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "include" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D SP_NAMESPACE=James_Clark_SP /D "SP_MULTI_BYTE" /YX /c CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I "include" /D "_DEBUG" /D "WIN32"\ /D "_CONSOLE" /D SP_NAMESPACE=James_Clark_SP /D "SP_MULTI_BYTE"\ /Fp"$(INTDIR)/sx.pch" /YX /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c CPP_OBJS=.\sx\Debug/ CPP_SBRS=.\. .c{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .cpp{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .cxx{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .c{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< .cpp{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< .cxx{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< RSC=rc.exe # ADD BASE RSC /l 0x809 /d "_DEBUG" # ADD RSC /l 0x809 /d "_DEBUG" RSC_PROJ=/l 0x809 /fo"$(INTDIR)/sx.res" /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo BSC32_FLAGS=/nologo /o"$(OUTDIR)/sx.bsc" BSC32_SBRS= \ LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:console /debug /machine:I386 /out:"dbgbin/sx.exe" LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\ advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo\ /subsystem:console /incremental:yes /pdb:"$(OUTDIR)/sx.pdb" /debug\ /machine:I386 /out:"dbgbin/sx.exe" LINK32_OBJS= \ "$(INTDIR)\sx.obj" \ "$(INTDIR)\sx.res" \ "$(INTDIR)\sx_inst.obj" \ "$(INTDIR)\XmlOutputEventHandler.obj" \ ".\lib\Debug\sp133d.lib" ".\dbgbin\sx.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ENDIF ################################################################################ # Begin Target # Name "lib - Win32 Release" # Name "lib - Win32 Debug" !IF "$(CFG)" == "lib - Win32 Release" !ELSEIF "$(CFG)" == "lib - Win32 Debug" !ENDIF ################################################################################ # Begin Source File SOURCE=.\lib\xentmgr_inst.cxx DEP_CPP_XENTM=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\Mutex.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OffsetOrderedList.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ !IF "$(CFG)" == "lib - Win32 Release" # ADD CPP /Yu"splib.h" "$(INTDIR)\xentmgr_inst.obj" : $(SOURCE) $(DEP_CPP_XENTM) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) /nologo /MD /W3 /GX /O2 /I "include" /I "generic" /D "NDEBUG" /D\ "_WINDOWS" /D "WINSOCK" /D "WIN32" /D SP_NAMESPACE=James_Clark_SP /D\ "SP_MULTI_BYTE" /Fp"$(INTDIR)/lib.pch" /Yu"splib.h" /Fo"$(INTDIR)/" /c\ $(SOURCE) !ELSEIF "$(CFG)" == "lib - Win32 Debug" # ADD CPP /Yu"splib.h" "$(INTDIR)\xentmgr_inst.obj" : $(SOURCE) $(DEP_CPP_XENTM) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) /nologo /MDd /W3 /GX /Zi /Od /I "include" /I "generic" /D "_DEBUG" /D\ "_WINDOWS" /D "WINSOCK" /D "WIN32" /D SP_NAMESPACE=James_Clark_SP /D\ "SP_MULTI_BYTE" /Fp"$(INTDIR)/lib.pch" /Yu"splib.h" /Fo"$(INTDIR)/"\ /Fd"$(INTDIR)/" /c $(SOURCE) !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\URLStorage.cxx DEP_CPP_URLST=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ ".\lib\URLStorageMessages.h"\ {$(INCLUDE)}"\sys\TYPES.H"\ "$(INTDIR)\URLStorage.obj" : $(SOURCE) $(DEP_CPP_URLST) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\UnivCharsetDesc.cxx DEP_CPP_UNIVC=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\UnivCharsetDesc.obj" : $(SOURCE) $(DEP_CPP_UNIVC) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\UnicodeCodingSystem.cxx DEP_CPP_UNICO=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\UnicodeCodingSystem.obj" : $(SOURCE) $(DEP_CPP_UNICO) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\Undo.cxx DEP_CPP_UNDO_=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\Undo.obj" : $(SOURCE) $(DEP_CPP_UNDO_) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\TypeId.cxx DEP_CPP_TYPEI=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\TypeId.obj" : $(SOURCE) $(DEP_CPP_TYPEI) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\TrieBuilder.cxx DEP_CPP_TRIEB=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\TrieBuilder.obj" : $(SOURCE) $(DEP_CPP_TRIEB) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\TokenMessageArg.h !IF "$(CFG)" == "lib - Win32 Release" !ELSEIF "$(CFG)" == "lib - Win32 Debug" !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\TokenMessageArg.cxx DEP_CPP_TOKEN=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\TokenMessageArg.obj" : $(SOURCE) $(DEP_CPP_TOKEN) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\token.h !IF "$(CFG)" == "lib - Win32 Release" !ELSEIF "$(CFG)" == "lib - Win32 Debug" !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\Text.cxx DEP_CPP_TEXT_=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\Text.obj" : $(SOURCE) $(DEP_CPP_TEXT_) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\Syntax.cxx DEP_CPP_SYNTA=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\Syntax.obj" : $(SOURCE) $(DEP_CPP_SYNTA) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\StorageManager.cxx DEP_CPP_STORA=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\StorageManager.obj" : $(SOURCE) $(DEP_CPP_STORA) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\StdioStorage.cxx DEP_CPP_STDIO=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StdioStorageMessages.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\StdioStorage.obj" : $(SOURCE) $(DEP_CPP_STDIO) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\SOEntityCatalog.cxx DEP_CPP_SOENT=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\CatalogMessages.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\SOEntityCatalog.obj" : $(SOURCE) $(DEP_CPP_SOENT) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\SJISCodingSystem.cxx DEP_CPP_SJISC=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\SJISCodingSystem.obj" : $(SOURCE) $(DEP_CPP_SJISC) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\ShortReferenceMap.cxx DEP_CPP_SHORT=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\ShortReferenceMap.obj" : $(SOURCE) $(DEP_CPP_SHORT) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\SgmlParser.cxx DEP_CPP_SGMLP=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\SgmlParser.obj" : $(SOURCE) $(DEP_CPP_SGMLP) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\SearchResultMessageArg.cxx DEP_CPP_SEARC=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\SearchResultMessageArg.obj" : $(SOURCE) $(DEP_CPP_SEARC) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\SdText.cxx DEP_CPP_SDTEX=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\SdText.obj" : $(SOURCE) $(DEP_CPP_SDTEX) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\Sd.cxx DEP_CPP_SD_CX=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\Sd.obj" : $(SOURCE) $(DEP_CPP_SD_CX) "$(INTDIR)" "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\RewindStorageObject.cxx DEP_CPP_REWIN=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\RewindStorageObject.obj" : $(SOURCE) $(DEP_CPP_REWIN) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\Recognizer.cxx DEP_CPP_RECOG=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\Recognizer.obj" : $(SOURCE) $(DEP_CPP_RECOG) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\PosixStorage.cxx DEP_CPP_POSIX=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\PosixStorageMessages.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ {$(INCLUDE)}"\sys\STAT.H"\ {$(INCLUDE)}"\sys\TYPES.H"\ "$(INTDIR)\PosixStorage.obj" : $(SOURCE) $(DEP_CPP_POSIX) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\Partition.cxx DEP_CPP_PARTI=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\Partition.obj" : $(SOURCE) $(DEP_CPP_PARTI) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\parseSd.cxx DEP_CPP_PARSE=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\parseSd.obj" : $(SOURCE) $(DEP_CPP_PARSE) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\ParserState.cxx DEP_CPP_PARSER=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\ParserState.obj" : $(SOURCE) $(DEP_CPP_PARSER) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\ParserOptions.cxx DEP_CPP_PARSERO=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\ParserOptions.obj" : $(SOURCE) $(DEP_CPP_PARSERO) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\ParserMessages.cxx DEP_CPP_PARSERM=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\ParserMessages.obj" : $(SOURCE) $(DEP_CPP_PARSERM) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\parser_inst.cxx DEP_CPP_PARSER_=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ !IF "$(CFG)" == "lib - Win32 Release" # ADD CPP /Yu"splib.h" "$(INTDIR)\parser_inst.obj" : $(SOURCE) $(DEP_CPP_PARSER_) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) /nologo /MD /W3 /GX /O2 /I "include" /I "generic" /D "NDEBUG" /D\ "_WINDOWS" /D "WINSOCK" /D "WIN32" /D SP_NAMESPACE=James_Clark_SP /D\ "SP_MULTI_BYTE" /Fp"$(INTDIR)/lib.pch" /Yu"splib.h" /Fo"$(INTDIR)/" /c\ $(SOURCE) !ELSEIF "$(CFG)" == "lib - Win32 Debug" # ADD CPP /Yu"splib.h" "$(INTDIR)\parser_inst.obj" : $(SOURCE) $(DEP_CPP_PARSER_) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) /nologo /MDd /W3 /GX /Zi /Od /I "include" /I "generic" /D "_DEBUG" /D\ "_WINDOWS" /D "WINSOCK" /D "WIN32" /D SP_NAMESPACE=James_Clark_SP /D\ "SP_MULTI_BYTE" /Fp"$(INTDIR)/lib.pch" /Yu"splib.h" /Fo"$(INTDIR)/"\ /Fd"$(INTDIR)/" /c $(SOURCE) !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\Parser.cxx DEP_CPP_PARSER_C=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\Parser.obj" : $(SOURCE) $(DEP_CPP_PARSER_C) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\parseParam.cxx DEP_CPP_PARSEP=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\parseParam.obj" : $(SOURCE) $(DEP_CPP_PARSEP) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\parseMode.cxx DEP_CPP_PARSEM=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\parseMode.obj" : $(SOURCE) $(DEP_CPP_PARSEM) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\parseInstance.cxx DEP_CPP_PARSEI=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\parseInstance.obj" : $(SOURCE) $(DEP_CPP_PARSEI) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\parseDecl.cxx DEP_CPP_PARSED=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\parseDecl.obj" : $(SOURCE) $(DEP_CPP_PARSED) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\parseCommon.cxx DEP_CPP_PARSEC=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\parseCommon.obj" : $(SOURCE) $(DEP_CPP_PARSEC) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\parseAttribute.cxx DEP_CPP_PARSEA=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\parseAttribute.obj" : $(SOURCE) $(DEP_CPP_PARSEA) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\Param.cxx DEP_CPP_PARAM=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\Param.obj" : $(SOURCE) $(DEP_CPP_PARAM) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\OutputState.cxx DEP_CPP_OUTPU=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\OutputState.obj" : $(SOURCE) $(DEP_CPP_OUTPU) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\OutputCharStream.cxx DEP_CPP_OUTPUT=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\OutputCharStream.obj" : $(SOURCE) $(DEP_CPP_OUTPUT) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\OpenElement.cxx DEP_CPP_OPENE=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\OpenElement.obj" : $(SOURCE) $(DEP_CPP_OPENE) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\OffsetOrderedList.h !IF "$(CFG)" == "lib - Win32 Release" !ELSEIF "$(CFG)" == "lib - Win32 Debug" !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\OffsetOrderedList.cxx DEP_CPP_OFFSE=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\Mutex.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OffsetOrderedList.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\OffsetOrderedList.obj" : $(SOURCE) $(DEP_CPP_OFFSE) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\NumericCharRefOrigin.cxx DEP_CPP_NUMER=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\NumericCharRefOrigin.obj" : $(SOURCE) $(DEP_CPP_NUMER) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\Notation.cxx DEP_CPP_NOTAT=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\Notation.obj" : $(SOURCE) $(DEP_CPP_NOTAT) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\ModeInfo.cxx DEP_CPP_MODEI=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\ModeInfo.obj" : $(SOURCE) $(DEP_CPP_MODEI) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\MessageReporter.cxx DEP_CPP_MESSA=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\MessageReporterMessages.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\MessageReporter.obj" : $(SOURCE) $(DEP_CPP_MESSA) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\MessageEventHandler.cxx DEP_CPP_MESSAG=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\MessageEventHandler.obj" : $(SOURCE) $(DEP_CPP_MESSAG) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\MessageArg.cxx DEP_CPP_MESSAGE=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\MessageArg.obj" : $(SOURCE) $(DEP_CPP_MESSAGE) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\Message.cxx DEP_CPP_MESSAGE_=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\Message.obj" : $(SOURCE) $(DEP_CPP_MESSAGE_) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\Markup.cxx DEP_CPP_MARKU=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\Markup.obj" : $(SOURCE) $(DEP_CPP_MARKU) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\Lpd.cxx DEP_CPP_LPD_C=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\Lpd.obj" : $(SOURCE) $(DEP_CPP_LPD_C) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\Location.cxx DEP_CPP_LOCAT=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\Mutex.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\Location.obj" : $(SOURCE) $(DEP_CPP_LOCAT) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\LiteralStorage.cxx DEP_CPP_LITER=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\LiteralStorage.obj" : $(SOURCE) $(DEP_CPP_LITER) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\LinkProcess.cxx DEP_CPP_LINKP=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\LinkProcess.obj" : $(SOURCE) $(DEP_CPP_LINKP) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\Link.cxx DEP_CPP_LINK_=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\Link.obj" : $(SOURCE) $(DEP_CPP_LINK_) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\InternalInputSource.cxx DEP_CPP_INTER=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\InternalInputSource.obj" : $(SOURCE) $(DEP_CPP_INTER) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\InputSource.cxx DEP_CPP_INPUT=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\InputSource.obj" : $(SOURCE) $(DEP_CPP_INPUT) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\IListBase.cxx DEP_CPP_ILIST=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\IListBase.obj" : $(SOURCE) $(DEP_CPP_ILIST) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\IdentityCodingSystem.cxx DEP_CPP_IDENT=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\IdentityCodingSystem.obj" : $(SOURCE) $(DEP_CPP_IDENT) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\Id.cxx DEP_CPP_ID_CX=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\Id.obj" : $(SOURCE) $(DEP_CPP_ID_CX) "$(INTDIR)" "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\Hash.cxx DEP_CPP_HASH_=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\Hash.obj" : $(SOURCE) $(DEP_CPP_HASH_) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\Group.cxx DEP_CPP_GROUP=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\Group.obj" : $(SOURCE) $(DEP_CPP_GROUP) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\Fixed2CodingSystem.cxx DEP_CPP_FIXED=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\Fixed2CodingSystem.obj" : $(SOURCE) $(DEP_CPP_FIXED) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\ExternalId.cxx DEP_CPP_EXTER=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\ExternalId.obj" : $(SOURCE) $(DEP_CPP_EXTER) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\ExtendEntityManager.cxx DEP_CPP_EXTEN=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EntityManagerMessages.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\Mutex.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OffsetOrderedList.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\ExtendEntityManager.obj" : $(SOURCE) $(DEP_CPP_EXTEN) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\Event.cxx DEP_CPP_EVENT=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\Event.obj" : $(SOURCE) $(DEP_CPP_EVENT) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\EUCJPCodingSystem.cxx DEP_CPP_EUCJP=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\EUCJPCodingSystem.obj" : $(SOURCE) $(DEP_CPP_EUCJP) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\ErrnoMessageArg.cxx DEP_CPP_ERRNO=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\ErrnoMessageArg.obj" : $(SOURCE) $(DEP_CPP_ERRNO) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\entmgr_inst.cxx DEP_CPP_ENTMG=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ !IF "$(CFG)" == "lib - Win32 Release" # ADD CPP /Yu"splib.h" "$(INTDIR)\entmgr_inst.obj" : $(SOURCE) $(DEP_CPP_ENTMG) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) /nologo /MD /W3 /GX /O2 /I "include" /I "generic" /D "NDEBUG" /D\ "_WINDOWS" /D "WINSOCK" /D "WIN32" /D SP_NAMESPACE=James_Clark_SP /D\ "SP_MULTI_BYTE" /Fp"$(INTDIR)/lib.pch" /Yu"splib.h" /Fo"$(INTDIR)/" /c\ $(SOURCE) !ELSEIF "$(CFG)" == "lib - Win32 Debug" # ADD CPP /Yu"splib.h" "$(INTDIR)\entmgr_inst.obj" : $(SOURCE) $(DEP_CPP_ENTMG) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) /nologo /MDd /W3 /GX /Zi /Od /I "include" /I "generic" /D "_DEBUG" /D\ "_WINDOWS" /D "WINSOCK" /D "WIN32" /D SP_NAMESPACE=James_Clark_SP /D\ "SP_MULTI_BYTE" /Fp"$(INTDIR)/lib.pch" /Yu"splib.h" /Fo"$(INTDIR)/"\ /Fd"$(INTDIR)/" /c $(SOURCE) !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\EntityManager.cxx DEP_CPP_ENTIT=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\EntityManager.obj" : $(SOURCE) $(DEP_CPP_ENTIT) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\EntityDecl.cxx DEP_CPP_ENTITY=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\EntityDecl.obj" : $(SOURCE) $(DEP_CPP_ENTITY) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\EntityCatalog.cxx DEP_CPP_ENTITYC=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\EntityCatalog.obj" : $(SOURCE) $(DEP_CPP_ENTITYC) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\Entity.cxx DEP_CPP_ENTITY_=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\Entity.obj" : $(SOURCE) $(DEP_CPP_ENTITY_) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\ElementType.cxx DEP_CPP_ELEME=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\ElementType.obj" : $(SOURCE) $(DEP_CPP_ELEME) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\Dtd.cxx DEP_CPP_DTD_C=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\Dtd.obj" : $(SOURCE) $(DEP_CPP_DTD_C) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\DescriptorManager.cxx DEP_CPP_DESCR=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\DescriptorManager.obj" : $(SOURCE) $(DEP_CPP_DESCR) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\ContentToken.cxx DEP_CPP_CONTE=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\ContentToken.obj" : $(SOURCE) $(DEP_CPP_CONTE) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\CharsetRegistry.cxx DEP_CPP_CHARS=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\big5.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\gb2312.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\iso646-jis.h"\ ".\lib\iso8859-2.h"\ ".\lib\iso8859-3.h"\ ".\lib\iso8859-4.h"\ ".\lib\iso8859-5.h"\ ".\lib\iso8859-6.h"\ ".\lib\iso8859-7.h"\ ".\lib\iso8859-8.h"\ ".\lib\iso8859-9.h"\ ".\lib\jis0201.h"\ ".\lib\jis0208.h"\ ".\lib\jis0212.h"\ ".\lib\ksc5601.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\CharsetRegistry.obj" : $(SOURCE) $(DEP_CPP_CHARS) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\CharsetInfo.cxx DEP_CPP_CHARSE=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\CharsetInfo.obj" : $(SOURCE) $(DEP_CPP_CHARSE) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\CharsetDecl.cxx DEP_CPP_CHARSET=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\CharsetDecl.obj" : $(SOURCE) $(DEP_CPP_CHARSET) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\Attribute.cxx DEP_CPP_ATTRI=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\Attribute.obj" : $(SOURCE) $(DEP_CPP_ATTRI) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\assert.cxx DEP_CPP_ASSER=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\assert.obj" : $(SOURCE) $(DEP_CPP_ASSER) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\app_inst.cxx DEP_CPP_APP_I=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ !IF "$(CFG)" == "lib - Win32 Release" # ADD CPP /Yu"splib.h" "$(INTDIR)\app_inst.obj" : $(SOURCE) $(DEP_CPP_APP_I) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) /nologo /MD /W3 /GX /O2 /I "include" /I "generic" /D "NDEBUG" /D\ "_WINDOWS" /D "WINSOCK" /D "WIN32" /D SP_NAMESPACE=James_Clark_SP /D\ "SP_MULTI_BYTE" /Fp"$(INTDIR)/lib.pch" /Yu"splib.h" /Fo"$(INTDIR)/" /c\ $(SOURCE) !ELSEIF "$(CFG)" == "lib - Win32 Debug" # ADD CPP /Yu"splib.h" "$(INTDIR)\app_inst.obj" : $(SOURCE) $(DEP_CPP_APP_I) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) /nologo /MDd /W3 /GX /Zi /Od /I "include" /I "generic" /D "_DEBUG" /D\ "_WINDOWS" /D "WINSOCK" /D "WIN32" /D SP_NAMESPACE=James_Clark_SP /D\ "SP_MULTI_BYTE" /Fp"$(INTDIR)/lib.pch" /Yu"splib.h" /Fo"$(INTDIR)/"\ /Fd"$(INTDIR)/" /c $(SOURCE) !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\Allocator.cxx DEP_CPP_ALLOC=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\Allocator.obj" : $(SOURCE) $(DEP_CPP_ALLOC) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\ErrorCountEventHandler.cxx DEP_CPP_ERROR=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\ErrorCountEventHandler.obj" : $(SOURCE) $(DEP_CPP_ERROR) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\Win32CodingSystem.cxx DEP_CPP_WIN32=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\Win32CodingSystem.obj" : $(SOURCE) $(DEP_CPP_WIN32) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\UTF8CodingSystem.cxx DEP_CPP_UTF8C=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\UTF8CodingSystem.obj" : $(SOURCE) $(DEP_CPP_UTF8C) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\StringVectorMessageArg.cxx DEP_CPP_STRIN=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\StringVectorMessageArg.obj" : $(SOURCE) $(DEP_CPP_STRIN) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\ParserApp.cxx DEP_CPP_PARSERA=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserAppMessages.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\ParserApp.obj" : $(SOURCE) $(DEP_CPP_PARSERA) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\EntityApp.cxx DEP_CPP_ENTITYA=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\WinInetStorage.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\EntityApp.obj" : $(SOURCE) $(DEP_CPP_ENTITYA) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\CmdLineApp.cxx DEP_CPP_CMDLI=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\MessageTable.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\CmdLineAppMessages.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ ".\lib\version.h"\ {$(INCLUDE)}"\sys\TYPES.H"\ "$(INTDIR)\CmdLineApp.obj" : $(SOURCE) $(DEP_CPP_CMDLI) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\ConsoleOutput.cxx DEP_CPP_CONSO=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\ConsoleOutput.obj" : $(SOURCE) $(DEP_CPP_CONSO) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\ContentState.cxx DEP_CPP_CONTEN=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\ContentState.obj" : $(SOURCE) $(DEP_CPP_CONTEN) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\ArcEngine.cxx DEP_CPP_ARCEN=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcEngineMessages.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\ArcEngine.obj" : $(SOURCE) $(DEP_CPP_ARCEN) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\arc_inst.cxx DEP_CPP_ARC_I=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ !IF "$(CFG)" == "lib - Win32 Release" # ADD CPP /Yu"splib.h" "$(INTDIR)\arc_inst.obj" : $(SOURCE) $(DEP_CPP_ARC_I) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) /nologo /MD /W3 /GX /O2 /I "include" /I "generic" /D "NDEBUG" /D\ "_WINDOWS" /D "WINSOCK" /D "WIN32" /D SP_NAMESPACE=James_Clark_SP /D\ "SP_MULTI_BYTE" /Fp"$(INTDIR)/lib.pch" /Yu"splib.h" /Fo"$(INTDIR)/" /c\ $(SOURCE) !ELSEIF "$(CFG)" == "lib - Win32 Debug" # ADD CPP /Yu"splib.h" "$(INTDIR)\arc_inst.obj" : $(SOURCE) $(DEP_CPP_ARC_I) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) /nologo /MDd /W3 /GX /Zi /Od /I "include" /I "generic" /D "_DEBUG" /D\ "_WINDOWS" /D "WINSOCK" /D "WIN32" /D SP_NAMESPACE=James_Clark_SP /D\ "SP_MULTI_BYTE" /Fp"$(INTDIR)/lib.pch" /Yu"splib.h" /Fo"$(INTDIR)/"\ /Fd"$(INTDIR)/" /c $(SOURCE) !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\splib.cxx DEP_CPP_SPLIB=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ !IF "$(CFG)" == "lib - Win32 Release" # ADD CPP /Yc"splib.h" BuildCmds= \ $(CPP) /nologo /MD /W3 /GX /O2 /I "include" /I "generic" /D "NDEBUG" /D\ "_WINDOWS" /D "WINSOCK" /D "WIN32" /D SP_NAMESPACE=James_Clark_SP /D\ "SP_MULTI_BYTE" /Fp"$(INTDIR)/lib.pch" /Yc"splib.h" /Fo"$(INTDIR)/" /c\ $(SOURCE) \ "$(INTDIR)\splib.obj" : $(SOURCE) $(DEP_CPP_SPLIB) "$(INTDIR)" $(BuildCmds) "$(INTDIR)\lib.pch" : $(SOURCE) $(DEP_CPP_SPLIB) "$(INTDIR)" $(BuildCmds) !ELSEIF "$(CFG)" == "lib - Win32 Debug" # ADD CPP /Yc"splib.h" BuildCmds= \ $(CPP) /nologo /MDd /W3 /GX /Zi /Od /I "include" /I "generic" /D "_DEBUG" /D\ "_WINDOWS" /D "WINSOCK" /D "WIN32" /D SP_NAMESPACE=James_Clark_SP /D\ "SP_MULTI_BYTE" /Fp"$(INTDIR)/lib.pch" /Yc"splib.h" /Fo"$(INTDIR)/"\ /Fd"$(INTDIR)/" /c $(SOURCE) \ "$(INTDIR)\splib.obj" : $(SOURCE) $(DEP_CPP_SPLIB) "$(INTDIR)" $(BuildCmds) "$(INTDIR)\lib.pch" : $(SOURCE) $(DEP_CPP_SPLIB) "$(INTDIR)" $(BuildCmds) !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\SGMLApplication.cxx DEP_CPP_SGMLA=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\SGMLApplication.obj" : $(SOURCE) $(DEP_CPP_SGMLA) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\ParserEventGeneratorKit.cxx DEP_CPP_PARSERE=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\ParserEventGeneratorKit.obj" : $(SOURCE) $(DEP_CPP_PARSERE)\ "$(INTDIR)" "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\GenericEventHandler.cxx DEP_CPP_GENER=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\GenericEventHandler.obj" : $(SOURCE) $(DEP_CPP_GENER) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\EventGenerator.cxx DEP_CPP_EVENTG=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\EventGenerator.obj" : $(SOURCE) $(DEP_CPP_EVENTG) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\lib.rc DEP_RSC_LIB_R=\ ".\lib\ArcEngineMessages.rc"\ ".\lib\CatalogMessages.rc"\ ".\lib\CmdLineAppMessages.rc"\ ".\lib\EntityManagerMessages.rc"\ ".\lib\MessageFormatterMessages.rc"\ ".\lib\MessageReporterMessages.rc"\ ".\lib\ParserAppMessages.rc"\ ".\lib\ParserMessages.rc"\ ".\lib\PosixStorageMessages.rc"\ ".\lib\StdioStorageMessages.rc"\ ".\lib\URLStorageMessages.rc"\ !IF "$(CFG)" == "lib - Win32 Release" "$(INTDIR)\lib.res" : $(SOURCE) $(DEP_RSC_LIB_R) "$(INTDIR)" $(RSC) /l 0x809 /fo"$(INTDIR)/lib.res" /i "lib" /d "NDEBUG" $(SOURCE) !ELSEIF "$(CFG)" == "lib - Win32 Debug" "$(INTDIR)\lib.res" : $(SOURCE) $(DEP_RSC_LIB_R) "$(INTDIR)" $(RSC) /l 0x809 /fo"$(INTDIR)/lib.res" /i "lib" /d "_DEBUG" $(SOURCE) !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\MessageTable.cxx DEP_CPP_MESSAGET=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\MessageTable.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\MessageTable.obj" : $(SOURCE) $(DEP_CPP_MESSAGET) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\WinInetStorage.cxx DEP_CPP_WININ=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\WinInetStorage.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ ".\lib\WinInetStorageMessages.h"\ "$(INTDIR)\WinInetStorage.obj" : $(SOURCE) $(DEP_CPP_WININ) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\ParserMessages.msg !IF "$(CFG)" == "lib - Win32 Release" !ELSEIF "$(CFG)" == "lib - Win32 Debug" !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\arc_inst.m4 !IF "$(CFG)" == "lib - Win32 Release" !ELSEIF "$(CFG)" == "lib - Win32 Debug" !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\app_inst.m4 !IF "$(CFG)" == "lib - Win32 Release" !ELSEIF "$(CFG)" == "lib - Win32 Debug" !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\entmgr_inst.m4 !IF "$(CFG)" == "lib - Win32 Release" !ELSEIF "$(CFG)" == "lib - Win32 Debug" !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\instmac.m4 !IF "$(CFG)" == "lib - Win32 Release" !ELSEIF "$(CFG)" == "lib - Win32 Debug" !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\parser_inst.m4 !IF "$(CFG)" == "lib - Win32 Release" !ELSEIF "$(CFG)" == "lib - Win32 Debug" !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\xentmgr_inst.m4 !IF "$(CFG)" == "lib - Win32 Release" !ELSEIF "$(CFG)" == "lib - Win32 Debug" !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\TranslateCodingSystem.cxx DEP_CPP_TRANS=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TranslateCodingSystem.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\TranslateCodingSystem.obj" : $(SOURCE) $(DEP_CPP_TRANS) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\CodingSystemKit.cxx DEP_CPP_CODIN=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Big5CodingSystem.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TranslateCodingSystem.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\XMLCodingSystem.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\CodingSystemKit.obj" : $(SOURCE) $(DEP_CPP_CODIN) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\CmdLineAppMessages.msg !IF "$(CFG)" == "lib - Win32 Release" !ELSEIF "$(CFG)" == "lib - Win32 Debug" !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\EntityManagerMessages.msg !IF "$(CFG)" == "lib - Win32 Release" !ELSEIF "$(CFG)" == "lib - Win32 Debug" !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\CodingSystem.cxx DEP_CPP_CODING=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\CodingSystem.obj" : $(SOURCE) $(DEP_CPP_CODING) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\Big5CodingSystem.cxx DEP_CPP_BIG5C=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Big5CodingSystem.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\Big5CodingSystem.obj" : $(SOURCE) $(DEP_CPP_BIG5C) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\OutputByteStream.cxx DEP_CPP_OUTPUTB=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ {$(INCLUDE)}"\sys\STAT.H"\ {$(INCLUDE)}"\sys\TYPES.H"\ "$(INTDIR)\OutputByteStream.obj" : $(SOURCE) $(DEP_CPP_OUTPUTB) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\MessageFormatter.cxx DEP_CPP_MESSAGEF=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\MessageFormatterMessages.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\MessageFormatter.obj" : $(SOURCE) $(DEP_CPP_MESSAGEF) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\WinApp.cxx DEP_CPP_WINAP=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\WinApp.h"\ ".\include\WinInetStorage.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ # PROP Exclude_From_Build 0 "$(INTDIR)\WinApp.obj" : $(SOURCE) $(DEP_CPP_WINAP) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\NotationStorage.cxx DEP_CPP_NOTATI=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\NotationStorage.obj" : $(SOURCE) $(DEP_CPP_NOTATI) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\lib\XMLCodingSystem.cxx DEP_CPP_XMLCO=\ ".\generic\EventGenerator.h"\ ".\generic\ParserEventGeneratorKit.h"\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\ConsoleOutput.h"\ ".\include\constant.h"\ ".\include\ContentState.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\DescriptorManager.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\EUCJPCodingSystem.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Fixed2CodingSystem.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IdentityCodingSystem.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\ISetIter.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\List.cxx"\ ".\include\List.h"\ ".\include\ListIter.h"\ ".\include\LiteralStorage.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\NotationStorage.h"\ ".\include\OpenElement.h"\ ".\include\Options.cxx"\ ".\include\Options.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\PosixStorage.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\RewindStorageObject.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SearchResultMessageArg.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\SJISCodingSystem.h"\ ".\include\SOEntityCatalog.h"\ ".\include\sptchar.h"\ ".\include\StdioStorage.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnicodeCodingSystem.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\URLStorage.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\Win32CodingSystem.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\XMLCodingSystem.h"\ ".\include\xnew.h"\ ".\lib\ArcProcessor.h"\ ".\lib\CatalogEntry.h"\ ".\lib\EquivClass.h"\ ".\lib\EventQueue.h"\ ".\lib\events.h"\ ".\lib\Group.h"\ ".\lib\Id.h"\ ".\lib\LpdEntityRef.h"\ ".\lib\MarkupScan.h"\ ".\lib\ModeInfo.h"\ ".\lib\NameToken.h"\ ".\lib\NumericCharRefOrigin.h"\ ".\lib\OutputState.h"\ ".\lib\Param.h"\ ".\lib\Parser.h"\ ".\lib\ParserMessages.h"\ ".\lib\ParserState.h"\ ".\lib\Partition.h"\ ".\lib\Priority.h"\ ".\lib\Recognizer.h"\ ".\lib\SdFormalError.h"\ ".\lib\splib.h"\ ".\lib\splibpch.h"\ ".\lib\SrInfo.h"\ ".\lib\StorageObjectPosition.h"\ ".\lib\StringVectorMessageArg.h"\ ".\lib\token.h"\ ".\lib\TokenMessageArg.h"\ ".\lib\Trie.h"\ ".\lib\TrieBuilder.h"\ ".\lib\Undo.h"\ "$(INTDIR)\XMLCodingSystem.obj" : $(SOURCE) $(DEP_CPP_XMLCO) "$(INTDIR)"\ "$(INTDIR)\lib.pch" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File # End Target ################################################################################ # Begin Target # Name "nsgmls - Win32 Release" # Name "nsgmls - Win32 Debug" !IF "$(CFG)" == "nsgmls - Win32 Release" !ELSEIF "$(CFG)" == "nsgmls - Win32 Debug" !ENDIF ################################################################################ # Begin Project Dependency # Project_Dep_Name "lib" !IF "$(CFG)" == "nsgmls - Win32 Release" "lib - Win32 Release" : $(MAKE) /$(MAKEFLAGS) /F ".\SP.mak" CFG="lib - Win32 Release" !ELSEIF "$(CFG)" == "nsgmls - Win32 Debug" "lib - Win32 Debug" : $(MAKE) /$(MAKEFLAGS) /F ".\SP.mak" CFG="lib - Win32 Debug" !ENDIF # End Project Dependency ################################################################################ # Begin Source File SOURCE=.\nsgmls\StringSet.cxx DEP_CPP_STRING=\ ".\include\Boolean.h"\ ".\include\config.h"\ ".\include\Hash.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\xnew.h"\ ".\nsgmls\StringSet.h"\ "$(INTDIR)\StringSet.obj" : $(SOURCE) $(DEP_CPP_STRING) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\nsgmls\SgmlsEventHandler.cxx DEP_CPP_SGMLS=\ ".\include\Allocator.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\constant.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\nsgmls\SgmlsEventHandler.h"\ ".\nsgmls\StringSet.h"\ "$(INTDIR)\SgmlsEventHandler.obj" : $(SOURCE) $(DEP_CPP_SGMLS) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\nsgmls\RastEventHandler.cxx DEP_CPP_RASTE=\ ".\include\Allocator.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CodingSystem.h"\ ".\include\config.h"\ ".\include\constant.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExternalId.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\nsgmls\RastEventHandler.h"\ ".\nsgmls\RastEventHandlerMessages.h"\ "$(INTDIR)\RastEventHandler.obj" : $(SOURCE) $(DEP_CPP_RASTE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\nsgmls\nsgmls_inst.cxx DEP_CPP_NSGML=\ ".\include\Allocator.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CodingSystem.h"\ ".\include\config.h"\ ".\include\constant.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\Event.h"\ ".\include\ExternalId.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\ShortReferenceMap.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\nsgmls\RastEventHandler.h"\ ".\nsgmls\StringSet.h"\ "$(INTDIR)\nsgmls_inst.obj" : $(SOURCE) $(DEP_CPP_NSGML) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\nsgmls\nsgmls.cxx DEP_CPP_NSGMLS=\ ".\include\Allocator.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\constant.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\Link.h"\ ".\include\LinkProcess.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageEventHandler.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\sptchar.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\nsgmls\NsgmlsMessages.h"\ ".\nsgmls\RastEventHandler.h"\ ".\nsgmls\SgmlsEventHandler.h"\ ".\nsgmls\StringSet.h"\ "$(INTDIR)\nsgmls.obj" : $(SOURCE) $(DEP_CPP_NSGMLS) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\nsgmls\nsgmls.rc DEP_RSC_NSGMLS_=\ ".\nsgmls\NsgmlsMessages.rc"\ ".\nsgmls\RastEventHandlerMessages.rc"\ !IF "$(CFG)" == "nsgmls - Win32 Release" "$(INTDIR)\nsgmls.res" : $(SOURCE) $(DEP_RSC_NSGMLS_) "$(INTDIR)" $(RSC) /l 0x809 /fo"$(INTDIR)/nsgmls.res" /i "nsgmls" /d "NDEBUG" $(SOURCE) !ELSEIF "$(CFG)" == "nsgmls - Win32 Debug" "$(INTDIR)\nsgmls.res" : $(SOURCE) $(DEP_RSC_NSGMLS_) "$(INTDIR)" $(RSC) /l 0x809 /fo"$(INTDIR)/nsgmls.res" /i "nsgmls" /d "_DEBUG" $(SOURCE) !ENDIF # End Source File # End Target ################################################################################ # Begin Target # Name "spam - Win32 Release" # Name "spam - Win32 Debug" !IF "$(CFG)" == "spam - Win32 Release" !ELSEIF "$(CFG)" == "spam - Win32 Debug" !ENDIF ################################################################################ # Begin Project Dependency # Project_Dep_Name "lib" !IF "$(CFG)" == "spam - Win32 Release" "lib - Win32 Release" : $(MAKE) /$(MAKEFLAGS) /F ".\SP.mak" CFG="lib - Win32 Release" !ELSEIF "$(CFG)" == "spam - Win32 Debug" "lib - Win32 Debug" : $(MAKE) /$(MAKEFLAGS) /F ".\SP.mak" CFG="lib - Win32 Debug" !ENDIF # End Project Dependency ################################################################################ # Begin Source File SOURCE=.\spam\spam_inst.cxx DEP_CPP_SPAM_=\ ".\include\Allocator.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CodingSystem.h"\ ".\include\config.h"\ ".\include\constant.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\Event.h"\ ".\include\ExternalId.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\Link.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\ShortReferenceMap.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\spam\CopyEventHandler.h"\ ".\spam\MarkupEventHandler.h"\ "$(INTDIR)\spam_inst.obj" : $(SOURCE) $(DEP_CPP_SPAM_) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\spam\spam.cxx DEP_CPP_SPAM_C=\ ".\include\Allocator.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\constant.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\InputSource.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\Link.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\sptchar.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\spam\CopyEventHandler.h"\ ".\spam\MarkupEventHandler.h"\ ".\spam\SpamMessages.h"\ "$(INTDIR)\spam.obj" : $(SOURCE) $(DEP_CPP_SPAM_C) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\spam\MarkupEventHandler.cxx DEP_CPP_MARKUP=\ ".\include\Allocator.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\config.h"\ ".\include\constant.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\Event.h"\ ".\include\ExternalId.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\Link.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\ShortReferenceMap.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\spam\MarkupEventHandler.h"\ "$(INTDIR)\MarkupEventHandler.obj" : $(SOURCE) $(DEP_CPP_MARKUP) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\spam\CopyEventHandler.cxx DEP_CPP_COPYE=\ ".\include\Allocator.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CodingSystem.h"\ ".\include\config.h"\ ".\include\constant.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\Event.h"\ ".\include\ExternalId.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\Link.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\ShortReferenceMap.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\spam\CopyEventHandler.h"\ ".\spam\MarkupEventHandler.h"\ "$(INTDIR)\CopyEventHandler.obj" : $(SOURCE) $(DEP_CPP_COPYE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\spam\SpamMessages.msg !IF "$(CFG)" == "spam - Win32 Release" !ELSEIF "$(CFG)" == "spam - Win32 Debug" !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\spam\spam.rc DEP_RSC_SPAM_R=\ ".\spam\SpamMessages.rc"\ !IF "$(CFG)" == "spam - Win32 Release" "$(INTDIR)\spam.res" : $(SOURCE) $(DEP_RSC_SPAM_R) "$(INTDIR)" $(RSC) /l 0x809 /fo"$(INTDIR)/spam.res" /i "spam" /d "NDEBUG" $(SOURCE) !ELSEIF "$(CFG)" == "spam - Win32 Debug" "$(INTDIR)\spam.res" : $(SOURCE) $(DEP_RSC_SPAM_R) "$(INTDIR)" $(RSC) /l 0x809 /fo"$(INTDIR)/spam.res" /i "spam" /d "_DEBUG" $(SOURCE) !ENDIF # End Source File # End Target ################################################################################ # Begin Target # Name "spent - Win32 Release" # Name "spent - Win32 Debug" !IF "$(CFG)" == "spent - Win32 Release" !ELSEIF "$(CFG)" == "spent - Win32 Debug" !ENDIF ################################################################################ # Begin Project Dependency # Project_Dep_Name "lib" !IF "$(CFG)" == "spent - Win32 Release" "lib - Win32 Release" : $(MAKE) /$(MAKEFLAGS) /F ".\SP.mak" CFG="lib - Win32 Release" !ELSEIF "$(CFG)" == "spent - Win32 Debug" "lib - Win32 Debug" : $(MAKE) /$(MAKEFLAGS) /F ".\SP.mak" CFG="lib - Win32 Debug" !ENDIF # End Project Dependency ################################################################################ # Begin Source File SOURCE=.\spent\spent.cxx DEP_CPP_SPENT=\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetInfo.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\constant.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityManager.h"\ ".\include\ExtendEntityManager.h"\ ".\include\InputSource.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\Link.h"\ ".\include\Location.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\rtti.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\TypeId.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ "$(INTDIR)\spent.obj" : $(SOURCE) $(DEP_CPP_SPENT) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\spent\SpentMessages.msg !IF "$(CFG)" == "spent - Win32 Release" !ELSEIF "$(CFG)" == "spent - Win32 Debug" !ENDIF # End Source File # End Target ################################################################################ # Begin Target # Name "sgmlnorm - Win32 Release" # Name "sgmlnorm - Win32 Debug" !IF "$(CFG)" == "sgmlnorm - Win32 Release" !ELSEIF "$(CFG)" == "sgmlnorm - Win32 Debug" !ENDIF ################################################################################ # Begin Project Dependency # Project_Dep_Name "lib" !IF "$(CFG)" == "sgmlnorm - Win32 Release" "lib - Win32 Release" : $(MAKE) /$(MAKEFLAGS) /F ".\SP.mak" CFG="lib - Win32 Release" !ELSEIF "$(CFG)" == "sgmlnorm - Win32 Debug" "lib - Win32 Debug" : $(MAKE) /$(MAKEFLAGS) /F ".\SP.mak" CFG="lib - Win32 Debug" !ENDIF # End Project Dependency ################################################################################ # Begin Source File SOURCE=.\sgmlnorm\sgmlnorm.cxx DEP_CPP_SGMLN=\ ".\generic\SGMLApplication.h"\ ".\include\Allocator.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\constant.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\GenericEventHandler.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\Link.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\sgmlnorm\SGMLGenerator.h"\ "$(INTDIR)\sgmlnorm.obj" : $(SOURCE) $(DEP_CPP_SGMLN) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\sgmlnorm\SGMLGenerator.cxx DEP_CPP_SGMLG=\ ".\generic\SGMLApplication.h"\ ".\include\Boolean.h"\ ".\include\CodingSystem.h"\ ".\include\config.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\sgmlnorm\SGMLGenerator.h"\ "$(INTDIR)\SGMLGenerator.obj" : $(SOURCE) $(DEP_CPP_SGMLG) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File # End Target ################################################################################ # Begin Target # Name "all - Win32 Release" # Name "all - Win32 Debug" !IF "$(CFG)" == "all - Win32 Release" ".\all" : CD all !ELSEIF "$(CFG)" == "all - Win32 Debug" ".\all" : CD all !ENDIF ################################################################################ # Begin Project Dependency # Project_Dep_Name "lib" !IF "$(CFG)" == "all - Win32 Release" "lib - Win32 Release" : $(MAKE) /$(MAKEFLAGS) /F ".\SP.mak" CFG="lib - Win32 Release" !ELSEIF "$(CFG)" == "all - Win32 Debug" "lib - Win32 Debug" : $(MAKE) /$(MAKEFLAGS) /F ".\SP.mak" CFG="lib - Win32 Debug" !ENDIF # End Project Dependency ################################################################################ # Begin Project Dependency # Project_Dep_Name "nsgmls" !IF "$(CFG)" == "all - Win32 Release" "nsgmls - Win32 Release" : $(MAKE) /$(MAKEFLAGS) /F ".\SP.mak" CFG="nsgmls - Win32 Release" !ELSEIF "$(CFG)" == "all - Win32 Debug" "nsgmls - Win32 Debug" : $(MAKE) /$(MAKEFLAGS) /F ".\SP.mak" CFG="nsgmls - Win32 Debug" !ENDIF # End Project Dependency ################################################################################ # Begin Project Dependency # Project_Dep_Name "sgmlnorm" !IF "$(CFG)" == "all - Win32 Release" "sgmlnorm - Win32 Release" : $(MAKE) /$(MAKEFLAGS) /F ".\SP.mak" CFG="sgmlnorm - Win32 Release" !ELSEIF "$(CFG)" == "all - Win32 Debug" "sgmlnorm - Win32 Debug" : $(MAKE) /$(MAKEFLAGS) /F ".\SP.mak" CFG="sgmlnorm - Win32 Debug" !ENDIF # End Project Dependency ################################################################################ # Begin Project Dependency # Project_Dep_Name "spam" !IF "$(CFG)" == "all - Win32 Release" "spam - Win32 Release" : $(MAKE) /$(MAKEFLAGS) /F ".\SP.mak" CFG="spam - Win32 Release" !ELSEIF "$(CFG)" == "all - Win32 Debug" "spam - Win32 Debug" : $(MAKE) /$(MAKEFLAGS) /F ".\SP.mak" CFG="spam - Win32 Debug" !ENDIF # End Project Dependency ################################################################################ # Begin Project Dependency # Project_Dep_Name "spent" !IF "$(CFG)" == "all - Win32 Release" "spent - Win32 Release" : $(MAKE) /$(MAKEFLAGS) /F ".\SP.mak" CFG="spent - Win32 Release" !ELSEIF "$(CFG)" == "all - Win32 Debug" "spent - Win32 Debug" : $(MAKE) /$(MAKEFLAGS) /F ".\SP.mak" CFG="spent - Win32 Debug" !ENDIF # End Project Dependency ################################################################################ # Begin Project Dependency # Project_Dep_Name "sx" !IF "$(CFG)" == "all - Win32 Release" "sx - Win32 Release" : $(MAKE) /$(MAKEFLAGS) /F ".\SP.mak" CFG="sx - Win32 Release" !ELSEIF "$(CFG)" == "all - Win32 Debug" "sx - Win32 Debug" : $(MAKE) /$(MAKEFLAGS) /F ".\SP.mak" CFG="sx - Win32 Debug" !ENDIF # End Project Dependency # End Target ################################################################################ # Begin Target # Name "sx - Win32 Release" # Name "sx - Win32 Debug" !IF "$(CFG)" == "sx - Win32 Release" !ELSEIF "$(CFG)" == "sx - Win32 Debug" !ENDIF ################################################################################ # Begin Project Dependency # Project_Dep_Name "lib" !IF "$(CFG)" == "sx - Win32 Release" "lib - Win32 Release" : $(MAKE) /$(MAKEFLAGS) /F ".\SP.mak" CFG="lib - Win32 Release" !ELSEIF "$(CFG)" == "sx - Win32 Debug" "lib - Win32 Debug" : $(MAKE) /$(MAKEFLAGS) /F ".\SP.mak" CFG="lib - Win32 Debug" !ENDIF # End Project Dependency ################################################################################ # Begin Source File SOURCE=.\sx\sx.cxx DEP_CPP_SX_CX=\ ".\include\Allocator.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\constant.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\Link.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\sptchar.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\sx\SxMessages.h"\ ".\sx\XmlOutputEventHandler.h"\ "$(INTDIR)\sx.obj" : $(SOURCE) $(DEP_CPP_SX_CX) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\sx\sx_inst.cxx DEP_CPP_SX_IN=\ ".\include\Boolean.h"\ ".\include\config.h"\ ".\include\constant.h"\ ".\include\InputSource.h"\ ".\include\Link.h"\ ".\include\Location.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\Resource.h"\ ".\include\rtti.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\TypeId.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ "$(INTDIR)\sx_inst.obj" : $(SOURCE) $(DEP_CPP_SX_IN) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\sx\XmlOutputEventHandler.cxx DEP_CPP_XMLOU=\ ".\include\Allocator.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\constant.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\Event.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\InputSource.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\Link.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\ShortReferenceMap.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\UTF8CodingSystem.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\sx\XmlOutputEventHandler.h"\ ".\sx\XmlOutputMessages.h"\ "$(INTDIR)\XmlOutputEventHandler.obj" : $(SOURCE) $(DEP_CPP_XMLOU) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\sx\sx.rc DEP_RSC_SX_RC=\ ".\sx\SxMessages.rc"\ ".\sx\XmlOutputMessages.rc"\ !IF "$(CFG)" == "sx - Win32 Release" "$(INTDIR)\sx.res" : $(SOURCE) $(DEP_RSC_SX_RC) "$(INTDIR)" $(RSC) /l 0x809 /fo"$(INTDIR)/sx.res" /i "sx" /d "NDEBUG" $(SOURCE) !ELSEIF "$(CFG)" == "sx - Win32 Debug" "$(INTDIR)\sx.res" : $(SOURCE) $(DEP_RSC_SX_RC) "$(INTDIR)" $(RSC) /l 0x809 /fo"$(INTDIR)/sx.res" /i "sx" /d "_DEBUG" $(SOURCE) !ENDIF # End Source File # End Target # End Project ################################################################################ openjade-1.3.2/VERSION0100664000076400007640000000000607554622153012472 0ustar ianian1.3.2 openjade-1.3.2/build-win32.bat0100775000076400007640000000013706746135332014161 0ustar ianiannmake -f sp-generate.mak nmake -f jade-generate.mak msdev jade.dsw /make "all - win32 release" openjade-1.3.2/configure0100775000076400007640000115651007572433140013342 0ustar ianian#! /bin/sh # From configure.in Id: configure.in. # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.53. # # Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 # Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. # Find the correct PATH separator. Usually this is `:', but # DJGPP uses `;' like DOS. if test "X${PATH_SEPARATOR+set}" != Xset; then UNAME=${UNAME-`uname 2>/dev/null`} case X$UNAME in *-DOS) lt_cv_sys_path_separator=';' ;; *) lt_cv_sys_path_separator=':' ;; esac fi # Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} case X$ECHO in X*--fallback-echo) # Remove one level of quotation (which was required for Make). ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','` ;; esac echo=${ECHO-echo} if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then # Yippee, $echo works! : else # Restart under the correct shell. exec $SHELL "$0" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat </dev/null && echo_test_string="`eval $cmd`" && (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null then break fi done fi if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then : else # The Solaris, AIX, and Digital Unix default echo programs unquote # backslashes. This makes it impossible to quote backslashes using # echo "$something" | sed 's/\\/\\\\/g' # # So, first we look for a working echo in the user's PATH. IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" for dir in $PATH /usr/ucb; do if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$dir/echo" break fi done IFS="$save_ifs" if test "X$echo" = Xecho; then # We didn't find a better echo, so look for alternatives. if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # This shell has a builtin print -r that does the trick. echo='print -r' elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && test "X$CONFIG_SHELL" != X/bin/ksh; then # If we have ksh, try running configure again with it. ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} export ORIGINAL_CONFIG_SHELL CONFIG_SHELL=/bin/ksh export CONFIG_SHELL exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} else # Try using printf. echo='printf %s\n' if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # Cool, printf works : elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL export CONFIG_SHELL SHELL="$CONFIG_SHELL" export SHELL echo="$CONFIG_SHELL $0 --fallback-echo" elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$CONFIG_SHELL $0 --fallback-echo" else # maybe with a smaller string... prev=: for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null then break fi prev="$cmd" done if test "$prev" != 'sed 50q "$0"'; then echo_test_string=`eval $prev` export echo_test_string exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} else # Oops. We lost completely, so just stick with echo. echo=echo fi fi fi fi fi fi # Copy echo and quote the copy suitably for passing to libtool from # the Makefile, instead of quoting the original, which is used later. ECHO=$echo if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" fi if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then set -o posix fi # NLS nuisances. # Support unset when possible. if (FOO=FOO; unset FOO) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi (set +x; test -n "`(LANG=C; export LANG) 2>&1`") && { $as_unset LANG || test "${LANG+set}" != set; } || { LANG=C; export LANG; } (set +x; test -n "`(LC_ALL=C; export LC_ALL) 2>&1`") && { $as_unset LC_ALL || test "${LC_ALL+set}" != set; } || { LC_ALL=C; export LC_ALL; } (set +x; test -n "`(LC_TIME=C; export LC_TIME) 2>&1`") && { $as_unset LC_TIME || test "${LC_TIME+set}" != set; } || { LC_TIME=C; export LC_TIME; } (set +x; test -n "`(LC_CTYPE=C; export LC_CTYPE) 2>&1`") && { $as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set; } || { LC_CTYPE=C; export LC_CTYPE; } (set +x; test -n "`(LANGUAGE=C; export LANGUAGE) 2>&1`") && { $as_unset LANGUAGE || test "${LANGUAGE+set}" != set; } || { LANGUAGE=C; export LANGUAGE; } (set +x; test -n "`(LC_COLLATE=C; export LC_COLLATE) 2>&1`") && { $as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set; } || { LC_COLLATE=C; export LC_COLLATE; } (set +x; test -n "`(LC_NUMERIC=C; export LC_NUMERIC) 2>&1`") && { $as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set; } || { LC_NUMERIC=C; export LC_NUMERIC; } (set +x; test -n "`(LC_MESSAGES=C; export LC_MESSAGES) 2>&1`") && { $as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set; } || { LC_MESSAGES=C; export LC_MESSAGES; } # Name of the executable. as_me=`(basename "$0") 2>/dev/null || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)$' \| \ . : '\(.\)' 2>/dev/null || echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } /^X\/\(\/\/\)$/{ s//\1/; q; } /^X\/\(\/\).*/{ s//\1/; q; } s/.*/./; q'` # PATH needs CR, and LINENO needs CR and PATH. # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conftest.sh echo "exit 0" >>conftest.sh chmod +x conftest.sh if (PATH=".;."; conftest.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conftest.sh fi as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" || { # Find who we are. Look in the path if we contain no path at all # relative or not. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 { (exit 1); exit 1; }; } fi case $CONFIG_SHELL in '') as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for as_base in sh bash ksh sh5; do case $as_dir in /*) if ("$as_dir/$as_base" -c ' as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then CONFIG_SHELL=$as_dir/$as_base export CONFIG_SHELL exec "$CONFIG_SHELL" "$0" ${1+"$@"} fi;; esac done done ;; esac # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line before each line; the second 'sed' does the real # work. The second script uses 'N' to pair each line-number line # with the numbered line, and appends trailing '-' during # substitution so that $LINENO is not a special case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) sed '=' <$as_myself | sed ' N s,$,-, : loop s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, t loop s,-$,, s,^['$as_cr_digits']*\n,, ' >$as_me.lineno && chmod +x $as_me.lineno || { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensible to this). . ./$as_me.lineno # Exit status is that of the last command. exit } case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in *c*,-n*) ECHO_N= ECHO_C=' ' ECHO_T=' ' ;; *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; *) ECHO_N= ECHO_C='\c' ECHO_T= ;; esac if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then # We could just check for DJGPP; but this test a) works b) is more generic # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). if test -f conf$$.exe; then # Don't use ln at all; we don't have any links as_ln_s='cp -p' else as_ln_s='ln -s' fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.file as_executable_p="test -f" # Sed expression to map a string onto a valid CPP name. as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" # Sed expression to map a string onto a valid variable name. as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" # IFS # We need space, tab and new line, in precisely that order. as_nl=' ' IFS=" $as_nl" # CDPATH. $as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=$PATH_SEPARATOR; export CDPATH; } # Name of the host. # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` exec 6>&1 # # Initializations. # ac_default_prefix=/usr/local cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} # Maximum number of lines to put in a shell here document. # This variable seems obsolete. It should probably be removed, and # only ac_max_sed_lines should be used. : ${ac_max_here_lines=38} # Identity of this package. PACKAGE_NAME= PACKAGE_TARNAME= PACKAGE_VERSION= PACKAGE_STRING= PACKAGE_BUGREPORT= ac_unique_file="dsssl" # Factoring default headers for most tests. ac_includes_default="\ #include #if HAVE_SYS_TYPES_H # include #endif #if HAVE_SYS_STAT_H # include #endif #if STDC_HEADERS # include # include #else # if HAVE_STDLIB_H # include # endif #endif #if HAVE_STRING_H # if !STDC_HEADERS && HAVE_MEMORY_H # include # endif # include #endif #if HAVE_STRINGS_H # include #endif #if HAVE_INTTYPES_H # include #else # if HAVE_STDINT_H # include # endif #endif #if HAVE_UNISTD_H # include #endif" # Initialize some variables set by options. ac_init_help= ac_init_version=false # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datadir='${prefix}/share' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' libdir='${exec_prefix}/lib' includedir='${prefix}/include' oldincludedir='/usr/include' infodir='${prefix}/info' mandir='${prefix}/man' ac_prev= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval "$ac_prev=\$ac_option" ac_prev= continue fi ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_option in -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad | --data | --dat | --da) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ | --da=*) datadir=$ac_optarg ;; -disable-* | --disable-*) ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/-/_/g'` eval "enable_$ac_feature=no" ;; -enable-* | --enable-*) ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/-/_/g'` case $ac_option in *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; *) ac_optarg=yes ;; esac eval "enable_$ac_feature='$ac_optarg'" ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst \ | --locals | --local | --loca | --loc | --lo) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* \ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package| sed 's/-/_/g'` case $ac_option in *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; *) ac_optarg=yes ;; esac eval "with_$ac_package='$ac_optarg'" ;; -without-* | --without-*) ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package | sed 's/-/_/g'` eval "with_$ac_package=no" ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) { echo "$as_me: error: unrecognized option: $ac_option Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 { (exit 1); exit 1; }; } ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` eval "$ac_envvar='$ac_optarg'" export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` { echo "$as_me: error: missing argument to $ac_option" >&2 { (exit 1); exit 1; }; } fi # Be sure to have absolute paths. for ac_var in exec_prefix prefix do eval ac_val=$`echo $ac_var` case $ac_val in [\\/$]* | ?:[\\/]* | NONE | '' ) ;; *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; };; esac done # Be sure to have absolute paths. for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ localstatedir libdir includedir oldincludedir infodir mandir do eval ac_val=$`echo $ac_var` case $ac_val in [\\/$]* | ?:[\\/]* ) ;; *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; };; esac done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used." >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then its parent. ac_confdir=`(dirname "$0") 2>/dev/null || $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$0" : 'X\(//\)[^/]' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$0" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` srcdir=$ac_confdir if test ! -r $srcdir/$ac_unique_file; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r $srcdir/$ac_unique_file; then if test "$ac_srcdir_defaulted" = yes; then { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 { (exit 1); exit 1; }; } else { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 { (exit 1); exit 1; }; } fi fi srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` ac_env_build_alias_set=${build_alias+set} ac_env_build_alias_value=$build_alias ac_cv_env_build_alias_set=${build_alias+set} ac_cv_env_build_alias_value=$build_alias ac_env_host_alias_set=${host_alias+set} ac_env_host_alias_value=$host_alias ac_cv_env_host_alias_set=${host_alias+set} ac_cv_env_host_alias_value=$host_alias ac_env_target_alias_set=${target_alias+set} ac_env_target_alias_value=$target_alias ac_cv_env_target_alias_set=${target_alias+set} ac_cv_env_target_alias_value=$target_alias ac_env_CC_set=${CC+set} ac_env_CC_value=$CC ac_cv_env_CC_set=${CC+set} ac_cv_env_CC_value=$CC ac_env_CFLAGS_set=${CFLAGS+set} ac_env_CFLAGS_value=$CFLAGS ac_cv_env_CFLAGS_set=${CFLAGS+set} ac_cv_env_CFLAGS_value=$CFLAGS ac_env_LDFLAGS_set=${LDFLAGS+set} ac_env_LDFLAGS_value=$LDFLAGS ac_cv_env_LDFLAGS_set=${LDFLAGS+set} ac_cv_env_LDFLAGS_value=$LDFLAGS ac_env_CPPFLAGS_set=${CPPFLAGS+set} ac_env_CPPFLAGS_value=$CPPFLAGS ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} ac_cv_env_CPPFLAGS_value=$CPPFLAGS ac_env_CXX_set=${CXX+set} ac_env_CXX_value=$CXX ac_cv_env_CXX_set=${CXX+set} ac_cv_env_CXX_value=$CXX ac_env_CXXFLAGS_set=${CXXFLAGS+set} ac_env_CXXFLAGS_value=$CXXFLAGS ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set} ac_cv_env_CXXFLAGS_value=$CXXFLAGS ac_env_CPP_set=${CPP+set} ac_env_CPP_value=$CPP ac_cv_env_CPP_set=${CPP+set} ac_cv_env_CPP_value=$CPP ac_env_CXXCPP_set=${CXXCPP+set} ac_env_CXXCPP_value=$CXXCPP ac_cv_env_CXXCPP_set=${CXXCPP+set} ac_cv_env_CXXCPP_value=$CXXCPP # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures this package to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] _ACEOF cat <<_ACEOF Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --datadir=DIR read-only architecture-independent data [PREFIX/share] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --infodir=DIR info documentation [PREFIX/info] --mandir=DIR man documentation [PREFIX/man] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then cat <<\_ACEOF Optional Features: --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-spincludedir=pathlist location of OpenSP include files --enable-splibdir=pathlist location of OpenSP library --enable-http include support for http --disable-mif disable support for FrameMaker MIF output --disable-html disable support for HTML+CSS output --enable-default-catalog=pathlist provide one or more default catalog files or sysids, e.g. /usr/local/lib/sgml/catalog --enable-default-search-path=pathlist provide a default value for SGML_SEARCH_PATH --enable-shared=PKGS build shared libraries default=yes --enable-static=PKGS build static libraries default=yes --enable-fast-install=PKGS optimize for fast installation default=yes --disable-libtool-lock avoid locking (might break parallel builds) Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-gnu-ld assume the C compiler uses GNU ld default=no --with-pic try to use only PIC/non-PIC objects default=use both Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CXX C++ compiler command CXXFLAGS C++ compiler flags CPP C preprocessor CXXCPP C++ preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. _ACEOF fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. ac_popdir=`pwd` for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d $ac_dir || continue ac_builddir=. if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A "../" for each directory in $ac_dir_suffix. ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` else ac_dir_suffix= ac_top_builddir= fi case $srcdir in .) # No --srcdir option. We are building in place. ac_srcdir=. if test -z "$ac_top_builddir"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac # Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be # absolute. ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` ac_abs_top_builddir=`cd "$ac_dir" && cd $ac_top_builddir && pwd` ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` cd $ac_dir # Check for guested configure; otherwise get Cygnus style configure. if test -f $ac_srcdir/configure.gnu; then echo $SHELL $ac_srcdir/configure.gnu --help=recursive elif test -f $ac_srcdir/configure; then echo $SHELL $ac_srcdir/configure --help=recursive elif test -f $ac_srcdir/configure.ac || test -f $ac_srcdir/configure.in; then echo $ac_configure --help else echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi cd $ac_popdir done fi test -n "$ac_init_help" && exit 0 if $ac_init_version; then cat <<\_ACEOF Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit 0 fi exec 5>config.log cat >&5 <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by $as_me, which was generated by GNU Autoconf 2.53. Invocation command line was $ $0 $@ _ACEOF { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` hostinfo = `(hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. echo "PATH: $as_dir" done } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Also quote any args containing shell meta-characters. ac_configure_args= ac_sep= for ac_arg do case $ac_arg in -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n ) continue ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) continue ;; *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" ac_sep=" " ;; esac # Get rid of the leading space. done # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Be sure not to use single quotes in there, as some shells, # such as our DU 5.0 friend, will then `close' the trap. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo cat <<\_ASBOX ## ---------------- ## ## Cache variables. ## ## ---------------- ## _ASBOX echo # The following way of writing the cache mishandles newlines in values, { (set) 2>&1 | case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in *ac_space=\ *) sed -n \ "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" ;; *) sed -n \ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; } echo if test -s confdefs.h; then cat <<\_ASBOX ## ----------- ## ## confdefs.h. ## ## ----------- ## _ASBOX echo sed "/^$/d" confdefs.h echo fi test "$ac_signal" != 0 && echo "$as_me: caught signal $ac_signal" echo "$as_me: exit $exit_status" } >&5 rm -f core core.* *.core && rm -rf conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -rf conftest* confdefs.h # AIX cpp loses on an empty file, so make sure it contains at least a newline. echo >confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer explicitly selected file to automatically selected ones. if test -z "$CONFIG_SITE"; then if test "x$prefix" != xNONE; then CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" else CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi fi for ac_site_file in $CONFIG_SITE; do if test -r "$ac_site_file"; then { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special # files actually), so we avoid doing that. if test -f "$cache_file"; then { echo "$as_me:$LINENO: loading cache $cache_file" >&5 echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . $cache_file;; *) . ./$cache_file;; esac fi else { echo "$as_me:$LINENO: creating cache $cache_file" >&5 echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in `(set) 2>&1 | sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val="\$ac_cv_env_${ac_var}_value" eval ac_new_val="\$ac_env_${ac_var}_value" case $ac_old_set,$ac_new_set in set,) { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 echo "$as_me: former value: $ac_old_val" >&2;} { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 echo "$as_me: current value: $ac_new_val" >&2;} ac_cache_corrupted=: fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 echo "$as_me: error: changes in the environment can compromise the build" >&2;} { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_aux_dir= for ac_dir in config $srcdir/config; do if test -f $ac_dir/install-sh; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f $ac_dir/install.sh; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f $ac_dir/shtool; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in config $srcdir/config" >&5 echo "$as_me: error: cannot find install-sh or install.sh in config $srcdir/config" >&2;} { (exit 1); exit 1; }; } fi ac_config_guess="$SHELL $ac_aux_dir/config.guess" ac_config_sub="$SHELL $ac_aux_dir/config.sub" ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in ./ | .// | /cC/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi done done ;; esac done fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. We don't cache a # path for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the path is relative. INSTALL=$ac_install_sh fi fi echo "$as_me:$LINENO: result: $INSTALL" >&5 echo "${ECHO_T}$INSTALL" >&6 # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' echo "$as_me:$LINENO: checking whether build environment is sane" >&5 echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6 # Just in case sleep 1 echo timestamp > conftestfile # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t $srcdir/configure conftestfile` fi if test "$*" != "X $srcdir/configure conftestfile" \ && test "$*" != "X conftestfile $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&5 echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&2;} { (exit 1); exit 1; }; } fi test "$2" = conftestfile ) then # Ok. : else { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! Check your system clock" >&5 echo "$as_me: error: newly created file is older than distributed files! Check your system clock" >&2;} { (exit 1); exit 1; }; } fi rm -f conftest* echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 test "$program_prefix" != NONE && program_transform_name="s,^,$program_prefix,;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s,\$,$program_suffix,;$program_transform_name" # Double any \ or $. echo might interpret backslashes. # By default was `s,x,x', remove it if useless. cat <<\_ACEOF >conftest.sed s/[\\$]/&&/g;s/;s,x,x,$// _ACEOF program_transform_name=`echo $program_transform_name | sed -f conftest.sed` rm conftest.sed echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \${MAKE}" >&5 echo $ECHO_N "checking whether ${MAKE-make} sets \${MAKE}... $ECHO_C" >&6 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'` if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.make <<\_ACEOF all: @echo 'ac_maketemp="${MAKE}"' _ACEOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` if test -n "$ac_maketemp"; then eval ac_cv_prog_make_${ac_make}_set=yes else eval ac_cv_prog_make_${ac_make}_set=no fi rm -f conftest.make fi if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 SET_MAKE= else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 SET_MAKE="MAKE=${MAKE-make}" fi PACKAGE=openjade VERSION=1.3.2 if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} { (exit 1); exit 1; }; } fi cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF missing_dir=`cd $ac_aux_dir && pwd` echo "$as_me:$LINENO: checking for working aclocal" >&5 echo $ECHO_N "checking for working aclocal... $ECHO_C" >&6 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. if (aclocal --version) < /dev/null > /dev/null 2>&1; then ACLOCAL=aclocal echo "$as_me:$LINENO: result: found" >&5 echo "${ECHO_T}found" >&6 else ACLOCAL="$missing_dir/missing aclocal" echo "$as_me:$LINENO: result: missing" >&5 echo "${ECHO_T}missing" >&6 fi echo "$as_me:$LINENO: checking for working autoconf" >&5 echo $ECHO_N "checking for working autoconf... $ECHO_C" >&6 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. if (autoconf --version) < /dev/null > /dev/null 2>&1; then AUTOCONF=autoconf echo "$as_me:$LINENO: result: found" >&5 echo "${ECHO_T}found" >&6 else AUTOCONF="$missing_dir/missing autoconf" echo "$as_me:$LINENO: result: missing" >&5 echo "${ECHO_T}missing" >&6 fi echo "$as_me:$LINENO: checking for working automake" >&5 echo $ECHO_N "checking for working automake... $ECHO_C" >&6 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. if (automake --version) < /dev/null > /dev/null 2>&1; then AUTOMAKE=automake echo "$as_me:$LINENO: result: found" >&5 echo "${ECHO_T}found" >&6 else AUTOMAKE="$missing_dir/missing automake" echo "$as_me:$LINENO: result: missing" >&5 echo "${ECHO_T}missing" >&6 fi echo "$as_me:$LINENO: checking for working autoheader" >&5 echo $ECHO_N "checking for working autoheader... $ECHO_C" >&6 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. if (autoheader --version) < /dev/null > /dev/null 2>&1; then AUTOHEADER=autoheader echo "$as_me:$LINENO: result: found" >&5 echo "${ECHO_T}found" >&6 else AUTOHEADER="$missing_dir/missing autoheader" echo "$as_me:$LINENO: result: missing" >&5 echo "${ECHO_T}missing" >&6 fi echo "$as_me:$LINENO: checking for working makeinfo" >&5 echo $ECHO_N "checking for working makeinfo... $ECHO_C" >&6 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. if (makeinfo --version) < /dev/null > /dev/null 2>&1; then MAKEINFO=makeinfo echo "$as_me:$LINENO: result: found" >&5 echo "${ECHO_T}found" >&6 else MAKEINFO="$missing_dir/missing makeinfo" echo "$as_me:$LINENO: result: missing" >&5 echo "${ECHO_T}missing" >&6 fi TOP=`pwd` echo "$as_me:$LINENO: checking location of OpenSP include files" >&5 echo $ECHO_N "checking location of OpenSP include files... $ECHO_C" >&6 # Check whether --enable-spincludedir or --disable-spincludedir was given. if test "${enable_spincludedir+set}" = set; then enableval="$enable_spincludedir" if test $enableval then echo "$as_me:$LINENO: result: $enableval" >&5 echo "${ECHO_T}$enableval" >&6 SPINCLUDEDIR="$enableval" else for d in ${prefix}/include/OpenSP /usr/local/include/OpenSP \ /usr/include/OpenSP; do as_ac_File=`echo "ac_cv_file_$d" | $as_tr_sh` echo "$as_me:$LINENO: checking for $d" >&5 echo $ECHO_N "checking for $d... $ECHO_C" >&6 if eval "test \"\${$as_ac_File+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else test "$cross_compiling" = yes && { { echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5 echo "$as_me: error: cannot check for file existence when cross compiling" >&2;} { (exit 1); exit 1; }; } if test -r "$d"; then eval "$as_ac_File=yes" else eval "$as_ac_File=no" fi fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_File'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_File'}'`" >&6 if test `eval echo '${'$as_ac_File'}'` = yes; then SPINCLUDEDIR="$d"; break fi done fi else for d in ${prefix}/include/OpenSP /usr/local/include/OpenSP \ /usr/include/OpenSP; do as_ac_File=`echo "ac_cv_file_$d" | $as_tr_sh` echo "$as_me:$LINENO: checking for $d" >&5 echo $ECHO_N "checking for $d... $ECHO_C" >&6 if eval "test \"\${$as_ac_File+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else test "$cross_compiling" = yes && { { echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5 echo "$as_me: error: cannot check for file existence when cross compiling" >&2;} { (exit 1); exit 1; }; } if test -r "$d"; then eval "$as_ac_File=yes" else eval "$as_ac_File=no" fi fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_File'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_File'}'`" >&6 if test `eval echo '${'$as_ac_File'}'` = yes; then SPINCLUDEDIR="$d"; break fi done fi; if test x${SPINCLUDEDIR} = x; then { { echo "$as_me:$LINENO: error: \"OpenSP include files do not exist\"" >&5 echo "$as_me: error: \"OpenSP include files do not exist\"" >&2;} { (exit 1); exit 1; }; } fi case "${SPINCLUDEDIR}" in ${prefix}/include/OpenSP) osplibdir=${prefix}/lib ;; /usr/local/include/OpenSP) osplibdir=/usr/local/lib ;; *) osplibdir=/usr/lib ;; esac # On PPC64 libosp is to be found in /usr/lib64; thus # fall back to this directory test -d ${osplibdir}64 && osplibdir=${osplibdir}64 echo "$as_me:$LINENO: checking location of OpenSP Library" >&5 echo $ECHO_N "checking location of OpenSP Library... $ECHO_C" >&6 # Check whether --enable-splibdir or --disable-splibdir was given. if test "${enable_splibdir+set}" = set; then enableval="$enable_splibdir" if test $enableval then echo "$as_me:$LINENO: result: $enableval" >&5 echo "${ECHO_T}$enableval" >&6 SPLIBDIR="$enableval" else echo "$as_me:$LINENO: result: $osplibdir" >&5 echo "${ECHO_T}$osplibdir" >&6 SPLIBDIR=$osplibdir fi else echo "$as_me:$LINENO: result: $osplibdir" >&5 echo "${ECHO_T}$osplibdir" >&6 SPLIBDIR=$osplibdir fi; unset osplibdir # Make sure we can run config.sub. $ac_config_sub sun4 >/dev/null 2>&1 || { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 echo "$as_me: error: cannot run $ac_config_sub" >&2;} { (exit 1); exit 1; }; } echo "$as_me:$LINENO: checking build system type" >&5 echo $ECHO_N "checking build system type... $ECHO_C" >&6 if test "${ac_cv_build+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_build_alias=$build_alias test -z "$ac_cv_build_alias" && ac_cv_build_alias=`$ac_config_guess` test -z "$ac_cv_build_alias" && { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 echo "$as_me: error: cannot guess build type; you must specify one" >&2;} { (exit 1); exit 1; }; } ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} { (exit 1); exit 1; }; } fi echo "$as_me:$LINENO: result: $ac_cv_build" >&5 echo "${ECHO_T}$ac_cv_build" >&6 build=$ac_cv_build build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` echo "$as_me:$LINENO: checking host system type" >&5 echo $ECHO_N "checking host system type... $ECHO_C" >&6 if test "${ac_cv_host+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_host_alias=$host_alias test -z "$ac_cv_host_alias" && ac_cv_host_alias=$ac_cv_build_alias ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} { (exit 1); exit 1; }; } fi echo "$as_me:$LINENO: result: $ac_cv_host" >&5 echo "${ECHO_T}$ac_cv_host" >&6 host=$ac_cv_host host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` if test "$CXXFLAGS" = ""; then CXXFLAGS="-O2" fi echo 'saving distribution makefiles...' test ! -f Makefile.dist && test -f Makefile && cp Makefile Makefile.dist test ! -f Makefile.lib.dist && test -f Makefile.lib && cp Makefile.lib Makefile.lib.dist test ! -f Makefile.prog.dist && test -f Makefile.prog && cp Makefile.prog Makefile.prog.dist test ! -f Makefile.comm.dist && test -f Makefile.comm && cp Makefile.comm Makefile.comm.dist ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi CC=$ac_ct_CC else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi CC=$ac_ct_CC else CC="$ac_cv_prog_CC" fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift set dummy "$as_dir/$ac_word" ${1+"$@"} shift ac_cv_prog_CC="$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$ac_ct_CC" && break done CC=$ac_ct_CC fi fi test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH" >&5 echo "$as_me: error: no acceptable C compiler found in \$PATH" >&2;} { (exit 1); exit 1; }; } # Provide some information about the compiler. echo "$as_me:$LINENO:" \ "checking for C compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 (eval $ac_compiler --version &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 (eval $ac_compiler -v &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 (eval $ac_compiler -V &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.exe" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. echo "$as_me:$LINENO: checking for C compiler default output" >&5 echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6 ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 (eval $ac_link_default) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Find the output, starting from the most likely. This scheme is # not robust to junk in `.', hence go to wildcards (a.*) only as a last # resort. # Be careful to initialize this variable, since it used to be cached. # Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. ac_cv_exeext= for ac_file in `ls a_out.exe a.exe conftest.exe 2>/dev/null; ls a.out conftest 2>/dev/null; ls a.* conftest.* 2>/dev/null`; do case $ac_file in *.$ac_ext | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb | *.xSYM ) ;; a.out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` # FIXME: I believe we export ac_cv_exeext for Libtool --akim. export ac_cv_exeext break;; * ) break;; esac done else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 { { echo "$as_me:$LINENO: error: C compiler cannot create executables" >&5 echo "$as_me: error: C compiler cannot create executables" >&2;} { (exit 77); exit 77; }; } fi ac_exeext=$ac_cv_exeext echo "$as_me:$LINENO: result: $ac_file" >&5 echo "${ECHO_T}$ac_file" >&6 # Check the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. echo "$as_me:$LINENO: checking whether the C compiler works" >&5 echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 # If not cross compiling, check that we can run a simple program. if test "$cross_compiling" != yes; then if { ac_try='./$ac_file' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { echo "$as_me:$LINENO: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'." >&5 echo "$as_me: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'." >&2;} { (exit 1); exit 1; }; } fi fi fi echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 rm -f a.out a.exe conftest$ac_cv_exeext ac_clean_files=$ac_clean_files_save # Check the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 echo "$as_me:$LINENO: result: $cross_compiling" >&5 echo "${ECHO_T}$cross_compiling" >&6 echo "$as_me:$LINENO: checking for suffix of executables" >&5 echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in `(ls conftest.exe; ls conftest; ls conftest.*) 2>/dev/null`; do case $ac_file in *.$ac_ext | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` export ac_cv_exeext break;; * ) break;; esac done else { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link" >&5 echo "$as_me: error: cannot compute suffix of executables: cannot compile and link" >&2;} { (exit 1); exit 1; }; } fi rm -f conftest$ac_cv_exeext echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 echo "${ECHO_T}$ac_cv_exeext" >&6 rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT echo "$as_me:$LINENO: checking for suffix of object files" >&5 echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 if test "${ac_cv_objext+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 { { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile" >&5 echo "$as_me: error: cannot compute suffix of object files: cannot compile" >&2;} { (exit 1); exit 1; }; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 echo "${ECHO_T}$ac_cv_objext" >&6 OBJEXT=$ac_cv_objext ac_objext=$OBJEXT echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 if test "${ac_cv_c_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 GCC=`test $ac_compiler_gnu = yes && echo yes` ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS CFLAGS="-g" echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_cc_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_prog_cc_g=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi # Some people use a C++ compiler to compile C. Since we use `exit', # in C++ we need to declare it. In case someone uses the same compiler # for both compiling C and C++ we need to have the C++ compiler decide # the declaration of exit, since it's the most demanding environment. cat >conftest.$ac_ext <<_ACEOF #ifndef __cplusplus choke me #endif _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then for ac_declaration in \ ''\ '#include ' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \ 'extern "C" void exit (int) throw ();' \ 'extern "C" void exit (int);' \ 'void exit (int);' do cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include $ac_declaration #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 continue fi rm -f conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_declaration #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then break else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext done rm -f conftest* if test -n "$ac_declaration"; then echo '#ifdef __cplusplus' >>confdefs.h echo $ac_declaration >>confdefs.h echo '#endif' >>confdefs.h fi else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in ./ | .// | /cC/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi done done ;; esac done fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. We don't cache a # path for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the path is relative. INSTALL=$ac_install_sh fi fi echo "$as_me:$LINENO: result: $INSTALL" >&5 echo "${ECHO_T}$INSTALL" >&6 # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' echo "$as_me:$LINENO: checking whether ln -s works" >&5 echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else echo "$as_me:$LINENO: result: no, using $LN_S" >&5 echo "${ECHO_T}no, using $LN_S" >&6 fi ac_ext=cc ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -n "$ac_tool_prefix"; then for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then echo "$as_me:$LINENO: result: $CXX" >&5 echo "${ECHO_T}$CXX" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 echo "${ECHO_T}$ac_ct_CXX" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$ac_ct_CXX" && break done test -n "$ac_ct_CXX" || ac_ct_CXX="g++" CXX=$ac_ct_CXX fi # Provide some information about the compiler. echo "$as_me:$LINENO:" \ "checking for C++ compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 (eval $ac_compiler --version &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 (eval $ac_compiler -v &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 (eval $ac_compiler -V &5) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6 if test "${ac_cv_cxx_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6 GXX=`test $ac_compiler_gnu = yes && echo yes` ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS CXXFLAGS="-g" echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6 if test "${ac_cv_prog_cxx_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cxx_g=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_prog_cxx_g=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6 if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi for ac_declaration in \ ''\ '#include ' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \ 'extern "C" void exit (int) throw ();' \ 'extern "C" void exit (int);' \ 'void exit (int);' do cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include $ac_declaration #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 continue fi rm -f conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_declaration #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { exit (42); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then break else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext done rm -f conftest* if test -n "$ac_declaration"; then echo '#ifdef __cplusplus' >>confdefs.h echo $ac_declaration >>confdefs.h echo '#endif' >>confdefs.h fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu for ac_prog in perl do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_path_PERL+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $PERL in [\\/]* | ?:[\\/]*) ac_cv_path_PERL="$PERL" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done ;; esac fi PERL=$ac_cv_path_PERL if test -n "$PERL"; then echo "$as_me:$LINENO: result: $PERL" >&5 echo "${ECHO_T}$PERL" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -n "$PERL" && break done test -n "$PERL" || PERL="perl" test "$INSTALL" = "./config/install-sh -c" && INSTALL=`pwd`"/config/install-sh -c" case "${host}" in *-*-darwin*) LINKFLAGS="-no-undefined" ;; *) if test "$GXX" then echo "$as_me:$LINENO: checking whether GNU C++ supports automatic template instantiation" >&5 echo $ECHO_N "checking whether GNU C++ supports automatic template instantiation... $ECHO_C" >&6 if test "${ac_cv_c_gnu_automatic_templates+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if test "${ac_cv_prog_CPP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi echo "$as_me:$LINENO: result: $CPP" >&5 echo "${ECHO_T}$CPP" >&6 ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check" >&5 echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;} { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 8) yes #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | egrep "yes" >/dev/null 2>&1; then ac_cv_c_gnu_automatic_templates=yes else ac_cv_c_gnu_automatic_templates=no fi rm -f conftest* fi echo "$as_me:$LINENO: result: $ac_cv_c_gnu_automatic_templates" >&5 echo "${ECHO_T}$ac_cv_c_gnu_automatic_templates" >&6 if test "$ac_cv_c_gnu_automatic_templates" = yes; then cat >>confdefs.h <<\_ACEOF #define SP_DEFINE_TEMPLATES 1 _ACEOF else cat >>confdefs.h <<\_ACEOF #define SP_MANUAL_INST 1 _ACEOF CXXFLAGS="$CXXFLAGS -fno-implicit-templates" fi fi ;; esac echo "$as_me:$LINENO: checking for ANSI C header files" >&5 echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 if test "${ac_cv_header_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include #include #include #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_cv_header_stdc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_header_stdc=no fi rm -f conftest.err conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | egrep "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | egrep "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } _ACEOF rm -f conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi fi echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 echo "${ECHO_T}$ac_cv_header_stdc" >&6 if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF #define STDC_HEADERS 1 _ACEOF fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then eval "$as_ac_Header=yes" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 eval "$as_ac_Header=no" fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in limits.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc in yes:no ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; no:yes ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; esac echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=$ac_header_preproc" fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 if test "${ac_cv_prog_cc_stdc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_prog_cc_stdc=no ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include #include #include #include /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF # Don't try gcc -ansi; that turns off useful extensions and # breaks some systems' header files. # AIX -qlanglvl=ansi # Ultrix and OSF/1 -std1 # HP-UX 10.20 and later -Ae # HP-UX older versions -Aa -D_HPUX_SOURCE # SVR4 -Xc -D__EXTENSIONS__ for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_prog_cc_stdc=$ac_arg break else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext done rm -f conftest.$ac_ext conftest.$ac_objext CC=$ac_save_CC fi case "x$ac_cv_prog_cc_stdc" in x|xno) echo "$as_me:$LINENO: result: none needed" >&5 echo "${ECHO_T}none needed" >&6 ;; *) echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 CC="$CC $ac_cv_prog_cc_stdc" ;; esac echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6 if test "${ac_cv_c_const+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { /* FIXME: Include the comments suggested by Paul. */ #ifndef __cplusplus /* Ultrix mips cc rejects this. */ typedef int charset[2]; const charset x; /* SunOS 4.1.1 cc rejects this. */ char const *const *ccp; char **p; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; /* AIX XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; ccp = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ ++ccp; p = (char**) ccp; ccp = (char const *const *) p; { /* SCO 3.2v4 cc rejects this. */ char *t; char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; const int *foo = &x[0]; ++foo; } { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ typedef const int *iptr; iptr p = 0; ++p; } { /* AIX XL C 1.02.0.0 rejects this saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; }; struct s *b; b->j = 5; } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; } #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_c_const=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_c_const=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 echo "${ECHO_T}$ac_cv_c_const" >&6 if test $ac_cv_c_const = no; then cat >>confdefs.h <<\_ACEOF #define const _ACEOF fi echo "$as_me:$LINENO: checking for inline" >&5 echo $ECHO_N "checking for inline... $ECHO_C" >&6 if test "${ac_cv_c_inline+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifndef __cplusplus static $ac_kw int static_foo () {return 0; } $ac_kw int foo () {return 0; } #endif _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_c_inline=$ac_kw; break else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext done fi echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5 echo "${ECHO_T}$ac_cv_c_inline" >&6 case $ac_cv_c_inline in inline | yes) ;; no) cat >>confdefs.h <<\_ACEOF #define inline _ACEOF ;; *) cat >>confdefs.h <<_ACEOF #define inline $ac_cv_c_inline _ACEOF ;; esac echo "$as_me:$LINENO: checking for size_t" >&5 echo $ECHO_N "checking for size_t... $ECHO_C" >&6 if test "${ac_cv_type_size_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { if ((size_t *) 0) return 0; if (sizeof (size_t)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_type_size_t=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_type_size_t=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 echo "${ECHO_T}$ac_cv_type_size_t" >&6 if test $ac_cv_type_size_t = yes; then : else cat >>confdefs.h <<_ACEOF #define size_t unsigned _ACEOF fi echo "$as_me:$LINENO: checking for struct stat.st_blksize" >&5 echo $ECHO_N "checking for struct stat.st_blksize... $ECHO_C" >&6 if test "${ac_cv_member_struct_stat_st_blksize+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { static struct stat ac_aggr; if (ac_aggr.st_blksize) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_member_struct_stat_st_blksize=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_member_struct_stat_st_blksize=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_blksize" >&5 echo "${ECHO_T}$ac_cv_member_struct_stat_st_blksize" >&6 if test $ac_cv_member_struct_stat_st_blksize = yes; then cat >>confdefs.h <<_ACEOF #define HAVE_STRUCT_STAT_ST_BLKSIZE 1 _ACEOF cat >>confdefs.h <<\_ACEOF #define HAVE_ST_BLKSIZE 1 _ACEOF fi echo "$as_me:$LINENO: checking for sig_atomic_t in signal.h" >&5 echo $ECHO_N "checking for sig_atomic_t in signal.h... $ECHO_C" >&6 if test "${ac_cv_have_sig_atomic_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { sig_atomic_t x; ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_have_sig_atomic_t=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_have_sig_atomic_t=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_have_sig_atomic_t" >&5 echo "${ECHO_T}$ac_cv_have_sig_atomic_t" >&6 if test "$ac_cv_have_sig_atomic_t" = "no" then echo "$as_me:$LINENO: checking for sig_atomic_t" >&5 echo $ECHO_N "checking for sig_atomic_t... $ECHO_C" >&6 if test "${ac_cv_type_sig_atomic_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { if ((sig_atomic_t *) 0) return 0; if (sizeof (sig_atomic_t)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_type_sig_atomic_t=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_type_sig_atomic_t=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_type_sig_atomic_t" >&5 echo "${ECHO_T}$ac_cv_type_sig_atomic_t" >&6 if test $ac_cv_type_sig_atomic_t = yes; then : else cat >>confdefs.h <<_ACEOF #define sig_atomic_t int _ACEOF fi fi echo "$as_me:$LINENO: checking for size_t" >&5 echo $ECHO_N "checking for size_t... $ECHO_C" >&6 if test "${ac_cv_type_size_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { if ((size_t *) 0) return 0; if (sizeof (size_t)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_type_size_t=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_type_size_t=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 echo "${ECHO_T}$ac_cv_type_size_t" >&6 echo "$as_me:$LINENO: checking size of size_t" >&5 echo $ECHO_N "checking size of size_t... $ECHO_C" >&6 if test "${ac_cv_sizeof_size_t+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$ac_cv_type_size_t" = yes; then # The cast to unsigned long works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { static int test_array [1 - 2 * !(((long) (sizeof (size_t))) >= 0)]; test_array [0] = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_lo=0 ac_mid=0 while :; do cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { static int test_array [1 - 2 * !(((long) (sizeof (size_t))) <= $ac_mid)]; test_array [0] = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_hi=$ac_mid; break else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_lo=`expr $ac_mid + 1` if test $ac_lo -le $ac_mid; then ac_lo= ac_hi= break fi ac_mid=`expr 2 '*' $ac_mid + 1` fi rm -f conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { static int test_array [1 - 2 * !(((long) (sizeof (size_t))) < 0)]; test_array [0] = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_hi=-1 ac_mid=-1 while :; do cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { static int test_array [1 - 2 * !(((long) (sizeof (size_t))) >= $ac_mid)]; test_array [0] = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_lo=$ac_mid; break else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_hi=`expr '(' $ac_mid ')' - 1` if test $ac_mid -le $ac_hi; then ac_lo= ac_hi= break fi ac_mid=`expr 2 '*' $ac_mid` fi rm -f conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_lo= ac_hi= fi rm -f conftest.$ac_objext conftest.$ac_ext fi rm -f conftest.$ac_objext conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { static int test_array [1 - 2 * !(((long) (sizeof (size_t))) <= $ac_mid)]; test_array [0] = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_hi=$ac_mid else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_lo=`expr '(' $ac_mid ')' + 1` fi rm -f conftest.$ac_objext conftest.$ac_ext done case $ac_lo in ?*) ac_cv_sizeof_size_t=$ac_lo;; '') { { echo "$as_me:$LINENO: error: cannot compute sizeof (size_t), 77" >&5 echo "$as_me: error: cannot compute sizeof (size_t), 77" >&2;} { (exit 1); exit 1; }; } ;; esac else if test "$cross_compiling" = yes; then { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling" >&5 echo "$as_me: error: cannot run test program while cross compiling" >&2;} { (exit 1); exit 1; }; } else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default long longval () { return (long) (sizeof (size_t)); } unsigned long ulongval () { return (long) (sizeof (size_t)); } #include #include #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { FILE *f = fopen ("conftest.val", "w"); if (! f) exit (1); if (((long) (sizeof (size_t))) < 0) { long i = longval (); if (i != ((long) (sizeof (size_t)))) exit (1); fprintf (f, "%ld\n", i); } else { unsigned long i = ulongval (); if (i != ((long) (sizeof (size_t)))) exit (1); fprintf (f, "%lu\n", i); } exit (ferror (f) || fclose (f) != 0); ; return 0; } _ACEOF rm -f conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_sizeof_size_t=`cat conftest.val` else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ( exit $ac_status ) { { echo "$as_me:$LINENO: error: cannot compute sizeof (size_t), 77" >&5 echo "$as_me: error: cannot compute sizeof (size_t), 77" >&2;} { (exit 1); exit 1; }; } fi rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi rm -f conftest.val else ac_cv_sizeof_size_t=0 fi fi echo "$as_me:$LINENO: result: $ac_cv_sizeof_size_t" >&5 echo "${ECHO_T}$ac_cv_sizeof_size_t" >&6 cat >>confdefs.h <<_ACEOF #define SIZEOF_SIZE_T $ac_cv_sizeof_size_t _ACEOF echo "$as_me:$LINENO: checking for unsigned int" >&5 echo $ECHO_N "checking for unsigned int... $ECHO_C" >&6 if test "${ac_cv_type_unsigned_int+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { if ((unsigned int *) 0) return 0; if (sizeof (unsigned int)) return 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_type_unsigned_int=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_type_unsigned_int=no fi rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_int" >&5 echo "${ECHO_T}$ac_cv_type_unsigned_int" >&6 echo "$as_me:$LINENO: checking size of unsigned int" >&5 echo $ECHO_N "checking size of unsigned int... $ECHO_C" >&6 if test "${ac_cv_sizeof_unsigned_int+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$ac_cv_type_unsigned_int" = yes; then # The cast to unsigned long works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { static int test_array [1 - 2 * !(((long) (sizeof (unsigned int))) >= 0)]; test_array [0] = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_lo=0 ac_mid=0 while :; do cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { static int test_array [1 - 2 * !(((long) (sizeof (unsigned int))) <= $ac_mid)]; test_array [0] = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_hi=$ac_mid; break else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_lo=`expr $ac_mid + 1` if test $ac_lo -le $ac_mid; then ac_lo= ac_hi= break fi ac_mid=`expr 2 '*' $ac_mid + 1` fi rm -f conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { static int test_array [1 - 2 * !(((long) (sizeof (unsigned int))) < 0)]; test_array [0] = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_hi=-1 ac_mid=-1 while :; do cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { static int test_array [1 - 2 * !(((long) (sizeof (unsigned int))) >= $ac_mid)]; test_array [0] = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_lo=$ac_mid; break else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_hi=`expr '(' $ac_mid ')' - 1` if test $ac_mid -le $ac_hi; then ac_lo= ac_hi= break fi ac_mid=`expr 2 '*' $ac_mid` fi rm -f conftest.$ac_objext conftest.$ac_ext done else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_lo= ac_hi= fi rm -f conftest.$ac_objext conftest.$ac_ext fi rm -f conftest.$ac_objext conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { static int test_array [1 - 2 * !(((long) (sizeof (unsigned int))) <= $ac_mid)]; test_array [0] = 0 ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_hi=$ac_mid else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_lo=`expr '(' $ac_mid ')' + 1` fi rm -f conftest.$ac_objext conftest.$ac_ext done case $ac_lo in ?*) ac_cv_sizeof_unsigned_int=$ac_lo;; '') { { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned int), 77" >&5 echo "$as_me: error: cannot compute sizeof (unsigned int), 77" >&2;} { (exit 1); exit 1; }; } ;; esac else if test "$cross_compiling" = yes; then { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling" >&5 echo "$as_me: error: cannot run test program while cross compiling" >&2;} { (exit 1); exit 1; }; } else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default long longval () { return (long) (sizeof (unsigned int)); } unsigned long ulongval () { return (long) (sizeof (unsigned int)); } #include #include #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { FILE *f = fopen ("conftest.val", "w"); if (! f) exit (1); if (((long) (sizeof (unsigned int))) < 0) { long i = longval (); if (i != ((long) (sizeof (unsigned int)))) exit (1); fprintf (f, "%ld\n", i); } else { unsigned long i = ulongval (); if (i != ((long) (sizeof (unsigned int)))) exit (1); fprintf (f, "%lu\n", i); } exit (ferror (f) || fclose (f) != 0); ; return 0; } _ACEOF rm -f conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_sizeof_unsigned_int=`cat conftest.val` else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ( exit $ac_status ) { { echo "$as_me:$LINENO: error: cannot compute sizeof (unsigned int), 77" >&5 echo "$as_me: error: cannot compute sizeof (unsigned int), 77" >&2;} { (exit 1); exit 1; }; } fi rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi rm -f conftest.val else ac_cv_sizeof_unsigned_int=0 fi fi echo "$as_me:$LINENO: result: $ac_cv_sizeof_unsigned_int" >&5 echo "${ECHO_T}$ac_cv_sizeof_unsigned_int" >&6 cat >>confdefs.h <<_ACEOF #define SIZEOF_UNSIGNED_INT $ac_cv_sizeof_unsigned_int _ACEOF echo "$as_me:$LINENO: checking for setlocale" >&5 echo $ECHO_N "checking for setlocale... $ECHO_C" >&6 if test "${ac_cv_func_setlocale+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char setlocale (); below. */ #include /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char setlocale (); char (*f) (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_setlocale) || defined (__stub___setlocale) choke me #else f = setlocale; #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_setlocale=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_func_setlocale=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_setlocale" >&5 echo "${ECHO_T}$ac_cv_func_setlocale" >&6 if test $ac_cv_func_setlocale = yes; then cat >>confdefs.h <<\_ACEOF #define SP_HAVE_LOCALE 1 _ACEOF fi echo "$as_me:$LINENO: checking for towupper" >&5 echo $ECHO_N "checking for towupper... $ECHO_C" >&6 if test "${ac_cv_func_towupper+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char towupper (); below. */ #include /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char towupper (); char (*f) (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_towupper) || defined (__stub___towupper) choke me #else f = towupper; #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_towupper=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_func_towupper=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_towupper" >&5 echo "${ECHO_T}$ac_cv_func_towupper" >&6 if test $ac_cv_func_towupper = yes; then cat >>confdefs.h <<\_ACEOF #define SP_HAVE_WCHAR 1 _ACEOF fi echo "$as_me:$LINENO: checking for gettext" >&5 echo $ECHO_N "checking for gettext... $ECHO_C" >&6 if test "${ac_cv_func_gettext+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char gettext (); below. */ #include /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char gettext (); char (*f) (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_gettext) || defined (__stub___gettext) choke me #else f = gettext; #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_gettext=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_func_gettext=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_gettext" >&5 echo "${ECHO_T}$ac_cv_func_gettext" >&6 if test $ac_cv_func_gettext = yes; then cat >>confdefs.h <<\_ACEOF #define SP_HAVE_GETTEXT 1 _ACEOF else echo "$as_me:$LINENO: checking for gettext in -lintl" >&5 echo $ECHO_N "checking for gettext in -lintl... $ECHO_C" >&6 if test "${ac_cv_lib_intl_gettext+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char gettext (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { gettext (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_intl_gettext=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_lib_intl_gettext=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_intl_gettext" >&5 echo "${ECHO_T}$ac_cv_lib_intl_gettext" >&6 if test $ac_cv_lib_intl_gettext = yes; then cat >>confdefs.h <<\_ACEOF #define SP_HAVE_GETTEXT 1 _ACEOF LIBS="$LIBS -lintl" fi fi echo "$as_me:$LINENO: checking for cthread_fork in -lthreads" >&5 echo $ECHO_N "checking for cthread_fork in -lthreads... $ECHO_C" >&6 if test "${ac_cv_lib_threads_cthread_fork+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lthreads $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char cthread_fork (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { cthread_fork (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_threads_cthread_fork=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_lib_threads_cthread_fork=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_threads_cthread_fork" >&5 echo "${ECHO_T}$ac_cv_lib_threads_cthread_fork" >&6 if test $ac_cv_lib_threads_cthread_fork = yes; then LIB_THREADS="-lthreads" else LIB_THREADS="" fi echo "$as_me:$LINENO: checking whether size_t is unsigned int" >&5 echo $ECHO_N "checking whether size_t is unsigned int... $ECHO_C" >&6 ac_cv_size_t_is_uint=no ac_ext=cc ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include template class foo { }; #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { foo x; foo y; x = y; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_size_t_is_uint=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu echo "$as_me:$LINENO: result: $ac_cv_size_t_is_uint" >&5 echo "${ECHO_T}$ac_cv_size_t_is_uint" >&6 test "$ac_cv_size_t_is_uint" = "yes" && cat >>confdefs.h <<\_ACEOF #define SIZE_T_IS_UINT 1 _ACEOF ac_ext=cc ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu echo "$as_me:$LINENO: checking support for bool" >&5 echo $ECHO_N "checking support for bool... $ECHO_C" >&6 if test "${ac_cv_typedef_bool+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { bool x; x=(false | true); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_typedef_bool=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_typedef_bool=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_typedef_bool" >&5 echo "${ECHO_T}$ac_cv_typedef_bool" >&6 if test "$ac_cv_typedef_bool" = "yes" then cat >>confdefs.h <<\_ACEOF #define SP_HAVE_BOOL 1 _ACEOF fi echo "$as_me:$LINENO: checking for ANSI template instantiation" >&5 echo $ECHO_N "checking for ANSI template instantiation... $ECHO_C" >&6 if test "${ac_cv_c_template_ansi+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" class foo { }; template class test { public: T *data();}; template class test; #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_c_template_ansi=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_c_template_ansi=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_c_template_ansi" >&5 echo "${ECHO_T}$ac_cv_c_template_ansi" >&6 if test "$ac_cv_c_template_ansi" = "yes" then cat >>confdefs.h <<\_ACEOF #define SP_ANSI_CLASS_INST 1 _ACEOF fi echo "$as_me:$LINENO: checking whether to include support for http" >&5 echo $ECHO_N "checking whether to include support for http... $ECHO_C" >&6 ac_ext=cc ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6 if test -z "$CXXCPP"; then if test "${ac_cv_prog_CXXCPP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # Double quotes because CXXCPP needs to be expanded for CXXCPP in "$CXX -E" "/lib/cpp" do ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then break fi done ac_cv_prog_CXXCPP=$CXXCPP fi CXXCPP=$ac_cv_prog_CXXCPP else ac_cv_prog_CXXCPP=$CXXCPP fi echo "$as_me:$LINENO: result: $CXXCPP" >&5 echo "${ECHO_T}$CXXCPP" >&6 ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then : else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether non-existent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check" >&5 echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check" >&2;} { (exit 1); exit 1; }; } fi ac_ext=cc ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu # Check whether --enable-http or --disable-http was given. if test "${enable_http+set}" = set; then enableval="$enable_http" if test $enableval then echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 cat >>confdefs.h <<\_ACEOF #define SP_HAVE_SOCKET 1 _ACEOF echo "$as_me:$LINENO: checking for main in -lnsl" >&5 echo $ECHO_N "checking for main in -lnsl... $ECHO_C" >&6 if test "${ac_cv_lib_nsl_main+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lnsl $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { main (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_nsl_main=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_lib_nsl_main=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_main" >&5 echo "${ECHO_T}$ac_cv_lib_nsl_main" >&6 if test $ac_cv_lib_nsl_main = yes; then LIBS="$LIBS -lnsl" fi echo "$as_me:$LINENO: checking for main in -lsocket" >&5 echo $ECHO_N "checking for main in -lsocket... $ECHO_C" >&6 if test "${ac_cv_lib_socket_main+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsocket $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { main (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_socket_main=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_lib_socket_main=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_socket_main" >&5 echo "${ECHO_T}$ac_cv_lib_socket_main" >&6 if test $ac_cv_lib_socket_main = yes; then LIBS="$LIBS -lsocket" fi echo "$as_me:$LINENO: checking h_errno in netdb.h" >&5 echo $ECHO_N "checking h_errno in netdb.h... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | egrep "h_errno" >/dev/null 2>&1; then echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else cat >>confdefs.h <<\_ACEOF #define SP_DECLARE_H_ERRNO 1 _ACEOF echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi rm -f conftest* else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi; echo "$as_me:$LINENO: checking whether to enable support for FrameMaker MIF output" >&5 echo $ECHO_N "checking whether to enable support for FrameMaker MIF output... $ECHO_C" >&6 # Check whether --enable-mif or --disable-mif was given. if test "${enable_mif+set}" = set; then enableval="$enable_mif" if test "$enableval" = yes; then echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 cat >>confdefs.h <<\_ACEOF #define JADE_MIF 1 _ACEOF else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 cat >>confdefs.h <<\_ACEOF #define DUMMY 1 _ACEOF fi else echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 cat >>confdefs.h <<\_ACEOF #define JADE_MIF 1 _ACEOF fi; echo "$as_me:$LINENO: checking whether to enable support for HTML+CSS output" >&5 echo $ECHO_N "checking whether to enable support for HTML+CSS output... $ECHO_C" >&6 # Check whether --enable-html or --disable-html was given. if test "${enable_html+set}" = set; then enableval="$enable_html" if test "$enableval" = yes; then echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 cat >>confdefs.h <<\_ACEOF #define JADE_HTML 1 _ACEOF else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 cat >>confdefs.h <<\_ACEOF #define DUMMY 1 _ACEOF fi else echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 cat >>confdefs.h <<\_ACEOF #define JADE_HTML 1 _ACEOF fi; cat >>confdefs.h <<\_ACEOF #define SP_MULTI_BYTE 1 _ACEOF echo "$as_me:$LINENO: checking for default catalog" >&5 echo $ECHO_N "checking for default catalog... $ECHO_C" >&6 # Check whether --enable-default-catalog or --disable-default-catalog was given. if test "${enable_default_catalog+set}" = set; then enableval="$enable_default_catalog" if test $enableval then echo "$as_me:$LINENO: result: $enableval" >&5 echo "${ECHO_T}$enableval" >&6 cat >>confdefs.h <<_ACEOF #define SGML_CATALOG_FILES_DEFAULT "$enableval" _ACEOF else echo "$as_me:$LINENO: result: none" >&5 echo "${ECHO_T}none" >&6 fi else echo "$as_me:$LINENO: result: none" >&5 echo "${ECHO_T}none" >&6 fi; echo "$as_me:$LINENO: checking for default search path" >&5 echo $ECHO_N "checking for default search path... $ECHO_C" >&6 # Check whether --enable-default-search-path or --disable-default-search-path was given. if test "${enable_default_search_path+set}" = set; then enableval="$enable_default_search_path" if test $enableval then echo "$as_me:$LINENO: result: $enableval" >&5 echo "${ECHO_T}$enableval" >&6 cat >>confdefs.h <<_ACEOF #define SGML_SEARCH_PATH_DEFAULT "$enableval" _ACEOF else echo "$as_me:$LINENO: result: none" >&5 echo "${ECHO_T}none" >&6 fi else echo "$as_me:$LINENO: result: none" >&5 echo "${ECHO_T}none" >&6 fi; # Check whether --enable-shared or --disable-shared was given. if test "${enable_shared+set}" = set; then enableval="$enable_shared" p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," for pkg in $enableval; do if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$ac_save_ifs" ;; esac else enable_shared=yes fi; # Check whether --enable-static or --disable-static was given. if test "${enable_static+set}" = set; then enableval="$enable_static" p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," for pkg in $enableval; do if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$ac_save_ifs" ;; esac else enable_static=yes fi; # Check whether --enable-fast-install or --disable-fast-install was given. if test "${enable_fast_install+set}" = set; then enableval="$enable_fast_install" p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," for pkg in $enableval; do if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$ac_save_ifs" ;; esac else enable_fast_install=yes fi; # Check whether --with-gnu-ld or --without-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then withval="$with_gnu_ld" test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi; ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. echo "$as_me:$LINENO: checking for ld used by GCC" >&5 echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6 case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | [A-Za-z]:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the path of ld ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then echo "$as_me:$LINENO: checking for GNU ld" >&5 echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 else echo "$as_me:$LINENO: checking for non-GNU ld" >&5 echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 fi if test "${lt_cv_path_LD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$LD"; then IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. if "$lt_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then test "$with_gnu_ld" != no && break else test "$with_gnu_ld" != yes && break fi fi done IFS="$ac_save_ifs" else lt_cv_path_LD="$LD" # Let the user override the test with a path. fi fi LD="$lt_cv_path_LD" if test -n "$LD"; then echo "$as_me:$LINENO: result: $LD" >&5 echo "${ECHO_T}$LD" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} { (exit 1); exit 1; }; } echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 if test "${lt_cv_prog_gnu_ld+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # I'd rather use --version here, but apparently some GNU ld's only accept -v. if $LD -v 2>&1 &5; then lt_cv_prog_gnu_ld=yes else lt_cv_prog_gnu_ld=no fi fi echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5 echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 with_gnu_ld=$lt_cv_prog_gnu_ld echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6 if test "${lt_cv_ld_reload_flag+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_ld_reload_flag='-r' fi echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6 reload_flag=$lt_cv_ld_reload_flag test -n "$reload_flag" && reload_flag=" $reload_flag" echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6 if test "${lt_cv_path_NM+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do test -z "$ac_dir" && ac_dir=. tmp_nm=$ac_dir/${ac_tool_prefix}nm if test -f $tmp_nm || test -f $tmp_nm$ac_exeext ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then lt_cv_path_NM="$tmp_nm -B" break elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then lt_cv_path_NM="$tmp_nm -p" break else lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags fi fi done IFS="$ac_save_ifs" test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm fi fi NM="$lt_cv_path_NM" echo "$as_me:$LINENO: result: $NM" >&5 echo "${ECHO_T}$NM" >&6 echo "$as_me:$LINENO: checking how to recognise dependant libraries" >&5 echo $ECHO_N "checking how to recognise dependant libraries... $ECHO_C" >&6 if test "${lt_cv_deplibs_check_method+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # `unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # ['file_magic [regex]'] -- check by looking for files in library path # which responds to the $file_magic_cmd with a given egrep regex. # If you have `file' or equivalent on your system and you're not sure # whether `pass_all' will *always* work, you probably want this one. case $host_os in aix4* | aix5*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi4*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin* | mingw* | pw32*) lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library' lt_cv_file_magic_cmd='/usr/bin/file -L' case "$host_os" in rhapsody* | darwin1.012) lt_cv_file_magic_test_file=`echo /System/Library/Frameworks/System.framework/Versions/*/System | head -1` ;; *) # Darwin 1.3 on lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib' ;; esac ;; freebsd*) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20*|hpux11*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; irix5* | irix6*) case $host_os in irix5*) # this will be overridden with pass_all, but let us keep it just in case lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" ;; *) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac # this will be overridden with pass_all, but let us keep it just in case lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[1234] dynamic lib MIPS - version 1" ;; esac lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*` lt_cv_deplibs_check_method=pass_all ;; # This must be Linux ELF. linux-gnu*) case $host_cpu in alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* | s390* ) lt_cv_deplibs_check_method=pass_all ;; *) # glibc up to 2.1.1 does not perform some relocations on ARM lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; esac lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' else lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; osf3* | osf4* | osf5*) # this will be overridden with pass_all, but let us keep it just in case lt_cv_deplibs_check_method='file_magic COFF format alpha shared library' lt_cv_file_magic_test_file=/shlib/libc.so lt_cv_deplibs_check_method=pass_all ;; sco3.2v5*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all lt_cv_file_magic_test_file=/lib/libc.so ;; sysv5uw[78]* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; esac ;; esac fi echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6 file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method # Check for command to grab the raw symbol name followed by C symbol from nm. echo "$as_me:$LINENO: checking command to parse $NM output" >&5 echo $ECHO_N "checking command to parse $NM output... $ECHO_C" >&6 if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Transform the above into a raw symbol and a C symbol. symxfrm='\1 \2\3 \3' # Transform an extracted symbol line into a proper C declaration lt_cv_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'" # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | pw32*) symcode='[ABCDGISTW]' ;; hpux*) # Its linker distinguishes data from code symbols lt_cv_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" ;; irix*) symcode='[BCDEGRST]' ;; solaris* | sysv5*) symcode='[BDT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # Handle CRLF in mingw tool chain opt_cr= case $host_os in mingw*) opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # If we're using GNU nm, then use its standard symbol codes. if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then symcode='[ABCDGISTW]' fi # Try without a prefix undercore, then with it. for ac_symprfx in "" "_"; do # Write the raw and C identifiers. lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Now try to grab the symbols. nlist=conftest.nm if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if egrep ' nm_test_var$' "$nlist" >/dev/null; then if egrep ' nm_test_func$' "$nlist" >/dev/null; then cat < conftest.$ac_ext #ifdef __cplusplus extern "C" { #endif EOF # Now generate the symbol file. eval "$lt_cv_global_symbol_to_cdecl"' < "$nlist" >> conftest.$ac_ext' cat <> conftest.$ac_ext #if defined (__STDC__) && __STDC__ # define lt_ptr_t void * #else # define lt_ptr_t char * # define const #endif /* The mapping between symbol names and symbols. */ const struct { const char *name; lt_ptr_t address; } lt_preloaded_symbols[] = { EOF sed "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" >> conftest.$ac_ext cat <<\EOF >> conftest.$ac_ext {0, (lt_ptr_t) 0} }; #ifdef __cplusplus } #endif EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext save_LIBS="$LIBS" save_CFLAGS="$CFLAGS" LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$no_builtin_flag" if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest; then pipe_works=yes fi LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done fi global_symbol_pipe="$lt_cv_sys_global_symbol_pipe" if test -z "$lt_cv_sys_global_symbol_pipe"; then global_symbol_to_cdecl= else global_symbol_to_cdecl="$lt_cv_global_symbol_to_cdecl" fi if test -z "$global_symbol_pipe$global_symbol_to_cdecl"; then echo "$as_me:$LINENO: result: failed" >&5 echo "${ECHO_T}failed" >&6 else echo "$as_me:$LINENO: result: ok" >&5 echo "${ECHO_T}ok" >&6 fi for ac_header in dlfcn.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else # Is the header compilable? echo "$as_me:$LINENO: checking $ac_header usability" >&5 echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f conftest.$ac_objext conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6 # Is the header present? echo "$as_me:$LINENO: checking $ac_header presence" >&5 echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include <$ac_header> _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag else ac_cpp_err= fi else ac_cpp_err=yes fi if test -z "$ac_cpp_err"; then ac_header_preproc=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 echo "${ECHO_T}$ac_header_preproc" >&6 # So? What about this header? case $ac_header_compiler:$ac_header_preproc in yes:no ) { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; no:yes ) { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; esac echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 else eval "$as_ac_Header=$ac_header_preproc" fi echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done # Only perform the check for file, if the check method requires it case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6 if test "${lt_cv_path_MAGIC_CMD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $MAGIC_CMD in /*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; ?:/*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. ;; *) ac_save_MAGIC_CMD="$MAGIC_CMD" IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="/usr/bin:$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/${ac_tool_prefix}file; then lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | egrep "$file_magic_regex" > /dev/null; then : else cat <&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org EOF fi ;; esac fi break fi done IFS="$ac_save_ifs" MAGIC_CMD="$ac_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 echo "${ECHO_T}$MAGIC_CMD" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then echo "$as_me:$LINENO: checking for file" >&5 echo $ECHO_N "checking for file... $ECHO_C" >&6 if test "${lt_cv_path_MAGIC_CMD+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else case $MAGIC_CMD in /*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; ?:/*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. ;; *) ac_save_MAGIC_CMD="$MAGIC_CMD" IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="/usr/bin:$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/file; then lt_cv_path_MAGIC_CMD="$ac_dir/file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | egrep "$file_magic_regex" > /dev/null; then : else cat <&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org EOF fi ;; esac fi break fi done IFS="$ac_save_ifs" MAGIC_CMD="$ac_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 echo "${ECHO_T}$MAGIC_CMD" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi else MAGIC_CMD=: fi fi fi ;; esac if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then echo "$as_me:$LINENO: result: $RANLIB" >&5 echo "${ECHO_T}$RANLIB" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 echo "${ECHO_T}$ac_ct_RANLIB" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi RANLIB=$ac_ct_RANLIB else RANLIB="$ac_cv_prog_RANLIB" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then echo "$as_me:$LINENO: result: $STRIP" >&5 echo "${ECHO_T}$STRIP" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 echo "${ECHO_T}$ac_ct_STRIP" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi STRIP=$ac_ct_STRIP else STRIP="$ac_cv_prog_STRIP" fi enable_dlopen=no enable_win32_dll=no # Check whether --enable-libtool-lock or --disable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then enableval="$enable_libtool_lock" fi; test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in *-*-irix6*) # Find out which ABI we are using. echo '#line 6836 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6 if test "${lt_cv_cc_needs_belf+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then lt_cv_cc_needs_belf=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 lt_cv_cc_needs_belf=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ac_ext=cc ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu fi echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6 if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='sed -e s/^X//' sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Constants: rm="rm -f" # Global variables: default_ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except M$VC, # which needs '.lib'). libext=a ltmain="$ac_aux_dir/ltmain.sh" ofile="$default_ofile" with_gnu_ld="$lt_cv_prog_gnu_ld" need_locks="$enable_libtool_lock" old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$AR" && AR=ar test -z "$AR_FLAGS" && AR_FLAGS=cru test -z "$AS" && AS=as test -z "$CC" && CC=cc test -z "$DLLTOOL" && DLLTOOL=dlltool test -z "$LD" && LD=ld test -z "$LN_S" && LN_S="ln -s" test -z "$MAGIC_CMD" && MAGIC_CMD=file test -z "$NM" && NM=nm test -z "$OBJDUMP" && OBJDUMP=objdump test -z "$RANLIB" && RANLIB=: test -z "$STRIP" && STRIP=: test -z "$ac_objext" && ac_objext=o if test x"$host" != x"$build"; then ac_tool_prefix=${host_alias}- else ac_tool_prefix= fi # Transform linux* to *-*-linux-gnu*, to support old configure scripts. case $host_os in linux-gnu*) ;; linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` esac case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" fi # Allow CC to be a program name with arguments. set dummy $CC compiler="$2" echo "$as_me:$LINENO: checking for objdir" >&5 echo $ECHO_N "checking for objdir... $ECHO_C" >&6 rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. objdir=_libs fi rmdir .libs 2>/dev/null echo "$as_me:$LINENO: result: $objdir" >&5 echo "${ECHO_T}$objdir" >&6 # Check whether --with-pic or --without-pic was given. if test "${with_pic+set}" = set; then withval="$with_pic" pic_mode="$withval" else pic_mode=default fi; test -z "$pic_mode" && pic_mode=default # We assume here that the value for lt_cv_prog_cc_pic will not be cached # in isolation, and that seeing it set (from the cache) indicates that # the associated values are set (in the cache) correctly too. echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 if test "${lt_cv_prog_cc_pic+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_cc_pic= lt_cv_prog_cc_shlib= lt_cv_prog_cc_wl= lt_cv_prog_cc_static= lt_cv_prog_cc_no_builtin= lt_cv_prog_cc_can_build_shared=$can_build_shared if test "$GCC" = yes; then lt_cv_prog_cc_wl='-Wl,' lt_cv_prog_cc_static='-static' case $host_os in aix*) # Below there is a dirty hack to force normal static linking with -ldl # The problem is because libdl dynamically linked with both libc and # libC (AIX C++ library), which obviously doesn't included in libraries # list by gcc. This cause undefined symbols with -static flags. # This hack allows C programs to be linked with "-static -ldl", but # we not sure about C++ programs. lt_cv_prog_cc_static="$lt_cv_prog_cc_static ${lt_cv_prog_cc_wl}-lC" ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_cv_prog_cc_pic='-m68020 -resident32 -malways-restore-a4' ;; beos* | irix5* | irix6* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_cv_prog_cc_pic='-fno-common' ;; cygwin* | mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_cv_prog_cc_pic='-DDLL_EXPORT' ;; sysv4*MP*) if test -d /usr/nec; then lt_cv_prog_cc_pic=-Kconform_pic fi ;; *) lt_cv_prog_cc_pic='-fPIC' ;; esac else # PORTME Check for PIC flags for the system compiler. case $host_os in aix3* | aix4* | aix5*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_cv_prog_cc_static='-Bstatic' lt_cv_prog_cc_wl='-Wl,' else lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp' fi ;; hpux9* | hpux10* | hpux11*) # Is there a better lt_cv_prog_cc_static that works with the bundled CC? lt_cv_prog_cc_wl='-Wl,' lt_cv_prog_cc_static="${lt_cv_prog_cc_wl}-a ${lt_cv_prog_cc_wl}archive" lt_cv_prog_cc_pic='+Z' ;; irix5* | irix6*) lt_cv_prog_cc_wl='-Wl,' lt_cv_prog_cc_static='-non_shared' # PIC (with -KPIC) is the default. ;; cygwin* | mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_cv_prog_cc_pic='-DDLL_EXPORT' ;; newsos6) lt_cv_prog_cc_pic='-KPIC' lt_cv_prog_cc_static='-Bstatic' ;; osf3* | osf4* | osf5*) # All OSF/1 code is PIC. lt_cv_prog_cc_wl='-Wl,' lt_cv_prog_cc_static='-non_shared' ;; sco3.2v5*) lt_cv_prog_cc_pic='-Kpic' lt_cv_prog_cc_static='-dn' lt_cv_prog_cc_shlib='-belf' ;; solaris*) lt_cv_prog_cc_pic='-KPIC' lt_cv_prog_cc_static='-Bstatic' lt_cv_prog_cc_wl='-Wl,' ;; sunos4*) lt_cv_prog_cc_pic='-PIC' lt_cv_prog_cc_static='-Bstatic' lt_cv_prog_cc_wl='-Qoption ld ' ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) lt_cv_prog_cc_pic='-KPIC' lt_cv_prog_cc_static='-Bstatic' if test "x$host_vendor" = xsni; then lt_cv_prog_cc_wl='-LD' else lt_cv_prog_cc_wl='-Wl,' fi ;; uts4*) lt_cv_prog_cc_pic='-pic' lt_cv_prog_cc_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_cv_prog_cc_pic='-Kconform_pic' lt_cv_prog_cc_static='-Bstatic' fi ;; *) lt_cv_prog_cc_can_build_shared=no ;; esac fi fi if test -z "$lt_cv_prog_cc_pic"; then echo "$as_me:$LINENO: result: none" >&5 echo "${ECHO_T}none" >&6 else echo "$as_me:$LINENO: result: $lt_cv_prog_cc_pic" >&5 echo "${ECHO_T}$lt_cv_prog_cc_pic" >&6 # Check to make sure the pic_flag actually works. echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_cv_prog_cc_pic works" >&5 echo $ECHO_N "checking if $compiler PIC flag $lt_cv_prog_cc_pic works... $ECHO_C" >&6 if test "${lt_cv_prog_cc_pic_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then case $host_os in hpux9* | hpux10* | hpux11*) # On HP-UX, both CC and GCC only warn that PIC is supported... then # they create non-PIC objects. So, if there were any warnings, we # assume that PIC is not supported. if test -s conftest.err; then lt_cv_prog_cc_pic_works=no else lt_cv_prog_cc_pic_works=yes fi ;; *) lt_cv_prog_cc_pic_works=yes ;; esac else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 lt_cv_prog_cc_pic_works=no fi rm -f conftest.$ac_objext conftest.$ac_ext CFLAGS="$save_CFLAGS" fi if test "X$lt_cv_prog_cc_pic_works" = Xno; then lt_cv_prog_cc_pic= lt_cv_prog_cc_can_build_shared=no else lt_cv_prog_cc_pic=" $lt_cv_prog_cc_pic" fi echo "$as_me:$LINENO: result: $lt_cv_prog_cc_pic_works" >&5 echo "${ECHO_T}$lt_cv_prog_cc_pic_works" >&6 fi # Check for any special shared library compilation flags. if test -n "$lt_cv_prog_cc_shlib"; then { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries" >&5 echo "$as_me: WARNING: \`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries" >&2;} if echo "$old_CC $old_CFLAGS " | egrep -e "[ ]$lt_cv_prog_cc_shlib[ ]" >/dev/null; then : else { echo "$as_me:$LINENO: WARNING: add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5 echo "$as_me: WARNING: add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;} lt_cv_prog_cc_can_build_shared=no fi fi echo "$as_me:$LINENO: checking if $compiler static flag $lt_cv_prog_cc_static works" >&5 echo $ECHO_N "checking if $compiler static flag $lt_cv_prog_cc_static works... $ECHO_C" >&6 if test "${lt_cv_prog_cc_static_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_cc_static_works=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then lt_cv_prog_cc_static_works=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" fi # Belt *and* braces to stop my trousers falling down: test "X$lt_cv_prog_cc_static_works" = Xno && lt_cv_prog_cc_static= echo "$as_me:$LINENO: result: $lt_cv_prog_cc_static_works" >&5 echo "${ECHO_T}$lt_cv_prog_cc_static_works" >&6 pic_flag="$lt_cv_prog_cc_pic" special_shlib_compile_flags="$lt_cv_prog_cc_shlib" wl="$lt_cv_prog_cc_wl" link_static_flag="$lt_cv_prog_cc_static" no_builtin_flag="$lt_cv_prog_cc_no_builtin" can_build_shared="$lt_cv_prog_cc_can_build_shared" # Check to see if options -o and -c are simultaneously supported by compiler echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 if test "${lt_cv_compiler_c_o+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else $rm -r conftest 2>/dev/null mkdir conftest cd conftest echo "int some_variable = 0;" > conftest.$ac_ext mkdir out # According to Tom Tromey, Ian Lance Taylor reported there are C compilers # that will create temporary files in the current directory regardless of # the output directory. Thus, making CWD read-only will cause this test # to fail, enabling locking or at least warning the user not to do parallel # builds. chmod -w . save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -o out/conftest2.$ac_objext" compiler_c_o=no if { (eval echo configure:7365: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test -s out/conftest.err; then lt_cv_compiler_c_o=no else lt_cv_compiler_c_o=yes fi else # Append any errors to the config.log. cat out/conftest.err 1>&5 lt_cv_compiler_c_o=no fi CFLAGS="$save_CFLAGS" chmod u+w . $rm conftest* out/* rmdir out cd .. rmdir conftest $rm -r conftest 2>/dev/null fi compiler_c_o=$lt_cv_compiler_c_o echo "$as_me:$LINENO: result: $compiler_c_o" >&5 echo "${ECHO_T}$compiler_c_o" >&6 if test x"$compiler_c_o" = x"yes"; then # Check to see if we can write to a .lo echo "$as_me:$LINENO: checking if $compiler supports -c -o file.lo" >&5 echo $ECHO_N "checking if $compiler supports -c -o file.lo... $ECHO_C" >&6 if test "${lt_cv_compiler_o_lo+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_compiler_o_lo=no save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -c -o conftest.lo" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { int some_variable = 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then lt_cv_compiler_o_lo=no else lt_cv_compiler_o_lo=yes fi else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext CFLAGS="$save_CFLAGS" fi compiler_o_lo=$lt_cv_compiler_o_lo echo "$as_me:$LINENO: result: $compiler_o_lo" >&5 echo "${ECHO_T}$compiler_o_lo" >&6 else compiler_o_lo=no fi # Check to see if we can do hard links to lock some files if needed hard_links="nottested" if test "$compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no echo "$as_me:$LINENO: result: $hard_links" >&5 echo "${ECHO_T}$hard_links" >&6 if test "$hard_links" = no; then { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi if test "$GCC" = yes; then # Check to see if options -fno-rtti -fno-exceptions are supported by compiler echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 echo "int some_variable = 0;" > conftest.$ac_ext save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext" compiler_rtti_exceptions=no cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { int some_variable = 0; ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then compiler_rtti_exceptions=no else compiler_rtti_exceptions=yes fi else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -f conftest.$ac_objext conftest.$ac_ext CFLAGS="$save_CFLAGS" echo "$as_me:$LINENO: result: $compiler_rtti_exceptions" >&5 echo "${ECHO_T}$compiler_rtti_exceptions" >&6 if test "$compiler_rtti_exceptions" = "yes"; then no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions' else no_builtin_flag=' -fno-builtin' fi fi # See if the linker supports building shared libraries. echo "$as_me:$LINENO: checking whether the linker ($LD) supports shared libraries" >&5 echo $ECHO_N "checking whether the linker ($LD) supports shared libraries... $ECHO_C" >&6 allow_undefined_flag= no_undefined_flag= need_lib_prefix=unknown need_version=unknown # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments archive_cmds= archive_expsym_cmds= old_archive_from_new_cmds= old_archive_from_expsyms_cmds= export_dynamic_flag_spec= whole_archive_flag_spec= thread_safe_flag_spec= hardcode_into_libs=no hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_direct=no hardcode_minus_L=no hardcode_shlibpath_var=unsupported runpath_var= link_all_deplibs=unknown always_export_symbols=no export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an egrep regular expression of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms="_GLOBAL_OFFSET_TABLE_" # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* ) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; esac ld_shlibs=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # See if GNU ld supports shared libraries. case $host_os in aix3* | aix4* | aix5*) # On AIX, the GNU linker is very broken # Note:Check GNU linker on AIX 5-IA64 when/if it becomes available. ld_shlibs=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF ;; amigaos*) archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can use # them. ld_shlibs=no ;; beos*) if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32*) # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' allow_undefined_flag=unsupported always_export_symbols=yes extract_expsyms_cmds='test -f $output_objdir/impgen.c || \ sed -e "/^# \/\* impgen\.c starts here \*\//,/^# \/\* impgen.c ends here \*\// { s/^# //;s/^# *$//; p; }" -e d < $''0 > $output_objdir/impgen.c~ test -f $output_objdir/impgen.exe || (cd $output_objdir && \ if test "x$HOST_CC" != "x" ; then $HOST_CC -o impgen impgen.c ; \ else $CC -o impgen impgen.c ; fi)~ $output_objdir/impgen $dir/$soroot > $output_objdir/$soname-def' old_archive_from_expsyms_cmds='$DLLTOOL --as=$AS --dllname $soname --def $output_objdir/$soname-def --output-lib $output_objdir/$newlib' # cygwin and mingw dlls have different entry points and sets of symbols # to exclude. # FIXME: what about values for MSVC? dll_entry=__cygwin_dll_entry@12 dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12~ case $host_os in mingw*) # mingw values dll_entry=_DllMainCRTStartup@12 dll_exclude_symbols=DllMain@12,DllMainCRTStartup@12,DllEntryPoint@12~ ;; esac # mingw and cygwin differ, and it's simplest to just exclude the union # of the two symbol sets. dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12,DllMainCRTStartup@12,DllEntryPoint@12 # recent cygwin and mingw systems supply a stub DllMain which the user # can override, but on older systems we have to supply one (in ltdll.c) if test "x$lt_cv_need_dllmain" = "xyes"; then ltdll_obj='$output_objdir/$soname-ltdll.'"$ac_objext " ltdll_cmds='test -f $output_objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < [$]0 > $output_objdir/$soname-ltdll.c~ test -f $output_objdir/$soname-ltdll.$ac_objext || (cd $output_objdir && $CC -c $soname-ltdll.c)~' else ltdll_obj= ltdll_cmds= fi # Extract the symbol export list from an `--export-all' def file, # then regenerate the def file from the symbol export list, so that # the compiled dll only exports the symbol export list. # Be careful not to strip the DATA tag left be newer dlltools. export_symbols_cmds="$ltdll_cmds"' $DLLTOOL --export-all --exclude-symbols '$dll_exclude_symbols' --output-def $output_objdir/$soname-def '$ltdll_obj'$libobjs $convenience~ sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]*//" -e "s/ *;.*$//" < $output_objdir/$soname-def > $export_symbols' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is. # If DATA tags from a recent dlltool are present, honour them! archive_expsym_cmds='if test "x`head -1 $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname-def; else echo EXPORTS > $output_objdir/$soname-def; _lt_hint=1; cat $export_symbols | while read symbol; do set dummy \$symbol; case \$# in 2) echo " \$2 @ \$_lt_hint ; " >> $output_objdir/$soname-def;; *) echo " \$2 @ \$_lt_hint \$3 ; " >> $output_objdir/$soname-def;; esac; _lt_hint=`expr 1 + \$_lt_hint`; done; fi~ '"$ltdll_cmds"' $CC -Wl,--base-file,$output_objdir/$soname-base '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp~ $CC -Wl,--base-file,$output_objdir/$soname-base $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp --output-lib $output_objdir/$libname.dll.a~ $CC $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags' ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris* | sysv5*) if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = yes; then runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec='${wl}--export-dynamic' case $host_os in cygwin* | mingw* | pw32*) # dlltool doesn't understand --whole-archive et. al. whole_archive_flag_spec= ;; *) # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec= fi ;; esac fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes && test -z "$link_static_flag"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix4* | aix5*) # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds='' hardcode_libdir_separator=':' if test "$GCC" = yes; then collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 hardcode_direct=yes else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi shared_flag='-shared' else if test "$host_cpu" = ia64; then shared_flag='-G' else shared_flag='${wl}-bM:SRE' fi hardcode_direct=yes fi if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # Test if we are trying to use run time linking, or normal AIX style linking. # If -brtl is somewhere in LDFLAGS, we need to do run time linking. aix_use_runtimelinking=no for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl" ); then aix_use_runtimelinking=yes break fi done exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # It seems that -bexpall can do strange things, so it is better to # generate a list of symbols to export. always_export_symbols=yes if test "$aix_use_runtimelinking" = yes; then hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib' allow_undefined_flag=' -Wl,-G' archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag="-znodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname ${wl}-h$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" else hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib' # Warning - without using the other run time loading flags, -berok will # link without error, but may produce a broken library. allow_undefined_flag='${wl}-berok' # This is a bit strange, but is similar to how AIX traditionally builds # it's shared libraries. archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"' ~$AR -crlo $objdir/$libname$release.a $objdir/$soname' fi fi ;; amigaos*) archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # see comment about different semantics on the GNU ld section ld_shlibs=no ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs' fix_srcfile_path='`cygpath -w "$srcfile"`' ;; darwin* | rhapsody*) allow_undefined_flag='-undefined suppress' # FIXME: Relying on posixy $() will cause problems for # cross-compilation, but unfortunately the echo tests do not # yet detect zsh echo's removal of \ escapes. archive_cmds='$CC $(test .$module = .yes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib $libobjs $deplibs$linkopts -install_name $rpath/$soname $(test -n "$verstring" -a x$verstring != x0.0 && echo $verstring)' # We need to add '_' to the symbols in $export_symbols first #archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols' hardcode_direct=yes hardcode_shlibpath_var=no whole_archive_flag_spec='-all_load $convenience' ;; freebsd1*) ld_shlibs=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd*) archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9* | hpux10* | hpux11*) case $host_os in hpux9*) archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ;; *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;; esac hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_minus_L=yes # Not in the search PATH, but as the default # location of the library. export_dynamic_flag_spec='${wl}-E' ;; irix5* | irix6*) if test "$GCC" = yes; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: link_all_deplibs=yes ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; openbsd*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "-exported_symbol " >> $lib.exp; echo "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' #Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi hardcode_libdir_separator=: ;; sco3.2v5*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ;; solaris*) no_undefined_flag=' -z defs' # $CC -shared without GNU ld will not create a library from C++ # object files and a static libstdc++, better avoid it by now archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; esac link_all_deplibs=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) if test "x$host_vendor" = xsno; then archive_cmds='$LD -G -Bsymbolic -h $soname -o $lib $libobjs $deplibs $linkopts' hardcode_direct=yes # is this really true??? else archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie fi runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv5*) no_undefined_flag=' -z text' # $CC -shared without GNU ld will not create a library from C++ # object files and a static libstdc++, better avoid it by now archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' hardcode_libdir_flag_spec= hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4.2uw2*) archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=no hardcode_shlibpath_var=no hardcode_runpath_var=yes runpath_var=LD_RUN_PATH ;; sysv5uw7* | unixware7*) no_undefined_flag='${wl}-z ${wl}text' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' fi runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac fi echo "$as_me:$LINENO: result: $ld_shlibs" >&5 echo "${ECHO_T}$ld_shlibs" >&6 test "$ld_shlibs" = no && can_build_shared=no # Check hardcoding attributes. echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 hardcode_action= if test -n "$hardcode_libdir_flag_spec" || \ test -n "$runpath_var"; then # We can hardcode non-existant directories. if test "$hardcode_direct" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$hardcode_shlibpath_var" != no && test "$hardcode_minus_L" != no; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi echo "$as_me:$LINENO: result: $hardcode_action" >&5 echo "${ECHO_T}$hardcode_action" >&6 striplib= old_striplib= echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6 else echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6 fi reload_cmds='$LD$reload_flag -o $output$reload_objs' test -z "$deplibs_check_method" && deplibs_check_method=unknown # PORTME Fill in your ld.so characteristics echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 library_names_spec= libname_spec='lib$name' soname_spec= postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}.so$versuffix $libname.a' shlibpath_var=LIBPATH # AIX has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}.so$major' ;; aix4* | aix5*) version_type=linux if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}.so$major ${libname}${release}.so$versuffix $libname.so' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so instead of # lib.a to let people know that these are not typical AIX shared libraries. library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}.so$major' fi shlibpath_var=LIBPATH deplibs_check_method=pass_all fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done' ;; beos*) library_names_spec='${libname}.so' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi4*) version_type=linux need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" export_dynamic_flag_spec=-rdynamic # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin*) library_names_spec='$libname.dll.a' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll' postinstall_cmds='dlpath=`bash 2>&1 -c '\''. $dir/${file}i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog .libs/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`bash 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' ;; yes,mingw*) library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g"` ;; yes,pw32*) library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | sed -e 's/./-/g'`${versuffix}.dll' ;; *) library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no # FIXME: Relying on posixy $() will cause problems for # cross-compilation, but unfortunately the echo tests do not # yet detect zsh echo's removal of \ escapes. library_names_spec='${libname}${release}${versuffix}.$(test .$module = .yes && echo so || echo dylib) ${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib) ${libname}.$(test .$module = .yes && echo so || echo dylib)' soname_spec='${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib)' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd*) objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; *) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. dynamic_linker="$host_os dld.sl" version_type=sunos need_lib_prefix=no need_version=no shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl' soname_spec='${libname}${release}.sl$major' # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; irix5* | irix6*) version_type=irix need_lib_prefix=no need_version=no soname_spec='${libname}${release}.so$major' library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so $libname.so' case $host_os in irix5*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" ;; # No shared lib support for Linux oldld, aout, or coff. linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) dynamic_linker=no ;; # This must be Linux ELF. linux-gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so' soname_spec='${libname}${release}.so$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos if test "$with_gnu_ld" = yes; then need_lib_prefix=no need_version=no fi library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH ;; os2*) libname_spec='$name' need_lib_prefix=no library_names_spec='$libname.dll $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_version=no soname_spec='${libname}${release}.so' library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; sco3.2v5*) version_type=osf soname_spec='${libname}${release}.so$major' library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' shlibpath_var=LD_LIBRARY_PATH ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) version_type=linux library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; uts4*) version_type=linux library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so' soname_spec='$libname.so.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; *) dynamic_linker=no ;; esac echo "$as_me:$LINENO: result: $dynamic_linker" >&5 echo "${ECHO_T}$dynamic_linker" >&6 test "$dynamic_linker" = no && can_build_shared=no # Report the final consequences. echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 echo "$as_me:$LINENO: result: $can_build_shared" >&5 echo "${ECHO_T}$can_build_shared" >&6 if test "$hardcode_action" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; cygwin* | mingw* | pw32*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; *) echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 if test "${ac_cv_lib_dl_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dl_dlopen=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 if test $ac_cv_lib_dl_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else echo "$as_me:$LINENO: checking for dlopen" >&5 echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 if test "${ac_cv_func_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char dlopen (); below. */ #include /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); char (*f) (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_dlopen) || defined (__stub___dlopen) choke me #else f = dlopen; #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_dlopen=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_func_dlopen=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 echo "${ECHO_T}$ac_cv_func_dlopen" >&6 if test $ac_cv_func_dlopen = yes; then lt_cv_dlopen="dlopen" else echo "$as_me:$LINENO: checking for shl_load" >&5 echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 if test "${ac_cv_func_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char shl_load (); below. */ #include /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shl_load (); char (*f) (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined (__stub_shl_load) || defined (__stub___shl_load) choke me #else f = shl_load; #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_func_shl_load=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_func_shl_load=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 echo "${ECHO_T}$ac_cv_func_shl_load" >&6 if test $ac_cv_func_shl_load = yes; then lt_cv_dlopen="shl_load" else echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 if test "${ac_cv_lib_svld_dlopen+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char dlopen (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_svld_dlopen=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_lib_svld_dlopen=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 if test $ac_cv_lib_svld_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 if test "${ac_cv_lib_dld_shl_load+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ char shl_load (); #ifdef F77_DUMMY_MAIN # ifdef __cplusplus extern "C" # endif int F77_DUMMY_MAIN() { return 1; } #endif int main () { shl_load (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dld_shl_load=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_lib_dld_shl_load=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 if test $ac_cv_lib_dld_shl_load = yes; then lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" fi fi fi fi fi ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 if test "${lt_cv_dlopen_self+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } exit (status); } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_unknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 echo "${ECHO_T}$lt_cv_dlopen_self" >&6 if test "x$lt_cv_dlopen_self" = xyes; then LDFLAGS="$LDFLAGS $link_static_flag" echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 if test "${lt_cv_dlopen_self_static+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } exit (status); } EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 if test "${lt_cv_archive_cmds_need_lc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else $rm conftest* echo 'static int dummy;' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_cv_prog_cc_wl compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then lt_cv_archive_cmds_need_lc=no else lt_cv_archive_cmds_need_lc=yes fi allow_undefined_flag=$save_allow_undefined_flag else cat conftest.err 1>&5 fi fi echo "$as_me:$LINENO: result: $lt_cv_archive_cmds_need_lc" >&5 echo "${ECHO_T}$lt_cv_archive_cmds_need_lc" >&6 ;; esac fi need_lc=${lt_cv_archive_cmds_need_lc-yes} # The second clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then : else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. test -f Makefile && make "$ltmain" fi if test -f "$ltmain"; then trap "$rm \"${ofile}T\"; exit 1" 1 2 15 $rm -f "${ofile}T" echo creating $ofile # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS \ AR AR_FLAGS CC LD LN_S NM SHELL \ reload_flag reload_cmds wl \ pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \ thread_safe_flag_spec whole_archive_flag_spec libname_spec \ library_names_spec soname_spec \ RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \ old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds \ postuninstall_cmds extract_expsyms_cmds old_archive_from_expsyms_cmds \ old_striplib striplib file_magic_cmd export_symbols_cmds \ deplibs_check_method allow_undefined_flag no_undefined_flag \ finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \ hardcode_libdir_flag_spec hardcode_libdir_separator \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do case $var in reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ export_symbols_cmds | archive_cmds | archive_expsym_cmds | \ extract_expsyms_cmds | old_archive_from_expsyms_cmds | \ postinstall_cmds | postuninstall_cmds | \ finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done cat <<__EOF__ > "${ofile}T" #! $SHELL # `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996-2000 Free Software Foundation, Inc. # Originally by Gordon Matzigkeit , 1996 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="sed -e s/^X//" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi # ### BEGIN LIBTOOL CONFIG # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$need_lc # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # The default C compiler. CC=$lt_CC # Is the compiler the GNU C compiler? with_gcc=$GCC # The linker used to build libraries. LD=$lt_LD # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_wl # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_pic_flag pic_mode=$pic_mode # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_compiler_c_o # Can we write directly to a .lo ? compiler_o_lo=$lt_compiler_o_lo # Must we lock files when doing compilation ? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_link_static_flag # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_no_builtin_flag # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_global_symbol_to_cdecl # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path="$fix_srcfile_path" # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # ### END LIBTOOL CONFIG __EOF__ case $host_os in aix3*) cat <<\EOF >> "${ofile}T" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi EOF ;; esac case $host_os in cygwin* | mingw* | pw32* | os2*) cat <<'EOF' >> "${ofile}T" # This is a source program that is used to create dlls on Windows # Don't remove nor modify the starting and closing comments # /* ltdll.c starts here */ # #define WIN32_LEAN_AND_MEAN # #include # #undef WIN32_LEAN_AND_MEAN # #include # # #ifndef __CYGWIN__ # # ifdef __CYGWIN32__ # # define __CYGWIN__ __CYGWIN32__ # # endif # #endif # # #ifdef __cplusplus # extern "C" { # #endif # BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); # #ifdef __cplusplus # } # #endif # # #ifdef __CYGWIN__ # #include # DECLARE_CYGWIN_DLL( DllMain ); # #endif # HINSTANCE __hDllInstance_base; # # BOOL APIENTRY # DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) # { # __hDllInstance_base = hInst; # return TRUE; # } # /* ltdll.c ends here */ # This is a source program that is used to create import libraries # on Windows for dlls which lack them. Don't remove nor modify the # starting and closing comments # /* impgen.c starts here */ # /* Copyright (C) 1999-2000 Free Software Foundation, Inc. # # This file is part of GNU libtool. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # */ # # #include /* for printf() */ # #include /* for open(), lseek(), read() */ # #include /* for O_RDONLY, O_BINARY */ # #include /* for strdup() */ # # /* O_BINARY isn't required (or even defined sometimes) under Unix */ # #ifndef O_BINARY # #define O_BINARY 0 # #endif # # static unsigned int # pe_get16 (fd, offset) # int fd; # int offset; # { # unsigned char b[2]; # lseek (fd, offset, SEEK_SET); # read (fd, b, 2); # return b[0] + (b[1]<<8); # } # # static unsigned int # pe_get32 (fd, offset) # int fd; # int offset; # { # unsigned char b[4]; # lseek (fd, offset, SEEK_SET); # read (fd, b, 4); # return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); # } # # static unsigned int # pe_as32 (ptr) # void *ptr; # { # unsigned char *b = ptr; # return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); # } # # int # main (argc, argv) # int argc; # char *argv[]; # { # int dll; # unsigned long pe_header_offset, opthdr_ofs, num_entries, i; # unsigned long export_rva, export_size, nsections, secptr, expptr; # unsigned long name_rvas, nexp; # unsigned char *expdata, *erva; # char *filename, *dll_name; # # filename = argv[1]; # # dll = open(filename, O_RDONLY|O_BINARY); # if (dll < 1) # return 1; # # dll_name = filename; # # for (i=0; filename[i]; i++) # if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':') # dll_name = filename + i +1; # # pe_header_offset = pe_get32 (dll, 0x3c); # opthdr_ofs = pe_header_offset + 4 + 20; # num_entries = pe_get32 (dll, opthdr_ofs + 92); # # if (num_entries < 1) /* no exports */ # return 1; # # export_rva = pe_get32 (dll, opthdr_ofs + 96); # export_size = pe_get32 (dll, opthdr_ofs + 100); # nsections = pe_get16 (dll, pe_header_offset + 4 +2); # secptr = (pe_header_offset + 4 + 20 + # pe_get16 (dll, pe_header_offset + 4 + 16)); # # expptr = 0; # for (i = 0; i < nsections; i++) # { # char sname[8]; # unsigned long secptr1 = secptr + 40 * i; # unsigned long vaddr = pe_get32 (dll, secptr1 + 12); # unsigned long vsize = pe_get32 (dll, secptr1 + 16); # unsigned long fptr = pe_get32 (dll, secptr1 + 20); # lseek(dll, secptr1, SEEK_SET); # read(dll, sname, 8); # if (vaddr <= export_rva && vaddr+vsize > export_rva) # { # expptr = fptr + (export_rva - vaddr); # if (export_rva + export_size > vaddr + vsize) # export_size = vsize - (export_rva - vaddr); # break; # } # } # # expdata = (unsigned char*)malloc(export_size); # lseek (dll, expptr, SEEK_SET); # read (dll, expdata, export_size); # erva = expdata - export_rva; # # nexp = pe_as32 (expdata+24); # name_rvas = pe_as32 (expdata+32); # # printf ("EXPORTS\n"); # for (i = 0; i> "${ofile}T" || (rm -f "${ofile}T"; exit 1) mv -f "${ofile}T" "$ofile" || \ (rm -f "$ofile" && cp "${ofile}T" "$ofile" && rm -f "${ofile}T") chmod +x "$ofile" fi # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' # Prevent multiple expansion ac_config_files="$ac_config_files Makefile Makefile.lib Makefile.prog Makefile.comm include/config.h" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overriden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, don't put newlines in cache variables' values. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. { (set) 2>&1 | case `(ac_space=' '; set | grep ac_space) 2>&1` in *ac_space=\ *) # `set' does not quote correctly, so add quotes (double-quote # substitution turns \\\\ into \\, and sed turns \\ into \). sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n \ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; } | sed ' t clear : clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ : end' >>confcache if cmp -s $cache_file confcache; then :; else if test -w $cache_file; then test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" cat confcache >$cache_file else echo "not updating unwritable cache $cache_file" fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' # VPATH may cause trouble with some makes, so we remove $(srcdir), # ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=/{ s/:*\$(srcdir):*/:/; s/:*\${srcdir}:*/:/; s/:*@srcdir@:*/:/; s/^\([^=]*=[ ]*\):*/\1/; s/:*$//; s/^[^=]*=[ ]*$//; }' fi # Transform confdefs.h into DEFS. # Protect against shell expansion while executing Makefile rules. # Protect against Makefile macro expansion. # # If the first sed substitution is executed (which looks for macros that # take arguments), then we branch to the quote section. Otherwise, # look for a macro that doesn't take arguments. cat >confdef2opt.sed <<\_ACEOF t clear : clear s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g t quote s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g t quote d : quote s,[ `~#$^&*(){}\\|;'"<>?],\\&,g s,\[,\\&,g s,\],\\&,g s,\$,$$,g p _ACEOF # We use echo to avoid assuming a particular line-breaking character. # The extra dot is to prevent the shell from consuming trailing # line-breaks from the sub-command output. A line-break within # single-quotes doesn't work because, if this script is created in a # platform that uses two characters for line-breaks (e.g., DOS), tr # would break. ac_LF_and_DOT=`echo; echo .` DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'` rm -f confdef2opt.sed : ${CONFIG_STATUS=./config.status} ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 echo "$as_me: creating $CONFIG_STATUS" >&6;} cat >$CONFIG_STATUS <<_ACEOF #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false SHELL=\${CONFIG_SHELL-$SHELL} _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then set -o posix fi # NLS nuisances. # Support unset when possible. if (FOO=FOO; unset FOO) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi (set +x; test -n "`(LANG=C; export LANG) 2>&1`") && { $as_unset LANG || test "${LANG+set}" != set; } || { LANG=C; export LANG; } (set +x; test -n "`(LC_ALL=C; export LC_ALL) 2>&1`") && { $as_unset LC_ALL || test "${LC_ALL+set}" != set; } || { LC_ALL=C; export LC_ALL; } (set +x; test -n "`(LC_TIME=C; export LC_TIME) 2>&1`") && { $as_unset LC_TIME || test "${LC_TIME+set}" != set; } || { LC_TIME=C; export LC_TIME; } (set +x; test -n "`(LC_CTYPE=C; export LC_CTYPE) 2>&1`") && { $as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set; } || { LC_CTYPE=C; export LC_CTYPE; } (set +x; test -n "`(LANGUAGE=C; export LANGUAGE) 2>&1`") && { $as_unset LANGUAGE || test "${LANGUAGE+set}" != set; } || { LANGUAGE=C; export LANGUAGE; } (set +x; test -n "`(LC_COLLATE=C; export LC_COLLATE) 2>&1`") && { $as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set; } || { LC_COLLATE=C; export LC_COLLATE; } (set +x; test -n "`(LC_NUMERIC=C; export LC_NUMERIC) 2>&1`") && { $as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set; } || { LC_NUMERIC=C; export LC_NUMERIC; } (set +x; test -n "`(LC_MESSAGES=C; export LC_MESSAGES) 2>&1`") && { $as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set; } || { LC_MESSAGES=C; export LC_MESSAGES; } # Name of the executable. as_me=`(basename "$0") 2>/dev/null || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)$' \| \ . : '\(.\)' 2>/dev/null || echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } /^X\/\(\/\/\)$/{ s//\1/; q; } /^X\/\(\/\).*/{ s//\1/; q; } s/.*/./; q'` # PATH needs CR, and LINENO needs CR and PATH. # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conftest.sh echo "exit 0" >>conftest.sh chmod +x conftest.sh if (PATH=".;."; conftest.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conftest.sh fi as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" || { # Find who we are. Look in the path if we contain no path at all # relative or not. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} { (exit 1); exit 1; }; } fi case $CONFIG_SHELL in '') as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for as_base in sh bash ksh sh5; do case $as_dir in /*) if ("$as_dir/$as_base" -c ' as_lineno_1=$LINENO as_lineno_2=$LINENO as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` test "x$as_lineno_1" != "x$as_lineno_2" && test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then CONFIG_SHELL=$as_dir/$as_base export CONFIG_SHELL exec "$CONFIG_SHELL" "$0" ${1+"$@"} fi;; esac done done ;; esac # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line before each line; the second 'sed' does the real # work. The second script uses 'N' to pair each line-number line # with the numbered line, and appends trailing '-' during # substitution so that $LINENO is not a special case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) sed '=' <$as_myself | sed ' N s,$,-, : loop s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, t loop s,-$,, s,^['$as_cr_digits']*\n,, ' >$as_me.lineno && chmod +x $as_me.lineno || { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensible to this). . ./$as_me.lineno # Exit status is that of the last command. exit } case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in *c*,-n*) ECHO_N= ECHO_C=' ' ECHO_T=' ' ;; *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; *) ECHO_N= ECHO_C='\c' ECHO_T= ;; esac if expr a : '\(a\)' >/dev/null 2>&1; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then # We could just check for DJGPP; but this test a) works b) is more generic # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). if test -f conf$$.exe; then # Don't use ln at all; we don't have any links as_ln_s='cp -p' else as_ln_s='ln -s' fi elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.file as_executable_p="test -f" # Sed expression to map a string onto a valid CPP name. as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" # Sed expression to map a string onto a valid variable name. as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" # IFS # We need space, tab and new line, in precisely that order. as_nl=' ' IFS=" $as_nl" # CDPATH. $as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=$PATH_SEPARATOR; export CDPATH; } exec 6>&1 # Open the log real soon, to keep \$[0] and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. Logging --version etc. is OK. exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX } >&5 cat >&5 <<_CSEOF This file was extended by $as_me, which was generated by GNU Autoconf 2.53. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ _CSEOF echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 echo >&5 _ACEOF # Files that config.status was made for. if test -n "$ac_config_files"; then echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS fi if test -n "$ac_config_headers"; then echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS fi if test -n "$ac_config_links"; then echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS fi if test -n "$ac_config_commands"; then echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS fi cat >>$CONFIG_STATUS <<\_ACEOF ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. Usage: $0 [OPTIONS] [FILE]... -h, --help print this help, then exit -V, --version print version number, then exit -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE Configuration files: $config_files Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ config.status configured by $0, generated by GNU Autoconf 2.53, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." srcdir=$srcdir INSTALL="$INSTALL" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # If no file are specified by the user, then we need to provide default # value. By we need to know if files were specified by the user. ac_need_defaults=: while test $# != 0 do case $1 in --*=*) ac_option=`expr "x$1" : 'x\([^=]*\)='` ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` shift set dummy "$ac_option" "$ac_optarg" ${1+"$@"} shift ;; -*);; *) # This is not an option, so the user has probably given explicit # arguments. ac_need_defaults=false;; esac case $1 in # Handling of the options. _ACEOF cat >>$CONFIG_STATUS <<_ACEOF -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) echo "running $SHELL $0 " $ac_configure_args " --no-create --no-recursion" exec $SHELL $0 $ac_configure_args --no-create --no-recursion ;; _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF --version | --vers* | -V ) echo "$ac_cs_version"; exit 0 ;; --he | --h) # Conflict between --help and --header { { echo "$as_me:$LINENO: error: ambiguous option: $1 Try \`$0 --help' for more information." >&5 echo "$as_me: error: ambiguous option: $1 Try \`$0 --help' for more information." >&2;} { (exit 1); exit 1; }; };; --help | --hel | -h ) echo "$ac_cs_usage"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --file | --fil | --fi | --f ) shift CONFIG_FILES="$CONFIG_FILES $1" ac_need_defaults=false;; --header | --heade | --head | --hea ) shift CONFIG_HEADERS="$CONFIG_HEADERS $1" ac_need_defaults=false;; # This is an error. -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 Try \`$0 --help' for more information." >&5 echo "$as_me: error: unrecognized option: $1 Try \`$0 --help' for more information." >&2;} { (exit 1); exit 1; }; } ;; *) ac_config_targets="$ac_config_targets $1" ;; esac shift done _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF for ac_config_target in $ac_config_targets do case "$ac_config_target" in # Handling of arguments. "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; "Makefile.lib" ) CONFIG_FILES="$CONFIG_FILES Makefile.lib" ;; "Makefile.prog" ) CONFIG_FILES="$CONFIG_FILES Makefile.prog" ;; "Makefile.comm" ) CONFIG_FILES="$CONFIG_FILES Makefile.comm" ;; "include/config.h" ) CONFIG_FILES="$CONFIG_FILES include/config.h" ;; *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files fi # Create a temporary directory, and hook for its removal unless debugging. $debug || { trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 trap '{ (exit 1); exit 1; }' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. : ${TMPDIR=/tmp} { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/csXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { tmp=$TMPDIR/cs$$-$RANDOM (umask 077 && mkdir $tmp) } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 { (exit 1); exit 1; } } _ACEOF cat >>$CONFIG_STATUS <<_ACEOF # # CONFIG_FILES section. # # No need to generate the scripts if there are no CONFIG_FILES. # This happens for instance when ./config.status config.h if test -n "\$CONFIG_FILES"; then # Protect against being on the right side of a sed subst in config.status. sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF s,@SHELL@,$SHELL,;t t s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t s,@exec_prefix@,$exec_prefix,;t t s,@prefix@,$prefix,;t t s,@program_transform_name@,$program_transform_name,;t t s,@bindir@,$bindir,;t t s,@sbindir@,$sbindir,;t t s,@libexecdir@,$libexecdir,;t t s,@datadir@,$datadir,;t t s,@sysconfdir@,$sysconfdir,;t t s,@sharedstatedir@,$sharedstatedir,;t t s,@localstatedir@,$localstatedir,;t t s,@libdir@,$libdir,;t t s,@includedir@,$includedir,;t t s,@oldincludedir@,$oldincludedir,;t t s,@infodir@,$infodir,;t t s,@mandir@,$mandir,;t t s,@build_alias@,$build_alias,;t t s,@host_alias@,$host_alias,;t t s,@target_alias@,$target_alias,;t t s,@DEFS@,$DEFS,;t t s,@ECHO_C@,$ECHO_C,;t t s,@ECHO_N@,$ECHO_N,;t t s,@ECHO_T@,$ECHO_T,;t t s,@LIBS@,$LIBS,;t t s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t s,@INSTALL_DATA@,$INSTALL_DATA,;t t s,@PACKAGE@,$PACKAGE,;t t s,@VERSION@,$VERSION,;t t s,@ACLOCAL@,$ACLOCAL,;t t s,@AUTOCONF@,$AUTOCONF,;t t s,@AUTOMAKE@,$AUTOMAKE,;t t s,@AUTOHEADER@,$AUTOHEADER,;t t s,@MAKEINFO@,$MAKEINFO,;t t s,@SET_MAKE@,$SET_MAKE,;t t s,@TOP@,$TOP,;t t s,@SPINCLUDEDIR@,$SPINCLUDEDIR,;t t s,@SPLIBDIR@,$SPLIBDIR,;t t s,@build@,$build,;t t s,@build_cpu@,$build_cpu,;t t s,@build_vendor@,$build_vendor,;t t s,@build_os@,$build_os,;t t s,@host@,$host,;t t s,@host_cpu@,$host_cpu,;t t s,@host_vendor@,$host_vendor,;t t s,@host_os@,$host_os,;t t s,@CC@,$CC,;t t s,@CFLAGS@,$CFLAGS,;t t s,@LDFLAGS@,$LDFLAGS,;t t s,@CPPFLAGS@,$CPPFLAGS,;t t s,@ac_ct_CC@,$ac_ct_CC,;t t s,@EXEEXT@,$EXEEXT,;t t s,@OBJEXT@,$OBJEXT,;t t s,@LN_S@,$LN_S,;t t s,@CXX@,$CXX,;t t s,@CXXFLAGS@,$CXXFLAGS,;t t s,@ac_ct_CXX@,$ac_ct_CXX,;t t s,@PERL@,$PERL,;t t s,@CPP@,$CPP,;t t s,@LIB_THREADS@,$LIB_THREADS,;t t s,@CXXCPP@,$CXXCPP,;t t s,@ECHO@,$ECHO,;t t s,@RANLIB@,$RANLIB,;t t s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t s,@STRIP@,$STRIP,;t t s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t s,@LIBTOOL@,$LIBTOOL,;t t s,@LIBTOOL_DEPS@,$LIBTOOL_DEPS,;t t s,@LINKFLAGS@,$LINKFLAGS,;t t CEOF _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # Split the substitutions into bite-sized pieces for seds with # small command number limits, like on Digital OSF/1 and HP-UX. ac_max_sed_lines=48 ac_sed_frag=1 # Number of current file. ac_beg=1 # First line for current file. ac_end=$ac_max_sed_lines # Line after last line for current file. ac_more_lines=: ac_sed_cmds= while $ac_more_lines; do if test $ac_beg -gt 1; then sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag else sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag fi if test ! -s $tmp/subs.frag; then ac_more_lines=false else # The purpose of the label and of the branching condition is to # speed up the sed processing (if there are no `@' at all, there # is no need to browse any of the substitutions). # These are the two extra sed commands mentioned above. (echo ':t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed if test -z "$ac_sed_cmds"; then ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" else ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" fi ac_sed_frag=`expr $ac_sed_frag + 1` ac_beg=$ac_end ac_end=`expr $ac_end + $ac_max_sed_lines` fi done if test -z "$ac_sed_cmds"; then ac_sed_cmds=cat fi fi # test -n "$CONFIG_FILES" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case $ac_file in - | *:- | *:-:* ) # input from stdin cat >$tmp/stdin ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; * ) ac_file_in=$ac_file.in ;; esac # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. ac_dir=`(dirname "$ac_file") 2>/dev/null || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| \ . : '\(.\)' 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } /^X\(\/\/\)[^/].*/{ s//\1/; q; } /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'` { case "$ac_dir" in [\\/]* | ?:[\\/]* ) as_incr_dir=;; *) as_incr_dir=.;; esac as_dummy="$ac_dir" for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do case $as_mkdir_dir in # Skip DOS drivespec ?:) as_incr_dir=$as_mkdir_dir ;; *) as_incr_dir=$as_incr_dir/$as_mkdir_dir test -d "$as_incr_dir" || mkdir "$as_incr_dir" || { { echo "$as_me:$LINENO: error: cannot create \"$ac_dir\"" >&5 echo "$as_me: error: cannot create \"$ac_dir\"" >&2;} { (exit 1); exit 1; }; } ;; esac done; } ac_builddir=. if test "$ac_dir" != .; then ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A "../" for each directory in $ac_dir_suffix. ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` else ac_dir_suffix= ac_top_builddir= fi case $srcdir in .) # No --srcdir option. We are building in place. ac_srcdir=. if test -z "$ac_top_builddir"; then ac_top_srcdir=. else ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` fi ;; [\\/]* | ?:[\\/]* ) # Absolute path. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ;; *) # Relative path. ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_builddir$srcdir ;; esac # Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be # absolute. ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` ac_abs_top_builddir=`cd "$ac_dir" && cd $ac_top_builddir && pwd` ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_builddir$INSTALL ;; esac if test x"$ac_file" != x-; then { echo "$as_me:$LINENO: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} rm -f "$ac_file" fi # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ if test x"$ac_file" = x-; then configure_input= else configure_input="$ac_file. " fi configure_input=$configure_input"Generated from `echo $ac_file_in | sed 's,.*/,,'` by configure." # First look for the input files in the build tree, otherwise in the # src tree. ac_file_inputs=`IFS=: for f in $ac_file_in; do case $f in -) echo $tmp/stdin ;; [\\/$]*) # Absolute (can't be DOS-style, as IFS=:) test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } echo $f;; *) # Relative if test -f "$f"; then # Build tree echo $f elif test -f "$srcdir/$f"; then # Source tree echo $srcdir/$f else # /dev/null tree { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } fi;; esac done` || { (exit 1); exit 1; } _ACEOF cat >>$CONFIG_STATUS <<_ACEOF sed "$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s,@configure_input@,$configure_input,;t t s,@srcdir@,$ac_srcdir,;t t s,@abs_srcdir@,$ac_abs_srcdir,;t t s,@top_srcdir@,$ac_top_srcdir,;t t s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t s,@builddir@,$ac_builddir,;t t s,@abs_builddir@,$ac_abs_builddir,;t t s,@top_builddir@,$ac_top_builddir,;t t s,@abs_top_builddir@,$ac_abs_top_builddir,;t t s,@INSTALL@,$ac_INSTALL,;t t " $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out rm -f $tmp/stdin if test x"$ac_file" != x-; then mv $tmp/out $ac_file else cat $tmp/out rm -f $tmp/out fi done _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF { (exit 0); exit 0; } _ACEOF chmod +x $CONFIG_STATUS ac_clean_files=$ac_clean_files_save # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: exec 5>/dev/null $SHELL $CONFIG_STATUS || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || { (exit 1); exit 1; } fi openjade-1.3.2/instmac.pl0100775000076400007640000000235707554623302013430 0ustar ianian#! /bin/perl -w # # Copyright (c) 1999 Avi Kivity # instmac.pl -- generate template instantiations # derived from James Clark's instmac.m4 # $index = 0; $func_index = 0; sub header { print <<__HEADER__; #ifdef SP_NAMESPACE namespace SP_NAMESPACE { #endif #ifdef SP_NAMESPACE } #endif __HEADER__ } sub instantiate { my ($class) = @_; print <<__INSTANTIATION__; #ifdef __DECCXX #pragma define_template $class #else #ifdef __xlC__ #pragma define($class) #else #ifdef SP_ANSI_CLASS_INST template class $class; #else typedef $class Dummy_$index; #endif #endif #endif __INSTANTIATION__ ++$index; } sub func_instantiate { my ($a1, $a2, $a3, $a4) = @_; print <<__FUNC_INSTANTIATION__; #ifdef __GNUG__ template void $a1($a2, $a3, $a4); #else static void func_$func_index ($a2 arg1, $a3 arg2, $a4 arg3) { (void)$a1(arg1, arg2, arg3); } #endif __FUNC_INSTANTIATION__ ++$func_index; } header; while () { if (/^__instantiate\((.*)\)\s*$/) { $arg = $1; $arg = $1 if /`(.*)'/; instantiate $arg; } elsif (/^__instantiate\((.*)\)\s*$/) { die "instantiate_func3 found!"; } else { print; } } openjade-1.3.2/jade-generate.mak0100664000076400007640000000147406746135303014617 0ustar ianian# This is a Makefile for nmake that makes all the .cxx and .h files that # are automatically generated. It's too painful to do in the IDE. # You'll need perl in your PATH to use this. PERL=perl GENSRCS=\ style\style_inst.cxx \ style\FlowObj_inst.cxx \ style\primitive_inst.cxx \ style\common_inst.cxx \ spgrove\grove_inst.cxx \ jade\HtmlFOTBuilder_inst.cxx \ jade\RtfFOTBuilder_inst.cxx \ jade\TeXFOTBuilder_inst.cxx \ jade\MifFOTBuilder_inst.cxx \ jade\TransformFOTBuilder_inst.cxx \ jade\JadeMessages.h \ jade\HtmlMessages.h \ jade\RtfMessages.h \ jade\TeXMessages.h \ jade\MifMessages.h \ style\DssslAppMessages.h \ style\InterpreterMessages.h .SUFFIXES: .m4 .msg all: $(GENSRCS) .m4.cxx: del /f $@ 2> nul $(PERL) lib\instmac.pl $< >$@ attrib +r $@ .msg.h: del /f $@ 2> nul $(PERL) -w msggen.pl $< attrib +r $@ openjade-1.3.2/jade.dsw0100664000076400007640000001132206713071514013042 0ustar ianianMicrosoft Developer Studio Workspace File, Format Version 6.00 # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! ############################################################################### Project: "all"=.\all\all.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name groveoa End Project Dependency Begin Project Dependency Project_Dep_Name jade End Project Dependency Begin Project Dependency Project_Dep_Name nsgmls End Project Dependency Begin Project Dependency Project_Dep_Name sgmlnorm End Project Dependency Begin Project Dependency Project_Dep_Name spam End Project Dependency Begin Project Dependency Project_Dep_Name spent End Project Dependency Begin Project Dependency Project_Dep_Name sx End Project Dependency }}} ############################################################################### Project: "grove"=.\grove\grove.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Project: "groveoa"=.\groveoa\groveoa.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name grove End Project Dependency Begin Project Dependency Project_Dep_Name spgrove End Project Dependency Begin Project Dependency Project_Dep_Name lib End Project Dependency }}} ############################################################################### Project: "jade"=.\jade\jade.dsp - Package Owner=<4> Package=<5> {{{ begin source code control c:\home\work\sp\jade.pj . end source code control }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name grove End Project Dependency Begin Project Dependency Project_Dep_Name spgrove End Project Dependency Begin Project Dependency Project_Dep_Name style End Project Dependency Begin Project Dependency Project_Dep_Name lib End Project Dependency }}} ############################################################################### Project: "jadedist"=.\jadedist\jadedist.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name all End Project Dependency }}} ############################################################################### Project: "lib"=.\lib\lib.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Project: "nsgmls"=.\nsgmls\nsgmls.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name lib End Project Dependency }}} ############################################################################### Project: "sgmlnorm"=.\sgmlnorm\sgmlnorm.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name lib End Project Dependency }}} ############################################################################### Project: "spam"=.\spam\spam.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name lib End Project Dependency }}} ############################################################################### Project: "spent"=.\spent\spent.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name lib End Project Dependency }}} ############################################################################### Project: "spgrove"=.\spgrove\spgrove.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name grove End Project Dependency Begin Project Dependency Project_Dep_Name lib End Project Dependency }}} ############################################################################### Project: "style"=.\style\style.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name grove End Project Dependency Begin Project Dependency Project_Dep_Name spgrove End Project Dependency Begin Project Dependency Project_Dep_Name lib End Project Dependency }}} ############################################################################### Project: "sx"=.\sx\sx.dsp - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ Begin Project Dependency Project_Dep_Name lib End Project Dependency }}} ############################################################################### Global: Package=<5> {{{ }}} Package=<3> {{{ }}} ############################################################################### openjade-1.3.2/jade.mak0100664000076400007640000057600206713071515013031 0ustar ianian# Microsoft Developer Studio Generated NMAKE File, Format Version 4.20 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 # TARGTYPE "Win32 (x86) External Target" 0x0106 # TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 !IF "$(CFG)" == "" CFG=groveoa - Win32 Debug !MESSAGE No configuration specified. Defaulting to groveoa - Win32 Debug. !ENDIF !IF "$(CFG)" != "grove - Win32 Release" && "$(CFG)" != "grove - Win32 Debug" &&\ "$(CFG)" != "spgrove - Win32 Release" && "$(CFG)" != "spgrove - Win32 Debug" &&\ "$(CFG)" != "style - Win32 Release" && "$(CFG)" != "style - Win32 Debug" &&\ "$(CFG)" != "jade - Win32 Release" && "$(CFG)" != "jade - Win32 Debug" &&\ "$(CFG)" != "jadedist - Win32 Release" && "$(CFG)" != "groveoa - Win32 Release"\ && "$(CFG)" != "groveoa - Win32 Debug" !MESSAGE Invalid configuration "$(CFG)" specified. !MESSAGE You can specify a configuration when running NMAKE on this makefile !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "jade.mak" CFG="groveoa - Win32 Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "grove - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE "grove - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE "spgrove - Win32 Release" (based on\ "Win32 (x86) Dynamic-Link Library") !MESSAGE "spgrove - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE "style - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE "style - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE "jade - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "jade - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE "jadedist - Win32 Release" (based on "Win32 (x86) External Target") !MESSAGE "groveoa - Win32 Release" (based on\ "Win32 (x86) Dynamic-Link Library") !MESSAGE "groveoa - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE !ERROR An invalid configuration is specified. !ENDIF !IF "$(OS)" == "Windows_NT" NULL= !ELSE NULL=nul !ENDIF ################################################################################ # Begin Project # PROP Target_Last_Scanned "groveoa - Win32 Debug" !IF "$(CFG)" == "grove - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "grove\Release" # PROP BASE Intermediate_Dir "grove\Release" # PROP BASE Target_Dir "grove" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "grove\Release" # PROP Intermediate_Dir "grove\Release" # PROP Target_Dir "grove" OUTDIR=.\grove\Release INTDIR=.\grove\Release ALL : ".\bin\grove.dll" CLEAN : -@erase "$(INTDIR)\LocNode.obj" -@erase "$(INTDIR)\Node.obj" -@erase "$(OUTDIR)\grove.exp" -@erase "$(OUTDIR)\grove.lib" -@erase ".\bin\grove.dll" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP=cl.exe # ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c # ADD CPP /nologo /MD /W3 /GX /O2 /I "include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "SP_MULTI_BYTE" /D GROVE_NAMESPACE=James_Clark_GROVE /D SP_NAMESPACE=James_Clark_SP /D "BUILD_LIBGROVE" /YX /c CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "include" /D "NDEBUG" /D "WIN32" /D\ "_WINDOWS" /D "SP_MULTI_BYTE" /D GROVE_NAMESPACE=James_Clark_GROVE /D\ SP_NAMESPACE=James_Clark_SP /D "BUILD_LIBGROVE" /Fp"$(INTDIR)/grove.pch" /YX\ /Fo"$(INTDIR)/" /c CPP_OBJS=.\grove\Release/ CPP_SBRS=.\. .c{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .cpp{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .cxx{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .c{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< .cpp{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< .cxx{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< MTL=mktyplib.exe # ADD BASE MTL /nologo /D "NDEBUG" /win32 # ADD MTL /nologo /D "NDEBUG" /win32 MTL_PROJ=/nologo /D "NDEBUG" /win32 RSC=rc.exe # ADD BASE RSC /l 0x809 /d "NDEBUG" # ADD RSC /l 0x809 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo BSC32_FLAGS=/nologo /o"$(OUTDIR)/grove.bsc" BSC32_SBRS= \ LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:0x20200000 /subsystem:windows /dll /machine:I386 /out:"bin\grove.dll" # SUBTRACT LINK32 /profile LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\ advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib\ odbccp32.lib /nologo /base:0x20200000 /subsystem:windows /dll /incremental:no\ /pdb:"$(OUTDIR)/grove.pdb" /machine:I386 /out:"bin\grove.dll"\ /implib:"$(OUTDIR)/grove.lib" LINK32_OBJS= \ "$(INTDIR)\LocNode.obj" \ "$(INTDIR)\Node.obj" ".\bin\grove.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "grove - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "grove\Debug" # PROP BASE Intermediate_Dir "grove\Debug" # PROP BASE Target_Dir "grove" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "grove\Debug" # PROP Intermediate_Dir "grove\Debug" # PROP Target_Dir "grove" OUTDIR=.\grove\Debug INTDIR=.\grove\Debug ALL : ".\dbgbin\grove.dll" CLEAN : -@erase "$(INTDIR)\LocNode.obj" -@erase "$(INTDIR)\Node.obj" -@erase "$(INTDIR)\vc40.idb" -@erase "$(INTDIR)\vc40.pdb" -@erase "$(OUTDIR)\grove.exp" -@erase "$(OUTDIR)\grove.lib" -@erase "$(OUTDIR)\grove.pdb" -@erase ".\dbgbin\grove.dll" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP=cl.exe # ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c # ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "SP_MULTI_BYTE" /D GROVE_NAMESPACE=James_Clark_GROVE /D SP_NAMESPACE=James_Clark_SP /D "BUILD_LIBGROVE" /YX /c CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I "include" /D "_DEBUG" /D "WIN32"\ /D "_WINDOWS" /D "SP_MULTI_BYTE" /D GROVE_NAMESPACE=James_Clark_GROVE /D\ SP_NAMESPACE=James_Clark_SP /D "BUILD_LIBGROVE" /Fp"$(INTDIR)/grove.pch" /YX\ /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c CPP_OBJS=.\grove\Debug/ CPP_SBRS=.\. .c{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .cpp{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .cxx{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .c{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< .cpp{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< .cxx{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< MTL=mktyplib.exe # ADD BASE MTL /nologo /D "_DEBUG" /win32 # ADD MTL /nologo /D "_DEBUG" /win32 MTL_PROJ=/nologo /D "_DEBUG" /win32 RSC=rc.exe # ADD BASE RSC /l 0x809 /d "_DEBUG" # ADD RSC /l 0x809 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo BSC32_FLAGS=/nologo /o"$(OUTDIR)/grove.bsc" BSC32_SBRS= \ LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:0x20200000 /subsystem:windows /dll /incremental:no /debug /machine:I386 /out:"dbgbin\grove.dll" LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\ advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib\ odbccp32.lib /nologo /base:0x20200000 /subsystem:windows /dll /incremental:no\ /pdb:"$(OUTDIR)/grove.pdb" /debug /machine:I386 /out:"dbgbin\grove.dll"\ /implib:"$(OUTDIR)/grove.lib" LINK32_OBJS= \ "$(INTDIR)\LocNode.obj" \ "$(INTDIR)\Node.obj" ".\dbgbin\grove.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "spgrove - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "spgrove\Release" # PROP BASE Intermediate_Dir "spgrove\Release" # PROP BASE Target_Dir "spgrove" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "spgrove\Release" # PROP Intermediate_Dir "spgrove\Release" # PROP Target_Dir "spgrove" OUTDIR=.\spgrove\Release INTDIR=.\spgrove\Release ALL : "grove - Win32 Release" ".\bin\spgrove.dll" CLEAN : -@erase "$(INTDIR)\GroveApp.obj" -@erase "$(INTDIR)\GroveBuilder.obj" -@erase "$(INTDIR)\SdNode.obj" -@erase "$(OUTDIR)\spgrove.exp" -@erase "$(OUTDIR)\spgrove.lib" -@erase ".\bin\spgrove.dll" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP=cl.exe # ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c # ADD CPP /nologo /MD /W3 /GX /O2 /I "include" /I "grove" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "SP_MULTI_BYTE" /D GROVE_NAMESPACE=James_Clark_GROVE /D SP_NAMESPACE=James_Clark_SP /D "BUILD_LIBSPGROVE" /YX /c CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "include" /I "grove" /D "NDEBUG" /D "WIN32"\ /D "_WINDOWS" /D "SP_MULTI_BYTE" /D GROVE_NAMESPACE=James_Clark_GROVE /D\ SP_NAMESPACE=James_Clark_SP /D "BUILD_LIBSPGROVE" /Fp"$(INTDIR)/spgrove.pch"\ /YX /Fo"$(INTDIR)/" /c CPP_OBJS=.\spgrove\Release/ CPP_SBRS=.\. .c{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .cpp{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .cxx{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .c{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< .cpp{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< .cxx{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< MTL=mktyplib.exe # ADD BASE MTL /nologo /D "NDEBUG" /win32 # ADD MTL /nologo /D "NDEBUG" /win32 MTL_PROJ=/nologo /D "NDEBUG" /win32 RSC=rc.exe # ADD BASE RSC /l 0x809 /d "NDEBUG" # ADD RSC /l 0x809 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo BSC32_FLAGS=/nologo /o"$(OUTDIR)/spgrove.bsc" BSC32_SBRS= \ LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 # ADD LINK32 lib\Release\sp133.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:0x20100000 /subsystem:windows /dll /machine:I386 /out:"bin/spgrove.dll" # SUBTRACT LINK32 /profile LINK32_FLAGS=lib\Release\sp133.lib kernel32.lib user32.lib gdi32.lib\ winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib\ uuid.lib odbc32.lib odbccp32.lib /nologo /base:0x20100000 /subsystem:windows\ /dll /incremental:no /pdb:"$(OUTDIR)/spgrove.pdb" /machine:I386\ /out:"bin/spgrove.dll" /implib:"$(OUTDIR)/spgrove.lib" LINK32_OBJS= \ "$(INTDIR)\GroveApp.obj" \ "$(INTDIR)\GroveBuilder.obj" \ "$(INTDIR)\SdNode.obj" \ ".\grove\Release\grove.lib" ".\bin\spgrove.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "spgrove - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "spgrove\Debug" # PROP BASE Intermediate_Dir "spgrove\Debug" # PROP BASE Target_Dir "spgrove" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "spgrove\Debug" # PROP Intermediate_Dir "spgrove\Debug" # PROP Target_Dir "spgrove" OUTDIR=.\spgrove\Debug INTDIR=.\spgrove\Debug ALL : "grove - Win32 Debug" ".\dbgbin\spgrove.dll" CLEAN : -@erase "$(INTDIR)\GroveApp.obj" -@erase "$(INTDIR)\GroveBuilder.obj" -@erase "$(INTDIR)\SdNode.obj" -@erase "$(INTDIR)\vc40.idb" -@erase "$(INTDIR)\vc40.pdb" -@erase "$(OUTDIR)\spgrove.exp" -@erase "$(OUTDIR)\spgrove.lib" -@erase "$(OUTDIR)\spgrove.pdb" -@erase ".\dbgbin\spgrove.dll" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP=cl.exe # ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c # ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "include" /I "grove" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "SP_MULTI_BYTE" /D GROVE_NAMESPACE=James_Clark_GROVE /D SP_NAMESPACE=James_Clark_SP /D "BUILD_LIBSPGROVE" /YX /c CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I "include" /I "grove" /D "_DEBUG"\ /D "WIN32" /D "_WINDOWS" /D "SP_MULTI_BYTE" /D\ GROVE_NAMESPACE=James_Clark_GROVE /D SP_NAMESPACE=James_Clark_SP /D\ "BUILD_LIBSPGROVE" /Fp"$(INTDIR)/spgrove.pch" /YX /Fo"$(INTDIR)/"\ /Fd"$(INTDIR)/" /c CPP_OBJS=.\spgrove\Debug/ CPP_SBRS=.\. .c{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .cpp{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .cxx{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .c{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< .cpp{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< .cxx{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< MTL=mktyplib.exe # ADD BASE MTL /nologo /D "_DEBUG" /win32 # ADD MTL /nologo /D "_DEBUG" /win32 MTL_PROJ=/nologo /D "_DEBUG" /win32 RSC=rc.exe # ADD BASE RSC /l 0x809 /d "_DEBUG" # ADD RSC /l 0x809 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo BSC32_FLAGS=/nologo /o"$(OUTDIR)/spgrove.bsc" BSC32_SBRS= \ LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 # ADD LINK32 lib\Debug\sp133d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:0x20100000 /subsystem:windows /dll /incremental:no /debug /machine:I386 /out:"dbgbin\spgrove.dll" LINK32_FLAGS=lib\Debug\sp133d.lib kernel32.lib user32.lib gdi32.lib\ winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib\ uuid.lib odbc32.lib odbccp32.lib /nologo /base:0x20100000 /subsystem:windows\ /dll /incremental:no /pdb:"$(OUTDIR)/spgrove.pdb" /debug /machine:I386\ /out:"dbgbin\spgrove.dll" /implib:"$(OUTDIR)/spgrove.lib" LINK32_OBJS= \ "$(INTDIR)\GroveApp.obj" \ "$(INTDIR)\GroveBuilder.obj" \ "$(INTDIR)\SdNode.obj" \ ".\grove\Debug\grove.lib" ".\dbgbin\spgrove.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "style - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "style\Release" # PROP BASE Intermediate_Dir "style\Release" # PROP BASE Target_Dir "style" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "style\Release" # PROP Intermediate_Dir "style\Release" # PROP Target_Dir "style" OUTDIR=.\style\Release INTDIR=.\style\Release ALL : "spgrove - Win32 Release" "grove - Win32 Release" ".\bin\style.dll" CLEAN : -@erase "$(INTDIR)\Collector.obj" -@erase "$(INTDIR)\common_inst.obj" -@erase "$(INTDIR)\DssslApp.obj" -@erase "$(INTDIR)\DssslSpecEventHandler.obj" -@erase "$(INTDIR)\ELObj.obj" -@erase "$(INTDIR)\ELObjMessageArg.obj" -@erase "$(INTDIR)\Expression.obj" -@erase "$(INTDIR)\FlowObj.obj" -@erase "$(INTDIR)\FOTBuilder.obj" -@erase "$(INTDIR)\GroveManager.obj" -@erase "$(INTDIR)\InheritedC.obj" -@erase "$(INTDIR)\Insn.obj" -@erase "$(INTDIR)\Interpreter.obj" -@erase "$(INTDIR)\InterpreterMessages.obj" -@erase "$(INTDIR)\MacroFlowObj.obj" -@erase "$(INTDIR)\NumberCache.obj" -@erase "$(INTDIR)\Pattern.obj" -@erase "$(INTDIR)\primitive.obj" -@erase "$(INTDIR)\ProcessContext.obj" -@erase "$(INTDIR)\ProcessingMode.obj" -@erase "$(INTDIR)\SchemeParser.obj" -@erase "$(INTDIR)\Style.obj" -@erase "$(INTDIR)\style.pch" -@erase "$(INTDIR)\style_inst.obj" -@erase "$(INTDIR)\StyleEngine.obj" -@erase "$(INTDIR)\stylelib.obj" -@erase "$(OUTDIR)\style.exp" -@erase "$(OUTDIR)\style.lib" -@erase ".\bin\style.dll" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP=cl.exe # ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c # ADD CPP /nologo /MD /W3 /GX /O2 /I "spgrove" /I "grove" /I "include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D DSSSL_NAMESPACE=James_Clark_DSSSL /D SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D "SP_MULTI_BYTE" /YX /c CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "spgrove" /I "grove" /I "include" /D\ "NDEBUG" /D "WIN32" /D "_WINDOWS" /D DSSSL_NAMESPACE=James_Clark_DSSSL /D\ SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D\ "SP_MULTI_BYTE" /Fp"$(INTDIR)/style.pch" /YX /Fo"$(INTDIR)/" /c CPP_OBJS=.\style\Release/ CPP_SBRS=.\. .c{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .cpp{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .cxx{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .c{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< .cpp{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< .cxx{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< MTL=mktyplib.exe # ADD BASE MTL /nologo /D "NDEBUG" /win32 # ADD MTL /nologo /D "NDEBUG" /win32 MTL_PROJ=/nologo /D "NDEBUG" /win32 RSC=rc.exe # ADD BASE RSC /l 0x809 /d "NDEBUG" # ADD RSC /l 0x809 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo BSC32_FLAGS=/nologo /o"$(OUTDIR)/style.bsc" BSC32_SBRS= \ LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 # ADD LINK32 lib\Release\sp133.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:0x20000000 /subsystem:windows /dll /machine:I386 /out:"bin\style.dll" # SUBTRACT LINK32 /profile LINK32_FLAGS=lib\Release\sp133.lib kernel32.lib user32.lib gdi32.lib\ winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib\ uuid.lib odbc32.lib odbccp32.lib /nologo /base:0x20000000 /subsystem:windows\ /dll /incremental:no /pdb:"$(OUTDIR)/style.pdb" /machine:I386\ /out:"bin\style.dll" /implib:"$(OUTDIR)/style.lib" LINK32_OBJS= \ "$(INTDIR)\Collector.obj" \ "$(INTDIR)\common_inst.obj" \ "$(INTDIR)\DssslApp.obj" \ "$(INTDIR)\DssslSpecEventHandler.obj" \ "$(INTDIR)\ELObj.obj" \ "$(INTDIR)\ELObjMessageArg.obj" \ "$(INTDIR)\Expression.obj" \ "$(INTDIR)\FlowObj.obj" \ "$(INTDIR)\FOTBuilder.obj" \ "$(INTDIR)\GroveManager.obj" \ "$(INTDIR)\InheritedC.obj" \ "$(INTDIR)\Insn.obj" \ "$(INTDIR)\Interpreter.obj" \ "$(INTDIR)\InterpreterMessages.obj" \ "$(INTDIR)\MacroFlowObj.obj" \ "$(INTDIR)\NumberCache.obj" \ "$(INTDIR)\Pattern.obj" \ "$(INTDIR)\primitive.obj" \ "$(INTDIR)\ProcessContext.obj" \ "$(INTDIR)\ProcessingMode.obj" \ "$(INTDIR)\SchemeParser.obj" \ "$(INTDIR)\Style.obj" \ "$(INTDIR)\style_inst.obj" \ "$(INTDIR)\StyleEngine.obj" \ "$(INTDIR)\stylelib.obj" \ ".\grove\Release\grove.lib" \ ".\spgrove\Release\spgrove.lib" ".\bin\style.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "style - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "style\Debug" # PROP BASE Intermediate_Dir "style\Debug" # PROP BASE Target_Dir "style" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "style\Debug" # PROP Intermediate_Dir "style\Debug" # PROP Target_Dir "style" OUTDIR=.\style\Debug INTDIR=.\style\Debug ALL : "spgrove - Win32 Debug" "grove - Win32 Debug" ".\dbgbin\style.dll"\ "$(OUTDIR)\style.bsc" CLEAN : -@erase "$(INTDIR)\Collector.obj" -@erase "$(INTDIR)\Collector.sbr" -@erase "$(INTDIR)\common_inst.obj" -@erase "$(INTDIR)\common_inst.sbr" -@erase "$(INTDIR)\DssslApp.obj" -@erase "$(INTDIR)\DssslApp.sbr" -@erase "$(INTDIR)\DssslSpecEventHandler.obj" -@erase "$(INTDIR)\DssslSpecEventHandler.sbr" -@erase "$(INTDIR)\ELObj.obj" -@erase "$(INTDIR)\ELObj.sbr" -@erase "$(INTDIR)\ELObjMessageArg.obj" -@erase "$(INTDIR)\ELObjMessageArg.sbr" -@erase "$(INTDIR)\Expression.obj" -@erase "$(INTDIR)\Expression.sbr" -@erase "$(INTDIR)\FlowObj.obj" -@erase "$(INTDIR)\FlowObj.sbr" -@erase "$(INTDIR)\FOTBuilder.obj" -@erase "$(INTDIR)\FOTBuilder.sbr" -@erase "$(INTDIR)\GroveManager.obj" -@erase "$(INTDIR)\GroveManager.sbr" -@erase "$(INTDIR)\InheritedC.obj" -@erase "$(INTDIR)\InheritedC.sbr" -@erase "$(INTDIR)\Insn.obj" -@erase "$(INTDIR)\Insn.sbr" -@erase "$(INTDIR)\Interpreter.obj" -@erase "$(INTDIR)\Interpreter.sbr" -@erase "$(INTDIR)\InterpreterMessages.obj" -@erase "$(INTDIR)\InterpreterMessages.sbr" -@erase "$(INTDIR)\MacroFlowObj.obj" -@erase "$(INTDIR)\MacroFlowObj.sbr" -@erase "$(INTDIR)\NumberCache.obj" -@erase "$(INTDIR)\NumberCache.sbr" -@erase "$(INTDIR)\Pattern.obj" -@erase "$(INTDIR)\Pattern.sbr" -@erase "$(INTDIR)\primitive.obj" -@erase "$(INTDIR)\primitive.sbr" -@erase "$(INTDIR)\ProcessContext.obj" -@erase "$(INTDIR)\ProcessContext.sbr" -@erase "$(INTDIR)\ProcessingMode.obj" -@erase "$(INTDIR)\ProcessingMode.sbr" -@erase "$(INTDIR)\SchemeParser.obj" -@erase "$(INTDIR)\SchemeParser.sbr" -@erase "$(INTDIR)\Style.obj" -@erase "$(INTDIR)\style.pch" -@erase "$(INTDIR)\Style.sbr" -@erase "$(INTDIR)\style_inst.obj" -@erase "$(INTDIR)\style_inst.sbr" -@erase "$(INTDIR)\StyleEngine.obj" -@erase "$(INTDIR)\StyleEngine.sbr" -@erase "$(INTDIR)\stylelib.obj" -@erase "$(INTDIR)\stylelib.sbr" -@erase "$(INTDIR)\vc40.pdb" -@erase "$(OUTDIR)\style.bsc" -@erase "$(OUTDIR)\style.exp" -@erase "$(OUTDIR)\style.lib" -@erase "$(OUTDIR)\style.pdb" -@erase ".\dbgbin\style.dll" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP=cl.exe # ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c # ADD CPP /nologo /MDd /W3 /GX /Zi /Od /I "spgrove" /I "grove" /I "include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D DSSSL_NAMESPACE=James_Clark_DSSSL /D SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D "SP_MULTI_BYTE" /FR /YX /c CPP_PROJ=/nologo /MDd /W3 /GX /Zi /Od /I "spgrove" /I "grove" /I "include" /D\ "_DEBUG" /D "WIN32" /D "_WINDOWS" /D DSSSL_NAMESPACE=James_Clark_DSSSL /D\ SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D\ "SP_MULTI_BYTE" /FR"$(INTDIR)/" /Fp"$(INTDIR)/style.pch" /YX /Fo"$(INTDIR)/"\ /Fd"$(INTDIR)/" /c CPP_OBJS=.\style\Debug/ CPP_SBRS=.\style\Debug/ .c{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .cpp{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .cxx{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .c{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< .cpp{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< .cxx{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< MTL=mktyplib.exe # ADD BASE MTL /nologo /D "_DEBUG" /win32 # ADD MTL /nologo /D "_DEBUG" /win32 MTL_PROJ=/nologo /D "_DEBUG" /win32 RSC=rc.exe # ADD BASE RSC /l 0x809 /d "_DEBUG" # ADD RSC /l 0x809 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo BSC32_FLAGS=/nologo /o"$(OUTDIR)/style.bsc" BSC32_SBRS= \ "$(INTDIR)\Collector.sbr" \ "$(INTDIR)\common_inst.sbr" \ "$(INTDIR)\DssslApp.sbr" \ "$(INTDIR)\DssslSpecEventHandler.sbr" \ "$(INTDIR)\ELObj.sbr" \ "$(INTDIR)\ELObjMessageArg.sbr" \ "$(INTDIR)\Expression.sbr" \ "$(INTDIR)\FlowObj.sbr" \ "$(INTDIR)\FOTBuilder.sbr" \ "$(INTDIR)\GroveManager.sbr" \ "$(INTDIR)\InheritedC.sbr" \ "$(INTDIR)\Insn.sbr" \ "$(INTDIR)\Interpreter.sbr" \ "$(INTDIR)\InterpreterMessages.sbr" \ "$(INTDIR)\MacroFlowObj.sbr" \ "$(INTDIR)\NumberCache.sbr" \ "$(INTDIR)\Pattern.sbr" \ "$(INTDIR)\primitive.sbr" \ "$(INTDIR)\ProcessContext.sbr" \ "$(INTDIR)\ProcessingMode.sbr" \ "$(INTDIR)\SchemeParser.sbr" \ "$(INTDIR)\Style.sbr" \ "$(INTDIR)\style_inst.sbr" \ "$(INTDIR)\StyleEngine.sbr" \ "$(INTDIR)\stylelib.sbr" "$(OUTDIR)\style.bsc" : "$(OUTDIR)" $(BSC32_SBRS) $(BSC32) @<< $(BSC32_FLAGS) $(BSC32_SBRS) << LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 # ADD LINK32 lib\Debug\sp133d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:0x20000000 /subsystem:windows /dll /incremental:no /debug /machine:I386 /out:"dbgbin\style.dll" # SUBTRACT LINK32 /map LINK32_FLAGS=lib\Debug\sp133d.lib kernel32.lib user32.lib gdi32.lib\ winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib\ uuid.lib odbc32.lib odbccp32.lib /nologo /base:0x20000000 /subsystem:windows\ /dll /incremental:no /pdb:"$(OUTDIR)/style.pdb" /debug /machine:I386\ /out:"dbgbin\style.dll" /implib:"$(OUTDIR)/style.lib" LINK32_OBJS= \ "$(INTDIR)\Collector.obj" \ "$(INTDIR)\common_inst.obj" \ "$(INTDIR)\DssslApp.obj" \ "$(INTDIR)\DssslSpecEventHandler.obj" \ "$(INTDIR)\ELObj.obj" \ "$(INTDIR)\ELObjMessageArg.obj" \ "$(INTDIR)\Expression.obj" \ "$(INTDIR)\FlowObj.obj" \ "$(INTDIR)\FOTBuilder.obj" \ "$(INTDIR)\GroveManager.obj" \ "$(INTDIR)\InheritedC.obj" \ "$(INTDIR)\Insn.obj" \ "$(INTDIR)\Interpreter.obj" \ "$(INTDIR)\InterpreterMessages.obj" \ "$(INTDIR)\MacroFlowObj.obj" \ "$(INTDIR)\NumberCache.obj" \ "$(INTDIR)\Pattern.obj" \ "$(INTDIR)\primitive.obj" \ "$(INTDIR)\ProcessContext.obj" \ "$(INTDIR)\ProcessingMode.obj" \ "$(INTDIR)\SchemeParser.obj" \ "$(INTDIR)\Style.obj" \ "$(INTDIR)\style_inst.obj" \ "$(INTDIR)\StyleEngine.obj" \ "$(INTDIR)\stylelib.obj" \ ".\grove\Debug\grove.lib" \ ".\spgrove\Debug\spgrove.lib" ".\dbgbin\style.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "jade - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "jade\Release" # PROP BASE Intermediate_Dir "jade\Release" # PROP BASE Target_Dir "jade" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "jade\Release" # PROP Intermediate_Dir "jade\Release" # PROP Target_Dir "jade" OUTDIR=.\jade\Release INTDIR=.\jade\Release ALL : "style - Win32 Release" "spgrove - Win32 Release" "grove - Win32 Release"\ ".\bin\jade.exe" CLEAN : -@erase "$(INTDIR)\HtmlFOTBuilder.obj" -@erase "$(INTDIR)\jade.obj" -@erase "$(INTDIR)\jade.res" -@erase "$(INTDIR)\MifFOTBuilder.obj" -@erase "$(INTDIR)\RtfFOTBuilder.obj" -@erase "$(INTDIR)\RtfOle.obj" -@erase "$(INTDIR)\SgmlFOTBuilder.obj" -@erase "$(INTDIR)\TeXFOTBuilder.obj" -@erase "$(INTDIR)\TransformFOTBuilder.obj" -@erase ".\bin\jade.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP=cl.exe # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c # ADD CPP /nologo /MD /W3 /GX /O2 /I "include" /I "style" /I "grove" /I "spgrove" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D SP_NAMESPACE=James_Clark_SP /D DSSSL_NAMESPACE=James_Clark_DSSSL /D GROVE_NAMESPACE=James_Clark_GROVE /D "SP_MULTI_BYTE" /YX /c CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "include" /I "style" /I "grove" /I\ "spgrove" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D SP_NAMESPACE=James_Clark_SP\ /D DSSSL_NAMESPACE=James_Clark_DSSSL /D GROVE_NAMESPACE=James_Clark_GROVE /D\ "SP_MULTI_BYTE" /Fp"$(INTDIR)/jade.pch" /YX /Fo"$(INTDIR)/" /c CPP_OBJS=.\jade\Release/ CPP_SBRS=.\. .c{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .cpp{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .cxx{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .c{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< .cpp{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< .cxx{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< RSC=rc.exe # ADD BASE RSC /l 0x809 /d "NDEBUG" # ADD RSC /l 0x809 /d "NDEBUG" RSC_PROJ=/l 0x809 /fo"$(INTDIR)/jade.res" /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo BSC32_FLAGS=/nologo /o"$(OUTDIR)/jade.bsc" BSC32_SBRS= \ LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 lib\Release\sp133.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"bin/jade.exe" # SUBTRACT LINK32 /profile LINK32_FLAGS=lib\Release\sp133.lib kernel32.lib user32.lib gdi32.lib\ winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib\ uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no\ /pdb:"$(OUTDIR)/jade.pdb" /machine:I386 /out:"bin/jade.exe" LINK32_OBJS= \ "$(INTDIR)\HtmlFOTBuilder.obj" \ "$(INTDIR)\jade.obj" \ "$(INTDIR)\jade.res" \ "$(INTDIR)\MifFOTBuilder.obj" \ "$(INTDIR)\RtfFOTBuilder.obj" \ "$(INTDIR)\RtfOle.obj" \ "$(INTDIR)\SgmlFOTBuilder.obj" \ "$(INTDIR)\TeXFOTBuilder.obj" \ "$(INTDIR)\TransformFOTBuilder.obj" \ ".\grove\Release\grove.lib" \ ".\spgrove\Release\spgrove.lib" \ ".\style\Release\style.lib" ".\bin\jade.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "jade - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "jade\Debug" # PROP BASE Intermediate_Dir "jade\Debug" # PROP BASE Target_Dir "jade" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "jade\Debug" # PROP Intermediate_Dir "jade\Debug" # PROP Target_Dir "jade" OUTDIR=.\jade\Debug INTDIR=.\jade\Debug ALL : "style - Win32 Debug" "spgrove - Win32 Debug" "grove - Win32 Debug"\ ".\dbgbin\jade.exe" CLEAN : -@erase "$(INTDIR)\HtmlFOTBuilder.obj" -@erase "$(INTDIR)\jade.obj" -@erase "$(INTDIR)\jade.res" -@erase "$(INTDIR)\MifFOTBuilder.obj" -@erase "$(INTDIR)\RtfFOTBuilder.obj" -@erase "$(INTDIR)\RtfOle.obj" -@erase "$(INTDIR)\SgmlFOTBuilder.obj" -@erase "$(INTDIR)\TeXFOTBuilder.obj" -@erase "$(INTDIR)\TransformFOTBuilder.obj" -@erase "$(INTDIR)\vc40.pdb" -@erase "$(OUTDIR)\jade.pdb" -@erase ".\dbgbin\jade.exe" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP=cl.exe # ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /c # ADD CPP /nologo /MDd /W3 /GX /Zi /Od /I "include" /I "style" /I "grove" /I "spgrove" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D SP_NAMESPACE=James_Clark_SP /D DSSSL_NAMESPACE=James_Clark_DSSSL /D GROVE_NAMESPACE=James_Clark_GROVE /D "SP_MULTI_BYTE" /YX /c CPP_PROJ=/nologo /MDd /W3 /GX /Zi /Od /I "include" /I "style" /I "grove" /I\ "spgrove" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D SP_NAMESPACE=James_Clark_SP\ /D DSSSL_NAMESPACE=James_Clark_DSSSL /D GROVE_NAMESPACE=James_Clark_GROVE /D\ "SP_MULTI_BYTE" /Fp"$(INTDIR)/jade.pch" /YX /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c CPP_OBJS=.\jade\Debug/ CPP_SBRS=.\. .c{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .cpp{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .cxx{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .c{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< .cpp{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< .cxx{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< RSC=rc.exe # ADD BASE RSC /l 0x809 /d "_DEBUG" # ADD RSC /l 0x809 /d "_DEBUG" RSC_PROJ=/l 0x809 /fo"$(INTDIR)/jade.res" /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo BSC32_FLAGS=/nologo /o"$(OUTDIR)/jade.bsc" BSC32_SBRS= \ LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 # ADD LINK32 lib\Debug\sp133d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"dbgbin\jade.exe" LINK32_FLAGS=lib\Debug\sp133d.lib kernel32.lib user32.lib gdi32.lib\ winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib\ uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no\ /pdb:"$(OUTDIR)/jade.pdb" /debug /machine:I386 /out:"dbgbin\jade.exe" LINK32_OBJS= \ "$(INTDIR)\HtmlFOTBuilder.obj" \ "$(INTDIR)\jade.obj" \ "$(INTDIR)\jade.res" \ "$(INTDIR)\MifFOTBuilder.obj" \ "$(INTDIR)\RtfFOTBuilder.obj" \ "$(INTDIR)\RtfOle.obj" \ "$(INTDIR)\SgmlFOTBuilder.obj" \ "$(INTDIR)\TeXFOTBuilder.obj" \ "$(INTDIR)\TransformFOTBuilder.obj" \ ".\grove\Debug\grove.lib" \ ".\spgrove\Debug\spgrove.lib" \ ".\style\Debug\style.lib" ".\dbgbin\jade.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ELSEIF "$(CFG)" == "jadedist - Win32 Release" # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "jadedist\Release" # PROP BASE Intermediate_Dir "jadedist\Release" # PROP BASE Target_Dir "jadedist" # PROP BASE Cmd_Line "NMAKE /f jadedist.mak" # PROP BASE Rebuild_Opt "/a" # PROP BASE Target_File "jadedist\jadedist.exe" # PROP BASE Bsc_Name "jadedist\jadedist.bsc" # PROP Use_Debug_Libraries 0 # PROP Output_Dir "jadedist\Release" # PROP Intermediate_Dir "jadedist\Release" # PROP Target_Dir "jadedist" # PROP Cmd_Line "makedist" # PROP Rebuild_Opt "" # PROP Target_File "jadedist\jade.zip" # PROP Bsc_Name "" OUTDIR=.\jadedist\Release INTDIR=.\jadedist\Release ALL : "jade - Win32 Release" CLEAN : -@erase "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" !ELSEIF "$(CFG)" == "groveoa - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "groveoa\Release" # PROP BASE Intermediate_Dir "groveoa\Release" # PROP BASE Target_Dir "groveoa" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "groveoa\Release" # PROP Intermediate_Dir "groveoa\Release" # PROP Target_Dir "groveoa" OUTDIR=.\groveoa\Release INTDIR=.\groveoa\Release # Begin Custom Macros OutDir=.\groveoa\Release # End Custom Macros ALL : "spgrove - Win32 Release" "grove - Win32 Release" ".\bin\groveoa.dll"\ "$(OUTDIR)\regsvr32.trg" CLEAN : -@erase "$(INTDIR)\CGroveBuilder.obj" -@erase "$(INTDIR)\GroveNode.obj" -@erase "$(INTDIR)\groveoa.obj" -@erase "$(INTDIR)\groveoa.pch" -@erase "$(INTDIR)\groveoa.res" -@erase "$(INTDIR)\StdAfx.obj" -@erase "$(OUTDIR)\groveoa.exp" -@erase "$(OUTDIR)\groveoa.lib" -@erase "$(OUTDIR)\regsvr32.trg" -@erase ".\bin\groveoa.dll" -@erase ".\groveoa\groveoa.h" -@erase ".\groveoa\groveoa.tlb" -@erase ".\groveoa\groveoa_i.c" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP=cl.exe # ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c # ADD CPP /nologo /MD /W3 /GX /O2 /I "include" /I "grove" /I "spgrove" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_ATL_STATIC_REGISTRY" /D "_WINDLL" /D SP_NAMESPACE=James_Clark_SP /D "SP_MULTI_BYTE" /D GROVE_NAMESPACE=James_Clark_GROVE /YX /c CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "include" /I "grove" /I "spgrove" /D\ "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_ATL_STATIC_REGISTRY" /D\ "_WINDLL" /D SP_NAMESPACE=James_Clark_SP /D "SP_MULTI_BYTE" /D\ GROVE_NAMESPACE=James_Clark_GROVE /Fp"$(INTDIR)/groveoa.pch" /YX\ /Fo"$(INTDIR)/" /c CPP_OBJS=.\groveoa\Release/ CPP_SBRS=.\. .c{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .cpp{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .cxx{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .c{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< .cpp{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< .cxx{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< MTL=mktyplib.exe # ADD BASE MTL /nologo /D "NDEBUG" /win32 # ADD MTL /nologo /D "NDEBUG" /win32 MTL_PROJ=/nologo /D "NDEBUG" /win32 RSC=rc.exe # ADD BASE RSC /l 0x809 /d "NDEBUG" # ADD RSC /l 0x809 /d "NDEBUG" RSC_PROJ=/l 0x809 /fo"$(INTDIR)/groveoa.res" /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo BSC32_FLAGS=/nologo /o"$(OUTDIR)/groveoa.bsc" BSC32_SBRS= \ LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 # ADD LINK32 lib\Release\sp133.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 /out:"bin/groveoa.dll" LINK32_FLAGS=lib\Release\sp133.lib kernel32.lib user32.lib gdi32.lib\ winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib\ uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll\ /incremental:no /pdb:"$(OUTDIR)/groveoa.pdb" /machine:I386\ /def:".\groveoa\groveoa.def" /out:"bin/groveoa.dll"\ /implib:"$(OUTDIR)/groveoa.lib" DEF_FILE= \ ".\groveoa\groveoa.def" LINK32_OBJS= \ "$(INTDIR)\CGroveBuilder.obj" \ "$(INTDIR)\GroveNode.obj" \ "$(INTDIR)\groveoa.obj" \ "$(INTDIR)\groveoa.res" \ "$(INTDIR)\StdAfx.obj" \ ".\grove\Release\grove.lib" \ ".\spgrove\Release\spgrove.lib" ".\bin\groveoa.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << # Begin Custom Build OutDir=.\groveoa\Release TargetPath=.\bin\groveoa.dll InputPath=.\bin\groveoa.dll SOURCE=$(InputPath) "$(OutDir)\regsvr32.trg" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" regsvr32 /s /c "$(TargetPath)" echo regsvr32 exec. time > "$(OutDir)\regsvr32.trg" # End Custom Build !ELSEIF "$(CFG)" == "groveoa - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "groveoa\Debug" # PROP BASE Intermediate_Dir "groveoa\Debug" # PROP BASE Target_Dir "groveoa" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "groveoa\Debug" # PROP Intermediate_Dir "groveoa\Debug" # PROP Target_Dir "groveoa" OUTDIR=.\groveoa\Debug INTDIR=.\groveoa\Debug ALL : "spgrove - Win32 Debug" "grove - Win32 Debug" ".\dbgbin\groveoa.dll" CLEAN : -@erase "$(INTDIR)\CGroveBuilder.obj" -@erase "$(INTDIR)\GroveNode.obj" -@erase "$(INTDIR)\groveoa.obj" -@erase "$(INTDIR)\groveoa.pch" -@erase "$(INTDIR)\groveoa.res" -@erase "$(INTDIR)\StdAfx.obj" -@erase "$(INTDIR)\vc40.idb" -@erase "$(INTDIR)\vc40.pdb" -@erase "$(OUTDIR)\groveoa.exp" -@erase "$(OUTDIR)\groveoa.lib" -@erase "$(OUTDIR)\groveoa.pdb" -@erase ".\dbgbin\groveoa.dll" -@erase ".\dbgbin\groveoa.ilk" -@erase ".\groveoa\groveoa.h" -@erase ".\groveoa\groveoa.tlb" -@erase ".\groveoa\groveoa_i.c" "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" CPP=cl.exe # ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c # ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "include" /I "grove" /I "spgrove" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_ATL_STATIC_REGISTRY" /D "_WINDLL" /D SP_NAMESPACE=James_Clark_SP /D "SP_MULTI_BYTE" /D GROVE_NAMESPACE=James_Clark_GROVE /YX /c CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I "include" /I "grove" /I "spgrove"\ /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_ATL_STATIC_REGISTRY" /D\ "_WINDLL" /D SP_NAMESPACE=James_Clark_SP /D "SP_MULTI_BYTE" /D\ GROVE_NAMESPACE=James_Clark_GROVE /Fp"$(INTDIR)/groveoa.pch" /YX\ /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c CPP_OBJS=.\groveoa\Debug/ CPP_SBRS=.\. .c{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .cpp{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .cxx{$(CPP_OBJS)}.obj: $(CPP) $(CPP_PROJ) $< .c{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< .cpp{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< .cxx{$(CPP_SBRS)}.sbr: $(CPP) $(CPP_PROJ) $< MTL=mktyplib.exe # ADD BASE MTL /nologo /D "_DEBUG" /win32 # ADD MTL /nologo /D "_DEBUG" /win32 MTL_PROJ=/nologo /D "_DEBUG" /win32 RSC=rc.exe # ADD BASE RSC /l 0x809 /d "_DEBUG" # ADD RSC /l 0x809 /d "_DEBUG" RSC_PROJ=/l 0x809 /fo"$(INTDIR)/groveoa.res" /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo BSC32_FLAGS=/nologo /o"$(OUTDIR)/groveoa.bsc" BSC32_SBRS= \ LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 # ADD LINK32 lib\Debug\sp133d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /out:"dbgbin\groveoa.dll" # SUBTRACT LINK32 /incremental:no LINK32_FLAGS=lib\Debug\sp133d.lib kernel32.lib user32.lib gdi32.lib\ winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib\ uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll\ /incremental:yes /pdb:"$(OUTDIR)/groveoa.pdb" /debug /machine:I386\ /def:".\groveoa\groveoa.def" /out:"dbgbin\groveoa.dll"\ /implib:"$(OUTDIR)/groveoa.lib" DEF_FILE= \ ".\groveoa\groveoa.def" LINK32_OBJS= \ "$(INTDIR)\CGroveBuilder.obj" \ "$(INTDIR)\GroveNode.obj" \ "$(INTDIR)\groveoa.obj" \ "$(INTDIR)\groveoa.res" \ "$(INTDIR)\StdAfx.obj" \ ".\grove\Debug\grove.lib" \ ".\spgrove\Debug\spgrove.lib" ".\dbgbin\groveoa.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< $(LINK32_FLAGS) $(LINK32_OBJS) << !ENDIF ################################################################################ # Begin Target # Name "grove - Win32 Release" # Name "grove - Win32 Debug" !IF "$(CFG)" == "grove - Win32 Release" !ELSEIF "$(CFG)" == "grove - Win32 Debug" !ENDIF ################################################################################ # Begin Source File SOURCE=.\grove\Node.cxx DEP_CPP_NODE_=\ ".\grove\Node.h"\ ".\include\Boolean.h"\ ".\include\config.h"\ ".\include\macros.h"\ "$(INTDIR)\Node.obj" : $(SOURCE) $(DEP_CPP_NODE_) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\grove\LocNode.cxx DEP_CPP_LOCNO=\ ".\grove\LocNode.h"\ ".\grove\Node.h"\ ".\include\Boolean.h"\ ".\include\config.h"\ "$(INTDIR)\LocNode.obj" : $(SOURCE) $(DEP_CPP_LOCNO) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File # End Target ################################################################################ # Begin Target # Name "spgrove - Win32 Release" # Name "spgrove - Win32 Debug" !IF "$(CFG)" == "spgrove - Win32 Release" !ELSEIF "$(CFG)" == "spgrove - Win32 Debug" !ENDIF ################################################################################ # Begin Source File SOURCE=.\spgrove\GroveBuilder.cxx DEP_CPP_GROVE=\ ".\grove\LocNode.h"\ ".\grove\Node.h"\ ".\include\Allocator.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CodingSystem.h"\ ".\include\config.h"\ ".\include\constant.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\Event.h"\ ".\include\ExternalId.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\Link.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageFormatter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\ShortReferenceMap.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\spgrove\grove_inst.cxx"\ ".\spgrove\GroveBuilder.h"\ ".\spgrove\SdNode.h"\ ".\spgrove\threads.h"\ "$(INTDIR)\GroveBuilder.obj" : $(SOURCE) $(DEP_CPP_GROVE) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\spgrove\GroveApp.cxx DEP_CPP_GROVEA=\ ".\grove\Node.h"\ ".\include\Allocator.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\constant.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\Link.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\spgrove\GroveApp.h"\ ".\spgrove\GroveBuilder.h"\ ".\spgrove\threads.h"\ "$(INTDIR)\GroveApp.obj" : $(SOURCE) $(DEP_CPP_GROVEA) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Project Dependency # Project_Dep_Name "grove" !IF "$(CFG)" == "spgrove - Win32 Release" "grove - Win32 Release" : $(MAKE) /$(MAKEFLAGS) /F ".\jade.mak" CFG="grove - Win32 Release" !ELSEIF "$(CFG)" == "spgrove - Win32 Debug" "grove - Win32 Debug" : $(MAKE) /$(MAKEFLAGS) /F ".\jade.mak" CFG="grove - Win32 Debug" !ENDIF # End Project Dependency ################################################################################ # Begin Source File SOURCE=.\spgrove\SdNode.cxx DEP_CPP_SDNOD=\ ".\grove\Node.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\config.h"\ ".\include\constant.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\Location.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\spgrove\GroveBuilder.h"\ ".\spgrove\SdNode.h"\ "$(INTDIR)\SdNode.obj" : $(SOURCE) $(DEP_CPP_SDNOD) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File # End Target ################################################################################ # Begin Target # Name "style - Win32 Release" # Name "style - Win32 Debug" !IF "$(CFG)" == "style - Win32 Release" !ELSEIF "$(CFG)" == "style - Win32 Debug" !ENDIF ################################################################################ # Begin Project Dependency # Project_Dep_Name "grove" !IF "$(CFG)" == "style - Win32 Release" "grove - Win32 Release" : $(MAKE) /$(MAKEFLAGS) /F ".\jade.mak" CFG="grove - Win32 Release" !ELSEIF "$(CFG)" == "style - Win32 Debug" "grove - Win32 Debug" : $(MAKE) /$(MAKEFLAGS) /F ".\jade.mak" CFG="grove - Win32 Debug" !ENDIF # End Project Dependency ################################################################################ # Begin Source File SOURCE=.\style\stylelib.cxx DEP_CPP_STYLE=\ ".\grove\Node.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\constant.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\Link.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\spgrove\GroveApp.h"\ ".\spgrove\GroveBuilder.h"\ ".\style\Collector.h"\ ".\style\dsssl_ns.h"\ ".\style\DssslApp.h"\ ".\style\DssslSpecEventHandler.h"\ ".\style\ELObj.h"\ ".\style\ELObjMessageArg.h"\ ".\style\EvalContext.h"\ ".\style\Expression.h"\ ".\style\FOTBuilder.h"\ ".\style\GroveManager.h"\ ".\style\Insn.h"\ ".\style\Insn2.h"\ ".\style\Interpreter.h"\ ".\style\InterpreterMessages.h"\ ".\style\MacroFlowObj.h"\ ".\style\NumberCache.h"\ ".\style\Pattern.h"\ ".\style\ProcessContext.h"\ ".\style\ProcessingMode.h"\ ".\style\SchemeParser.h"\ ".\style\SosofoObj.h"\ ".\style\Style.h"\ ".\style\style_pch.h"\ ".\style\StyleEngine.h"\ ".\style\stylelib.h"\ ".\style\VM.h"\ !IF "$(CFG)" == "style - Win32 Release" # ADD CPP /Yc"stylelib.h" BuildCmds= \ $(CPP) /nologo /MD /W3 /GX /O2 /I "spgrove" /I "grove" /I "include" /D\ "NDEBUG" /D "WIN32" /D "_WINDOWS" /D DSSSL_NAMESPACE=James_Clark_DSSSL /D\ SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D\ "SP_MULTI_BYTE" /Fp"$(INTDIR)/style.pch" /Yc"stylelib.h" /Fo"$(INTDIR)/" /c\ $(SOURCE) \ "$(INTDIR)\stylelib.obj" : $(SOURCE) $(DEP_CPP_STYLE) "$(INTDIR)" $(BuildCmds) "$(INTDIR)\style.pch" : $(SOURCE) $(DEP_CPP_STYLE) "$(INTDIR)" $(BuildCmds) !ELSEIF "$(CFG)" == "style - Win32 Debug" # ADD CPP /Yc"stylelib.h" BuildCmds= \ $(CPP) /nologo /MDd /W3 /GX /Zi /Od /I "spgrove" /I "grove" /I "include" /D\ "_DEBUG" /D "WIN32" /D "_WINDOWS" /D DSSSL_NAMESPACE=James_Clark_DSSSL /D\ SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D\ "SP_MULTI_BYTE" /FR"$(INTDIR)/" /Fp"$(INTDIR)/style.pch" /Yc"stylelib.h"\ /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c $(SOURCE) \ "$(INTDIR)\stylelib.obj" : $(SOURCE) $(DEP_CPP_STYLE) "$(INTDIR)" $(BuildCmds) "$(INTDIR)\stylelib.sbr" : $(SOURCE) $(DEP_CPP_STYLE) "$(INTDIR)" $(BuildCmds) "$(INTDIR)\style.pch" : $(SOURCE) $(DEP_CPP_STYLE) "$(INTDIR)" $(BuildCmds) !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\style\StyleEngine.cxx DEP_CPP_STYLEE=\ ".\grove\Node.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\constant.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\Link.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\spgrove\GroveApp.h"\ ".\spgrove\GroveBuilder.h"\ ".\style\Collector.h"\ ".\style\dsssl_ns.h"\ ".\style\DssslApp.h"\ ".\style\DssslSpecEventHandler.h"\ ".\style\ELObj.h"\ ".\style\ELObjMessageArg.h"\ ".\style\EvalContext.h"\ ".\style\Expression.h"\ ".\style\FOTBuilder.h"\ ".\style\GroveManager.h"\ ".\style\Insn.h"\ ".\style\Insn2.h"\ ".\style\Interpreter.h"\ ".\style\InterpreterMessages.h"\ ".\style\MacroFlowObj.h"\ ".\style\NumberCache.h"\ ".\style\Pattern.h"\ ".\style\ProcessContext.h"\ ".\style\ProcessingMode.h"\ ".\style\SchemeParser.h"\ ".\style\SosofoObj.h"\ ".\style\Style.h"\ ".\style\style_pch.h"\ ".\style\StyleEngine.h"\ ".\style\stylelib.h"\ ".\style\VM.h"\ !IF "$(CFG)" == "style - Win32 Release" # ADD CPP /Yu"stylelib.h" "$(INTDIR)\StyleEngine.obj" : $(SOURCE) $(DEP_CPP_STYLEE) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(CPP) /nologo /MD /W3 /GX /O2 /I "spgrove" /I "grove" /I "include" /D\ "NDEBUG" /D "WIN32" /D "_WINDOWS" /D DSSSL_NAMESPACE=James_Clark_DSSSL /D\ SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D\ "SP_MULTI_BYTE" /Fp"$(INTDIR)/style.pch" /Yu"stylelib.h" /Fo"$(INTDIR)/" /c\ $(SOURCE) !ELSEIF "$(CFG)" == "style - Win32 Debug" # ADD CPP /Yu"stylelib.h" BuildCmds= \ $(CPP) /nologo /MDd /W3 /GX /Zi /Od /I "spgrove" /I "grove" /I "include" /D\ "_DEBUG" /D "WIN32" /D "_WINDOWS" /D DSSSL_NAMESPACE=James_Clark_DSSSL /D\ SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D\ "SP_MULTI_BYTE" /FR"$(INTDIR)/" /Fp"$(INTDIR)/style.pch" /Yu"stylelib.h"\ /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c $(SOURCE) \ "$(INTDIR)\StyleEngine.obj" : $(SOURCE) $(DEP_CPP_STYLEE) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(BuildCmds) "$(INTDIR)\StyleEngine.sbr" : $(SOURCE) $(DEP_CPP_STYLEE) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(BuildCmds) !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\style\Style.cxx DEP_CPP_STYLE_=\ ".\grove\Node.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\constant.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\Link.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\spgrove\GroveApp.h"\ ".\spgrove\GroveBuilder.h"\ ".\style\Collector.h"\ ".\style\dsssl_ns.h"\ ".\style\DssslApp.h"\ ".\style\DssslSpecEventHandler.h"\ ".\style\ELObj.h"\ ".\style\ELObjMessageArg.h"\ ".\style\EvalContext.h"\ ".\style\Expression.h"\ ".\style\FOTBuilder.h"\ ".\style\GroveManager.h"\ ".\style\Insn.h"\ ".\style\Insn2.h"\ ".\style\Interpreter.h"\ ".\style\InterpreterMessages.h"\ ".\style\MacroFlowObj.h"\ ".\style\NumberCache.h"\ ".\style\Pattern.h"\ ".\style\ProcessContext.h"\ ".\style\ProcessingMode.h"\ ".\style\SchemeParser.h"\ ".\style\SosofoObj.h"\ ".\style\Style.h"\ ".\style\style_pch.h"\ ".\style\StyleEngine.h"\ ".\style\stylelib.h"\ ".\style\VM.h"\ !IF "$(CFG)" == "style - Win32 Release" # ADD CPP /Yu"stylelib.h" "$(INTDIR)\Style.obj" : $(SOURCE) $(DEP_CPP_STYLE_) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(CPP) /nologo /MD /W3 /GX /O2 /I "spgrove" /I "grove" /I "include" /D\ "NDEBUG" /D "WIN32" /D "_WINDOWS" /D DSSSL_NAMESPACE=James_Clark_DSSSL /D\ SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D\ "SP_MULTI_BYTE" /Fp"$(INTDIR)/style.pch" /Yu"stylelib.h" /Fo"$(INTDIR)/" /c\ $(SOURCE) !ELSEIF "$(CFG)" == "style - Win32 Debug" # ADD CPP /Yu"stylelib.h" BuildCmds= \ $(CPP) /nologo /MDd /W3 /GX /Zi /Od /I "spgrove" /I "grove" /I "include" /D\ "_DEBUG" /D "WIN32" /D "_WINDOWS" /D DSSSL_NAMESPACE=James_Clark_DSSSL /D\ SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D\ "SP_MULTI_BYTE" /FR"$(INTDIR)/" /Fp"$(INTDIR)/style.pch" /Yu"stylelib.h"\ /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c $(SOURCE) \ "$(INTDIR)\Style.obj" : $(SOURCE) $(DEP_CPP_STYLE_) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(BuildCmds) "$(INTDIR)\Style.sbr" : $(SOURCE) $(DEP_CPP_STYLE_) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(BuildCmds) !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\style\ProcessingMode.cxx DEP_CPP_PROCE=\ ".\grove\LocNode.h"\ ".\grove\Node.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\constant.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\Link.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\spgrove\GroveApp.h"\ ".\spgrove\GroveBuilder.h"\ ".\style\Collector.h"\ ".\style\dsssl_ns.h"\ ".\style\DssslApp.h"\ ".\style\DssslSpecEventHandler.h"\ ".\style\ELObj.h"\ ".\style\ELObjMessageArg.h"\ ".\style\EvalContext.h"\ ".\style\Expression.h"\ ".\style\FOTBuilder.h"\ ".\style\GroveManager.h"\ ".\style\Insn.h"\ ".\style\Insn2.h"\ ".\style\Interpreter.h"\ ".\style\InterpreterMessages.h"\ ".\style\MacroFlowObj.h"\ ".\style\NumberCache.h"\ ".\style\Pattern.h"\ ".\style\ProcessContext.h"\ ".\style\ProcessingMode.h"\ ".\style\SchemeParser.h"\ ".\style\SosofoObj.h"\ ".\style\Style.h"\ ".\style\style_pch.h"\ ".\style\StyleEngine.h"\ ".\style\stylelib.h"\ ".\style\VM.h"\ !IF "$(CFG)" == "style - Win32 Release" # ADD CPP /Yu"stylelib.h" "$(INTDIR)\ProcessingMode.obj" : $(SOURCE) $(DEP_CPP_PROCE) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(CPP) /nologo /MD /W3 /GX /O2 /I "spgrove" /I "grove" /I "include" /D\ "NDEBUG" /D "WIN32" /D "_WINDOWS" /D DSSSL_NAMESPACE=James_Clark_DSSSL /D\ SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D\ "SP_MULTI_BYTE" /Fp"$(INTDIR)/style.pch" /Yu"stylelib.h" /Fo"$(INTDIR)/" /c\ $(SOURCE) !ELSEIF "$(CFG)" == "style - Win32 Debug" # ADD CPP /Yu"stylelib.h" BuildCmds= \ $(CPP) /nologo /MDd /W3 /GX /Zi /Od /I "spgrove" /I "grove" /I "include" /D\ "_DEBUG" /D "WIN32" /D "_WINDOWS" /D DSSSL_NAMESPACE=James_Clark_DSSSL /D\ SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D\ "SP_MULTI_BYTE" /FR"$(INTDIR)/" /Fp"$(INTDIR)/style.pch" /Yu"stylelib.h"\ /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c $(SOURCE) \ "$(INTDIR)\ProcessingMode.obj" : $(SOURCE) $(DEP_CPP_PROCE) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(BuildCmds) "$(INTDIR)\ProcessingMode.sbr" : $(SOURCE) $(DEP_CPP_PROCE) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(BuildCmds) !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\style\ProcessContext.cxx DEP_CPP_PROCES=\ ".\grove\Node.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\constant.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\Link.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\spgrove\GroveApp.h"\ ".\spgrove\GroveBuilder.h"\ ".\style\Collector.h"\ ".\style\dsssl_ns.h"\ ".\style\DssslApp.h"\ ".\style\DssslSpecEventHandler.h"\ ".\style\ELObj.h"\ ".\style\ELObjMessageArg.h"\ ".\style\EvalContext.h"\ ".\style\Expression.h"\ ".\style\FOTBuilder.h"\ ".\style\GroveManager.h"\ ".\style\Insn.h"\ ".\style\Insn2.h"\ ".\style\Interpreter.h"\ ".\style\InterpreterMessages.h"\ ".\style\MacroFlowObj.h"\ ".\style\NumberCache.h"\ ".\style\Pattern.h"\ ".\style\ProcessContext.h"\ ".\style\ProcessingMode.h"\ ".\style\SchemeParser.h"\ ".\style\SosofoObj.h"\ ".\style\Style.h"\ ".\style\style_pch.h"\ ".\style\StyleEngine.h"\ ".\style\stylelib.h"\ ".\style\VM.h"\ !IF "$(CFG)" == "style - Win32 Release" # ADD CPP /Yu"stylelib.h" "$(INTDIR)\ProcessContext.obj" : $(SOURCE) $(DEP_CPP_PROCES) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(CPP) /nologo /MD /W3 /GX /O2 /I "spgrove" /I "grove" /I "include" /D\ "NDEBUG" /D "WIN32" /D "_WINDOWS" /D DSSSL_NAMESPACE=James_Clark_DSSSL /D\ SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D\ "SP_MULTI_BYTE" /Fp"$(INTDIR)/style.pch" /Yu"stylelib.h" /Fo"$(INTDIR)/" /c\ $(SOURCE) !ELSEIF "$(CFG)" == "style - Win32 Debug" # ADD CPP /Yu"stylelib.h" BuildCmds= \ $(CPP) /nologo /MDd /W3 /GX /Zi /Od /I "spgrove" /I "grove" /I "include" /D\ "_DEBUG" /D "WIN32" /D "_WINDOWS" /D DSSSL_NAMESPACE=James_Clark_DSSSL /D\ SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D\ "SP_MULTI_BYTE" /FR"$(INTDIR)/" /Fp"$(INTDIR)/style.pch" /Yu"stylelib.h"\ /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c $(SOURCE) \ "$(INTDIR)\ProcessContext.obj" : $(SOURCE) $(DEP_CPP_PROCES) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(BuildCmds) "$(INTDIR)\ProcessContext.sbr" : $(SOURCE) $(DEP_CPP_PROCES) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(BuildCmds) !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\style\primitive.cxx DEP_CPP_PRIMI=\ ".\grove\LocNode.h"\ ".\grove\Node.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\constant.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\Link.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\spgrove\GroveApp.h"\ ".\spgrove\GroveBuilder.h"\ ".\style\Collector.h"\ ".\style\dsssl_ns.h"\ ".\style\DssslApp.h"\ ".\style\DssslSpecEventHandler.h"\ ".\style\ELObj.h"\ ".\style\ELObjMessageArg.h"\ ".\style\EvalContext.h"\ ".\style\Expression.h"\ ".\style\FOTBuilder.h"\ ".\style\GroveManager.h"\ ".\style\Insn.h"\ ".\style\Insn2.h"\ ".\style\Interpreter.h"\ ".\style\InterpreterMessages.h"\ ".\style\MacroFlowObj.h"\ ".\style\NumberCache.h"\ ".\style\Pattern.h"\ ".\style\primitive.h"\ ".\style\primitive_inst.cxx"\ ".\style\ProcessContext.h"\ ".\style\ProcessingMode.h"\ ".\style\SchemeParser.h"\ ".\style\SosofoObj.h"\ ".\style\Style.h"\ ".\style\style_pch.h"\ ".\style\StyleEngine.h"\ ".\style\stylelib.h"\ ".\style\VM.h"\ !IF "$(CFG)" == "style - Win32 Release" # ADD CPP /Yu"stylelib.h" "$(INTDIR)\primitive.obj" : $(SOURCE) $(DEP_CPP_PRIMI) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(CPP) /nologo /MD /W3 /GX /O2 /I "spgrove" /I "grove" /I "include" /D\ "NDEBUG" /D "WIN32" /D "_WINDOWS" /D DSSSL_NAMESPACE=James_Clark_DSSSL /D\ SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D\ "SP_MULTI_BYTE" /Fp"$(INTDIR)/style.pch" /Yu"stylelib.h" /Fo"$(INTDIR)/" /c\ $(SOURCE) !ELSEIF "$(CFG)" == "style - Win32 Debug" # ADD CPP /Yu"stylelib.h" BuildCmds= \ $(CPP) /nologo /MDd /W3 /GX /Zi /Od /I "spgrove" /I "grove" /I "include" /D\ "_DEBUG" /D "WIN32" /D "_WINDOWS" /D DSSSL_NAMESPACE=James_Clark_DSSSL /D\ SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D\ "SP_MULTI_BYTE" /FR"$(INTDIR)/" /Fp"$(INTDIR)/style.pch" /Yu"stylelib.h"\ /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c $(SOURCE) \ "$(INTDIR)\primitive.obj" : $(SOURCE) $(DEP_CPP_PRIMI) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(BuildCmds) "$(INTDIR)\primitive.sbr" : $(SOURCE) $(DEP_CPP_PRIMI) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(BuildCmds) !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\style\NumberCache.cxx DEP_CPP_NUMBE=\ ".\grove\Node.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\constant.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\Link.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\spgrove\GroveApp.h"\ ".\spgrove\GroveBuilder.h"\ ".\style\Collector.h"\ ".\style\dsssl_ns.h"\ ".\style\DssslApp.h"\ ".\style\DssslSpecEventHandler.h"\ ".\style\ELObj.h"\ ".\style\ELObjMessageArg.h"\ ".\style\EvalContext.h"\ ".\style\Expression.h"\ ".\style\FOTBuilder.h"\ ".\style\GroveManager.h"\ ".\style\Insn.h"\ ".\style\Insn2.h"\ ".\style\Interpreter.h"\ ".\style\InterpreterMessages.h"\ ".\style\MacroFlowObj.h"\ ".\style\NumberCache.h"\ ".\style\Pattern.h"\ ".\style\ProcessContext.h"\ ".\style\ProcessingMode.h"\ ".\style\SchemeParser.h"\ ".\style\SosofoObj.h"\ ".\style\Style.h"\ ".\style\style_pch.h"\ ".\style\StyleEngine.h"\ ".\style\stylelib.h"\ ".\style\VM.h"\ !IF "$(CFG)" == "style - Win32 Release" # ADD CPP /Yu"stylelib.h" "$(INTDIR)\NumberCache.obj" : $(SOURCE) $(DEP_CPP_NUMBE) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(CPP) /nologo /MD /W3 /GX /O2 /I "spgrove" /I "grove" /I "include" /D\ "NDEBUG" /D "WIN32" /D "_WINDOWS" /D DSSSL_NAMESPACE=James_Clark_DSSSL /D\ SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D\ "SP_MULTI_BYTE" /Fp"$(INTDIR)/style.pch" /Yu"stylelib.h" /Fo"$(INTDIR)/" /c\ $(SOURCE) !ELSEIF "$(CFG)" == "style - Win32 Debug" # ADD CPP /Yu"stylelib.h" BuildCmds= \ $(CPP) /nologo /MDd /W3 /GX /Zi /Od /I "spgrove" /I "grove" /I "include" /D\ "_DEBUG" /D "WIN32" /D "_WINDOWS" /D DSSSL_NAMESPACE=James_Clark_DSSSL /D\ SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D\ "SP_MULTI_BYTE" /FR"$(INTDIR)/" /Fp"$(INTDIR)/style.pch" /Yu"stylelib.h"\ /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c $(SOURCE) \ "$(INTDIR)\NumberCache.obj" : $(SOURCE) $(DEP_CPP_NUMBE) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(BuildCmds) "$(INTDIR)\NumberCache.sbr" : $(SOURCE) $(DEP_CPP_NUMBE) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(BuildCmds) !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\style\InterpreterMessages.cxx DEP_CPP_INTER=\ ".\include\Boolean.h"\ ".\include\config.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\Location.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\Resource.h"\ ".\include\rtti.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\TypeId.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\xnew.h"\ ".\style\InterpreterMessages.h"\ !IF "$(CFG)" == "style - Win32 Release" # SUBTRACT CPP /YX "$(INTDIR)\InterpreterMessages.obj" : $(SOURCE) $(DEP_CPP_INTER) "$(INTDIR)" $(CPP) /nologo /MD /W3 /GX /O2 /I "spgrove" /I "grove" /I "include" /D\ "NDEBUG" /D "WIN32" /D "_WINDOWS" /D DSSSL_NAMESPACE=James_Clark_DSSSL /D\ SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D\ "SP_MULTI_BYTE" /Fo"$(INTDIR)/" /c $(SOURCE) !ELSEIF "$(CFG)" == "style - Win32 Debug" # SUBTRACT CPP /YX BuildCmds= \ $(CPP) /nologo /MDd /W3 /GX /Zi /Od /I "spgrove" /I "grove" /I "include" /D\ "_DEBUG" /D "WIN32" /D "_WINDOWS" /D DSSSL_NAMESPACE=James_Clark_DSSSL /D\ SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D\ "SP_MULTI_BYTE" /FR"$(INTDIR)/" /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c $(SOURCE) \ "$(INTDIR)\InterpreterMessages.obj" : $(SOURCE) $(DEP_CPP_INTER) "$(INTDIR)" $(BuildCmds) "$(INTDIR)\InterpreterMessages.sbr" : $(SOURCE) $(DEP_CPP_INTER) "$(INTDIR)" $(BuildCmds) !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\style\Interpreter.cxx DEP_CPP_INTERP=\ ".\grove\LocNode.h"\ ".\grove\Node.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\constant.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\Link.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\spgrove\GroveApp.h"\ ".\spgrove\GroveBuilder.h"\ ".\style\charNames.h"\ ".\style\Collector.h"\ ".\style\dsssl_ns.h"\ ".\style\DssslApp.h"\ ".\style\DssslSpecEventHandler.h"\ ".\style\ELObj.h"\ ".\style\ELObjMessageArg.h"\ ".\style\EvalContext.h"\ ".\style\Expression.h"\ ".\style\FOTBuilder.h"\ ".\style\GroveManager.h"\ ".\style\Insn.h"\ ".\style\Insn2.h"\ ".\style\Interpreter.h"\ ".\style\InterpreterMessages.h"\ ".\style\MacroFlowObj.h"\ ".\style\NumberCache.h"\ ".\style\Pattern.h"\ ".\style\ProcessContext.h"\ ".\style\ProcessingMode.h"\ ".\style\SchemeParser.h"\ ".\style\sdata.h"\ ".\style\SosofoObj.h"\ ".\style\Style.h"\ ".\style\style_pch.h"\ ".\style\StyleEngine.h"\ ".\style\stylelib.h"\ ".\style\VM.h"\ !IF "$(CFG)" == "style - Win32 Release" # ADD CPP /Yu"stylelib.h" "$(INTDIR)\Interpreter.obj" : $(SOURCE) $(DEP_CPP_INTERP) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(CPP) /nologo /MD /W3 /GX /O2 /I "spgrove" /I "grove" /I "include" /D\ "NDEBUG" /D "WIN32" /D "_WINDOWS" /D DSSSL_NAMESPACE=James_Clark_DSSSL /D\ SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D\ "SP_MULTI_BYTE" /Fp"$(INTDIR)/style.pch" /Yu"stylelib.h" /Fo"$(INTDIR)/" /c\ $(SOURCE) !ELSEIF "$(CFG)" == "style - Win32 Debug" # ADD CPP /Yu"stylelib.h" BuildCmds= \ $(CPP) /nologo /MDd /W3 /GX /Zi /Od /I "spgrove" /I "grove" /I "include" /D\ "_DEBUG" /D "WIN32" /D "_WINDOWS" /D DSSSL_NAMESPACE=James_Clark_DSSSL /D\ SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D\ "SP_MULTI_BYTE" /FR"$(INTDIR)/" /Fp"$(INTDIR)/style.pch" /Yu"stylelib.h"\ /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c $(SOURCE) \ "$(INTDIR)\Interpreter.obj" : $(SOURCE) $(DEP_CPP_INTERP) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(BuildCmds) "$(INTDIR)\Interpreter.sbr" : $(SOURCE) $(DEP_CPP_INTERP) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(BuildCmds) !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\style\Insn.cxx DEP_CPP_INSN_=\ ".\grove\Node.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\constant.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\Link.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\spgrove\GroveApp.h"\ ".\spgrove\GroveBuilder.h"\ ".\style\Collector.h"\ ".\style\dsssl_ns.h"\ ".\style\DssslApp.h"\ ".\style\DssslSpecEventHandler.h"\ ".\style\ELObj.h"\ ".\style\ELObjMessageArg.h"\ ".\style\EvalContext.h"\ ".\style\Expression.h"\ ".\style\FOTBuilder.h"\ ".\style\GroveManager.h"\ ".\style\Insn.h"\ ".\style\Insn2.h"\ ".\style\Interpreter.h"\ ".\style\InterpreterMessages.h"\ ".\style\MacroFlowObj.h"\ ".\style\NumberCache.h"\ ".\style\Pattern.h"\ ".\style\ProcessContext.h"\ ".\style\ProcessingMode.h"\ ".\style\SchemeParser.h"\ ".\style\SosofoObj.h"\ ".\style\Style.h"\ ".\style\style_pch.h"\ ".\style\StyleEngine.h"\ ".\style\stylelib.h"\ ".\style\VM.h"\ !IF "$(CFG)" == "style - Win32 Release" # ADD CPP /Yu"stylelib.h" "$(INTDIR)\Insn.obj" : $(SOURCE) $(DEP_CPP_INSN_) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(CPP) /nologo /MD /W3 /GX /O2 /I "spgrove" /I "grove" /I "include" /D\ "NDEBUG" /D "WIN32" /D "_WINDOWS" /D DSSSL_NAMESPACE=James_Clark_DSSSL /D\ SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D\ "SP_MULTI_BYTE" /Fp"$(INTDIR)/style.pch" /Yu"stylelib.h" /Fo"$(INTDIR)/" /c\ $(SOURCE) !ELSEIF "$(CFG)" == "style - Win32 Debug" # ADD CPP /Yu"stylelib.h" BuildCmds= \ $(CPP) /nologo /MDd /W3 /GX /Zi /Od /I "spgrove" /I "grove" /I "include" /D\ "_DEBUG" /D "WIN32" /D "_WINDOWS" /D DSSSL_NAMESPACE=James_Clark_DSSSL /D\ SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D\ "SP_MULTI_BYTE" /FR"$(INTDIR)/" /Fp"$(INTDIR)/style.pch" /Yu"stylelib.h"\ /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c $(SOURCE) \ "$(INTDIR)\Insn.obj" : $(SOURCE) $(DEP_CPP_INSN_) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(BuildCmds) "$(INTDIR)\Insn.sbr" : $(SOURCE) $(DEP_CPP_INSN_) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(BuildCmds) !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\style\FOTBuilder.cxx DEP_CPP_FOTBU=\ ".\grove\Node.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\constant.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\Link.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\spgrove\GroveApp.h"\ ".\spgrove\GroveBuilder.h"\ ".\style\Collector.h"\ ".\style\dsssl_ns.h"\ ".\style\DssslApp.h"\ ".\style\DssslSpecEventHandler.h"\ ".\style\ELObj.h"\ ".\style\ELObjMessageArg.h"\ ".\style\EvalContext.h"\ ".\style\Expression.h"\ ".\style\FOTBuilder.h"\ ".\style\GroveManager.h"\ ".\style\Insn.h"\ ".\style\Insn2.h"\ ".\style\Interpreter.h"\ ".\style\InterpreterMessages.h"\ ".\style\MacroFlowObj.h"\ ".\style\NumberCache.h"\ ".\style\Pattern.h"\ ".\style\ProcessContext.h"\ ".\style\ProcessingMode.h"\ ".\style\SchemeParser.h"\ ".\style\SosofoObj.h"\ ".\style\Style.h"\ ".\style\style_pch.h"\ ".\style\StyleEngine.h"\ ".\style\stylelib.h"\ ".\style\VM.h"\ !IF "$(CFG)" == "style - Win32 Release" # ADD CPP /Yu"stylelib.h" "$(INTDIR)\FOTBuilder.obj" : $(SOURCE) $(DEP_CPP_FOTBU) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(CPP) /nologo /MD /W3 /GX /O2 /I "spgrove" /I "grove" /I "include" /D\ "NDEBUG" /D "WIN32" /D "_WINDOWS" /D DSSSL_NAMESPACE=James_Clark_DSSSL /D\ SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D\ "SP_MULTI_BYTE" /Fp"$(INTDIR)/style.pch" /Yu"stylelib.h" /Fo"$(INTDIR)/" /c\ $(SOURCE) !ELSEIF "$(CFG)" == "style - Win32 Debug" # ADD CPP /Yu"stylelib.h" BuildCmds= \ $(CPP) /nologo /MDd /W3 /GX /Zi /Od /I "spgrove" /I "grove" /I "include" /D\ "_DEBUG" /D "WIN32" /D "_WINDOWS" /D DSSSL_NAMESPACE=James_Clark_DSSSL /D\ SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D\ "SP_MULTI_BYTE" /FR"$(INTDIR)/" /Fp"$(INTDIR)/style.pch" /Yu"stylelib.h"\ /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c $(SOURCE) \ "$(INTDIR)\FOTBuilder.obj" : $(SOURCE) $(DEP_CPP_FOTBU) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(BuildCmds) "$(INTDIR)\FOTBuilder.sbr" : $(SOURCE) $(DEP_CPP_FOTBU) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(BuildCmds) !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\style\Expression.cxx DEP_CPP_EXPRE=\ ".\grove\Node.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\constant.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\Link.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\spgrove\GroveApp.h"\ ".\spgrove\GroveBuilder.h"\ ".\style\Collector.h"\ ".\style\dsssl_ns.h"\ ".\style\DssslApp.h"\ ".\style\DssslSpecEventHandler.h"\ ".\style\ELObj.h"\ ".\style\ELObjMessageArg.h"\ ".\style\EvalContext.h"\ ".\style\Expression.h"\ ".\style\FOTBuilder.h"\ ".\style\GroveManager.h"\ ".\style\Insn.h"\ ".\style\Insn2.h"\ ".\style\Interpreter.h"\ ".\style\InterpreterMessages.h"\ ".\style\MacroFlowObj.h"\ ".\style\NumberCache.h"\ ".\style\Pattern.h"\ ".\style\ProcessContext.h"\ ".\style\ProcessingMode.h"\ ".\style\SchemeParser.h"\ ".\style\SosofoObj.h"\ ".\style\Style.h"\ ".\style\style_pch.h"\ ".\style\StyleEngine.h"\ ".\style\stylelib.h"\ ".\style\VM.h"\ !IF "$(CFG)" == "style - Win32 Release" # ADD CPP /Yu"stylelib.h" "$(INTDIR)\Expression.obj" : $(SOURCE) $(DEP_CPP_EXPRE) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(CPP) /nologo /MD /W3 /GX /O2 /I "spgrove" /I "grove" /I "include" /D\ "NDEBUG" /D "WIN32" /D "_WINDOWS" /D DSSSL_NAMESPACE=James_Clark_DSSSL /D\ SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D\ "SP_MULTI_BYTE" /Fp"$(INTDIR)/style.pch" /Yu"stylelib.h" /Fo"$(INTDIR)/" /c\ $(SOURCE) !ELSEIF "$(CFG)" == "style - Win32 Debug" # ADD CPP /Yu"stylelib.h" BuildCmds= \ $(CPP) /nologo /MDd /W3 /GX /Zi /Od /I "spgrove" /I "grove" /I "include" /D\ "_DEBUG" /D "WIN32" /D "_WINDOWS" /D DSSSL_NAMESPACE=James_Clark_DSSSL /D\ SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D\ "SP_MULTI_BYTE" /FR"$(INTDIR)/" /Fp"$(INTDIR)/style.pch" /Yu"stylelib.h"\ /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c $(SOURCE) \ "$(INTDIR)\Expression.obj" : $(SOURCE) $(DEP_CPP_EXPRE) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(BuildCmds) "$(INTDIR)\Expression.sbr" : $(SOURCE) $(DEP_CPP_EXPRE) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(BuildCmds) !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\style\ELObjMessageArg.cxx DEP_CPP_ELOBJ=\ ".\grove\Node.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\constant.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\Link.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\spgrove\GroveApp.h"\ ".\spgrove\GroveBuilder.h"\ ".\style\Collector.h"\ ".\style\dsssl_ns.h"\ ".\style\DssslApp.h"\ ".\style\DssslSpecEventHandler.h"\ ".\style\ELObj.h"\ ".\style\ELObjMessageArg.h"\ ".\style\EvalContext.h"\ ".\style\Expression.h"\ ".\style\FOTBuilder.h"\ ".\style\GroveManager.h"\ ".\style\Insn.h"\ ".\style\Insn2.h"\ ".\style\Interpreter.h"\ ".\style\InterpreterMessages.h"\ ".\style\MacroFlowObj.h"\ ".\style\NumberCache.h"\ ".\style\Pattern.h"\ ".\style\ProcessContext.h"\ ".\style\ProcessingMode.h"\ ".\style\SchemeParser.h"\ ".\style\SosofoObj.h"\ ".\style\Style.h"\ ".\style\style_pch.h"\ ".\style\StyleEngine.h"\ ".\style\stylelib.h"\ ".\style\VM.h"\ !IF "$(CFG)" == "style - Win32 Release" # ADD CPP /Yu"stylelib.h" "$(INTDIR)\ELObjMessageArg.obj" : $(SOURCE) $(DEP_CPP_ELOBJ) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(CPP) /nologo /MD /W3 /GX /O2 /I "spgrove" /I "grove" /I "include" /D\ "NDEBUG" /D "WIN32" /D "_WINDOWS" /D DSSSL_NAMESPACE=James_Clark_DSSSL /D\ SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D\ "SP_MULTI_BYTE" /Fp"$(INTDIR)/style.pch" /Yu"stylelib.h" /Fo"$(INTDIR)/" /c\ $(SOURCE) !ELSEIF "$(CFG)" == "style - Win32 Debug" # ADD CPP /Yu"stylelib.h" BuildCmds= \ $(CPP) /nologo /MDd /W3 /GX /Zi /Od /I "spgrove" /I "grove" /I "include" /D\ "_DEBUG" /D "WIN32" /D "_WINDOWS" /D DSSSL_NAMESPACE=James_Clark_DSSSL /D\ SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D\ "SP_MULTI_BYTE" /FR"$(INTDIR)/" /Fp"$(INTDIR)/style.pch" /Yu"stylelib.h"\ /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c $(SOURCE) \ "$(INTDIR)\ELObjMessageArg.obj" : $(SOURCE) $(DEP_CPP_ELOBJ) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(BuildCmds) "$(INTDIR)\ELObjMessageArg.sbr" : $(SOURCE) $(DEP_CPP_ELOBJ) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(BuildCmds) !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\style\ELObj.cxx DEP_CPP_ELOBJ_=\ ".\grove\Node.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\constant.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\Link.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\spgrove\GroveApp.h"\ ".\spgrove\GroveBuilder.h"\ ".\style\Collector.h"\ ".\style\dsssl_ns.h"\ ".\style\DssslApp.h"\ ".\style\DssslSpecEventHandler.h"\ ".\style\ELObj.h"\ ".\style\ELObjMessageArg.h"\ ".\style\EvalContext.h"\ ".\style\Expression.h"\ ".\style\FOTBuilder.h"\ ".\style\GroveManager.h"\ ".\style\Insn.h"\ ".\style\Insn2.h"\ ".\style\Interpreter.h"\ ".\style\InterpreterMessages.h"\ ".\style\MacroFlowObj.h"\ ".\style\NumberCache.h"\ ".\style\Pattern.h"\ ".\style\ProcessContext.h"\ ".\style\ProcessingMode.h"\ ".\style\SchemeParser.h"\ ".\style\SosofoObj.h"\ ".\style\Style.h"\ ".\style\style_pch.h"\ ".\style\StyleEngine.h"\ ".\style\stylelib.h"\ ".\style\VM.h"\ !IF "$(CFG)" == "style - Win32 Release" # ADD CPP /Yu"stylelib.h" "$(INTDIR)\ELObj.obj" : $(SOURCE) $(DEP_CPP_ELOBJ_) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(CPP) /nologo /MD /W3 /GX /O2 /I "spgrove" /I "grove" /I "include" /D\ "NDEBUG" /D "WIN32" /D "_WINDOWS" /D DSSSL_NAMESPACE=James_Clark_DSSSL /D\ SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D\ "SP_MULTI_BYTE" /Fp"$(INTDIR)/style.pch" /Yu"stylelib.h" /Fo"$(INTDIR)/" /c\ $(SOURCE) !ELSEIF "$(CFG)" == "style - Win32 Debug" # ADD CPP /Yu"stylelib.h" BuildCmds= \ $(CPP) /nologo /MDd /W3 /GX /Zi /Od /I "spgrove" /I "grove" /I "include" /D\ "_DEBUG" /D "WIN32" /D "_WINDOWS" /D DSSSL_NAMESPACE=James_Clark_DSSSL /D\ SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D\ "SP_MULTI_BYTE" /FR"$(INTDIR)/" /Fp"$(INTDIR)/style.pch" /Yu"stylelib.h"\ /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c $(SOURCE) \ "$(INTDIR)\ELObj.obj" : $(SOURCE) $(DEP_CPP_ELOBJ_) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(BuildCmds) "$(INTDIR)\ELObj.sbr" : $(SOURCE) $(DEP_CPP_ELOBJ_) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(BuildCmds) !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\style\DssslSpecEventHandler.cxx DEP_CPP_DSSSL=\ ".\grove\Node.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\constant.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\InternalInputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\Link.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\spgrove\GroveApp.h"\ ".\spgrove\GroveBuilder.h"\ ".\style\Collector.h"\ ".\style\dsssl_ns.h"\ ".\style\DssslApp.h"\ ".\style\DssslSpecEventHandler.h"\ ".\style\ELObj.h"\ ".\style\ELObjMessageArg.h"\ ".\style\EvalContext.h"\ ".\style\Expression.h"\ ".\style\FOTBuilder.h"\ ".\style\GroveManager.h"\ ".\style\Insn.h"\ ".\style\Insn2.h"\ ".\style\Interpreter.h"\ ".\style\InterpreterMessages.h"\ ".\style\MacroFlowObj.h"\ ".\style\NumberCache.h"\ ".\style\Pattern.h"\ ".\style\ProcessContext.h"\ ".\style\ProcessingMode.h"\ ".\style\SchemeParser.h"\ ".\style\SosofoObj.h"\ ".\style\Style.h"\ ".\style\style_pch.h"\ ".\style\StyleEngine.h"\ ".\style\stylelib.h"\ ".\style\VM.h"\ !IF "$(CFG)" == "style - Win32 Release" # ADD CPP /Yu"stylelib.h" "$(INTDIR)\DssslSpecEventHandler.obj" : $(SOURCE) $(DEP_CPP_DSSSL) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(CPP) /nologo /MD /W3 /GX /O2 /I "spgrove" /I "grove" /I "include" /D\ "NDEBUG" /D "WIN32" /D "_WINDOWS" /D DSSSL_NAMESPACE=James_Clark_DSSSL /D\ SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D\ "SP_MULTI_BYTE" /Fp"$(INTDIR)/style.pch" /Yu"stylelib.h" /Fo"$(INTDIR)/" /c\ $(SOURCE) !ELSEIF "$(CFG)" == "style - Win32 Debug" # ADD CPP /Yu"stylelib.h" BuildCmds= \ $(CPP) /nologo /MDd /W3 /GX /Zi /Od /I "spgrove" /I "grove" /I "include" /D\ "_DEBUG" /D "WIN32" /D "_WINDOWS" /D DSSSL_NAMESPACE=James_Clark_DSSSL /D\ SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D\ "SP_MULTI_BYTE" /FR"$(INTDIR)/" /Fp"$(INTDIR)/style.pch" /Yu"stylelib.h"\ /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c $(SOURCE) \ "$(INTDIR)\DssslSpecEventHandler.obj" : $(SOURCE) $(DEP_CPP_DSSSL) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(BuildCmds) "$(INTDIR)\DssslSpecEventHandler.sbr" : $(SOURCE) $(DEP_CPP_DSSSL) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(BuildCmds) !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\style\Collector.cxx DEP_CPP_COLLE=\ ".\include\Boolean.h"\ ".\include\config.h"\ ".\include\macros.h"\ ".\style\Collector.h"\ !IF "$(CFG)" == "style - Win32 Release" # SUBTRACT CPP /YX "$(INTDIR)\Collector.obj" : $(SOURCE) $(DEP_CPP_COLLE) "$(INTDIR)" $(CPP) /nologo /MD /W3 /GX /O2 /I "spgrove" /I "grove" /I "include" /D\ "NDEBUG" /D "WIN32" /D "_WINDOWS" /D DSSSL_NAMESPACE=James_Clark_DSSSL /D\ SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D\ "SP_MULTI_BYTE" /Fo"$(INTDIR)/" /c $(SOURCE) !ELSEIF "$(CFG)" == "style - Win32 Debug" # SUBTRACT CPP /YX BuildCmds= \ $(CPP) /nologo /MDd /W3 /GX /Zi /Od /I "spgrove" /I "grove" /I "include" /D\ "_DEBUG" /D "WIN32" /D "_WINDOWS" /D DSSSL_NAMESPACE=James_Clark_DSSSL /D\ SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D\ "SP_MULTI_BYTE" /FR"$(INTDIR)/" /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c $(SOURCE) \ "$(INTDIR)\Collector.obj" : $(SOURCE) $(DEP_CPP_COLLE) "$(INTDIR)" $(BuildCmds) "$(INTDIR)\Collector.sbr" : $(SOURCE) $(DEP_CPP_COLLE) "$(INTDIR)" $(BuildCmds) !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\style\FlowObj.cxx DEP_CPP_FLOWO=\ ".\grove\Node.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\constant.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\Link.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\spgrove\GroveApp.h"\ ".\spgrove\GroveBuilder.h"\ ".\style\Collector.h"\ ".\style\dsssl_ns.h"\ ".\style\DssslApp.h"\ ".\style\DssslSpecEventHandler.h"\ ".\style\ELObj.h"\ ".\style\ELObjMessageArg.h"\ ".\style\EvalContext.h"\ ".\style\Expression.h"\ ".\style\FlowObj_inst.cxx"\ ".\style\FOTBuilder.h"\ ".\style\GroveManager.h"\ ".\style\Insn.h"\ ".\style\Insn2.h"\ ".\style\Interpreter.h"\ ".\style\InterpreterMessages.h"\ ".\style\MacroFlowObj.h"\ ".\style\NumberCache.h"\ ".\style\Pattern.h"\ ".\style\ProcessContext.h"\ ".\style\ProcessingMode.h"\ ".\style\SchemeParser.h"\ ".\style\SosofoObj.h"\ ".\style\Style.h"\ ".\style\style_pch.h"\ ".\style\StyleEngine.h"\ ".\style\stylelib.h"\ ".\style\VM.h"\ !IF "$(CFG)" == "style - Win32 Release" # ADD CPP /Yu"stylelib.h" "$(INTDIR)\FlowObj.obj" : $(SOURCE) $(DEP_CPP_FLOWO) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(CPP) /nologo /MD /W3 /GX /O2 /I "spgrove" /I "grove" /I "include" /D\ "NDEBUG" /D "WIN32" /D "_WINDOWS" /D DSSSL_NAMESPACE=James_Clark_DSSSL /D\ SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D\ "SP_MULTI_BYTE" /Fp"$(INTDIR)/style.pch" /Yu"stylelib.h" /Fo"$(INTDIR)/" /c\ $(SOURCE) !ELSEIF "$(CFG)" == "style - Win32 Debug" # ADD CPP /Yu"stylelib.h" BuildCmds= \ $(CPP) /nologo /MDd /W3 /GX /Zi /Od /I "spgrove" /I "grove" /I "include" /D\ "_DEBUG" /D "WIN32" /D "_WINDOWS" /D DSSSL_NAMESPACE=James_Clark_DSSSL /D\ SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D\ "SP_MULTI_BYTE" /FR"$(INTDIR)/" /Fp"$(INTDIR)/style.pch" /Yu"stylelib.h"\ /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c $(SOURCE) \ "$(INTDIR)\FlowObj.obj" : $(SOURCE) $(DEP_CPP_FLOWO) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(BuildCmds) "$(INTDIR)\FlowObj.sbr" : $(SOURCE) $(DEP_CPP_FLOWO) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(BuildCmds) !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\style\InheritedC.cxx DEP_CPP_INHER=\ ".\grove\Node.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\constant.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\Link.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\spgrove\GroveApp.h"\ ".\spgrove\GroveBuilder.h"\ ".\style\Collector.h"\ ".\style\dsssl_ns.h"\ ".\style\DssslApp.h"\ ".\style\DssslSpecEventHandler.h"\ ".\style\ELObj.h"\ ".\style\ELObjMessageArg.h"\ ".\style\EvalContext.h"\ ".\style\Expression.h"\ ".\style\FOTBuilder.h"\ ".\style\GroveManager.h"\ ".\style\Insn.h"\ ".\style\Insn2.h"\ ".\style\Interpreter.h"\ ".\style\InterpreterMessages.h"\ ".\style\MacroFlowObj.h"\ ".\style\NumberCache.h"\ ".\style\Pattern.h"\ ".\style\ProcessContext.h"\ ".\style\ProcessingMode.h"\ ".\style\SchemeParser.h"\ ".\style\SosofoObj.h"\ ".\style\Style.h"\ ".\style\style_pch.h"\ ".\style\StyleEngine.h"\ ".\style\stylelib.h"\ ".\style\VM.h"\ !IF "$(CFG)" == "style - Win32 Release" # ADD CPP /Yu"stylelib.h" "$(INTDIR)\InheritedC.obj" : $(SOURCE) $(DEP_CPP_INHER) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(CPP) /nologo /MD /W3 /GX /O2 /I "spgrove" /I "grove" /I "include" /D\ "NDEBUG" /D "WIN32" /D "_WINDOWS" /D DSSSL_NAMESPACE=James_Clark_DSSSL /D\ SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D\ "SP_MULTI_BYTE" /Fp"$(INTDIR)/style.pch" /Yu"stylelib.h" /Fo"$(INTDIR)/" /c\ $(SOURCE) !ELSEIF "$(CFG)" == "style - Win32 Debug" # ADD CPP /Yu"stylelib.h" BuildCmds= \ $(CPP) /nologo /MDd /W3 /GX /Zi /Od /I "spgrove" /I "grove" /I "include" /D\ "_DEBUG" /D "WIN32" /D "_WINDOWS" /D DSSSL_NAMESPACE=James_Clark_DSSSL /D\ SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D\ "SP_MULTI_BYTE" /FR"$(INTDIR)/" /Fp"$(INTDIR)/style.pch" /Yu"stylelib.h"\ /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c $(SOURCE) \ "$(INTDIR)\InheritedC.obj" : $(SOURCE) $(DEP_CPP_INHER) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(BuildCmds) "$(INTDIR)\InheritedC.sbr" : $(SOURCE) $(DEP_CPP_INHER) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(BuildCmds) !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\style\style_inst.cxx DEP_CPP_STYLE_I=\ ".\grove\Node.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\constant.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\Link.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\spgrove\GroveApp.h"\ ".\spgrove\GroveBuilder.h"\ ".\style\Collector.h"\ ".\style\dsssl_ns.h"\ ".\style\DssslApp.h"\ ".\style\DssslSpecEventHandler.h"\ ".\style\ELObj.h"\ ".\style\ELObjMessageArg.h"\ ".\style\EvalContext.h"\ ".\style\Expression.h"\ ".\style\FOTBuilder.h"\ ".\style\GroveManager.h"\ ".\style\Insn.h"\ ".\style\Insn2.h"\ ".\style\Interpreter.h"\ ".\style\InterpreterMessages.h"\ ".\style\MacroFlowObj.h"\ ".\style\NumberCache.h"\ ".\style\Pattern.h"\ ".\style\ProcessContext.h"\ ".\style\ProcessingMode.h"\ ".\style\SchemeParser.h"\ ".\style\SosofoObj.h"\ ".\style\Style.h"\ ".\style\style_pch.h"\ ".\style\StyleEngine.h"\ ".\style\stylelib.h"\ ".\style\VM.h"\ !IF "$(CFG)" == "style - Win32 Release" # ADD CPP /Yu"stylelib.h" "$(INTDIR)\style_inst.obj" : $(SOURCE) $(DEP_CPP_STYLE_I) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(CPP) /nologo /MD /W3 /GX /O2 /I "spgrove" /I "grove" /I "include" /D\ "NDEBUG" /D "WIN32" /D "_WINDOWS" /D DSSSL_NAMESPACE=James_Clark_DSSSL /D\ SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D\ "SP_MULTI_BYTE" /Fp"$(INTDIR)/style.pch" /Yu"stylelib.h" /Fo"$(INTDIR)/" /c\ $(SOURCE) !ELSEIF "$(CFG)" == "style - Win32 Debug" # ADD CPP /Yu"stylelib.h" BuildCmds= \ $(CPP) /nologo /MDd /W3 /GX /Zi /Od /I "spgrove" /I "grove" /I "include" /D\ "_DEBUG" /D "WIN32" /D "_WINDOWS" /D DSSSL_NAMESPACE=James_Clark_DSSSL /D\ SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D\ "SP_MULTI_BYTE" /FR"$(INTDIR)/" /Fp"$(INTDIR)/style.pch" /Yu"stylelib.h"\ /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c $(SOURCE) \ "$(INTDIR)\style_inst.obj" : $(SOURCE) $(DEP_CPP_STYLE_I) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(BuildCmds) "$(INTDIR)\style_inst.sbr" : $(SOURCE) $(DEP_CPP_STYLE_I) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(BuildCmds) !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\style\common_inst.cxx DEP_CPP_COMMO=\ ".\grove\Node.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\constant.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\Link.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\spgrove\GroveApp.h"\ ".\spgrove\GroveBuilder.h"\ ".\style\Collector.h"\ ".\style\dsssl_ns.h"\ ".\style\DssslApp.h"\ ".\style\DssslSpecEventHandler.h"\ ".\style\ELObj.h"\ ".\style\ELObjMessageArg.h"\ ".\style\EvalContext.h"\ ".\style\Expression.h"\ ".\style\FOTBuilder.h"\ ".\style\GroveManager.h"\ ".\style\Insn.h"\ ".\style\Insn2.h"\ ".\style\Interpreter.h"\ ".\style\InterpreterMessages.h"\ ".\style\MacroFlowObj.h"\ ".\style\NumberCache.h"\ ".\style\Pattern.h"\ ".\style\ProcessContext.h"\ ".\style\ProcessingMode.h"\ ".\style\SchemeParser.h"\ ".\style\SosofoObj.h"\ ".\style\Style.h"\ ".\style\style_pch.h"\ ".\style\StyleEngine.h"\ ".\style\stylelib.h"\ ".\style\VM.h"\ !IF "$(CFG)" == "style - Win32 Release" # ADD CPP /Yu"stylelib.h" "$(INTDIR)\common_inst.obj" : $(SOURCE) $(DEP_CPP_COMMO) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(CPP) /nologo /MD /W3 /GX /O2 /I "spgrove" /I "grove" /I "include" /D\ "NDEBUG" /D "WIN32" /D "_WINDOWS" /D DSSSL_NAMESPACE=James_Clark_DSSSL /D\ SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D\ "SP_MULTI_BYTE" /Fp"$(INTDIR)/style.pch" /Yu"stylelib.h" /Fo"$(INTDIR)/" /c\ $(SOURCE) !ELSEIF "$(CFG)" == "style - Win32 Debug" # ADD CPP /Yu"stylelib.h" BuildCmds= \ $(CPP) /nologo /MDd /W3 /GX /Zi /Od /I "spgrove" /I "grove" /I "include" /D\ "_DEBUG" /D "WIN32" /D "_WINDOWS" /D DSSSL_NAMESPACE=James_Clark_DSSSL /D\ SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D\ "SP_MULTI_BYTE" /FR"$(INTDIR)/" /Fp"$(INTDIR)/style.pch" /Yu"stylelib.h"\ /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c $(SOURCE) \ "$(INTDIR)\common_inst.obj" : $(SOURCE) $(DEP_CPP_COMMO) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(BuildCmds) "$(INTDIR)\common_inst.sbr" : $(SOURCE) $(DEP_CPP_COMMO) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(BuildCmds) !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\style\InterpreterMessages.msg !IF "$(CFG)" == "style - Win32 Release" # PROP Exclude_From_Build 1 !ELSEIF "$(CFG)" == "style - Win32 Debug" # PROP Exclude_From_Build 1 !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\style\style_inst.m4 !IF "$(CFG)" == "style - Win32 Release" !ELSEIF "$(CFG)" == "style - Win32 Debug" !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\style\FlowObj_inst.m4 !IF "$(CFG)" == "style - Win32 Release" !ELSEIF "$(CFG)" == "style - Win32 Debug" !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\style\common_inst.m4 !IF "$(CFG)" == "style - Win32 Release" !ELSEIF "$(CFG)" == "style - Win32 Debug" !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\style\GroveManager.cxx DEP_CPP_GROVEM=\ ".\grove\Node.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\constant.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\Link.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\spgrove\GroveApp.h"\ ".\spgrove\GroveBuilder.h"\ ".\style\Collector.h"\ ".\style\dsssl_ns.h"\ ".\style\DssslApp.h"\ ".\style\DssslSpecEventHandler.h"\ ".\style\ELObj.h"\ ".\style\ELObjMessageArg.h"\ ".\style\EvalContext.h"\ ".\style\Expression.h"\ ".\style\FOTBuilder.h"\ ".\style\GroveManager.h"\ ".\style\Insn.h"\ ".\style\Insn2.h"\ ".\style\Interpreter.h"\ ".\style\InterpreterMessages.h"\ ".\style\MacroFlowObj.h"\ ".\style\NumberCache.h"\ ".\style\Pattern.h"\ ".\style\ProcessContext.h"\ ".\style\ProcessingMode.h"\ ".\style\SchemeParser.h"\ ".\style\SosofoObj.h"\ ".\style\Style.h"\ ".\style\style_pch.h"\ ".\style\StyleEngine.h"\ ".\style\stylelib.h"\ ".\style\VM.h"\ !IF "$(CFG)" == "style - Win32 Release" # ADD CPP /Yu"stylelib.h" "$(INTDIR)\GroveManager.obj" : $(SOURCE) $(DEP_CPP_GROVEM) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(CPP) /nologo /MD /W3 /GX /O2 /I "spgrove" /I "grove" /I "include" /D\ "NDEBUG" /D "WIN32" /D "_WINDOWS" /D DSSSL_NAMESPACE=James_Clark_DSSSL /D\ SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D\ "SP_MULTI_BYTE" /Fp"$(INTDIR)/style.pch" /Yu"stylelib.h" /Fo"$(INTDIR)/" /c\ $(SOURCE) !ELSEIF "$(CFG)" == "style - Win32 Debug" # ADD CPP /Yu"stylelib.h" BuildCmds= \ $(CPP) /nologo /MDd /W3 /GX /Zi /Od /I "spgrove" /I "grove" /I "include" /D\ "_DEBUG" /D "WIN32" /D "_WINDOWS" /D DSSSL_NAMESPACE=James_Clark_DSSSL /D\ SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D\ "SP_MULTI_BYTE" /FR"$(INTDIR)/" /Fp"$(INTDIR)/style.pch" /Yu"stylelib.h"\ /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c $(SOURCE) \ "$(INTDIR)\GroveManager.obj" : $(SOURCE) $(DEP_CPP_GROVEM) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(BuildCmds) "$(INTDIR)\GroveManager.sbr" : $(SOURCE) $(DEP_CPP_GROVEM) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(BuildCmds) !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\style\DssslApp.cxx DEP_CPP_DSSSLA=\ ".\grove\LocNode.h"\ ".\grove\Node.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\constant.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\Link.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\sptchar.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\spgrove\GroveApp.h"\ ".\spgrove\GroveBuilder.h"\ ".\spgrove\SdNode.h"\ ".\style\Collector.h"\ ".\style\dsssl_ns.h"\ ".\style\DssslApp.h"\ ".\style\DssslAppMessages.h"\ ".\style\DssslSpecEventHandler.h"\ ".\style\ELObj.h"\ ".\style\ELObjMessageArg.h"\ ".\style\EvalContext.h"\ ".\style\Expression.h"\ ".\style\FOTBuilder.h"\ ".\style\GroveManager.h"\ ".\style\Insn.h"\ ".\style\Insn2.h"\ ".\style\Interpreter.h"\ ".\style\InterpreterMessages.h"\ ".\style\jade_version.h"\ ".\style\MacroFlowObj.h"\ ".\style\NumberCache.h"\ ".\style\Pattern.h"\ ".\style\ProcessContext.h"\ ".\style\ProcessingMode.h"\ ".\style\SchemeParser.h"\ ".\style\SosofoObj.h"\ ".\style\Style.h"\ ".\style\style_pch.h"\ ".\style\StyleEngine.h"\ ".\style\stylelib.h"\ ".\style\VM.h"\ !IF "$(CFG)" == "style - Win32 Release" # ADD CPP /Yu"stylelib.h" "$(INTDIR)\DssslApp.obj" : $(SOURCE) $(DEP_CPP_DSSSLA) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(CPP) /nologo /MD /W3 /GX /O2 /I "spgrove" /I "grove" /I "include" /D\ "NDEBUG" /D "WIN32" /D "_WINDOWS" /D DSSSL_NAMESPACE=James_Clark_DSSSL /D\ SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D\ "SP_MULTI_BYTE" /Fp"$(INTDIR)/style.pch" /Yu"stylelib.h" /Fo"$(INTDIR)/" /c\ $(SOURCE) !ELSEIF "$(CFG)" == "style - Win32 Debug" # ADD CPP /Yu"stylelib.h" BuildCmds= \ $(CPP) /nologo /MDd /W3 /GX /Zi /Od /I "spgrove" /I "grove" /I "include" /D\ "_DEBUG" /D "WIN32" /D "_WINDOWS" /D DSSSL_NAMESPACE=James_Clark_DSSSL /D\ SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D\ "SP_MULTI_BYTE" /FR"$(INTDIR)/" /Fp"$(INTDIR)/style.pch" /Yu"stylelib.h"\ /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c $(SOURCE) \ "$(INTDIR)\DssslApp.obj" : $(SOURCE) $(DEP_CPP_DSSSLA) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(BuildCmds) "$(INTDIR)\DssslApp.sbr" : $(SOURCE) $(DEP_CPP_DSSSLA) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(BuildCmds) !ENDIF # End Source File ################################################################################ # Begin Project Dependency # Project_Dep_Name "spgrove" !IF "$(CFG)" == "style - Win32 Release" "spgrove - Win32 Release" : $(MAKE) /$(MAKEFLAGS) /F ".\jade.mak" CFG="spgrove - Win32 Release" !ELSEIF "$(CFG)" == "style - Win32 Debug" "spgrove - Win32 Debug" : $(MAKE) /$(MAKEFLAGS) /F ".\jade.mak" CFG="spgrove - Win32 Debug" !ENDIF # End Project Dependency ################################################################################ # Begin Source File SOURCE=.\style\jade_version.h !IF "$(CFG)" == "style - Win32 Release" !ELSEIF "$(CFG)" == "style - Win32 Debug" !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\style\Pattern.cxx DEP_CPP_PATTE=\ ".\grove\Node.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\constant.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\Link.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\spgrove\GroveApp.h"\ ".\spgrove\GroveBuilder.h"\ ".\style\Collector.h"\ ".\style\dsssl_ns.h"\ ".\style\DssslApp.h"\ ".\style\DssslSpecEventHandler.h"\ ".\style\ELObj.h"\ ".\style\ELObjMessageArg.h"\ ".\style\EvalContext.h"\ ".\style\Expression.h"\ ".\style\FOTBuilder.h"\ ".\style\GroveManager.h"\ ".\style\Insn.h"\ ".\style\Insn2.h"\ ".\style\Interpreter.h"\ ".\style\InterpreterMessages.h"\ ".\style\MacroFlowObj.h"\ ".\style\NumberCache.h"\ ".\style\Pattern.h"\ ".\style\ProcessContext.h"\ ".\style\ProcessingMode.h"\ ".\style\SchemeParser.h"\ ".\style\SosofoObj.h"\ ".\style\Style.h"\ ".\style\style_pch.h"\ ".\style\StyleEngine.h"\ ".\style\stylelib.h"\ ".\style\VM.h"\ !IF "$(CFG)" == "style - Win32 Release" # ADD CPP /Yu"stylelib.h" "$(INTDIR)\Pattern.obj" : $(SOURCE) $(DEP_CPP_PATTE) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(CPP) /nologo /MD /W3 /GX /O2 /I "spgrove" /I "grove" /I "include" /D\ "NDEBUG" /D "WIN32" /D "_WINDOWS" /D DSSSL_NAMESPACE=James_Clark_DSSSL /D\ SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D\ "SP_MULTI_BYTE" /Fp"$(INTDIR)/style.pch" /Yu"stylelib.h" /Fo"$(INTDIR)/" /c\ $(SOURCE) !ELSEIF "$(CFG)" == "style - Win32 Debug" # ADD CPP /Yu"stylelib.h" BuildCmds= \ $(CPP) /nologo /MDd /W3 /GX /Zi /Od /I "spgrove" /I "grove" /I "include" /D\ "_DEBUG" /D "WIN32" /D "_WINDOWS" /D DSSSL_NAMESPACE=James_Clark_DSSSL /D\ SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D\ "SP_MULTI_BYTE" /FR"$(INTDIR)/" /Fp"$(INTDIR)/style.pch" /Yu"stylelib.h"\ /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c $(SOURCE) \ "$(INTDIR)\Pattern.obj" : $(SOURCE) $(DEP_CPP_PATTE) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(BuildCmds) "$(INTDIR)\Pattern.sbr" : $(SOURCE) $(DEP_CPP_PATTE) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(BuildCmds) !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\style\MacroFlowObj.cxx DEP_CPP_MACRO=\ ".\grove\Node.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\constant.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\Link.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\spgrove\GroveApp.h"\ ".\spgrove\GroveBuilder.h"\ ".\style\Collector.h"\ ".\style\dsssl_ns.h"\ ".\style\DssslApp.h"\ ".\style\DssslSpecEventHandler.h"\ ".\style\ELObj.h"\ ".\style\ELObjMessageArg.h"\ ".\style\EvalContext.h"\ ".\style\Expression.h"\ ".\style\FOTBuilder.h"\ ".\style\GroveManager.h"\ ".\style\Insn.h"\ ".\style\Insn2.h"\ ".\style\Interpreter.h"\ ".\style\InterpreterMessages.h"\ ".\style\MacroFlowObj.h"\ ".\style\NumberCache.h"\ ".\style\Pattern.h"\ ".\style\ProcessContext.h"\ ".\style\ProcessingMode.h"\ ".\style\SchemeParser.h"\ ".\style\SosofoObj.h"\ ".\style\Style.h"\ ".\style\style_pch.h"\ ".\style\StyleEngine.h"\ ".\style\stylelib.h"\ ".\style\VM.h"\ !IF "$(CFG)" == "style - Win32 Release" # ADD CPP /Yu"stylelib.h" "$(INTDIR)\MacroFlowObj.obj" : $(SOURCE) $(DEP_CPP_MACRO) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(CPP) /nologo /MD /W3 /GX /O2 /I "spgrove" /I "grove" /I "include" /D\ "NDEBUG" /D "WIN32" /D "_WINDOWS" /D DSSSL_NAMESPACE=James_Clark_DSSSL /D\ SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D\ "SP_MULTI_BYTE" /Fp"$(INTDIR)/style.pch" /Yu"stylelib.h" /Fo"$(INTDIR)/" /c\ $(SOURCE) !ELSEIF "$(CFG)" == "style - Win32 Debug" # ADD CPP /Yu"stylelib.h" BuildCmds= \ $(CPP) /nologo /MDd /W3 /GX /Zi /Od /I "spgrove" /I "grove" /I "include" /D\ "_DEBUG" /D "WIN32" /D "_WINDOWS" /D DSSSL_NAMESPACE=James_Clark_DSSSL /D\ SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D\ "SP_MULTI_BYTE" /FR"$(INTDIR)/" /Fp"$(INTDIR)/style.pch" /Yu"stylelib.h"\ /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c $(SOURCE) \ "$(INTDIR)\MacroFlowObj.obj" : $(SOURCE) $(DEP_CPP_MACRO) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(BuildCmds) "$(INTDIR)\MacroFlowObj.sbr" : $(SOURCE) $(DEP_CPP_MACRO) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(BuildCmds) !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\style\SchemeParser.cxx DEP_CPP_SCHEM=\ ".\grove\Node.h"\ ".\include\Allocator.h"\ ".\include\ArcEngine.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\constant.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\InputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\Link.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\spgrove\GroveApp.h"\ ".\spgrove\GroveBuilder.h"\ ".\style\Collector.h"\ ".\style\dsssl_ns.h"\ ".\style\DssslApp.h"\ ".\style\DssslSpecEventHandler.h"\ ".\style\ELObj.h"\ ".\style\ELObjMessageArg.h"\ ".\style\EvalContext.h"\ ".\style\Expression.h"\ ".\style\FOTBuilder.h"\ ".\style\GroveManager.h"\ ".\style\Insn.h"\ ".\style\Insn2.h"\ ".\style\Interpreter.h"\ ".\style\InterpreterMessages.h"\ ".\style\MacroFlowObj.h"\ ".\style\NumberCache.h"\ ".\style\Pattern.h"\ ".\style\ProcessContext.h"\ ".\style\ProcessingMode.h"\ ".\style\SchemeParser.h"\ ".\style\SosofoObj.h"\ ".\style\Style.h"\ ".\style\style_pch.h"\ ".\style\StyleEngine.h"\ ".\style\stylelib.h"\ ".\style\VM.h"\ !IF "$(CFG)" == "style - Win32 Release" # ADD CPP /Yu"stylelib.h" "$(INTDIR)\SchemeParser.obj" : $(SOURCE) $(DEP_CPP_SCHEM) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(CPP) /nologo /MD /W3 /GX /O2 /I "spgrove" /I "grove" /I "include" /D\ "NDEBUG" /D "WIN32" /D "_WINDOWS" /D DSSSL_NAMESPACE=James_Clark_DSSSL /D\ SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D\ "SP_MULTI_BYTE" /Fp"$(INTDIR)/style.pch" /Yu"stylelib.h" /Fo"$(INTDIR)/" /c\ $(SOURCE) !ELSEIF "$(CFG)" == "style - Win32 Debug" # ADD CPP /Yu"stylelib.h" BuildCmds= \ $(CPP) /nologo /MDd /W3 /GX /Zi /Od /I "spgrove" /I "grove" /I "include" /D\ "_DEBUG" /D "WIN32" /D "_WINDOWS" /D DSSSL_NAMESPACE=James_Clark_DSSSL /D\ SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D\ "SP_MULTI_BYTE" /FR"$(INTDIR)/" /Fp"$(INTDIR)/style.pch" /Yu"stylelib.h"\ /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c $(SOURCE) \ "$(INTDIR)\SchemeParser.obj" : $(SOURCE) $(DEP_CPP_SCHEM) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(BuildCmds) "$(INTDIR)\SchemeParser.sbr" : $(SOURCE) $(DEP_CPP_SCHEM) "$(INTDIR)"\ "$(INTDIR)\style.pch" $(BuildCmds) !ENDIF # End Source File # End Target ################################################################################ # Begin Target # Name "jade - Win32 Release" # Name "jade - Win32 Debug" !IF "$(CFG)" == "jade - Win32 Release" !ELSEIF "$(CFG)" == "jade - Win32 Debug" !ENDIF ################################################################################ # Begin Source File SOURCE=.\jade\SgmlFOTBuilder.cxx DEP_CPP_SGMLF=\ ".\grove\Node.h"\ ".\include\Boolean.h"\ ".\include\CodingSystem.h"\ ".\include\config.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\ExternalId.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\Link.h"\ ".\include\Location.h"\ ".\include\macros.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\Resource.h"\ ".\include\rtti.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\xnew.h"\ ".\jade\SgmlFOTBuilder.h"\ ".\style\dsssl_ns.h"\ ".\style\FOTBuilder.h"\ "$(INTDIR)\SgmlFOTBuilder.obj" : $(SOURCE) $(DEP_CPP_SGMLF) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\jade\RtfFOTBuilder.cxx DEP_CPP_RTFFO=\ ".\grove\Node.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetInfo.h"\ ".\include\CharsetRegistry.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\constant.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityManager.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\InputSource.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\Link.h"\ ".\include\Location.h"\ ".\include\macros.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\OutputByteStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\rtti.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\jade\RtfFOTBuilder.h"\ ".\jade\RtfFOTBuilder_inst.cxx"\ ".\jade\RtfMessages.h"\ ".\jade\RtfOle.h"\ ".\jade\TmpOutputByteStream.h"\ ".\style\dsssl_ns.h"\ ".\style\FOTBuilder.h"\ "$(INTDIR)\RtfFOTBuilder.obj" : $(SOURCE) $(DEP_CPP_RTFFO) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\jade\jade.cxx DEP_CPP_JADE_=\ ".\grove\Node.h"\ ".\include\Allocator.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\constant.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityApp.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\Link.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\macros.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserApp.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\sptchar.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\jade\HtmlFOTBuilder.h"\ ".\jade\JadeMessages.h"\ ".\jade\MifFOTBuilder.h"\ ".\jade\RtfFOTBuilder.h"\ ".\jade\SgmlFOTBuilder.h"\ ".\jade\TeXFOTBuilder.h"\ ".\jade\TransformFOTBuilder.h"\ ".\spgrove\GroveApp.h"\ ".\spgrove\GroveBuilder.h"\ ".\style\dsssl_ns.h"\ ".\style\DssslApp.h"\ ".\style\FOTBuilder.h"\ ".\style\GroveManager.h"\ !IF "$(CFG)" == "jade - Win32 Release" # ADD CPP /D "JADE_MIF" "$(INTDIR)\jade.obj" : $(SOURCE) $(DEP_CPP_JADE_) "$(INTDIR)" $(CPP) /nologo /MD /W3 /GX /O2 /I "include" /I "style" /I "grove" /I\ "spgrove" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D SP_NAMESPACE=James_Clark_SP\ /D DSSSL_NAMESPACE=James_Clark_DSSSL /D GROVE_NAMESPACE=James_Clark_GROVE /D\ "SP_MULTI_BYTE" /D "JADE_MIF" /Fp"$(INTDIR)/jade.pch" /YX /Fo"$(INTDIR)/" /c\ $(SOURCE) !ELSEIF "$(CFG)" == "jade - Win32 Debug" # ADD CPP /D "JADE_MIF" "$(INTDIR)\jade.obj" : $(SOURCE) $(DEP_CPP_JADE_) "$(INTDIR)" $(CPP) /nologo /MDd /W3 /GX /Zi /Od /I "include" /I "style" /I "grove" /I\ "spgrove" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D SP_NAMESPACE=James_Clark_SP\ /D DSSSL_NAMESPACE=James_Clark_DSSSL /D GROVE_NAMESPACE=James_Clark_GROVE /D\ "SP_MULTI_BYTE" /D "JADE_MIF" /Fp"$(INTDIR)/jade.pch" /YX /Fo"$(INTDIR)/"\ /Fd"$(INTDIR)/" /c $(SOURCE) !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\jade\HtmlFOTBuilder.cxx DEP_CPP_HTMLF=\ ".\grove\Node.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetInfo.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\constant.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ExternalId.h"\ ".\include\Hash.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\IListIter.h"\ ".\include\IListIterBase.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\Link.h"\ ".\include\Location.h"\ ".\include\macros.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\rtti.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\xnew.h"\ ".\jade\HtmlFOTBuilder.h"\ ".\jade\HtmlFOTBuilder_inst.cxx"\ ".\jade\HtmlMessages.h"\ ".\style\dsssl_ns.h"\ ".\style\FOTBuilder.h"\ "$(INTDIR)\HtmlFOTBuilder.obj" : $(SOURCE) $(DEP_CPP_HTMLF) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\jade\HtmlFOTBuilder_inst.m4 !IF "$(CFG)" == "jade - Win32 Release" # PROP Exclude_From_Build 1 !ELSEIF "$(CFG)" == "jade - Win32 Debug" # PROP Exclude_From_Build 1 !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\jade\jade.rc DEP_RSC_JADE_R=\ ".\jade\HtmlMessages.rc"\ ".\jade\JadeMessages.rc"\ ".\jade\RtfMessages.rc"\ ".\jade\TeXMessages.rc"\ ".\style\DssslAppMessages.rc"\ ".\style\InterpreterMessages.rc"\ !IF "$(CFG)" == "jade - Win32 Release" # ADD BASE RSC /l 0x809 /i "jade" # ADD RSC /l 0x809 /i "jade" /i "style" /d "JADE_MIF" "$(INTDIR)\jade.res" : $(SOURCE) $(DEP_RSC_JADE_R) "$(INTDIR)" $(RSC) /l 0x809 /fo"$(INTDIR)/jade.res" /i "jade" /i "style" /d "NDEBUG" /d\ "JADE_MIF" $(SOURCE) !ELSEIF "$(CFG)" == "jade - Win32 Debug" # ADD BASE RSC /l 0x809 /i "jade" # ADD RSC /l 0x809 /i "jade" /i "style" /d "JADE_MIF" "$(INTDIR)\jade.res" : $(SOURCE) $(DEP_RSC_JADE_R) "$(INTDIR)" $(RSC) /l 0x809 /fo"$(INTDIR)/jade.res" /i "jade" /i "style" /d "_DEBUG" /d\ "JADE_MIF" $(SOURCE) !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\jade\JadeMessages.msg !IF "$(CFG)" == "jade - Win32 Release" # PROP Exclude_From_Build 1 !ELSEIF "$(CFG)" == "jade - Win32 Debug" # PROP Exclude_From_Build 1 !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\jade\HtmlMessages.msg !IF "$(CFG)" == "jade - Win32 Release" # PROP Exclude_From_Build 1 !ELSEIF "$(CFG)" == "jade - Win32 Debug" # PROP Exclude_From_Build 1 !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\jade\RtfFOTBuilder_inst.m4 !IF "$(CFG)" == "jade - Win32 Release" # PROP Exclude_From_Build 1 !ELSEIF "$(CFG)" == "jade - Win32 Debug" # PROP Exclude_From_Build 1 !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\jade\TeXFOTBuilder.cxx DEP_CPP_TEXFO=\ ".\grove\Node.h"\ ".\include\Boolean.h"\ ".\include\config.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\ExternalId.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\Link.h"\ ".\include\Location.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\OutputByteStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\Resource.h"\ ".\include\rtti.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\xnew.h"\ ".\jade\TeXFOTBuilder.h"\ ".\jade\TeXFOTBuilder_inst.cxx"\ ".\jade\TeXMessages.h"\ ".\jade\TmpOutputByteStream.h"\ ".\style\dsssl_ns.h"\ ".\style\FOTBuilder.h"\ "$(INTDIR)\TeXFOTBuilder.obj" : $(SOURCE) $(DEP_CPP_TEXFO) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Project Dependency # Project_Dep_Name "grove" !IF "$(CFG)" == "jade - Win32 Release" "grove - Win32 Release" : $(MAKE) /$(MAKEFLAGS) /F ".\jade.mak" CFG="grove - Win32 Release" !ELSEIF "$(CFG)" == "jade - Win32 Debug" "grove - Win32 Debug" : $(MAKE) /$(MAKEFLAGS) /F ".\jade.mak" CFG="grove - Win32 Debug" !ENDIF # End Project Dependency ################################################################################ # Begin Project Dependency # Project_Dep_Name "spgrove" !IF "$(CFG)" == "jade - Win32 Release" "spgrove - Win32 Release" : $(MAKE) /$(MAKEFLAGS) /F ".\jade.mak" CFG="spgrove - Win32 Release" !ELSEIF "$(CFG)" == "jade - Win32 Debug" "spgrove - Win32 Debug" : $(MAKE) /$(MAKEFLAGS) /F ".\jade.mak" CFG="spgrove - Win32 Debug" !ENDIF # End Project Dependency ################################################################################ # Begin Source File SOURCE=.\jade\RtfMessages.msg !IF "$(CFG)" == "jade - Win32 Release" # PROP Exclude_From_Build 1 !ELSEIF "$(CFG)" == "jade - Win32 Debug" # PROP Exclude_From_Build 1 !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\jade\TransformFOTBuilder.cxx DEP_CPP_TRANS=\ ".\grove\Node.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetInfo.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\constant.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ExternalId.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\Link.h"\ ".\include\Location.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\rtti.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\xnew.h"\ ".\jade\TransformFOTBuilder.h"\ ".\jade\TransformFOTBuilder_inst.cxx"\ ".\style\dsssl_ns.h"\ ".\style\FOTBuilder.h"\ "$(INTDIR)\TransformFOTBuilder.obj" : $(SOURCE) $(DEP_CPP_TRANS) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Source File SOURCE=.\dsssl\fot.dtd !IF "$(CFG)" == "jade - Win32 Release" !ELSEIF "$(CFG)" == "jade - Win32 Debug" !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\jade\TransformFOTBuilder_inst.m4 !IF "$(CFG)" == "jade - Win32 Release" !ELSEIF "$(CFG)" == "jade - Win32 Debug" !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\jade\RtfOle.cxx DEP_CPP_RTFOL=\ ".\include\Boolean.h"\ ".\include\config.h"\ ".\include\OutputByteStream.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\jade\RtfOle.h"\ ".\style\dsssl_ns.h"\ "$(INTDIR)\RtfOle.obj" : $(SOURCE) $(DEP_CPP_RTFOL) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) # End Source File ################################################################################ # Begin Project Dependency # Project_Dep_Name "style" !IF "$(CFG)" == "jade - Win32 Release" "style - Win32 Release" : $(MAKE) /$(MAKEFLAGS) /F ".\jade.mak" CFG="style - Win32 Release" !ELSEIF "$(CFG)" == "jade - Win32 Debug" "style - Win32 Debug" : $(MAKE) /$(MAKEFLAGS) /F ".\jade.mak" CFG="style - Win32 Debug" !ENDIF # End Project Dependency ################################################################################ # Begin Source File SOURCE=.\jade\MifFOTBuilder.cxx DEP_CPP_MIFFO=\ ".\grove\Node.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetInfo.h"\ ".\include\CmdLineApp.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\constant.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityManager.h"\ ".\include\ErrnoMessageArg.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ExternalId.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\IList.h"\ ".\include\IListBase.h"\ ".\include\InputSource.h"\ ".\include\IQueue.cxx"\ ".\include\IQueue.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\Link.h"\ ".\include\Location.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageReporter.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\rtti.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\jade\MifFOTBuilder.h"\ ".\jade\MifFOTBuilder_inst.cxx"\ ".\jade\MifMessages.h"\ ".\jade\TmpOutputByteStream.h"\ ".\style\dsssl_ns.h"\ ".\style\FOTBuilder.h"\ !IF "$(CFG)" == "jade - Win32 Release" # ADD CPP /D "JADE_MIF" "$(INTDIR)\MifFOTBuilder.obj" : $(SOURCE) $(DEP_CPP_MIFFO) "$(INTDIR)" $(CPP) /nologo /MD /W3 /GX /O2 /I "include" /I "style" /I "grove" /I\ "spgrove" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D SP_NAMESPACE=James_Clark_SP\ /D DSSSL_NAMESPACE=James_Clark_DSSSL /D GROVE_NAMESPACE=James_Clark_GROVE /D\ "SP_MULTI_BYTE" /D "JADE_MIF" /Fp"$(INTDIR)/jade.pch" /YX /Fo"$(INTDIR)/" /c\ $(SOURCE) !ELSEIF "$(CFG)" == "jade - Win32 Debug" # ADD CPP /D "JADE_MIF" "$(INTDIR)\MifFOTBuilder.obj" : $(SOURCE) $(DEP_CPP_MIFFO) "$(INTDIR)" $(CPP) /nologo /MDd /W3 /GX /Zi /Od /I "include" /I "style" /I "grove" /I\ "spgrove" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D SP_NAMESPACE=James_Clark_SP\ /D DSSSL_NAMESPACE=James_Clark_DSSSL /D GROVE_NAMESPACE=James_Clark_GROVE /D\ "SP_MULTI_BYTE" /D "JADE_MIF" /Fp"$(INTDIR)/jade.pch" /YX /Fo"$(INTDIR)/"\ /Fd"$(INTDIR)/" /c $(SOURCE) !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\jade\MifFOTBuilder_inst.m4 !IF "$(CFG)" == "jade - Win32 Release" !ELSEIF "$(CFG)" == "jade - Win32 Debug" !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\jade\TeXFOTBuilder_inst.m4 !IF "$(CFG)" == "jade - Win32 Release" !ELSEIF "$(CFG)" == "jade - Win32 Debug" !ENDIF # End Source File # End Target ################################################################################ # Begin Target # Name "jadedist - Win32 Release" !IF "$(CFG)" == "jadedist - Win32 Release" ".\jadedist\jade.zip" : CD jadedist makedist !ENDIF ################################################################################ # Begin Project Dependency # Project_Dep_Name "jade" !IF "$(CFG)" == "jadedist - Win32 Release" "jade - Win32 Release" : $(MAKE) /$(MAKEFLAGS) /F ".\jade.mak" CFG="jade - Win32 Release" !ENDIF # End Project Dependency ################################################################################ # Begin Source File SOURCE=".\jadedist\bin-files.txt" # End Source File ################################################################################ # Begin Source File SOURCE=.\jadedist\files.txt # End Source File ################################################################################ # Begin Source File SOURCE=.\jadedist\makedist.bat # End Source File # End Target ################################################################################ # Begin Target # Name "groveoa - Win32 Release" # Name "groveoa - Win32 Debug" !IF "$(CFG)" == "groveoa - Win32 Release" !ELSEIF "$(CFG)" == "groveoa - Win32 Debug" !ENDIF ################################################################################ # Begin Source File SOURCE=.\groveoa\GroveNode.cxx DEP_CPP_GROVEN=\ ".\grove\LocNode.h"\ ".\grove\Node.h"\ ".\groveoa\GroveNode.h"\ ".\groveoa\groveoa.h"\ ".\groveoa\StdAfx.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetInfo.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\constant.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityManager.h"\ ".\include\ExtendEntityManager.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\Location.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\OutputByteStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\rtti.h"\ ".\include\StorageManager.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\TypeId.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\xnew.h"\ !IF "$(CFG)" == "groveoa - Win32 Release" # ADD CPP /Yu"stdafx.h" "$(INTDIR)\GroveNode.obj" : $(SOURCE) $(DEP_CPP_GROVEN) "$(INTDIR)"\ "$(INTDIR)\groveoa.pch" ".\groveoa\groveoa.h" $(CPP) /nologo /MD /W3 /GX /O2 /I "include" /I "grove" /I "spgrove" /D\ "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_ATL_STATIC_REGISTRY" /D\ "_WINDLL" /D SP_NAMESPACE=James_Clark_SP /D "SP_MULTI_BYTE" /D\ GROVE_NAMESPACE=James_Clark_GROVE /Fp"$(INTDIR)/groveoa.pch" /Yu"stdafx.h"\ /Fo"$(INTDIR)/" /c $(SOURCE) !ELSEIF "$(CFG)" == "groveoa - Win32 Debug" # ADD CPP /Yu"stdafx.h" "$(INTDIR)\GroveNode.obj" : $(SOURCE) $(DEP_CPP_GROVEN) "$(INTDIR)"\ ".\groveoa\groveoa.h" "$(INTDIR)\groveoa.pch" $(CPP) /nologo /MDd /W3 /Gm /GX /Zi /Od /I "include" /I "grove" /I "spgrove"\ /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_ATL_STATIC_REGISTRY" /D\ "_WINDLL" /D SP_NAMESPACE=James_Clark_SP /D "SP_MULTI_BYTE" /D\ GROVE_NAMESPACE=James_Clark_GROVE /Fp"$(INTDIR)/groveoa.pch" /Yu"stdafx.h"\ /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c $(SOURCE) !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\groveoa\groveoa.cxx DEP_CPP_GROVEO=\ ".\groveoa\CGroveBuilder.h"\ ".\groveoa\groveoa.h"\ ".\groveoa\groveoa_i.c"\ ".\groveoa\StdAfx.h"\ ".\include\Allocator.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\constant.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExternalId.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\Link.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageFormatter.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\WinApp.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ !IF "$(CFG)" == "groveoa - Win32 Release" # ADD CPP /Yu"stdafx.h" "$(INTDIR)\groveoa.obj" : $(SOURCE) $(DEP_CPP_GROVEO) "$(INTDIR)"\ "$(INTDIR)\groveoa.pch" ".\groveoa\groveoa.h" ".\groveoa\groveoa_i.c" $(CPP) /nologo /MD /W3 /GX /O2 /I "include" /I "grove" /I "spgrove" /D\ "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_ATL_STATIC_REGISTRY" /D\ "_WINDLL" /D SP_NAMESPACE=James_Clark_SP /D "SP_MULTI_BYTE" /D\ GROVE_NAMESPACE=James_Clark_GROVE /Fp"$(INTDIR)/groveoa.pch" /Yu"stdafx.h"\ /Fo"$(INTDIR)/" /c $(SOURCE) !ELSEIF "$(CFG)" == "groveoa - Win32 Debug" # ADD CPP /Yu"stdafx.h" "$(INTDIR)\groveoa.obj" : $(SOURCE) $(DEP_CPP_GROVEO) "$(INTDIR)"\ ".\groveoa\groveoa.h" ".\groveoa\groveoa_i.c" "$(INTDIR)\groveoa.pch" $(CPP) /nologo /MDd /W3 /Gm /GX /Zi /Od /I "include" /I "grove" /I "spgrove"\ /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_ATL_STATIC_REGISTRY" /D\ "_WINDLL" /D SP_NAMESPACE=James_Clark_SP /D "SP_MULTI_BYTE" /D\ GROVE_NAMESPACE=James_Clark_GROVE /Fp"$(INTDIR)/groveoa.pch" /Yu"stdafx.h"\ /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c $(SOURCE) !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\groveoa\groveoa.rc DEP_RSC_GROVEOA=\ ".\groveoa\GroveBuilder.rgs"\ ".\groveoa\groveoa.tlb"\ !IF "$(CFG)" == "groveoa - Win32 Release" "$(INTDIR)\groveoa.res" : $(SOURCE) $(DEP_RSC_GROVEOA) "$(INTDIR)"\ ".\groveoa\groveoa.tlb" $(RSC) /l 0x809 /fo"$(INTDIR)/groveoa.res" /i "groveoa" /d "NDEBUG"\ $(SOURCE) !ELSEIF "$(CFG)" == "groveoa - Win32 Debug" "$(INTDIR)\groveoa.res" : $(SOURCE) $(DEP_RSC_GROVEOA) "$(INTDIR)"\ ".\groveoa\groveoa.tlb" $(RSC) /l 0x809 /fo"$(INTDIR)/groveoa.res" /i "groveoa" /d "_DEBUG"\ $(SOURCE) !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\groveoa\StdAfx.cxx DEP_CPP_STDAF=\ ".\groveoa\StdAfx.h"\ !IF "$(CFG)" == "groveoa - Win32 Release" # ADD CPP /Yc"stdafx.h" BuildCmds= \ $(CPP) /nologo /MD /W3 /GX /O2 /I "include" /I "grove" /I "spgrove" /D\ "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_ATL_STATIC_REGISTRY" /D\ "_WINDLL" /D SP_NAMESPACE=James_Clark_SP /D "SP_MULTI_BYTE" /D\ GROVE_NAMESPACE=James_Clark_GROVE /Fp"$(INTDIR)/groveoa.pch" /Yc"stdafx.h"\ /Fo"$(INTDIR)/" /c $(SOURCE) \ "$(INTDIR)\StdAfx.obj" : $(SOURCE) $(DEP_CPP_STDAF) "$(INTDIR)" $(BuildCmds) "$(INTDIR)\groveoa.pch" : $(SOURCE) $(DEP_CPP_STDAF) "$(INTDIR)" $(BuildCmds) !ELSEIF "$(CFG)" == "groveoa - Win32 Debug" # ADD CPP /Yc"stdafx.h" BuildCmds= \ $(CPP) /nologo /MDd /W3 /Gm /GX /Zi /Od /I "include" /I "grove" /I "spgrove"\ /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_ATL_STATIC_REGISTRY" /D\ "_WINDLL" /D SP_NAMESPACE=James_Clark_SP /D "SP_MULTI_BYTE" /D\ GROVE_NAMESPACE=James_Clark_GROVE /Fp"$(INTDIR)/groveoa.pch" /Yc"stdafx.h"\ /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c $(SOURCE) \ "$(INTDIR)\StdAfx.obj" : $(SOURCE) $(DEP_CPP_STDAF) "$(INTDIR)" $(BuildCmds) "$(INTDIR)\groveoa.pch" : $(SOURCE) $(DEP_CPP_STDAF) "$(INTDIR)" $(BuildCmds) !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\groveoa\CGroveBuilder.cxx DEP_CPP_CGROV=\ ".\grove\Node.h"\ ".\groveoa\CGroveBuilder.h"\ ".\groveoa\GroveNode.h"\ ".\groveoa\groveoa.h"\ ".\groveoa\StdAfx.h"\ ".\include\Allocator.h"\ ".\include\Attribute.h"\ ".\include\Attributed.h"\ ".\include\Boolean.h"\ ".\include\CharMap.cxx"\ ".\include\CharMap.h"\ ".\include\CharsetDecl.h"\ ".\include\CharsetInfo.h"\ ".\include\CodingSystem.h"\ ".\include\CodingSystemKit.h"\ ".\include\config.h"\ ".\include\constant.h"\ ".\include\ContentToken.h"\ ".\include\CopyOwner.cxx"\ ".\include\CopyOwner.h"\ ".\include\Dtd.h"\ ".\include\ElementType.h"\ ".\include\Entity.h"\ ".\include\EntityCatalog.h"\ ".\include\EntityDecl.h"\ ".\include\EntityManager.h"\ ".\include\ErrorCountEventHandler.h"\ ".\include\Event.h"\ ".\include\EventsWanted.h"\ ".\include\ExternalId.h"\ ".\include\Hash.h"\ ".\include\HashTable.cxx"\ ".\include\HashTable.h"\ ".\include\HashTableItemBase.cxx"\ ".\include\HashTableItemBase.h"\ ".\include\ISet.cxx"\ ".\include\ISet.h"\ ".\include\Link.h"\ ".\include\Location.h"\ ".\include\Lpd.h"\ ".\include\Markup.h"\ ".\include\Message.h"\ ".\include\MessageArg.h"\ ".\include\MessageBuilder.h"\ ".\include\MessageFormatter.h"\ ".\include\MessageTable.h"\ ".\include\Mode.h"\ ".\include\Named.h"\ ".\include\NamedResource.h"\ ".\include\NamedResourceTable.h"\ ".\include\NamedTable.h"\ ".\include\NCVector.h"\ ".\include\Notation.h"\ ".\include\OutputByteStream.h"\ ".\include\OutputCharStream.h"\ ".\include\Owner.cxx"\ ".\include\Owner.h"\ ".\include\OwnerTable.cxx"\ ".\include\OwnerTable.h"\ ".\include\ParserOptions.h"\ ".\include\PointerTable.cxx"\ ".\include\PointerTable.h"\ ".\include\Ptr.cxx"\ ".\include\Ptr.h"\ ".\include\RangeMap.cxx"\ ".\include\RangeMap.h"\ ".\include\Resource.h"\ ".\include\rtti.h"\ ".\include\Sd.h"\ ".\include\SdText.h"\ ".\include\SgmlParser.h"\ ".\include\ShortReferenceMap.h"\ ".\include\sptchar.h"\ ".\include\StringC.h"\ ".\include\StringOf.cxx"\ ".\include\StringOf.h"\ ".\include\StringResource.h"\ ".\include\SubstTable.cxx"\ ".\include\SubstTable.h"\ ".\include\Syntax.h"\ ".\include\Text.h"\ ".\include\TypeId.h"\ ".\include\UnivCharsetDesc.h"\ ".\include\Vector.cxx"\ ".\include\Vector.h"\ ".\include\WinApp.h"\ ".\include\XcharMap.cxx"\ ".\include\XcharMap.h"\ ".\include\xnew.h"\ ".\spgrove\GroveBuilder.h"\ !IF "$(CFG)" == "groveoa - Win32 Release" # ADD CPP /Yu"stdafx.h" "$(INTDIR)\CGroveBuilder.obj" : $(SOURCE) $(DEP_CPP_CGROV) "$(INTDIR)"\ "$(INTDIR)\groveoa.pch" ".\groveoa\groveoa.h" $(CPP) /nologo /MD /W3 /GX /O2 /I "include" /I "grove" /I "spgrove" /D\ "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_ATL_STATIC_REGISTRY" /D\ "_WINDLL" /D SP_NAMESPACE=James_Clark_SP /D "SP_MULTI_BYTE" /D\ GROVE_NAMESPACE=James_Clark_GROVE /Fp"$(INTDIR)/groveoa.pch" /Yu"stdafx.h"\ /Fo"$(INTDIR)/" /c $(SOURCE) !ELSEIF "$(CFG)" == "groveoa - Win32 Debug" # ADD CPP /Yu"stdafx.h" "$(INTDIR)\CGroveBuilder.obj" : $(SOURCE) $(DEP_CPP_CGROV) "$(INTDIR)"\ ".\groveoa\groveoa.h" "$(INTDIR)\groveoa.pch" $(CPP) /nologo /MDd /W3 /Gm /GX /Zi /Od /I "include" /I "grove" /I "spgrove"\ /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_ATL_STATIC_REGISTRY" /D\ "_WINDLL" /D SP_NAMESPACE=James_Clark_SP /D "SP_MULTI_BYTE" /D\ GROVE_NAMESPACE=James_Clark_GROVE /Fp"$(INTDIR)/groveoa.pch" /Yu"stdafx.h"\ /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c $(SOURCE) !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\groveoa\groveoa.def !IF "$(CFG)" == "groveoa - Win32 Release" !ELSEIF "$(CFG)" == "groveoa - Win32 Debug" !ENDIF # End Source File ################################################################################ # Begin Source File SOURCE=.\groveoa\groveoa.idl !IF "$(CFG)" == "groveoa - Win32 Release" # Begin Custom Build InputDir=".\groveoa" InputPath=.\groveoa\groveoa.idl BuildCmds= \ midl /Oicf /h $(InputDir)\groveoa.h /iid $(InputDir)\groveoa_i.c /proxy\ $(InputDir)\groveoa_p.c /tlb $(InputDir)\groveoa.tlb $(InputPath) \ "$(InputDir)\groveoa.tlb" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" $(BuildCmds) "$(InputDir)\groveoa.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" $(BuildCmds) "$(InputDir)\groveoa_i.c" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" $(BuildCmds) # End Custom Build !ELSEIF "$(CFG)" == "groveoa - Win32 Debug" # Begin Custom Build InputDir=".\groveoa" InputPath=.\groveoa\groveoa.idl BuildCmds= \ midl /Oicf /h $(InputDir)\groveoa.h /iid $(InputDir)\groveoa_i.c /proxy\ $(InputDir)\groveoa_p.c /tlb $(InputDir)\groveoa.tlb $(InputPath) \ "$(InputDir)\groveoa.tlb" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" $(BuildCmds) "$(InputDir)\groveoa.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" $(BuildCmds) "$(InputDir)\groveoa_i.c" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" $(BuildCmds) # End Custom Build !ENDIF # End Source File ################################################################################ # Begin Project Dependency # Project_Dep_Name "grove" !IF "$(CFG)" == "groveoa - Win32 Release" "grove - Win32 Release" : $(MAKE) /$(MAKEFLAGS) /F ".\jade.mak" CFG="grove - Win32 Release" !ELSEIF "$(CFG)" == "groveoa - Win32 Debug" "grove - Win32 Debug" : $(MAKE) /$(MAKEFLAGS) /F ".\jade.mak" CFG="grove - Win32 Debug" !ENDIF # End Project Dependency ################################################################################ # Begin Project Dependency # Project_Dep_Name "spgrove" !IF "$(CFG)" == "groveoa - Win32 Release" "spgrove - Win32 Release" : $(MAKE) /$(MAKEFLAGS) /F ".\jade.mak" CFG="spgrove - Win32 Release" !ELSEIF "$(CFG)" == "groveoa - Win32 Debug" "spgrove - Win32 Debug" : $(MAKE) /$(MAKEFLAGS) /F ".\jade.mak" CFG="spgrove - Win32 Debug" !ENDIF # End Project Dependency # End Target # End Project ################################################################################ openjade-1.3.2/japan.sgmldecl0100664000076400007640000002451606713045031014231 0ustar ianian openjade-1.3.2/msggen.pl0100664000076400007640000002074307554622153013251 0ustar ianian#! /usr/bin/perl # Copyright (c) 1994 James Clark, 2000 Matthias Clasen # Copyright (c) 2000 Peter Nilsson # See the file COPYING for copying permission. use POSIX; # Package and version. $package = 'openjade'; $version = '1.3.2'; $package = $package; $version = $version; # be quiet, -w $prog = $0; $prog =~ s@.*/@@; $gen_c = 0; undef $opt_l; undef $opt_p; undef $opt_t; do 'getopts.pl'; &Getopts('l:p:t:'); $module = $opt_l; $pot_file = $opt_p; if (defined($opt_t)) { # don't try to read translations for English $opt_t =~ /.*en.*/ || &read_po_translations($opt_t); } $num = 0; foreach $def_file (@ARGV) { @tag_used = (); open(DEF, $def_file) || die "can't open \`$def_file': $!\n"; while () { chop; if (/^!cxx$/) { $gen_c = 1; next; } if (/^=/) { if (!defined($opt_p)) { $n = substr($_, 1); &error("= directive must increase message num") if ($n < $num); $num = $n; } next; } if (/^-/) { # a deleted message $num++; next; } next if /^[ ]*#/; next if /^[ ]*$/; @field = split('\+', $_, 5); &error("too few fields") if $#field < 3; if ($#field == 4 && $field[4] =~ /^%J/) { $field[3] .= '+'; $field[3] .= substr($field[4], 2); $#field = 3; } if ($field[0] eq "") { $type[$num] = ""; $argc = 0; } else { $field[0] =~ /^[IWQXE][0-9]$/ || &error("invalid first field");; $type[$num] = substr($field[0], 0, 1); $argc = int(substr($field[0], 1, 1)); } $nargs[$num] = $argc; $field[1] =~ /^[a-zA-Z_][a-zA-Z0-9_]+$/ || &error("invalid tag"); $tag[$num] = $field[1]; &error("duplicate tag $field[1]") if (!defined($opt_p) && defined($tag_used{$field[1]})); $tag_used{$field[1]} = 1; $field[2] =~ /^((ISO(\/IEC)? [0-9]+:[0-9]+ )?(([A-Z]?[0-9]+(\.[0-9]+)*(p[0-9]+)?)|(\[[0-9]+(\.[0-9]*)?\]))( (ISO(\/IEC)? [0-9]+:[0-9]+ )?(([A-Z]?[0-9]+(\.[0-9]+)*(p[0-9]+)?)|(\[[0-9]+(\.[0-9]*)?\])))*)?$/ || &error("invalid clauses field"); # push @clauses, $field[2]; $clauses[$num] = $field[2]; if ($argc == 0) { if ($field[0] ne "") { $field[3] =~ /^([^%]|%%)*$/ || &error("invalid character after %"); } } else { $field[3] =~ /^([^%]|%[%1-$argc])*$/ || &error("invalid character after %"); } $auxloc[$num] = ($#field == 4 ? "L" : ""); $message[$num] = $field[3]; $num++; if ($#field == 4) { $message2[$num] = $field[4]; $num++; } } close(DEF); if (!defined($opt_p)) { $file_base = $ARGV[0]; $file_base =~ s/\.[^.]*$//; $class = $file_base; $class =~ s|.*[\\/]||; # this is needed on Windows NT chmod 0666, "$file_base.h"; unlink("$file_base.h"); open(OUT, ">$file_base.h"); chmod 0444, "$file_base.h"; select(OUT); print < #ifdef SP_NAMESPACE namespace SP_NAMESPACE { #endif struct $class { END foreach $i (0 .. $#message) { if (defined($message[$i])) { print " // $i\n"; print " static const Message"; if ($type[$i] eq "") { print "Fragment"; } else { print "Type$nargs[$i]$auxloc[$i]"; } print " $tag[$i];\n"; } } print "};\n"; print <$file_base.cxx"); chmod 0444, "$file_base.cxx"; select(OUT); print <$file_base.rc"); chmod 0444, "$file_base.rc"; select(OUT); print "STRINGTABLE\nBEGIN\n"; foreach $i (0 .. $#message) { if (defined($message[$i])) { $str = $message[$i]; if ($translation{$str}) { $str = $translation{$str}; } $str =~ s/"/""/g; printf " %d, \"%s\"\n", $i, $str; } elsif (defined($message2[$i])) { $str = $message2[$i]; $str =~ s/"/""/g; printf " %d, \"%s\"\n", $i, $str; } } print "END\n"; close(OUT); } # !opt_p } # foreach def_file if (defined($opt_p)) { # this is needed for GNU gettext chmod 0666, "$pot_file"; unlink("$pot_file"); open(OUT, ">$pot_file"); chmod 0444, "$pot_file"; select(OUT); $crdate = POSIX::strftime "%Y-%m-%d %H:%M+0000", gmtime; print <, YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\\n" "POT-Creation-Date: $crdate\\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\\n" "Last-Translator: FULL NAME \\n" "Language-Team: LANGUAGE \\n" "MIME-Version:: 1.0\\n" "Content-Type: text/plain; charset=CHARSET\\n" "Content-Transfer-Encoding: ENCODING\\n" END foreach $i (0 .. $#message) { if (defined($message[$i]) && !defined($written{$message[$i]})) { next if $message[$i] eq ""; $written{$message[$i]} = 1; $str = $message[$i]; $str =~ s/"/\\"/g; printf "msgid \"%s\"\nmsgstr \"\"\n\n", $str; } elsif (defined($message2[$i]) && ! defined($written{$message2[$i]})) { $written{$message2[$i]} = 1; $str = $message2[$i]; $str =~ s/"/\\"/g; printf "msgid \"%s\"\nmsgstr \"\"\n\n", $str; } } } close(OUT); sub error { die "$def_file:$.: $_[0]\n"; } # Read a PO file with message translations. # This doesn't accept every valid PO file, but it seems to work reasonably. sub read_po_translations { my $po_in = $_[0]; open(PO_IN, "<$po_in") || die "Can't open file $po_in."; my $id = ""; my $str = ""; my $catching_string = 0; while() { if (/^\s*msgid/) { if ($catching_string) { &po_flush($id, $str); $id = ""; $str = ""; } $_ = $'; $catching_string = 1; } elsif (/^\s*msgstr/) { die "No msgid." if !$catching_string or $id; $id = $str; $str = ""; $_ = $'; } if ($catching_string) { my $in_string = 0; s/\s*//; while ($_) { if (s/^\"//) { $in_string = !$in_string; } if ($in_string) { if (s/^[^\"\\]+//) { $str .= $&; } elsif (s/^\\([ntbrf\\\"])//) { $str .= "\n" if $1 eq "n"; $str .= "\t" if $1 eq "t"; $str .= "\b" if $1 eq "b"; $str .= "\r" if $1 eq "r"; $str .= "\f" if $1 eq "f"; $str .= "\\" if $1 eq "\\"; $str .= "\"" if $1 eq "\""; } elsif (s/\\([0-9]+)//) { $str .= chr(oct($1)); } elsif (s/\\[xX]([0-9a-fA-F]+)//) { $str .= chr(hex($1)); } else { die "Invalid control sequence." if /^\\/; } } else { s/\s*//; last if /^[^"]/; } } } } if ($catching_string) { &po_flush($id, $str); } } sub po_flush { my $id = $_[0]; my $str = $_[1]; # We use a translation only if $id is non-empty (we don't include the # PO file header) and if $str is non-empty (the message is translated). if ($id && $str) { $translation{$id} = $str; } $id = ""; $str = ""; } openjade-1.3.2/sp-generate.mak0100664000076400007640000000256406746135304014340 0ustar ianian# This is a Makefile for nmake that makes all the .cxx and .h files that # are automatically generated. It's too painful to do in the IDE. # You'll need perl in your PATH to use this. M4=m4 PERL=perl GENSRCS=lib\entmgr_inst.cxx \ lib\xentmgr_inst.cxx \ lib\parser_inst.cxx \ lib\app_inst.cxx \ lib\arc_inst.cxx \ lib\ArcEngineMessages.h \ lib\EntityManagerMessages.h \ lib\CatalogMessages.h \ lib\MessageFormatterMessages.h \ lib\MessageReporterMessages.h \ lib\PosixStorageMessages.h \ lib\URLStorageMessages.h \ lib\WinInetStorageMessages.h \ lib\StdioStorageMessages.h \ lib\ParserMessages.h \ lib\ParserAppMessages.h \ lib\CmdLineAppMessages.h \ lib\version.h \ nsgmls\nsgmls_inst.cxx \ nsgmls\RastEventHandlerMessages.h \ nsgmls\NsgmlsMessages.h \ spam\SpamMessages.h \ spam\spam_inst.cxx \ sx\SxMessages.h \ sx\XmlOutputMessages.h \ sx\sx_inst.cxx .SUFFIXES: .m4 .msg all: $(GENSRCS) .m4.cxx: del /f $@ 2> nul $(PERL) lib\instmac.pl $< >$@ attrib +r $@ {lib}.msg{lib}.h: del /f $@ 2> nul $(PERL) -w msggen.pl -l $< attrib +r $@ {nsgmls}.msg{nsgmls}.h: del /f $@ 2> nul $(PERL) -w msggen.pl $< attrib +r $@ {spam}.msg{spam}.h: del /f $@ 2> nul $(PERL) -w msggen.pl $< attrib +r $@ {sx}.msg{sx}.h: del /f $@ 2> nul $(PERL) -w msggen.pl $< attrib +r $@ lib\version.h: lib\mkversion.pl VERSION del /f $@ 2> nul $(PERL) -w lib\mkversion.pl VERSION >$@ attrib +r $@ openjade-1.3.2/sunfix.sh0100664000076400007640000000037006713045031013264 0ustar ianian#!/bin/sh # Sun C++ 4.0.1 gets confused by the macros in include/NCVector.h. cd include mv NCVector.h NCVector.h.dist sed -f NCVector.sed Vector.h >NCVector.h chmod -w NCVector.h sed -f NCVector.sed Vector.cxx >NCVector.cxx chmod -w NCVector.cxx openjade-1.3.2/config/0040775000076400007640000000000007572433147012701 5ustar ianianopenjade-1.3.2/config/aclocal.m40100664000076400007640000034302707422126423014535 0ustar ianiandnl aclocal.m4 generated automatically by aclocal 1.4-p5 dnl Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl This program is distributed in the hope that it will be useful, dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A dnl PARTICULAR PURPOSE. dnl aclocal.m4 generated automatically by aclocal 1.4-p5 dnl Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl This program is distributed in the hope that it will be useful, dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A dnl PARTICULAR PURPOSE. # libtool.m4 - Configure libtool for the host system. -*-Shell-script-*- # serial 46 AC_PROG_LIBTOOL AC_DEFUN([AC_PROG_LIBTOOL], [AC_REQUIRE([AC_LIBTOOL_SETUP])dnl # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' AC_SUBST(LIBTOOL)dnl # Prevent multiple expansion define([AC_PROG_LIBTOOL], []) ]) AC_DEFUN([AC_LIBTOOL_SETUP], [AC_PREREQ(2.13)dnl AC_REQUIRE([AC_ENABLE_SHARED])dnl AC_REQUIRE([AC_ENABLE_STATIC])dnl AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_PROG_LD])dnl AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl AC_REQUIRE([AC_PROG_NM])dnl AC_REQUIRE([AC_PROG_LN_S])dnl AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl AC_REQUIRE([AC_OBJEXT])dnl AC_REQUIRE([AC_EXEEXT])dnl dnl _LT_AC_PROG_ECHO_BACKSLASH # Only perform the check for file, if the check method requires it case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then AC_PATH_MAGIC fi ;; esac AC_CHECK_TOOL(RANLIB, ranlib, :) AC_CHECK_TOOL(STRIP, strip, :) ifdef([AC_PROVIDE_AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no) ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL], enable_win32_dll=yes, enable_win32_dll=no) AC_ARG_ENABLE(libtool-lock, [ --disable-libtool-lock avoid locking (might break parallel builds)]) test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in *-*-irix6*) # Find out which ABI we are using. echo '[#]line __oline__ "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_LANG_SAVE AC_LANG_C AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) AC_LANG_RESTORE]) if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL], [*-*-cygwin* | *-*-mingw* | *-*-pw32*) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) # recent cygwin and mingw systems supply a stub DllMain which the user # can override, but on older systems we have to supply one AC_CACHE_CHECK([if libtool should supply DllMain function], lt_cv_need_dllmain, [AC_TRY_LINK([], [extern int __attribute__((__stdcall__)) DllMain(void*, int, void*); DllMain (0, 0, 0);], [lt_cv_need_dllmain=no],[lt_cv_need_dllmain=yes])]) case $host/$CC in *-*-cygwin*/gcc*-mno-cygwin*|*-*-mingw*) # old mingw systems require "-dll" to link a DLL, while more recent ones # require "-mdll" SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -mdll" AC_CACHE_CHECK([how to link DLLs], lt_cv_cc_dll_switch, [AC_TRY_LINK([], [], [lt_cv_cc_dll_switch=-mdll],[lt_cv_cc_dll_switch=-dll])]) CFLAGS="$SAVE_CFLAGS" ;; *-*-cygwin* | *-*-pw32*) # cygwin systems need to pass --dll to the linker, and not link # crt.o which will require a WinMain@16 definition. lt_cv_cc_dll_switch="-Wl,--dll -nostartfiles" ;; esac ;; ]) esac _LT_AC_LTCONFIG_HACK ]) # _LT_AC_CHECK_DLFCN # -------------------- AC_DEFUN(_LT_AC_CHECK_DLFCN, [AC_CHECK_HEADERS(dlfcn.h) ])# _LT_AC_CHECK_DLFCN # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE # --------------------------------- AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([AC_PROG_NM]) AC_REQUIRE([AC_OBJEXT]) # Check for command to grab the raw symbol name followed by C symbol from nm. AC_MSG_CHECKING([command to parse $NM output]) AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [dnl # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. [symcode='[BCDEGRST]'] # Regexp to match symbols that can be accessed directly from C. [sympat='\([_A-Za-z][_A-Za-z0-9]*\)'] # Transform the above into a raw symbol and a C symbol. symxfrm='\1 \2\3 \3' # Transform an extracted symbol line into a proper C declaration lt_cv_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'" # Define system-specific variables. case $host_os in aix*) [symcode='[BCDT]'] ;; cygwin* | mingw* | pw32*) [symcode='[ABCDGISTW]'] ;; hpux*) # Its linker distinguishes data from code symbols lt_cv_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" ;; irix*) [symcode='[BCDEGRST]'] ;; solaris* | sysv5*) [symcode='[BDT]'] ;; sysv4) [symcode='[DFNSTU]'] ;; esac # Handle CRLF in mingw tool chain opt_cr= case $host_os in mingw*) opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # If we're using GNU nm, then use its standard symbol codes. if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then [symcode='[ABCDGISTW]'] fi # Try without a prefix undercore, then with it. for ac_symprfx in "" "_"; do # Write the raw and C identifiers. [lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'"] # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext < $nlist) && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if egrep ' nm_test_var$' "$nlist" >/dev/null; then if egrep ' nm_test_func$' "$nlist" >/dev/null; then cat < conftest.$ac_ext #ifdef __cplusplus extern "C" { #endif EOF # Now generate the symbol file. eval "$lt_cv_global_symbol_to_cdecl"' < "$nlist" >> conftest.$ac_ext' cat <> conftest.$ac_ext #if defined (__STDC__) && __STDC__ # define lt_ptr_t void * #else # define lt_ptr_t char * # define const #endif /* The mapping between symbol names and symbols. */ const struct { const char *name; lt_ptr_t address; } [lt_preloaded_symbols[] =] { EOF sed "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" >> conftest.$ac_ext cat <<\EOF >> conftest.$ac_ext {0, (lt_ptr_t) 0} }; #ifdef __cplusplus } #endif EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext save_LIBS="$LIBS" save_CFLAGS="$CFLAGS" LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$no_builtin_flag" if AC_TRY_EVAL(ac_link) && test -s conftest; then pipe_works=yes fi LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" else echo "cannot find nm_test_func in $nlist" >&AC_FD_CC fi else echo "cannot find nm_test_var in $nlist" >&AC_FD_CC fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AC_FD_CC fi else echo "$progname: failed program was:" >&AC_FD_CC cat conftest.$ac_ext >&5 fi rm -f conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done ]) global_symbol_pipe="$lt_cv_sys_global_symbol_pipe" if test -z "$lt_cv_sys_global_symbol_pipe"; then global_symbol_to_cdecl= else global_symbol_to_cdecl="$lt_cv_global_symbol_to_cdecl" fi if test -z "$global_symbol_pipe$global_symbol_to_cdecl"; then AC_MSG_RESULT(failed) else AC_MSG_RESULT(ok) fi ]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE # _LT_AC_LIBTOOL_SYS_PATH_SEPARATOR # --------------------------------- AC_DEFUN([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR], [# Find the correct PATH separator. Usually this is `:', but # DJGPP uses `;' like DOS. if test "X${PATH_SEPARATOR+set}" != Xset; then UNAME=${UNAME-`uname 2>/dev/null`} case X$UNAME in *-DOS) lt_cv_sys_path_separator=';' ;; *) lt_cv_sys_path_separator=':' ;; esac fi ])# _LT_AC_LIBTOOL_SYS_PATH_SEPARATOR # _LT_AC_PROG_ECHO_BACKSLASH # -------------------------- # Add some code to the start of the generated configure script which # will find an echo command which doesn;t interpret backslashes. AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH], [ifdef([AC_DIVERSION_NOTICE], [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], [AC_DIVERT_PUSH(NOTICE)]) _LT_AC_LIBTOOL_SYS_PATH_SEPARATOR # Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} case X$ECHO in X*--fallback-echo) # Remove one level of quotation (which was required for Make). ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` ;; esac echo=${ECHO-echo} if test "X[$]1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X[$]1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then # Yippee, $echo works! : else # Restart under the correct shell. exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} fi if test "X[$]1" = X--fallback-echo; then # used as fallback echo shift cat </dev/null && echo_test_string="`eval $cmd`" && (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null then break fi done fi if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then : else # The Solaris, AIX, and Digital Unix default echo programs unquote # backslashes. This makes it impossible to quote backslashes using # echo "$something" | sed 's/\\/\\\\/g' # # So, first we look for a working echo in the user's PATH. IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" for dir in $PATH /usr/ucb; do if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$dir/echo" break fi done IFS="$save_ifs" if test "X$echo" = Xecho; then # We didn't find a better echo, so look for alternatives. if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # This shell has a builtin print -r that does the trick. echo='print -r' elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && test "X$CONFIG_SHELL" != X/bin/ksh; then # If we have ksh, try running configure again with it. ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} export ORIGINAL_CONFIG_SHELL CONFIG_SHELL=/bin/ksh export CONFIG_SHELL exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} else # Try using printf. echo='printf %s\n' if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # Cool, printf works : elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL export CONFIG_SHELL SHELL="$CONFIG_SHELL" export SHELL echo="$CONFIG_SHELL [$]0 --fallback-echo" elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then echo="$CONFIG_SHELL [$]0 --fallback-echo" else # maybe with a smaller string... prev=: for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null then break fi prev="$cmd" done if test "$prev" != 'sed 50q "[$]0"'; then echo_test_string=`eval $prev` export echo_test_string exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} else # Oops. We lost completely, so just stick with echo. echo=echo fi fi fi fi fi fi # Copy echo and quote the copy suitably for passing to libtool from # the Makefile, instead of quoting the original, which is used later. ECHO=$echo if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" fi AC_SUBST(ECHO) AC_DIVERT_POP ])# _LT_AC_PROG_ECHO_BACKSLASH # _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, # ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) # ------------------------------------------------------------------ AC_DEFUN(_LT_AC_TRY_DLOPEN_SELF, [if test "$cross_compiling" = yes; then : [$4] else AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif #ifdef __cplusplus extern "C" void exit (int); #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } exit (status); }] EOF if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) $1 ;; x$lt_dlneed_uscore) $2 ;; x$lt_unknown|x*) $3 ;; esac else : # compilation failed $3 fi fi rm -fr conftest* ])# _LT_AC_TRY_DLOPEN_SELF # AC_LIBTOOL_DLOPEN_SELF # ------------------- AC_DEFUN(AC_LIBTOOL_DLOPEN_SELF, [if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; cygwin* | mingw* | pw32*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; *) AC_CHECK_LIB(dl, dlopen, [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_FUNC(dlopen, lt_cv_dlopen="dlopen", [AC_CHECK_FUNC(shl_load, lt_cv_dlopen="shl_load", [AC_CHECK_LIB(svld, dlopen, [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB(dld, shl_load, [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) ]) ]) ]) ]) ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" AC_CACHE_CHECK([whether a program can dlopen itself], lt_cv_dlopen_self, [dnl _LT_AC_TRY_DLOPEN_SELF( lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ]) if test "x$lt_cv_dlopen_self" = xyes; then LDFLAGS="$LDFLAGS $link_static_flag" AC_CACHE_CHECK([whether a statically linked program can dlopen itself], lt_cv_dlopen_self_static, [dnl _LT_AC_TRY_DLOPEN_SELF( lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) ]) fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi ])# AC_LIBTOOL_DLOPEN_SELF AC_DEFUN([_LT_AC_LTCONFIG_HACK], [AC_REQUIRE([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])dnl # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='sed -e s/^X//' [sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'] # Same as above, but do not quote variable references. [double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'] # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Constants: rm="rm -f" # Global variables: default_ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except M$VC, # which needs '.lib'). libext=a ltmain="$ac_aux_dir/ltmain.sh" ofile="$default_ofile" with_gnu_ld="$lt_cv_prog_gnu_ld" need_locks="$enable_libtool_lock" old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$AR" && AR=ar test -z "$AR_FLAGS" && AR_FLAGS=cru test -z "$AS" && AS=as test -z "$CC" && CC=cc test -z "$DLLTOOL" && DLLTOOL=dlltool test -z "$LD" && LD=ld test -z "$LN_S" && LN_S="ln -s" test -z "$MAGIC_CMD" && MAGIC_CMD=file test -z "$NM" && NM=nm test -z "$OBJDUMP" && OBJDUMP=objdump test -z "$RANLIB" && RANLIB=: test -z "$STRIP" && STRIP=: test -z "$ac_objext" && ac_objext=o if test x"$host" != x"$build"; then ac_tool_prefix=${host_alias}- else ac_tool_prefix= fi # Transform linux* to *-*-linux-gnu*, to support old configure scripts. case $host_os in linux-gnu*) ;; linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` esac case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" fi # Allow CC to be a program name with arguments. set dummy $CC compiler="[$]2" AC_MSG_CHECKING([for objdir]) rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. objdir=_libs fi rmdir .libs 2>/dev/null AC_MSG_RESULT($objdir) AC_ARG_WITH(pic, [ --with-pic try to use only PIC/non-PIC objects [default=use both]], pic_mode="$withval", pic_mode=default) test -z "$pic_mode" && pic_mode=default # We assume here that the value for lt_cv_prog_cc_pic will not be cached # in isolation, and that seeing it set (from the cache) indicates that # the associated values are set (in the cache) correctly too. AC_MSG_CHECKING([for $compiler option to produce PIC]) AC_CACHE_VAL(lt_cv_prog_cc_pic, [ lt_cv_prog_cc_pic= lt_cv_prog_cc_shlib= lt_cv_prog_cc_wl= lt_cv_prog_cc_static= lt_cv_prog_cc_no_builtin= lt_cv_prog_cc_can_build_shared=$can_build_shared if test "$GCC" = yes; then lt_cv_prog_cc_wl='-Wl,' lt_cv_prog_cc_static='-static' case $host_os in aix*) # Below there is a dirty hack to force normal static linking with -ldl # The problem is because libdl dynamically linked with both libc and # libC (AIX C++ library), which obviously doesn't included in libraries # list by gcc. This cause undefined symbols with -static flags. # This hack allows C programs to be linked with "-static -ldl", but # we not sure about C++ programs. lt_cv_prog_cc_static="$lt_cv_prog_cc_static ${lt_cv_prog_cc_wl}-lC" ;; amigaos*) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_cv_prog_cc_pic='-m68020 -resident32 -malways-restore-a4' ;; beos* | irix5* | irix6* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_cv_prog_cc_pic='-fno-common' ;; cygwin* | mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_cv_prog_cc_pic='-DDLL_EXPORT' ;; sysv4*MP*) if test -d /usr/nec; then lt_cv_prog_cc_pic=-Kconform_pic fi ;; *) lt_cv_prog_cc_pic='-fPIC' ;; esac else # PORTME Check for PIC flags for the system compiler. case $host_os in aix3* | aix4* | aix5*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_cv_prog_cc_static='-Bstatic' lt_cv_prog_cc_wl='-Wl,' else lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp' fi ;; hpux9* | hpux10* | hpux11*) # Is there a better lt_cv_prog_cc_static that works with the bundled CC? lt_cv_prog_cc_wl='-Wl,' lt_cv_prog_cc_static="${lt_cv_prog_cc_wl}-a ${lt_cv_prog_cc_wl}archive" lt_cv_prog_cc_pic='+Z' ;; irix5* | irix6*) lt_cv_prog_cc_wl='-Wl,' lt_cv_prog_cc_static='-non_shared' # PIC (with -KPIC) is the default. ;; cygwin* | mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_cv_prog_cc_pic='-DDLL_EXPORT' ;; newsos6) lt_cv_prog_cc_pic='-KPIC' lt_cv_prog_cc_static='-Bstatic' ;; osf3* | osf4* | osf5*) # All OSF/1 code is PIC. lt_cv_prog_cc_wl='-Wl,' lt_cv_prog_cc_static='-non_shared' ;; sco3.2v5*) lt_cv_prog_cc_pic='-Kpic' lt_cv_prog_cc_static='-dn' lt_cv_prog_cc_shlib='-belf' ;; solaris*) lt_cv_prog_cc_pic='-KPIC' lt_cv_prog_cc_static='-Bstatic' lt_cv_prog_cc_wl='-Wl,' ;; sunos4*) lt_cv_prog_cc_pic='-PIC' lt_cv_prog_cc_static='-Bstatic' lt_cv_prog_cc_wl='-Qoption ld ' ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) lt_cv_prog_cc_pic='-KPIC' lt_cv_prog_cc_static='-Bstatic' if test "x$host_vendor" = xsni; then lt_cv_prog_cc_wl='-LD' else lt_cv_prog_cc_wl='-Wl,' fi ;; uts4*) lt_cv_prog_cc_pic='-pic' lt_cv_prog_cc_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_cv_prog_cc_pic='-Kconform_pic' lt_cv_prog_cc_static='-Bstatic' fi ;; *) lt_cv_prog_cc_can_build_shared=no ;; esac fi ]) if test -z "$lt_cv_prog_cc_pic"; then AC_MSG_RESULT([none]) else AC_MSG_RESULT([$lt_cv_prog_cc_pic]) # Check to make sure the pic_flag actually works. AC_MSG_CHECKING([if $compiler PIC flag $lt_cv_prog_cc_pic works]) AC_CACHE_VAL(lt_cv_prog_cc_pic_works, [dnl save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC" AC_TRY_COMPILE([], [], [dnl case $host_os in hpux9* | hpux10* | hpux11*) # On HP-UX, both CC and GCC only warn that PIC is supported... then # they create non-PIC objects. So, if there were any warnings, we # assume that PIC is not supported. if test -s conftest.err; then lt_cv_prog_cc_pic_works=no else lt_cv_prog_cc_pic_works=yes fi ;; *) lt_cv_prog_cc_pic_works=yes ;; esac ], [dnl lt_cv_prog_cc_pic_works=no ]) CFLAGS="$save_CFLAGS" ]) if test "X$lt_cv_prog_cc_pic_works" = Xno; then lt_cv_prog_cc_pic= lt_cv_prog_cc_can_build_shared=no else lt_cv_prog_cc_pic=" $lt_cv_prog_cc_pic" fi AC_MSG_RESULT([$lt_cv_prog_cc_pic_works]) fi # Check for any special shared library compilation flags. if test -n "$lt_cv_prog_cc_shlib"; then AC_MSG_WARN([\`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries]) if echo "$old_CC $old_CFLAGS " | [egrep -e "[ ]$lt_cv_prog_cc_shlib[ ]"] >/dev/null; then : else AC_MSG_WARN([add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure]) lt_cv_prog_cc_can_build_shared=no fi fi AC_MSG_CHECKING([if $compiler static flag $lt_cv_prog_cc_static works]) AC_CACHE_VAL([lt_cv_prog_cc_static_works], [dnl lt_cv_prog_cc_static_works=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static" AC_TRY_LINK([], [], [lt_cv_prog_cc_static_works=yes]) LDFLAGS="$save_LDFLAGS" ]) # Belt *and* braces to stop my trousers falling down: test "X$lt_cv_prog_cc_static_works" = Xno && lt_cv_prog_cc_static= AC_MSG_RESULT([$lt_cv_prog_cc_static_works]) pic_flag="$lt_cv_prog_cc_pic" special_shlib_compile_flags="$lt_cv_prog_cc_shlib" wl="$lt_cv_prog_cc_wl" link_static_flag="$lt_cv_prog_cc_static" no_builtin_flag="$lt_cv_prog_cc_no_builtin" can_build_shared="$lt_cv_prog_cc_can_build_shared" # Check to see if options -o and -c are simultaneously supported by compiler AC_MSG_CHECKING([if $compiler supports -c -o file.$ac_objext]) AC_CACHE_VAL([lt_cv_compiler_c_o], [ $rm -r conftest 2>/dev/null mkdir conftest cd conftest echo "int some_variable = 0;" > conftest.$ac_ext mkdir out # According to Tom Tromey, Ian Lance Taylor reported there are C compilers # that will create temporary files in the current directory regardless of # the output directory. Thus, making CWD read-only will cause this test # to fail, enabling locking or at least warning the user not to do parallel # builds. chmod -w . save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -o out/conftest2.$ac_objext" compiler_c_o=no if { (eval echo configure:__oline__: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test -s out/conftest.err; then lt_cv_compiler_c_o=no else lt_cv_compiler_c_o=yes fi else # Append any errors to the config.log. cat out/conftest.err 1>&AC_FD_CC lt_cv_compiler_c_o=no fi CFLAGS="$save_CFLAGS" chmod u+w . $rm conftest* out/* rmdir out cd .. rmdir conftest $rm -r conftest 2>/dev/null ]) compiler_c_o=$lt_cv_compiler_c_o AC_MSG_RESULT([$compiler_c_o]) if test x"$compiler_c_o" = x"yes"; then # Check to see if we can write to a .lo AC_MSG_CHECKING([if $compiler supports -c -o file.lo]) AC_CACHE_VAL([lt_cv_compiler_o_lo], [ lt_cv_compiler_o_lo=no save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -c -o conftest.lo" AC_TRY_COMPILE([], [int some_variable = 0;], [dnl # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then lt_cv_compiler_o_lo=no else lt_cv_compiler_o_lo=yes fi ]) CFLAGS="$save_CFLAGS" ]) compiler_o_lo=$lt_cv_compiler_o_lo AC_MSG_RESULT([$compiler_o_lo]) else compiler_o_lo=no fi # Check to see if we can do hard links to lock some files if needed hard_links="nottested" if test "$compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user AC_MSG_CHECKING([if we can lock with hard links]) hard_links=yes $rm conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no AC_MSG_RESULT([$hard_links]) if test "$hard_links" = no; then AC_MSG_WARN([\`$CC' does not support \`-c -o', so \`make -j' may be unsafe]) need_locks=warn fi else need_locks=no fi if test "$GCC" = yes; then # Check to see if options -fno-rtti -fno-exceptions are supported by compiler AC_MSG_CHECKING([if $compiler supports -fno-rtti -fno-exceptions]) echo "int some_variable = 0;" > conftest.$ac_ext save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext" compiler_rtti_exceptions=no AC_TRY_COMPILE([], [int some_variable = 0;], [dnl # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then compiler_rtti_exceptions=no else compiler_rtti_exceptions=yes fi ]) CFLAGS="$save_CFLAGS" AC_MSG_RESULT([$compiler_rtti_exceptions]) if test "$compiler_rtti_exceptions" = "yes"; then no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions' else no_builtin_flag=' -fno-builtin' fi fi # See if the linker supports building shared libraries. AC_MSG_CHECKING([whether the linker ($LD) supports shared libraries]) allow_undefined_flag= no_undefined_flag= need_lib_prefix=unknown need_version=unknown # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments archive_cmds= archive_expsym_cmds= old_archive_from_new_cmds= old_archive_from_expsyms_cmds= export_dynamic_flag_spec= whole_archive_flag_spec= thread_safe_flag_spec= hardcode_into_libs=no hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_direct=no hardcode_minus_L=no hardcode_shlibpath_var=unsupported runpath_var= link_all_deplibs=unknown always_export_symbols=no export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols' # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an egrep regular expression of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms="_GLOBAL_OFFSET_TABLE_" # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* ) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; esac ld_shlibs=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # See if GNU ld supports shared libraries. case $host_os in aix3* | aix4* | aix5*) # On AIX, the GNU linker is very broken # Note:Check GNU linker on AIX 5-IA64 when/if it becomes available. ld_shlibs=no cat <&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. EOF ;; amigaos*) archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can use # them. ld_shlibs=no ;; beos*) if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32*) # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' allow_undefined_flag=unsupported always_export_symbols=yes extract_expsyms_cmds='test -f $output_objdir/impgen.c || \ sed -e "/^# \/\* impgen\.c starts here \*\//,/^# \/\* impgen.c ends here \*\// { s/^# //;s/^# *$//; p; }" -e d < $''0 > $output_objdir/impgen.c~ test -f $output_objdir/impgen.exe || (cd $output_objdir && \ if test "x$HOST_CC" != "x" ; then $HOST_CC -o impgen impgen.c ; \ else $CC -o impgen impgen.c ; fi)~ $output_objdir/impgen $dir/$soroot > $output_objdir/$soname-def' old_archive_from_expsyms_cmds='$DLLTOOL --as=$AS --dllname $soname --def $output_objdir/$soname-def --output-lib $output_objdir/$newlib' # cygwin and mingw dlls have different entry points and sets of symbols # to exclude. # FIXME: what about values for MSVC? dll_entry=__cygwin_dll_entry@12 dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12~ case $host_os in mingw*) # mingw values dll_entry=_DllMainCRTStartup@12 dll_exclude_symbols=DllMain@12,DllMainCRTStartup@12,DllEntryPoint@12~ ;; esac # mingw and cygwin differ, and it's simplest to just exclude the union # of the two symbol sets. dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12,DllMainCRTStartup@12,DllEntryPoint@12 # recent cygwin and mingw systems supply a stub DllMain which the user # can override, but on older systems we have to supply one (in ltdll.c) if test "x$lt_cv_need_dllmain" = "xyes"; then ltdll_obj='$output_objdir/$soname-ltdll.'"$ac_objext " ltdll_cmds='test -f $output_objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < [$]0 > $output_objdir/$soname-ltdll.c~ test -f $output_objdir/$soname-ltdll.$ac_objext || (cd $output_objdir && $CC -c $soname-ltdll.c)~' else ltdll_obj= ltdll_cmds= fi # Extract the symbol export list from an `--export-all' def file, # then regenerate the def file from the symbol export list, so that # the compiled dll only exports the symbol export list. # Be careful not to strip the DATA tag left be newer dlltools. export_symbols_cmds="$ltdll_cmds"' $DLLTOOL --export-all --exclude-symbols '$dll_exclude_symbols' --output-def $output_objdir/$soname-def '$ltdll_obj'$libobjs $convenience~ [sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]*//" -e "s/ *;.*$//"] < $output_objdir/$soname-def > $export_symbols' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is. # If DATA tags from a recent dlltool are present, honour them! archive_expsym_cmds='if test "x`head -1 $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname-def; else echo EXPORTS > $output_objdir/$soname-def; _lt_hint=1; cat $export_symbols | while read symbol; do set dummy \$symbol; case \[$]# in 2) echo " \[$]2 @ \$_lt_hint ; " >> $output_objdir/$soname-def;; *) echo " \[$]2 @ \$_lt_hint \[$]3 ; " >> $output_objdir/$soname-def;; esac; _lt_hint=`expr 1 + \$_lt_hint`; done; fi~ '"$ltdll_cmds"' $CC -Wl,--base-file,$output_objdir/$soname-base '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp~ $CC -Wl,--base-file,$output_objdir/$soname-base $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp --output-lib $output_objdir/$libname.dll.a~ $CC $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags' ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris* | sysv5*) if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. EOF elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = yes; then runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec='${wl}--export-dynamic' case $host_os in cygwin* | mingw* | pw32*) # dlltool doesn't understand --whole-archive et. al. whole_archive_flag_spec= ;; *) # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec= fi ;; esac fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes && test -z "$link_static_flag"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix4* | aix5*) # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds='' hardcode_libdir_separator=':' if test "$GCC" = yes; then collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 hardcode_direct=yes else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi shared_flag='-shared' else if test "$host_cpu" = ia64; then shared_flag='-G' else shared_flag='${wl}-bM:SRE' fi hardcode_direct=yes fi if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # Test if we are trying to use run time linking, or normal AIX style linking. # If -brtl is somewhere in LDFLAGS, we need to do run time linking. aix_use_runtimelinking=no for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl" ); then aix_use_runtimelinking=yes break fi done exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # It seems that -bexpall can do strange things, so it is better to # generate a list of symbols to export. always_export_symbols=yes if test "$aix_use_runtimelinking" = yes; then hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib' allow_undefined_flag=' -Wl,-G' archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag="-znodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname ${wl}-h$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" else hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib' # Warning - without using the other run time loading flags, -berok will # link without error, but may produce a broken library. allow_undefined_flag='${wl}-berok' # This is a bit strange, but is similar to how AIX traditionally builds # it's shared libraries. archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"' ~$AR -crlo $objdir/$libname$release.a $objdir/$soname' fi fi ;; amigaos*) archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # see comment about different semantics on the GNU ld section ld_shlibs=no ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs' fix_srcfile_path='`cygpath -w "$srcfile"`' ;; darwin* | rhapsody*) allow_undefined_flag='-undefined suppress' # FIXME: Relying on posixy $() will cause problems for # cross-compilation, but unfortunately the echo tests do not # yet detect zsh echo's removal of \ escapes. archive_cmds='$CC $(test .$module = .yes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib $libobjs $deplibs$linkopts -install_name $rpath/$soname $(test -n "$verstring" -a x$verstring != x0.0 && echo $verstring)' # We need to add '_' to the symbols in $export_symbols first #archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols' hardcode_direct=yes hardcode_shlibpath_var=no whole_archive_flag_spec='-all_load $convenience' ;; freebsd1*) ld_shlibs=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd*) archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9* | hpux10* | hpux11*) case $host_os in hpux9*) archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ;; *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;; esac hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_minus_L=yes # Not in the search PATH, but as the default # location of the library. export_dynamic_flag_spec='${wl}-E' ;; irix5* | irix6*) if test "$GCC" = yes; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: link_all_deplibs=yes ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; openbsd*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' fi hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "-exported_symbol " >> $lib.exp; echo "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' #Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi hardcode_libdir_separator=: ;; sco3.2v5*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ;; solaris*) no_undefined_flag=' -z defs' # $CC -shared without GNU ld will not create a library from C++ # object files and a static libstdc++, better avoid it by now archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in [solaris2.[0-5] | solaris2.[0-5].*]) ;; *) # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; esac link_all_deplibs=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) if test "x$host_vendor" = xsno; then archive_cmds='$LD -G -Bsymbolic -h $soname -o $lib $libobjs $deplibs $linkopts' hardcode_direct=yes # is this really true??? else archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie fi runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv5*) no_undefined_flag=' -z text' # $CC -shared without GNU ld will not create a library from C++ # object files and a static libstdc++, better avoid it by now archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' hardcode_libdir_flag_spec= hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4.2uw2*) archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=no hardcode_shlibpath_var=no hardcode_runpath_var=yes runpath_var=LD_RUN_PATH ;; sysv5uw7* | unixware7*) no_undefined_flag='${wl}-z ${wl}text' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' fi runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac fi AC_MSG_RESULT([$ld_shlibs]) test "$ld_shlibs" = no && can_build_shared=no # Check hardcoding attributes. AC_MSG_CHECKING([how to hardcode library paths into programs]) hardcode_action= if test -n "$hardcode_libdir_flag_spec" || \ test -n "$runpath_var"; then # We can hardcode non-existant directories. if test "$hardcode_direct" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$hardcode_shlibpath_var" != no && test "$hardcode_minus_L" != no; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi AC_MSG_RESULT([$hardcode_action]) striplib= old_striplib= AC_MSG_CHECKING([whether stripping libraries is possible]) if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi reload_cmds='$LD$reload_flag -o $output$reload_objs' test -z "$deplibs_check_method" && deplibs_check_method=unknown # PORTME Fill in your ld.so characteristics AC_MSG_CHECKING([dynamic linker characteristics]) library_names_spec= libname_spec='lib$name' soname_spec= postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}.so$versuffix $libname.a' shlibpath_var=LIBPATH # AIX has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}.so$major' ;; aix4* | aix5*) version_type=linux if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}.so$major ${libname}${release}.so$versuffix $libname.so' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in [ aix4 | aix4.[01] | aix4.[01].*)] if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so instead of # lib.a to let people know that these are not typical AIX shared libraries. library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}.so$major' fi shlibpath_var=LIBPATH deplibs_check_method=pass_all fi ;; amigaos*) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | [$Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\'']`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done' ;; beos*) library_names_spec='${libname}.so' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi4*) version_type=linux need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" export_dynamic_flag_spec=-rdynamic # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32*) version_type=windows need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin*) library_names_spec='$libname.dll.a' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | [sed -e 's/[.]/-/g']`${versuffix}.dll' postinstall_cmds='dlpath=`bash 2>&1 -c '\''. $dir/${file}i;echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog .libs/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`bash 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $rm \$dlpath' ;; yes,mingw*) library_names_spec='${libname}`echo ${release} | [sed -e 's/[.]/-/g']`${versuffix}.dll' sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g"` ;; yes,pw32*) library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll' ;; *) library_names_spec='${libname}`echo ${release} | [sed -e 's/[.]/-/g']`${versuffix}.dll $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no # FIXME: Relying on posixy $() will cause problems for # cross-compilation, but unfortunately the echo tests do not # yet detect zsh echo's removal of \ escapes. library_names_spec='${libname}${release}${versuffix}.$(test .$module = .yes && echo so || echo dylib) ${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib) ${libname}.$(test .$module = .yes && echo so || echo dylib)' soname_spec='${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib)' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd*) objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; *) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. dynamic_linker="$host_os dld.sl" version_type=sunos need_lib_prefix=no need_version=no shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl' soname_spec='${libname}${release}.sl$major' # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; irix5* | irix6*) version_type=irix need_lib_prefix=no need_version=no soname_spec='${libname}${release}.so$major' library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so $libname.so' case $host_os in irix5*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" ;; # No shared lib support for Linux oldld, aout, or coff. linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) dynamic_linker=no ;; # This must be Linux ELF. linux-gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so' soname_spec='${libname}${release}.so$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; openbsd*) version_type=sunos if test "$with_gnu_ld" = yes; then need_lib_prefix=no need_version=no fi library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH ;; os2*) libname_spec='$name' need_lib_prefix=no library_names_spec='$libname.dll $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_version=no soname_spec='${libname}${release}.so' library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; sco3.2v5*) version_type=osf soname_spec='${libname}${release}.so$major' library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' shlibpath_var=LD_LIBRARY_PATH ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) version_type=linux library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; uts4*) version_type=linux library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' soname_spec='${libname}${release}.so$major' shlibpath_var=LD_LIBRARY_PATH ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so' soname_spec='$libname.so.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; *) dynamic_linker=no ;; esac AC_MSG_RESULT([$dynamic_linker]) test "$dynamic_linker" = no && can_build_shared=no # Report the final consequences. AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) if test "$hardcode_action" = relink; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi AC_LIBTOOL_DLOPEN_SELF if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. AC_MSG_CHECKING([whether -lc should be explicitly linked in]) AC_CACHE_VAL([lt_cv_archive_cmds_need_lc], [$rm conftest* echo 'static int dummy;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_cv_prog_cc_wl compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if AC_TRY_EVAL(archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) then lt_cv_archive_cmds_need_lc=no else lt_cv_archive_cmds_need_lc=yes fi allow_undefined_flag=$save_allow_undefined_flag else cat conftest.err 1>&5 fi]) AC_MSG_RESULT([$lt_cv_archive_cmds_need_lc]) ;; esac fi need_lc=${lt_cv_archive_cmds_need_lc-yes} # The second clause should only fire when bootstrapping the # libtool distribution, otherwise you forgot to ship ltmain.sh # with your package, and you will get complaints that there are # no rules to generate ltmain.sh. if test -f "$ltmain"; then : else # If there is no Makefile yet, we rely on a make rule to execute # `config.status --recheck' to rerun these tests and create the # libtool script then. test -f Makefile && make "$ltmain" fi if test -f "$ltmain"; then trap "$rm \"${ofile}T\"; exit 1" 1 2 15 $rm -f "${ofile}T" echo creating $ofile # Now quote all the things that may contain metacharacters while being # careful not to overquote the AC_SUBSTed values. We take copies of the # variables and quote the copies for generation of the libtool script. for var in echo old_CC old_CFLAGS \ AR AR_FLAGS CC LD LN_S NM SHELL \ reload_flag reload_cmds wl \ pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \ thread_safe_flag_spec whole_archive_flag_spec libname_spec \ library_names_spec soname_spec \ RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \ old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds \ postuninstall_cmds extract_expsyms_cmds old_archive_from_expsyms_cmds \ old_striplib striplib file_magic_cmd export_symbols_cmds \ deplibs_check_method allow_undefined_flag no_undefined_flag \ finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \ hardcode_libdir_flag_spec hardcode_libdir_separator \ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do case $var in reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \ old_postinstall_cmds | old_postuninstall_cmds | \ export_symbols_cmds | archive_cmds | archive_expsym_cmds | \ extract_expsyms_cmds | old_archive_from_expsyms_cmds | \ postinstall_cmds | postuninstall_cmds | \ finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) # Double-quote double-evaled strings. eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ;; *) eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ;; esac done cat <<__EOF__ > "${ofile}T" #! $SHELL # `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996-2000 Free Software Foundation, Inc. # Originally by Gordon Matzigkeit , 1996 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="sed -e s/^X//" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi # ### BEGIN LIBTOOL CONFIG # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$need_lc # Whether or not to build static libraries. build_old_libs=$enable_static # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host # An echo program that does not interpret backslashes. echo=$lt_echo # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # The default C compiler. CC=$lt_CC # Is the compiler the GNU C compiler? with_gcc=$GCC # The linker used to build libraries. LD=$lt_LD # Whether we need hard or soft links. LN_S=$lt_LN_S # A BSD-compatible nm program. NM=$lt_NM # A symbol stripping program STRIP=$STRIP # Used to examine libraries when file_magic_cmd begins "file" MAGIC_CMD=$MAGIC_CMD # Used on cygwin: DLL creation program. DLLTOOL="$DLLTOOL" # Used on cygwin: object dumper. OBJDUMP="$OBJDUMP" # Used on cygwin: assembler. AS="$AS" # The name of the directory that contains temporary libtool files. objdir=$objdir # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # How to pass a linker flag through the compiler. wl=$lt_wl # Object file suffix (normally "o"). objext="$ac_objext" # Old archive suffix (normally "a"). libext="$libext" # Executable file suffix (normally ""). exeext="$exeext" # Additional compiler flags for building library objects. pic_flag=$lt_pic_flag pic_mode=$pic_mode # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_compiler_c_o # Can we write directly to a .lo ? compiler_o_lo=$lt_compiler_o_lo # Must we lock files when doing compilation ? need_locks=$lt_need_locks # Do we need the lib prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Compiler flag to prevent dynamic linking. link_static_flag=$lt_link_static_flag # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_no_builtin_flag # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Compiler flag to generate thread-safe objects. thread_safe_flag_spec=$lt_thread_safe_flag_spec # Library versioning type. version_type=$version_type # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME. library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Commands used to build and install an old-style archive. RANLIB=$lt_RANLIB old_archive_cmds=$lt_old_archive_cmds old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build and install a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds postinstall_cmds=$lt_postinstall_cmds postuninstall_cmds=$lt_postuninstall_cmds # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == file_magic. file_magic_cmd=$lt_file_magic_cmd # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that forces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # Same as above, but a single script fragment to be evaled but not shown. finish_eval=$lt_finish_eval # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_global_symbol_pipe # Transform the output of nm in a proper C declaration global_symbol_to_cdecl=$lt_global_symbol_to_cdecl # This is the shared library runtime path variable. runpath_var=$runpath_var # This is the shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist. hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # Whether we need a single -rpath flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the # resulting binary. hardcode_direct=$hardcode_direct # Set to yes if using the -LDIR flag during linking hardcodes DIR into the # resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into # the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Variables whose values should be saved in libtool wrapper scripts and # restored at relink time. variables_saved_for_relink="$variables_saved_for_relink" # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Compile-time system search path for libraries sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path="$fix_srcfile_path" # Set to yes if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # ### END LIBTOOL CONFIG __EOF__ case $host_os in aix3*) cat <<\EOF >> "${ofile}T" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi EOF ;; esac case $host_os in cygwin* | mingw* | pw32* | os2*) cat <<'EOF' >> "${ofile}T" # This is a source program that is used to create dlls on Windows # Don't remove nor modify the starting and closing comments # /* ltdll.c starts here */ # #define WIN32_LEAN_AND_MEAN # #include # #undef WIN32_LEAN_AND_MEAN # #include # # #ifndef __CYGWIN__ # # ifdef __CYGWIN32__ # # define __CYGWIN__ __CYGWIN32__ # # endif # #endif # # #ifdef __cplusplus # extern "C" { # #endif # BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); # #ifdef __cplusplus # } # #endif # # #ifdef __CYGWIN__ # #include # DECLARE_CYGWIN_DLL( DllMain ); # #endif # HINSTANCE __hDllInstance_base; # # BOOL APIENTRY # DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) # { # __hDllInstance_base = hInst; # return TRUE; # } # /* ltdll.c ends here */ # This is a source program that is used to create import libraries # on Windows for dlls which lack them. Don't remove nor modify the # starting and closing comments # /* impgen.c starts here */ # /* Copyright (C) 1999-2000 Free Software Foundation, Inc. # # This file is part of GNU libtool. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # */ # # #include /* for printf() */ # #include /* for open(), lseek(), read() */ # #include /* for O_RDONLY, O_BINARY */ # #include /* for strdup() */ # # /* O_BINARY isn't required (or even defined sometimes) under Unix */ # #ifndef O_BINARY # #define O_BINARY 0 # #endif # # static unsigned int # pe_get16 (fd, offset) # int fd; # int offset; # { # unsigned char b[2]; # lseek (fd, offset, SEEK_SET); # read (fd, b, 2); # return b[0] + (b[1]<<8); # } # # static unsigned int # pe_get32 (fd, offset) # int fd; # int offset; # { # unsigned char b[4]; # lseek (fd, offset, SEEK_SET); # read (fd, b, 4); # return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); # } # # static unsigned int # pe_as32 (ptr) # void *ptr; # { # unsigned char *b = ptr; # return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); # } # # int # main (argc, argv) # int argc; # char *argv[]; # { # int dll; # unsigned long pe_header_offset, opthdr_ofs, num_entries, i; # unsigned long export_rva, export_size, nsections, secptr, expptr; # unsigned long name_rvas, nexp; # unsigned char *expdata, *erva; # char *filename, *dll_name; # # filename = argv[1]; # # dll = open(filename, O_RDONLY|O_BINARY); # if (dll < 1) # return 1; # # dll_name = filename; # # for (i=0; filename[i]; i++) # if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':') # dll_name = filename + i +1; # # pe_header_offset = pe_get32 (dll, 0x3c); # opthdr_ofs = pe_header_offset + 4 + 20; # num_entries = pe_get32 (dll, opthdr_ofs + 92); # # if (num_entries < 1) /* no exports */ # return 1; # # export_rva = pe_get32 (dll, opthdr_ofs + 96); # export_size = pe_get32 (dll, opthdr_ofs + 100); # nsections = pe_get16 (dll, pe_header_offset + 4 +2); # secptr = (pe_header_offset + 4 + 20 + # pe_get16 (dll, pe_header_offset + 4 + 16)); # # expptr = 0; # for (i = 0; i < nsections; i++) # { # char sname[8]; # unsigned long secptr1 = secptr + 40 * i; # unsigned long vaddr = pe_get32 (dll, secptr1 + 12); # unsigned long vsize = pe_get32 (dll, secptr1 + 16); # unsigned long fptr = pe_get32 (dll, secptr1 + 20); # lseek(dll, secptr1, SEEK_SET); # read(dll, sname, 8); # if (vaddr <= export_rva && vaddr+vsize > export_rva) # { # expptr = fptr + (export_rva - vaddr); # if (export_rva + export_size > vaddr + vsize) # export_size = vsize - (export_rva - vaddr); # break; # } # } # # expdata = (unsigned char*)malloc(export_size); # lseek (dll, expptr, SEEK_SET); # read (dll, expdata, export_size); # erva = expdata - export_rva; # # nexp = pe_as32 (expdata+24); # name_rvas = pe_as32 (expdata+32); # # printf ("EXPORTS\n"); # for (i = 0; i> "${ofile}T" || (rm -f "${ofile}T"; exit 1) mv -f "${ofile}T" "$ofile" || \ (rm -f "$ofile" && cp "${ofile}T" "$ofile" && rm -f "${ofile}T") chmod +x "$ofile" fi ])# _LT_AC_LTCONFIG_HACK # AC_LIBTOOL_DLOPEN - enable checks for dlopen support AC_DEFUN([AC_LIBTOOL_DLOPEN], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])]) # AC_LIBTOOL_WIN32_DLL - declare package support for building win32 dll's AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_BEFORE([$0], [AC_LIBTOOL_SETUP])]) # AC_ENABLE_SHARED - implement the --enable-shared flag # Usage: AC_ENABLE_SHARED[(DEFAULT)] # Where DEFAULT is either `yes' or `no'. If omitted, it defaults to # `yes'. AC_DEFUN([AC_ENABLE_SHARED], [define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE(shared, changequote(<<, >>)dnl << --enable-shared[=PKGS] build shared libraries [default=>>AC_ENABLE_SHARED_DEFAULT], changequote([, ])dnl [p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," for pkg in $enableval; do if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$ac_save_ifs" ;; esac], enable_shared=AC_ENABLE_SHARED_DEFAULT)dnl ]) # AC_DISABLE_SHARED - set the default shared flag to --disable-shared AC_DEFUN([AC_DISABLE_SHARED], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_SHARED(no)]) # AC_ENABLE_STATIC - implement the --enable-static flag # Usage: AC_ENABLE_STATIC[(DEFAULT)] # Where DEFAULT is either `yes' or `no'. If omitted, it defaults to # `yes'. AC_DEFUN([AC_ENABLE_STATIC], [define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE(static, changequote(<<, >>)dnl << --enable-static[=PKGS] build static libraries [default=>>AC_ENABLE_STATIC_DEFAULT], changequote([, ])dnl [p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," for pkg in $enableval; do if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$ac_save_ifs" ;; esac], enable_static=AC_ENABLE_STATIC_DEFAULT)dnl ]) # AC_DISABLE_STATIC - set the default static flag to --disable-static AC_DEFUN([AC_DISABLE_STATIC], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_STATIC(no)]) # AC_ENABLE_FAST_INSTALL - implement the --enable-fast-install flag # Usage: AC_ENABLE_FAST_INSTALL[(DEFAULT)] # Where DEFAULT is either `yes' or `no'. If omitted, it defaults to # `yes'. AC_DEFUN([AC_ENABLE_FAST_INSTALL], [define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl AC_ARG_ENABLE(fast-install, changequote(<<, >>)dnl << --enable-fast-install[=PKGS] optimize for fast installation [default=>>AC_ENABLE_FAST_INSTALL_DEFAULT], changequote([, ])dnl [p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," for pkg in $enableval; do if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$ac_save_ifs" ;; esac], enable_fast_install=AC_ENABLE_FAST_INSTALL_DEFAULT)dnl ]) # AC_DISABLE_FAST_INSTALL - set the default to --disable-fast-install AC_DEFUN([AC_DISABLE_FAST_INSTALL], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_ENABLE_FAST_INSTALL(no)]) # AC_LIBTOOL_PICMODE - implement the --with-pic flag # Usage: AC_LIBTOOL_PICMODE[(MODE)] # Where MODE is either `yes' or `no'. If omitted, it defaults to # `both'. AC_DEFUN([AC_LIBTOOL_PICMODE], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl pic_mode=ifelse($#,1,$1,default)]) # AC_PATH_TOOL_PREFIX - find a file program which can recognise shared library AC_DEFUN([AC_PATH_TOOL_PREFIX], [AC_MSG_CHECKING([for $1]) AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, [case $MAGIC_CMD in /*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; ?:/*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. ;; *) ac_save_MAGIC_CMD="$MAGIC_CMD" IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" dnl $ac_dummy forces splitting on constant user-supplied paths. dnl POSIX.2 word splitting is done only on the output of word expansions, dnl not every word. This closes a longstanding sh security hole. ac_dummy="ifelse([$2], , $PATH, [$2])" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$1; then lt_cv_path_MAGIC_CMD="$ac_dir/$1" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | egrep "$file_magic_regex" > /dev/null; then : else cat <&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org EOF fi ;; esac fi break fi done IFS="$ac_save_ifs" MAGIC_CMD="$ac_save_MAGIC_CMD" ;; esac]) MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then AC_MSG_RESULT($MAGIC_CMD) else AC_MSG_RESULT(no) fi ]) # AC_PATH_MAGIC - find a file program which can recognise a shared library AC_DEFUN([AC_PATH_MAGIC], [AC_REQUIRE([AC_CHECK_TOOL_PREFIX])dnl AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin:$PATH) if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then AC_PATH_TOOL_PREFIX(file, /usr/bin:$PATH) else MAGIC_CMD=: fi fi ]) # AC_PROG_LD - find the path to the GNU or non-GNU linker AC_DEFUN([AC_PROG_LD], [AC_ARG_WITH(gnu-ld, [ --with-gnu-ld assume the C compiler uses GNU ld [default=no]], test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no) AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by GCC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]* | [A-Za-z]:[\\/]*)] [re_direlt='/[^/][^/]*/\.\./'] # Canonicalize the path of ld ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(lt_cv_path_LD, [if test -z "$LD"; then IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. if "$lt_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then test "$with_gnu_ld" != no && break else test "$with_gnu_ld" != yes && break fi fi done IFS="$ac_save_ifs" else lt_cv_path_LD="$LD" # Let the user override the test with a path. fi]) LD="$lt_cv_path_LD" if test -n "$LD"; then AC_MSG_RESULT($LD) else AC_MSG_RESULT(no) fi test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) AC_PROG_LD_GNU ]) # AC_PROG_LD_GNU - AC_DEFUN([AC_PROG_LD_GNU], [AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld, [# I'd rather use --version here, but apparently some GNU ld's only accept -v. if $LD -v 2>&1 &5; then lt_cv_prog_gnu_ld=yes else lt_cv_prog_gnu_ld=no fi]) with_gnu_ld=$lt_cv_prog_gnu_ld ]) # AC_PROG_LD_RELOAD_FLAG - find reload flag for linker # -- PORTME Some linkers may need a different reload flag. AC_DEFUN([AC_PROG_LD_RELOAD_FLAG], [AC_CACHE_CHECK([for $LD option to reload object files], lt_cv_ld_reload_flag, [lt_cv_ld_reload_flag='-r']) reload_flag=$lt_cv_ld_reload_flag test -n "$reload_flag" && reload_flag=" $reload_flag" ]) # AC_DEPLIBS_CHECK_METHOD - how to check for library dependencies # -- PORTME fill in with the dynamic library characteristics AC_DEFUN([AC_DEPLIBS_CHECK_METHOD], [AC_CACHE_CHECK([how to recognise dependant libraries], lt_cv_deplibs_check_method, [lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # `unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # ['file_magic [regex]'] -- check by looking for files in library path # which responds to the $file_magic_cmd with a given egrep regex. # If you have `file' or equivalent on your system and you're not sure # whether `pass_all' will *always* work, you probably want this one. case $host_os in aix4* | aix5*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi4*) [lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'] lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin* | mingw* | pw32*) lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library' lt_cv_file_magic_cmd='/usr/bin/file -L' case "$host_os" in rhapsody* | darwin1.[012]) lt_cv_file_magic_test_file=`echo /System/Library/Frameworks/System.framework/Versions/*/System | head -1` ;; *) # Darwin 1.3 on lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib' ;; esac ;; freebsd*) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. [lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[3-9]86 (compact )?demand paged shared library'] lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20*|hpux11*) [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library'] lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; irix5* | irix6*) case $host_os in irix5*) # this will be overridden with pass_all, but let us keep it just in case lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" ;; *) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac # this will be overridden with pass_all, but let us keep it just in case [lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[1234] dynamic lib MIPS - version 1"] ;; esac lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*` lt_cv_deplibs_check_method=pass_all ;; # This must be Linux ELF. linux-gnu*) case $host_cpu in alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* | s390* ) lt_cv_deplibs_check_method=pass_all ;; *) # glibc up to 2.1.1 does not perform some relocations on ARM [lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;;] esac lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` ;; netbsd*) if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then [lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'] else [lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so$'] fi ;; newos6*) [lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'] lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; osf3* | osf4* | osf5*) # this will be overridden with pass_all, but let us keep it just in case lt_cv_deplibs_check_method='file_magic COFF format alpha shared library' lt_cv_file_magic_test_file=/shlib/libc.so lt_cv_deplibs_check_method=pass_all ;; sco3.2v5*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all lt_cv_file_magic_test_file=/lib/libc.so ;; [sysv5uw[78]* | sysv4*uw2*)] lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) case $host_vendor in motorola) [lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'] lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' [lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'] ;; sni) lt_cv_file_magic_cmd='/bin/file' [lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"] lt_cv_file_magic_test_file=/lib/libc.so ;; esac ;; esac ]) file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method ]) # AC_PROG_NM - find the path to a BSD-compatible name lister AC_DEFUN([AC_PROG_NM], [AC_MSG_CHECKING([for BSD-compatible nm]) AC_CACHE_VAL(lt_cv_path_NM, [if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do test -z "$ac_dir" && ac_dir=. tmp_nm=$ac_dir/${ac_tool_prefix}nm if test -f $tmp_nm || test -f $tmp_nm$ac_exeext ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then lt_cv_path_NM="$tmp_nm -B" break elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then lt_cv_path_NM="$tmp_nm -p" break else lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags fi fi done IFS="$ac_save_ifs" test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm fi]) NM="$lt_cv_path_NM" AC_MSG_RESULT([$NM]) ]) # AC_CHECK_LIBM - check for math library AC_DEFUN([AC_CHECK_LIBM], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in *-*-beos* | *-*-cygwin* | *-*-pw32*) # These system don't have libm ;; *-ncr-sysv4.3*) AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") AC_CHECK_LIB(m, main, LIBM="$LIBM -lm") ;; *) AC_CHECK_LIB(m, main, LIBM="-lm") ;; esac ]) # AC_LIBLTDL_CONVENIENCE[(dir)] - sets LIBLTDL to the link flags for # the libltdl convenience library and INCLTDL to the include flags for # the libltdl header and adds --enable-ltdl-convenience to the # configure arguments. Note that LIBLTDL and INCLTDL are not # AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If DIR is not # provided, it is assumed to be `libltdl'. LIBLTDL will be prefixed # with '${top_builddir}/' and INCLTDL will be prefixed with # '${top_srcdir}/' (note the single quotes!). If your package is not # flat and you're not using automake, define top_builddir and # top_srcdir appropriately in the Makefiles. AC_DEFUN([AC_LIBLTDL_CONVENIENCE], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl case $enable_ltdl_convenience in no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; "") enable_ltdl_convenience=yes ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; esac LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la INCLTDL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) ]) # AC_LIBLTDL_INSTALLABLE[(dir)] - sets LIBLTDL to the link flags for # the libltdl installable library and INCLTDL to the include flags for # the libltdl header and adds --enable-ltdl-install to the configure # arguments. Note that LIBLTDL and INCLTDL are not AC_SUBSTed, nor is # AC_CONFIG_SUBDIRS called. If DIR is not provided and an installed # libltdl is not found, it is assumed to be `libltdl'. LIBLTDL will # be prefixed with '${top_builddir}/' and INCLTDL will be prefixed # with '${top_srcdir}/' (note the single quotes!). If your package is # not flat and you're not using automake, define top_builddir and # top_srcdir appropriately in the Makefiles. # In the future, this macro may have to be called after AC_PROG_LIBTOOL. AC_DEFUN([AC_LIBLTDL_INSTALLABLE], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl AC_CHECK_LIB(ltdl, main, [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], [if test x"$enable_ltdl_install" = xno; then AC_MSG_WARN([libltdl not installed, but installation disabled]) else enable_ltdl_install=yes fi ]) if test x"$enable_ltdl_install" = x"yes"; then ac_configure_args="$ac_configure_args --enable-ltdl-install" LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la INCLTDL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) else ac_configure_args="$ac_configure_args --enable-ltdl-install=no" LIBLTDL="-lltdl" INCLTDL= fi ]) # old names AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL]) AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) AC_DEFUN([AM_PROG_LD], [AC_PROG_LD]) AC_DEFUN([AM_PROG_NM], [AC_PROG_NM]) # This is just to silence aclocal about the macro not being used ifelse([AC_DISABLE_FAST_INSTALL]) dnl Configure-time switch with default dnl dnl Each switch defines an --enable-FOO and --disable-FOO option in dnl the resulting configure script. dnl dnl Usage: dnl smr_SWITCH(name, description, default, pos-def, neg-def) dnl dnl where: dnl dnl name name of switch; generates --enable-name & --disable-name dnl options dnl description help string is set to this prefixed by "enable" or dnl "disable", whichever is the non-default value dnl default either "on" or "off"; specifies default if neither dnl --enable-name nor --disable-name is specified dnl pos-def a symbol to AC_DEFINE if switch is on (optional) dnl neg-def a symbol to AC_DEFINE if switch is off (optional) dnl AC_DEFUN(smr_SWITCH, [ AC_MSG_CHECKING(whether to enable $2) AC_ARG_ENABLE( $1, ifelse($3, on, [ --disable-[$1] disable [$2]], [ --enable-[$1] enable [$2]]), [ if test "$enableval" = yes; then AC_MSG_RESULT(yes) ifelse($4, , , AC_DEFINE($4)) else AC_MSG_RESULT(no) ifelse($5, , , AC_DEFINE($5)) fi ], ifelse($3, on, [ AC_MSG_RESULT(yes) ifelse($4, , , AC_DEFINE($4)) ], [ AC_MSG_RESULT(no) ifelse($5, , , AC_DEFINE($5))]))]) dnl dnl Examine size_t and define SIZE_T_IS_UINT, if size_t is an unsigned int dnl AC_DEFUN(OJ_SIZE_T_IS_UINT,[ AC_REQUIRE([AC_TYPE_SIZE_T]) AC_MSG_CHECKING(whether size_t is unsigned int) ac_cv_size_t_is_uint=no AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_TRY_COMPILE([#include template class foo { }; ], [ foo x; foo y; x = y; ],ac_cv_size_t_is_uint=yes) AC_LANG_RESTORE AC_MSG_RESULT($ac_cv_size_t_is_uint) test "$ac_cv_size_t_is_uint" = "yes" && AC_DEFINE(SIZE_T_IS_UINT) ]) # Do all the work for Automake. This macro actually does too much -- # some checks are only needed if your package does certain things. # But this isn't really a big deal. # serial 1 dnl Usage: dnl AM_INIT_AUTOMAKE(package,version, [no-define]) AC_DEFUN([AM_INIT_AUTOMAKE], [AC_REQUIRE([AC_PROG_INSTALL]) PACKAGE=[$1] AC_SUBST(PACKAGE) VERSION=[$2] AC_SUBST(VERSION) dnl test to see if srcdir already configured if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi ifelse([$3],, AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])) AC_REQUIRE([AM_SANITY_CHECK]) AC_REQUIRE([AC_ARG_PROGRAM]) dnl FIXME This is truly gross. missing_dir=`cd $ac_aux_dir && pwd` AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir) AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir) AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir) AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir) AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir) AC_REQUIRE([AC_PROG_MAKE_SET])]) # # Check to make sure that the build environment is sane. # AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Just in case sleep 1 echo timestamp > conftestfile # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null` if test "[$]*" = "X"; then # -L didn't work. set X `ls -t $srcdir/configure conftestfile` fi if test "[$]*" != "X $srcdir/configure conftestfile" \ && test "[$]*" != "X conftestfile $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi test "[$]2" = conftestfile ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi rm -f conftest* AC_MSG_RESULT(yes)]) dnl AM_MISSING_PROG(NAME, PROGRAM, DIRECTORY) dnl The program must properly implement --version. AC_DEFUN([AM_MISSING_PROG], [AC_MSG_CHECKING(for working $2) # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. if ($2 --version) < /dev/null > /dev/null 2>&1; then $1=$2 AC_MSG_RESULT(found) else $1="$3/missing $2" AC_MSG_RESULT(missing) fi AC_SUBST($1)]) openjade-1.3.2/config/config.guess0100775000076400007640000011270307421552620015211 0ustar ianian#! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002 Free Software Foundation, Inc. timestamp='2002-01-10' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Per Bothner . # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and # exits with 0. Otherwise, it exits with 1. # # The plan is that this can be called by configure scripts if you # don't specify an explicit build system type. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit 0 ;; --version | -v ) echo "$version" ; exit 0 ;; --help | --h* | -h ) echo "$usage"; exit 0 ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi dummy=dummy-$$ trap 'rm -f $dummy.c $dummy.o $dummy.rel $dummy; exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. set_cc_for_build='case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int dummy(){}" > $dummy.c ; for c in cc gcc c89 ; do ($c $dummy.c -c -o $dummy.o) >/dev/null 2>&1 ; if test $? = 0 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; rm -f $dummy.c $dummy.o $dummy.rel ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". UNAME_MACHINE_ARCH=`(uname -p) 2>/dev/null` || \ UNAME_MACHINE_ARCH=unknown case "${UNAME_MACHINE_ARCH}" in arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep __ELF__ >/dev/null then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit 0 ;; amiga:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; arc:OpenBSD:*:*) echo mipsel-unknown-openbsd${UNAME_RELEASE} exit 0 ;; hp300:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; mac68k:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; macppc:OpenBSD:*:*) echo powerpc-unknown-openbsd${UNAME_RELEASE} exit 0 ;; mvme68k:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; mvme88k:OpenBSD:*:*) echo m88k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; mvmeppc:OpenBSD:*:*) echo powerpc-unknown-openbsd${UNAME_RELEASE} exit 0 ;; pmax:OpenBSD:*:*) echo mipsel-unknown-openbsd${UNAME_RELEASE} exit 0 ;; sgi:OpenBSD:*:*) echo mipseb-unknown-openbsd${UNAME_RELEASE} exit 0 ;; sun3:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; wgrisc:OpenBSD:*:*) echo mipsel-unknown-openbsd${UNAME_RELEASE} exit 0 ;; *:OpenBSD:*:*) echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} exit 0 ;; alpha:OSF1:*:*) if test $UNAME_RELEASE = "V4.0"; then UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` fi # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. cat <$dummy.s .data \$Lformat: .byte 37,100,45,37,120,10,0 # "%d-%x\n" .text .globl main .align 4 .ent main main: .frame \$30,16,\$26,0 ldgp \$29,0(\$27) .prologue 1 .long 0x47e03d80 # implver \$0 lda \$2,-1 .long 0x47e20c21 # amask \$2,\$1 lda \$16,\$Lformat mov \$0,\$17 not \$1,\$18 jsr \$26,printf ldgp \$29,0(\$26) mov 0,\$16 jsr \$26,exit .end main EOF eval $set_cc_for_build $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null if test "$?" = 0 ; then case `./$dummy` in 0-0) UNAME_MACHINE="alpha" ;; 1-0) UNAME_MACHINE="alphaev5" ;; 1-1) UNAME_MACHINE="alphaev56" ;; 1-101) UNAME_MACHINE="alphapca56" ;; 2-303) UNAME_MACHINE="alphaev6" ;; 2-307) UNAME_MACHINE="alphaev67" ;; 2-1307) UNAME_MACHINE="alphaev68" ;; esac fi rm -f $dummy.s $dummy echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` exit 0 ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit 0 ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit 0 ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit 0;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit 0 ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit 0 ;; *:OS/390:*:*) echo i370-ibm-openedition exit 0 ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit 0;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit 0;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit 0 ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit 0 ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; i86pc:SunOS:5.*:*) echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit 0 ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit 0 ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(head -1 /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit 0 ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit 0 ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit 0 ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit 0 ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit 0 ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit 0 ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit 0 ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit 0 ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit 0 ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit 0 ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit 0 ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit 0 ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit 0 ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD $dummy.c -o $dummy \ && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ && rm -f $dummy.c $dummy && exit 0 rm -f $dummy.c $dummy echo mips-mips-riscos${UNAME_RELEASE} exit 0 ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit 0 ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit 0 ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit 0 ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit 0 ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit 0 ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit 0 ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit 0 ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit 0 ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit 0 ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit 0 ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit 0 ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit 0 ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit 0 ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0 rm -f $dummy.c $dummy echo rs6000-ibm-aix3.2.5 elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit 0 ;; *:AIX:*:[45]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | head -1 | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit 0 ;; *:AIX:*:*) echo rs6000-ibm-aix exit 0 ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit 0 ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit 0 ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit 0 ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit 0 ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit 0 ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit 0 ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null) && HP_ARCH=`./$dummy` if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi rm -f $dummy.c $dummy fi ;; esac echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit 0 ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit 0 ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0 rm -f $dummy.c $dummy echo unknown-hitachi-hiuxwe2 exit 0 ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit 0 ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit 0 ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit 0 ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit 0 ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit 0 ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit 0 ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit 0 ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit 0 ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit 0 ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit 0 ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit 0 ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit 0 ;; CRAY*X-MP:*:*:*) echo xmp-cray-unicos exit 0 ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*T3D:*:*:*) echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY-2:*:*:*) echo cray2-cray-unicos exit 0 ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit 0 ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit 0 ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit 0 ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit 0 ;; *:FreeBSD:*:*) echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit 0 ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit 0 ;; i*:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit 0 ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit 0 ;; x86:Interix*:3*) echo i386-pc-interix3 exit 0 ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i386-pc-interix exit 0 ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit 0 ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit 0 ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; *:GNU:*:*) echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit 0 ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit 0 ;; arm*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux exit 0 ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; mips:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef mips #undef mipsel #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=mipsel #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=mips #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` rm -f $dummy.c test x"${CPU}" != x && echo "${CPU}-pc-linux-gnu" && exit 0 ;; ppc:Linux:*:*) echo powerpc-unknown-linux-gnu exit 0 ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-gnu exit 0 ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} exit 0 ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-gnu ;; PA8*) echo hppa2.0-unknown-linux-gnu ;; *) echo hppa-unknown-linux-gnu ;; esac exit 0 ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-gnu exit 0 ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux exit 0 ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; x86_64:Linux:*:*) echo x86_64-unknown-linux-gnu exit 0 ;; i*86:Linux:*:*) # The BFD linker knows what the default object file format is, so # first see if it will tell us. cd to the root directory to prevent # problems with other programs or directories called `ld' in the path. ld_supported_targets=`cd /; ld --help 2>&1 \ | sed -ne '/supported targets:/!d s/[ ][ ]*/ /g s/.*supported targets: *// s/ .*// p'` case "$ld_supported_targets" in elf32-i386) TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" ;; a.out-i386-linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" exit 0 ;; coff-i386) echo "${UNAME_MACHINE}-pc-linux-gnucoff" exit 0 ;; "") # Either a pre-BFD a.out linker (linux-gnuoldld) or # one that does not give us useful --help. echo "${UNAME_MACHINE}-pc-linux-gnuoldld" exit 0 ;; esac # Determine whether the default compiler is a.out or elf eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include #ifdef __ELF__ # ifdef __GLIBC__ # if __GLIBC__ >= 2 LIBC=gnu # else LIBC=gnulibc1 # endif # else LIBC=gnulibc1 # endif #else LIBC=gnuaout #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` rm -f $dummy.c test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0 test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit 0 ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit 0 ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit 0 ;; i*86:*:5:[78]*) case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit 0 ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')` (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|egrep '^Machine.*Pent ?II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit 0 ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit 0 ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i386. echo i386-pc-msdosdjgpp exit 0 ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit 0 ;; paragon:*:*:*) echo i860-intel-osf1 exit 0 ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit 0 ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit 0 ;; M68*:*:R3V[567]*:*) test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && echo i486-ncr-sysv4.3${OS_REL} && exit 0 /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && echo i486-ncr-sysv4 && exit 0 ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit 0 ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit 0 ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit 0 ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit 0 ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit 0 ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit 0 ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit 0 ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit 0 ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit 0 ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit 0 ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit 0 ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit 0 ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit 0 ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit 0 ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit 0 ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit 0 ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit 0 ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit 0 ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit 0 ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit 0 ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit 0 ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit 0 ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit 0 ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit 0 ;; *:Darwin:*:*) echo `uname -p`-apple-darwin${UNAME_RELEASE} exit 0 ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) if test "${UNAME_MACHINE}" = "x86pc"; then UNAME_MACHINE=pc fi echo `uname -p`-${UNAME_MACHINE}-nto-qnx exit 0 ;; *:QNX:*:4*) echo i386-pc-qnx exit 0 ;; NSR-[GKLNPTVW]:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit 0 ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit 0 ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit 0 ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit 0 ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit 0 ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit 0 ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit 0 ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit 0 ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit 0 ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit 0 ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit 0 ;; *:ITS:*:*) echo pdp10-unknown-its exit 0 ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit 0 ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit 0 ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 eval $set_cc_for_build cat >$dummy.c < # include #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) printf ("arm-acorn-riscix"); exit (0); #endif #if defined (hp300) && !defined (hpux) printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) # if !defined (ultrix) # include # if defined (BSD) # if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); # else # if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); # else printf ("vax-dec-bsd\n"); exit (0); # endif # endif # else printf ("vax-dec-bsd\n"); exit (0); # endif # else printf ("vax-dec-ultrix\n"); exit (0); # endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm -f $dummy.c $dummy && exit 0 rm -f $dummy.c $dummy # Apollos put the system type in the environment. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } # Convex versions that predate uname can use getsysinfo(1) if [ -x /usr/convex/getsysinfo ] then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd exit 0 ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit 0 ;; c34*) echo c34-convex-bsd exit 0 ;; c38*) echo c38-convex-bsd exit 0 ;; c4*) echo c4-convex-bsd exit 0 ;; esac fi cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: openjade-1.3.2/config/config.sub0100775000076400007640000007045307421552620014661 0ustar ianian#! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002 Free Software Foundation, Inc. timestamp='2002-01-02' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software # can handle that machine. It does not imply ALL GNU software can. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit 0 ;; --version | -v ) echo "$version" ; exit 0 ;; --help | --h* | -h ) echo "$usage"; exit 0 ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit 0;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | storm-chaos* | os2-emx* | windows32-*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis) os= basic_machine=$1 ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ | c4x | clipper \ | d10v | d30v | dsp16xx \ | fr30 \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | i370 | i860 | i960 | ia64 \ | m32r | m68000 | m68k | m88k | mcore \ | mips16 | mips64 | mips64el | mips64orion | mips64orionel \ | mips64vr4100 | mips64vr4100el | mips64vr4300 \ | mips64vr4300el | mips64vr5000 | mips64vr5000el \ | mipsbe | mipseb | mipsel | mipsle | mipstx39 | mipstx39el \ | mipsisa32 \ | mn10200 | mn10300 \ | ns16k | ns32k \ | openrisc \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | pyramid \ | sh | sh[34] | sh[34]eb | shbe | shle \ | sparc | sparc64 | sparclet | sparclite | sparcv9 | sparcv9b \ | strongarm \ | tahoe | thumb | tic80 | tron \ | v850 | v850e \ | we32k \ | x86 | xscale | xstormy16 | xtensa \ | z8k) basic_machine=$basic_machine-unknown ;; m6811 | m68hc11 | m6812 | m68hc12) # Motorola 68HC11/12. basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | arm-* | armbe-* | armle-* | armv*-* \ | avr-* \ | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c54x-* \ | clipper-* | cray2-* | cydra-* \ | d10v-* | d30v-* \ | elxsi-* \ | f30[01]-* | f700-* | fr30-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | i*86-* | i860-* | i960-* | ia64-* \ | m32r-* \ | m68000-* | m680[01234]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | mcore-* \ | mips-* | mips16-* | mips64-* | mips64el-* | mips64orion-* \ | mips64orionel-* | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* | mipsbe-* | mipseb-* \ | mipsle-* | mipsel-* | mipstx39-* | mipstx39el-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | pyramid-* \ | romp-* | rs6000-* \ | sh-* | sh[34]-* | sh[34]eb-* | shbe-* | shle-* \ | sparc-* | sparc64-* | sparc86x-* | sparclite-* \ | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* \ | t3e-* | tahoe-* | thumb-* | tic30-* | tic54x-* | tic80-* | tron-* \ | v850-* | v850e-* | vax-* \ | we32k-* \ | x86-* | x86_64-* | xmp-* | xps100-* | xscale-* | xstormy16-* \ | xtensa-* \ | ymp-* \ | z8k-*) ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | ymp) basic_machine=ymp-cray os=-unicos ;; cray2) basic_machine=cray2-cray os=-unicos ;; [cjt]90) basic_machine=${basic_machine}-cray os=-unicos ;; crds | unos) basic_machine=m68k-crds ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; # I'm not sure what "Sysv32" means. Should this be sysv3.2? i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; mingw32) basic_machine=i386-pc os=-mingw32 ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mipsel*-linux*) basic_machine=mipsel-unknown os=-linux-gnu ;; mips*-linux*) basic_machine=mips-unknown os=-linux-gnu ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; mmix*) basic_machine=mmix-knuth os=-mmixware ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; msdos) basic_machine=i386-pc os=-msdos ;; mvs) basic_machine=i370-ibm os=-mvs ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon) basic_machine=i686-pc ;; pentiumii | pentium2) basic_machine=i686-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc) basic_machine=powerpc-unknown ;; ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=t3e-cray os=-unicos ;; tic54x | c54x*) basic_machine=tic54x-unknown os=-coff ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; windows32) basic_machine=i386-pc os=-windows32-msvcrt ;; xmp) basic_machine=xmp-cray os=-unicos ;; xps | xps100) basic_machine=xps100-honeywell ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; mips) if [ x$os = x-linux-gnu ]; then basic_machine=mips-unknown else basic_machine=mips-mips fi ;; romp) basic_machine=romp-ibm ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh3 | sh4 | sh3eb | sh4eb) basic_machine=sh-unknown ;; sparc | sparcv9 | sparcv9b) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; c4x*) basic_machine=c4x-none os=-coff ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* | -morphos*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto*) os=-nto-qnx ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 # This also exists in the configure program, but was not the # default. # os=-sunos4 ;; m68*-cisco) os=-aout ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-ibm) os=-aix ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -ptx*) vendor=sequent ;; -vxsim* | -vxworks*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit 0 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: openjade-1.3.2/config/configure.in0100664000076400007640000001673407572374061015221 0ustar ianiandnl dnl configure.in dnl AC_REVISION($Id: configure.in,v 1.8.4.2.2.12 2002/12/01 11:53:21 icastle Exp $) dnl dnl Process this file with autoconf to produce a configure script. dnl dnl Copyright (C) 1998 Cees A. de Groot dnl dnl dnl Credits: this autoconf script was largely "inspired" by the dnl autoconf script around SP made by Henry Thompson. dnl AC_INIT(dsssl) AC_CONFIG_AUX_DIR(config) AM_INIT_AUTOMAKE( openjade, 1.3.2) TOP=`pwd` AC_SUBST(TOP) dnl dnl Location of OpenSP include files dnl AC_MSG_CHECKING(location of OpenSP include files) AC_ARG_ENABLE(spincludedir, [ --enable-spincludedir=pathlist location of OpenSP include files], [if test $enableval then AC_MSG_RESULT($enableval) SPINCLUDEDIR="$enableval" else for d in ${prefix}/include/OpenSP /usr/local/include/OpenSP \ /usr/include/OpenSP; do AC_CHECK_FILE($d, [SPINCLUDEDIR="$d"; break]) done fi], [for d in ${prefix}/include/OpenSP /usr/local/include/OpenSP \ /usr/include/OpenSP; do AC_CHECK_FILE($d, [SPINCLUDEDIR="$d"; break]) done]) if test x${SPINCLUDEDIR} = x; then AC_MSG_ERROR("OpenSP include files do not exist") fi AC_SUBST(SPINCLUDEDIR) dnl dnl Location of OpenSP library dnl case "${SPINCLUDEDIR}" in ${prefix}/include/OpenSP) osplibdir=${prefix}/lib ;; /usr/local/include/OpenSP) osplibdir=/usr/local/lib ;; *) osplibdir=/usr/lib ;; esac # On PPC64 libosp is to be found in /usr/lib64; thus # fall back to this directory test -d ${osplibdir}64 && osplibdir=${osplibdir}64 AC_MSG_CHECKING(location of OpenSP Library) AC_ARG_ENABLE(splibdir, [ --enable-splibdir=pathlist location of OpenSP library], [if test $enableval then AC_MSG_RESULT($enableval) SPLIBDIR="$enableval" else AC_MSG_RESULT($osplibdir) SPLIBDIR=$osplibdir fi], [ AC_MSG_RESULT($osplibdir) SPLIBDIR=$osplibdir]) unset osplibdir AC_SUBST(SPLIBDIR) dnl AC_ARG_PROGRAM AC_CANONICAL_HOST if test "$CXXFLAGS" = ""; then CXXFLAGS="-O2" fi dnl dnl Backup original Makefiles, people may want to revert to it if dnl configure doesn't work. dnl echo 'saving distribution makefiles...' test ! -f Makefile.dist && test -f Makefile && cp Makefile Makefile.dist test ! -f Makefile.lib.dist && test -f Makefile.lib && cp Makefile.lib Makefile.lib.dist test ! -f Makefile.prog.dist && test -f Makefile.prog && cp Makefile.prog Makefile.prog.dist test ! -f Makefile.comm.dist && test -f Makefile.comm && cp Makefile.comm Makefile.comm.dist dnl dnl Check for programs dnl AC_PROG_CC AC_PROG_INSTALL AC_PROG_LN_S AC_PROG_CXX AC_PATH_PROGS(PERL, perl, perl) test "$INSTALL" = "./config/install-sh -c" && INSTALL=`pwd`"/config/install-sh -c" dnl dnl Stuff special to GNU C++ dnl case "${host}" in *-*-darwin*) LINKFLAGS="-no-undefined" ;; *) if test "$GXX" then dnl FIXME these need tests for non-GNU compilers AC_CACHE_CHECK(whether GNU C++ supports automatic template instantiation, ac_cv_c_gnu_automatic_templates, [AC_EGREP_CPP(yes,[ #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 8) yes #endif ], ac_cv_c_gnu_automatic_templates=yes, ac_cv_c_gnu_automatic_templates=no) ]) if test "$ac_cv_c_gnu_automatic_templates" = yes; then AC_DEFINE(SP_DEFINE_TEMPLATES,1, [define this to include template definitions in the headers]) else AC_DEFINE(SP_MANUAL_INST,1, [define this to compile explicit template instantiations]) CXXFLAGS="$CXXFLAGS -fno-implicit-templates" fi fi ;; esac dnl dnl Checks for header files. dnl AC_HEADER_STDC AC_CHECK_HEADERS(limits.h) dnl dnl Checks for typedefs, structures, and compiler characteristics. dnl AC_C_CONST AC_C_INLINE AC_TYPE_SIZE_T AC_STRUCT_ST_BLKSIZE AC_CACHE_CHECK(for sig_atomic_t in signal.h, ac_cv_have_sig_atomic_t, [AC_TRY_LINK([#include ],sig_atomic_t x;, ac_cv_have_sig_atomic_t=yes, ac_cv_have_sig_atomic_t=no)]) if test "$ac_cv_have_sig_atomic_t" = "no" then AC_CHECK_TYPE(sig_atomic_t,int) fi AC_CHECK_SIZEOF(size_t) AC_CHECK_SIZEOF(unsigned int) dnl dnl Checks for library functions. dnl dnl AC_CHECK_FUNC(memmove,,LIBOBJS="$LIBOBJS memmove.o") dnl AC_CHECK_FUNC(strerror,,LIBOBJS="$LIBOBJS strerror.o") dnl AC_CHECK_FUNC(strtoul,,LIBOBJS="$LIBOBJS strtoul.o") AC_CHECK_FUNC(setlocale,[AC_DEFINE(SP_HAVE_LOCALE)]) AC_CHECK_FUNC(towupper,[AC_DEFINE(SP_HAVE_WCHAR)]) AC_CHECK_FUNC(gettext,[AC_DEFINE(SP_HAVE_GETTEXT)], [AC_CHECK_LIB(intl,gettext,[AC_DEFINE(SP_HAVE_GETTEXT) LIBS="$LIBS -lintl"])]) dnl dnl Check for thread support. AC_CHECK_LIB(threads,cthread_fork,LIB_THREADS="-lthreads",LIB_THREADS="") AC_SUBST(LIB_THREADS) dnl dnl Check if type of size_t is unsigned int dnl OJ_SIZE_T_IS_UINT dnl dnl the following tests require c++, not c; note that if you switch this dnl earlier, AC_C_CONST will fail, at least dnl AC_LANG_CPLUSPLUS AC_CACHE_CHECK(support for bool, ac_cv_typedef_bool, [AC_TRY_LINK(,bool x; x=(false | true);, ac_cv_typedef_bool=yes, ac_cv_typedef_bool=no)]) if test "$ac_cv_typedef_bool" = "yes" then AC_DEFINE(SP_HAVE_BOOL) fi dnl dnl ANSI templates dnl AC_CACHE_CHECK(for ANSI template instantiation, ac_cv_c_template_ansi, [AC_TRY_LINK([ class foo { }; template class test { public: T *data();}; template class test; ],,ac_cv_c_template_ansi=yes, ac_cv_c_template_ansi=no)]) if test "$ac_cv_c_template_ansi" = "yes" then AC_DEFINE(SP_ANSI_CLASS_INST) fi dnl dnl HTTP support dnl AC_MSG_CHECKING(whether to include support for http) AC_ARG_ENABLE(http, [ --enable-http include support for http], [if test $enableval then AC_MSG_RESULT(yes) AC_DEFINE(SP_HAVE_SOCKET) AC_CHECK_LIB(nsl,main,LIBS="$LIBS -lnsl") AC_CHECK_LIB(socket,main,LIBS="$LIBS -lsocket") AC_MSG_CHECKING(h_errno in netdb.h) AC_EGREP_HEADER(h_errno,netdb.h, [AC_MSG_RESULT(yes)], [AC_DEFINE(SP_DECLARE_H_ERRNO) AC_MSG_RESULT(no)]) else AC_MSG_RESULT(no) fi], [AC_MSG_RESULT(no)]) dnl dnl optional backends dnl smr_SWITCH(mif, support for FrameMaker MIF output, on, JADE_MIF, DUMMY) smr_SWITCH(html, support for HTML+CSS output, on, JADE_HTML, DUMMY) dnl dnl Other options dnl AC_DEFINE(SP_MULTI_BYTE) AC_MSG_CHECKING(for default catalog) AC_ARG_ENABLE(default-catalog, [ --enable-default-catalog=pathlist provide one or more default catalog files or sysids, e.g. /usr/local/lib/sgml/catalog], [if test $enableval then AC_MSG_RESULT($enableval) AC_DEFINE_UNQUOTED(SGML_CATALOG_FILES_DEFAULT,"$enableval") else AC_MSG_RESULT(none) fi], [AC_MSG_RESULT(none)]) AC_MSG_CHECKING(for default search path) AC_ARG_ENABLE(default-search-path, [ --enable-default-search-path=pathlist provide a default value for SGML_SEARCH_PATH], [if test $enableval then AC_MSG_RESULT($enableval) AC_DEFINE_UNQUOTED(SGML_SEARCH_PATH_DEFAULT,"$enableval") else AC_MSG_RESULT(none) fi], [AC_MSG_RESULT(none)]) dnl AC_SUBST(LIBOBJS) AC_PROG_LIBTOOL AC_SUBST(LIBTOOL_DEPS) dnl dnl Darwin/Mac OS X requires some extra flags for libtool dnl AC_SUBST(LINKFLAGS) AC_OUTPUT(Makefile Makefile.lib Makefile.prog Makefile.comm include/config.h) openjade-1.3.2/config/install-sh0100775000076400007640000001273607422234541014702 0ustar ianian#!/bin/sh # # install - install a program, script, or datafile # This comes from X11R5 (mit/util/scripts/install.sh). # # Copyright 1991 by the Massachusetts Institute of Technology # # Permission to use, copy, modify, distribute, and sell this software and its # documentation for any purpose is hereby granted without fee, provided that # the above copyright notice appear in all copies and that both that # copyright notice and this permission notice appear in supporting # documentation, and that the name of M.I.T. not be used in advertising or # publicity pertaining to distribution of the software without specific, # written prior permission. M.I.T. makes no representations about the # suitability of this software for any purpose. It is provided "as is" # without express or implied warranty. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. It can only install one file at a time, a restriction # shared with many OS's install programs. # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit="${DOITPROG-}" # put in absolute paths if you don't have them in your path; or use env. vars. mvprog="${MVPROG-mv}" cpprog="${CPPROG-cp}" chmodprog="${CHMODPROG-chmod}" chownprog="${CHOWNPROG-chown}" chgrpprog="${CHGRPPROG-chgrp}" stripprog="${STRIPPROG-strip}" rmprog="${RMPROG-rm}" mkdirprog="${MKDIRPROG-mkdir}" transformbasename="" transform_arg="" instcmd="$mvprog" chmodcmd="$chmodprog 0755" chowncmd="" chgrpcmd="" stripcmd="" rmcmd="$rmprog -f" mvcmd="$mvprog" src="" dst="" dir_arg="" while [ x"$1" != x ]; do case $1 in -c) instcmd="$cpprog" shift continue;; -d) dir_arg=true shift continue;; -m) chmodcmd="$chmodprog $2" shift shift continue;; -o) chowncmd="$chownprog $2" shift shift continue;; -g) chgrpcmd="$chgrpprog $2" shift shift continue;; -s) stripcmd="$stripprog" shift continue;; -t=*) transformarg=`echo $1 | sed 's/-t=//'` shift continue;; -b=*) transformbasename=`echo $1 | sed 's/-b=//'` shift continue;; *) if [ x"$src" = x ] then src=$1 else # this colon is to work around a 386BSD /bin/sh bug : dst=$1 fi shift continue;; esac done if [ x"$src" = x ] then echo "install: no input file specified" exit 1 else true fi if [ x"$dir_arg" != x ]; then dst=$src src="" if [ -d $dst ]; then instcmd=: chmodcmd="" else instcmd=mkdir fi else # Waiting for this to be detected by the "$instcmd $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if [ -f $src -o -d $src ] then true else echo "install: $src does not exist" exit 1 fi if [ x"$dst" = x ] then echo "install: no destination specified" exit 1 else true fi # If destination is a directory, append the input filename; if your system # does not like double slashes in filenames, you may need to add some logic if [ -d $dst ] then dst="$dst"/`basename $src` else true fi fi ## this sed command emulates the dirname command dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` # Make sure that the destination directory exists. # this part is taken from Noah Friedman's mkinstalldirs script # Skip lots of stat calls in the usual case. if [ ! -d "$dstdir" ]; then defaultIFS=' ' IFS="${IFS-${defaultIFS}}" oIFS="${IFS}" # Some sh's can't handle IFS=/ for some reason. IFS='%' set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` IFS="${oIFS}" pathcomp='' while [ $# -ne 0 ] ; do pathcomp="${pathcomp}${1}" shift if [ ! -d "${pathcomp}" ] ; then $mkdirprog "${pathcomp}" else true fi pathcomp="${pathcomp}/" done fi if [ x"$dir_arg" != x ] then $doit $instcmd $dst && if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi else # If we're going to rename the final executable, determine the name now. if [ x"$transformarg" = x ] then dstfile=`basename $dst` else dstfile=`basename $dst $transformbasename | sed $transformarg`$transformbasename fi # don't allow the sed command to completely eliminate the filename if [ x"$dstfile" = x ] then dstfile=`basename $dst` else true fi # Make a temp file name in the proper directory. dsttmp=$dstdir/#inst.$$# # Move or copy the file name to the temp name $doit $instcmd $src $dsttmp && trap "rm -f ${dsttmp}" 0 && # and set any options; do chmod last to preserve setuid bits # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $instcmd $src $dsttmp" command. if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && # Now rename the file to the real destination. $doit $rmcmd -f $dstdir/$dstfile && $doit $mvcmd $dsttmp $dstdir/$dstfile fi && exit 0 openjade-1.3.2/config/ltmain.sh0100664000076400007640000041623207421552620014515 0ustar ianian# ltmain.sh - Provide generalized library-building support services. # NOTE: Changing this file will not affect anything until you rerun configure. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 # Free Software Foundation, Inc. # Originally by Gordon Matzigkeit , 1996 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Check that we have a working $echo. if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then # Yippee, $echo works! : else # Restart under the correct shell, and then maybe $echo will work. exec $SHELL "$0" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat <&2 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 exit 1 fi # Global variables. mode=$default_mode nonopt= prev= prevopt= run= show="$echo" show_help= execute_dlfiles= lo2o="s/\\.lo\$/.${objext}/" o2lo="s/\\.${objext}\$/.lo/" # Parse our command line options once, thoroughly. while test $# -gt 0 do arg="$1" shift case $arg in -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; *) optarg= ;; esac # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in execute_dlfiles) execute_dlfiles="$execute_dlfiles $arg" ;; *) eval "$prev=\$arg" ;; esac prev= prevopt= continue fi # Have we seen a non-optional argument yet? case $arg in --help) show_help=yes ;; --version) echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP" exit 0 ;; --config) sed -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $0 exit 0 ;; --debug) echo "$progname: enabling shell trace mode" set -x ;; --dry-run | -n) run=: ;; --features) echo "host: $host" if test "$build_libtool_libs" = yes; then echo "enable shared libraries" else echo "disable shared libraries" fi if test "$build_old_libs" = yes; then echo "enable static libraries" else echo "disable static libraries" fi exit 0 ;; --finish) mode="finish" ;; --mode) prevopt="--mode" prev=mode ;; --mode=*) mode="$optarg" ;; --quiet | --silent) show=: ;; -dlopen) prevopt="-dlopen" prev=execute_dlfiles ;; -*) $echo "$modename: unrecognized option \`$arg'" 1>&2 $echo "$help" 1>&2 exit 1 ;; *) nonopt="$arg" break ;; esac done if test -n "$prevopt"; then $echo "$modename: option \`$prevopt' requires an argument" 1>&2 $echo "$help" 1>&2 exit 1 fi if test -z "$show_help"; then # Infer the operation mode. if test -z "$mode"; then case $nonopt in *cc | *++ | gcc* | *-gcc*) mode=link for arg do case $arg in -c) mode=compile break ;; esac done ;; *db | *dbx | *strace | *truss) mode=execute ;; *install*|cp|mv) mode=install ;; *rm) mode=uninstall ;; *) # If we have no mode, but dlfiles were specified, then do execute mode. test -n "$execute_dlfiles" && mode=execute # Just use the default operation mode. if test -z "$mode"; then if test -n "$nonopt"; then $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 else $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 fi fi ;; esac fi # Only execute mode is allowed to have -dlopen flags. if test -n "$execute_dlfiles" && test "$mode" != execute; then $echo "$modename: unrecognized option \`-dlopen'" 1>&2 $echo "$help" 1>&2 exit 1 fi # Change the help message to a mode-specific one. generic_help="$help" help="Try \`$modename --help --mode=$mode' for more information." # These modes are in order of execution frequency so that they run quickly. case $mode in # libtool compile mode compile) modename="$modename: compile" # Get the compilation command and the source file. base_compile= prev= lastarg= srcfile="$nonopt" suppress_output= user_target=no for arg do case $prev in "") ;; xcompiler) # Aesthetically quote the previous argument. prev= lastarg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in # Double-quote args containing other shell metacharacters. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac # Add the previous argument to base_compile. if test -z "$base_compile"; then base_compile="$lastarg" else base_compile="$base_compile $lastarg" fi continue ;; esac # Accept any command-line options. case $arg in -o) if test "$user_target" != "no"; then $echo "$modename: you cannot specify \`-o' more than once" 1>&2 exit 1 fi user_target=next ;; -static) build_old_libs=yes continue ;; -prefer-pic) pic_mode=yes continue ;; -prefer-non-pic) pic_mode=no continue ;; -Xcompiler) prev=xcompiler continue ;; -Wc,*) args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` lastarg= IFS="${IFS= }"; save_ifs="$IFS"; IFS=',' for arg in $args; do IFS="$save_ifs" # Double-quote args containing other shell metacharacters. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac lastarg="$lastarg $arg" done IFS="$save_ifs" lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` # Add the arguments to base_compile. if test -z "$base_compile"; then base_compile="$lastarg" else base_compile="$base_compile $lastarg" fi continue ;; esac case $user_target in next) # The next one is the -o target name user_target=yes continue ;; yes) # We got the output file user_target=set libobj="$arg" continue ;; esac # Accept the current argument as the source file. lastarg="$srcfile" srcfile="$arg" # Aesthetically quote the previous argument. # Backslashify any backslashes, double quotes, and dollar signs. # These are the only characters that are still specially # interpreted inside of double-quoted scrings. lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` # Double-quote args containing other shell metacharacters. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. case $lastarg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") lastarg="\"$lastarg\"" ;; esac # Add the previous argument to base_compile. if test -z "$base_compile"; then base_compile="$lastarg" else base_compile="$base_compile $lastarg" fi done case $user_target in set) ;; no) # Get the name of the library object. libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` ;; *) $echo "$modename: you must specify a target with \`-o'" 1>&2 exit 1 ;; esac # Recognize several different file suffixes. # If the user specifies -o file.o, it is replaced with file.lo xform='[cCFSfmso]' case $libobj in *.ada) xform=ada ;; *.adb) xform=adb ;; *.ads) xform=ads ;; *.asm) xform=asm ;; *.c++) xform=c++ ;; *.cc) xform=cc ;; *.cpp) xform=cpp ;; *.cxx) xform=cxx ;; *.f90) xform=f90 ;; *.for) xform=for ;; esac libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` case $libobj in *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; *) $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 exit 1 ;; esac if test -z "$base_compile"; then $echo "$modename: you must specify a compilation command" 1>&2 $echo "$help" 1>&2 exit 1 fi # Delete any leftover library objects. if test "$build_old_libs" = yes; then removelist="$obj $libobj" else removelist="$libobj" fi $run $rm $removelist trap "$run $rm $removelist; exit 1" 1 2 15 # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in cygwin* | mingw* | pw32* | os2*) pic_mode=default ;; esac if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then # non-PIC code in shared libraries is not supported pic_mode=default fi # Calculate the filename of the output object if compiler does # not support -o with -c if test "$compiler_c_o" = no; then output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} lockfile="$output_obj.lock" removelist="$removelist $output_obj $lockfile" trap "$run $rm $removelist; exit 1" 1 2 15 else need_locks=no lockfile= fi # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test "$need_locks" = yes; then until $run ln "$0" "$lockfile" 2>/dev/null; do $show "Waiting for $lockfile to be removed" sleep 2 done elif test "$need_locks" = warn; then if test -f "$lockfile"; then echo "\ *** ERROR, $lockfile exists and contains: `cat $lockfile 2>/dev/null` This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $run $rm $removelist exit 1 fi echo $srcfile > "$lockfile" fi if test -n "$fix_srcfile_path"; then eval srcfile=\"$fix_srcfile_path\" fi # Only build a PIC object if we are building libtool libraries. if test "$build_libtool_libs" = yes; then # Without this assignment, base_compile gets emptied. fbsd_hideous_sh_bug=$base_compile if test "$pic_mode" != no; then # All platforms use -DPIC, to notify preprocessed assembler code. command="$base_compile $srcfile $pic_flag -DPIC" else # Don't build PIC code command="$base_compile $srcfile" fi if test "$build_old_libs" = yes; then lo_libobj="$libobj" dir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'` if test "X$dir" = "X$libobj"; then dir="$objdir" else dir="$dir/$objdir" fi libobj="$dir/"`$echo "X$libobj" | $Xsed -e 's%^.*/%%'` if test -d "$dir"; then $show "$rm $libobj" $run $rm $libobj else $show "$mkdir $dir" $run $mkdir $dir status=$? if test $status -ne 0 && test ! -d $dir; then exit $status fi fi fi if test "$compiler_o_lo" = yes; then output_obj="$libobj" command="$command -o $output_obj" elif test "$compiler_c_o" = yes; then output_obj="$obj" command="$command -o $output_obj" fi $run $rm "$output_obj" $show "$command" if $run eval "$command"; then : else test -n "$output_obj" && $run $rm $removelist exit 1 fi if test "$need_locks" = warn && test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then echo "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $run $rm $removelist exit 1 fi # Just move the object if needed, then go on to compile the next one if test x"$output_obj" != x"$libobj"; then $show "$mv $output_obj $libobj" if $run $mv $output_obj $libobj; then : else error=$? $run $rm $removelist exit $error fi fi # If we have no pic_flag, then copy the object into place and finish. if (test -z "$pic_flag" || test "$pic_mode" != default) && test "$build_old_libs" = yes; then # Rename the .lo from within objdir to obj if test -f $obj; then $show $rm $obj $run $rm $obj fi $show "$mv $libobj $obj" if $run $mv $libobj $obj; then : else error=$? $run $rm $removelist exit $error fi xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$obj"; then xdir="." else xdir="$xdir" fi baseobj=`$echo "X$obj" | $Xsed -e "s%.*/%%"` libobj=`$echo "X$baseobj" | $Xsed -e "$o2lo"` # Now arrange that obj and lo_libobj become the same file $show "(cd $xdir && $LN_S $baseobj $libobj)" if $run eval '(cd $xdir && $LN_S $baseobj $libobj)'; then exit 0 else error=$? $run $rm $removelist exit $error fi fi # Allow error messages only from the first compilation. suppress_output=' >/dev/null 2>&1' fi # Only build a position-dependent object if we build old libraries. if test "$build_old_libs" = yes; then if test "$pic_mode" != yes; then # Don't build PIC code command="$base_compile $srcfile" else # All platforms use -DPIC, to notify preprocessed assembler code. command="$base_compile $srcfile $pic_flag -DPIC" fi if test "$compiler_c_o" = yes; then command="$command -o $obj" output_obj="$obj" fi # Suppress compiler output if we already did a PIC compilation. command="$command$suppress_output" $run $rm "$output_obj" $show "$command" if $run eval "$command"; then : else $run $rm $removelist exit 1 fi if test "$need_locks" = warn && test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then echo "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $run $rm $removelist exit 1 fi # Just move the object if needed if test x"$output_obj" != x"$obj"; then $show "$mv $output_obj $obj" if $run $mv $output_obj $obj; then : else error=$? $run $rm $removelist exit $error fi fi # Create an invalid libtool object if no PIC, so that we do not # accidentally link it into a program. if test "$build_libtool_libs" != yes; then $show "echo timestamp > $libobj" $run eval "echo timestamp > \$libobj" || exit $? else # Move the .lo from within objdir $show "$mv $libobj $lo_libobj" if $run $mv $libobj $lo_libobj; then : else error=$? $run $rm $removelist exit $error fi fi fi # Unlock the critical section if it was locked if test "$need_locks" != no; then $run $rm "$lockfile" fi exit 0 ;; # libtool link mode link | relink) modename="$modename: link" case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out # which system we are compiling for in order to pass an extra # flag for every libtool invokation. # allow_undefined=no # FIXME: Unfortunately, there are problems with the above when trying # to make a dll which has undefined symbols, in which case not # even a static library is built. For now, we need to specify # -no-undefined on the libtool link line when we can be certain # that all symbols are satisfied, otherwise we get a static library. allow_undefined=yes ;; *) allow_undefined=yes ;; esac libtool_args="$nonopt" compile_command="$nonopt" finalize_command="$nonopt" compile_rpath= finalize_rpath= compile_shlibpath= finalize_shlibpath= convenience= old_convenience= deplibs= old_deplibs= compiler_flags= linker_flags= dllsearchpath= lib_search_path=`pwd` avoid_version=no dlfiles= dlprefiles= dlself=no export_dynamic=no export_symbols= export_symbols_regex= generated= libobjs= ltlibs= module=no no_install=no objs= prefer_static_libs=no preload=no prev= prevarg= release= rpath= xrpath= perm_rpath= temp_rpath= thread_safe=no vinfo= # We need to know -static, to get the right output filenames. for arg do case $arg in -all-static | -static) if test "X$arg" = "X-all-static"; then if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2 fi if test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi else if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi fi build_libtool_libs=no build_old_libs=yes prefer_static_libs=yes break ;; esac done # See if our shared archives depend on static archives. test -n "$old_archive_from_new_cmds" && build_old_libs=yes # Go through the arguments, transforming them on the way. while test $# -gt 0; do arg="$1" shift case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test ;; *) qarg=$arg ;; esac libtool_args="$libtool_args $qarg" # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in output) compile_command="$compile_command @OUTPUT@" finalize_command="$finalize_command @OUTPUT@" ;; esac case $prev in dlfiles|dlprefiles) if test "$preload" = no; then # Add the symbol object into the linking commands. compile_command="$compile_command @SYMFILE@" finalize_command="$finalize_command @SYMFILE@" preload=yes fi case $arg in *.la | *.lo) ;; # We handle these cases below. force) if test "$dlself" = no; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test "$prev" = dlprefiles; then dlself=yes elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test "$prev" = dlfiles; then dlfiles="$dlfiles $arg" else dlprefiles="$dlprefiles $arg" fi prev= continue ;; esac ;; expsyms) export_symbols="$arg" if test ! -f "$arg"; then $echo "$modename: symbol file \`$arg' does not exist" exit 1 fi prev= continue ;; expsyms_regex) export_symbols_regex="$arg" prev= continue ;; release) release="-$arg" prev= continue ;; rpath | xrpath) # We need an absolute path. case $arg in [\\/]* | [A-Za-z]:[\\/]*) ;; *) $echo "$modename: only absolute run-paths are allowed" 1>&2 exit 1 ;; esac if test "$prev" = rpath; then case "$rpath " in *" $arg "*) ;; *) rpath="$rpath $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; *) xrpath="$xrpath $arg" ;; esac fi prev= continue ;; xcompiler) compiler_flags="$compiler_flags $qarg" prev= compile_command="$compile_command $qarg" finalize_command="$finalize_command $qarg" continue ;; xlinker) linker_flags="$linker_flags $qarg" compiler_flags="$compiler_flags $wl$qarg" prev= compile_command="$compile_command $wl$qarg" finalize_command="$finalize_command $wl$qarg" continue ;; *) eval "$prev=\"\$arg\"" prev= continue ;; esac fi # test -n $prev prevarg="$arg" case $arg in -all-static) if test -n "$link_static_flag"; then compile_command="$compile_command $link_static_flag" finalize_command="$finalize_command $link_static_flag" fi continue ;; -allow-undefined) # FIXME: remove this flag sometime in the future. $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 continue ;; -avoid-version) avoid_version=yes continue ;; -dlopen) prev=dlfiles continue ;; -dlpreopen) prev=dlprefiles continue ;; -export-dynamic) export_dynamic=yes continue ;; -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then $echo "$modename: more than one -exported-symbols argument is not allowed" exit 1 fi if test "X$arg" = "X-export-symbols"; then prev=expsyms else prev=expsyms_regex fi continue ;; # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* # so, if we see these flags be careful not to treat them like -L -L[A-Z][A-Z]*:*) case $with_gcc/$host in no/*-*-irix*) compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" ;; esac continue ;; -L*) dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 exit 1 fi dir="$absdir" ;; esac case "$deplibs " in *" -L$dir "*) ;; *) deplibs="$deplibs -L$dir" lib_search_path="$lib_search_path $dir" ;; esac case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) case :$dllsearchpath: in *":$dir:"*) ;; *) dllsearchpath="$dllsearchpath:$dir";; esac ;; esac continue ;; -l*) if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then case $host in *-*-cygwin* | *-*-pw32* | *-*-beos*) # These systems don't actually have a C or math library (as such) continue ;; *-*-mingw* | *-*-os2*) # These systems don't actually have a C library (as such) test "X$arg" = "X-lc" && continue ;; esac fi deplibs="$deplibs $arg" continue ;; -module) module=yes continue ;; -no-fast-install) fast_install=no continue ;; -no-install) case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) # The PATH hackery in wrapper scripts is required on Windows # in order for the loader to find any dlls it needs. $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 fast_install=no ;; *) no_install=yes ;; esac continue ;; -no-undefined) allow_undefined=no continue ;; -o) prev=output ;; -release) prev=release continue ;; -rpath) prev=rpath continue ;; -R) prev=xrpath continue ;; -R*) dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) $echo "$modename: only absolute run-paths are allowed" 1>&2 exit 1 ;; esac case "$xrpath " in *" $dir "*) ;; *) xrpath="$xrpath $dir" ;; esac continue ;; -static) # The effects of -static are defined in a previous loop. # We used to do the same as -all-static on platforms that # didn't have a PIC flag, but the assumption that the effects # would be equivalent was wrong. It would break on at least # Digital Unix and AIX. continue ;; -thread-safe) thread_safe=yes continue ;; -version-info) prev=vinfo continue ;; -Wc,*) args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` arg= IFS="${IFS= }"; save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" case $flag in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") flag="\"$flag\"" ;; esac arg="$arg $wl$flag" compiler_flags="$compiler_flags $flag" done IFS="$save_ifs" arg=`$echo "X$arg" | $Xsed -e "s/^ //"` ;; -Wl,*) args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` arg= IFS="${IFS= }"; save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" case $flag in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") flag="\"$flag\"" ;; esac arg="$arg $wl$flag" compiler_flags="$compiler_flags $wl$flag" linker_flags="$linker_flags $flag" done IFS="$save_ifs" arg=`$echo "X$arg" | $Xsed -e "s/^ //"` ;; -Xcompiler) prev=xcompiler continue ;; -Xlinker) prev=xlinker continue ;; # Some other compiler flag. -* | +*) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac ;; *.lo | *.$objext) # A library or standard object. if test "$prev" = dlfiles; then # This file was specified with -dlopen. if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then dlfiles="$dlfiles $arg" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi if test "$prev" = dlprefiles; then # Preload the old-style object. dlprefiles="$dlprefiles "`$echo "X$arg" | $Xsed -e "$lo2o"` prev= else case $arg in *.lo) libobjs="$libobjs $arg" ;; *) objs="$objs $arg" ;; esac fi ;; *.$libext) # An archive. deplibs="$deplibs $arg" old_deplibs="$old_deplibs $arg" continue ;; *.la) # A libtool-controlled library. if test "$prev" = dlfiles; then # This library was specified with -dlopen. dlfiles="$dlfiles $arg" prev= elif test "$prev" = dlprefiles; then # The library was specified with -dlpreopen. dlprefiles="$dlprefiles $arg" prev= else deplibs="$deplibs $arg" fi continue ;; # Some other compiler argument. *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") arg="\"$arg\"" ;; esac ;; esac # arg # Now actually substitute the argument into the commands. if test -n "$arg"; then compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" fi done # argument parsing loop if test -n "$prev"; then $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 $echo "$help" 1>&2 exit 1 fi if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then eval arg=\"$export_dynamic_flag_spec\" compile_command="$compile_command $arg" finalize_command="$finalize_command $arg" fi # calculate the name of the file, without its directory outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` libobjs_save="$libobjs" if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` else shlib_search_path= fi eval sys_lib_search_path=\"$sys_lib_search_path_spec\" eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` if test "X$output_objdir" = "X$output"; then output_objdir="$objdir" else output_objdir="$output_objdir/$objdir" fi # Create the object directory. if test ! -d $output_objdir; then $show "$mkdir $output_objdir" $run $mkdir $output_objdir status=$? if test $status -ne 0 && test ! -d $output_objdir; then exit $status fi fi # Determine the type of output case $output in "") $echo "$modename: you must specify an output file" 1>&2 $echo "$help" 1>&2 exit 1 ;; *.$libext) linkmode=oldlib ;; *.lo | *.$objext) linkmode=obj ;; *.la) linkmode=lib ;; *) linkmode=prog ;; # Anything else should be a program. esac specialdeplibs= libs= # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do case "$libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac libs="$libs $deplib" done deplibs= newdependency_libs= newlib_search_path= need_relink=no # whether we're linking any uninstalled libtool libraries notinst_deplibs= # not-installed libtool libraries notinst_path= # paths that contain not-installed libtool libraries case $linkmode in lib) passes="conv link" for file in $dlfiles $dlprefiles; do case $file in *.la) ;; *) $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 exit 1 ;; esac done ;; prog) compile_deplibs= finalize_deplibs= alldeplibs=no newdlfiles= newdlprefiles= passes="conv scan dlopen dlpreopen link" ;; *) passes="conv" ;; esac for pass in $passes; do if test "$linkmode" = prog; then # Determine which files to process case $pass in dlopen) libs="$dlfiles" save_deplibs="$deplibs" # Collect dlpreopened libraries deplibs= ;; dlpreopen) libs="$dlprefiles" ;; link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; esac fi for deplib in $libs; do lib= found=no case $deplib in -l*) if test "$linkmode" = oldlib && test "$linkmode" = obj; then $echo "$modename: warning: \`-l' is ignored for archives/objects: $deplib" 1>&2 continue fi if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do # Search the libtool library lib="$searchdir/lib${name}.la" if test -f "$lib"; then found=yes break fi done if test "$found" != yes; then # deplib doesn't seem to be a libtool library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue fi ;; # -l -L*) case $linkmode in lib) deplibs="$deplib $deplibs" test "$pass" = conv && continue newdependency_libs="$deplib $newdependency_libs" newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` ;; prog) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi if test "$pass" = scan; then deplibs="$deplib $deplibs" newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi ;; *) $echo "$modename: warning: \`-L' is ignored for archives/objects: $deplib" 1>&2 ;; esac # linkmode continue ;; # -L -R*) if test "$pass" = link; then dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` # Make sure the xrpath contains only unique directories. case "$xrpath " in *" $dir "*) ;; *) xrpath="$xrpath $dir" ;; esac fi deplibs="$deplib $deplibs" continue ;; *.la) lib="$deplib" ;; *.$libext) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi case $linkmode in lib) if test "$deplibs_check_method" != pass_all; then echo echo "*** Warning: This library needs some functionality provided by $deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have." else echo echo "*** Warning: Linking the shared library $output against the" echo "*** static library $deplib is not portable!" deplibs="$deplib $deplibs" fi continue ;; prog) if test "$pass" != link; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi continue ;; esac # linkmode ;; # *.$libext *.lo | *.$objext) if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlopen support or we're linking statically, # we need to preload. newdlprefiles="$newdlprefiles $deplib" compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else newdlfiles="$newdlfiles $deplib" fi continue ;; %DEPLIBS%) alldeplibs=yes continue ;; esac # case $deplib if test $found = yes || test -f "$lib"; then : else $echo "$modename: cannot find the library \`$lib'" 1>&2 exit 1 fi # Check to see that this really is a libtool archive. if (sed -e '2q' $lib | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : else $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 exit 1 fi ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` test "X$ladir" = "X$lib" && ladir="." dlname= dlopen= dlpreopen= libdir= library_names= old_library= # If the library was installed with an old release of libtool, # it will not redefine variable installed. installed=yes # Read the .la file case $lib in */* | *\\*) . $lib ;; *) . ./$lib ;; esac if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan" || { test "$linkmode" = oldlib && test "$linkmode" = obj; }; then # Add dl[pre]opened files of deplib test -n "$dlopen" && dlfiles="$dlfiles $dlopen" test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" fi if test "$pass" = conv; then # Only check for convenience libraries deplibs="$lib $deplibs" if test -z "$libdir"; then if test -z "$old_library"; then $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 exit 1 fi # It is a libtool convenience library, so add in its objects. convenience="$convenience $ladir/$objdir/$old_library" old_convenience="$old_convenience $ladir/$objdir/$old_library" tmp_libs= for deplib in $dependency_libs; do deplibs="$deplib $deplibs" case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac tmp_libs="$tmp_libs $deplib" done elif test "$linkmode" != prog && test "$linkmode" != lib; then $echo "$modename: \`$lib' is not a convenience library" 1>&2 exit 1 fi continue fi # $pass = conv # Get the name of the library we link against. linklib= for l in $old_library $library_names; do linklib="$l" done if test -z "$linklib"; then $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 exit 1 fi # This library was specified with -dlopen. if test "$pass" = dlopen; then if test -z "$libdir"; then $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 exit 1 fi if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlname, no dlopen support or we're linking # statically, we need to preload. dlprefiles="$dlprefiles $lib" else newdlfiles="$newdlfiles $lib" fi continue fi # $pass = dlopen # We need an absolute path. case $ladir in [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; *) abs_ladir=`cd "$ladir" && pwd` if test -z "$abs_ladir"; then $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2 $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 abs_ladir="$ladir" fi ;; esac laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` # Find the relevant object directory and library name. if test "X$installed" = Xyes; then if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then $echo "$modename: warning: library \`$lib' was moved." 1>&2 dir="$ladir" absdir="$abs_ladir" libdir="$abs_ladir" else dir="$libdir" absdir="$libdir" fi else dir="$ladir/$objdir" absdir="$abs_ladir/$objdir" # Remove this search path later notinst_path="$notinst_path $abs_ladir" fi # $installed = yes name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` # This library was specified with -dlpreopen. if test "$pass" = dlpreopen; then if test -z "$libdir"; then $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 exit 1 fi # Prefer using a static library (so that no silly _DYNAMIC symbols # are required to link). if test -n "$old_library"; then newdlprefiles="$newdlprefiles $dir/$old_library" # Otherwise, use the dlname, so that lt_dlopen finds it. elif test -n "$dlname"; then newdlprefiles="$newdlprefiles $dir/$dlname" else newdlprefiles="$newdlprefiles $dir/$linklib" fi fi # $pass = dlpreopen if test -z "$libdir"; then # Link the convenience library if test "$linkmode" = lib; then deplibs="$dir/$old_library $deplibs" elif test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$dir/$old_library $compile_deplibs" finalize_deplibs="$dir/$old_library $finalize_deplibs" else deplibs="$lib $deplibs" fi continue fi if test "$linkmode" = prog && test "$pass" != link; then newlib_search_path="$newlib_search_path $ladir" deplibs="$lib $deplibs" linkalldeplibs=no if test "$link_all_deplibs" != no || test -z "$library_names" || test "$build_libtool_libs" = no; then linkalldeplibs=yes fi tmp_libs= for deplib in $dependency_libs; do case $deplib in -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test esac # Need to link against all dependency_libs? if test $linkalldeplibs = yes; then deplibs="$deplib $deplibs" else # Need to hardcode shared library paths # or/and link against static libraries newdependency_libs="$deplib $newdependency_libs" fi case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac tmp_libs="$tmp_libs $deplib" done # for deplib continue fi # $linkmode = prog... link_static=no # Whether the deplib will be linked statically if test -n "$library_names" && { test "$prefer_static_libs" = no || test -z "$old_library"; }; then # Link against this shared library if test "$linkmode,$pass" = "prog,link" || { test "$linkmode" = lib && test "$hardcode_into_libs" = yes; }; then # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) compile_rpath="$compile_rpath $absdir" esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" esac ;; esac if test "$linkmode" = prog; then # We need to hardcode the library path if test -n "$shlibpath_var"; then # Make sure the rpath contains only unique directories. case "$temp_rpath " in *" $dir "*) ;; *" $absdir "*) ;; *) temp_rpath="$temp_rpath $dir" ;; esac fi fi fi # $linkmode,$pass = prog,link... if test "$alldeplibs" = yes && { test "$deplibs_check_method" = pass_all || { test "$build_libtool_libs" = yes && test -n "$library_names"; }; }; then # We only need to search for static libraries continue fi if test "$installed" = no; then notinst_deplibs="$notinst_deplibs $lib" need_relink=yes fi if test -n "$old_archive_from_expsyms_cmds"; then # figure out the soname set dummy $library_names realname="$2" shift; shift libname=`eval \\$echo \"$libname_spec\"` # use dlname if we got it. it's perfectly good, no? if test -n "$dlname"; then soname="$dlname" elif test -n "$soname_spec"; then # bleh windows case $host in *cygwin*) major=`expr $current - $age` versuffix="-$major" ;; esac eval soname=\"$soname_spec\" else soname="$realname" fi # Make a new name for the extract_expsyms_cmds to use soroot="$soname" soname=`echo $soroot | sed -e 's/^.*\///'` newlib="libimp-`echo $soname | sed 's/^lib//;s/\.dll$//'`.a" # If the library has no export list, then create one now if test -f "$output_objdir/$soname-def"; then : else $show "extracting exported symbol list from \`$soname'" IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' eval cmds=\"$extract_expsyms_cmds\" for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" fi # Create $newlib if test -f "$output_objdir/$newlib"; then :; else $show "generating import library for \`$soname'" IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' eval cmds=\"$old_archive_from_expsyms_cmds\" for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" fi # make sure the library variables are pointing to the new library dir=$output_objdir linklib=$newlib fi # test -n $old_archive_from_expsyms_cmds if test "$linkmode" = prog || test "$mode" != relink; then add_shlibpath= add_dir= add= lib_linked=yes case $hardcode_action in immediate | unsupported) if test "$hardcode_direct" = no; then add="$dir/$linklib" elif test "$hardcode_minus_L" = no; then case $host in *-*-sunos*) add_shlibpath="$dir" ;; esac add_dir="-L$dir" add="-l$name" elif test "$hardcode_shlibpath_var" = no; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; relink) if test "$hardcode_direct" = yes; then add="$dir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$dir" add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; *) lib_linked=no ;; esac if test "$lib_linked" != yes; then $echo "$modename: configuration error: unsupported hardcode properties" exit 1 fi if test -n "$add_shlibpath"; then case :$compile_shlibpath: in *":$add_shlibpath:"*) ;; *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; esac fi if test "$linkmode" = prog; then test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" test -n "$add" && compile_deplibs="$add $compile_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" if test "$hardcode_direct" != yes && \ test "$hardcode_minus_L" != yes && \ test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; esac fi fi fi if test "$linkmode" = prog || test "$mode" = relink; then add_shlibpath= add_dir= add= # Finalize command for both is simple: just hardcode it. if test "$hardcode_direct" = yes; then add="$libdir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$libdir" add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; esac add="-l$name" else # We cannot seem to hardcode it, guess we'll fake it. add_dir="-L$libdir" add="-l$name" fi if test "$linkmode" = prog; then test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" test -n "$add" && finalize_deplibs="$add $finalize_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" fi fi elif test "$linkmode" = prog; then if test "$alldeplibs" = yes && { test "$deplibs_check_method" = pass_all || { test "$build_libtool_libs" = yes && test -n "$library_names"; }; }; then # We only need to search for static libraries continue fi # Try to link the static library # Here we assume that one of hardcode_direct or hardcode_minus_L # is not unsupported. This is valid on all known static and # shared platforms. if test "$hardcode_direct" != unsupported; then test -n "$old_library" && linklib="$old_library" compile_deplibs="$dir/$linklib $compile_deplibs" finalize_deplibs="$dir/$linklib $finalize_deplibs" else compile_deplibs="-l$name -L$dir $compile_deplibs" finalize_deplibs="-l$name -L$dir $finalize_deplibs" fi elif test "$build_libtool_libs" = yes; then # Not a shared library if test "$deplibs_check_method" != pass_all; then # We're trying link a shared library against a static one # but the system doesn't support it. # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. echo echo "*** Warning: This library needs some functionality provided by $lib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have." if test "$module" = yes; then echo "*** Therefore, libtool will create a static module, that should work " echo "*** as long as the dlopening application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using \`nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi else convenience="$convenience $dir/$old_library" old_convenience="$old_convenience $dir/$old_library" deplibs="$dir/$old_library $deplibs" link_static=yes fi fi # link shared/static library? if test "$linkmode" = lib; then if test -n "$dependency_libs" && { test "$hardcode_into_libs" != yes || test $build_old_libs = yes || test $link_static = yes; }; then # Extract -R from dependency_libs temp_deplibs= for libdir in $dependency_libs; do case $libdir in -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'` case " $xrpath " in *" $temp_xrpath "*) ;; *) xrpath="$xrpath $temp_xrpath";; esac;; *) temp_deplibs="$temp_deplibs $libdir";; esac done dependency_libs="$temp_deplibs" fi newlib_search_path="$newlib_search_path $absdir" # Link against this library test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do newdependency_libs="$deplib $newdependency_libs" case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac tmp_libs="$tmp_libs $deplib" done if test "$link_all_deplibs" != no; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do case $deplib in -L*) path="$deplib" ;; *.la) dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'` test "X$dir" = "X$deplib" && dir="." # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 absdir="$dir" fi ;; esac if grep "^installed=no" $deplib > /dev/null; then path="-L$absdir/$objdir" else eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` if test -z "$libdir"; then $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 exit 1 fi if test "$absdir" != "$libdir"; then $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 fi path="-L$absdir" fi ;; *) continue ;; esac case " $deplibs " in *" $path "*) ;; *) deplibs="$deplibs $path" ;; esac done fi # link_all_deplibs != no fi # linkmode = lib done # for deplib in $libs if test "$pass" = dlpreopen; then # Link the dlpreopened libraries before other libraries for deplib in $save_deplibs; do deplibs="$deplib $deplibs" done fi if test "$pass" != dlopen; then test "$pass" != scan && dependency_libs="$newdependency_libs" if test "$pass" != conv; then # Make sure lib_search_path contains only unique directories. lib_search_path= for dir in $newlib_search_path; do case "$lib_search_path " in *" $dir "*) ;; *) lib_search_path="$lib_search_path $dir" ;; esac done newlib_search_path= fi if test "$linkmode,$pass" != "prog,link"; then vars="deplibs" else vars="compile_deplibs finalize_deplibs" fi for var in $vars dependency_libs; do # Add libraries to $var in reverse order eval tmp_libs=\"\$$var\" new_libs= for deplib in $tmp_libs; do case $deplib in -L*) new_libs="$deplib $new_libs" ;; *) case " $specialdeplibs " in *" $deplib "*) new_libs="$deplib $new_libs" ;; *) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$deplib $new_libs" ;; esac ;; esac ;; esac done tmp_libs= for deplib in $new_libs; do case $deplib in -L*) case " $tmp_libs " in *" $deplib "*) ;; *) tmp_libs="$tmp_libs $deplib" ;; esac ;; *) tmp_libs="$tmp_libs $deplib" ;; esac done eval $var=\"$tmp_libs\" done # for var fi if test "$pass" = "conv" && { test "$linkmode" = "lib" || test "$linkmode" = "prog"; }; then libs="$deplibs" # reset libs deplibs= fi done # for pass if test "$linkmode" = prog; then dlfiles="$newdlfiles" dlprefiles="$newdlprefiles" fi case $linkmode in oldlib) if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 fi if test -n "$rpath"; then $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 fi if test -n "$xrpath"; then $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 fi if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info' is ignored for archives" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 fi if test -n "$export_symbols" || test -n "$export_symbols_regex"; then $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 fi # Now set the variables for building old libraries. build_libtool_libs=no oldlibs="$output" objs="$objs$old_deplibs" ;; lib) # Make sure we only generate libraries of the form `libNAME.la'. case $outputname in lib*) name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` eval libname=\"$libname_spec\" ;; *) if test "$module" = no; then $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 $echo "$help" 1>&2 exit 1 fi if test "$need_lib_prefix" != no; then # Add the "lib" prefix for modules if required name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` eval libname=\"$libname_spec\" else libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` fi ;; esac if test -n "$objs"; then if test "$deplibs_check_method" != pass_all; then $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 exit 1 else echo echo "*** Warning: Linking the shared library $output against the non-libtool" echo "*** objects $objs is not portable!" libobjs="$libobjs $objs" fi fi if test "$dlself" != no; then $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2 fi set dummy $rpath if test $# -gt 2; then $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 fi install_libdir="$2" oldlibs= if test -z "$rpath"; then if test "$build_libtool_libs" = yes; then # Building a libtool convenience library. libext=al oldlibs="$output_objdir/$libname.$libext $oldlibs" build_libtool_libs=convenience build_old_libs=yes fi if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info' is ignored for convenience libraries" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 fi else # Parse the version information argument. IFS="${IFS= }"; save_ifs="$IFS"; IFS=':' set dummy $vinfo 0 0 0 IFS="$save_ifs" if test -n "$8"; then $echo "$modename: too many parameters to \`-version-info'" 1>&2 $echo "$help" 1>&2 exit 1 fi current="$2" revision="$3" age="$4" # Check that each of the things are valid numbers. case $current in 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; *) $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit 1 ;; esac case $revision in 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; *) $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit 1 ;; esac case $age in 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; *) $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit 1 ;; esac if test $age -gt $current; then $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 $echo "$modename: \`$vinfo' is not valid version information" 1>&2 exit 1 fi # Calculate the version variables. major= versuffix= verstring= case $version_type in none) ;; darwin) # Like Linux, but with the current version available in # verstring for coding it into the library header major=.`expr $current - $age` versuffix="$major.$age.$revision" # Darwin ld doesn't like 0 for these options... minor_current=`expr $current + 1` verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" ;; freebsd-aout) major=".$current" versuffix=".$current.$revision"; ;; freebsd-elf) major=".$current" versuffix=".$current"; ;; irix) major=`expr $current - $age + 1` verstring="sgi$major.$revision" # Add in all the interfaces that we are compatible with. loop=$revision while test $loop != 0; do iface=`expr $revision - $loop` loop=`expr $loop - 1` verstring="sgi$major.$iface:$verstring" done # Before this point, $major must not contain `.'. major=.$major versuffix="$major.$revision" ;; linux) major=.`expr $current - $age` versuffix="$major.$age.$revision" ;; osf) major=`expr $current - $age` versuffix=".$current.$age.$revision" verstring="$current.$age.$revision" # Add in all the interfaces that we are compatible with. loop=$age while test $loop != 0; do iface=`expr $current - $loop` loop=`expr $loop - 1` verstring="$verstring:${iface}.0" done # Make executables depend on our current version. verstring="$verstring:${current}.0" ;; sunos) major=".$current" versuffix=".$current.$revision" ;; windows) # Use '-' rather than '.', since we only want one # extension on DOS 8.3 filesystems. major=`expr $current - $age` versuffix="-$major" ;; *) $echo "$modename: unknown library version type \`$version_type'" 1>&2 echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 exit 1 ;; esac # Clear the version info if we defaulted, and they specified a release. if test -z "$vinfo" && test -n "$release"; then major= verstring="0.0" if test "$need_version" = no; then versuffix= else versuffix=".0.0" fi fi # Remove version info from name if versioning should be avoided if test "$avoid_version" = yes && test "$need_version" = no; then major= versuffix= verstring="" fi # Check to see if the archive will have undefined symbols. if test "$allow_undefined" = yes; then if test "$allow_undefined_flag" = unsupported; then $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 build_libtool_libs=no build_old_libs=yes fi else # Don't allow undefined symbols. allow_undefined_flag="$no_undefined_flag" fi fi if test "$mode" != relink; then # Remove our outputs. $show "${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*" $run ${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.* fi # Now set the variables for building old libraries. if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then oldlibs="$oldlibs $output_objdir/$libname.$libext" # Transform .lo files to .o files. oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` fi # Eliminate all temporary directories. for path in $notinst_path; do lib_search_path=`echo "$lib_search_path " | sed -e 's% $path % %g'` deplibs=`echo "$deplibs " | sed -e 's% -L$path % %g'` dependency_libs=`echo "$dependency_libs " | sed -e 's% -L$path % %g'` done if test -n "$xrpath"; then # If the user specified any rpath flags, then add them. temp_xrpath= for libdir in $xrpath; do temp_xrpath="$temp_xrpath -R$libdir" case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" ;; esac done if test $hardcode_into_libs != yes || test $build_old_libs = yes; then dependency_libs="$temp_xrpath $dependency_libs" fi fi # Make sure dlfiles contains only unique files that won't be dlpreopened old_dlfiles="$dlfiles" dlfiles= for lib in $old_dlfiles; do case " $dlprefiles $dlfiles " in *" $lib "*) ;; *) dlfiles="$dlfiles $lib" ;; esac done # Make sure dlprefiles contains only unique files old_dlprefiles="$dlprefiles" dlprefiles= for lib in $old_dlprefiles; do case "$dlprefiles " in *" $lib "*) ;; *) dlprefiles="$dlprefiles $lib" ;; esac done if test "$build_libtool_libs" = yes; then if test -n "$rpath"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C library is in the System framework deplibs="$deplibs -framework System" ;; *-*-netbsd*) # Don't link with libc until the a.out ld.so is fixed. ;; *) # Add libc to deplibs on all other systems if necessary. if test "$build_libtool_need_lc" = "yes"; then deplibs="$deplibs -lc" fi ;; esac fi # Transform deplibs into only deplibs that can be linked in shared. name_save=$name libname_save=$libname release_save=$release versuffix_save=$versuffix major_save=$major # I'm not sure if I'm treating the release correctly. I think # release should show up in the -l (ie -lgmp5) so we don't want to # add it in twice. Is that correct? release="" versuffix="" major="" newdeplibs= droppeddeps=no case $deplibs_check_method in pass_all) # Don't check for shared/static. Everything works. # This might be a little naive. We might want to check # whether the library exists or not. But this is on # osf3 & osf4 and I'm not really sure... Just # implementing what was already the behaviour. newdeplibs=$deplibs ;; test_compile) # This code stresses the "libraries are programs" paradigm to its # limits. Maybe even breaks it. We compile a program, linking it # against the deplibs as a proxy for the library. Then we can check # whether they linked in statically or dynamically with ldd. $rm conftest.c cat > conftest.c </dev/null` for potent_lib in $potential_libs; do # Follow soft links. if ls -lLd "$potent_lib" 2>/dev/null \ | grep " -> " >/dev/null; then continue fi # The statement above tries to avoid entering an # endless loop below, in case of cyclic links. # We might still enter an endless loop, since a link # loop can be closed while we follow links, # but so what? potlib="$potent_lib" while test -h "$potlib" 2>/dev/null; do potliblink=`ls -ld $potlib | sed 's/.* -> //'` case $potliblink in [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ | sed 10q \ | egrep "$file_magic_regex" > /dev/null; then newdeplibs="$newdeplibs $a_deplib" a_deplib="" break 2 fi done done if test -n "$a_deplib" ; then droppeddeps=yes echo echo "*** Warning: This library needs some functionality provided by $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have." fi else # Add a -L argument. newdeplibs="$newdeplibs $a_deplib" fi done # Gone through all deplibs. ;; match_pattern*) set dummy $deplibs_check_method match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` for a_deplib in $deplibs; do name="`expr $a_deplib : '-l\(.*\)'`" # If $name is empty we are operating on a -L argument. if test -n "$name" && test "$name" != "0"; then libname=`eval \\$echo \"$libname_spec\"` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do if eval echo \"$potent_lib\" 2>/dev/null \ | sed 10q \ | egrep "$match_pattern_regex" > /dev/null; then newdeplibs="$newdeplibs $a_deplib" a_deplib="" break 2 fi done done if test -n "$a_deplib" ; then droppeddeps=yes echo echo "*** Warning: This library needs some functionality provided by $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have." fi else # Add a -L argument. newdeplibs="$newdeplibs $a_deplib" fi done # Gone through all deplibs. ;; none | unknown | *) newdeplibs="" if $echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ -e 's/ -[LR][^ ]*//g' -e 's/[ ]//g' | grep . >/dev/null; then echo if test "X$deplibs_check_method" = "Xnone"; then echo "*** Warning: inter-library dependencies are not supported in this platform." else echo "*** Warning: inter-library dependencies are not known to be supported." fi echo "*** All declared inter-library dependencies are being dropped." droppeddeps=yes fi ;; esac versuffix=$versuffix_save major=$major_save release=$release_save libname=$libname_save name=$name_save case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'` ;; esac if test "$droppeddeps" = yes; then if test "$module" = yes; then echo echo "*** Warning: libtool could not satisfy all declared inter-library" echo "*** dependencies of module $libname. Therefore, libtool will create" echo "*** a static module, that should work as long as the dlopening" echo "*** application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using \`nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi else echo "*** The inter-library dependencies that have been dropped here will be" echo "*** automatically added whenever a program is linked with this library" echo "*** or is declared to -dlopen it." if test $allow_undefined = no; then echo echo "*** Since this library must not contain undefined symbols," echo "*** because either the platform does not support them or" echo "*** it was explicitly requested with -no-undefined," echo "*** libtool will only create a static version of it." if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi fi fi # Done checking deplibs! deplibs=$newdeplibs fi # All the library-specific variables (install_libdir is set above). library_names= old_library= dlname= # Test again, we may have decided not to build it any more if test "$build_libtool_libs" = yes; then if test "$hardcode_into_libs" = yes; then # Hardcode the library paths hardcode_libdirs= dep_rpath= rpath="$finalize_rpath" test "$mode" != relink && rpath="$compile_rpath$rpath" for libdir in $rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" dep_rpath="$dep_rpath $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) perm_rpath="$perm_rpath $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval dep_rpath=\"$hardcode_libdir_flag_spec\" fi if test -n "$runpath_var" && test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do rpath="$rpath$dir:" done eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" fi test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" fi shlibpath="$finalize_shlibpath" test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" if test -n "$shlibpath"; then eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" fi # Get the real and link names of the library. eval library_names=\"$library_names_spec\" set dummy $library_names realname="$2" shift; shift if test -n "$soname_spec"; then eval soname=\"$soname_spec\" else soname="$realname" fi test -z "$dlname" && dlname=$soname lib="$output_objdir/$realname" for link do linknames="$linknames $link" done # Ensure that we have .o objects for linkers which dislike .lo # (e.g. aix) in case we are running --disable-static for obj in $libobjs; do xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$obj"; then xdir="." else xdir="$xdir" fi baseobj=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"` if test ! -f $xdir/$oldobj; then $show "(cd $xdir && ${LN_S} $baseobj $oldobj)" $run eval '(cd $xdir && ${LN_S} $baseobj $oldobj)' || exit $? fi done # Use standard objects if they are pic test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` # Prepare the list of exported symbols if test -z "$export_symbols"; then if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then $show "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $run $rm $export_symbols eval cmds=\"$export_symbols_cmds\" IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" if test -n "$export_symbols_regex"; then $show "egrep -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" $run eval 'egrep -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' $show "$mv \"${export_symbols}T\" \"$export_symbols\"" $run eval '$mv "${export_symbols}T" "$export_symbols"' fi fi fi if test -n "$export_symbols" && test -n "$include_expsyms"; then $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' fi if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval libobjs=\"\$libobjs $whole_archive_flag_spec\" else gentop="$output_objdir/${outputname}x" $show "${rm}r $gentop" $run ${rm}r "$gentop" $show "mkdir $gentop" $run mkdir "$gentop" status=$? if test $status -ne 0 && test ! -d "$gentop"; then exit $status fi generated="$generated $gentop" for xlib in $convenience; do # Extract the objects. case $xlib in [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; *) xabs=`pwd`"/$xlib" ;; esac xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` xdir="$gentop/$xlib" $show "${rm}r $xdir" $run ${rm}r "$xdir" $show "mkdir $xdir" $run mkdir "$xdir" status=$? if test $status -ne 0 && test ! -d "$xdir"; then exit $status fi $show "(cd $xdir && $AR x $xabs)" $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? libobjs="$libobjs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP` done fi fi if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" linker_flags="$linker_flags $flag" fi # Make a backup of the uninstalled library when relinking if test "$mode" = relink; then $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? fi # Do each of the archive commands. if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then eval cmds=\"$archive_expsym_cmds\" else eval cmds=\"$archive_cmds\" fi IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" # Restore the uninstalled library and exit if test "$mode" = relink; then $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? exit 0 fi # Create links to the real library. for linkname in $linknames; do if test "$realname" != "$linkname"; then $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? fi done # If -module or -export-dynamic was specified, set the dlname. if test "$module" = yes || test "$export_dynamic" = yes; then # On all known operating systems, these are identical. dlname="$soname" fi fi ;; obj) if test -n "$deplibs"; then $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 fi if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 fi if test -n "$rpath"; then $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 fi if test -n "$xrpath"; then $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 fi if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 fi case $output in *.lo) if test -n "$objs$old_deplibs"; then $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 exit 1 fi libobj="$output" obj=`$echo "X$output" | $Xsed -e "$lo2o"` ;; *) libobj= obj="$output" ;; esac # Delete the old objects. $run $rm $obj $libobj # Objects from convenience libraries. This assumes # single-version convenience libraries. Whenever we create # different ones for PIC/non-PIC, this we'll have to duplicate # the extraction. reload_conv_objs= gentop= # reload_cmds runs $LD directly, so let us get rid of # -Wl from whole_archive_flag_spec wl= if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\" else gentop="$output_objdir/${obj}x" $show "${rm}r $gentop" $run ${rm}r "$gentop" $show "mkdir $gentop" $run mkdir "$gentop" status=$? if test $status -ne 0 && test ! -d "$gentop"; then exit $status fi generated="$generated $gentop" for xlib in $convenience; do # Extract the objects. case $xlib in [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; *) xabs=`pwd`"/$xlib" ;; esac xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` xdir="$gentop/$xlib" $show "${rm}r $xdir" $run ${rm}r "$xdir" $show "mkdir $xdir" $run mkdir "$xdir" status=$? if test $status -ne 0 && test ! -d "$xdir"; then exit $status fi $show "(cd $xdir && $AR x $xabs)" $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? reload_conv_objs="$reload_objs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP` done fi fi # Create the old-style object. reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test output="$obj" eval cmds=\"$reload_cmds\" IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" # Exit if we aren't doing a library object file. if test -z "$libobj"; then if test -n "$gentop"; then $show "${rm}r $gentop" $run ${rm}r $gentop fi exit 0 fi if test "$build_libtool_libs" != yes; then if test -n "$gentop"; then $show "${rm}r $gentop" $run ${rm}r $gentop fi # Create an invalid libtool object if no PIC, so that we don't # accidentally link it into a program. $show "echo timestamp > $libobj" $run eval "echo timestamp > $libobj" || exit $? exit 0 fi if test -n "$pic_flag" || test "$pic_mode" != default; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" output="$libobj" eval cmds=\"$reload_cmds\" IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" else # Just create a symlink. $show $rm $libobj $run $rm $libobj xdir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$libobj"; then xdir="." else xdir="$xdir" fi baseobj=`$echo "X$libobj" | $Xsed -e 's%^.*/%%'` oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"` $show "(cd $xdir && $LN_S $oldobj $baseobj)" $run eval '(cd $xdir && $LN_S $oldobj $baseobj)' || exit $? fi if test -n "$gentop"; then $show "${rm}r $gentop" $run ${rm}r $gentop fi exit 0 ;; prog) case $host in *cygwin*) output=`echo $output | sed -e 's,.exe$,,;s,$,.exe,'` ;; esac if test -n "$vinfo"; then $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 fi if test -n "$release"; then $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 fi if test "$preload" = yes; then if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown && test "$dlopen_self_static" = unknown; then $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." fi fi case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'` finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'` ;; esac compile_command="$compile_command $compile_deplibs" finalize_command="$finalize_command $finalize_deplibs" if test -n "$rpath$xrpath"; then # If the user specified any rpath flags, then add them. for libdir in $rpath $xrpath; do # This is the magic to use -rpath. case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" ;; esac done fi # Now hardcode the library paths rpath= hardcode_libdirs= for libdir in $compile_rpath $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" rpath="$rpath $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) perm_rpath="$perm_rpath $libdir" ;; esac fi case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) case :$dllsearchpath: in *":$libdir:"*) ;; *) dllsearchpath="$dllsearchpath:$libdir";; esac ;; esac done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi compile_rpath="$rpath" rpath= hardcode_libdirs= for libdir in $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" rpath="$rpath $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi finalize_rpath="$rpath" if test -n "$libobjs" && test "$build_old_libs" = yes; then # Transform all the library objects into standard objects. compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` fi dlsyms= if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then if test -n "$NM" && test -n "$global_symbol_pipe"; then dlsyms="${outputname}S.c" else $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 fi fi if test -n "$dlsyms"; then case $dlsyms in "") ;; *.c) # Discover the nlist of each of the dlfiles. nlist="$output_objdir/${outputname}.nm" $show "$rm $nlist ${nlist}S ${nlist}T" $run $rm "$nlist" "${nlist}S" "${nlist}T" # Parse the name list into a source file. $show "creating $output_objdir/$dlsyms" test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ /* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ /* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ #ifdef __cplusplus extern \"C\" { #endif /* Prevent the only kind of declaration conflicts we can make. */ #define lt_preloaded_symbols some_other_symbol /* External symbol declarations for the compiler. */\ " if test "$dlself" = yes; then $show "generating symbol list for \`$output'" test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` for arg in $progfiles; do $show "extracting global C symbols from \`$arg'" $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then $run eval 'egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' $run eval '$mv "$nlist"T "$nlist"' fi if test -n "$export_symbols_regex"; then $run eval 'egrep -e "$export_symbols_regex" "$nlist" > "$nlist"T' $run eval '$mv "$nlist"T "$nlist"' fi # Prepare the list of exported symbols if test -z "$export_symbols"; then export_symbols="$output_objdir/$output.exp" $run $rm $export_symbols $run eval "sed -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' else $run eval "sed -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"' $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T' $run eval 'mv "$nlist"T "$nlist"' fi fi for arg in $dlprefiles; do $show "extracting global C symbols from \`$arg'" name=`echo "$arg" | sed -e 's%^.*/%%'` $run eval 'echo ": $name " >> "$nlist"' $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" done if test -z "$run"; then # Make sure we have at least an empty file. test -f "$nlist" || : > "$nlist" if test -n "$exclude_expsyms"; then egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T $mv "$nlist"T "$nlist" fi # Try sorting and uniquifying the output. if grep -v "^: " < "$nlist" | sort +2 | uniq > "$nlist"S; then : else grep -v "^: " < "$nlist" > "$nlist"S fi if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' else echo '/* NONE */' >> "$output_objdir/$dlsyms" fi $echo >> "$output_objdir/$dlsyms" "\ #undef lt_preloaded_symbols #if defined (__STDC__) && __STDC__ # define lt_ptr_t void * #else # define lt_ptr_t char * # define const #endif /* The mapping between symbol names and symbols. */ const struct { const char *name; lt_ptr_t address; } lt_preloaded_symbols[] = {\ " sed -n -e 's/^: \([^ ]*\) $/ {\"\1\", (lt_ptr_t) 0},/p' \ -e 's/^. \([^ ]*\) \([^ ]*\)$/ {"\2", (lt_ptr_t) \&\2},/p' \ < "$nlist" >> "$output_objdir/$dlsyms" $echo >> "$output_objdir/$dlsyms" "\ {0, (lt_ptr_t) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt_preloaded_symbols; } #endif #ifdef __cplusplus } #endif\ " fi pic_flag_for_symtable= case $host in # compiling the symbol table file with pic_flag works around # a FreeBSD bug that causes programs to crash when -lm is # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) case "$compile_command " in *" -static "*) ;; *) pic_flag_for_symtable=" $pic_flag -DPIC -DFREEBSD_WORKAROUND";; esac;; *-*-hpux*) case "$compile_command " in *" -static "*) ;; *) pic_flag_for_symtable=" $pic_flag -DPIC";; esac esac # Now compile the dynamic symbol file. $show "(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" $run eval '(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? # Clean up the generated files. $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" # Transform the symbol file into the correct name. compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` ;; *) $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 exit 1 ;; esac else # We keep going just in case the user didn't refer to # lt_preloaded_symbols. The linker will fail if global_symbol_pipe # really was required. # Nullify the symbol file. compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` fi if test $need_relink = no || test "$build_libtool_libs" != yes; then # Replace the output file specification. compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` link_command="$compile_command$compile_rpath" # We have no uninstalled library dependencies, so finalize right now. $show "$link_command" $run eval "$link_command" status=$? # Delete the generated files. if test -n "$dlsyms"; then $show "$rm $output_objdir/${outputname}S.${objext}" $run $rm "$output_objdir/${outputname}S.${objext}" fi exit $status fi if test -n "$shlibpath_var"; then # We should set the shlibpath_var rpath= for dir in $temp_rpath; do case $dir in [\\/]* | [A-Za-z]:[\\/]*) # Absolute path. rpath="$rpath$dir:" ;; *) # Relative path: add a thisdir entry. rpath="$rpath\$thisdir/$dir:" ;; esac done temp_rpath="$rpath" fi if test -n "$compile_shlibpath$finalize_shlibpath"; then compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" fi if test -n "$finalize_shlibpath"; then finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" fi compile_var= finalize_var= if test -n "$runpath_var"; then if test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do rpath="$rpath$dir:" done compile_var="$runpath_var=\"$rpath\$$runpath_var\" " fi if test -n "$finalize_perm_rpath"; then # We should set the runpath_var. rpath= for dir in $finalize_perm_rpath; do rpath="$rpath$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi fi if test "$no_install" = yes; then # We don't need to create a wrapper script. link_command="$compile_var$compile_command$compile_rpath" # Replace the output file specification. link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. $run $rm $output # Link the executable and exit $show "$link_command" $run eval "$link_command" || exit $? exit 0 fi if test "$hardcode_action" = relink; then # Fast installation is not supported link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 $echo "$modename: \`$output' will be relinked during installation" 1>&2 else if test "$fast_install" != no; then link_command="$finalize_var$compile_command$finalize_rpath" if test "$fast_install" = yes; then relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` else # fast_install is set to needless relink_command= fi else link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" fi fi # Replace the output file specification. link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname $show "$link_command" $run eval "$link_command" || exit $? # Now create the wrapper script. $show "creating $output" # Quote the relink command for shipping. if test -n "$relink_command"; then # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` relink_command="$var=\"$var_value\"; export $var; $relink_command" fi done relink_command="cd `pwd`; $relink_command" relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` fi # Quote $echo for shipping. if test "X$echo" = "X$SHELL $0 --fallback-echo"; then case $0 in [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $0 --fallback-echo";; *) qecho="$SHELL `pwd`/$0 --fallback-echo";; esac qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` else qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` fi # Only actually do things if our run command is non-null. if test -z "$run"; then # win32 will think the script is a binary if it has # a .exe suffix, so we strip it off here. case $output in *.exe) output=`echo $output|sed 's,.exe$,,'` ;; esac # test for cygwin because mv fails w/o .exe extensions case $host in *cygwin*) exeext=.exe ;; *) exeext= ;; esac $rm $output trap "$rm $output; exit 1" 1 2 15 $echo > $output "\ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='sed -e 1s/^X//' sed_quote_subst='$sed_quote_subst' # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. if test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi relink_command=\"$relink_command\" # This environment variable determines our operation mode. if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variable: notinst_deplibs='$notinst_deplibs' else # When we are sourced in execute mode, \$file and \$echo are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then echo=\"$qecho\" file=\"\$0\" # Make sure echo works. if test \"X\$1\" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then # Yippee, \$echo works! : else # Restart under the correct shell, and then maybe \$echo will work. exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} fi fi\ " $echo >> $output "\ # Find the directory that this script lives in. thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=\`ls -ld \"\$file\" | sed -n 's/.*-> //p'\` while test -n \"\$file\"; do destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then case \"\$destdir\" in [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; *) thisdir=\"\$thisdir/\$destdir\" ;; esac fi file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | sed -n 's/.*-> //p'\` done # Try to get the absolute directory name. absdir=\`cd \"\$thisdir\" && pwd\` test -n \"\$absdir\" && thisdir=\"\$absdir\" " if test "$fast_install" = yes; then echo >> $output "\ program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || \\ { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | sed 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" if test ! -d \"\$progdir\"; then $mkdir \"\$progdir\" else $rm \"\$progdir/\$file\" fi" echo >> $output "\ # relink executable if necessary if test -n \"\$relink_command\"; then if (eval \$relink_command); then : else $rm \"\$progdir/\$file\" exit 1 fi fi $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || { $rm \"\$progdir/\$program\"; $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } $rm \"\$progdir/\$file\" fi" else echo >> $output "\ program='$outputname' progdir=\"\$thisdir/$objdir\" " fi echo >> $output "\ if test -f \"\$progdir/\$program\"; then" # Export our shlibpath_var if we have one. if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $echo >> $output "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 sed $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` export $shlibpath_var " fi # fixup the dll searchpath if we need to. if test -n "$dllsearchpath"; then $echo >> $output "\ # Add the dll search path components to the executable PATH PATH=$dllsearchpath:\$PATH " fi $echo >> $output "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. " case $host in # win32 systems need to use the prog path for dll # lookup to work *-*-cygwin* | *-*-pw32*) $echo >> $output "\ exec \$progdir/\$program \${1+\"\$@\"} " ;; # Backslashes separate directories on plain windows *-*-mingw | *-*-os2*) $echo >> $output "\ exec \$progdir\\\\\$program \${1+\"\$@\"} " ;; *) $echo >> $output "\ # Export the path to the program. PATH=\"\$progdir:\$PATH\" export PATH exec \$program \${1+\"\$@\"} " ;; esac $echo >> $output "\ \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" exit 1 fi else # The program doesn't exist. \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2 \$echo \"This script is just a wrapper for \$program.\" 1>&2 echo \"See the $PACKAGE documentation for more information.\" 1>&2 exit 1 fi fi\ " chmod +x $output fi exit 0 ;; esac # See if we need to build an old-fashioned archive. for oldlib in $oldlibs; do if test "$build_libtool_libs" = convenience; then oldobjs="$libobjs_save" addlibs="$convenience" build_libtool_libs=no else if test "$build_libtool_libs" = module; then oldobjs="$libobjs_save" build_libtool_libs=no else oldobjs="$objs$old_deplibs "`$echo "X$libobjs_save" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP` fi addlibs="$old_convenience" fi if test -n "$addlibs"; then gentop="$output_objdir/${outputname}x" $show "${rm}r $gentop" $run ${rm}r "$gentop" $show "mkdir $gentop" $run mkdir "$gentop" status=$? if test $status -ne 0 && test ! -d "$gentop"; then exit $status fi generated="$generated $gentop" # Add in members from convenience archives. for xlib in $addlibs; do # Extract the objects. case $xlib in [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; *) xabs=`pwd`"/$xlib" ;; esac xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` xdir="$gentop/$xlib" $show "${rm}r $xdir" $run ${rm}r "$xdir" $show "mkdir $xdir" $run mkdir "$xdir" status=$? if test $status -ne 0 && test ! -d "$xdir"; then exit $status fi $show "(cd $xdir && $AR x $xabs)" $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP` done fi # Do each command in the archive commands. if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then eval cmds=\"$old_archive_from_new_cmds\" else # Ensure that we have .o objects in place in case we decided # not to build a shared library, and have fallen back to building # static libs even though --disable-static was passed! for oldobj in $oldobjs; do if test ! -f $oldobj; then xdir=`$echo "X$oldobj" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$oldobj"; then xdir="." else xdir="$xdir" fi baseobj=`$echo "X$oldobj" | $Xsed -e 's%^.*/%%'` obj=`$echo "X$baseobj" | $Xsed -e "$o2lo"` $show "(cd $xdir && ${LN_S} $obj $baseobj)" $run eval '(cd $xdir && ${LN_S} $obj $baseobj)' || exit $? fi done eval cmds=\"$old_archive_cmds\" fi IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" done if test -n "$generated"; then $show "${rm}r$generated" $run ${rm}r$generated fi # Now create the libtool archive. case $output in *.la) old_library= test "$build_old_libs" = yes && old_library="$libname.$libext" $show "creating $output" # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` relink_command="$var=\"$var_value\"; export $var; $relink_command" fi done # Quote the link command for shipping. relink_command="cd `pwd`; $SHELL $0 --mode=relink $libtool_args" relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` # Only create the output if not a dry run. if test -z "$run"; then for installed in no yes; do if test "$installed" = yes; then if test -z "$install_libdir"; then break fi output="$output_objdir/$outputname"i # Replace all uninstalled libtool libraries with the installed ones newdependency_libs= for deplib in $dependency_libs; do case $deplib in *.la) name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` if test -z "$libdir"; then $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 exit 1 fi newdependency_libs="$newdependency_libs $libdir/$name" ;; *) newdependency_libs="$newdependency_libs $deplib" ;; esac done dependency_libs="$newdependency_libs" newdlfiles= for lib in $dlfiles; do name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $lib` if test -z "$libdir"; then $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 exit 1 fi newdlfiles="$newdlfiles $libdir/$name" done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` eval libdir=`sed -n -e 's/^libdir=\(.*\)$/\1/p' $lib` if test -z "$libdir"; then $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 exit 1 fi newdlprefiles="$newdlprefiles $libdir/$name" done dlprefiles="$newdlprefiles" fi $rm $output # place dlname in correct position for cygwin tdlname=$dlname case $host,$output,$installed,$module,$dlname in *cygwin*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; esac $echo > $output "\ # $outputname - a libtool library file # Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP # # Please DO NOT delete this file! # It is necessary for linking the library. # The name that we can dlopen(3). dlname='$tdlname' # Names of this library. library_names='$library_names' # The name of the static archive. old_library='$old_library' # Libraries that this one depends upon. dependency_libs='$dependency_libs' # Version information for $libname. current=$current age=$age revision=$revision # Is this an already installed library? installed=$installed # Files to dlopen/dlpreopen dlopen='$dlfiles' dlpreopen='$dlprefiles' # Directory that this library needs to be installed in: libdir='$install_libdir'" if test "$installed" = no && test $need_relink = yes; then $echo >> $output "\ relink_command=\"$relink_command\"" fi done fi # Do a symbolic link so that the libtool archive can be found in # LD_LIBRARY_PATH before the program is installed. $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? ;; esac exit 0 ;; # libtool install mode install) modename="$modename: install" # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || # Allow the use of GNU shtool's install command. $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then # Aesthetically quote it. arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) arg="\"$arg\"" ;; esac install_prog="$arg " arg="$1" shift else install_prog= arg="$nonopt" fi # The real first argument should be the name of the installation program. # Aesthetically quote it. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) arg="\"$arg\"" ;; esac install_prog="$install_prog$arg" # We need to accept at least all the BSD install flags. dest= files= opts= prev= install_type= isdir=no stripme= for arg do if test -n "$dest"; then files="$files $dest" dest="$arg" continue fi case $arg in -d) isdir=yes ;; -f) prev="-f" ;; -g) prev="-g" ;; -m) prev="-m" ;; -o) prev="-o" ;; -s) stripme=" -s" continue ;; -*) ;; *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then prev= else dest="$arg" continue fi ;; esac # Aesthetically quote the argument. arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` case $arg in *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) arg="\"$arg\"" ;; esac install_prog="$install_prog $arg" done if test -z "$install_prog"; then $echo "$modename: you must specify an install program" 1>&2 $echo "$help" 1>&2 exit 1 fi if test -n "$prev"; then $echo "$modename: the \`$prev' option requires an argument" 1>&2 $echo "$help" 1>&2 exit 1 fi if test -z "$files"; then if test -z "$dest"; then $echo "$modename: no file or destination specified" 1>&2 else $echo "$modename: you must specify a destination" 1>&2 fi $echo "$help" 1>&2 exit 1 fi # Strip any trailing slash from the destination. dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` # Check to see that the destination is a directory. test -d "$dest" && isdir=yes if test "$isdir" = yes; then destdir="$dest" destname= else destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` test "X$destdir" = "X$dest" && destdir=. destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` # Not a directory, so check to see that there is only one file specified. set dummy $files if test $# -gt 2; then $echo "$modename: \`$dest' is not a directory" 1>&2 $echo "$help" 1>&2 exit 1 fi fi case $destdir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) for file in $files; do case $file in *.lo) ;; *) $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 $echo "$help" 1>&2 exit 1 ;; esac done ;; esac # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" staticlibs= future_libdirs= current_libdirs= for file in $files; do # Do each installation. case $file in *.$libext) # Do the static libraries later. staticlibs="$staticlibs $file" ;; *.la) # Check to see that this really is a libtool archive. if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : else $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 $echo "$help" 1>&2 exit 1 fi library_names= old_library= relink_command= # If there is no directory component, then add one. case $file in */* | *\\*) . $file ;; *) . ./$file ;; esac # Add the libdir to current_libdirs if it is the destination. if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; *) current_libdirs="$current_libdirs $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; *) future_libdirs="$future_libdirs $libdir" ;; esac fi dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/ test "X$dir" = "X$file/" && dir= dir="$dir$objdir" if test -n "$relink_command"; then $echo "$modename: warning: relinking \`$file'" 1>&2 $show "$relink_command" if $run eval "$relink_command"; then : else $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 continue fi fi # See the names of the shared library. set dummy $library_names if test -n "$2"; then realname="$2" shift shift srcname="$realname" test -n "$relink_command" && srcname="$realname"T # Install the shared library and build the symlinks. $show "$install_prog $dir/$srcname $destdir/$realname" $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $? if test -n "$stripme" && test -n "$striplib"; then $show "$striplib $destdir/$realname" $run eval "$striplib $destdir/$realname" || exit $? fi if test $# -gt 0; then # Delete the old symlinks, and create new ones. for linkname do if test "$linkname" != "$realname"; then $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" fi done fi # Do each command in the postinstall commands. lib="$destdir/$realname" eval cmds=\"$postinstall_cmds\" IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" fi # Install the pseudo-library for information purposes. name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` instname="$dir/$name"i $show "$install_prog $instname $destdir/$name" $run eval "$install_prog $instname $destdir/$name" || exit $? # Maybe install the static library, too. test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" ;; *.lo) # Install (i.e. copy) a libtool object. # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` destfile="$destdir/$destfile" fi # Deduce the name of the destination old-style object file. case $destfile in *.lo) staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` ;; *.$objext) staticdest="$destfile" destfile= ;; *) $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 $echo "$help" 1>&2 exit 1 ;; esac # Install the libtool object if requested. if test -n "$destfile"; then $show "$install_prog $file $destfile" $run eval "$install_prog $file $destfile" || exit $? fi # Install the old object if enabled. if test "$build_old_libs" = yes; then # Deduce the name of the old-style object file. staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` $show "$install_prog $staticobj $staticdest" $run eval "$install_prog \$staticobj \$staticdest" || exit $? fi exit 0 ;; *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` destfile="$destdir/$destfile" fi # Do a test to see if this is really a libtool program. if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then notinst_deplibs= relink_command= # If there is no directory component, then add one. case $file in */* | *\\*) . $file ;; *) . ./$file ;; esac # Check the variables that should have been set. if test -z "$notinst_deplibs"; then $echo "$modename: invalid libtool wrapper script \`$file'" 1>&2 exit 1 fi finalize=yes for lib in $notinst_deplibs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then # If there is no directory component, then add one. case $lib in */* | *\\*) . $lib ;; *) . ./$lib ;; esac fi libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test if test -n "$libdir" && test ! -f "$libfile"; then $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 finalize=no fi done relink_command= # If there is no directory component, then add one. case $file in */* | *\\*) . $file ;; *) . ./$file ;; esac outputname= if test "$fast_install" = no && test -n "$relink_command"; then if test "$finalize" = yes && test -z "$run"; then tmpdir="/tmp" test -n "$TMPDIR" && tmpdir="$TMPDIR" tmpdir="$tmpdir/libtool-$$" if $mkdir -p "$tmpdir" && chmod 700 "$tmpdir"; then : else $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2 continue fi file=`$echo "X$file" | $Xsed -e 's%^.*/%%'` outputname="$tmpdir/$file" # Replace the output file specification. relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` $show "$relink_command" if $run eval "$relink_command"; then : else $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 ${rm}r "$tmpdir" continue fi file="$outputname" else $echo "$modename: warning: cannot relink \`$file'" 1>&2 fi else # Install the binary that we compiled earlier. file=`$echo "X$file" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` fi fi # remove .exe since cygwin /usr/bin/install will append another # one anyways case $install_prog,$host in /usr/bin/install*,*cygwin*) case $file:$destfile in *.exe:*.exe) # this is ok ;; *.exe:*) destfile=$destfile.exe ;; *:*.exe) destfile=`echo $destfile | sed -e 's,.exe$,,'` ;; esac ;; esac $show "$install_prog$stripme $file $destfile" $run eval "$install_prog\$stripme \$file \$destfile" || exit $? test -n "$outputname" && ${rm}r "$tmpdir" ;; esac done for file in $staticlibs; do name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` # Set up the ranlib parameters. oldlib="$destdir/$name" $show "$install_prog $file $oldlib" $run eval "$install_prog \$file \$oldlib" || exit $? if test -n "$stripme" && test -n "$striplib"; then $show "$old_striplib $oldlib" $run eval "$old_striplib $oldlib" || exit $? fi # Do each command in the postinstall commands. eval cmds=\"$old_postinstall_cmds\" IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || exit $? done IFS="$save_ifs" done if test -n "$future_libdirs"; then $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 fi if test -n "$current_libdirs"; then # Maybe just do a dry run. test -n "$run" && current_libdirs=" -n$current_libdirs" exec $SHELL $0 --finish$current_libdirs exit 1 fi exit 0 ;; # libtool finish mode finish) modename="$modename: finish" libdirs="$nonopt" admincmds= if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then for dir do libdirs="$libdirs $dir" done for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. eval cmds=\"$finish_cmds\" IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" || admincmds="$admincmds $cmd" done IFS="$save_ifs" fi if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" $run eval "$cmds" || admincmds="$admincmds $cmds" fi done fi # Exit here if they wanted silent mode. test "$show" = ":" && exit 0 echo "----------------------------------------------------------------------" echo "Libraries have been installed in:" for libdir in $libdirs; do echo " $libdir" done echo echo "If you ever happen to want to link against installed libraries" echo "in a given directory, LIBDIR, you must either use libtool, and" echo "specify the full pathname of the library, or use the \`-LLIBDIR'" echo "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then echo " - add LIBDIR to the \`$shlibpath_var' environment variable" echo " during execution" fi if test -n "$runpath_var"; then echo " - add LIBDIR to the \`$runpath_var' environment variable" echo " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" echo " - use the \`$flag' linker flag" fi if test -n "$admincmds"; then echo " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" fi echo echo "See any operating system documentation about shared libraries for" echo "more information, such as the ld(1) and ld.so(8) manual pages." echo "----------------------------------------------------------------------" exit 0 ;; # libtool execute mode execute) modename="$modename: execute" # The first argument is the command name. cmd="$nonopt" if test -z "$cmd"; then $echo "$modename: you must specify a COMMAND" 1>&2 $echo "$help" exit 1 fi # Handle -dlopen flags immediately. for file in $execute_dlfiles; do if test ! -f "$file"; then $echo "$modename: \`$file' is not a file" 1>&2 $echo "$help" 1>&2 exit 1 fi dir= case $file in *.la) # Check to see that this really is a libtool archive. if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : else $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 $echo "$help" 1>&2 exit 1 fi # Read the libtool library. dlname= library_names= # If there is no directory component, then add one. case $file in */* | *\\*) . $file ;; *) . ./$file ;; esac # Skip this library if it cannot be dlopened. if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" continue fi dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` test "X$dir" = "X$file" && dir=. if test -f "$dir/$objdir/$dlname"; then dir="$dir/$objdir" else $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 exit 1 fi ;; *.lo) # Just add the directory containing the .lo file. dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` test "X$dir" = "X$file" && dir=. ;; *) $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` test -n "$absdir" && dir="$absdir" # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then eval "$shlibpath_var=\"\$dir\"" else eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi done # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. libtool_execute_magic="$magic" # Check if any of the arguments is a wrapper script. args= for file do case $file in -*) ;; *) # Do a test to see if this is really a libtool program. if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then # If there is no directory component, then add one. case $file in */* | *\\*) . $file ;; *) . ./$file ;; esac # Transform arg to wrapped name. file="$progdir/$program" fi ;; esac # Quote arguments (to preserve shell metacharacters). file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` args="$args \"$file\"" done if test -z "$run"; then if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" fi # Restore saved enviroment variables if test "${save_LC_ALL+set}" = set; then LC_ALL="$save_LC_ALL"; export LC_ALL fi if test "${save_LANG+set}" = set; then LANG="$save_LANG"; export LANG fi # Now actually exec the command. eval "exec \$cmd$args" $echo "$modename: cannot exec \$cmd$args" exit 1 else # Display what would be done. if test -n "$shlibpath_var"; then eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" $echo "export $shlibpath_var" fi $echo "$cmd$args" exit 0 fi ;; # libtool clean and uninstall mode clean | uninstall) modename="$modename: $mode" rm="$nonopt" files= rmforce= exit_status=0 # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" for arg do case $arg in -f) rm="$rm $arg"; rmforce=yes ;; -*) rm="$rm $arg" ;; *) files="$files $arg" ;; esac done if test -z "$rm"; then $echo "$modename: you must specify an RM program" 1>&2 $echo "$help" 1>&2 exit 1 fi rmdirs= for file in $files; do dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` if test "X$dir" = "X$file"; then dir=. objdir="$objdir" else objdir="$dir/$objdir" fi name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` test $mode = uninstall && objdir="$dir" # Remember objdir for removal later, being careful to avoid duplicates if test $mode = clean; then case " $rmdirs " in *" $objdir "*) ;; *) rmdirs="$rmdirs $objdir" ;; esac fi # Don't error if the file doesn't exist and rm -f was used. if (test -L "$file") >/dev/null 2>&1 \ || (test -h "$file") >/dev/null 2>&1 \ || test -f "$file"; then : elif test -d "$file"; then exit_status=1 continue elif test "$rmforce" = yes; then continue fi rmfiles="$file" case $name in *.la) # Possibly a libtool archive, so verify it. if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then . $dir/$name # Delete the libtool libraries and symlinks. for n in $library_names; do rmfiles="$rmfiles $objdir/$n" done test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" test $mode = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" if test $mode = uninstall; then if test -n "$library_names"; then # Do each command in the postuninstall commands. eval cmds=\"$postuninstall_cmds\" IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" if test $? != 0 && test "$rmforce" != yes; then exit_status=1 fi done IFS="$save_ifs" fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. eval cmds=\"$old_postuninstall_cmds\" IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" $show "$cmd" $run eval "$cmd" if test $? != 0 && test "$rmforce" != yes; then exit_status=1 fi done IFS="$save_ifs" fi # FIXME: should reinstall the best remaining shared library. fi fi ;; *.lo) if test "$build_old_libs" = yes; then oldobj=`$echo "X$name" | $Xsed -e "$lo2o"` rmfiles="$rmfiles $dir/$oldobj" fi ;; *) # Do a test to see if this is a libtool program. if test $mode = clean && (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then relink_command= . $dir/$file rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" if test "$fast_install" = yes && test -n "$relink_command"; then rmfiles="$rmfiles $objdir/lt-$name" fi fi ;; esac $show "$rm $rmfiles" $run $rm $rmfiles || exit_status=1 done # Try to remove the ${objdir}s in the directories where we deleted files for dir in $rmdirs; do if test -d "$dir"; then $show "rmdir $dir" $run rmdir $dir >/dev/null 2>&1 fi done exit $exit_status ;; "") $echo "$modename: you must specify a MODE" 1>&2 $echo "$generic_help" 1>&2 exit 1 ;; esac $echo "$modename: invalid operation mode \`$mode'" 1>&2 $echo "$generic_help" 1>&2 exit 1 fi # test -z "$show_help" # We need to display help for each of the modes. case $mode in "") $echo \ "Usage: $modename [OPTION]... [MODE-ARG]... Provide generalized library-building support services. --config show all configuration variables --debug enable verbose shell tracing -n, --dry-run display commands without modifying any files --features display basic configuration information and exit --finish same as \`--mode=finish' --help display this help message and exit --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] --quiet same as \`--silent' --silent don't print informational messages --version print version information MODE must be one of the following: clean remove files from the build directory compile compile a source file into a libtool object execute automatically set library path, then run a program finish complete the installation of libtool libraries install install libraries or executables link create a library or an executable uninstall remove libraries from an installed directory MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for a more detailed description of MODE." exit 0 ;; clean) $echo \ "Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE... Remove files from the build directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, object or program, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; compile) $echo \ "Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE Compile a source file into a libtool library object. This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -prefer-pic try to building PIC objects only -prefer-non-pic try to building non-PIC objects only -static always build a \`.o' file suitable for static linking COMPILE-COMMAND is a command to be used in creating a \`standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from SOURCEFILE, then substituting the C source code suffix \`.c' with the library object suffix, \`.lo'." ;; execute) $echo \ "Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... Automatically set library path, then run a program. This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path This mode sets the library path environment variable according to \`-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated into their corresponding uninstalled binary, and any of their required library directories are added to the library path. Then, COMMAND is executed, with ARGS as arguments." ;; finish) $echo \ "Usage: $modename [OPTION]... --mode=finish [LIBDIR]... Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use the \`--dry-run' option if you just want to see what would be executed." ;; install) $echo \ "Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be either the \`install' or \`cp' program. The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." ;; link) $echo \ "Usage: $modename [OPTION]... --mode=link LINK-COMMAND... Link object files or libraries together to form another library, or to create an executable program. LINK-COMMAND is a command using the C compiler that you would use to create a program from several object files. The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE try to export only the symbols listed in SYMFILE -export-symbols-regex REGEX try to export only the symbols matching REGEX -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened -no-fast-install disable the fast-install mode -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -static do not do any dynamic linking of libtool libraries -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] All other options (arguments beginning with \`-') are ignored. Every other argument is treated as a filename. Files ending in \`.la' are treated as uninstalled libtool libraries, other files are standard or library object files. If the OUTPUT-FILE ends in \`.la', then a libtool library is created, only library objects (\`.lo' files) may be specified, and \`-rpath' is required, except when creating a convenience library. If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created using \`ar' and \`ranlib', or on Windows using \`lib'. If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file is created, otherwise an executable program is created." ;; uninstall) $echo \ "Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; *) $echo "$modename: invalid operation mode \`$mode'" 1>&2 $echo "$help" 1>&2 exit 1 ;; esac echo $echo "Try \`$modename --help' for more information about other modes." exit 0 # Local Variables: # mode:shell-script # sh-indentation:2 # End: openjade-1.3.2/config/missing0100664000076400007640000001451007422234541014262 0ustar ianian#! /bin/sh # Common stub for a few missing GNU programs while installing. # Copyright (C) 1996, 1997, 2001 Free Software Foundation, Inc. # Franc,ois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. if test $# -eq 0; then echo 1>&2 "Try \`$0 --help' for more information" exit 1 fi # In the cases where this matters, `missing' is being run in the # srcdir already. if test -f configure.in; then configure_ac=configure.ac else configure_ac=configure.in fi case "$1" in -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an error status if there is no known handling for PROGRAM. Options: -h, --help display this help and exit -v, --version output version information and exit Supported PROGRAM values: aclocal touch file \`aclocal.m4' autoconf touch file \`configure' autoheader touch file \`config.h.in' automake touch all \`Makefile.in' files bison create \`y.tab.[ch]', if possible, from existing .[ch] flex create \`lex.yy.c', if possible, from existing .c lex create \`lex.yy.c', if possible, from existing .c makeinfo touch the output file yacc create \`y.tab.[ch]', if possible, from existing .[ch]" ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing - GNU libit 0.0" ;; -*) echo 1>&2 "$0: Unknown \`$1' option" echo 1>&2 "Try \`$0 --help' for more information" exit 1 ;; aclocal) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified \`acinclude.m4' or \`$configure_ac'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." touch aclocal.m4 ;; autoconf) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified \`$configure_ac'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." touch configure ;; autoheader) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified \`acconfig.h' or \`$configure_ac'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' $configure_ac` test -z "$files" && files="config.h" touch_files= for f in $files; do case "$f" in *:*) touch_files="$touch_files "`echo "$f" | sed -e 's/^[^:]*://' -e 's/:.*//'`;; *) touch_files="$touch_files $f.in";; esac done touch $touch_files ;; automake) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified \`Makefile.am', \`acinclude.m4' or \`$configure_ac'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." find . -type f -name Makefile.am -print | sed 's/\.am$/.in/' | while read f; do touch "$f"; done ;; bison|yacc) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified a \`.y' file. You may need the \`Bison' package in order for those modifications to take effect. You can get \`Bison' from any GNU archive site." rm -f y.tab.c y.tab.h if [ $# -ne 1 ]; then eval LASTARG="\${$#}" case "$LASTARG" in *.y) SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` if [ -f "$SRCFILE" ]; then cp "$SRCFILE" y.tab.c fi SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` if [ -f "$SRCFILE" ]; then cp "$SRCFILE" y.tab.h fi ;; esac fi if [ ! -f y.tab.h ]; then echo >y.tab.h fi if [ ! -f y.tab.c ]; then echo 'main() { return 0; }' >y.tab.c fi ;; lex|flex) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified a \`.l' file. You may need the \`Flex' package in order for those modifications to take effect. You can get \`Flex' from any GNU archive site." rm -f lex.yy.c if [ $# -ne 1 ]; then eval LASTARG="\${$#}" case "$LASTARG" in *.l) SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` if [ -f "$SRCFILE" ]; then cp "$SRCFILE" lex.yy.c fi ;; esac fi if [ ! -f lex.yy.c ]; then echo 'main() { return 0; }' >lex.yy.c fi ;; makeinfo) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if you modified a \`.texi' or \`.texinfo' file, or any other file indirectly affecting the aspect of the manual. The spurious call might also be the consequence of using a buggy \`make' (AIX, DU, IRIX). You might want to install the \`Texinfo' package or the \`GNU make' package. Grab either from any GNU archive site." file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` if test -z "$file"; then file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file` fi touch $file ;; *) echo 1>&2 "\ WARNING: \`$1' is needed, and you do not seem to have it handy on your system. You might have modified some files without having the proper tools for further handling them. Check the \`README' file, it often tells you about the needed prerequirements for installing this package. You may also peek at any GNU archive site, in case some other package would contain this missing \`$1' program." exit 1 ;; esac exit 0 openjade-1.3.2/config/mkinstalldirs0100664000076400007640000000133107422234541015466 0ustar ianian#! /bin/sh # mkinstalldirs --- make directory hierarchy # Author: Noah Friedman # Created: 1993-05-16 # Public domain # $Id: mkinstalldirs,v 1.1.2.1 2002/01/19 09:16:17 icastle Exp $ errstatus=0 for file do set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` shift pathcomp= for d do pathcomp="$pathcomp$d" case "$pathcomp" in -* ) pathcomp=./$pathcomp ;; esac if test ! -d "$pathcomp"; then echo "mkdir $pathcomp" mkdir "$pathcomp" || lasterr=$? if test ! -d "$pathcomp"; then errstatus=$lasterr fi fi pathcomp="$pathcomp/" done done exit $errstatus # mkinstalldirs ends here openjade-1.3.2/contrib/0040775000076400007640000000000007572430607013072 5ustar ianianopenjade-1.3.2/contrib/rtf2doc.pl0100664000076400007640000000221406757231323014764 0ustar ianian#! /usr/bin/perl -w # Copyright (C) 1999 Avi Kivity sub usage { print <<__USAGE__; Usage: rtf2doc.pl FILE... Converts one or more MS .rtf FILEs to MS Word .doc files. Requires MS Word 97 or above, plus correct phase of moon. __USAGE__ } usage(), exit 0 if ($#ARGV < 0) || ($ARGV[0] =~ /^((-h)|(--help))$/); use Cwd; use Win32::OLE; use Win32::OLE::Const 'Microsoft Word'; $cwd = cwd(); @storytypes = ( 4, 3, 8, 6, 11, 10, 2, 1, 9, 7, 5 ); my $Word = Win32::OLE->new('Word.Application', 'Quit'); die "Cannot open MS Word\n" unless $Word; foreach (@ARGV) { my $src = $_; $src = "$cwd\\$src" unless $src =~ /^(.:\\)/; my $tgt = "$src.doc"; my $Doc = $Word->Documents->Open($src); die "Cannot open $src\n" unless $Doc; $Doc->Repaginate(); $Stories = $Doc->StoryRanges; for $s (@storytypes) { eval { local $SIG{__WARN__} = {}; $Story = $Stories->Item($s); if ($Story) { $Story->Fields->Update(); $Story->Fields->Unlink(); } }; } $Doc->SaveAs($tgt, 0); $Doc->Close(); } $Word->Quit(); openjade-1.3.2/contrib/README0100664000076400007640000000114106757105454013747 0ustar ianianREADME for the OpenJade contrib directory ----------------------------------------- This directory contains software and documentation that are not an integral part of OpenJade -- that is, they are not part of a DSSSL implementation. They may or may not be useful. Your pointage may vary. Here's a list of what's in this directory: rtf2doc.pl - a Perl script which will take .rtf files generated by Jade and convert them to Word .doc format. In the process, referenced graphic files will be embedded into the documents, and page numbers references will be resolved. Requires MS Word 97.dopenjade-1.3.2/contrib/catalog0100664000076400007640000000015306757567436014442 0ustar ianian-- Copyright (C) 1999 Avi Kivity -- CATALOG "../dsssl/catalog" -- ENTITY "transform.dsl" "transform.dsl" --openjade-1.3.2/contrib/transform.dsl0100664000076400007640000000452506757567436015633 0ustar ianian (declare-flow-object-class element "UNREGISTERED::James Clark//Flow Object Class::element") (declare-flow-object-class empty-element "UNREGISTERED::James Clark//Flow Object Class::empty-element") (declare-flow-object-class document-type "UNREGISTERED::James Clark//Flow Object Class::document-type") (declare-flow-object-class entity "UNREGISTERED::James Clark//Flow Object Class::entity") (declare-flow-object-class entity-ref "UNREGISTERED::James Clark//Flow Object Class::entity-ref") (declare-flow-object-class formatting-instruction "UNREGISTERED::James Clark//Flow Object Class::formatting-instruction") (declare-characteristic preserve-sdata? "UNREGISTERED::James Clark//Characteristic::preserve-sdata?" #f) (define (empty-element? #!optional (nd (current-node))) (node-property 'must-omit-end-tag? nd) ) (define (element-attributes #!optional (nd (current-node))) (let loop ((atts (named-node-list-names (attributes nd)))) (if (null? atts) '() (let* ( (name (car atts)) (value (attribute-string name nd)) ) (if value (cons (list name value) (loop (cdr atts))) (loop (cdr atts)) ) ) ) ) ) (define (copy-element #!optional (node (current-node))) (if (empty-element? node) (make empty-element attributes: (element-attributes node)) (make element attributes: (element-attributes node)) ) ) (mode identity-transform (default (copy-element)) )openjade-1.3.2/develdoc/0040775000076400007640000000000007572430611013212 5ustar ianianopenjade-1.3.2/develdoc/jadedoc.sgml0100664000076400007640000012553606745711602015503 0ustar ianian
Jade internals Matthias Clasen
clasen@mathematik.uni-freiburg.de
5.6.99
This document describes the Jade DSSSL engine from the programmers point of view. It was written to help people who want to extend Jade. Package organization Directory contents The follwing directories contain files needed during the build: all/ Visual C++ build process config/ autoconf build process jadedist/ creating a distribution The following directories contain documentation: doc/ SP documentation jadedoc/ Jade documentation The following directories contain SGML/DSSSL text files: dsssl/ DTDs for style sheets and FOT output; jadetex; examples pubtext/ various DTDs and catalogs unicode/ SGML declaration and catalog for dealing with Unicode The following directories contain the sources of the various libraries: include/ lib/ the SP library style/ the DSSSL style engine grove/ an abstract interface to groves spgrove/ an implementation of the grove interface groveoa/ an OLE-enabled version of the grove builder, Windows-only generic simple API for applications derived from SP Applications: nsgmls/ an SGML parser sgmlnorm/ an SGML normalizer spam/ a markup stream editor spent/ a frontend to the SP entity manager sx/ a simple SGML to XML converter jade/ the source of the Jade application and its various backends The build system TODO: What needs to be said here ? msggen.pl; What makefiles are used and included where; list of defines in config.h; building by hand vs. configure Coding conventions Formatting The following list gives some hints on the coding conventions used throughout the source. Whitespace. Statement keywords have one space after them, and no space between the parentheses and the enclosed expression: if (foo) /* good */ if( foo ) /* bad */ In general there is never a space after an open parenthesis or before a close parenthesis: foo(arg) /* good */ foo( arg ) /* bad */ The * or & in pointer or reference declarations stick to the identifier, not to the type: void foo(int *p, int &r) /* good */ void foo(int* p, int& r) /* bad */ Put whitespace on either side of operators: x = y + z; /* good */ x=y+z; /* bad */ Indent by 2 characters. Tabs are set every 8 characters. Line breaks. Expressions broken over more than one line are aligned LISP style: if ((a && b) || (c && d)) else is on a separate line from the preceding brace: if (foo) { } else if (bar) { } else { } Long function headers should not be broken before the parenthesis that starts the argument list. Identifiers. Use camelCase. Class names and type names start with an upper-case letter. Function names start with a lower-case letter. Names of private date members end with an underscore. Declarations. Use public: before private: in class declarations. Use const wherever applicable. Declare member functions const if they don't alter the object. Declare reference arguments const if the function doesn't change them etc. Don't declare inline member functions in the body; declare them separately in the header file. Never have public data members in a class. However is OK to have a struct which is just a bundle of data. In this case use struct not class. All members are public and names don't end with an underscore. There are no member functions (the only exception is that there may be a constructor). Other rules. case clauses without a break always have a "fall through" comment where the break would occur: switch (foo) case x: /* do something here */ // fall through case y: } A statement governed by if or else that is longer than a single line always is surrounded by {}. The following is unacceptable: else if (foo) ; else ; On the other hand, never use braces around single statements: if (foo) /* good */ bar(); if (foo) { /* bad */ bar(); } Avoid global functions. All functions should be members of some class. Try to avoid calling delete except in low-level library classes. For example, don't do: void foo() { Obj *p = new Obj; ... delete p; } Instead do: void foo() { Owner<Obj> p(new Obj); ... } If a the default copy constructor and assignment operator will not work for a class, you must do one of two things: Either provide a copy constructor and assigment operator that will work or declare but do not implement aprivate copy constructor and assignment operator. Avoid C++ exceptions. You can assume new will never return NULL (either it will throw an exception on systems where that works or it will print a fatal error and exit). Headers Every header file should be surrounded by an ifndef. Here is a skeleton for a header file named filename.h: /* copyright notice goes here */ #ifndef filename_INCLUDED #define filename_INCLUDED 1 /* contents go here */ #endif /* not filename_INCLUDED */ Namespaces Every file should be surrounded by a namespace. Namespaces are never used directly in order to support compilers which don't understand namespaces. The general skeleton for a .cxx file in the namespace NAMESPACE is: /* includes go here */ #ifdef NAMESPACE namespace NAMESPACE { #endif /* content goes here */ #ifdef NAMESPACE } #endif Files in the lib/, nsgmls/, sgmlnorm/, spam/, spent/, spgrove/ and sx/ directories use the namespace SP_NAMESPACE. Files in grove/ use the namespace GROVE_NAMESPACE. Files in style/ and jade/ use DSSSL_NAMESPACE. DSSSL_NAMESPACE imports everything from SP_NAMESPACE and GROVE_NAMESPACE (see style/dsssl_ns.h). VC 5 and 6 have bugs in the namespace management, which mean that all these 3 need to be defined to be the same. The conditional stuff is to deal with compilers that don't support namespaces. Templates To cope with different compilers capabilities with respect to templates, all template instantiations are collected in files with names ending in _inst.cxx. These are generated from _inst.m4 files. To add a new template instantiation, add a macro call of the form __instantiate(/* your template instatiation */) to the appropriate .m4 file. API definitions When building DLLs on Windows, every class or function which should be exported by the DLL has to be prefixed with __declspec(dllexport) when building the DLL and with __declspec(dllimport) when using it outside the DLL. This is hidden behind the _API macros which get defined appropriately. Every declaration of a class of function which is part of the public interface of its library should be prefixed with the proper _API macro. Files in include/ use SP_API, files in grove/ use GROVE_API, files in spgrove/ use SPGROVE_API, files in style/ use STYLE_API. Messages Messages for the main classes are collected in separate classes. Eg there is a class InterpreterMessages for all messages of the class Interpreter. The sources (.h and .cxx files and, on Windows, .rc files) for the <class>Messages classes are generated from .msg files by the msggen.pl Perl script. Adding a new message amounts to adding one line to the correct .msg file. The lines in these files have the following format: <message type><args>+<identifier>+<relevant clause>+<message text> <message type> must be one of the I, W, Q, X or E. These stand for info, warning, quantity error, idref error and error, respectively. <args> is the number of placeholders of the form %n in the <message text>. <identifier> is the C++-identifier used to refer to the message. <relevant clause> is used in SP to give an exact reference to the SGML standard for each error message. Outside of SP, this field is usually left empty. <message text> is the text of the message. It can contain placeholders of the form %n where n is a number between 0 and <args> - 1. These placeholders will be replaced by suitable arguments if the message is issued. Message arguments come from classes derived from MessageArg. StringMessageArg is a string, NumberMessageArg is an unsigned long. There is a special form of message which also gives a location for the error which can be defined by adding one more field of the form +<aux text> at the end of message definition. <aux text> will usually be an explanation of the location like "first definition was here" (for a duplicate definition error). This form of message is only implemented for <args>≤1. Issuing a message is done by a call of the form message(<class>Messages::<identifier>, ...) where <class> is the class to which the message belongs and <identifier> is the identifier used in the message definition. The remaining arguments to the message() call must match the %n placeholders in the message. For messages which give location information, the last argument must be an object of type Location. General overview Program structure Most of SP and Jade is user-interface independent: it doesn't know whether it's being run from the command line or from a GUI. The code is organized in several layers. The lowest layer is a general purpose class library (mostly template based), which is independent of SGML/XML. The next layer is a general concept of an entity manager, which is basically an interface to set of services to an SGML parser; basically it's everything that the SGML standard leaves undefined or makes system-dependent for an SGML parser. This layer includes the message reporting API (MessageReporter, Message), catalog API (EntityCatalog), character set API (CharsetInfo), and the entity manager proper (EntityManager). Template instantations for this are in entmgr_inst.m4. Dependent on the first two layers is the core SGML parser. This only implements the behaviour defined in the SGML standard. Main public classes are SgmlParser and Event. Template instantations for this are in parser_inst.m4. The architectural forms engine. It depends on the SGML parser. Main class is ArcEngine. Template instantiations are in arc_inst.m4. An implementation of the entity manager interface. This doesn't depend on the SGML parser or achitectural forms engine. Main class is ExtendEntityManager. This for example determines what the syntax of a system identifier is. Template instantiations for this are in xentmgr_inst.m4. A generic interface to groves; in grove/Node.h. This doesn't depend on any of the previous layers. An implementation of the grove interface using SP; this is in the spgrove/ directory. Main class is GroveBuilder. This doesn't depend on the implementation of the entity manager interface. An implementation of the DSSSL style language (the tree construction part, not the formatting part). This is in the style/ directory. There are really two sub parts: Packaging of the DSSSL stylesheet as an SGML document using architectural forms. Main classes are DssslSpecEventHandler and StyleEngine. This doesn't depend on the implemenation of the entity manager and grove interfaces. Processing of the contents of the elements in the DSSSL stylesheet; this depends only on the entity manager and grove interfaces. The main interface here is FOTBuilder which is the interface between the tree construction process and the formatter. Multiple implementations of the FOTBuilder interface (the backends). Parallel to the hierarchy of layers is a hierarchy of convenience classes that collect together various pieces in a convenient way for command line apps. CmdLineApp is the lowest level and depends only on the general purpose class library. EntityApp additionally depends on the entity manager interface and implementation; it's a convenience class for accessing the functionality of the entity manager with a command line program. ParserApp additionally depends on the SGML parser; it packages the parser together with the entity manager for use in a command line program. GroveApp additionally depends on the grove interface and implementation; this packages the functionality of the grove builder in a convenient way for command line apps. DssslApp additionally depends on DSSSL style language implementation, tieing it to the grove implementation; it is packaging up the functionality of the DSSSL tree construction in a way suitable for command line apps. JadeApp additionally depends on the backends. Other important classes Short descriptions of several central classes in the DSSSL style language implementation, some of which have not yet been mentioned. StyleEngine main class of the style library. DssslApp uses an instance of this class to process the grove. Interpreter contains all the stylesheet-related state: there are no global variables. StyleEngine owns an instance of this class. SchemeParser parses a part of a DSSSL spec, creating expression language objects and binding variables using a given Interpreter. StyleEngine uses instances of this class to parse the parts of its spec. ProcessContext holds the current state of the processing of a grove. VM represents the state of the virtual machine that implements the expression language. Expression Expressions are the result of parsing expression language constructs. They are compiled to Insns. Insn an instruction for the virtual machine. When an instruction is executed it modifies the state of the virtual machine (usually) and then returns the next instruction to be executed. Returning a null Insn terminates execution. Thus the inner loop of the expression evaluator is in a member function of VM and looks like: while (insn) insn = insn->execute(*this); ELObj the abstract base class for all expression language types. Garbage collection For further information on the garbage collection technique used in Jade, look at ftp://ftp.cs.utexas.edu/pub/garbage/bigsurv.ps and ftp://ftp.netcom.com/pub/hb/hbaker/NoMotionGC.html. Basically it works like a copying collector, but the copying is logical rather than physical. There are two doubly-linked lists one for each of the two spaces of a copying collector. Every object is one of these two lists. There's also a bit (the "color") which says which space it is in. To "copy" an object from one space to another, it is unlinked from one list, linked into the other, and its color is flipped. A key point is that unlike normal copying collectors, this collector never changes the address of a GC object. This is a simplification. It is optimized so that there is one big circular list of all objects. A pointer into the list separates the allocated from the free list. Allocating just moves the pointer along the list. Garbage collection starts with a set of root objects (more on this later). It finds all objects reachable from this set of root objects. All objects not reachable are considered garbage and are put on the free list where they can be reused. If garbage collection doesn't free up enough objects, then more memory is allocated from the system. There are a couple of twists beyond what's described in the Wilson paper: It supports finalization (the ability to call an GC object's destructor when the object is GCed). All finalizable objects occur before non-finalizable objects in the allocated list. The garbage collection arranges so that immediately after completing the copy part of a garbage collection, the objects needing finalization are at the head of the free list, thus allowing the collector to efficiently perform finalization. Objects which are created during the parsing of the stylesheet, which can never become garbage during the processing of the source document, are separated off into a separate area (these are called "permanent"). All objects reachable from a permanent object must themselves be permanent. It has the concept of an object being read-only: it can mark an object and all objects reachable from that object as being read-only (needed for Jade extensions which allow limited mutation of objects). It always allocates a fixed amount of space for a GC object; so the sizeof() any object derived from ELObj must be ≤ this space. How big is it? On a 32-bit machine there is space for 16 bytes (eg 4 pointers, or a double+int+pointer) beyond what is used by the ELObj itself. On a 64-bit machine it will be about twice that; maxObjSize() in style/Interpreter.cxx figures it out at runtime, so to be safe add any new types of ELObj to the table in maxObjSize(). But make sure you don't use more than 16 bytes on a 32-bit machine, otherwise you will significantly increase Jade's memory consumption. If you need more space than this, then the ELObj should have a pointer to dynamically allocated memory; in this case you must deallocate the memory in the destructor. In this case and any other case where an ELObj has a destructor that must be called, you must declare an operator new(): void *operator new(size_t, Collector <c) { return c.allocateObject(1); } This tells the garbage collector that the object has a destructor that must be called when the object becomes garbage. A key aspect of correct use of the garbage collector is to ensure that the collector always has a sufficient set of roots. Any time that C++ code does anything that may allocate a GC object, any GC object that is not reachable from a root object may get recycled by the system. The way to create a root is to use an auto variable of type ELObjDynamicRoot. An ELObjDynamicRoot adds a single ELObj as a root for the Collector for as long as the ELObjDynamicRoot is in scope. The first argument of the ELObjDynamicRoot constructor specifies the collector. The second argument specifies the ELObj that is to be made a root. The ELObj that the ELObjDynamicRoot causes to be a root can be changed by assiging an ELObj to the ELObjDynamicRoot. There's also a conversion from ELObjDynamicRoot to ELObj *. The <function>reverse()</function> function DEFPRIMITIVE(Reverse, argc, argv, context, interp, loc) { ELObjDynamicRoot protect(interp, interp.makeNil()); ELObj *p = argv[0]; while (!p->isNil()) { PairObj *tem = p->asPair(); if (!tem) return argError(interp, loc, InterpreterMessages::notAList, 0, argv[0]); protect = new (interp) PairObj(tem->car(), protect); p = tem->cdr(); } return protect; } protect is a dynamic root that contains the currently created part of the reversed node list. Making this a root ensures that all the newly created PairObjs are reachable from a root. The <function>NodeListRef()</function> function The NodeListRef() function gives an example of the sort of bug that can creep in if you're not very careful. This used to end like this: return new (interp) NodePtrNodeListObj(nl->nodeListRef(k, context, interp)); The nodeListRef() function sometimes allocatesthat it takes an Interpreter argument is a good clue). So what could happen is: operator new() gets called to allocate a new object nodeListRef() gets called in a way that causes an allocation the free list happens to be empty, so the garbage collector gets run; the newly allocated object is not reachable from a root, so it gets GCed and recycled the constructor gets called with a GC object that the garbage collector thinks is free The fix was to rewrite it as: NodePtr nd(nl->nodeListRef(k, context, interp)); return new (interp) NodePtrNodeListObj(nd); How to add a new application Create a subclass of one of the App classes; use the macro SP_DEFINE_APP. TODO: This needs more detail. Perhaps use spcat as example. Extending Jade Utility classes TODO: Explain Char, String, Vector, StringC, Ptr, Owner TODO: Maybe move this to the "General overview". Primitives Primitives of the expression language, the SDQL and the style language are implemented as subclasses of PrimitiveObj (style/Insn.h, style/Insn.cxx). All primitives are defined in the files style/primitive.h and style/primitive.cxx. Adding a new primitive is done by adding a macro call of the form PRIMITIVE(<class name prefix>, "<primitive name>", <req. args>, <opt. args>, <rest arg>) to style/primitive.h and a macro call of the form DEFPRIMITIVE(<class name prefix>, argc, argv, context, interp, loc) to style/primitive.cxx, followed by the body of the function PrimitiveObj::primitiveCall() as needed for the function you want to add. For a new external procedure, use XPRIMITIVE instead of PRIMITIVE. The new procedure can be accessed using the public identifier "UNREGISTERED::James Clark//Procedure::<primitive name>". The <function>sin</function> function We can add the sin defined in clause 8.5.7.18 of the DSSSL standard by appending PRIMITIVE(Sin, "sin", 1, 0, 0) to style/primitive.h and DEFPRIMITIVE(Sin, argc, argv, context, interp, loc) { double d; if (!argv[0]->realValue(d)) return argError(interp, loc, InterpreterMessages::notANumber, 0, argv[0]); return new (interp) RealObj(sin(d)); } to style/primitive.cxx. Expression language types Relevant classes: ELObj Adding a new expression language type is done by adding a new subclass of ELObj. Make sure to follow the advise in the section on garbage collection with respect to the size of the subclass. SchemeParser You will have to add a method for generating objects of the new type. This will generally involve a line like result = new (*interp_) <your class>(...) The *interp_ argument to new is important to make the newly generated object properly garbage collected. TODO: is this all ? add an example! Backends In order to create a completely new backend, you first need to create a new subclass of SerialFOTBuilder implementing the output format you are interested in. It is probably a good idea to take an existing backend as a skeleton. TODO: More detail needed. To make the new backend available to Jade, you have to add new values for your backend to JadeApp::OutputType and JadeApp::outputTypeNames and add a new case to the switch statement in JadeApp::makeFOTBuilder() returning an instance of your FOTBuilder subclass. Flow objects For a standard flow object, you must create a new subclass of FlowObj (atomic) or CompoundFlowObj (nonatomic). Do not forget to add a FLOW_OBJ macro call for the new class in the Interpreter::installFlowObjs() function in style/FlowObj.cxx. The processInner() of the new class is responsible for calling the FOTBuilder function (or pair of functions for nonatomic flow objects) associated with the flow object in question. You may have to add these functions to the interface of the FOTBuilder class and provide default definitions there. These have to be overridden by the backends (FOTBuilder subclass) in order to implement the flow object in question. TODO: explain extension flow objects Command line switches If you are adding a new Jade-specific option, add it to JadeApp. If the option you are adding influences the behaviour of the style engine, add it to DssslApp. Adding an option amount to registering it in the constructor with registerOption() and handling it in processOption(). The CmdLineApp supports only single-letter options. You should make sure that you don't choose a letter that is already taken: b, f, v registered by CmdLineApp c, C, D registered by EntityApp a, A, e, E, g, i, w registered by ParserApp G, 2, d, V registered by DssslApp t, o registered by JadeApp A -s flag for <classname>DssslApp</classname> Lets assume you have changed the StyleEngine constructor to accept one more bool parameter strict_, which you want to be set depending on the -s command line flag. We add a new private member strict_ to DssslApp to hold the value until we pass it to the StyleEngine constructor. Thus we insert bool strict_; at the very end of the DssslApp class declaration in style/DssslApp.h. Now we change the constructor to DssslApp::DssslApp(int unitsPerInch) : GroveApp("unicode"), unitsPerInch_(unitsPerInch), dssslSpecOption_(0), debugMode_(0), dsssl2_(0), strict_(0) // this line is new { registerOption('G'); registerOption('2'); registerOption('d', SP_T("dsssl_spec")); registerOption('V', SP_T("variable")); registerOption('s'); // this line is new } and the function processOption() to void DssslApp::processOption(AppChar opt, const AppChar *arg) { switch (opt) { case 's': // new case strict_ = 1; break; /* other cases stay the same */ } } Finally, we change the call of the StyleEngine constructor in processGrove() to StyleEngine se(*this, *this, unitsPerInch_, debugMode_, dsssl2_, strict_, extensions); Supporting a larger grove plan ??? Translating messages I can explain this only for the gettext() support. Here are the necessary steps: Make sure to define SP_HAVE_GETTEXT and undefine SP_NO_MESSAGE_TEXT. I had to change the test for gettext() in config/configure.in from AC_CHECK_LIB(intl,gettext,AC_DEFINE(SP_HAVE_GETTEXT) LIBS="$LIBS -lintl") to AC_CHECK_FUNC(gettext,AC_DEFINE(SP_HAVE_GETTEXT), AC_CHECK_LIB(intl,gettext,AC_DEFINE(SP_HAVE_GETTEXT) LIBS="$LIBS -lintl")) and call autoconf to regenerate the configure script. Add the following to msggen.pl in order to generate .po files: chmod 0666, "$file_base.po"; unlink("$file_base.po"); open(OUT, ">$file_base.po"); chmod 0444, "$file_base.po"; select(OUT); printf "# %s\n\n", $file_base; foreach $i (0 .. $#message) { if (defined($message[$i])) { $str = $message[$i]; $str =~ s/"/""/g; printf "msgid \"%s\"\nmsgstr \"\"\n\n", $str; } elsif (defined($message2[$i])) { $str = $message2[$i]; $str =~ s/"/""/g; printf "msgid \"%s\"\nmsgstr \"\"\n\n", $str; } } close(OUT); Build everything. Collect the various .po files in one big one: for i in */*.po; do cat $i >> messages.po; done Make a copy of messages.po for the language you are interested in and add the translations. Compile the translated file and install the resulting .mo file under the name sp.mo in the appropriate directory: msgfmt -o de.mo de.po cp de.mo /usr/local/share/locale/de/LC_MESSAGES/sp.mo
openjade-1.3.2/develdoc/missing0100664000076400007640000001150706756317670014623 0ustar ianianThis collects stuff from the DSSSL standard which is not implemented (yet) in OpenJade. A '+' at the end of a line indicates that there is a patch implementing it. A '*' indicates it is already in CVS. missing DSSSL architectural element forms ========================================= 7.1.1 features 7.1.2 sgml-grove-plan 7.1.3 char-repertoire * 7.1.5 other-chars + 7.1.6 baseset-encoding + (the patch is only semi-functional) 7.1.7 literal-described-char + (the patch is only semi-functional) 7.1.9 add-separator-chars * 7.1.10 add-name-chars * 7.1.11 combine-char + (the patch is only semi-functional) missing expression language primitives ====================================== 8.5.8.1 declare-char-property * add-char-properties * 8.5.8.2 language? * current-language * with-language * 8.5.8.2.1 define-language * 8.5.8.4 char? * char<=? * char>=? * 8.5.8.5 char-ci? * char-ci<=? * char-ci>=? * 8.5.8.6 char-upcase * char-downcase * 8.5.8.7 char-property * 8.5.9.5 string-ci=? * string-equiv? * 8.5.9.6 string? * string<=? * string>=? * string-ci? * string-ci<=? * string-ci>=? * missing property set modules ============================ basesds1 sdclabs sdclsds prlgabs1 * prlgsds instsds1 dtgabs rankabs srabs srsds linkabs linksds subdcsds fpiabs missing SDQL primitives ======================= 10.1.1 current-root * 10.2.1 value-proploc list-proploc node-list-proploc listloc nameloc groveloc treeloc pathloc relloc-any relloc-esib relloc-ysib relloc-des datatok make-grove literal-match hylex-match compare ordered-may-overlap? ordered-no-overlap? span 10.2.2 node-list-reduce * node-list-contains? * node-list-remove-duplicates * node-list-union * node-list-intersection * node-list-difference * node-list-symmetric-difference * node-list-map * node-list-union-map * node-list-some? * node-list-every? * node-list-filter * node-list->list * node-list-tail * node-list-head * node-list-sublist * node-list-count * node-list-last * there-exist? * for-all? * select-each * union-for-each * 10.2.3 node-list-property * origin * origin-to-subnode-rel * tree-root * grove-root * source * subtree * subgrove * ancestors * grove-root-path * rsiblings * ipreced * ifollow * grove-before? * sort-in-tree-order * tree-before? * tree-before * property-lookup * select-by-property * select-by-null-property * select-by-missing-property * 10.2.5 attribute * referent * q-element * q-class * q-sdata * 10.3.1 word-parse select-tokens 10.3.2 regexp? 10.3.3 regexp-node regexp-seq regexp-or regexp-and regexp-rep regexp-plus regexp-opt regexp-range string->regexp 10.3.4 regexp-search regexp-search-disjoint Transformation language ======================= Style language ============== 12.4.1 query 12.4.6 char-script-case declare-char-characteristic+property * 12.4.7 sync side-sync 12.5.1 generated-object? 12.5.1.1 general-indirect-sosofo asis-indirect-sosofo number-indirect-sosofo 12.5.1.2 page-number category-page-number page-number-in-node total-node-page-numbers column-number footnote-number line-number 12.5.1.3 declare-reference-value-type first-area-reference-value last-area-reference-value last-preceding-area-reference-value all-area-reference-value 12.5.3 decoration-area decorated-area-width decorated-area-height 12.5.7 font-property Missing color spaces ==================== ISO/IEC 10179:1996//Color-Space Family::Device Gray * ISO/IEC 10179:1996//Color-Space Family::Device CMYK * ISO/IEC 10179:1996//Color-Space Family::Device KX * ISO/IEC 10179:1996//Color-Space Family::CIE LAB * ISO/IEC 10179:1996//Color-Space Family::CIE LUV * ISO/IEC 10179:1996//Color-Space Family::CIE Based ABC * ISO/IEC 10179:1996//Color-Space Family::CIE Based A * Missing flow object classes =========================== page-sequence (and related expression language primitives and types) column-set-sequence (and related expression language primitives and types) anchor embedded-text included-container-area side-by-side side-by-side-item glyph-annotation aligned-column multi-line-inline-note emphasizing-mark Ignored inherited characteristics ================================= force!c * inline-space-space * line-miter-limit alignment-point-offset hyphenation-char asis-truncate-char asis-wrap-char first-line-align hyphenation-exceptions box-corner-rounded table-corner-rounded line-dash allowed-ligatures line-number line-spacing-priority char-map openjade-1.3.2/docsrc/0040775000076400007640000000000007572433112012701 5ustar ianianopenjade-1.3.2/docsrc/openjade.10100664000076400007640000004024307572432757014566 0ustar ianian.\"Generated by db2man.xsl. Don't modify this, modify the source. .de Sh \" Subsection .br .if t .Sp .ne 5 .PP \fB\\$1\fR .PP .. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Ip \" List item .br .ie \\n(.$>=3 .ne \\$3 .el .ne 3 .IP "\\$1" \\$2 .. .TH "OPENJADE" 1 "January 2002" "OpenJade" "" .SH NAME openjade \- apply a DSSSL stylesheet to an SGML or XML document .SH "SYNOPSIS" .nf \fBopenjade\fR [\fB-vCegG2s\fR] [\fB-b \fIencoding\fR\fR] [\fB-f \fIerror_file\fR\fR] [\fB-c \fIcatalog_sysid\fR\fR] [\fB-D \fIdir\fR\fR] [\fB-a \fIlink_type\fR\fR] [\fB-A \fIarch\fR\fR] [\fB-E \fImax_errors\fR\fR] [\fB-i \fIentity\fR\fR] [\fB-w \fIwarning_type\fR\fR] [\fB-d \fIdsssl_spec\fR\fR] [\fB-V \fIvariable\fB=\fIvalue\fR\fR\fR\fR] [\fB-t \fIoutput_type\fR\fR] [\fB-o \fIoutput_file\fR\fR] [\fB\fIsysid\fR\fR...] .fi .SH "DESCRIPTION" .PP \fBopenjade\fR is an implementation of the ISO/IEC 10179:1996 standard DSSSL language. The DSSSL engine receives as input an SGML or XML document and transforms it into formats like: .PP * XML representation of the flow object tree. .PP * RTF format that can be rendered and printed with Microsoft's free Word Viewer 97 .PP * TeX format .PP * MIF format that can be rendered and printed with Framemaker .PP * SGML or XML format. This is used in conjunction with non-standard flow object classes to generate SGML, thus allowing \fBopenjade\fR to be used for SGML/XML transformations. .PP The system identifier of the document to be processed is specified as an argument to \fBopenjade\fR. If this is omitted, standard input will be read. .PP \fBopenjade\fR determines the system identifier for the DSSSL specification as follows: .PP 1. If the -d option is specified, it will use the argument as the system identifier. .PP 2. Otherwise, it will look for processing instructions in the prolog of the document. Two kinds of processing instruction are recognized: .PP .PP The system data of the processing instruction is parsed like an SGML start-tag. It will be parsed using the reference concrete syntax whatever the actual concrete syntax of the document. The name that starts the processing instruction can be either stylesheet, xml-stylesheet or xml:stylesheet. The processing instruction will be ignored unless the value of the type attribute is one of text/dsssl, text/x-dsssl, application/dsssl, or application/x-dsssl. The value of href attribute is the system identifier of the DSSSL specification. .PP .PP The system identifier is the portion of the system data of the processing instruction following the initial name and any whitespace. .PP Although the processing instruction is only recognized in the prolog, it need not occur in the document entity. For example, it could occur in a DTD. The system identifier will be interpreted relative to where the the processing instruction occurs. .PP 3. Otherwise, it will use the system identifier of the document with any extension changed to .dsl. .PP A DSSSL specification document can contain more than one style-specification. If the system identifier of the DSSSL specification is followed by #id, then \fBopenjade\fR will use the style-specification whose unique identifier is id. This is allowed both with the \fB-d\fR option and with the processing instructions. .PP The DSSSL specification must be an SGML document conforming to the DSSSL architecture. For an example, see \fIdsssl/demo.dsl\fR. .PP \fBopenjade\fR supports the following options in addition to the normal OpenSP (see \fBonsgmls(1)\fR) options (note that all options are case-sensitive, ie \fB-g\fR and \fB-G\fR are different options): .TP \fB-d \fIdsssl_spec\fR\fR This specifies that dsssl_spec is the system identifier of the DSSSL specification to be used. .TP \fB-G\fR Debug mode. When an error occurs in the evaluation of an expression, \fBopenjade\fR will display a stack trace. Note that this disables tail-call optimization. .TP \fB-c \fIfilename\fR\fR The filename arguments specify catalog files rather than the document entity. The document entity is specified by the first DOCUMENT entry in the catalog files. .TP \fB-s\fR Strict compliance mode. Currently the only effect is that jade doesn't use any predefined character names, sdata-entity mappings or name-characters. This is useful for checking that your stylesheet is portable to other DSSSL implementations and that it is strictly compliant to the DSSSL specifications. .TP \fB-t \fIoutput_type\fR\fR \fIoutput_type\fR specifies the type of output as follows: \fBfot \fR An XML representation of the flow object tree \fBrtf\fR \fBrtf-95 \fR RTF (used for SGML/XML to RTF transformations) Microsoft's Rich Text Format. rtf-95 produces output optimized for Word 95 rather than Word 97. \fBtex\fR TeX (used for SGML/XML to TeX transformations) \fBsgml\fR \fBsgml-raw\fR SGML (used for SGML/XML to SGML transformations). sgml-raw doesn't emit linebreaks in tags. \fBxml\fR \fBxml-raw\fR XML (used for SGML/XML to XML transformations). xml-raw doesn't emit linebreaks in tags. \fBhtml \fR HTML (used for SGML/XML to HTML transformations) \fBmif\fR MIF (used for SGML/XML to MIF transformations) .TP \fB-o \fIoutput_file\fR\fR Write output to \fIoutput_file\fR instead of the default. The default filename is the name of the last input file with its extension replaced by the name of the type of output. If there is no input filename, then the extension is added onto jade-out. .TP \fB-V \fIvariable\fR\fR This is equivalent to doing (define variable #t) except that this definition will take priority over any definition of variable in a style-sheet. .TP \fB-V \fIvariable=value\fR\fR This is equivalent to doing (define \fIvariable\fR "\fIvalue\fR") except that this definition will take priority over any definition of variable in a style-sheet. .TP \fB-V (define \fIvariable\fR value)\fR This is equivalent to doing (define variable value) except that this definition will take priority over any definition of variable in a style-sheet. Note that you will probably have to use some escaping mechanism for the spaces to get the entire scheme expression parsed as one cmdline argument. .TP \fB-w\fItype\fR\fR Control warnings and errors. Multiple \fB-w\fR options are allowed. The following values of type enable warnings: \fBxml\fR Warn about constructs that are not allowed by XML. \fBmixed\fR Warn about mixed content models that do not allow #pcdata anywhere. \fBsgmldecl\fR Warn about various dubious constructions in the SGML declaration. \fBshould\fR Warn about various recommendations made in ISO 8879 that the document does not comply with. (Recommendations are expressed with ``should'', as distinct from requirements which are usually expressed with ``shall''.) \fBdefault\fR Warn about defaulted references. \fBduplicate\fR Warn about duplicate entity declarations. \fBundefined\fR Warn about undefined elements: elements used in the DTD but not defined. \fBunclosed\fR Warn about unclosed start and end-tags. \fBempty\fR Warn about empty start and end-tags. \fBnet\fR Warn about net-enabling start-tags and null end-tags. \fBmin-tag\fR Warn about minimized start and end-tags. Equivalent to combination of unclosed, empty and net warnings. \fBunused-map\fR Warn about unused short reference maps: maps that are declared with a short reference mapping declaration but never used in a short reference use declaration in the DTD. \fBunused-param\fR Warn about parameter entities that are defined but not used in a DTD. Unused internal parameter entities whose text is INCLUDE or IGNORE won't get the warning. \fBnotation-sysid\fR Warn about notations for which no system identifier could be generated. \fBall\fR Warn about conditions that should usually be avoided (in the opinion of the author). Equivalent to: mixed, should, default, undefined, sgmldecl, unused-map, unused-param, empty and unclosed. A warning can be disabled by using its name prefixed with no-. Thus \fB-wall\fR \fB-wno-duplicate\fR will enable all warnings except those about duplicate entity declarations. The following values for \fIwarning_type\fR disable errors: \fBno-idref\fR Do not give an error for an ID reference value which no element has as its ID. The effect will be as if each attribute declared as an ID reference value had been declared as a name. \fBno-significant\fR Do not give an error when a character that is not a significant character in the reference concrete syntax occurs in a literal in the SGML declaration. This may be useful in conjunction with certain buggy test suites. \fBno-valid\fR Do not require the document to be type-valid. This has the effect of changing the SGML declaration to specify VALIDITY NOASSERT and IMPLYDEF ATTLIST YES ELEMENT YES. An option of \fB-wvalid\fR has the effect of changing the SGML declaration to specify VALIDITY TYPE and IMPLYDEF ATTLIST NO ELEMENT NO. If neither \fB-wvalid\fR nor \fB-wno-valid\fR are specified, then the VALIDITY and IMPLYDEF specified in the SGML declaration will be used. .SH "ENVIRONMENT" .PP OpenJade ignores the SP_CHARSET_FIXED and SP_SYSTEM_CHARSET environment variables and always uses Unicode as its internal character set, as if SP_CHARSET_FIXED was 1 and SP_SYSTEM_CHARSET was unset. Thus only the SP_ENCODING environment variable is relevant to OpenJade's handling of character sets. .SH "OPENJADE EXTENSIONS" .PP The following external procedures are available. These external procedures are defined by a prototype in the same manner as in the standard. To use one of these external procedures, you must make use of the standard external-procedure procedure, using a public identifier of "UNREGISTERED::James Clark//Procedure::name" where name is the name given here, typically by including the following in the DSSSL specification: .PP (define name (external-procedure "UNREGISTERED::James Clark//Procedure::name")) .PP Note that external-procedure returns #f if it doesn't know about the specified public identifier. You can use this to enable your DSSSL specifications to work gracefully with other implementations which do not support these extensions. .PP For external procedures added by the OpenJade team, use a public identifier of the form "UNREGISTERED::OpenJade//Procedure::name". .PP An easy way to get access to all external procedures is to use the style specification dsssl/extensions.dsl#procedures. The file dsssl/extensions.dsl also contains style specifications which make the nonstandard flow object classes and inherited characteristics supported by the backends available in a convenient way. .PP \fBDebugging\fR .PP (debug obj) .PP Generates a message including the value of obj and then returns obj. .PP \fBSimple-page-sequence header/footer control\fR .PP (if-first-page sosofo1 sosofo2) .PP This can be used only in the specification of the value of one of the header/footer characteristics of simple-page-sequence. It returns a sosofo that will display as sosofo1 if the page is the first page of the simple-page-sequence and as sosofo2 otherwise. .PP (if-front-page sosofo1 sosofo2) .PP This can be used only in the specification of the value of one of the header/footer characteristics of simple-page-sequence. It returns a sosofo that will display as sosofo1 if the page is a front (ie recto, odd-numbered) page and as sosofo2 if it is a back (ie verso, even-numbered) page. .PP \fBNumbering\fR .PP (all-element-number) .PP (all-element-number osnl) .PP This is the same as element-number except it counts elements with any generic identifier. If osnl is not an element returns #f, otherwise returns 1 plus the number of elements that started before osnl. This provides an efficient way of creating a unique identifier for any element in a document. .PP \fBExternal entity access\fR .PP (read-entity string) .PP This returns a string containing the contents of the external entity with system identifier string. This should be used only for textual entities (CDATA and SDATA), and not for binary entities (NDATA). .PP \fBPOSIX locale access\fR .PP (language lang country) .PP This procedure returns an object of type language, if the system supports the specified language. lang is a string or symbol giving the two letter language code. country is a string or symbol giving the two letter country code. .PP This procedure uses POSIX locales. It is an OpenJade addition. It is not supported on all operating systems. .PP \fBExtended standard procedures\fR .PP (sgml-parse sysid #!key active: parent: architecture:) .PP This allows you to specify an SGML architecture with respect to which the document should be parsed. It is an OpenJade addition. .PP (expt q k) .PP This allows you to raise a quantity to an integral power. It is an OpenJade addition. .SH "LIMITATIONS" .PP This section describes the limitations of the front-end (the general-purpose DSSSL engine); each backend also has its own limitations. .PP \fBopenjade\fR doesn't allow internal definitions at the beginning of bodies and the (test => recipient) variant of cond clauses. .PP \fBopenjade\fR supports only a single, fixed grove plan which comprises the following modules: .PP * baseabs .PP * prlgabs0 .PP * prlgabs1 .PP * instabs .PP * basesds0 .PP * instsds0 .PP * subdcabs .PP It doesn't implement the following parts of SDQL: HyTime support, auxiliary parsing, node regular expressions. .PP Query rules, sosofo synchronization, indirect sosofos, reference values, decoration areas and font properties are not supported. .PP Note that only inherited characteristics that are applicable to some supported flow object can be specified. .PP \fBCharacter/glyph handling\fR .PP It only supports a single pre-defined character repertoire. A character name of the form U-XXXX where XXXX are four upper-case hexadecimal digits, is recognized as referring to the Unicode character with that code. For many characters, it is also possible to use the ISO/IEC 10646 name in lower-case with words separated by hyphens. .PP Some common SDATA entity names from the ISO entity sets are recognized and mapped to characters. In addition an SDATA entity name of the form U-XXXX, where XXXX are four upper-case hexadecimal digits, is mapped to the Unicode character with that code. .PP OpenJade now supports the standard-chars, map-sdata-entity, add-name-chars, add-separator-chars and char-repertoire declaration element forms, allowing a style-sheet to define additional character names, sdata entity mappings, name characters (i.e. characters allowed in identifiers) and separator characters. Currently the only recognized character repertoire is the built-in repertoire. It has the public identifier "UNREGISTERED::OpenJade//Character Repertoire::OpenJade". .PP \fBValidation\fR .PP Several things that it would be desirable to have checked aren't checked: .PP * When the allowed value of an inherited characteristic is a symbol, OpenJade checks only that the value is a symbol that is allowed as the value of some characteristic; #t and #f are treated as a special kind of symbol in this case. .PP * OpenJade doesn't check whether a flow object is occurring in a context where it is allowed. .PP * OpenJade does not prevent flow objects being attached to the principal port of a flow object when the flow object shouldn't have a principal port. .PP * Most type-checking is done at run-time not compile-time. .PP * OpenJade does not check for non-inherited characteristics that are required to be specified. .PP * It doesn't check that optional features that have been used were declared in the features form. .PP \fBOther limitations\fR .PP The following primitives are just stubs: .PP \fBchar-script-case\fR Always returns last argument. .PP \fBaddress-visited?\fR Always returns #f. .SH "EXAMPLES" .PP Given an SGML file \fBfile.sgml\fR, use the stylesheet \fBfile.dsl\fR and publish as an rtf file. .PP openjade -t rtf file.sgml .PP Using a different stylesheet: .PP openjade -t rtf -d docbook.dsl file.sgml .PP Using the \fBprint\fR style specification contained within the stylesheet .PP openjade -t rtf -d docbook.dsl#print file.sgml .PP And use the html specification within the style sheet to convert to html .PP openjade -t sgml -i html -d docbook.dsl#html file.sgml .SH "SEE ALSO" .PP \fBonsgmls(1)\fR .SH AUTHORS James Clark, Ian Castle . openjade-1.3.2/docsrc/.cvsignore0100664000076400007640000000023607424044340014674 0ustar ianianonsgmls.1 openjade.1 osgmlnorm.1 ospam.1 osx.1 ospent.1 releasenotes.pdf releasenotes.html releasenotes.ps releasenotes.log releasenotes.aux releasenotes.out openjade-1.3.2/docsrc/Makefile0100664000076400007640000000223307572424460014344 0ustar ianianMAX_TEX_RECURSION=4 JADE=openjade JADETEX=jadetex PDFJADETEX=pdfjadetex XMLDECL=/usr/share/sgml/xml.dcl MAN_PAGES=openjade.1 all: $(MAN_PAGES) releasenotes.pdf releasenotes.html releasenotes.ps %.tex: %.xml %.dsl $(JADE) -v -t tex -V tex-backend -d $*.dsl#print $(XMLDECL) $*.xml %.pdf: %.tex $(PDFJADETEX) $< if ! cmp $(shell basename $< .tex).aux prior.aux 2>/dev/null && \ expr $(MAKELEVEL) '<' $(MAX_TEX_RECURSION); then \ cp -pf $(shell basename $< .tex).aux prior.aux ; \ rm -f $@ ; \ $(MAKE) $@ ; \ fi rm -f prior.aux %.dvi: %.tex $(JADETEX) $< if ! cmp $(shell basename $< .tex).aux prior.aux 2>/dev/null && \ expr $(MAKELEVEL) '<' $(MAX_TEX_RECURSION); then \ cp -pf $(shell basename $< .tex).aux prior.aux ; \ rm -f $@ ; \ $(MAKE) $@ ; \ fi rm -f prior.aux %.ps: %.pdf acroread -toPostScript -pairs $< $@ %.html: %.xml %.dsl $(JADE) -v -t sgml -i html -V nochunks -V rootchunk -V "%root-filename%=$*" -V "%html-ext%=.html" -d $*.dsl#html $(XMLDECL) $*.xml %.1: %.xml xmlto man -x /usr/share/xmlto/xsl/db2man/docbook.xsl $*.xml clean: -rm -f *.out *.aux *.log *.dvi *.tex realclean: clean -rm -f *.html *.pdf $(MAN_PAGES) *.ps openjade-1.3.2/docsrc/jade.10100664000076400007640000000002407422123351013652 0ustar ianian.so man1/openjade.1 openjade-1.3.2/docsrc/jadetex.cfg0100664000076400007640000000024207424044340014776 0ustar ianian\hypersetup{pdfpagemode=None, pdfauthor=OpenJade Project, colorlinks=false, linkcolor=black, pdfstartview=FitH} \def\Gin@extensions{.pdf,.png,.jpg,.mps,.tif} openjade-1.3.2/docsrc/logo.png0100664000076400007640000000324707424044340014347 0ustar ianian‰PNG  IHDRwÔh·D pHYsĘ&ó?tEXtSoftwareGNU Ghostscript 5.50ĺű‹”0IDATxśíYÍ‘ó(}ßÖĆÁ'ÎD€Ź„ dMŽŔ!XVAGgNÔv"ł4’lĎV};{XwMąl šÇë_____xËż,ü×ţňfů'äÍňOČ›ĺź?_Ž ˘sŚc¸]U×39 7¦ pD!FP°R !¸’É9 ( U^•ÁŽÜ-˘“0e¶#şĹYCYiZ•ŢgŐIaVoËt%›ůD4ÇčCá=Pč¤Ý®áś»@ÖČW:źČŻç=ĆäÜ1$( ęn€ľ[k„ ĐyšG ŕźÂĹôeKóĽłůkšUýem˘ţÓMcX~őý„·¤ínO •ŔÇ4•µ’—,ŰfĎůç}ę{ŃhřÜ…ť_ö mĺYĆpDÇp+?Ç€˛źäĽł‹#üîÜ1řOçŇ÷9Ć'«$ď "eçy.‹cěĘ1„˛sŮľš3,ŞCŮWËWĹ2Âźc@\P=@®`ÚČC–‰č·šdP(ČâcOTŹ!$îĘövĹJ‰Ť%F€8rd@+ą2ëCy—ĎmŚß­•Ŕ2ďdŞťhmUë€ŰŚ1?Źâbz`@«ÎJaVfj|ed‘Q1ćw·4ÇXăWuÍ+7o†«˘ę.O‡yápWę«ď?§©Ŕ>„đe +Í8ŕÚ"đͤŚGľěĆ–â­Fq·ö/{0Âç0Ĺh„ĐJUódšĆ#p 7!„ÉĹűŘrY"n`Ů`oGžĄ Î1›TÓh6BŐ€)ĐNÖrĹËE]"®aŕw©Ű•}–oqÎnĄµ-.Ëk`q #Ä6ăzžF¤¤€KĹpDŽś#ĘńžĄ.cŇwŹ3Ťí®hd?$sö3Ë?좓»ĹšLR”!xěŐŰ`X!˙¦ěłśkś¤Ý(Y2´ůôÓMlçÚqvÓaŮžôćóa‡ůü‘ó~Vâ J/ßr÷˛_g{h "sţą+PrkU2rO¨^Ym, &çó™ĹÎČçŹůĽĹóDvX¦¦Wôaqp†—çÓc¸•–Ŕ])´K3x×*€.ëfÖZÜŤ@“«®ÄKÓ5›ar.Wˇ l‰S ĐbýĐ—R6üĐt&Że‡ećśM˙t¬ úžD5f‡ qAŻ`Śi#k]ë;i•¤ŚA5_ĆKçi>†ŰažĎqFk`%Ü;Źląc>wđ Î,tJ”°‡:=ä•iEŃ÷{¸$ŹzڵvGMG‘<˛tˇUŞ#M˙/„¸*Cq^Ý-ůG!–t_4k µMż´Ţ€†˘&){ ‹¦ł|ćkĚI˝’őd°ĚJÍĺUuEátöJšő!óą
openjade James Clark Ian Castle ian.castle@looksystems.co.uk 2002 OpenJade Project
Reference January 2002 OpenJade openjade 1 openjade apply a DSSSL stylesheet to an SGML or XML document openjade Description openjade is an implementation of the ISO/IEC 10179:1996 standard DSSSL language. The DSSSL engine receives as input an SGML or XML document and transforms it into formats like: * XML representation of the flow object tree. * RTF format that can be rendered and printed with Microsoft's free Word Viewer 97 * TeX format * MIF format that can be rendered and printed with Framemaker * SGML or XML format. This is used in conjunction with non-standard flow object classes to generate SGML, thus allowing openjade to be used for SGML/XML transformations. The system identifier of the document to be processed is specified as an argument to openjade. If this is omitted, standard input will be read. openjade determines the system identifier for the DSSSL specification as follows: 1. If the -d option is specified, it will use the argument as the system identifier. 2. Otherwise, it will look for processing instructions in the prolog of the document. Two kinds of processing instruction are recognized: <?stylesheet href="sysid" type="text/dsssl"> The system data of the processing instruction is parsed like an SGML start-tag. It will be parsed using the reference concrete syntax whatever the actual concrete syntax of the document. The name that starts the processing instruction can be either stylesheet, xml-stylesheet or xml:stylesheet. The processing instruction will be ignored unless the value of the type attribute is one of text/dsssl, text/x-dsssl, application/dsssl, or application/x-dsssl. The value of href attribute is the system identifier of the DSSSL specification. <?dsssl sysid> The system identifier is the portion of the system data of the processing instruction following the initial name and any whitespace. Although the processing instruction is only recognized in the prolog, it need not occur in the document entity. For example, it could occur in a DTD. The system identifier will be interpreted relative to where the the processing instruction occurs. 3. Otherwise, it will use the system identifier of the document with any extension changed to .dsl. A DSSSL specification document can contain more than one style-specification. If the system identifier of the DSSSL specification is followed by #id, then openjade will use the style-specification whose unique identifier is id. This is allowed both with the option and with the processing instructions. The DSSSL specification must be an SGML document conforming to the DSSSL architecture. For an example, see dsssl/demo.dsl. openjade supports the following options in addition to the normal OpenSP (see onsgmls(1)) options (note that all options are case-sensitive, ie and are different options): This specifies that dsssl_spec is the system identifier of the DSSSL specification to be used. Debug mode. When an error occurs in the evaluation of an expression, openjade will display a stack trace. Note that this disables tail-call optimization. The filename arguments specify catalog files rather than the document entity. The document entity is specified by the first DOCUMENT entry in the catalog files. Strict compliance mode. Currently the only effect is that jade doesn't use any predefined character names, sdata-entity mappings or name-characters. This is useful for checking that your stylesheet is portable to other DSSSL implementations and that it is strictly compliant to the DSSSL specifications. output_type specifies the type of output as follows: An XML representation of the flow object tree RTF (used for SGML/XML to RTF transformations) Microsoft's Rich Text Format. rtf-95 produces output optimized for Word 95 rather than Word 97. TeX (used for SGML/XML to TeX transformations) SGML (used for SGML/XML to SGML transformations). sgml-raw doesn't emit linebreaks in tags. XML (used for SGML/XML to XML transformations). xml-raw doesn't emit linebreaks in tags. HTML (used for SGML/XML to HTML transformations) MIF (used for SGML/XML to MIF transformations) Write output to output_file instead of the default. The default filename is the name of the last input file with its extension replaced by the name of the type of output. If there is no input filename, then the extension is added onto jade-out. This is equivalent to doing (define variable #t) except that this definition will take priority over any definition of variable in a style-sheet. This is equivalent to doing (define variable "value") except that this definition will take priority over any definition of variable in a style-sheet. This is equivalent to doing (define variable value) except that this definition will take priority over any definition of variable in a style-sheet. Note that you will probably have to use some escaping mechanism for the spaces to get the entire scheme expression parsed as one cmdline argument. Control warnings and errors. Multiple options are allowed. The following values of type enable warnings: Warn about constructs that are not allowed by XML. Warn about mixed content models that do not allow #pcdata anywhere. Warn about various dubious constructions in the SGML declaration. Warn about various recommendations made in ISO 8879 that the document does not comply with. (Recommendations are expressed with ``should'', as distinct from requirements which are usually expressed with ``shall''.) Warn about defaulted references. Warn about duplicate entity declarations. Warn about undefined elements: elements used in the DTD but not defined. Warn about unclosed start and end-tags. Warn about empty start and end-tags. Warn about net-enabling start-tags and null end-tags. Warn about minimized start and end-tags. Equivalent to combination of unclosed, empty and net warnings. Warn about unused short reference maps: maps that are declared with a short reference mapping declaration but never used in a short reference use declaration in the DTD. Warn about parameter entities that are defined but not used in a DTD. Unused internal parameter entities whose text is INCLUDE or IGNORE won't get the warning. Warn about notations for which no system identifier could be generated. Warn about conditions that should usually be avoided (in the opinion of the author). Equivalent to: mixed, should, default, undefined, sgmldecl, unused-map, unused-param, empty and unclosed. A warning can be disabled by using its name prefixed with no-. Thus will enable all warnings except those about duplicate entity declarations. The following values for warning_type disable errors: Do not give an error for an ID reference value which no element has as its ID. The effect will be as if each attribute declared as an ID reference value had been declared as a name. Do not give an error when a character that is not a significant character in the reference concrete syntax occurs in a literal in the SGML declaration. This may be useful in conjunction with certain buggy test suites. Do not require the document to be type-valid. This has the effect of changing the SGML declaration to specify VALIDITY NOASSERT and IMPLYDEF ATTLIST YES ELEMENT YES. An option of has the effect of changing the SGML declaration to specify VALIDITY TYPE and IMPLYDEF ATTLIST NO ELEMENT NO. If neither nor are specified, then the VALIDITY and IMPLYDEF specified in the SGML declaration will be used. Environment OpenJade ignores the SP_CHARSET_FIXED and SP_SYSTEM_CHARSET environment variables and always uses Unicode as its internal character set, as if SP_CHARSET_FIXED was 1 and SP_SYSTEM_CHARSET was unset. Thus only the SP_ENCODING environment variable is relevant to OpenJade's handling of character sets. OpenJade Extensions The following external procedures are available. These external procedures are defined by a prototype in the same manner as in the standard. To use one of these external procedures, you must make use of the standard external-procedure procedure, using a public identifier of "UNREGISTERED::James Clark//Procedure::name" where name is the name given here, typically by including the following in the DSSSL specification: (define name (external-procedure "UNREGISTERED::James Clark//Procedure::name")) Note that external-procedure returns #f if it doesn't know about the specified public identifier. You can use this to enable your DSSSL specifications to work gracefully with other implementations which do not support these extensions. For external procedures added by the OpenJade team, use a public identifier of the form "UNREGISTERED::OpenJade//Procedure::name". An easy way to get access to all external procedures is to use the style specification dsssl/extensions.dsl#procedures. The file dsssl/extensions.dsl also contains style specifications which make the nonstandard flow object classes and inherited characteristics supported by the backends available in a convenient way. (debug obj) Generates a message including the value of obj and then returns obj. (if-first-page sosofo1 sosofo2) This can be used only in the specification of the value of one of the header/footer characteristics of simple-page-sequence. It returns a sosofo that will display as sosofo1 if the page is the first page of the simple-page-sequence and as sosofo2 otherwise. (if-front-page sosofo1 sosofo2) This can be used only in the specification of the value of one of the header/footer characteristics of simple-page-sequence. It returns a sosofo that will display as sosofo1 if the page is a front (ie recto, odd-numbered) page and as sosofo2 if it is a back (ie verso, even-numbered) page. (all-element-number) (all-element-number osnl) This is the same as element-number except it counts elements with any generic identifier. If osnl is not an element returns #f, otherwise returns 1 plus the number of elements that started before osnl. This provides an efficient way of creating a unique identifier for any element in a document. (read-entity string) This returns a string containing the contents of the external entity with system identifier string. This should be used only for textual entities (CDATA and SDATA), and not for binary entities (NDATA). (language lang country) This procedure returns an object of type language, if the system supports the specified language. lang is a string or symbol giving the two letter language code. country is a string or symbol giving the two letter country code. This procedure uses POSIX locales. It is an OpenJade addition. It is not supported on all operating systems. (sgml-parse sysid #!key active: parent: architecture:) This allows you to specify an SGML architecture with respect to which the document should be parsed. It is an OpenJade addition. (expt q k) This allows you to raise a quantity to an integral power. It is an OpenJade addition. Limitations This section describes the limitations of the front-end (the general-purpose DSSSL engine); each backend also has its own limitations. openjade doesn't allow internal definitions at the beginning of bodies and the (test => recipient) variant of cond clauses. openjade supports only a single, fixed grove plan which comprises the following modules: * baseabs * prlgabs0 * prlgabs1 * instabs * basesds0 * instsds0 * subdcabs It doesn't implement the following parts of SDQL: HyTime support, auxiliary parsing, node regular expressions. Query rules, sosofo synchronization, indirect sosofos, reference values, decoration areas and font properties are not supported. Note that only inherited characteristics that are applicable to some supported flow object can be specified. It only supports a single pre-defined character repertoire. A character name of the form U-XXXX where XXXX are four upper-case hexadecimal digits, is recognized as referring to the Unicode character with that code. For many characters, it is also possible to use the ISO/IEC 10646 name in lower-case with words separated by hyphens. Some common SDATA entity names from the ISO entity sets are recognized and mapped to characters. In addition an SDATA entity name of the form U-XXXX, where XXXX are four upper-case hexadecimal digits, is mapped to the Unicode character with that code. OpenJade now supports the standard-chars, map-sdata-entity, add-name-chars, add-separator-chars and char-repertoire declaration element forms, allowing a style-sheet to define additional character names, sdata entity mappings, name characters (i.e. characters allowed in identifiers) and separator characters. Currently the only recognized character repertoire is the built-in repertoire. It has the public identifier "UNREGISTERED::OpenJade//Character Repertoire::OpenJade". Several things that it would be desirable to have checked aren't checked: * When the allowed value of an inherited characteristic is a symbol, OpenJade checks only that the value is a symbol that is allowed as the value of some characteristic; #t and #f are treated as a special kind of symbol in this case. * OpenJade doesn't check whether a flow object is occurring in a context where it is allowed. * OpenJade does not prevent flow objects being attached to the principal port of a flow object when the flow object shouldn't have a principal port. * Most type-checking is done at run-time not compile-time. * OpenJade does not check for non-inherited characteristics that are required to be specified. * It doesn't check that optional features that have been used were declared in the features form. The following primitives are just stubs: Always returns last argument. Always returns #f. Examples Given an SGML file file.sgml, use the stylesheet file.dsl and publish as an rtf file. openjade -t rtf file.sgml Using a different stylesheet: openjade -t rtf -d docbook.dsl file.sgml Using the print style specification contained within the stylesheet openjade -t rtf -d docbook.dsl#print file.sgml And use the html specification within the style sheet to convert to html openjade -t sgml -i html -d docbook.dsl#html file.sgml See Also onsgmls(1)
openjade-1.3.2/docsrc/releasenotes.dsl0100664000076400007640000001550307424044340016074 0ustar ianian ]> ;; This draws in version 1.74b of the module docbook DSSSL stylesheets ;; together with sourceforge patch #502637 ;; customize the print stylesheet (define %hsize-bump-factor% 1.1) (define %chapter-autolabel% ;; Are chapters enumerated? #f) (define %two-side% #t) (define %graphic-extensions% ;; List of graphic filename extensions '("pdf" "eps" "epsf" "gif" "tif" "tiff" "jpg" "jpeg" "png")) (define preferred-mediaobject-notations (list "PDF" "EPS" "PS" "JPG" "JPEG" "PNG" "linespecific")) (define preferred-mediaobject-extensions (list "pdf" "eps" "ps" "jpg" "jpeg" "png")) (define %titlepage-in-info-order% #f) ;; Fix bug in numbering of the preface (define ($component$) (make simple-page-sequence page-n-columns: %page-n-columns% page-number-restart?: (or %page-number-restart% (first-chapter?)) page-number-format: ($page-number-format$) use: default-text-style left-header: ($left-header$) center-header: ($center-header$) right-header: ($right-header$) left-footer: ($left-footer$) center-footer: ($center-footer$) right-footer: ($right-footer$) start-indent: %body-start-indent% input-whitespace-treatment: 'collapse quadding: %default-quadding% (make sequence ($component-title$) (process-children)) (make-endnotes))) ;; Customise the title page (element book (let* ((bookinfo (select-elements (children (current-node)) (normalize "bookinfo"))) (dedication (select-elements (children (current-node)) (normalize "dedication"))) (nl (titlepage-info-elements (current-node) bookinfo))) (make sequence (if %generate-book-titlepage% (make simple-page-sequence page-n-columns: %titlepage-n-columns% input-whitespace-treatment: 'collapse use: default-text-style bottom-margin: 144pt right-footer: ($title-right-footer$) (book-titlepage nl 'recto) (make display-group break-before: 'page (book-titlepage nl 'verso))) (empty-sosofo)) (if (node-list-empty? dedication) (empty-sosofo) (with-mode dedication-page-mode (process-node-list dedication))) (if (not (generate-toc-in-front)) (process-children) (empty-sosofo)) (if %generate-book-toc% (make simple-page-sequence page-n-columns: %page-n-columns% page-number-format: ($page-number-format$ (normalize "toc")) use: default-text-style left-header: ($left-header$ (normalize "toc")) center-header: ($center-header$ (normalize "toc")) right-header: ($right-header$ (normalize "toc")) left-footer: ($left-footer$ (normalize "toc")) center-footer: ($center-footer$ (normalize "toc")) right-footer: ($right-footer$ (normalize "toc")) input-whitespace-treatment: 'collapse (build-toc (current-node) (toc-depth (current-node)))) (empty-sosofo)) (let loop ((gilist ($generate-book-lot-list$))) (if (null? gilist) (empty-sosofo) (if (not (node-list-empty? (select-elements (descendants (current-node)) (car gilist)))) (make simple-page-sequence page-n-columns: %page-n-columns% page-number-format: ($page-number-format$ (normalize "lot")) use: default-text-style left-header: ($left-header$ (normalize "lot")) center-header: ($center-header$ (normalize "lot")) right-header: ($right-header$ (normalize "lot")) left-footer: ($left-footer$ (normalize "lot")) center-footer: ($center-footer$ (normalize "lot")) right-footer: ($right-footer$ (normalize "lot")) input-whitespace-treatment: 'collapse (build-lot (current-node) (car gilist)) (loop (cdr gilist))) (loop (cdr gilist))))) (if (generate-toc-in-front) (process-children) (empty-sosofo))))) (define %openjade-logo% ;; The nice look systems logo "logo.png" ) (define ($title-right-footer$) (if-first-page (make external-graphic scale: 1.0 entity-system-id: %openjade-logo% notation-system-id: "PDF" display?: #f) (empty-sosofo))) (define (book-titlepage-recto-elements) (list (normalize "corpauthor") (normalize "subtitle") (normalize "title") (normalize "graphic"))) (define (book-titlepage-verso-elements) (list (normalize "legalnotice") (normalize "copyright") (normalize "edition") (normalize "pubdate") (normalize "abstract") (normalize "revhistory"))) (define (book-titlepage-before node side) (empty-sosofo) ) (mode book-titlepage-recto-mode (element graphic (make display-group (make external-graphic entity-system-id: (attribute-string "fileref") display?: #t ) ) ) (element title (make paragraph font-size: 36pt font-family-name: "Palatino" font-weight: 'bold space-before: 12pt line-spacing: 36pt (make rule space-after: 4pt line-thickness: 1pt) (process-children) ) ) (element subtitle (make paragraph font-size: 24pt line-spacing: 24pt font-family-name: "Palatino" font-weight: 'bold (process-children) ) ) (element corpauthor (make paragraph font-size: 24pt line-spacing: 24pt space-after: 6pt font-family-name: "Palatino" font-weight: 'normal (process-children) ) ) ) ;; customize the html stylesheet ;; customize the html stylesheet (define %body-attr% ;; What attributes should be hung off of BODY? (list (list "BGCOLOR" "#FFFFFF") (list "TEXT" "#000000"))) openjade-1.3.2/docsrc/releasenotes.xml0100664000076400007640000012063407572424461016126 0ustar ianian OpenJade 1.3.2 Release Notes OpenJade Project Release 1.3.2 December 2002 2002 OpenJade Project OpenJade 1.3.2 Release Notes OpenJade is a suite of tools for validating, processing and applying DSSSL (Document Style Semantics and Specification Language) style sheets to SGML and XML documents. OpenJade is a project undertaken by the DSSSL community to maintain and extend James Clark's Jade, as well as the related SP suite of SGML/XML processing tools. OpenJade and OpenSP are distributed under the same license as Jade. Applications of OpenJade Many different projects, organizations and companies make use of OpenJade to publish documentation. The SGML/XML backend enables the generation of "world wide web ready" documents while the TeX backend allows high quality "ready for press" output to be obtained. The FreeBSD Handbook (second edition) ISBN: 1571763031 is one such example of a book created using OpenJade. Obtaining OpenJade OpenJade is a project hosted at sourceforge.net and is available from the OpenJade web site at http://openjade.sourceforge.net or directly from the OpenJade project page at http://sourceforge.net/projects/openjade OpenJade is provided in source code form. However as a courtesy to Win32 users where development tools are not always available, a binary release for the Win32 platform is usually available. Supported Platforms OpenJade is intended to be as portable as possible. It should be possible to compile and build on most contemporary UNIX type platforms. In addition OpenJade will also build on Microsoft's Win32 based operating systems. OpenJade is known to compile with both the GNU gcc c++ compiler and Microsoft Visual C++. Other compilers have not been extensively tested. OpenJade has been successfully built with the following GNU compilers: Red Hat g++ 2.96, GCC g++ 2.95.3, GCC g++ 3.2 OpenJade has been built on a number of architectures including Intel i386 and ia64, Alpha AXP, Sparc, PPC and S/390, S/390x. The following table details known successful builds Platforms on which OpenJade 1.3.2 is known to build. Arch. OS Compiler Notes alpha Debian 3.0 GNU gcc 3.2 arm Debian 3.0 GNU gcc 3.2 hppa Debian 3.0 GNU gcc 3.2 i386 Debian 3.0 GNU gcc 3.2 Red Hat Linux 7.3 Red Hat gcc 2.96 Red Hat Linux 7.3 GNU gcc 3.2 SuSE Linux 8.1 GNU gcc 3.2 ia64 Debian 3.0 GNU gcc 3.2 m68k Debian 3.0 GNU gcc 3.2 mips, mipsel Debian 3.0 GNU gcc 3.2 powerpc Debian 3.0 GNU gcc 3.2 s390 Debian 3.0 GNU gcc 3.2 sparc Debian 3.0 GNU gcc 3.2
Please report any successful builds not mentioned above to openjade-devel@lists.sourceforge.net, including any diffs/patches you have used.
Building OpenJade from Source OpenJade requires 40Mb to 50Mb of disk space to build. An installation will require around 15Mb to 20Mb depending on architecture. OpenJade makes use of the GNU software configuration tools (autoconf, libtool, automake etc). The GNU C++ compiler and make utility should also be used. The steps required to build the OpenJade tools (onsgmls, openjade, osgmlnorm, ospam, ospent, osx) and libraries are as follows: gzip -d openjade-1.3.2.tar.gz | tar xvf - cd openjade-1.3.2 ./configure make You may need to switch to the super user root to complete the installation make install If you wish to install man pages for the various commands you should then do make install-man The configure script supports many options. These can be displayed using the command ./configure --help In addition to the standard options, the following table describes options specific to openjade. OpenJade specific configure options Option Default Explanation /usr/include/OpenSP Define the path where the OpenSP include files may be found. /usr/lib Define the path where the OpenSP library (libosp) may be found. MIF support is enabled disable support for FrameMaker MIF output (the option) to openjade. html support enabled disable support for HTML+CSS output (the to openjade). Not enabled Provide one or more default catalog files or sysids, e.g. /usr/local/lib/sgml/catalog Not enabled Provide a default value for SGML_SEARCH_PATH
Please refer to the system documentation for details on building on the Win32 platform.
Binary Distributions Although the OpenJade project does not make binary distributions available, OpenJade has been a part of many software distributions, including the major Linux distributions as well as FreeBSD. Expect pre-compiled and packaged versions of the latest version of OpenJade to be available from your distributor in due course. Installation In addition to the OpenJade executables and libraries you will also need various DTDs and stylesheets. Some DTDs and associated files (entity definitions) are available in the pubtext directory of the distribution. However, more authoritative sources should be referenced to ensure that up-to-date versions are used. If you wish to process XML files, then suitable SGML declarations for valid XML documents should be used. Again, a sample set of declarations (xml.dcl) is provided in the pubtext, but more complete or recent versions may be available from other sources. OpenJade supports the standard SGML catalog facility; it is recommended that you set up and use such a catalog system. Generally speaking you will create your own DSSSL stylesheets for use with OpenJade, however, users of the OASIS DocBook DTD should be aware that extensive, and modular, stylesheets are available from the DocBook project at http://docbook.sourceforge.net. If you wish to make use of the TeX backend you will require an up to date distribution of laTeX such as teTeX, TeXlive or fpTeX. In addition you will also require the jadetex package, available from http://jadetex.sourceforge.net. Support If, after reading the documentation, you still have a problem, then you may require some additional help. The OpenJade project is a volunteer effort and as such does not provide any formal support. Instead, you should look to the community for support. Once part of the community, you, in turn, will be able to play your part in helping those that come after you. Here are some pointers to obtaining help: If you obtained your OpenJade tools in binary form from your operating system distributor and you have a build related problem - such as openjade crashing, then your first port of call should be your distributor. If you have a problem with the usage of openjade and tools, or general queries about DSSSL then you should try the DSSSL mailing list, see http://www.mulberrytech.com/dsssl/dssslist/ for details. If you are using the DocBook DTD and especially if you are also using the Modular DocBook DSSSL stylesheets, then the docbook-apps mailing list is the place to go. See http://www.oasis-open.org/docbook/mailinglist/ for details. If you have a patch or bug fix for OpenJade, or are trying to use the OpenSP API then the openjade-devel mailing list is the appropriate forum. Please choose only one mailing list to post to, as cross-posting is generally frowned upon. The various mailing lists are archived and searchable. It is always worth searching for your problem first, as it is often the case that someone has had the same problem before. Version 1.3.2 Released December 2002. This release allows openjade to be built against the most recent OpenSP release - version 1.5. It also contains some fixes for the MIF backend which were omitted from the 1.3.1 release. OpenSP is now distributed in a separate package and made available on its own release cycle Changes for release 1.3.2 Item 1 MIF Backend Fixes References G. Seshadri et al. Category Software Bug Problem Issues with page size and page header/footers Resolution Fix to make sure that right header is shown in documents and that document page size is initialised correctly. Item 2 Support for building OpenSP 1.5 References Ian Castle, Karl Eichwalder Category Software Bug Problem OpenSP is now at version 1.5 which has many improvements over 1.3.4 Resolution It is desirable to use OpenSP 1.5 which has many improvements over version 1.3.4 which shipped with openjade 1.3.1. However, it is awkward having to have two versions of OpenSP at the same time. OpenJade 1.4 is not ready for release yet, so version 1.3.2 will link against OpenSP 1.5 and later - and no longer includes the old version 1.3.4 of OpenSP. Item 3 Correct definition of "attribute" in builtin.dsl References Toby Speight, Debian Bug #145242 Category Software Bug Problem The definition of "attribute" (ISO/IEC 10179:1996, section 10.2.5) for SGML property operations was not correct. Resolution The definition has been corrected in accordance with the standard. Item 4 XML backend doesn't quote "&" in attribute values References Toby Speight, Debian Bug #147073 Category Software Bug Problem When using OpenJade with the XML or SGML backend to output attribute values containing the '&' character, the output is not well-formed. Resolution Fixed the Transform FOT Builder so that for XML output the '&' character is properly quoted.
Version 1.3.1 Released January 2002. This release is primarily a maintenance release. It delivers two key advantages over the OpenJade 1.3 release: Support for contemporary platforms (operating systems and compilers) and incorporates the various patches and improvements, especially to the TeX backend, which have been extensively used over the last few years. Probably the biggest benefit to TeX backend users are the enhanced table support and improved two sided output support (in conjunction with improvements to the companion jadetex package). The following table details the major improvements in Openjade 1.3.1 Changes for release 1.3.1 Item 1 Support for MacOS X/ Darwin References Fink Project; Kogulé, Ryo Category Software Bug Problem OpenJade 1.3 does not build and run on the Mac OS X/Darwin platform Resolution OpenJade 1.3.1 has been enhanced to support Mac OS X/Darwin 1.4. The autoconf configuration system has been upgraded and also includes specific platform support. Some minor code alterations to improve code portability (C++ style changes). Note that the POSIX locale feature is not available on this platform. Item 2 UNIX on-line manual pages References None Category Documentation Bug Problem No on-line manual (man) pages available on UNIX platforms Resolution OpenJade 1.3.1 now has a man page for every command. Additionally, if OpenJade is used as a replacement for Jade, then compatibility man pages are included (i.e. man jade is synonymous with man openjade). Item 3 Upgrade GNU source configuration tools References Various sourceforge problem reports, SuSE Linux 7.3, Red Hat 7.2, Red Hat Bugzilla #46212 Category Software Bug Problem The source configuration system is based on old versions of libtool and autoconf. In addition, there are problems with the generated Makefile files such that installation directories are not created. Resolution Upgraded to autoconf 2.52 and libtool 1.4. Upgraded the various support files. Included elements of automake support. Made the Makefiles more robust. These changes should facilitate porting to new/updated environments (i.e. those supported by newer versions of autoconf). Work has been done to enhance some of the custom autoconf tests to improve reliability. Item 4 Support for XML Byte Order Marks (BOM) References Source Forge bug #442560 (Terje Bless/Liam Quinn) Category Software Bug Problem Since OpenJade 1.3 was released, a second edition of the XML 1.0 specification has been released (REC-xml-20001006). This specification introduced the concept of Byte Order Marks to increase the sophistication of the detection of the character encoding system. OpenJade 1.3 would not recognize these, and rejected any XML file which included these as invalid. Resolution XML 1.0 Byte Order Marks are now accepted as valid XML. Item 5 Fix missing white space problem in processing instruction flow object References Source Forge Ref #505113, #505124 (Markus Hoenicka) Category Software Bug Problem No white space was emitted between the public-id and the system-id causing a malformed XML file to be generated. Resolution Fixed OpenJade to output a space between the public-id and the system-id. Item 6 Jadetex is now distributed independently References None Category Software Bug Problem OpenJade 1.3 shipped with Jadetex 2.7. Jadetex is developed and released separately from OpenJade. Resolution Removed jadetex files. Jadetex can be obtained from http://jadetex.sourceforge.net Item 7 Support for FreeBSD 4.4 References FreeBSD 4.4 openjade port Category Software Bug Problem OpenJade 1.3 would not build on FreeBSD 4.x Resolution The source configuration system has been enhanced to support FreeBSD out of the box. Note that the POSIX locale feature of OpenJade is not available under FreeBSD. Item 8 Allow non alpha numeric characters in Table of Contents References Red Hat Bugzilla #31525 Category Software Bug Problem Certain non alpha-numeric characters (such as $) do not appear correctly in the table of contents. This problem is confined to the TeX backend. Resolution Special characters are now correctly escaped in the TeX output file. Item 9 Support for latest Win32 build environments References None Category Software Bug Problem OpenJade 1.3 does not build with Visual C++ 6.0 Resolution Fix C++ style to be compatible with Visual C++. Update build environment. OpenJade 1.3.1 should run in all Windows 32 environments from Windows 95 through Windows NT to Windows XP. Item 10 Enhancements for Software Packaging References SuSE Linux 7.3 Category Software Bug Problem Numerous patches need to be applied to OpenJade 1.3 to enable packages to be built (RPM) Resolution Enhance Makefiles to ensure that packages are easy to build (including addition of DESTDIR environment variable). It should now be possible to build RPM packages and BSD ports without resorting to patches. Item 11 Support for newer GNU C++ compilers References SuSE Linux 7.3 (Andreas Schwab), Red Hat Linux 7.2, Connectiva Linux Category Software Bug Problem C++ is a shifting target. New compilers/standards demand changes. Resolution Various enhancements to allow OpenJade to build with the new GNU GCC 3.0 and the soon to be released GNU GCC 3.1 c++ compilers Item 12 Support for jadetex 3.4 and greater macros for two sided support References Sourceforge patch #439755, http://iNdev.iNsu.COM/openjade/ (Francis J. Lacoste) Category Software Bug Problem Two Sided output support with the TeX backend is unreliable in OpenJade 1.3 and Jadetex 2.x. Resolution Enhance the TeX backend two sided output support and bring into line with advances in the jadetex latex front end. Two extension characteristics are introduced to allow control of two-side and two-side-start-on-right. This also fixes the "blank page at the end of the document" problem. The following new characteristics are available: "UNREGISTERED::OpenJade//Characteristic::page-two-side?" "UNREGISTERED::OpenJade//Characteristic::two-side-start-on-right?" Item 13 Prevent incorrect generation of ligatures in the TeX Backend References Red Hat Bugzilla #11497, #11779 Category Software Bug Problem Certain sequences of characters (such as --) are not correctly escaped in the TeX backend, so that TeX incorrectly creates ligatures out of them (so that -- becomes an em dash —). Resolution OpenJade 1.3.1 now correctly escapes these character sequences. This is a particular problem when representing program code where sequences such as -- are often operators. Item 14 Improved time string handling References http://iNdev.iNsu.COM/openjade/ (Francis J. Lacoste) Category Software Bug Problem OpenJade 1.3 does not support the (time<=?) comparison Resolution Various bugs fixed in the time string support of OpenJade. It is now possible to compare time, date and datetime. Also partial formats (such as YY-MM-DD, YYYY-MM or HH:MM) are now supported Item 15 Improvements in handling sosofo-append References http://iNdev.iNsu.COM/openjade/ (Francis J. Lacoste) Category Software Bug Problem sosofo-append has problems with memory/stack usage when handling large lists of sosofo Resolution The fix optimizes sosofo-append to reduce its memory and stack usage when using it to build long list of sosofo : (let loop ( (res (empty-sosofo)) (nl (node-list-rest (children (current-node))))) (loop (sosofo-append res (process-node-list (node-list-first nl))) (node-list-rest nl))) Item 16 Improved Table handling in TeX Backend References http://iNdev.iNsu.COM/openjade/ (Francis J. Lacoste) Category Software Bug Problem Table handling in the TeX backend has numerous problems. Resolution Support for tables in the TeX backend has been improved with: Support for nested tables. cell-after-column-margin: and cell-before-column-margin: wasn't really working. Row spanning was broken. This fix only supports 'start row alignment though. Paragraphs in cell spanning multiple column are now working. Support for the row-alignment: characteristic. Support for cell-background? and background-color properties Item 17 Support for 'asis and 'asis-wrap References http://iNdev.iNsu.COM/openjade/ (Francis J. Lacoste) Category Software Bug Problem The lines: characteristic in the paragraph flow object does not support the 'asis and 'asis-wrap values. Resolution This adds support for the 'asis and 'asis-wrap values for the paragraph's lines: characteristic.
Version 1.3 Released October 1999 Version 1.3 added many improvements to increase the scope of the implementation of DSSSL. Changes include: The SGML backend will now emit linebreaks when used as . Jade can bind variables to arbitrary values on the command line with the option. The prlabs1 module of the SGML property set is supported. Style sheet extensions.dsl lists all known external procedures ready for easy inclusion as an external-specification. External procedure with public identifier "UNREGISTERED::OpenJade//Procedure::expt" to provide integral powers of quantities. External procedure with public identifier "UNREGISTERED::OpenJade//Procedure::sgml-parse" allows to parse w.r.t. an architecture. Jade supports force! for inherited characteristics. Jade supports character properties. Jade supports special-query-expressions. Jade can bind variables to string values on the command line. All standard color spaces supported. Jade ignores duplicate keywords in make expressions, as mandated by DSSSL. External procedure with public identifier "UNREGISTERED::OpenJade//Procedure::language" to create a language object by reference to a POSIX locale. Language-dependent procedures of the expression language: language?, current-language, declare-default-language, with-language, define-language, char<?, char>?, char<=?, char>=?, char-ci=?, char-ci<?, char-ci>?, char-ci<=?, char-ci<=?, char-upcase, char-downcase, string-ci=?, string-equiv?, string<?, string>?, string<=?, string>=?, string-ci<?, string-ci>?, string-ci<=?, string-ci>=?. The style-sheet.dtd derived from the DSSSL architecture has been extended (in a backward compatible way) to include the declaration element type forms supported by Jade. The public identifier for the dtd is "-//OpenJade//DTD DSSSL Style Sheet//EN" char-repertoire, add-name-chars and add-separator-chars declaration element type forms are supported. When given the command line flag, Jade doesn't use its built in character repertoire. Most of the derived procedures in the query language: current-root, node-list-reduce, node-list-contains?, node-list-remove-duplicates, node-list-union, node-list-intersection, node-list-difference, node-list-symmetric-difference, node-list-union-map, node-list-some?, node-list-every?, node-list-filter, node-list->list, node-list-tail, node-list-head, node-list-sublist, node-list-count, node-list-last, node-list-property, origin, origin-to-subnode-rel, tree-root, grove-root, source, subtree, subgrove, ancestors, grove-root-path, rsiblings, ipreced, ifollow, grove-before?, sort-in-tree-order, tree-before?, tree-before, property-lookup, select-by-property, select-by-null-property, select-by-missing-property, attribute, referent, q-element, q-class, q-sdata. Version 1.2.2 Released June 1999 The first release of OpenJade. Changes in OpenJade 1.2.2 The HTML and MIF backends are now enabled by default. The TeX backend has support for PDF bookmarks. This is supported by the new version of jadetex which is included. Predefined character names line-feed and carriage-return for the character numbers 10 and 13. standard-chars and map-sdata-entity declaration element type forms are supported. Style language additions: map-constructor. + and - return a length-spec if any of there arguments is a length-spec. Most of the DSSSL non-core expression language: c...r, assoc, keyword->string, string->keyword, exact?, inexact?, zero?, positive?, negative?, odd?, even?, exp, log, sin, cos, tan, asin, acos, atan, expt, exact->inexact, inexact->exact, quantity->number, string->list, list->string, map, time<?, time>?, time<=?, time>=?. Jade Version 1.2.1 Released October 1998 Jade 1.2.1 was the final release of jade from James Clark. OpenJade is based on this code base.
openjade-1.3.2/docsrc/sgmlnorm.10100664000076400007640000000002407422123351014605 0ustar ianian.so man1/sgmlnorm.1 openjade-1.3.2/docsrc/spam.10100664000076400007640000000002107422123351013704 0ustar ianian.so man1/ospam.1 openjade-1.3.2/docsrc/spent.10100664000076400007640000000002207422123351014076 0ustar ianian.so man1/ospent.1 openjade-1.3.2/docsrc/sx.10100664000076400007640000000001707422123351013403 0ustar ianian.so man1/osx.1 openjade-1.3.2/dsssl/0040775000076400007640000000000007572430613012557 5ustar ianianopenjade-1.3.2/dsssl/README.jadetex0100664000076400007640000000032507421537423015057 0ustar ianianOPENJADE 1.3.1 and JADETEX Jadetex is no longer distributed with OpenJade. The latest version of jadetex can be obtained from: http://jadetex.sourceforge.net or http://sourceforge.net/projects/jadetex openjade-1.3.2/dsssl/builtins.dsl0100664000076400007640000002534507572372746015136 0ustar ianian;; clause 8.5.3.5 (define (caar x) (car (car x)) ) (define (cadr x) (list-ref x 1) ) (define (cdar x) (cdr (car x)) ) (define (cddr x) (cdr (cdr x)) ) (define (caaar x) (car (car (car x))) ) (define (caadr x) (car (car (cdr x))) ) (define (cadar x) (car (cdr (car x))) ) (define (caddr x) (list-ref x 2) ) (define (cdaar x) (cdr (car (car x))) ) (define (cdadr x) (cdr (car (cdr x))) ) (define (cddar x) (cdr (cdr (car x))) ) (define (cdddr x) (cdr (cdr (cdr x))) ) (define (caaaar x) (car (car (car (car x)))) ) (define (caaadr x) (car (car (car (cdr x)))) ) (define (caadar x) (car (car (cdr (car x)))) ) (define (cadaar x) (car (cdr (car (car x)))) ) (define (cadadr x) (car (cdr (car (cdr x)))) ) (define (caddar x) (car (cdr (cdr (car x)))) ) (define (cadddr x) (list-ref x 3) ) (define (cdaaar x) (cdr (car (car (car x)))) ) (define (cdaadr x) (cdr (car (car (cdr x)))) ) (define (cdadar x) (cdr (car (cdr (car x)))) ) (define (cddaar x) (cdr (cdr (car (car x)))) ) (define (cddadr x) (cdr (cdr (car (cdr x)))) ) (define (cdddar x) (cdr (cdr (cdr (car x)))) ) (define (cddddr x) (cdr (cdr (cdr (cdr x)))) ) ;; clause 8.5.8.4 (define (char>? c1 c2) (char=? c1 c2) (char<=? c2 c1)) ;; clause 8.5.8.5 (define (__ci-equiv proc) (lambda (c1 c2) (proc (char-upcase c1) (char-upcase c2)) ) ) (define char-ci=? (__ci-equiv char=?)) (define char-ci? (__ci-equiv char>?)) (define char-ci<=? (__ci-equiv char<=?)) (define char-ci>=? (__ci-equiv char>=?)) ;; clause 8.5.9.6 (define (__upcase-string s) (list->string (map char-upcase (string->list s) ) ) ) (define (__ci-string-equiv proc) (lambda (s1 s2) (proc (__upcase-string s1) (__upcase-string s2)) ) ) (define (string>? s1 s2) (string=? s1 s2) (string<=? s2 s1)) (define string-ci=? (__ci-string-equiv string=?)) (define string-ci? (__ci-string-equiv string>?)) (define string-ci<=? (__ci-string-equiv string<=?)) (define string-ci>=? (__ci-string-equiv string>=?)) ;; clause 8.5.10.3 (define (map f #!rest xs) (let ((map1 (lambda (f xs) (let loop ((xs xs)) (if (null? xs) '() (cons (f (car xs)) (loop (cdr xs)))))))) (cond ((null? xs) '()) ((null? (cdr xs)) (map1 f (car xs))) (else (let loop ((xs xs)) (if (null? (car xs)) '() (cons (apply f (map1 car xs)) (loop (map1 cdr xs))))))))) ;; clause 10.1.1 (define (current-root) (node-property 'grove-root (current-node))) ;; clause 10.2.2 (define (node-list-reduce nl combine init) (if (node-list-empty? nl) init (node-list-reduce (node-list-rest nl) combine (combine init (node-list-first nl))))) (define (node-list-contains? nl snl) (node-list-reduce nl (lambda (result i) (or result (node-list=? snl i))) #f)) (define (node-list-remove-duplicates nl) (node-list-reduce nl (lambda (result snl) (if (node-list-contains? result snl) result (node-list result snl))) (empty-node-list))) (define (reduce list combine init) (let loop ((result init) (list list)) (if (null? list) result (loop (combine result (car list)) (cdr list))))) (define (node-list-union #!rest args) (reduce args (lambda (nl1 nl2) (node-list-reduce nl2 (lambda (result snl) (if (node-list-contains? result snl) result (node-list result snl))) nl1)) (empty-node-list))) (define (node-list-intersection #!rest args) (if (null? args) (empty-node-list) (reduce (cdr args) (lambda (nl1 nl2) (node-list-reduce nl1 (lambda (result snl) (if (node-list-contains? nl2 snl) (node-list result snl) result)) (empty-node-list))) (node-list-remove-duplicates (car args))))) (define (node-list-difference #!rest args) (if (null? args) (empty-node-list) (reduce (cdr args) (lambda (nl1 nl2) (node-list-reduce nl1 (lambda (result snl) (if (node-list-contains? nl2 snl) result (node-list result snl))) (empty-node-list))) (node-list-remove-duplicates (car args))))) (define (node-list-symmetric-difference #!rest args) (if (null? args) (empty-node-list) (reduce (cdr args) (lambda (nl1 nl2) (node-list-difference (node-list-union nl1 nl2) (node-list-intersection nl1 nl2))) (node-list-remove-duplicates (car args))))) (define (node-list-union-map proc nl) (node-list-reduce nl (lambda (result snl) (node-list-union (proc snl) result)) (empty-node-list))) (define (node-list-some? proc nl) (node-list-reduce nl (lambda (result snl) (if (or result (proc snl)) #t #f)) #f)) (define (node-list-every? proc nl) (node-list-reduce nl (lambda (result snl) (if (and result (proc snl)) #t #f)) #t)) (define (node-list-filter proc nl) (node-list-reduce nl (lambda (result snl) (if (proc snl) (node-list result snl) result)) (empty-node-list))) (define (node-list->list nl) (reverse (node-list-reduce nl (lambda (result snl) (cons snl result)) '()))) (define (node-list-tail nl k) (cond ((< k 0) (empty-node-list)) ((zero? k) nl) (else (node-list-tail (node-list-rest nl) (- k 1))))) (define (node-list-head nl k) (if (zero? k) (empty-node-list) (node-list (node-list-first nl) (node-list-head (node-list-rest nl) (- k 1))))) ;; ^^^^^^^ ;; missing in standard (define (node-list-sublist nl i j) (node-list-head (node-list-tail nl i) (- j i))) (define (node-list-count nl) (node-list-length (node-list-remove-duplicates nl))) (define (node-list-last nl) (node-list-ref nl (- (node-list-length nl) 1))) ;; clause 10.2.3 (define (node-list-property prop nl) (node-list-map (lambda (snl) (node-property prop snl default: (empty-node-list))) nl)) (define (origin nl) (node-list-property 'origin nl)) (define (origin-to-subnode-rel snl) (node-property 'origin-to-subnode-rel-property-name snl default: #f)) (define (tree-root nl) (node-list-property 'tree-root nl)) (define (grove-root nl) (node-list-property 'grove-root nl)) (define (source nl) (node-list-property 'source nl)) (define (subtree nl) (node-list-map (lambda (snl) (node-list snl (subtree (children snl)))) nl)) (define (subgrove nl) (node-list-map (lambda (snl) (node-list snl (subgrove (apply node-list (map (lambda (name) (node-property name snl)) (node-property 'subnode-property-names snl)))))) nl)) (define (ancestors nl) (node-list-map (lambda (snl) (let loop ((cur (parent snl)) (result (empty-node-list))) (if (node-list-empty? cur) result (loop (parent cur) (node-list cur result))))) nl)) (define (grove-root-path nl) (node-list-map (lambda (snl) (let loop ((cur (origin snl)) (result (empty-node-list))) (if (node-list-empty? cur) result (loop (origin cur) (node-list cur result))))) nl)) (define (rsiblings nl) (node-list-map (lambda (snl) (let ((rel (origin-to-subnode-rel snl))) (if rel (node-property rel (origin snl) default: (empty-node-list)) snl))) nl)) (define (ipreced nl) (node-list-map (lambda (snl) (let loop ((prev (empty-node-list)) (rest (rsiblings snl))) (cond ((node-list-empty? rest) (empty-node-list)) ((node-list=? (node-list-first rest) snl) prev) (else (loop (node-list-first rest) (node-list-rest rest)))))) nl)) (define (ifollow nl) (node-list-map (lambda (snl) (let loop ((rest (rsiblings snl))) (cond ((node-list-empty? rest) (empty-node-list)) ((node-list=? (node-list-first rest) snl) (node-list-first (node-list-rest rest))) (else (loop (node-list-rest rest)))))) nl)) (define (grove-before? snl1 snl2) (let ((sorted (node-list-intersection (subgrove (grove-root snl1)) (node-list snl1 snl2)))) (and (= (node-list-length sorted) 2) (node-list=? (node-list-first sorted) snl1)))) (define (sort-in-tree-order nl) (node-list-intersection (subtree (tree-root nl)) nl)) (define (tree-before? snl1 snl2) (let ((sorted (sort-in-tree-order (node-list snl1 snl2)))) (and (= (node-list-length sorted) 2) (node-list=? (node-list-first sorted) snl1)))) (define (tree-before nl) (node-list-map (lambda (snl) (node-list-filter (lambda (x) (tree-before? x snl)) (subtree (tree-root snl)))) nl)) (define (property-lookup prop snl if-present if-not-present) (let ((val (node-property prop snl default: #f))) (cond (val (if-present val)) ((node-property prop snl default: #t) (if-not-present val)) (else (if-present val))))) (define (select-by-property nl prop proc) (node-list-filter (lambda (snl) (let ((val (node-property prop snl default: #f))) (and (not (node-list? val)) (proc val)))) nl)) (define (select-by-null-property nl prop) (node-list-filter (lambda (snl) (let ((val1 (node-property prop snl null: #f)) (val2 (node-property prop snl null: #t))) (and (not val1) val2))) nl)) (define (select-by-missing-property nl prop) (node-list-filter (lambda (snl) (let ((val1 (node-property prop snl default: #f null: #t)) (val2 (node-property prop snl default: #t null: #f))) (and (not val1) val2))) nl)) ;; clause 10.2.5 (define (attribute name nl) (node-list-map (lambda (snl) (named-node name (attributes snl))) nl)) (define (referent nl) (node-list-property 'referent nl)) (define (q-element pattern #!optional (nl (current-node))) (select-elements (subgrove nl) pattern)) (define (q-class sym #!optional (nl (current-node))) (node-list-filter (lambda (snl) (equal? (node-property 'class-name snl) sym)) (subgrove nl))) (define (q-sdata string #!optional (nl (current-node))) (node-list-filter (lambda (snl) (and (equal? (node-property 'class-name snl) 'sdata) (equal? (node-property 'system-data snl) string))) (subgrove nl))) openjade-1.3.2/dsssl/catalog0100664000076400007640000000046206746126256014122 0ustar ianianPUBLIC "-//James Clark//DTD DSSSL Flow Object Tree//EN" "fot.dtd" PUBLIC "ISO/IEC 10179:1996//DTD DSSSL Architecture//EN" "dsssl.dtd" PUBLIC "-//James Clark//DTD DSSSL Style Sheet//EN" "style-sheet.dtd" PUBLIC "-//OpenJade//DTD DSSSL Style Sheet//EN" "style-sheet.dtd" SYSTEM "builtins.dsl" "builtins.dsl" openjade-1.3.2/dsssl/demo.dsl0100664000076400007640000000044207421537423014204 0ustar ianian (root (make simple-page-sequence (make scroll))) (element p (make paragraph)) openjade-1.3.2/dsssl/demo.sgm0100664000076400007640000000022207421537423014204 0ustar ianian ]>

The first paragraph.

The second paragraph.

openjade-1.3.2/dsssl/dsssl.dtd0100664000076400007640000001107606713045031014376 0ustar ianian openjade-1.3.2/dsssl/extensions.dsl0100664000076400007640000001273407417605373015473 0ustar ianian (define debug (external-procedure "UNREGISTERED::James Clark//Procedure::debug")) (define if-first-page (external-procedure "UNREGISTERED::James Clark//Procedure::if-first-page")) (define if-front-page (external-procedure "UNREGISTERED::James Clark//Procedure::if-front-page")) (define all-element-number (external-procedure "UNREGISTERED::James Clark//Procedure::all-element-number")) (define read-entity (external-procedure "UNREGISTERED::James Clark//Procedure::read-entity")) (define language (external-procedure "UNREGISTERED::OpenJade//Procedure::language")) (define sgml-parse (external-procedure "UNREGISTERED::OpenJade//Procedure::sgml-parse")) (define expt (external-procedure "UNREGISTERED::OpenJade//Procedure::expt")) (declare-flow-object-class element "UNREGISTERED::James Clark//Flow Object Class::element") (declare-flow-object-class empty-element "UNREGISTERED::James Clark//Flow Object Class::empty-element") (declare-flow-object-class document-type "UNREGISTERED::James Clark//Flow Object Class::document-type") (declare-flow-object-class processing-instruction "UNREGISTERED::James Clark//Flow Object Class::processing-instruction") (declare-flow-object-class entity "UNREGISTERED::James Clark//Flow Object Class::entity") (declare-flow-object-class entity-ref "UNREGISTERED::James Clark//Flow Object Class::entity-ref") (declare-flow-object-class formatting-instruction "UNREGISTERED::James Clark//Flow Object Class::formatting-instruction") (declare-characteristic preserve-sdata? "UNREGISTERED::James Clark//Characteristic::preserve-sdata?" #f) (declare-characteristic heading-level "UNREGISTERED::James Clark//Characteristic::heading-level" 0) (declare-characteristic page-number-format "UNREGISTERED::James Clark//Characteristic::page-number-format" "1") (declare-characteristic page-number-restart "UNREGISTERED::James Clark//Characteristic::page-number-restart" #f) (declare-characteristic page-n-columns "UNREGISTERED::James Clark//Characteristic::page-n-columns" 1) (declare-characteristic page-column-sep "UNREGISTERED::James Clark//Characteristic::page-column-sep" .5in) (declare-characteristic page-balance-columns? "UNREGISTERED::James Clark//Characteristic::page-balance-columns?" #f) (declare-characteristic superscript-height "UNREGISTERED::James Clark//Characteristic::superscript-height" 0pt) (declare-characteristic subscript-depth "UNREGISTERED::James Clark//Characteristic::subscript-depth" 0pt) (declare-characteristic over-mark-height "UNREGISTERED::James Clark//Characteristic::over-mark-height" 0pt) (declare-characteristic under-mark-depth "UNREGISTERED::James Clark//Characteristic::under-mark-depth" 0pt) (declare-characteristic grid-row-sep "UNREGISTERED::James Clark//Characteristic::grid-row-sep" 0pt) (declare-characteristic grid-column-sep "UNREGISTERED::James Clark//Characteristic::grid-column-sep" 0pt) (declare-flow-object-class page-float "UNREGISTERED::Sebastian Rahtz//Flow Object Class::page-float") (declare-flow-object-class page-footnote "UNREGISTERED::Sebastian Rahtz//Flow Object Class::page-footnote") (declare-characteristic page-number-format "UNREGISTERED::James Clark//Characteristic::page-number-format" "1") (declare-characteristic page-number-restart "UNREGISTERED::James Clark//Characteristic::page-number-restart" #f) (declare-characteristic page-n-columns "UNREGISTERED::James Clark//Characteristic::page-n-columns" 1) (declare-characteristic page-column-sep "UNREGISTERED::James Clark//Characteristic::page-column-sep" .5in) (declare-characteristic page-balance-columns? "UNREGISTERED::James Clark//Characteristic::page-balance-columns?" #f) (declare-characteristic page-two-side? "UNREGISTERED::OpenJade//Characteristic::page-two-side?" #f) (declare-characteristic two-side-start-on-right? "UNREGISTERED::OpenJade//Characteristic::two-side-start-on-right?" #f) (declare-characteristic superscript-height "UNREGISTERED::James Clark//Characteristic::superscript-height" 0pt) (declare-characteristic subscript-depth "UNREGISTERED::James Clark//Characteristic::subscript-depth" 0pt) (declare-characteristic over-mark-height "UNREGISTERED::James Clark//Characteristic::over-mark-height" 0pt) (declare-characteristic under-mark-depth "UNREGISTERED::James Clark//Characteristic::under-mark-depth" 0pt) (declare-characteristic grid-row-sep "UNREGISTERED::James Clark//Characteristic::grid-row-sep" 0pt) (declare-characteristic grid-column-sep "UNREGISTERED::James Clark//Characteristic::grid-column-sep" 0pt) (declare-characteristic preserve-sdata? "UNREGISTERED::James Clark//Characteristic::preserve-sdata?" #f) (declare-flow-object-class index-entry "UNREGISTERED::ISOGEN//Flow Object Class::index-entry") (declare-characteristic page-n-columns "UNREGISTERED::James Clark//Characteristic::page-n-columns" 1) (declare-characteristic page-column-sep "UNREGISTERED::James Clark//Characteristic::page-column-sep" .5in) (declare-characteristic page-balance-columns? "UNREGISTERED::James Clark//Characteristic::page-balance-columns?" #f) (declare-characteristic scroll-title "UNREGISTERED::James Clark//Characteristic::scroll-title" #f) openjade-1.3.2/dsssl/fot.dtd0100664000076400007640000003472506713071360014050 0ustar ianian openjade-1.3.2/dsssl/style-sheet.dtd0100664000076400007640000000450206740765073015527 0ustar ianian openjade-1.3.2/generic/0040775000076400007640000000000007572430614013044 5ustar ianianopenjade-1.3.2/generic/EventGenerator.h0100664000076400007640000000137206713045031016134 0ustar ianian// Copyright (c) 1994 James Clark // See the file COPYING for copying permission. #ifndef EventGenerator_INCLUDED #define EventGenerator_INCLUDED 1 #ifdef __GNUG__ #pragma interface #endif #include "SGMLApplication.h" class SP_API EventGenerator { public: virtual ~EventGenerator(); // Can be called at most once for any object. // Returns number of errors. virtual unsigned run(SGMLApplication &) = 0; // may be called at any time virtual void inhibitMessages(bool); // may be called at any time, even from another thread virtual void halt() = 0; // called after run virtual EventGenerator * makeSubdocEventGenerator(const SGMLApplication::Char *systemId, size_t systemIdLength); }; #endif /* not EventGenerator_INCLUDED */ openjade-1.3.2/generic/ParserEventGeneratorKit.h0100664000076400007640000000245106713045031017760 0ustar ianian// Copyright (c) 1995 James Clark // See the file COPYING for copying permission. #ifndef ParserEventGeneratorKit_INCLUDED #define ParserEventGeneratorKit_INCLUDED 1 #ifdef __GNUG__ #pragma interface #endif #include "EventGenerator.h" class ParserEventGeneratorKitImpl; class SP_API ParserEventGeneratorKit { public: ParserEventGeneratorKit(); ~ParserEventGeneratorKit(); enum Option { showOpenEntities, showOpenElements, outputCommentDecls, outputMarkedSections, outputGeneralEntities, mapCatalogDocument }; enum OptionWithArg { addCatalog, includeParam, enableWarning, addSearchDir, activateLink, architecture // not implemented }; void setOption(Option); #ifdef SP_WIDE_SYSTEM void setProgramName(const wchar_t *); void setOption(OptionWithArg, const wchar_t *); EventGenerator *makeEventGenerator(int nFiles, wchar_t *const *files); #else void setProgramName(const char *); void setOption(OptionWithArg, const char *); EventGenerator *makeEventGenerator(int nFiles, char *const *files); #endif private: ParserEventGeneratorKit(const ParserEventGeneratorKit &); // undefined void operator=(const ParserEventGeneratorKit &); // undefined ParserEventGeneratorKitImpl *impl_; }; #endif /* not ParserEventGeneratorKit_INCLUDED */ openjade-1.3.2/generic/SGMLApplication.h0100664000076400007640000001673006713045031016136 0ustar ianian// Copyright (c) 1995 James Clark // See the file COPYING for copying permission. #ifndef SGMLApplication_INCLUDED #define SGMLApplication_INCLUDED 1 #ifdef __GNUG__ #pragma interface #endif #include #ifndef SP_API #define SP_API /* as nothing */ #endif class SP_API SGMLApplication { public: #ifdef SP_MULTI_BYTE #ifdef SP_WCHAR_T_USHORT typedef wchar_t Char; #else typedef unsigned short Char; #endif #else typedef unsigned char Char; #endif // A Position represents a position in an OpenEntity. // The meaning of a Position depends on the // particular implementation of OpenEntity. // It might be a line number or it might be // an offset in the entity. The only thing // that can be done with Position is to use // it with an OpenEntityPtr to get a Location. typedef unsigned long Position; struct CharString { const Char *ptr; size_t len; }; struct ExternalId { bool haveSystemId; bool havePublicId; bool haveGeneratedSystemId; CharString systemId; // valid only if haveSystemId is true CharString publicId; // valid only if havePublicId is true CharString generatedSystemId; // valid if haveGeneratedSystemId is true }; struct Notation { CharString name; ExternalId externalId; }; struct Attribute; struct Entity { CharString name; enum DataType { sgml, cdata, sdata, ndata, subdoc, pi }; enum DeclType { general, parameter, doctype, linktype }; DataType dataType; DeclType declType; bool isInternal; // Following valid if isInternal is true CharString text; // Following valid if isInternal is false ExternalId externalId; size_t nAttributes; const Attribute *attributes; Notation notation; }; struct Attribute { CharString name; enum Type { invalid, implied, cdata, tokenized }; Type type; enum Defaulted { specified, // not defaulted definition, // defaulted from definition current // defaulted from current value }; Defaulted defaulted; // non-ESIS; valid only if type != implied struct CdataChunk { bool isSdata; // This rather awkward representation of non-SGML characters was chosen // for backwards compatibility. bool isNonSgml; // valid only if !isSdata Char nonSgmlChar; // valid only if isNonSgml CharString data; // always valid; empty if isNonSgml CharString entityName; // non-ESIS; optional for SDATA chunks }; // Following valid if type == cdata size_t nCdataChunks; const CdataChunk *cdataChunks; // valid if type == cdata // Following valid if type == tokenized CharString tokens; // separated by spaces bool isId; // non-ESIS (probably) bool isGroup; // non-ESIS size_t nEntities; const Entity *entities; // length of notation.name will be 0 if no notation Notation notation; }; struct PiEvent { Position pos; CharString data; CharString entityName; // non-ESIS; optional for PI entities }; struct StartElementEvent { Position pos; enum ContentType { empty, // declared EMPTY or with CONREF attribute cdata, rcdata, mixed, element }; CharString gi; ContentType contentType; // non-ESIS bool included; // non-ESIS size_t nAttributes; const Attribute *attributes; }; struct EndElementEvent { Position pos; CharString gi; }; struct DataEvent { Position pos; CharString data; }; struct SdataEvent { Position pos; CharString text; CharString entityName; // non-ESIS; optional }; struct ExternalDataEntityRefEvent { Position pos; Entity entity; }; struct SubdocEntityRefEvent { Position pos; Entity entity; }; struct NonSgmlCharEvent { Position pos; Char c; }; struct ErrorEvent { Position pos; enum Type { info, // not an error warning, // not an error quantity, idref, capacity, otherError }; Type type; CharString message; }; struct AppinfoEvent { Position pos; bool none; CharString string; }; struct StartDtdEvent { Position pos; CharString name; bool haveExternalId; ExternalId externalId; }; struct EndDtdEvent { Position pos; CharString name; }; struct EndPrologEvent { Position pos; }; // non-ESIS struct GeneralEntityEvent { // no position Entity entity; }; // non-ESIS struct CommentDeclEvent { Position pos; size_t nComments; const CharString *comments; const CharString *seps; }; // non-ESIS struct MarkedSectionStartEvent { Position pos; enum Status { include, rcdata, cdata, ignore }; Status status; struct Param { enum Type { temp, include, rcdata, cdata, ignore, entityRef }; Type type; CharString entityName; }; size_t nParams; const Param *params; }; // non-ESIS struct MarkedSectionEndEvent { Position pos; enum Status { include, rcdata, cdata, ignore }; Status status; }; struct IgnoredCharsEvent { Position pos; CharString data; }; class OpenEntityPtr; struct SP_API Location { Location(); Location(const OpenEntityPtr &, Position); void init(); unsigned long lineNumber; unsigned long columnNumber; unsigned long byteOffset; unsigned long entityOffset; CharString entityName; CharString filename; const void *other; }; class OpenEntity; class SP_API OpenEntityPtr { public: OpenEntityPtr(); OpenEntityPtr(const OpenEntityPtr &); void operator=(const OpenEntityPtr &); void operator=(OpenEntity *); ~OpenEntityPtr(); const OpenEntity *operator->() const; operator int() const; private: OpenEntity *ptr_; }; class SP_API OpenEntity { public: OpenEntity(); virtual ~OpenEntity(); virtual Location location(Position) const = 0; private: OpenEntity(const OpenEntity &); // undefined void operator=(const OpenEntity &); // undefined unsigned count_; friend class OpenEntityPtr; }; virtual ~SGMLApplication(); virtual void appinfo(const AppinfoEvent &); virtual void startDtd(const StartDtdEvent &); virtual void endDtd(const EndDtdEvent &); virtual void endProlog(const EndPrologEvent &); virtual void startElement(const StartElementEvent &); virtual void endElement(const EndElementEvent &); virtual void data(const DataEvent &); virtual void sdata(const SdataEvent &); virtual void pi(const PiEvent &); virtual void externalDataEntityRef(const ExternalDataEntityRefEvent &); virtual void subdocEntityRef(const SubdocEntityRefEvent &); virtual void nonSgmlChar(const NonSgmlCharEvent &); virtual void commentDecl(const CommentDeclEvent &); virtual void markedSectionStart(const MarkedSectionStartEvent &); virtual void markedSectionEnd(const MarkedSectionEndEvent &); virtual void ignoredChars(const IgnoredCharsEvent &); virtual void generalEntity(const GeneralEntityEvent &); virtual void error(const ErrorEvent &); virtual void openEntityChange(const OpenEntityPtr &); }; inline const SGMLApplication::OpenEntity * SGMLApplication::OpenEntityPtr::operator->() const { return ptr_; } inline void SGMLApplication::OpenEntityPtr::operator=(const OpenEntityPtr &ptr) { *this = ptr.ptr_; } inline SGMLApplication::OpenEntityPtr::operator int() const { return ptr_ != 0; } #endif /* not SGMLApplication_INCLUDED */ openjade-1.3.2/grove/0040775000076400007640000000000007572430614012552 5ustar ianianopenjade-1.3.2/grove/LocNode.cxx0100664000076400007640000000047306713071555014623 0ustar ianian// Copyright (c) 1997 James Clark // See the file COPYING for copying permission. #include "config.h" #include "LocNode.h" #ifdef SP_NAMESPACE namespace SP_NAMESPACE { #endif #ifdef GROVE_NAMESPACE using namespace GROVE_NAMESPACE; #endif const Node::IID LocNode::iid = "LocNode"; #ifdef SP_NAMESPACE } #endif openjade-1.3.2/grove/LocNode.h0100664000076400007640000000146706713071555014254 0ustar ianian// Copyright (c) 1997 James Clark // See the file COPYING for copying permission. #ifndef LocNode_INCLUDED #define LocNode_INCLUDED 1 #include "Boolean.h" #include "Node.h" #ifdef SP_NAMESPACE namespace SP_NAMESPACE { #endif class Location; #ifdef GROVE_NAMESPACE #define GROVE_NAMESPACE_SCOPE GROVE_NAMESPACE:: #else #define GROVE_NAMESPACE_SCOPE #endif class GROVE_API LocNode { public: virtual GROVE_NAMESPACE_SCOPE AccessResult getLocation(Location &) const = 0; static const GROVE_NAMESPACE_SCOPE Node::IID iid; static const LocNode *convert(const GROVE_NAMESPACE_SCOPE NodePtr &nd) { const void *p; if (nd && nd->queryInterface(iid, p)) return (const LocNode *)p; else return 0; } }; #undef GROVE_NAMESPACE_SCOPE #ifdef SP_NAMESPACE } #endif #endif /* not LocNode_INCLUDED */ openjade-1.3.2/grove/Makefile.sub0100664000076400007640000000007507554622154015003 0ustar ianianLTVERSION=0:1:0 LIB=ogrove DEPLIBS=-lm OBJS=Node.o LocNode.o openjade-1.3.2/grove/Node.cxx0100664000076400007640000010245207565503750014170 0ustar ianian// Copyright (c) 1996 James Clark // See the file COPYING for copying permission. #ifdef __GNUG__ #pragma implementation #endif #include "config.h" #include "Boolean.h" #include "Node.h" #include "macros.h" #include #include #ifdef GROVE_NAMESPACE namespace GROVE_NAMESPACE { #endif bool Node::queryInterface(IID, const void *&) const { return 0; } AccessResult Node::getMessages(NodeListPtr &) const { return accessNotInClass; } AccessResult Node::getSeverity(Severity &) const { return accessNotInClass; } AccessResult Node::getOrigin(NodePtr &) const { return accessNull; } AccessResult Node::getParent(NodePtr &) const { return accessNull; } AccessResult Node::getGroveRoot(NodePtr &) const { return accessNull; } AccessResult Node::getTreeRoot(NodePtr &nd) const { // FIXME avoid cast -- need copy method nd.assign((Node *)this); for (;;) { AccessResult res = nd->getParent(nd); if (res != accessOK) { if (res == accessTimeout) return res; break; } } return accessOK; } AccessResult Node::getAttributes(NamedNodeListPtr &) const { return accessNotInClass; } AccessResult Node::getName(GroveString &) const { return accessNotInClass; } AccessResult Node::getSystemData(GroveString &) const { return accessNotInClass; } AccessResult Node::getEntity(NodePtr &) const { return accessNotInClass; } AccessResult Node::getEntityName(GroveString &) const { return accessNotInClass; } AccessResult Node::getExternalId(NodePtr &) const { return accessNotInClass; } AccessResult Node::getNotation(NodePtr &) const { return accessNotInClass; } AccessResult Node::getText(GroveString &) const { return accessNotInClass; } AccessResult Node::getNotationName(GroveString &) const { return accessNotInClass; } AccessResult Node::getEntityType(EntityType::Enum &) const { return accessNotInClass; } AccessResult Node::getDefaulted(bool &) const { return accessNotInClass; } AccessResult Node::getPublicId(GroveString &) const { return accessNotInClass; } AccessResult Node::getSystemId(GroveString &) const { return accessNotInClass; } AccessResult Node::getGeneratedSystemId(GroveString &) const { return accessNotInClass; } AccessResult Node::getValue(NodeListPtr &) const { return accessNotInClass; } AccessResult Node::getTokenSep(GroveChar &) const { return accessNotInClass; } AccessResult Node::getImplied(bool &) const { return accessNotInClass; } AccessResult Node::getAttributeDef(NodePtr &) const { return accessNotInClass; } AccessResult Node::getCurrentAttributeIndex(long &) const { return accessNotInClass; } AccessResult Node::getCurrentGroup(NodeListPtr &) const { return accessNotInClass; } AccessResult Node::getDeclValueType(DeclValueType::Enum &) const { return accessNotInClass; } AccessResult Node::getDefaultValueType(DefaultValueType::Enum &) const { return accessNotInClass; } AccessResult Node::getDefaultValue(NodeListPtr &) const { return accessNotInClass; } AccessResult Node::getTokens(GroveStringListPtr &) const { return accessNotInClass; } AccessResult Node::getGi(GroveString &) const { return accessNotInClass; } bool Node::hasGi(GroveString) const { return 0; } AccessResult Node::getId(GroveString &) const { return accessNotInClass; } AccessResult Node::getContent(NodeListPtr &) const { return accessNotInClass; } AccessResult Node::getIncluded(bool &) const { return accessNotInClass; } AccessResult Node::getMustOmitEndTag(bool &) const { return accessNotInClass; } AccessResult Node::getAttributeDefs(NamedNodeListPtr &) const { return accessNotInClass; } AccessResult Node::getContentType(ContentType::Enum &) const { return accessNotInClass; } AccessResult Node::getExclusions(GroveStringListPtr &) const { return accessNotInClass; } AccessResult Node::getInclusions(GroveStringListPtr &) const { return accessNotInClass; } AccessResult Node::getModelGroup(NodePtr &) const { return accessNotInClass; } AccessResult Node::getOmitEndTag(bool &) const { return accessNotInClass; } AccessResult Node::getOmitStartTag(bool &) const { return accessNotInClass; } AccessResult Node::getConnector(Connector::Enum &) const { return accessNotInClass; } AccessResult Node::getOccurIndicator(OccurIndicator::Enum &) const { return accessNotInClass; } AccessResult Node::getContentTokens(NodeListPtr &) const { return accessNotInClass; } AccessResult Node::getDefaultEntity(NodePtr &) const { return accessNotInClass; } AccessResult Node::getElementType(NodePtr &) const { return accessNotInClass; } AccessResult Node::getParameterEntities(NamedNodeListPtr &) const { return accessNotInClass; } AccessResult Node::getToken(GroveString &) const { return accessNotInClass; } AccessResult Node::getReferent(NodePtr &) const { return accessNotInClass; } AccessResult Node::getGoverning(bool &) const { return accessNotInClass; } AccessResult Node::getGeneralEntities(NamedNodeListPtr &) const { return accessNotInClass; } AccessResult Node::getNotations(NamedNodeListPtr &) const { return accessNotInClass; } AccessResult Node::getElementTypes(NamedNodeListPtr &) const { return accessNotInClass; } AccessResult Node::getSgmlConstants(NodePtr &) const { return accessNotInClass; } AccessResult Node::getApplicationInfo(GroveString &) const { return accessNotInClass; } AccessResult Node::getProlog(NodeListPtr &) const { return accessNotInClass; } AccessResult Node::getEpilog(NodeListPtr &) const { return accessNotInClass; } AccessResult Node::getDocumentElement(NodePtr &) const { return accessNotInClass; } AccessResult Node::getElements(NamedNodeListPtr &) const { return accessNotInClass; } AccessResult Node::getEntities(NamedNodeListPtr &) const { return accessNotInClass; } AccessResult Node::getDefaultedEntities(NamedNodeListPtr &) const { return accessNotInClass; } AccessResult Node::getGoverningDoctype(NodePtr &) const { return accessNotInClass; } AccessResult Node::getDoctypesAndLinktypes(NamedNodeListPtr &) const { return accessNotInClass; } AccessResult Node::getNonSgml(unsigned long &) const { return accessNotInClass; } AccessResult Node::nextSibling(NodePtr &) const { return accessNotInClass; } AccessResult Node::nextChunkAfter(NodePtr &nd) const { AccessResult ret = firstChild(nd); switch (ret) { case accessOK: case accessTimeout: return ret; default: break; } for (;;) { ret = nextChunkSibling(nd); switch (ret) { case accessOK: case accessTimeout: return ret; default: break; } ret = getParent(nd); if (ret != accessOK) break; } return ret; } AccessResult Node::nextChunkSibling(NodePtr &) const { return accessNotInClass; } AccessResult Node::firstChild(NodePtr &) const { return accessNotInClass; } AccessResult Node::charChunk(const SdataMapper &, GroveString &) const { return accessNotInClass; } AccessResult Node::firstSibling(NodePtr &) const { return accessNotInClass; } AccessResult Node::siblingsIndex(unsigned long &) const { return accessNotInClass; } AccessResult Node::tokens(GroveString &) const { return accessNotInClass; } unsigned long Node::hash() const { // Hopefully implementations will do better. return 0; } AccessResult Node::elementIndex(unsigned long &) const { return accessNotInClass; } bool Node::chunkContains(const Node &nd) const { return *this == nd; } AccessResult Node::attributeRef(unsigned long n, NodePtr &ptr) const { NamedNodeListPtr atts; AccessResult ret = getAttributes(atts); if (ret != accessOK) return ret; return atts->nodeList()->ref(n, ptr); } AccessResult Node::followSiblingRef(unsigned long n, NodePtr &ptr) const { if (n == 0) return nextSibling(ptr); NodePtr tem; AccessResult ret = nextSibling(tem); if (ret != accessOK) return ret; while (--n > 0) { ret = tem.assignNextSibling(); if (ret != accessOK) return ret; } return tem->nextSibling(ptr); } AccessResult Node::property(ComponentName::Id id, const SdataMapper &mapper, PropertyValue &value) const { AccessResult ret; switch (id) { default: ret = accessNotInClass; break; case ComponentName::idEntityType: { EntityType::Enum type; ret = getEntityType(type); if (ret == accessOK) { switch (type) { case EntityType::text: value.set(ComponentName::idText); break; case EntityType::cdata: value.set(ComponentName::idCdata); break; case EntityType::sdata: value.set(ComponentName::idSdata); break; case EntityType::ndata: value.set(ComponentName::idNdata); break; case EntityType::pi: value.set(ComponentName::idPi); break; case EntityType::subdocument: value.set(ComponentName::idSubdocument); break; default: ret = accessNotInClass; } } break; } case ComponentName::idDeclValueType: { DeclValueType::Enum type; ret = getDeclValueType(type); if (ret == accessOK) { switch (type) { case DeclValueType::cdata: value.set(ComponentName::idCdata); break; case DeclValueType::entity: value.set(ComponentName::idEntity); break; case DeclValueType::entities: value.set(ComponentName::idEntities); break; case DeclValueType::id: value.set(ComponentName::idId); break; case DeclValueType::idref: value.set(ComponentName::idIdref); break; case DeclValueType::idrefs: value.set(ComponentName::idIdrefs); break; case DeclValueType::name: value.set(ComponentName::idName); break; case DeclValueType::names: value.set(ComponentName::idNames); break; case DeclValueType::nmtoken: value.set(ComponentName::idNmtoken); break; case DeclValueType::nmtokens: value.set(ComponentName::idNmtokens); break; case DeclValueType::number: value.set(ComponentName::idNumber); break; case DeclValueType::numbers: value.set(ComponentName::idNumbers); break; case DeclValueType::nutoken: value.set(ComponentName::idNutoken); break; case DeclValueType::nutokens: value.set(ComponentName::idNutokens); break; case DeclValueType::notation: value.set(ComponentName::idNotation); break; case DeclValueType::nmtkgrp: value.set(ComponentName::idNmtkgrp); break; default: ret = accessNotInClass; } } break; } case ComponentName::idDefaultValueType: { DefaultValueType::Enum type; ret = getDefaultValueType(type); if (ret == accessOK) { switch (type) { case DefaultValueType::value: value.set(ComponentName::idValue); break; case DefaultValueType::fixed: value.set(ComponentName::idFixed); break; case DefaultValueType::required: value.set(ComponentName::idRequired); break; case DefaultValueType::current: value.set(ComponentName::idCurrent); break; case DefaultValueType::conref: value.set(ComponentName::idConref); break; case DefaultValueType::implied: value.set(ComponentName::idImplied); break; default: ret = accessNotInClass; } } break; } case ComponentName::idContentType: { ContentType::Enum type; ret = getContentType(type); if (ret == accessOK) { switch (type) { case ContentType::cdata: value.set(ComponentName::idCdata); break; case ContentType::rcdata: value.set(ComponentName::idRcdata); break; case ContentType::empty: value.set(ComponentName::idEmpty); break; case ContentType::any: value.set(ComponentName::idAny); break; case ContentType::modelgrp: value.set(ComponentName::idModelGroup); break; default: ret = accessNotInClass; } } break; } case ComponentName::idConnector: { Connector::Enum type; ret = getConnector(type); if (ret == accessOK) { switch (type) { case Connector::and_: value.set(ComponentName::idAnd); break; case Connector::or_: value.set(ComponentName::idOr); break; case Connector::seq: value.set(ComponentName::idSeq); break; default: ret = accessNotInClass; } } break; } case ComponentName::idChar: { GroveChar tem; ret = getChar(mapper, tem); if (ret == accessOK) value.set(tem); break; } #define PROP(Name, Type) \ case ComponentName::id##Name: \ { \ Type tem; \ ret = get##Name(tem); \ if (ret == accessOK) \ value.set(tem); \ break; \ } #define PROP_BOOLEAN(name) PROP(name, bool) #define PROP_CHAR(name) PROP(name, GroveChar) #define PROP_COMPNAME(name) PROP(name, ComponentName::Id) #define PROP_CNMLIST(name) PROP(name, const ComponentName::Id *) #define PROP_STRING(name) PROP(name, GroveString) #define PROP_NODE(name) PROP(name, NodePtr) #define PROP_NODELIST(name) PROP(name, NodeListPtr) #define PROP_NMNDLIST(name) PROP(name, NamedNodeListPtr) #define PROP_STRINGLIST(name) PROP(name, GroveStringListPtr) #define PROP_INTEGER(name) PROP(name, long) PROP_COMPNAME(ClassName) PROP_COMPNAME(ChildrenPropertyName) PROP_COMPNAME(DataPropertyName) PROP_COMPNAME(DataSepPropertyName) PROP_COMPNAME(OriginToSubnodeRelPropertyName) PROP_CNMLIST(SubnodePropertyNames) PROP_CNMLIST(AllPropertyNames) PROP_BOOLEAN(Defaulted) PROP_BOOLEAN(Governing) PROP_BOOLEAN(Implied) PROP_BOOLEAN(Included) PROP_BOOLEAN(MustOmitEndTag) PROP_BOOLEAN(OmitEndTag) PROP_BOOLEAN(OmitStartTag) PROP_CHAR(TokenSep) PROP_NMNDLIST(Attributes) PROP_NMNDLIST(DefaultedEntities) PROP_NMNDLIST(DoctypesAndLinktypes) PROP_NMNDLIST(Elements) PROP_NMNDLIST(Entities) PROP_NMNDLIST(GeneralEntities) PROP_NMNDLIST(Notations) PROP_NMNDLIST(AttributeDefs) PROP_NMNDLIST(ElementTypes) PROP_NMNDLIST(ParameterEntities) PROP_NODE(DocumentElement) PROP_NODE(Entity) PROP_NODE(ExternalId) PROP_NODE(GoverningDoctype) PROP_NODE(GroveRoot) PROP_NODE(Notation) PROP_NODE(Origin) PROP_NODE(Parent) PROP_NODE(Referent) PROP_NODE(SgmlConstants) PROP_NODE(TreeRoot) PROP_NODE(ModelGroup) PROP_NODE(DefaultEntity) PROP_NODE(ElementType) PROP_NODELIST(Content) PROP_NODELIST(Epilog) PROP_NODELIST(Prolog) PROP_NODELIST(Value) PROP_NODELIST(ContentTokens) PROP_NODELIST(DefaultValue) PROP_NODELIST(CurrentGroup) PROP_STRING(ApplicationInfo) PROP_STRING(EntityName) PROP_STRING(GeneratedSystemId) PROP_STRING(Gi) PROP_STRING(Id) PROP_STRING(Name) PROP_STRING(NotationName) PROP_STRING(PublicId) PROP_STRING(SystemData) PROP_STRING(SystemId) PROP_STRING(Text) PROP_STRING(Token) PROP_STRINGLIST(Exclusions) PROP_STRINGLIST(Inclusions) PROP_STRINGLIST(Tokens) PROP_INTEGER(CurrentAttributeIndex) } #undef PROP #undef PROP_BOOLEAN #undef PROP_CHAR #undef PROP_NMNDLIST #undef PROP_NODE #undef PROP_NODELIST #undef PROP_STRING return ret; } AccessResult NodeList::ref(unsigned long n, NodePtr &ptr) const { if (n == 0) return first(ptr); NodeListPtr tem; AccessResult ret = rest(tem); if (ret != accessOK) return ret; while (--n > 0) { ret = tem.assignRest(); if (ret != accessOK) return ret; } return tem->first(ptr); } NodeListPtr NamedNodeList::nodeListNoOrder() const { return nodeList(); } struct NodeNameNodeVisitor : public NodeVisitor { NodeNameNodeVisitor(NamedNodeList::Type t, GroveString &name) : ret(accessNotInClass), type(t), nameP(&name) { } AccessResult ret; GroveString *nameP; NamedNodeList::Type type; void element(Node &nd) { if (type == NamedNodeList::elements) ret = nd.getId(*nameP); } void attributeAssignment(Node &nd) { if (type == NamedNodeList::attributes) ret = nd.getName(*nameP); } void documentType(Node &nd) { if (type == NamedNodeList::doctypesAndLinktypes) ret = nd.getName(*nameP); } void entity(Node &nd) { if (type == NamedNodeList::entities) ret = nd.getName(*nameP); } void notation(Node &nd) { if (type == NamedNodeList::notations) ret = nd.getName(*nameP); } void elementType(Node &nd) { if (type == NamedNodeList::elementTypes) ret = nd.getGi(*nameP); } void attributeDef(Node &nd) { if (type == NamedNodeList::attributeDefs) ret = nd.getName(*nameP); } }; AccessResult NamedNodeList::nodeName(const NodePtr &node, GroveString &name) const { NodeNameNodeVisitor v(type(), name); node->accept(v); return v.ret; } void NodeVisitor::sgmlDocument(Node &) { } void NodeVisitor::sgmlConstants(Node &) { } void NodeVisitor::dataChar(Node &) { } void NodeVisitor::element(Node &) { } void NodeVisitor::attributeAssignment(Node &) { } void NodeVisitor::attributeDef(Node &) { } void NodeVisitor::attributeValueToken(Node &) { } void NodeVisitor::pi(Node &) { } void NodeVisitor::sdata(Node &) { } void NodeVisitor::documentType(Node &) { } void NodeVisitor::entity(Node &) { } void NodeVisitor::notation(Node &) { } void NodeVisitor::externalId(Node &) { } void NodeVisitor::externalData(Node &) { } void NodeVisitor::subdocument(Node &) { } void NodeVisitor::nonSgml(Node &) { } void NodeVisitor::message(Node &) { } void NodeVisitor::elementType(Node &) { } void NodeVisitor::modelGroup(Node &) { } void NodeVisitor::elementToken(Node &) { } void NodeVisitor::pcdataToken(Node &) { } void NodeVisitor::defaultEntity(Node &) { } bool GroveString::operator==(const GroveString &str) const { if (size() != str.size()) return 0; if (size() == 0) return 1; if (memcmp(data(), str.data(), size() * sizeof(GroveChar)) == 0) return 1; return 0; } void GroveStringList::append(const GroveString &gs) { GroveStringLink **pp; for (pp = &head_; *pp; pp = &(*pp)->next_) ; *pp = new GroveStringLink( gs ); if (iter_.done()) iter_.attach(head_); } AccessResult GroveStringList::first(GroveString &str) const { if (head_ == 0) return accessNull; str = head_->data_; return accessOK; } AccessResult GroveStringList::rest(GroveStringListPtr &ptr) const { if (canReuse(ptr)) { GroveStringList *list = (GroveStringList *)this; if (list->iter_.done()) return accessNull; list->iter_.next(); return accessOK; } ptr.assign(new GroveStringList()); ConstGroveStringListIter iter(iter_); if (iter.done()) return accessNull; iter.next(); while (!iter.done()) { ptr->append(iter.cur()); iter.next(); } return accessOK; } void GroveStringList::release() { assert(refCount_ != 0); if (--refCount_ == 0) delete this; } void GroveStringList::addRef() { ++refCount_; } bool GroveStringList::canReuse(GroveStringListPtr &ptr) const { const GroveStringList *tem = &*ptr; return tem == this && refCount_ == 1; } GroveStringList::~GroveStringList() { GroveStringLink *tmpPtr; GroveStringLink *ptr = head_; while (ptr) { tmpPtr = ptr; ptr = ptr->next_; delete tmpPtr; } } ConstGroveStringListIter::ConstGroveStringListIter(const GroveStringList &list) : link_(list.head_) { } SdataMapper::~SdataMapper() { } bool SdataMapper::sdataMap(GroveString name, GroveString text, GroveChar &) const { return 0; } const char *ComponentName::rcsName(Id id) { static const char *const names[] = { "allpns", "and", "any", "appinfo", "attasgn", "attdef", "attdefs", "atts", "attvaltk", "cdata", "char", "childpn", "classnm", "connect", "conref", "content", "tokens", "contype", "current", "curattix", "curgrp", "datachar", "datapn", "dseppn", "dcltype", "dflted", "dfltents", "dfltent", "dfltval", "dflttype", "dtlts", "docelem", "doctype", "element", "elements", "elemtk", "elemtype", "elemtps", "empty", "entities", "entity", "entname", "enttype", "epilog", "excls", "extdata", "extid", "fixed", "genents", "gensysid", "gi", "govrning", "govdt", "grovroot", "id", "idref", "idrefs", "implied", "included", "incls", "modelgrp", "momitend", "name", "names", "ndata", "nmtkgrp", "nmtoken", "nmtokens", "notation", "notname", "nots", "number", "numbers", "nutoken", "nutokens", "occur", "omitend", "omitstrt", "opt", "or", "origin", "otsrelpn", "parments", "parent", "pcdatatk", "pi", "plus", "prolog", "pubid", "rcdata", "referent", "rep", "required", "sdata", "seq", "sgmlcsts", "sgmldoc", "subdoc", "subpns", "sysdata", "sysid", "text", "token", "tokens", "tokensep", "treeroot", "value" }; if (id < 0 || id >= SIZEOF(names)) return 0; return names[id]; } const char *ComponentName::sdqlName(Id id) { static const char *const names[] = { "all-property-names", "and", "any", "application-info", "attribute-assignment", "attribute-def", "attribute-defs", "attributes", "attribute-value-token", "cdata", "char", "children-property-name", "class-name", "connector", "conref", "content", "content-tokens", "content-type", "current", "current-attribute-index", "current-group", "data-char", "data-property-name", "data-sep-property-name", "decl-value-type", "defaulted?", "defaulted-entities", "default-entity", "default-value", "default-value-type", "doctypes-and-linktypes", "document-element", "document-type", "element", "elements", "element-token", "element-type", "element-types", "empty", "entities", "entity", "entity-name", "entity-type", "epilog", "exclusions", "external-data", "external-id", "fixed", "general-entities", "generated-system-id", "gi", "governing?", "governing-doctype", "grove-root", "id", "idref", "idrefs", "implied?", "included?", "inclusions", "model-group", "must-omit-end-tag?", "name", "names", "ndata", "name-token-group", "nmtoken", "nmtokens", "notation", "notation-name", "notations", "number", "numbers", "nutoken", "nutokens", "occur-indicator", "omit-end-tag?", "omit-start-tag?", "opt", "or", "origin", "origin-to-subnode-rel-property-name", "parameter-entities", "parent", "pcdata-token", "pi", "plus", "prolog", "public-id", "rcdata", "referent", "rep", "required", "sdata", "seq", "sgml-constants", "sgml-document", "subdocument", "subnode-property-names", "system-data", "system-id", "text", "token", "tokens", "token-sep", "tree-root", "value" }; if (id < 0 || id >= SIZEOF(names)) return 0; return names[id]; } #define INTRINSIC_PROPS \ ComponentName::idClassName, \ ComponentName::idGroveRoot, \ ComponentName::idSubnodePropertyNames, \ ComponentName::idAllPropertyNames, \ ComponentName::idChildrenPropertyName, \ ComponentName::idDataPropertyName, \ ComponentName::idDataSepPropertyName, \ ComponentName::idParent, \ ComponentName::idTreeRoot, \ ComponentName::idOrigin, \ ComponentName::idOriginToSubnodeRelPropertyName static const ComponentName::Id noProps[] = { ComponentName::noId }; static const ComponentName::Id allProps_externalId[] = { INTRINSIC_PROPS, ComponentName::idPublicId, ComponentName::idSystemId, ComponentName::idGeneratedSystemId, ComponentName::noId }; const ClassDef ClassDef::externalId = { ComponentName::idExternalId, allProps_externalId, noProps, ComponentName::noId, ComponentName::noId, ComponentName::noId }; static const ComponentName::Id allProps_documentType[] = { INTRINSIC_PROPS, ComponentName::idName, ComponentName::idElementTypes, ComponentName::idGoverning, ComponentName::idGeneralEntities, ComponentName::idNotations, ComponentName::idDefaultEntity, ComponentName::idParameterEntities, ComponentName::noId }; static const ComponentName::Id subnodeProps_documentType[] = { ComponentName::idGeneralEntities, ComponentName::idNotations, ComponentName::idElementTypes, ComponentName::idDefaultEntity, ComponentName::idParameterEntities, ComponentName::noId }; const ClassDef ClassDef::documentType = { ComponentName::idDocumentType, allProps_documentType, subnodeProps_documentType, ComponentName::noId, ComponentName::noId, ComponentName::noId }; static const ComponentName::Id allProps_attributeValueToken[] = { INTRINSIC_PROPS, ComponentName::idToken, ComponentName::idEntity, ComponentName::idNotation, ComponentName::idReferent, ComponentName::noId }; const ClassDef ClassDef::attributeValueToken = { ComponentName::idAttributeValueToken, allProps_attributeValueToken, noProps, ComponentName::noId, ComponentName::idToken, ComponentName::noId }; static const ComponentName::Id allProps_sgmlDocument[] = { INTRINSIC_PROPS, ComponentName::idSgmlConstants, ComponentName::idApplicationInfo, ComponentName::idProlog, ComponentName::idEpilog, ComponentName::idGoverningDoctype, ComponentName::idDoctypesAndLinktypes, ComponentName::idDocumentElement, ComponentName::idElements, ComponentName::idEntities, ComponentName::idDefaultedEntities, ComponentName::noId }; static const ComponentName::Id subnodeProps_sgmlDocument[] = { ComponentName::idSgmlConstants, ComponentName::idProlog, ComponentName::idEpilog, ComponentName::idDoctypesAndLinktypes, ComponentName::idDocumentElement, ComponentName::idDefaultedEntities, ComponentName::noId }; const ClassDef ClassDef::sgmlDocument = { ComponentName::idSgmlDocument, allProps_sgmlDocument, subnodeProps_sgmlDocument, ComponentName::noId, ComponentName::noId, ComponentName::noId }; static const ComponentName::Id allProps_dataChar[] = { INTRINSIC_PROPS, ComponentName::idChar, ComponentName::noId }; const ClassDef ClassDef::dataChar = { ComponentName::idDataChar, allProps_dataChar, noProps, ComponentName::noId, ComponentName::idChar, ComponentName::noId }; static const ComponentName::Id allProps_subdocument[] = { INTRINSIC_PROPS, ComponentName::idEntityName, ComponentName::idEntity, ComponentName::noId }; const ClassDef ClassDef::subdocument = { ComponentName::idSubdocument, allProps_subdocument, noProps, ComponentName::noId, ComponentName::noId, ComponentName::noId }; static const ComponentName::Id allProps_pi[] = { INTRINSIC_PROPS, ComponentName::idSystemData, ComponentName::idEntityName, ComponentName::idEntity, ComponentName::noId }; const ClassDef ClassDef::pi = { ComponentName::idPi, allProps_pi, noProps, ComponentName::noId, ComponentName::noId, ComponentName::noId }; static const ComponentName::Id allProps_element[] = { INTRINSIC_PROPS, ComponentName::idGi, ComponentName::idId, ComponentName::idAttributes, ComponentName::idContent, ComponentName::idIncluded, ComponentName::idMustOmitEndTag, ComponentName::idElementType, ComponentName::noId }; static const ComponentName::Id subnodeProps_element[] = { ComponentName::idAttributes, ComponentName::idContent, ComponentName::noId }; const ClassDef ClassDef::element = { ComponentName::idElement, allProps_element, subnodeProps_element, ComponentName::idContent, ComponentName::noId, ComponentName::noId }; static const ComponentName::Id allProps_notation[] = { INTRINSIC_PROPS, ComponentName::idName, ComponentName::idExternalId, ComponentName::idAttributeDefs, ComponentName::noId }; static const ComponentName::Id subnodeProps_notation[] = { ComponentName::idExternalId, ComponentName::idAttributeDefs, ComponentName::noId }; const ClassDef ClassDef::notation = { ComponentName::idNotation, allProps_notation, subnodeProps_notation, ComponentName::noId, ComponentName::noId, ComponentName::noId }; static const ComponentName::Id allProps_externalData[] = { INTRINSIC_PROPS, ComponentName::idEntityName, ComponentName::idEntity, ComponentName::noId }; const ClassDef ClassDef::externalData = { ComponentName::idExternalData, allProps_externalData, noProps, ComponentName::noId, ComponentName::noId, ComponentName::noId }; static const ComponentName::Id allProps_attributeAssignment[] = { INTRINSIC_PROPS, ComponentName::idAttributeDef, ComponentName::idValue, ComponentName::idName, ComponentName::idImplied, ComponentName::idTokenSep, ComponentName::noId }; static const ComponentName::Id subnodeProps_attributeAssignment[] = { ComponentName::idValue, ComponentName::noId }; const ClassDef ClassDef::attributeAssignment = { ComponentName::idAttributeAssignment, allProps_attributeAssignment, subnodeProps_attributeAssignment, ComponentName::idValue, ComponentName::noId, ComponentName::idTokenSep }; static const ComponentName::Id allProps_sdata[] = { INTRINSIC_PROPS, ComponentName::idSystemData, ComponentName::idChar, ComponentName::idEntityName, ComponentName::idEntity, ComponentName::noId }; const ClassDef ClassDef::sdata = { ComponentName::idSdata, allProps_sdata, noProps, ComponentName::noId, ComponentName::idChar, ComponentName::noId }; static const ComponentName::Id allProps_entity[] = { INTRINSIC_PROPS, ComponentName::idName, ComponentName::idEntityType, ComponentName::idText, ComponentName::idExternalId, ComponentName::idAttributes, ComponentName::idNotationName, ComponentName::idNotation, ComponentName::idDefaulted, ComponentName::noId }; static const ComponentName::Id subnodeProps_entity[] = { ComponentName::idExternalId, ComponentName::idAttributes, ComponentName::noId }; const ClassDef ClassDef::entity = { ComponentName::idEntity, allProps_entity, subnodeProps_entity, ComponentName::noId, ComponentName::noId, ComponentName::noId }; const ClassDef ClassDef::sgmlConstants = { ComponentName::idSgmlConstants, noProps, noProps, ComponentName::noId, ComponentName::noId, ComponentName::noId }; // FIXME const ClassDef ClassDef::nonSgml = { ComponentName::noId, noProps, noProps, ComponentName::noId, ComponentName::noId, ComponentName::noId }; // FIXME const ClassDef ClassDef::message = { ComponentName::noId, noProps, noProps, ComponentName::noId, ComponentName::noId, ComponentName::noId }; static const ComponentName::Id allProps_attributeDef[] = { INTRINSIC_PROPS, ComponentName::idCurrentAttributeIndex, ComponentName::idCurrentGroup, ComponentName::idDeclValueType, ComponentName::idDefaultValueType, ComponentName::idDefaultValue, ComponentName::idName, ComponentName::idTokens, ComponentName::noId }; static const ComponentName::Id subnodeProps_attributeDef[] = { ComponentName::idDefaultValue, ComponentName::noId }; const ClassDef ClassDef::attributeDef = { ComponentName::idAttributeDef, allProps_attributeDef, subnodeProps_attributeDef, ComponentName::noId, ComponentName::noId, ComponentName::noId }; static const ComponentName::Id allProps_elementType[] = { INTRINSIC_PROPS, ComponentName::idAttributeDefs, ComponentName::idContentType, ComponentName::idExclusions, ComponentName::idGi, ComponentName::idInclusions, ComponentName::idModelGroup, ComponentName::idOmitEndTag, ComponentName::idOmitStartTag, ComponentName::noId }; static const ComponentName::Id subnodeProps_elementType[] = { ComponentName::idAttributeDefs, ComponentName::idModelGroup, ComponentName::noId }; const ClassDef ClassDef::elementType = { ComponentName::idElementType, allProps_elementType, subnodeProps_elementType, ComponentName::noId, ComponentName::noId, ComponentName::noId }; static const ComponentName::Id allProps_modelGroup[] = { INTRINSIC_PROPS, ComponentName::idConnector, ComponentName::idOccurenceIndicator, ComponentName::idContentTokens, ComponentName::noId }; static const ComponentName::Id subnodeProps_modelGroup[] = { ComponentName::idContentTokens, ComponentName::noId }; const ClassDef ClassDef::modelGroup = { ComponentName::idModelGroup, allProps_modelGroup, subnodeProps_modelGroup, ComponentName::noId, ComponentName::noId, ComponentName::noId }; static const ComponentName::Id allProps_elementToken[] = { INTRINSIC_PROPS, ComponentName::idGi, ComponentName::idOccurenceIndicator, ComponentName::noId }; static const ComponentName::Id subnodeProps_elementToken[] = { ComponentName::noId }; const ClassDef ClassDef::elementToken = { ComponentName::idElementToken, allProps_elementToken, subnodeProps_elementToken, ComponentName::noId, ComponentName::noId, ComponentName::noId }; static const ComponentName::Id allProps_pcdataToken[] = { INTRINSIC_PROPS, ComponentName::noId }; static const ComponentName::Id subnodeProps_pcdataToken[] = { ComponentName::noId }; const ClassDef ClassDef::pcdataToken = { ComponentName::idPcdataToken, allProps_pcdataToken, subnodeProps_pcdataToken, ComponentName::noId, ComponentName::noId, ComponentName::noId }; static const ComponentName::Id allProps_defaultEntity[] = { INTRINSIC_PROPS, ComponentName::idName, ComponentName::idEntityType, ComponentName::idText, ComponentName::idExternalId, ComponentName::idAttributes, ComponentName::idNotationName, ComponentName::idNotation, ComponentName::noId }; static const ComponentName::Id subnodeProps_defaultEntity[] = { ComponentName::idExternalId, ComponentName::idAttributes, ComponentName::noId }; const ClassDef ClassDef::defaultEntity = { ComponentName::idDefaultEntity, allProps_defaultEntity, subnodeProps_defaultEntity, ComponentName::noId, ComponentName::noId, ComponentName::noId }; #ifdef GROVE_NAMESPACE } #endif openjade-1.3.2/grove/Node.h0100664000076400007640000005730407554622154013620 0ustar ianian// Copyright (c) 1996 James Clark // See the file COPYING for copying permission. #ifndef Node_INCLUDED #define Node_INCLUDED 1 #ifdef __GNUG__ #pragma interface #endif #include #include "IList.h" #ifdef SP_USE_DLL #ifdef BUILD_LIBGROVE #define GROVE_API SP_DLLEXPORT #else #define GROVE_API SP_DLLIMPORT #endif #else /* not SP_USE_DLL */ #define GROVE_API /* as nothing */ #endif /* not SP_USE_DLL */ #ifdef GROVE_NAMESPACE #define GROVE_NAMESPACE_SCOPE GROVE_NAMESPACE:: #else #define GROVE_NAMESPACE_SCOPE #endif // Supports the following modules: // baseabs prlgabs0 prlgabs1 instabs basesds0 instsds0 subdcabs #ifdef GROVE_NAMESPACE namespace GROVE_NAMESPACE { #endif #ifdef SP_MULTI_BYTE #ifdef SP_WCHAR_T_USHORT typedef wchar_t GroveChar; #else typedef unsigned int GroveChar; #endif #else /* not SP_MULTI_BYTE */ typedef unsigned char GroveChar; #endif /* not SP_MULTI_BYTE */ class NodePtr; class NodeListPtr; class NamedNodeListPtr; class GroveString; class NodeVisitor; class SdataMapper; class GroveStringList; class GroveStringListPtr; enum AccessResult { accessOK, // success accessNull, // value is null accessTimeout, // timed out waiting for property accessNotInClass // property is not defined for class }; struct GROVE_API ComponentName { enum Id { noId = -1, idAllPropertyNames, idAnd, idAny, idApplicationInfo, idAttributeAssignment, idAttributeDef, idAttributeDefs, idAttributes, idAttributeValueToken, idCdata, idChar, idChildrenPropertyName, idClassName, idConnector, idConref, idContent, idContentTokens, idContentType, idCurrent, idCurrentAttributeIndex, idCurrentGroup, idDataChar, idDataPropertyName, idDataSepPropertyName, idDeclValueType, idDefaulted, idDefaultedEntities, idDefaultEntity, idDefaultValue, idDefaultValueType, idDoctypesAndLinktypes, idDocumentElement, idDocumentType, idElement, idElements, idElementToken, idElementType, idElementTypes, idEmpty, idEntities, idEntity, idEntityName, idEntityType, idEpilog, idExclusions, idExternalData, idExternalId, idFixed, idGeneralEntities, idGeneratedSystemId, idGi, idGoverning, idGoverningDoctype, idGroveRoot, idId, idIdref, idIdrefs, idImplied, idIncluded, idInclusions, idModelGroup, idMustOmitEndTag, idName, idNames, idNdata, idNmtkgrp, idNmtoken, idNmtokens, idNotation, idNotationName, idNotations, idNumber, idNumbers, idNutoken, idNutokens, idOccurenceIndicator, idOmitEndTag, idOmitStartTag, idOpt, idOr, idOrigin, idOriginToSubnodeRelPropertyName, idParameterEntities, idParent, idPcdataToken, idPi, idPlus, idProlog, idPublicId, idRcdata, idReferent, idRep, idRequired, idSdata, idSeq, idSgmlConstants, idSgmlDocument, idSubdocument, idSubnodePropertyNames, idSystemData, idSystemId, idText, idToken, idTokens, idTokenSep, idTreeRoot, idValue }; enum { nIds = idValue + 1 }; static const char *rcsName(Id); static const char *sdqlName(Id); }; struct GROVE_API ClassDef { ComponentName::Id className; const ComponentName::Id *allPropertyNames; const ComponentName::Id *subnodePropertyNames; ComponentName::Id childrenPropertyName; ComponentName::Id dataPropertyName; ComponentName::Id dataSepPropertyName; static const ClassDef sgmlDocument; static const ClassDef sgmlConstants; static const ClassDef dataChar; static const ClassDef element; static const ClassDef attributeAssignment; static const ClassDef attributeDef; static const ClassDef attributeValueToken; static const ClassDef pi; static const ClassDef sdata; static const ClassDef documentType; static const ClassDef entity; static const ClassDef notation; static const ClassDef externalId; static const ClassDef externalData; static const ClassDef subdocument; static const ClassDef nonSgml; static const ClassDef message; static const ClassDef elementType; static const ClassDef modelGroup; static const ClassDef elementToken; static const ClassDef pcdataToken; static const ClassDef defaultEntity; }; class PropertyValue; class GROVE_API Node { public: // property values // data in GroveString valid till Node destroyed // default is accessNotInClass // Intrinsic properties. virtual AccessResult getOrigin(NodePtr &) const; virtual AccessResult getParent(NodePtr &) const; virtual AccessResult getGroveRoot(NodePtr &) const; virtual AccessResult getTreeRoot(NodePtr &) const; virtual AccessResult getOriginToSubnodeRelPropertyName(ComponentName::Id &) const = 0; AccessResult getClassName(ComponentName::Id &) const; AccessResult getChildrenPropertyName(ComponentName::Id &) const; AccessResult getDataPropertyName(ComponentName::Id &) const; AccessResult getDataSepPropertyName(ComponentName::Id &) const; AccessResult getSubnodePropertyNames(const ComponentName::Id *&) const; AccessResult getAllPropertyNames(const ComponentName::Id *&) const; // this allows you to apply some operation to a node // according to its grove class virtual void accept(NodeVisitor &) = 0; virtual const ClassDef &classDef() const = 0; // not formally properties virtual AccessResult children(NodeListPtr &) const = 0; virtual AccessResult follow(NodeListPtr &) const = 0; // return accessNull if there isn't a first or next // result accessNotInClass if datatype of otsnr is not node-list or named-node-list virtual AccessResult nextSibling(NodePtr &) const; // works the same as nextSibling(), except that when charChunk() // returns accessOK, returns node following that chunk. virtual AccessResult nextChunkSibling(NodePtr &) const; // if result == accessOK, length must be > 0 virtual AccessResult nextChunkAfter(NodePtr &) const; virtual AccessResult charChunk(const SdataMapper &, GroveString &) const; // return accessNotInClass if class doesn't have children property // return accessNull if there isn't a first child virtual AccessResult firstChild(NodePtr &) const; // First of this node's siblings. // accessNotInClass if datatype of otsnr is not node-list or named-node-list virtual AccessResult firstSibling(NodePtr &) const; // The index of this node in the list of all its siblings. virtual AccessResult siblingsIndex(unsigned long &) const; // Has a default implementation in terms of getAttributes and NodeList::ref virtual AccessResult attributeRef(unsigned long, NodePtr &) const; // references the list of the following siblings // 0 is the next sibling // Has a default implementation in terms of nextSibling. virtual AccessResult followSiblingRef(unsigned long, NodePtr &) const; // For a tokenized attribute returns tokens separated by spaces; // null for a non-tokenized attribute. virtual AccessResult tokens(GroveString &) const; // For an element, the number of elements started before it, // that is its zero-based index in a pre-order traversal of // the all the elements in the document. virtual AccessResult elementIndex(unsigned long &) const; // Node identity. // if hash() returns different values for two nodes, // the operator==() must return false for those two nodes. virtual unsigned long hash() const; // Implementation will usually need to call sameGrove(). virtual bool operator==(const Node &node) const = 0; bool operator!=(const Node &node) const { return !(*this == node); } // Does this chunk contains nd? virtual bool chunkContains(const Node &nd) const; bool sameGrove(const Node &node) const; typedef const char *IID; virtual bool queryInterface(IID, const void *&) const; // Property on SGML document giving list of parser messages. virtual AccessResult getMessages(NodeListPtr &) const; // Property of message. enum Severity { info, warning, error }; virtual AccessResult getSeverity(Severity &) const; AccessResult property(ComponentName::Id, const SdataMapper &, PropertyValue &) const; virtual unsigned groveIndex() const = 0; public: virtual void addRef() = 0; // You must call release rather than use delete. // This is done automatically by NodePtr. virtual void release() = 0; protected: // This enforces this. #ifdef __GNUG__ virtual #endif ~Node() { } public: // This is special. // Implemented in terms of charChunk(). AccessResult getChar(const SdataMapper &, GroveChar &) const; // From here on derived algorithmically from property set. // Properties common to several node classes. virtual AccessResult getAttributes(NamedNodeListPtr &) const; virtual AccessResult getName(GroveString &) const; virtual AccessResult getSystemData(GroveString &) const; virtual AccessResult getEntity(NodePtr &) const; virtual AccessResult getEntityName(GroveString &) const; virtual AccessResult getExternalId(NodePtr &) const; virtual AccessResult getNotation(NodePtr &) const; virtual AccessResult getGi(GroveString &) const; struct OccurIndicator { enum Enum { opt, plus, rep }; }; virtual AccessResult getOccurIndicator(OccurIndicator::Enum &) const; virtual AccessResult getAttributeDefs(NamedNodeListPtr &) const; virtual AccessResult getText(GroveString &) const; virtual AccessResult getNotationName(GroveString &) const; struct EntityType { enum Enum { text, cdata, sdata, ndata, subdocument, pi }; }; virtual AccessResult getEntityType(EntityType::Enum &) const; // Properties only on entity virtual AccessResult getDefaulted(bool &) const; // Properties only on externalId virtual AccessResult getPublicId(GroveString &) const; virtual AccessResult getSystemId(GroveString &) const; virtual AccessResult getGeneratedSystemId(GroveString &) const; // Properties only on attributeAssignment virtual AccessResult getValue(NodeListPtr &) const; virtual AccessResult getTokenSep(GroveChar &) const; virtual AccessResult getImplied(bool &) const; virtual AccessResult getAttributeDef(NodePtr &) const; // Properties only on attributeDef virtual AccessResult getCurrentAttributeIndex(long &) const; virtual AccessResult getCurrentGroup(NodeListPtr &) const; struct DeclValueType { enum Enum { cdata, entity, entities, id, idref, idrefs, name, names, nmtoken, nmtokens, number, numbers, nutoken, nutokens, notation, nmtkgrp }; }; virtual AccessResult getDeclValueType(DeclValueType::Enum &) const; struct DefaultValueType { enum Enum { value, fixed, required, current, conref, implied }; }; virtual AccessResult getDefaultValueType(DefaultValueType::Enum &) const; virtual AccessResult getDefaultValue(NodeListPtr &) const; virtual AccessResult getTokens(GroveStringListPtr &) const; // Properties only on element. virtual bool hasGi(GroveString) const; virtual AccessResult getId(GroveString &) const; virtual AccessResult getContent(NodeListPtr &) const; virtual AccessResult getIncluded(bool &) const; virtual AccessResult getMustOmitEndTag(bool &) const; virtual AccessResult getElementType(NodePtr &) const; // Properties only on elementType. struct ContentType { enum Enum { cdata, rcdata, empty, any, modelgrp }; }; virtual AccessResult getContentType(ContentType::Enum &) const; virtual AccessResult getExclusions(GroveStringListPtr &) const; virtual AccessResult getInclusions(GroveStringListPtr &) const; virtual AccessResult getModelGroup(NodePtr &) const; virtual AccessResult getOmitEndTag(bool &) const; virtual AccessResult getOmitStartTag(bool &) const; // Properties only on modelGroup. struct Connector { enum Enum { and_, or_, seq }; // "and", "or" can be keywords }; virtual AccessResult getConnector(Connector::Enum &) const; virtual AccessResult getContentTokens(NodeListPtr &) const; // Properties only on attributeValueToken. virtual AccessResult getToken(GroveString &) const; virtual AccessResult getReferent(NodePtr &) const; // Properties only on doctype virtual AccessResult getGoverning(bool &) const; virtual AccessResult getGeneralEntities(NamedNodeListPtr &) const; virtual AccessResult getNotations(NamedNodeListPtr &) const; virtual AccessResult getElementTypes(NamedNodeListPtr &) const; virtual AccessResult getDefaultEntity(NodePtr &) const; virtual AccessResult getParameterEntities(NamedNodeListPtr &) const; // Properties only on sgmlDocument. virtual AccessResult getSgmlConstants(NodePtr &) const; virtual AccessResult getApplicationInfo(GroveString &) const; virtual AccessResult getProlog(NodeListPtr &) const; virtual AccessResult getEpilog(NodeListPtr &) const; virtual AccessResult getDocumentElement(NodePtr &) const; virtual AccessResult getElements(NamedNodeListPtr &) const; virtual AccessResult getEntities(NamedNodeListPtr &) const; virtual AccessResult getDefaultedEntities(NamedNodeListPtr &) const; virtual AccessResult getGoverningDoctype(NodePtr &) const; virtual AccessResult getDoctypesAndLinktypes(NamedNodeListPtr &) const; // Properties only on dataChar. // For a non-SGML data character (resulting from a numeric character reference). // Something like this is being added in the HyTime TC. virtual AccessResult getNonSgml(unsigned long &) const; }; class GROVE_API NodeList { public: virtual AccessResult first(NodePtr &) const = 0; virtual AccessResult rest(NodeListPtr &) const = 0; virtual AccessResult chunkRest(NodeListPtr &) const = 0; // i is a zero based index // This has a default implementation in terms of first and rest. virtual AccessResult ref(unsigned long i, NodePtr &) const; virtual void release() = 0; virtual void addRef() = 0; protected: #ifdef __GNUG__ virtual #endif ~NodeList() { } }; class GROVE_API NamedNodeList { public: // This must NOT assume that the string has been normalized. virtual AccessResult namedNode(GroveString, NodePtr &) const = 0; // Do name normalize appropriate for this NamedNodeList. // Returns new size (always <= old size). // This can be used even if list is empty virtual size_t normalize(GroveChar *, size_t) const = 0; // Could have used subtyping here, but accessing NamedNodeList // positionally typically requires different data structure. virtual NodeListPtr nodeList() const = 0; // Use this when you don't care about the order. // May be much more efficient than nodeList(). virtual NodeListPtr nodeListNoOrder() const; enum Type { elements, attributes, entities, notations, doctypesAndLinktypes, elementTypes, attributeDefs }; virtual Type type() const = 0; // If the node is of a class that occurs in the list, // return the value of the property that serves as the name // property for nodes of that class in the named node list. // Return accessNotInClass if the node is not of a class // that occurs in the list. AccessResult nodeName(const NodePtr &, GroveString &) const; virtual void release() = 0; virtual void addRef() = 0; protected: #ifdef __GNUG__ virtual #endif ~NamedNodeList() { } }; class GROVE_API NodePtr { public: NodePtr() : node_(0) { } NodePtr(Node *node) : node_(node) { addRef(); } ~NodePtr() { release(); } NodePtr(const NodePtr &ptr) : node_(ptr.node_) { addRef(); } NodePtr &operator=(const NodePtr &ptr) { ptr.addRef(); release(); node_ = ptr.node_; return *this; } Node *operator->() const { return node_; } Node &operator*() const { return *node_; } AccessResult assignOrigin() { return node_->getOrigin(*this); } AccessResult assignFirstChild() { return node_->firstChild(*this); } AccessResult assignNextSibling() { return node_->nextSibling(*this); } AccessResult assignNextChunkSibling() { return node_->nextChunkSibling(*this); } AccessResult assignNextChunkAfter() { return node_->nextChunkAfter(*this); } AccessResult assignFirstSibling() { return node_->firstSibling(*this); } void assign(Node *node) { if (node) node->addRef(); release(); node_ = node; } void clear() { release(); node_ = 0; } operator bool() const { return node_ != 0; } private: void addRef() const { if (node_) node_->addRef(); } void release() const { if (node_) node_->release(); } Node *node_; }; class GROVE_API NodeListPtr { public: NodeListPtr() : list_(0) { } NodeListPtr(NodeList *list) : list_(list) { addRef(); } ~NodeListPtr() { release(); } NodeListPtr(const NodeListPtr &ptr) : list_(ptr.list_) { addRef(); } NodeListPtr &operator=(const NodeListPtr &ptr) { ptr.addRef(); release(); list_ = ptr.list_; return *this; } AccessResult assignRest() { return list_->rest(*this); } AccessResult assignChunkRest() { return list_->chunkRest(*this); } NodeList *operator->() const { return list_; } NodeList &operator*() const { return *list_; } void assign(NodeList *list) { if (list) list->addRef(); release(); list_ = list; } void clear() { release(); list_ = 0; } operator bool() const { return list_ != 0; } private: void addRef() const { if (list_) list_->addRef(); } void release() const { if (list_) list_->release(); } NodeList *list_; }; class GROVE_API NamedNodeListPtr { public: NamedNodeListPtr() : list_(0) { } NamedNodeListPtr(NamedNodeList *list) : list_(list) { addRef(); } ~NamedNodeListPtr() { release(); } NamedNodeListPtr(const NamedNodeListPtr &ptr) : list_(ptr.list_) { addRef(); } NamedNodeListPtr &operator=(const NamedNodeListPtr &ptr) { ptr.addRef(); release(); list_ = ptr.list_; return *this; } NamedNodeList *operator->() const { return list_; } NamedNodeList &operator*() const { return *list_; } void assign(NamedNodeList *list) { if (list) list->addRef(); release(); list_ = list; } void clear() { release(); list_ = 0; } operator bool() const { return list_ != 0; } private: void addRef() const { if (list_) list_->addRef(); } void release() const { if (list_) list_->release(); } NamedNodeList *list_; }; class GROVE_API GroveString { public: typedef const GroveChar *const_iterator; GroveString() : data_(0), size_(0) { } GroveString(const GroveChar *data, size_t size) : data_(data), size_(size) { } size_t size() const { return size_; } const GroveChar *data() const { return data_; } void assign(const GroveChar *data, size_t size) { data_ = data; size_ = size; } bool operator==(const GroveString &str) const; bool operator!=(const GroveString &str) const { return !(*this == str); } GroveChar operator[](size_t i) const { return data_[i]; } const_iterator begin() const { return data_; } const_iterator end() const { return data_ + size_; } private: const GroveChar *data_; size_t size_; }; class GROVE_API GroveStringLink { public: GroveStringLink( const GroveString &gs ) : data_(gs), next_(0) { } friend class GroveStringList; friend class ConstGroveStringListIter; private: GroveString data_; GroveStringLink *next_; }; class GroveStringList; class GROVE_API ConstGroveStringListIter { public: friend class GroveStringList; ConstGroveStringListIter() : link_(0) { } ConstGroveStringListIter(const GroveStringList &list); int done() const { return link_ == 0; } const GroveString &cur() const { return link_->data_; } void next() { link_ = link_->next_; } protected: void attach(const GroveStringLink *link) { link_ = link; } const GroveStringLink *link_; }; class GROVE_API GroveStringList { public: friend class ConstGroveStringListIter; GroveStringList() : head_(0), refCount_(0) { } ~GroveStringList(); void append(const GroveString &gs); void release(); void addRef(); bool canReuse(GroveStringListPtr &ptr) const; AccessResult first(GroveString &) const; AccessResult rest(GroveStringListPtr &) const; const ConstGroveStringListIter &iter() { return iter_; } private: unsigned refCount_; GroveStringLink *head_; ConstGroveStringListIter iter_; }; class GROVE_API GroveStringListPtr { public: GroveStringListPtr() : list_(0) { } GroveStringListPtr(GroveStringList *list) : list_(list) { addRef(); } ~GroveStringListPtr() { release(); } GroveStringListPtr(const GroveStringListPtr &ptr) : list_(ptr.list_) { addRef(); } GroveStringListPtr &operator=(const GroveStringListPtr &ptr) { ptr.addRef(); release(); list_ = ptr.list_; return *this; } GroveStringList *operator->() const { return list_; } GroveStringList &operator*() const { return *list_; } void assign(GroveStringList *list) { if (list) list->addRef(); release(); list_ = list; } void clear() { release(); list_ = 0; } operator bool() const { return list_ != 0; } private: void addRef() const { if (list_) list_->addRef(); } void release() const { if (list_) list_->release(); } GroveStringList *list_; }; class GROVE_API SdataMapper { public: virtual ~SdataMapper(); // Returns a pointer to a single character or null virtual bool sdataMap(GroveString name, GroveString text, GroveChar &) const; }; // See Design Patterns. class GROVE_API NodeVisitor { public: virtual void sgmlDocument(Node &); virtual void sgmlConstants(Node &); virtual void dataChar(Node &); virtual void element(Node &); virtual void attributeAssignment(Node &); virtual void attributeDef(Node &); virtual void attributeValueToken(Node &); virtual void pi(Node &); virtual void sdata(Node &); virtual void documentType(Node &); virtual void entity(Node &); virtual void notation(Node &); virtual void externalId(Node &); virtual void externalData(Node &); virtual void subdocument(Node &); virtual void nonSgml(Node &); virtual void message(Node &); virtual void elementType(Node &); virtual void modelGroup(Node &); virtual void elementToken(Node &); virtual void pcdataToken(Node &); virtual void defaultEntity(Node &); }; class GROVE_API PropertyValue { public: virtual ~PropertyValue() { } virtual void set(const NodePtr &) = 0; virtual void set(const NodeListPtr &) = 0; virtual void set(const NamedNodeListPtr &) = 0; virtual void set(bool) = 0; virtual void set(GroveChar) = 0; virtual void set(GroveString) = 0; virtual void set(ComponentName::Id) = 0; virtual void set(const GroveStringListPtr &) = 0; virtual void set(const ComponentName::Id *) = 0; virtual void set(long) = 0; }; inline AccessResult Node::getChar(const SdataMapper &mapper, GroveChar &c) const { GroveString str; AccessResult ret = charChunk(mapper, str); if (ret == accessOK) c = str[0]; return ret; } inline bool Node::sameGrove(const Node &node) const { return groveIndex() == node.groveIndex(); } inline AccessResult Node::getClassName(ComponentName::Id &name) const { name = classDef().className; return accessOK; } inline AccessResult Node::getChildrenPropertyName(ComponentName::Id &name) const { const ClassDef &def = classDef(); if (def.childrenPropertyName == ComponentName::noId) return accessNull; name = def.childrenPropertyName; return accessOK; } inline AccessResult Node::getDataPropertyName(ComponentName::Id &name) const { const ClassDef &def = classDef(); if (def.dataPropertyName == ComponentName::noId) return accessNull; name = def.dataPropertyName; return accessOK; } inline AccessResult Node::getDataSepPropertyName(ComponentName::Id &name) const { const ClassDef &def = classDef(); if (def.dataSepPropertyName == ComponentName::noId) return accessNull; name = def.dataSepPropertyName; return accessOK; } inline AccessResult Node::getSubnodePropertyNames(const ComponentName::Id *&names) const { names = classDef().subnodePropertyNames; return accessOK; } inline AccessResult Node::getAllPropertyNames(const ComponentName::Id *&names) const { names = classDef().allPropertyNames; return accessOK; } #ifdef GROVE_NAMESPACE } #endif #endif /* not Node_INCLUDED */ openjade-1.3.2/grove/grove.dsp0100664000076400007640000001051406777044621014407 0ustar ianian# Microsoft Developer Studio Project File - Name="grove" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 CFG=grove - Win32 Release !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "grove.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "grove.mak" CFG="grove - Win32 Release" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "grove - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE "grove - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe MTL=midl.exe RSC=rc.exe !IF "$(CFG)" == "grove - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir ".\Release" # PROP BASE Intermediate_Dir ".\Release" # PROP BASE Target_Dir "." # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir ".\Release" # PROP Intermediate_Dir ".\Release" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "." # ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c # ADD CPP /nologo /MD /W3 /GX /O2 /I "..\include" /D "BUILD_LIBGROVE" /D "NDEBUG" /D "_WINDOWS" /D "WIN32" /D SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D "SP_MULTI_BYTE" /YX /FD /c # ADD BASE MTL /nologo /D "NDEBUG" /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x809 /d "NDEBUG" # ADD RSC /l 0x809 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:"0x20200000" /subsystem:windows /dll /machine:I386 /out:"..\bin\ogrove13.dll" # SUBTRACT LINK32 /profile /map !ELSEIF "$(CFG)" == "grove - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir ".\Debug" # PROP BASE Intermediate_Dir ".\Debug" # PROP BASE Target_Dir "." # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir ".\Debug" # PROP Intermediate_Dir ".\Debug" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "." # ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c # ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\include" /D "BUILD_LIBGROVE" /D "_DEBUG" /D "_WINDOWS" /D "WIN32" /D SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D "SP_MULTI_BYTE" /YX /FD /c # ADD BASE MTL /nologo /D "_DEBUG" /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x809 /d "_DEBUG" # ADD RSC /l 0x809 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:"0x20200000" /subsystem:windows /dll /debug /machine:I386 /out:"..\dbgbin\ogrove13d.dll" # SUBTRACT LINK32 /incremental:no !ENDIF # Begin Target # Name "grove - Win32 Release" # Name "grove - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;for;f90" # Begin Source File SOURCE=.\LocNode.cxx # End Source File # Begin Source File SOURCE=.\Node.cxx # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd" # Begin Source File SOURCE=.\LocNode.h # End Source File # Begin Source File SOURCE=.\Node.h # End Source File # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe" # End Group # End Target # End Project openjade-1.3.2/groveoa/0040775000076400007640000000000007572430615013073 5ustar ianianopenjade-1.3.2/groveoa/CGroveBuilder.cxx0100664000076400007640000002066106756236453016324 0ustar ianian// CGroveBuilder.cpp : Implementation of CGroveBuilder #include "stdafx.h" #include "groveoa.h" #include "CGroveBuilder.h" #include "GroveBuilder.h" #include "ErrorCountEventHandler.h" #include "GroveNode.h" #include "MessageTable.h" #include "ArcEngine.h" #include #include #include #define STRICT #include using SP_NAMESPACE::StringC; #ifdef SP_NO_STD_NAMESPACE #define std /* as nothing */ #endif #define TRY try { #define CATCH } catch (std::bad_alloc) { return E_OUTOFMEMORY; } /* We need to keep a reference to the entity manager, because StoragePos can use storage managers that are owned by the entity manager. */ class SpParserThread : public ParserThread, public SP_NAMESPACE::Messenger, public SP_NAMESPACE::MessageFormatter { public: SpParserThread() : cancel_(0) { } ~SpParserThread(); void run(); void dispatchMessage(const SP_NAMESPACE::Message &); SP_NAMESPACE::Boolean getMessageText(const SP_NAMESPACE::MessageFragment &, SP_NAMESPACE::StringC &); SP_NAMESPACE::Owner eh; SP_NAMESPACE::SgmlParser parser; SP_NAMESPACE::Ptr em; SP_NAMESPACE::Vector archNames; static unsigned __stdcall start(void *p); private: sig_atomic_t cancel_; HANDLE thread_; }; void convertBSTR(BSTR str, StringC &result) { if (str) result.assign(str, ::SysStringLen(str)); else result.resize(0); } STDMETHODIMP CGroveBuilder::parse(BSTR sysid, SgmlDocumentNode **retval) { return archParse( sysid, 0, retval ); } STDMETHODIMP CGroveBuilder::archParse (BSTR sysid, BSTR archNames, SgmlDocumentNode **retval) { TRY SpParserThread *parserThread = new SpParserThread; SP_NAMESPACE::Owner tem(parserThread); if( archNames != 0 ) { StringC archNames_; convertBSTR(archNames, archNames_); StringC archName; for( short i = 0; i < archNames_.size(); i++ ) if( archNames_[i] != ' ' ) archName += archNames_[i]; else if( archName.size() != 0 ) { parserThread->archNames.push_back( archName ); archName.resize( 0 ); } if( archName.size() != 0 ) parserThread->archNames.push_back( archName ); } GROVE_NAMESPACE::NodePtr root; parserThread->eh = SP_NAMESPACE::GroveBuilder::make(0, parserThread, parserThread, validateOnly_ != 0, root); StringC str(sysid, sysid ? ::SysStringLen(sysid) : 0); app_.initParser(str, parserThread->parser, parserThread->em); parserThread->run(); return makeRootNode(root, tem, retval); CATCH } static HRESULT makeBSTR(const StringC &str, BSTR *retval) { if (str.size() == 0) *retval = 0; else { *retval = ::SysAllocStringLen(str.data(), str.size()); if (!*retval) return E_OUTOFMEMORY; } return NOERROR; } STDMETHODIMP CGroveBuilder::get_ExtraCatalogs(BSTR *retval) { return makeBSTR(app_.extraCatalogs(), retval); } STDMETHODIMP CGroveBuilder::put_ExtraCatalogs(BSTR str) { TRY StringC tem; convertBSTR(str, tem); app_.setExtraCatalogs(tem); return NOERROR; CATCH } STDMETHODIMP CGroveBuilder::get_DefaultCatalogs(BSTR *retval) { return makeBSTR(app_.defaultCatalogs(), retval); } STDMETHODIMP CGroveBuilder::put_DefaultCatalogs(BSTR str) { TRY StringC tem; convertBSTR(str, tem); app_.setDefaultCatalogs(tem); return NOERROR; CATCH } STDMETHODIMP CGroveBuilder::get_ExtraDirectories(BSTR *retval) { return makeBSTR(app_.extraDirectories(), retval); } STDMETHODIMP CGroveBuilder::put_ExtraDirectories(BSTR str) { TRY StringC tem; convertBSTR(str, tem); app_.setExtraDirectories(tem); return NOERROR; CATCH } STDMETHODIMP CGroveBuilder::get_DefaultDirectories(BSTR *retval) { return makeBSTR(app_.defaultDirectories(), retval); } STDMETHODIMP CGroveBuilder::put_DefaultDirectories(BSTR str) { TRY StringC tem; convertBSTR(str, tem); app_.setDefaultDirectories(tem); return NOERROR; CATCH } STDMETHODIMP CGroveBuilder::get_Encoding(BSTR *retval) { return makeBSTR(app_.encoding(), retval); } STDMETHODIMP CGroveBuilder::put_Encoding(BSTR str) { TRY StringC tem; convertBSTR(str, tem); app_.setEncoding(tem); // FIXME give an error for a illegal encoding return NOERROR; CATCH } STDMETHODIMP CGroveBuilder::get_DefaultEncoding(BSTR *retval) { return makeBSTR(app_.defaultEncoding(), retval); } STDMETHODIMP CGroveBuilder::put_DefaultEncoding(BSTR str) { TRY StringC tem; convertBSTR(str, tem); app_.setDefaultEncoding(tem); return NOERROR; CATCH } STDMETHODIMP CGroveBuilder::get_Includes(BSTR *retval) { TRY SP_NAMESPACE::StringC tem; for (size_t i = 0; i < app_.options.includes.size(); i++) { if (i) tem += ','; tem += app_.options.includes[i]; } return makeBSTR(tem, retval); CATCH } STDMETHODIMP CGroveBuilder::put_Includes(BSTR str) { TRY SP_NAMESPACE::Vector &v = app_.options.includes; v.resize(0); if (str) { SP_NAMESPACE::Boolean started = 0; for (; *str; str++) { if (*str == ',') started = 0; else { if (!started) { v.resize(v.size() + 1); started = 1; } v.back() += *str; } } } return NOERROR; CATCH } STDMETHODIMP CGroveBuilder::get_Warning(WarningType type, VARIANT_BOOL *retval) { *retval = 0; SP_NAMESPACE::PackedBoolean *p = lookupWarningType(type); if (!p) return E_INVALIDARG; *retval = *p ? -1 : 0; return NOERROR; } STDMETHODIMP CGroveBuilder::put_Warning(WarningType type, VARIANT_BOOL b) { SP_NAMESPACE::PackedBoolean *p = lookupWarningType(type); if (!p) return E_INVALIDARG; *p = b ? 1 : 0; return NOERROR; } SP_NAMESPACE::PackedBoolean *CGroveBuilder::lookupWarningType(WarningType type) { switch (type) { #define ENTRY(w) case warning##w: return &app_.options.warn##w; ENTRY(SgmlDecl) ENTRY(DuplicateEntity) ENTRY(Should) ENTRY(UndefinedElement) ENTRY(DefaultEntityReference) ENTRY(MixedContent) ENTRY(EmptyTag) ENTRY(UnusedMap) ENTRY(UnusedParam) ENTRY(NotationSystemId) #undef ENTRY case warningUnclosedTag: return &app_.options.noUnclosedTag; case warningNet: return &app_.options.noNet; } return 0; } STDMETHODIMP CGroveBuilder::get_Error(ErrorType type, VARIANT_BOOL *retval) { *retval = 0; if (type == errorValid) { *retval = (app_.options.typeValid == 0 ? 0 : -1); return NOERROR; } SP_NAMESPACE::PackedBoolean *p = lookupErrorType(type); if (!p) return E_INVALIDARG; *retval = *p ? -1 : 0; return NOERROR; } STDMETHODIMP CGroveBuilder::put_Error(ErrorType type, VARIANT_BOOL b) { if (type == errorValid) { app_.options.typeValid = (b ? SP_NAMESPACE::ParserOptions::sgmlDeclTypeValid : 0); return NOERROR; } SP_NAMESPACE::PackedBoolean *p = lookupErrorType(type); if (!p) return E_INVALIDARG; *p = b ? 1 : 0; return NOERROR; } SP_NAMESPACE::PackedBoolean *CGroveBuilder::lookupErrorType(ErrorType type) { switch (type) { #define ENTRY(e) case error##e: return &app_.options.error##e; ENTRY(Idref) ENTRY(Significant) ENTRY(Afdr) #undef ENTRY case errorLpdNotation: return &errorLpdNotation_; } return 0; } STDMETHODIMP CGroveBuilder::get_ValidateOnly(VARIANT_BOOL *retval) { *retval = validateOnly_; return NOERROR; } STDMETHODIMP CGroveBuilder::put_ValidateOnly(VARIANT_BOOL b) { validateOnly_ = b; return NOERROR; } SpParserThread::~SpParserThread() { cancel_ = 1; ::WaitForSingleObject(thread_, INFINITE); ::CloseHandle(thread_); } unsigned __stdcall SpParserThread::start(void *p) { SpParserThread *arg = (SpParserThread *)p; try { if (arg->archNames.size() > 0) { SP_NAMESPACE::SelectOneArcDirector director(arg->archNames, *arg->eh); SP_NAMESPACE::ArcEngine::parseAll(arg->parser, director, director, &arg->cancel_); } else arg->parser.parseAll(*arg->eh, &arg->cancel_); } catch (std::bad_alloc) { // FIXME how to report this? } arg->eh.clear(); // Release the parser SP_NAMESPACE::SgmlParser tem; tem.swap(arg->parser); return 0; } void SpParserThread::run() { unsigned id; thread_ = HANDLE(_beginthreadex(NULL, 0, start, this, 0, &id)); } void SpParserThread::dispatchMessage(const SP_NAMESPACE::Message &) { } SP_NAMESPACE::Boolean SpParserThread::getMessageText(const SP_NAMESPACE::MessageFragment &frag, StringC &text) { SP_NAMESPACE::String str; if (!SP_NAMESPACE::MessageTable::instance()->getText(frag, str)) return 0; text.assign((const SP_NAMESPACE::Char *)str.data(), str.size()); return 1; } openjade-1.3.2/groveoa/CGroveBuilder.h0100664000076400007640000000402706756236453015747 0ustar ianian// CGroveBuilder.h : Declaration of the CGroveBuilder #ifndef __GROVEBUILDER_H_ #define __GROVEBUILDER_H_ #include "resource.h" // main symbols #include "config.h" #include "WinApp.h" #include "Message.h" #include "MessageFormatter.h" ///////////////////////////////////////////////////////////////////////////// // CGroveBuilder class ATL_NO_VTABLE CGroveBuilder : public CComObjectRoot, public CComCoClass, public IDispatchImpl<_GroveBuilder, &IID__GroveBuilder, &LIBID_GROVE> { public: CGroveBuilder() : validateOnly_(0), errorLpdNotation_(0) { } DECLARE_REGISTRY_RESOURCEID(IDR_GROVEBUILDER) BEGIN_COM_MAP(CGroveBuilder) COM_INTERFACE_ENTRY(_GroveBuilder) COM_INTERFACE_ENTRY(IDispatch) END_COM_MAP() // IGroveBuilder public: STDMETHOD(parse)(BSTR sysid, SgmlDocumentNode **root); STDMETHOD(archParse)(BSTR sysid, BSTR archNames, SgmlDocumentNode **root); STDMETHOD(get_ExtraCatalogs)(BSTR *); STDMETHOD(put_ExtraCatalogs)(BSTR); STDMETHOD(get_DefaultCatalogs)(BSTR *); STDMETHOD(put_DefaultCatalogs)(BSTR); STDMETHOD(get_ExtraDirectories)(BSTR *); STDMETHOD(put_ExtraDirectories)(BSTR); STDMETHOD(get_DefaultDirectories)(BSTR *); STDMETHOD(put_DefaultDirectories)(BSTR); STDMETHOD(get_Encoding)(BSTR *); STDMETHOD(put_Encoding)(BSTR); STDMETHOD(get_DefaultEncoding)(BSTR *); STDMETHOD(put_DefaultEncoding)(BSTR); STDMETHOD(get_Includes)(BSTR *); STDMETHOD(put_Includes)(BSTR); STDMETHOD(get_Warning)(WarningType, VARIANT_BOOL *); STDMETHOD(put_Warning)(WarningType, VARIANT_BOOL); STDMETHOD(get_Error)(ErrorType, VARIANT_BOOL *); STDMETHOD(put_Error)(ErrorType, VARIANT_BOOL); STDMETHOD(get_ValidateOnly)(VARIANT_BOOL *); STDMETHOD(put_ValidateOnly)(VARIANT_BOOL); private: SP_NAMESPACE::PackedBoolean *lookupWarningType(WarningType type); SP_NAMESPACE::PackedBoolean *lookupErrorType(ErrorType type); SP_NAMESPACE::WinApp app_; VARIANT_BOOL validateOnly_; // This is just for binary compatibility. SP_NAMESPACE::PackedBoolean errorLpdNotation_; }; #endif //__GROVEBUILDER_H_ openjade-1.3.2/groveoa/GroveBuilder.rgs0100664000076400007640000000104606713045656016202 0ustar ianianHKCR { SP.GroveBuilder.1 = s 'GroveBuilder Class' { CLSID = s '{557CE382-9EBD-11D0-9083-0020AF41CFC2}' } SP.GroveBuilder = s 'GroveBuilder Class' { CLSID = s '{557CE382-9EBD-11D0-9083-0020AF41CFC2}' CurVer = s 'SP.GroveBuilder.1' } NoRemove CLSID { ForceRemove {557CE382-9EBD-11D0-9083-0020AF41CFC2} = s 'GroveBuilder Class' { ProgID = s 'SP.GroveBuilder.1' VersionIndependentProgID = s 'SP.GroveBuilder' ForceRemove 'Programmable' InprocServer32 = s '%MODULE%' { val ThreadingModel = s 'Apartment' } } } } openjade-1.3.2/groveoa/GroveNode.cxx0100664000076400007640000011100406756776670015522 0ustar ianian// GroveNode.cxx #include "stdafx.h" #include "groveoa.h" #include "config.h" #include "GroveNode.h" #include "Boolean.h" #include "Node.h" #include "LocNode.h" #include "PointerTable.h" #include "NamedResource.h" #include "Ptr.h" #include "Owner.h" #include "ExtendEntityManager.h" #include "StorageManager.h" #include #include #include #include #ifdef SP_NO_STD_NAMESPACE #define std /* as nothing */ #endif #define TRY try { #define CATCH } catch (std::bad_alloc) { return E_OUTOFMEMORY; } // A NULL BSTR is supposed to be equivalent to an empty BSTR // but not everybody gets this right (perl build 306, for example) inline BSTR makeEmptyBSTR() { return ::SysAllocStringLen(0, 0); } using GROVE_NAMESPACE::NodePtr; using GROVE_NAMESPACE::NodeListPtr; using GROVE_NAMESPACE::NamedNodeListPtr; using GROVE_NAMESPACE::GroveString; using GROVE_NAMESPACE::GroveStringList; using GROVE_NAMESPACE::GroveStringListPtr; using GROVE_NAMESPACE::ConstGroveStringListIter; using GROVE_NAMESPACE::GroveChar; using GROVE_NAMESPACE::accessOK; using GROVE_NAMESPACE::accessNull; using GROVE_NAMESPACE::accessNotInClass; using GROVE_NAMESPACE::SdataMapper; class NodeTable; typedef SP_NAMESPACE::Ptr NodeTablePtr; class ATL_NO_VTABLE CStringList : public CComObjectRoot, public IDispatchImpl { public: CStringList() { } BEGIN_COM_MAP(CStringList) COM_INTERFACE_ENTRY(IDispatch) COM_INTERFACE_ENTRY(StringList) END_COM_MAP() STDMETHOD(get_Count)(long *); STDMETHOD(get_Item)(long, BSTR *retval); STDMETHOD(First)(BSTR *retval); STDMETHOD(Rest)(StringList **); static HRESULT make(const GroveStringListPtr &, StringList **); private: GroveStringListPtr sl_; }; class CNodeBase { public: virtual ~CNodeBase(); void init(const NodePtr &nd, const NodeTablePtr &); static HRESULT make(const NodePtr &, const NodeTablePtr &, Node **); static BSTR makeBSTR(const GroveString &); static const GROVE_NAMESPACE::Node &key(const CNodeBase &obj) { return *obj.nd_; } static unsigned long hash(const GROVE_NAMESPACE::Node &nd) { return nd.hash(); } virtual Node *asNode() = 0; HRESULT internalGetStoragePos(StoragePos **); protected: CNodeBase() { } NodePtr nd_; NodeTablePtr table_; }; class NodeTable : public SP_NAMESPACE::Resource, public SP_NAMESPACE::PointerTable { public: NodeTable(SP_NAMESPACE::Owner &thd) { thd.swap(thread_); } private: SP_NAMESPACE::Owner thread_; }; class ATL_NO_VTABLE CNodeList : public CComObjectRoot, public IDispatchImpl { public: CNodeList() { } BEGIN_COM_MAP(CNodeList) COM_INTERFACE_ENTRY(IDispatch) COM_INTERFACE_ENTRY(NodeList) END_COM_MAP() STDMETHOD(get_Count)(long *); STDMETHOD(get_Item)(long, Node **); STDMETHOD(get__NewEnum)(IUnknown **); STDMETHOD(First)(Node **); STDMETHOD(Rest)(NodeList **); static HRESULT make(const NodeListPtr &, const NodeTablePtr &, NodeList **); private: NodeListPtr nl_; NodeTablePtr table_; }; class ATL_NO_VTABLE CChunkNodeList : public CComObjectRoot, public IDispatchImpl { public: CChunkNodeList() { } BEGIN_COM_MAP(CChunkNodeList) COM_INTERFACE_ENTRY(IDispatch) COM_INTERFACE_ENTRY(NodeList) END_COM_MAP() STDMETHOD(get_Count)(long *); STDMETHOD(get_Item)(long, Node **); STDMETHOD(get__NewEnum)(IUnknown **); STDMETHOD(First)(Node **); STDMETHOD(Rest)(NodeList **); static HRESULT make(const NodeListPtr &, const NodeTablePtr &, NodeList **); private: NodeListPtr nl_; NodeTablePtr table_; }; class ATL_NO_VTABLE CNamedNodeList : public CComObjectRoot, public IDispatchImpl { public: CNamedNodeList() { } BEGIN_COM_MAP(CNamedNodeList) COM_INTERFACE_ENTRY(IDispatch) COM_INTERFACE_ENTRY(NamedNodeList) END_COM_MAP() STDMETHOD(get_Count)(long *); STDMETHOD(get_Item)(BSTR, Node **); STDMETHOD(get__NewEnum)(IUnknown **); STDMETHOD(get_NodeList)(NodeList **); STDMETHOD(Normalize)(BSTR, BSTR *); STDMETHOD(NodeName)(Node *, BSTR *); static HRESULT make(const NamedNodeListPtr &, const NodeTablePtr &, NamedNodeList **); private: NamedNodeListPtr nnl_; NodeTablePtr table_; }; class ATL_NO_VTABLE CStoragePos : public CComObjectRoot, public IDispatchImpl { public: CStoragePos() { } BEGIN_COM_MAP(CStoragePos) COM_INTERFACE_ENTRY(IDispatch) COM_INTERFACE_ENTRY(StoragePos) END_COM_MAP() STDMETHOD(get_StorageManagerName)(BSTR *retval) { const char *s = loc_.storageObjectSpec->storageManager->type(); BSTR tem = ::SysAllocStringLen(0, strlen(s)); *retval = tem; if (!tem) return E_OUTOFMEMORY; while (*s) *tem++ = *s++; return NOERROR; } STDMETHOD(get_StorageObjectId)(BSTR *retval) { const SP_NAMESPACE::StringC &id = loc_.actualStorageId; CComBSTR tem(id.size(), id.data()); *retval = tem.Detach(); return *retval ? NOERROR : E_OUTOFMEMORY; } STDMETHOD(get_LineNumber)(long *retval) { *retval = loc_.lineNumber; if (*retval < 0) *retval = 0; return NOERROR; } STDMETHOD(get_ColumnNumber)(long *retval) { *retval = loc_.columnNumber; if (*retval < 0) *retval = 0; return NOERROR; } STDMETHOD(get_ByteIndex)(long *retval) { *retval = loc_.byteIndex + 1; return NOERROR; } STDMETHOD(get_CharacterIndex)(long *retval) { *retval = loc_.storageObjectOffset + 1; return NOERROR; } static HRESULT make(const SP_NAMESPACE::ExternalInfo *, SP_NAMESPACE::Offset, const NodePtr &, StoragePos **); private: SP_NAMESPACE::StorageObjectLocation loc_; NodePtr nd_; }; #define NODE_PROP2(xfunc, ifunc) \ STDMETHOD(xfunc)(Node **retval) { \ TRY \ *retval = 0; \ NodePtr nd; \ if (nd_->ifunc(nd) == accessOK) \ return make(nd, table_, retval); \ return NOERROR; \ CATCH \ } #define NODE_PROP(Name) NODE_PROP2(get_##Name, get##Name) #define DERIVED_NODE_PROP2(xfunc, ifunc, cls) \ STDMETHOD(xfunc)(cls##Node **retval) { \ TRY \ *retval = 0; \ NodePtr nd; \ if (nd_->ifunc(nd) == accessOK) { \ Node *base; \ HRESULT hres = make(nd, table_, &base); \ *retval = (cls##Node *)base; \ return hres; \ } \ return NOERROR; \ CATCH \ } #define DERIVED_NODE_PROP(Name, cls) DERIVED_NODE_PROP2(get_##Name, get##Name, cls) #define NODE_LIST_PROP2(xfunc, ifunc) \ STDMETHOD(xfunc)(NodeList **retval) { \ TRY \ *retval = 0; \ NodeListPtr nl; \ if (nd_->ifunc(nl) == accessOK) \ return CNodeList::make(nl, table_, retval); \ return NOERROR; \ CATCH \ } #define NODE_LIST_PROP(Name) NODE_LIST_PROP2(get_##Name, get##Name) #define STRING_LIST_PROP2(xfunc, ifunc) \ STDMETHOD(xfunc)(StringList **retval) { \ TRY \ *retval = 0; \ GroveStringListPtr sl; \ if (nd_->ifunc(sl) == accessOK) \ return CStringList::make(sl, retval); \ return NOERROR; \ CATCH \ } #define STRING_LIST_PROP(Name) STRING_LIST_PROP2(get_##Name, get##Name) #define CHUNK_NODE_LIST_PROP2(xfunc, ifunc) \ STDMETHOD(xfunc)(NodeList **retval) { \ TRY \ *retval = 0; \ NodeListPtr nl; \ if (nd_->ifunc(nl) == accessOK) \ return CChunkNodeList::make(nl, table_, retval); \ return NOERROR; \ CATCH \ } #define NAMED_NODE_LIST_PROP2(xfunc, ifunc) \ STDMETHOD(xfunc)(NamedNodeList **retval) { \ TRY \ *retval = 0; \ NamedNodeListPtr nnl; \ if (nd_->ifunc(nnl) == accessOK) \ return CNamedNodeList::make(nnl, table_, retval); \ return NOERROR; \ CATCH \ } #define NAMED_NODE_LIST_PROP(Name) \ NAMED_NODE_LIST_PROP2(get_##Name, get##Name) #define BOOL_PROP2(xfunc, ifunc) \ STDMETHOD(xfunc)(VARIANT_BOOL *retval) { \ TRY \ bool b; \ if (nd_->ifunc(b) == accessOK) \ *retval = b ? -1 : 0; \ else \ *retval = 0; \ return NOERROR; \ CATCH \ } #define BOOL_PROP(Name) BOOL_PROP2(get_##Name, get##Name) #define INTEGER_PROP2(xfunc, ifunc) \ STDMETHOD(xfunc)(long *retval) { \ TRY \ long l; \ if (nd_->ifunc(l) == accessOK) \ *retval = l; \ else \ *retval = 0; \ return NOERROR; \ CATCH \ } #define INTEGER_PROP(Name) INTEGER_PROP2(get_##Name, get##Name) #define STRING_PROP2(xfunc, ifunc) \ STDMETHOD(xfunc)(BSTR *retval) { \ TRY \ *retval = 0; \ GroveString str; \ if (nd_->ifunc(str) == accessOK) \ *retval = makeBSTR(str); \ else \ *retval = makeEmptyBSTR(); \ return NOERROR; \ CATCH \ } #define STRING_PROP(Name) STRING_PROP2(get_##Name, get##Name) #define ENUM_PROP2(enumClass, xfunc, ifunc) \ STDMETHOD(xfunc)(enumClass *retval) { \ GROVE_NAMESPACE::Node::##enumClass##::Enum type; \ if (nd_->ifunc(type) == accessOK) \ *retval = enumClass##(type); \ return NOERROR; \ } #define ENUM_PROP(Name) ENUM_PROP2(Name, get_##Name, get##Name) #define NULL_STRING_PROP(Name) \ STRING_PROP(Name) \ STDMETHOD(get_##Name##Null)(VARIANT_BOOL *retval) { \ TRY \ *retval = 0; \ GroveString str; \ if (nd_->get##Name(str) == accessNull) \ *retval = -1; \ return NOERROR; \ CATCH \ } template class INodeImpl : public IDispatchImpl, public CNodeBase { public: NODE_PROP(Parent) NODE_PROP(Origin) NODE_PROP(GroveRoot) NODE_PROP(TreeRoot) NODE_LIST_PROP2(get_Children, children) CHUNK_NODE_LIST_PROP2(get_ChunkChildren, children) NODE_PROP2(FirstChild, firstChild) NODE_PROP2(NextSibling, nextSibling) NODE_PROP2(NextChunkSibling, nextChunkSibling) STDMETHOD(get_Class)(NodeClass *retval) { TRY *retval = nodeClass; return NOERROR; CATCH } STDMETHOD(get_SiblingIndex)(long *retval) { TRY unsigned long n; if (nd_->siblingsIndex(n) == accessOK) *retval = n + 1; else *retval = 0; return NOERROR; CATCH } Node *asNode() { return this; } STDMETHOD(get_StoragePos)(StoragePos **retval) { return internalGetStoragePos(retval); } }; class ATL_NO_VTABLE CElementNode : public CComObjectRoot, public INodeImpl { public: CElementNode() { } BEGIN_COM_MAP(CElementNode) COM_INTERFACE_ENTRY(IDispatch) COM_INTERFACE_ENTRY(ElementNode) COM_INTERFACE_ENTRY(Node) END_COM_MAP() STRING_PROP(Gi) NAMED_NODE_LIST_PROP(Attributes) STRING_PROP(Id) NODE_LIST_PROP(Content) CHUNK_NODE_LIST_PROP2(get_ChunkContent, getContent) BOOL_PROP(Included) BOOL_PROP(MustOmitEndTag) DERIVED_NODE_PROP(ElementType, ElementType) }; class ATL_NO_VTABLE CAttributeAssignmentNode : public CComObjectRoot, public INodeImpl { public: CAttributeAssignmentNode() { } BEGIN_COM_MAP(CAttributeAssignmentNode) COM_INTERFACE_ENTRY(IDispatch) COM_INTERFACE_ENTRY(AttributeAssignmentNode) COM_INTERFACE_ENTRY(Node) END_COM_MAP() STRING_PROP(Name) BOOL_PROP(Implied) NODE_LIST_PROP(Value) CHUNK_NODE_LIST_PROP2(get_ChunkValue, getValue) STDMETHOD(get_TokenSep)(long *retval) { TRY GroveChar ch; if (nd_->getTokenSep(ch) == accessOK) *retval = ch; else *retval = -1; return NOERROR; CATCH } STDMETHOD(get_StringValue)(BSTR *retval) { TRY *retval = 0; bool implied; if (nd_->getImplied(implied) == accessOK && implied) { *retval = makeEmptyBSTR(); return NOERROR; } GroveString tokens; if (nd_->tokens(tokens) == accessOK) { *retval = makeBSTR(tokens); return NOERROR; } NodePtr first; if (nd_->firstChild(first) == accessOK) { size_t len = 0; NodePtr tem(first); do { GroveString chunk; if (tem->charChunk(SdataMapper(), chunk) == accessOK) len += chunk.size(); } while (tem.assignNextChunkSibling() == accessOK); GroveChar *p = ::SysAllocStringLen(0, len); if (!p) return E_OUTOFMEMORY; *retval = p; tem = first; do { GroveString chunk; if (tem->charChunk(SdataMapper(), chunk) == accessOK) { memcpy(p, chunk.data(), chunk.size()*sizeof(*p)); p += chunk.size(); } } while (tem.assignNextChunkSibling() == accessOK); } return NOERROR; CATCH } DERIVED_NODE_PROP(AttributeDef, AttributeDef) }; class ATL_NO_VTABLE CAttributeValueTokenNode : public CComObjectRoot, public INodeImpl { public: CAttributeValueTokenNode() { } BEGIN_COM_MAP(CAttributeValueTokenNode) COM_INTERFACE_ENTRY(IDispatch) COM_INTERFACE_ENTRY(AttributeValueTokenNode) COM_INTERFACE_ENTRY(Node) END_COM_MAP() STRING_PROP(Token) DERIVED_NODE_PROP(Referent, Element) DERIVED_NODE_PROP(Entity, Entity) DERIVED_NODE_PROP(Notation, Notation) }; class ATL_NO_VTABLE CSgmlDocumentNode : public CComObjectRoot, public INodeImpl { public: CSgmlDocumentNode() { } BEGIN_COM_MAP(CSgmlDocumentNode) COM_INTERFACE_ENTRY(IDispatch) COM_INTERFACE_ENTRY(SgmlDocumentNode) COM_INTERFACE_ENTRY(Node) END_COM_MAP() DERIVED_NODE_PROP(DocumentElement, Element) DERIVED_NODE_PROP(SgmlConstants, SgmlConstants) NULL_STRING_PROP(ApplicationInfo) NODE_LIST_PROP(Prolog) NODE_LIST_PROP(Epilog) NAMED_NODE_LIST_PROP(Elements) NAMED_NODE_LIST_PROP(Entities) NAMED_NODE_LIST_PROP(DefaultedEntities) NAMED_NODE_LIST_PROP(DoctypesAndLinktypes) DERIVED_NODE_PROP(GoverningDoctype, DocumentType) NODE_LIST_PROP(Messages) }; class ATL_NO_VTABLE CDataCharNode : public CComObjectRoot, public INodeImpl { public: CDataCharNode() { } BEGIN_COM_MAP(CDataCharNode) COM_INTERFACE_ENTRY(IDispatch) COM_INTERFACE_ENTRY(DataCharNode) COM_INTERFACE_ENTRY(Node) END_COM_MAP() STDMETHOD(get_Char)(long *); STDMETHOD(get_NonSgml)(long *); STDMETHOD(get_CharChunk)(BSTR *); }; class ATL_NO_VTABLE CSgmlConstantsNode : public CComObjectRoot, public INodeImpl { public: CSgmlConstantsNode() { } BEGIN_COM_MAP(CSgmlConstantsNode) COM_INTERFACE_ENTRY(IDispatch) COM_INTERFACE_ENTRY(SgmlConstantsNode) COM_INTERFACE_ENTRY(Node) END_COM_MAP() }; class ATL_NO_VTABLE CPiNode : public CComObjectRoot, public INodeImpl { public: CPiNode() { } BEGIN_COM_MAP(CPiNode) COM_INTERFACE_ENTRY(IDispatch) COM_INTERFACE_ENTRY(PiNode) COM_INTERFACE_ENTRY(Node) END_COM_MAP() STRING_PROP(SystemData) DERIVED_NODE_PROP(Entity, Entity) STRING_PROP(EntityName) }; class ATL_NO_VTABLE CSdataNode : public CComObjectRoot, public INodeImpl { public: CSdataNode() { } BEGIN_COM_MAP(CSdataNode) COM_INTERFACE_ENTRY(IDispatch) COM_INTERFACE_ENTRY(SdataNode) COM_INTERFACE_ENTRY(Node) END_COM_MAP() STRING_PROP(SystemData) DERIVED_NODE_PROP(Entity, Entity) STRING_PROP(EntityName) }; class ATL_NO_VTABLE CDocumentTypeNode : public CComObjectRoot, public INodeImpl { public: CDocumentTypeNode() { } BEGIN_COM_MAP(CDocumentTypeNode) COM_INTERFACE_ENTRY(IDispatch) COM_INTERFACE_ENTRY(DocumentTypeNode) COM_INTERFACE_ENTRY(Node) END_COM_MAP() STRING_PROP(Name) BOOL_PROP(Governing) NAMED_NODE_LIST_PROP(GeneralEntities) NAMED_NODE_LIST_PROP(Notations) NAMED_NODE_LIST_PROP(ElementTypes) NAMED_NODE_LIST_PROP(ParameterEntities) DERIVED_NODE_PROP(DefaultEntity, DefaultEntity) }; class ATL_NO_VTABLE CEntityNode : public CComObjectRoot, public INodeImpl { public: CEntityNode() { } BEGIN_COM_MAP(CEntityNode) COM_INTERFACE_ENTRY(IDispatch) COM_INTERFACE_ENTRY(EntityNode) COM_INTERFACE_ENTRY(Node) END_COM_MAP() STRING_PROP(Name) NULL_STRING_PROP(Text) DERIVED_NODE_PROP(Notation, Notation) STRING_PROP(NotationName) BOOL_PROP(Defaulted) NAMED_NODE_LIST_PROP(Attributes) DERIVED_NODE_PROP(ExternalId, ExternalId) ENUM_PROP(EntityType) }; class ATL_NO_VTABLE CDefaultEntityNode : public CComObjectRoot, public INodeImpl { public: CDefaultEntityNode() { } BEGIN_COM_MAP(CDefaultEntityNode) COM_INTERFACE_ENTRY(IDispatch) COM_INTERFACE_ENTRY(DefaultEntityNode) COM_INTERFACE_ENTRY(Node) END_COM_MAP() STRING_PROP(Name) NULL_STRING_PROP(Text) DERIVED_NODE_PROP(Notation, Notation) STRING_PROP(NotationName) NAMED_NODE_LIST_PROP(Attributes) DERIVED_NODE_PROP(ExternalId, ExternalId) ENUM_PROP(EntityType) }; class ATL_NO_VTABLE CNotationNode : public CComObjectRoot, public INodeImpl { public: CNotationNode() { } BEGIN_COM_MAP(CNotationNode) COM_INTERFACE_ENTRY(IDispatch) COM_INTERFACE_ENTRY(NotationNode) COM_INTERFACE_ENTRY(Node) END_COM_MAP() STRING_PROP(Name) DERIVED_NODE_PROP(ExternalId, ExternalId) NAMED_NODE_LIST_PROP(AttributeDefs) }; class ATL_NO_VTABLE CExternalIdNode : public CComObjectRoot, public INodeImpl { public: CExternalIdNode() { } BEGIN_COM_MAP(CExternalIdNode) COM_INTERFACE_ENTRY(IDispatch) COM_INTERFACE_ENTRY(ExternalIdNode) COM_INTERFACE_ENTRY(Node) END_COM_MAP() NULL_STRING_PROP(PublicId) NULL_STRING_PROP(SystemId) STRING_PROP(GeneratedSystemId) }; class ATL_NO_VTABLE CExternalDataNode : public CComObjectRoot, public INodeImpl { public: CExternalDataNode() { } BEGIN_COM_MAP(CExternalDataNode) COM_INTERFACE_ENTRY(IDispatch) COM_INTERFACE_ENTRY(ExternalDataNode) COM_INTERFACE_ENTRY(Node) END_COM_MAP() DERIVED_NODE_PROP(Entity, Entity) STRING_PROP(EntityName) }; class ATL_NO_VTABLE CSubdocNode : public CComObjectRoot, public INodeImpl { public: CSubdocNode() { } BEGIN_COM_MAP(CSubdocNode) COM_INTERFACE_ENTRY(IDispatch) COM_INTERFACE_ENTRY(SubdocNode) COM_INTERFACE_ENTRY(Node) END_COM_MAP() DERIVED_NODE_PROP(Entity, Entity) STRING_PROP(EntityName) }; class ATL_NO_VTABLE CElementTypeNode : public CComObjectRoot, public INodeImpl { public: CElementTypeNode() { } BEGIN_COM_MAP(CElementTypeNode) COM_INTERFACE_ENTRY(IDispatch) COM_INTERFACE_ENTRY(ElementTypeNode) COM_INTERFACE_ENTRY(Node) END_COM_MAP() STRING_PROP(Gi) NAMED_NODE_LIST_PROP(AttributeDefs) ENUM_PROP(ContentType) STRING_LIST_PROP(Exclusions) STRING_LIST_PROP(Inclusions) DERIVED_NODE_PROP(ModelGroup, ModelGroup) BOOL_PROP(OmitEndTag) BOOL_PROP(OmitStartTag) }; class ATL_NO_VTABLE CAttributeDefNode : public CComObjectRoot, public INodeImpl { public: CAttributeDefNode() { } BEGIN_COM_MAP(CElementTypeNode) COM_INTERFACE_ENTRY(IDispatch) COM_INTERFACE_ENTRY(ElementTypeNode) COM_INTERFACE_ENTRY(Node) END_COM_MAP() STRING_PROP(Name) ENUM_PROP(DeclValueType) ENUM_PROP(DefaultValueType) STRING_LIST_PROP(Tokens) INTEGER_PROP(CurrentAttributeIndex) NODE_LIST_PROP(CurrentGroup) NODE_LIST_PROP(DefaultValue) }; class ATL_NO_VTABLE CModelGroupNode : public CComObjectRoot, public INodeImpl { public: CModelGroupNode() { } BEGIN_COM_MAP(CModelGroupNode) COM_INTERFACE_ENTRY(IDispatch) COM_INTERFACE_ENTRY(ModelGroupNode) COM_INTERFACE_ENTRY(Node) END_COM_MAP() ENUM_PROP(Connector) ENUM_PROP(OccurIndicator) NODE_LIST_PROP(ContentTokens) }; class ATL_NO_VTABLE CElementTokenNode : public CComObjectRoot, public INodeImpl { public: CElementTokenNode() { } BEGIN_COM_MAP(CElementTokenNode) COM_INTERFACE_ENTRY(IDispatch) COM_INTERFACE_ENTRY(ElementTokenNode) COM_INTERFACE_ENTRY(Node) END_COM_MAP() STRING_PROP(Gi) ENUM_PROP(OccurIndicator) }; class ATL_NO_VTABLE CPcdataTokenNode : public CComObjectRoot, public INodeImpl { public: CPcdataTokenNode() { } BEGIN_COM_MAP(CPcdataTokenNode) COM_INTERFACE_ENTRY(IDispatch) COM_INTERFACE_ENTRY(PcdataTokenNode) COM_INTERFACE_ENTRY(Node) END_COM_MAP() }; class ATL_NO_VTABLE CMessageNode : public CComObjectRoot, public INodeImpl { public: CMessageNode() { } BEGIN_COM_MAP(CMessageNode) COM_INTERFACE_ENTRY(IDispatch) COM_INTERFACE_ENTRY(MessageNode) COM_INTERFACE_ENTRY(Node) END_COM_MAP() STRING_PROP(Text) STDMETHOD(get_Severity)(Severity *retval) { TRY GROVE_NAMESPACE::Node::Severity type; if (nd_->getSeverity(type) == accessOK) *retval = Severity(type); return NOERROR; CATCH } }; class ATL_NO_VTABLE CEnumNodeList : public CComObjectRoot, public IEnumVARIANT { public: CEnumNodeList() { } BEGIN_COM_MAP(CEnumNodeList) COM_INTERFACE_ENTRY(IEnumVARIANT) END_COM_MAP() // IEnumVARIANT STDMETHOD(Next)(ULONG celt, VARIANT *rgVar, ULONG *pCeltFetched); STDMETHOD(Skip)(ULONG celt); STDMETHOD(Reset)(); STDMETHOD(Clone)(IEnumVARIANT **ppEnum); static HRESULT make(const NodeListPtr &, const NodeTablePtr &table, IUnknown **); private: NodeListPtr nl_; NodeListPtr cur_; NodeTablePtr table_; }; class ATL_NO_VTABLE CEnumChunkNodeList : public CComObjectRoot, public IEnumVARIANT { public: CEnumChunkNodeList() { } BEGIN_COM_MAP(CEnumChunkNodeList) COM_INTERFACE_ENTRY(IEnumVARIANT) END_COM_MAP() // IEnumVARIANT STDMETHOD(Next)(ULONG celt, VARIANT *rgVar, ULONG *pCeltFetched); STDMETHOD(Skip)(ULONG celt); STDMETHOD(Reset)(); STDMETHOD(Clone)(IEnumVARIANT **ppEnum); static HRESULT make(const NodeListPtr &, const NodeTablePtr &table, IUnknown **); private: NodeListPtr nl_; NodeListPtr cur_; NodeTablePtr table_; }; struct BuildVisitor : public GROVE_NAMESPACE::NodeVisitor { public: BuildVisitor(const NodePtr &n, const NodeTablePtr &t) : nd(n), table(t), retval(0), hRes(NOERROR) { } #define BUILD(mem, Cls) \ void mem(GROVE_NAMESPACE::Node &) { \ CComObject *p; \ hRes = CComObject::CreateInstance(&p); \ if (!FAILED(hRes)) { \ p->init(nd, table); \ retval = p; \ (retval)->AddRef(); \ } \ } BUILD(element, CElementNode) BUILD(attributeAssignment, CAttributeAssignmentNode) BUILD(attributeValueToken, CAttributeValueTokenNode) BUILD(sgmlDocument, CSgmlDocumentNode) BUILD(dataChar, CDataCharNode) BUILD(sgmlConstants, CSgmlConstantsNode) BUILD(pi, CPiNode) BUILD(sdata, CSdataNode) BUILD(documentType, CDocumentTypeNode) BUILD(entity, CEntityNode) BUILD(notation, CNotationNode) BUILD(externalId, CExternalIdNode) BUILD(externalData, CExternalDataNode) BUILD(subdocument, CSubdocNode) BUILD(message, CMessageNode) BUILD(elementType, CElementTypeNode) BUILD(modelGroup, CModelGroupNode) BUILD(elementToken, CElementTokenNode) BUILD(pcdataToken, CPcdataTokenNode) BUILD(defaultEntity, CDefaultEntityNode) BUILD(attributeDef, CAttributeDefNode) #undef BUILD NodePtr nd; HRESULT hRes; Node *retval; NodeTablePtr table; }; HRESULT CNodeBase::make(const NodePtr &nd, const NodeTablePtr &table, Node **retval) { CNodeBase *nb = table->lookup(*nd); if (nb) { *retval = nb->asNode(); (*retval)->AddRef(); return NOERROR; } else { BuildVisitor visitor(nd, table); nd->accept(visitor); *retval = visitor.retval; return visitor.hRes; } } CNodeBase::~CNodeBase() { CNodeBase *tem = table_->remove(*nd_); if (tem != this) abort(); } void CNodeBase::init(const NodePtr &nd, const NodeTablePtr &table) { table_ = table; nd_ = nd; table_->insert(this); } BSTR CNodeBase::makeBSTR(const GroveString &str) { CComBSTR bstr(str.size(), str.data()); return bstr.Detach(); } HRESULT CNodeBase::internalGetStoragePos(StoragePos **retval) { TRY const SP_NAMESPACE::LocNode *lp = SP_NAMESPACE::LocNode::convert(nd_); if (lp) { SP_NAMESPACE::Location loc; if (lp->getLocation(loc) == accessOK) { const SP_NAMESPACE::Origin *origin = loc.origin().pointer(); SP_NAMESPACE::Index index = loc.index(); while (origin) { const SP_NAMESPACE::ExternalInfo *info = origin->externalInfo(); if (info) return CStoragePos::make(info, origin->startOffset(index), nd_, retval); const SP_NAMESPACE::Location &loc = origin->parent(); index = loc.index(); origin = loc.origin().pointer(); } } } *retval = 0; return NOERROR; CATCH } STDMETHODIMP CDataCharNode::get_CharChunk(BSTR *retval) { TRY *retval = 0; GroveString str; if (nd_->charChunk(SdataMapper(), str) == accessOK) *retval = makeBSTR(str); else *retval = makeEmptyBSTR(); return NOERROR; CATCH } STDMETHODIMP CDataCharNode::get_Char(long *retval) { TRY GroveChar ch; if (nd_->getChar(SdataMapper(), ch) == accessOK) *retval = ch; else *retval = -1; return NOERROR; CATCH } STDMETHODIMP CDataCharNode::get_NonSgml(long *retval) { TRY unsigned long n; if (nd_->getNonSgml(n) == accessOK) *retval = n; else *retval = -1; return NOERROR; CATCH } // ---------- HRESULT CStringList::make(const GroveStringListPtr &sl, StringList **retval) { CComObject *p; HRESULT hRes = CComObject::CreateInstance(&p); if (FAILED(hRes)) return hRes; CStringList *np = p; np->sl_ = sl; *retval = p; (*retval)->AddRef(); return NOERROR; } STDMETHODIMP CStringList::First(BSTR *retval) { TRY *retval = 0; GroveString str; if (sl_->first(str) == accessOK) { *retval = CNodeBase::makeBSTR(str); } return NOERROR; CATCH } STDMETHODIMP CStringList::Rest(StringList **retval) { TRY *retval = 0; GroveStringListPtr sl; if (sl_->rest(sl) == accessOK) return CStringList::make(sl, retval); return NOERROR; CATCH } STDMETHODIMP CStringList::get_Count(long *retval) { TRY long n = 0; for (ConstGroveStringListIter iter(sl_->iter()); !iter.done(); iter.next()) n++; *retval = n; return NOERROR; CATCH } STDMETHODIMP CStringList::get_Item(long i, BSTR *retval) { TRY *retval = 0; if (i <= 0) return E_INVALIDARG; ConstGroveStringListIter iter(*sl_); for (long n = 1; n < i && !iter.done(); n++) iter.next(); if (iter.done()) return E_INVALIDARG; GroveString str; str = iter.cur(); *retval = CNodeBase::makeBSTR(str); return NOERROR; CATCH } // ----------- HRESULT CNodeList::make(const NodeListPtr &nl, const NodeTablePtr &table, NodeList **retval) { CComObject *p; HRESULT hRes = CComObject::CreateInstance(&p); if (FAILED(hRes)) return hRes; CNodeList *np = p; np->nl_ = nl; np->table_ = table; *retval = p; (*retval)->AddRef(); return NOERROR; } STDMETHODIMP CNodeList::First(Node **retval) { TRY *retval = 0; NodePtr nd; if (nl_->first(nd) == accessOK) return CNodeBase::make(nd, table_, retval); return NOERROR; CATCH } STDMETHODIMP CNodeList::Rest(NodeList **retval) { TRY *retval = 0; NodeListPtr nl; if (nl_->rest(nl) == accessOK) return CNodeList::make(nl, table_, retval); return NOERROR; CATCH } STDMETHODIMP CNodeList::get_Count(long *retval) { TRY long n = 0; NodeListPtr nl; if (nl_->rest(nl) == accessOK) { n++; while (nl.assignRest() == accessOK) n++; } *retval = n; return NOERROR; CATCH } STDMETHODIMP CNodeList::get_Item(long i, Node **retval) { TRY *retval = 0; NodePtr nd; if (i <= 0) return E_INVALIDARG; if (nl_->ref(i - 1, nd) != accessOK) return E_INVALIDARG; return CNodeBase::make(nd, table_, retval); CATCH } STDMETHODIMP CNodeList::get__NewEnum(IUnknown **retval) { TRY return CEnumNodeList::make(nl_, table_, retval); CATCH } HRESULT CChunkNodeList::make(const NodeListPtr &nl, const NodeTablePtr &table, NodeList **retval) { CComObject *p; HRESULT hRes = CComObject::CreateInstance(&p); if (FAILED(hRes)) return hRes; CChunkNodeList *np = p; np->nl_ = nl; np->table_ = table; *retval = p; (*retval)->AddRef(); return NOERROR; } STDMETHODIMP CChunkNodeList::First(Node **retval) { TRY *retval = 0; NodePtr nd; if (nl_->first(nd) == accessOK) return CNodeBase::make(nd, table_, retval); return NOERROR; CATCH } STDMETHODIMP CChunkNodeList::Rest(NodeList **retval) { TRY *retval = 0; NodeListPtr nl; if (nl_->chunkRest(nl) == accessOK) return CNodeList::make(nl, table_, retval); return NOERROR; CATCH } STDMETHODIMP CChunkNodeList::get__NewEnum(IUnknown **retval) { TRY return CEnumChunkNodeList::make(nl_, table_, retval); CATCH } STDMETHODIMP CChunkNodeList::get_Count(long *retval) { TRY long n = 0; NodeListPtr nl; if (nl_->chunkRest(nl) == accessOK) { n++; while (nl.assignChunkRest() == accessOK) n++; } *retval = n; return NOERROR; CATCH } STDMETHODIMP CChunkNodeList::get_Item(long i, Node **retval) { TRY *retval = 0; if (i <= 0) return E_INVALIDARG; if (i == 1) return First(retval); NodeListPtr nl(nl_); do { if (nl.assignChunkRest() != accessOK) return E_INVALIDARG; } while (--i > 1); NodePtr nd; if (nl->first(nd) != accessOK) return E_INVALIDARG; return CNodeBase::make(nd, table_, retval); CATCH } STDMETHODIMP CNamedNodeList::get_Count(long *retval) { TRY NodeListPtr nl(nnl_->nodeListNoOrder()); long n = 0; while (nl.assignRest() == accessOK) n++; *retval = n; return NOERROR; CATCH } STDMETHODIMP CNamedNodeList::get_Item(BSTR name, Node **retval) { TRY *retval = 0; if (!name) return E_INVALIDARG; GroveString tem(name, ::SysStringLen(name)); NodePtr nd; if (nnl_->namedNode(tem, nd) != accessOK) return E_INVALIDARG; return CNodeBase::make(nd, table_, retval); CATCH } STDMETHODIMP CNamedNodeList::get_NodeList(NodeList **retval) { TRY return CNodeList::make(nnl_->nodeList(), table_, retval); CATCH } STDMETHODIMP CNamedNodeList::get__NewEnum(IUnknown **retval) { TRY return CEnumNodeList::make(nnl_->nodeListNoOrder(), table_, retval); CATCH } STDMETHODIMP CNamedNodeList::Normalize(BSTR name, BSTR *retval) { TRY *retval = 0; if (name) { size_t len = ::SysStringLen(name); BSTR tem = ::SysAllocStringLen(name, len); size_t newLen = nnl_->normalize(tem, len); if (newLen != len && !::SysReAllocStringLen(&tem, tem, newLen)) { ::SysFreeString(tem); return E_OUTOFMEMORY; } *retval = tem; } else *retval = makeEmptyBSTR(); return NOERROR; CATCH } STDMETHODIMP CNamedNodeList::NodeName(Node *nd, BSTR *retval) { TRY *retval = 0; switch (nnl_->type()) { #define CASE(T, I, P) \ case GROVE_NAMESPACE::NamedNodeList::T: \ { \ I *tem; \ if (SUCCEEDED(nd->QueryInterface(IID_##I, (void **)&tem))) { \ HRESULT hRes = tem->get_##P(retval); \ tem->Release(); \ return hRes; \ } \ return NOERROR; \ } CASE(elements,ElementNode,Id) CASE(entities,EntityNode,Name) CASE(notations,NotationNode,Name) CASE(attributes,AttributeAssignmentNode,Name) CASE(doctypesAndLinktypes,DocumentTypeNode,Name) CASE(elementTypes,ElementTypeNode,Gi) CASE(attributeDefs,AttributeDefNode,Name) } return NOERROR; CATCH } HRESULT CNamedNodeList::make(const NamedNodeListPtr &nnl, const NodeTablePtr &table, NamedNodeList **retval) { CComObject *p; HRESULT hRes = CComObject::CreateInstance(&p); if (FAILED(hRes)) return hRes; CNamedNodeList *np = p; np->nnl_ = nnl; np->table_ = table; *retval = p; (*retval)->AddRef(); return NOERROR; } HRESULT CEnumNodeList::make(const NodeListPtr &nl, const NodeTablePtr &table, IUnknown **retval) { CComObject *p; HRESULT hRes = CComObject::CreateInstance(&p); if (FAILED(hRes)) return hRes; CEnumNodeList *np = p; np->nl_ = nl; np->cur_ = nl; np->table_ = table; return p->QueryInterface(IID_IUnknown, (void **)retval); } STDMETHODIMP CEnumNodeList::Next(ULONG celt, VARIANT *rgVar, ULONG *pCeltFetched) { TRY ULONG n = 0; for (; celt > 0; celt--, rgVar++, n++) { NodePtr nd; if (cur_->first(nd) != accessOK) break; if (cur_.assignRest() != accessOK) goto error; Node *ip; if (FAILED(CNodeBase::make(nd, table_, &ip))) goto error; rgVar->vt = VT_DISPATCH; rgVar->pdispVal = ip; } if (pCeltFetched) *pCeltFetched = n; return celt ? S_FALSE : NOERROR; error: while (n > 0) { --n ; --rgVar; VariantClear(rgVar); } if (pCeltFetched) *pCeltFetched = 0; return S_FALSE; CATCH } STDMETHODIMP CEnumNodeList::Skip(ULONG celt) { TRY for (; celt > 0; celt--) { if (cur_.assignRest() != accessOK) return S_FALSE; } return NOERROR; CATCH } STDMETHODIMP CEnumNodeList::Reset() { TRY cur_ = nl_; return NOERROR; CATCH } STDMETHODIMP CEnumNodeList::Clone(IEnumVARIANT **ppEnum) { TRY CComObject *p; HRESULT hRes = CComObject::CreateInstance(&p); if (FAILED(hRes)) return hRes; CEnumNodeList *np = p; np->nl_ = nl_; np->cur_ = cur_; np->table_ = table_; *ppEnum = p; (*ppEnum)->AddRef(); return NOERROR; CATCH } HRESULT CEnumChunkNodeList::make(const NodeListPtr &nl, const NodeTablePtr &table, IUnknown **retval) { CComObject *p; HRESULT hRes = CComObject::CreateInstance(&p); if (FAILED(hRes)) return hRes; CEnumChunkNodeList *np = p; np->nl_ = nl; np->cur_ = nl; np->table_ = table; return p->QueryInterface(IID_IUnknown, (void **)retval); } STDMETHODIMP CEnumChunkNodeList::Next(ULONG celt, VARIANT *rgVar, ULONG *pCeltFetched) { TRY ULONG n = 0; for (; celt > 0; celt--, rgVar++, n++) { NodePtr nd; if (cur_->first(nd) != accessOK) break; if (cur_.assignChunkRest() != accessOK) goto error; Node *ip; if (FAILED(CNodeBase::make(nd, table_, &ip))) goto error; rgVar->vt = VT_DISPATCH; rgVar->pdispVal = ip; } if (pCeltFetched) *pCeltFetched = n; return celt ? S_FALSE : NOERROR; error: while (n > 0) { --n ; --rgVar; VariantClear(rgVar); } if (pCeltFetched) *pCeltFetched = 0; return S_FALSE; CATCH } STDMETHODIMP CEnumChunkNodeList::Skip(ULONG celt) { TRY for (; celt > 0; celt--) { if (cur_.assignChunkRest() != accessOK) return S_FALSE; } return NOERROR; CATCH } STDMETHODIMP CEnumChunkNodeList::Reset() { TRY cur_ = nl_; return NOERROR; CATCH } STDMETHODIMP CEnumChunkNodeList::Clone(IEnumVARIANT **ppEnum) { TRY CComObject *p; HRESULT hRes = CComObject::CreateInstance(&p); if (FAILED(hRes)) return hRes; CEnumChunkNodeList *np = p; np->nl_ = nl_; np->cur_ = cur_; np->table_ = table_; *ppEnum = p; (*ppEnum)->AddRef(); return NOERROR; CATCH } HRESULT CStoragePos::make(const SP_NAMESPACE::ExternalInfo *info, SP_NAMESPACE::Offset offset, const NodePtr &nd, StoragePos **retval) { *retval = 0; CComObject *p; HRESULT hRes = CComObject::CreateInstance(&p); if (FAILED(hRes)) return hRes; CStoragePos *tem = p; if (!SP_NAMESPACE::ExtendEntityManager::externalize(info, offset, tem->loc_)) { delete p; return NOERROR; } tem->nd_ = nd; *retval = p; (*retval)->AddRef(); return NOERROR; } HRESULT makeRootNode(const GROVE_NAMESPACE::NodePtr &root, SP_NAMESPACE::Owner &parser, SgmlDocumentNode **retval) { TRY NodeTablePtr table(new NodeTable(parser)); Node *tem; HRESULT hRes = CNodeBase::make(root, table, &tem); *retval = (SgmlDocumentNode *)tem; return hRes; CATCH } openjade-1.3.2/groveoa/GroveNode.h0100664000076400007640000000052106713045656015132 0ustar ianian#ifndef GroveNode_INCLUDED #define GroveNode_INCLUDED 1 #include "Owner.h" #include "Boolean.h" #include "Node.h" struct ParserThread { virtual ~ParserThread() { } }; HRESULT makeRootNode(const GROVE_NAMESPACE::NodePtr &, SP_NAMESPACE::Owner &, SgmlDocumentNode **); #endif /* not GroveNode_INCLUDED */ openjade-1.3.2/groveoa/StdAfx.cxx0100664000076400007640000000045706713045656015016 0ustar ianian// stdafx.cpp : source file that includes just the standard includes // stdafx.pch will be the pre-compiled header // stdafx.obj will contain the pre-compiled type information #include "stdafx.h" #ifdef _ATL_STATIC_REGISTRY #include #include #endif #include openjade-1.3.2/groveoa/StdAfx.h0100664000076400007640000000067306713045656014443 0ustar ianian// stdafx.h : include file for standard system include files, // or project specific include files that are used frequently, // but are changed infrequently #define STRICT // #define _WIN32_WINNT 0x0400 #define _ATL_APARTMENT_THREADED #include //You may derive a class from CComModule and use it if you want to override //something, but do not change the name of _Module extern CComModule _Module; #include openjade-1.3.2/groveoa/groveoa.cxx0100664000076400007640000000523006713045656015261 0ustar ianian// groveoa.cxx : Implementation of DLL Exports. // You will need VC 4.2 and the full 4.2b patch (http://msvc/vc42b/vc42b.htm) in // order to build this project. This patch includes the final NT 4.0 SDK. // You will also need MIDL 3.00.75, which is included with ATL 2.0. // Note: Proxy/Stub Information // To merge the proxy/stub code into the object DLL, add the file // dlldatax.c to the project. Make sure precompiled headers // are turned off for this file, and add _MERGE_PROXYSTUB to the // defines for the project. // // If you are not running MIDL with /Oicf (the default), you will need // to remove the following defines from the top of dlldatax.c. // #define _WIN32_WINNT 0x0400 // #define USE_STUBLESS_PROXY // // Modify the custom build rule for groveoa.idl by adding the following // files to the Outputs. // groveoa_p.c // dlldata.c // To build a separate proxy/stub DLL, // run nmake -f groveoaps.mk in the project directory. #include "stdafx.h" #include "resource.h" #include "groveoa.h" #include "groveoa_i.c" #include "CGroveBuilder.h" CComModule _Module; BEGIN_OBJECT_MAP(ObjectMap) OBJECT_ENTRY(CLSID_GroveBuilder, CGroveBuilder) END_OBJECT_MAP() ///////////////////////////////////////////////////////////////////////////// // DLL Entry Point extern "C" BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved) { lpReserved; if (dwReason == DLL_PROCESS_ATTACH) { _Module.Init(ObjectMap, hInstance); DisableThreadLibraryCalls(hInstance); } else if (dwReason == DLL_PROCESS_DETACH) _Module.Term(); return TRUE; // ok } ///////////////////////////////////////////////////////////////////////////// // Used to determine whether the DLL can be unloaded by OLE STDAPI DllCanUnloadNow(void) { return (_Module.GetLockCount()==0) ? S_OK : S_FALSE; } ///////////////////////////////////////////////////////////////////////////// // Returns a class factory to create an object of the requested type STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv) { return _Module.GetClassObject(rclsid, riid, ppv); } ///////////////////////////////////////////////////////////////////////////// // DllRegisterServer - Adds entries to the system registry STDAPI DllRegisterServer(void) { // registers object, typelib and all interfaces in typelib return _Module.RegisterServer(TRUE); } ///////////////////////////////////////////////////////////////////////////// // DllUnregisterServer - Removes entries from the system registry STDAPI DllUnregisterServer(void) { _Module.UnregisterServer(); #if _WIN32_WINNT >= 0x0400 UnRegisterTypeLib(LIBID_GROVE, 1, 0, LOCALE_USER_DEFAULT, SYS_WIN32); #endif return S_OK; } openjade-1.3.2/groveoa/groveoa.def0100664000076400007640000000032506713045656015215 0ustar ianian; groveoa.def : Declares the module parameters. LIBRARY "groveoa.DLL" EXPORTS DllCanUnloadNow @1 PRIVATE DllGetClassObject @2 PRIVATE DllRegisterServer @3 PRIVATE DllUnregisterServer @4 PRIVATE openjade-1.3.2/groveoa/groveoa.dsp0100664000076400007640000001236606762456145015260 0ustar ianian# Microsoft Developer Studio Project File - Name="groveoa" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 CFG=groveoa - Win32 Release !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "groveoa.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "groveoa.mak" CFG="groveoa - Win32 Release" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "groveoa - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE "groveoa - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe MTL=midl.exe RSC=rc.exe !IF "$(CFG)" == "groveoa - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir ".\Release" # PROP BASE Intermediate_Dir ".\Release" # PROP BASE Target_Dir "." # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir ".\Release" # PROP Intermediate_Dir ".\Release" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "." # ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c # ADD CPP /nologo /MD /W3 /GX /O2 /I "..\include" /I "..\grove" /I "..\spgrove" /D "_MBCS" /D "_ATL_STATIC_REGISTRY" /D "_WINDLL" /D "NDEBUG" /D "_WINDOWS" /D "WIN32" /D SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D "SP_MULTI_BYTE" /YX /FD /c # ADD BASE MTL /nologo /D "NDEBUG" /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x809 /d "NDEBUG" # ADD RSC /l 0x809 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 /out:"..\bin\ogroveoa.dll" # Begin Special Build Tool TargetPath=\users\Avi\jadetest\jade\bin\ogroveoa.dll SOURCE="$(InputPath)" PostBuild_Cmds=regsvr32 /s /c "$(TargetPath)" # End Special Build Tool !ELSEIF "$(CFG)" == "groveoa - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir ".\Debug" # PROP BASE Intermediate_Dir ".\Debug" # PROP BASE Target_Dir "." # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir ".\Debug" # PROP Intermediate_Dir ".\Debug" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "." # ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c # ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\include" /I "..\grove" /I "..\spgrove" /D "_MBCS" /D "_ATL_STATIC_REGISTRY" /D "_WINDLL" /D "_DEBUG" /D "_WINDOWS" /D "WIN32" /D SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D "SP_MULTI_BYTE" /YX /FD /c # ADD BASE MTL /nologo /D "_DEBUG" /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x809 /d "_DEBUG" # ADD RSC /l 0x809 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /out:"..\dbgbin\ogroveoa.dll" # SUBTRACT LINK32 /incremental:no !ENDIF # Begin Target # Name "groveoa - Win32 Release" # Name "groveoa - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;for;f90" # Begin Source File SOURCE=.\CGroveBuilder.cxx # ADD CPP /Yu"stdafx.h" # End Source File # Begin Source File SOURCE=.\GroveNode.cxx # ADD CPP /Yu"stdafx.h" # End Source File # Begin Source File SOURCE=.\groveoa.cxx # ADD CPP /Yu"stdafx.h" # End Source File # Begin Source File SOURCE=.\groveoa.def # End Source File # Begin Source File SOURCE=.\groveoa.idl # ADD MTL /tlb "groveoa.tlb" /h "groveoa.h" /iid "groveoa_i.c" /Oicf # SUBTRACT MTL /mktyplib203 # End Source File # Begin Source File SOURCE=.\StdAfx.cxx # ADD CPP /Yc"stdafx.h" # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd" # Begin Source File SOURCE=.\CGroveBuilder.h # End Source File # Begin Source File SOURCE=.\GroveNode.h # End Source File # Begin Source File SOURCE=.\resource.h # End Source File # Begin Source File SOURCE=.\StdAfx.h # End Source File # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe" # Begin Source File SOURCE=.\groveoa.rc # End Source File # End Group # Begin Source File SOURCE=.\GroveBuilder.rgs # End Source File # End Target # End Project openjade-1.3.2/groveoa/groveoa.idl0100664000076400007640000004101306756236453015232 0ustar ianian// groveoa.idl : IDL source for groveoa.dll // This file will be processed by the MIDL tool to // produce the type library (groveoa.tlb) and marshalling code. import "oaidl.idl"; interface Node; interface NodeList; interface NamedNodeList; interface StringList; interface ElementNode; interface AttributeAssignmentNode; interface AttributeValueTokenNode; interface DataCharNode; interface SgmlDocumentNode; interface SgmlConstantsNode; interface PiNode; interface SdataNode; interface DocumentTypeNode; interface EntityNode; interface NotationNode; interface ExternalIdNode; interface ExternalDataNode; interface SubdocNode; interface MessageNode; interface StoragePos; interface ElementTypeNode; interface AttributeDefNode; interface ModelGroupNode; interface ElementTokenNode; interface PcdataTokenNode; interface DefaultEntityNode; enum NodeClass { nodeClassElement, nodeClassAttributeAssignment, nodeClassAttributeValueToken, nodeClassDataChar, nodeClassSgmlDocument, nodeClassSgmlConstants, nodeClassPi, nodeClassSdata, nodeClassDocumentType, nodeClassEntity, nodeClassNotation, nodeClassExternalId, nodeClassExternalData, nodeClassSubdoc, nodeClassMessage, nodeClassElementType, nodeClassAttributeDef, nodeClassElementToken, nodeClassPcdataToken, nodeClassDefaultEntity, nodeClassModelGroup }; enum EntityType { entityTypeText, entityTypeCdata, entityTypeSdata, entityTypeNdata, entityTypeSubdocument, entityTypePi }; enum ContentType { contentTypeCdata, contentTypeRcdata, contentTypeEmpty, contentTypeAny, contentTypeModelGroup }; enum DeclValueType { declValueTypeCdata, declValueTypeEntity, declValueTypeEntities, declValueTypeId, declValueTypeIdref, declValueTypeIdrefs, declValueTypeName, declValueTypeNames, declValueTypeNmtoken, declValueTypeNmtokens, declValueTypeNumber, declValueTypeNumbers, declValueTypeNutoken, declValueTypeNutokens, declValueTypeNotation, declValueTypeNmtkgrp }; enum DefaultValueType { defaultValueTypeValue, defaultValueTypeFixed, defaultValueTypeRequired, defaultValueTypeCurrent, defaultValueTypeConref, defaultValueTypeImplied }; enum Connector { connectorAnd, connectorOr, connectorSeq }; enum OccurIndicator { occurIndicatorOpt, occurIndicatorPlus, occurIndicatorRep }; enum Severity { severityInfo, severityWarning, severityError }; [ object, uuid(B3BE8C20-BA4A-11d0-9083-0020AF41CFC2), dual, pointer_default(unique) ] interface Node : IDispatch { [propget] HRESULT Parent([out, retval] Node **); [propget] HRESULT Origin([out, retval] Node **); /* Using SgmlDocumentNode as the return type doesn't work. */ [propget] HRESULT GroveRoot([out, retval] Node **); [propget] HRESULT TreeRoot([out, retval] Node **); [propget] HRESULT Children([out, retval] NodeList **); [propget] HRESULT ChunkChildren([out, retval] NodeList **); [propget] HRESULT Class([out, retval] enum NodeClass *); [propget] HRESULT StoragePos([out, retval] StoragePos **); [propget] HRESULT SiblingIndex([out, retval] long *); HRESULT FirstChild([out, retval] Node **); HRESULT NextSibling([out, retval] Node **); HRESULT NextChunkSibling([out, retval] Node **); } [ object, uuid(D8334201-9FD6-11d0-9083-0020AF41CFC2), dual, pointer_default(unique) ] interface SgmlDocumentNode : Node { [propget] HRESULT DocumentElement([out, retval] ElementNode **); [propget] HRESULT SgmlConstants([out, retval] SgmlConstantsNode **); [propget] HRESULT ApplicationInfo([out, retval] BSTR *); [propget] HRESULT ApplicationInfoNull([out, retval] VARIANT_BOOL *); [propget] HRESULT Prolog([out, retval] NodeList **); [propget] HRESULT Epilog([out, retval] NodeList **); [propget] HRESULT Elements([out, retval] NamedNodeList **); [propget] HRESULT Entities([out, retval] NamedNodeList **); [propget] HRESULT DefaultedEntities([out, retval] NamedNodeList **); [propget] HRESULT GoverningDoctype([out, retval] DocumentTypeNode **); [propget] HRESULT DoctypesAndLinktypes([out, retval] NamedNodeList **); [propget] HRESULT Messages([out, retval] NodeList **); } [ object, uuid(D8334202-9FD6-11d0-9083-0020AF41CFC2), dual, pointer_default(unique) ] interface ElementNode : Node { [propget] HRESULT Gi([out, retval] BSTR *); [propget] HRESULT Attributes([out, retval] NamedNodeList **); [propget] HRESULT Id([out, retval] BSTR *); [propget] HRESULT Content([out, retval] NodeList **); [propget] HRESULT ChunkContent([out, retval] NodeList **); [propget] HRESULT Included([out, retval] VARIANT_BOOL *); [propget] HRESULT MustOmitEndTag([out, retval] VARIANT_BOOL *); [propget] HRESULT ElementType([out, retval] ElementTypeNode **); } [ object, uuid(D8334203-9FD6-11d0-9083-0020AF41CFC2), dual, pointer_default(unique) ] interface DataCharNode : Node { [propget] HRESULT Char([out, retval] long *); [propget] HRESULT NonSgml([out, retval] long *); [propget] HRESULT CharChunk([out, retval] BSTR *); } [ object, uuid(D8334204-9FD6-11d0-9083-0020AF41CFC2), dual, pointer_default(unique) ] interface AttributeAssignmentNode : Node { [propget] HRESULT Name([out, retval] BSTR *); [propget] HRESULT Implied([out, retval] VARIANT_BOOL *); [propget] HRESULT Value([out, retval] NodeList **); [propget] HRESULT ChunkValue([out, retval] NodeList **); [propget] HRESULT TokenSep([out, retval] long *); [propget, id(DISPID_VALUE)] HRESULT StringValue([out, retval] BSTR *); [propget] HRESULT AttributeDef([out, retval] AttributeDefNode **); } [ object, uuid(D8334205-9FD6-11d0-9083-0020AF41CFC2), dual, pointer_default(unique) ] interface AttributeValueTokenNode : Node { [propget, id(DISPID_VALUE)] HRESULT Token([out, retval] BSTR *); [propget] HRESULT Referent([out, retval] ElementNode **); [propget] HRESULT Entity([out, retval] EntityNode **); [propget] HRESULT Notation([out, retval] NotationNode **); } [ object, uuid(D8334206-9FD6-11d0-9083-0020AF41CFC2), dual, pointer_default(unique) ] interface SgmlConstantsNode : Node { } [ object, uuid(D8334207-9FD6-11d0-9083-0020AF41CFC2), dual, pointer_default(unique) ] interface PiNode : Node { [propget] HRESULT SystemData([out, retval] BSTR *); [propget] HRESULT Entity([out, retval] EntityNode **); [propget] HRESULT EntityName([out, retval] BSTR *); } [ object, uuid(D8334208-9FD6-11d0-9083-0020AF41CFC2), dual, pointer_default(unique) ] interface SdataNode : Node { [propget] HRESULT SystemData([out, retval] BSTR *); [propget] HRESULT Entity([out, retval] EntityNode **); [propget] HRESULT EntityName([out, retval] BSTR *); } [ object, uuid(D8334209-9FD6-11d0-9083-0020AF41CFC2), dual, pointer_default(unique) ] interface DocumentTypeNode : Node { [propget] HRESULT Name([out, retval] BSTR *); [propget] HRESULT Governing([out, retval] VARIANT_BOOL *); [propget] HRESULT GeneralEntities([out, retval] NamedNodeList **); [propget] HRESULT Notations([out, retval] NamedNodeList **); [propget] HRESULT ElementTypes([out, retval] NamedNodeList **); [propget] HRESULT ParameterEntities([out, retval] NamedNodeList **); [propget] HRESULT DefaultEntity([out, retval] DefaultEntityNode **); } [ object, uuid(D833420A-9FD6-11d0-9083-0020AF41CFC2), dual, pointer_default(unique) ] interface EntityNode : Node { [propget] HRESULT Name([out, retval] BSTR *); [propget] HRESULT Text([out, retval] BSTR *); [propget] HRESULT TextNull([out, retval] VARIANT_BOOL *); [propget] HRESULT Notation([out, retval] NotationNode **); [propget] HRESULT NotationName([out, retval] BSTR *); [propget] HRESULT EntityType([out, retval] enum EntityType *); [propget] HRESULT Defaulted([out, retval] VARIANT_BOOL *); [propget] HRESULT Attributes([out, retval] NamedNodeList **); [propget] HRESULT ExternalId([out, retval] ExternalIdNode **); } [ object, uuid(D833420B-9FD6-11d0-9083-0020AF41CFC2), dual, pointer_default(unique) ] interface NotationNode : Node { [propget] HRESULT Name([out, retval] BSTR *); [propget] HRESULT ExternalId([out, retval] ExternalIdNode **); [propget] HRESULT AttributeDefs([out, retval] NamedNodeList **); } [ object, uuid(D833420C-9FD6-11d0-9083-0020AF41CFC2), dual, pointer_default(unique) ] interface ExternalIdNode : Node { [propget] HRESULT PublicId([out, retval] BSTR *); [propget] HRESULT PublicIdNull([out, retval] VARIANT_BOOL *); [propget] HRESULT SystemId([out, retval] BSTR *); [propget] HRESULT SystemIdNull([out, retval] VARIANT_BOOL *); [propget] HRESULT GeneratedSystemId([out, retval] BSTR *); } [ object, uuid(D833420D-9FD6-11d0-9083-0020AF41CFC2), dual, pointer_default(unique) ] interface ExternalDataNode : Node { [propget] HRESULT Entity([out, retval] EntityNode **); [propget] HRESULT EntityName([out, retval] BSTR *); } [ object, uuid(D833420E-9FD6-11d0-9083-0020AF41CFC2), dual, pointer_default(unique) ] interface SubdocNode : Node { [propget] HRESULT Entity([out, retval] EntityNode **); [propget] HRESULT EntityName([out, retval] BSTR *); } [ object, uuid(D833420F-9FD6-11d0-9083-0020AF41CFC2), dual, pointer_default(unique) ] interface ElementTypeNode : Node { [propget] HRESULT Gi([out, retval] BSTR *); [propget] HRESULT AttributeDefs([out, retval] NamedNodeList **); [propget] HRESULT ContentType([out, retval] enum ContentType *); [propget] HRESULT Exclusions([out, retval] StringList **); [propget] HRESULT Inclusions([out, retval] StringList **); [propget] HRESULT ModelGroup([out, retval] ModelGroupNode **); [propget] HRESULT OmitEndTag([out, retval] VARIANT_BOOL *); [propget] HRESULT OmitStartTag([out, retval] VARIANT_BOOL *); } [ object, uuid(D8334210-9FD6-11d0-9083-0020AF41CFC2), dual, pointer_default(unique) ] interface AttributeDefNode : Node { [propget] HRESULT Name([out, retval] BSTR *); [propget] HRESULT DeclValueType([out, retval] enum DeclValueType *); [propget] HRESULT DefaultValueType([out, retval] enum DefaultValueType *); [propget] HRESULT Tokens([out, retval] StringList **); [propget] HRESULT CurrentAttributeIndex([out, retval] long *); [propget] HRESULT CurrentGroup([out, retval] NodeList **); [propget] HRESULT DefaultValue([out, retval] NodeList **); } [ object, uuid(D8334211-9FD6-11d0-9083-0020AF41CFC2), dual, pointer_default(unique) ] interface ModelGroupNode : Node { [propget] HRESULT Connector([out, retval] enum Connector *); [propget] HRESULT OccurIndicator([out, retval] enum OccurIndicator *); [propget] HRESULT ContentTokens([out, retval] NodeList **); } [ object, uuid(D8334212-9FD6-11d0-9083-0020AF41CFC2), dual, pointer_default(unique) ] interface ElementTokenNode : Node { [propget] HRESULT Gi([out, retval] BSTR *); [propget] HRESULT OccurIndicator([out, retval] enum OccurIndicator *); } [ object, uuid(D8334213-9FD6-11d0-9083-0020AF41CFC2), dual, pointer_default(unique) ] interface PcdataTokenNode : Node { } [ object, uuid(D8334214-9FD6-11d0-9083-0020AF41CFC2), dual, pointer_default(unique) ] interface DefaultEntityNode : Node { [propget] HRESULT Name([out, retval] BSTR *); [propget] HRESULT Text([out, retval] BSTR *); [propget] HRESULT TextNull([out, retval] VARIANT_BOOL *); [propget] HRESULT Notation([out, retval] NotationNode **); [propget] HRESULT NotationName([out, retval] BSTR *); [propget] HRESULT EntityType([out, retval] enum EntityType *); [propget] HRESULT Attributes([out, retval] NamedNodeList **); [propget] HRESULT ExternalId([out, retval] ExternalIdNode **); } [ object, uuid(8E5A3821-A213-11d0-9083-0020AF41CFC2), dual, pointer_default(unique) ] interface MessageNode : Node { [propget] HRESULT Text([out, retval] BSTR *); [propget] HRESULT Severity([out, retval] enum Severity *); } [ object, uuid(BA7A21C0-9FA9-11d0-9083-0020AF41CFC2), dual, pointer_default(unique) ] interface NamedNodeList : IDispatch { [propget, helpstring("Returns number of nodes.")] HRESULT Count([out, retval] long *retval); [propget, id(DISPID_VALUE), helpstring("Given a name, return the node.")] /* if you use "name" for the parameter name, MIDL outputs a TLB file that uses "name" instead of "Name" for "Name" properties */ HRESULT Item([in] BSTR nodeName, [out, retval] Node **retval); [propget, restricted, id(DISPID_NEWENUM)] HRESULT _NewEnum([out, retval] IUnknown **retval); [propget] HRESULT NodeList([out, retval] NodeList **retval); HRESULT Normalize([in] BSTR nodeName, [out, retval] BSTR *); HRESULT NodeName([in] Node *, [out, retval] BSTR *); } [ object, uuid(BA7A21C1-9FA9-11d0-9083-0020AF41CFC2), dual ] interface NodeList : IDispatch { HRESULT First([out, retval] Node **); HRESULT Rest([out, retval] NodeList **); [propget, helpstring("Returns number of nodes.")] HRESULT Count([out, retval] long *retval); [propget, id(DISPID_VALUE), helpstring("Given an index, return the node. First node has index 1.")] HRESULT Item([in] long index, [out, retval] Node **retval); [propget, restricted, id(DISPID_NEWENUM)] HRESULT _NewEnum([out, retval] IUnknown **retval); } [ object, uuid(BA7A21C2-9FA9-11d0-9083-0020AF41CFC2), dual ] interface StringList : IDispatch { HRESULT First([out, retval] BSTR *); HRESULT Rest([out, retval] StringList **); [propget, helpstring("Returns number of strings.")] HRESULT Count([out, retval] long *retval); [propget, id(DISPID_VALUE), helpstring("Given an index, return the string. First string has index 1.")] HRESULT Item([in] long index, [out, retval] BSTR *retval); } [ object, uuid(18E670A0-AE01-11D0-9083-0020AF41CFC2), dual, pointer_default(unique) ] interface StoragePos : IDispatch { [propget] HRESULT StorageManagerName([out, retval] BSTR *); [propget] HRESULT StorageObjectId([out, retval] BSTR *); [propget] HRESULT LineNumber([out, retval] long *); [propget] HRESULT ColumnNumber([out, retval] long *); [propget] HRESULT ByteIndex([out, retval] long *); [propget] HRESULT CharacterIndex([out, retval] long *); } enum ErrorType { errorIdref, errorSignificant, errorAfdr, errorLpdNotation, errorValid }; enum WarningType { warningSgmlDecl, warningDuplicateEntity, warningShould, warningUndefinedElement, warningDefaultEntityReference, warningMixedContent, warningUnclosedTag, warningNet, warningEmptyTag, warningUnusedMap, warningUnusedParam, warningNotationSystemId }; [ object, uuid(557CE381-9EBD-11D0-9083-0020AF41CFC2), dual, hidden, pointer_default(unique) ] interface _GroveBuilder : IDispatch { [propget] HRESULT ExtraCatalogs([out, retval] BSTR *); [propput] HRESULT ExtraCatalogs([in] BSTR catalogs); [propget] HRESULT DefaultCatalogs([out, retval] BSTR *); [propput] HRESULT DefaultCatalogs([in] BSTR catalogs); [propget] HRESULT ExtraDirectories([out, retval] BSTR *); [propput] HRESULT ExtraDirectories([in] BSTR dirs); [propget] HRESULT DefaultDirectories([out, retval] BSTR *); [propput] HRESULT DefaultDirectories([in] BSTR dirs); [propget] HRESULT Encoding([out, retval] BSTR *); [propput] HRESULT Encoding([in] BSTR name); [propget] HRESULT DefaultEncoding([out, retval] BSTR *); [propput] HRESULT DefaultEncoding([in] BSTR name); [propget] HRESULT Includes([out, retval] BSTR *); [propput] HRESULT Includes([in] BSTR entityNames); [propget] HRESULT Warning([in] enum WarningType type, [out, retval] VARIANT_BOOL *); [propput] HRESULT Warning([in] enum WarningType type, [in] VARIANT_BOOL); [propget] HRESULT Error([in] enum ErrorType type, [out, retval] VARIANT_BOOL *); [propput] HRESULT Error([in] enum ErrorType type, [in] VARIANT_BOOL); [propget] HRESULT ValidateOnly([out, retval] VARIANT_BOOL *); [propput] HRESULT ValidateOnly([in] VARIANT_BOOL); HRESULT parse([in] BSTR systemId, [out, retval] SgmlDocumentNode **); HRESULT archParse([in] BSTR systemId, [in] BSTR archNames, [out, retval] SgmlDocumentNode **); } [ uuid(8E1C3D40-9EBC-11D0-9083-0020AF41CFC2), version(1.0), helpstring("SP Grove 1.0 Type Library") ] library GROVE { importlib("stdole32.tlb"); importlib("stdole2.tlb"); interface Node; interface NodeList; interface NamedNodeList; interface StringList; interface ElementNode; interface AttributeAssignmentNode; interface AttributeValueTokenNode; interface DataCharNode; interface SgmlDocumentNode; interface SgmlConstantsNode; interface PiNode; interface SdataNode; interface DocumentTypeNode; interface EntityNode; interface NotationNode; interface ExternalIdNode; interface ExternalDataNode; interface SubdocNode; interface MessageNode; interface StoragePos; interface ElementTypeNode; interface AttributeDefNode; interface ModelGroupNode; interface ElementTokenNode; interface PcdataTokenNode; interface DefaultEntityNode; [ uuid(557CE382-9EBD-11D0-9083-0020AF41CFC2) ] coclass GroveBuilder { [default] interface _GroveBuilder; } } openjade-1.3.2/groveoa/groveoa.rc0100664000076400007640000000604206713045656015065 0ustar ianian//Microsoft Developer Studio generated resource script. // #include "resource.h" #define APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 2 resource. // #include "winres.h" ///////////////////////////////////////////////////////////////////////////// #undef APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // English (U.S.) resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) #ifdef _WIN32 LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US #pragma code_page(1252) #endif //_WIN32 #ifdef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // TEXTINCLUDE // 1 TEXTINCLUDE DISCARDABLE BEGIN "resource.h\0" END 2 TEXTINCLUDE DISCARDABLE BEGIN "#include ""winres.h""\r\n" "\0" END 3 TEXTINCLUDE DISCARDABLE BEGIN "1 TYPELIB ""groveoa.tlb""\r\n" "\0" END #endif // APSTUDIO_INVOKED #ifndef _MAC ///////////////////////////////////////////////////////////////////////////// // // Version // VS_VERSION_INFO VERSIONINFO FILEVERSION 1,0,0,1 PRODUCTVERSION 1,0,0,1 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L #else FILEFLAGS 0x0L #endif FILEOS 0x4L FILETYPE 0x2L FILESUBTYPE 0x0L BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040904B0" BEGIN VALUE "CompanyName", "\0" VALUE "FileDescription", "groveoa Module\0" VALUE "FileVersion", "1, 0, 0, 1\0" VALUE "InternalName", "GROVEOA\0" VALUE "LegalCopyright", "Copyright © 1995\0" VALUE "OriginalFilename", "GROVEOA.DLL\0" VALUE "ProductName", "groveoa Module\0" VALUE "ProductVersion", "1, 0, 0, 1\0" VALUE "OLESelfRegister", "\0" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x409, 1200 END END #endif // !_MAC ///////////////////////////////////////////////////////////////////////////// // // String Table // STRINGTABLE DISCARDABLE BEGIN IDS_PROJNAME "Groveoa" END #endif // English (U.S.) resources ///////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////// // English (U.K.) resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENG) #ifdef _WIN32 LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_UK #pragma code_page(1252) #endif //_WIN32 ///////////////////////////////////////////////////////////////////////////// // // REGISTRY // IDR_GROVEBUILDER REGISTRY DISCARDABLE "GroveBuilder.rgs" #endif // English (U.K.) resources ///////////////////////////////////////////////////////////////////////////// #ifndef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 3 resource. // 1 TYPELIB "groveoa.tlb" ///////////////////////////////////////////////////////////////////////////// #endif // not APSTUDIO_INVOKED openjade-1.3.2/groveoa/resource.h0100664000076400007640000000074306713045656015077 0ustar ianian//{{NO_DEPENDENCIES}} // Microsoft Developer Studio generated include file. // Used by groveoa.rc // #define IDS_PROJNAME 100 #define IDR_GROVEBUILDER 101 // Next default values for new objects // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 201 #define _APS_NEXT_COMMAND_VALUE 32768 #define _APS_NEXT_CONTROL_VALUE 201 #define _APS_NEXT_SYMED_VALUE 102 #endif #endif openjade-1.3.2/include/0040775000076400007640000000000007572430617013056 5ustar ianianopenjade-1.3.2/include/config.h.in0100664000076400007640000001757007565503750015111 0ustar ianian// Copyright (c) 1994, 1995, 1996 James Clark // See the file COPYING for copying permission. #ifndef config_INCLUDED #define config_INCLUDED 1 // This is a nasty hack to make sure that we have // the same sort of setup as was used for // building libosp #include "@SPINCLUDEDIR@/config.h" #ifdef SP_NAMESPACE #ifndef GROVE_NAMESPACE #define GROVE_NAMESPACE OpenJade_Grove #endif #ifndef DSSSL_NAMESPACE #define DSSSL_NAMESPACE OpenJade_DSSSL #endif #endif #define OPENJADE_PACKAGE PACKAGE #define OPENJADE_VERSION VERSION #ifndef OPENJADE_MESSAGE_DOMAIN #define OPENJADE_MESSAGE_DOMAIN "" #endif #ifndef OPENJADE_LOCALE_DIR #define OPENJADE_LOCALE_DIR "" #endif #define SP_INCLUDE_UNISTD_H #define SP_POSIX_FILENAMES #ifdef __GNUG__ // It's not missing, but it pulls in libg++ #define SP_NEW_H_MISSING // set_new_handler() has to be declared extern "C" #define SP_SET_NEW_HANDLER_EXTERN_C #ifdef __APPLE__ #define SP_DEFINE_TEMPLATES #undef SP_MANUAL_INST #endif #ifndef SP_ANSI_CLASS_INST #define SP_ANSI_CLASS_INST #endif #ifndef SP_HAVE_BOOL #define SP_HAVE_BOOL #endif #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7) #define SP_ANSI_FOR_SCOPE #endif #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 8) #ifndef SP_ANSI_LIB #define SP_ANSI_LIB #endif #define SP_NO_STD_NAMESPACE #undef SP_NEW_H_MISSING #endif #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 9) #undef SP_NO_STD_NAMESPACE #endif #endif /* __GNUG__ */ #if defined(sun) || defined(__sun) // struct stat has st_blksize member #define SP_STAT_BLKSIZE #endif #if (defined __MACH__) && (! defined __GNU__) && (! defined __APPLE__) #define SP_MUTEX_MACH #endif // MacOS X uses pthreads #if (defined __MACH__) && (defined __APPLE__) #define SP_USE_PTHREADS #endif #ifdef __EMX__ // EMX 0.9a for OS/2 #undef SP_POSIX_FILENAMES #define SP_MSDOS_FILENAMES #endif #ifdef _MSC_VER // Microsoft Visual C++ 4.0 #undef SP_INCLUDE_UNISTD_H #define SP_INCLUDE_IO_H #ifndef SP_ANSI_CLASS_INST #define SP_ANSI_CLASS_INST #endif #undef SP_POSIX_FILENAMES #define SP_MSDOS_FILENAMES #define SP_SHORT_HEADERS #pragma warning ( disable : 4660 ) // already instantiated #pragma warning ( disable : 4661 ) // missing def for decl member #pragma warning ( disable : 4786 ) // debug symbol truncated (>255 chars) #pragma warning ( disable : 4018 ) // signed/unsigned mismatch #pragma warning ( disable : 4251 ) // __declspec(dllexport) #pragma warning ( disable : 4275 ) #pragma warning ( disable : 4237 ) // future reserved keyword #define huge verybig #if _MSC_VER == 900 #define SP_DECLARE_PLACEMENT_OPERATOR_NEW #endif #define set_new_handler _set_new_handler // Function passed to set_new_handler() returns int and takes size_t argument. #define SP_FANCY_NEW_HANDLER #if _MSC_VER >= 1100 // Visual C++ 5.0 #define SP_HAVE_BOOL #define SP_SIZEOF_BOOL_1 #pragma warning ( disable : 4800 ) // forcing value to bool 'true' or // 'false' (performance warning) #endif #if _MSC_VER >= 1200 // Visual C++ 6.0 #define SP_HAVE_PLACEMENT_OPERATOR_DELETE #define SP_HAVE_TYPENAME #endif #define SP_HAVE_SETMODE #define SP_DLLEXPORT __declspec(dllexport) #define SP_DLLIMPORT __declspec(dllimport) #ifdef _DLL #define SP_USE_DLL #endif #ifdef SP_USE_DLL #ifndef BUILD_LIBSP // It's not possible to export templates using __declspec(dllexport), // so instead we include the template definitions in the headers, // which allows Visual C++ to instantiate any needed templates // in the client. #define SP_DEFINE_TEMPLATES #endif #endif /* SP_USE_DLL */ #ifndef SP_MANUAL_INST #ifndef SP_DEFINE_TEMPLATES #define SP_MANUAL_INST #endif #endif /* not SP_MANUAL_INST */ #ifdef SP_MULTI_BYTE #define SP_WIDE_SYSTEM #endif // wchar_t's base type is an unsigned short #define SP_WCHAR_T_USHORT // Enable precompiled header support. #define SP_PCH // Don't compile in message text. #define SP_NO_MESSAGE_TEXT #ifdef _MT // Use Win32 critical section facilities #define SP_MUTEX_WIN32 // Use the new Standard C++ library #ifndef SP_ANSI_LIB #define SP_ANSI_LIB #endif #if _MSC_VER < 1100 // Versions prior to 5.0 don't use the std namespace #define SP_NO_STD_NAMESPACE #endif #endif /* _MT */ #endif /* _MSC_VER */ #ifdef __WATCOMC__ // Watcom C++ 10.0a #define SP_MANUAL_INST #undef SP_POSIX_FILENAMES #define SP_MSDOS_FILENAMES #undef SP_INCLUDE_UNISTD_H #define SP_INCLUDE_IO_H #pragma warning 004 9 #undef huge // Cannot handle T::~T in template. #define SP_QUAL_TEMPLATE_DTOR_BROKEN #define SP_HAVE_SETMODE #define _setmode setmode #if __WATCOMC__ < 1050 #define _O_BINARY O_BINARY #endif #define SP_WCHAR_T_USHORT #if __WATCOMC__ >= 1100 #define SP_HAVE_BOOL // #define SP_SIZEOF_BOOL_1 #endif #endif /* __WATCOMC__ */ #ifdef __BORLANDC__ // Borland C++ 5.0 #define SP_ANSI_FOR_SCOPE #define SP_HAVE_RTTI #define SP_HAVE_SETMODE #undef SP_INCLUDE_UNISTD_H #define SP_INCLUDE_IO_H #undef SP_POSIX_FILENAMES #define SP_MSDOS_FILENAMES #define SP_HAVE_BOOL #define SP_SHORT_HEADERS #define _O_BINARY O_BINARY #define _setmode setmode #define SP_ANSI_CLASS_INST #define SP_MANUAL_INST // Building as a DLL doesn't work with Borland C++ yet. #define SP_DLLEXPORT __declspec(dllexport) #define SP_DLLIMPORT __declspec(dllimport) #ifdef SP_USE_DLL #ifndef BUILD_LIBSP #define SP_DEFINE_TEMPLATES #endif #endif /* SP_USE_DLL */ #define SP_WCHAR_T_USHORT #endif /* __BORLANDC__ */ #ifdef __IBMCPP__ // IBM CSet++ 2.1 from Horst Szillat . #undef SP_POSIX_FILENAMES #define SP_MANUAL_INST #define SP_SHORT_HEADERS #define SP_MSDOS_FILENAMES #undef SP_INCLUDE_UNISTD_H #define SP_INCLUDE_IO_H #define S_IFMT (S_IFDIR|S_IFCHR|S_IFREG) #endif #ifdef __xlC__ // IBM CSet++ 3.1 on AIX 4.1. // Use CXX=xlC and CC=xlC in the Makefile. // Note that -g creates massive executables and that -O // takes ages to compile and creates core dumping executables! // I havn't tried the socket stuff. // #define SP_MANUAL_INST #define SP_HAVE_LOCALE #define SP_STAT_BLKSIZE #endif /* __xlC__ */ #ifdef macintosh // Apple MacOS. Tested only with Metrowerks CW10. // From Ashley Colin Yakeley #undef SP_POSIX_FILENAMES #define SP_MAC_FILENAMES #define SP_LINE_TERM1 '\r' #ifdef __MWERKS__ // Metrowerks for some platform (MacOS in this case) #pragma mpwc_newline off #define SP_DEFINE_TEMPLATES // #define SP_USE_DLL -- __declspec doesn't work with classes (yet) #ifdef SP_USE_DLL #define SP_DLLEXPORT __declspec(export) #define SP_DLLIMPORT __declspec(import) #endif // SP_USE_DLL #if __MWERKS__ >= 0x1000 // bool option only defined for CW10 and later (note __MWERKS__ is BCD) #if __option(bool) #define SP_HAVE_BOOL #endif // __option(bool) #endif // __MWERKS__ >= 0x1000 #endif // __MWERKS__ #if ('\n' != 10) || ('\r' != 13) #error "newlines incorrect" #endif #endif /* macintosh */ #ifdef SP_HAVE_SETMODE #ifndef SP_LINE_TERM1 #define SP_LINE_TERM1 '\r' #define SP_LINE_TERM2 '\n' #endif #endif /* not SP_HAVE_SETMODE */ #ifndef SP_LINE_TERM1 #define SP_LINE_TERM1 '\n' #endif #ifndef SP_ANSI_FOR_SCOPE // This simulates the new ANSI "for" scope rules #define for if (0); else for #endif #ifndef SP_HAVE_TYPENAME #define typename /* as nothing */ #endif #ifndef SP_DLLEXPORT #define SP_DLLEXPORT /* as nothing */ #endif #ifndef SP_DLLIMPORT #define SP_DLLIMPORT /* as nothing */ #endif #ifdef SP_USE_DLL #ifdef BUILD_LIBSP #define SP_API SP_DLLEXPORT #else #define SP_API SP_DLLIMPORT #endif #else /* not SP_USE_DLL */ #define SP_API /* as nothing */ #endif /* not SP_USE_DLL */ // SP_WIDE_SYSTEM says that your OS provides wide character interfaces // SP_WIDE_SYSTEM currently works only with Visual C++ and Windows NT/95 // SP_WIDE_SYSTEM implies SP_MULTI_BYTE #ifdef SP_WIDE_SYSTEM #ifndef SP_MULTI_BYTE #define SP_MULTI_BYTE #endif #endif #ifdef SP_NAMESPACE #define SP_NAMESPACE_SCOPE SP_NAMESPACE:: #else #define SP_NAMESPACE_SCOPE #endif #ifndef DEFAULT_SCHEME_BUILTINS #define DEFAULT_SCHEME_BUILTINS "builtins.dsl" #endif #endif /* not config_INCLUDED */ openjade-1.3.2/include/dsssl_ns.h0100664000076400007640000000155407554622155015061 0ustar ianian// Copyright (c) 1996 James Clark // See the file copying.txt for copying permission. #ifndef dsssl_ns_INCLUDED #define dsssl_ns_INCLUDED 1 #ifdef DSSSL_NAMESPACE #ifdef SP_NAMESPACE namespace SP_NAMESPACE { } #endif #ifdef GROVE_NAMESPACE namespace GROVE_NAMESPACE { } #endif namespace DSSSL_NAMESPACE { #ifdef SP_NAMESPACE using namespace SP_NAMESPACE; #endif #ifdef GROVE_NAMESPACE using namespace GROVE_NAMESPACE; #endif #if _MSC_VER >= 1100 /* This works around a bug with using directives in Visual C++ 6.0. I don't know if it also works in 5.0 */ const int work_around_bug_in_visual_c_6 = 0; } namespace DSSSL_NAMESPACE { #ifdef SP_NAMESPACE using namespace SP_NAMESPACE; #endif #ifdef GROVE_NAMESPACE using namespace GROVE_NAMESPACE; #endif #endif /* _MSC_VER >= 1100 */ } #endif /* DSSSL_NAMESPACE */ #endif /* not dsssl_ns_INCLUDED */ openjade-1.3.2/jade/0040775000076400007640000000000007572430623012333 5ustar ianianopenjade-1.3.2/jade/HtmlFOTBuilder.cxx0100664000076400007640000007744006713071573015655 0ustar ianian// Copyright (c) 1996, 1997 James Clark // See the file copying.txt for copying permission. #include "config.h" #ifdef JADE_HTML #include "HtmlFOTBuilder.h" #include "FOTBuilder.h" #include "Link.h" #include "IList.h" #include "IListIter.h" #include "OutputCharStream.h" #include "Ptr.h" #include "Resource.h" #include "macros.h" #include "HtmlMessages.h" #include "MessageArg.h" #include "ErrnoMessageArg.h" #include "StringResource.h" #include "OwnerTable.h" #include "Hash.h" #include "OutputByteStream.h" #include #include #include #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif class DiscardOutputCharStream : public OutputCharStream { public: DiscardOutputCharStream() { } void flush() { } void flushBuf(Char) { } }; const char RE = '\r'; class HtmlFOTBuilder : public SerialFOTBuilder { public: class OutputState; struct CharProps { CharProps(); static unsigned long hash(const CharProps &) { return 17; } bool operator==(const CharProps &cp) const { return (fontWeight == cp.fontWeight && fontStyle == cp.fontStyle && fontSize == cp.fontSize && fontFamily == cp.fontFamily && color == cp.color); } bool operator!=(const CharProps &cp) const { return !(*this == cp); } char fontWeight; enum { styleNormal, styleItalic, styleOblique }; char fontStyle; unsigned color; Length fontSize; StringC fontFamily; }; struct InheritParaProps { InheritParaProps(); enum { alignLeft, alignCenter, alignRight, alignJustify }; Length leftMargin; Length rightMargin; Length lineHeight; Length textIndent; char align; }; struct ParaProps : public InheritParaProps { ParaProps(const InheritParaProps &props) : InheritParaProps(props), topMargin(0) { } static unsigned long hash(const ParaProps &) { return 17; } bool operator==(const ParaProps &pp) const { return (leftMargin == pp.leftMargin && rightMargin == pp.rightMargin && lineHeight == pp.lineHeight && textIndent == pp.textIndent && topMargin == pp.topMargin && align == pp.align); } bool operator!=(const ParaProps &pp) const { return !(*this == pp); } Length topMargin; }; struct ClassPrefix { ClassPrefix(const StringC &s) : prefix(s), nCharClasses(0), nParaClasses(0) { } StringC prefix; unsigned nCharClasses; unsigned nParaClasses; static const StringC &key(const ClassPrefix &cp) { return cp.prefix; } }; struct StyleClass : public Link { StyleClass(const StringC &, ClassPrefix *); void outputName(OutputCharStream &) const; StringC gi; const ClassPrefix *prefix; unsigned prefixIndex; }; struct CharStyle; struct CharStyleClass : public StyleClass { CharStyleClass(const StringC &, ClassPrefix *, const CharStyle *); const CharStyle *style; }; struct CharStyle : public CharProps { CharStyle(const CharProps &cp) : CharProps(cp) { } void output(OutputCharStream &) const; static const CharProps &key(const CharStyle &style) { return style; } IList classes; }; struct ParaStyle; struct ParaStyleClass : public StyleClass { ParaStyleClass(const StringC &, ClassPrefix *, const ParaStyle *); const ParaStyle *style; }; struct ParaStyle : public ParaProps { ParaStyle(const ParaProps &pp) : ParaProps(pp) { } void output(OutputCharStream &) const; static const ParaProps &key(const ParaStyle &style) { return style; } IList classes; }; struct FlowObjectInfo : public CharProps, public InheritParaProps { FlowObjectInfo(); unsigned docIndex; ConstPtr > scrollTitle; Length parentLeftMargin; Length parentRightMargin; }; // An address that has been referenced. class AddressRef { public: virtual void outputRef(bool end, OutputCharStream &, OutputState &) const = 0; virtual ~AddressRef(); }; class OutputState { public: OutputState(const String *outputFilename, const StringC &styleSheetFilename, CmdLineApp *app) : outputFilename_(outputFilename), styleSheetFilename_(styleSheetFilename), app_(app), curAref_(0), specAref_(0), curCharStyleClass_(0), outputDocIndex_(unsigned(-1)) { } unsigned setOutputDocIndex(unsigned i) { unsigned tem = outputDocIndex_; outputDocIndex_ = i; return tem; } const AddressRef *setAddress(const AddressRef *aref) { const AddressRef *tem = specAref_; specAref_ = aref; return tem; } void syncChar(const CharStyleClass *, OutputCharStream &); unsigned outputDocIndex() const { return outputDocIndex_; } String outputFilename(unsigned i) const; const String &outputFilename() const { return *outputFilename_; } CmdLineApp &app() { return *app_; } const StringC &styleSheetFilename() const { return styleSheetFilename_; } const OutputCodingSystem *codingSystem() const { return app_->outputCodingSystem(); } Messenger &messenger() { return *app_; } private: const String *outputFilename_; CmdLineApp *app_; unsigned outputDocIndex_; const AddressRef *curAref_; const AddressRef *specAref_; const CharStyleClass *curCharStyleClass_; StringC styleSheetFilename_; }; class Item : public Link { public: Item() { } virtual ~Item(); virtual void output(OutputCharStream &, OutputState &) { } private: void operator=(const Item &); Item(const Item &); }; // Corresponds to class Addressable : public Item, public AddressRef { public: Addressable(size_t g, size_t e) : groveIndex_(g), elementIndex_(e), referenced_(0), docIndex_(unsigned(-1)) { } void outputRef(bool end, OutputCharStream &, OutputState &) const; void output(OutputCharStream &, OutputState &); bool defined() const { return docIndex_ != unsigned(-1); } bool referenced() const { return referenced_; } void setDefined(unsigned docIndex, bool wholeDocument = 0) { docIndex_ = docIndex; if (wholeDocument) elementIndex_ = (unsigned)-1; } void setReferenced() { referenced_ = 1; } private: size_t groveIndex_; // -1 if the whole document size_t elementIndex_; // unsigned(-1) if not defined unsigned docIndex_; bool referenced_; }; class Markup : public Item { public: Markup(const StringC &str) : str_(str) { } void output(OutputCharStream &, OutputState &); private: StringC str_; }; class Pcdata : public Item { public: Pcdata(const CharStyleClass *styleClass) : styleClass_(styleClass) { } void output(OutputCharStream &, OutputState &); private: const CharStyleClass *styleClass_; virtual const Char *data(size_t &) const = 0; }; class ImmediatePcdata : public Pcdata { public: ImmediatePcdata(const Char *s, size_t n, const CharStyleClass *styleClass) : Pcdata(styleClass), str_(s, n) { } private: const Char *data(size_t &n) const { n = str_.size(); return str_.data(); } StringC str_; }; class NodePcdata : public Pcdata { public: NodePcdata(const NodePtr &node, const Char *s, size_t n, const CharStyleClass *styleClass) : Pcdata(styleClass), node_(node), s_(s), n_(n) { } private: const Char *data(size_t &n) const { n = n_; return s_; } NodePtr node_; const Char *s_; size_t n_; }; class Container : public Item { public: Container() { } IList *contentPtr() { return &content_; } void output(OutputCharStream &, OutputState &); protected: void reverse(); // In reverse order while being built. IList content_; private: Container(const Container &); void operator=(const Container &); }; class Ref : public Container { public: Ref(AddressRef *aref) : aref_(aref) { } void output(OutputCharStream &, OutputState &); private: AddressRef *aref_; }; class Block : public Container { public: Block(const ParaStyleClass *styleClass) : styleClass_(styleClass) { } void output(OutputCharStream &, OutputState &); private: const ParaStyleClass *styleClass_; }; class Document : public Container { public: Document(unsigned index, const ConstPtr > &title) : index_(index), title_(title) { } ~Document(); void output(OutputCharStream &, OutputState &); private: ConstPtr > title_; unsigned index_; }; HtmlFOTBuilder(const String &, CmdLineApp *); ~HtmlFOTBuilder(); void setFontWeight(Symbol); void setFontPosture(Symbol); void setFontFamilyName(const StringC &); void setFontSize(Length); void setColor(const DeviceRGBColor &); void setQuadding(Symbol); void setLineSpacing(const LengthSpec &); void setFirstLineStartIndent(const LengthSpec &); void setStartIndent(const LengthSpec &); void setEndIndent(const LengthSpec &); void setScrollTitle(const StringC &); void formattingInstruction(const StringC &); void start(); void end(); void atomic(); void characters(const Char *s, size_t n); void charactersFromNode(const NodePtr &, const Char *s, size_t n); void startParagraph(const ParagraphNIC &nic); void endParagraph(); void startLink(const Address &); void endLink(); void startScroll(); void endScroll(); void startNode(const NodePtr &, const StringC &); void endNode(); void flushPendingAddresses(); static void outputCdata(const Char *, size_t, OutputCharStream &); static void outputCdata(const StringC &s, OutputCharStream &os) { outputCdata(s.data(), s.size(), os); } static void outputLength(FOTBuilder::Length n, OutputCharStream &); private: HtmlFOTBuilder(const HtmlFOTBuilder &); void operator=(const HtmlFOTBuilder &); struct DestInfo : public Link { DestInfo(IList *p) : list(p) { } IList *list; }; void insertAddr(size_t, size_t); void outputStyleSheet(StringC &); void startDisplay(const DisplayNIC &); void endDisplay(); Addressable *elementAddress(size_t g, size_t e); const CharStyleClass *makeCharStyleClass(); const ParaStyleClass *makeParaStyleClass(); ClassPrefix *makeClassPrefix(const StringC &); OwnerTable charStyleTable_; OwnerTable paraStyleTable_; OwnerTable prefixTable_; Vector flowObjectStack_; FlowObjectInfo nextFlowObject_; IList destStack_; IList *dest_; Container root_; // Number of HTML documents unsigned nDocuments_; Vector > elements_; Vector > pendingAddr_; String outputFilename_; CmdLineApp *app_; Vector giStack_; Length topMargin_; Vector spaceAfterStack_; }; FOTBuilder *makeHtmlFOTBuilder(const String &outputFilename, CmdLineApp *app, const FOTBuilder::Extension *&ext) { static const FOTBuilder::Extension extensions[] = { { "UNREGISTERED::James Clark//Characteristic::scroll-title", 0, (void (FOTBuilder::*)(const StringC &))&HtmlFOTBuilder::setScrollTitle }, { 0, 0, 0} }; ext = extensions; return new HtmlFOTBuilder(outputFilename, app); } static void reverse(IList &list) { IList tem; while (!list.empty()) tem.insert(list.get()); tem.swap(list); } HtmlFOTBuilder::HtmlFOTBuilder(const String &outputFilename, CmdLineApp *app) : outputFilename_(outputFilename), app_(app), nDocuments_(0), giStack_(1), topMargin_(0) { flowObjectStack_.push_back(nextFlowObject_); dest_ = root_.contentPtr(); giStack_[0] += 'S'; } HtmlFOTBuilder::~HtmlFOTBuilder() { reverse(*dest_); while (!destStack_.empty()) { reverse(*destStack_.head()->list); delete destStack_.get(); } StringC styleSheetFilename; outputStyleSheet(styleSheetFilename); OutputState state(&outputFilename_, styleSheetFilename, app_); DiscardOutputCharStream os; root_.output(os, state); for (size_t i = 0; i < elements_.size(); i++) { for (size_t j = 0; j < elements_[i].size(); j++) if (elements_[i][j] && !elements_[i][j]->defined()) delete elements_[i][j]; } } void HtmlFOTBuilder::outputStyleSheet(StringC &styleSheetFilename) { String filename(outputFilename_); for (size_t j = 0; j < 5; j++) { if (filename.size() < j + 1) break; Char c = filename[filename.size() - j - 1]; if (c == '/' || c == '\\') break; if (c == '.') { filename.resize(filename.size() - j - 1); break; } } filename += '.'; filename += 'c'; filename += 's'; filename += 's'; filename += 0; FileOutputByteStream file; if (!file.open(filename.data())) { app_->message(HtmlMessages::cannotOpenOutputError, StringMessageArg(app_->convertInput(filename.data())), ErrnoMessageArg(errno)); return; } styleSheetFilename = app_->convertInput(filename.data()); RecordOutputCharStream os(new EncodeOutputCharStream(&file, app_->outputCodingSystem())); { OwnerTableIter iter(charStyleTable_); for (;;) { const CharStyle *style = iter.next(); if (!style) break; style->output(os); } } os << "DIV { margin-top: 0pt; margin-bottom: 0pt; margin-left: 0pt; margin-right: 0pt }" << RE; { OwnerTableIter iter(paraStyleTable_); for (;;) { const ParaStyle *style = iter.next(); if (!style) break; style->output(os); } } } void HtmlFOTBuilder::CharStyle::output(OutputCharStream &os) const { bool first = 1; for (IListIter iter(classes); !iter.done(); iter.next()) { if (first) first = 0; else os << ", "; os << "SPAN."; iter.cur()->outputName(os); } if (!first) { os << " {" << RE; static const char indent[] = " "; // Netscape Communicator preview release 2 can't handle quoted font family names. os << indent << "font-family: " << fontFamily << ';' << RE; os << indent << "font-weight: " << int(fontWeight) << "00;" << RE; static const char *styleNames[3] = { "normal", "italic", "oblique" }; os << indent << "font-style: " << styleNames[fontStyle] << ';' << RE; os << indent << "font-size: "; outputLength(fontSize, os); os << ';' << RE; os << indent << "color: #"; for (int i = 20; i >= 0; i -= 4) os << "0123456789abcdef"[(color >> i) & 0xf]; os << ';' << RE; os << '}' << RE; } } void HtmlFOTBuilder::ParaStyle::output(OutputCharStream &os) const { bool first = 1; for (IListIter iter(classes); !iter.done(); iter.next()) { if (first) first = 0; else os << ", "; os << "DIV."; iter.cur()->outputName(os); } if (!first) { os << " {" << RE; static const char indent[] = " "; if (leftMargin) { os << indent << "margin-left: "; outputLength(leftMargin, os); os << ';' << RE; } if (rightMargin) { os << indent << "margin-right: "; outputLength(rightMargin, os); os << ';' << RE; } if (topMargin) { os << indent << "margin-top: "; outputLength(topMargin, os); os << ';' << RE; } static const char *alignNames[4] = { "left", "center", "right", "justify" }; os << indent << "text-align: " << alignNames[align] << ';' << RE; os << indent << "line-height: "; outputLength(lineHeight, os); os << ';' << RE; os << indent << "text-indent: "; outputLength(textIndent, os); os << ';' << RE; os << '}' << RE; } } void HtmlFOTBuilder::outputLength(FOTBuilder::Length n, OutputCharStream &os) { char buf[32]; sprintf(buf, "%04ld", long(n)); char *end = strchr(buf, '\0'); for (int i = 0; i < 4; i++) end[1 - i] = end[-i]; end[-3] = '.'; while (*end == '0') *end-- = '\0'; if (*end == '.') *end = '\0'; strcat(buf, "pt"); os << buf; } void HtmlFOTBuilder::start() { flowObjectStack_.push_back(nextFlowObject_); } void HtmlFOTBuilder::end() { flowObjectStack_.resize(flowObjectStack_.size() - 1); nextFlowObject_ = flowObjectStack_.back(); } void HtmlFOTBuilder::atomic() { nextFlowObject_ = flowObjectStack_.back(); } void HtmlFOTBuilder::formattingInstruction(const StringC &s) { dest_->insert(new Markup(s)); atomic(); } const HtmlFOTBuilder::CharStyleClass *HtmlFOTBuilder::makeCharStyleClass() { CharStyle *style = charStyleTable_.lookup(nextFlowObject_); if (!style) { style = new CharStyle(nextFlowObject_); charStyleTable_.insert(style); } for (IListIter iter(style->classes); !iter.done(); iter.next()) if (iter.cur()->gi == giStack_.back()) return iter.cur(); ClassPrefix *prefix = makeClassPrefix(giStack_.back()); CharStyleClass *sc = new CharStyleClass(giStack_.back(), prefix, style); style->classes.insert(sc); return sc; } const HtmlFOTBuilder::ParaStyleClass *HtmlFOTBuilder::makeParaStyleClass() { ParaProps props(nextFlowObject_); props.topMargin = topMargin_; topMargin_ = 0; ParaStyle *style = paraStyleTable_.lookup(props); if (!style) { style = new ParaStyle(props); paraStyleTable_.insert(style); } for (IListIter iter(style->classes); !iter.done(); iter.next()) if (iter.cur()->gi == giStack_.back()) return iter.cur(); ClassPrefix *prefix = makeClassPrefix(giStack_.back()); ParaStyleClass *sc = new ParaStyleClass(giStack_.back(), prefix, style); style->classes.insert(sc); return sc; } HtmlFOTBuilder::StyleClass::StyleClass(const StringC &g, ClassPrefix *pfx) : gi(g), prefix(pfx), prefixIndex(pfx->nCharClasses + pfx->nParaClasses + 1) { } HtmlFOTBuilder::CharStyleClass::CharStyleClass(const StringC &g, ClassPrefix *pfx, const CharStyle *s) : StyleClass(g, pfx), style(s) { pfx->nCharClasses += 1; } HtmlFOTBuilder::ParaStyleClass::ParaStyleClass(const StringC &g, ClassPrefix *pfx, const ParaStyle *s) : StyleClass(g, pfx), style(s) { pfx->nParaClasses += 1; } HtmlFOTBuilder::ClassPrefix *HtmlFOTBuilder::makeClassPrefix(const StringC &gi) { // FIXME strip illegal characters ClassPrefix *prefix = prefixTable_.lookup(gi); if (!prefix) { prefix = new ClassPrefix(gi); prefixTable_.insert(prefix); } return prefix; } void HtmlFOTBuilder::charactersFromNode(const NodePtr &node, const Char *s, size_t n) { flushPendingAddresses(); dest_->insert(new NodePcdata(node, s, n, makeCharStyleClass())); } void HtmlFOTBuilder::characters(const Char *s, size_t n) { flushPendingAddresses(); dest_->insert(new ImmediatePcdata(s, n, makeCharStyleClass())); } void HtmlFOTBuilder::startParagraph(const ParagraphNIC &nic) { startDisplay(nic); Block *block = new Block(makeParaStyleClass()); nextFlowObject_.parentLeftMargin += nextFlowObject_.leftMargin; nextFlowObject_.parentRightMargin += nextFlowObject_.rightMargin; nextFlowObject_.leftMargin = 0; nextFlowObject_.rightMargin = 0; dest_->insert(block); destStack_.insert(new DestInfo(dest_)); dest_ = block->contentPtr(); start(); } void HtmlFOTBuilder::endParagraph() { reverse(*dest_); dest_ = destStack_.head()->list; delete destStack_.get(); end(); endDisplay(); } void HtmlFOTBuilder::startDisplay(const DisplayNIC &nic) { Length spaceBefore = nic.spaceBefore.nominal.length; if (spaceBefore > topMargin_) topMargin_ = spaceBefore; spaceAfterStack_.push_back(nic.spaceAfter.nominal.length); } void HtmlFOTBuilder::endDisplay() { const Length &spaceAfter = spaceAfterStack_.back(); if (spaceAfter > topMargin_) topMargin_ = spaceAfter; spaceAfterStack_.resize(spaceAfterStack_.size() - 1); } void HtmlFOTBuilder::startScroll() { nextFlowObject_.docIndex = nDocuments_++; start(); Document *doc = new Document(nextFlowObject_.docIndex, nextFlowObject_.scrollTitle); dest_->insert(doc); destStack_.insert(new DestInfo(dest_)); dest_ = doc->contentPtr(); if (pendingAddr_.size()) { Vector &v = pendingAddr_.back(); for (size_t i = 0; i < v.size(); i += 2) { Addressable *tem = elementAddress(v[i], v[i + 1]); if (!tem->defined()) { dest_->insert(tem); tem->setDefined(nextFlowObject_.docIndex, 1); } } v.resize(0); } } void HtmlFOTBuilder::endScroll() { reverse(*dest_); dest_ = destStack_.head()->list; delete destStack_.get(); end(); } void HtmlFOTBuilder::startLink(const Address &addr) { start(); AddressRef *aref = 0; switch (addr.type) { case Address::resolvedNode: { unsigned long n; if (addr.node->elementIndex(n) == accessOK) { Addressable *tem = elementAddress(addr.node->groveIndex(), n); tem->setReferenced(); aref = tem; } break; } case Address::idref: { const StringC &id = addr.params[0]; size_t i; for (i = 0; i < id.size(); i++) if (id[i] == ' ') break; NodePtr node; NamedNodeListPtr elements; unsigned long n; if (addr.node->getGroveRoot(node) == accessOK && node->getElements(elements) == accessOK && elements->namedNode(GroveString(id.data(), i), node) == accessOK && node->elementIndex(n) == accessOK) { Addressable *tem = elementAddress(addr.node->groveIndex(), n); tem->setReferenced(); aref = tem; } break; } default: break; } Ref *ref = new Ref(aref); dest_->insert(ref); destStack_.insert(new DestInfo(dest_)); dest_ = ref->contentPtr(); } void HtmlFOTBuilder::endLink() { reverse(*dest_); dest_ = destStack_.head()->list; delete destStack_.get(); end(); } HtmlFOTBuilder::Addressable *HtmlFOTBuilder::elementAddress(size_t g, size_t e) { if (g >= elements_.size()) elements_.resize(g + 1); Vector &v = elements_[g]; for (size_t i = v.size(); i <= e; i++) v.push_back((Addressable *)0); if (!v[e]) v[e] = new Addressable(g, e); return v[e]; } void HtmlFOTBuilder::startNode(const NodePtr &node, const StringC &mode) { pendingAddr_.resize(pendingAddr_.size() + 1); if (mode.size() == 0) { if (pendingAddr_.size() > 1) pendingAddr_.back() = pendingAddr_[pendingAddr_.size() - 2]; unsigned long n; if (node->elementIndex(n) == accessOK) { pendingAddr_.back().push_back(node->groveIndex()); pendingAddr_.back().push_back(size_t(n)); } } giStack_.resize(giStack_.size() + 1); GroveString str; if (node->getGi(str) == accessOK) giStack_.back().assign(str.data(), str.size()); else if (giStack_.size() >= 2) giStack_.back() = giStack_[giStack_.size() - 2]; } void HtmlFOTBuilder::endNode() { pendingAddr_.resize(pendingAddr_.size() - 1); giStack_.resize(giStack_.size() - 1); } void HtmlFOTBuilder::insertAddr(size_t g, size_t e) { Addressable *tem = elementAddress(g, e); if (!tem->defined() && nextFlowObject_.docIndex != (unsigned)-1) { dest_->insert(tem); tem->setDefined(nextFlowObject_.docIndex); } } void HtmlFOTBuilder::setLineSpacing(const LengthSpec &val) { nextFlowObject_.lineHeight = val.length; } void HtmlFOTBuilder::setQuadding(Symbol sym) { switch (sym) { case symbolStart: nextFlowObject_.align = ParaProps::alignLeft; break; case symbolEnd: nextFlowObject_.align = ParaProps::alignRight; break; case symbolCenter: nextFlowObject_.align = ParaProps::alignCenter; break; case symbolJustify: nextFlowObject_.align = ParaProps::alignJustify; break; default: break; } } void HtmlFOTBuilder::setFirstLineStartIndent(const LengthSpec &ls) { nextFlowObject_.textIndent = ls.length; } void HtmlFOTBuilder::setStartIndent(const LengthSpec &ls) { nextFlowObject_.leftMargin = ls.length - nextFlowObject_.parentLeftMargin; } void HtmlFOTBuilder::setEndIndent(const LengthSpec &ls) { nextFlowObject_.rightMargin = ls.length - nextFlowObject_.parentRightMargin; } void HtmlFOTBuilder::setFontFamilyName(const StringC &name) { nextFlowObject_.fontFamily = name; } void HtmlFOTBuilder::setFontWeight(Symbol weight) { switch (weight) { case symbolUltraLight: nextFlowObject_.fontWeight = 1; break; case symbolExtraLight: nextFlowObject_.fontWeight = 2; break; case symbolLight: nextFlowObject_.fontWeight = 3; break; case symbolSemiLight: nextFlowObject_.fontWeight = 4; break; case symbolMedium: nextFlowObject_.fontWeight = 5; break; case symbolSemiBold: nextFlowObject_.fontWeight = 6; break; case symbolBold: nextFlowObject_.fontWeight = 7; break; case symbolExtraBold: nextFlowObject_.fontWeight = 8; break; case symbolUltraBold: nextFlowObject_.fontWeight = 9; break; default: break; } } void HtmlFOTBuilder::setFontPosture(Symbol posture) { switch (posture) { case symbolOblique: nextFlowObject_.fontStyle = CharProps::styleOblique; break; case symbolItalic: nextFlowObject_.fontStyle = CharProps::styleItalic; break; default: nextFlowObject_.fontStyle = CharProps::styleNormal; break; } } void HtmlFOTBuilder::setFontSize(Length n) { nextFlowObject_.fontSize = n; } void HtmlFOTBuilder::setColor(const DeviceRGBColor &color) { nextFlowObject_.color = (color.red << 16) | (color.green << 8) | color.blue; } void HtmlFOTBuilder::setScrollTitle(const StringC &s) { nextFlowObject_.scrollTitle = new StringResource(s); } void HtmlFOTBuilder::flushPendingAddresses() { if (pendingAddr_.size()) { for (size_t i = 0; i < pendingAddr_.back().size(); i += 2) insertAddr(pendingAddr_.back()[i], pendingAddr_.back()[i + 1]); pendingAddr_.back().resize(0); } } void HtmlFOTBuilder::outputCdata(const Char *s, size_t n, OutputCharStream &os) { for (; n > 0; n--, s++) { switch (*s) { case '\n': break; case '&': os << "&"; break; case '<': os << "<"; break; case '>': os << ">"; break; case '\r': os << RE; break; default: if (*s >= 255) os << "&#" << (unsigned long)*s << ';'; else os.put(*s); break; } } } void HtmlFOTBuilder::Document::output(OutputCharStream &, OutputState &oldState) { OutputState state(&oldState.outputFilename(), oldState.styleSheetFilename(), &oldState.app()); FileOutputByteStream file; String filename(state.outputFilename(index_)); filename += 0; if (!file.open(filename.data())) { state.messenger() .message(HtmlMessages::cannotOpenOutputError, StringMessageArg(state.app().convertInput(filename.data())), ErrnoMessageArg(errno)); return; } RecordOutputCharStream os(new EncodeOutputCharStream(&file, state.app().outputCodingSystem())); // FIXME setEscaper unsigned oldDocIndex = state.setOutputDocIndex(index_); os << "" << RE; const StringC &styleSheetFilename = state.styleSheetFilename(); if (styleSheetFilename.size()) { os << " 0; i--) if (styleSheetFilename[i - 1] == '\\' || styleSheetFilename[i - 1] == '/') break; os.write(styleSheetFilename.data() + i, styleSheetFilename.size() - i); os << "\">" << RE; } if (!title_.isNull()) { os << ""; HtmlFOTBuilder::outputCdata(*title_, os); os << ""; } os << "" << RE; Container::output(os, state); os << "" << RE; os << "" << RE; state.setOutputDocIndex(oldDocIndex); } void HtmlFOTBuilder::Container::output(OutputCharStream &os, OutputState &state) { for (IListIter iter(content_); !iter.done(); iter.next()) iter.cur()->output(os, state); } void HtmlFOTBuilder::Block::output(OutputCharStream &os, OutputState &state) { const AddressRef *addr = state.setAddress(0); state.syncChar(0, os); os << "
"; state.setAddress(addr); } void HtmlFOTBuilder::Ref::output(OutputCharStream &os, OutputState &state) { const AddressRef *oldAref = state.setAddress(aref_); Container::output(os, state); state.setAddress(oldAref); } void HtmlFOTBuilder::Pcdata::output(OutputCharStream &os, OutputState &state) { size_t n; const Char *s = data(n); state.syncChar(styleClass_, os); HtmlFOTBuilder::outputCdata(s, n, os); } void HtmlFOTBuilder::Markup::output(OutputCharStream &os, OutputState &state) { state.syncChar(0, os); os << str_; } void HtmlFOTBuilder::Addressable::output(OutputCharStream &os, OutputState &) { ASSERT(defined()); if (referenced_ && elementIndex_ != (unsigned)-1) { os << ""; } } void HtmlFOTBuilder::Addressable::outputRef(bool end, OutputCharStream &os, OutputState &state) const { ASSERT(referenced_); if (defined()) { if (end) os << ""; else { os << " &outputFilename = state.outputFilename(docIndex_); size_t i = outputFilename.size(); for (; i > 0; i--) if (outputFilename[i - 1] == '\\' || outputFilename[i - 1] == '/') break; for (; i < outputFilename.size(); i++) os.put(outputFilename[i]); } if (elementIndex_ != (unsigned)-1) { os << "#"; if (groveIndex_) os << (unsigned long)groveIndex_ << '.'; os << (unsigned long)elementIndex_; } os << "\">"; } } } String HtmlFOTBuilder::OutputState::outputFilename(unsigned index) const { if (index == 0) return *outputFilename_; String base(*outputFilename_); String ext; for (size_t j = 0; j < 5; j++) { if (base.size() < j + 1) break; Char c = base[base.size() - j - 1]; if (c == '/' || c == '\\') break; if (c == '.') { ext.assign(base.data() + (base.size() - j - 1), j + 1); base.resize(base.size() - j - 1); break; } } char buf[32]; sprintf(buf, "%u", index); for (const char *p = buf; *p; p++) base += CmdLineApp::AppChar(*p); base += ext; return base; } void HtmlFOTBuilder::OutputState::syncChar(const CharStyleClass *styleClass, OutputCharStream &os) { // ... if (curAref_ != specAref_) { if (curCharStyleClass_) { os << ""; curCharStyleClass_ = 0; } if (curAref_) curAref_->outputRef(1, os, *this); if (specAref_) specAref_->outputRef(0, os, *this); curAref_ = specAref_; } if (curCharStyleClass_ != styleClass) { if (curCharStyleClass_) os << ""; if (styleClass) { os << "prefix; if (prefix->nCharClasses > 1 || prefix->nParaClasses > 1) os << (unsigned long)prefixIndex; } #ifdef DSSSL_NAMESPACE } #endif #include "HtmlFOTBuilder_inst.cxx" #endif /* JADE_HTML */ openjade-1.3.2/jade/HtmlFOTBuilder.h0100664000076400007640000000077006713045146015267 0ustar ianian// Copyright (c) 1996 James Clark // See the file copying.txt for copying permission. #ifndef HtmlFOTBuilder_INCLUDED #define HtmlFOTBuilder_INCLUDED 1 #include "FOTBuilder.h" #include "CmdLineApp.h" #include "Message.h" #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif FOTBuilder *makeHtmlFOTBuilder(const String &basename, CmdLineApp *app, const FOTBuilder::Extension *&); #ifdef DSSSL_NAMESPACE } #endif #endif /* not HtmlFOTBuilder_INCLUDED */ openjade-1.3.2/jade/HtmlFOTBuilder_inst.m40100664000076400007640000000466306713045663016426 0ustar ianian// Copyright (c) 1996 James Clark // See the file copying.txt for copying permission. #include "config.h" #ifdef SP_MANUAL_INST #define SP_DEFINE_TEMPLATES #include "Ptr.h" #include "IList.h" #include "IListIter.h" #include "Vector.h" #include "OwnerTable.h" #include "PointerTable.h" #undef SP_DEFINE_TEMPLATES #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif __instantiate(IList) __instantiate(IListIter) __instantiate(IList) __instantiate(Vector) __instantiate(Vector) __instantiate(Vector >) __instantiate(Vector >) __instantiate(`OwnerTable') __instantiate(`OwnerTable') __instantiate(`OwnerTable') __instantiate(`PointerTable') __instantiate(`PointerTable') __instantiate(`PointerTable') __instantiate(`OwnerTableIter') __instantiate(`OwnerTableIter') __instantiate(`PointerTableIter') __instantiate(`PointerTableIter') __instantiate(Vector) __instantiate(Vector) __instantiate(Vector) __instantiate(IList) __instantiate(IList) __instantiate(IListIter) __instantiate(IListIter) #ifdef DSSSL_NAMESPACE } #endif #endif /* SP_MANUAL_INST */ openjade-1.3.2/jade/HtmlMessages.msg0100664000076400007640000000022106713043551015423 0ustar ianian# Copyright (c) 1996 James Clark # See the file COPYING for copying permission =3000 E2+cannotOpenOutputError++cannot open output file %1 (%2) openjade-1.3.2/jade/JadeMessages.msg0100664000076400007640000000034606713045664015401 0ustar ianian# Copyright (c) 1996 James Clark # See the file COPYING for copying permission =1000 E1+unknownType++unknown output type %1 E0+emptyOutputFilename++empty output filename E2+cannotOpenOutputError++cannot open output file %1 (%2) openjade-1.3.2/jade/Makefile.sub0100664000076400007640000000160607565274532014572 0ustar ianianPROG=openjade OBJS=jade.o SgmlFOTBuilder.o RtfFOTBuilder.o HtmlFOTBuilder.o \ TeXFOTBuilder.o TransformFOTBuilder.o MifFOTBuilder.o INCLUDE=-I$(srcdir)/../grove -I$(srcdir)/../spgrove -I$(srcdir)/../style # XLIBS=../style/libostyle.a ../spgrove/libospgrove.a ../grove/libogrove.a \ # ../lib/libosp.a XLIBS=../style/libostyle.a ../spgrove/libospgrove.a ../grove/libogrove.a $(splibdir)/libosp.a GENSRCS=JadeMessages.h HtmlMessages.h RtfMessages.h TeXMessages.h \ HtmlFOTBuilder_inst.cxx RtfFOTBuilder_inst.cxx TeXFOTBuilder_inst.cxx \ TransformFOTBuilder_inst.cxx MifMessages.h MifFOTBuilder_inst.cxx HtmlFOTBuilder.o: HtmlFOTBuilder_inst.cxx HtmlMessages.h RtfFOTBuilder.o: RtfFOTBuilder_inst.cxx RtfMessages.h TeXFOTBuilder.o: TeXFOTBuilder_inst.cxx TeXMessages.h MifFOTBuilder.o: MifFOTBuilder_inst.cxx MifMessages.h TransformFOTBuilder.o: TransformFOTBuilder_inst.cxx jade.o: JadeMessages.h openjade-1.3.2/jade/MifFOTBuilder.cxx0100664000076400007640000062101507443642102015446 0ustar ianian/* Copyright (c) 1998 ISOGEN International Corp. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL ISOGEN INTERNATIONAL CORP. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of ISOGEN International Corp. shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from ISOGEN International Corp. */ /* Created by Kathleen Marszalek and Paul Prescod. */ #include "config.h" #ifdef JADE_MIF #include "MifFOTBuilder.h" #include "MifMessages.h" #include "TmpOutputByteStream.h" #include "CharMap.h" #include "CmdLineApp.h" #include "ErrnoMessageArg.h" #include "FOTBuilder.h" #include "Hash.h" #include "HashTable.h" #include "IList.h" #include "IQueue.h" #include "InputSource.h" #include "Message.h" #include "OutputByteStream.h" #include "Owner.h" #include "PointerTable.h" #include "StorageManager.h" #include "StringC.h" #include "Vector.h" #include #include #include #include #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif //#define assert(exp) (void)( (exp) || (throw "assertion_failed", 0) ) #define PROPERTY( propertyType, propertyName ) \ propertyType propertyName; \ void set ## propertyName ( propertyType p ) \ { propertyName = p; setProperties |= f ## propertyName ;} #define PROPERTY_OUT( propertyName ) \ if( properties & f ## propertyName ) \ os << '\n' << MifOutputByteStream::INDENT \ << "<" #propertyName " " << propertyName << ">"; #define VECTOR_OF_PROPERTIES( propertyType, propertyName ) \ Vector< propertyType > propertyName ## s; \ void propertyName ## sAreSet() \ { setProperties |= f ## propertyName ## s ;} #define STATIC_PROPERTY( propertyType, propertyName ) \ static propertyType propertyName; \ static void set ## propertyName ( propertyType p ) \ { propertyName = p; setProperties |= f ## propertyName ;} class StringHash { public: static unsigned long hash( const String & ); }; class MifOutputByteStream; class MifTmpOutputByteStream; class MifDoc { public: MifDoc( const String &fileLoc, CmdLineApp *app ); ~MifDoc(); static MifDoc &curInstance() { assert( CurInstance != NULL ); return *CurInstance; } static MifDoc *CurInstance; struct T_indent { T_indent( unsigned i ) : data( i ) {} long data; operator unsigned() const { return data; } }; struct T_dimension { T_dimension( long u = 0 ) : data( u ) {} long data; operator long() const { return data; } T_dimension &operator=( long s ) { data = s; return *this; } }; struct T_string : public String { T_string() : String() {}; T_string( const String &s ) : String( s ) {}; T_string( String &s ) : String() { for( size_t i = 0; i < s.size(); i++ ) *this += char( s[i] ); } T_string( const char *cS ) : String( cS, strlen( cS ) ) {}; T_string &operator=( String s ) { String::operator=( s ); return *this; } void escapeSpecialChars(); }; struct T_boolean { T_boolean( bool b = false ) : data( b ) {} bool data; operator bool() const { return data; } T_boolean &operator=( bool b ) { data = b; return *this; } }; typedef T_string T_tagstring; typedef T_string T_pathname; typedef String T_keyword; typedef long T_integer; typedef unsigned T_ID; typedef long T_degrees; typedef double T_percentage; typedef long T_metric; struct T_WH { T_dimension w, h; // width, height T_WH( T_dimension w_, T_dimension h_ ) : w( w_ ), h( h_ ) {} T_WH() : w( 0L ), h( 0L ) {} }; struct T_XY { T_dimension x, y; T_XY( T_dimension x_, T_dimension y_ ) : x( x_ ), y( y_ ) {} T_XY() : x( 0L ), y( 0L ) {} }; struct T_LTRB { T_dimension l, t, r, b; // left, top, right, bottom T_LTRB( T_dimension l_, T_dimension t_, T_dimension r_, T_dimension b_ ) : l( l_ ), t( t_ ), r( r_ ), b( b_ ) {} T_LTRB() : l( 0L ), t( 0L ), r( 0L ), b( 0L ) {} }; struct T_LTWH { T_dimension l, t, w, h; // left, top, width, height T_LTWH( T_dimension l_, T_dimension t_, T_dimension w_, T_dimension h_ ) : l( l_ ), t( t_ ), w( w_ ), h( h_ ) {} T_LTWH() : l( 0L ), t( 0L ), w( 0L ), h( 0L ) {} }; struct T_XYWH { T_dimension x, y, w, h; }; // special characters static const String sTab; static const String sHardSpace; static const String sSoftHyphen; static const String sHardHyphen; static const String sHardReturn; static const String sNumberSpace; static const String sThinSpace; static const String sEnSpace; static const String sEmSpace; static const String sCent; static const String sPound; static const String sYen; static const String sEnDash; static const String sEmDash; static const String sDagger; static const String sDoubleDagger; static const String sBullet; // for tagged text flows static const String sA; // FWeight static const String sRegular; static const String sBold; // FAngle // sRegular; static const String sItalic; // FVar // sRegular; // FColor static const String sWhite; static const String sBlack; // FUnderlining static const String sFNoUnderlining; static const String sFSingle; static const String sFDouble; static const String sFNumeric; // FPosition static const String sFNormal; static const String sFSuperscript; static const String sFSubscript; // FCase static const String sFAsTyped; static const String sFSmallCaps; static const String sFLowercase; static const String sFUppercase; // FFamily static const String sTimesNewRoman; struct FontFormat : public Link { enum { fNone = 0, fFFamily = 0x1, fFAngle = 0x2, fFWeight = 0x4, fFVar = 0x8, fFSize = 0x10, fFColor = 0x20, fFUnderlining = 0x40, fFOverline = 0x80, fFStrike = 0x100, fFPosition = 0x200, fFPairKern = 0x400, fFCase = 0x800, fFDX = 0x1000, fFDY = 0x2000, fFDW = 0x4000, fAll = 0x7FFF }; unsigned setProperties; FontFormat() : setProperties( 0 ) {} // font name PROPERTY( T_string, FFamily ); PROPERTY( T_string, FAngle ); PROPERTY( T_string, FWeight ); PROPERTY( T_string, FVar ); // font size and color PROPERTY( T_dimension, FSize ); PROPERTY( T_tagstring, FColor ); // font style PROPERTY( T_keyword, FUnderlining ); PROPERTY( T_boolean, FOverline ); PROPERTY( T_boolean, FStrike ); PROPERTY( T_keyword, FPosition ); PROPERTY( T_boolean, FPairKern ); PROPERTY( T_keyword, FCase ); // kerning information PROPERTY( T_percentage, FDX ); PROPERTY( T_percentage, FDY ); PROPERTY( T_percentage, FDW ); void setDSSSLDefaults() { setFFamily( sTimesNewRoman ); setFAngle( sRegular ); setFWeight( sRegular ); setFVar( sRegular ); setFSize( 10000 ); setFColor( sBlack ), setFUnderlining( sFNoUnderlining ); setFOverline( false ); setFStrike( false ); setFPosition( sFNormal ); setFPairKern( false ); setFCase( sFAsTyped ); setFDX( 0 ); setFDY( 0 ); setFDW( 0 ); } enum FontStatement { stPgfFont, stFont }; unsigned compare( FontFormat &f ); void setFrom( FontFormat &f, unsigned properties ); void out( MifOutputByteStream &os, unsigned properties, FontStatement fontStatement ); void ffOut( MifOutputByteStream &os, unsigned properties, FontStatement fontStatement ) { out( os, properties, fontStatement ); } void out( MifOutputByteStream &os, FontStatement fontStatement ) { out( os, setProperties, fontStatement ); } void ffOut( MifOutputByteStream &os, FontStatement fontStatement ) { out( os, fontStatement ); } void updateFrom( FontFormat & ); void ffUpdateFrom( FontFormat &f ) { updateFrom( f ); } void clearSetProperties() { setProperties = 0; } }; static const String sNONE; // paragraph formats static const String sDefaultPgfFormat; static const String sHeader; static const String sFooter; // PgfAlignment static const String sLeftRight; static const String sLeft; static const String sRight; static const String sCenter; // PgfLineSpacing static const String sFixed; static const String sProportional; // PgfCellAlignment static const String sTop; static const String sMiddle; static const String sBottom; // PgfPlacement static const String sAnywhere; static const String sColumnTop; static const String sPageTop; static const String sLPageTop; static const String sRPageTop; // PgfPlacementStyle static const String sNormal; static const String sStraddle; // PgfLanguage static const String sNoLanguage; static const String sUSEnglish; static const String sUKEnglish; static const String sGerman; static const String sSwissGerman; static const String sFrench; static const String sCanadianFrench; static const String sSpanish; static const String sCatalan; static const String sItalian; static const String sPortuguese; static const String sBrazilian; static const String sDanish; static const String sDutch; static const String sNorwegian; static const String sNynorsk; static const String sFinnish; static const String sSwedish; // TStype // sLeft; // sRight; // sCenter; static const String sDecimal; // TSLeaderStr; static const String sSPACE; struct TabStop { enum { fNone = 0, fTSX = 0x1, fTSType = 0x2, fTSLeaderStr = 0x4, fTSDecimalChar = 0x8, fAll = 0xF }; unsigned setProperties; TabStop( T_keyword type = sLeft, T_dimension x = 0, T_string tSLeaderStr = sSPACE ) : TSX( x ), TSType( type ), setProperties( fTSType | fTSX ) { setTSLeaderStr( tSLeaderStr ); } PROPERTY( T_dimension, TSX ); PROPERTY( T_keyword, TSType ); PROPERTY( T_string, TSLeaderStr ); PROPERTY( T_integer, TSDecimalChar ); void out( MifOutputByteStream &os ); }; struct ParagraphFormat : public FontFormat { enum { fNone = 0, fPgfFIndent = 0x1, fPgfLIndent = 0x2, fPgfRIndent = 0x4, fPgfAlignment = 0x8, fPgfSpBefore = 0x10, fPgfSpAfter = 0x20, fPgfLineSpacing = 0x40, fPgfLeading = 0x80, fPgfWithPrev = 0x100, fPgfWithNext = 0x200, fPgfBlockSize = 0x400, fPgfAutoNum = 0x800, fPgfNumFormat = 0x1000, fPgfNumberFont = 0x2000, fPgfHyphenate = 0x4000, fHyphenMaxLines = 0x8000, fHyphenMinPrefix = 0x10000, fHyphenMinSuffix = 0x20000, fHyphenMinWord = 0x40000, fPgfLetterSpace = 0x80000, fPgfLanguage = 0x100000, fPgfCellAlignment = 0x200000, fPgfCellMargins = 0x400000, fPgfCellLMarginFixed = 0x800000, fPgfCellTMarginFixed = 0x1000000, fPgfCellRMarginFixed = 0x2000000, fPgfCellBMarginFixed = 0x4000000, fPgfTag = 0x8000000, fTabStops = 0x10000000, fPgfPlacement = 0x20000000, fPgfNumTabs = 0x40000000, fPgfPlacementStyle = 0x80000000, fAll = 0xFFFFFFFF }; unsigned setProperties; ParagraphFormat() : setProperties( 0 ) {} // basic properties PROPERTY( T_tagstring, PgfTag ); PROPERTY( T_dimension, PgfFIndent ); PROPERTY( T_dimension, PgfLIndent ); PROPERTY( T_dimension, PgfRIndent ); PROPERTY( T_keyword, PgfAlignment ); PROPERTY( T_dimension, PgfSpBefore ); PROPERTY( T_dimension, PgfSpAfter ); PROPERTY( T_keyword, PgfLineSpacing ); PROPERTY( T_dimension, PgfLeading ); PROPERTY( T_integer, PgfNumTabs ); Vector TabStops; // default font properties // pagination properties PROPERTY( T_keyword, PgfPlacement ); PROPERTY( T_keyword, PgfPlacementStyle ); PROPERTY( T_boolean, PgfWithPrev ); PROPERTY( T_boolean, PgfWithNext ); PROPERTY( T_integer, PgfBlockSize ); // numbering properties PROPERTY( T_boolean, PgfAutoNum ); PROPERTY( T_string, PgfNumFormat ); PROPERTY( T_tagstring, PgfNumberFont ); // advanced properties PROPERTY( T_boolean, PgfHyphenate ); PROPERTY( T_integer, HyphenMaxLines ); PROPERTY( T_integer, HyphenMinPrefix ); PROPERTY( T_integer, HyphenMinSuffix ); PROPERTY( T_integer, HyphenMinWord ); PROPERTY( T_boolean, PgfLetterSpace ); PROPERTY( T_keyword, PgfLanguage ); // table cell properties PROPERTY( T_keyword, PgfCellAlignment ); PROPERTY( T_LTRB, PgfCellMargins ); PROPERTY( T_boolean, PgfCellLMarginFixed ); PROPERTY( T_boolean, PgfCellTMarginFixed ); PROPERTY( T_boolean, PgfCellRMarginFixed ); PROPERTY( T_boolean, PgfCellBMarginFixed ); // miscellaneous properties // none void setDSSSLDefaults() { FontFormat::setDSSSLDefaults(); setPgfFIndent( 0 ); setPgfLIndent( 0 ); setPgfRIndent( 0 ); setPgfAlignment( sLeft ); setPgfSpBefore( 0 ); setPgfSpAfter( 0 ); setPgfLineSpacing( sFixed ); setPgfLeading( 0 ); setPgfNumTabs( 0 ); setPgfWithPrev( false ); setPgfWithNext( false ); setPgfBlockSize( 2 ); setPgfAutoNum( false ); // setPgfNumFormat( sNONE ); // setPgfNumberFont( sNONE ); setPgfHyphenate( false ); setHyphenMaxLines( 999 ); setHyphenMinPrefix( 2 ); setHyphenMinSuffix( 2 ); setHyphenMinWord( 2 ); setPgfLetterSpace( false ); setPgfLanguage( sNoLanguage ); setPgfCellAlignment( sTop ); setPgfCellMargins( T_LTRB( 0, 0, 0, 0 ) ); setPgfCellLMarginFixed( true ); setPgfCellTMarginFixed( true ); setPgfCellRMarginFixed( true ); setPgfCellBMarginFixed( true ); // setPgfTag( sNONE ); setPgfPlacement( sAnywhere ); setPgfPlacementStyle( sNormal ); } void forceSetProperties( unsigned properties, unsigned fontProperties ) { setProperties = properties; FontFormat::setProperties = fontProperties; } unsigned &ffSetProperties() { return FontFormat::setProperties; } unsigned compare( ParagraphFormat & ); void setFrom( ParagraphFormat &, unsigned, unsigned ); void out( MifOutputByteStream &os, unsigned, unsigned, bool excludeCellProperties = true ); void out( MifOutputByteStream &os, bool excludeCellProperties = true ) { out( os, setProperties, (unsigned)FontFormat::setProperties, excludeCellProperties ); } void updateFrom( ParagraphFormat & ); void clearSetProperties() { setProperties = 0; FontFormat::clearSetProperties(); } }; // DPageNumStyle static const String sArabic; static const String sUCRoman; static const String sLCRoman; static const String sUCAlpha; static const String sLCAlpha; // DParity static const String sFirstLeft; static const String sFirstRight; struct Document { enum { fNone = 0, fDPageSize = 0x1, fDStartPage = 0x2, fDPageNumStyle = 0x4, fDTwoSides = 0x8, fDParity = 0x10, fDMargins = 0x20, fDColumns = 0x40, fDColumnGap = 0x80, fAll = 0xFF }; unsigned setProperties; Document() : setProperties( fNone ) {} // column properties PROPERTY( T_LTRB, DMargins ); PROPERTY( T_integer, DColumns ); PROPERTY( T_dimension, DColumnGap ); PROPERTY( T_WH, DPageSize ); // pagination PROPERTY( T_integer, DStartPage ); PROPERTY( T_keyword, DPageNumStyle ); PROPERTY( T_boolean, DTwoSides ); PROPERTY( T_keyword, DParity ); void out( MifOutputByteStream &os ); }; struct Object { enum { fNone = 0, fID = 0x1, fPen = 0x2, fFill = 0x4, fPenWidth = 0x8, fObjectNext = 0x10, fObColor = 0x20 }; unsigned setProperties; Object( T_integer pen = 15, T_integer fill = 15, T_dimension penWidth = 0, const T_tagstring &obColor = sBlack ) : setProperties( 0 ) { setID( ++IDCnt ); setPen( pen ); setFill( fill ); setPenWidth( penWidth ); setObColor( obColor ); } static T_ID IDCnt; PROPERTY( T_integer, ID ); PROPERTY( T_integer, Pen ); PROPERTY( T_integer, Fill ); PROPERTY( T_dimension, PenWidth ); PROPERTY( T_tagstring, ObColor ); void outObjectProperties( MifOutputByteStream &os ); virtual void out( MifOutputByteStream &os ) = 0; }; // HeadCap/TailCap static const String sButt; static const String sRound; static const String sSquare; struct PolyLine : public Object { enum { fHeadCap = fObjectNext << 1, fTailCap = fHeadCap << 1 }; PolyLine( T_keyword cap, T_integer pen = 15, T_integer fill = 15, T_dimension penWidth = 0, const T_tagstring &obColor = sBlack ) : Object( pen, fill, penWidth, obColor ) { setHeadCap( cap ); setTailCap( cap ); } PROPERTY( T_keyword, HeadCap ); PROPERTY( T_keyword, TailCap ); Vector Points; void out( MifOutputByteStream &os ); }; struct ImportObject : public Object { enum { fImportObFileDI = fObjectNext << 1, fBitMapDpi = fImportObFileDI << 1, fShapeRect = fBitMapDpi << 1, fImportObFixedSize = fShapeRect << 1, fNativeOrigin = fImportObFixedSize << 1 }; ImportObject( T_pathname importObFileDI, T_LTWH shapeRect, T_boolean importObFixedSize = true, T_integer bitMapDpi = 72 ) : Object() { setImportObFileDI( importObFileDI ); setShapeRect( shapeRect ); setImportObFixedSize( importObFixedSize ); setBitMapDpi( bitMapDpi ); } PROPERTY( T_pathname, ImportObFileDI ); PROPERTY( T_integer, BitMapDpi ); PROPERTY( T_LTWH, ShapeRect ); PROPERTY( T_boolean, ImportObFixedSize ); PROPERTY( T_XY, NativeOrigin ); void out( MifOutputByteStream &os ); }; // FrameType static const String sInline; static const String sRunIntoParagraph; static const String sBelow; // AnchorAlign // Left // Center // Right // Inside // Outside struct Frame : public Object { enum { fShapeRect = fObjectNext << 1, fFrameType = fShapeRect << 1, fNSOffset = fFrameType << 1, fBLOffset = fNSOffset << 1, fAnchorAlign = fBLOffset << 1 }; Frame() : Object() {} PROPERTY( T_LTWH, ShapeRect ); PROPERTY( T_keyword, FrameType ); PROPERTY( T_dimension, NSOffset ); PROPERTY( T_dimension, BLOffset ); PROPERTY( T_keyword, AnchorAlign ); Vector Objects; void out( MifOutputByteStream &os ); }; struct TextRect : public Object { enum { fID = fObjectNext << 1, fShapeRect = fID << 1, fTRNumColumns = fShapeRect << 1, fTRColumnGap = fTRNumColumns << 1, fTRColumnBalance = fTRColumnGap << 1 }; TextRect() : Object() {} TextRect( T_LTWH shapeRect, T_integer tRNumColumns = 1, T_dimension tRColumnGap = 0, bool tRColumnBalance = false ) : Object() { setShapeRect( shapeRect ); setTRNumColumns( tRNumColumns ); setTRColumnGap( tRColumnGap ); setTRColumnBalance( tRColumnBalance ); } PROPERTY( T_LTWH, ShapeRect ); PROPERTY( T_integer, TRNumColumns ); PROPERTY( T_dimension, TRColumnGap ); PROPERTY( T_boolean, TRColumnBalance ); void out( MifOutputByteStream &os ); }; // PageType static const String sLeftMasterPage; static const String sRightMasterPage; static const String sOtherMasterPage; static const String sBodyPage; // PageTag static const String sFirst; // sLeft // sRight struct Page { enum { fNone = 0, fPageType = 0x1, fPageTag = 0x2, fPageBackground = 0x4 }; unsigned setProperties; Page( T_keyword pageType, T_tagstring pageTag = sNONE, T_tagstring pageBackground = sNONE ) : PageType( pageType ), PageTag( pageTag ), PageBackground( pageBackground ), setProperties( fPageType | fPageTag ) { if( PageTag != sNONE ) setProperties |= fPageTag; if( PageBackground != sNONE ) setProperties |= fPageBackground; } Page() : PageType( MifDoc::sRightMasterPage ), setProperties( fPageType ) {} PROPERTY( T_keyword, PageType ); PROPERTY( T_tagstring, PageTag ); PROPERTY( T_tagstring, PageBackground ); // keyword in MIF Vector TextRects; void out( MifOutputByteStream &os ); }; struct TagStream { enum TagStreamClass2 { tsTagStream, tsTextFlow, tsCell, tsPara } TagStreamClass; TagStream( T_indent osIndent = 2 ); ~TagStream(); T_tagstring InitialPgfTag; bool PgfTagUsed; ParagraphFormat &format() { return Format; } MifTmpOutputByteStream &content() { assert( Content != NULL ); return *Content; } void setParagraphFormat( ParagraphFormat &pf ) { Format = pf; } protected: MifTmpOutputByteStream *Content; ParagraphFormat Format; }; struct TextFlow : public TagStream { enum { fNone = 0, fTFTag = 0x1, fTFAutoConnect = 0x02 }; unsigned setProperties; TextFlow() : setProperties( fNone ), TextRectIDUsed( false ) { TagStreamClass = tsTextFlow; } TextFlow( const TextRect &textRect, bool body, ParagraphFormat *format = NULL, T_tagstring pgfTag = sNONE ); T_ID TextRectID; // for ParaLine (not in MIF) bool TextRectIDUsed; PROPERTY( T_tagstring, TFTag ); PROPERTY( T_boolean, TFAutoConnect ); const TextRect *textRect() { assert( TextRect_ != NULL ); return TextRect_; } void out( MifOutputByteStream &os, bool resolveCrossReferences = false ); protected: const TextRect *TextRect_; }; struct Para : public TagStream { enum { fNone = 0, fPgfTag = 0x1, fParagraphFormat = 0x2 }; unsigned setProperties; Para( T_indent osIndent = 2 ) : TagStream( osIndent ), setProperties( fParagraphFormat ), leaderTabsSet( false ) { TagStreamClass = tsPara; } static bool currentlyOpened; bool leaderTabsSet; PROPERTY( T_tagstring, PgfTag ); ParagraphFormat &curFormat() { return CurFormat; } void out( MifOutputByteStream &os ); void outProlog( MifOutputByteStream &os ); static void outSimpleProlog( MifOutputByteStream &os ); static void outEpilog( MifOutputByteStream &os ); protected: ParagraphFormat CurFormat; }; struct ParaLine { enum { fNone = 0, fTextRectID = 0x1, fATbl = 0x2 }; static unsigned setProperties; STATIC_PROPERTY( T_ID, TextRectID ); STATIC_PROPERTY( T_ID, ATbl ); static void outProlog( MifOutputByteStream &os ); static void outEpilog( MifOutputByteStream &os ); }; struct PgfCatalog { Vector ParaFormats; void out( MifOutputByteStream &os ); }; struct Color { enum { fColorTag = 0x1, fColorCyan = 0x2, fColorMagenta = 0x4, fColorYellow = 0x8, fColorBlack = 0x10 }; unsigned setProperties; Color() : setProperties( 0 ) {} Color( unsigned char red, unsigned char green, unsigned char blue ); PROPERTY( T_tagstring, ColorTag ); PROPERTY( T_percentage, ColorCyan ); PROPERTY( T_percentage, ColorMagenta ); PROPERTY( T_percentage, ColorYellow ); PROPERTY( T_percentage, ColorBlack ); static const String &key( Color &color ); void out( MifOutputByteStream &os ) const; }; struct ColorCatalog { PointerTable,StringHash,Color> Colors; void out( MifOutputByteStream &os ); }; // TblAlignment // Left // Center // Right static const String sInside; static const String sOutside; struct Ruling { enum { fNone = 0, fRulingTag = 0x1, fRulingPenWidth = 0x2, fRulingGap = 0x4, fRulingPen = 0x8, fRulingLines = 0x10, fRulingColor = 0x20 }; unsigned setProperties; Ruling() : setProperties( 0 ), RulingPenWidth( 1000 ), RulingGap( 1000 ), RulingPen( 0 ), RulingLines( 1 ) {}; Ruling( T_tagstring RulingTag_ ) : setProperties( 0 ), RulingPenWidth( 1000 ), RulingGap( 1000 ), RulingPen( 0 ), RulingLines( 1 ) { setRulingTag( RulingTag_ ); } PROPERTY( T_tagstring, RulingTag ); PROPERTY( T_dimension, RulingPenWidth ); PROPERTY( T_dimension, RulingGap ); PROPERTY( T_tagstring, RulingColor ); PROPERTY( T_integer, RulingPen ); PROPERTY( T_integer, RulingLines ); static const String &key( Ruling & ); void out( MifOutputByteStream &os ) const; String Key; }; struct RulingCatalog { PointerTable,StringHash,Ruling> Rulings; void out( MifOutputByteStream &os ); }; struct Cell : public TagStream { enum { fNone = 0, fCellLRuling = 0x1, fCellBRuling = 0x2, fCellRRuling = 0x4, fCellTRuling = 0x8, fCellColumns = 0x10, fCellRows = 0x20, fCellFill = 0x40, fCellColor = 0x80 }; unsigned setProperties; Cell( T_indent osIndent = 12 ) : TagStream( osIndent ), setProperties( 0 ) { TagStreamClass = tsCell; } PROPERTY( T_integer, CellFill ); PROPERTY( T_tagstring, CellColor ); PROPERTY( T_tagstring, CellLRuling ); PROPERTY( T_tagstring, CellBRuling ); PROPERTY( T_tagstring, CellRRuling ); PROPERTY( T_tagstring, CellTRuling ); PROPERTY( T_integer, CellColumns ); PROPERTY( T_integer, CellRows ); void out( MifOutputByteStream &os, bool resolveCrossReferences = false ); }; struct Row { Vector Cells; void out( MifOutputByteStream &os, bool resolveCrossReferences = false ); }; struct TblColumn { enum { fNone = 0, fTblColumnNum = 0x1, fTblColumnWidth = 0x2 }; unsigned setProperties; TblColumn() : setProperties( 0 ), TblColumnNum( 0 ), TblColumnWidth( 0 ) {}; TblColumn( T_integer TblColumnNum_, T_dimension TblColumnWidth_ ) : setProperties( 0 ) { setTblColumnNum( TblColumnNum_ ); setTblColumnWidth( TblColumnWidth_ ); } PROPERTY( T_integer, TblColumnNum ); PROPERTY( T_dimension, TblColumnWidth ); void out( MifOutputByteStream &os ); }; // TblTitlePlacement static const String sNone; struct TblFormat { enum { fNone = 0, fTblTag = 0x1, fTblLIndent = 0x2, fTblRIndent = 0x4, fTblSpBefore = 0x8, fTblSpAfter = 0x10, fTblAlignment = 0x20, fTblCellMargins = 0x40, fTblWidth = 0x80, fTblTitlePlacement = 0x100, fAll = 0x1ff }; unsigned setProperties; TblFormat() : setProperties( 0 ) {} TblFormat( T_tagstring TblTag_ ) : setProperties( 0 ) { setTblTag( TblTag_ ); } void setDSSSLDefaults() { setTblLIndent( 0 ); setTblRIndent( 0 ); setTblSpBefore( 0 ); setTblSpAfter( 0 ); setTblAlignment( sLeft ); setTblCellMargins( T_LTRB( 0, 0, 0, 0 ) ); setTblTitlePlacement( sNone ); } // basic properties PROPERTY( T_tagstring, TblTag ); PROPERTY( T_dimension, TblLIndent ); PROPERTY( T_dimension, TblRIndent ); PROPERTY( T_dimension, TblSpBefore ); PROPERTY( T_dimension, TblSpAfter ); PROPERTY( T_keyword, TblAlignment ); PROPERTY( T_LTRB, TblCellMargins ); PROPERTY( T_keyword, TblTitlePlacement ); // column properties PROPERTY( T_dimension, TblWidth ); Vector TblColumns; void out( MifOutputByteStream &os ); }; struct TblCatalog { Vector TblFormats; void out( MifOutputByteStream &os ); }; // TblTag static const String sDefaultTblFormat; struct Tbl { enum { fNone = 0, fTblID = 0x1, fTblTag = 0x2, fTblNumColumns = 0x4, fTblColumnWidths = 0x8, fTblFormat = 0x10 }; unsigned setProperties; Tbl() : setProperties( 0 ), TblIDUsed( false ) { setTblID( MifDoc::CurInstance->nextID() ); setTblTag( MifDoc::sDefaultTblFormat ); } PROPERTY( T_ID, TblID ); PROPERTY( T_tagstring, TblTag ); bool TblIDUsed; TblFormat tblFormat; // table columns PROPERTY( T_integer, TblNumColumns ); VECTOR_OF_PROPERTIES( T_dimension, TblColumnWidth ); // table rows Vector TblH; Vector TblBody; Vector TblF; void out( MifOutputByteStream &os, bool resolveCrossReferences = false ); }; // paragraph formats static const String sPageNumXRefFormatName; struct XRefFormat { enum { fXRefName = 0x1, fXRefDef = 0x2 }; unsigned setProperties; XRefFormat() {} XRefFormat( T_string XRefName_, T_string XRefDef_ ) { setXRefName( XRefName_ ); setXRefDef( XRefDef_ ); } PROPERTY( T_string, XRefName ); PROPERTY( T_string, XRefDef ); void out( MifOutputByteStream &os ); }; static char escapeChar() { return '\x0'; } struct CrossRefInfo { enum InfoType { PotentialMarker, XRef, HypertextLink } Type; CrossRefInfo() {} CrossRefInfo ( unsigned long groveIndex_, unsigned long elementIndex_, int tagIndent_, InfoType type_, const Char *id, size_t idLen ) : groveIndex( groveIndex_ ), elementIndex( elementIndex_ ), tagIndent( tagIndent_ ), Type( type_ ) { if( id != NULL && idLen > 0 ) sgmlId.assign( id, idLen ); } InfoType type() { return Type; } void out( MifOutputByteStream &os ); T_string crossRefText() const; unsigned long groveIndex; unsigned long elementIndex; int tagIndent; StringC sgmlId; }; struct XRef { enum { fXRefName = 0x1, fXRefSrcFile = 0x2, fXRefText = 0x4, fXRefSrcText }; unsigned setProperties; XRef() {} XRef( CrossRefInfo &crossRefInfo ); XRef( T_tagstring XRefName_, T_string XRefSrcText_, T_string XRefText_, T_pathname XRefSrcFile_ ) { setXRefName( XRefName_ ); setXRefSrcText( XRefSrcText_ ); setXRefText( XRefText_ ); setXRefSrcFile( XRefSrcFile_ ); } PROPERTY( T_tagstring, XRefName ); PROPERTY( T_string, XRefSrcText ); PROPERTY( T_pathname, XRefSrcFile ); PROPERTY( T_string, XRefText ); void out( MifOutputByteStream &os ); }; struct Marker { enum Type { XRef = 9, Index = 2, Hypertext = 8, HypertextLink = 100, HypertextDestination = 101 }; enum { fMType = 0x1, fMText = 0x2 }; unsigned setProperties; Marker() {} Marker( CrossRefInfo &crossRefInfo, bool linkDestinationMode = false ); Marker( T_string MText_, Type MType_ = XRef ) { setMText( MText_ ); setMType( T_integer( MType_ ) ); } PROPERTY( T_integer, MType ); PROPERTY( T_string, MText ); void out( MifOutputByteStream &os ); }; struct BookComponent { BookComponent() : epilogOs( NULL ), pageNumXRefFormatGenerated( false ) {} BookComponent( MifTmpOutputByteStream *epilogOs ); void commit( const String &dirName, bool resolveCrossReferences = true ); String FileName; Vector XRefFormats; Document document; ColorCatalog colorCatalog; PgfCatalog pgfCatalog; TblCatalog tblCatalog; Vector AFrames; Vector Tbls; Vector Pages; Vector TextFlows; RulingCatalog rulingCatalog; bool pageNumXRefFormatGenerated; MifTmpOutputByteStream *epilogOs; }; struct ElementSet { enum ReferenceType { AnyReference = 0xC000, LinkReference = 0x8000, PageReference = 0x4000 }; static unsigned short LINK_TYPE_MASK( ReferenceType refType ) { return (unsigned short)( refType ); } static const unsigned short BOOK_COMPONENT_INDEX_M() { return 0x3FFF; } ElementSet(); struct SgmlIdInfo { SgmlIdInfo( const StringC &sgmlId_, unsigned long groveIndex_ ) : sgmlId( sgmlId_ ), groveIndex( groveIndex_ ), flags( 0 ) {} StringC sgmlId; unsigned short flags; unsigned long groveIndex; static const StringC &key( SgmlIdInfo &sgmlIdInfo) { return sgmlIdInfo.sgmlId; } }; SgmlIdInfo &enforceSgmlId( const StringC &sgmlId, unsigned long groveIndex ); void setReferencedFlag( ReferenceType, unsigned long groveIndex, unsigned long n ); void setReferencedFlag( ReferenceType, unsigned long groveIndex, const StringC &sgmlId ); void setBookComponentIndex( unsigned long groveIndex, unsigned long n, int i ); void setBookComponentIndex( unsigned long groveIndex, const StringC &sgmlId, int i ); bool hasBeenReferenced( ReferenceType, unsigned long groveIndex, unsigned long n ) const; bool hasBeenReferenced( ReferenceType, unsigned long groveIndex, const StringC &sgmlId ); int bookComponentIndex( unsigned long groveIndex, unsigned long n ) const; int bookComponentIndex( unsigned long groveIndex, const StringC &sgmlId ); private: PointerTable SgmlIdInfos; void add( unsigned long groveIndex, unsigned long n, unsigned short flags ); bool getFlags( unsigned long groveIndex, unsigned long n, unsigned short &result ) const; Vector > Flags; }; void commit(); void outTagEnd(); void outHexChar( unsigned code, MifOutputByteStream *o = NULL ); void outHexChar( unsigned code, String &targetString ); void outSpecialChar( const String &charName, MifOutputByteStream *o = NULL ); void beginParaLine(); void endParaLine(); void outPageNumber(); void outBreakingPara( T_keyword pgfPlacement ); void outAFrame( T_ID ID, MifOutputByteStream &os ); Vector &bookComponents() { return BookComponents; }; BookComponent &bookComponent() { assert( bookComponents().size() > 0 ); return bookComponents().back(); } void setCurOs( MifOutputByteStream &os ) { curOs = &os; } MifOutputByteStream &os() { assert( curOs != NULL ); return *curOs; } void setCurTextFlow( TextFlow *tf ) { CurTextFlow = tf; } TextFlow *curTextFlow() { return CurTextFlow; } void setCurCell( Cell *c ) { CurCell = c; } Cell *curCell() { return CurCell; } void setCurTblNum( size_t n ) { CurTblNum = n; } Tbl *curTbl( bool assertNotNull = true ) { if( assertNotNull ) assert( CurTblNum > 0 ); return CurTblNum > 0 ? &bookComponent().Tbls[CurTblNum-1] : (Tbl *)NULL; } void setCurPara( Para *p ) { CurPara = p; } Para *curPara( bool assertNotNull = true ) { if( assertNotNull ) assert( CurPara != NULL ); return CurPara; } void setCurParagraphFormat( ParagraphFormat &pf ) { CurFormat = pf; } ParagraphFormat &curFormat() { return CurFormat; } TagStream &curTagStream() { assert( TagStreamStack.size() > 0 ); return *TagStreamStack.back(); } void enterTextFlow( TextFlow &textFlow ) { enterTagStream( textFlow ); } void exitTextFlow() { setCurTextFlow( NULL ); exitTagStream(); } void enterTableCell( Cell &cell ) { enterTagStream( cell ); } void exitTableCell() { setCurCell( NULL ); exitTagStream(); } void enterPara( Para &p ) { enterTagStream( p ); } void exitPara() { setCurPara( NULL ); exitTagStream(); } void enterBookComponent(); void exitBookComponent(); void enterTagStream( TagStream &tagStream ); void exitTagStream(); T_ID nextID() { return ++NextID; } Document &document() { return bookComponent().document; } PgfCatalog &pgfCatalog() { return bookComponent().pgfCatalog; } TblCatalog &tblCatalog() { return bookComponent().tblCatalog; } RulingCatalog &rulingCatalog() { return bookComponent().rulingCatalog; } ColorCatalog &colorCatalog() { return bookComponent().colorCatalog; } Vector &tbls() { return bookComponent().Tbls; } Vector &pages() { return bookComponent().Pages; } Vector &textFlows() { return bookComponent().TextFlows; } Vector &aFrames() { return bookComponent().AFrames; } ElementSet &elements() { return Elements; } Vector &crossRefInfos() { return CrossRefInfos; } const String &rootOutputFileLoc() { return RootOutputFileLoc; } CmdLineApp *App; protected: Vector CrossRefInfos; ElementSet Elements; void switchToTagStream( TagStream &tagStream, bool startWithDefaultPgfFormat = true ); String RootOutputFileLoc; T_ID NextID; MifOutputByteStream *curOs; Vector BookComponents; size_t CurTblNum; ParagraphFormat CurFormat; TextFlow *CurTextFlow; Cell *CurCell; Para *CurPara; Vector TagStreamStack; }; class MifOutputByteStream { OutputByteStream *os; public: int CurTagIndent; static MifDoc::T_indent INDENT; void indent() { CurTagIndent += 2; } void undent() { CurTagIndent -= 2; assert( CurTagIndent >= 0 ); } MifOutputByteStream( MifDoc::T_indent i = 0 ) : os( NULL ), CurTagIndent( i ) {}; MifOutputByteStream( OutputByteStream &os, MifDoc::T_indent i = 0 ) : os( &os ), CurTagIndent( i ) {}; void setStream( OutputByteStream &s ) { os = &s; } OutputByteStream &stream() { assert( os != NULL ); return *os; } MifOutputByteStream &operator<<( unsigned n ) { stream() << n; return *this; } MifOutputByteStream &operator<<( long n ) { stream() << n; return *this; } MifOutputByteStream &operator<<( char c ) { stream() << c; return *this; } MifOutputByteStream &operator<<( const char *s ) { stream() << s; return *this; } #ifdef SP_WIDE_SYSTEM MifOutputByteStream &operator<<( const String &s ) { for( size_t i = 0; i < s.size(); i++ ) stream() << char( s[i] ); return *this; } #endif MifOutputByteStream &operator<<( const String &s ) { stream() << s; return *this; } MifOutputByteStream &operator<<( const MifDoc::T_string &s ) { stream() << '`'; stream() << s; stream() << '\''; return *this; } MifOutputByteStream &operator<<( const MifDoc::T_percentage &p ) { char buf[32]; sprintf( buf, "%.6f", p ); stream() << buf; return *this; } MifOutputByteStream &operator<<( const MifDoc::T_dimension &d ) { char buf[32]; int i; sprintf( buf, "%li.%.3i%n", long(d)/1000, abs(long(d)%1000), &i ); while( buf[--i] == '0' ) {}; if( buf[i] == '.' ) i--; buf[i+1] = '\0'; stream() << buf << "pt"; return *this; } MifOutputByteStream &operator<<( const MifDoc::CrossRefInfo &cri ) { Vector &crossRefInfos = MifDoc::CurInstance->crossRefInfos(); unsigned idx = crossRefInfos.size(); crossRefInfos.resize( crossRefInfos.size() + 1 ); crossRefInfos.back() = cri; stream() << MifDoc::escapeChar(); stream().sputn( (char*)&idx, sizeof( idx ) ); return *this; } MifOutputByteStream &operator<<( const MifDoc::T_LTRB &b ) { *this << b.l << " " << b.t << " " << b.r << " " << b.b; return *this; } MifOutputByteStream &operator<<( const MifDoc::T_LTWH &b ) { *this << b.l << " " << b.t << " " << b.w << " " << b.h; return *this; } MifOutputByteStream &operator<<( const MifDoc::T_WH &s ) { *this << s.w << " " << s.h; return *this; } MifOutputByteStream &operator<<( const MifDoc::T_XY &s ) { *this << s.x << " " << s.y; return *this; } MifOutputByteStream &operator<<( const MifDoc::T_boolean &b ) { if( bool(b) ) *this << "Yes"; else *this << "No"; return *this; } MifOutputByteStream &operator<<( const MifDoc::T_indent &i ) { unsigned cnt = (i==INDENT) ? CurTagIndent : unsigned( i ); for( ; cnt; cnt-- ) stream() << ' '; return *this; } }; class MifTmpOutputByteStream : public TmpOutputByteStream { MifOutputByteStream os; public: MifTmpOutputByteStream( MifDoc::T_indent osIndent = 0 ) : TmpOutputByteStream(), os( osIndent ) { os.setStream( *this ); } void commit( OutputByteStream &os, bool resolveCrossReferences = false ); void commit( String &str ); MifOutputByteStream &stream() { return os; } }; class MifFOTBuilder : public SerialFOTBuilder { public: MifFOTBuilder( const String &fileLoc, const Ptr &, const CharsetInfo &, CmdLineApp *app ); ~MifFOTBuilder() {} static MifFOTBuilder &curInstance() { assert( CurInstance != NULL ); return *CurInstance; } static MifFOTBuilder *CurInstance; struct IndexEntryNIC { IndexEntryNIC() : pageNumber( true ), startsPageRange( false ), endsPageRange( false ) {} StringC sortString; Vector components; bool pageNumber; bool startsPageRange; bool endsPageRange; }; class MifExtensionFlowObj : public FOTBuilder::ExtensionFlowObj { public: virtual void atomic( MifFOTBuilder &, const NodePtr & ) const = 0; }; class IndexEntryFlowObj : public MifExtensionFlowObj { public: void atomic( MifFOTBuilder &fb, const NodePtr & ) const { fb.indexEntry( nic ); } bool hasNIC( const StringC &name ) const; void setNIC( const StringC &name, const Value &value ); ExtensionFlowObj *copy() const { return new IndexEntryFlowObj(*this); } private: IndexEntryNIC nic; }; void extension( const ExtensionFlowObj &fo, const NodePtr & ); void start(); void end(); void startSimplePageSequenceSerial(); void endSimplePageSequenceSerial(); void startSimplePageSequenceHeaderFooter( unsigned ); void endSimplePageSequenceHeaderFooter( unsigned ); void endAllSimplePageSequenceHeaderFooter(); void indexEntry( const IndexEntryNIC & ); void setPageNColumns( long ); void setPageColumnSep( Length ); void setPageBalanceColumns( bool ); void startNode( const NodePtr &, const StringC & ); void endNode(); void currentNodePageNumber( const NodePtr & ); void startLink( const Address & ); void endLink(); void startLineField( const LineFieldNIC & ); void endLineField(); void doStartParagraph( const ParagraphNIC &, bool servesAsWrapper = false, MifDoc::T_dimension = 0, bool allowNegativeLeading = false ); void startParagraph( const ParagraphNIC &nic ) { doStartParagraph( nic ); } void doEndParagraph( bool sustainFormatStack = false, bool sustainDisplayStack = false, bool paragraphBreakTest = true, bool discardThisPara = false ); void endParagraph() { doEndParagraph(); } void startDisplayGroup( const DisplayGroupNIC & ); void endDisplayGroup(); void characters( const Char *, size_t ); void paragraphBreak( const ParagraphNIC & ); void externalGraphic( const ExternalGraphicNIC & ); void rule( const RuleNIC & ); void pageNumber(); void startScore( Symbol ); void endScore(); void startLeader( const LeaderNIC & ); void endLeader(); void startTable(const TableNIC &); void endTable(); void startTablePartSerial(const TablePartNIC &); void endTablePartSerial(); void startTablePartHeader(); void endTablePartHeader(); void startTablePartFooter(); void endTablePartFooter(); void tableColumn(const TableColumnNIC &); void startTableRow(); void endTableRow(); void startTableCell(const TableCellNIC &); void endTableCell(); void tableBeforeRowBorder(); void tableAfterRowBorder(); void tableBeforeColumnBorder(); void tableAfterColumnBorder(); void tableCellBeforeRowBorder(); void tableCellAfterRowBorder(); void tableCellBeforeColumnBorder(); void tableCellAfterColumnBorder(); // void setCellBeforeRowMargin(Length); // void setCellAfterRowMargin(Length); // void setCellBeforeColumnMargin(Length); // void setCellAfterColumnMargin(Length); void setCellBackground( bool ); void setCellRowAlignment( Symbol ); void setFontSize(Length); void setFontFamilyName( const StringC & ); void setFontWeight( Symbol ); void setFontPosture( Symbol ); void setStartIndent( const LengthSpec & ); void setEndIndent( const LengthSpec & ); void setFirstLineStartIndent( const LengthSpec & ); // void setLastLineEndIndent(const LengthSpec &); void setLineSpacing( const LengthSpec & ); void setFieldWidth( const LengthSpec & ); void setLines( Symbol ); void setQuadding( Symbol ); void setDisplayAlignment( Symbol ); void setFieldAlign( Symbol ); void setColor( const DeviceRGBColor & ); void setBackgroundColor( const DeviceRGBColor & ); void setBackgroundColor(); void setPageWidth( Length ); void setPageHeight( Length ); void setLeftMargin( Length ); void setRightMargin( Length ); void setTopMargin( Length ); void setBottomMargin( Length ); void setHeaderMargin( Length ); void setFooterMargin( Length ); void setBorderPresent(bool); void setLineThickness(Length); void setCellBeforeRowMargin( Length ); void setCellAfterRowMargin( Length ); void setCellBeforeColumnMargin( Length ); void setCellAfterColumnMargin( Length ); void setLineSep(Length); // void setBoxSizeBefore(Length); // void setBoxSizeAfter(Length); void setPositionPointShift( const LengthSpec & ); // void setStartMargin(const LengthSpec &); // void setEndMargin(const LengthSpec &); // void setSidelineSep(const LengthSpec &); // void setAsisWrapIndent(const LengthSpec &); // void setLineNumberSep(const LengthSpec &); // void setLastLineJustifyLimit(const LengthSpec &); // void setJustifyGlyphSpaceMaxAdd(const LengthSpec &); // void setJustifyGlyphSpaceMaxRemove(const LengthSpec &); // void setTableCornerRadius(const LengthSpec &); // void setBoxCornerRadius(const LengthSpec &); // void setMarginaliaSep(const LengthSpec &); // void setMinPreLineSpacing(const OptLengthSpec &); // void setMinPostLineSpacing(const OptLengthSpec &); void setMinLeading( const OptLengthSpec & ); // void setInhibitLineBreaks(bool); void setHyphenate( bool ); void setKern( bool ); // void setLigature(bool); // void setScoreSpaces(bool); // void setFloatOutMarginalia(bool); // void setFloatOutSidelines(bool); // void setFloatOutLineNumbers(bool); // void setCellBackground(bool); // void setSpanWeak(bool); // void setIgnoreRecordEnd(bool); // void setNumberedLines(bool); // void setHangingPunct(bool); // void setBoxOpenEnd(bool); // void setTruncateLeader(bool); // void setAlignLeader(bool); // void setTablePartOmitMiddleHeader(bool); // void setTablePartOmitMiddleFooter(bool); void setBorderOmitAtBreak(bool); // void setPrincipalModeSimultaneous(bool); // void setMarginaliaKeepWithPrevious(bool); // void setGridEquidistantRows(bool); // void setGridEquidistantColumns(bool); // void setLineJoin(Symbol); void setLineCap( Symbol ); // void setLineNumberSide(Symbol); // void setKernMode(Symbol); void setInputWhitespaceTreatment( Symbol ); // void setFillingDirection(Symbol); // void setWritingMode(Symbol); // void setLastLineQuadding(Symbol); // void setMathDisplayMode(Symbol); // void setScriptPreAlign(Symbol); // void setScriptPostAlign(Symbol); // void setScriptMidSupAlign(Symbol); // void setScriptMidSubAlign(Symbol); // void setNumeratorAlign(Symbol); // void setDenominatorAlign(Symbol); // void setGridPositionCellType(Symbol); // void setGridColumnAlignment(Symbol); // void setGridRowAlignment(Symbol); // void setBoxType(Symbol); // void setGlyphAlignmentMode(Symbol); // void setBoxBorderAlignment(Symbol); // void setCellRowAlignment(Symbol); // void setBorderAlignment(Symbol); // void setSidelineSide(Symbol); // void setHyphenationKeep(Symbol); // void setPositionPreference(Symbol); // void setFontStructure(Symbol); // void setFontProportionateWidth(Symbol); // void setCellCrossed(Symbol); // void setMarginaliaSide(Symbol); // void setLayer(long); // void setBackgroundLayer(long); void setBorderPriority( long ); void setLineRepeat( long ); void setSpan( long ); // void setMinLeaderRepeat(long); void setHyphenationRemainCharCount( long ); void setHyphenationPushCharCount( long ); void setWidowCount( long ); void setOrphanCount( long ); // void setExpandTabs(long); void setHyphenationLadderCount( long ); // void setBackgroundTile(PublicId); // void setLineBreakingMethod(PublicId); // void setLineCompositionMethod(PublicId); // void setImplicitBidiMethod(PublicId); // void setGlyphSubstMethod(PublicId); // void setGlyphReorderMethod(PublicId); // void setHyphenationMethod(PublicId); // void setTableAutoWidthMethod(PublicId); // void setFontName(PublicId); void setLanguage (Letter2 ); void setCountry( Letter2 ); // void setEscapementSpaceBefore(const InlineSpace &); // void setEscapementSpaceAfter(const InlineSpace &); // void setGlyphSubstTable(const Vector > &); struct DisplayInfo : public Link { DisplayInfo( const DisplayNIC &nic, DisplayInfo *parentDs ) : spaceBefore( nic.spaceBefore), spaceAfter( nic.spaceAfter ), keep( nic.keep ), breakAfter( nic.breakAfter ), breakBefore( nic.breakBefore ), keepWithPrevious( nic.keepWithPrevious ), keepWithNext( nic.keepWithNext ), mayViolateKeepBefore( nic.mayViolateKeepBefore ), isParagraph( false ), mayViolateKeepAfter( nic.mayViolateKeepAfter ), firstParaOutputed( false ), paragraphClosedInMif( false ) { keepWithinPageInEffect = (nic.keep==symbolPage) ? true : (parentDs ? parentDs->keepWithinPageInEffect : false ); } DisplaySpace spaceBefore; DisplaySpace spaceAfter; Symbol keep; Symbol breakBefore; Symbol breakAfter; bool keepWithPrevious; bool keepWithNext; bool mayViolateKeepBefore; bool mayViolateKeepAfter; bool firstParaOutputed; bool isParagraph; bool paragraphClosedInMif; bool keepWithinPageInEffect; }; struct DisplaySpaceInfo : public Link { DisplaySpaceInfo( DisplaySpace space_, Symbol breakType_, bool breakIsAfter_ ) : space( space_ ), breakType( breakType_ ), breakIsAfter( breakIsAfter_ ) {} DisplaySpace space; Symbol breakType; bool breakIsAfter; }; struct EffectiveDisplaySpace { long nominal; long min; long max; long priority; bool conditional; bool force; EffectiveDisplaySpace() { set(); } EffectiveDisplaySpace( long) { set(); } void set( long nominal_ = 0, long min_ = 0, long max_ = 0, long priority_ = 0, bool conditional_ = true, bool force_ = false ) { nominal = nominal_; min = min_; max = max_; priority = priority_; conditional = conditional_; force = force_; } void combine( const EffectiveDisplaySpace ); void clear() { set(); } }; struct TFotSimplePageSequence { TFotSimplePageSequence() : BodyTextFlow( NULL ), FirstHeaderTextFlow( NULL ), FirstFooterTextFlow( NULL ), LeftHeaderTextFlow( NULL ), LeftFooterTextFlow( NULL ), RightHeaderTextFlow( NULL ), RightFooterTextFlow( NULL ) {} MifDoc::TextFlow *BodyTextFlow; MifDoc::TextFlow *FirstHeaderTextFlow; MifDoc::TextFlow *FirstFooterTextFlow; MifDoc::TextFlow *LeftHeaderTextFlow; MifDoc::TextFlow *LeftFooterTextFlow; MifDoc::TextFlow *RightHeaderTextFlow; MifDoc::TextFlow *RightFooterTextFlow; MifDoc::ParagraphFormat paragraphFormat; }; struct Border { Border( bool cellBorder_ = true ) : cellBorder( cellBorder_ ), borderPresent( false ) {} long borderPriority; Length lineThickness; bool borderPresent; long lineRepeat; Length lineSep; bool cellBorder; MifDoc::T_tagstring color; MifDoc::T_tagstring makeMifRuling( MifDoc &mifDoc ); void resolve( Border &adjacentBorder ); void setFromFot(); }; struct Column { Column() : hasWidth( 0 ) {} bool hasWidth; TableLengthSpec width; }; struct Cell { Cell() : missing( false ), MifCell( new MifDoc::Cell ), OverlappingCell( NULL ), nRowsSpanned( 1 ), nColumnsSpanned( 1 ), displaySize( 0 ) {} bool missing; unsigned nColumnsSpanned; unsigned nRowsSpanned; Border beforeRowBorder; Border afterRowBorder; Border beforeColumnBorder; Border afterColumnBorder; long displaySize; Cell *OverlappingCell; MifDoc::Cell &mifCell() { assert( MifCell != NULL ); return *MifCell; } void translate( MifDoc::Cell &mifCell, MifDoc &mifDoc ); protected: MifDoc::Cell *MifCell; }; struct Row { Row() {} Vector Cells; void translate( Vector &mifRows, MifDoc &mifDoc ); }; struct Table; struct TablePart { TablePart() : MifTableNum( 0 ), ParentTable( NULL ), columnsProcessed( false ), needsColumnReprocessing( false ) {} Vector Columns; Vector Header; Vector Body; Vector Footer; void translate( MifDoc &mifDoc ); void processColumns(); void normalizeRows(); void begin( Table &parentTable, MifDoc &mifDoc ); MifDoc::Tbl &mifTable( MifDoc &mifDoc ) { assert( MifTableNum > 0 ); return mifDoc.tbls()[MifTableNum-1]; } Table &parentTable() { assert( ParentTable != NULL ); return *ParentTable; } size_t MifTableNum; Table *ParentTable; bool columnsProcessed; bool needsColumnReprocessing; }; struct Table { Table() : beforeRowBorder( false ), afterRowBorder( false ), beforeColumnBorder( false ), afterColumnBorder( false ), CurCell( NULL ), CurTablePart( NULL ), DefaultTblFormatGenerated( false ), NoTablePartsSeen( true ) {} Vector TableParts; Border beforeRowBorder; Border afterRowBorder; Border beforeColumnBorder; Border afterColumnBorder; // TableNIC nic; Length tableWidth; Symbol displayAlignment; Length startIndent; void resolveBorders( Vector &rows, bool hasFirstTableRow, bool hasLastTableRow ); void begin( MifDoc &mifDoc ); Vector &curRows() { assert( CurRows != NULL ); return *CurRows; } TablePart &curTablePart() { assert( CurTablePart != NULL ); return *CurTablePart; } Cell &curCell() { assert( CurCell != NULL ); return *CurCell; } TablePart *CurTablePart; Cell *CurCell; Vector *CurRows; bool DefaultTblFormatGenerated; bool NoTablePartsSeen; }; struct Format : public MifDoc::ParagraphFormat { Format() : MifDoc::ParagraphFormat(), FotLineSpacingSpec( 12000 ), FotFirstLineStartIndentSpec( 0 ), FotStartIndentSpec( 0 ), FotEndIndentSpec( 0 ), FotLanguage( 0 ), FotCurDisplaySize( 0 ), FotLineThickness( 1000 ), FotBorderPresent( true ), FotLineRepeat( 1 ), FotLineSep( 1000 ), FotBorderPriority( 0 ), FotDisplayAlignment( symbolStart ), FotLeftMargin( 1 ), FotRightMargin( 1 ), FotTopMargin( 0 ), FotBottomMargin( 0 ), FotHeaderMargin( 0 ), FotFooterMargin( 0 ), FotPageWidth( 72000*8 ), FotPageHeight( (72000*23)/2 ), FotLineCap( symbolButt ), FotPositionPointShiftSpec( 0 ), FotMinLeading(), FotFieldAlign( symbolStart ), FotFieldWidth( 0 ), FotLines( symbolWrap ), FotInputWhitespaceTreatment( symbolPreserve ), FotPageNColumns( 1 ), FotPageColumnSep( 72000/2 ), FotSpan( 1 ), FotPageBalanceColumns( false ), FotCellBackground( false ) {} LengthSpec FotFirstLineStartIndentSpec; LengthSpec FotStartIndentSpec; LengthSpec FotEndIndentSpec; LengthSpec FotLineSpacingSpec; LengthSpec FotPositionPointShiftSpec; LengthSpec FotFieldWidth; OptLengthSpec FotMinLeading; long FotCurDisplaySize; Length FotLineThickness; Symbol FotLineCap; long FotBorderPriority; bool FotBorderPresent; long FotLineRepeat; Length FotLineSep; Symbol FotDisplayAlignment; Length FotLeftMargin; Length FotRightMargin; Length FotTopMargin; Length FotBottomMargin; Length FotHeaderMargin; Length FotFooterMargin; Length FotPageWidth; Length FotPageHeight; Symbol FotFieldAlign; Symbol FotInputWhitespaceTreatment; Symbol FotLines; long FotPageNColumns; Length FotPageColumnSep; long FotSpan; bool FotPageBalanceColumns; bool FotCellBackground; MifDoc::T_tagstring MifBackgroundColor; Letter2 FotLanguage; Letter2 FotCountry; void computePgfLanguage(); static const Length INITIAL_PAGE_SIZE() { return 72000*8; } }; struct NodeInfo { NodeInfo() {} NodeInfo( NodePtr node_, unsigned nodeLevel_ ) : node( node_ ), nodeLevel( nodeLevel_ ) {} NodePtr node; unsigned nodeLevel; static unsigned nonEmptyElementsOpened; static unsigned curNodeLevel; }; struct LinkInfo { LinkInfo( MifDoc::CrossRefInfo *crossRefInfo_ = NULL ) : crossRefInfo( crossRefInfo_ ), openedInMif( false ) {} ~LinkInfo() { if( crossRefInfo != NULL ) delete crossRefInfo; } bool forcesNoLink() const { return crossRefInfo != NULL ? false : true; } MifDoc::CrossRefInfo *crossRefInfo; bool openedInMif; static unsigned pendingMifClosings; }; struct SymbolFont { const char *name; Char mapping[256]; }; enum { nSymbolFonts = 3 }; void synchronizeFontFormat(); long computeLengthSpec( const LengthSpec &spec ) const; Format &format() const { Format *result = formatStack.head(); assert( result != NULL ); return *result; } Table &curTable() { return CurTable; } void setCurLeaderStream( MifTmpOutputByteStream *s, bool doDelete = true ) { if( doDelete && CurLeaderStream ) delete CurLeaderStream; CurLeaderStream = s; } MifTmpOutputByteStream &curLeaderStream() { assert( CurLeaderStream != NULL ); return *CurLeaderStream; } CmdLineApp *App; const CharsetInfo *SystemCharset; Ptr EntityManager; bool paragraphBreakInEffect; bool inLeader; bool lastFlowObjectWasWhitespace; bool firstHeaderFooter; bool inSimplePageSequence; bool bookComponentOpened; bool bookComponentAvailable; protected: TFotSimplePageSequence FotSimplePageSequence; Table CurTable; MifDoc::T_pathname systemIdToMifPathname( const StringC &systemId ); bool systemIdToMifPathname( const StringC &systemId, MifDoc::T_pathname & ); int systemIdFilename( const StringC &systemId, StringC &filename ); void initMifBookComponent(); void setupSimplePageSequence(); void beginHeaderFooter( bool header ); void beginHeader() { beginHeaderFooter( true ); } void beginFooter() { beginHeaderFooter( false ); }; void endHeaderFooter( unsigned hfPart ); void makeEmptyTextFlow( MifDoc::TextRect & ); void checkForParagraphReopening(); void outPendingInlineStatements(); void outString( const Char *s, size_t n, MifTmpOutputByteStream *o = NULL, bool inParagraph = true, String *targetString = NULL ); MifDoc::Frame &makeAnchoredFrame ( MifDoc::T_keyword frameType, long width, long height, MifDoc::T_keyword anchorAlign = MifDoc::sLeft ); void setupHeaderFooterParagraphFormat( MifDoc::ParagraphFormat &, MifDoc::ParagraphFormat &, MifDoc::T_dimension ); OutputByteStream &os() { return *outputStream; } MifDoc mifDoc; OutputByteStream *outputStream; MifTmpOutputByteStream *CurLeaderStream; EffectiveDisplaySpace createEffectiveDisplaySpace( const DisplaySpace &ds ) const; IList displayStack; IList formatStack; IQueue displaySpaceQueue; Vector nodeStack; Vector linkStack; Vector indexEntryStack; Format nextFormat; Symbol pendingBreak; EffectiveDisplaySpace pendingEffectiveDisplaySpace; void processDisplaySpaceStack(); void startDisplay( const DisplayNIC & ); void endDisplay(); // sytem font code from James Clark enum { CHAR_TABLE_CHAR_BITS = 16 }; enum { CHAR_TABLE_SYMBOL_FLAG = 1U << 31 }; CharMap CharTable; static const SymbolFont SymbolFonts[nSymbolFonts]; static const Char FrameCharsetMap[128]; }; MifFOTBuilder *MifFOTBuilder::CurInstance = NULL; unsigned MifFOTBuilder::NodeInfo::nonEmptyElementsOpened = 0; unsigned MifFOTBuilder::NodeInfo::curNodeLevel = 0; unsigned MifFOTBuilder::LinkInfo::pendingMifClosings = 0; int operator ==(struct FOTBuilder::DisplayNIC, struct FOTBuilder::DisplayNIC) { return 0; } void MifFOTBuilder::start() { NodeInfo::nonEmptyElementsOpened = nodeStack.size(); Format *effectiveFormat = new Format( nextFormat ); if( nextFormat.FSize > 0 ) effectiveFormat->setFDY ( double( computeLengthSpec( nextFormat.FotPositionPointShiftSpec ) * -100 ) / nextFormat.FSize ); formatStack.insert( effectiveFormat ); } void MifFOTBuilder::end() { assert( formatStack.head() != NULL ); delete formatStack.get(); assert( formatStack.head() != NULL ); nextFormat = *formatStack.head(); } void MifFOTBuilder::Format::computePgfLanguage() { switch( FotLanguage ) { case SP_LETTER2( 'E', 'N' ): switch( FotCountry ) { case SP_LETTER2( 'G', 'B' ): PgfLanguage = MifDoc::sUKEnglish; break; default: PgfLanguage = MifDoc::sUSEnglish; } break; case SP_LETTER2( 'D', 'E' ): switch( FotCountry ) { case SP_LETTER2( 'C', 'H' ): PgfLanguage = MifDoc::sSwissGerman; break; default: PgfLanguage = MifDoc::sGerman; } case SP_LETTER2( 'F', 'R' ): switch( FotCountry ) { case SP_LETTER2( 'C', 'A' ): PgfLanguage = MifDoc::sCanadianFrench; break; default: PgfLanguage = MifDoc::sFrench; } break; case SP_LETTER2( 'E', 'S' ): PgfLanguage = MifDoc::sSpanish; break; case SP_LETTER2( 'C', 'A' ): PgfLanguage = MifDoc::sCatalan; break; case SP_LETTER2( 'I', 'T' ): PgfLanguage = MifDoc::sItalian; break; case SP_LETTER2( 'P', 'T' ): PgfLanguage = MifDoc::sPortuguese; break; // case SP_LETTER2( '', '' ): // PgfLanguage = sBrazilian; // break; // case SP_LETTER2( '', '' ): // PgfLanguage = sDanish; // break; case SP_LETTER2( 'N', 'L' ): PgfLanguage = MifDoc::sDutch; break; case SP_LETTER2( 'N', 'O' ): PgfLanguage = MifDoc::sNorwegian; break; // case SP_LETTER2( '', '' ): // PgfLanguage = sNynorsk; // break; case SP_LETTER2( 'F', 'I' ): PgfLanguage = MifDoc::sFinnish; break; case SP_LETTER2( 'S', 'V' ): PgfLanguage = MifDoc::sSwedish; break; default: PgfLanguage = MifDoc::sNoLanguage; } } MifFOTBuilder::MifFOTBuilder( const String &fileLoc, const Ptr &entityManager, const CharsetInfo &systemCharset, CmdLineApp *app ) : App( app ), EntityManager( entityManager ), SystemCharset( &systemCharset ), mifDoc( fileLoc, app ), paragraphBreakInEffect( false ), inLeader( false ), CurLeaderStream( NULL ), CharTable( 0 ), lastFlowObjectWasWhitespace( false ), pendingBreak( symbolFalse ), firstHeaderFooter( true ), inSimplePageSequence( false ), bookComponentOpened( false ), bookComponentAvailable( false ) { CurInstance = this; nextFormat.setDSSSLDefaults(); nextFormat.FotCurDisplaySize = Format::INITIAL_PAGE_SIZE() - 2; // 2 is for margins (MIF doesn't accept zero-sized ones) formatStack.insert( new Format( nextFormat ) ); initMifBookComponent(); bookComponentOpened = true; bookComponentAvailable = true; for( int i = 0; i < 128; i++ ) { Char c = FrameCharsetMap[i]; if( c ) { if( !CharTable[i+0x80] ) CharTable.setChar( i+0x80, c ); else if ((CharTable[i+0x80] & ((1 << CHAR_TABLE_CHAR_BITS) - 1)) == c) CharTable.setChar(i+0x80, CharTable[i+0x80] | (1 << (i + CHAR_TABLE_CHAR_BITS))); } } // symbol character code from James Clark for( int i = 0; i < nSymbolFonts; i++ ) { for( int j = 0; j < 256; j++ ) { Char c = SymbolFonts[i].mapping[j]; if( c && !CharTable[c] ) CharTable.setChar( c, j | (i << CHAR_TABLE_CHAR_BITS) | CHAR_TABLE_SYMBOL_FLAG ); } } } void MifFOTBuilder::initMifBookComponent() { MifDoc::ParagraphFormat defaultParaFormat; defaultParaFormat.setDSSSLDefaults(); defaultParaFormat.setPgfTag( MifDoc::sDefaultPgfFormat ); mifDoc.pgfCatalog().ParaFormats.push_back( defaultParaFormat ); mifDoc.document().setDPageSize ( MifDoc::T_WH( MifDoc::T_dimension( format().FotPageWidth ), MifDoc::T_dimension( format().FotPageHeight ) ) ); mifDoc.document().setDMargins( MifDoc::T_LTRB( 1, 1, 1, 1 ) ); // MIF doesn't accept zeros mifDoc.document().setDColumns( 1 ); } long MifFOTBuilder::computeLengthSpec( const LengthSpec &spec ) const { if( spec.displaySizeFactor == 0.0 ) { return spec.length; } else { double tem = format().FotCurDisplaySize * spec.displaySizeFactor; return spec.length + long( tem >= 0.0 ? tem +.5 : tem - .5 ); } } MifFOTBuilder::EffectiveDisplaySpace MifFOTBuilder::createEffectiveDisplaySpace( const DisplaySpace &ds ) const { EffectiveDisplaySpace result; result.set( computeLengthSpec( ds.nominal ), computeLengthSpec( ds.min ), computeLengthSpec( ds.max ), ds.priority, ds.conditional, ds.force ); return result; } void MifFOTBuilder::EffectiveDisplaySpace::combine( const EffectiveDisplaySpace eds ) { if( eds.force ) { if( force ) { nominal += eds.nominal; min += eds.min; max += eds.max; } else *this = eds; } else { if( eds.priority > priority ) *this = eds; else { if( eds.priority == priority ) { if( eds.nominal > nominal ) *this = eds; else if( eds.nominal == nominal ) { if( eds.min < min ) { min = eds.min; } if( eds.max > max ) { max = eds.max; } } } } } } void MifFOTBuilder::synchronizeFontFormat() { if( mifDoc.curPara( false ) != NULL ) { // mifDoc.curPara()->curFormat().ffUpdateFrom( format() ); mifDoc.curPara()->curFormat().ffUpdateFrom( nextFormat ); mifDoc.curPara()->curFormat().ffOut( mifDoc.os(), MifDoc::FontFormat::stFont ); } else { // mifDoc.curFormat().ffUpdateFrom( format() ); mifDoc.curFormat().ffUpdateFrom( nextFormat ); mifDoc.curFormat().ffOut( mifDoc.os(), MifDoc::FontFormat::stFont ); } outPendingInlineStatements(); } void MifFOTBuilder::outString ( const Char *s, size_t n, MifTmpOutputByteStream *o, bool inParagraph, String *targetString ) { MifOutputByteStream *outS = ( o != NULL ) ? &o->stream() : ( ( targetString != NULL ) ? (MifOutputByteStream *)NULL : &mifDoc.os() ); enum { nStr, nCode, nChar, nNothing, nHardReturn, nSpecialChar } nextOut; union { const char *str; unsigned long code; char chr; } out; String out_specialChar; MifDoc::ParagraphFormat *curPFormat = inParagraph ? ( mifDoc.curPara( false ) != NULL ? &mifDoc.curPara()->curFormat() : &mifDoc.curFormat() ) : (MifDoc::ParagraphFormat*)NULL; MifDoc::T_string paraFFamily; if( curPFormat != NULL ) paraFFamily = curPFormat->FFamily; bool stringOpened = false; int prevSymbolFontNum = 0; int curSymbolFontNum = 0; bool thisFlowObjectIsWhitespace; for( ; n > 0; s++, n-- ) { thisFlowObjectIsWhitespace = false; nextOut = nNothing; switch( *s ) { case Char( '\n' ): break; case Char( '\r' ): if( !inParagraph ) { out.chr = ' '; nextOut = nChar; } else { switch( format().FotLines ) { case symbolNone: case symbolWrap: switch( format().FotInputWhitespaceTreatment ) { case symbolIgnore: break; case symbolCollapse: if( lastFlowObjectWasWhitespace ) break; case symbolPreserve: default: out.chr = ' '; nextOut = nChar; } break; default: nextOut = nHardReturn; } thisFlowObjectIsWhitespace = true; } break; case Char( '\t' ): if( !inParagraph ) { out.str = "\\t"; nextOut = nStr; } else { switch( format().FotInputWhitespaceTreatment ) { case symbolIgnore: break; case symbolCollapse: if( lastFlowObjectWasWhitespace ) break; case symbolPreserve: default: out.str = "\\t"; nextOut = nStr; } thisFlowObjectIsWhitespace = true; } break; case Char( '>' ): out.str = "\\>"; nextOut = nStr; break; case Char( '\'' ): out.str = "\\q"; nextOut = nStr; break; case Char( '`' ): out.str = "\\Q"; nextOut = nStr; break; case Char( '\\' ): out.str = "\\\\"; nextOut = nStr; break; case Char( ' ' ): if( !inParagraph ) { out.chr = ' '; nextOut = nChar; } else { switch( format().FotInputWhitespaceTreatment ) { case symbolIgnore: break; case symbolCollapse: if( lastFlowObjectWasWhitespace ) break; case symbolPreserve: default: out.chr = ' '; nextOut = nChar; } thisFlowObjectIsWhitespace = true; } break; case 0x00A0: out_specialChar = MifDoc::sHardSpace; nextOut = nSpecialChar; break; case 0x00A2: out_specialChar = MifDoc::sCent; nextOut = nSpecialChar; break; case 0x00A3: case 0x20A4: out_specialChar = MifDoc::sPound; nextOut = nSpecialChar; break; case 0x00A5: out_specialChar = MifDoc::sYen; nextOut = nSpecialChar; break; case 0x2002: out_specialChar = MifDoc::sEnSpace; nextOut = nSpecialChar; break; case 0x2003: out_specialChar = MifDoc::sEmSpace; nextOut = nSpecialChar; break; case 0x2009: out_specialChar = MifDoc::sThinSpace; nextOut = nSpecialChar; break; case 0x2010: out_specialChar = MifDoc::sSoftHyphen; nextOut = nSpecialChar; break; case 0x2011: out_specialChar = MifDoc::sHardHyphen; nextOut = nSpecialChar; break; case 0x2013: out_specialChar = MifDoc::sEnDash; nextOut = nSpecialChar; break; case 0x2014: out_specialChar = MifDoc::sEmDash; nextOut = nSpecialChar; break; case 0x2020: out_specialChar = MifDoc::sDagger; nextOut = nSpecialChar; break; case 0x2021: out_specialChar = MifDoc::sDoubleDagger; nextOut = nSpecialChar; break; case 0x2022: out_specialChar = MifDoc::sBullet; nextOut = nSpecialChar; break; default: if( *s >= 0x80 ) { unsigned long code = CharTable[*s]; if( code & CHAR_TABLE_SYMBOL_FLAG ) { if( curPFormat != NULL ) { curSymbolFontNum = ( ( code & ~CHAR_TABLE_SYMBOL_FLAG ) >> CHAR_TABLE_CHAR_BITS ) + 1; assert( curSymbolFontNum < nSymbolFonts ); out.code = code & 0xff; nextOut = nCode; } } else if( code ) { out.code = code & 0xff; nextOut = nCode; } } else { out.chr = char( *s ); nextOut = nChar; } } if( nextOut != nNothing ) { if( curSymbolFontNum != prevSymbolFontNum ) { if( stringOpened ) { *outS << "'>"; stringOpened = false; } MifDoc::T_string fontFamily( curSymbolFontNum == 0 ? paraFFamily : MifDoc::T_string( SymbolFonts[ curSymbolFontNum - 1 ].name ) ); curPFormat->setFFamily( fontFamily ); curPFormat->ffOut( *outS, MifDoc::FontFormat::stFont ); } if( curPFormat != NULL && !stringOpened ) { *outS << '\n' << MifOutputByteStream::INDENT << ""; stringOpened = false; } mifDoc.outSpecialChar( MifDoc::sHardReturn, outS ); MifDoc::ParaLine::outEpilog( *outS ); MifDoc::ParaLine::outProlog( *outS ); } break; case nSpecialChar: if( inParagraph ) { if( stringOpened ) { *outS << "'>"; stringOpened = false; } mifDoc.outSpecialChar( out_specialChar, outS ); } break; case nCode: if( targetString != NULL ) mifDoc.outHexChar( out.code, *targetString ); else mifDoc.outHexChar( out.code, outS ); break; break; case nStr: if( targetString != NULL ) targetString->append( out.str, strlen( out.str ) ); else *outS << out.str; break; case nNothing: break; } } prevSymbolFontNum = curSymbolFontNum; lastFlowObjectWasWhitespace = thisFlowObjectIsWhitespace; } if( stringOpened ) *outS << "'>"; if( curSymbolFontNum != 0 ) { curPFormat->setFFamily( paraFFamily ); curPFormat->ffOut( *outS, MifDoc::FontFormat::stFont ); curPFormat->ffSetProperties() &= ~MifDoc::FontFormat::fFFamily; } } void MifFOTBuilder::characters( const Char *s, size_t n ) { checkForParagraphReopening(); if( MifDoc::Para::currentlyOpened ) { if( inLeader ) { outString( s, n, &curLeaderStream(), false ); } else { synchronizeFontFormat(); outString( s, n, NULL, true ); } } } void MifFOTBuilder::checkForParagraphReopening() { DisplayInfo *curDs = displayStack.head(); // assert( curDs != NULL ); if( curDs != NULL && curDs->paragraphClosedInMif ) { Format f = format(); f.setPgfWithPrev( curDs->firstParaOutputed ? curDs->keepWithinPageInEffect : false ); f.setPgfWithNext( false ); // TMAI curDs->firstParaOutputed = true; processDisplaySpaceStack(); switch( pendingBreak ) { case symbolPage: f.setPgfPlacement( MifDoc::sPageTop ); break; case symbolColumn: f.setPgfPlacement( MifDoc::sColumnTop ); break; default: f.setPgfPlacement( MifDoc::sAnywhere ); } pendingBreak = symbolFalse; f.setPgfSpBefore( pendingEffectiveDisplaySpace.nominal ); pendingEffectiveDisplaySpace.clear(); f.setPgfFIndent( nextFormat.PgfLIndent ); MifDoc::Para *p = new MifDoc::Para( mifDoc.curTagStream().content().stream().CurTagIndent + 4 ); p->setParagraphFormat( mifDoc.curFormat() ); p->format().updateFrom( f ); p->format().FSize = mifDoc.curFormat().FSize; p->format().ffSetProperties() &= ~MifDoc::FontFormat::fFSize; Length lineSpacing = computeLengthSpec( f.FotLineSpacingSpec.length ); if( p->format().FSize != lineSpacing ) p->format().setFSize( lineSpacing ); p->curFormat() = p->format(); // assert( mifDoc.curPara( false ) == NULL ); mifDoc.setCurPara( p ); mifDoc.enterPara( *mifDoc.curPara() ); curDs->paragraphClosedInMif = false; } } void MifFOTBuilder::processDisplaySpaceStack() { pendingBreak = symbolFalse; EffectiveDisplaySpace effectiveDisplaySpace; DisplaySpaceInfo *curDSI; while( !displaySpaceQueue.empty() ) { curDSI = displaySpaceQueue.get(); if( curDSI->breakType == symbolPage || curDSI->breakType == symbolColumn ) { effectiveDisplaySpace.clear(); if( pendingBreak != symbolFalse ) mifDoc.outBreakingPara( curDSI->breakType == symbolPage ? MifDoc::sPageTop : MifDoc::sColumnTop ); pendingBreak = curDSI->breakType; if( !curDSI->breakIsAfter ) effectiveDisplaySpace.combine( createEffectiveDisplaySpace( curDSI->space ) ); } else effectiveDisplaySpace.combine( createEffectiveDisplaySpace( curDSI->space ) ); delete curDSI; } pendingEffectiveDisplaySpace = effectiveDisplaySpace; } void MifFOTBuilder::doStartParagraph ( const ParagraphNIC &nic, bool servesAsWrapper, MifDoc::T_dimension height, bool allowNegativeLeading ) { startDisplay( nic ); DisplayInfo *curDs = displayStack.head(); assert( curDs != NULL ); curDs->isParagraph = true; nextFormat.setPgfWithPrev( curDs->mayViolateKeepBefore ? curDs->keepWithPrevious : ( curDs->firstParaOutputed ? curDs->keepWithinPageInEffect : false ) ); nextFormat.setPgfWithNext( curDs->keepWithNext ); curDs->firstParaOutputed = true; processDisplaySpaceStack(); switch( pendingBreak ) { case symbolPage: nextFormat.setPgfPlacement( MifDoc::sPageTop ); break; case symbolColumn: nextFormat.setPgfPlacement( MifDoc::sColumnTop ); break; default: nextFormat.setPgfPlacement( MifDoc::sAnywhere ); } pendingBreak = symbolFalse; Length lineSpacing; Length extraSpaceBefore = 0; if( servesAsWrapper ) { if( height < 2000 ) { // FrameMaker minimum is 2pt if( allowNegativeLeading ) nextFormat.setPgfLeading( height - 2000 ); else pendingEffectiveDisplaySpace.nominal -= ( pendingEffectiveDisplaySpace.nominal > 2000 ) ? 2000 : pendingEffectiveDisplaySpace.nominal; // try to steal as much as possible from space before height = 2000; } //if( effectiveDisplaySpace.nominal <= 0 ) // extraSpaceBefore = 1; // FrameMaker bug workaround //nextFormat.setFSize( height ); lineSpacing = height; nextFormat.setFColor( MifDoc::sWhite ); nextFormat.setPgfLineSpacing( MifDoc::sFixed ); } else { //nextFormat.setFSize( computeLengthSpec( nextFormat.FotLineSpacingSpec.length ) ); lineSpacing = computeLengthSpec( nextFormat.FotLineSpacingSpec.length ); if( nextFormat.FotMinLeading.hasLength ) // but ignore the actual min-leading value nextFormat.PgfLineSpacing = MifDoc::sProportional; else nextFormat.PgfLineSpacing = MifDoc::sFixed; } nextFormat.setPgfSpBefore( pendingEffectiveDisplaySpace.nominal + extraSpaceBefore ); pendingEffectiveDisplaySpace.clear(); nextFormat.setPgfLIndent( computeLengthSpec( nextFormat.FotStartIndentSpec ) ); nextFormat.setPgfFIndent( computeLengthSpec( nextFormat.FotFirstLineStartIndentSpec ) + nextFormat.PgfLIndent ); nextFormat.setPgfRIndent( computeLengthSpec( nextFormat.FotEndIndentSpec ) ); nextFormat.setPgfPlacementStyle ( nextFormat.FotSpan > 1 ? MifDoc::sStraddle : MifDoc::sNormal ); start(); MifDoc::Para *p = new MifDoc::Para( mifDoc.curTagStream().content().stream().CurTagIndent + 4 ); p->setParagraphFormat( mifDoc.curFormat() ); p->format().updateFrom( format() ); p->format().FSize = mifDoc.curFormat().FSize; p->format().ffSetProperties() &= ~MifDoc::FontFormat::fFSize; if( p->format().FSize != lineSpacing ) p->format().setFSize( lineSpacing ); p->curFormat() = p->format(); // assert( mifDoc.curPara( false ) == NULL ); mifDoc.setCurPara( p ); mifDoc.enterPara( *mifDoc.curPara() ); lastFlowObjectWasWhitespace = false; outPendingInlineStatements(); // mifDoc.curFormat().out( mifDoc.os() ); // mifDoc.beginParaLine(); } void MifFOTBuilder::doEndParagraph ( bool sustainFormatStack, bool sustainDisplayStack, bool paragraphBreakTest, bool discardThisPara ) { // mifDoc.endParaLine(); // MifDoc::Para::outEpilog( mifDoc.os() ); DisplayInfo *curDs = displayStack.head(); assert( curDs != NULL ); if( !sustainFormatStack ) end(); if( !sustainDisplayStack ) endDisplay(); if( paragraphBreakTest && paragraphBreakInEffect ) { paragraphBreakInEffect = false; end(); } // Desc: Content of document missing in the debug version // Author: Seshadri // Date: 24th feb 2000 if( !curDs->paragraphClosedInMif ) { MifDoc::Para *p = mifDoc.curPara(); mifDoc.exitPara(); if( !discardThisPara ) { p->out( mifDoc.os() ); mifDoc.curFormat().updateFrom( p->format() ); } delete p; } } void MifFOTBuilder::startDisplayGroup( const DisplayGroupNIC &nic ) { startDisplay( nic ); start(); } void MifFOTBuilder::endDisplayGroup() { end(); endDisplay(); } void MifFOTBuilder::startDisplay( const DisplayNIC &nic ) { if( !inSimplePageSequence ) { if( !bookComponentOpened ) { mifDoc.enterBookComponent(); initMifBookComponent(); bookComponentOpened = true; } bookComponentAvailable = false; } displaySpaceQueue.append ( new DisplaySpaceInfo( nic.spaceBefore, nic.breakBefore, false ) ); DisplayInfo *di = displayStack.head(); if( di != NULL && di->isParagraph && !di->paragraphClosedInMif ) { if( mifDoc.curPara()->content().isEmpty() ) { doEndParagraph( true, true, true, true ); } else doEndParagraph( true, true ); di->paragraphClosedInMif = true; } if( curTable().CurCell != NULL ) nextFormat.FotCurDisplaySize = curTable().CurCell->displaySize; else if( nextFormat.FotSpan > 1 ) nextFormat.FotCurDisplaySize = nextFormat.FotPageWidth - nextFormat.FotLeftMargin - nextFormat.FotRightMargin; else nextFormat.FotCurDisplaySize = ( nextFormat.FotPageWidth - nextFormat.FotLeftMargin - nextFormat.FotRightMargin - nextFormat.FotPageColumnSep * ( nextFormat.FotPageNColumns - 1 ) ) / nextFormat.FotPageNColumns; displayStack.insert( new DisplayInfo( nic, displayStack.head() ) ); } void MifFOTBuilder::endDisplay() { DisplayInfo *di = displayStack.get(); displaySpaceQueue.append ( new DisplaySpaceInfo( di->spaceAfter, di->breakAfter, true ) ); delete di; } void MifFOTBuilder::startSimplePageSequenceSerial() { inSimplePageSequence = true; firstHeaderFooter = true; bool openBookComponent = true; if( bookComponentOpened ) { if( bookComponentAvailable ) { openBookComponent = false; bookComponentAvailable = false; } else mifDoc.exitBookComponent(); } if( openBookComponent ) { mifDoc.enterBookComponent(); initMifBookComponent(); bookComponentOpened = true; bookComponentAvailable = false; } // Desc: Pagesize was being initialized but not set after // the attribute was read . mifDoc.document().setDPageSize ( MifDoc::T_WH( MifDoc::T_dimension( nextFormat.FotPageWidth ), MifDoc::T_dimension( nextFormat.FotPageHeight ) ) ); nextFormat.FotCurDisplaySize = ( nextFormat.FotPageWidth - nextFormat.FotLeftMargin - nextFormat.FotRightMargin - nextFormat.FotPageColumnSep * ( nextFormat.FotPageNColumns - 1 ) ) / nextFormat.FotPageNColumns; mifDoc.document().setDColumns( nextFormat.FotPageNColumns ); if( nextFormat.FotPageNColumns > 1 ) mifDoc.document().setDColumnGap( nextFormat.FotPageColumnSep ); mifDoc.document().setProperties &= ~MifDoc::Document::fDMargins; start(); FotSimplePageSequence.paragraphFormat = format(); } void MifFOTBuilder::endSimplePageSequenceSerial() { end(); mifDoc.exitTextFlow(); mifDoc.exitBookComponent(); inSimplePageSequence = false; bookComponentOpened = false; bookComponentAvailable = false; } void MifFOTBuilder::makeEmptyTextFlow( MifDoc::TextRect &textRect ) { MifDoc::TextFlow &textFlow = *(new MifDoc::TextFlow( textRect, true )); mifDoc.textFlows().push_back( textFlow ); mifDoc.enterTextFlow( textFlow ); MifDoc::Para::outSimpleProlog( mifDoc.os() ); MifDoc::ParaLine::outProlog( mifDoc.os() ); MifDoc::ParaLine::outEpilog( mifDoc.os() ); MifDoc::Para::outEpilog( mifDoc.os() ); mifDoc.exitTextFlow(); } void MifFOTBuilder::beginHeaderFooter( bool header ) { start(); MifDoc::Para p; p.setPgfTag( header ? MifDoc::sHeader : MifDoc::sFooter ); p.setProperties &= ~MifDoc::Para::fParagraphFormat; p.outProlog( mifDoc.os() ); MifDoc::FontFormat ff; ff.setFSize( format().FSize ); ff.out( mifDoc.os(), MifDoc::FontFormat::fFSize, MifDoc::FontFormat::stFont ); mifDoc.beginParaLine(); } void MifFOTBuilder::endHeaderFooter( unsigned hfPart ) { mifDoc.endParaLine(); MifDoc::Para::outEpilog( mifDoc.os() ); // Right header missing beacuse the prev stmt has set // currentlyopened flag to false for a right footer. So reset it. if ( hfPart & rightHF ) { MifDoc::Para::currentlyOpened= true ; } end(); } void MifFOTBuilder::setupSimplePageSequence() { MifDoc::Page &firstMasterPage = *(new MifDoc::Page( MifDoc::sOtherMasterPage, MifDoc::sFirst )); MifDoc::Page &rightMasterPage = *(new MifDoc::Page( MifDoc::sRightMasterPage, MifDoc::sRight )); MifDoc::Page &leftMasterPage = *(new MifDoc::Page( MifDoc::sLeftMasterPage, MifDoc::sLeft )); MifDoc::Page &bodyPage = *(new MifDoc::Page( MifDoc::sBodyPage, MifDoc::sNONE, MifDoc::sFirst )); MifDoc::T_LTWH bodyRect; MifDoc::T_LTWH headerRect; MifDoc::T_LTWH footerRect; bodyRect.l = format().FotLeftMargin; bodyRect.t = format().FotTopMargin; bodyRect.w = format().FotPageWidth - format().FotLeftMargin - format().FotRightMargin; bodyRect.h = format().FotPageHeight - format().FotTopMargin - format().FotBottomMargin; headerRect.l = format().FotLeftMargin; headerRect.t = 0; headerRect.w = bodyRect.w; headerRect.h = format().FotTopMargin; footerRect.l = format().FotLeftMargin; footerRect.t = format().FotPageHeight - format().FotBottomMargin; footerRect.w = bodyRect.w; footerRect.h = format().FotBottomMargin; { MifDoc::TextRect &firstBodyTextRect = *(new MifDoc::TextRect( bodyRect, format().FotPageNColumns, format().FotPageColumnSep, format().FotPageBalanceColumns )); MifDoc::TextRect &rightBodyTextRect = *(new MifDoc::TextRect( bodyRect, format().FotPageNColumns, format().FotPageColumnSep, format().FotPageBalanceColumns)); MifDoc::TextRect &leftBodyTextRect = *(new MifDoc::TextRect( bodyRect, format().FotPageNColumns, format().FotPageColumnSep, format().FotPageBalanceColumns )); MifDoc::TextRect &bodyTextRect = *(new MifDoc::TextRect( bodyRect, format().FotPageNColumns, format().FotPageColumnSep, format().FotPageBalanceColumns )); MifDoc::TextRect &firstHeaderTextRect = *(new MifDoc::TextRect( headerRect )); MifDoc::TextRect &rightHeaderTextRect = *(new MifDoc::TextRect( headerRect )); MifDoc::TextRect &leftHeaderTextRect = *(new MifDoc::TextRect( headerRect )); MifDoc::TextRect &firstFooterTextRect = *(new MifDoc::TextRect( footerRect )); MifDoc::TextRect &rightFooterTextRect = *(new MifDoc::TextRect( footerRect )); MifDoc::TextRect &leftFooterTextRect = *(new MifDoc::TextRect( footerRect )); firstMasterPage.TextRects.push_back( firstHeaderTextRect ); firstMasterPage.TextRects.push_back( firstBodyTextRect ); firstMasterPage.TextRects.push_back( firstFooterTextRect ); rightMasterPage.TextRects.push_back( rightHeaderTextRect ); rightMasterPage.TextRects.push_back( rightBodyTextRect ); rightMasterPage.TextRects.push_back( rightFooterTextRect ); leftMasterPage.TextRects.push_back( leftHeaderTextRect ); leftMasterPage.TextRects.push_back( leftBodyTextRect ); leftMasterPage.TextRects.push_back( leftFooterTextRect ); bodyPage.TextRects.push_back( bodyTextRect ); mifDoc.pages().push_back( bodyPage ); mifDoc.pages().push_back( firstMasterPage ); mifDoc.pages().push_back( rightMasterPage ); mifDoc.pages().push_back( leftMasterPage ); MifDoc::ParagraphFormat headerPF; headerPF.setDSSSLDefaults(); MifDoc::ParagraphFormat footerPF; footerPF.setDSSSLDefaults(); setupHeaderFooterParagraphFormat( headerPF, footerPF, bodyRect.w ); FotSimplePageSequence.BodyTextFlow = new MifDoc::TextFlow( bodyTextRect, true, &FotSimplePageSequence.paragraphFormat, MifDoc::sDefaultPgfFormat ); FotSimplePageSequence.FirstHeaderTextFlow = new MifDoc::TextFlow( firstHeaderTextRect, false, &headerPF, MifDoc::sHeader ); FotSimplePageSequence.FirstFooterTextFlow = new MifDoc::TextFlow( firstFooterTextRect, false, &footerPF, MifDoc::sFooter ); FotSimplePageSequence.LeftHeaderTextFlow = new MifDoc::TextFlow( leftHeaderTextRect, false, &headerPF, MifDoc::sHeader ); FotSimplePageSequence.LeftFooterTextFlow = new MifDoc::TextFlow( leftFooterTextRect, false, &footerPF, MifDoc::sFooter ); FotSimplePageSequence.RightHeaderTextFlow = new MifDoc::TextFlow( rightHeaderTextRect, false, &headerPF, MifDoc::sHeader ); FotSimplePageSequence.RightFooterTextFlow = new MifDoc::TextFlow( rightFooterTextRect, false, &footerPF, MifDoc::sFooter ); makeEmptyTextFlow( firstBodyTextRect ); makeEmptyTextFlow( leftBodyTextRect ); makeEmptyTextFlow( rightBodyTextRect ); mifDoc.textFlows().push_back( *FotSimplePageSequence.BodyTextFlow ); mifDoc.textFlows().push_back( *FotSimplePageSequence.FirstHeaderTextFlow ); mifDoc.textFlows().push_back( *FotSimplePageSequence.FirstFooterTextFlow ); mifDoc.textFlows().push_back( *FotSimplePageSequence.LeftHeaderTextFlow ); mifDoc.textFlows().push_back( *FotSimplePageSequence.LeftFooterTextFlow ); mifDoc.textFlows().push_back( *FotSimplePageSequence.RightHeaderTextFlow ); mifDoc.textFlows().push_back( *FotSimplePageSequence.RightFooterTextFlow ); mifDoc.document().setDTwoSides( true ); mifDoc.document().setDParity( MifDoc::sFirstRight ); } mifDoc.enterTextFlow( *FotSimplePageSequence.BodyTextFlow ); } void MifFOTBuilder::startSimplePageSequenceHeaderFooter( unsigned hfPart ) { if( firstHeaderFooter ) { setupSimplePageSequence(); firstHeaderFooter = false; } MifDoc::TextFlow *curTextFlow; if( hfPart & firstHF ) if( hfPart & frontHF ) if( hfPart & headerHF ) curTextFlow = FotSimplePageSequence.FirstHeaderTextFlow; else curTextFlow = FotSimplePageSequence.FirstFooterTextFlow; else return; else if( hfPart & frontHF ) if( hfPart & headerHF ) curTextFlow = FotSimplePageSequence.RightHeaderTextFlow; else curTextFlow = FotSimplePageSequence.RightFooterTextFlow; else if( hfPart & headerHF ) curTextFlow = FotSimplePageSequence.LeftHeaderTextFlow; else curTextFlow = FotSimplePageSequence.LeftFooterTextFlow; mifDoc.enterTextFlow( *curTextFlow ); if( hfPart & (centerHF | rightHF) ) mifDoc.outSpecialChar( MifDoc::sTab ); else // leftHF (hfPart & headerHF) ? beginHeader() : beginFooter(); } void MifFOTBuilder::endSimplePageSequenceHeaderFooter( unsigned hfPart ) { if( hfPart & rightHF && (hfPart & frontHF || !(hfPart & firstHF)) ) { endHeaderFooter(hfPart); } if( !(hfPart & firstHF) || hfPart & frontHF ) mifDoc.exitTextFlow(); } void MifFOTBuilder::setupHeaderFooterParagraphFormat ( MifDoc::ParagraphFormat &hpf, MifDoc::ParagraphFormat &fpf, MifDoc::T_dimension textRectWidth ) { MifDoc::TabStop centerTS( MifDoc::sCenter, textRectWidth / 2 ); MifDoc::TabStop rightTS( MifDoc::sRight, textRectWidth ); hpf.setFrom( FotSimplePageSequence.paragraphFormat, 0, MifDoc::FontFormat::fAll ); hpf.TabStops.push_back( centerTS ); hpf.TabStops.push_back( rightTS ); hpf.setProperties |= MifDoc::ParagraphFormat::fTabStops; fpf = hpf; hpf.setFSize( ( ( format().FotBottomMargin - format().FotFooterMargin ) * 3 ) / 2 ); fpf.setFSize( ( format().FotHeaderMargin * 3 ) / 2 ); hpf.setPgfTag( MifDoc::sHeader ); fpf.setPgfTag( MifDoc::sFooter ); mifDoc.pgfCatalog().ParaFormats.push_back( hpf ); mifDoc.pgfCatalog().ParaFormats.push_back( fpf ); hpf.clearSetProperties(); fpf.clearSetProperties(); } void MifFOTBuilder::endAllSimplePageSequenceHeaderFooter() { // mifDoc.enterTextFlow( *FotSimplePageSequence.BodyTextFlow ); } inline void MifFOTBuilder::pageNumber() { mifDoc.outPageNumber(); } // --------- MifFOTBuilder::Table --------------------------------------------- void MifFOTBuilder::Table::resolveBorders ( Vector &rows, bool hasFirstTableRow, bool hasLastTableRow ) { bool isFirstRow; bool isLastRow; bool isFirstColumn; bool isLastColumn; Cell *cell = NULL; size_t r, c, rr, cc; bool leftEdge, topEdge; for( r = 0; r < rows.size(); r++ ) { for( c = 0; c < rows[r].Cells.size()-1; c++ ) { cell = &rows[r].Cells[c]; if( cell->OverlappingCell == NULL ) { for( rr = r; rr < r + cell->nRowsSpanned; rr++ ) { for( cc = c, leftEdge = true; cc < c + cell->nColumnsSpanned; cc++ ) { rows[rr].Cells[cc].OverlappingCell = cell; } } } } } for( r = 0; r < rows.size(); r++ ) { for( c = 0; c < rows[r].Cells.size() - 1; c++ ) { cell = &rows[r].Cells[c]; if( cell->OverlappingCell == cell ) { for( rr = r, topEdge = true; rr < r + cell->nRowsSpanned; rr++ ) { isFirstRow = ( rr == 0 ) ? true : false; isLastRow = ( rr == rows.size() - 1 ) ? true : false; for( cc = c, leftEdge = true; cc < c + cell->nColumnsSpanned; cc++ ) { isFirstColumn = ( cc == 0 ) ? true : false; isLastColumn = ( cc == rows[rr].Cells.size() - 2 ) ? true : false; if( leftEdge ) if( isFirstColumn ) { cell->beforeColumnBorder.resolve( beforeColumnBorder ); } else cell->beforeColumnBorder.resolve ( rows[rr].Cells[cc-1].OverlappingCell->afterColumnBorder ); if( topEdge ) if( isFirstRow && hasFirstTableRow ) cell->beforeRowBorder.resolve( beforeRowBorder ); else if( !isFirstRow ) cell->beforeRowBorder.resolve ( rows[rr-1].Cells[cc].OverlappingCell->afterRowBorder ); if( isLastColumn ) cell->afterColumnBorder.resolve( afterColumnBorder ); if( isLastRow && hasLastTableRow ) cell->afterRowBorder.resolve( afterRowBorder ); leftEdge = false; } topEdge = false; } } } } } void MifFOTBuilder::Table::begin( MifDoc &mifDoc ) { CurCell = NULL; NoTablePartsSeen = true; TableParts.resize( 0 ); TableParts.resize( 1 ); TableParts.back().begin( *this, mifDoc ); } // --------- MifFOTBuilder::TablePart ----------------------------------------- void MifFOTBuilder::TablePart::begin( Table &parent, MifDoc &mifDoc ) { Columns.resize( 0 ); Header.resize( 0 ); Body.resize( 0 ); Footer.resize( 0 ); columnsProcessed = false; needsColumnReprocessing = false; ParentTable = &parent; parentTable().CurRows = &Body; parentTable().CurTablePart = this; if( MifTableNum == 0 ) { mifDoc.tbls().resize( mifDoc.tbls().size() + 1 ); MifTableNum = mifDoc.tbls().size(); MifDoc::CurInstance->setCurTblNum( MifTableNum ); } } void MifFOTBuilder::TablePart::translate( MifDoc &mifDoc ) { if( needsColumnReprocessing ) processColumns(); MifDoc::Tbl &mifTbl = mifTable( mifDoc ); if( parentTable().startIndent != 0 ) { // DSSSL default mifTbl.tblFormat.setTblLIndent( parentTable().startIndent ); mifTbl.setProperties |= MifDoc::Tbl::fTblFormat; } if( parentTable().displayAlignment != symbolStart ) { mifTbl.setProperties |= MifDoc::Tbl::fTblFormat; MifDoc::T_keyword mifAlignment = MifDoc::sLeft; switch( parentTable().displayAlignment ) { case symbolStart: mifAlignment = MifDoc::sLeft; break; case symbolEnd: mifAlignment = MifDoc::sRight; break; case symbolCenter: mifAlignment = MifDoc::sCenter; break; case symbolInside: mifAlignment = MifDoc::sInside; break; case symbolOutside: mifAlignment = MifDoc::sOutside; break; default: assert( false ); } mifTbl.tblFormat.setTblAlignment( mifAlignment ); } bool putHeaderInBody = Body.size() == 0 && Header.size() > 0; bool putFooterInBody = !putHeaderInBody && Body.size() == 0 && Footer.size() > 0; for( size_t i = 0; i < Header.size(); i++ ) Header[i].translate( putHeaderInBody ? mifTbl.TblBody : mifTbl.TblH, mifDoc ); for( size_t i = 0; i < Body.size(); i++) Body[i].translate( mifTbl.TblBody, mifDoc ); for( size_t i = 0; i < Footer.size(); i++ ) Footer[i].translate( putFooterInBody ? mifTbl.TblBody : mifTbl.TblF, mifDoc ); } void MifFOTBuilder::TablePart::processColumns() { MifDoc::Tbl &mifTbl = mifTable( *MifDoc::CurInstance ); mifTbl.setTblNumColumns( 0 ); mifTbl.setTblNumColumns( Columns.size() ); mifTbl.TblColumnWidths.resize( 0 ); mifTbl.TblColumnWidths.resize( Columns.size() ); mifTbl.TblColumnWidthsAreSet(); long totalNonproportionalWidth = 0L; double totalProportionalUnits = 0.0; for( size_t i = 0; i < Columns.size(); i++ ) { if( Columns[i].hasWidth ) { if( Columns[i].width.tableUnitFactor ) { totalProportionalUnits += Columns[i].width.tableUnitFactor; } else { mifTbl.TblColumnWidths[i] = MifFOTBuilder::curInstance().computeLengthSpec( Columns[i].width ); totalNonproportionalWidth += mifTbl.TblColumnWidths[i]; } } } double proportionalUnit = 0.0; if( totalProportionalUnits ) proportionalUnit = ( parentTable().tableWidth - totalNonproportionalWidth ) / totalProportionalUnits; for( size_t i = 0; i < Columns.size(); i++ ) { if( Columns[i].hasWidth ) { if( Columns[i].width.tableUnitFactor ) mifTbl.TblColumnWidths[i] = long(proportionalUnit * Columns[i].width.tableUnitFactor); } else mifTbl.TblColumnWidths[i] = long(proportionalUnit); } columnsProcessed = true; } void MifFOTBuilder::TablePart::normalizeRows() { size_t maxCellsInRow = Columns.size()+1; Vector *rows; for( int step = 0; step < 2; step++ ) { for( int rowType = 0; rowType < 3; rowType++ ) { switch( rowType ) { case 0: rows = &Header; break; case 1: rows = &Body; break; default: rows = &Footer; } for( size_t r = 0; r < rows->size(); r++ ) { if( step == 0 ) { if( (*rows)[r].Cells.size() > 1 ) { size_t lastCellIdx = (*rows)[r].Cells.size()-2; Cell &lastCell = (*rows)[r].Cells[lastCellIdx]; if( !lastCell.missing && lastCellIdx+lastCell.nColumnsSpanned+1 > maxCellsInRow ) maxCellsInRow = lastCellIdx+lastCell.nColumnsSpanned+1; } } else if( (*rows)[r].Cells.size() < maxCellsInRow ) (*rows)[r].Cells.resize( maxCellsInRow ); } } } } // --------- MifFOTBuilder::Row ----------------------------------------------- void MifFOTBuilder::Row::translate( Vector &mifRows, MifDoc &mifDoc ) { mifRows.resize( mifRows.size() + 1 ); MifDoc::Row &mifRow = mifRows.back(); mifRow.Cells.resize( Cells.size() - 1 ); for( size_t i = 0; i + 1 < Cells.size(); i++ ) { Cells[i].translate( Cells[i].mifCell(), mifDoc ); mifRow.Cells[i] = Cells[i].mifCell(); } } // --------- MifFOTBuilder::Cell ---------------------------------------------- void MifFOTBuilder::Cell::translate( MifDoc::Cell &mifCell, MifDoc &mifDoc ) { MifDoc::T_tagstring rulingTag; rulingTag = beforeRowBorder.makeMifRuling( mifDoc ); if( rulingTag.size() ) mifCell.setCellTRuling( rulingTag ); rulingTag = afterRowBorder.makeMifRuling( mifDoc ); if( rulingTag.size() ) mifCell.setCellBRuling( rulingTag ); rulingTag = beforeColumnBorder.makeMifRuling( mifDoc ); if( rulingTag.size() ) mifCell.setCellLRuling( rulingTag ); rulingTag = afterColumnBorder.makeMifRuling( mifDoc ); if( rulingTag.size() ) mifCell.setCellRRuling( rulingTag ); } // --------- MifFOTBuilder::Border -------------------------------------------- void MifFOTBuilder::Border::setFromFot() { MifFOTBuilder::Format &f = MifFOTBuilder::curInstance().format(); borderPriority = f.FotBorderPriority; borderPresent = f.FotBorderPresent; lineThickness = f.FotLineThickness; lineRepeat = f.FotLineRepeat; lineSep = f.FotLineSep; color = f.FColor; } MifDoc::T_tagstring MifFOTBuilder::Border::makeMifRuling( MifDoc &mifDoc ) { MifDoc::T_tagstring result; if( borderPresent ) { MifDoc::Ruling *mifRuling = new MifDoc::Ruling; mifRuling->setRulingPenWidth( lineThickness ); mifRuling->setRulingLines( lineRepeat >= 2 ? 2 : lineRepeat ); mifRuling->setRulingGap( lineRepeat >= 2 ? lineSep - lineThickness : 0 ); mifRuling->setRulingColor( color ); result = MifDoc::T_tagstring( mifRuling->key( *mifRuling ) ); mifRuling->setRulingTag( result ); if( mifDoc.rulingCatalog().Rulings.lookup( result ) == NULL ) { mifDoc.rulingCatalog().Rulings.insert( mifRuling ); } else delete mifRuling; } return result; } void MifFOTBuilder::Border::resolve( Border &adjacentBorder ) { if( adjacentBorder.borderPriority > borderPriority || ( adjacentBorder.borderPriority == borderPriority && !adjacentBorder.cellBorder && adjacentBorder.borderPresent ) ) { lineThickness = adjacentBorder.lineThickness; borderPresent = adjacentBorder.borderPresent; lineRepeat = adjacentBorder.lineRepeat; lineSep = adjacentBorder.lineSep; color = adjacentBorder.color; if( adjacentBorder.cellBorder ) adjacentBorder.borderPresent = false; } } //----------------------------------------------------------------------------- void MifFOTBuilder::setFontSize( long n ) { nextFormat.FSize = n; } void MifFOTBuilder::setLineSpacing( const LengthSpec &l ) { nextFormat.FotLineSpacingSpec = l; } void MifFOTBuilder::setFontWeight( Symbol weight ) { if( weight > symbolMedium ) { nextFormat.FWeight = MifDoc::sBold; } else { nextFormat.FWeight = MifDoc::sRegular; } } void MifFOTBuilder::setFontPosture( Symbol posture ) { switch( posture ) { case symbolOblique: case symbolBackSlantedOblique: case symbolItalic: case symbolBackSlantedItalic: nextFormat.FAngle = MifDoc::sItalic; break; default: nextFormat.FAngle = MifDoc::sRegular; } } inline void MifFOTBuilder::setStartIndent( const LengthSpec &l ) { nextFormat.FotStartIndentSpec = l; } inline void MifFOTBuilder::setEndIndent( const LengthSpec &l ) { nextFormat.FotEndIndentSpec = l; } inline void MifFOTBuilder::setFirstLineStartIndent( const LengthSpec &l ) { nextFormat.FotFirstLineStartIndentSpec = l; } void MifFOTBuilder::setQuadding( Symbol quadding ) { switch( quadding ) { case symbolEnd: nextFormat.PgfAlignment = MifDoc::sRight; break; case symbolCenter: nextFormat.PgfAlignment = MifDoc::sCenter; break; case symbolJustify: nextFormat.PgfAlignment = MifDoc::sLeftRight; break; default: // symbolStart nextFormat.PgfAlignment = MifDoc::sLeft; } } inline void MifFOTBuilder::setKern( bool kern ) { nextFormat.FPairKern = kern; } inline void MifFOTBuilder::setLanguage( Letter2 code ) { nextFormat.FotLanguage = code; nextFormat.computePgfLanguage(); } inline void MifFOTBuilder::setCountry( Letter2 code ) { nextFormat.FotCountry = code; nextFormat.computePgfLanguage(); } inline void MifFOTBuilder::setHyphenate( bool hyphenate ) { nextFormat.PgfHyphenate = hyphenate; } inline void MifFOTBuilder::setHyphenationRemainCharCount( long n ) { nextFormat.HyphenMinPrefix = n; } inline void MifFOTBuilder::setHyphenationPushCharCount( long n ) { nextFormat.HyphenMinSuffix = n; } inline void MifFOTBuilder::setHyphenationLadderCount( long n ) { nextFormat.HyphenMaxLines = n; } void MifFOTBuilder::setFontFamilyName( const StringC &s ) { nextFormat.FFamily.resize( 0 ); for( size_t i = 0; i < s.size(); i++ ) nextFormat.FFamily += char(s[i]); } inline void MifFOTBuilder::setWidowCount( long n ) { nextFormat.PgfBlockSize = n; } inline void MifFOTBuilder::setOrphanCount( long n ) { nextFormat.PgfBlockSize = n; } inline void MifFOTBuilder::setPageWidth( Length pWidth ) { nextFormat.FotPageWidth = pWidth; } inline void MifFOTBuilder::setPageHeight( Length pHeight ) { nextFormat.FotPageHeight = pHeight; } inline void MifFOTBuilder::setLeftMargin( Length leftM ) { nextFormat.FotLeftMargin = leftM; } inline void MifFOTBuilder::setRightMargin( Length rightM ) { nextFormat.FotRightMargin = rightM; } inline void MifFOTBuilder::setTopMargin( Length topM ) { nextFormat.FotTopMargin = topM; } inline void MifFOTBuilder::setBottomMargin( Length bottomM ) { nextFormat.FotBottomMargin = bottomM; } void MifFOTBuilder::setHeaderMargin( Length headerM ) { nextFormat.FotHeaderMargin = headerM; } void MifFOTBuilder::setFooterMargin( Length footerM ) { nextFormat.FotFooterMargin = footerM; } void MifFOTBuilder::setDisplayAlignment( Symbol alignment ) { nextFormat.FotDisplayAlignment = alignment; } //--------- LEADERS ----------------------------------------------------------- void MifFOTBuilder::startLeader( const LeaderNIC & ) { checkForParagraphReopening(); lastFlowObjectWasWhitespace = false; mifDoc.outSpecialChar( MifDoc::sTab ); inLeader = true; setCurLeaderStream( new MifTmpOutputByteStream() ); } void MifFOTBuilder::endLeader() { if( !mifDoc.curPara()->leaderTabsSet ) { String leaderStr; curLeaderStream().commit( leaderStr ); int numTabs = mifDoc.curFormat().PgfNumTabs + 1; mifDoc.curFormat().setPgfNumTabs( numTabs ); mifDoc.curPara()->format().TabStops.push_back ( MifDoc::TabStop( MifDoc::sRight, format().FotCurDisplaySize - mifDoc.curFormat().PgfRIndent - 1, MifDoc::T_string( leaderStr ) ) ); mifDoc.curPara()->format().setPgfNumTabs( numTabs ); mifDoc.curPara()->curFormat().setPgfNumTabs( numTabs ); mifDoc.curPara()->format().setProperties |= MifDoc::ParagraphFormat::fTabStops; mifDoc.curPara()->leaderTabsSet = true; } if( CurLeaderStream ) { delete CurLeaderStream; CurLeaderStream = NULL; } inLeader = false; lastFlowObjectWasWhitespace = false; } //--------- LINE FIELDS ------------------------------------------------------- void MifFOTBuilder::startLineField( const LineFieldNIC & ) { checkForParagraphReopening(); lastFlowObjectWasWhitespace = false; Length fieldWidth = computeLengthSpec( nextFormat.FotFieldWidth ); Length firstLineIndent = mifDoc.curPara()->format().PgfFIndent; bool leadingTab = true; switch( nextFormat.FotFieldAlign ) { case symbolStart: default: mifDoc.curPara()->format().TabStops.push_back ( MifDoc::TabStop( MifDoc::sLeft, firstLineIndent + fieldWidth ) ); leadingTab = false; break; case symbolEnd: mifDoc.curPara()->format().TabStops.push_back ( MifDoc::TabStop( MifDoc::sRight, firstLineIndent + fieldWidth ) ); mifDoc.curPara()->format().TabStops.push_back ( MifDoc::TabStop( MifDoc::sLeft, firstLineIndent + fieldWidth + 1 ) ); break; case symbolCenter: mifDoc.curPara()->format().TabStops.push_back ( MifDoc::TabStop( MifDoc::sCenter, firstLineIndent + fieldWidth / 2 ) ); mifDoc.curPara()->format().TabStops.push_back ( MifDoc::TabStop( MifDoc::sLeft, firstLineIndent + fieldWidth + 1 ) ); } int numTabs = mifDoc.curFormat().PgfNumTabs + leadingTab ? 2 : 1; mifDoc.curFormat().setPgfNumTabs( numTabs ); mifDoc.curPara()->format().setPgfNumTabs( numTabs ); mifDoc.curPara()->curFormat().setPgfNumTabs( numTabs ); mifDoc.curPara()->format().setProperties |= MifDoc::ParagraphFormat::fTabStops; start(); if( leadingTab ) mifDoc.outSpecialChar( MifDoc::sTab ); } void MifFOTBuilder::endLineField() { mifDoc.outSpecialChar( MifDoc::sTab ); end(); lastFlowObjectWasWhitespace = false; } //--------- PARAGRAPH BREAKS -------------------------------------------------- void MifFOTBuilder::paragraphBreak( const ParagraphNIC &nic ) { if( MifDoc::Para::currentlyOpened ) { if( paragraphBreakInEffect ) doEndParagraph( false, false, false ); else { doEndParagraph( true, false, false ); paragraphBreakInEffect = true; } doStartParagraph( nic ); } } //--------- SCORES ------------------------------------------------------------ void MifFOTBuilder::startScore( Symbol scoreType ) { checkForParagraphReopening(); switch( scoreType ) { case symbolBefore: nextFormat.setFOverline( true ); break; case symbolThrough: nextFormat.setFStrike( true ); break; case symbolAfter: default: nextFormat.setFUnderlining ( nextFormat.FotLineRepeat > 1 ? MifDoc::sFDouble : MifDoc::sFSingle ); break; } start(); } void MifFOTBuilder::endScore() { end(); } //--------- ANCHORED FRAMES (GENERAL) ----------------------------------------- MifDoc::Frame &MifFOTBuilder::makeAnchoredFrame ( MifDoc::T_keyword frameType, long width, long height, MifDoc::T_keyword anchorAlign ) { mifDoc.aFrames().resize( mifDoc.aFrames().size() + 1 ); MifDoc::Frame &frame = mifDoc.aFrames().back(); frame.setFrameType( frameType ); frame.setAnchorAlign( anchorAlign ); frame.setShapeRect( MifDoc::T_LTWH( 0, 0, width, height ) ); return frame; } //--------- EXTERNAL GRAPHICS ------------------------------------------------- void MifFOTBuilder::externalGraphic( const ExternalGraphicNIC &nic ) { bool isInline = MifDoc::Para::currentlyOpened ? true : false; if( !isInline ) startDisplay( nic ); start(); MifDoc::T_pathname mifPathname; if( systemIdToMifPathname( nic.entitySystemId, mifPathname ) ) { MifDoc::T_keyword mifAlignment = MifDoc::sLeft; switch( format().FotDisplayAlignment ) { case symbolStart: mifAlignment = MifDoc::sLeft; break; case symbolEnd: mifAlignment = MifDoc::sRight; break; case symbolCenter: mifAlignment = MifDoc::sCenter; break; case symbolInside: mifAlignment = MifDoc::sInside; break; case symbolOutside: mifAlignment = MifDoc::sOutside; break; default: assert( false ); } MifDoc::Frame &frame = makeAnchoredFrame( isInline ? MifDoc::sInline : MifDoc::sBelow, nic.hasMaxWidth ? computeLengthSpec( nic.maxWidth ) : 72000, nic.hasMaxHeight ? computeLengthSpec( nic.maxHeight ) : 72000, mifAlignment ); MifDoc::ImportObject *importObject = new MifDoc::ImportObject( mifPathname, frame.ShapeRect ); frame.Objects.resize( frame.Objects.size() + 1 ); frame.Objects.back() = importObject; if( !isInline ) doStartParagraph( nic, true, 0, false ); else checkForParagraphReopening(); mifDoc.outAFrame( frame.ID, mifDoc.os() ); if( !isInline ) endParagraph(); else lastFlowObjectWasWhitespace = false; } end(); if( !isInline ) endDisplay(); } enum TComponent { cName, cUp, cRoot, cRootDrive }; void addComponent( MifDoc::T_pathname &target, TComponent cType, StringC &component ) { target += '<'; target += cType == cName ? 'c' : ( cType == cUp ? 'u' : 'r' ); target += '\\'; target += '>'; if( cType == cName || cType == cRootDrive ) for( size_t i = 0; i < component.size(); i++ ) target += char( component[i] ); } bool MifFOTBuilder::systemIdToMifPathname ( const StringC &systemId, MifDoc::T_pathname &mifPathname ) { StringC filename; StringC component; int result; if( ( result = systemIdFilename( systemId, filename ) ) < 0 ) { App->message( MifMessages::systemIdNotFilename, StringMessageArg( systemId ) ); return false; } else { bool firstComponent = true; size_t i = 0; do { component.resize( 0 ); while( i < filename.size() && filename[i] != '\\' && filename[i] != '/' ) component += char( filename[i++] ); switch( component.size() ) { case 2: if( firstComponent && component[1] == ':' ) addComponent( mifPathname, cRootDrive, component ); else if( component[0] == '.' && component[1] == '.' ) addComponent( mifPathname, cUp, component ); else goto add_component; break; case 1: if( component[0] != '.' ) goto add_component; break; case 0: if( firstComponent && filename.size() > 0 ) addComponent( mifPathname, cRoot, component ); break; add_component: default: addComponent( mifPathname, cName, component ); } firstComponent = false; i++; } while( i < filename.size() ); } return result == 0 ? false : true; } // System Id Resolution from James Clark // Return -1 if an error should be generated // FIXME in some cases should copy the entity into a file in the same // directory as the output file. int MifFOTBuilder::systemIdFilename(const StringC &systemId, StringC &filename) { if (systemId.size() == 0) return -1; Owner in(EntityManager->open(systemId, *SystemCharset, InputSourceOrigin::make(), 0, *App)); if (!in) return 0; Xchar c = in->get(*App); StorageObjectLocation soLoc; ParsedSystemId parsedBuf; if (c == InputSource::eE && in->accessError()) { if (!EntityManager->parseSystemId(systemId, *SystemCharset, 0, 0, *App, parsedBuf)) return 0; if (parsedBuf.size() != 1 || parsedBuf[0].baseId.size()) return 0; soLoc.storageObjectSpec = &parsedBuf[0]; soLoc.actualStorageId = parsedBuf[0].specId; } else { const Location &loc = in->currentLocation(); if (loc.origin().isNull()) return -1; const InputSourceOrigin *tem = loc.origin()->asInputSourceOrigin(); if (!tem) return -1; const ParsedSystemId *psi = ExtendEntityManager::externalInfoParsedSystemId(tem->externalInfo()); if (!psi || psi->size() != 1) return -1; if (!ExtendEntityManager::externalize(tem->externalInfo(), 0, soLoc)) return -1; } if (strcmp(soLoc.storageObjectSpec->storageManager->type(), "OSFILE") != 0) return -1; filename = soLoc.actualStorageId; return 1; } //--------- RULES ------------------------------------------------------------- void MifFOTBuilder::rule( const RuleNIC &nic ) { bool isInline = ( nic.orientation == symbolHorizontal || nic.orientation == symbolVertical ) ? false : true; if( isInline ) checkForParagraphReopening(); if( !isInline ) startDisplay( nic ); start(); long indentlessDisplaySize = format().FotCurDisplaySize - computeLengthSpec( format().FotStartIndentSpec ) - computeLengthSpec( format().FotEndIndentSpec ); MifDoc::T_dimension ruleHeight = format().FotLineThickness + format().FotLineSep * ( format().FotLineRepeat - 1 ); if( ruleHeight < 0 ) ruleHeight = 0; MifDoc::T_dimension ruleLength; MifDoc::T_dimension ruleOffset; if( nic.hasLength && ( ruleLength = computeLengthSpec( nic.length ) ) > 0 ) { switch( format().FotDisplayAlignment ) { case symbolStart: default: ruleOffset = 0; break; case symbolCenter: ruleOffset = ( indentlessDisplaySize - ruleLength ) / 2; break; case symbolEnd: ruleOffset = indentlessDisplaySize - ruleLength; } } else { ruleOffset = 0; ruleLength = indentlessDisplaySize; } MifDoc::Frame &frame = makeAnchoredFrame( MifDoc::sInline, isInline ? long(ruleLength) : indentlessDisplaySize, ruleHeight ); if( isInline ) frame.setBLOffset( computeLengthSpec( format().FotPositionPointShiftSpec ) ); else frame.setBLOffset( -ruleHeight / 2 + 4000 / 3 ); // min font baseline correction MifDoc::T_keyword capType; switch( format().FotLineCap ) { case symbolButt: default: capType = MifDoc::sButt; break; case symbolRound: capType = MifDoc::sRound; break; case symbolSquare: capType = MifDoc::sSquare; } MifDoc::PolyLine *polyLine; Length curLineVOffset = format().FotLineThickness / 2; for( long i = format().FotLineRepeat; i > 0; i--, curLineVOffset += format().FotLineSep ) { polyLine = new MifDoc::PolyLine( capType, 0, 0, format().FotLineThickness, format().FColor ); frame.Objects.resize( frame.Objects.size() + 1 ); frame.Objects.back() = polyLine; polyLine->setHeadCap( capType ); polyLine->setTailCap( capType ); polyLine->Points.resize( polyLine->Points.size() + 1 ); polyLine->Points.back() = MifDoc::T_XY( ruleOffset, curLineVOffset ); polyLine->Points.resize( polyLine->Points.size() + 1 ); polyLine->Points.back() = MifDoc::T_XY( ruleOffset + ruleLength, curLineVOffset ); } if( !isInline ) doStartParagraph( nic, true, 0, true ); mifDoc.outAFrame( frame.ID, mifDoc.os() ); if( !isInline ) endParagraph(); else lastFlowObjectWasWhitespace = false; end(); if( !isInline ) endDisplay(); } //--------- TABLES ------------------------------------------------------------ void MifFOTBuilder::startTable( const TableNIC &nic ) { startDisplay( nic ); start(); if( !curTable().DefaultTblFormatGenerated ) { MifDoc::TblFormat defaultTblFormat( MifDoc::sDefaultTblFormat ); defaultTblFormat.setDSSSLDefaults(); mifDoc.tblCatalog().TblFormats.push_back( defaultTblFormat ); curTable().DefaultTblFormatGenerated = true; } Length curStartIndent = computeLengthSpec( format().FotStartIndentSpec ); curTable().startIndent = curStartIndent; curTable().begin( mifDoc ); // curTable().nic = nic; curTable().displayAlignment = format().FotDisplayAlignment; if( nic.widthType == TableNIC::widthExplicit ) curTable().tableWidth = computeLengthSpec( nic.width ); else curTable().tableWidth = format().FotCurDisplaySize - curStartIndent - computeLengthSpec( format().FotEndIndentSpec ); doStartParagraph( nic, true, 0 ); endParagraph(); } void MifFOTBuilder::endTable() { bool firstPart, lastPart, hasHeader, hasFooter; for( size_t i = 0; i < curTable().TableParts.size(); i++ ) { firstPart = ( i == 0 ) ? true : false; lastPart = ( i == curTable().TableParts.size() - 1 ) ? true : false; TablePart &tablePart = curTable().TableParts[i]; tablePart.normalizeRows(); hasHeader = tablePart.Header.size() > 0 ? true : false; hasFooter = tablePart.Footer.size() > 0 ? true : false; if( hasHeader ) curTable().resolveBorders( tablePart.Header, firstPart ? true : false, false ); curTable().resolveBorders( tablePart.Body, hasHeader ? false : true, hasFooter ? false : true ); if( hasFooter ) curTable().resolveBorders( tablePart.Footer, false, lastPart ? true : false ); tablePart.translate( mifDoc ); } MifDoc::CurInstance->setCurTblNum( 0 ); endDisplay(); end(); } void MifFOTBuilder::tableColumn( const TableColumnNIC &nic ) { if( nic.columnIndex >= curTable().curTablePart().Columns.size() ) curTable().curTablePart().Columns.resize( nic.columnIndex + 1 ); curTable().curTablePart().Columns[nic.columnIndex].hasWidth = nic.hasWidth; if( nic.hasWidth ) { curTable().curTablePart().Columns[nic.columnIndex].width = nic.width; } } void MifFOTBuilder::startTableRow() { curTable().curRows().resize( curTable().curRows().size() + 1 ); } void MifFOTBuilder::endTableRow() { } void MifFOTBuilder::startTableCell( const TableCellNIC &nic ) { start(); TablePart &tp = curTable().curTablePart(); if( !tp.columnsProcessed ) tp.processColumns(); Vector &Cells = curTable().curRows().back().Cells; if( nic.columnIndex >= Cells.size() ) Cells.resize( nic.columnIndex + 1 ); Cell &cell = Cells[nic.columnIndex]; curTable().CurCell = &cell; cell.missing = nic.missing; if( nic.nColumnsSpanned != 1 ) { cell.nColumnsSpanned = nic.nColumnsSpanned; cell.mifCell().setCellColumns( nic.nColumnsSpanned ); } if( nic.nRowsSpanned != 1 ) { cell.nRowsSpanned = nic.nRowsSpanned; cell.mifCell().setCellRows( nic.nRowsSpanned ); } if( format().FotCellBackground && format().MifBackgroundColor.size() > 0 ) { cell.mifCell().setCellFill( 0 ); cell.mifCell().setCellColor( format().MifBackgroundColor ); } long newDisplaySize = 0; for( size_t i = nic.columnIndex; i < nic.columnIndex + nic.nColumnsSpanned; i++ ) if( i < tp.Columns.size() ) { if( tp.Columns[i].hasWidth ) newDisplaySize += computeLengthSpec( tp.Columns[i].width ); } else if( !nic.missing ) { App->message( MifMessages::missingTableColumnFlowObject ); // NOTE: at this point there's already a danger of not realizing // right display space sizes inside cells tp.Columns.resize( tp.Columns.size() + 1 ); tp.Columns.back().hasWidth = true; TableLengthSpec tls; tls.tableUnitFactor = 1.0; tp.Columns.back().width = tls; tp.needsColumnReprocessing = true; if( (MifDoc::T_integer)i > tp.mifTable( mifDoc ).TblNumColumns ) tp.mifTable( mifDoc ).setTblNumColumns( i ); } newDisplaySize -= format().PgfCellMargins.l + format().PgfCellMargins.r; if( newDisplaySize > 0 ) format().FotCurDisplaySize = newDisplaySize; cell.displaySize = format().FotCurDisplaySize; mifDoc.enterTableCell( cell.mifCell() ); } void MifFOTBuilder::endTableCell() { mifDoc.exitTableCell(); end(); curTable().CurCell = NULL; } void MifFOTBuilder::startTablePartSerial( const TablePartNIC &nic ) { startDisplay( nic ); start(); if( curTable().NoTablePartsSeen ) curTable().NoTablePartsSeen = false; else curTable().TableParts.resize( curTable().TableParts.size() + 1 ); curTable().TableParts.back().begin( curTable(), mifDoc ); doStartParagraph( nic, true, 0 ); endParagraph(); } void MifFOTBuilder::endTablePartSerial() { curTable().CurTablePart = NULL; endDisplay(); end(); } void MifFOTBuilder::startTablePartHeader() { curTable().CurRows = &curTable().curTablePart().Header; } void MifFOTBuilder::endTablePartHeader() { curTable().CurRows = &curTable().curTablePart().Body; } void MifFOTBuilder::startTablePartFooter() { curTable().CurRows = &curTable().curTablePart().Footer; } void MifFOTBuilder::endTablePartFooter() { curTable().CurRows = &curTable().curTablePart().Body; } void MifFOTBuilder::setCellBeforeRowMargin( Length l ) { nextFormat.PgfCellMargins.t = l; } void MifFOTBuilder::setCellAfterRowMargin( Length l ) { nextFormat.PgfCellMargins.b = l; } void MifFOTBuilder::setCellBeforeColumnMargin( Length l ) { nextFormat.PgfCellMargins.l = l; } void MifFOTBuilder::setCellAfterColumnMargin( Length l ) { nextFormat.PgfCellMargins.r = l; } void MifFOTBuilder::setCellRowAlignment( Symbol alignment ) { switch( alignment ) { case symbolEnd: nextFormat.PgfCellAlignment = MifDoc::sBottom; break; case symbolCenter: nextFormat.PgfCellAlignment = MifDoc::sMiddle; break; default: nextFormat.PgfCellAlignment = MifDoc::sTop; break; } } //--------- TABLE BORDERS ----------------------------------------------------- void MifFOTBuilder::setBorderPresent( bool b ) { nextFormat.FotBorderPresent = b; } void MifFOTBuilder::setBorderPriority( long p ) { nextFormat.FotBorderPriority = p; } void MifFOTBuilder::setBorderOmitAtBreak(bool) { } void MifFOTBuilder::tableBeforeRowBorder() { start(); curTable().beforeRowBorder.setFromFot(); end(); } void MifFOTBuilder::tableAfterRowBorder() { start(); curTable().afterRowBorder.setFromFot(); end(); } void MifFOTBuilder::tableBeforeColumnBorder() { start(); curTable().beforeColumnBorder.setFromFot(); end(); } void MifFOTBuilder::tableAfterColumnBorder() { start(); curTable().afterColumnBorder.setFromFot(); end(); } void MifFOTBuilder::tableCellBeforeRowBorder() { start(); curTable().curCell().beforeRowBorder.setFromFot(); end(); } void MifFOTBuilder::tableCellAfterRowBorder() { start(); curTable().curCell().afterRowBorder.setFromFot(); end(); } void MifFOTBuilder::tableCellBeforeColumnBorder() { start(); curTable().curCell().beforeColumnBorder.setFromFot(); end(); } void MifFOTBuilder::tableCellAfterColumnBorder() { start(); curTable().curCell().afterColumnBorder.setFromFot(); end(); } //--------- CROSS-REFERENCES, LINKS, AND INDEX-ENTRIES ------------------------ void MifFOTBuilder::outPendingInlineStatements() { if( linkStack.size() > 1 && linkStack[linkStack.size()-2].openedInMif && !linkStack[linkStack.size()-2].forcesNoLink() ) { LinkInfo::pendingMifClosings++; linkStack[linkStack.size()-2].openedInMif = false; } for( ; LinkInfo::pendingMifClosings > 0; LinkInfo::pendingMifClosings-- ) { MifDoc::Marker marker( MifDoc::T_string( "" ), MifDoc::Marker::Hypertext ); marker.out( mifDoc.os() ); } if( indexEntryStack.size() > 0 ) { indexEntryStack.back().out( mifDoc.os() ); indexEntryStack.resize( indexEntryStack.size() - 1 ); } for( size_t i = 0; i < nodeStack.size(); i++ ) { unsigned long n; if( nodeStack[i].node->elementIndex( n ) == accessOK ) { GroveString id; nodeStack[i].node->getId( id ); unsigned long groveIndex = nodeStack[i].node->groveIndex(); mifDoc.os() << MifDoc::CrossRefInfo ( groveIndex, n, mifDoc.os().CurTagIndent, MifDoc::CrossRefInfo::PotentialMarker, id.data(), id.size() ); if( id.size() > 0 ) mifDoc.elements().setBookComponentIndex ( groveIndex, StringC( id.data(), id.size() ), mifDoc.bookComponents().size() - 1 ); else mifDoc.elements().setBookComponentIndex ( groveIndex, n, mifDoc.bookComponents().size() - 1 ); } } NodeInfo::nonEmptyElementsOpened = 0; nodeStack.resize(0); if( linkStack.size() > 0 && !linkStack.back().openedInMif && !linkStack.back().forcesNoLink() ) { linkStack.back().crossRefInfo->tagIndent = mifDoc.os().CurTagIndent; mifDoc.os() << *linkStack.back().crossRefInfo; linkStack.back().openedInMif = true; } } //--------- LINKS ------------------------------------------------------------- void MifFOTBuilder::startLink( const Address &address ) { switch( address.type ) { case Address::resolvedNode: { unsigned long n; if( address.node->elementIndex( n ) == accessOK ) { GroveString id; address.node->getId( id ); unsigned long groveIndex = address.node->groveIndex(); linkStack.resize( linkStack.size() + 1 ); linkStack.back().crossRefInfo = new MifDoc::CrossRefInfo ( groveIndex, n, 0, MifDoc::CrossRefInfo::HypertextLink, id.data(), id.size() ); if( id.size() > 0 ) mifDoc.elements().setReferencedFlag ( MifDoc::ElementSet::LinkReference, groveIndex, StringC( id.data(), id.size() ) ); else mifDoc.elements().setReferencedFlag ( MifDoc::ElementSet::LinkReference, groveIndex, n ); } break; } case Address::idref: { const StringC &id = address.params[0]; size_t i; for( i = 0; i < id.size(); i++ ) if( id[i] == ' ') break; linkStack.resize( linkStack.size() + 1 ); linkStack.back().crossRefInfo = new MifDoc::CrossRefInfo ( address.node->groveIndex(), 0, 0, MifDoc::CrossRefInfo::HypertextLink, id.data(), i ); mifDoc.elements().setReferencedFlag ( MifDoc::ElementSet::LinkReference, address.node->groveIndex(), StringC( id.data(), i ) ); break; } case Address::none: default: linkStack.resize( linkStack.size() + 1 ); } } void MifFOTBuilder::endLink() { assert( linkStack.size() > 0 ); if( linkStack.back().openedInMif ) LinkInfo::pendingMifClosings++; linkStack.resize( linkStack.size() - 1 ); // MifDoc::Marker marker( MifDoc::T_string( "" ), MifDoc::Marker::Hypertext ); // marker.out( mifDoc.os() ); } //--------- CROSS-REFERENCES -------------------------------------------------- void MifFOTBuilder::startNode( const NodePtr &node, const StringC &mode ) { NodeInfo::curNodeLevel++; if( mode.size() == 0 ) nodeStack.push_back( NodeInfo( node, NodeInfo::curNodeLevel ) ); } void MifFOTBuilder::endNode() { if( nodeStack.size() > 0 && nodeStack.back().nodeLevel == NodeInfo::curNodeLevel && NodeInfo::nonEmptyElementsOpened < nodeStack.size() ) nodeStack.resize( nodeStack.size() - 1 ); NodeInfo::curNodeLevel--; } void MifFOTBuilder::currentNodePageNumber( const NodePtr &node ) { unsigned long n; if( node->elementIndex( n ) == accessOK ) { GroveString id; node->getId( id ); if( !mifDoc.bookComponent().pageNumXRefFormatGenerated ) { mifDoc.bookComponent().XRefFormats.push_back ( MifDoc::XRefFormat( MifDoc::sPageNumXRefFormatName, "<$pagenum\\>" ) ); mifDoc.bookComponent().pageNumXRefFormatGenerated = true; } unsigned long groveIndex = node->groveIndex(); mifDoc.os() << MifDoc::CrossRefInfo ( groveIndex, n, mifDoc.os().CurTagIndent, MifDoc::CrossRefInfo::XRef, id.data(), id.size() ); if( id.size() > 0 ) mifDoc.elements().setReferencedFlag ( MifDoc::ElementSet::PageReference, groveIndex, StringC( id.data(), id.size() ) ); else mifDoc.elements().setReferencedFlag ( MifDoc::ElementSet::PageReference, groveIndex, n ); } } //--------- INDEX-ENTRIES ----------------------------------------------------- void MifFOTBuilder::indexEntry( const IndexEntryNIC &nic ) { MifDoc::T_string mText; if( nic.components.size() > 0 ) { if( !nic.pageNumber ) mText += MifDoc::T_string( "<$nopage>" ); if( nic.startsPageRange ) mText += MifDoc::T_string( "<$startrange>" ); if( nic.endsPageRange ) mText += MifDoc::T_string( "<$endrange>" ); bool first = true; for( size_t i = 0; i < nic.components.size(); first = false, i++ ) { if( !first ) mText += ':'; for( size_t ii = 0; ii < nic.components[i].size(); ii++ ) mText += char( nic.components[i][ii] ); } if( nic.sortString.size() > 0 ) { mText += '['; for( size_t i = 0; i < nic.sortString.size(); i++ ) mText += char( nic.sortString[i] ); mText += ']'; } indexEntryStack.resize( indexEntryStack.size() + 1 ); indexEntryStack.back() = MifDoc::Marker( mText, MifDoc::Marker::Index ); } } //----------------------------------------------------------------------------- void MifFOTBuilder::setCellBackground( bool to ) { nextFormat.FotCellBackground = to; } void MifFOTBuilder::setBackgroundColor( const DeviceRGBColor &rgbColor ) { MifDoc::Color *color = new MifDoc::Color( rgbColor.red, rgbColor.green, rgbColor.blue ); nextFormat.MifBackgroundColor = color->ColorTag; if( mifDoc.colorCatalog().Colors.lookup( color->ColorTag ) == NULL ) { mifDoc.colorCatalog().Colors.insert( color ); } else delete color; } void MifFOTBuilder::setBackgroundColor() { nextFormat.MifBackgroundColor = MifDoc::T_tagstring(); } void MifFOTBuilder::setColor( const DeviceRGBColor &rgbColor ) { MifDoc::Color *color = new MifDoc::Color( rgbColor.red, rgbColor.green, rgbColor.blue ); nextFormat.FColor = color->ColorTag; if( mifDoc.colorCatalog().Colors.lookup( color->ColorTag ) == NULL ) { mifDoc.colorCatalog().Colors.insert( color ); } else delete color; } void MifFOTBuilder::setSpan( long n ) { nextFormat.FotSpan = n; } void MifFOTBuilder::setPageNColumns( long n ) { nextFormat.FotPageNColumns = n; mifDoc.document().setDColumns( n ); } void MifFOTBuilder::setPageColumnSep( Length l ) { nextFormat.FotPageColumnSep = l; mifDoc.document().setDColumnGap( l ); } void MifFOTBuilder::setPageBalanceColumns( bool b ) { nextFormat.FotPageBalanceColumns = b; } void MifFOTBuilder::setLines( Symbol s ) { nextFormat.FotLines = s; } void MifFOTBuilder::setInputWhitespaceTreatment( Symbol s ) { nextFormat.FotInputWhitespaceTreatment = s; } void MifFOTBuilder::setMinLeading( const OptLengthSpec &ol ) { nextFormat.FotMinLeading = ol; } void MifFOTBuilder::setPositionPointShift( const LengthSpec &l ) { nextFormat.FotPositionPointShiftSpec = l; } void MifFOTBuilder::setLineThickness( Length l ) { nextFormat.FotLineThickness = l; } void MifFOTBuilder::setLineRepeat( long n ) { nextFormat.FotLineRepeat = n; } void MifFOTBuilder::setLineSep( Length l ) { nextFormat.FotLineSep = l; } void MifFOTBuilder::setFieldWidth( const LengthSpec &l ) { nextFormat.FotFieldWidth = l; } void MifFOTBuilder::setLineCap( Symbol s ) { nextFormat.FotLineCap = s; } void MifFOTBuilder::setFieldAlign( Symbol s ) { nextFormat.FotFieldAlign = s; } //--------------------------------------------------------------------------------------------- void MifFOTBuilder::extension( const ExtensionFlowObj &fo, const NodePtr &node ) { ((const MifExtensionFlowObj &)fo).atomic( *this, node ); } bool MifFOTBuilder::IndexEntryFlowObj::hasNIC( const StringC &name ) const { return name == "components" || name == "page-number?" || name == "sort-string" || name == "starts-page-range?" || name == "ends-page-range?" ; } void MifFOTBuilder::IndexEntryFlowObj::setNIC( const StringC &name, const Value &value ) { if( name == "components" ) value.convertStringList( nic.components ); else if( name == "page-number?" ) value.convertBoolean( nic.pageNumber ); else if( name == "sort-string" ) { bool hasString; value.convertBoolean( hasString ); if( hasString ) value.convertString( nic.sortString ); } else if( name == "starts-page-range?" ) value.convertBoolean( nic.startsPageRange ); else if( name == "ends-page-range?" ) value.convertBoolean( nic.endsPageRange ); } //--------------------------------------------------------------------------------------------- unsigned long StringHash::hash( const String &str ) { const char *p = str.data(); unsigned long h = 0; for( size_t n = str.size(); n > 0; n-- ) h = (h << 5) + h + *p++; // from Chris Torek return h; } FOTBuilder *makeMifFOTBuilder( const String &fileLoc, const Ptr &entityManager, const CharsetInfo &systemCharset, CmdLineApp *app, const FOTBuilder::Extension *&ext ) { MifFOTBuilder::IndexEntryFlowObj *indexEntryFlowObject = new MifFOTBuilder::IndexEntryFlowObj; static const FOTBuilder::Extension extensions[] = { { "UNREGISTERED::ISOGEN//Flow Object Class::index-entry", 0, 0, 0, 0, indexEntryFlowObject }, { "UNREGISTERED::James Clark//Characteristic::page-n-columns", 0, 0, (void (FOTBuilder::*)(long))&MifFOTBuilder::setPageNColumns, 0 }, { "UNREGISTERED::James Clark//Characteristic::page-column-sep", 0, 0, 0, (void (FOTBuilder::*)(FOTBuilder::Length))&MifFOTBuilder::setPageColumnSep, }, { "UNREGISTERED::James Clark//Characteristic::page-balance-columns?", (void (FOTBuilder::*)(bool))&MifFOTBuilder::setPageBalanceColumns, 0, 0 }, { 0, 0, 0} }; ext = extensions; return new MifFOTBuilder( fileLoc, entityManager, systemCharset, app ); } const Char MifFOTBuilder::FrameCharsetMap[] = { // Latin-1 -> Frame Charset 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00c1, 0x00a2, 0x00a3, 0x00db, 0x00b4, 0x007c, 0x00a4, 0x00ac, 0x00a9, 0x00bb, 0x00c7, 0x00c2, 0x002d, 0x00a8, 0x00f8, 0x00fb, 0x0000, 0x0000, 0x0000, 0x00ab, 0x0000, 0x00a6, 0x00a5, 0x00fc, 0x0000, 0x00bc, 0x00c8, 0x0000, 0x0000, 0x0000, 0x00c0, 0x00cb, 0x00e7, 0x00e5, 0x00cc, 0x0080, 0x0081, 0x00ae, 0x0082, 0x00e9, 0x0083, 0x00e6, 0x00e9, 0x00ed, 0x00ea, 0x00eb, 0x00ec, 0x0000, 0x0084, 0x00f1, 0x00ee, 0x00ef, 0x00cd, 0x0085, 0x0000, 0x00af, 0x00f4, 0x00f2, 0x00f3, 0x0086, 0x0000, 0x0000, 0x00a7, 0x0088, 0x0087, 0x0089, 0x008b, 0x008a, 0x008c, 0x00be, 0x008d, 0x008f, 0x008e, 0x0090, 0x0091, 0x0093, 0x0092, 0x0094, 0x0095, 0x0000, 0x0096, 0x0098, 0x0097, 0x0099, 0x009b, 0x009a, 0x0000, 0x00bf, 0x009d, 0x009c, 0x009e, 0x009f, 0x0000, 0x0000, 0x00d8 }; const MifFOTBuilder::SymbolFont MifFOTBuilder::SymbolFonts[MifFOTBuilder::nSymbolFonts] = { { "Symbol", { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0021, 0x2200, 0x0023, 0x2203, 0x0025, 0x0026, 0x220B, 0x0028, 0x0029, 0x2217, 0x002B, 0x002C, 0x2212, 0x002E, 0x002F, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, 0x2245, 0x0391, 0x0392, 0x03A7, 0x2206, 0x0395, 0x03A6, 0x0393, 0x0397, 0x0399, 0x03D1, 0x039A, 0x039B, 0x039C, 0x039D, 0x039F, 0x03A0, 0x0398, 0x03A1, 0x03A3, 0x03A4, 0x03A5, 0x03C2, 0x2126, 0x039E, 0x03A8, 0x0396, 0x005B, 0x2234, 0x005D, 0x22A5, 0x005F, 0x203E, 0x03B1, 0x03B2, 0x03C7, 0x03B4, 0x03B5, 0x03C6, 0x03B3, 0x03B7, 0x03B9, 0x03D5, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BF, 0x03C0, 0x03B8, 0x03C1, 0x03C3, 0x03C4, 0x03C5, 0x03D6, 0x03C9, 0x03BE, 0x03C8, 0x03B6, 0x007B, 0x007C, 0x007D, 0x223C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03D2, 0x2032, 0x2264, 0x2215, 0x221E, 0x0192, 0x2663, 0x2666, 0x2665, 0x2660, 0x2194, 0x2190, 0x2191, 0x2192, 0x2193, 0x00B0, 0x00B1, 0x2033, 0x2265, 0x00D7, 0x221D, 0x2202, 0x2022, 0x00F7, 0x2260, 0x2261, 0x2248, 0x2026, 0x0000, 0x0000, 0x21B5, 0x2135, 0x2111, 0x211C, 0x2118, 0x2297, 0x2295, 0x2205, 0x2229, 0x222A, 0x2283, 0x2287, 0x2284, 0x2282, 0x2286, 0x2208, 0x2209, 0x2220, 0x2207, 0x00AE, 0x00A9, 0x2122, 0x220F, 0x221A, 0x22C5, 0x00AC, 0x2227, 0x2228, 0x21D4, 0x21D0, 0x21D1, 0x21D2, 0x21D3, 0x25CA, 0x2329, 0x00AE, 0x00A9, 0x2122, 0x2211, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x232A, 0x222B, 0x2320, 0x0000, 0x2321, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 } }, // I created this table by hand. It's sometimes not obvious what // the appropriate mapping is (James Clark) { "Wingdings", { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2702, 0x2701, 0x0000, 0x0000, 0x0000, 0x0000, 0x260e, 0x2706, 0x2709, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2328, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2707, 0x270d, 0x0000, 0x270c, 0x0000, 0x0000, 0x0000, 0x261c, 0x261e, 0x261d, 0x261f, 0x0000, 0x263a, 0x0000, 0x2639, 0x0000, 0x2620, 0x0000, 0x0000, 0x2708, 0x263c, 0x0000, 0x2744, 0x0000, 0x271e, 0x0000, 0x2720, 0x2721, 0x262a, 0x262f, 0x0950, 0x2638, 0x2648, 0x2649, 0x264a, 0x264b, 0x264c, 0x264d, 0x264e, 0x264f, 0x2650, 0x2651, 0x2652, 0x2653, 0x0000, 0x0000, 0x25cf, 0x274d, 0x25a0, 0x25a1, 0x0000, 0x2751, 0x2752, 0x0000, 0x0000, 0x25c6, 0x2756, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2780, 0x2781, 0x2782, 0x2783, 0x2784, 0x2785, 0x2786, 0x2787, 0x2788, 0x2789, 0x0000, 0x278a, 0x278b, 0x278c, 0x278d, 0x278e, 0x278f, 0x2790, 0x2791, 0x2792, 0x2793, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x25cb, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x25aa, 0x0000, 0x0000, 0x2726, 0x2605, 0x2736, 0x0000, 0x2739, 0x0000, 0x0000, 0x0000, 0x2727, 0x0000, 0x0000, 0x272a, 0x2730, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x232b, 0x2326, 0x0000, 0x27a2, 0x0000, 0x0000, 0x0000, 0x27b2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x25ab, 0x2718, 0x2714, 0x2612, 0x2611, 0x0000 } }, { "ZapfDingbats", { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2701, 0x2702, 0x2703, 0x2704, 0x260E, 0x2706, 0x2707, 0x2708, 0x2709, 0x261B, 0x261E, 0x270C, 0x270D, 0x270E, 0x270F, 0x2710, 0x2711, 0x2712, 0x2713, 0x2714, 0x2715, 0x2716, 0x2717, 0x2718, 0x2719, 0x271A, 0x271B, 0x271C, 0x271D, 0x271E, 0x271F, 0x2720, 0x2721, 0x2722, 0x2723, 0x2724, 0x2725, 0x2726, 0x2727, 0x2605, 0x2729, 0x272A, 0x272B, 0x272C, 0x272D, 0x272E, 0x272F, 0x2730, 0x2731, 0x2732, 0x2733, 0x2734, 0x2735, 0x2736, 0x2737, 0x2738, 0x2739, 0x273A, 0x273B, 0x273C, 0x273D, 0x273E, 0x273F, 0x2740, 0x2741, 0x2742, 0x2743, 0x2744, 0x2745, 0x2746, 0x2747, 0x2748, 0x2749, 0x274A, 0x274B, 0x0000, 0x274D, 0x25A0, 0x274F, 0x2750, 0x2751, 0x2752, 0x25B2, 0x25BC, 0x25C6, 0x2756, 0x0000, 0x2758, 0x2759, 0x275A, 0x275B, 0x275C, 0x275D, 0x275E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2761, 0x2762, 0x2763, 0x2764, 0x2765, 0x2766, 0x2767, 0x2663, 0x2666, 0x2665, 0x2660, 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469, 0x2776, 0x2777, 0x2778, 0x2779, 0x277A, 0x277B, 0x277C, 0x277D, 0x277E, 0x277F, 0x2780, 0x2781, 0x2782, 0x2783, 0x2784, 0x2785, 0x2786, 0x2787, 0x2788, 0x2789, 0x278A, 0x278B, 0x278C, 0x278D, 0x278E, 0x278F, 0x2790, 0x2791, 0x2792, 0x2793, 0x2794, 0x2192, 0x2194, 0x2195, 0x2798, 0x2799, 0x279A, 0x279B, 0x279C, 0x279D, 0x279E, 0x279F, 0x27A0, 0x27A1, 0x27A2, 0x27A3, 0x27A4, 0x27A5, 0x27A6, 0x27A7, 0x27A8, 0x27A9, 0x27AA, 0x27AB, 0x27AC, 0x27AD, 0x27AE, 0x27AF, 0x0000, 0x27B1, 0x27B2, 0x27B3, 0x27B4, 0x27B5, 0x27B6, 0x27B7, 0x27B8, 0x27B9, 0x27BA, 0x27BB, 0x27BC, 0x27BD, 0x27BE, 0x0000 } }, }; // --------- static ----------------------------------------------------------- #define CONST_STRING( symbolName ) \ const String MifDoc::s ## symbolName ( #symbolName, sizeof( #symbolName ) - 1 ) const String MifDoc::sNONE; const String MifDoc::sSPACE( " ", sizeof( " " ) - 1 ); const String MifDoc::sDefaultTblFormat ( "Default Tbl Format", sizeof( "Default Tbl Format" ) - 1 ); const String MifDoc::sDefaultPgfFormat ( "Default Pgf Format", sizeof( "Default Pgf Format" ) - 1 ); const String MifDoc::sTimesNewRoman ( "Times New Roman", sizeof( "Times New Roman" ) - 1 ); const String MifDoc::sPageNumXRefFormatName ( "Page Number Format", sizeof( "Page Number Format" ) - 1 ); CONST_STRING( A ); CONST_STRING( Regular ); CONST_STRING( Bold ); CONST_STRING( Italic ); CONST_STRING( FNoUnderlining ); CONST_STRING( FSingle ); CONST_STRING( FDouble ); CONST_STRING( FNumeric ); CONST_STRING( FNormal ); CONST_STRING( FSuperscript ); CONST_STRING( FSubscript ); CONST_STRING( FAsTyped ); CONST_STRING( FSmallCaps ); CONST_STRING( FLowercase ); CONST_STRING( FUppercase ); CONST_STRING( LeftRight ); CONST_STRING( Left ); CONST_STRING( Right ); CONST_STRING( Center ); CONST_STRING( Fixed ); CONST_STRING( Proportional ); CONST_STRING( Top ); CONST_STRING( Middle ); CONST_STRING( Bottom ); CONST_STRING( NoLanguage ); CONST_STRING( USEnglish ); CONST_STRING( UKEnglish ); CONST_STRING( German ); CONST_STRING( SwissGerman ); CONST_STRING( French ); CONST_STRING( CanadianFrench ); CONST_STRING( Spanish ); CONST_STRING( Catalan ); CONST_STRING( Italian ); CONST_STRING( Portuguese ); CONST_STRING( Brazilian ); CONST_STRING( Danish ); CONST_STRING( Dutch ); CONST_STRING( Norwegian ); CONST_STRING( Nynorsk ); CONST_STRING( Finnish ); CONST_STRING( Swedish ); CONST_STRING( LeftMasterPage ); CONST_STRING( RightMasterPage ); CONST_STRING( OtherMasterPage ); CONST_STRING( BodyPage ); CONST_STRING( Decimal ); CONST_STRING( Tab ); CONST_STRING( HardSpace ); CONST_STRING( SoftHyphen ); CONST_STRING( HardHyphen ); CONST_STRING( HardReturn ); CONST_STRING( NumberSpace ); CONST_STRING( ThinSpace ); CONST_STRING( EnSpace ); CONST_STRING( EmSpace ); CONST_STRING( Header ); CONST_STRING( Footer ); CONST_STRING( Arabic ); CONST_STRING( UCRoman ); CONST_STRING( LCRoman ); CONST_STRING( UCAlpha ); CONST_STRING( LCAlpha ); CONST_STRING( FirstLeft ); CONST_STRING( FirstRight ); CONST_STRING( Anywhere ); CONST_STRING( ColumnTop ); CONST_STRING( PageTop ); CONST_STRING( LPageTop ); CONST_STRING( RPageTop ); CONST_STRING( First ); CONST_STRING( Inside ); CONST_STRING( Outside ); CONST_STRING( None ); CONST_STRING( RunIntoParagraph ); CONST_STRING( Inline ); CONST_STRING( Below ); CONST_STRING( Butt ); CONST_STRING( Round ); CONST_STRING( Square ); CONST_STRING( White ); CONST_STRING( Black ); CONST_STRING( Normal ); CONST_STRING( Straddle ); CONST_STRING( Cent ); CONST_STRING( Pound ); CONST_STRING( Yen ); CONST_STRING( EnDash ); CONST_STRING( EmDash ); CONST_STRING( Dagger ); CONST_STRING( DoubleDagger ); CONST_STRING( Bullet); MifDoc *MifDoc::CurInstance = NULL; MifDoc::T_ID MifDoc::Object::IDCnt = 0; MifDoc::T_indent MifOutputByteStream::INDENT = MifDoc::T_indent( 0xFFF ); bool MifDoc::Para::currentlyOpened = false; unsigned MifDoc::ParaLine::setProperties = 0; MifDoc::T_ID MifDoc::ParaLine::TextRectID; MifDoc::T_ID MifDoc::ParaLine::ATbl; // ---------------------------------------------------------------------------- int operator!=( const MifDoc::T_LTRB &o1, const MifDoc::T_LTRB &o2 ) { return o1.l != o2.l || o1.t != o2.t || o1.r != o2.r || o1.b != o2.b; } // --------- MifTmpOutputByteStream ------------------------------------------- void MifTmpOutputByteStream::commit( OutputByteStream &os, bool resolveCrossReferences ) { MifOutputByteStream outS( os ); TmpOutputByteStream::Iter iter( *this ); const char *s; size_t n; unsigned crossRefInfoIdx; char *byteDestPtr = NULL; size_t neededBytesNum = 0; enum { normal, waitingForCrossRefInfoIdx } state = normal; while( iter.next( s, n ) ) { while( n > 0 ) { switch( state ) { case waitingForCrossRefInfoIdx: { int bytesCopiedNum = neededBytesNum > n ? n : neededBytesNum; memcpy( byteDestPtr, s, bytesCopiedNum ); byteDestPtr += bytesCopiedNum; n -= bytesCopiedNum; s += bytesCopiedNum; neededBytesNum -= bytesCopiedNum; if( neededBytesNum == 0 ) { assert( crossRefInfoIdx < MifDoc::CurInstance->crossRefInfos().size() ); MifDoc::CrossRefInfo &crossRefInfo = MifDoc::CurInstance->crossRefInfos()[crossRefInfoIdx]; crossRefInfo.out( outS ); state = normal; } } break; case normal: if( resolveCrossReferences ) { const char *escapeCharPtr = (char*)memchr( s, MifDoc::escapeChar(), n ); if( escapeCharPtr != NULL ) { outS.stream().sputn( s, escapeCharPtr - s); n -= (escapeCharPtr - s); s = escapeCharPtr; n--; s++; state = waitingForCrossRefInfoIdx; byteDestPtr = (char*)&crossRefInfoIdx; neededBytesNum = sizeof( unsigned ); break; } } outS.stream().sputn( s, n ); n = 0; } } } assert( neededBytesNum == 0 ); } void MifTmpOutputByteStream::commit( String &str ) { TmpOutputByteStream::Iter iter( *this ); const char *s; size_t n; while( iter.next( s, n ) ) { str.append( s, n ); } } // --------- MifDoc::T_string ------------------------------------------------- void MifDoc::T_string::escapeSpecialChars() { T_string newValue; bool changes = false; for( size_t i = 0; i < size(); i++ ) { switch( (*this)[i] ) { case '\n': case '\r': changes = true; break; case '\t': newValue.append( "\\t", 2 ); changes = true; break; case '>': newValue.append( "\\>", 2 ); changes = true; break; case '\'': newValue.append( "\\q", 2 ); changes = true; break; case '`': newValue.append( "\\Q", 2 ); changes = true; break; case '\\': newValue.append( "\\\\", 2 ); changes = true; break; default: if( (unsigned)(*this)[i] >= 0x80 ) { changes = true; MifDoc::CurInstance->outHexChar( (*this)[i], newValue ); } else newValue += (*this)[i]; } } if( changes ) *this = newValue; } // --------- MifDoc::CrossRefInfo --------------------------------------------- MifDoc::T_string MifDoc::CrossRefInfo::crossRefText() const { char buf[32]; if( sgmlId.size() > 0 ) { sprintf( buf, "NODE%lu.", groveIndex ); T_string result( buf ); for( size_t i = 0; i < sgmlId.size(); i++ ) result += char( sgmlId[i] ); return result; } else { sprintf( buf, "NODE%lu.%lu", groveIndex, elementIndex ); return T_string( buf ); } } void MifDoc::CrossRefInfo::out( MifOutputByteStream &os ) { switch( type() ) { case PotentialMarker: { bool regularMarkerOut = false; bool linkMarkerOut = false; if( sgmlId.size() > 0 ) { if( MifDoc::CurInstance->elements().hasBeenReferenced ( MifDoc::ElementSet::PageReference, groveIndex, sgmlId ) ) regularMarkerOut = true; if( MifDoc::CurInstance->elements().hasBeenReferenced ( MifDoc::ElementSet::LinkReference, groveIndex, sgmlId ) ) linkMarkerOut = true; } else { if( MifDoc::CurInstance->elements().hasBeenReferenced ( MifDoc::ElementSet::PageReference, groveIndex, elementIndex ) ) regularMarkerOut = true; if( MifDoc::CurInstance->elements().hasBeenReferenced ( MifDoc::ElementSet::LinkReference, groveIndex, elementIndex ) ) linkMarkerOut = true; } if( regularMarkerOut ) { os.CurTagIndent = tagIndent; MifDoc::Marker marker( *this ); marker.out( os ); } if( linkMarkerOut ) { os.CurTagIndent = tagIndent; MifDoc::Marker marker( *this, true ); marker.out( os ); } } break; case HypertextLink: { os.CurTagIndent = tagIndent; MifDoc::Marker marker( *this ); marker.out( os ); } break; case XRef: { os.CurTagIndent = tagIndent; MifDoc::XRef xRef( *this ); xRef.out( os ); } break; default: assert( false ); } } // ---------------------------------------------------------------------------- #define CHECK_PROPERTY( propertyName ) \ \ if( setProperties & f ## propertyName ) \ os << '\n' << MifOutputByteStream::INDENT \ << "<" #propertyName " " << propertyName << ">"; #define CHECK_VECTOR_OF_PROPERTIES( propertyName ) \ \ if( setProperties & f ## propertyName ## s) \ for( size_t i = 0; i < propertyName ## s.size(); i++ ) { \ os << '\n' << MifOutputByteStream::INDENT \ << "<" #propertyName " " << propertyName ## s[i] << ">"; \ } // --------- MifDoc::TagStream ------------------------------------------------ MifDoc::TagStream::TagStream( MifDoc::T_indent osIndent ) : Format(), Content( new MifTmpOutputByteStream( osIndent ) ), PgfTagUsed( false ), InitialPgfTag( sDefaultPgfFormat ), TagStreamClass( tsTagStream ) { } MifDoc::TagStream::~TagStream() { if( Content ) delete Content; } // --------- MifDoc::TextFlow ------------------------------------------------- MifDoc::TextFlow::TextFlow( const TextRect &textRect, bool body, ParagraphFormat *format, T_tagstring pgfTag ) : TagStream(), TextRectID( textRect.ID ), setProperties( 0 ), TextRectIDUsed( false ), TextRect_( &textRect ) { TagStreamClass = tsTextFlow; InitialPgfTag = pgfTag; if( format ) Format = *format; if( body ) { setTFTag( MifDoc::sA ); setTFAutoConnect( true ); } } void MifDoc::TextFlow::out( MifOutputByteStream &os, bool resolveCrossReferences ) { os << '\n' << MifOutputByteStream::INDENT << ""; } // --------- MifDoc::Color ---------------------------------------------------- MifDoc::Color::Color( unsigned char red, unsigned char green, unsigned char blue ) : setProperties( 0 ) { char colorTag[64]; sprintf( colorTag, "RGB-%i-%i-%i", int( red ), int( green ), int( blue ) ); setColorTag( T_tagstring( colorTag ) ); if( red >= green && red >= blue ) { setColorBlack( double( 255 - red ) / 2.55 ); setColorYellow( double( red - blue ) / 2.55 ); setColorMagenta( double( red - green ) / 2.55 ); setColorCyan( 0.0 ); } else if( green >= red && green >= blue ) { setColorBlack( double( 255 - green ) / 2.55 ); setColorCyan( double( green - red ) / 2.55 ); setColorYellow( double( green - blue ) / 2.55 ); setColorMagenta( 0.0 ); } else { // blue is largest setColorBlack( double( 255 - blue ) / 2.55 ); setColorCyan( double( blue - red ) / 2.55 ); setColorMagenta( double( blue - green ) / 2.55 ); setColorYellow( 0.0 ); } } void MifDoc::Color::out( MifOutputByteStream &os ) const { os << '\n' << MifOutputByteStream::INDENT << ""; } const String &MifDoc::Color::key( Color &color ) { return color.ColorTag; } // --------- MifDoc::ColorCatalog --------------------------------------------- void MifDoc::ColorCatalog::out( MifOutputByteStream &os ) { if( Colors.count() > 0 ) { os << '\n' << MifOutputByteStream::INDENT << ",StringHash,Color> iter( Colors ); const Color *color; while( ( color = iter.next() ) != NULL ) color->out( os ); os.undent(); os << '\n' << MifOutputByteStream::INDENT << ">"; } } // --------- MifDoc::Ruling --------------------------------------------------- const String &MifDoc::Ruling::key( Ruling &r ) { if( r.Key.size() < 1 ) { char keyStr[ 48 ]; sprintf( keyStr, "Ruling-%li-%li-%li-%li-", long( r.RulingPenWidth ), long( r.RulingGap ), r.RulingPen, r.RulingLines ); r.Key.assign( keyStr, strlen( keyStr ) ); r.Key += r.RulingColor; } return r.Key; } void MifDoc::Ruling::out( MifOutputByteStream &os ) const { os << '\n' << MifOutputByteStream::INDENT << ""; } // --------- MifDoc::RulingCatalog -------------------------------------------- void MifDoc::RulingCatalog::out( MifOutputByteStream &os ) { if( Rulings.count() > 0 ) { os << '\n' << MifOutputByteStream::INDENT << ",StringHash,Ruling> iter( Rulings ); const Ruling *ruling; while( ( ruling = iter.next() ) != NULL ) ruling->out( os ); os.undent(); os << '\n' << MifOutputByteStream::INDENT << ">"; } } // --------- MifDoc::Cell ----------------------------------------------------- void MifDoc::Cell::out( MifOutputByteStream &os, bool resolveCrossReferences ) { os << '\n' << MifOutputByteStream::INDENT << ""; os.undent(); os << '\n' << MifOutputByteStream::INDENT << ">"; } // --------- MifDoc::Row ------------------------------------------------------ void MifDoc::Row::out( MifOutputByteStream &os, bool resolveCrossReferences ) { os << '\n' << MifOutputByteStream::INDENT << ""; } // --------- MifDoc::TblColumn ------------------------------------------------ void MifDoc::TblColumn::out( MifOutputByteStream &os ) { os << '\n' << MifOutputByteStream::INDENT << ""; } // --------- MifDoc::TblFormat ------------------------------------------------ void MifDoc::TblFormat::out( MifOutputByteStream &os ) { os << '\n' << MifOutputByteStream::INDENT << ""; } // --------- MifDoc::Tbl ------------------------------------------------------ void MifDoc::Tbl::out( MifOutputByteStream &os, bool resolveCrossReferences ) { os << '\n' << MifOutputByteStream::INDENT << ""; } if( TblBody.size() ) { os << '\n' << MifOutputByteStream::INDENT << ""; } if( TblF.size() ) { os << '\n' << MifOutputByteStream::INDENT << ""; } os.undent(); os << '\n' << MifOutputByteStream::INDENT << ">"; } // --------- MifDoc::Document ------------------------------------------------- void MifDoc::Document::out( MifOutputByteStream &os ) { os << '\n' << MifOutputByteStream::INDENT << ""; } // --------- MifDoc::XRefFormat ----------------------------------------------- void MifDoc::XRefFormat::out( MifOutputByteStream &os ) { os << '\n' << MifOutputByteStream::INDENT << ""; } // --------- MifDoc::XRef ----------------------------------------------------- MifDoc::XRef::XRef( CrossRefInfo &crossRefInfo ) { switch( crossRefInfo.type() ) { case CrossRefInfo::XRef: { MifDoc::T_pathname targetFileName( "" ); int bookComponentIdx = crossRefInfo.sgmlId.size() > 0 ? MifDoc::CurInstance->elements().bookComponentIndex ( crossRefInfo.groveIndex, crossRefInfo.sgmlId ) : MifDoc::CurInstance->elements().bookComponentIndex ( crossRefInfo.groveIndex, crossRefInfo.elementIndex ); targetFileName += MifDoc::T_pathname ( MifDoc::CurInstance->bookComponents()[bookComponentIdx].FileName ); setXRefSrcFile( targetFileName ); setXRefName( MifDoc::sPageNumXRefFormatName ); setXRefSrcText( crossRefInfo.crossRefText() ); setXRefText( "000" ); break; } default: assert( false ); } } void MifDoc::XRef::out( MifOutputByteStream &os ) { os << '\n' << MifOutputByteStream::INDENT << ""; if( setProperties & fXRefText ) os << '\n' << MifOutputByteStream::INDENT << ""; os << '\n' << MifOutputByteStream::INDENT << ""; } // --------- MifDoc::Marker --------------------------------------------------- MifDoc::Marker::Marker( CrossRefInfo &crossRefInfo, bool linkDestinationMode ) { switch( crossRefInfo.type() ) { case CrossRefInfo::PotentialMarker: if( linkDestinationMode ) { setMType( Hypertext ); setMText( "newlink " ); MText += crossRefInfo.crossRefText(); } else { setMType( XRef ); setMText( crossRefInfo.crossRefText() ); } break; case CrossRefInfo::HypertextLink: { setMType( Hypertext ); MifDoc::T_pathname targetFileName( "" ); int bookComponentIdx = crossRefInfo.sgmlId.size() > 0 ? MifDoc::CurInstance->elements().bookComponentIndex ( crossRefInfo.groveIndex, crossRefInfo.sgmlId ) : MifDoc::CurInstance->elements().bookComponentIndex ( crossRefInfo.groveIndex, crossRefInfo.elementIndex ); targetFileName += MifDoc::T_pathname ( MifDoc::CurInstance->bookComponents()[bookComponentIdx].FileName ); setMText( T_string( "gotolink " ) ); MText += targetFileName; MText += ':'; MText += crossRefInfo.crossRefText(); break; } case HypertextDestination: setMText( T_string( "newlink " ) ); MText += crossRefInfo.crossRefText(); break; default: assert( false ); } } void MifDoc::Marker::out( MifOutputByteStream &os ) { os << '\n' << MifOutputByteStream::INDENT << ""; } // --------- MifDoc::Object --------------------------------------------------- void MifDoc::Object::outObjectProperties( MifOutputByteStream &os ) { CHECK_PROPERTY( ID ); CHECK_PROPERTY( Pen ); CHECK_PROPERTY( Fill ); CHECK_PROPERTY( PenWidth ); CHECK_PROPERTY( ObColor ); } // --------- MifDoc::PolyLine ------------------------------------------------- void MifDoc::PolyLine::out( MifOutputByteStream &os ) { os << '\n' << MifOutputByteStream::INDENT << ""; os.undent(); os << '\n' << MifOutputByteStream::INDENT << ">"; } // --------- MifDoc::ImportObject --------------------------------------------- void MifDoc::ImportObject::out( MifOutputByteStream &os ) { os << '\n' << MifOutputByteStream::INDENT << ""; } // --------- MifDoc::Frame ---------------------------------------------------- void MifDoc::Frame::out( MifOutputByteStream &os ) { os << '\n' << MifOutputByteStream::INDENT << "out( os ); os.undent(); os << '\n' << MifOutputByteStream::INDENT << ">"; } // --------- MifDoc::TextRect ------------------------------------------------- void MifDoc::TextRect::out( MifOutputByteStream &os ) { os << '\n' << MifOutputByteStream::INDENT << ""; } // --------- MifDoc::Page ----------------------------------------------------- void MifDoc::Page::out( MifOutputByteStream &os ) { os << '\n' << MifOutputByteStream::INDENT << ""; } // --------- MifDoc::TabStop -------------------------------------------------- void MifDoc::TabStop::out( MifOutputByteStream &os ) { os << '\n' << MifOutputByteStream::INDENT << ""; } // --------- MifDoc::Para ----------------------------------------------------- void MifDoc::Para::out( MifOutputByteStream &os ) { outProlog( os ); MifDoc::ParaLine::outProlog( os ); content().commit( os.stream() ); MifDoc::ParaLine::outEpilog( os ); outEpilog( os ); } void MifDoc::Para::outSimpleProlog( MifOutputByteStream &os ) { currentlyOpened = true; os << '\n' << MifOutputByteStream::INDENT << ""; currentlyOpened = false; } // --------- MifDoc::ParaLine ------------------------------------------------- void MifDoc::ParaLine::outProlog( MifOutputByteStream &os ) { os << '\n' << MifOutputByteStream::INDENT << "curTextFlow(); if( tf != NULL && !tf->TextRectIDUsed ) { setTextRectID( tf->TextRectID ); CHECK_PROPERTY( TextRectID ); setProperties &= ~fTextRectID; tf->TextRectIDUsed = true; } MifDoc::Tbl *tbl = MifDoc::CurInstance->curTbl( false ); if( tbl != NULL && !tbl->TblIDUsed ) { setATbl( tbl->TblID ); CHECK_PROPERTY( ATbl ); setProperties &= ~fATbl; tbl->TblIDUsed = true; } } void MifDoc::ParaLine::outEpilog( MifOutputByteStream &os ) { os.undent(); os << '\n' << MifOutputByteStream::INDENT << ">"; } // --------- MifDoc::PgfCatalog ----------------------------------------------- void MifDoc::PgfCatalog::out( MifOutputByteStream &os ) { os << '\n' << MifOutputByteStream::INDENT << ""; } // --------- MifDoc::TblCatalog ----------------------------------------------- void MifDoc::TblCatalog::out( MifOutputByteStream &os ) { if( TblFormats.size() > 0 ) { os << '\n' << MifOutputByteStream::INDENT << ""; } } // ---------------------------------------------------------------------------- #define COMPARE_PROPERTY( propertyName ) \ \ if( propertyName != f.propertyName ) \ differingProperties |= f ## propertyName; #define COND_SET_PROPERTY( propertyName ) \ \ if( properties & f ## propertyName ) \ propertyName = f.propertyName; #define PROPERTY_OUT( propertyName ) \ \ if( properties & f ## propertyName ) \ os << '\n' << MifOutputByteStream::INDENT \ << "<" #propertyName " " << propertyName << ">"; // --------- MifDoc::FontFormat ----------------------------------------------- unsigned MifDoc::FontFormat::compare( FontFormat &f ) { unsigned differingProperties = 0; COMPARE_PROPERTY( FFamily ); COMPARE_PROPERTY( FAngle ); COMPARE_PROPERTY( FWeight ); COMPARE_PROPERTY( FVar ); COMPARE_PROPERTY( FSize ); COMPARE_PROPERTY( FColor ); COMPARE_PROPERTY( FUnderlining ); COMPARE_PROPERTY( FOverline ); COMPARE_PROPERTY( FStrike ); COMPARE_PROPERTY( FPosition ); COMPARE_PROPERTY( FPairKern ); COMPARE_PROPERTY( FCase ); COMPARE_PROPERTY( FDX ); COMPARE_PROPERTY( FDY ); COMPARE_PROPERTY( FDW ); return differingProperties; } void MifDoc::FontFormat::setFrom( FontFormat &f, unsigned properties ) { COND_SET_PROPERTY( FFamily ); COND_SET_PROPERTY( FAngle ); COND_SET_PROPERTY( FWeight ); COND_SET_PROPERTY( FVar ); COND_SET_PROPERTY( FSize ); COND_SET_PROPERTY( FColor ); COND_SET_PROPERTY( FUnderlining ); COND_SET_PROPERTY( FOverline ); COND_SET_PROPERTY( FStrike ); COND_SET_PROPERTY( FPosition ); COND_SET_PROPERTY( FPairKern ); COND_SET_PROPERTY( FCase ); COND_SET_PROPERTY( FDX ); COND_SET_PROPERTY( FDY ); COND_SET_PROPERTY( FDW ); } void MifDoc::FontFormat::out( MifOutputByteStream &os, unsigned properties, FontStatement fontStatement ) { const char *statementName = (fontStatement == stPgfFont) ? "PgfFont" : "Font"; if( properties ) { os << '\n' << MifOutputByteStream::INDENT << "<" << statementName << " "; os.indent(); PROPERTY_OUT( FFamily ); PROPERTY_OUT( FAngle ); PROPERTY_OUT( FWeight ); PROPERTY_OUT( FVar ); PROPERTY_OUT( FSize ); PROPERTY_OUT( FColor ); PROPERTY_OUT( FUnderlining ); PROPERTY_OUT( FOverline ); PROPERTY_OUT( FStrike ); PROPERTY_OUT( FPosition ); PROPERTY_OUT( FPairKern ); PROPERTY_OUT( FCase ); PROPERTY_OUT( FDX ); PROPERTY_OUT( FDY ); PROPERTY_OUT( FDW ); os.undent(); os << '\n' << MifOutputByteStream::INDENT << ">"; } } void MifDoc::FontFormat::updateFrom( FontFormat &f ) { unsigned differingProperties = FontFormat::compare( f ); setFrom( f, differingProperties ); setProperties = differingProperties; } // --------- MifDoc::ParagraphFormat ------------------------------------------ unsigned MifDoc::ParagraphFormat::compare( ParagraphFormat &f ) { unsigned differingProperties = 0; COMPARE_PROPERTY( PgfTag ); COMPARE_PROPERTY( PgfLanguage ); COMPARE_PROPERTY( PgfFIndent ); COMPARE_PROPERTY( PgfLIndent ); COMPARE_PROPERTY( PgfRIndent ); COMPARE_PROPERTY( PgfAlignment ); COMPARE_PROPERTY( PgfSpBefore ); COMPARE_PROPERTY( PgfSpAfter ); COMPARE_PROPERTY( PgfLineSpacing ); COMPARE_PROPERTY( PgfLeading ); COMPARE_PROPERTY( PgfNumTabs ); COMPARE_PROPERTY( PgfPlacement ); COMPARE_PROPERTY( PgfPlacementStyle ); COMPARE_PROPERTY( PgfWithPrev ); COMPARE_PROPERTY( PgfWithNext ); COMPARE_PROPERTY( PgfBlockSize ); COMPARE_PROPERTY( PgfAutoNum ); COMPARE_PROPERTY( PgfNumFormat ); COMPARE_PROPERTY( PgfNumberFont ); COMPARE_PROPERTY( PgfHyphenate ); COMPARE_PROPERTY( HyphenMaxLines ); COMPARE_PROPERTY( HyphenMinPrefix ); COMPARE_PROPERTY( HyphenMinSuffix ); COMPARE_PROPERTY( HyphenMinWord ); COMPARE_PROPERTY( PgfLetterSpace ); COMPARE_PROPERTY( PgfCellAlignment ); COMPARE_PROPERTY( PgfCellMargins ); COMPARE_PROPERTY( PgfCellLMarginFixed ); COMPARE_PROPERTY( PgfCellTMarginFixed ); COMPARE_PROPERTY( PgfCellRMarginFixed ); COMPARE_PROPERTY( PgfCellBMarginFixed ); return differingProperties; } void MifDoc::ParagraphFormat::setFrom( ParagraphFormat &f, unsigned properties, unsigned fontProperties ) { COND_SET_PROPERTY( PgfTag ); COND_SET_PROPERTY( PgfLanguage ); COND_SET_PROPERTY( PgfFIndent ); COND_SET_PROPERTY( PgfLIndent ); COND_SET_PROPERTY( PgfRIndent ); COND_SET_PROPERTY( PgfAlignment ); COND_SET_PROPERTY( PgfSpBefore ); COND_SET_PROPERTY( PgfSpAfter ); COND_SET_PROPERTY( PgfLineSpacing ); COND_SET_PROPERTY( PgfLeading ); COND_SET_PROPERTY( PgfNumTabs ); COND_SET_PROPERTY( PgfPlacement ); COND_SET_PROPERTY( PgfPlacementStyle ); COND_SET_PROPERTY( PgfWithPrev ); COND_SET_PROPERTY( PgfWithNext ); COND_SET_PROPERTY( PgfBlockSize ); COND_SET_PROPERTY( PgfAutoNum ); COND_SET_PROPERTY( PgfNumFormat ); COND_SET_PROPERTY( PgfNumberFont ); COND_SET_PROPERTY( PgfHyphenate ); COND_SET_PROPERTY( HyphenMaxLines ); COND_SET_PROPERTY( HyphenMinPrefix ); COND_SET_PROPERTY( HyphenMinSuffix ); COND_SET_PROPERTY( HyphenMinWord ); COND_SET_PROPERTY( PgfLetterSpace ); COND_SET_PROPERTY( PgfCellAlignment ); COND_SET_PROPERTY( PgfCellMargins ); COND_SET_PROPERTY( PgfCellLMarginFixed ); COND_SET_PROPERTY( PgfCellTMarginFixed ); COND_SET_PROPERTY( PgfCellRMarginFixed ); COND_SET_PROPERTY( PgfCellBMarginFixed ); FontFormat::setFrom( f, fontProperties ); } void MifDoc::ParagraphFormat::out( MifOutputByteStream &os, unsigned properties, unsigned fontProperties, bool excludeCellProperties ) { bool outPgfTag = false; T_tagstring pgfTag; if( !( properties & fPgfTag ) ) { MifDoc::TagStream &ts = MifDoc::CurInstance->curTagStream(); if( !ts.PgfTagUsed ) { pgfTag = ts.InitialPgfTag; outPgfTag = true; ts.PgfTagUsed = true; } } if( properties != 0 || fontProperties != 0 || outPgfTag ) { os << '\n' << MifOutputByteStream::INDENT << ""; else PROPERTY_OUT( PgfTag ); FontFormat::out( os, fontProperties, FontFormat::stPgfFont ); PROPERTY_OUT( PgfLanguage ); PROPERTY_OUT( PgfFIndent ); PROPERTY_OUT( PgfLIndent ); PROPERTY_OUT( PgfRIndent ); PROPERTY_OUT( PgfAlignment ); PROPERTY_OUT( PgfSpBefore ); PROPERTY_OUT( PgfSpAfter ); PROPERTY_OUT( PgfLineSpacing ); PROPERTY_OUT( PgfLeading ); PROPERTY_OUT( PgfNumTabs ); if( properties & fTabStops ) for( size_t i = 0; i < TabStops.size(); i++ ) TabStops[i].out( os ); PROPERTY_OUT( PgfPlacement ); PROPERTY_OUT( PgfPlacementStyle ); PROPERTY_OUT( PgfWithPrev ); PROPERTY_OUT( PgfWithNext ); PROPERTY_OUT( PgfBlockSize ); PROPERTY_OUT( PgfAutoNum ); PROPERTY_OUT( PgfNumFormat ); PROPERTY_OUT( PgfNumberFont ); PROPERTY_OUT( PgfHyphenate ); PROPERTY_OUT( HyphenMaxLines ); PROPERTY_OUT( HyphenMinPrefix ); PROPERTY_OUT( HyphenMinSuffix ); PROPERTY_OUT( HyphenMinWord ); PROPERTY_OUT( PgfLetterSpace ); if( MifDoc::CurInstance->curCell() != NULL || !excludeCellProperties ) { PROPERTY_OUT( PgfCellAlignment ); PROPERTY_OUT( PgfCellMargins ); PROPERTY_OUT( PgfCellLMarginFixed ); PROPERTY_OUT( PgfCellTMarginFixed ); PROPERTY_OUT( PgfCellRMarginFixed ); PROPERTY_OUT( PgfCellBMarginFixed ); } os.undent(); os << '\n' << MifOutputByteStream::INDENT << ">"; } } void MifDoc::ParagraphFormat::updateFrom( ParagraphFormat &f ) { FontFormat::updateFrom( f ); unsigned differingProperties = compare( f ); setFrom( f, differingProperties, 0 ); setProperties = differingProperties; } // --------- MifDoc::BookComponent -------------------------------------------- MifDoc::BookComponent::BookComponent( MifTmpOutputByteStream *epilogOs ) : epilogOs( epilogOs ), pageNumXRefFormatGenerated( false ) { } void MifDoc::BookComponent::commit ( const String &dirName, bool resolveCrossReferences ) { assert( FileName.size() > 0 ); String fileLoc; fileLoc += dirName; fileLoc += FileName; fileLoc += 0; FileOutputByteStream outFile; if( outFile.open( fileLoc.data() ) ) { MifOutputByteStream os( outFile ); os << ""; colorCatalog.out( os ); pgfCatalog.out( os ); rulingCatalog.out( os ); size_t i; if( AFrames.size() ) { os << "\n"; } if( XRefFormats.size() ) { os << "\n"; } tblCatalog.out( os ); document.out( os ); if( Tbls.size() ) { os << "\n"; } for( i = 0; i < Pages.size(); i++ ) Pages[i].out( os ); for( i = 0; i < TextFlows.size(); i++ ) TextFlows[i].out( os, resolveCrossReferences ); if( epilogOs ) epilogOs->commit( os.stream(), resolveCrossReferences ); } else { MifDoc::curInstance().App->message ( MifMessages::cannotOpenOutputError, StringMessageArg( MifDoc::curInstance().App->convertInput( fileLoc.data() ) ), ErrnoMessageArg( errno ) ); return; } } // --------- MifDoc ----------------------------------------------------------- MifDoc::MifDoc( const String &fileLoc, CmdLineApp *app ) : App( app ), RootOutputFileLoc( fileLoc ), CurTblNum( 0 ), CurTextFlow( NULL ), CurCell( NULL ), CurPara( NULL ), NextID( 0 ) { if( RootOutputFileLoc.size() > 0 && RootOutputFileLoc[RootOutputFileLoc.size()-1] == 0 ) RootOutputFileLoc.resize( RootOutputFileLoc.size() - 1 ); CurInstance = this; enterBookComponent(); } MifDoc::~MifDoc() { commit(); } void MifDoc::commit() { String outDir = rootOutputFileLoc(); String outFileName; { int i; for( i = outDir.size() - 1; i >= 0; i-- ) if( outDir[i] == '/' || outDir[i] == '\\' ) break; if( outDir.size() - (i+1) > 0 ) outFileName.assign( &outDir.data()[i+1], outDir.size() - (i+1) ); outDir.resize( i + 1 ); } if( BookComponents.size() > 1 ) { String bookFileLoc( rootOutputFileLoc() ); String fileNameExt; { size_t idx; for( idx = bookFileLoc.size(); idx > 0; idx-- ) if( bookFileLoc[idx-1] == char( '.' ) ) break; if( idx > 0 && bookFileLoc.size() - idx > 0 ) fileNameExt.assign( &bookFileLoc[idx], bookFileLoc.size() - idx ); else { fileNameExt += 'm'; fileNameExt += 'i'; fileNameExt += 'f'; } } String fileName; char idxStr[32]; for( size_t i = 0; i < BookComponents.size(); i++ ) { fileName.resize( 0 ); sprintf( idxStr, "%u", i+1 ); for( const char *c = idxStr; *c; c++) fileName += CmdLineApp::AppChar(*c); fileName += '.'; fileName += fileNameExt; BookComponents[i].FileName = fileName; } bookFileLoc += 0; FileOutputByteStream bookFile; if( bookFile.open( bookFileLoc.data() ) ) { MifOutputByteStream os( bookFile ); os << ""; for( size_t i = 0; i < BookComponents.size(); i++ ) os << "\n" << BookComponents[i].FileName << "\'>" << "\n>"; } else { MifDoc::curInstance().App->message ( MifMessages::cannotOpenOutputError, StringMessageArg( MifDoc::curInstance().App->convertInput( bookFileLoc.data() ) ), ErrnoMessageArg( errno ) ); } } else if( BookComponents.size() == 1 ) BookComponents[0].FileName = outFileName; for( size_t i = 0; i < BookComponents.size(); i++ ) BookComponents[i].commit( outDir ); } void MifDoc::enterBookComponent() { TagStream *defaultTagStream = new TagStream( MifDoc::T_indent( 0 ) ); enterTagStream( *defaultTagStream ); BookComponent newBookComponent( &defaultTagStream->content() ); bookComponents().push_back( newBookComponent ); } void MifDoc::exitBookComponent() { exitTagStream(); } void MifDoc::outAFrame( T_ID ID, MifOutputByteStream &os ) { os << '\n' << MifOutputByteStream::INDENT << ""; } void MifDoc::switchToTagStream( TagStream &tagStream, bool startWithDefaultPgfFormat ) { if( tagStream.TagStreamClass == TagStream::tsTextFlow ) setCurTextFlow( (MifDoc::TextFlow*)&tagStream ); else if( tagStream.TagStreamClass == TagStream::tsCell ) setCurCell( (MifDoc::Cell*)&tagStream ); if( tagStream.TagStreamClass == TagStream::tsPara ) { MifDoc::Para::currentlyOpened = true; } else if( startWithDefaultPgfFormat ) { tagStream.PgfTagUsed = false; MifDoc::ParagraphFormat defaultPgfFormat; defaultPgfFormat.setDSSSLDefaults(); setCurParagraphFormat( defaultPgfFormat ); } setCurOs( tagStream.content().stream() ); } void MifDoc::enterTagStream( TagStream &tagStream ) { TagStreamStack.resize( TagStreamStack.size() + 1 ); TagStreamStack.back() = &tagStream; switchToTagStream( *TagStreamStack.back() ); } void MifDoc::exitTagStream() { bool startWithDefaultPgfFormat = true; assert( TagStreamStack.size() > 0 ); if( TagStreamStack.back()->TagStreamClass == TagStream::tsPara ) { MifDoc::Para::currentlyOpened = false; startWithDefaultPgfFormat = false; } TagStreamStack.resize( TagStreamStack.size() - 1 ); if( TagStreamStack.size() >= 1 ) switchToTagStream( *TagStreamStack.back(), startWithDefaultPgfFormat ); } void MifDoc::outTagEnd() { os() << ">"; } void MifDoc::outHexChar( unsigned code, MifOutputByteStream *o ) { MifOutputByteStream &outS = ( o != NULL ) ? *o : os(); static const char hex[] = "0123456789abcdef"; outS << "\\x" << hex[(code >> 4) & 0xf] << hex[code & 0xf] << " "; } void MifDoc::outHexChar( unsigned code, String &targetString ) { static const char hex[] = "0123456789abcdef"; targetString += '\\'; targetString += 'x'; targetString += hex[(code >> 4) & 0xf]; targetString += hex[code & 0xf]; targetString += ' '; } void MifDoc::outSpecialChar( const String &charName, MifOutputByteStream *o ) { MifOutputByteStream &outS = ( o != NULL ) ? *o : os(); outS << '\n' << MifOutputByteStream::INDENT << ""; } void MifDoc::outBreakingPara( MifDoc::T_keyword pgfPlacement ) { curFormat().setPgfSpBefore( 0 ), curFormat().setPgfSpAfter( 0 ), curFormat().setPgfPlacement( pgfPlacement ); Para::outSimpleProlog( os() ); curFormat().out( os() ); ParaLine::outProlog( os() ); ParaLine::outEpilog( os() ); Para::outEpilog( os() ); } void MifDoc::beginParaLine() { MifDoc::ParaLine::outProlog( os() ); } void MifDoc::endParaLine() { MifDoc::ParaLine::outEpilog( os() ); } void MifDoc::outPageNumber() { os() << '\n' << MifOutputByteStream::INDENT << ">"; } // --------- MifDoc::ElementSet ----------------------------------------------- MifDoc::ElementSet::ElementSet() {} int MifDoc::ElementSet::bookComponentIndex( unsigned long groveIndex, unsigned long n ) const { unsigned short flags; if( getFlags( groveIndex, n, flags ) ) return int( flags & BOOK_COMPONENT_INDEX_M() ); assert( false ); return 0; } int MifDoc::ElementSet::bookComponentIndex ( unsigned long groveIndex, const StringC &sgmlId ) { SgmlIdInfo &sgmlIdInfo = enforceSgmlId( sgmlId, groveIndex ); return int( sgmlIdInfo.flags & BOOK_COMPONENT_INDEX_M() ); } void MifDoc::ElementSet::setBookComponentIndex ( unsigned long groveIndex, unsigned long n, int i ) { unsigned short flags = 0; getFlags( groveIndex, n, flags ); add( groveIndex, n, ( flags & LINK_TYPE_MASK( AnyReference ) ) | (unsigned short)( i & BOOK_COMPONENT_INDEX_M() ) ); } void MifDoc::ElementSet::setBookComponentIndex ( unsigned long groveIndex, const StringC &sgmlId, int i ) { SgmlIdInfo &sgmlIdInfo = enforceSgmlId( sgmlId, groveIndex ); unsigned short flags = sgmlIdInfo.flags; sgmlIdInfo.flags = ( flags & LINK_TYPE_MASK( AnyReference ) ) | (unsigned short)( i & BOOK_COMPONENT_INDEX_M() ); } bool MifDoc::ElementSet::hasBeenReferenced ( ReferenceType refType, unsigned long groveIndex, unsigned long n ) const { unsigned short flags = 0; getFlags( groveIndex, n, flags ); return ( flags & LINK_TYPE_MASK( refType ) ) != 0 ? true : false; } bool MifDoc::ElementSet::hasBeenReferenced ( ReferenceType refType, unsigned long groveIndex, const StringC &sgmlId ) { SgmlIdInfo &sgmlIdInfo = enforceSgmlId( sgmlId, groveIndex ); return ( sgmlIdInfo.flags & LINK_TYPE_MASK( refType ) ) != 0 ? true : false; } MifDoc::ElementSet::SgmlIdInfo &MifDoc::ElementSet::enforceSgmlId ( const StringC &sgmlId, unsigned long groveIndex ) { SgmlIdInfo *result = SgmlIdInfos.lookup( sgmlId ); if( result == NULL ) { result = new SgmlIdInfo( sgmlId, groveIndex ); SgmlIdInfos.insert( result ); } return *result; } void MifDoc::ElementSet::setReferencedFlag ( ReferenceType refType, unsigned long groveIndex, unsigned long n ) { assert( refType != AnyReference ); unsigned short flags = 0; getFlags( groveIndex, n, flags ); add( groveIndex, n, flags | LINK_TYPE_MASK( refType ) ); } void MifDoc::ElementSet::setReferencedFlag ( ReferenceType refType, unsigned long groveIndex, const StringC &sgmlId ) { SgmlIdInfo &sgmlIdInfo = enforceSgmlId( sgmlId, groveIndex ); assert( refType != AnyReference ); sgmlIdInfo.flags |= LINK_TYPE_MASK( refType ); } void MifDoc::ElementSet::add ( unsigned long groveIndex, unsigned long n, unsigned short flags ) { if( groveIndex >= Flags.size() ) Flags.resize( groveIndex + 1 ); Vector &elems = Flags[groveIndex]; if( n >= elems.size() ) { for( size_t k = 1 + (n - elems.size()); k > 0; --k ) elems.push_back(0); } elems[n] = flags; } bool MifDoc::ElementSet::getFlags ( unsigned long groveIndex, unsigned long n, unsigned short &result ) const { if( groveIndex < Flags.size() && n < Flags[groveIndex].size() ) { result = Flags[groveIndex][n]; return true; } else return false; } #ifdef DSSSL_NAMESPACE } #endif #include "MifFOTBuilder_inst.cxx" #endif /* JADE_MIF */ openjade-1.3.2/jade/MifFOTBuilder.h0100664000076400007640000000116606713071375015101 0ustar ianian// Jade MIF backend // Copyright (c) 1997,1998 Kathleen Marszalek // Version 1.0a // Date: March 27th, 1998 #ifndef MifFOTBuilder_INCLUDED #define MifFOTBuilder_INCLUDED 1 #include "FOTBuilder.h" #include "Ptr.h" #include "ExtendEntityManager.h" #include "CharsetInfo.h" #include "CmdLineApp.h" #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif FOTBuilder * makeMifFOTBuilder(const String &fileLoc, const Ptr &, const CharsetInfo &, CmdLineApp *app, const FOTBuilder::Extension *&ext); #ifdef DSSSL_NAMESPACE } #endif #endif /* not MifFOTBuilder_INCLUDED */ openjade-1.3.2/jade/MifFOTBuilder_inst.m40100664000076400007640000000435006756326365016236 0ustar ianian#ifdef SP_MANUAL_INST #define SP_DEFINE_TEMPLATES #include "IList.h" #include "IQueue.h" #include "Vector.h" #include "Hash.h" #include "PointerTable.h" #undef SP_DEFINE_TEMPLATES #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif __instantiate(IList) __instantiate(IList) __instantiate(Vector) __instantiate(Vector) __instantiate(Vector) __instantiate(Vector) __instantiate(Vector) __instantiate(Vector) __instantiate(Vector) __instantiate(IQueue) __instantiate(Vector) __instantiate(Vector) __instantiate(Vector) __instantiate(Vector) __instantiate(Vector) __instantiate(Vector) __instantiate(Vector) __instantiate(Vector) __instantiate(Vector) __instantiate(Vector) __instantiate(Vector) __instantiate(Vector) __instantiate(Vector) __instantiate(Vector) __instantiate(Vector) __instantiate(Vector) __instantiate(Vector) __instantiate(`PointerTable, StringHash, MifDoc::Ruling>') __instantiate(`PointerTableIter, StringHash, MifDoc::Ruling>') __instantiate(Vector) __instantiate(`PointerTable, StringHash, MifDoc::Color>') __instantiate(`PointerTableIter, StringHash, MifDoc::Color>') __instantiate(Vector) __instantiate(`PointerTable') __instantiate(`PointerTableIter') __instantiate(Vector) __instantiate(Vector) __instantiate(Vector) __instantiate(Vector >) #ifdef DSSSL_NAMESPACE } #endif #endif /* SP_MANUAL_INST */ openjade-1.3.2/jade/MifMessages.msg0100664000076400007640000000060106713071376015242 0ustar ianian# Jade MIF backend # Copyright (c) 1997,1998 Kathleen Marszalek # Version 1.0a # Date: March 27th, 1998 # =7000 # E2+cannotOpenOutputError++MIF: cannot open output file %1 (%2) E1+systemIdNotFilename++MIF: could not convert system identifier %1 to a single filename W0+missingTableColumnFlowObject++MIF: missing table column flow object (table-auto-width feature not fully supported) #openjade-1.3.2/jade/RtfFOTBuilder.cxx0100664000076400007640000035272606746130043015501 0ustar ianian// Copyright (c) 1996, 1997 James Clark // See the file copying.txt for copying permission. #include "config.h" #include "RtfFOTBuilder.h" #include "TmpOutputByteStream.h" #include "RtfMessages.h" #include "MessageArg.h" #include "Vector.h" #include "HashTable.h" #include "InputSource.h" #include "StorageManager.h" #include "Location.h" #include "macros.h" #include "CharMap.h" #include "CharsetRegistry.h" #ifdef WIN32 #include "RtfOle.h" #endif #include "IList.h" #include #include #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif class NullOutputByteStream : public OutputByteStream { public: NullOutputByteStream() { ptr_ = end_ = 0; } void flush() { } void flushBuf(char) { } }; class ElementSet { public: ElementSet(); void add(unsigned long, unsigned long); bool contains(unsigned long, unsigned long) const; private: Vector > v_; }; class RtfFOTBuilder : public SerialFOTBuilder { public: RtfFOTBuilder(OutputByteStream *, const Vector &, const Ptr &, const CharsetInfo &, Messenger *); ~RtfFOTBuilder(); void characters(const Char *, size_t); void paragraphBreak(const ParagraphNIC &); void externalGraphic(const ExternalGraphicNIC &); void rule(const RuleNIC &); void setFontSize(long n); void setFontFamilyName(const StringC &); void setFontWeight(Symbol); void setFontPosture(Symbol); void setGlyphSubstTable(const Vector > &); void setPositionPointShift(const LengthSpec &); void setLanguage(Letter2); void setCountry(Letter2); void setStartIndent(const LengthSpec &); void setEndIndent(const LengthSpec &); void setFirstLineStartIndent(const LengthSpec &); void setLineSpacing(const LengthSpec &); void setMinLeading(const OptLengthSpec &); void setFieldWidth(const LengthSpec &); void setLines(Symbol); void setInputWhitespaceTreatment(Symbol); void setExpandTabs(long); void setQuadding(Symbol); void setDisplayAlignment(Symbol); void setFieldAlign(Symbol); void setHyphenate(bool); void setKern(bool); void setHyphenationLadderCount(long); void setWidowCount(long); void setOrphanCount(long); void setHeadingLevel(long); void setColor(const DeviceRGBColor &); void setBackgroundColor(const DeviceRGBColor &); void setBackgroundColor(); void setLineThickness(Length); void setLineRepeat(long); void setScoreSpaces(bool); void setBoxType(Symbol); void setBorderPresent(bool); void setBorderPriority(long); void setBorderOmitAtBreak(bool); void setPageWidth(long units); void setPageHeight(long units); void setLeftMargin(long units); void setRightMargin(long units); void setTopMargin(long units); void setBottomMargin(long units); void setHeaderMargin(long units); void setFooterMargin(long units); void setPageNumberRestart(bool); void setPageNumberFormat(const StringC &); void setPageNColumns(long); void setPageColumnSep(Length); void setPageBalanceColumns(bool); void setSpan(long); enum { nHF = FOTBuilder::nHF }; void startSimplePageSequenceSerial(); void endSimplePageSequenceSerial(); void startSimplePageSequenceHeaderFooter(unsigned); void endSimplePageSequenceHeaderFooter(unsigned); void endAllSimplePageSequenceHeaderFooter(); void pageNumber(); void startLink(const Address &); void endLink(); void startScore(Symbol); void startBox(const BoxNIC &); void endBox(); void startParagraph(const ParagraphNIC &); void endParagraph(); void startDisplayGroup(const DisplayGroupNIC &); void endDisplayGroup(); void startLineField(const LineFieldNIC &); void endLineField(); void startLeader(const LeaderNIC &); void endLeader(); void startTable(const TableNIC &); void endTable(); void startTablePartSerial(const TablePartNIC &); void endTablePartSerial(); void startTablePartHeader(); void endTablePartHeader(); void startTablePartFooter(); void endTablePartFooter(); void tableColumn(const TableColumnNIC &); void startTableRow(); void endTableRow(); void startTableCell(const TableCellNIC &); void endTableCell(); void tableBeforeRowBorder(); void tableAfterRowBorder(); void tableBeforeColumnBorder(); void tableAfterColumnBorder(); void tableCellBeforeRowBorder(); void tableCellAfterRowBorder(); void tableCellBeforeColumnBorder(); void tableCellAfterColumnBorder(); void setCellBeforeRowMargin(Length); void setCellAfterRowMargin(Length); void setCellBeforeColumnMargin(Length); void setCellAfterColumnMargin(Length); void setCellBackground(bool); void setCellRowAlignment(Symbol); // math void startMathSequence(); void endMathSequence(); void startFractionSerial(); void endFractionSerial(); void startFractionNumerator(); void endFractionNumerator(); void startFractionDenominator(); void endFractionDenominator(); void startSubscript(); void endSubscript(); void startSuperscript(); void endSuperscript(); void startRadicalSerial(); void endRadicalSerial(); void startRadicalDegree(); void endRadicalDegree(); void startFenceSerial(); void endFenceSerial(); void startFenceOpen(); void endFenceOpen(); void startFenceClose(); void endFenceClose(); void startMathOperatorSerial(); void endMathOperatorSerial(); void startMathOperatorOperator(); void endMathOperatorOperator(); void startMathOperatorLowerLimit(); void endMathOperatorLowerLimit(); void startMathOperatorUpperLimit(); void endMathOperatorUpperLimit(); void startMarkSerial(); void endMarkSerial(); void startMarkOver(); void endMarkOver(); void startMarkUnder(); void endMarkUnder(); void startScriptSerial(); void endScriptSerial(); void startScriptPreSup(); void startScriptPreSub(); void startScriptPostSup(); void startScriptPostSub(); void startScriptMidSup(); void startScriptMidSub(); void startGrid(const GridNIC &); void endGrid(); void startGridCell(const GridCellNIC &); void endGridCell(); void setMathDisplayMode(Symbol); void setGridPositionCellType(Symbol); void setGridColumnAlignment(Symbol); void setGridRowSep(Length); void setGridColumnSep(Length); void setSubscriptDepth(Length); void setSuperscriptHeight(Length); void setUnderMarkDepth(Length); void setOverMarkHeight(Length); void startNode(const NodePtr &, const StringC &); void endNode(); void currentNodePageNumber(const NodePtr &); struct WinCharset { unsigned char charsetCode; const char *fontSuffix; Char mapping[128]; }; enum { jisCharset = 5, nWinCharsets = 7 }; static const WinCharset winCharsets[nWinCharsets]; struct SymbolFont { const char *name; Char mapping[256]; }; enum { nSymbolFonts = 3 }; static const SymbolFont symbolFonts[nSymbolFonts]; enum { topBorder, bottomBorder, leftBorder, rightBorder }; struct Border { Border() : priority(0), flags(0) { } long priority; enum { isPresent = 01, isDouble = 02, omitAtBreak = 04 }; unsigned char flags; unsigned char thickness; unsigned short color; }; enum BreakType { breakNone, breakPage, breakColumn }; private: OutputByteStream &os() { return *osp_; } void start(); void end(); void atomic(); void syncCharFormat(); void setCharset(int); void inlinePrepare(); void flushPendingElements(); void doStartLink(const Address &); void flushFields() { if (!suppressBookmarks_) flushPendingElements(); if (havePendingLink_) { havePendingLink_ = 0; doStartLink(pendingLink_); } } void startDisplay(const DisplayNIC &); void endDisplay(); void newPar(bool allowSpaceBefore = 1); bool includePicture(const ExternalGraphicNIC &); bool embedObject(const ExternalGraphicNIC &); bool systemIdNotation(const StringC &systemId, const char *, StringC &); bool systemIdFilename(const StringC &systemId, StringC &filename); int systemIdFilename1(const StringC &systemId, StringC &filename); int makeColor(const DeviceRGBColor &); void outputBookmarkName(unsigned long groveIndex, const Char *, size_t); void outputBookmarkName(unsigned long groveIndex, unsigned long elementIndex); static unsigned convertLanguage(unsigned language, unsigned country, unsigned &langCharsets); void idrefButton(unsigned long groveIndex, const Char *s, size_t n); void outputTable(); void storeBorder(Border &); void resolveBorder(Border &, Border &); void resolveOutsideBorder(Border &, const Border &); void outputTableBorder(const Border &); void outputHeaderFooter(const char *suffix, unsigned flags); long computeLengthSpec(const LengthSpec &); void displaySizeChanged(); void symbolChar(int ff, unsigned code); void initJIS(); void enterMathMode(); void exitMathMode(); static int points(Length n) { if (n >= 0) return (n + 10)/20; else return (n - 10)/20; } enum InlineState { inlineFirst, // never had an inline FO inlineStart, // must emit \par before next inline FO inlineField, // in a line field inlineFieldEnd, // in a line field with align=end inlineMiddle, // had some inline FOs inlineTable // just after \row }; InlineState inlineState_; bool continuePar_; enum UnderlineType { noUnderline, underlineSingle, underlineDouble, underlineWords }; // What the RTF reader thinks the format is. struct CommonFormat { CommonFormat(); bool isBold; bool isItalic; bool isSmallCaps; // UnderlineType char underline; bool isStrikethrough; int fontFamily; int fontSize; int color; int charBackgroundColor; int positionPointShift; unsigned language; unsigned country; bool kern; bool charBorder; int charBorderColor; long charBorderThickness; bool charBorderDouble; }; struct OutputFormat : CommonFormat { OutputFormat(); int charset; unsigned lang; // the RTF language code // bitmap of charsets that can be used for the lang unsigned langCharsets; }; enum { widowControl = 01, orphanControl = 02 }; struct ParaFormat { ParaFormat(); int leftIndent; int rightIndent; int firstLineIndent; int lineSpacing; bool lineSpacingAtLeast; char quadding; // 'l', 'c', 'r', 'j' Symbol lines; char widowOrphanControl; char headingLevel; }; enum { gridPosRowMajor, gridPosColumnMajor, gridPosExplicit }; struct Format : ParaFormat, CommonFormat { Format(); bool hyphenate; int fieldWidth; Symbol fieldAlign; Symbol inputWhitespaceTreatment; long expandTabs; char displayAlignment; // 'l', 'c', 'r' long lineThickness; bool lineDouble; bool scoreSpaces; bool boxHasBorder; bool boxHasBackground; int backgroundColor; // 0 for none bool borderPresent; bool borderOmitAtBreak; bool cellBackground; long borderPriority; long cellTopMargin; long cellBottomMargin; long cellLeftMargin; long cellRightMargin; char cellVerticalAlignment; char gridPosType; char gridColumnAlignment; bool mathInline; bool mathPosture; int superscriptHeight; // in points int subscriptDepth; // in points int overMarkHeight; // in points int underMarkDepth; // in points int gridRowSep; // in points int gridColumnSep; // in points bool span; // These are needed for handling LengthSpecs LengthSpec positionPointShiftSpec; LengthSpec leftIndentSpec; LengthSpec rightIndentSpec; LengthSpec firstLineIndentSpec; LengthSpec lineSpacingSpec; LengthSpec fieldWidthSpec; }; struct PageFormat { PageFormat(); long pageWidth; long pageHeight; long leftMargin; long rightMargin; long headerMargin; long footerMargin; long topMargin; long bottomMargin; bool pageNumberRestart; const char *pageNumberFormat; long nColumns; long columnSep; bool balance; }; // This is for a nested displayed flow object struct DisplayInfo { int spaceAfter; bool keepWithNext; bool saveKeep; BreakType breakAfter; }; OutputFormat outputFormat_; Format specFormat_; ParaFormat paraFormat_; Vector paraStack_; Vector displayStack_; Vector specFormatStack_; Vector pendingElements_; Vector pendingElementLevels_; unsigned nPendingElementsNonEmpty_; bool suppressBookmarks_; unsigned nodeLevel_; Vector displayBoxLevels_; bool boxFirstPara_; // not yet had a paragraph in the outermost displayed box long boxLeftSep_; long boxRightSep_; long boxTopSep_; long accumSpaceBox_; HashTable fontFamilyNameTable_; struct FontFamilyCharsets { FontFamilyCharsets(); int rtfFontNumber[nWinCharsets]; }; Vector fontFamilyCharsetsTable_; int nextRtfFontNumber_; int accumSpace_; bool keepWithNext_; bool hyphenateSuppressed_; long maxConsecHyphens_; OutputByteStream *osp_; OutputByteStream *finalos_; TmpOutputByteStream tempos_; StrOutputByteStream cellos_; long tableWidth_; char tableAlignment_; long tableDisplaySize_; int tableLeftIndent_; int tableRightIndent_; long addLeftIndent_; long addRightIndent_; Border tableBorder_[4]; unsigned cellIndex_; struct Cell { Cell() : present(0), hasBackground(0), span(1), vspan(1), valign('t') { } bool present; bool hasBackground; unsigned short backgroundColor; char valign; String content; unsigned span; unsigned vspan; Border border[4]; }; struct Column { Column() : hasWidth(0) { } bool hasWidth; TableLengthSpec width; }; Vector > cells_; bool inTableHeader_; unsigned nHeaderRows_; Vector columns_; unsigned tableLevel_; StrOutputByteStream fieldos_; int fieldTabPos_; long displaySize_; bool hadSection_; bool doBalance_; unsigned spanDisplayLevels_; unsigned currentCols_; BreakType doBreak_; bool keep_; bool hadParInKeep_; unsigned linkDepth_; unsigned inSimplePageSequence_; PageFormat pageFormat_; Vector pageFormatStack_; OutputFormat saveOutputFormat_; OutputFormat leaderSaveOutputFormat_; Vector colorTable_; Ptr entityManager_; Messenger *mgr_; const CharsetInfo *systemCharset_; bool followWhitespaceChar_; unsigned currentColumn_; ElementSet elementsRefed_; // Leaders unsigned leaderDepth_; NullOutputByteStream nullos_; OutputByteStream *preLeaderOsp_; enum { CHAR_TABLE_CHAR_BITS = 16 }; enum { CHAR_TABLE_SYMBOL_FLAG = 1U << 31, CHAR_TABLE_DB_FLAG = 1U << 30 }; CharMap charTable_; String hfPart_[nHF]; StrOutputByteStream hfos_; enum RTFVersion { word95, word97 }; RTFVersion rtfVersion_; Address pendingLink_; bool havePendingLink_; // Charaction for separating arguments in an EQ field; must be ',' or ';' char eqArgSep_; unsigned mathLevel_; enum MathSpecial { mathNormal, mathFence, mathIntegral }; MathSpecial mathSpecial_; OutputFormat mathSaveOutputFormat_; struct ReorderFlowObject; friend struct ReorderFlowObject; struct ReorderFlowObject : public Link { OutputByteStream *saveOsp; StrOutputByteStream buf; OutputFormat saveOutputFormat; Vector > streams; }; struct Grid; friend struct Grid; struct Grid : public Link { OutputByteStream *saveOsp; StrOutputByteStream buf; OutputFormat saveOutputFormat; size_t nRows; size_t nColumns; char posType; String *curCellPtr; Vector > > cells; }; IList reorderStack_; IList gridStack_; #ifdef WIN32 Vector oleObject_; #endif void startReorderFlowObject(); void endReorderFlowObjectPort(); void endReorderFlowObject(); friend struct OutputFormat; friend struct Format; friend struct CommonFormat; friend struct ParaFormat; }; inline long RtfFOTBuilder::computeLengthSpec(const LengthSpec &spec) { if (spec.displaySizeFactor == 0.0) return spec.length; else { double tem = displaySize_ * spec.displaySizeFactor; return spec.length + long(tem >= 0.0 ? tem +.5 : tem - .5); } } // Use a line-spacing of 12pt for the header and footer // and assume 2.5pt of it occur after the baseline. const int hfPreSpace = 190; const int hfPostSpace = 50; const char INSERTION_CHAR = '\0'; const int SYMBOL_FONT_PAGE = 0xf000; const unsigned DEFAULT_LANG = 0x400; inline int halfPoints(long n) { return n/10; } TmpOutputByteStream::TmpOutputByteStream() : head_(0), last_(0), nFullBlocks_(0) { } TmpOutputByteStream::~TmpOutputByteStream() { while (head_) { Block *tem = head_; head_ = head_->next; delete tem; } } void TmpOutputByteStream::flushBuf(char ch) { Block *tem = new Block; char *p = tem->buf; *p++ = ch; ptr_ = p; end_ = tem->buf + bufSize; tem->next = 0; if (last_) { nFullBlocks_++; last_->next = tem; } else head_ = tem; last_ = tem; } void TmpOutputByteStream::flush() { } FOTBuilder *makeRtfFOTBuilder(OutputByteStream *os, const Vector &options, const Ptr &entityManager, const CharsetInfo &systemCharset, Messenger *mgr, const FOTBuilder::Extension *&ext) { static const FOTBuilder::Extension extensions[] = { { "UNREGISTERED::James Clark//Characteristic::page-number-format", 0, (void (FOTBuilder::*)(const StringC &))&RtfFOTBuilder::setPageNumberFormat, 0, 0 }, { "UNREGISTERED::James Clark//Characteristic::page-number-restart?", (void (FOTBuilder::*)(bool))&RtfFOTBuilder::setPageNumberRestart, 0, 0 }, { "UNREGISTERED::James Clark//Characteristic::page-n-columns", 0, 0, (void (FOTBuilder::*)(long))&RtfFOTBuilder::setPageNColumns, 0 }, { "UNREGISTERED::James Clark//Characteristic::page-column-sep", 0, 0, 0, (void (FOTBuilder::*)(FOTBuilder::Length))&RtfFOTBuilder::setPageColumnSep, }, { "UNREGISTERED::James Clark//Characteristic::page-balance-columns?", (void (FOTBuilder::*)(bool))&RtfFOTBuilder::setPageBalanceColumns, 0, 0 }, { "UNREGISTERED::James Clark//Characteristic::subscript-depth", 0, 0, 0, (void (FOTBuilder::*)(FOTBuilder::Length))&RtfFOTBuilder::setSubscriptDepth, }, { "UNREGISTERED::James Clark//Characteristic::over-mark-height", 0, 0, 0, (void (FOTBuilder::*)(FOTBuilder::Length))&RtfFOTBuilder::setOverMarkHeight, }, { "UNREGISTERED::James Clark//Characteristic::under-mark-depth", 0, 0, 0, (void (FOTBuilder::*)(FOTBuilder::Length))&RtfFOTBuilder::setUnderMarkDepth, }, { "UNREGISTERED::James Clark//Characteristic::superscript-height", 0, 0, 0, (void (FOTBuilder::*)(FOTBuilder::Length))&RtfFOTBuilder::setSuperscriptHeight, }, { "UNREGISTERED::James Clark//Characteristic::grid-row-sep", 0, 0, 0, (void (FOTBuilder::*)(FOTBuilder::Length))&RtfFOTBuilder::setGridRowSep, }, { "UNREGISTERED::James Clark//Characteristic::grid-column-sep", 0, 0, 0, (void (FOTBuilder::*)(FOTBuilder::Length))&RtfFOTBuilder::setGridColumnSep, }, { "UNREGISTERED::James Clark//Characteristic::heading-level", 0, 0, (void (FOTBuilder::*)(long))&RtfFOTBuilder::setHeadingLevel, 0 }, { 0, 0, 0} }; ext = extensions; return new RtfFOTBuilder(os, options, entityManager, systemCharset, mgr); } RtfFOTBuilder::RtfFOTBuilder(OutputByteStream *os, const Vector &options, const Ptr &entityManager, const CharsetInfo &systemCharset, Messenger *mgr) : finalos_(os), entityManager_(entityManager), systemCharset_(&systemCharset), mgr_(mgr), inlineState_(inlineFirst), continuePar_(0), osp_(&tempos_), accumSpace_(0), keepWithNext_(0), hadSection_(0), linkDepth_(0), tableLevel_(0), nodeLevel_(0), nPendingElementsNonEmpty_(0), suppressBookmarks_(0), followWhitespaceChar_(0), currentColumn_(0), boxFirstPara_(0), leaderDepth_(0), fontFamilyCharsetsTable_(1 + nSymbolFonts), nextRtfFontNumber_(1), inTableHeader_(0), nHeaderRows_(0), displaySize_(72*10*17), addLeftIndent_(0), addRightIndent_(0), inSimplePageSequence_(0), doBalance_(0), spanDisplayLevels_(0), currentCols_(1), hyphenateSuppressed_(0), maxConsecHyphens_(0), doBreak_(breakNone), keep_(0), hadParInKeep_(0), charTable_(0), rtfVersion_(word97), havePendingLink_(0), eqArgSep_(','), mathLevel_(0), mathSpecial_(mathNormal) { specFormat_.fontSize = 20; // 10 points specFormatStack_.push_back(specFormat_); pageFormatStack_.push_back(pageFormat_); StringC times; for (const char *s = "Times New Roman"; *s; s++) times += *s; fontFamilyNameTable_.insert(times, 0); fontFamilyCharsetsTable_[0].rtfFontNumber[0] = 0; for (int i = 0; i < nWinCharsets; i++) { for (int j = 0; j < 128; j++) { Char c = winCharsets[i].mapping[j]; if (c) { if (!charTable_[c]) charTable_.setChar(c, (j + 0x80) | (1 << (i + CHAR_TABLE_CHAR_BITS))); else if ((charTable_[c] & ((1 << CHAR_TABLE_CHAR_BITS) - 1)) == (j + 0x80)) charTable_.setChar(c, charTable_[c] | (1 << (i + CHAR_TABLE_CHAR_BITS))); } } } for (int i = 0; i < nSymbolFonts; i++) { for (int j = 0; j < 256; j++) { Char c = symbolFonts[i].mapping[j]; if (c && !charTable_[c]) charTable_.setChar(c, j | (i << CHAR_TABLE_CHAR_BITS) | CHAR_TABLE_SYMBOL_FLAG); } StringC tem; for (const char *s = symbolFonts[i].name; *s; s++) tem += *s; fontFamilyNameTable_.insert(tem, i + 1); } // We want characters like right arrow to come from the symbol font, not using // charset 128. initJIS(); for (size_t i = 0; i < options.size(); i++) { if (options[i] == systemCharset.execToDesc("95")) rtfVersion_ = word95; } } void RtfFOTBuilder::initJIS() { WideChar min, max; UnivChar univ; Owner jis(CharsetRegistry::makeIter(CharsetRegistry::JIS0208)); while (jis->next(min, max, univ)) { do { if (!charTable_[univ]) { unsigned char c1 = min >> 8; unsigned char c2 = min & 0x7f; unsigned char out1; if (c1 < 33) out1 = 0; else if (c1 < 95) out1 = ((c1 + 1) >> 1) + 112; else if (c1 < 127) out1 = ((c1 + 1) >> 1) + 176; else out1 = 0; if (out1) { unsigned char out2; if (c1 & 1) { if (c2 < 33) out2 = 0; else if (c2 <= 95) out2 = c2 + 31; else if (c2 <= 126) out2 = c2 + 32; else out2 = 0; } else { if (33 <= c2 && c2 <= 126) out2 = c2 + 126; else out2 = 0; } if (out2) charTable_.setChar(univ, (out1 << 8) | out2 | (1 << (jisCharset + CHAR_TABLE_CHAR_BITS)) | CHAR_TABLE_DB_FLAG); } } univ++; } while (min++ != max); } } inline void outputWord(OutputByteStream &os, unsigned long n) { os << char((n >> 24) & 0xff) << char((n >> 16) & 0xff) << char((n >> 8) & 0xff) << char(n & 0xff); } inline unsigned long readWord(const char *&s, size_t &n, TmpOutputByteStream::Iter &sbIter) { unsigned long result = 0; for (int i = 0; i < 4; i++, n--) { if (n == 0) { bool gotSome = sbIter.next(s, n); ASSERT(gotSome); } result = (result << 8) | (unsigned char)*s++; } return result; } RtfFOTBuilder::~RtfFOTBuilder() { if (doBalance_) { os() << "\\sect\\sbknone\\par"; doBalance_ = 0; } os() << "}\n"; os().flush(); osp_ = finalos_; os() << "{\\rtf1\\ansi\\deff0\n"; os() << "{\\fonttbl"; HashTableIter iter(fontFamilyNameTable_); for (;;) { const StringC *key; const int *ip; if (!iter.next(key, ip)) break; const int *charsets = fontFamilyCharsetsTable_[*ip].rtfFontNumber; for (int i = 0; i < nWinCharsets; i++) { if (charsets[i] >= 0) { os() << "{\\f" << charsets[i] << "\\fnil\\fcharset" << int(winCharsets[i].charsetCode) << ' '; for (size_t j = 0; j < key->size(); j++) os() << (char)(*key)[j]; os() << winCharsets[i].fontSuffix; os() << ";}\n"; } } } os() << "}\n"; os() << "{\\colortbl;"; for (size_t i = 0; i < colorTable_.size(); i++) { unsigned n = colorTable_[i]; os() << "\\red" << (n >> 16) << "\\green" << ((n >> 8) & 0xff) << "\\blue" << (n & 0xff) << ';'; } os() << "}{\\stylesheet"; for (int i = 1; i <= 9; i++) os() << "{\\s" << i << " Heading " << i << ";}"; os() << "}\n"; if (maxConsecHyphens_ > 0) os() << "\\hyphconsec" << maxConsecHyphens_; os() << "\\deflang" << DEFAULT_LANG << "\\notabind\\facingp\\hyphauto1\\widowctrl\n"; TmpOutputByteStream::Iter sbIter(tempos_); const char *s; size_t n; while (sbIter.next(s, n)) { while (n > 0) { const char *p = (char *)memchr(s, INSERTION_CHAR, n); if (!p) { os().sputn(s, n); break; } os().sputn(s, p - s); n -= (p - s); s = p; --n; s++; if (n == 0) { bool gotSome = sbIter.next(s, n); ASSERT(gotSome); } char kind = *s++; n--; switch (kind) { case 'b': { unsigned long grovei = readWord(s, n, sbIter); unsigned long ei = readWord(s, n, sbIter); if (elementsRefed_.contains(grovei, ei)) { os() << "{\\*\\bkmkstart "; outputBookmarkName(grovei, ei); os() << '}'; os() << "{\\*\\bkmkend "; outputBookmarkName(grovei, ei); os() << '}'; } break; } #ifdef WIN32 case 'o': { unsigned long oi = readWord(s, n, sbIter); StringC filename(oleObject_[oi]); filename += 0; StringC clsid(oleObject_[oi + 1]); clsid += 0; if (!outputObject(filename.data(), clsid.data(), os())) mgr_->message(RtfMessages::cannotEmbedFilename, StringMessageArg(oleObject_[oi]), StringMessageArg(oleObject_[oi + 1])); break; } #endif /* WIN32 */ default: CANNOT_HAPPEN(); } } } } void RtfFOTBuilder::syncCharFormat() { bool changed = 0; if (outputFormat_.isBold != specFormat_.isBold) { os() << "\\b"; if (!specFormat_.isBold) os() << '0'; outputFormat_.isBold = specFormat_.isBold; changed = 1; } if (outputFormat_.isItalic != specFormat_.isItalic) { os() << "\\i"; if (!specFormat_.isItalic) os() << '0'; outputFormat_.isItalic = specFormat_.isItalic; changed = 1; } if (outputFormat_.underline != specFormat_.underline) { switch (specFormat_.underline) { case noUnderline: os() << "\\ul0"; break; case underlineSingle: os() << "\\ul"; break; case underlineDouble: os() << "\\uldb"; break; case underlineWords: os() << "\\ulw"; break; } outputFormat_.underline = specFormat_.underline; changed = 1; } if (outputFormat_.isSmallCaps != specFormat_.isSmallCaps) { os() << "\\scaps"; if (!specFormat_.isSmallCaps) os() << '0'; outputFormat_.isSmallCaps = specFormat_.isSmallCaps; changed = 1; } if (outputFormat_.isStrikethrough != specFormat_.isStrikethrough) { os() << "\\strike"; if (!specFormat_.isStrikethrough) os() << '0'; outputFormat_.isStrikethrough = specFormat_.isStrikethrough; changed = 1; } if (outputFormat_.positionPointShift != specFormat_.positionPointShift) { if (specFormat_.positionPointShift >= 0) os() << "\\up" << specFormat_.positionPointShift; else os() << "\\dn" << -specFormat_.positionPointShift; outputFormat_.positionPointShift = specFormat_.positionPointShift; changed = 1; } if (outputFormat_.fontSize != specFormat_.fontSize) { os() << "\\fs" << specFormat_.fontSize; outputFormat_.fontSize = specFormat_.fontSize; changed = 1; } if (outputFormat_.country != specFormat_.country || outputFormat_.language != specFormat_.language) { outputFormat_.country = specFormat_.country; outputFormat_.language = specFormat_.language; unsigned lang = convertLanguage(outputFormat_.language, outputFormat_.country, outputFormat_.langCharsets); if (lang != outputFormat_.lang) { outputFormat_.lang = lang; os() << "\\lang" << lang; changed = 1; } } bool charsetOk = ((1 << outputFormat_.charset) & outputFormat_.langCharsets); if (outputFormat_.fontFamily != specFormat_.fontFamily || !charsetOk) { outputFormat_.fontFamily = specFormat_.fontFamily; // Make sure the charset is compatible with the language if (!charsetOk) { for (outputFormat_.charset = 0; !(outputFormat_.langCharsets & (1 << outputFormat_.charset)); outputFormat_.charset++) ; } int &n = fontFamilyCharsetsTable_[outputFormat_.fontFamily].rtfFontNumber[outputFormat_.charset]; if (n < 0) n = nextRtfFontNumber_++; os() << "\\f" << n; changed = 1; } if (outputFormat_.color != specFormat_.color) { os() << "\\cf" << specFormat_.color; outputFormat_.color = specFormat_.color; changed = 1; } if (outputFormat_.charBackgroundColor != specFormat_.charBackgroundColor) { os() << "\\highlight" << specFormat_.charBackgroundColor; outputFormat_.charBackgroundColor = specFormat_.charBackgroundColor; changed = 1; } if (specFormat_.charBorder) { if (!outputFormat_.charBorder || specFormat_.charBorderColor != outputFormat_.charBorderColor || specFormat_.charBorderThickness != outputFormat_.charBorderThickness || specFormat_.charBorderDouble != outputFormat_.charBorderDouble) { outputFormat_.charBorder = 1; os() << "\\chbrdr"; if (specFormat_.charBorderDouble) os() << "\\brdrdb"; else os() << "\\brdrs"; os() << "\\brdrw" << specFormat_.charBorderThickness; if (specFormat_.charBorderColor) os() << "\\brdrcf" << specFormat_.charBorderColor; changed = 1; outputFormat_.charBorderColor = specFormat_.charBorderColor; outputFormat_.charBorderThickness = specFormat_.charBorderThickness; outputFormat_.charBorderDouble = specFormat_.charBorderDouble; } } else { if (outputFormat_.charBorder) { os() << "\\chbrdr"; changed = 1; outputFormat_.charBorder = 0; } } if (!specFormat_.hyphenate) hyphenateSuppressed_ = 1; if (outputFormat_.kern != specFormat_.kern) { os() << "\\kerning" << (specFormat_.kern ? '1' : '0'); outputFormat_.kern = specFormat_.kern; changed = 1; } if (changed) os() << ' '; } void RtfFOTBuilder::setCharset(int cs) { outputFormat_.charset = cs; int &n = fontFamilyCharsetsTable_[outputFormat_.fontFamily].rtfFontNumber[cs]; if (n < 0) n = nextRtfFontNumber_++; os() << "\\f" << n; } inline void hexChar(OutputByteStream &os, unsigned code) { static const char hex[] = "0123456789abcdef"; os << "\\'" << hex[(code >> 4) & 0xf] << hex[code & 0xf]; } void RtfFOTBuilder::symbolChar(int ff, unsigned code) { #if 0 os() << "{\\field{\\*\\fldinst SYMBOL " << (unsigned long)code << " \\\\f \"" << symbolFonts[ff - 1].name << "\"}{\\fldrslt "; #endif int &n = fontFamilyCharsetsTable_[ff].rtfFontNumber[nWinCharsets - 1]; if (n < 0) n = nextRtfFontNumber_++; os() << "{\\f" << n; hexChar(os(), code); os() << "}"; #if 0 os() << "}}"; #endif } void RtfFOTBuilder::characters(const Char *s, size_t n) { // Ignore record ends at the start of continuation paragraphs. if (continuePar_ && (inlineState_ == inlineStart || inlineState_ == inlineFirst) && paraFormat_.lines == symbolWrap) { for (; n > 0 && *s == '\r'; s++, n--) ; if (n == 0) return; } // This avoids clearing followWhitespaceChar_. if (inlineState_ != inlineMiddle) inlinePrepare(); else flushFields(); syncCharFormat(); if (mathLevel_ && mathSpecial_ == mathIntegral && n > 0) { switch (*s) { case 0x222b: // integral return; case 0x2211: // sum os() << "\\\\su"; return; case 0x220f: // product os() << "\\\\pr"; return; default: os() << "\\\\vc\\\\"; break; } } for (; n > 0; s++, n--) { bool prevWhitespaceChar = followWhitespaceChar_; followWhitespaceChar_ = 0; currentColumn_++; switch (*s) { case '\n': currentColumn_--; followWhitespaceChar_ = prevWhitespaceChar; break; case '\r': followWhitespaceChar_ = 1; switch (paraFormat_.lines) { case symbolNone: // FIXME case symbolWrap: switch (specFormat_.inputWhitespaceTreatment) { case symbolIgnore: currentColumn_--; break; case symbolCollapse: if (prevWhitespaceChar) { currentColumn_--; break; } // fall through default: os() << ' '; } break; default: os() << "\\sa0\\par\\fi0\\sb0\n"; currentColumn_ = 0; break; } break; case '\t': if (specFormat_.expandTabs && specFormat_.inputWhitespaceTreatment == symbolPreserve) { unsigned col = --currentColumn_ + specFormat_.expandTabs; col = (col / specFormat_.expandTabs) * specFormat_.expandTabs; for (; currentColumn_ < col; currentColumn_++) os() << ' '; followWhitespaceChar_ = 1; break; } // fall through case ' ': followWhitespaceChar_ = 1; switch (specFormat_.inputWhitespaceTreatment) { case symbolIgnore: currentColumn_--; break; case symbolCollapse: if (prevWhitespaceChar) { currentColumn_--; break; } // fall through default: os() << ' '; } break; case 0x2002: os() << "\\u8194\\'20"; break; case 0x2003: os() << "\\u8195\\'20"; break; case 0x2010: os() << '-'; break; case 0x2011: os() << "\\_"; break; case 0x200c: os() << "\\zwnj "; break; case 0x200d: os() << "\\zwj "; break; case 0xa0: os() << "\\~"; break; case 0xad: os() << "\\-"; break; case '\0': break; case ';': case ',': if (mathLevel_ && *s == eqArgSep_ && mathSpecial_ == mathNormal) os() << "\\\\"; os() << char(*s); break; case '(': case ')': if (mathLevel_ && mathSpecial_ == mathNormal) os() << "\\\\"; os() << char(*s); break; case '\\': if (outputFormat_.charset == jisCharset) setCharset(0); if (mathLevel_ && mathSpecial_ == mathNormal) { // quote once to get through RTF // quote again to get through field // quote again to get through C++ os() << "\\\\\\\\"; break; } // fall through case '{': case '}': os() << '\\' << char(*s); break; case '|': case '~': if (outputFormat_.charset == jisCharset) setCharset(0); // fall through default: if (*s < 0x80) { if (specFormat_.mathPosture && (('a' <= *s && *s <= 'z') || ('A' <= *s && *s <= 'Z'))) os() << "{\\i " << char(*s) << '}'; else os() << char(*s); } else { unsigned long code = charTable_[*s]; if (code & CHAR_TABLE_SYMBOL_FLAG) symbolChar(((code & ~CHAR_TABLE_SYMBOL_FLAG) >> CHAR_TABLE_CHAR_BITS) + 1, code & 0xff); else if (code) { if (!(code & (1 << (outputFormat_.charset + CHAR_TABLE_CHAR_BITS)))) { // If possible, choose a charset compatible with the language if (code & (outputFormat_.langCharsets << CHAR_TABLE_CHAR_BITS)) code &= ((outputFormat_.langCharsets << CHAR_TABLE_CHAR_BITS) | ((1 << CHAR_TABLE_CHAR_BITS) - 1)); int i = 0; for (unsigned mask = 1 << CHAR_TABLE_CHAR_BITS; !(code & mask); mask <<= 1, i++) ; setCharset(i); } if (code & CHAR_TABLE_DB_FLAG) { os() << "{\\dbch\\uc2\\u" << int(short(*s)); hexChar(os(), (code >> 8) & 0xff); hexChar(os(), code & 0xff); os() << "}"; } else hexChar(os(), code & 0xff); } else { if (*s >= SYMBOL_FONT_PAGE + 0x20 && *s <= SYMBOL_FONT_PAGE + 0xff) symbolChar(outputFormat_.fontFamily, *s & 0xff); else { os() << "\\u" << int(short(*s)); hexChar(os(), '?'); } } } break; } } } void RtfFOTBuilder::setFontSize(long n) { specFormat_.fontSize = halfPoints(n); } void RtfFOTBuilder::setFontFamilyName(const StringC &name) { const int *p = fontFamilyNameTable_.lookup(name); if (!p) { specFormat_.fontFamily = fontFamilyCharsetsTable_.size(); fontFamilyNameTable_.insert(name, specFormat_.fontFamily); fontFamilyCharsetsTable_.resize(fontFamilyCharsetsTable_.size() + 1); } else specFormat_.fontFamily = *p; } void RtfFOTBuilder::setFontWeight(Symbol weight) { specFormat_.isBold = (weight > symbolMedium); } void RtfFOTBuilder::setFontPosture(Symbol posture) { switch (posture) { case symbolOblique: case symbolItalic: specFormat_.isItalic = 1; specFormat_.mathPosture = 0; break; case symbolMath: specFormat_.isItalic = 0; specFormat_.mathPosture = 1; break; default: specFormat_.isItalic = 0; specFormat_.mathPosture = 0; break; } } void RtfFOTBuilder::setGlyphSubstTable(const Vector > &tables) { static const int smallCapAfiiSignature = 0375; specFormat_.isSmallCaps = 0; for (size_t i = 0; i < tables.size(); i++) { const Vector &pairs = tables[i]->pairs; for (size_t j = 0; j < pairs.size(); j += 2) { if (pairs[j].suffix + (smallCapAfiiSignature << 8) == pairs[j + 1].suffix && pairs[j].suffix >= 'a' && pairs[j].suffix <= 'z' && pairs[j].publicId == pairs[j + 1].publicId && strcmp(pairs[j].publicId, "ISO/IEC 10036/RA//Glyphs") == 0) { specFormat_.isSmallCaps = 1; break; } } } } void RtfFOTBuilder::setHyphenate(bool b) { specFormat_.hyphenate = b; } void RtfFOTBuilder::setKern(bool b) { specFormat_.kern = b; } void RtfFOTBuilder::setHyphenationLadderCount(long n) { if (n > 0 && (maxConsecHyphens_ == 0 || n < maxConsecHyphens_)) maxConsecHyphens_ = n; } void RtfFOTBuilder::setWidowCount(long n) { if (n > 1) specFormat_.widowOrphanControl |= widowControl; else specFormat_.widowOrphanControl &= orphanControl; } void RtfFOTBuilder::setOrphanCount(long n) { if (n > 1) specFormat_.widowOrphanControl |= orphanControl; else specFormat_.widowOrphanControl &= widowControl; } void RtfFOTBuilder::setHeadingLevel(long n) { specFormat_.headingLevel = (n >= 1 && n <= 9) ? char(n) : 0; } void RtfFOTBuilder::setColor(const DeviceRGBColor &color) { specFormat_.color = makeColor(color); } void RtfFOTBuilder::setBackgroundColor(const DeviceRGBColor &color) { specFormat_.backgroundColor = makeColor(color); } void RtfFOTBuilder::setBackgroundColor() { specFormat_.backgroundColor = 0; } int RtfFOTBuilder::makeColor(const DeviceRGBColor &color) { unsigned n = (color.red << 16) | (color.green << 8) | color.blue; for (int i = 0; i < colorTable_.size(); i++) if (colorTable_[i] == n) return i + 1; colorTable_.push_back(n); return colorTable_.size(); } void RtfFOTBuilder::setBoxType(Symbol sym) { switch (sym) { case symbolBorder: specFormat_.boxHasBorder = 1; specFormat_.boxHasBackground = 0; break; case symbolBackground: specFormat_.boxHasBorder = 0; specFormat_.boxHasBackground = 1; break; case symbolBoth: specFormat_.boxHasBorder = 1; specFormat_.boxHasBackground = 1; break; default: break; } } void RtfFOTBuilder::setLineThickness(Length len) { specFormat_.lineThickness = (len > 150 ? 150 : len); } void RtfFOTBuilder::setLineRepeat(long n) { specFormat_.lineDouble = (n > 1); } void RtfFOTBuilder::setScoreSpaces(bool b) { specFormat_.scoreSpaces = b; } void RtfFOTBuilder::setBorderPresent(bool b) { specFormat_.borderPresent = b; } void RtfFOTBuilder::setBorderPriority(long n) { specFormat_.borderPriority = n; } void RtfFOTBuilder::setBorderOmitAtBreak(bool b) { specFormat_.borderOmitAtBreak = b; } void RtfFOTBuilder::newPar(bool allowSpaceBefore) { long boxExtraTopSep = 0; if (boxFirstPara_) { boxFirstPara_ = 0; boxLeftSep_ = paraFormat_.leftIndent; boxRightSep_ = paraFormat_.rightIndent; for (size_t i = 1; i < displayBoxLevels_.size(); i++) { boxLeftSep_ += specFormatStack_[displayBoxLevels_[i]].leftIndent; boxRightSep_ += specFormatStack_[displayBoxLevels_[i]].rightIndent; } // RTF doesn't include space before or after a paragraph inside // the box. boxTopSep_ = accumSpace_; accumSpace_ = accumSpaceBox_; accumSpaceBox_ = 0; } if (inlineState_ != inlineFirst) { if (!allowSpaceBefore) { os() << "\\sa" << accumSpace_; accumSpace_ = 0; } if (keep_) { if (hadParInKeep_ || continuePar_) keepWithNext_ = 1; hadParInKeep_ = 1; } if (!doBreak_ && keepWithNext_) os() << "\\keepn"; keepWithNext_ = 0; if (hyphenateSuppressed_) { os() << "\\hyphpar0"; hyphenateSuppressed_ = 0; } os() << "\\par"; } switch (doBreak_) { case breakPage: os() << "\\page"; doBreak_ = breakNone; break; case breakColumn: os() << "\\column"; doBreak_ = breakNone; break; default: break; } if (currentCols_ > 1) { if (spanDisplayLevels_) { os() << "\\sect\\sbknone\\cols1"; currentCols_ = 1; } } else if (spanDisplayLevels_ == 0 && currentCols_ == 1 && pageFormat_.nColumns > 1) { if (inlineState_ != inlineFirst) os() << "\\sect\\sbknone"; os() << "\\cols" << pageFormat_.nColumns << "\\colsx" << pageFormat_.columnSep; currentCols_ = pageFormat_.nColumns; } os() << "\\pard"; if (tableLevel_) os() << "\\intbl"; if (accumSpace_) { os() << "\\sb" << accumSpace_; accumSpace_ = 0; } if (keep_) os() << "\\keep"; if (!paraFormat_.widowOrphanControl) os() << "\\nowidctlpar"; if (paraFormat_.headingLevel) os() << "\\s" << int(paraFormat_.headingLevel); if (displayBoxLevels_.size() > 0) { const Format &boxFormat = specFormatStack_[displayBoxLevels_[0]]; for (const char *s = "tlbr"; *s; s++) { os() << "\\brdr" << *s; if (boxFormat.lineThickness > 75) os() << "\\brdrth\\brdrw" << boxFormat.lineThickness/2; else { if (boxFormat.lineDouble) os() << "\\brdrdb"; else os() << "\\brdrs"; os() << "\\brdrw" << boxFormat.lineThickness; } long sep; switch (*s) { case 't': sep = boxTopSep_; break; case 'l': sep = boxLeftSep_; break; case 'r': sep = boxRightSep_; break; default: sep = 0; break; } os() << "\\brsp" << sep; if (boxFormat.color) os() << "\\brdrcf" << boxFormat.color; if (boxLeftSep_ + boxFormat.leftIndent + addLeftIndent_) os() << "\\li" << boxLeftSep_ + boxFormat.leftIndent + addLeftIndent_; if (boxRightSep_ + boxFormat.rightIndent + addRightIndent_) os() << "\\ri" << boxRightSep_ + boxFormat.rightIndent + addRightIndent_; } } else { if (paraFormat_.leftIndent || addLeftIndent_) os() << "\\li" << paraFormat_.leftIndent + addLeftIndent_; if (paraFormat_.rightIndent || addRightIndent_) os() << "\\ri" << paraFormat_.rightIndent + addRightIndent_; } } // This must be called before any inline flow object. void RtfFOTBuilder::inlinePrepare() { followWhitespaceChar_ = 0; if (inlineState_ == inlineMiddle || inlineState_ == inlineField || inlineState_ == inlineFieldEnd) { flushFields(); return; } newPar(); os() << "\\sl" << (paraFormat_.lineSpacingAtLeast ? paraFormat_.lineSpacing : - paraFormat_.lineSpacing); int fli = continuePar_ ? 0 : paraFormat_.firstLineIndent; if (fli) os() << "\\fi" << fli; if (paraFormat_.quadding != 'l') os() << "\\q" << paraFormat_.quadding; inlineState_ = inlineMiddle; os() << ' '; flushFields(); } void RtfFOTBuilder::setPositionPointShift(const LengthSpec &val) { specFormat_.positionPointShiftSpec = val; specFormat_.positionPointShift = halfPoints(computeLengthSpec(val)); } void RtfFOTBuilder::setStartIndent(const LengthSpec &val) { specFormat_.leftIndentSpec = val; specFormat_.leftIndent = computeLengthSpec(val); } void RtfFOTBuilder::setLanguage(Letter2 code) { specFormat_.language = code; } void RtfFOTBuilder::setCountry(Letter2 code) { specFormat_.country = code; } void RtfFOTBuilder::setEndIndent(const LengthSpec &val) { specFormat_.rightIndentSpec = val; specFormat_.rightIndent = computeLengthSpec(val); } void RtfFOTBuilder::setFirstLineStartIndent(const LengthSpec &val) { specFormat_.firstLineIndentSpec = val; specFormat_.firstLineIndent = computeLengthSpec(val); } void RtfFOTBuilder::setLineSpacing(const LengthSpec &val) { specFormat_.lineSpacingSpec = val; specFormat_.lineSpacing = computeLengthSpec(val); } void RtfFOTBuilder::setMinLeading(const OptLengthSpec &ols) { specFormat_.lineSpacingAtLeast = ols.hasLength; } void RtfFOTBuilder::setFieldWidth(const LengthSpec &val) { specFormat_.fieldWidthSpec = val; specFormat_.fieldWidth = computeLengthSpec(val); } void RtfFOTBuilder::displaySizeChanged() { specFormat_.positionPointShift = computeLengthSpec(specFormat_.positionPointShiftSpec); specFormat_.leftIndent = computeLengthSpec(specFormat_.leftIndentSpec); specFormat_.rightIndent = computeLengthSpec(specFormat_.rightIndentSpec); specFormat_.firstLineIndent = computeLengthSpec(specFormat_.firstLineIndentSpec); specFormat_.lineSpacing = computeLengthSpec(specFormat_.lineSpacingSpec); specFormat_.fieldWidth = computeLengthSpec(specFormat_.fieldWidthSpec); } void RtfFOTBuilder::setQuadding(Symbol quadding) { switch (quadding) { case symbolStart: default: specFormat_.quadding = 'l'; break; case symbolEnd: specFormat_.quadding = 'r'; break; case symbolCenter: specFormat_.quadding = 'c'; break; case symbolJustify: specFormat_.quadding = 'j'; break; } } void RtfFOTBuilder::setDisplayAlignment(Symbol displayAlignment) { switch (displayAlignment) { case symbolStart: specFormat_.displayAlignment = 'l'; break; case symbolEnd: specFormat_.displayAlignment = 'r'; break; case symbolCenter: specFormat_.displayAlignment = 'c'; break; case symbolInside: case symbolOutside: default: specFormat_.displayAlignment = 'l'; break; } } void RtfFOTBuilder::setFieldAlign(Symbol fieldAlign) { specFormat_.fieldAlign = fieldAlign; } void RtfFOTBuilder::setLines(Symbol lines) { specFormat_.lines = lines; } void RtfFOTBuilder::setInputWhitespaceTreatment(Symbol sym) { specFormat_.inputWhitespaceTreatment = sym; } void RtfFOTBuilder::setExpandTabs(long n) { specFormat_.expandTabs = n; } void RtfFOTBuilder::startParagraph(const ParagraphNIC &nic) { startDisplay(nic); start(); paraStack_.resize(paraStack_.size() + 1); paraStack_.back() = paraFormat_; paraFormat_ = specFormat_; } void RtfFOTBuilder::endParagraph() { paraFormat_ = paraStack_.back(); paraStack_.resize(paraStack_.size() - 1); endDisplayGroup(); } void RtfFOTBuilder::paragraphBreak(const ParagraphNIC &nic) { if (paraStack_.size() > 0) { endDisplay(); startDisplay(nic); paraFormat_ = specFormat_; } atomic(); } void RtfFOTBuilder::startBox(const BoxNIC &nic) { if (nic.isDisplay) { startDisplay(nic); if (displayBoxLevels_.size() == 0) { accumSpaceBox_ = accumSpace_; accumSpace_ = 0; boxFirstPara_ = 1; } displayBoxLevels_.push_back(specFormatStack_.size()); } else { if (specFormat_.boxHasBackground && specFormat_.backgroundColor) specFormat_.charBackgroundColor = specFormat_.backgroundColor; if (specFormat_.boxHasBorder && !specFormat_.charBorder) { specFormat_.charBorder = 1; specFormat_.charBorderColor = specFormat_.color; specFormat_.charBorderThickness = specFormat_.lineThickness; specFormat_.charBorderDouble = specFormat_.lineDouble; } inlinePrepare(); } start(); } void RtfFOTBuilder::endBox() { if (displayBoxLevels_.size() > 0 && displayBoxLevels_.back() + 1 == specFormatStack_.size()) { // We're ending a displayed box. if (displayBoxLevels_.size() == 1) { // It was the outermost box. if (boxFirstPara_) { boxFirstPara_ = 0; boxLeftSep_ = boxRightSep_ = boxTopSep_ = 0; long boxHeight = accumSpace_; if (boxHeight <= 0) boxHeight = 1; accumSpace_ = accumSpaceBox_; newPar(1); os() << "\\sl-" << boxHeight; } else if (accumSpace_) { long extra = accumSpace_; accumSpace_ = 0; keepWithNext_ = 1; newPar(1); os() << "\\sl-" << extra; } else accumSpace_ = 0; // This prevents an adjacent box being merged by RTF. displayBoxLevels_.resize(displayBoxLevels_.size() - 1); os() << "\\keepn\\par\\pard\\sl-1"; if (tableLevel_) os() << "\\intbl"; } end(); endDisplay(); } else end(); } void RtfFOTBuilder::startDisplayGroup(const DisplayGroupNIC &nic) { startDisplay(nic); start(); } void RtfFOTBuilder::startDisplay(const DisplayNIC &nic) { if (spanDisplayLevels_) spanDisplayLevels_++; else if (specFormat_.span && pageFormat_.nColumns > 1 && tableLevel_ == 0) { spanDisplayLevels_ = 1; displaySize_ = pageFormat_.pageWidth - pageFormat_.leftMargin - pageFormat_.rightMargin; displaySizeChanged(); } long spaceBefore = computeLengthSpec(nic.spaceBefore.nominal); if (spaceBefore > accumSpace_) accumSpace_ = spaceBefore; if (nic.keepWithPrevious) keepWithNext_ = 1; if (inlineState_ != inlineFirst && inlineState_ != inlineTable) inlineState_ = inlineStart; continuePar_ = 0; switch (nic.breakBefore) { case symbolPage: case symbolPageRegion: case symbolColumnSet: doBreak_ = breakPage; break; case symbolColumn: if (doBreak_ != breakPage) doBreak_ = breakColumn; break; default: break; } displayStack_.resize(displayStack_.size() + 1); long spaceAfter = computeLengthSpec(nic.spaceAfter.nominal); displayStack_.back().spaceAfter = spaceAfter; displayStack_.back().keepWithNext = nic.keepWithNext; displayStack_.back().saveKeep = keep_; switch (nic.keep) { case symbolTrue: case symbolPage: case symbolColumnSet: case symbolColumn: if (!keep_) { hadParInKeep_ = 0; keep_ = 1; } break; default: break; } switch (nic.breakAfter) { case symbolPage: case symbolPageRegion: case symbolColumnSet: displayStack_.back().breakAfter = breakPage; break; case symbolColumn: displayStack_.back().breakAfter = breakColumn; break; default: displayStack_.back().breakAfter = breakNone; break; } } void RtfFOTBuilder::endDisplayGroup() { end(); endDisplay(); } void RtfFOTBuilder::endDisplay() { doBreak_ = displayStack_.back().breakAfter; keep_ = displayStack_.back().saveKeep; if (inlineState_ != inlineTable) { if (inlineState_ != inlineFirst) inlineState_ = inlineStart; continuePar_ = 1; } if (displayStack_.back().spaceAfter > accumSpace_) accumSpace_ = displayStack_.back().spaceAfter; if (displayStack_.back().keepWithNext) keepWithNext_ = 1; displayStack_.resize(displayStack_.size() - 1); if (spanDisplayLevels_) { if (--spanDisplayLevels_ == 0) { displaySize_ = pageFormat_.pageWidth - pageFormat_.leftMargin - pageFormat_.rightMargin; displaySize_ -= pageFormat_.columnSep * (pageFormat_.nColumns - 1); displaySize_ /= pageFormat_.nColumns; displaySizeChanged(); } } } void RtfFOTBuilder::startLineField(const LineFieldNIC &) { start(); if (inlineState_ == inlineStart || inlineState_ == inlineFirst) { fieldTabPos_ = specFormat_.fieldWidth + paraFormat_.leftIndent; if (!continuePar_) fieldTabPos_ += paraFormat_.firstLineIndent; inlinePrepare(); inlineState_ = inlineField; // Empirically-determined minimum possible distance between tabs. static const int minTabSep = 26; switch (specFormat_.fieldAlign) { case symbolStart: default: os() << "\\tx" << fieldTabPos_ << ' '; break; case symbolEnd: osp_ = &fieldos_; inlineState_ = inlineFieldEnd; break; case symbolCenter: { int sep = specFormat_.fieldWidth / 2; if (sep < minTabSep) sep = minTabSep; os() << "\\tqc\\tx" << fieldTabPos_ - sep << "\\tx" << fieldTabPos_ << "\\tab "; } break; } } } void RtfFOTBuilder::endLineField() { if (inlineState_ == inlineFieldEnd) { osp_ = &tempos_; // Strip trailing spaces and adjust position of // tab stop accordingly. String str; fieldos_.extractString(str); size_t i = str.size(); for (; i > 0; i--) if (str[i - 1] != ' ') break; // Assume each space is .25 em. int sep = (str.size() - i)*outputFormat_.fontSize*5/2; str.resize(i); static const int minTabSep = 26; if (sep < minTabSep) sep = minTabSep; os() << "\\tqr\\tx" << fieldTabPos_ - sep << "\\tx" << fieldTabPos_ << "\\tab "; os() << str; os() << "\\tab "; } else if (inlineState_ == inlineField) { os() << "\\tab "; inlineState_ = inlineMiddle; } end(); } void RtfFOTBuilder::startLeader(const LeaderNIC &) { start(); inlinePrepare(); syncCharFormat(); if (leaderDepth_++ == 0) { leaderSaveOutputFormat_ = outputFormat_; preLeaderOsp_ = osp_; osp_ = &nullos_; } } void RtfFOTBuilder::endLeader() { if (--leaderDepth_ == 0) { outputFormat_ = leaderSaveOutputFormat_; osp_ = preLeaderOsp_; // MS Word doesn't mind if tabs aren't set at the beginning of the paragraph. os() << "\\tqr\\tldot\\tx" << (displaySize_ - paraFormat_.rightIndent) << "\\tab "; } end(); } void RtfFOTBuilder::setPageWidth(long units) { if (!inSimplePageSequence_) pageFormat_.pageWidth = units; } void RtfFOTBuilder::setPageHeight(long units) { if (!inSimplePageSequence_) pageFormat_.pageHeight = units; } void RtfFOTBuilder::setLeftMargin(long units) { if (!inSimplePageSequence_) pageFormat_.leftMargin = units; } void RtfFOTBuilder::setRightMargin(long units) { if (!inSimplePageSequence_) pageFormat_.rightMargin = units; } void RtfFOTBuilder::setTopMargin(long units) { if (!inSimplePageSequence_) pageFormat_.topMargin = units; } void RtfFOTBuilder::setBottomMargin(long units) { if (!inSimplePageSequence_) pageFormat_.bottomMargin = units; } void RtfFOTBuilder::setHeaderMargin(long units) { if (!inSimplePageSequence_) pageFormat_.headerMargin = units; } void RtfFOTBuilder::setFooterMargin(long units) { if (!inSimplePageSequence_) pageFormat_.footerMargin = units; } void RtfFOTBuilder::setPageNumberRestart(bool b) { if (!inSimplePageSequence_) pageFormat_.pageNumberRestart = b; } void RtfFOTBuilder::setPageNumberFormat(const StringC &str) { if (inSimplePageSequence_) return; pageFormat_.pageNumberFormat = "dec"; if (str.size() == 1) { switch (str[0]) { case 'A': pageFormat_.pageNumberFormat = "ucltr"; break; case 'a': pageFormat_.pageNumberFormat = "lcltr"; break; case 'I': pageFormat_.pageNumberFormat = "ucrm"; break; case 'i': pageFormat_.pageNumberFormat = "lcrm"; break; } } } void RtfFOTBuilder::setPageNColumns(long n) { if (!inSimplePageSequence_) pageFormat_.nColumns = n > 0 ? n : 1; } void RtfFOTBuilder::setPageColumnSep(Length n) { if (!inSimplePageSequence_) pageFormat_.columnSep = n >= 0 ? n : 0; } void RtfFOTBuilder::setPageBalanceColumns(bool b) { if (!inSimplePageSequence_) pageFormat_.balance = b; } void RtfFOTBuilder::setSpan(long n) { specFormat_.span = n > 1; } void RtfFOTBuilder::startSimplePageSequenceSerial() { inSimplePageSequence_++; start(); if (doBalance_) { os() << "\\sect\\sbknone"; doBalance_ = 0; } if (hadSection_) os() << "\\sect"; else hadSection_ = 1; if (pageFormat_.headerMargin < hfPreSpace) pageFormat_.headerMargin = hfPreSpace; if (pageFormat_.footerMargin < hfPostSpace) pageFormat_.footerMargin = hfPostSpace; // Word 97 seems to get very confused by top or bottom margins less than this. static const int minVMargin = 12*20; if (pageFormat_.topMargin < minVMargin) pageFormat_.topMargin = minVMargin; if (pageFormat_.bottomMargin < minVMargin) pageFormat_.bottomMargin = minVMargin; os() << "\\sectd\\plain"; if (pageFormat_.pageWidth > pageFormat_.pageHeight) os() << "\\lndscpsxn"; os() << "\\pgwsxn" << pageFormat_.pageWidth << "\\pghsxn" << pageFormat_.pageHeight << "\\marglsxn" << pageFormat_.leftMargin << "\\margrsxn" << pageFormat_.rightMargin << "\\margtsxn" << pageFormat_.topMargin << "\\margbsxn" << pageFormat_.bottomMargin << "\\headery" << 0 << "\\footery" << 0 << "\\pgn" << pageFormat_.pageNumberFormat; if (pageFormat_.pageNumberRestart) os() << "\\pgnrestart"; displaySize_ = pageFormat_.pageWidth - pageFormat_.leftMargin - pageFormat_.rightMargin; currentCols_ = 1; if (pageFormat_.nColumns > 1) { displaySize_ -= pageFormat_.columnSep * (pageFormat_.nColumns - 1); displaySize_ /= pageFormat_.nColumns; } if (pageFormat_.balance) doBalance_ = 1; displaySizeChanged(); outputFormat_ = OutputFormat(); doBreak_ = breakNone; suppressBookmarks_ = 1; accumSpace_ = 0; } void RtfFOTBuilder::endSimplePageSequenceSerial() { if (inlineState_ != inlineFirst) { if (hyphenateSuppressed_) { os() << "\\hyphpar0"; hyphenateSuppressed_ = 0; } os() << "\\par"; } inlineState_ = inlineFirst; continuePar_ = 0; end(); --inSimplePageSequence_; if (!inSimplePageSequence_) pageFormat_ = pageFormatStack_.back(); doBreak_ = breakNone; } void RtfFOTBuilder::startSimplePageSequenceHeaderFooter(unsigned) { inlineState_ = inlineMiddle; saveOutputFormat_ = outputFormat_; outputFormat_ = OutputFormat(); osp_ = &hfos_; } void RtfFOTBuilder::endSimplePageSequenceHeaderFooter(unsigned i) { outputFormat_ = saveOutputFormat_; hfos_.extractString(hfPart_[i]); osp_ = &tempos_; } void RtfFOTBuilder::endAllSimplePageSequenceHeaderFooter() { bool titlePage = 0; for (int i = 0; i < nHF; i += nHF/6) { if (hfPart_[i | frontHF | firstHF] != hfPart_[i | frontHF | otherHF] || hfPart_[i | backHF | firstHF] != hfPart_[i | backHF | otherHF]) { titlePage = 1; break; } } if (titlePage) { os() << "\\titlepg"; outputHeaderFooter("f", frontHF|firstHF); } outputHeaderFooter("l", backHF|otherHF); outputHeaderFooter("r", frontHF|otherHF); for (size_t i = 0; i < nHF; i++) hfPart_[i].resize(0); inlineState_ = inlineFirst; continuePar_ = 0; suppressBookmarks_ = 0; } void RtfFOTBuilder::outputHeaderFooter(const char *suffix, unsigned flags) { os() << "{\\header" << suffix << "\\pard\\sl" << -(hfPreSpace + hfPostSpace) << "\\sb" << (pageFormat_.headerMargin - hfPreSpace) << "\\sa" << (pageFormat_.topMargin - hfPostSpace - pageFormat_.headerMargin) << "\\plain\\tqc\\tx" << (pageFormat_.pageWidth - pageFormat_.leftMargin - pageFormat_.rightMargin)/2 << "\\tqr\\tx" << (pageFormat_.pageWidth - pageFormat_.leftMargin - pageFormat_.rightMargin) << ' ' << '{' << hfPart_[flags | headerHF | leftHF] << '}' << "\\tab " << '{' << hfPart_[flags | headerHF | centerHF] << '}' << "\\tab " << '{' << hfPart_[flags | headerHF | rightHF] << '}' << "\\par}" << "{\\footer" << suffix << "\\pard\\sl" << -(hfPreSpace + hfPostSpace) << "\\sb" << (pageFormat_.bottomMargin - hfPreSpace - pageFormat_.footerMargin) << "\\sa" << (pageFormat_.footerMargin - hfPostSpace) << "\\plain\\tqc\\tx" << (pageFormat_.pageWidth - pageFormat_.leftMargin - pageFormat_.rightMargin)/2 << "\\tqr\\tx" << (pageFormat_.pageWidth - pageFormat_.leftMargin - pageFormat_.rightMargin) << ' ' << '{' << hfPart_[flags | footerHF | leftHF] << '}' << "\\tab " << '{' << hfPart_[flags | footerHF | centerHF] << '}' << "\\tab " << '{' << hfPart_[flags | footerHF | rightHF] << '}' << "\\par}"; } void RtfFOTBuilder::pageNumber() { inlinePrepare(); syncCharFormat(); os() << "\\chpgn "; } void RtfFOTBuilder::startScore(Symbol type) { switch (type) { case symbolAfter: if (specFormat_.lineDouble) specFormat_.underline = underlineDouble; else if (!specFormat_.scoreSpaces) specFormat_.underline = underlineWords; else specFormat_.underline = underlineSingle; break; case symbolThrough: specFormat_.isStrikethrough = 1; break; default: break; } start(); } void RtfFOTBuilder::idrefButton(unsigned long groveIndex, const Char *s, size_t n) { os() << "{\\field"; os() << "{\\*\\fldinst "; // doesn't work without the trailing spaces! os() << (rtfVersion_ >= word97 ? "HYPERLINK \\\\l " : "GOTOBUTTON "); outputBookmarkName(groveIndex, s, n); if (rtfVersion_ >= word97) os() << "}{\\fldrslt"; os() << ' '; } void RtfFOTBuilder::startLink(const Address &addr) { start(); if (linkDepth_++ == 0) { if (inlineState_ == inlineMiddle) doStartLink(addr); else { pendingLink_ = addr; havePendingLink_ = 1; } } } void RtfFOTBuilder::doStartLink(const Address &addr) { switch (addr.type) { case Address::resolvedNode: { GroveString id; if (addr.node->getId(id) == accessOK) idrefButton(addr.node->groveIndex(), id.data(), id.size()); else { unsigned long n; if (addr.node->elementIndex(n) == accessOK) { os() << "{\\field"; os() << "{\\*\\fldinst "; // doesn't work without the trailing spaces! os() << (rtfVersion_ >= word97 ? "HYPERLINK \\\\l " : "GOTOBUTTON "); unsigned long g = addr.node->groveIndex(); outputBookmarkName(g, n); os() << ' '; if (rtfVersion_ >= word97) os() << "}{\\fldrslt "; elementsRefed_.add(g, n); } else os() << "{{"; } break; } case Address::idref: { const StringC &id = addr.params[0]; size_t i = 0; for (; i < id.size(); i++) { // If they use multiple IDREFs, they'll only get // the first. if (id[i] == ' ') break; } idrefButton(addr.node->groveIndex(), id.data(), i); break; } default: os() << "{{"; break; } saveOutputFormat_ = outputFormat_; } void RtfFOTBuilder::endLink() { if (--linkDepth_ == 0) { if (havePendingLink_) havePendingLink_ = 0; else { os() << (rtfVersion_ >= word97 ? "}}" : "}{\\fldrslt }}"); outputFormat_ = saveOutputFormat_; } } end(); } void RtfFOTBuilder::rule(const RuleNIC &nic) { switch (nic.orientation) { case symbolHorizontal: { long lineOffset; long lineLength; if (nic.hasLength && (lineLength = computeLengthSpec(nic.length)) >= 0) { switch (specFormat_.displayAlignment) { default: case 'l': lineOffset = specFormat_.leftIndent; break; case 'c': lineOffset = (displaySize_ + specFormat_.leftIndent - specFormat_.rightIndent - lineLength)/2; break; case 'r': lineOffset = displaySize_ - specFormat_.rightIndent - lineLength; break; } } else { lineOffset = specFormat_.leftIndent; lineLength = displaySize_ - specFormat_.leftIndent - specFormat_.rightIndent; } startDisplay(nic); // We can't allow spaceBefore on this paragraph, because the y position // is measured from the start of the space before, but this space will // disappear on a page break. newPar(0); os() << "\\sl-1{\\*\\do\\dobxcolumn\\dobypara\\dodhgt0\\dpline\\dpptx0\\dppty0" << "\\dpptx" << lineLength << "\\dppty0" << "\\dpx" << lineOffset << "\\dpy0" << "\\dpxsize" << lineLength << "\\dpysize0"; if (specFormat_.color) { unsigned n = colorTable_[specFormat_.color - 1]; os() << "\\dplinecor" << (n >> 16) << "\\dplinecog" << ((n >> 8) & 0xff) << "\\dplinecob" << (n & 0xff); } os() << "\\dplinew" << specFormat_.lineThickness; os() << "}"; endDisplay(); } break; case symbolVertical: startDisplay(nic); newPar(); if (nic.hasLength) { long lineLength = computeLengthSpec(nic.length); if (lineLength > 0) os() << "\\sl-" << lineLength; // FIXME handle other display alignments } endDisplay(); break; case symbolEscapement: // if we don't have a length, can handle this with a leader tab. // If we do have a length, perhaps underline a blank space. inlinePrepare(); break; case symbolLineProgression: inlinePrepare(); break; default: break; } atomic(); } void RtfFOTBuilder::externalGraphic(const ExternalGraphicNIC &nic) { if (nic.isDisplay) { startDisplay(nic); newPar(); if (specFormat_.displayAlignment != 'l') os() << "\\q" << specFormat_.displayAlignment; flushFields(); } else inlinePrepare(); if (!embedObject(nic)) includePicture(nic); if (nic.isDisplay) endDisplay(); atomic(); } bool RtfFOTBuilder::includePicture(const ExternalGraphicNIC &nic) { StringC filename; if (systemIdFilename(nic.entitySystemId, filename)) { os() << "{\\field\\flddirty{\\*\\fldinst INCLUDEPICTURE \""; // FIXME non-ascii characters for (size_t i = 0; i < filename.size(); i++) { if (filename[i] == '\\') os() << "\\\\\\\\"; else os() << char(filename[i]); } os() << "\" }{\\fldrslt }}"; return 1; } return 0; } #ifdef WIN32 bool RtfFOTBuilder::embedObject(const ExternalGraphicNIC &nic) { if (nic.notationSystemId.size() == 0) return 0; StringC clsid; if (!systemIdNotation(nic.notationSystemId, "CLSID", clsid)) return 0; StringC filename; if (systemIdFilename(nic.entitySystemId, filename)) { os() << INSERTION_CHAR << 'o'; outputWord(os(), oleObject_.size()); oleObject_.push_back(filename); oleObject_.push_back(clsid); } return 1; } #else /* not WIN32 */ bool RtfFOTBuilder::embedObject(const ExternalGraphicNIC &) { return 0; } #endif /* not WIN32 */ bool RtfFOTBuilder::systemIdFilename(const StringC &systemId, StringC &filename) { int res = systemIdFilename1(systemId, filename); if (res < 0) { mgr_->message(RtfMessages::systemIdNotFilename, StringMessageArg(systemId)); return 0; } return res; } // Return -1 if an error should be generated // FIXME in some cases should copy the entity into a file in the same // directory as the output file. int RtfFOTBuilder::systemIdFilename1(const StringC &systemId, StringC &filename) { if (systemId.size() == 0) return -1; Owner in(entityManager_->open(systemId, *systemCharset_, InputSourceOrigin::make(), 0, *mgr_)); if (!in) return 0; Xchar c = in->get(*mgr_); StorageObjectLocation soLoc; ParsedSystemId parsedBuf; if (c == InputSource::eE && in->accessError()) { if (!entityManager_->parseSystemId(systemId, *systemCharset_, 0, 0, *mgr_, parsedBuf)) return 0; if (parsedBuf.size() != 1 || parsedBuf[0].baseId.size()) return 0; soLoc.storageObjectSpec = &parsedBuf[0]; soLoc.actualStorageId = parsedBuf[0].specId; } else { const Location &loc = in->currentLocation(); if (loc.origin().isNull()) return -1; const InputSourceOrigin *tem = loc.origin()->asInputSourceOrigin(); if (!tem) return -1; const ParsedSystemId *psi = ExtendEntityManager::externalInfoParsedSystemId(tem->externalInfo()); if (!psi || psi->size() != 1) return -1; if (!ExtendEntityManager::externalize(tem->externalInfo(), 0, soLoc)) return -1; } if (strcmp(soLoc.storageObjectSpec->storageManager->type(), "OSFILE") != 0) return -1; filename = soLoc.actualStorageId; return 1; } bool RtfFOTBuilder::systemIdNotation(const StringC &systemId, const char *notation, StringC &id) { ParsedSystemId parsedBuf; if (!entityManager_->parseSystemId(systemId, *systemCharset_, 0, 0, *mgr_, parsedBuf)) return 0; if (parsedBuf.size() != 1) return 0; if (strcmp(parsedBuf[0].storageManager->type(), notation) != 0) return 0; id = parsedBuf[0].specId; return 1; } void RtfFOTBuilder::startTable(const TableNIC &nic) { startDisplay(nic); start(); if (tableLevel_++) { mgr_->message(RtfMessages::nestedTable); return; } if (nic.widthType == TableNIC::widthExplicit) tableWidth_ = computeLengthSpec(nic.width); else tableWidth_ = (displaySize_ - specFormat_.leftIndent - specFormat_.rightIndent); tableDisplaySize_ = displaySize_; tableLeftIndent_ = specFormat_.leftIndent; tableRightIndent_ = specFormat_.rightIndent; tableAlignment_ = specFormat_.displayAlignment; switch (tableAlignment_) { case 'r': if (tableRightIndent_ != 0) { tableAlignment_ = 'l'; tableLeftIndent_ = tableDisplaySize_ - tableWidth_ - tableRightIndent_; } break; case 'c': if (tableLeftIndent_ != 0 || tableRightIndent_ != 0) { tableAlignment_ = 'l'; tableLeftIndent_ = (tableDisplaySize_ - tableWidth_ + tableLeftIndent_ - tableRightIndent_)/2; } break; default: break; } } void RtfFOTBuilder::endTable() { if (--tableLevel_ == 0) { if (cells_.size()) outputTable(); if (inlineState_ == inlineTable) { outputFormat_ = OutputFormat(); os() << "\\pard\\plain\\sl-1"; inlineState_ = inlineStart; } displaySize_ = tableDisplaySize_; } end(); endDisplay(); } // FIXME How should borders between table-parts be handled? // This treats them like outside borders, which probably isn't right. void RtfFOTBuilder::startTablePartSerial(const TablePartNIC &nic) { startDisplay(nic); start(); } void RtfFOTBuilder::endTablePartSerial() { if (tableLevel_ == 1 && cells_.size()) { outputTable(); nHeaderRows_ = 0; } end(); endDisplay(); } void RtfFOTBuilder::startTablePartHeader() { if (tableLevel_ == 1) inTableHeader_ = 1; } void RtfFOTBuilder::endTablePartHeader() { if (tableLevel_ == 1) inTableHeader_ = 0; } void RtfFOTBuilder::startTablePartFooter() { } void RtfFOTBuilder::endTablePartFooter() { } void RtfFOTBuilder::tableColumn(const TableColumnNIC &nic) { if (tableLevel_ == 1 && nic.nColumnsSpanned == 1) { if (nic.columnIndex >= columns_.size()) columns_.resize(nic.columnIndex + 1); columns_[nic.columnIndex].hasWidth = nic.hasWidth; if (nic.hasWidth) columns_[nic.columnIndex].width = nic.width; } atomic(); } void RtfFOTBuilder::outputTable() { for (size_t i = 0; i < cells_.size(); i++) { size_t j; bool lastIsDummy = 0; // last cell should be a dummy cell for (j = 0; j < cells_[i].size(); j += cells_[i][j].span) lastIsDummy = !cells_[i][j].present; if (lastIsDummy) j--; if (j > columns_.size()) columns_.resize(j); } for (size_t i = 0; i < cells_.size(); i++) { size_t oldSize = cells_[i].size(); if (oldSize != columns_.size()) { cells_[i].resize(columns_.size()); if (oldSize > 0 && oldSize < cells_[i].size() && !cells_[i][oldSize - 1].present) { for (size_t j = oldSize; j < cells_[i].size(); j++) cells_[i][j] = cells_[i][oldSize - 1]; } } } // Deal the best we can with vertical spanning for (size_t i = 0; i < cells_.size(); i++) { for (size_t j = 0; j < cells_[i].size(); j += cells_[i][j].span) { if (cells_[i][j].vspan > 1) { if (i + cells_[i][j].vspan > cells_.size()) cells_[i][j].vspan = cells_.size() - i; for (size_t k = 1; k < cells_[i][j].vspan; k++) { if (cells_[i + k][j].present) { cells_[i][j].vspan = k; break; } cells_[i + k][j].vspan = 0; cells_[i + k][j].present = 1; cells_[i + k][j].span = cells_[i][j].span; cells_[i + k][j].border[leftBorder] = cells_[i][j].border[leftBorder]; cells_[i + k][j].border[rightBorder] = cells_[i][j].border[rightBorder]; } cells_[i + cells_[i][j].vspan - 1][j].border[bottomBorder] = cells_[i][j].border[bottomBorder]; cells_[i][j].border[bottomBorder].flags = 0; } } } Vector columnWidths(columns_.size()); int nExplicitWidth = 0; int totalExplicitWidth = 0; double totalTableUnits = 0; displaySize_ = tableDisplaySize_; for (size_t i = 0; i < columns_.size(); i++) if (columns_[i].hasWidth) { columnWidths[i] = computeLengthSpec(columns_[i].width); nExplicitWidth++; totalExplicitWidth += columnWidths[i]; totalTableUnits += columns_[i].width.tableUnitFactor; } double tableUnitWidth = 0.0; totalTableUnits += columns_.size() - nExplicitWidth; if (totalTableUnits) tableUnitWidth = ((tableWidth_ - totalExplicitWidth)/totalTableUnits); for (size_t i = 0; i < columns_.size(); i++) if (!columns_[i].hasWidth) columnWidths[i] = long(tableUnitWidth); else if (columns_[i].width.tableUnitFactor > 0.0) columnWidths[i] += long(columns_[i].width.tableUnitFactor * tableUnitWidth); if (cells_.size() > 0) { for (size_t i = 0; i < cells_[0].size(); i += cells_[0][i].span) resolveOutsideBorder(cells_[0][i].border[topBorder], tableBorder_[topBorder]); for (size_t i = 0; i < cells_.back().size(); i += cells_.back()[i].span) resolveOutsideBorder(cells_.back()[i].border[bottomBorder], tableBorder_[bottomBorder]); } for (size_t i = 0; i < cells_.size(); i++) { // Resolve the column borders if (cells_[i].size()) { resolveOutsideBorder(cells_[i][0].border[leftBorder], tableBorder_[leftBorder]); size_t prev = 0; size_t j; for (j = cells_[i][0].span; j < cells_[i].size(); j += cells_[i][j].span) { resolveBorder(cells_[i][prev].border[rightBorder], cells_[i][j].border[leftBorder]); prev = j; } if (j == columns_.size()) resolveOutsideBorder(cells_[i][prev].border[rightBorder], tableBorder_[rightBorder]); } // Resolve the borders adjacent to the next row if (i + 1 < cells_.size()) { size_t j2 = 0; for (size_t j1 = 0; j1 < cells_[i].size(); j1 += cells_[i][j1].span) { while (j2 < j1 && j2 < cells_[i + 1].size()) j2 += cells_[i + 1][j2].span; if (j1 == j2 && j2 < cells_[i + 1].size() && cells_[i][j1].span == cells_[i + 1][j2].span) resolveBorder(cells_[i][j1].border[bottomBorder], cells_[i + 1][j2].border[topBorder]); } } os() << "\\trowd"; if (tableAlignment_ == 'l' && tableLeftIndent_ != 0) os() << "\\trleft" << tableLeftIndent_; else os() << "\\trq" << char(tableAlignment_); if (keep_) os() << "\\trkeep"; if (i < nHeaderRows_) os() << "\\trhdr"; #if 0 // Including this causes Word to leave out rules seemingly at random else if (i > 0) { // This is necessary to get borders on table-breaks. // Putting it on the first row confuses Word. const Border &brdr = tableBorder_[bottomBorder]; if ((brdr.flags & RtfFOTBuilder::Border::isPresent) && !(brdr.flags & RtfFOTBuilder::Border::omitAtBreak)) { os() << "\\trbrdrb"; outputTableBorder(brdr); } } #endif os() << ' '; long pos = tableLeftIndent_; for (unsigned j = 0; j < cells_[i].size(); j += cells_[i][j].span) { if (cells_[i][j].vspan == 0) os() << "\\clvmrg"; else { if (cells_[i][j].vspan > 1) os() << "\\clvmgf"; os() << "\\clvertal" << cells_[i][j].valign; } for (int k = 0; k < 4; k++) { const Border &brdr = cells_[i][j].border[k]; if (brdr.flags & RtfFOTBuilder::Border::isPresent) { os() << "\\clbrdr" << "tblr"[k]; outputTableBorder(brdr); } } if (cells_[i][j].hasBackground && cells_[i][j].backgroundColor) os() << "\\clshdng10000\\clcfpat" << cells_[i][j].backgroundColor; for (int k = 0; k < cells_[i][j].span; k++) pos += columnWidths[j + k]; os() << "\\cellx" << pos; } os() << ' '; for (unsigned j = 0; j < cells_[i].size(); j += cells_[i][j].span) { if (cells_[i][j].content.size() == 0) { if (j == 0) os() << "\\intbl"; } else { os() << cells_[i][j].content; if (keep_) os() << "\\keepn"; } os() << "\\cell "; } os() << "\\row "; } columns_.resize(0); cells_.resize(0); } void RtfFOTBuilder::outputTableBorder(const Border &brdr) { if (brdr.thickness > 75) os() << "\\brdrth\\brdrw" << long(brdr.thickness)/2; else if (brdr.flags & Border::isDouble) os() << "\\brdrdb\\brdrw" << long(brdr.thickness); else os() << "\\brdrs\\brdrw" << long(brdr.thickness); if (brdr.color) os() << "\\brdrcf" << long(brdr.color); } void RtfFOTBuilder::startTableRow() { if (tableLevel_ != 1) { start(); return; } if (inlineState_ == inlineStart) { if (accumSpace_) os() << "\\sa" << accumSpace_; if (keepWithNext_) os() << "\\keepn"; os() << "\\par"; } // FIXME if state is inlineTable and there's some accumSpace_, must add blank row keepWithNext_ = 0; accumSpace_ = 0; cells_.resize(cells_.size() + 1); start(); } void RtfFOTBuilder::endTableRow() { if (tableLevel_ != 1) { end(); return; } if (inTableHeader_) { Vector headerRow; cells_.back().swap(headerRow); for (size_t i = cells_.size() - 1; i > nHeaderRows_; i--) cells_[i - 1].swap(cells_[i]); headerRow.swap(cells_[nHeaderRows_++]); } end(); inlineState_ = inlineTable; } void RtfFOTBuilder::startTableCell(const TableCellNIC &nic) { if (tableLevel_ != 1) { start(); return; } if (nic.columnIndex >= cells_.back().size()) cells_.back().resize(nic.columnIndex + 1); cellIndex_ = nic.columnIndex; cells_.back()[cellIndex_].present = !nic.missing; cells_.back()[cellIndex_].span = nic.nColumnsSpanned; cells_.back()[cellIndex_].vspan = nic.nRowsSpanned; cells_.back()[cellIndex_].hasBackground = specFormat_.cellBackground; if (specFormat_.cellBackground) cells_.back()[cellIndex_].backgroundColor = specFormat_.backgroundColor; cells_.back()[cellIndex_].valign = specFormat_.cellVerticalAlignment; // Make a guess at the display-size. bool hasWidth = 1; long newDisplaySize = 0; displaySize_ = tableDisplaySize_; for (unsigned i = cellIndex_; i < cellIndex_ + nic.nColumnsSpanned; i++) { if (i >= columns_.size() || !columns_[i].hasWidth) { hasWidth = 0; break; } newDisplaySize += computeLengthSpec(columns_[i].width); } if (!hasWidth) newDisplaySize = (tableWidth_*nic.nColumnsSpanned) /(columns_.size() ? columns_.size() : 2); osp_ = &cellos_; inlineState_ = inlineFirst; continuePar_ = 0; addLeftIndent_ = specFormat_.cellLeftMargin; addRightIndent_ = specFormat_.cellRightMargin; accumSpace_ = specFormat_.cellTopMargin; displaySize_ = newDisplaySize; displaySizeChanged(); start(); os() << "\\plain "; outputFormat_ = OutputFormat(); } void RtfFOTBuilder::endTableCell() { if (tableLevel_ != 1) { end(); return; } accumSpace_ += specFormat_.cellBottomMargin; if (accumSpace_ > 0) { if (inlineState_ == inlineFirst) os() << "\\pard\\intbl\\sl-" << accumSpace_ << "\\par"; else os() << "\\sa" << accumSpace_; } else if (inlineState_ == inlineFirst) os() << "\\intbl"; accumSpace_ = 0; cellos_.extractString(cells_.back()[cellIndex_].content); end(); osp_ = &tempos_; accumSpace_ = 0; addLeftIndent_ = 0; addRightIndent_ = 0; keepWithNext_ = 0; } void RtfFOTBuilder::tableBeforeRowBorder() { if (tableLevel_ == 1) storeBorder(tableBorder_[topBorder]); } void RtfFOTBuilder::tableAfterRowBorder() { if (tableLevel_ == 1) storeBorder(tableBorder_[bottomBorder]); } void RtfFOTBuilder::tableBeforeColumnBorder() { if (tableLevel_ == 1) storeBorder(tableBorder_[leftBorder]); } void RtfFOTBuilder::tableAfterColumnBorder() { if (tableLevel_ == 1) storeBorder(tableBorder_[rightBorder]); } void RtfFOTBuilder::tableCellBeforeRowBorder() { if (tableLevel_ == 1) storeBorder(cells_.back()[cellIndex_].border[topBorder]); } void RtfFOTBuilder::tableCellAfterRowBorder() { if (tableLevel_ == 1) storeBorder(cells_.back()[cellIndex_].border[bottomBorder]); } void RtfFOTBuilder::tableCellBeforeColumnBorder() { if (tableLevel_ == 1) storeBorder(cells_.back()[cellIndex_].border[leftBorder]); } void RtfFOTBuilder::tableCellAfterColumnBorder() { if (tableLevel_ == 1) storeBorder(cells_.back()[cellIndex_].border[rightBorder]); } void RtfFOTBuilder::storeBorder(Border &b) { b.flags = 0; if (specFormat_.borderPresent) { b.flags |= Border::isPresent; b.thickness = specFormat_.lineThickness; b.color = specFormat_.color; if (specFormat_.lineDouble) b.flags |= Border::isDouble; } if (specFormat_.borderOmitAtBreak) b.flags |= Border::omitAtBreak; b.priority = specFormat_.borderPriority; atomic(); } void RtfFOTBuilder::resolveBorder(Border &b1, Border &b2) { if (b1.priority != b2.priority) { if (b1.priority > b2.priority) b2 = b1; else b1 = b2; } else if ((b1.flags ^ b2.flags) & Border::isPresent) { if (b1.flags & Border::isPresent) b2 = b1; else b1 = b2; } } void RtfFOTBuilder::resolveOutsideBorder(Border &cellBorder, const Border &tableBorder) { // The standard doesn't say this, but otherwise table-border: #t wouldn't work. if (tableBorder.priority > cellBorder.priority || (tableBorder.priority == cellBorder.priority && (tableBorder.flags & Border::isPresent))) cellBorder = tableBorder; } void RtfFOTBuilder::setCellBeforeRowMargin(Length n) { specFormat_.cellTopMargin = n; } void RtfFOTBuilder::setCellAfterRowMargin(Length n) { specFormat_.cellBottomMargin = n; } void RtfFOTBuilder::setCellBeforeColumnMargin(Length n) { specFormat_.cellLeftMargin = n; } void RtfFOTBuilder::setCellAfterColumnMargin(Length n) { specFormat_.cellRightMargin = n; } void RtfFOTBuilder::setCellBackground(bool b) { specFormat_.cellBackground = b; } void RtfFOTBuilder::setCellRowAlignment(Symbol align) { switch (align) { case symbolStart: specFormat_.cellVerticalAlignment = 't'; break; case symbolCenter: specFormat_.cellVerticalAlignment = 'c'; break; case symbolEnd: specFormat_.cellVerticalAlignment = 'b'; break; default: break; } } void RtfFOTBuilder::enterMathMode() { if (mathLevel_++ == 0) { mathSaveOutputFormat_ = outputFormat_; os() << "{\\field{\\*\\fldinst EQ "; } } void RtfFOTBuilder::exitMathMode() { if (--mathLevel_ == 0) { os() << "}{\\fldrslt}}"; outputFormat_ = mathSaveOutputFormat_; } } void RtfFOTBuilder::setSubscriptDepth(Length n) { specFormat_.subscriptDepth = points(n); } void RtfFOTBuilder::setSuperscriptHeight(Length n) { specFormat_.superscriptHeight = points(n); } void RtfFOTBuilder::setUnderMarkDepth(Length n) { specFormat_.underMarkDepth = points(n); } void RtfFOTBuilder::setOverMarkHeight(Length n) { specFormat_.overMarkHeight = points(n); } void RtfFOTBuilder::startSubscript() { start(); inlinePrepare(); enterMathMode(); os() << "\\\\s\\\\do" << specFormat_.subscriptDepth << '('; } void RtfFOTBuilder::endSubscript() { os() << ")"; exitMathMode(); end(); } void RtfFOTBuilder::startSuperscript() { start(); inlinePrepare(); enterMathMode(); os() << "\\\\s\\\\up" << specFormat_.superscriptHeight << '('; } void RtfFOTBuilder::endSuperscript() { os() << ")"; exitMathMode(); end(); } void RtfFOTBuilder::startMathSequence() { start(); inlinePrepare(); enterMathMode(); } void RtfFOTBuilder::endMathSequence() { exitMathMode(); end(); } void RtfFOTBuilder::startFractionSerial() { start(); inlinePrepare(); enterMathMode(); os() << "\\\\f"; } void RtfFOTBuilder::endFractionSerial() { exitMathMode(); end(); } void RtfFOTBuilder::startFractionNumerator() { os() << '('; } void RtfFOTBuilder::endFractionNumerator() { } void RtfFOTBuilder::startFractionDenominator() { os() << eqArgSep_; } void RtfFOTBuilder::endFractionDenominator() { os() << ')'; } void RtfFOTBuilder::startRadicalSerial() { start(); inlinePrepare(); enterMathMode(); startReorderFlowObject(); } void RtfFOTBuilder::endRadicalSerial() { Vector > &v = reorderStack_.head()->streams; *reorderStack_.head()->saveOsp << "\\\\r(" << v[1] << eqArgSep_ << v[0] << ')'; endReorderFlowObject(); end(); exitMathMode(); } void RtfFOTBuilder::startRadicalDegree() { endReorderFlowObjectPort(); } void RtfFOTBuilder::endRadicalDegree() { endReorderFlowObjectPort(); } void RtfFOTBuilder::startFenceSerial() { start(); inlinePrepare(); enterMathMode(); startReorderFlowObject(); } void RtfFOTBuilder::endFenceSerial() { Vector > &v = reorderStack_.head()->streams; *reorderStack_.head()->saveOsp << "\\\\b\\\\lc\\\\" << v[1] << "\\\\rc\\\\" << v[2] <<'(' << v[0] << ')'; endReorderFlowObject(); end(); exitMathMode(); } void RtfFOTBuilder::startFenceOpen() { endReorderFlowObjectPort(); mathSpecial_ = mathFence; } void RtfFOTBuilder::endFenceOpen() { endReorderFlowObjectPort(); } void RtfFOTBuilder::startFenceClose() { } void RtfFOTBuilder::endFenceClose() { endReorderFlowObjectPort(); mathSpecial_ = mathNormal; } void RtfFOTBuilder::setMathDisplayMode(Symbol sym) { switch (sym) { case symbolDisplay: specFormat_.mathInline = 0; break; case symbolInline: specFormat_.mathInline = 1; break; default: break; } } void RtfFOTBuilder::startMathOperatorSerial() { start(); inlinePrepare(); enterMathMode(); os() << "\\\\i"; if (specFormat_.mathInline) os() << "\\\\in"; startReorderFlowObject(); } void RtfFOTBuilder::endMathOperatorSerial() { Vector > &v = reorderStack_.head()->streams; // FIXME handle sum, product, integral specially *reorderStack_.head()->saveOsp << v[1] << '(' << v[2] << eqArgSep_ << v[3] << eqArgSep_ << v[0] << ')'; endReorderFlowObject(); end(); exitMathMode(); } void RtfFOTBuilder::startMathOperatorOperator() { endReorderFlowObjectPort(); mathSpecial_ = mathIntegral; } void RtfFOTBuilder::endMathOperatorOperator() { mathSpecial_ = mathNormal; endReorderFlowObjectPort(); } void RtfFOTBuilder::startMathOperatorLowerLimit() { } void RtfFOTBuilder::endMathOperatorLowerLimit() { endReorderFlowObjectPort(); } void RtfFOTBuilder::startMathOperatorUpperLimit() { } void RtfFOTBuilder::endMathOperatorUpperLimit() { endReorderFlowObjectPort(); } void RtfFOTBuilder::startMarkSerial() { start(); inlinePrepare(); enterMathMode(); startReorderFlowObject(); } void RtfFOTBuilder::endMarkSerial() { Vector > &v = reorderStack_.head()->streams; OutputByteStream &o = *reorderStack_.head()->saveOsp; o << "\\\\o(" << v[0]; if (v[1].size() > 2) o << eqArgSep_ << "\\\\s\\\\up" << specFormat_.overMarkHeight << '(' << v[1] << ')'; if (v[2].size() > 2) o << eqArgSep_ << "\\\\s\\\\do" << specFormat_.underMarkDepth << '(' << v[2] << ')'; o << ')'; endReorderFlowObject(); end(); exitMathMode(); } void RtfFOTBuilder::startMarkOver() { endReorderFlowObjectPort(); } void RtfFOTBuilder::endMarkOver() { endReorderFlowObjectPort(); } void RtfFOTBuilder::startMarkUnder() { } void RtfFOTBuilder::endMarkUnder() { endReorderFlowObjectPort(); } void RtfFOTBuilder::startScriptSerial() { start(); inlinePrepare(); enterMathMode(); startReorderFlowObject(); } void RtfFOTBuilder::endScriptSerial() { endReorderFlowObjectPort(); Vector > &v = reorderStack_.head()->streams; ASSERT(v.size() == 7); OutputByteStream &o = *reorderStack_.head()->saveOsp; const String &preSup = v[1]; const String &preSub = v[2]; const String &postSup = v[3]; const String &postSub = v[4]; const String &midSup = v[5]; const String &midSub = v[6]; o << "\\\\o("; if (preSup.size() > 2) o << "\\\\s\\\\up" << specFormat_.superscriptHeight << '(' << preSup << ')'; o << eqArgSep_; if (preSub.size() > 2) o << "\\\\s\\\\do" << specFormat_.subscriptDepth << '(' << preSub << ')'; o << ')'; o << "\\\\o("; o << v[0]; if (midSup.size() > 2) o << eqArgSep_ << "\\\\s\\\\up" << specFormat_.overMarkHeight << '(' << midSup << ')'; if (midSub.size() > 2) o << eqArgSep_ << "\\\\s\\\\do" << specFormat_.underMarkDepth << '(' << midSub << ')'; o << ')'; o << "\\\\o("; if (postSup.size() > 2) o << "\\\\s\\\\up" << specFormat_.superscriptHeight << '(' << postSup << ')'; o << eqArgSep_; if (postSub.size() > 2) o << "\\\\s\\\\do" << specFormat_.subscriptDepth << '(' << postSub << ')'; o << ')'; endReorderFlowObject(); end(); exitMathMode(); } void RtfFOTBuilder::startScriptPreSup() { endReorderFlowObjectPort(); } void RtfFOTBuilder::startScriptPreSub() { endReorderFlowObjectPort(); } void RtfFOTBuilder::startScriptPostSup() { endReorderFlowObjectPort(); } void RtfFOTBuilder::startScriptPostSub() { endReorderFlowObjectPort(); } void RtfFOTBuilder::startScriptMidSup() { endReorderFlowObjectPort(); } void RtfFOTBuilder::startScriptMidSub() { endReorderFlowObjectPort(); } void RtfFOTBuilder::startReorderFlowObject() { reorderStack_.insert(new ReorderFlowObject); ReorderFlowObject &r = *reorderStack_.head(); r.saveOsp = osp_; r.saveOutputFormat = outputFormat_; osp_ = &r.buf; os() << '{'; } void RtfFOTBuilder::endReorderFlowObjectPort() { os() << '}'; ReorderFlowObject &r = *reorderStack_.head(); r.streams.resize(r.streams.size() + 1); r.buf.extractString(r.streams.back()); os() << '{'; outputFormat_ = r.saveOutputFormat; } void RtfFOTBuilder::endReorderFlowObject() { osp_ = reorderStack_.head()->saveOsp; delete reorderStack_.get(); } void RtfFOTBuilder::setGridPositionCellType(Symbol sym) { switch (sym) { case symbolRowMajor: specFormat_.gridPosType = gridPosRowMajor; break; case symbolColumnMajor: specFormat_.gridPosType = gridPosColumnMajor; break; case symbolExplicit: specFormat_.gridPosType = gridPosExplicit; break; default: break; } } void RtfFOTBuilder::setGridColumnAlignment(Symbol sym) { switch (sym) { case symbolStart: specFormat_.gridColumnAlignment = 'l'; break; case symbolCenter: specFormat_.gridColumnAlignment = 'c'; break; case symbolEnd: specFormat_.gridColumnAlignment = 'r'; break; default: break; } } void RtfFOTBuilder::setGridRowSep(Length n) { specFormat_.gridRowSep = points(n); } void RtfFOTBuilder::setGridColumnSep(Length n) { specFormat_.gridColumnSep = points(n); } void RtfFOTBuilder::startGrid(const GridNIC &nic) { start(); inlinePrepare(); enterMathMode(); gridStack_.insert(new Grid); Grid &g = *gridStack_.head(); g.saveOsp = osp_; g.saveOutputFormat = outputFormat_; g.posType = specFormat_.gridPosType; g.nColumns = nic.nColumns; if (!g.nColumns) g.nColumns = 1; g.nRows = nic.nRows; if (!g.nRows) g.nRows = 1; osp_ = &g.buf; } void RtfFOTBuilder::endGrid() { osp_ = gridStack_.head()->saveOsp; Grid &g = *gridStack_.head(); for (size_t i = 0; i < g.cells.size(); i++) { if (g.cells[i].size() > g.nColumns) g.nColumns = g.cells[i].size(); } if (g.cells.size() > g.nRows) g.nRows = g.cells.size(); os() << "\\\\a" << "\\\\hs" << specFormat_.gridColumnSep << "\\\\vs" << specFormat_.gridRowSep << "\\\\a" << specFormat_.gridColumnAlignment << "\\\\co" << g.nColumns << '('; for (size_t i = 0; i < g.cells.size(); i++) { size_t j = 0; for (; j < g.cells[i].size(); j++) { if (i || j) os() << eqArgSep_; os() << g.cells[i][j]; } if (!j) j++; for (; j < g.nColumns; j++) os() << eqArgSep_; } os() << ')'; delete gridStack_.get(); end(); exitMathMode(); } void RtfFOTBuilder::startGridCell(const GridCellNIC &nic) { if (!gridStack_.empty()) { os() << '{'; Grid &g = *gridStack_.head(); g.curCellPtr = 0; switch (g.posType) { case gridPosExplicit: if (nic.rowNumber > 0 && nic.columnNumber > 0) { if (nic.columnNumber > g.cells.size()) g.cells.resize(nic.columnNumber); Vector > &column = g.cells[nic.columnNumber - 1]; if (nic.rowNumber > column.size()) column.resize(nic.rowNumber); g.curCellPtr = &column[nic.rowNumber - 1]; } break; case gridPosRowMajor: if (g.cells.size() == 0 || g.cells.back().size() >= g.nColumns) g.cells.resize(g.cells.size() + 1); g.cells.back().resize(g.cells.back().size() + 1); g.curCellPtr = &g.cells.back().back(); break; case gridPosColumnMajor: if (g.cells.size() < g.nRows) g.cells.resize(g.nRows); if (g.cells[g.nRows - 1].size() == g.cells[0].size()) { g.cells[0].resize(g.cells[0].size() + 1); g.curCellPtr = &g.cells[0].back(); } else { for (size_t i = 1;; i++) { ASSERT(i < g.cells.size()); if (g.cells[i].size() < g.cells[0].size()) { g.cells[i].resize(g.cells[i].size() + 1); g.curCellPtr = &g.cells[i].back(); break; } } } break; default: CANNOT_HAPPEN(); } } start(); } void RtfFOTBuilder::endGridCell() { if (!gridStack_.empty()) { os() << '}'; Grid &g = *gridStack_.head(); if (g.curCellPtr) g.buf.extractString(*g.curCellPtr); else { String tem; g.buf.extractString(tem); } outputFormat_ = g.saveOutputFormat; } end(); } void RtfFOTBuilder::outputBookmarkName(unsigned long groveIndex, const Char *s, size_t n) { os() << "ID"; if (groveIndex) os() << groveIndex; os() << '_'; for (; n > 0; n--, s++) { Char c = *s; switch (c) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': os() << char(c); break; default: os() << '_' << (unsigned long)c << '_'; break; } } } void RtfFOTBuilder::outputBookmarkName(unsigned long groveIndex, unsigned long n) { os() << (rtfVersion_ >= word97 ? "_" : "E_"); if (groveIndex) os() << groveIndex << '_'; os() << n; } void RtfFOTBuilder::flushPendingElements() { for (size_t i = 0; i < pendingElements_.size(); i++) { const NodePtr &node = pendingElements_[i]; GroveString id; if (node->getId(id) == accessOK) { unsigned long g = node->groveIndex(); os() << "{\\*\\bkmkstart "; outputBookmarkName(g, id.data(), id.size()); os() << '}'; os() << "{\\*\\bkmkend "; outputBookmarkName(g, id.data(), id.size()); os() << '}'; } else { unsigned long n; if (node->elementIndex(n) == accessOK) { os() << INSERTION_CHAR << 'b'; outputWord(os(), node->groveIndex()); outputWord(os(), n); } } } nPendingElementsNonEmpty_ = 0; pendingElements_.resize(0); pendingElementLevels_.resize(0); } void RtfFOTBuilder::startNode(const NodePtr &node, const StringC &mode) { nodeLevel_++; if (mode.size() == 0) { pendingElements_.push_back(node); pendingElementLevels_.push_back(nodeLevel_); } } void RtfFOTBuilder::endNode() { // The idea is not to put out a bookmark if there were // no flow objects associated with the node. // The flow objects might have been labeled, in which case // we will get a startNode for the node later. if (pendingElements_.size() > 0 && pendingElementLevels_.back() == nodeLevel_ && nPendingElementsNonEmpty_ < pendingElements_.size()) { pendingElementLevels_.resize(pendingElements_.size() - 1); pendingElements_.resize(pendingElements_.size() - 1); } nodeLevel_--; } void RtfFOTBuilder::currentNodePageNumber(const NodePtr &node) { inlinePrepare(); syncCharFormat(); GroveString id; unsigned long n; if (node->getId(id) == accessOK) { os() << "{\\field\\flddirty{\\*\\fldinst PAGEREF "; outputBookmarkName(node->groveIndex(), id.data(), id.size()); os() << "}{\\fldrslt 000}}"; } else if (node->elementIndex(n) == accessOK) { os() << "{\\field\\flddirty{\\*\\fldinst PAGEREF "; unsigned long groveIndex = node->groveIndex(); outputBookmarkName(groveIndex, n); elementsRefed_.add(groveIndex, n); os() << "}{\\fldrslt 000}}"; } } void RtfFOTBuilder::start() { nPendingElementsNonEmpty_ = pendingElements_.size(); specFormatStack_.push_back(specFormat_); if (!inSimplePageSequence_) pageFormatStack_.push_back(pageFormat_); } void RtfFOTBuilder::end() { specFormatStack_.resize(specFormatStack_.size() - 1); specFormat_ = specFormatStack_.back(); if (!inSimplePageSequence_) { pageFormatStack_.resize(pageFormatStack_.size() - 1); pageFormat_ = pageFormatStack_.back(); } } void RtfFOTBuilder::atomic() { nPendingElementsNonEmpty_ = pendingElements_.size(); specFormat_ = specFormatStack_.back(); } RtfFOTBuilder::CommonFormat::CommonFormat() : isBold(0), isItalic(0), fontSize(24), fontFamily(0), language(0), country(0), color(0), charBackgroundColor(0), underline(noUnderline), isStrikethrough(0), positionPointShift(0), kern(0), isSmallCaps(0), charBorder(0) { } RtfFOTBuilder::OutputFormat::OutputFormat() : charset(0), lang(DEFAULT_LANG), langCharsets(0x1f) { } RtfFOTBuilder::Format::Format() : fieldWidth(0), fieldAlign(symbolStart), displayAlignment('l'), inputWhitespaceTreatment(symbolPreserve), expandTabs(8), lineThickness(20), lineDouble(0), backgroundColor(0), boxHasBorder(1), boxHasBackground(0), borderPresent(1), borderPriority(0), borderOmitAtBreak(0), cellLeftMargin(0), cellRightMargin(0), cellTopMargin(0), cellBottomMargin(0), cellVerticalAlignment('t'), lineSpacingSpec(240), cellBackground(0), scoreSpaces(1), hyphenate(0), gridPosType(gridPosRowMajor), gridColumnAlignment('c'), gridRowSep(2), gridColumnSep(2), mathInline(0), mathPosture(0), superscriptHeight(5), subscriptDepth(3), overMarkHeight(10), underMarkDepth(10), span(0) { } RtfFOTBuilder::ParaFormat::ParaFormat() : leftIndent(0), rightIndent(0), firstLineIndent(0), quadding('l'), lineSpacing(240), lines(symbolWrap), lineSpacingAtLeast(0), widowOrphanControl(widowControl|orphanControl), headingLevel(0) { } RtfFOTBuilder::PageFormat::PageFormat() : leftMargin(0), rightMargin(0), topMargin(0), bottomMargin(0), headerMargin(0), footerMargin(0), pageHeight(72*20*11), pageWidth(72*10*17), pageNumberFormat("dec"), pageNumberRestart(0), nColumns(1), columnSep(72*10), balance(0) { } RtfFOTBuilder::FontFamilyCharsets::FontFamilyCharsets() { for (int i = 0; i < nWinCharsets; i++) rtfFontNumber[i] = -1; } ElementSet::ElementSet() { } void ElementSet::add(unsigned long groveIndex, unsigned long n) { if (groveIndex >= v_.size()) v_.resize(groveIndex + 1); Vector &elems = v_[groveIndex]; if (n >= elems.size()) { for (size_t k = 1 + (n - elems.size()); k > 0; --k) elems.push_back(0); } elems[n] = 1; } bool ElementSet::contains(unsigned long groveIndex, unsigned long n) const { return groveIndex < v_.size() && n < v_[groveIndex].size() && v_[groveIndex][n] != 0; } // This was mostly automatically generated using GetLocaleInfo(). unsigned RtfFOTBuilder::convertLanguage(unsigned language, unsigned country, unsigned &langCharsets) { if (language == 0) { langCharsets = 0x1f; return DEFAULT_LANG; } switch (language) { case SP_LETTER2('B', 'G'): langCharsets = 0x4; return 0x402; case SP_LETTER2('C', 'A'): langCharsets = 0x3; return 0x403; case SP_LETTER2('C', 'S'): langCharsets = 0x13; return 0x405; case SP_LETTER2('D', 'A'): langCharsets = 0x13; return 0x406; case SP_LETTER2('D', 'E'): langCharsets = 0x13; switch (country) { case SP_LETTER2('D', 'E'): return 0x407; case SP_LETTER2('C', 'H'): return 0x807; case SP_LETTER2('A', 'T'): return 0xc07; case SP_LETTER2('L', 'U'): return 0x1007; case SP_LETTER2('L', 'I'): return 0x1407; } return 0x407; case SP_LETTER2('E', 'L'): langCharsets = 0x8; return 0x408; case SP_LETTER2('E', 'N'): langCharsets = 0x1f; switch (country) { case SP_LETTER2('U', 'S'): return 0x409; case SP_LETTER2('G', 'B'): return 0x809; case SP_LETTER2('A', 'U'): return 0xc09; case SP_LETTER2('C', 'A'): return 0x1009; case SP_LETTER2('N', 'Z'): return 0x1409; case SP_LETTER2('I', 'E'): return 0x1809; case SP_LETTER2('Z', 'A'): return 0x1c09; case SP_LETTER2('J', 'M'): return 0x2009; case SP_LETTER2('C', 'B'): return 0x2409; case SP_LETTER2('B', 'Z'): return 0x2809; case SP_LETTER2('T', 'T'): return 0x2c09; } return 0x409; case SP_LETTER2('E', 'S'): langCharsets = 0x13; switch (country) { case SP_LETTER2('E', 'S'): return 0x40a; case SP_LETTER2('M', 'X'): return 0x80a; case SP_LETTER2('G', 'T'): return 0x100a; case SP_LETTER2('C', 'R'): return 0x140a; case SP_LETTER2('P', 'A'): return 0x180a; case SP_LETTER2('D', 'O'): return 0x1c0a; case SP_LETTER2('V', 'E'): return 0x200a; case SP_LETTER2('C', 'O'): return 0x240a; case SP_LETTER2('P', 'E'): return 0x280a; case SP_LETTER2('A', 'R'): return 0x2c0a; case SP_LETTER2('E', 'C'): return 0x300a; case SP_LETTER2('C', 'L'): return 0x340a; case SP_LETTER2('U', 'Y'): return 0x380a; case SP_LETTER2('P', 'Y'): return 0x3c0a; case SP_LETTER2('B', 'O'): return 0x400a; case SP_LETTER2('S', 'V'): return 0x440a; case SP_LETTER2('H', 'N'): return 0x480a; case SP_LETTER2('N', 'I'): return 0x4c0a; case SP_LETTER2('P', 'R'): return 0x500a; } return 0x40a; case SP_LETTER2('F', 'I'): langCharsets = 0x13; return 0x40b; case SP_LETTER2('F', 'R'): langCharsets = 0x13; switch (country) { case SP_LETTER2('F', 'R'): return 0x40c; case SP_LETTER2('B', 'E'): return 0x80c; case SP_LETTER2('C', 'A'): return 0xc0c; case SP_LETTER2('C', 'H'): return 0x100c; case SP_LETTER2('L', 'U'): return 0x140c; } return 0x40c; case SP_LETTER2('H', 'U'): langCharsets = 0x12; return 0x40e; case SP_LETTER2('I', 'S'): langCharsets = 0x3; return 0x40f; case SP_LETTER2('I', 'T'): langCharsets = 0x13; switch (country) { case SP_LETTER2('I', 'T'): return 0x410; case SP_LETTER2('C', 'H'): return 0x810; } return 0x410; case SP_LETTER2('N', 'L'): langCharsets = 0x13; switch (country) { case SP_LETTER2('N', 'L'): return 0x413; case SP_LETTER2('B', 'E'): return 0x813; } return 0x413; case SP_LETTER2('N', 'O'): langCharsets = 0x13; return 0x414; case SP_LETTER2('P', 'L'): langCharsets = 0x12; return 0x415; case SP_LETTER2('P', 'T'): langCharsets = 0x13; switch (country) { case SP_LETTER2('B', 'R'): return 0x416; case SP_LETTER2('P', 'T'): return 0x816; } return 0x416; case SP_LETTER2('R', 'O'): langCharsets = 0x12; return 0x418; case SP_LETTER2('R', 'U'): langCharsets = 0x4; return 0x419; case SP_LETTER2('H', 'R'): langCharsets = 0x12; // FIXME are langCharsets different here? switch (country) { case SP_LETTER2('H', 'R'): return 0x41a; case SP_LETTER2('S', 'P'): return 0x81a; } return 0x41a; case SP_LETTER2('S', 'K'): langCharsets = 0x12; return 0x41b; case SP_LETTER2('S', 'Q'): langCharsets = 0x12; return 0x41c; case SP_LETTER2('S', 'V'): langCharsets = 0x13; switch (country) { case SP_LETTER2('S', 'E'): return 0x41d; case SP_LETTER2('F', 'I'): return 0x81d; } return 0x41d; case SP_LETTER2('T', 'R'): langCharsets = 0x12; return 0x41f; case SP_LETTER2('I', 'D'): langCharsets = 0x13; return 0x421; case SP_LETTER2('U', 'K'): langCharsets = 0x4; return 0x422; case SP_LETTER2('B', 'E'): langCharsets = 0x4; return 0x423; case SP_LETTER2('S', 'L'): langCharsets = 0x12; return 0x424; case SP_LETTER2('E', 'T'): langCharsets = 0x12; return 0x425; case SP_LETTER2('L', 'V'): langCharsets = 0x12; return 0x426; case SP_LETTER2('L', 'T'): langCharsets = 0x12; return 0x427; case SP_LETTER2('V', 'I'): langCharsets = 0x13; return 0x42a; case SP_LETTER2('E', 'U'): langCharsets = 0x13; return 0x42d; case SP_LETTER2('A', 'F'): langCharsets = 0x1f; return 0x436; case SP_LETTER2('F', 'O'): langCharsets = 0x13; return 0x438; case SP_LETTER2('J', 'A'): langCharsets = (1 << jisCharset); return 0x411; } langCharsets = 0x1f; return DEFAULT_LANG; } const RtfFOTBuilder::WinCharset RtfFOTBuilder::winCharsets[RtfFOTBuilder::nWinCharsets] = { // CP 1252 { 0, "", { 0x0000, 0x0000, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021, 0x02c6, 0x2030, 0x0160, 0x2039, 0x0152, 0x0000, 0x0000, 0x0000, 0x0000, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0x02dc, 0x2122, 0x0161, 0x203a, 0x0153, 0x0000, 0x0000, 0x0178, 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, 0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, 0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff } }, // CP 1250 { 238, " CE", { 0x0000, 0x0000, 0x201a, 0x0000, 0x201e, 0x2026, 0x2020, 0x2021, 0x0000, 0x2030, 0x0160, 0x2039, 0x015a, 0x0164, 0x017d, 0x0179, 0x0000, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0x0000, 0x2122, 0x0161, 0x203a, 0x015b, 0x0165, 0x017e, 0x017a, 0x00a0, 0x02c7, 0x02d8, 0x0141, 0x00a4, 0x0104, 0x00a6, 0x00a7, 0x00a8, 0x00a9, 0x015e, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x017b, 0x00b0, 0x00b1, 0x02db, 0x0142, 0x00b4, 0x00b5, 0x00b6, 0x00b7, 0x00b8, 0x0105, 0x015f, 0x00bb, 0x013d, 0x02dd, 0x013e, 0x017c, 0x0154, 0x00c1, 0x00c2, 0x0102, 0x00c4, 0x0139, 0x0106, 0x00c7, 0x010c, 0x00c9, 0x0118, 0x00cb, 0x011a, 0x00cd, 0x00ce, 0x010e, 0x0110, 0x0143, 0x0147, 0x00d3, 0x00d4, 0x0150, 0x00d6, 0x00d7, 0x0158, 0x016e, 0x00da, 0x0170, 0x00dc, 0x00dd, 0x0162, 0x00df, 0x0155, 0x00e1, 0x00e2, 0x0103, 0x00e4, 0x013a, 0x0107, 0x00e7, 0x010d, 0x00e9, 0x0119, 0x00eb, 0x011b, 0x00ed, 0x00ee, 0x010f, 0x0111, 0x0144, 0x0148, 0x00f3, 0x00f4, 0x0151, 0x00f6, 0x00f7, 0x0159, 0x016f, 0x00fa, 0x0171, 0x00fc, 0x00fd, 0x0163, 0x02d9 } }, // CP 1251 { 204, " CYR", { 0x0402, 0x0403, 0x201a, 0x0453, 0x201e, 0x2026, 0x2020, 0x2021, 0x0000, 0x2030, 0x0409, 0x2039, 0x040a, 0x040c, 0x040b, 0x040f, 0x0452, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0x0000, 0x2122, 0x0459, 0x203a, 0x045a, 0x045c, 0x045b, 0x045f, 0x00a0, 0x040e, 0x045e, 0x0408, 0x00a4, 0x0490, 0x00a6, 0x00a7, 0x0401, 0x00a9, 0x0404, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x0407, 0x00b0, 0x00b1, 0x0406, 0x0456, 0x0491, 0x00b5, 0x00b6, 0x00b7, 0x0451, 0x2116, 0x0454, 0x00bb, 0x0458, 0x0405, 0x0455, 0x0457, 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f, 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f } }, // CP 1253 { 161, " Greek", { 0x0000, 0x0000, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021, 0x0000, 0x2030, 0x0000, 0x2039, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0x0000, 0x2122, 0x0000, 0x203a, 0x0000, 0x0000, 0x0000, 0x0000, 0x00a0, 0x0385, 0x0386, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, 0x00a8, 0x00a9, 0x0000, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x2015, 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x0384, 0x00b5, 0x00b6, 0x00b7, 0x0388, 0x0389, 0x038a, 0x00bb, 0x038c, 0x00bd, 0x038e, 0x038f, 0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0, 0x03a1, 0x0000, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0x03aa, 0x03ab, 0x03ac, 0x03ad, 0x03ae, 0x03af, 0x03b0, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03c2, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9, 0x03ca, 0x03cb, 0x03cc, 0x03cd, 0x03ce, 0x0000 } }, // CP 1254 { 162, " TUR", { 0x0000, 0x0000, 0x201a, 0x0192, 0x201e, 0x2026, 0x2020, 0x2021, 0x02c6, 0x2030, 0x0160, 0x2039, 0x0152, 0x0000, 0x0000, 0x0000, 0x0000, 0x2018, 0x2019, 0x201c, 0x201d, 0x2022, 0x2013, 0x2014, 0x02dc, 0x2122, 0x0161, 0x203a, 0x0153, 0x0000, 0x0000, 0x0178, 0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, 0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af, 0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7, 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf, 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf, 0x011e, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7, 0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0130, 0x015e, 0x00df, 0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, 0x011f, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, 0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0131, 0x015f, 0x00ff } }, // Shift JIS Katakana { 128, "", { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xff61, 0xff62, 0xff63, 0xff64, 0xff65, 0xff66, 0xff67, 0xff68, 0xff69, 0xff6a, 0xff6b, 0xff6c, 0xff6d, 0xff6e, 0xff6f, 0xff70, 0xff71, 0xff72, 0xff73, 0xff74, 0xff75, 0xff76, 0xff77, 0xff78, 0xff79, 0xff7a, 0xff7b, 0xff7c, 0xff7d, 0xff7e, 0xff7f, 0xff80, 0xff81, 0xff82, 0xff83, 0xff84, 0xff85, 0xff86, 0xff87, 0xff88, 0xff89, 0xff8a, 0xff8b, 0xff8c, 0xff8d, 0xff8e, 0xff8f, 0xff90, 0xff91, 0xff92, 0xff93, 0xff94, 0xff95, 0xff96, 0xff97, 0xff98, 0xff99, 0xff9a, 0xff9b, 0xff9c, 0xff9d, 0xff9e, 0xff9f } }, // This is the Symbol charset which is treated specially. // It must be last in this table. { 2, "" } }; const RtfFOTBuilder::SymbolFont RtfFOTBuilder::symbolFonts[RtfFOTBuilder::nSymbolFonts] = { { "Symbol", { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0021, 0x2200, 0x0023, 0x2203, 0x0025, 0x0026, 0x220B, 0x0028, 0x0029, 0x2217, 0x002B, 0x002C, 0x2212, 0x002E, 0x002F, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F, 0x2245, 0x0391, 0x0392, 0x03A7, 0x2206, 0x0395, 0x03A6, 0x0393, 0x0397, 0x0399, 0x03D1, 0x039A, 0x039B, 0x039C, 0x039D, 0x039F, 0x03A0, 0x0398, 0x03A1, 0x03A3, 0x03A4, 0x03A5, 0x03C2, 0x2126, 0x039E, 0x03A8, 0x0396, 0x005B, 0x2234, 0x005D, 0x22A5, 0x005F, 0x203E, 0x03B1, 0x03B2, 0x03C7, 0x03B4, 0x03B5, 0x03C6, 0x03B3, 0x03B7, 0x03B9, 0x03D5, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BF, 0x03C0, 0x03B8, 0x03C1, 0x03C3, 0x03C4, 0x03C5, 0x03D6, 0x03C9, 0x03BE, 0x03C8, 0x03B6, 0x007B, 0x007C, 0x007D, 0x223C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03D2, 0x2032, 0x2264, 0x2215, 0x221E, 0x0192, 0x2663, 0x2666, 0x2665, 0x2660, 0x2194, 0x2190, 0x2191, 0x2192, 0x2193, 0x00B0, 0x00B1, 0x2033, 0x2265, 0x00D7, 0x221D, 0x2202, 0x2022, 0x00F7, 0x2260, 0x2261, 0x2248, 0x2026, 0x0000, 0x0000, 0x21B5, 0x2135, 0x2111, 0x211C, 0x2118, 0x2297, 0x2295, 0x2205, 0x2229, 0x222A, 0x2283, 0x2287, 0x2284, 0x2282, 0x2286, 0x2208, 0x2209, 0x2220, 0x2207, 0x00AE, 0x00A9, 0x2122, 0x220F, 0x221A, 0x22C5, 0x00AC, 0x2227, 0x2228, 0x21D4, 0x21D0, 0x21D1, 0x21D2, 0x21D3, 0x25CA, 0x2329, 0x00AE, 0x00A9, 0x2122, 0x2211, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x232A, 0x222B, 0x2320, 0x0000, 0x2321, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 } }, // I created this table by hand. It's sometimes not obvious what // the appropriate mapping is. { "Wingdings", { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2702, 0x2701, 0x0000, 0x0000, 0x0000, 0x0000, 0x260e, 0x2706, 0x2709, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2328, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2707, 0x270d, 0x0000, 0x270c, 0x0000, 0x0000, 0x0000, 0x261c, 0x261e, 0x261d, 0x261f, 0x0000, 0x263a, 0x0000, 0x2639, 0x0000, 0x2620, 0x0000, 0x0000, 0x2708, 0x263c, 0x0000, 0x2744, 0x0000, 0x271e, 0x0000, 0x2720, 0x2721, 0x262a, 0x262f, 0x0950, 0x2638, 0x2648, 0x2649, 0x264a, 0x264b, 0x264c, 0x264d, 0x264e, 0x264f, 0x2650, 0x2651, 0x2652, 0x2653, 0x0000, 0x0000, 0x25cf, 0x274d, 0x25a0, 0x25a1, 0x0000, 0x2751, 0x2752, 0x0000, 0x0000, 0x25c6, 0x2756, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2780, 0x2781, 0x2782, 0x2783, 0x2784, 0x2785, 0x2786, 0x2787, 0x2788, 0x2789, 0x0000, 0x278a, 0x278b, 0x278c, 0x278d, 0x278e, 0x278f, 0x2790, 0x2791, 0x2792, 0x2793, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x25cb, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x25aa, 0x0000, 0x0000, 0x2726, 0x2605, 0x2736, 0x0000, 0x2739, 0x0000, 0x0000, 0x0000, 0x2727, 0x0000, 0x0000, 0x272a, 0x2730, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x232b, 0x2326, 0x0000, 0x27a2, 0x0000, 0x0000, 0x0000, 0x27b2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x25ab, 0x2718, 0x2714, 0x2612, 0x2611, 0x0000 } }, { "ZapfDingbats", { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2701, 0x2702, 0x2703, 0x2704, 0x260E, 0x2706, 0x2707, 0x2708, 0x2709, 0x261B, 0x261E, 0x270C, 0x270D, 0x270E, 0x270F, 0x2710, 0x2711, 0x2712, 0x2713, 0x2714, 0x2715, 0x2716, 0x2717, 0x2718, 0x2719, 0x271A, 0x271B, 0x271C, 0x271D, 0x271E, 0x271F, 0x2720, 0x2721, 0x2722, 0x2723, 0x2724, 0x2725, 0x2726, 0x2727, 0x2605, 0x2729, 0x272A, 0x272B, 0x272C, 0x272D, 0x272E, 0x272F, 0x2730, 0x2731, 0x2732, 0x2733, 0x2734, 0x2735, 0x2736, 0x2737, 0x2738, 0x2739, 0x273A, 0x273B, 0x273C, 0x273D, 0x273E, 0x273F, 0x2740, 0x2741, 0x2742, 0x2743, 0x2744, 0x2745, 0x2746, 0x2747, 0x2748, 0x2749, 0x274A, 0x274B, 0x0000, 0x274D, 0x25A0, 0x274F, 0x2750, 0x2751, 0x2752, 0x25B2, 0x25BC, 0x25C6, 0x2756, 0x0000, 0x2758, 0x2759, 0x275A, 0x275B, 0x275C, 0x275D, 0x275E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2761, 0x2762, 0x2763, 0x2764, 0x2765, 0x2766, 0x2767, 0x2663, 0x2666, 0x2665, 0x2660, 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469, 0x2776, 0x2777, 0x2778, 0x2779, 0x277A, 0x277B, 0x277C, 0x277D, 0x277E, 0x277F, 0x2780, 0x2781, 0x2782, 0x2783, 0x2784, 0x2785, 0x2786, 0x2787, 0x2788, 0x2789, 0x278A, 0x278B, 0x278C, 0x278D, 0x278E, 0x278F, 0x2790, 0x2791, 0x2792, 0x2793, 0x2794, 0x2192, 0x2194, 0x2195, 0x2798, 0x2799, 0x279A, 0x279B, 0x279C, 0x279D, 0x279E, 0x279F, 0x27A0, 0x27A1, 0x27A2, 0x27A3, 0x27A4, 0x27A5, 0x27A6, 0x27A7, 0x27A8, 0x27A9, 0x27AA, 0x27AB, 0x27AC, 0x27AD, 0x27AE, 0x27AF, 0x0000, 0x27B1, 0x27B2, 0x27B3, 0x27B4, 0x27B5, 0x27B6, 0x27B7, 0x27B8, 0x27B9, 0x27BA, 0x27BB, 0x27BC, 0x27BD, 0x27BE, 0x0000 } }, }; #ifdef DSSSL_NAMESPACE } #endif #include "RtfFOTBuilder_inst.cxx" openjade-1.3.2/jade/RtfFOTBuilder.h0100664000076400007640000000117506713045147015117 0ustar ianian// Copyright (c) 1996 James Clark // See the file copying.txt for copying permission. #ifndef RtfFOTBuilder_INCLUDED #define RtfFOTBuilder_INCLUDED 1 #include "OutputByteStream.h" #include "FOTBuilder.h" #include "Ptr.h" #include "ExtendEntityManager.h" #include "CharsetInfo.h" #include "Message.h" #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif FOTBuilder * makeRtfFOTBuilder(OutputByteStream *, const Vector &options, const Ptr &, const CharsetInfo &, Messenger *, const FOTBuilder::Extension *&); #ifdef DSSSL_NAMESPACE } #endif #endif /* not RtfFOTBuilder_INCLUDED */ openjade-1.3.2/jade/RtfFOTBuilder_inst.m40100664000076400007640000000202306713045664016242 0ustar ianian// Copyright (c) 1996 James Clark // See the file copying.txt for copying permission. #include "config.h" #ifdef SP_MANUAL_INST #define SP_DEFINE_TEMPLATES #include "Vector.h" #include "HashTable.h" #include "IList.h" #undef SP_DEFINE_TEMPLATES #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif __instantiate(Vector) __instantiate(Vector) __instantiate(Vector) __instantiate(Vector) __instantiate(Vector) __instantiate(Vector >) __instantiate(Vector) __instantiate(Vector) __instantiate(Vector) __instantiate(Vector) __instantiate(`HashTableIter') __instantiate(IList) __instantiate(IList) __instantiate(Vector > >) __instantiate(Vector >) #ifdef DSSSL_NAMESPACE } #endif #endif /* SP_MANUAL_INST */ openjade-1.3.2/jade/RtfMessages.msg0100664000076400007640000000043106713045665015265 0ustar ianian# Copyright (c) 1996 James Clark # See the file COPYING for copying permission =4000 E0+nestedTable++nested tables are not allowed in RTF E1+systemIdNotFilename++could not convert system identifier %1 to a single filename E2+cannotEmbedFilename++could not embed %1 with clsid %2 openjade-1.3.2/jade/RtfOle.cxx0100664000076400007640000001577606713046525014267 0ustar ianian// Copyright (c) 1997 James Clark // See the file copying.txt for copying permission. #include "config.h" #define STRICT #include #include "RtfOle.h" #include "StringC.h" #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif class OleUninitializer { public: OleUninitializer() : enabled_(0) { } ~OleUninitializer() { if (enabled_) ::OleUninitialize(); } void enable() { enabled_ = 1; } bool enabled() const { return enabled_; } private: bool enabled_; }; static OleUninitializer oleUninit; struct ComException { ComException(HRESULT hRes, const char *fn, const char *ifn = 0) : hResult(hRes), functionName(fn), interfaceName(ifn) { } HRESULT hResult; const char *functionName; const char *interfaceName; }; inline void checkCom(HRESULT hRes, const char *functionName, const char *ifn = 0) { if (FAILED(hRes)) throw ComException(hRes, functionName, ifn); } #define COMFUNC(func, args) checkCom(func args, #func) #define COMMETH(obj, iface, meth, args) checkCom((obj)->meth args, #meth, #iface) static const char hexdigits[] = "0123456789ABCDEF"; class MyOleStream : public OLESTREAM { public: MyOleStream(OutputByteStream &os): os_(&os), col_(0) { static OLESTREAMVTBL vtbl = { get, put }; lpstbl = &vtbl; } unsigned long write(const char *p, unsigned long n) { for (size_t i = 0; i < n; i++) { if (col_++ % 64 == 0) *os_ << "\n"; *os_ << hexdigits[(p[i] >> 4) & 0xf] << hexdigits[p[i] & 0xf]; } return n; } private: static DWORD CALLBACK get(LPOLESTREAM, void *, DWORD) { return 0; } static DWORD CALLBACK put(LPOLESTREAM stm, const void *p, DWORD n) { return ((MyOleStream *)stm)->write((const char *)p, n); } unsigned col_; OutputByteStream *os_; }; template class ComPtr { public: ComPtr() : p_(0) { } ComPtr(const ComPtr &cp) : p_(cp) { if (p_) p_->AddRef(); } ~ComPtr() { if (p_) p_->Release(); } void operator=(const ComPtr &cp) { if (cp.p_) cp.p_->AddRef(); if (p_) p_->Release(); p_ = cp.p_; } operator T *() const { return p_; } T *operator->() const { return p_; } // Legal only when p_ is 0. T **operator&() { return &p_; } private: T *p_; }; template class GlobalPtr { public: GlobalPtr(HGLOBAL h) : h_(h), p_((T *)GlobalLock(h)) { } ~GlobalPtr() { if (p_) GlobalUnlock(h_); } operator T *() const { return p_; } T *operator->() const { return p_; } private: GlobalPtr(const GlobalPtr &); void operator=(const GlobalPtr &); T *p_; HGLOBAL h_; }; class StorageMedium : public STGMEDIUM { public: StorageMedium() { pUnkForRelease = 0; tymed = TYMED_NULL; } ~StorageMedium() { ReleaseStgMedium(this); } private: StorageMedium(const StorageMedium &); void operator=(const StorageMedium &); }; static const wchar_t *makeAbsolute(const wchar_t *filename, StringC &buf); int outputObject(const wchar_t *filename, const wchar_t *clsidString, OutputByteStream &os) { try { if (!oleUninit.enabled()) { COMFUNC(OleInitialize, (NULL)); oleUninit.enable(); } StringC buf; filename = makeAbsolute(filename, buf); FORMATETC fmt; fmt.cfFormat = CF_METAFILEPICT; fmt.ptd = 0; fmt.dwAspect = DVASPECT_CONTENT; fmt.lindex = -1; fmt.tymed = TYMED_MFPICT; ComPtr pStorage; #if 0 ComPtr pBytes; COMFUNC(CreateILockBytesOnHGlobal, (0, 1, &pBytes)); COMFUNC(StgCreateDocfileOnILockBytes,(pBytes, STGM_CREATE|STGM_TRANSACTED|STGM_READWRITE|STGM_SHARE_EXCLUSIVE, 0, &pStorage)); #else COMFUNC(StgCreateDocfile,(NULL,STGM_DELETEONRELEASE|STGM_CREATE|STGM_TRANSACTED|STGM_READWRITE|STGM_SHARE_EXCLUSIVE, 0, &pStorage)); #endif ComPtr pPersist; CLSID clsid; if (clsidString && *clsidString) COMFUNC(CLSIDFromString, ((wchar_t *)clsidString, &clsid)); else COMFUNC(GetClassFile, (filename, &clsid)); COMFUNC(CoCreateInstance, (clsid, NULL, CLSCTX_SERVER, IID_IPersistStorage, (void **)&pPersist)); COMMETH(pPersist, IPersistStorage, InitNew, (pStorage)); ComPtr pPersistF; COMMETH(pPersist, IUnknown, QueryInterface, (IID_IPersistFile, (void **)&pPersistF)); COMMETH(pPersistF, IPersistFile, Load, (filename, STGM_READ|STGM_SHARE_DENY_WRITE)); COMFUNC(OleSave, (pPersist, pStorage, 1)); COMMETH(pPersist, IPersistStorage, SaveCompleted, (pStorage)); #if 0 COMFUNC(OleCreateLinkToFile, (filename, IID_IPersistStorage, OLERENDER_FORMAT, &fmt, NULL, // pClientSite pStorage, (void **)&pPersist)); COMFUNC(OleSave, (pPersist, pStorage, 0)); #endif os << "{\\object\\objemb"; os << "{\\*\\objdata"; MyOleStream stm(os); COMFUNC(OleConvertIStorageToOLESTREAM, (pStorage, &stm)); os << "}"; ComPtr pData; COMMETH(pPersist, IUnknown, QueryInterface, (IID_IDataObject, (void **)&pData)); StorageMedium med; COMMETH(pData, IDataObject, GetData, (&fmt, &med)); if (med.tymed != TYMED_MFPICT) { return 0; } GlobalPtr pMeta(med.hMetaFilePict); os << "{\\result"; os << "{\\pict\\wmetafile" << pMeta->mm << "\\picw" << pMeta->xExt << "\\pich" << pMeta->yExt ; UINT n = GetMetaFileBitsEx(pMeta->hMF, 0, 0); if (n == 0) { return 0; } char *s = new char[n]; n = GetMetaFileBitsEx(pMeta->hMF, n, s); if (n == 0) { return 0; } for (size_t i = 0; i < n; i++) { if (i % 64 == 0) os << "\n"; os << hexdigits[(s[i] >> 4) & 0xf] << hexdigits[s[i] & 0xf]; } delete [] s; os << "}"; // pict os << "}"; // result os << "}"; // object } catch (const ComException &) { return 0; } return 1; } static void multiByteToWideChar(const char *mb, StringC &w) { int n = ::MultiByteToWideChar(CP_ACP, 0, mb, -1, 0, 0); w.resize(n); ::MultiByteToWideChar(CP_ACP, 0, mb, -1, &w[0], n); } static void wideCharToMultiByte(const wchar_t *w, String &mb) { int n = ::WideCharToMultiByte(CP_ACP, 0, w, -1, 0, 0, 0, 0); mb.resize(n); ::WideCharToMultiByte(CP_ACP, 0, w, -1, &mb[0], n, 0, 0); } static const wchar_t *makeAbsolute(const wchar_t *filename, StringC &fbuf) { { fbuf.resize(128); Char *tem; int n = GetFullPathNameW(filename, fbuf.size(), &fbuf[0], &tem); if (n > fbuf.size()) { fbuf.resize(n); n = GetFullPathNameW(filename, fbuf.size(), &fbuf[0], &tem); } if (n) { fbuf.resize(n + 1); return fbuf.data(); } } { String mb; wideCharToMultiByte(filename, mb); mb += 0; String buf; buf.resize(128); char *tem; int n = GetFullPathNameA(mb.data(), buf.size(), &buf[0], &tem); if (n > buf.size()) { buf.resize(n); n = GetFullPathNameA(mb.data(), buf.size(), &buf[0], &tem); } if (n) { buf.resize(n + 1); multiByteToWideChar(buf.data(), fbuf); fbuf += 0; return fbuf.data(); } } return filename; } #ifdef DSSSL_NAMESPACE } #endif openjade-1.3.2/jade/RtfOle.h0100664000076400007640000000064006713045665013700 0ustar ianian// Copyright (c) 1997 James Clark // See the file copying.txt for copying permission. #ifndef RtfOle_INCLUDED #define RtfOle_INCLUDED 1 #include "dsssl_ns.h" #include "OutputByteStream.h" #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif int outputObject(const wchar_t *filename, const wchar_t *clsidString, OutputByteStream &os); #ifdef DSSSL_NAMESPACE } #endif #endif /* not RtfOle_INCLUDED */ openjade-1.3.2/jade/SgmlFOTBuilder.cxx0100664000076400007640000015125107554622155015646 0ustar ianian// Copyright (c) 1996, 1997 James Clark // See the file copying.txt for copying permission. // Possible improvements: // Don't serialize ports // Extension flow objects // Merge text chunks // Handle input-whitespace-treatment/tabs // Table processing // When element has an ID, output both ID anchor and numeric anchor #include "config.h" #include "SgmlFOTBuilder.h" #include "macros.h" #include "dsssl_ns.h" #include #include #include #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif class SgmlFOTBuilder : public SerialFOTBuilder { public: SgmlFOTBuilder(OutputCharStream *); ~SgmlFOTBuilder(); void setFontSize(Length); void setFontFamilyName(const StringC &); void setFontWeight(Symbol); void setFontPosture(Symbol); void setStartIndent(const LengthSpec &); void setEndIndent(const LengthSpec &); void setFirstLineStartIndent(const LengthSpec &); void setLastLineEndIndent(const LengthSpec &); void setLineSpacing(const LengthSpec &); void setFieldWidth(const LengthSpec &); void setPositionPointShift(const LengthSpec &); void setStartMargin(const LengthSpec &); void setEndMargin(const LengthSpec &); void setSidelineSep(const LengthSpec &); void setAsisWrapIndent(const LengthSpec &); void setLineNumberSep(const LengthSpec &); void setLastLineJustifyLimit(const LengthSpec &); void setJustifyGlyphSpaceMaxAdd(const LengthSpec &); void setJustifyGlyphSpaceMaxRemove(const LengthSpec &); void setTableCornerRadius(const LengthSpec &); void setBoxCornerRadius(const LengthSpec &); void setMarginaliaSep(const LengthSpec &); void setMinPreLineSpacing(const OptLengthSpec &); void setMinPostLineSpacing(const OptLengthSpec &); void setMinLeading(const OptLengthSpec &); void setLines(Symbol); void setQuadding(Symbol); void setDisplayAlignment(Symbol sym); void setFieldAlign(Symbol); void setLineJoin(Symbol); void setLineCap(Symbol); void setLineNumberSide(Symbol); void setKernMode(Symbol); void setInputWhitespaceTreatment(Symbol); void setFillingDirection(Symbol); void setWritingMode(Symbol); void setLastLineQuadding(Symbol); void setMathDisplayMode(Symbol); void setScriptPreAlign(Symbol); void setScriptPostAlign(Symbol); void setScriptMidSupAlign(Symbol); void setScriptMidSubAlign(Symbol); void setNumeratorAlign(Symbol); void setDenominatorAlign(Symbol); void setGridPositionCellType(Symbol); void setGridColumnAlignment(Symbol); void setGridRowAlignment(Symbol); void setBoxType(Symbol); void setGlyphAlignmentMode(Symbol); void setBoxBorderAlignment(Symbol); void setCellRowAlignment(Symbol); void setBorderAlignment(Symbol); void setSidelineSide(Symbol); void setHyphenationKeep(Symbol); void setFontStructure(Symbol); void setFontProportionateWidth(Symbol); void setCellCrossed(Symbol); void setMarginaliaSide(Symbol); void setColor(const DeviceRGBColor &); void setBackgroundColor(const DeviceRGBColor &); void setBackgroundColor(); void setPageWidth(Length); void setPageHeight(Length); void setLeftMargin(Length); void setRightMargin(Length); void setTopMargin(Length); void setBottomMargin(Length); void setHeaderMargin(Length); void setFooterMargin(Length); void setLineThickness(Length); void setCellBeforeRowMargin(Length); void setCellAfterRowMargin(Length); void setCellBeforeColumnMargin(Length); void setCellAfterColumnMargin(Length); void setLineSep(Length); void setBoxSizeBefore(Length); void setBoxSizeAfter(Length); void setLayer(long); void setBackgroundLayer(long); void setBorderPriority(long); void setLineRepeat(long); void setSpan(long); void setMinLeaderRepeat(long); void setHyphenationRemainCharCount(long); void setHyphenationPushCharCount(long); void setWidowCount(long); void setOrphanCount(long); void setExpandTabs(long); void setHyphenationLadderCount(long); void setLanguage(Letter2); void setCountry(Letter2); void setBackgroundTile(PublicId); void setLineBreakingMethod(PublicId); void setLineCompositionMethod(PublicId); void setImplicitBidiMethod(PublicId); void setGlyphSubstMethod(PublicId); void setGlyphReorderMethod(PublicId); void setHyphenationMethod(PublicId); void setTableAutoWidthMethod(PublicId); void setFontName(PublicId); void setBorderPresent(bool); void setInhibitLineBreaks(bool); void setHyphenate(bool); void setKern(bool); void setLigature(bool); void setScoreSpaces(bool); void setFloatOutMarginalia(bool); void setFloatOutSidelines(bool); void setFloatOutLineNumbers(bool); void setCellBackground(bool); void setSpanWeak(bool); void setIgnoreRecordEnd(bool); void setNumberedLines(bool); void setHangingPunct(bool); void setBoxOpenEnd(bool); void setTruncateLeader(bool); void setAlignLeader(bool); void setTablePartOmitMiddleHeader(bool); void setTablePartOmitMiddleFooter(bool); void setBorderOmitAtBreak(bool); void setPrincipalModeSimultaneous(bool); void setMarginaliaKeepWithPrevious(bool); void setGridEquidistantRows(bool); void setGridEquidistantColumns(bool); void setEscapementSpaceBefore(const InlineSpace &); void setEscapementSpaceAfter(const InlineSpace &); void setGlyphSubstTable(const Vector > &tables); void paragraphBreak(const ParagraphNIC &); void characters(const Char *, size_t); void charactersFromNode(const NodePtr &nd, const Char *s, size_t n); void character(const CharacterNIC &); void externalGraphic(const ExternalGraphicNIC &); void rule(const RuleNIC &); void alignmentPoint(); void startSimplePageSequenceSerial(); void endSimplePageSequenceSerial(); void pageNumber(); void startSimplePageSequenceHeaderFooter(unsigned); void endSimplePageSequenceHeaderFooter(unsigned); void endAllSimplePageSequenceHeaderFooter(); void startScroll(); void endScroll(); void startLink(const Address &); void endLink(); void startMarginalia(); void endMarginalia(); void startMultiModeSerial(const MultiMode *); void endMultiModeSerial(); void startMultiModeMode(const MultiMode &); void endMultiModeMode(); void startScore(Char); void startScore(const LengthSpec &); void startScore(Symbol); void endScore(); void startLeader(const LeaderNIC &); void endLeader(); void startSideline(); void endSideline(); void startBox(const BoxNIC &); void endBox(); void startParagraph(const ParagraphNIC &); void endParagraph(); void startSequence(); void endSequence(); void startLineField(const LineFieldNIC &); void endLineField(); void startDisplayGroup(const DisplayGroupNIC &); void endDisplayGroup(); void startTable(const TableNIC &); void endTable(); void tableBeforeRowBorder(); void tableAfterRowBorder(); void tableBeforeColumnBorder(); void tableAfterColumnBorder(); void tableColumn(const TableColumnNIC &); void startTablePartSerial(const TablePartNIC &); void endTablePartSerial(); void startTablePartHeader(); void endTablePartHeader(); void startTablePartFooter(); void endTablePartFooter(); void startTableRow(); void endTableRow(); void startTableCell(const TableCellNIC &); void endTableCell(); void tableCellBeforeRowBorder(); void tableCellAfterRowBorder(); void tableCellBeforeColumnBorder(); void tableCellAfterColumnBorder(); void startMathSequence(); void endMathSequence(); void startFractionSerial(); void endFractionSerial(); void startFractionNumerator(); void endFractionNumerator(); void startFractionDenominator(); void endFractionDenominator(); void fractionBar(); void startUnmath(); void endUnmath(); void startSuperscript(); void endSuperscript(); void startSubscript(); void endSubscript(); void startScriptSerial(); void endScriptSerial(); void startScriptPreSup(); void endScriptPreSup(); void startScriptPreSub(); void endScriptPreSub(); void startScriptPostSup(); void endScriptPostSup(); void startScriptPostSub(); void endScriptPostSub(); void startScriptMidSup(); void endScriptMidSup(); void startScriptMidSub(); void endScriptMidSub(); void startMarkSerial(); void endMarkSerial(); void startMarkOver(); void endMarkOver(); void startMarkUnder(); void endMarkUnder(); void startFenceSerial(); void endFenceSerial(); void startFenceOpen(); void endFenceOpen(); void startFenceClose(); void endFenceClose(); void startRadicalSerial(); void endRadicalSerial(); void startRadicalDegree(); void endRadicalDegree(); void radicalRadical(const CharacterNIC &); void radicalRadicalDefaulted(); void startMathOperatorSerial(); void endMathOperatorSerial(); void startMathOperatorOperator(); void endMathOperatorOperator(); void startMathOperatorLowerLimit(); void endMathOperatorLowerLimit(); void startMathOperatorUpperLimit(); void endMathOperatorUpperLimit(); void startGrid(const GridNIC &); void endGrid(); void startGridCell(const GridCellNIC &); void endGridCell(); void startNode(const NodePtr &, const StringC &); void endNode(); void currentNodePageNumber(const NodePtr &); struct Data { Data(const StringC &str) : ptr(str.data()), size(str.size()) { } Data(const Char *p, size_t n) : ptr(p), size(n) { } const Char *ptr; size_t size; }; struct Units { Units(long i) : n(i) { } long n; }; private: OutputCharStream &os() { return *curOs_; } void outputIcs(); void startSimpleFlowObj(const char *name); void simpleFlowObj(const char *name); void startPortFlow(const char *name); void endFlow(const char *name); void characterNIC(const CharacterNIC &nic); void displayNIC(const DisplayNIC &nic); void inlineNIC(const InlineNIC &nic); void boolC(const char *, bool); void lengthC(const char *, Length); void lengthSpecC(const char *, const LengthSpec &); void optLengthSpecC(const char *, const OptLengthSpec &); void symbolC(const char *name, Symbol sym); void integerC(const char *, long); void publicIdC(const char *, PublicId); void inlineSpaceC(const char *name, const InlineSpace &); void displaySpaceNIC(const char *name, const DisplaySpace &); void flushPendingElements(); void outputElementName(unsigned long groveIndex, const Char *, size_t); void outputElementName(const NodePtr &node); static bool nodeIsElement(const NodePtr &node) { GroveString gi; return node->getGi(gi) == accessOK; } Owner os_; StrOutputCharStream ics_; StrOutputCharStream hfs_; OutputCharStream *curOs_; Vector multiModeHasPrincipalMode_; Vector glyphSubstTableDefined_; Vector pendingElements_; Vector pendingElementLevels_; unsigned nPendingElementsNonEmpty_; unsigned nodeLevel_; bool suppressAnchors_; StringC hf_[nHF]; }; const char RE = '\r'; const char quot = '"'; const char *const trueString = "true"; const char *const falseString = "false"; // May change this to "null" const char *const nullString = "false"; typedef SgmlFOTBuilder::Units Units; inline OutputCharStream &operator<<(OutputCharStream &os, #ifdef GROVE_NAMESPACE GROVE_NAMESPACE:: #endif GroveString &str) { return os.write(str.data(), str.size()); } inline OutputCharStream &operator<<(OutputCharStream &os, long n) { if (n < 0) return os << '-' << (unsigned long)-n; else return os << (unsigned long)n; } inline const char *boolString(bool b) { return b ? trueString : falseString; } inline OutputCharStream &operator<<(OutputCharStream &os, FOTBuilder::Symbol sym) { switch (sym) { case FOTBuilder::symbolFalse: os << falseString; break; case FOTBuilder::symbolTrue: os << trueString; break; default: os << FOTBuilder::symbolName(sym); break; } return os; } inline OutputCharStream &operator<<(OutputCharStream &os, double d) { char buf[128]; sprintf(buf, "%g", d); return os << buf; } OutputCharStream &operator<<(OutputCharStream &os, Units u) { char buf[32]; sprintf(buf, "%03d", u.n); int len = strlen(buf); int i = 0; for (; i < 3 && buf[len - i - 1] == '0'; i++) ; if (i == 3) { i = len - 3; if (i == 0) buf[i++] = '0'; } else { int j = len + 1 - i; for (; i < 3; i++) buf[len - i] = buf[len - i - 1]; buf[len - 3] = '.'; i = j; } strcpy(buf + i, "pt"); return os << buf; } inline OutputCharStream &operator<<(OutputCharStream &os, const FOTBuilder::LengthSpec &ls) { if (ls.displaySizeFactor != 0.0) { // 100+20% if (ls.length) { os << Units(ls.length); if (ls.displaySizeFactor >= 0.0) os << '+'; } char buf[128]; sprintf(buf, "%.2f%%", ls.displaySizeFactor * 100.0); } else os << Units(ls.length); return os; } OutputCharStream &operator<<(OutputCharStream &os, const FOTBuilder::TableLengthSpec &ls) { if (ls.displaySizeFactor != 0.0 || ls.tableUnitFactor != 0.0) { // 100+20% bool needSign = 0; if (ls.length) { os << Units(ls.length); needSign = 1; } char buf[128]; if (ls.displaySizeFactor != 0.0) { if (needSign && ls.displaySizeFactor >= 0.0) os << '+'; sprintf(buf, "%.2f%%", ls.displaySizeFactor * 100.0); needSign = 1; os << buf; } if (ls.tableUnitFactor != 0.0) { if (needSign && ls.tableUnitFactor >= 0.0) os << '+'; sprintf(buf, "%.2f*", ls.tableUnitFactor); os << buf; } } else os << Units(ls.length); return os; } OutputCharStream &operator<<(OutputCharStream &os, SgmlFOTBuilder::Data data) { const Char *s = data.ptr; size_t n = data.size; for (; n > 0; n--, s++) { switch (*s) { case '&': os << "&"; break; case '<': os << "<"; break; case '>': os << ">"; break; case '"': os << """; break; default: if (*s < 0x80) os.put(*s); else os << "&#" << (unsigned long)*s << ';'; break; } } return os; } inline OutputCharStream &operator<<(OutputCharStream &os, const FOTBuilder::GlyphId &gid) { if (gid.publicId) { os << gid.publicId; if (gid.suffix) os << "::" << gid.suffix; } else os << falseString; return os; } FOTBuilder *makeSgmlFOTBuilder(OutputCharStream *os) { return new SgmlFOTBuilder(os); } static void outputNumericCharRef(OutputCharStream &os, Char c) { os << "&#" << (unsigned long)c << ';'; } SgmlFOTBuilder::SgmlFOTBuilder(OutputCharStream *os) : os_(os), curOs_(os), nodeLevel_(0), nPendingElementsNonEmpty_(0), suppressAnchors_(0) { os->setEscaper(outputNumericCharRef); *os_ << "" << RE; #if 0 *os_ << "" << RE; #endif *os_ << "" << RE; } SgmlFOTBuilder::~SgmlFOTBuilder() { os() << "" << RE; } void SgmlFOTBuilder::characters(const Char *s, size_t n) { if (n == 0) return; flushPendingElements(); os() << "" << Data(s, n) << "" << RE; } void SgmlFOTBuilder::charactersFromNode(const NodePtr &nd, const Char *s, size_t n) { GroveString name; GroveString text; NodePtr entity; if (n == 1 && *s == 0xFFFD && nd->getEntityName(name) == accessOK && nd->getEntity(entity) == accessOK && entity->getText(text) == accessOK) os() << "" << RE; else SgmlFOTBuilder::characters(s, n); } void SgmlFOTBuilder::characterNIC(const CharacterNIC &nic) { if (nic.specifiedC) { if (nic.specifiedC & (1 << CharacterNIC::cChar)) os() << " char=" << quot << "&#" << (unsigned long)nic.ch << ";" << quot; if (nic.specifiedC & (1 << CharacterNIC::cGlyphId)) os() << " glyph-id=" << quot << nic.glyphId << quot; if (nic.specifiedC & (1 << CharacterNIC::cIsDropAfterLineBreak)) os() << " drop-after-line-break=" << quot << boolString(nic.isDropAfterLineBreak) << quot; if (nic.specifiedC & (1 << CharacterNIC::cIsDropUnlessBeforeLineBreak)) os() << " drop-unless-before-line-break=" << quot << boolString(nic.isDropUnlessBeforeLineBreak) << quot; if (nic.specifiedC & (1 << CharacterNIC::cIsPunct)) os() << " punct=" << quot << boolString(nic.isPunct) << quot; if (nic.specifiedC & (1 << CharacterNIC::cIsInputWhitespace)) os() << " input-whitespace=" << quot << boolString(nic.isInputWhitespace) << quot; if (nic.specifiedC & (1 << CharacterNIC::cIsInputTab)) os() << " input-tab=" << quot << boolString(nic.isInputTab) << quot; if (nic.specifiedC & (1 << CharacterNIC::cIsRecordEnd)) os() << " record-end=" << quot << boolString(nic.isRecordEnd) << quot; if (nic.specifiedC & (1 << CharacterNIC::cIsSpace)) os() << " space=" << quot << boolString(nic.isSpace) << quot; if (nic.specifiedC & (1 << CharacterNIC::cScript)) { if (nic.script) os() << " script=" << quot << nic.script << quot; else os() << " script=" << quot << falseString << quot; } if (nic.specifiedC & (1 << CharacterNIC::cMathClass)) os() << " math-class=" << quot << nic.mathClass << quot; if (nic.specifiedC & (1 << CharacterNIC::cMathFontPosture)) os() << " math-font-posture=" << quot << nic.mathFontPosture << quot; if (nic.specifiedC & (1 << CharacterNIC::cBreakBeforePriority)) os() << " break-before-priority=" << quot << nic.breakBeforePriority << quot; if (nic.specifiedC & (1 << CharacterNIC::cBreakAfterPriority)) os() << " break-after-priority=" << quot << nic.breakAfterPriority << quot; } if (nic.stretchFactor != 1.0) os() << " stretch-factor=" << quot << nic.stretchFactor << quot; } void SgmlFOTBuilder::character(const CharacterNIC &nic) { flushPendingElements(); os() << ""; } void SgmlFOTBuilder::outputIcs() { StringC str; ics_.extractString(str); os() << str; } void SgmlFOTBuilder::setFontSize(Length n) { lengthC("font-size", n); } void SgmlFOTBuilder::setFontFamilyName(const StringC &str) { ics_ << " font-family-name=" << quot << str << quot; } void SgmlFOTBuilder::setFontWeight(Symbol weight) { symbolC("font-weight", weight); } void SgmlFOTBuilder::setFontPosture(Symbol posture) { symbolC("font-posture", posture); } void SgmlFOTBuilder::setStartIndent(const LengthSpec &ls) { lengthSpecC("start-indent", ls); } void SgmlFOTBuilder::setEndIndent(const LengthSpec &ls) { lengthSpecC("end-indent", ls); } void SgmlFOTBuilder::setFirstLineStartIndent(const LengthSpec &ls) { lengthSpecC("first-line-start-indent", ls); } void SgmlFOTBuilder::setLastLineEndIndent(const LengthSpec &ls) { lengthSpecC("last-line-end-indent", ls); } void SgmlFOTBuilder::setLineSpacing(const LengthSpec &ls) { lengthSpecC("line-spacing", ls); } void SgmlFOTBuilder::setFieldWidth(const LengthSpec &ls) { lengthSpecC("field-width", ls); } void SgmlFOTBuilder::setPositionPointShift(const LengthSpec &ls) { lengthSpecC("position-point-shift", ls); } void SgmlFOTBuilder::setStartMargin(const LengthSpec &ls) { lengthSpecC("start-margin", ls); } void SgmlFOTBuilder::setEndMargin(const LengthSpec &ls) { lengthSpecC("end-margin", ls); } void SgmlFOTBuilder::setSidelineSep(const LengthSpec &ls) { lengthSpecC("sideline-sep", ls); } void SgmlFOTBuilder::setAsisWrapIndent(const LengthSpec &ls) { lengthSpecC("asis-wrap-indent", ls); } void SgmlFOTBuilder::setLineNumberSep(const LengthSpec &ls) { lengthSpecC("line-number-sep", ls); } void SgmlFOTBuilder::setLastLineJustifyLimit(const LengthSpec &ls) { lengthSpecC("last-line-justify-limit", ls); } void SgmlFOTBuilder::setJustifyGlyphSpaceMaxAdd(const LengthSpec &ls) { lengthSpecC("justify-glyph-space-max-add", ls); } void SgmlFOTBuilder::setJustifyGlyphSpaceMaxRemove(const LengthSpec &ls) { lengthSpecC("justify-glyph-space-max-remove", ls); } void SgmlFOTBuilder::setTableCornerRadius(const LengthSpec &ls) { lengthSpecC("table-corner-radius", ls); } void SgmlFOTBuilder::setBoxCornerRadius(const LengthSpec &ls) { lengthSpecC("box-corner-radius", ls); } void SgmlFOTBuilder::setMarginaliaSep(const LengthSpec &ls) { lengthSpecC("marginalia-sep", ls); } void SgmlFOTBuilder::lengthSpecC(const char *s, const LengthSpec &ls) { ics_ << ' ' << s << '=' << quot << ls << quot; } void SgmlFOTBuilder::setMinPreLineSpacing(const OptLengthSpec &ols) { optLengthSpecC("min-pre-line-spacing", ols); } void SgmlFOTBuilder::setMinPostLineSpacing(const OptLengthSpec &ols) { optLengthSpecC("min-post-line-spacing", ols); } void SgmlFOTBuilder::setMinLeading(const OptLengthSpec &ols) { optLengthSpecC("min-leading", ols); } void SgmlFOTBuilder::optLengthSpecC(const char *s, const OptLengthSpec &ols) { if (ols.hasLength) lengthSpecC(s, ols.length); else ics_ << ' ' << s << quot << falseString << quot; } void SgmlFOTBuilder::setLines(Symbol sym) { symbolC("lines", sym); } void SgmlFOTBuilder::setQuadding(Symbol sym) { symbolC("quadding", sym); } void SgmlFOTBuilder::setDisplayAlignment(Symbol sym) { symbolC("display-alignment", sym); } void SgmlFOTBuilder::setFieldAlign(Symbol sym) { symbolC("field-align", sym); } void SgmlFOTBuilder::setLineJoin(Symbol sym) { symbolC("line-join", sym); } void SgmlFOTBuilder::setLineCap(Symbol sym) { symbolC("line-cap", sym); } void SgmlFOTBuilder::setLineNumberSide(Symbol sym) { symbolC("line-number-side", sym); } void SgmlFOTBuilder::setKernMode(Symbol sym) { symbolC("kern-mode", sym); } void SgmlFOTBuilder::setInputWhitespaceTreatment(Symbol sym) { symbolC("input-whitespace-treatment", sym); } void SgmlFOTBuilder::setFillingDirection(Symbol sym) { symbolC("filling-direction", sym); } void SgmlFOTBuilder::setWritingMode(Symbol sym) { symbolC("writing-mode", sym); } void SgmlFOTBuilder::setLastLineQuadding(Symbol sym) { symbolC("last-line-quadding", sym); } void SgmlFOTBuilder::setMathDisplayMode(Symbol sym) { symbolC("math-display-mode", sym); } void SgmlFOTBuilder::setScriptPreAlign(Symbol sym) { symbolC("script-pre-align", sym); } void SgmlFOTBuilder::setScriptPostAlign(Symbol sym) { symbolC("script-post-align", sym); } void SgmlFOTBuilder::setScriptMidSupAlign(Symbol sym) { symbolC("script-mid-sup-align", sym); } void SgmlFOTBuilder::setScriptMidSubAlign(Symbol sym) { symbolC("script-mid-sub-align", sym); } void SgmlFOTBuilder::setNumeratorAlign(Symbol sym) { symbolC("numerator-align", sym); } void SgmlFOTBuilder::setDenominatorAlign(Symbol sym) { symbolC("denominator-align", sym); } void SgmlFOTBuilder::setGridPositionCellType(Symbol sym) { symbolC("grid-position-cell-type", sym); } void SgmlFOTBuilder::setGridColumnAlignment(Symbol sym) { symbolC("grid-column-alignment", sym); } void SgmlFOTBuilder::setGridRowAlignment(Symbol sym) { symbolC("grid-row-alignment", sym); } void SgmlFOTBuilder::setBoxType(Symbol sym) { symbolC("box-type", sym); } void SgmlFOTBuilder::setGlyphAlignmentMode(Symbol sym) { symbolC("glyph-alignment-mode", sym); } void SgmlFOTBuilder::setBoxBorderAlignment(Symbol sym) { symbolC("box-border-alignment", sym); } void SgmlFOTBuilder::setCellRowAlignment(Symbol sym) { symbolC("cell-row-alignment", sym); } void SgmlFOTBuilder::setBorderAlignment(Symbol sym) { symbolC("border-alignment", sym); } void SgmlFOTBuilder::setSidelineSide(Symbol sym) { symbolC("sideline-side", sym); } void SgmlFOTBuilder::setHyphenationKeep(Symbol sym) { symbolC("hyphenation-keep", sym); } void SgmlFOTBuilder::setFontStructure(Symbol sym) { symbolC("font-structure", sym); } void SgmlFOTBuilder::setFontProportionateWidth(Symbol sym) { symbolC("font-proportionate-width", sym); } void SgmlFOTBuilder::setCellCrossed(Symbol sym) { symbolC("cell-crossed", sym); } void SgmlFOTBuilder::setMarginaliaSide(Symbol sym) { symbolC("marginalia-side", sym); } void SgmlFOTBuilder::symbolC(const char *name, Symbol sym) { ics_ << ' ' << name << '=' << quot << sym << quot; } inline void hex2(OutputCharStream &os, unsigned char c) { static const char hexDigits[] = "0123456789ABCDEF"; os << hexDigits[c >> 4] << hexDigits[c & 0xF]; } inline OutputCharStream &operator<<(OutputCharStream &os, const FOTBuilder::DeviceRGBColor &color) { os << '#'; hex2(os, color.red); hex2(os, color.green); hex2(os, color.blue); return os; } void SgmlFOTBuilder::setColor(const DeviceRGBColor &color) { ics_ << " color=" << quot << color << quot; } void SgmlFOTBuilder::setBackgroundColor() { ics_ << " background-color=" << quot << falseString << quot; } void SgmlFOTBuilder::setBackgroundColor(const DeviceRGBColor &color) { ics_ << " background-color=" << quot << color << quot; } void SgmlFOTBuilder::setPageWidth(Length units) { lengthC("page-width", units); } void SgmlFOTBuilder::setPageHeight(Length units) { lengthC("page-height", units); } void SgmlFOTBuilder::setLeftMargin(Length units) { lengthC("left-margin", units); } void SgmlFOTBuilder::setRightMargin(Length units) { lengthC("right-margin", units); } void SgmlFOTBuilder::setTopMargin(Length units) { lengthC("top-margin", units); } void SgmlFOTBuilder::setBottomMargin(Length units) { lengthC("bottom-margin", units); } void SgmlFOTBuilder::setHeaderMargin(Length units) { lengthC("header-margin", units); } void SgmlFOTBuilder::setFooterMargin(Length units) { lengthC("footer-margin", units); } void SgmlFOTBuilder::setLineThickness(Length units) { lengthC("line-thickness", units); } void SgmlFOTBuilder::setCellBeforeRowMargin(Length units) { lengthC("cell-before-row-margin", units); } void SgmlFOTBuilder::setCellAfterRowMargin(Length units) { lengthC("cell-after-row-margin", units); } void SgmlFOTBuilder::setCellBeforeColumnMargin(Length units) { lengthC("cell-before-column-margin", units); } void SgmlFOTBuilder::setCellAfterColumnMargin(Length units) { lengthC("cell-after-column-margin", units); } void SgmlFOTBuilder::setLineSep(Length units) { lengthC("line-sep", units); } void SgmlFOTBuilder::setBoxSizeBefore(Length units) { lengthC("box-size-before", units); } void SgmlFOTBuilder::setBoxSizeAfter(Length units) { lengthC("box-size-after", units); } void SgmlFOTBuilder::lengthC(const char *s, Length units) { ics_ << ' ' << s << '=' << quot << Units(units) << quot; } void SgmlFOTBuilder::setLayer(long n) { integerC("layer", n); } void SgmlFOTBuilder::setBackgroundLayer(long n) { integerC("background-layer", n); } void SgmlFOTBuilder::setBorderPriority(long n) { integerC("border-priority", n); } void SgmlFOTBuilder::setLineRepeat(long n) { integerC("line-repeat", n); } void SgmlFOTBuilder::setSpan(long n) { integerC("span", n); } void SgmlFOTBuilder::setMinLeaderRepeat(long n) { integerC("min-leader-repeat", n); } void SgmlFOTBuilder::setHyphenationRemainCharCount(long n) { integerC("hyphenation-remain-char-count", n); } void SgmlFOTBuilder::setHyphenationPushCharCount(long n) { integerC("hyphenation-push-char-count", n); } void SgmlFOTBuilder::setWidowCount(long n) { integerC("widow-count", n); } void SgmlFOTBuilder::setOrphanCount(long n) { integerC("orphan-count", n); } void SgmlFOTBuilder::integerC(const char *s, long n) { ics_ << ' ' << s << '=' << quot << n << quot; } void SgmlFOTBuilder::setExpandTabs(long n) { integerC("expand-tabs", n); } void SgmlFOTBuilder::setHyphenationLadderCount(long n) { integerC("hyphenation-ladder-count", n); } void SgmlFOTBuilder::setCountry(Letter2 code) { ics_ << " country=" << quot; if (code) ics_ << char((code >> 8) & 0xff) << char(code & 0xff); else ics_ << falseString; ics_ << quot; } void SgmlFOTBuilder::setLanguage(Letter2 code) { ics_ << " language=" << quot; if (code) ics_ << char((code >> 8) & 0xff) << char(code & 0xff); else ics_ << falseString; ics_ << quot; } void SgmlFOTBuilder::setBackgroundTile(PublicId pubid) { publicIdC("background-tile", pubid); } void SgmlFOTBuilder::setLineBreakingMethod(PublicId pubid) { publicIdC("line-breaking-method", pubid); } void SgmlFOTBuilder::setLineCompositionMethod(PublicId pubid) { publicIdC("line-composition-method", pubid); } void SgmlFOTBuilder::setImplicitBidiMethod(PublicId pubid) { publicIdC("implicit-bidi-method", pubid); } void SgmlFOTBuilder::setGlyphSubstMethod(PublicId pubid) { publicIdC("glyph-subst-method", pubid); } void SgmlFOTBuilder::setGlyphReorderMethod(PublicId pubid) { publicIdC("glyph-reorder-method", pubid); } void SgmlFOTBuilder::setHyphenationMethod(PublicId pubid) { publicIdC("hyphenation-method", pubid); } void SgmlFOTBuilder::setTableAutoWidthMethod(PublicId pubid) { publicIdC("table-auto-width-method", pubid); } void SgmlFOTBuilder::setFontName(PublicId pubid) { publicIdC("font-name", pubid); } void SgmlFOTBuilder::publicIdC(const char *s, PublicId pubid) { ics_ << ' ' << s << '=' << quot; if (pubid) ics_ << pubid; else ics_ << falseString; ics_ << quot; } void SgmlFOTBuilder::setBorderPresent(bool b) { boolC("border-present", b); } void SgmlFOTBuilder::setInhibitLineBreaks(bool b) { boolC("border-present", b); } void SgmlFOTBuilder::setHyphenate(bool b) { boolC("hyphenate", b); } void SgmlFOTBuilder::setKern(bool b) { boolC("kern", b); } void SgmlFOTBuilder::setLigature(bool b) { boolC("ligature", b); } void SgmlFOTBuilder::setScoreSpaces(bool b) { boolC("score-spaces", b); } void SgmlFOTBuilder::setFloatOutMarginalia(bool b) { boolC("float-out-marginalia", b); } void SgmlFOTBuilder::setFloatOutSidelines(bool b) { boolC("float-out-sidelines", b); } void SgmlFOTBuilder::setFloatOutLineNumbers(bool b) { boolC("float-out-line-numbers", b); } void SgmlFOTBuilder::setCellBackground(bool b) { boolC("cell-background", b); } void SgmlFOTBuilder::setSpanWeak(bool b) { boolC("span-weak", b); } void SgmlFOTBuilder::setIgnoreRecordEnd(bool b) { boolC("ignore-record-end", b); } void SgmlFOTBuilder::setNumberedLines(bool b) { boolC("numbered-lines", b); } void SgmlFOTBuilder::setHangingPunct(bool b) { boolC("hanging-punct", b); } void SgmlFOTBuilder::setBoxOpenEnd(bool b) { boolC("box-open-end", b); } void SgmlFOTBuilder::setTruncateLeader(bool b) { boolC("truncate-leader", b); } void SgmlFOTBuilder::setAlignLeader(bool b) { boolC("align-leader", b); } void SgmlFOTBuilder::setTablePartOmitMiddleHeader(bool b) { boolC("table-part-omit-middle-header", b); } void SgmlFOTBuilder::setTablePartOmitMiddleFooter(bool b) { boolC("table-part-omit-middle-footer", b); } void SgmlFOTBuilder::setBorderOmitAtBreak(bool b) { boolC("border-omit-at-break", b); } void SgmlFOTBuilder::setPrincipalModeSimultaneous(bool b) { boolC("principal-mode-simultaneous", b); } void SgmlFOTBuilder::setMarginaliaKeepWithPrevious(bool b) { boolC("marginalia-keep-with-previous", b); } void SgmlFOTBuilder::setGridEquidistantRows(bool b) { boolC("grid-equidistant-rows", b); } void SgmlFOTBuilder::setGridEquidistantColumns(bool b) { boolC("grid-equidistant-columns", b); } void SgmlFOTBuilder::boolC(const char *s, bool b) { ics_ << ' ' << s << '=' << quot << boolString(b) << quot; } void SgmlFOTBuilder::setEscapementSpaceBefore(const InlineSpace &is) { inlineSpaceC("escapement-space-before", is); } void SgmlFOTBuilder::setEscapementSpaceAfter(const InlineSpace &is) { inlineSpaceC("escapement-space-after", is); } void SgmlFOTBuilder::setGlyphSubstTable(const Vector > &tables) { if (tables.size() == 0) { ics_ << " glyph-subst-table=" << quot << quot; return; } static const char idPrefix[] = "gst"; ics_ << " glyph-subst-table=" << quot; for (size_t i = 0; i < tables.size(); i++) { unsigned long n = tables[i]->uniqueId; if (n >= glyphSubstTableDefined_.size()) { for (size_t j = glyphSubstTableDefined_.size(); j < n + 1; j++) glyphSubstTableDefined_.push_back(0); } if (!glyphSubstTableDefined_[n]) { glyphSubstTableDefined_[n] = 1; os() << "" << RE; os() << ""; } if (i > 0) ics_ << ' '; ics_ << idPrefix << n; } ics_ << quot; } void SgmlFOTBuilder::inlineSpaceC(const char *s, const InlineSpace &is) { if (is.nominal || is.min || is.max) { ics_ << ' ' << s << '=' << quot << is.nominal; if (is.min.length != is.nominal.length || is.min.displaySizeFactor != is.nominal.displaySizeFactor || is.max.length != is.nominal.length || is.max.displaySizeFactor != is.nominal.displaySizeFactor) ics_ << ',' << is.min << ',' << is.max; } } void SgmlFOTBuilder::displayNIC(const DisplayNIC &nic) { if (nic.keepWithPrevious) os() << " keep-with-previous=" << quot << trueString << quot; if (nic.keepWithNext) os() << " keep-with-next=" << quot << trueString << quot; if (nic.mayViolateKeepBefore) os() << " may-violate-keep-before=" << quot << trueString << quot; if (nic.mayViolateKeepAfter) os() << " may-violate-keep-after=" << quot << trueString << quot; if (nic.positionPreference != symbolFalse) os() << " position-preference=" << quot << nic.positionPreference << quot; if (nic.keep != symbolFalse) os() << " keep=" << quot << nic.keep << quot; if (nic.breakBefore != symbolFalse) os() << " break-before=" << quot << nic.breakBefore << quot; if (nic.breakAfter != symbolFalse) os() << " break-after=" << quot << nic.breakAfter << quot; displaySpaceNIC("space-before", nic.spaceBefore); displaySpaceNIC("space-after", nic.spaceAfter); } void SgmlFOTBuilder::displaySpaceNIC(const char *s, const DisplaySpace &ds) { if (ds.nominal || ds.min || ds.max) { os() << ' ' << s << '=' << quot << ds.nominal; if (ds.min.length != ds.nominal.length || ds.min.displaySizeFactor != ds.nominal.displaySizeFactor || ds.max.length != ds.nominal.length || ds.max.displaySizeFactor != ds.nominal.displaySizeFactor) os() << ',' << ds.min << ',' << ds.max; os() << quot; } if (ds.force) os() << ' ' << s << "-priority=" << quot << "force" << quot; else if (ds.priority) os() << ' ' << s << "-priority=" << quot << ds.priority << quot; if (!ds.conditional) os() << ' ' << s << "-conditional=" << quot << falseString << quot; } void SgmlFOTBuilder::inlineNIC(const InlineNIC &nic) { if (nic.breakBeforePriority) os() << " break-before-priority=" << quot << nic.breakBeforePriority << quot; if (nic.breakAfterPriority) os() << " break-after-priority=" << quot << nic.breakAfterPriority << quot; } void SgmlFOTBuilder::startParagraph(const ParagraphNIC &nic) { os() << "" << RE; } void SgmlFOTBuilder::endParagraph() { endFlow("paragraph"); } void SgmlFOTBuilder::paragraphBreak(const ParagraphNIC &nic) { os() << "" << RE; } void SgmlFOTBuilder::startDisplayGroup(const DisplayGroupNIC &nic) { os() << "" << RE; } void SgmlFOTBuilder::endDisplayGroup() { endFlow("display-group"); } void SgmlFOTBuilder::simpleFlowObj(const char *name) { os() << '<' << name; outputIcs(); os() << "/>" << RE; } void SgmlFOTBuilder::startSimpleFlowObj(const char *name) { os() << '<' << name; outputIcs(); os() << ">" << RE; } void SgmlFOTBuilder::startPortFlow(const char *name) { os() << "<" << name << ">" << RE; } void SgmlFOTBuilder::endFlow(const char *name) { os() << "" << RE; } void SgmlFOTBuilder::startSequence() { startSimpleFlowObj("sequence"); } void SgmlFOTBuilder::endSequence() { endFlow("sequence"); } void SgmlFOTBuilder::startLineField(const LineFieldNIC &) { flushPendingElements(); startSimpleFlowObj("line-field"); } void SgmlFOTBuilder::endLineField() { endFlow("line-field"); } void SgmlFOTBuilder::startScroll() { startSimpleFlowObj("scroll"); } void SgmlFOTBuilder::endScroll() { endFlow("scroll"); } void SgmlFOTBuilder::startLink(const Address &addr) { os() << "hasDesc) os() << " desc=" << quot << Data(principalMode->desc) << quot; os() << '>' << RE; } multiModeHasPrincipalMode_.push_back(principalMode != 0); } void SgmlFOTBuilder::endMultiModeSerial() { if (multiModeHasPrincipalMode_.back()) endFlow("multi-mode.mode"); multiModeHasPrincipalMode_.resize(multiModeHasPrincipalMode_.size() - 1); endFlow("multi-mode"); } void SgmlFOTBuilder::startMultiModeMode(const MultiMode &mode) { if (multiModeHasPrincipalMode_.back()) { endFlow("multi-mode.mode"); multiModeHasPrincipalMode_.back() = 0; } os() << "' << RE; } } } } } void SgmlFOTBuilder::pageNumber() { os() << "" << RE; } void SgmlFOTBuilder::startMathSequence() { startSimpleFlowObj("math-sequence"); } void SgmlFOTBuilder::endMathSequence() { endFlow("math-sequence"); } void SgmlFOTBuilder::startFractionSerial() { startSimpleFlowObj("fraction"); } void SgmlFOTBuilder::endFractionSerial() { endFlow("fraction"); } void SgmlFOTBuilder::startFractionNumerator() { startPortFlow("fraction.numerator"); } void SgmlFOTBuilder::endFractionNumerator() { endFlow("fraction.numerator"); } void SgmlFOTBuilder::startFractionDenominator() { startPortFlow("fraction.denominator"); } void SgmlFOTBuilder::endFractionDenominator() { endFlow("fraction.denominator"); } void SgmlFOTBuilder::fractionBar() { simpleFlowObj("fraction.fraction-bar"); } void SgmlFOTBuilder::startUnmath() { startSimpleFlowObj("unmath"); } void SgmlFOTBuilder::endUnmath() { endFlow("unmath"); } void SgmlFOTBuilder::startSuperscript() { startSimpleFlowObj("superscript"); } void SgmlFOTBuilder::endSuperscript() { endFlow("superscript"); } void SgmlFOTBuilder::startSubscript() { startSimpleFlowObj("subscript"); } void SgmlFOTBuilder::endSubscript() { endFlow("subscript"); } void SgmlFOTBuilder::startScriptSerial() { startSimpleFlowObj("script"); startPortFlow("script.principal"); } void SgmlFOTBuilder::endScriptSerial() { endFlow("script"); } void SgmlFOTBuilder::startScriptPreSup() { endFlow("script.principal"); startPortFlow("script.pre-sup"); } void SgmlFOTBuilder::endScriptPreSup() { endFlow("script.pre-sup"); } void SgmlFOTBuilder::startScriptPreSub() { startPortFlow("script.pre-sub"); } void SgmlFOTBuilder::endScriptPreSub() { endFlow("script.pre-sub"); } void SgmlFOTBuilder::startScriptPostSup() { startPortFlow("script.post-sup"); } void SgmlFOTBuilder::endScriptPostSup() { endFlow("script.post-sup"); } void SgmlFOTBuilder::startScriptPostSub() { startPortFlow("script.post-sub"); } void SgmlFOTBuilder::endScriptPostSub() { endFlow("script.post-sub"); } void SgmlFOTBuilder::startScriptMidSup() { startPortFlow("script.mid-sup"); } void SgmlFOTBuilder::endScriptMidSup() { endFlow("script.mid-sup"); } void SgmlFOTBuilder::startScriptMidSub() { startPortFlow("script.mid-sub"); } void SgmlFOTBuilder::endScriptMidSub() { endFlow("script.mid-sub"); } void SgmlFOTBuilder::startMarkSerial() { startSimpleFlowObj("mark"); startPortFlow("mark.principal"); } void SgmlFOTBuilder::endMarkSerial() { endFlow("mark"); } void SgmlFOTBuilder::startMarkOver() { endFlow("mark.principal"); startPortFlow("mark.over-mark"); } void SgmlFOTBuilder::endMarkOver() { endFlow("mark.over-mark"); } void SgmlFOTBuilder::startMarkUnder() { startPortFlow("mark.under-mark"); } void SgmlFOTBuilder::endMarkUnder() { endFlow("mark.under-mark"); } void SgmlFOTBuilder::startFenceSerial() { startSimpleFlowObj("fence"); startPortFlow("fence.principal"); } void SgmlFOTBuilder::endFenceSerial() { endFlow("fence"); } void SgmlFOTBuilder::startFenceOpen() { endFlow("fence.principal"); startPortFlow("fence.open"); } void SgmlFOTBuilder::endFenceOpen() { endFlow("fence.open"); } void SgmlFOTBuilder::startFenceClose() { startPortFlow("fence.close"); } void SgmlFOTBuilder::endFenceClose() { endFlow("fence.close"); } void SgmlFOTBuilder::startRadicalSerial() { startSimpleFlowObj("radical"); } void SgmlFOTBuilder::endRadicalSerial() { endFlow("radical"); } void SgmlFOTBuilder::startRadicalDegree() { endFlow("radical.principal"); startPortFlow("radical.degree"); } void SgmlFOTBuilder::endRadicalDegree() { endFlow("radical.degree"); } void SgmlFOTBuilder::radicalRadical(const CharacterNIC &nic) { os() << "" << RE; startPortFlow("radical.principal"); } void SgmlFOTBuilder::radicalRadicalDefaulted() { startPortFlow("radical.principal"); } void SgmlFOTBuilder::startMathOperatorSerial() { startSimpleFlowObj("math-operator"); startPortFlow("math-operator.principal"); } void SgmlFOTBuilder::endMathOperatorSerial() { endFlow("math-operator"); } void SgmlFOTBuilder::startMathOperatorOperator() { endFlow("math-operator.principal"); startPortFlow("math-operator.operator"); } void SgmlFOTBuilder::endMathOperatorOperator() { endFlow("math-operator.operator"); } void SgmlFOTBuilder::startMathOperatorLowerLimit() { startPortFlow("math-operator.lower-limit"); } void SgmlFOTBuilder::endMathOperatorLowerLimit() { endFlow("math-operator.lower-limit"); } void SgmlFOTBuilder::startMathOperatorUpperLimit() { startPortFlow("math-operator.upper-limit"); } void SgmlFOTBuilder::endMathOperatorUpperLimit() { endFlow("math-operator.upper-limit"); } void SgmlFOTBuilder::startGrid(const GridNIC &nic) { os() << "" << RE; } void SgmlFOTBuilder::rule(const RuleNIC &nic) { flushPendingElements(); const char *s = symbolName(nic.orientation); if (!s) return; os() << "" << RE; } void SgmlFOTBuilder::startLeader(const LeaderNIC &nic) { flushPendingElements(); os() << "" << RE; } void SgmlFOTBuilder::startTablePartSerial(const TablePartNIC &nic) { os() << "' << RE; startPortFlow("table-part.principal"); } void SgmlFOTBuilder::endTablePartSerial() { endFlow("table-part"); } void SgmlFOTBuilder::startTablePartHeader() { endFlow("table-part.principal"); os() << "" << RE; } void SgmlFOTBuilder::endTablePartHeader() { endFlow("table-part.header"); } void SgmlFOTBuilder::startTablePartFooter() { os() << "" << RE; } void SgmlFOTBuilder::endTablePartFooter() { endFlow("table-part.footer"); } void SgmlFOTBuilder::startTableRow() { startSimpleFlowObj("table-row"); } void SgmlFOTBuilder::endTableRow() { endFlow("table-row"); } void SgmlFOTBuilder::startTableCell(const TableCellNIC &nic) { if (nic.missing) os() << " 0 && pendingElementLevels_.back() == nodeLevel_ && nPendingElementsNonEmpty_ < pendingElements_.size()) { pendingElementLevels_.resize(pendingElements_.size() - 1); pendingElements_.resize(pendingElements_.size() - 1); } nodeLevel_--; } void SgmlFOTBuilder::currentNodePageNumber(const NodePtr &node) { if (!nodeIsElement(node)) return; os() << "" << RE; } void SgmlFOTBuilder::outputElementName(unsigned long groveIndex, const Char *idData, size_t idSize) { if (groveIndex) os() << groveIndex << '.'; os() << Data(idData, idSize); } void SgmlFOTBuilder::outputElementName(const NodePtr &node) { GroveString id; if (node->getId(id) == accessOK) outputElementName(node->groveIndex(), id.data(), id.size()); else { unsigned long n; n = node->groveIndex(); if (n) os() << n << '.'; if (node->elementIndex(n) == accessOK) os() << n; } } void SgmlFOTBuilder::flushPendingElements() { if (suppressAnchors_) return; for (size_t i = 0; i < pendingElements_.size(); i++) { const NodePtr &node = pendingElements_[i]; os() << "" << RE; } nPendingElementsNonEmpty_ = 0; pendingElements_.resize(0); pendingElementLevels_.resize(0); } #ifdef DSSSL_NAMESPACE } #endif openjade-1.3.2/jade/SgmlFOTBuilder.h0100664000076400007640000000061306713043551015257 0ustar ianian// Copyright (c) 1996 James Clark // See the file copying.txt for copying permission. #ifndef SgmlFOTBuilder_INCLUDED #define SgmlFOTBuilder_INCLUDED 1 #include "FOTBuilder.h" #include "OutputCharStream.h" #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif FOTBuilder *makeSgmlFOTBuilder(OutputCharStream *); #ifdef DSSSL_NAMESPACE } #endif #endif /* not SgmlFOTBuilder_INCLUDED */ openjade-1.3.2/jade/TeXFOTBuilder.cxx0100664000076400007640000036760707421002771015447 0ustar ianian// TeXFotBuilder.cxx: a Generic TeX backend for Jade // Written by David Megginson // With changes from Sebastian Rahtz // Last Modification: August 6th, 1998 // Table Support: Kathleen Marszalek // Version: 1.0b7 // Last Modification: July 7th, 1998 #include "config.h" #include "TeXFOTBuilder.h" #include "TeXMessages.h" #include "MessageArg.h" #include "TmpOutputByteStream.h" #include #include #undef TEXDEBUG #undef NDEBUG #define OUTLINES #undef DEBUG_OUTLINES #ifdef DEBUG_OUTLINES #include #endif #include #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif // --------- TeXTmpOutputByteStream ------------------------------------------ struct TeXTmpOutputByteStream : public TmpOutputByteStream { TeXTmpOutputByteStream() : TmpOutputByteStream() {} void commit( OutputByteStream &os ) const; }; // ---------------------------------------------------------------------------- struct LengthInPoints { LengthInPoints( long l_ ) : l( l_ ) {} long l; }; void TeXTmpOutputByteStream::commit( OutputByteStream &os ) const { TmpOutputByteStream::Iter iter( *this ); const char *s; size_t n; while( iter.next( s, n ) ) { os.sputn( s, n ); } } // --------- TeXFOTBuilder ---------------------------------------------------- class TeXFOTBuilder : public SerialFOTBuilder { public: #ifdef TEXDEBUG static TeXFOTBuilder &curInstance() { assert( CurInstance != NULL ); return *CurInstance; } // used for testing only: otherwise code is re-entrant #endif struct PageFloatNIC { ~PageFloatNIC(); StringC placement; }; class TeXExtensionFlowObj : public FOTBuilder::ExtensionFlowObj { public: virtual void atomic(TeXFOTBuilder &, const NodePtr &) const = 0; }; class TeXCompoundExtensionFlowObj : public FOTBuilder::CompoundExtensionFlowObj { public: virtual void start(TeXFOTBuilder &, const NodePtr &) const = 0; virtual void end(TeXFOTBuilder &) const = 0; }; class PageFloatFlowObj : public TeXCompoundExtensionFlowObj { void start(TeXFOTBuilder &fotb, const NodePtr &) const { fotb.startPageFloat(nic_); } void end(TeXFOTBuilder &fotb) const { fotb.endPageFloat(); } bool hasNIC(const StringC &name) const { return name == "placement" ; } void setNIC(const StringC &, const Value &value) { value.convertString(nic_.placement); } ExtensionFlowObj *copy() const { return new PageFloatFlowObj(*this); } private: PageFloatNIC nic_; StringC name_; StringC placement; }; class PageFootnoteFlowObj : public TeXCompoundExtensionFlowObj { void start(TeXFOTBuilder &fotb, const NodePtr &) const { fotb.startPageFootnote(); } void end(TeXFOTBuilder &fotb) const { fotb.endPageFootnote(); } ExtensionFlowObj *copy() const { return new PageFootnoteFlowObj(*this); } private: }; ////////////////////////////////////////////////////////////////////// // Constructor and destructor. ////////////////////////////////////////////////////////////////////// TeXFOTBuilder(OutputByteStream *, Messenger *mgr); ~TeXFOTBuilder(); //// Needed for heading levels ////////////////////////////////////////////////////////////////////// // Atomic flow objects ////////////////////////////////////////////////////////////////////// void extension(const ExtensionFlowObj &fo, const NodePtr &); void startExtensionSerial(const CompoundExtensionFlowObj &fo, const NodePtr &nd); void endExtensionSerial(const CompoundExtensionFlowObj &fo); void start(); void end(); void charactersFromNode(const NodePtr &, const Char *, size_t); void setPreserveSdata(bool); void startPageFloat(const PageFloatNIC &); void endPageFloat(); void setPageFloatNIC(const PageFloatNIC &); void startPageFootnote(); void endPageFootnote(); void characters(const Char *, size_t); void character(const CharacterNIC &); void paragraphBreak(const ParagraphNIC &); void externalGraphic(const ExternalGraphicNIC &); void rule(const RuleNIC &); void alignmentPoint(); void pageNumber(); void formattingInstruction(const StringC &); void tableColumn(const TableColumnNIC &); void tableCellBeforeRowBorder(); void tableCellAfterRowBorder(); void tableCellBeforeColumnBorder(); void tableCellAfterColumnBorder(); void fractionBar(); void radicalRadical(const CharacterNIC &); void radicalRadicalDefaulted(); void currentNodePageNumber(const NodePtr &); ////////////////////////////////////////////////////////////////////// // Non-atomic flow objects ////////////////////////////////////////////////////////////////////// void startSequence(); void endSequence(); void startLineField(const LineFieldNIC &); void endLineField(); void startParagraph(const ParagraphNIC &); void endParagraph(); void startDisplayGroup(const DisplayGroupNIC &); void endDisplayGroup(); void startScroll(); void endScroll(); void startScore(Char); void startScore(const LengthSpec &); void startScore(Symbol); void endScore(); void startLeader(const LeaderNIC &); void endLeader(); void startSideline(); void endSideline(); void startBox(const BoxNIC &); void endBox(); // Tables void startTable(const TableNIC &); void endTable(); // A call for each border is made immediately // after startTable(), each preceded by any appropriate set*() calls. void tableBeforeRowBorder(); void tableAfterRowBorder(); void tableBeforeColumnBorder(); void tableAfterColumnBorder(); void startTablePartSerial(const TablePartNIC &); void endTablePartSerial(); void startTableRow(); void endTableRow(); void startTableCell(const TableCellNIC &); void endTableCell(); void startSimplePageSequenceSerial(); void endSimplePageSequenceSerial(); // Headers and footers are treated like a separate port. void startSimplePageSequenceHeaderFooter(unsigned); void endSimplePageSequenceHeaderFooter(unsigned); // page-number sosofo void startTablePartHeader(); void endTablePartHeader(); void startTablePartFooter(); void endTablePartFooter(); void startMathSequence(); void endMathSequence(); void startFractionSerial(); void endFractionSerial(); void startFractionNumerator(); void endFractionNumerator(); void startFractionDenominator(); void endFractionDenominator(); void startUnmath(); void endUnmath(); void startSuperscript(); void endSuperscript(); void startSubscript(); void endSubscript(); void startScriptSerial(); void endScriptSerial(); void startScriptPreSup(); void endScriptPreSup(); void startScriptPreSub(); void endScriptPreSub(); void startScriptPostSup(); void endScriptPostSup(); void startScriptPostSub(); void endScriptPostSub(); void startScriptMidSup(); void endScriptMidSup(); void startScriptMidSub(); void endScriptMidSub(); void startMarkSerial(); void endMarkSerial(); void startMarkOver(); void endMarkOver(); void startMarkUnder(); void endMarkUnder(); void startFenceSerial(); void endFenceSerial(); void startFenceOpen(); void endFenceOpen(); void startFenceClose(); void endFenceClose(); void startRadicalSerial(); void endRadicalSerial(); void startRadicalDegree(); void endRadicalDegree(); void startMathOperatorSerial(); void endMathOperatorSerial(); void startMathOperatorOperator(); void endMathOperatorOperator(); void startMathOperatorLowerLimit(); void endMathOperatorLowerLimit(); void startMathOperatorUpperLimit(); void endMathOperatorUpperLimit(); void startGrid(const GridNIC &); void endGrid(); void startGridCell(const GridCellNIC &); void endGridCell(); void startNode(const NodePtr &, const StringC &); void endNode(); void startLink(const Address &); void endLink(); ////////////////////////////////////////////////////////////////////// // Inherited characteristics // Set the value of the characteristic for the next flow object. // Inherited characteristics that are not explicitly set have // the same value as the parent flow object. ////////////////////////////////////////////////////////////////////// void setFontSize(Length); void setFontFamilyName(const StringC &); void setFontWeight(Symbol); void setFontPosture(Symbol); void setStartIndent(const LengthSpec &); void setEndIndent(const LengthSpec &); void setFirstLineStartIndent(const LengthSpec &); void setLastLineEndIndent(const LengthSpec &); void setLineSpacing(const LengthSpec &); void setFieldWidth(const LengthSpec &); void setMarginaliaSep(const LengthSpec &); void setLines(Symbol); void setQuadding(Symbol); void setDisplayAlignment(Symbol); void setFieldAlign(Symbol); void setColor(const DeviceRGBColor &); void setBackgroundColor(); // background of #f void setBackgroundColor(const DeviceRGBColor &); void setBorderPresent(bool); void setLineThickness(Length); void setCellBeforeRowMargin(Length); void setCellAfterRowMargin(Length); void setCellBeforeColumnMargin(Length); void setCellAfterColumnMargin(Length); void setLineSep(Length); void setBoxSizeBefore(Length); void setBoxSizeAfter(Length); void setPositionPointShift(const LengthSpec &); void setStartMargin(const LengthSpec &); void setEndMargin(const LengthSpec &); void setSidelineSep(const LengthSpec &); void setAsisWrapIndent(const LengthSpec &); void setLineNumberSep(const LengthSpec &); void setLastLineJustifyLimit(const LengthSpec &); void setJustifyGlyphSpaceMaxAdd(const LengthSpec &); void setJustifyGlyphSpaceMaxRemove(const LengthSpec &); void setTableCornerRadius(const LengthSpec &); void setBoxCornerRadius(const LengthSpec &); void setInhibitLineBreaks(bool); void setHyphenate(bool); void setKern(bool); void setLigature(bool); void setScoreSpaces(bool); void setFloatOutMarginalia(bool); void setFloatOutSidelines(bool); void setFloatOutLineNumbers(bool); void setCellBackground(bool); void setSpanWeak(bool); void setIgnoreRecordEnd(bool); void setNumberedLines(bool); void setHangingPunct(bool); void setBoxOpenEnd(bool); void setTruncateLeader(bool); void setAlignLeader(bool); void setTablePartOmitMiddleHeader(bool); void setTablePartOmitMiddleFooter(bool); void setBorderOmitAtBreak(bool); void setPrincipalModeSimultaneous(bool); void setMarginaliaKeepWithPrevious(bool); void setLineJoin(Symbol); void setLineCap(Symbol); void setLineNumberSide(Symbol); void setKernMode(Symbol); void setInputWhitespaceTreatment(Symbol); void setFillingDirection(Symbol); void setWritingMode(Symbol); void setLastLineQuadding(Symbol); void setMathDisplayMode(Symbol); void setBoxType(Symbol); void setGlyphAlignmentMode(Symbol); void setBoxBorderAlignment(Symbol); void setCellRowAlignment(Symbol); void setBorderAlignment(Symbol); void setSidelineSide(Symbol); void setHyphenationKeep(Symbol); void setFontStructure(Symbol); void setFontProportionateWidth(Symbol); void setCellCrossed(Symbol); void setMarginaliaSide(Symbol); void setLayer(long); void setBackgroundLayer(long); void setBorderPriority(long); void setLineRepeat(long); void setSpan(long); void setMinLeaderRepeat(long); void setHyphenationRemainCharCount(long); void setHyphenationPushCharCount(long); void setWidowCount(long); void setOrphanCount(long); // 0 means #f void setExpandTabs(long); void setHyphenationLadderCount(long); // public id or #f void setBackgroundTile(PublicId); void setLineBreakingMethod(PublicId); void setLineCompositionMethod(PublicId); void setImplicitBidiMethod(PublicId); void setGlyphSubstMethod(PublicId); void setGlyphReorderMethod(PublicId); void setHyphenationMethod(PublicId); void setTableAutoWidthMethod(PublicId); void setFontName(PublicId); // Two-letter code void setLanguage(Letter2); void setCountry(Letter2); // For simple page sequence void setPageWidth(Length); void setPageHeight(Length); void setLeftMargin(Length); void setRightMargin(Length); void setTopMargin(Length); void setBottomMargin(Length); void setHeaderMargin(Length); void setFooterMargin(Length); void setPageNumberRestart(bool); void setPageNumberFormat(const StringC &); void setPageNColumns(long); void setPageColumnSep(Length); void setPageBalanceColumns(bool); void setPageTwoSide(bool); void setTwoSideStartOnRight(bool); void setGridRowSep(Length); void setGridColumnSep(Length); void setSubscriptDepth(Length); void setSuperscriptHeight(Length); void setUnderMarkDepth(Length); void setOverMarkHeight(Length); void setHeadingLevel(long); void setMinPreLineSpacing(const OptLengthSpec &); void setMinPostLineSpacing(const OptLengthSpec &); void setMinLeading(const OptLengthSpec &); void setScriptPreAlign(Symbol); void setScriptPostAlign(Symbol); void setScriptMidSupAlign(Symbol); void setScriptMidSubAlign(Symbol); void setNumeratorAlign(Symbol); void setDenominatorAlign(Symbol); void setGridPositionCellType(Symbol); void setGridColumnAlignment(Symbol); void setGridRowAlignment(Symbol); void setGridEquidistantRows(bool); void setGridEquidistantColumns(bool); void setEscapementSpaceBefore(const InlineSpace &); void setEscapementSpaceAfter(const InlineSpace &); void setInlineSpaceSpace(const OptInlineSpace &); void setGlyphSubstTable(const Vector > &tables); void startDisplay( const DisplayNIC & ) {}; void endDisplay() {}; enum FotObjectClassType { oc_Unknown, oc_Cell }; enum { lengthUnspecified = LONG_MAX }; // static const Length lengthUnspecified = LONG_MAX; struct Format { Format() : FotCurDisplaySize( 0 ), FotLineThickness( 1000 ), FotLineCap( symbolButt ), FotBorderPriority( 0 ), FotBorderPresent( true ), FotLineRepeat( 1 ), FotLines( symbolWrap ), FotLineSep( 1000 ), FotDisplayAlignment( symbolNotApplicable ), FotCellRowAlignment( symbolNotApplicable ), FotStartIndentSpec( 0 ), FotEndIndentSpec( 0 ), FotLeftMargin( 1 ), FotRightMargin( 1 ), FotPageWidth( 72000*8 ), FotPageNColumns( 1 ), FotPageColumnSep( 72000/2 ), FotSpan( 1 ), FotCellBeforeColumnMargin( lengthUnspecified ), FotCellAfterColumnMargin( lengthUnspecified ), FotCellBackground(false), FotObjectClass( oc_Unknown ) {} long FotCurDisplaySize; Length FotLineThickness; Symbol FotLineCap; long FotBorderPriority; bool FotBorderPresent; long FotLineRepeat; Length FotLineSep; Symbol FotLines; Symbol FotDisplayAlignment; Symbol FotCellRowAlignment; LengthSpec FotStartIndentSpec; LengthSpec FotEndIndentSpec; Length FotLeftMargin; Length FotRightMargin; Length FotPageWidth; long FotPageNColumns; Length FotPageColumnSep; long FotSpan; bool FotCellBackground; DeviceRGBColor FotBackgroundColor; Length FotCellBeforeColumnMargin; Length FotCellAfterColumnMargin; FotObjectClassType FotObjectClass; static const Length INITIAL_PAGE_SIZE() { return 72000*8; } }; struct CompoundFotElement; struct FotElement { FotElement( CompoundFotElement *parent = NULL ) : Parent( parent ), SiblingSeqIdx( -1 ) {} String Characteristics; virtual void out( OutputByteStream &stream ) const { outProlog( stream ); outContent( stream ); outEpilog( stream ); } virtual void open( TeXFOTBuilder &builder ); virtual void close( TeXFOTBuilder &builder ); virtual bool isAtomic() const = 0; virtual const char *name() const = 0; CompoundFotElement *parent() const { return Parent; } String &nodeInfoEpilog() { return NodeInfoEpilog; } void setParent( CompoundFotElement *parent ) { Parent = parent; } virtual FotElement *lastClosed_() = 0; virtual FotElement *currentlyOpen_() = 0; void setSiblingSeqIdx( int idx ) { SiblingSeqIdx = idx; } int siblingSeqIdx() const { assert( SiblingSeqIdx > -1 ); return SiblingSeqIdx; } protected: int SiblingSeqIdx; CompoundFotElement* Parent; String NodeInfoProlog; String NodeInfoEpilog; virtual void outContent( OutputByteStream & ) const {}; virtual void outProlog( OutputByteStream &stream ) const = 0; virtual void outEpilog( OutputByteStream &stream ) const = 0; }; struct FotElementState { FotElementState() : EnforcingStructure( true ), IsOpen( false ) {} bool enforcingStructure() { return IsOpen && EnforcingStructure; } bool EnforcingStructure; bool IsOpen; String CurNodeInfoProlog; }; struct AtomicFotElement : public FotElement { AtomicFotElement( CompoundFotElement *parent = NULL ) : FotElement( parent ) {} virtual bool isAtomic() const { return true; } virtual FotElement *lastClosed_() { return NULL; }; virtual FotElement *currentlyOpen_() { return this; } protected: virtual void outProlog( OutputByteStream &stream ) const { stream << NodeInfoProlog << "\\insert" << name() << "%\n{" << Characteristics << '}'; } virtual void outEpilog( OutputByteStream &stream ) const { stream << '}' << NodeInfoEpilog; } }; struct CompoundFotElement : public FotElement { CompoundFotElement( CompoundFotElement *parent = NULL ) : FotElement( parent ), CurrentlyOpenChildIdx( -1 ), LastClosedChildIdx( -1 ) {} virtual bool isAtomic() const { return false; } virtual void open( TeXFOTBuilder &builder ) { FotElement::open( builder ); builder.pushOs( &PreContent ); }; virtual void close( TeXFOTBuilder &builder ) { builder.popOs(); FotElement::close( builder ); }; virtual void childJustClosed( FotElement &child ) { CurrentlyOpenChildIdx = -1; LastClosedChildIdx = child.siblingSeqIdx(); }; virtual void childJustOpened( FotElement &child ) { CurrentlyOpenChildIdx = child.siblingSeqIdx(); }; virtual FotElement &child( size_t idx ) = 0; static FotElement *lastClosed( CompoundFotElement &treeRoot ) { return treeRoot.currentlyOpen( treeRoot ) ? treeRoot.currentlyOpen( treeRoot )->lastClosed_() : (FotElement*)NULL; } static FotElement *currentlyOpen( CompoundFotElement &treeRoot ) { return treeRoot.currentlyOpen_(); } virtual FotElement *currentlyOpen_() { return CurrentlyOpenChildIdx > -1 ? child( (size_t)CurrentlyOpenChildIdx ).currentlyOpen_() : this; } virtual FotElement *lastClosed_() { return LastClosedChildIdx > -1 ? &child( (size_t)LastClosedChildIdx ) : ( parent() ? parent()->lastClosed_() : (FotElement*)NULL ); } protected: virtual void outProlog( OutputByteStream &stream ) const { #ifdef TEXDEBUG stream << "\nELEMENT\n" << "\nPRO\n" << NodeInfoProlog << "\nEND_PRO\n" << "\\" << name() << "%\n{" << Characteristics << '}'; #else stream << NodeInfoProlog << "\\" << name() << "%\n{" << Characteristics << '}'; #endif PreContent.commit( stream ); } virtual void outEpilog( OutputByteStream &stream ) const { #ifdef TEXDEBUG stream << "\\end" << name() << "{}" << "\nEPI\n" << NodeInfoEpilog << "\nEND_EPI\nEND_ELEMENT\n" ; #else stream << "\\end" << name() << "{}" << NodeInfoEpilog << "%\n" ; #endif } int CurrentlyOpenChildIdx; int LastClosedChildIdx; TeXTmpOutputByteStream PreContent; }; struct Border : public AtomicFotElement { Border( CompoundFotElement *parent = NULL, bool cellBorder_ = true ) : AtomicFotElement( parent ), cellBorder( cellBorder_ ), borderPresent( false ) {} long borderPriority; Length lineThickness; bool borderPresent; long lineRepeat; Length lineSep; bool cellBorder; void resolve( Border &adjacentBorder ); void setFromFot( TeXFOTBuilder &builder ); }; struct CellBeforeRowBorder : public Border { CellBeforeRowBorder( CompoundFotElement *parent = NULL ) : Border( parent ) {} virtual const char *name() const { return "TableCellBeforeRowBorder"; } }; struct CellAfterRowBorder : public Border { CellAfterRowBorder( CompoundFotElement *parent = NULL ) : Border( parent ) {} virtual const char *name() const { return "TableCellAfterRowBorder"; } }; struct CellBeforeColumnBorder : public Border { CellBeforeColumnBorder( CompoundFotElement *parent = NULL ) : Border( parent ) {} virtual const char *name() const { return "TableCellBeforeColumnBorder"; } }; struct CellAfterColumnBorder : public Border { CellAfterColumnBorder( CompoundFotElement *parent = NULL ) : Border( parent ) {} virtual const char *name() const { return "TableCellAfterColumnBorder"; } }; struct TableBeforeRowBorder : public Border { TableBeforeRowBorder( CompoundFotElement *parent = NULL ) : Border( parent, false ) {} virtual const char *name() const { return "TableBeforeRowBorder"; } }; struct TableAfterRowBorder : public Border { TableAfterRowBorder( CompoundFotElement *parent = NULL ) : Border( parent, false ) {} virtual const char *name() const { return "TableAfterRowBorder"; } }; struct TableBeforeColumnBorder : public Border { TableBeforeColumnBorder( CompoundFotElement *parent = NULL ) : Border( parent, false ) {} virtual const char *name() const { return "TableBeforeColumnBorder"; } }; struct TableAfterColumnBorder : public Border { TableAfterColumnBorder( CompoundFotElement *parent = NULL ) : Border( parent, false ) {} virtual const char *name() const { return "TableAfterColumnBorder"; } }; struct Column { Column() : hasWidth( 0 ), computedWidth( 0 ), defaultTeXLeftBorder( 0 ), defaultTeXRightBorder( 0 ), displayAlignment( symbolStart ), isExplicit( false ), displaySize(0), defaultCellBeforeColumnMargin( 0 ), defaultCellAfterColumnMargin( 0 ) {} bool isExplicit; bool hasWidth; TableLengthSpec width; long computedWidth; long displaySize; Symbol displayAlignment; int defaultTeXLeftBorder; // also used as column border count; int defaultTeXRightBorder; // bool defaultCellBackground; Length defaultCellBeforeColumnMargin; Length defaultCellAfterColumnMargin; }; struct TablePart; struct Cell : public CompoundFotElement { Cell( CompoundFotElement *parent = NULL ) : CompoundFotElement( parent ), missing( false ), OverlappingCell( NULL ), nRowsSpanned( 1 ), nColumnsSpanned( 1 ), displaySize( 0 ), beforeRowBorder(), afterRowBorder(), beforeColumnBorder(), afterColumnBorder(), TeXTableRowIdx( -1 ), TeXTableColumnIdx(-1), needsTeXColumnOverride(false), beforeColumnMargin( lengthUnspecified ), effectiveBeforeColumnMargin( lengthUnspecified ), afterColumnMargin( lengthUnspecified ), effectiveAfterColumnMargin( lengthUnspecified ), effectiveAlignment( symbolStart ), rowAlignment( symbolNotApplicable ), cellBackground(false) {} bool missing; int TeXTableRowIdx; int TeXTableColumnIdx; unsigned nColumnsSpanned; unsigned nRowsSpanned; CellBeforeRowBorder beforeRowBorder; CellAfterRowBorder afterRowBorder; CellBeforeColumnBorder beforeColumnBorder; CellAfterColumnBorder afterColumnBorder; bool needsTeXColumnOverride; Length beforeColumnMargin; Length effectiveBeforeColumnMargin; Length afterColumnMargin; Length effectiveAfterColumnMargin; Symbol rowAlignment; Symbol effectiveAlignment; long displaySize; bool cellBackground; DeviceRGBColor backgroundColor; Cell *OverlappingCell; OutputByteStream &content() { return Content; } virtual void open( TeXFOTBuilder &builder ) { builder.pushFotElementState(); CompoundFotElement::open( builder ); builder.pushOs( &Content ); builder.curFotElementState().EnforcingStructure = false; } virtual void close( TeXFOTBuilder &builder ) { builder.popOs(); CompoundFotElement::close( builder ); builder.popFotElementState(); } virtual const char *name() const { return "TableCell"; } bool singleRowBeforeRowBorderPresent() const; bool singleRowAfterRowBorderPresent() const; bool singleColumnBeforeColumnBorderPresent() const; bool singleColumnAfterColumnBorderPresent() const; void computeOverridingTeXColumnBorders( TablePart &tablePart ); void computeEffectiveTeXCellWidth( TablePart &tablePart ); void computeEffectiveTeXColumnMargins( TablePart &tablePart ); void computeTeXRowSpanFiller( TablePart &tablePart ); bool isOverlapped() const { return OverlappingCell == this ? false : true; } virtual FotElement &child( size_t ) { assert( false ); return *this; } protected: virtual void outProlog( OutputByteStream &stream ) const; virtual void outEpilog( OutputByteStream &stream ) const; void outContent( OutputByteStream &stream ) const { if ( !isOverlapped() ) Content.commit( stream ); } TeXTmpOutputByteStream Content; }; struct Row : public CompoundFotElement { Row( CompoundFotElement *parent = NULL ) : CompoundFotElement( parent ) {} virtual const char *name() const { return "TableRow"; } Vector Cells; static void outVerticalBorders ( const Row *upperRow, const Row *lowerRow, OutputByteStream &stream ); virtual FotElement &child( size_t idx ) { assert( idx < Cells.size() ); return Cells[idx]; } protected: void outContent( OutputByteStream &stream ) const; }; struct Table; struct TablePart : public CompoundFotElement { TablePart( CompoundFotElement *parent = NULL ) : CompoundFotElement( parent ), columnsProcessed( false ), needsColumnReprocessing( false ), isExplicit( true ) {} bool isExplicit; Vector Columns; String HeaderProlog; Vector Header; String HeaderEpilog; Vector Body; String FooterProlog; Vector Footer; String FooterEpilog; void processColumns( TeXFOTBuilder &builder ); void computeOverridingTeXCharacteristics(); void normalizeRows(); void begin(); Table &parentTable() const { assert( Parent != NULL ); return *(Table*)Parent; } virtual const char *name() const { return "TablePart"; } virtual FotElement &child( size_t idx ); bool columnsProcessed; bool needsColumnReprocessing; protected: virtual void outProlog( OutputByteStream &stream ) const { if( isExplicit ) CompoundFotElement::outProlog( stream ); } virtual void outEpilog( OutputByteStream &stream ) const { if( isExplicit ) CompoundFotElement::outEpilog( stream ); } Row &siblingSeqIdxToRow( int idx ) const; void outContent( OutputByteStream &stream ) const; }; struct Table : public CompoundFotElement { Table( CompoundFotElement *parent = NULL ) : CompoundFotElement( parent ), beforeRowBorder(), afterRowBorder(), beforeColumnBorder(), afterColumnBorder(), CurCell( NULL ), displayAlignment( symbolStart ), CurTablePart( NULL ), NoTablePartsSeen( true ) {} Vector TableParts; TableBeforeRowBorder beforeRowBorder; TableAfterRowBorder afterRowBorder; TableBeforeColumnBorder beforeColumnBorder; TableAfterColumnBorder afterColumnBorder; Length tableWidth; Symbol displayAlignment; Length startIndent; virtual const char *name() const { return "Table"; } virtual FotElement &child( size_t idx ) { assert( idx < TableParts.size() ); return TableParts[idx]; } void resolveBorders( Vector *preceedingRows, Vector &rows, Vector *followingRows, unsigned startingRowIdx, bool hasFirstTableRow, bool hasLastTableRow ); void begin(); virtual void open( TeXFOTBuilder &builder ) { builder.pushFotElementState(); CompoundFotElement::open( builder ); builder.curFotElementState().EnforcingStructure = true; } virtual void close( TeXFOTBuilder &builder ) { CompoundFotElement::close( builder ); builder.popFotElementState(); } void end( TeXFOTBuilder &builder ); Vector &curRows() { assert( CurRows != NULL ); return *CurRows; } TablePart &curTablePart() { assert( CurTablePart != NULL ); return *CurTablePart; } Cell &curCell() { assert( CurCell != NULL ); return *CurCell; } TablePart *CurTablePart; Cell *CurCell; Vector *CurRows; bool NoTablePartsSeen; protected: void outContent( OutputByteStream &stream ) const; }; long computeLengthSpec( const LengthSpec &spec ) const; const Format &curFormat() const { assert( FormatStack.size() > 0 ); return FormatStack.back(); } Table &curTable() { assert( TableStack.size() > 0 ); return TableStack.back(); } FotElementState &curFotElementState() { assert( FotElementStateStack_.size() > 0 ); return FotElementStateStack_.back(); } void pushFotElementState() { FotElementStateStack_.resize(FotElementStateStack_.size() + 1 ); } void popFotElementState() { assert( FotElementStateStack_.size() > 0 ); FotElementStateStack_.resize(FotElementStateStack_.size() - 1 ); } void pushOs( OutputByteStream *to ); void popOs(); void elementStart( FotObjectClassType objectClassType ); OutputByteStream *fileout_; private: // Variables. Vector osStack_; StrOutputByteStream stringout_; Messenger *mgr_; bool preserveSdata_; int inMath_; #ifdef OUTLINES int needToCollect() {return inHeading_;} void addHeadedText(const Char * s, size_t n); void addHeadedText(const StringC p); struct ParHead { ParHead() : isHeaded_(false),level_(0),previous_(0){} ParHead(bool h): isHeaded_(h),level_(0),previous_(0){} ParHead(bool h,long l) : isHeaded_(h),level_(l),previous_(0){} bool isHeaded_; long level_; StringC headingText_; size_t previous_; }; StringC protectedChar_; //for special tex Chars bool headingSet_; bool inHeading_; StringC return_; Vector parStack_; size_t lastHeaded_; #endif Vector DisplayBoxLevels; Vector FormatStack; Format NextFormat; Vector TableStack; Vector FotElementStateStack_; // Functions. OutputByteStream &os(); void insertAtomic(const char *name); void insertAtomic(FotElement &fotElement); void startGroup(FotElement &fotElement); void startGroup(const char *name, String *output = NULL ); void endGroup(const char *name, String *output = NULL ); void closeopenBrace(const char *name, String *output = NULL ); void startBrace(const char *name, String *output = NULL ); void endBrace(const char *name, String *output = NULL ); void startSimpleGroup(const char *name, String *output = NULL ); void endSimpleGroup(String *output = NULL); void endGroup() {}; void setlength(const char *,Length); void set(const char *,const StringC &); void set(const char *,const GroveString &); void set(const char *,Symbol); void set(const char *,const LengthSpec &); void set(const char *,double); void set(const char *,const DeviceRGBColor &); void set(const char *,bool); void set(const char *,long); void set(const char *,long unsigned int); void set(const char *name,unsigned int n) { set(name, (unsigned long)n); } void set(const char *,PublicId); void setletter2(const char *,Letter2); void set(const char *,const DisplaySpace &); void set(const char *,const GlyphId &); void set(const char *,const OptLengthSpec &); void set(const char *,const InlineSpace &); void set(const char *,const OptInlineSpace &); // Structures for non-inherited characteristics, // in the order specified in style/FOTBuilder.h. void setDisplayNIC(const DisplayNIC &); void setInlineNIC(const InlineNIC &); void setDisplayGroupNIC(const DisplayGroupNIC &); void setExternalGraphicNIC(const ExternalGraphicNIC &); void setBoxNIC(const BoxNIC &); void setRuleNIC(const RuleNIC &); void setLeaderNIC(const LeaderNIC &); void setParagraphNIC(const ParagraphNIC &); void setCharacterNIC(const CharacterNIC &); void setLineFieldNIC(const LineFieldNIC &); void setTableNIC(const TableNIC &); void setTablePartNIC(const TablePartNIC &); void setTableColumnNIC(const TableColumnNIC &); void setTableCellNIC(const TableCellNIC &); void setGridNIC(const GridNIC &); void setGridCellNIC(const GridCellNIC &); void dumpInherited(); void message(const MessageType0 &); static ParHead& top(Vector& s); static ParHead* ptrTop(Vector& s); static void pop(Vector& s); static void push(Vector& s, ParHead p); }; #ifdef OUTLINES // Stack Utilities TeXFOTBuilder::ParHead& TeXFOTBuilder::top (Vector &s) { //cerr << "top" < &s) { //cerr << "top" < &s){ //cerr << "popping" <<'\n'; s.resize(s.size() - 1); } void TeXFOTBuilder::push(Vector &s,TeXFOTBuilder::ParHead p ){ //cerr << "pushing" <= 0); parStack_[top(parStack_).previous_].headingText_.append(s,n); } } void TeXFOTBuilder::addHeadedText(const StringC p){ if (top(parStack_).isHeaded_){ top(parStack_).headingText_ += p; } else{ assert(((top(parStack_).previous_)) >= 0); parStack_[top(parStack_).previous_].headingText_ += p; } } #endif #ifdef TEXDEBUG TeXFOTBuilder *TeXFOTBuilder::CurInstance = NULL; #endif // --------- OutputByteStream operators -------------------------------------- OutputByteStream &operator<<( OutputByteStream &os, LengthInPoints length ) { char buf[32]; int i; sprintf( buf, "%li.%.3i%n", long(length.l)/1000, abs(long(length.l)%1000), &i ); while( buf[--i] == '0' ) {}; if( buf[i] == '.' ) i--; buf[i+1] = '\0'; os << buf << "\\p@"; return os; } // --------- TeXFOTBuilder::FotElement --------------------------------------- void TeXFOTBuilder::FotElement::open( TeXFOTBuilder &builder ) { builder.curFotElementState().IsOpen = true; if( parent() ) parent()->childJustOpened( *this ); if( builder.curFotElementState().CurNodeInfoProlog.size() > 0 ) { NodeInfoProlog = builder.curFotElementState().CurNodeInfoProlog; builder.curFotElementState().CurNodeInfoProlog.resize( 0 ); } } void TeXFOTBuilder::FotElement::close( TeXFOTBuilder &builder ) { if( parent() ) parent()->childJustClosed( *this ); else builder.curFotElementState().IsOpen = false; } TeXFOTBuilder::FotElement *TeXFOTBuilder::FotElement::lastClosed_() { return parent() ? parent()->lastClosed_() : (FotElement*)NULL; } // --------- TeXFOTBuilder Standard Display/Element Handling ----------------- void TeXFOTBuilder::elementStart( FotObjectClassType objectClassType ) { NextFormat.FotObjectClass = objectClassType; FormatStack.push_back( NextFormat ); } void TeXFOTBuilder::start() { NextFormat.FotObjectClass = oc_Unknown; FormatStack.push_back( NextFormat ); } void TeXFOTBuilder::end() { assert( FormatStack.size() > 0 ); FormatStack.resize( FormatStack.size()-1 ); assert( FormatStack.size() > 0 ); NextFormat = FormatStack.back(); } // --------- TeXFOTBuilder Misc ---------------------------------------------- long TeXFOTBuilder::computeLengthSpec( const LengthSpec &spec ) const { if( spec.displaySizeFactor == 0.0 ) { return spec.length; } else { double tem = curFormat().FotCurDisplaySize * spec.displaySizeFactor; return spec.length + long( tem >= 0.0 ? tem +.5 : tem - .5 ); } } // --------- TeXFOTBuilder::Table --------------------------------------------- void TeXFOTBuilder::Table::resolveBorders ( Vector *preceedingRows, Vector &rows, Vector *, unsigned startingRowIdx, bool hasFirstTableRow, bool hasLastTableRow ) { bool isFirstRow; bool isLastRow; bool isFirstColumn; bool isLastColumn; Cell *cell = NULL; size_t r, c, rr, cc; bool leftEdge, topEdge; #ifdef TEXDEBUG *TeXFOTBuilder::curInstance().fileout_ << "RESOLVING_BORDERS\n"; #endif for( r = 0; r < rows.size(); r++ ) { for( c = 0; c < rows[r].Cells.size()-1; c++ ) { cell = &rows[r].Cells[c]; if( cell->OverlappingCell == NULL ) { for( rr = r; rr < r + cell->nRowsSpanned; rr++ ) { for( cc = c, leftEdge = true; cc < c + cell->nColumnsSpanned; cc++ ) { rows[rr].Cells[cc].OverlappingCell = cell; rows[rr].Cells[cc].TeXTableRowIdx = rr + startingRowIdx; rows[rr].Cells[cc].TeXTableColumnIdx = cc; } } } } } for( r = 0; r < rows.size(); r++ ) { #ifdef TEXDEBUG *TeXFOTBuilder::curInstance().fileout_ << "ROW " << r << "\n"; #endif for( c = 0; c < rows[r].Cells.size() - 1; c++ ) { #ifdef TEXDEBUG *TeXFOTBuilder::curInstance().fileout_ << " COL " << c << "\n"; #endif cell = &rows[r].Cells[c]; if( cell->OverlappingCell == cell ) { for( rr = r, topEdge = true; rr < r + cell->nRowsSpanned; rr++ ) { isFirstRow = ( rr == 0 ) ? true : false; isLastRow = ( rr == rows.size() - 1 ) ? true : false; for( cc = c, leftEdge = true; cc < c + cell->nColumnsSpanned; cc++ ) { isFirstColumn = ( cc == 0 ) ? true : false; isLastColumn = ( cc == rows[rr].Cells.size() - 2 ) ? true : false; if( leftEdge ) if( isFirstColumn ) { #ifdef TEXDEBUG *TeXFOTBuilder::curInstance().fileout_ << "LEFT_TABLE_BORDER_RES \n"; #endif cell->beforeColumnBorder.resolve( beforeColumnBorder ); } else cell->beforeColumnBorder.resolve ( rows[rr].Cells[cc-1].OverlappingCell->afterColumnBorder ); if( topEdge ) if( isFirstRow && hasFirstTableRow ) cell->beforeRowBorder.resolve( beforeRowBorder ); else if( !isFirstRow ) cell->beforeRowBorder.resolve ( rows[rr-1].Cells[cc].OverlappingCell->afterRowBorder ); else if( preceedingRows != NULL ) { assert( preceedingRows->size() > 0 ); cell->beforeRowBorder.resolve ( (*preceedingRows)[preceedingRows->size()-1].Cells[cc] .OverlappingCell->afterRowBorder ); } if( isLastColumn ) cell->afterColumnBorder.resolve( afterColumnBorder ); if( isLastRow && hasLastTableRow ) cell->afterRowBorder.resolve( afterRowBorder ); leftEdge = false; } topEdge = false; } } } } } void TeXFOTBuilder::Table::begin() { CurCell = NULL; NoTablePartsSeen = true; TableParts.resize( 0 ); TableParts.resize( 1 ); TableParts.back().setSiblingSeqIdx( 0 ); TableParts.back().setParent( this ); TableParts.back().begin(); } void TeXFOTBuilder::Table::end( TeXFOTBuilder &builder ) { bool firstPart, lastPart, hasHeader, hasBody, hasFooter; for( size_t i = 0; i < TableParts.size(); i++ ) { firstPart = ( i == 0 ) ? true : false; lastPart = ( i == TableParts.size() - 1 ) ? true : false; TablePart &tablePart = TableParts[i]; tablePart.normalizeRows(); hasHeader = tablePart.Header.size() > 0 ? true : false; hasBody = tablePart.Body.size() > 0 ? true : false; hasFooter = tablePart.Footer.size() > 0 ? true : false; if( hasHeader ) resolveBorders( (Vector*)NULL, tablePart.Header, hasBody ? &tablePart.Body : (Vector*)NULL, 0, firstPart ? true : false, false ); resolveBorders( hasHeader ? &tablePart.Header : (Vector*)NULL, tablePart.Body, hasFooter ? &tablePart.Footer : (Vector*)NULL, tablePart.Header.size(), hasHeader ? false : true, hasFooter ? false : true ); if( hasFooter ) resolveBorders( hasBody ? &tablePart.Body : (Vector*)NULL, tablePart.Footer, (Vector*)NULL, tablePart.Header.size() + tablePart.Body.size(), false, lastPart ? true : false ); if( tablePart.needsColumnReprocessing ) tablePart.processColumns( builder ); tablePart.computeOverridingTeXCharacteristics(); } } void TeXFOTBuilder::Table::outContent( OutputByteStream &stream ) const { for( size_t i = 0; i < TableParts.size(); i++ ) TableParts[i].out( stream ); }; // --------- TeXFOTBuilder::TablePart ----------------------------------------- void TeXFOTBuilder::TablePart::begin() { Columns.resize( 0 ); Header.resize( 0 ); Body.resize( 0 ); Footer.resize( 0 ); columnsProcessed = false; needsColumnReprocessing = false; parentTable().CurRows = &Body; parentTable().CurTablePart = this; } TeXFOTBuilder::FotElement &TeXFOTBuilder::TablePart::child( size_t idx ) { if( idx < Header.size() ) return Header[idx]; idx -= Header.size(); if( idx < Body.size() ) return Body[idx]; assert( idx < Footer.size() ); idx -= Body.size(); return Footer[idx]; } void TeXFOTBuilder::TablePart::computeOverridingTeXCharacteristics() { Vector *rows; for( int step = 0; step < 3; step++ ) { switch( step ) { case 0: rows = &Header; break; case 1: rows = &Body; break; default: rows = &Footer; } for( size_t r = 0; r < rows->size(); r++ ) { if( (*rows)[r].Cells.size()-1 > Columns.size() ) Columns.resize( (*rows)[r].Cells.size()-1 ); for( size_t c = 0; c < (*rows)[r].Cells.size()-1; c++ ) { if( (*rows)[r].Cells[c].singleColumnBeforeColumnBorderPresent() ) Columns[c].defaultTeXLeftBorder++; if( (*rows)[r].Cells[c].singleColumnAfterColumnBorderPresent() ) Columns[c].defaultTeXRightBorder++; } } } #ifdef TEXDEBUG for( int step = 0; step < 3; step++ ) { switch( step ) { case 0: rows = &Header; break; case 1: rows = &Body; break; default: rows = &Footer; } for( size_t r = 0; r < rows->size(); r++ ) { *TeXFOTBuilder::curInstance().fileout_ << "\nROW " << ( step == 0 ? "Header" : ( step == 1 ? "Body" : "Footer" ) ) << "\n"; for( size_t c = 0; c < (*rows)[r].Cells.size()-1; c++ ) { *TeXFOTBuilder::curInstance().fileout_ << "\n CELL " << c << " LB: " << (*rows)[r].Cells[c].beforeColumnBorder.borderPresent << " RB: " << (*rows)[r].Cells[c].beforeColumnBorder.borderPresent << " OVERLAPPED: " << ( (*rows)[r].Cells[c].isOverlapped() ? "YES" : "NO" ) << "\n"; } } } #endif size_t TeXTableRowsNum = Header.size() + Body.size() + Footer.size(); for( size_t c = 0; c < Columns.size(); c++ ) { Columns[c].defaultTeXLeftBorder = ((size_t)Columns[c].defaultTeXLeftBorder)*2 >= TeXTableRowsNum ? 1 : 0; Columns[c].defaultTeXRightBorder = ((size_t)Columns[c].defaultTeXRightBorder)*2 >= TeXTableRowsNum ? 1 : 0; } for( int step = 0; step < 3; step++ ) { switch( step ) { case 0: rows = &Header; break; case 1: rows = &Body; break; default: rows = &Footer; } for( size_t r = 0; r < rows->size(); r++ ) { for( size_t c = 0; c < (*rows)[r].Cells.size()-1; c++ ) { if( !(*rows)[r].Cells[c].isOverlapped() ) { (*rows)[r].Cells[c].computeOverridingTeXColumnBorders( *this ); } else { (*rows)[r].Cells[c].computeTeXRowSpanFiller( *this ); } } } } } void TeXFOTBuilder::TablePart::processColumns( TeXFOTBuilder &builder ) { long totalNonproportionalWidth = 0L; double totalProportionalUnits = 0.0; size_t nonWidthCellsNum = 0; for( size_t i = 0; i < Columns.size(); i++ ) { if( Columns[i].hasWidth ) { if( Columns[i].width.tableUnitFactor ) { totalProportionalUnits += Columns[i].width.tableUnitFactor; } else { Columns[i].computedWidth = builder.computeLengthSpec( Columns[i].width ); totalNonproportionalWidth += Columns[i].computedWidth; } } else nonWidthCellsNum++; } if( totalProportionalUnits > 0 ) totalProportionalUnits += nonWidthCellsNum; // cannot predict width of some cells, but their width is needed to // compute widths of proportional cells - force non-with cells to be 1 table-unit double proportionalUnit = 0.0; if( totalProportionalUnits ) proportionalUnit = ( parentTable().tableWidth - totalNonproportionalWidth ) / totalProportionalUnits; for( size_t i = 0; i < Columns.size(); i++ ) { if( Columns[i].hasWidth ) { if( Columns[i].width.tableUnitFactor ) Columns[i].computedWidth = long(proportionalUnit * Columns[i].width.tableUnitFactor); } else if( totalProportionalUnits > 0 ) Columns[i].computedWidth = long(proportionalUnit); } // Compute display size of the column for( size_t i = 0; i < Columns.size(); i++ ) { if (Columns[i].computedWidth > 0) { Columns[i].displaySize = Columns[i].computedWidth; if (Columns[i].defaultCellBeforeColumnMargin != lengthUnspecified) Columns[i].displaySize -= Columns[i].defaultCellBeforeColumnMargin; if (Columns[i].defaultCellAfterColumnMargin != lengthUnspecified) Columns[i].displaySize -= Columns[i].defaultCellAfterColumnMargin; } } columnsProcessed = true; } void TeXFOTBuilder::TablePart::outContent( OutputByteStream &stream ) const { stream << "\\TeXTable%\n{" << LengthInPoints( parentTable().tableWidth ) << "}{" << Columns.size() << "}{"; for( size_t i = 0; i < Columns.size(); i++ ) { #ifdef TEXDEBUG stream << "\nCOLUMN " << i << " DEF_LEFT_B: " << Columns[i].defaultTeXLeftBorder << " DEF_RIGHT_B: " << Columns[i].defaultTeXRightBorder << "\n"; #endif if( i == 0 && Columns[i].defaultTeXLeftBorder ) stream << '|'; //Cell before margin if( Columns[i].computedWidth > 0 ) { char alignment; switch( Columns[i].displayAlignment ) { case symbolOutside: case symbolEnd: alignment = 'U'; break; case symbolCenter: alignment = 'Y'; break; case symbolInside: case symbolStart: default: alignment = 'T'; break; } stream << alignment << '{' << LengthInPoints(Columns[i].defaultCellBeforeColumnMargin) << "}{" << LengthInPoints( Columns[i].displaySize ) << "}{" << LengthInPoints(Columns[i].defaultCellAfterColumnMargin) << '}'; } else { stream << "@{\\hspace{" << LengthInPoints(Columns[i].defaultCellBeforeColumnMargin) << "}}"; switch( Columns[i].displayAlignment ) { case symbolOutside: case symbolEnd: stream << 'r'; break; case symbolCenter: stream << 'c'; break; case symbolInside: case symbolStart: default: stream << 'l'; break; } stream << "@{\\hspace{" << LengthInPoints(Columns[i].defaultCellAfterColumnMargin) << "}}"; } if( Columns[i].defaultTeXRightBorder ) stream << '|'; } stream << "}%\n"; stream << HeaderProlog; const Row *recentRow = NULL; for( size_t i = 0; i < Header.size(); i++ ) { Row::outVerticalBorders( recentRow, &Header[i], stream ); Header[i].out( stream ); recentRow = &Header[i]; } stream << HeaderEpilog; for( size_t i = 0; i < Body.size(); i++ ) { Row::outVerticalBorders( recentRow, &Body[i], stream ); Body[i].out( stream ); recentRow = &Body[i]; } stream << FooterProlog; for( size_t i = 0; i < Footer.size(); i++ ) { Row::outVerticalBorders( recentRow, &Footer[i], stream ); Footer[i].out( stream ); recentRow = &Footer[i]; } stream << FooterEpilog; if( recentRow ) Row::outVerticalBorders( recentRow, NULL, stream ); stream << "\\endTeXTable" << "{}%\n"; } void TeXFOTBuilder::TablePart::normalizeRows() { size_t maxCellsInRow = Columns.size()+1; Vector *rows; for( int step = 0; step < 2; step++ ) { for( int rowType = 0; rowType < 3; rowType++ ) { switch( rowType ) { case 0: rows = &Header; break; case 1: rows = &Body; break; default: rows = &Footer; } for( size_t r = 0; r < rows->size(); r++ ) { if( step == 0 ) { if( (*rows)[r].Cells.size() > 1 ) { size_t lastCellIdx = (*rows)[r].Cells.size()-2; Cell &lastCell = (*rows)[r].Cells[lastCellIdx]; if( !lastCell.missing && lastCellIdx+lastCell.nColumnsSpanned+1 > maxCellsInRow ) maxCellsInRow = lastCellIdx+lastCell.nColumnsSpanned+1; } } else if( (*rows)[r].Cells.size() < maxCellsInRow ) (*rows)[r].Cells.resize( maxCellsInRow ); } } } } // --------- TeXFOTBuilder::Row ----------------------------------------------- void TeXFOTBuilder::Row::outContent( OutputByteStream &stream ) const { bool first = true; for( size_t i = 0; i + 1 < Cells.size(); i++ ) { /* Output the overlapped cells in a row span but not those in a column span. If the overlapping cell is both row and column spanning only output the first cell in the row. */ bool outputCell = !Cells[i].isOverlapped() || (Cells[i].OverlappingCell->nRowsSpanned > 1 && Cells[i].OverlappingCell->TeXTableColumnIdx == i); if( !first ) { if (outputCell) stream << "&"; } else first = false; if (outputCell) Cells[i].out( stream ); } } void TeXFOTBuilder::Row::outVerticalBorders ( const TeXFOTBuilder::Row *upperRow, const TeXFOTBuilder::Row *lowerRow, OutputByteStream &stream ) { assert( upperRow != NULL || lowerRow != NULL ); size_t colNum = upperRow ? upperRow->Cells.size()-1 : lowerRow->Cells.size()-1; int borderStartIdx = -1; int borderEndIdx; for( size_t i = 0; i < colNum; i++ ) { #ifdef TEXDEBUG stream << "\nROW: " << "COL " << i << " " << ( ( ( upperRow && upperRow->Cells[i].singleRowAfterRowBorderPresent() ) || ( lowerRow && lowerRow->Cells[i].singleRowBeforeRowBorderPresent() ) ) ? "Border" : "No Border" ); #endif if( ( upperRow && upperRow->Cells[i].singleRowAfterRowBorderPresent() ) || ( lowerRow && lowerRow->Cells[i].singleRowBeforeRowBorderPresent() ) ) { if( borderStartIdx < 0 ) borderStartIdx = i; if( i == colNum-1 ) { borderEndIdx = i; goto OUT_BORDER; } } else if( borderStartIdx > -1 ) { borderEndIdx = i-1; goto OUT_BORDER; } continue; OUT_BORDER: if( borderStartIdx == 0 && i == colNum-1 ) stream << "\\Hline%\n"; else stream << "\\Cline{" << borderStartIdx+1 << '-' << borderEndIdx+1 << "}%\n"; borderStartIdx = -1; } } // --------- TeXFOTBuilder::Cell ---------------------------------------------- void TeXFOTBuilder::Cell::outProlog( OutputByteStream &stream ) const { if ( nColumnsSpanned > 1 || needsTeXColumnOverride || (rowAlignment != symbolNotApplicable && rowAlignment != symbolStart ) || cellBackground ) { char color_buf[32]; if ( cellBackground ) { double r,g,b; r = (double)backgroundColor.red / 255.0; g = (double)backgroundColor.green / 255.0; b = (double)backgroundColor.blue / 255.0; sprintf( color_buf, "{%.2f, %.2f, %.2f}", r, g, b ); } else strcpy( color_buf, ""); stream << "\\TeXTableCell{" << nColumnsSpanned << "}{"; if( beforeColumnBorder.borderPresent ) stream << '|'; if (displaySize) { char alignment; switch( effectiveAlignment ) { case symbolOutside: case symbolEnd: switch (rowAlignment) { case symbolOutside: case symbolEnd: alignment = cellBackground ? '3' : 'M'; break; case symbolCenter: alignment = cellBackground ? '6' : 'J'; break; case symbolInside: case symbolStart: default: alignment = cellBackground ? '9' : 'U'; break; } break; case symbolCenter: switch (rowAlignment) { case symbolOutside: case symbolEnd: alignment = cellBackground ? '2' : 'N'; break; case symbolCenter: alignment = cellBackground ? '5' : 'H'; break; case symbolInside: case symbolStart: default: alignment = cellBackground ? '8' : 'Y'; break; } break; case symbolInside: case symbolStart: default: switch (rowAlignment) { case symbolOutside: case symbolEnd: alignment = cellBackground ? '1' : 'B'; break; case symbolCenter: alignment = cellBackground ? '4' : 'G'; break; case symbolInside: case symbolStart: default: alignment = cellBackground ? '7' : 'T'; break; } break; } stream << alignment << '{' << LengthInPoints(effectiveBeforeColumnMargin) << "}{" << LengthInPoints(displaySize) << "}{" << LengthInPoints(effectiveAfterColumnMargin) << '}' << color_buf; } else { //cell-before-margin stream << "@{\\hspace{" << LengthInPoints(effectiveBeforeColumnMargin) << "}}"; if ( cellBackground ) stream << ">{\\columncolor[rgb]" << color_buf << "}"; switch (rowAlignment) { case symbolOutside: case symbolEnd: stream << 'r'; break; case symbolCenter: stream << 'c'; break; case symbolInside: case symbolStart: default: stream << 'l'; break; } //cell-after-margin stream << "@{\\hspace{" << LengthInPoints(effectiveAfterColumnMargin) << "}}"; } if( afterColumnBorder.borderPresent ) stream << '|'; stream << "}%\n{%\n"; } CompoundFotElement::outProlog( stream ); } void TeXFOTBuilder::Cell::outEpilog( OutputByteStream &stream ) const { CompoundFotElement::outEpilog( stream ); if ( nColumnsSpanned > 1 || needsTeXColumnOverride || (rowAlignment != symbolNotApplicable && rowAlignment != symbolStart ) || cellBackground ) stream << "}%\n"; } void TeXFOTBuilder::Cell::computeOverridingTeXColumnBorders( TablePart &tablePart ) { StrOutputByteStream str; if( tablePart.Columns[TeXTableColumnIdx].defaultTeXLeftBorder != beforeColumnBorder.borderPresent ) str << "\\def\\TeXTableCellBeforeColumnBorder{" << beforeColumnBorder.borderPresent << '}'; if( tablePart.Columns[TeXTableColumnIdx+nColumnsSpanned-1].defaultTeXRightBorder != afterColumnBorder.borderPresent ) str << "\\def\\TeXTableCellAfterColumnBorder{" << afterColumnBorder.borderPresent << '}'; String s; str.extractString( s ); Characteristics += s; } void TeXFOTBuilder::Cell::computeTeXRowSpanFiller( TablePart &tablePart ) { StrOutputByteStream str; if ( isOverlapped() && OverlappingCell->nRowsSpanned > 1 ) { // This isn't output automatically for overlapped cell str << "\\def\\ColumnIndex{" << TeXTableColumnIdx <<'}'; str << "\\def\\TeXRowSpanFiller{1}"; } String s; str.extractString( s ); Characteristics += s; } void TeXFOTBuilder::Cell::computeEffectiveTeXColumnMargins( TablePart &tablePart ) { effectiveBeforeColumnMargin = beforeColumnMargin != lengthUnspecified ? beforeColumnMargin : tablePart.Columns[TeXTableColumnIdx].defaultCellBeforeColumnMargin; if( effectiveBeforeColumnMargin != lengthUnspecified && (tablePart.Columns[TeXTableColumnIdx].defaultCellBeforeColumnMargin != effectiveBeforeColumnMargin || nColumnsSpanned > 1) ) needsTeXColumnOverride = true; effectiveAfterColumnMargin = afterColumnMargin != lengthUnspecified ? afterColumnMargin : tablePart.Columns[TeXTableColumnIdx].defaultCellAfterColumnMargin; if( effectiveAfterColumnMargin != lengthUnspecified && (tablePart.Columns[TeXTableColumnIdx].defaultCellAfterColumnMargin != effectiveAfterColumnMargin || nColumnsSpanned > 1) ) needsTeXColumnOverride = true; } void TeXFOTBuilder::Cell::computeEffectiveTeXCellWidth( TablePart &tablePart ) { displaySize = 0; for (unsigned i = 0; i < nColumnsSpanned; i++ ) displaySize += tablePart.Columns[TeXTableColumnIdx + i].computedWidth; if (displaySize) displaySize -= effectiveBeforeColumnMargin + effectiveAfterColumnMargin; } bool TeXFOTBuilder::Cell::singleRowBeforeRowBorderPresent() const { assert( OverlappingCell != NULL ); if( OverlappingCell->TeXTableRowIdx == TeXTableRowIdx ) return OverlappingCell->beforeRowBorder.borderPresent; else return false; } bool TeXFOTBuilder::Cell::singleRowAfterRowBorderPresent() const { assert( OverlappingCell != NULL ); assert( TeXTableRowIdx > -1 ); if( OverlappingCell->TeXTableRowIdx + OverlappingCell->nRowsSpanned == ((unsigned)TeXTableRowIdx)+1 ) return OverlappingCell->afterRowBorder.borderPresent; else return false; } bool TeXFOTBuilder::Cell::singleColumnBeforeColumnBorderPresent() const { assert( OverlappingCell != NULL ); assert( TeXTableRowIdx > -1 ); if( OverlappingCell->TeXTableColumnIdx == TeXTableColumnIdx ) return OverlappingCell->beforeColumnBorder.borderPresent; else return false; } bool TeXFOTBuilder::Cell::singleColumnAfterColumnBorderPresent() const { assert( OverlappingCell != NULL ); if( OverlappingCell->TeXTableColumnIdx + (int)OverlappingCell->nColumnsSpanned == TeXTableColumnIdx+1 ) return OverlappingCell->afterColumnBorder.borderPresent; else return false; } // --------- TeXFOTBuilder::Border -------------------------------------------- void TeXFOTBuilder::Border::setFromFot( TeXFOTBuilder &builder ) { const TeXFOTBuilder::Format &f = builder.curFormat(); borderPriority = f.FotBorderPriority; borderPresent = f.FotBorderPresent; lineThickness = f.FotLineThickness; lineRepeat = f.FotLineRepeat; lineSep = f.FotLineSep; } void TeXFOTBuilder::Border::resolve( Border &adjacentBorder ) { if( adjacentBorder.borderPriority > borderPriority || ( adjacentBorder.borderPriority == borderPriority && !adjacentBorder.cellBorder && adjacentBorder.borderPresent ) ) { lineThickness = adjacentBorder.lineThickness; borderPresent = adjacentBorder.borderPresent; lineRepeat = adjacentBorder.lineRepeat; lineSep = adjacentBorder.lineSep; if( adjacentBorder.cellBorder ) adjacentBorder.borderPresent = false; } #ifdef TEXDEBUG *TeXFOTBuilder::curInstance().fileout_ << "RESOLVE_RESULT: " << borderPresent << "\n"; #endif } // --------- End Tables ------------------------------------------------------- #define MAYBESET(name,value,default) (value!=default?(set(name,value),0):0) // // Get the current output stream. // inline OutputByteStream &TeXFOTBuilder::os() { return *(osStack_.back()); } void TeXFOTBuilder::pushOs(OutputByteStream *to) { osStack_.push_back( to ); } void TeXFOTBuilder::popOs() { assert( osStack_.size() > 0 ); osStack_.resize( osStack_.size() - 1); } // // Define an output operator for StringC // // FIXME This won't work for Unicode characters. static OutputByteStream &operator<<(OutputByteStream &os, const StringC &s) { for (size_t i = 0; i < s.size(); i++) os << char(s[i]); return os; } // // Define an output operator for GroveString // static OutputByteStream &operator<<(OutputByteStream &os, const GroveString &s) { for (size_t i = 0; i < s.size(); i++) os << char(s[i]); return os; } static OutputByteStream &operator<<(OutputByteStream &os, double d) { char buf[64]; sprintf(buf, "%g", d); return os << buf; } FOTBuilder *makeTeXFOTBuilder(OutputByteStream *os, Messenger *mgr, const FOTBuilder::Extension *&ext) { static const TeXFOTBuilder::PageFloatFlowObj pageFloat; static const TeXFOTBuilder::PageFootnoteFlowObj pageFootnote; static const FOTBuilder::Extension extensions[] = { { "UNREGISTERED::Sebastian Rahtz//Flow Object Class::page-float", 0, 0, 0, 0, &pageFloat }, { "UNREGISTERED::Sebastian Rahtz//Flow Object Class::page-footnote", 0, 0, 0, 0, &pageFootnote }, { "UNREGISTERED::James Clark//Characteristic::page-number-format", 0, (void (FOTBuilder::*)(const StringC &))&TeXFOTBuilder::setPageNumberFormat, 0, 0 }, { "UNREGISTERED::James Clark//Characteristic::page-number-restart?", (void (FOTBuilder::*)(bool))&TeXFOTBuilder::setPageNumberRestart, 0, 0 }, { "UNREGISTERED::James Clark//Characteristic::page-n-columns", 0, 0, (void (FOTBuilder::*)(long))&TeXFOTBuilder::setPageNColumns, 0 }, { "UNREGISTERED::James Clark//Characteristic::page-column-sep", 0, 0, 0, (void (FOTBuilder::*)(FOTBuilder::Length))&TeXFOTBuilder::setPageColumnSep, }, { "UNREGISTERED::James Clark//Characteristic::page-balance-columns?", (void (FOTBuilder::*)(bool))&TeXFOTBuilder::setPageBalanceColumns, 0, 0 }, { "UNREGISTERED::OpenJade//Characteristic::page-two-side?", (void (FOTBuilder::*)(bool))&TeXFOTBuilder::setPageTwoSide, 0, 0 }, { "UNREGISTERED::OpenJade//Characteristic::two-side-start-on-right?", (void (FOTBuilder::*)(bool))&TeXFOTBuilder::setTwoSideStartOnRight, 0, 0 }, { "UNREGISTERED::James Clark//Characteristic::subscript-depth", 0, 0, 0, (void (FOTBuilder::*)(FOTBuilder::Length))&TeXFOTBuilder::setSubscriptDepth, }, { "UNREGISTERED::James Clark//Characteristic::over-mark-height", 0, 0, 0, (void (FOTBuilder::*)(FOTBuilder::Length))&TeXFOTBuilder::setOverMarkHeight, }, { "UNREGISTERED::James Clark//Characteristic::under-mark-depth", 0, 0, 0, (void (FOTBuilder::*)(FOTBuilder::Length))&TeXFOTBuilder::setUnderMarkDepth, }, { "UNREGISTERED::James Clark//Characteristic::superscript-height", 0, 0, 0, (void (FOTBuilder::*)(FOTBuilder::Length))&TeXFOTBuilder::setSuperscriptHeight, }, { "UNREGISTERED::James Clark//Characteristic::grid-row-sep", 0, 0, 0, (void (FOTBuilder::*)(FOTBuilder::Length))&TeXFOTBuilder::setGridRowSep, }, { "UNREGISTERED::James Clark//Characteristic::grid-column-sep", 0, 0, 0, (void (FOTBuilder::*)(FOTBuilder::Length))&TeXFOTBuilder::setGridColumnSep, }, { "UNREGISTERED::James Clark//Characteristic::heading-level", 0, 0, (void (FOTBuilder::*)(long))&TeXFOTBuilder::setHeadingLevel, 0 }, { "UNREGISTERED::James Clark//Characteristic::preserve-sdata?", (void (FOTBuilder::*)(bool))&TeXFOTBuilder::setPreserveSdata, 0, 0, 0, 0 }, { 0, 0, 0} }; ext = extensions; return new TeXFOTBuilder(os, mgr); } //////////////////////////////////////////////////////////////////////// // Constructor and Destructor //////////////////////////////////////////////////////////////////////// TeXFOTBuilder::TeXFOTBuilder(OutputByteStream *o, Messenger *mgr) : fileout_(o), mgr_(mgr), preserveSdata_(1) #ifdef OUTLINES ,inHeading_(0),headingSet_(0),lastHeaded_(0) #endif ,inMath_(0) { #ifdef TEXDEBUG CurInstance = this; #endif NextFormat.FotCurDisplaySize = Format::INITIAL_PAGE_SIZE(); FormatStack.push_back( NextFormat ); pushFotElementState(); pushOs(o); os() << "\\FOT{3}"; #ifdef OUTLINES return_ += Char('\n'); protectedChar_ += Char('\\'); protectedChar_ += Char('?'); #endif } TeXFOTBuilder::~TeXFOTBuilder() { os() << "\\endFOT{}"; } ////////////////////////////////////////////////////////////////////// // Atomic flow objects ////////////////////////////////////////////////////////////////////// #ifdef OUTLINES //FIXME Que faire avec les characteres > 256 #endif void TeXFOTBuilder::characters(const Char *s, size_t n) { for (; n > 0; n--, s++) { // Since TeX has only 256 characters // by default, two-byte characters // will need special treatment. if (*s > 255) { // set("Ch",(unsigned long)(*s)); // insertAtomic("Character"); // // Don't complicate matters, just give the character! os() << "\\Character{" << (unsigned long)(*s) << "}"; } else { // Otherwise, check for special // TeX escapes. switch(*s) { default: os() << char(*s); #ifdef OUTLINES if (needToCollect()){ addHeadedText(s,1); //top(parStack_).headingText_.append(s,1); } #endif break; case ' ': case '\t': if ( NextFormat.FotLines == symbolAsis ) os() << '~'; else os() << char(*s); #ifdef OUTLINES if (needToCollect()){ addHeadedText(s,1); //top(parStack_).headingText_.append(s,1); } #endif break; case '\\': case '^': case '_': case '~': os() << "\\char" << int(*s) << "{}"; #ifdef OUTLINES if (needToCollect()){ addHeadedText(s,1); //top(parStack_).headingText_.append(s,1); } #endif break; case '{': case '}': case '$': case '&': case '#': case '%': os() << "\\" << char(*s); #ifdef OUTLINES if (needToCollect()){ protectedChar_[1]=*s; addHeadedText(protectedChar_); //top(parStack_).headingText_ += protectedChar_; } #endif break; case '\r': os() << '\n'; #ifdef OUTLINES if (needToCollect()){ addHeadedText(return_); //top(parStack_).headingText_ += return_; } #endif break; case '\n': break; case '-': case '<': case '>': os() << char(*s); if (!inMath_) os() << "\\/"; // break ligatures break; } } } } void TeXFOTBuilder::character(const CharacterNIC &nic) { setCharacterNIC(nic); // insertAtomic("Character"); dumpInherited(); os() << "\\Character{" << (unsigned long)(nic.ch) << "}"; } void TeXFOTBuilder::paragraphBreak(const ParagraphNIC &nic) { setParagraphNIC(nic); insertAtomic("ParagraphBreak"); } void TeXFOTBuilder::externalGraphic(const ExternalGraphicNIC &nic) { setExternalGraphicNIC(nic); insertAtomic("ExternalGraphic"); } void TeXFOTBuilder::rule(const RuleNIC &nic) { setRuleNIC(nic); insertAtomic("Rule"); } void TeXFOTBuilder::alignmentPoint() { insertAtomic("AlignmentPoint"); } // page-number sosofo void TeXFOTBuilder::pageNumber() { insertAtomic("PageNumber"); } void TeXFOTBuilder::formattingInstruction (const StringC &instr) { os() << instr; } void TeXFOTBuilder::tableColumn(const TableColumnNIC &nic) { setTableColumnNIC(nic); if( nic.columnIndex >= curTable().curTablePart().Columns.size() ) curTable().curTablePart().Columns.resize( nic.columnIndex + 1 ); Column &col = curTable().curTablePart().Columns[nic.columnIndex]; col.isExplicit = true; col.hasWidth = nic.hasWidth; if( nic.hasWidth ) col.width = nic.width; if ( curFormat().FotDisplayAlignment != symbolNotApplicable ) col.displayAlignment = curFormat().FotDisplayAlignment; if ( curFormat().FotCellBeforeColumnMargin != lengthUnspecified ) col.defaultCellBeforeColumnMargin = curFormat().FotCellBeforeColumnMargin; if ( curFormat().FotCellAfterColumnMargin != lengthUnspecified ) col.defaultCellAfterColumnMargin = curFormat().FotCellAfterColumnMargin; insertAtomic("TableColumn"); } void TeXFOTBuilder::tableCellBeforeRowBorder() { start(); curTable().curCell().beforeRowBorder.setFromFot( *this ); insertAtomic( curTable().curCell().beforeRowBorder ); end(); } void TeXFOTBuilder::tableCellAfterRowBorder() { start(); curTable().curCell().afterRowBorder.setFromFot( *this ); insertAtomic( curTable().curCell().afterRowBorder ); end(); } void TeXFOTBuilder::tableCellBeforeColumnBorder() { start(); curTable().curCell().beforeColumnBorder.setFromFot( *this ); insertAtomic( curTable().curCell().beforeColumnBorder ); end(); } void TeXFOTBuilder::tableCellAfterColumnBorder() { start(); curTable().curCell().afterColumnBorder.setFromFot( *this ); insertAtomic( curTable().curCell().afterColumnBorder ); end(); } void TeXFOTBuilder::fractionBar() { insertAtomic("FractionBar"); } void TeXFOTBuilder::radicalRadical(const CharacterNIC &c) { setCharacterNIC(c); insertAtomic("RadicalRadical"); } void TeXFOTBuilder::radicalRadicalDefaulted() { insertAtomic("RadicalRadicalDefaulted"); } void TeXFOTBuilder::currentNodePageNumber(const NodePtr &node) { GroveString id; unsigned long ei; // FIX ME! // Only PARTIALLY supported -- I currently allow cross-references // only to elements. if (node->getId(id) == accessOK) { set("Label",id); } else if (node->elementIndex(ei) == accessOK) { set("Element",ei); } else { message(TeXMessages::unsupportedPageNumberNonElement); return; } unsigned long g = node->groveIndex(); if (g) { set("GroveIndex",g); } insertAtomic("CurrentNodePageNumber"); } ////////////////////////////////////////////////////////////////////// // Non-atomic flow objects ////////////////////////////////////////////////////////////////////// void TeXFOTBuilder::startSequence() { start(); if( !curFotElementState().enforcingStructure() ) startGroup("Seq"); } void TeXFOTBuilder::endSequence() { if( !curFotElementState().enforcingStructure() ) endGroup("Seq"); end(); } void TeXFOTBuilder::startLineField(const LineFieldNIC &nic) { start(); setLineFieldNIC(nic); startGroup("LineField"); } void TeXFOTBuilder::endLineField() { endGroup("LineField"); end(); } void TeXFOTBuilder::startParagraph(const ParagraphNIC &nic) { startDisplay( nic ); start(); setParagraphNIC(nic); #ifdef OUTLINES if (headingSet_){ startGroup("HeadPar"); headingSet_=0; inHeading_=1; top(parStack_).previous_=lastHeaded_; lastHeaded_=parStack_.size() - 1 ; //assert(lastHeaded_!=0); } else{ ParHead par(0); startGroup("Par"); push(parStack_,par); top(parStack_).previous_=lastHeaded_; } #else startGroup("Par"); #endif } void TeXFOTBuilder::endParagraph() { //FIXME : when (headed (level n) (headed level (+ n 1))) // text for level N+1 is emitted before text for level n // and outliens are out of sync. #ifdef OUTLINES if (top(parStack_).isHeaded_){ //cerr << "Writing\n"; //cerr << "length : "< 0 && DisplayBoxLevels.back() == FormatStack.size() ) { DisplayBoxLevels.resize( DisplayBoxLevels.size() - 1 ); endDisplay(); } } // Tables void TeXFOTBuilder::startTable(const TableNIC &nic) { #ifdef TEXDEBUG *fileout_ << "\nTABLE_START\n"; #endif TableStack.resize( TableStack.size() + 1 ); startDisplay( nic ); start(); setTableNIC(nic); Length curStartIndent = computeLengthSpec( curFormat().FotStartIndentSpec ); curTable().startIndent = curStartIndent; startGroup( curTable() ); curTable().open( *this); curTable().begin(); if ( curFormat().FotDisplayAlignment != symbolNotApplicable ) curTable().displayAlignment = curFormat().FotDisplayAlignment; if( nic.widthType == TableNIC::widthExplicit ) curTable().tableWidth = computeLengthSpec( nic.width ); else curTable().tableWidth = curFormat().FotCurDisplaySize - curStartIndent - computeLengthSpec( curFormat().FotEndIndentSpec ); curTable().curTablePart().open( *this ); } void TeXFOTBuilder::endTable() { assert( TableStack.size() > 0 ); #ifdef TEXDEBUG *fileout_ << "\nTABLE_END\n"; #endif if( curTable().NoTablePartsSeen ) { curTable().curTablePart().close( *this ); curTable().curTablePart().isExplicit = false; } curTable().end( *this ); curTable().close( *this ); curTable().out( os() ); endGroup(); end(); endDisplay(); TableStack.resize( TableStack.size() - 1 ); } // A call for each border is made immediately // after startTable(), each preceded by any appropriate set*() calls. void TeXFOTBuilder::tableBeforeRowBorder() { start(); curTable().beforeRowBorder.setFromFot( *this ); insertAtomic( curTable().beforeRowBorder ); end(); } void TeXFOTBuilder::tableAfterRowBorder() { start(); curTable().afterRowBorder.setFromFot( *this ); insertAtomic( curTable().afterRowBorder ); end(); } void TeXFOTBuilder::tableBeforeColumnBorder() { start(); curTable().beforeColumnBorder.setFromFot( *this ); insertAtomic( curTable().beforeColumnBorder ); end(); } void TeXFOTBuilder::tableAfterColumnBorder() { start(); curTable().afterColumnBorder.setFromFot( *this ); insertAtomic( curTable().afterColumnBorder ); end(); } void TeXFOTBuilder::startTablePartSerial(const TablePartNIC &nic) { #ifdef TEXDEBUG *fileout_ << "\nTABLE_PART_START\n"; #endif startDisplay( nic ); start(); setTablePartNIC(nic); if( curTable().NoTablePartsSeen ) { curTable().NoTablePartsSeen = false; /* begin() was arleady called from Table() and open() was called from startTable() */ } else { curTable().TableParts.resize( curTable().TableParts.size()+1 ); curTable().TableParts.back().setSiblingSeqIdx( curTable().TableParts.size()-1 ); curTable().TableParts.back().setParent( &curTable() ); curTable().TableParts.back().begin(); curTable().TableParts.back().open( *this ); } startGroup( curTable().curTablePart() ); } void TeXFOTBuilder::endTablePartSerial() { curTable().curTablePart().close( *this ); curTable().CurTablePart = NULL; endGroup(); end(); endDisplay(); #ifdef TEXDEBUG *fileout_ << "\nTABLE_PART_END\n"; #endif } void TeXFOTBuilder::startTableRow() { #ifdef TEXDEBUG *fileout_ << "\nTABLE_ROW_START\n"; #endif curTable().curRows().resize( curTable().curRows().size() + 1 ); curTable().curRows().back().setSiblingSeqIdx( curTable().curRows().size()-1 ); curTable().curRows().back().setParent( &curTable().curTablePart() ); startGroup( curTable().curRows().back() ); curTable().curRows().back().open( *this ); } void TeXFOTBuilder::endTableRow() { curTable().curRows().back().close( *this ); endGroup(); #ifdef TEXDEBUG *fileout_ << "\nTABLE_ROW_END\n"; #endif } /* * FIXME: We are getting one extra table cell in each * row whic nic.missing set . What is this ??? */ void TeXFOTBuilder::startTableCell(const TableCellNIC &nic) { #ifdef TEXDEBUG *fileout_ << "\nTABLE_CELL_START index: " << nic.columnIndex << " missing: " << nic.missing << "\n"; #endif setTableCellNIC(nic); TablePart &tp = curTable().curTablePart(); if( !tp.columnsProcessed ) tp.processColumns( *this ); Vector &Cells = curTable().curRows().back().Cells; { size_t curSize = Cells.size(); if( nic.columnIndex >= curSize ) { Cells.resize( nic.columnIndex + 1 ); for( size_t i = curSize; i < Cells.size(); i++ ) Cells[i].setSiblingSeqIdx( i ); } } Cell &cell = Cells[nic.columnIndex]; curTable().CurCell = &cell; cell.missing = nic.missing; cell.setParent( &curTable().curRows().back() ); if( nic.nColumnsSpanned != 1 ) cell.nColumnsSpanned = nic.nColumnsSpanned; if( nic.nRowsSpanned != 1 ) cell.nRowsSpanned = nic.nRowsSpanned; for( size_t i = nic.columnIndex; i < nic.columnIndex + nic.nColumnsSpanned; i++ ) { if( i >= tp.Columns.size() && !nic.missing ) { tp.Columns.resize( tp.Columns.size() + 1 ); tp.Columns.back().hasWidth = false; tp.Columns.back().isExplicit = false; tp.columnsProcessed = false; } } // We may need reprocessing if( !tp.columnsProcessed ) tp.processColumns( *this ); if ( !nic.missing ) { if ( NextFormat.FotCellRowAlignment != symbolNotApplicable ) cell.rowAlignment = NextFormat.FotCellRowAlignment; if ( NextFormat.FotCellBeforeColumnMargin != lengthUnspecified ) cell.beforeColumnMargin = NextFormat.FotCellBeforeColumnMargin; if ( NextFormat.FotCellAfterColumnMargin != lengthUnspecified ) cell.afterColumnMargin = NextFormat.FotCellAfterColumnMargin; if (NextFormat.FotCellBackground) { cell.cellBackground = true; cell.backgroundColor = NextFormat.FotBackgroundColor; } cell.TeXTableColumnIdx = nic.columnIndex; cell.effectiveAlignment = tp.Columns[nic.columnIndex].displayAlignment; cell.computeEffectiveTeXColumnMargins( tp ); cell.computeEffectiveTeXCellWidth( tp ); NextFormat.FotCurDisplaySize = cell.displaySize; } elementStart( oc_Cell ); startGroup( cell ); cell.open( *this ); } void TeXFOTBuilder::endTableCell() { curTable().curCell().close( *this ); curTable().CurCell = NULL; endGroup(); end(); #ifdef TEXDEBUG *fileout_ << "\nTABLE_CELL_END\n"; #endif } void TeXFOTBuilder::startSimplePageSequenceSerial() { NextFormat.FotCurDisplaySize = ( NextFormat.FotPageWidth - NextFormat.FotLeftMargin - NextFormat.FotRightMargin - NextFormat.FotPageColumnSep * ( NextFormat.FotPageNColumns - 1 ) ) / NextFormat.FotPageNColumns; start(); startGroup("SpS"); } void TeXFOTBuilder::endSimplePageSequenceSerial() { endGroup("SpS"); end(); } // These aren't real flow objects, so handle them a little // differently. void TeXFOTBuilder::startSimplePageSequenceHeaderFooter(unsigned flags) { os() << "\n\\SpS"; if ((flags & (firstHF|otherHF)) == firstHF) os() << "First"; else os() << "Other"; if ((flags & (frontHF|backHF)) == frontHF) os() << "Front"; else os() << "Back"; switch (flags & (leftHF|centerHF|rightHF)) { case leftHF: os() << "Left"; break; case centerHF: os() << "Center"; break; case rightHF: os() << "Right"; break; } if ((flags & (headerHF|footerHF)) == headerHF) os() << "Header"; else os() << "Footer"; os() << "%\n{"; } void TeXFOTBuilder::endSimplePageSequenceHeaderFooter(unsigned) { endSimpleGroup(); } void TeXFOTBuilder::startTablePartHeader() { curTable().CurRows = &curTable().curTablePart().Header; startGroup( "TablePartHeader", &curTable().curTablePart().HeaderProlog ); } void TeXFOTBuilder::endTablePartHeader() { curTable().CurRows = &curTable().curTablePart().Body; endGroup( "TablePartHeader", &curTable().curTablePart().HeaderEpilog ); } void TeXFOTBuilder::startTablePartFooter() { curTable().CurRows = &curTable().curTablePart().Footer; startGroup( "TablePartFooter", &curTable().curTablePart().FooterProlog ); } void TeXFOTBuilder::endTablePartFooter() { curTable().CurRows = &curTable().curTablePart().Body; endGroup( "TablePartFooter", &curTable().curTablePart().FooterEpilog ); } void TeXFOTBuilder::startMathSequence() { inMath_++; startGroup("MathSeq"); } void TeXFOTBuilder::endMathSequence() { endGroup("MathSeq"); inMath_++; } void TeXFOTBuilder::startFractionSerial() { startGroup("FractionSerial"); } void TeXFOTBuilder::endFractionSerial() { endGroup("FractionSerial"); } void TeXFOTBuilder::startFractionNumerator() { startGroup("FractionNumerator"); } void TeXFOTBuilder::endFractionNumerator() { endGroup("FractionNumerator"); } void TeXFOTBuilder::startFractionDenominator() { startGroup("FractionDenominator"); } void TeXFOTBuilder::endFractionDenominator() { endGroup("FractionDenominator"); } void TeXFOTBuilder::startUnmath() { startBrace("Unmath"); } void TeXFOTBuilder::endUnmath() { endBrace("Unmath"); } void TeXFOTBuilder::startSuperscript() { startBrace("Superscript"); } void TeXFOTBuilder::endSuperscript() { endBrace("Superscript"); } void TeXFOTBuilder::startSubscript() { startBrace("Subscript"); } void TeXFOTBuilder::endSubscript() { endBrace("Subscript"); } void TeXFOTBuilder::startScriptSerial() { startBrace("ScriptSerial"); } void TeXFOTBuilder::endScriptSerial() { } void TeXFOTBuilder::startScriptPreSup() { closeopenBrace("ScriptPreSup"); // ends brace started in startScript Serial } void TeXFOTBuilder::endScriptPreSup() { endSimpleGroup(); } void TeXFOTBuilder::startScriptPreSub() { startSimpleGroup("ScriptPreSub"); } void TeXFOTBuilder::endScriptPreSub() { endSimpleGroup(); } void TeXFOTBuilder::startScriptPostSup() { startSimpleGroup("ScriptPostSup"); } void TeXFOTBuilder::endScriptPostSup() { endSimpleGroup(); } void TeXFOTBuilder::startScriptPostSub() { startSimpleGroup("ScriptPostSub"); } void TeXFOTBuilder::endScriptPostSub() { endSimpleGroup(); } void TeXFOTBuilder::startScriptMidSup() { startSimpleGroup("ScriptMidSup"); } void TeXFOTBuilder::endScriptMidSup() { endSimpleGroup(); } void TeXFOTBuilder::startScriptMidSub() { startSimpleGroup("ScriptMidSub"); } void TeXFOTBuilder::endScriptMidSub() { endSimpleGroup(); } void TeXFOTBuilder::startMarkSerial() { startGroup("MarkSerial"); } void TeXFOTBuilder::endMarkSerial() { endGroup("MarkSerial"); } void TeXFOTBuilder::startMarkOver() { startGroup("MarkOver"); } void TeXFOTBuilder::endMarkOver() { endGroup("MarkOver"); } void TeXFOTBuilder::startMarkUnder() { startGroup("MarkUnder"); } void TeXFOTBuilder::endMarkUnder() { endGroup("MarkUnder"); } void TeXFOTBuilder::startFenceSerial() { startBrace("FenceSerial"); } void TeXFOTBuilder::endFenceSerial() { // endGroup("FenceSerial"); } void TeXFOTBuilder::startFenceOpen() { // Extra closing brace for end of fence body closeopenBrace("FenceOpen"); } void TeXFOTBuilder::endFenceOpen() { endSimpleGroup(); } void TeXFOTBuilder::startFenceClose() { startSimpleGroup("FenceClose"); } void TeXFOTBuilder::endFenceClose() { endSimpleGroup(); } void TeXFOTBuilder::startRadicalSerial() { startGroup("RadicalSerial"); } void TeXFOTBuilder::endRadicalSerial() { endGroup("RadicalSerial"); } void TeXFOTBuilder::startRadicalDegree() { startGroup("RadicalDegree"); } void TeXFOTBuilder::endRadicalDegree() { endGroup("RadicalDegree"); } void TeXFOTBuilder::startMathOperatorSerial() { startGroup("MathOperatorSerial"); } void TeXFOTBuilder::endMathOperatorSerial() { endGroup("MathOperatorSerial"); } void TeXFOTBuilder::startMathOperatorOperator() { startGroup("MathOperatorOperator"); } void TeXFOTBuilder::endMathOperatorOperator() { endGroup("MathOperatorOperator"); } void TeXFOTBuilder::startMathOperatorLowerLimit() { startGroup("MathOperatorLowerLimit"); } void TeXFOTBuilder::endMathOperatorLowerLimit() { endGroup("MathOperatorLowerLimit"); } void TeXFOTBuilder::startMathOperatorUpperLimit() { startGroup("MathOperatorUpperLimit"); } void TeXFOTBuilder::endMathOperatorUpperLimit() { endGroup("MathOperatorUpperLimit"); } void TeXFOTBuilder::startGrid(const GridNIC &nic) { setGridNIC(nic); startGroup("Grid"); } void TeXFOTBuilder::endGrid() { endGroup("Grid"); } void TeXFOTBuilder::startGridCell(const GridCellNIC &nic) { setGridCellNIC(nic); startGroup("GridCell"); } void TeXFOTBuilder::endGridCell() { endGroup("GridCell"); } void TeXFOTBuilder::startNode(const NodePtr &node, const StringC &processingMode) { GroveString id; unsigned long ei; if (node->getId(id) == accessOK) { set("Label",id); } else if (node->elementIndex(ei) == accessOK) { set("Element", ei); } unsigned long g = node->groveIndex(); if (g) { set("GroveIndex", g); } if (processingMode.size()) { set("ProcessingMode", processingMode); } if( curFotElementState().enforcingStructure() ) { startGroup( "Node", &(curFotElementState().CurNodeInfoProlog) ); #ifdef TEXDEBUG *fileout_ << "\nSTART_NODE " << ei << "\n"; #endif } else startGroup("Node"); } void TeXFOTBuilder::endNode() { if( curFotElementState().enforcingStructure() ) { curFotElementState().CurNodeInfoProlog.resize( 0 ); FotElement *lastClosed = CompoundFotElement::lastClosed( curTable() ); if( lastClosed != NULL ) endGroup( "Node", &lastClosed->nodeInfoEpilog() ); #ifdef TEXDEBUG *fileout_ << "\nEND_NODE\n"; #endif } else endGroup("Node"); } void TeXFOTBuilder::startLink(const Address &addr) { GroveString id; unsigned long ei; // FIX ME! // This needs a lot of work -- for now, it supports only links to // elements. switch (addr.type) { case Address::none: break; case Address::resolvedNode: if (addr.node->getId(id) == accessOK) { set("Label",id); } else if (addr.node->elementIndex(ei) == accessOK) { set("Element", ei); } else { message(TeXMessages::unsupportedLinkNonElement); } break; case Address::idref: // just the first IDREF for now set("Label",addr.params[0]); break; case Address::entity: message(TeXMessages::unsupportedLinkEntity); break; case Address::sgmlDocument: message(TeXMessages::unsupportedLinkSgmlDoc); break; case Address::hytimeLinkend: message(TeXMessages::unsupportedLinkHyTime); break; case Address::tei: message(TeXMessages::unsupportedLinkTei); break; case Address::html: message(TeXMessages::unsupportedLinkHtml); break; } if (addr.node) { unsigned long g = addr.node->groveIndex(); if (g) { set("GroveIndex",g); } } startGroup("Link"); } void TeXFOTBuilder::endLink() { endGroup("Link"); } ///////////////////////////////////////////////////////////////////// // Inherited characteristics // Set the value of the characteristic for the next flow object. // Inherited characteristics that are not explicitly set have // the same value as the parent flow object. ////////////////////////////////////////////////////////////////////// void TeXFOTBuilder::setFontSize(Length size) { setlength("fSize",size); } void TeXFOTBuilder::setFontFamilyName(const StringC &name) { stringout_ << "\\def\\fFamName{"; for (size_t i = 0; i < name.size(); i++) { switch(name[i]) { case ' ': stringout_ << '-'; break; default: stringout_ << char(name[i]); break; } } stringout_ << "}"; } void TeXFOTBuilder::setFontWeight(Symbol weight) { set("fWeight",weight); } void TeXFOTBuilder::setFontPosture(Symbol posture) { set("fPosture",posture); } void TeXFOTBuilder::setStartIndent(const LengthSpec &indent) { NextFormat.FotStartIndentSpec = indent; set("StartIndent",indent); } void TeXFOTBuilder::setEndIndent(const LengthSpec &indent) { NextFormat.FotEndIndentSpec = indent; set("EndIndent",indent); } void TeXFOTBuilder::setFirstLineStartIndent(const LengthSpec &indent) { set("FirstLineStartIndent",indent); } void TeXFOTBuilder::setLastLineEndIndent(const LengthSpec &indent) { set("LastLineEndIndent",indent); } void TeXFOTBuilder::setLineSpacing(const LengthSpec &spacing) { set("LineSpacing",spacing); } void TeXFOTBuilder::setFieldWidth(const LengthSpec &width) { set("FieldWidth",width); } void TeXFOTBuilder::setMarginaliaSep(const LengthSpec &sep) { set("MarginaliaSep",sep); } void TeXFOTBuilder::setLines(Symbol lines) { NextFormat.FotLines = lines; set("Lines",lines); } void TeXFOTBuilder::setQuadding(Symbol quadding) { set("Quadding",quadding); } void TeXFOTBuilder::setDisplayAlignment(Symbol align) { NextFormat.FotDisplayAlignment = align; set("DisplayAlignment",align); } void TeXFOTBuilder::setFieldAlign(Symbol align) { set("FieldAlign",align); } void TeXFOTBuilder::setColor(const DeviceRGBColor &color) { set("Color",color); } void TeXFOTBuilder::setBackgroundColor() { set("BackgroundColor",symbolFalse); } void TeXFOTBuilder::setBackgroundColor(const DeviceRGBColor &color) { NextFormat.FotBackgroundColor = color; set("BackgroundColor",color); } void TeXFOTBuilder::setBorderPresent(bool flag) { NextFormat.FotBorderPresent = flag; set("BorderPresent",flag); } void TeXFOTBuilder::setLineThickness(Length thickness) { NextFormat.FotLineThickness = thickness; setlength("LineThickness",thickness); } void TeXFOTBuilder::setCellBeforeRowMargin(Length margin) { setlength("CellBeforeRowMargin",margin); } void TeXFOTBuilder::setCellAfterRowMargin(Length margin) { setlength("CellAfterRowMargin",margin); } void TeXFOTBuilder::setCellBeforeColumnMargin(Length margin) { NextFormat.FotCellBeforeColumnMargin = margin; setlength("CellBeforeColumnMargin",margin); } void TeXFOTBuilder::setCellAfterColumnMargin(Length margin) { NextFormat.FotCellAfterColumnMargin = margin; setlength("CellAfterColumnMargin",margin); } void TeXFOTBuilder::setLineSep(Length sep) { NextFormat.FotLineSep = sep; setlength("LineSep",sep); } void TeXFOTBuilder::setBoxSizeBefore(Length size) { setlength("BoxSizeBefore",size); } void TeXFOTBuilder::setBoxSizeAfter(Length size) { setlength("BoxSizeAfter",size); } void TeXFOTBuilder::setPositionPointShift(const LengthSpec &shift) { set("PositionPointShift",shift); } void TeXFOTBuilder::setStartMargin(const LengthSpec &margin) { set("StartMargin",margin); } void TeXFOTBuilder::setEndMargin(const LengthSpec &margin) { set("EndMargin",margin); } void TeXFOTBuilder::setSidelineSep(const LengthSpec &sep) { set("SidelineSep",sep); } void TeXFOTBuilder::setAsisWrapIndent(const LengthSpec &indent) { set("AsisWrapIndent",indent); } void TeXFOTBuilder::setLineNumberSep(const LengthSpec &sep) { set("LineNumberSep",sep); } void TeXFOTBuilder::setLastLineJustifyLimit(const LengthSpec &limit) { set("LastLineJustifyLimit",limit); } void TeXFOTBuilder::setJustifyGlyphSpaceMaxAdd(const LengthSpec &max) { set("JustifyGlyphSpaceMaxAdd",max); } void TeXFOTBuilder::setJustifyGlyphSpaceMaxRemove(const LengthSpec &max) { set("JustifyGlyphSpaceMaxRemove",max); } void TeXFOTBuilder::setTableCornerRadius(const LengthSpec &radius) { set("TableCornerRadius",radius); } void TeXFOTBuilder::setBoxCornerRadius(const LengthSpec &radius) { set("BoxCornerRadius",radius); } void TeXFOTBuilder::setInhibitLineBreaks(bool flag) { set("InhibitLineBreaks",flag); } void TeXFOTBuilder::setHyphenate(bool flag) { set("Hyphenate",flag); } void TeXFOTBuilder::setKern(bool flag) { set("Kern",flag); } void TeXFOTBuilder::setLigature(bool flag) { set("Ligature",flag); } void TeXFOTBuilder::setScoreSpaces(bool flag) { set("ScoreSpaces",flag); } void TeXFOTBuilder::setFloatOutMarginalia(bool flag) { set("FloatOutMarginalia",flag); } void TeXFOTBuilder::setFloatOutSidelines(bool flag) { set("FloatOutSidelines",flag); } void TeXFOTBuilder::setFloatOutLineNumbers(bool flag) { set("FloatOutLineNumbers",flag); } void TeXFOTBuilder::setCellBackground(bool flag) { NextFormat.FotCellBackground = flag; set("CellBackground",flag); } void TeXFOTBuilder::setSpanWeak(bool flag) { set("SpanWeak",flag); } void TeXFOTBuilder::setIgnoreRecordEnd(bool flag) { set("IgnoreRecordEnd",flag); } void TeXFOTBuilder::setNumberedLines(bool flag) { set("NumberedLines",flag); } void TeXFOTBuilder::setHangingPunct(bool flag) { set("HangingPunct",flag); } void TeXFOTBuilder::setBoxOpenEnd(bool flag) { set("BoxOpenEnd",flag); } void TeXFOTBuilder::setTruncateLeader(bool flag) { set("TruncateLeader",flag); } void TeXFOTBuilder::setAlignLeader(bool flag) { set("AlignLeader",flag); } void TeXFOTBuilder::setTablePartOmitMiddleHeader(bool flag) { set("TablePartOmitMiddleHeader",flag); } void TeXFOTBuilder::setTablePartOmitMiddleFooter(bool flag) { set("TablePartOmitMiddleFooter",flag); } void TeXFOTBuilder::setBorderOmitAtBreak(bool flag) { set("BorderOmitAtBreak",flag); } void TeXFOTBuilder::setPrincipalModeSimultaneous(bool flag) { set("PrincipalModeSimultaneous",flag); } void TeXFOTBuilder::setMarginaliaKeepWithPrevious(bool flag) { set("MarginaliaKeepWithPrevious",flag); } void TeXFOTBuilder::setLineJoin(Symbol join) { set("LineJoin",join); } void TeXFOTBuilder::setLineCap(Symbol cap) { NextFormat.FotLineCap = cap; set("LineCap",cap); } void TeXFOTBuilder::setLineNumberSide(Symbol side) { set("LineNumberSide",side); } void TeXFOTBuilder::setKernMode(Symbol mode) { set("KernMode",mode); } void TeXFOTBuilder::setInputWhitespaceTreatment(Symbol treatment) { set("InputWhitespaceTreatment",treatment); } void TeXFOTBuilder::setFillingDirection(Symbol direction) { set("FillingDirection",direction); } void TeXFOTBuilder::setWritingMode(Symbol mode) { set("WritingMode",mode); } void TeXFOTBuilder::setLastLineQuadding(Symbol quadding) { set("LastLineQuadding",quadding); } void TeXFOTBuilder::setMathDisplayMode(Symbol mode) { set("MathDisplayMode",mode); } void TeXFOTBuilder::setBoxType(Symbol type) { set("BoxType",type); } void TeXFOTBuilder::setGlyphAlignmentMode(Symbol mode) { set("GlyphAlignmentMode",mode); } void TeXFOTBuilder::setBoxBorderAlignment(Symbol align) { set("BoxBorderAlignment",align); } void TeXFOTBuilder::setCellRowAlignment(Symbol align) { NextFormat.FotCellRowAlignment = align; set("CellRowAlignment",align); } void TeXFOTBuilder::setBorderAlignment(Symbol align) { set("BorderAlignment",align); } void TeXFOTBuilder::setSidelineSide(Symbol side) { set("SidelineSide",side); } void TeXFOTBuilder::setHyphenationKeep(Symbol keep) { set("HyphenationKeep",keep); } void TeXFOTBuilder::setFontStructure(Symbol structure) { set("fStructure",structure); } void TeXFOTBuilder::setFontProportionateWidth(Symbol width) { set("fProportionateWidth",width); } void TeXFOTBuilder::setCellCrossed(Symbol crossed) { set("CellCrossed",crossed); } void TeXFOTBuilder::setMarginaliaSide(Symbol side) { set("MarginaliaSide",side); } void TeXFOTBuilder::setLayer(long n) { set("Layer",n); } void TeXFOTBuilder::setBackgroundLayer(long n) { set("BackgroundLayer",n); } void TeXFOTBuilder::setBorderPriority(long n) { NextFormat.FotBorderPriority = n; set("BorderPriority",n); } void TeXFOTBuilder::setLineRepeat(long n) { NextFormat.FotLineRepeat = n; set("LineRepeat",n); } void TeXFOTBuilder::setSpan(long n) { NextFormat.FotSpan = n; NextFormat.FotCurDisplaySize = NextFormat.FotPageWidth - NextFormat.FotLeftMargin - NextFormat.FotRightMargin; set("Span",n); } void TeXFOTBuilder::setMinLeaderRepeat(long n) { set("MinLeaderRepeat",n); } void TeXFOTBuilder::setHyphenationRemainCharCount(long n) { set("HyphenationRemainCharCount",n); } void TeXFOTBuilder::setHyphenationPushCharCount(long n) { set("HyphenationPushCharCount",n); } void TeXFOTBuilder::setWidowCount(long n) { set("WidowCount",n); } void TeXFOTBuilder::setOrphanCount(long n) { set("OrphanCount",n); } // 0 means #f void TeXFOTBuilder::setExpandTabs(long n) { set("ExpandTabs",n); } void TeXFOTBuilder::setHyphenationLadderCount(long n) { set("HyphenationLadderCount",n); } // public id or #f void TeXFOTBuilder::setBackgroundTile(PublicId id) { set("BackgroundTile",id); } void TeXFOTBuilder::setLineBreakingMethod(PublicId id) { set("LineBreakingMethod",id); } void TeXFOTBuilder::setLineCompositionMethod(PublicId id) { set("LineCompositionMethod",id); } void TeXFOTBuilder::setImplicitBidiMethod(PublicId id) { set("ImplicitBidiMethod",id); } void TeXFOTBuilder::setGlyphSubstMethod(PublicId id) { set("GlyphSubstMethod",id); } void TeXFOTBuilder::setGlyphReorderMethod(PublicId id) { set("GlyphReorderMethod",id); } void TeXFOTBuilder::setHyphenationMethod(PublicId id) { set("HyphenationMethod",id); } void TeXFOTBuilder::setTableAutoWidthMethod(PublicId id) { set("TableAutoWidthMethod",id); } void TeXFOTBuilder::setFontName(PublicId id) { set("fName",id); } // Two-letter code void TeXFOTBuilder::setLanguage(Letter2 language) { setletter2("Language",language); } void TeXFOTBuilder::setCountry(Letter2 country) { setletter2("Country",country); } // For simple page sequence void TeXFOTBuilder::setPageWidth(Length width) { NextFormat.FotPageWidth = width; setlength("PageWidth",width); } void TeXFOTBuilder::setPageHeight(Length height) { setlength("PageHeight",height); } void TeXFOTBuilder::setLeftMargin(Length margin) { NextFormat.FotLeftMargin = margin; setlength("LeftMargin",margin); } void TeXFOTBuilder::setRightMargin(Length margin) { NextFormat.FotRightMargin = margin; setlength("RightMargin",margin); } void TeXFOTBuilder::setTopMargin(Length margin) { setlength("TopMargin",margin); } void TeXFOTBuilder::setBottomMargin(Length margin) { setlength("BottomMargin",margin); } void TeXFOTBuilder::setHeaderMargin(Length margin) { setlength("HeaderMargin",margin); } void TeXFOTBuilder::setFooterMargin(Length margin) { setlength("FooterMargin",margin); } // New inherited characteristics // added 1 March/97 with math support. void TeXFOTBuilder::setMinPreLineSpacing(const OptLengthSpec &len) { set("MinPreLineSpacing",len); } void TeXFOTBuilder::setMinPostLineSpacing(const OptLengthSpec &len) { set("MinPostLineSpacing",len); } void TeXFOTBuilder::setMinLeading(const OptLengthSpec &len) { set("MinLeading",len); } void TeXFOTBuilder::setScriptPreAlign(Symbol sym) { set("ScriptPreAlign",sym); } void TeXFOTBuilder::setScriptPostAlign(Symbol sym) { set("ScriptPostAlign",sym); } void TeXFOTBuilder::setScriptMidSupAlign(Symbol sym) { set("ScriptMidSupAlign",sym); } void TeXFOTBuilder::setScriptMidSubAlign(Symbol sym) { set("ScriptMidSubAlign",sym); } void TeXFOTBuilder::setNumeratorAlign(Symbol sym) { set("NumeratorAlign",sym); } void TeXFOTBuilder::setDenominatorAlign(Symbol sym) { set("DenominatorAlign",sym); } void TeXFOTBuilder::setGridPositionCellType(Symbol sym) { set("GridPositionCellType",sym); } void TeXFOTBuilder::setGridColumnAlignment(Symbol sym) { set("GridColumnAlignment",sym); } void TeXFOTBuilder::setGridRowAlignment(Symbol sym) { set("GridRowAlignment",sym); } void TeXFOTBuilder::setGridEquidistantRows(bool flag) { set("GridEquidistantRows",flag); } void TeXFOTBuilder::setGridEquidistantColumns(bool flag) { set("GridEquidistantColumns",flag); } void TeXFOTBuilder::setEscapementSpaceBefore(const InlineSpace &space) { set("EscapementSpaceBefore",space); } void TeXFOTBuilder::setEscapementSpaceAfter(const InlineSpace &space) { set("EscapementSpaceAfter",space); } void TeXFOTBuilder::setInlineSpaceSpace(const OptInlineSpace &space) { set("InlineSpaceSpace",space); } void TeXFOTBuilder::setGlyphSubstTable(const Vector > &) { // FIX ME! message(TeXMessages::unsupportedGlyphSubstTable); // set("GlyphSubstTable",tables); } //////////////////////////////////////////////////////////////////////// // Private member functions. //////////////////////////////////////////////////////////////////////// // // Insert an atomic flow object. // void TeXFOTBuilder::insertAtomic(const char *name) { os() << "\\insert" << name << "%\n{"; dumpInherited(); os() << '}'; } void TeXFOTBuilder::insertAtomic( TeXFOTBuilder::FotElement &fotElement ) { stringout_.extractString( fotElement.Characteristics ); } // // Start a non-atomic flow object. // void TeXFOTBuilder::startGroup(const char *name, String *output ) { if( output ) { String s; stringout_.extractString( s ); StrOutputByteStream out; out << "\\" << name << "%\n{" << s << '}'; out.extractString( s ); *output += s; } else { os() << "\\" << name << "%\n{"; dumpInherited(); os() << '}'; } } void TeXFOTBuilder::startGroup( TeXFOTBuilder::FotElement &fotElement ) { stringout_.extractString( fotElement.Characteristics ); } // // Start a non-atomic flow object, with the content delimited by braces, // but no macro name at all; we just emit all the characteristics in // the stream after the brace. // void TeXFOTBuilder::startSimpleGroup(const char *name, String *output ) { if( output ) { String s; stringout_.extractString( s ); StrOutputByteStream out; out << "%\n{" << s ; out.extractString( s ); *output += s; } else { os() << "%\n{"; dumpInherited(); } } // // End with just a closing brace // void TeXFOTBuilder::endSimpleGroup(String *output ) { if( output ) { StrOutputByteStream out; out << "}"; String s; out.extractString( s ); *output += s; } else os() << "}"; } // // Stop and start a brace, but note characteristics // void TeXFOTBuilder::closeopenBrace(const char *name, String *output ) { if( output ) { String s; stringout_.extractString( s ); StrOutputByteStream out; out << "}{" << s ; out.extractString( s ); *output += s; } else { os() << "}{"; dumpInherited(); } } // // Start a non-atomic flow object, with the content delimited by braces // void TeXFOTBuilder::startBrace(const char *name, String *output ) { if( output ) { String s; stringout_.extractString( s ); StrOutputByteStream out; out << "\\" << name << "%\n{" << s << "}{"; out.extractString( s ); *output += s; } else { os() << "\\" << name << "%\n{"; dumpInherited(); os() << "}{"; } } // // End a non-atomic flow object with just a closing brace // void TeXFOTBuilder::endBrace(const char *name, String *output ) { if( output ) { StrOutputByteStream out; out << "}"; String s; out.extractString( s ); *output += s; } else os() << "}"; } // // End a non-atomic flow object. // void TeXFOTBuilder::endGroup(const char *name, String *output ) { if( output ) { StrOutputByteStream out; out << "\\end" << name << "{}"; String s; out.extractString( s ); *output += s; } else os() << "\\end" << name << "{}"; } // // Set a Length (needs a different name to avoid conflict // with long. // void TeXFOTBuilder::setlength(const char *name,Length size) { stringout_ << "\\def\\" << name << "%\n{" << float(size/1000.0) << "\\p@}"; } // // Set a StringC. // void TeXFOTBuilder::set(const char *name,const StringC &value) { stringout_ << "\\def\\" << name << "%\n{" << value << '}'; } // // Set a GroveString // void TeXFOTBuilder::set(const char *name,const GroveString &value) { stringout_ << "\\def\\" << name << "%\n{" << value << '}'; } // // Set a Symbol. // void TeXFOTBuilder::set(const char *name,Symbol sym) { const char * symbolName = ""; switch (sym) { case symbolFalse: symbolName = "false"; break; case symbolTrue: symbolName = "true"; break; case symbolNotApplicable: symbolName = "notapplicable"; break; case symbolUltraCondensed: symbolName = "ultracondensed"; break; case symbolExtraCondensed: symbolName = "extracondensed"; break; case symbolCondensed: symbolName = "condensed"; break; case symbolSemiCondensed: symbolName = "semicondensed"; break; case symbolUltraLight: symbolName = "ultralight"; break; case symbolExtraLight: symbolName = "extralight"; break; case symbolLight: symbolName = "light"; break; case symbolSemiLight: symbolName = "semilight"; break; case symbolMedium: symbolName = "medium"; break; case symbolSemiExpanded: symbolName = "semiexpanded"; break; case symbolExpanded: symbolName = "expanded"; break; case symbolExtraExpanded: symbolName = "extraexpanded"; break; case symbolUltraExpanded: symbolName = "ultraexpanded"; break; case symbolSemiBold: symbolName = "semibold"; break; case symbolBold: symbolName = "bold"; break; case symbolExtraBold: symbolName = "extrabold"; break; case symbolUltraBold: symbolName = "ultrabold"; break; case symbolUpright: symbolName = "upright"; break; case symbolOblique: symbolName = "oblique"; break; case symbolBackSlantedOblique: symbolName = "backslantedoblique"; break; case symbolItalic: symbolName = "italic"; break; case symbolBackSlantedItalic: symbolName = "backslanteditalic"; break; case symbolStart: symbolName = "start"; break; case symbolEnd: symbolName = "end"; break; case symbolCenter: symbolName = "center"; break; case symbolJustify: symbolName = "justify"; break; case symbolSpreadInside: symbolName = "spreadinside"; break; case symbolSpreadOutside: symbolName = "spreadoutside"; break; case symbolPageInside: symbolName = "pageinside"; break; case symbolPageOutside: symbolName = "pageoutside"; break; case symbolWrap: symbolName = "wrap"; break; case symbolAsis: symbolName = "asis"; break; case symbolAsisWrap: symbolName = "asiswrap"; break; case symbolAsisTruncate: symbolName = "asistruncate"; break; case symbolNone: symbolName = "none"; break; case symbolBefore: symbolName = "before"; break; case symbolThrough: symbolName = "through"; break; case symbolAfter: symbolName = "after"; break; case symbolTopToBottom: symbolName = "toptobottom"; break; case symbolLeftToRight: symbolName = "lefttoright"; break; case symbolBottomToTop: symbolName = "bottomtotop"; break; case symbolRightToLeft: symbolName = "righttoleft"; break; case symbolInside: symbolName = "inside"; break; case symbolOutside: symbolName = "outside"; break; case symbolHorizontal: symbolName = "horizontal"; break; case symbolVertical: symbolName = "vertical"; break; case symbolEscapement: symbolName = "escapement"; break; case symbolLineProgression: symbolName = "lineprogression"; break; case symbolMath: symbolName = "math"; break; case symbolOrdinary: symbolName = "ordinary"; break; case symbolOperator: symbolName = "operator"; break; case symbolBinary: symbolName = "binary"; break; case symbolRelation: symbolName = "relation"; break; case symbolOpening: symbolName = "opening"; break; case symbolClosing: symbolName = "closing"; break; case symbolPunctuation: symbolName = "punctuation"; break; case symbolInner: symbolName = "inner"; break; case symbolSpace: symbolName = "space"; break; case symbolPage: symbolName = "page"; break; case symbolPageRegion: symbolName = "pageregion"; break; case symbolColumnSet: symbolName = "columnset"; break; case symbolColumn: symbolName = "column"; break; case symbolMax: symbolName = "max"; break; case symbolMaxUniform: symbolName = "maxuniform"; break; case symbolMiter: symbolName = "miter"; break; case symbolRound: symbolName = "round"; break; case symbolBevel: symbolName = "bevel"; break; case symbolButt: symbolName = "butt"; break; case symbolSquare: symbolName = "square"; break; case symbolLoose: symbolName = "loose"; break; case symbolNormal: symbolName = "normal"; break; case symbolKern: symbolName = "kern"; break; case symbolTight: symbolName = "tight"; break; case symbolTouch: symbolName = "touch"; break; case symbolPreserve: symbolName = "preserve"; break; case symbolCollapse: symbolName = "collapse"; break; case symbolIgnore: symbolName = "ignore"; break; case symbolRelative: symbolName = "relative"; break; case symbolDisplay: symbolName = "display"; break; case symbolInline: symbolName = "inline"; break; case symbolBorder: symbolName = "border"; break; case symbolBackground: symbolName = "background"; break; case symbolBoth: symbolName = "both"; break; case symbolBase: symbolName = "base"; break; case symbolFont: symbolName = "font"; break; case symbolTop: symbolName = "top"; break; case symbolBottom: symbolName = "bottom"; break; case symbolSpread: symbolName = "spread"; break; case symbolSolid: symbolName = "solid"; break; case symbolOutline: symbolName = "outline"; break; case symbolWith: symbolName = "with"; break; case symbolAgainst: symbolName = "against"; break; case symbolForce: symbolName = "force"; break; case symbolIndependent: symbolName = "independent"; break; case symbolPile: symbolName = "pile"; break; case symbolSupOut: symbolName = "supout"; break; case symbolSubOut: symbolName = "subout"; break; case symbolLeadEdge: symbolName = "leadedge"; break; case symbolTrailEdge: symbolName = "trailedge"; break; case symbolExplicit: symbolName = "explicit"; break; case symbolRowMajor: symbolName = "rowmajor"; break; case symbolColumnMajor: symbolName = "columnmajor"; break; } stringout_ << "\\def\\" << name << "%\n{" << symbolName << '}'; } // // Set a LengthSpec. // void TeXFOTBuilder::set(const char *name,const LengthSpec &spec) { stringout_ << "\\def\\" << name << "%\n{" << float(spec.length/1000.0) << "\\p@}"; stringout_ << "\\def\\" << name << "Factor%\n{" << spec.displaySizeFactor << '}'; } // // Set a double. // void TeXFOTBuilder::set(const char *name,double n) { stringout_ << "\\def\\" << name << "%\n{" << n << '}'; } // // Set a DeviceRGBColor. // void TeXFOTBuilder::set(const char *name, const DeviceRGBColor &color) { stringout_ << "\\def\\" << name << "Red%\n{" << int(color.red) << '}'; stringout_ << "\\def\\" << name << "Green%\n{" << int(color.green) << '}'; stringout_ << "\\def\\" << name << "Blue%\n{" << int(color.blue) << '}'; } // // Set a bool. // void TeXFOTBuilder::set(const char *name,bool flag) { stringout_ << "\\def\\" << name << "%\n{" << (flag ? 1 : 0) << '}'; } // // Set a long. // void TeXFOTBuilder::set(const char *name,long n) { stringout_ << "\\def\\" << name << "%\n{" << n << '}'; } // // Set an unsigned long. // void TeXFOTBuilder::set(const char *name,long unsigned int n) { stringout_ << "\\def\\" << name << "%\n{" << n << '}'; } // // Set a PublicId. // void TeXFOTBuilder::set(const char *name,PublicId id) { stringout_ << "\\def\\" << name << "%\n{" << id << '}'; } // // Set a Letter2. // void TeXFOTBuilder::setletter2(const char *name,Letter2 code) { char letter1 = (code & 0xff00) >> 8; char letter2 = (code & 0xff); stringout_ << "\\def\\" << name << "%\n{" << letter1 << letter2 << '}'; } // // This one is a problem because it duplications functionality from // above. // void TeXFOTBuilder::set(const char *name,const DisplaySpace &space) { if (space.nominal.length != 0 || space.min.length != 0 || space.max.length != 0) { stringout_ << "\\def\\" << name << "Nom%\n{" << (space.nominal.length/1000.0) << "\\p@}"; if (space.nominal.displaySizeFactor != 0) stringout_ << "\\def\\" << name << "NomFactor%\n{" << space.nominal.displaySizeFactor << '}'; if (space.min.length != 0) stringout_ << "\\def\\" << name << "Min%\n{" << (space.min.length/1000.0) << "\\p@}"; if (space.min.displaySizeFactor != 0) stringout_ << "\\def\\" << name << "MinFactor%\n{" << space.min.displaySizeFactor << '}'; if (space.max.length != 0) stringout_ << "\\def\\" << name << "Max%\n{" << (space.max.length/1000.0) << "\\p@}"; if (space.max.displaySizeFactor != 0) stringout_ << "\\def\\" << name << "MaxFactor%\n{" << space.max.displaySizeFactor << '}'; if (space.priority != 0) stringout_ << "\\def\\" << name << "Priority%\n{" << space.priority << '}'; if (space.conditional) stringout_ << "\\def\\" << name << "Conditional%\n{" << (space.conditional ? 1 : 0) << '}'; if (space.force) stringout_ << "\\def\\" << name << "Force%\n{" << (space.force ? 1 : 0) << '}'; } } void TeXFOTBuilder::set(const char *name,const GlyphId &glyphId) { stringout_ << "\\def\\" << name << "%\n{"; if (glyphId.publicId) { stringout_ << glyphId.publicId; if (glyphId.suffix) stringout_ << "::" << glyphId.suffix; } stringout_ << '}'; } void TeXFOTBuilder::set(const char *name,const OptLengthSpec &spec) { if (spec.hasLength) { set(name,spec.length); } } void TeXFOTBuilder::set(const char *name,const OptInlineSpace &spec) { if (spec.hasSpace) { set(name,spec.space); } } // This one is also a problem because it duplicates functionality. void TeXFOTBuilder::set(const char *name,const InlineSpace &space) { if (space.nominal.length != 0 || space.min.length != 0 || space.max.length != 0) { stringout_ << "\\def\\" << name << "Nom%\n{" << (space.nominal.length/1000.0) << "\\p@}"; if (space.nominal.displaySizeFactor != 0) stringout_ << "\\def\\" << name << "NomFactor%\n{" << space.nominal.displaySizeFactor << '}'; if (space.min.length != 0) stringout_ << "\\def\\" << name << "Min%\n{" << (space.min.length/1000.0) << "\\p@}"; if (space.min.displaySizeFactor != 0) stringout_ << "\\def\\" << name << "MinFactor%\n{" << space.min.displaySizeFactor << '}'; if (space.max.length != 0) stringout_ << "\\def\\" << name << "Max%\n{" << (space.max.length/1000.0) << "\\p@}"; if (space.max.displaySizeFactor != 0) stringout_ << "\\def\\" << name << "MaxFactor%\n{" << space.max.displaySizeFactor << '}'; } } // // Structures for non-inherited characters, in the order specified // in /style/FOTBuilder.h. // void TeXFOTBuilder::setDisplayNIC(const DisplayNIC &nic) { set("sb",nic.spaceBefore); set("sa",nic.spaceAfter); MAYBESET("PositionPreference",nic.positionPreference,symbolFalse); MAYBESET("Keep",nic.keep,symbolFalse); MAYBESET("BreakBefore",nic.breakBefore,symbolFalse); MAYBESET("BreakAfter",nic.breakAfter,symbolFalse); MAYBESET("KeepWithPrevious",nic.keepWithPrevious,symbolFalse); MAYBESET("KeepWithNext",nic.keepWithNext,symbolFalse); MAYBESET("MayViolateKeepBefore",nic.mayViolateKeepBefore,symbolFalse); MAYBESET("MayViolateKeepAfter",nic.mayViolateKeepAfter,symbolFalse); } void TeXFOTBuilder::setInlineNIC(const InlineNIC &nic) { MAYBESET("BreakBeforePriority",nic.breakBeforePriority,0); MAYBESET("BreakAfterPriority",nic.breakAfterPriority,0); } void TeXFOTBuilder::setDisplayGroupNIC(const DisplayGroupNIC &nic) { setDisplayNIC(nic); if (nic.hasCoalesceId) set("CoalesceId",nic.coalesceId); } void TeXFOTBuilder::setExternalGraphicNIC(const ExternalGraphicNIC &nic) { setDisplayNIC(nic); setInlineNIC(nic); MAYBESET("IsDisplay",nic.isDisplay,symbolFalse); MAYBESET("ScaleType",nic.scaleType,symbolMaxUniform); if (nic.scaleType == symbolFalse) { set("ScaleX",nic.scale[0]); set("ScaleY",nic.scale[1]); } set("EntitySystemId",nic.entitySystemId); set("NotationSystemId",nic.notationSystemId); if(nic.hasMaxWidth) set("MaxWidth",nic.maxWidth); if (nic.hasMaxHeight) set("MaxHeight",nic.maxHeight); if (!nic.isDisplay) { set("EscapementDirection",nic.escapementDirection); set("PositionPointX",nic.positionPointX); set("PositionPointY",nic.positionPointY); } } void TeXFOTBuilder::setBoxNIC(const BoxNIC &nic) { setDisplayNIC(nic); setInlineNIC(nic); // BoxNIC MAYBESET("IsDisplay",nic.isDisplay,symbolFalse); } void TeXFOTBuilder::setRuleNIC(const RuleNIC &nic) { setDisplayNIC(nic); setInlineNIC(nic); // Rule NIC set("Orientation",nic.orientation); if (nic.hasLength) set("Length",nic.length); } void TeXFOTBuilder::setLeaderNIC(const LeaderNIC &nic) { setInlineNIC(nic); if (nic.hasLength) set("Length",nic.length); } void TeXFOTBuilder::setParagraphNIC(const ParagraphNIC &nic) { setDisplayNIC(nic); } void TeXFOTBuilder::setCharacterNIC(const CharacterNIC &nic) { #if 1 if (nic.valid) { set("Ch",(unsigned long)nic.ch); set("GlyphId",nic.glyphId); set("BreakBeforePriority",nic.breakBeforePriority); set("MathClass",nic.mathClass); set("MathFontPosture",nic.mathFontPosture); stringout_ << "\\def\\Script%\n{" << nic.script+29 << '}'; set("IsDropAfterLineBreak",nic.isDropAfterLineBreak); set("IsDropUnlessBeforeLineBreak",nic.isDropUnlessBeforeLineBreak); set("IsPunct",nic.isPunct); set("IsInputWhiteSpace",nic.isInputWhitespace); set("IsInputTab",nic.isInputTab); set("IsRecordEnd",nic.isRecordEnd); set("IsSpace",nic.isSpace); } #else if (nic.specifiedC & (1 << CharacterNIC::cChar)) set("Ch",(unsigned long)nic.ch); if (nic.specifiedC & (1 << CharacterNIC::cGlyphId)) set("GlyphId",nic.glyphId); if (nic.specifiedC & (1 << CharacterNIC::cBreakBeforePriority)) set("BreakBeforePriority",nic.breakBeforePriority); if (nic.specifiedC & (1 << CharacterNIC::cBreakAfterPriority)) set("BreakAfterPriority",nic.breakAfterPriority); if (nic.specifiedC & (1 << CharacterNIC::cMathClass)) set("MathClass",nic.mathClass); if (nic.specifiedC & (1 << CharacterNIC::cMathFontPosture)) set("MathFontPosture",nic.mathFontPosture); if (nic.specifiedC & (1 << CharacterNIC::cScript)) set("Script",(long unsigned int)nic.script); if (nic.specifiedC & (1 << CharacterNIC::cIsDropAfterLineBreak)) set("IsDropAfterLineBreak",nic.isDropAfterLineBreak); if (nic.specifiedC & (1 << CharacterNIC::cIsDropUnlessBeforeLineBreak)) set("IsDropUnlessBeforeLineBreak",nic.isDropUnlessBeforeLineBreak); if (nic.specifiedC & (1 << CharacterNIC::cIsPunct)) set("IsPunct",nic.isPunct); if (nic.specifiedC & (1 << CharacterNIC::cIsInputWhitespace)) set("IsInputWhiteSpace",nic.isInputWhitespace); if (nic.specifiedC & (1 << CharacterNIC::cIsInputTab)) set("IsInputTab",nic.isInputTab); if (nic.specifiedC & (1 << CharacterNIC::cIsRecordEnd)) set("IsRecordEnd",nic.isRecordEnd); if (nic.specifiedC & (1 << CharacterNIC::cIsSpace)) set("IsSpace",nic.isSpace); #endif MAYBESET("StretchFactor",nic.stretchFactor,1.0); } void TeXFOTBuilder::setLineFieldNIC(const LineFieldNIC &nic) { setInlineNIC(nic); } void TeXFOTBuilder::setTableNIC(const TableNIC &nic) { setDisplayNIC(nic); // TableNIC switch (nic.widthType) { case TableNIC::widthFull: set("TableWidth","full"); break; case TableNIC::widthMinimum: set("TableWidth","minimum"); break; case TableNIC::widthExplicit: set("TableWidth",nic.width); break; } } void TeXFOTBuilder::setTablePartNIC(const TablePartNIC &nic) { setDisplayNIC(nic); } void TeXFOTBuilder::setTableColumnNIC(const TableColumnNIC &nic) { MAYBESET("ColumnIndex",long(nic.columnIndex),0); MAYBESET("NColumnsSpanned",long(nic.nColumnsSpanned),1); if (nic.hasWidth) set("Width",nic.width); } void TeXFOTBuilder::setTableCellNIC(const TableCellNIC &nic) { // FIX ME! // does not deal with "missing" bool yet. MAYBESET("ColumnIndex",long(nic.columnIndex),0); MAYBESET("NColumnsSpanned",long(nic.nColumnsSpanned),1); MAYBESET("NRowsSpanned",long(nic.nRowsSpanned),1); } void TeXFOTBuilder::setGridNIC(const GridNIC &nic) { set("NColumns",nic.nColumns); set("NRows",nic.nRows); } void TeXFOTBuilder::setGridCellNIC(const GridCellNIC &nic) { set("ColumnNumber",nic.columnNumber); set("RowNumber",nic.rowNumber); } // Dump all accumulated inherited characteristics. void TeXFOTBuilder::dumpInherited() { String tem; stringout_.extractString(tem); os() << tem; } void TeXFOTBuilder::message(const MessageType0 &msg) { mgr_->message(msg); } void TeXFOTBuilder::setPageNumberFormat(const StringC &name) { set("PageNumberFormat",name); } void TeXFOTBuilder::setPageNColumns(long n) { NextFormat.FotPageNColumns = n; set("PageNColumns",n); } void TeXFOTBuilder::setPageColumnSep(Length w) { NextFormat.FotPageColumnSep = w; setlength("PageColumnSep",w); } void TeXFOTBuilder::setPageBalanceColumns(bool flag) { set("PageBalanceColumns",flag); } void TeXFOTBuilder::setPageTwoSide(bool flag) { set("PageTwoSide",flag); } void TeXFOTBuilder::setTwoSideStartOnRight(bool flag) { set("TwoSideStartOnRight",flag); } void TeXFOTBuilder::setSubscriptDepth(Length w) { setlength("SubScriptDepth",w); } void TeXFOTBuilder::setOverMarkHeight(Length w) { setlength("OverMarkHeight",w); } void TeXFOTBuilder::setUnderMarkDepth(Length w) { setlength("UnderMarkDepth",w); } void TeXFOTBuilder::setSuperscriptHeight(Length w) { setlength("SuperscriptHeight",w); } void TeXFOTBuilder::setGridRowSep(Length w) { setlength("GridRowsep",w); } void TeXFOTBuilder::setGridColumnSep(Length w) { setlength("GridColumnSep",w); } void TeXFOTBuilder::setHeadingLevel(long n) { #ifdef OUTLINES if ((n >=1) && (n <=9)){ ParHead par(1,n); headingSet_=1; push(parStack_,par); set("HeadingLevel",n); } #else set("HeadingLevel",n); #endif } void TeXFOTBuilder::setPageNumberRestart(bool flag) { set("PageNumberRestart",flag); } void TeXFOTBuilder::startPageFloat(const PageFloatNIC &nic) { setPageFloatNIC(nic); startGroup("PageFloat"); } void TeXFOTBuilder::endPageFloat() { endGroup("PageFloat"); } void TeXFOTBuilder::startPageFootnote() { startBrace("PageFootnote"); } void TeXFOTBuilder::endPageFootnote() { endBrace("PageFootnote"); } void TeXFOTBuilder::setPageFloatNIC(const PageFloatNIC &nic) { set("placement",nic.placement); } TeXFOTBuilder::PageFloatNIC::~PageFloatNIC() { } void TeXFOTBuilder::extension(const ExtensionFlowObj &fo, const NodePtr &nd) { ((const TeXExtensionFlowObj &)fo).atomic(*this, nd); } void TeXFOTBuilder::startExtensionSerial(const CompoundExtensionFlowObj &fo, const NodePtr &nd) { ((const TeXCompoundExtensionFlowObj &)fo).start(*this, nd); } void TeXFOTBuilder::endExtensionSerial(const CompoundExtensionFlowObj &fo) { ((const TeXCompoundExtensionFlowObj &)fo).end(*this); } void TeXFOTBuilder::setPreserveSdata(bool b) { preserveSdata_ = b; } void TeXFOTBuilder::charactersFromNode(const NodePtr &nd, const Char *s, size_t n) { GroveString name; if (preserveSdata_ && n == 1 && nd->getEntityName(name) == accessOK) os() << "\\Entity{" << name << '}'; else TeXFOTBuilder::characters(s, n); } #ifdef DSSSL_NAMESPACE } #endif #include "TeXFOTBuilder_inst.cxx" openjade-1.3.2/jade/TeXFOTBuilder.h0100664000076400007640000000100606713046526015057 0ustar ianian// This is a -*-c++-*- header. // TeXFOTBuilder.h: a generic TeX backend for Jade. // Written by David Megginson #ifndef TeXFOTBuilder_INCLUDED #define TeXFOTBuilder_INCLUDED 1 #include "OutputByteStream.h" #include "FOTBuilder.h" #include "Message.h" #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif FOTBuilder *makeTeXFOTBuilder(OutputByteStream *, Messenger *, const FOTBuilder::Extension *&); #ifdef DSSSL_NAMESPACE } #endif #endif /* not TeXFOTBuilder_INCLUDED */ openjade-1.3.2/jade/TeXFOTBuilder_inst.m40100664000076400007640000000126007417604526016211 0ustar ianian#include "config.h" #define OUTLINES #ifdef SP_MANUAL_INST #define SP_DEFINE_TEMPLATES #include "Vector.h" #undef SP_DEFINE_TEMPLATES #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif __instantiate(Vector) __instantiate(Vector) __instantiate(Vector) __instantiate(Vector) __instantiate(Vector) __instantiate(Vector) __instantiate(Vector) __instantiate(Vector) #ifdef OUTLINES __instantiate(Vector) #endif #ifdef DSSSL_NAMESPACE } #endif #endif /* SP_MANUAL_INST */ openjade-1.3.2/jade/TeXMessages.msg0100664000076400007640000000147006713045150015223 0ustar ianian# Copyright (c) 1997 James Clark # See the file COPYING for copying permission =5000 W0+unsupportedPageNumberNonElement++TeX backend does not currently support references to page numbers of nodes other than elements W0+unsupportedLinkNonElement++TeX backend does not currently support links to nodes other than elements W0+unsupportedLinkEntity++TeX backend does not currently support links to entities W0+unsupportedLinkSgmlDoc++TeX backend does not currently support links to other SGML documents W0+unsupportedLinkHyTime++TeX backend does not currently support HyTime linkends W0+unsupportedLinkTei++TeX backend does not currently support TEI links W0+unsupportedLinkHtml++TeX backend does not currently support HTML links W0+unsupportedGlyphSubstTable++TeX backend does not currently support glyph substitution tables openjade-1.3.2/jade/TmpOutputByteStream.h0100664000076400007640000000223706713071600016456 0ustar ianian#ifndef TmpOutputByteStream_INCLUDED #define TmpOutputByteStream_INCLUDED 1 #include "OutputByteStream.h" #include "Boolean.h" #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif #ifdef SP_NAMESPACE using namespace SP_NAMESPACE; #endif class TmpOutputByteStream : public OutputByteStream { public: enum { bufSize = 1024 }; struct Block { Block *next; char buf[bufSize]; }; class Iter { public: Iter(const TmpOutputByteStream &sb) : block_(sb.head_), lastBlockUsed_(sb.lastBlockUsed()) { } bool next(const char *&p, size_t &n) { if (block_) { p = block_->buf; n = block_->next ? TmpOutputByteStream::bufSize : lastBlockUsed_; block_ = block_->next; return 1; } else return 0; } private: Block *block_; size_t lastBlockUsed_; }; TmpOutputByteStream(); ~TmpOutputByteStream(); bool isEmpty() { return head_ == 0; } void flush(); void flushBuf(char ch); private: friend class Iter; size_t lastBlockUsed() const { return last_ ? (ptr_ - last_->buf) : 0; } unsigned nFullBlocks_; Block *head_; Block *last_; }; #ifdef DSSSL_NAMESPACE } #endif #endif /* not OutputByteStream_INCLUDED */ openjade-1.3.2/jade/TransformFOTBuilder.cxx0100664000076400007640000003625107572421367016723 0ustar ianian// Copyright (c) 1997 James Clark // See the file copying.txt for copying permission. #include "config.h" #include "TransformFOTBuilder.h" #include "FOTBuilder.h" #include "OutputCharStream.h" #include "MessageArg.h" #include "ErrnoMessageArg.h" #include #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif const char RE = '\r'; class TransformFOTBuilder : public SerialFOTBuilder { public: // SGML Transformations struct DocumentTypeNIC { ~DocumentTypeNIC(); StringC name; StringC publicId; StringC systemId; }; struct ElementNIC { ~ElementNIC(); StringC gi; Vector attributes; }; class TransformExtensionFlowObj : public FOTBuilder::ExtensionFlowObj { public: virtual void atomic(TransformFOTBuilder &, const NodePtr &) const = 0; }; class TransformCompoundExtensionFlowObj : public FOTBuilder::CompoundExtensionFlowObj { public: virtual void start(TransformFOTBuilder &, const NodePtr &) const = 0; virtual void end(TransformFOTBuilder &) const = 0; }; class EntityRefFlowObj : public TransformExtensionFlowObj { public: void atomic(TransformFOTBuilder &fotb, const NodePtr &) const { fotb.entityRef(name_); } bool hasNIC(const StringC &name) const { return name == "name"; } void setNIC(const StringC &name, const Value &value) { value.convertString(name_); } ExtensionFlowObj *copy() const { return new EntityRefFlowObj(*this); } private: StringC name_; }; class ProcessingInstructionFlowObj : public TransformExtensionFlowObj { public: void atomic(TransformFOTBuilder &fotb, const NodePtr &) const { fotb.processingInstruction(data_); } bool hasNIC(const StringC &name) const { return name.size() == 4 && name[0] == 'd' && name[1] == 'a' && name[2] == 't' && name[3] == 'a'; } void setNIC(const StringC &name, const Value &value) { value.convertString(data_); } ExtensionFlowObj *copy() const { return new ProcessingInstructionFlowObj(*this); } private: StringC data_; }; class EmptyElementFlowObj : public TransformExtensionFlowObj { void atomic(TransformFOTBuilder &fotb, const NodePtr &nd) const { if (nic_.gi.size() > 0) fotb.emptyElement(nic_); else { GroveString str; if (nd && nd->getGi(str) == accessOK) { ElementNIC tem(nic_); tem.gi.assign(str.data(), str.size()); fotb.emptyElement(tem); } else fotb.emptyElement(nic_); } } bool hasNIC(const StringC &name) const { return name == "gi" || name == "attributes"; } void setNIC(const StringC &name, const Value &value) { switch (name[0]) { case 'g': value.convertString(nic_.gi); break; case 'a': value.convertStringPairList(nic_.attributes); break; } } ExtensionFlowObj *copy() const { return new EmptyElementFlowObj(*this); } private: ElementNIC nic_; }; class ElementFlowObj : public TransformCompoundExtensionFlowObj { void start(TransformFOTBuilder &fotb, const NodePtr &nd) const { if (nic_.gi.size() > 0) fotb.startElement(nic_); else { GroveString str; if (nd && nd->getGi(str) == accessOK) { ElementNIC tem(nic_); tem.gi.assign(str.data(), str.size()); fotb.startElement(tem); } else fotb.startElement(nic_); } } void end(TransformFOTBuilder &fotb) const { fotb.endElement(); } bool hasNIC(const StringC &name) const { return name == "gi" || name == "attributes"; } void setNIC(const StringC &name, const Value &value) { switch (name[0]) { case 'g': value.convertString(nic_.gi); break; case 'a': value.convertStringPairList(nic_.attributes); break; } } ExtensionFlowObj *copy() const { return new ElementFlowObj(*this); } private: ElementNIC nic_; }; class EntityFlowObj : public TransformCompoundExtensionFlowObj { void start(TransformFOTBuilder &fotb, const NodePtr &) const { fotb.startEntity(systemId_); } void end(TransformFOTBuilder &fotb) const { fotb.endEntity(); } bool hasNIC(const StringC &name) const { return name == "system-id"; } void setNIC(const StringC &name, const Value &value) { value.convertString(systemId_); } ExtensionFlowObj *copy() const { return new EntityFlowObj(*this); } private: StringC systemId_; }; class DocumentTypeFlowObj : public TransformExtensionFlowObj { void atomic(TransformFOTBuilder &fotb, const NodePtr &nd) const { fotb.documentType(nic_); } bool hasNIC(const StringC &name) const { return name == "system-id" || name == "public-id" || name == "name"; } void setNIC(const StringC &name, const Value &value) { switch (name[0]) { case 's': value.convertString(nic_.systemId); break; case 'p': value.convertString(nic_.publicId); break; case 'n': value.convertString(nic_.name); break; } } ExtensionFlowObj *copy() const { return new DocumentTypeFlowObj(*this); } private: DocumentTypeNIC nic_; }; TransformFOTBuilder(CmdLineApp *, bool xml, const Vector &options); ~TransformFOTBuilder(); void startElement(const ElementNIC &); void endElement(); void emptyElement(const ElementNIC &); void characters(const Char *s, size_t n); void charactersFromNode(const NodePtr &, const Char *, size_t); void processingInstruction(const StringC &); void documentType(const DocumentTypeNIC &); void formattingInstruction(const StringC &); void entityRef(const StringC &); void startEntity(const StringC &); void endEntity(); void extension(const ExtensionFlowObj &fo, const NodePtr &); void startExtensionSerial(const CompoundExtensionFlowObj &fo, const NodePtr &nd); void endExtensionSerial(const CompoundExtensionFlowObj &fo); void start(); void end(); void setPreserveSdata(bool); private: TransformFOTBuilder(const TransformFOTBuilder &); void operator=(const TransformFOTBuilder &); OutputCharStream &os() { return *os_; } void attributes(const Vector &atts); void flushPendingRe() { if (state_ == statePendingRe) { os() << RE; state_ = stateMiddle; } } void flushPendingReCharRef() { if (state_ == statePendingRe) { os() << " "; state_ = stateMiddle; } } CmdLineApp *app_; OutputCharStream *os_; Owner topOs_; Vector openElements_; StringC undefGi_; struct OpenFile : Link { ~OpenFile(); OutputCharStream *saveOs; // fb must be before os so it gets destroyed afterwards FileOutputByteStream fb; Owner os; StringC systemId; }; IList openFileStack_; bool xml_; enum ReState { stateMiddle, stateStartOfElement, statePendingRe }; ReState state_; bool preserveSdata_; char RE_[2]; char SP_[2]; // Really Vector StringC preserveSdataStack_; }; FOTBuilder *makeTransformFOTBuilder(CmdLineApp *app, bool xml, const Vector &options, const FOTBuilder::Extension *&ext) { static const TransformFOTBuilder::ProcessingInstructionFlowObj pi; static const TransformFOTBuilder::ElementFlowObj element; static const TransformFOTBuilder::EmptyElementFlowObj emptyElement; static const TransformFOTBuilder::EntityFlowObj entity; static const TransformFOTBuilder::EntityRefFlowObj entityRef; static const TransformFOTBuilder::DocumentTypeFlowObj documentType; static const FOTBuilder::Extension extensions[] = { { "UNREGISTERED::James Clark//Flow Object Class::processing-instruction", 0, 0, 0, 0, &pi }, { "UNREGISTERED::James Clark//Flow Object Class::element", 0, 0, 0, 0, &element }, { "UNREGISTERED::James Clark//Flow Object Class::empty-element", 0, 0, 0, 0, &emptyElement }, { "UNREGISTERED::James Clark//Flow Object Class::entity", 0, 0, 0, 0, &entity }, { "UNREGISTERED::James Clark//Flow Object Class::entity-ref", 0, 0, 0, 0, &entityRef }, { "UNREGISTERED::James Clark//Flow Object Class::document-type", 0, 0, 0, 0, &documentType }, { "UNREGISTERED::James Clark//Characteristic::preserve-sdata?", (void (FOTBuilder::*)(bool))&TransformFOTBuilder::setPreserveSdata, 0, 0, 0, 0 }, { 0 } }; ext = extensions; return new TransformFOTBuilder(app, xml, options); } static void outputNumericCharRef(OutputCharStream &os, Char c) { os << "&#" << (unsigned long)c << ';'; } TransformFOTBuilder::TransformFOTBuilder(CmdLineApp *app, bool xml, const Vector &options) : app_(app), xml_(xml), topOs_(new RecordOutputCharStream(app->makeStdOut())), state_(stateMiddle), preserveSdata_(0) { undefGi_ = app_->systemCharset().execToDesc("#UNDEF"); topOs_->setEscaper(outputNumericCharRef); os_ = topOs_.pointer(); preserveSdataStack_ += 0; RE_[0] = RE; RE_[1] = 0; SP_[0] = RE; SP_[1] = 0; for (size_t i = 0; i < options.size(); i++) { if (options[i] == app_->systemCharset().execToDesc("raw")) { RE_[0] = 0; SP_[0] = ' '; } } } TransformFOTBuilder::~TransformFOTBuilder() { } static bool contains(const StringC &str, Char c) { for (size_t i = 0; i < str.size(); i++) if (str[i] == c) return 1; return 0; } void TransformFOTBuilder::documentType(const DocumentTypeNIC &nic) { flushPendingRe(); if (nic.name.size()) { os() << "' << RE; } atomic(); } void TransformFOTBuilder::attributes(const Vector &atts) { for (size_t i = 0; i < atts.size(); i += 2) { os() << SP_ << atts[i] << '='; const StringC &s = atts[i + 1]; char quoteChar = 0; if (!contains(s, '&')) if (!contains(s, '"')) quoteChar = '"'; else if (!contains(s, '\'')) quoteChar = '\''; if (quoteChar) os() << quoteChar << s << quoteChar; else { os() << '"'; for (size_t j = 0; j < s.size(); j++) { if (s[j] == '"') { if (xml_) os() << """; else outputNumericCharRef(os(), '"'); } else if (s[j] == '&' ) { if (xml_) os() << "&"; else outputNumericCharRef(os(), '&'); } else os().put(s[j]); } os() << '"'; } } } void TransformFOTBuilder::startElement(const ElementNIC &nic) { flushPendingRe(); os() << "<"; const StringC &s = nic.gi.size() == 0 ? undefGi_ : nic.gi; os() << s; attributes(nic.attributes); os() << RE_ << '>'; openElements_.push_back(s); start(); state_ = stateStartOfElement; } void TransformFOTBuilder::emptyElement(const ElementNIC &nic) { flushPendingRe(); os() << "<"; const StringC &s = nic.gi.size() == 0 ? undefGi_ : nic.gi; os() << s; attributes(nic.attributes); if (xml_) os() << "/>"; else os() << '>'; atomic(); state_ = stateMiddle; } void TransformFOTBuilder::endElement() { flushPendingReCharRef(); os() << "'; openElements_.resize(openElements_.size() - 1); end(); state_ = stateMiddle; } void TransformFOTBuilder::processingInstruction(const StringC &s) { flushPendingReCharRef(); os() << ""; else os() << '>'; atomic(); } void TransformFOTBuilder::formattingInstruction(const StringC &s) { flushPendingRe(); os() << s; } void TransformFOTBuilder::entityRef(const StringC &s) { flushPendingRe(); os() << "&" << s << ";"; } void TransformFOTBuilder::startEntity(const StringC &systemId) { flushPendingRe(); OpenFile *ofp = new OpenFile; openFileStack_.insert(ofp); ofp->systemId = systemId; ofp->saveOs = os_; String filename; #ifdef SP_WIDE_SYSTEM filename = systemId; #else filename = app_->codingSystem()->convertOut(systemId); #endif if (filename.size()) { filename += 0; if (!ofp->fb.open(filename.data())) { app_->message(CmdLineApp::openFileErrorMessage(), StringMessageArg(systemId), ErrnoMessageArg(errno)); } else { ofp->os = new RecordOutputCharStream( new EncodeOutputCharStream(&ofp->fb, app_->outputCodingSystem())); ofp->os->setEscaper(outputNumericCharRef); os_ = ofp->os.pointer(); } } } void TransformFOTBuilder::endEntity() { flushPendingRe(); OpenFile &of = *openFileStack_.head(); if (of.os) { errno = 0; of.os->flush(); if (!of.fb.close()) app_->message(CmdLineApp::closeFileErrorMessage(), StringMessageArg(of.systemId), ErrnoMessageArg(errno)); } os_ = of.saveOs; delete openFileStack_.get(); } inline OutputCharStream &operator<<(OutputCharStream &os, GroveString &str) { return os.write(str.data(), str.size()); } void TransformFOTBuilder::charactersFromNode(const NodePtr &nd, const Char *s, size_t n) { GroveString name; if (preserveSdata_ && n == 1 && nd->getEntityName(name) == accessOK) { flushPendingRe(); os() << "&" << name << ';'; } else TransformFOTBuilder::characters(s, n); } void TransformFOTBuilder::characters(const Char *s, size_t n) { if (n == 0) return; flushPendingRe(); if (state_ == stateStartOfElement && *s == RE) { s++; n--; os() << " "; if (n == 0) { state_ = stateMiddle; return; } } if (s[n - 1] == RE) { n--; state_ = statePendingRe; } else state_ = stateMiddle; for (; n > 0; n--, s++) { switch (*s) { case '&': if (xml_) os() << "&"; else outputNumericCharRef(os(), *s); break; case '<': if (xml_) os() << "<"; else outputNumericCharRef(os(), *s); break; case '>': if (xml_) os() << ">"; else outputNumericCharRef(os(), *s); break; default: os().put(*s); break; } } } void TransformFOTBuilder::extension(const ExtensionFlowObj &fo, const NodePtr &nd) { ((const TransformExtensionFlowObj &)fo).atomic(*this, nd); } void TransformFOTBuilder::startExtensionSerial(const CompoundExtensionFlowObj &fo, const NodePtr &nd) { ((const TransformCompoundExtensionFlowObj &)fo).start(*this, nd); } void TransformFOTBuilder::endExtensionSerial(const CompoundExtensionFlowObj &fo) { ((const TransformCompoundExtensionFlowObj &)fo).end(*this); } void TransformFOTBuilder::setPreserveSdata(bool b) { preserveSdata_ = b; } void TransformFOTBuilder::start() { preserveSdataStack_ += Char(preserveSdata_); } void TransformFOTBuilder::end() { preserveSdataStack_.resize(preserveSdataStack_.size() - 1); preserveSdata_ = bool(preserveSdataStack_[preserveSdataStack_.size() - 1]); } TransformFOTBuilder::OpenFile::~OpenFile() { } TransformFOTBuilder::DocumentTypeNIC::~DocumentTypeNIC() { } TransformFOTBuilder::ElementNIC::~ElementNIC() { } #ifdef DSSSL_NAMESPACE } #endif #include "TransformFOTBuilder_inst.cxx" openjade-1.3.2/jade/TransformFOTBuilder.h0100664000076400007640000000077007001713047016327 0ustar ianian// Copyright (c) 1997 James Clark // See the file copying.txt for copying permission. #ifndef TransformFOTBuilder_INCLUDED #define TransformFOTBuilder_INCLUDED 1 #include "FOTBuilder.h" #include "CmdLineApp.h" #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif FOTBuilder *makeTransformFOTBuilder(CmdLineApp *app, bool xml, const Vector &options, const FOTBuilder::Extension *&); #ifdef DSSSL_NAMESPACE } #endif #endif /* not TransformFOTBuilder_INCLUDED */ openjade-1.3.2/jade/TransformFOTBuilder_inst.m40100664000076400007640000000056706713045151017464 0ustar ianian// Copyright (c) 1997 James Clark // See the file COPYING for copying permission. #include "config.h" #ifdef SP_MANUAL_INST #define SP_DEFINE_TEMPLATES #include "IList.h" #undef SP_DEFINE_TEMPLATES #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif __instantiate(IList) #ifdef DSSSL_NAMESPACE } #endif #endif /* SP_MANUAL_INST */ openjade-1.3.2/jade/jade.cxx0100664000076400007640000001104607001713047013750 0ustar ianian// Copyright (c) 1996 James Clark // See the file copying.txt for copying permission. #include "config.h" #include "DssslApp.h" #include "SgmlFOTBuilder.h" #include "RtfFOTBuilder.h" #include "TeXFOTBuilder.h" #include "TransformFOTBuilder.h" #ifdef JADE_HTML #include "HtmlFOTBuilder.h" #endif #ifdef JADE_MIF #include "MifFOTBuilder.h" #endif #include "OutputCharStream.h" #include "macros.h" #include "sptchar.h" #include "JadeMessages.h" #include "ErrnoMessageArg.h" #include "OutputByteStream.h" #include #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif class JadeApp : public DssslApp { public: enum { u = 72000 }; JadeApp(); void processOption(AppChar opt, const AppChar *arg); FOTBuilder *makeFOTBuilder(const FOTBuilder::Extension *&); private: enum OutputType { fotType, rtfType, #ifdef JADE_HTML htmlType, #endif texType, #ifdef JADE_MIF mifType, #endif sgmlType, xmlType }; static const AppChar *const outputTypeNames[]; OutputType outputType_; String outputFilename_; Vector outputOptions_; FileOutputByteStream outputFile_; }; const JadeApp::AppChar *const JadeApp::outputTypeNames[] = { SP_T("fot"), SP_T("rtf"), #ifdef JADE_HTML SP_T("html"), #endif SP_T("tex"), #ifdef JADE_MIF SP_T("mif"), #endif SP_T("sgml"), SP_T("xml") }; JadeApp::JadeApp() : DssslApp(u), outputType_(fotType) { registerOption('t', #ifdef JADE_MIF SP_T("(fot|rtf|tex|mif|sgml|xml)") #else SP_T("(fot|rtf|tex|sgml|xml)") #endif ); registerOption('o', SP_T("output_file")); } void JadeApp::processOption(AppChar opt, const AppChar *arg) { switch (opt) { case 't': { const AppChar *sub = tcschr(arg, SP_T('-')); size_t len = sub ? sub - arg : tcslen(arg); for (size_t i = 0;; i++) { if (i >= SIZEOF(outputTypeNames)) { message(JadeMessages::unknownType, StringMessageArg(convertInput(arg))); break; } if (tcsncmp(arg, outputTypeNames[i], len) == 0) { outputType_ = OutputType(i); break; } } if (sub) { StringC tem(convertInput(sub)); StringC arg; for (size_t i = 0; i < tem.size(); i++) { if (tem[i] == '-') { if (arg.size()) outputOptions_.push_back(arg); arg.resize(0); } else arg += tem[i]; } if (arg.size()) outputOptions_.push_back(arg); } } break; case 'o': if (*arg == 0) message(JadeMessages::emptyOutputFilename); else outputFilename_.assign(arg, tcslen(arg)); break; default: DssslApp::processOption(opt, arg); break; } } FOTBuilder *JadeApp::makeFOTBuilder(const FOTBuilder::Extension *&exts) { if (outputFilename_.size() == 0) { if (defaultOutputBasename_.size() != 0) { #ifdef SP_WIDE_SYSTEM outputFilename_ = defaultOutputBasename_; #else outputFilename_ = codingSystem()->convertOut(defaultOutputBasename_); // convertOut adds a nul outputFilename_.resize(outputFilename_.size() - 1); #endif } else outputFilename_.assign(SP_T("jade-out"), 8); outputFilename_ += SP_T('.'); const AppChar *ext = outputTypeNames[outputType_]; outputFilename_.append(ext, tcslen(ext)); } switch (outputType_) { #ifdef JADE_HTML case htmlType: #endif case sgmlType: case xmlType: break; default: outputFilename_ += 0; if (!outputFile_.open(outputFilename_.data())) { message(JadeMessages::cannotOpenOutputError, StringMessageArg(CmdLineApp::convertInput(outputFilename_.data())), ErrnoMessageArg(errno)); return 0; } break; } switch (outputType_) { case rtfType: unitsPerInch_ = 20*72; // twips return makeRtfFOTBuilder(&outputFile_, outputOptions_, entityManager(), systemCharset(), this, exts); case texType: return makeTeXFOTBuilder(&outputFile_, this, exts); #ifdef JADE_HTML case htmlType: return makeHtmlFOTBuilder(outputFilename_, this, exts); #endif /* JADE_HTML */ #ifdef JADE_MIF case mifType: return makeMifFOTBuilder(outputFilename_, entityManager(), systemCharset(), this, exts); #endif /* JADE_MIF */ case fotType: return makeSgmlFOTBuilder(new RecordOutputCharStream(new EncodeOutputCharStream(&outputFile_, outputCodingSystem_))); case sgmlType: case xmlType: return makeTransformFOTBuilder(this, outputType_ == xmlType, outputOptions_, exts); default: break; } CANNOT_HAPPEN(); return 0; } #ifdef DSSSL_NAMESPACE } #endif #ifdef DSSSL_NAMESPACE SP_DEFINE_APP(DSSSL_NAMESPACE::JadeApp) #else SP_DEFINE_APP(JadeApp) #endif openjade-1.3.2/jade/jade.dsp0100664000076400007640000003360006762456145013754 0ustar ianian# Microsoft Developer Studio Project File - Name="jade" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=jade - Win32 Release !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "jade.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "jade.mak" CFG="jade - Win32 Release" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "jade - Win32 Release" (based on "Win32 (x86) Console Application") !MESSAGE "jade - Win32 Debug" (based on "Win32 (x86) Console Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "jade - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir ".\Release" # PROP BASE Intermediate_Dir ".\Release" # PROP BASE Target_Dir "." # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir ".\Release" # PROP Intermediate_Dir ".\Release" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "." # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "JADE_HTML" /D "JADE_MIF" /YX /c # ADD CPP /nologo /MD /W3 /GX /O2 /I "..\include" /I "..\style" /I "..\grove" /I "..\spgrove" /D "_CONSOLE" /D "NDEBUG" /D DSSSL_NAMESPACE=James_Clark_DSSSL /D "WIN32" /D SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D "SP_MULTI_BYTE" /D "JADE_HTML" /D "JADE_MIF" /YX /FD /c # ADD BASE RSC /l 0x809 /d "NDEBUG" # ADD RSC /l 0x809 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"..\bin\openjade.exe" # SUBTRACT LINK32 /profile /map !ELSEIF "$(CFG)" == "jade - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir ".\Debug" # PROP BASE Intermediate_Dir ".\Debug" # PROP BASE Target_Dir "." # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir ".\Debug" # PROP Intermediate_Dir ".\Debug" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "." # ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "JADE_HTML" /D "JADE_MIF" /YX /c # ADD CPP /nologo /MDd /W3 /GX /ZI /Od /I "..\include" /I "..\style" /I "..\grove" /I "..\spgrove" /D "_CONSOLE" /D "_DEBUG" /D DSSSL_NAMESPACE=James_Clark_DSSSL /D "WIN32" /D SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D "SP_MULTI_BYTE" /D "JADE_HTML" /D "JADE_MIF" /YX /FD /c # ADD BASE RSC /l 0x809 /d "_DEBUG" # ADD RSC /l 0x809 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"..\dbgbin\openjade.exe" # SUBTRACT LINK32 /incremental:no !ENDIF # Begin Target # Name "jade - Win32 Release" # Name "jade - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;for;f90" # Begin Source File SOURCE=..\dsssl\fot.dtd # End Source File # Begin Source File SOURCE=.\HtmlFOTBuilder.cxx # End Source File # Begin Source File SOURCE=.\HtmlFOTBuilder_inst.m4 !IF "$(CFG)" == "jade - Win32 Release" # Begin Custom Build - Processing $(InputPath) InputDir=. InputPath=.\HtmlFOTBuilder_inst.m4 InputName=HtmlFOTBuilder_inst "$(InputDir)\$(InputName).cxx" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" del /f $(InputDir)\$(InputName).cxx perl ..\lib\instmac.pl $(InputPath) >$(InputDir)\$(InputName).cxx attrib +r $(InputDir)\$(InputName).cxx # End Custom Build !ELSEIF "$(CFG)" == "jade - Win32 Debug" # Begin Custom Build - Processing $(InputPath) InputDir=. InputPath=.\HtmlFOTBuilder_inst.m4 InputName=HtmlFOTBuilder_inst "$(InputDir)\$(InputName).cxx" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" del /f $(InputDir)\$(InputName).cxx perl ..\lib\instmac.pl $(InputPath) >$(InputDir)\$(InputName).cxx attrib +r $(InputDir)\$(InputName).cxx # End Custom Build !ENDIF # End Source File # Begin Source File SOURCE=.\HtmlMessages.msg !IF "$(CFG)" == "jade - Win32 Release" # Begin Custom Build - Processing $(InputPath) InputDir=. InputPath=.\HtmlMessages.msg InputName=HtmlMessages "$(InputDir)\$(InputName).h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" perl -w ..\msggen.pl $(InputPath) # End Custom Build !ELSEIF "$(CFG)" == "jade - Win32 Debug" # Begin Custom Build - Processing $(InputPath) InputDir=. InputPath=.\HtmlMessages.msg InputName=HtmlMessages "$(InputDir)\$(InputName).h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" perl -w ..\msggen.pl $(InputPath) # End Custom Build !ENDIF # End Source File # Begin Source File SOURCE=.\jade.cxx # End Source File # Begin Source File SOURCE=.\JadeMessages.msg !IF "$(CFG)" == "jade - Win32 Release" # Begin Custom Build - Processing $(InputPath) InputDir=. InputPath=.\JadeMessages.msg InputName=JadeMessages "$(InputDir)\$(InputName).h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" perl -w ..\msggen.pl $(InputPath) # End Custom Build !ELSEIF "$(CFG)" == "jade - Win32 Debug" # Begin Custom Build - Processing $(InputPath) InputDir=. InputPath=.\JadeMessages.msg InputName=JadeMessages "$(InputDir)\$(InputName).h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" perl -w ..\msggen.pl $(InputPath) # End Custom Build !ENDIF # End Source File # Begin Source File SOURCE=.\MifFOTBuilder.cxx # End Source File # Begin Source File SOURCE=.\MifFOTBuilder_inst.m4 !IF "$(CFG)" == "jade - Win32 Release" # Begin Custom Build - Processing $(InputPath) InputDir=. InputPath=.\MifFOTBuilder_inst.m4 InputName=MifFOTBuilder_inst "$(InputDir)\$(InputName).cxx" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" del /f $(InputDir)\$(InputName).cxx perl ..\lib\instmac.pl $(InputPath) >$(InputDir)\$(InputName).cxx attrib +r $(InputDir)\$(InputName).cxx # End Custom Build !ELSEIF "$(CFG)" == "jade - Win32 Debug" # Begin Custom Build - Processing $(InputPath) InputDir=. InputPath=.\MifFOTBuilder_inst.m4 InputName=MifFOTBuilder_inst "$(InputDir)\$(InputName).cxx" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" del /f $(InputDir)\$(InputName).cxx perl ..\lib\instmac.pl $(InputPath) >$(InputDir)\$(InputName).cxx attrib +r $(InputDir)\$(InputName).cxx # End Custom Build !ENDIF # End Source File # Begin Source File SOURCE=.\MifMessages.msg !IF "$(CFG)" == "jade - Win32 Release" # Begin Custom Build - Processing $(InputPath) InputDir=. InputPath=.\MifMessages.msg InputName=MifMessages "$(InputDir)\$(InputName).h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" perl -w ..\msggen.pl $(InputPath) # End Custom Build !ELSEIF "$(CFG)" == "jade - Win32 Debug" # Begin Custom Build - Processing $(InputPath) InputDir=. InputPath=.\MifMessages.msg InputName=MifMessages "$(InputDir)\$(InputName).h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" perl -w ..\msggen.pl $(InputPath) # End Custom Build !ENDIF # End Source File # Begin Source File SOURCE=.\RtfFOTBuilder.cxx # End Source File # Begin Source File SOURCE=.\RtfFOTBuilder_inst.m4 !IF "$(CFG)" == "jade - Win32 Release" # Begin Custom Build - Processing $(InputPath) InputDir=. InputPath=.\RtfFOTBuilder_inst.m4 InputName=RtfFOTBuilder_inst "$(InputDir)\$(InputName).cxx" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" del /f $(InputDir)\$(InputName).cxx perl ..\lib\instmac.pl $(InputPath) >$(InputDir)\$(InputName).cxx attrib +r $(InputDir)\$(InputName).cxx # End Custom Build !ELSEIF "$(CFG)" == "jade - Win32 Debug" # Begin Custom Build - Processing $(InputPath) InputDir=. InputPath=.\RtfFOTBuilder_inst.m4 InputName=RtfFOTBuilder_inst "$(InputDir)\$(InputName).cxx" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" del /f $(InputDir)\$(InputName).cxx perl ..\lib\instmac.pl $(InputPath) >$(InputDir)\$(InputName).cxx attrib +r $(InputDir)\$(InputName).cxx # End Custom Build !ENDIF # End Source File # Begin Source File SOURCE=.\RtfMessages.msg !IF "$(CFG)" == "jade - Win32 Release" # Begin Custom Build - Processing $(InputPath) InputDir=. InputPath=.\RtfMessages.msg InputName=RtfMessages "$(InputDir)\$(InputName).h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" perl -w ..\msggen.pl $(InputPath) # End Custom Build !ELSEIF "$(CFG)" == "jade - Win32 Debug" # Begin Custom Build - Processing $(InputPath) InputDir=. InputPath=.\RtfMessages.msg InputName=RtfMessages "$(InputDir)\$(InputName).h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" perl -w ..\msggen.pl $(InputPath) # End Custom Build !ENDIF # End Source File # Begin Source File SOURCE=.\RtfOle.cxx # End Source File # Begin Source File SOURCE=.\SgmlFOTBuilder.cxx # End Source File # Begin Source File SOURCE=.\TeXFOTBuilder.cxx # End Source File # Begin Source File SOURCE=.\TeXFOTBuilder_inst.m4 !IF "$(CFG)" == "jade - Win32 Release" # Begin Custom Build - Processing $(InputPath) InputDir=. InputPath=.\TeXFOTBuilder_inst.m4 InputName=TeXFOTBuilder_inst "$(InputDir)\$(InputName).cxx" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" del /f $(InputDir)\$(InputName).cxx perl ..\lib\instmac.pl $(InputPath) >$(InputDir)\$(InputName).cxx attrib +r $(InputDir)\$(InputName).cxx # End Custom Build !ELSEIF "$(CFG)" == "jade - Win32 Debug" # Begin Custom Build - Processing $(InputPath) InputDir=. InputPath=.\TeXFOTBuilder_inst.m4 InputName=TeXFOTBuilder_inst "$(InputDir)\$(InputName).cxx" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" del /f $(InputDir)\$(InputName).cxx perl ..\lib\instmac.pl $(InputPath) >$(InputDir)\$(InputName).cxx attrib +r $(InputDir)\$(InputName).cxx # End Custom Build !ENDIF # End Source File # Begin Source File SOURCE=.\TeXMessages.msg !IF "$(CFG)" == "jade - Win32 Release" # Begin Custom Build - Processing $(InputPath) InputDir=. InputPath=.\TeXMessages.msg InputName=TeXMessages "$(InputDir)\$(InputName).h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" perl -w ..\msggen.pl $(InputPath) # End Custom Build !ELSEIF "$(CFG)" == "jade - Win32 Debug" # Begin Custom Build - Processing $(InputPath) InputDir=. InputPath=.\TeXMessages.msg InputName=TeXMessages "$(InputDir)\$(InputName).h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" perl -w ..\msggen.pl $(InputPath) # End Custom Build !ENDIF # End Source File # Begin Source File SOURCE=.\TransformFOTBuilder.cxx # End Source File # Begin Source File SOURCE=.\TransformFOTBuilder_inst.m4 !IF "$(CFG)" == "jade - Win32 Release" # Begin Custom Build - Processing $(InputPath) InputDir=. InputPath=.\TransformFOTBuilder_inst.m4 InputName=TransformFOTBuilder_inst "$(InputDir)\$(InputName).cxx" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" del /f $(InputDir)\$(InputName).cxx perl ..\lib\instmac.pl $(InputPath) >$(InputDir)\$(InputName).cxx attrib +r $(InputDir)\$(InputName).cxx # End Custom Build !ELSEIF "$(CFG)" == "jade - Win32 Debug" # Begin Custom Build - Processing $(InputPath) InputDir=. InputPath=.\TransformFOTBuilder_inst.m4 InputName=TransformFOTBuilder_inst "$(InputDir)\$(InputName).cxx" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" del /f $(InputDir)\$(InputName).cxx perl ..\lib\instmac.pl $(InputPath) >$(InputDir)\$(InputName).cxx attrib +r $(InputDir)\$(InputName).cxx # End Custom Build !ENDIF # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd" # Begin Source File SOURCE=.\HtmlMessages.h # End Source File # Begin Source File SOURCE=.\JadeMessages.h # End Source File # Begin Source File SOURCE=.\MifFOTBuilder.h # End Source File # Begin Source File SOURCE=.\MifMessages.h # End Source File # Begin Source File SOURCE=.\RtfFOTBuilder.h # End Source File # Begin Source File SOURCE=.\RtfMessages.h # End Source File # Begin Source File SOURCE=.\RtfOle.h # End Source File # Begin Source File SOURCE=.\TeXFOTBuilder.h # End Source File # Begin Source File SOURCE=.\TeXMessages.h # End Source File # Begin Source File SOURCE=.\TmpOutputByteStream.h # End Source File # Begin Source File SOURCE=.\TransformFOTBuilder.h # End Source File # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe" # Begin Source File SOURCE=..\style\DssslAppMessages.rc # PROP Exclude_From_Build 1 # End Source File # Begin Source File SOURCE=.\HtmlMessages.rc # PROP Exclude_From_Build 1 # End Source File # Begin Source File SOURCE=..\style\InterpreterMessages.rc # PROP Exclude_From_Build 1 # End Source File # Begin Source File SOURCE=.\jade.rc # ADD BASE RSC /l 0x809 /i "jade" # ADD RSC /l 0x809 /i "." /i "..\style" /i "jade" /d "JADE_MIF" # End Source File # Begin Source File SOURCE=.\JadeMessages.rc # PROP Exclude_From_Build 1 # End Source File # Begin Source File SOURCE=.\RtfMessages.rc # PROP Exclude_From_Build 1 # End Source File # Begin Source File SOURCE=.\TeXMessages.rc # PROP Exclude_From_Build 1 # End Source File # End Group # Begin Source File SOURCE=.\HtmlFOTBuilder_inst.cxx # PROP Ignore_Default_Tool 1 # End Source File # Begin Source File SOURCE=.\MifFOTBuilder_inst.cxx # PROP Ignore_Default_Tool 1 # End Source File # Begin Source File SOURCE=.\RtfFOTBuilder_inst.cxx # PROP Ignore_Default_Tool 1 # End Source File # Begin Source File SOURCE=.\TeXFOTBuilder_inst.cxx # PROP Ignore_Default_Tool 1 # End Source File # Begin Source File SOURCE=.\TransformFOTBuilder_inst.cxx # PROP Ignore_Default_Tool 1 # End Source File # End Target # End Project openjade-1.3.2/jade/jade.rc0100664000076400007640000000046306713071375013565 0ustar ianian// Copyright (c) 1996 James Clark // See the file copying.txt for copying permission. #include "InterpreterMessages.rc" #include "JadeMessages.rc" #include "DssslAppMessages.rc" #include "HtmlMessages.rc" #include "RtfMessages.rc" #include "TeXMessages.rc" #ifdef JADE_MIF #include "MifMessages.rc" #endif openjade-1.3.2/jadedist/0040775000076400007640000000000007572430623013217 5ustar ianianopenjade-1.3.2/jadedist/bin-files.txt0100664000076400007640000000225006760210363015617 0ustar ianiandoc\archform.htm doc\build.htm doc\catalog.htm doc\charset.htm doc\features.htm doc\generic.htm doc\ideas.htm doc\index.htm doc\new.htm doc\nsgmls.htm doc\sgmldecl.htm doc\sgmlnorm.htm doc\sgmlsout.htm doc\spam.htm doc\spent.htm doc\sx.htm doc\sysdecl.htm doc\sysid.htm doc\xml.htm dsssl\builtins.dsl dsssl\extensions.dsl dsssl\style-sheet.dtd dsssl\fot.dtd dsssl\dsssl.dtd dsssl\demo.sgm dsssl\demo.dsl dsssl\catalog dsssl\jadetex.dtx dsssl\jadetex.ini dsssl\jadetex.ins dsssl\pdfjadetex.ini dsssl\Makefile.jadetex bin\sp133.dll bin\style.dll bin\spgrove.dll bin\grove.dll bin\groveoa.dll bin\jade.exe bin\nsgmls.exe bin\spam.exe bin\sgmlnorm.exe bin\spent.exe bin\sx.exe bin\MSVCRT.DLL jadedoc\copying.txt jadedoc\dsssl2.htm jadedoc\jade.htm jadedoc\TeX.htm jadedoc\mif.htm jadedoc\transform.htm pubtext\ISOlat1.ent pubtext\ISOlat1.sgm pubtext\html.soc pubtext\html-1.dtd pubtext\html-1s.dtd pubtext\html-s.dtd pubtext\html.dcl pubtext\html.dtd pubtext\HTML32.dcl pubtext\HTML32.dtd pubtext\HTML32.soc pubtext\HTML4.dcl pubtext\HTML4-s.dtd pubtext\HTML4.dtd pubtext\HTML4-f.dtd pubtext\HTML4.soc pubtext\HTMLlat1.ent pubtext\HTMLspec.ent pubtext\HTMLsym.ent pubtext\xml.dcl pubtext\xml.soc openjade-1.3.2/jadedist/files.txt0100664000076400007640000000711306713071600015051 0ustar ianiangrove/LocNode.h grove/LocNode.cxx grove/Node.h grove/Node.cxx groveoa/CGroveBuilder.cxx groveoa/CGroveBuilder.h groveoa/GroveBuilder.rgs groveoa/GroveNode.cxx groveoa/GroveNode.h groveoa/StdAfx.cxx groveoa/StdAfx.h groveoa/groveoa.cxx groveoa/groveoa.def groveoa/groveoa.dsp groveoa/groveoa.idl groveoa/groveoa.rc groveoa/resource.h spgrove/GroveApp.h spgrove/GroveBuilder.h spgrove/SdNode.cxx spgrove/SdNode.h spgrove/threads.h style/charNames.h style/Collector.h style/DssslApp.h style/DssslSpecEventHandler.h style/dsssl_ns.h style/ELObj.h style/ELObjMessageArg.h style/EvalContext.h style/Expression.h style/FOTBuilder.h style/GroveManager.h style/Insn.h style/Insn2.h style/Interpreter.h style/InterpreterMessages.h style/jade_version.h style/MacroFlowObj.h style/NumberCache.h style/primitive.h style/Pattern.h style/ProcessContext.h style/ProcessingMode.h style/SchemeParser.h style/sdata.h style/SosofoObj.h style/Style.h style/StyleEngine.h style/stylelib.h style/style_pch.h style/VM.h style/Collector.cxx style/DssslApp.cxx style/DssslSpecEventHandler.cxx style/ELObj.cxx style/ELObjMessageArg.cxx style/Expression.cxx style/FOTBuilder.cxx style/GroveManager.cxx style/Insn.cxx style/Interpreter.cxx style/InterpreterMessages.cxx style/MacroFlowObj.cxx style/NumberCache.cxx style/primitive.cxx style/primitive_inst.cxx style/primitive_inst.m4 style/Pattern.cxx style/ProcessContext.cxx style/ProcessingMode.cxx style/SchemeParser.cxx style/Style.cxx style/StyleEngine.cxx style/stylelib.cxx style/style_inst.cxx spgrove/GroveApp.cxx spgrove/GroveBuilder.cxx spgrove/grove_inst.cxx spgrove/grove_inst.m4 style/style_inst.m4 style/DssslAppMessages.h style/DssslAppMessages.msg style/DssslAppMessages.rc style/InterpreterMessages.msg style/InterpreterMessages.rc style/FlowObj.cxx style/InheritedC.cxx style/FlowObj_inst.m4 style/FlowObj_inst.cxx style/common_inst.m4 style/common_inst.cxx grove/Makefile.sub grove/grove.dsp spgrove/Makefile.sub spgrove/spgrove.dsp style/Makefile.sub style/style.dsp jade/jade.cxx jade/Makefile.sub jade/jade.dsp all/all.dsp jade/RtfFOTBuilder.cxx jade/RtfFOTBuilder.h jade/SgmlFOTBuilder.cxx jade/SgmlFOTBuilder.h jade/TransformFOTBuilder.cxx jade/TransformFOTBuilder.h jade/TransformFOTBuilder_inst.cxx jade/TransformFOTBuilder_inst.m4 jade.mak jade.dsw dsssl/demo.dsl dsssl/demo.sgm dsssl/style-sheet.dtd dsssl/dsssl.dtd dsssl/fot.dtd dsssl/catalog dsssl/jadetex.dtx dsssl/jadetex.ini dsssl/jadetex.ins dsssl/pdfjadetex.ini dsssl/Makefile.jadetex jade/HtmlFOTBuilder.cxx jade/HtmlFOTBuilder.h jade/HtmlFOTBuilder_inst.cxx jade/HtmlFOTBuilder_inst.m4 jade/JadeMessages.msg jade/JadeMessages.h jade/JadeMessages.rc jade/jade.rc jade/HtmlMessages.h jade/HtmlMessages.msg jade/HtmlMessages.rc jade/RtfFOTBuilder_inst.cxx jade/RtfFOTBuilder_inst.m4 jade/RtfMessages.h jade/RtfMessages.msg jade/RtfMessages.rc jade/RtfOle.cxx jade/RtfOle.h jade/TeXFOTBuilder.cxx jade/TeXFOTBuilder.h jade/TeXFOTBuilder_inst.cxx jade/TeXFOTBuilder_inst.m4 jade/TeXMessages.h jade/TeXMessages.msg jade/TeXMessages.rc jade/TmpOutputByteStream.h jade/MifFOTBuilder.cxx jade/MifFOTBuilder.h jade/MifFOTBuilder_inst.cxx jade/MifFOTBuilder_inst.m4 jade/MifMessages.h jade/MifMessages.msg jade/MifMessages.rc jadedoc/autoconf.htm jadedoc/copying.txt jadedoc/dsssl2.htm jadedoc/jade.htm jadedoc/TeX.htm jadedoc/mif.htm jadedoc/transform.htm jadedist/bin-files.txt jadedist/files.txt jadedist/makedist.bat jadedist/jadedist.dsp jade-generate.mak Makefile.comm.in Makefile.in Makefile.lib.in Makefile.prog.in config/configure.in config/config.guess config/config.sub config/ltconfig config/ltmain.sh config/aclocal.m4 config/install.sh configure openjade-1.3.2/jadedist/jadedist.dsp0100664000076400007640000000403306713071600015503 0ustar ianian# Microsoft Developer Studio Project File - Name="jadedist" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) External Target" 0x0106 CFG=jadedist - Win32 Release !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "jadedist.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "jadedist.mak" CFG="jadedist - Win32 Release" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "jadedist - Win32 Release" (based on "Win32 (x86) External Target") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir ".\Release" # PROP BASE Intermediate_Dir ".\Release" # PROP BASE Cmd_Line "NMAKE /f jadedist.mak" # PROP BASE Rebuild_Opt "/a" # PROP BASE Target_File "jadedist\jadedist.exe" # PROP BASE Bsc_Name "jadedist\jadedist.bsc" # PROP BASE Target_Dir "." # PROP Use_Debug_Libraries 0 # PROP Output_Dir ".\Release" # PROP Intermediate_Dir ".\Release" # PROP Cmd_Line "makedist" # PROP Rebuild_Opt "" # PROP Target_File "jadedist\jade.zip" # PROP Bsc_Name "" # PROP Target_Dir "." # Begin Target # Name "jadedist - Win32 Release" !IF "$(CFG)" == "jadedist - Win32 Release" !ENDIF # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;for;f90" # Begin Source File SOURCE=".\jadedist\bin-files.txt" # End Source File # Begin Source File SOURCE=.\jadedist\files.txt # End Source File # Begin Source File SOURCE=.\jadedist\makedist.bat # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe" # End Group # End Target # End Project openjade-1.3.2/jadedist/makedist.bat0100664000076400007640000000030506713045040015472 0ustar ianiancopy files.txt+..\FILES all-files.txt cd .. del jadedist\jade.zip del jadedist\jadew.zip zip -q -@ l¸°˘Ä‰-JÔč#ĆŚ ç\I˛¤É“(SŞ\ɲĄË—0cĘśIł¦Í›8sęÜÉł§Ďź@ J´čJV *]Ę´©Ó§PŁJťJµŞŐ«XłjÝʵ«×Ż`ĂB}˘”MYf˛Yv ĄoŃž}ŘIÝ»sŐblËW©Ľrš\–-[ąHD]̸±ăÇ#KžLą˛ĺËa"ËąłçĎ C‹Mştפ_Ô;µîB»M Şn÷#덷™ţ}Zjo„O2 NĽ¸ńăČ“+_ny3Ĺ9F‡Žű9HëץWżÎ]{wę §c˙÷>‘ö ”¨Đ˘HŹ*5Ę4iÓĄ@)V1ZP CĄV4U©“CW ĄH–@V€†®2(–'Ył×ĐŞ=ŘVçŰłiy®Řuh…měş÷ć¶… ˛‚ˇg` ˝y­)´¶31CV* Äęe śťĎrě ­âNÍą¨}íďGÖ­Q‹6 Ăő5k°36Ě;a•<[ňTůó;řđâ‰OŽüřrçĆ•Go.ťůóęĐ­OżN˝;÷çRa8˙QAE…Ë YŤßÉłÔµĽâŮË^}ć‡őĺ; TŢI|Űâß| d…x©F…@9(ĐT[Y\;…6j‡ě$Ů„í$Ř{9•& ąť%™@”-" µe[+:­…™ &”f®5Č–†Ň(aNÂŕŢŚťQ¦d;IXމSą6•ŠĄĺŕm«”– ú¸bi:ą¶5¶hĺ‘’yÍNô8ĺ•–˘“dF"©BŹ0DŁXNCVČ ¨a†%‡Wţčš‘aňUžťŽ…¸˘@m1©‚kbqVP[ˇťv Ą—ňŘš™=Úۧ .ÔO%úf—yµ…ĺQ읨*{?µ˙zŘŞ±jşbO`†Şë®ĽöęëŻŔ{ÓTţŤz“ĺźÍwPyT 8Pł A+í´÷)dmš|íT^NÎ2TTěE.’  äţ5îąävöG»đB©$}Ş;/¤äţqŰąďŐ‹Ż°lđÁ'¬đ 7ěđĂG,ńÄWlńĹg¬ńĆwěńÇ ‡,ňČ$—lňÉ(§śđT±"kĐQž ô™OS¶ŰĚ;Ő<Đ*%âsXąÁדÎgĺTh[šµ—17ąsg2ĘăŚ{éâś×Ě,sĚ9÷5‘ m›Öu)!×@#•fęiPA5Ö#jQh¤“Ҳ†©źr—˙Çb¦*śč˘g±éltýµŘĎ×t˝)Öps;cˇg}+X€řä©¶ĆXîÉ x‘•mý÷ĚĄĹ%ăÎnGÍ6X~†––Фemt”;Á5íf@ÚŽĄźy€dgŤÎŤ8Ůy Ę9ŢrĂTĹóĐG/ýôÔWoýőŘgŻýöŐS4;ŞU:”V±>ukąQ|úFŢSé«>PíH|ýˇ­rBT”zżJQˇűţô!Ń@ ˇIĹ^iqŮLÄm5< t !čź F«‚|ŕ5Á Z°ü CčA¬I„e§ŇßËüó“p%DhŚc ‰6˘ŘfT:qˇ Ďő®¬ ,˙fŚŘE.k´`áĎŔ*×®{ÁK6盛HĹ9ĺŠPÉâS¶E.j±‹W´D¸r±*éY•Ť®Ĺ±J).tc¬ŕxőő'>N±Ś5ÎEś&^c^ĺBË••‘kŃ€—ńő®¤ť‹gä Éĺr…î\ŹáY7ÉÉNzň“  Ą(GIĘRšň”¨˙LĄ*WÉĘVşň•°ŚĄ,g2îŮň–¸ĚĄ.»7/2… UQ!A¬CˇäA…ÄÜâ1'S̡,łSGQ+¶BM@BCK¸ ĂôxH"«ŕ BG“ÍmDR¦ÉÖA±…`~$/şë Ф‘mD+č¤%‰E?ʤ+,üf§ŘŁżůM‰en3A‚Đđ)´sĽ+yhř%géˇtڞÂóň)!čqjhĽÔó:ĂŠ‘ây‚YĹó¬ŕŞ÷@Ź5V„V6j–U0­6áš™łN ®­<ĎJ‡PŰyv=^ÍźÚt§H«@Ěç­ĺ¤!e”GS‡Î@5*=Ť`¸ ¨Va EŇh˙TŁdh$¦3­Š«XŃÎ*°˘<.ôVnJĘT±Ţ«ekQ—j84qˇ1\ŐÝ!˘·•>Ź ©»R0YÁ…*ÔHŻJ}ĎşĐĚ‚‚FˇĐ“M8YĘŐ0qu\?5¬…˘ęU@¬őłŔüPR9ú0~ńµľtmla+ۨLnDQŕ?˝µ>Ľ±p‰‰ś]ş‰á’‡¸ ĺ ͤy;+­Íi2Ó +&÷¶le ł‹x,¬ňe[Đh;łôˇäeĘ ŘĚ ÖĚË6™Úćvyů*ôh ŐÉONđ¨f2dÂh‰˝ŚýÍeăô#¬ą)pĘ[śł˘ˇ“.• Gmµ`PŢťĚBmęl.BJ˙j)±Ô©Ŕ¬ L٧–dDv"°±¶“ŕ$Ŕy¸l㲕˘µXjd’’@`¤ÎN9ˇĄR}^’|—:誆©SůĐu»ĄŮƲL2Dě¨4âĚę3%ßcˇnw+”™(n]HN”0‹ůËećřPĺű…Uăʉr#–*"XÚĚ©ŞP7:VOŢ tLÔ‰˘·lŮşR‘q d)i”,Ó*i˙V´rńEŁj+’ÓŽ0©đ‡éž+]nť.Iáő":ë\ˇy+ďĹ@ň«\z§şâ9ąÍ<Č߼ńŹç‚ă«yĘK>ň“gć+ŻyĚ{Ţň›ż<č?ßůŃ›ľô['3ͧĹ.e©ŔͱK©<Ľ¬Ęž.c†čĄÉ3űÜ;¨/Ăջᴲ«Dđ®ń{Ú襮¸Ŕ+twľĽá=Ň=‘ń|˝\řk@`<|Oţň[lüĂln(2Íu‚›Ąđy\Š˙ţ™Ëţî‡?6e‘ş†<¸^ˇ! ~TĂ~Ä._áDöGäŇgýbHí’€ôHćWx¸Řř ‚"8‚$X‚&x‚(‚*¸‚,˙Ř‚.ř‚0284X6x8:¸<؇1]qÂw«P D8]č×áÄUhőK¸R2OXMx†c„EH„0§\ŕu˝‚÷W_ĺv%a|VâXhá…ű‘rWÖp÷†n‡7q*>á7ć-$Lo+ná‡qÄvc&+óCC†Łö([Ál*jhŚĺ2iaUęTRI":A†ˇ&žXl%;1dufăáBGpöd#R¬@„ia [!†bÇ)žäŰŚÚ1ŚŮQŚŘqŚŔHŚČřÂhŚÍAOŔvĺávJ>9˙ôb«ÂTlÁ@ŘČÚ8)ÜŘŤ93~ŰćňŁEQŘFă!F»˛ ăQ*nR3ě…Ń€Qdž'ŃýÇ~ŇcqŤQĽä±:{‰é*avŕ".č>¬! l&q/S(I> Aa±‘á9&,dr&PÁ_Á¦ůrÓvo%9±kľC<9çÁi&9`1kq7Ďc6Đ!BR"ęŃ%…Ň% Ťř!jbkc;ôvŠ—B3°±8Ö0 ć5]‚“™a[ a\qü33=–"ÇŇaiBQ3mš/v§Bů3?ś”¸ĺ%’–U h{;Á®˙ŇŽ•{! â/'%ť1?¶s$­€4‹)lNc ĺRd)ig1ˤ`[óG'hĹ2/'?2ĆVNYnĎó- ‰6źáV)Ůbyp™fů\Zb„ ůY÷›ŔśÔłu_ć…–{fŠtĘÉŃś:1q?15 Ńšq &t`ĄuLĆ(ăńs‚Ö9e)O L©v"óăf±8*´ lg?€ž?DtŹX2"šDFU–×H|˘~N#/Wl\iBŽ!]·q9ť€Ă;®a’8ćX aˇŢÇ fjKr &) í hĽ÷ U2\ Ö˙ca—lѡj&ćŐo › †™c[™ ‘i‹ Ş%¤‰`cXc Üő„%đ(@đ(¤®srbźxć(Ş˘,Şp$”Ą ´Ą#ÄĄÔĄ`úĄb*BcZBZ¦Ä塆߳âĆOë1ŠÝBrr:§xT§ B>ş·Ť@Ú#űfđԇႠDé€áă:Ö ›R3ěf:v˛¤9W–Ą18–#…"ć6ŠŃé'áR<žcjö !qŹ× źˇĂöů/gN«%,äB\a[;Ú¨Ť Z©Nă1Š™V&‚#n:a@aźc˘ŮE@ ř[IťŐĄ8¦:cöł8k˙Ń–;3k1;qŹŔŐ)Ły ł0Ťľ#jo˘&ŽQůÔŃVö5Ą@Šú ÜT#­F¬4P>9 á7•4Eá7^wśx,JřŻ9áuvÉu4d ¨‹Ö‡ˇ-ˇs%ŞŐŞŞDXIUB5†D“ĺ&ć%U“hăńžřh%4 "¦ ›ňXQů$ˇáOëÂ;{Qn…ŐŤh!‰v_â1Dű:cłm‡Ú;Ö'<3­ůy7Y¡Ⱥ"‘Ů]ĎBős»ÖjŢ•-@Łf&nrh9’ęVŞť# rDfň« â%ťČPŇĄ~!ö®gŚ˘ˇµ˙Ǭe qL _€ÚY)Ňh5%a] ­‡+÷Ç4?Q?"Qy*4>ń‘ą™ˇf繬•(‹\ęwş›D(H « I1 °«~! ®b-d†Öŕ*FÔR»k…Ż;{‰‘‹ÇWCą ›8M°{bÍ{ ´‹vş8-°ŰŹý—•ýČ3®Âş—"e¤IŘŹÇ{ľ˝gˇI*šG¨KĽ/öĽç«Ľ(Ré;LÇWHÔŔ{Mé!e°1 ë§‹I¨˘* eÔ»;Ó»©c‘ú:#Ôk詥p"'â&cBvđűr‡sČÁ¬EŢs÷—eĺ#/‰t§árqÂť[rTiÂi‡Ž3& ćťTÄXo˘„kEňSq‰RŁŹ.áDüFLÄĘŃGśÄIlÄĆaEüÄOŚÄżˇÄSĚÄUěÄš,Tq án 4%fF$·´Ó‚݇ĆiŚÂăŃŻVŇë#ÄYÇv,Bk,ĹLgĂA±*Cč˘ a—5Č?RĂ}zÇŚ\2ÂůȬu·%‡ÖBCˇ…Ľ>ËeqxřÂaÓÂ?#š¨BÇ-2.˛ň}ĂÁßÇCšńVu´Ýş|}0+“tË2ł}öÚČľ˙lfęĄd:ĚÁ¦Ä|¦eŠĚdšzfdśĽŐŽ©ű2nş§|<Í4„\Qay>xş3ŕ^ŕ~ŕžŕ ľŕ Ţŕ ;openjade-1.3.2/jadedoc/images/space.gif0100664000076400007640000000154206765160073016051 0ustar ianianGIF89a‘ ÷h™Ŕá˙hhh™hŔháh˙h™h™™™Ŕ™á™˙™ŔhŔ™ŔŔŔáŔ˙Ŕáhá™áŔááá˙á˙h˙™˙Ŕ˙á˙˙˙hhh™hŔháh˙hhhhhh™hhŔhháhh˙hh™hh™h™™hŔ™há™h˙™hŔhhŔh™ŔhŔŔháŔh˙Ŕháhháh™áhŔáhááh˙áh˙hh˙h™˙hŔ˙há˙h˙˙h™h™™™Ŕ™á™˙™h™hh™™h™Ŕh™áh™˙h™™™h™™™™™Ŕ™™á™™˙™™Ŕ™hŔ™™Ŕ™ŔŔ™áŔ™˙Ŕ™á™há™™á™Ŕá™áá™˙á™˙™h˙™™˙™Ŕ˙™á˙™˙˙™ŔhŔ™ŔŔŔáŔ˙ŔhŔhhŔ™hŔŔhŔáhŔ˙hŔ™Ŕh™Ŕ™™ŔŔ™Ŕá™Ŕ˙™ŔŔŔhŔŔ™ŔŔŔŔŔáŔŔ˙ŔŔáŔháŔ™áŔŔáŔááŔ˙áŔ˙Ŕh˙Ŕ™˙ŔŔ˙Ŕá˙Ŕ˙˙Ŕáhá™áŔááá˙áháhhá™háŔhááhá˙há™áh™á™™áŔ™áá™á˙™áŔáhŔá™ŔáŔŔááŔá˙Ŕáááháá™ááŔááááá˙áá˙áh˙á™˙áŔ˙áá˙á˙˙á˙h˙™˙Ŕ˙á˙˙˙h˙hh˙™h˙Ŕh˙áh˙˙h˙™˙h™˙™™˙Ŕ™˙á™˙˙™˙Ŕ˙hŔ˙™Ŕ˙ŔŔ˙áŔ˙˙Ŕ˙á˙há˙™á˙Ŕá˙áá˙˙á˙˙˙h˙˙™˙˙Ŕ˙˙á˙˙˙˙˙!ů×,‘ @?Ż H° Á*\ȰˇĂ‡#JśH±˘Ĺ‹3jÜȱŁÇŹ CŠI˛¤É“(SŞ\ɲĄË—0cĘśIłćÄ€;openjade-1.3.2/jadedoc/images/top-of-page.gif0100664000076400007640000000013706765160073017073 0ustar ianianGIF89a ˘˙˙˙˙1cś˙1c˙, ,Hş @#ĘA8‹úǤe’h÷ ¬č¤ęXĆďě~¶‰ô®sžáH;openjade-1.3.2/jadedoc/autoconf.htm0100664000076400007640000000711606765751016015360 0ustar ianian Jade autoconf support

Jade autoconf support

(originally by Cees de Groot cg@sgmltools.org)

With ./configure, you'll have an alternate method to prepare the source distribution for building. This support is experimental, and I'd like to receive feedback and patches for your operating system. If a build with autoconf doesn't work, you can always revert to the original Makefile which is saved by configure to Makefile.dist. make mrproper will undo everything that has been modified by ./configure.

Usage

% ./configure; make; make install

configure options

--help
Print a full list of options. This document only deals with the non-standard options.
--enable-http
This enables the built-in HTTP client so that you can use HTTP as a method for getting to system identifiers.
--enable-default-catalog=pathlist
Provide the built-in definition for SGML_CATALOG_FILES.
--enable-default-search-path=pathlist
Provide a built-in definition for SGML_SEARCH_PATH.
--disable-mif
Don't build the MIF backend.
--disable-html
Don't build the HTML backend.

Local defines

If you have some extra additions to OpenJade, you can set CFLAGS/CXXFLAGS and/or LDFLAGS/LIBS at configure time:

CXXFLAGS=-Dmyhacks LDFLAGS=-L/opt/myhacks LIBS=-lmyhacks ./configure

Check the invocation of ld in Makefile.comm for the exact semantics of LDFLAGS and LIBS.

Tested platforms

  • RedHat Linux 5.2 (egcs 1.0.3, glibc 2.0.7)
  • RedHat Linux 6.0 (gcc 2.95.1, glibc 2.1.1)
  • SuSE Linux 5.3 (gcc 2.7.2.1, libc 5.5.46)
  • Solaris 2.6 (gcc 2.8.1)

Shared library support

By default, ./configure attempts to build shared libraries and link against them. This is done via the libtool utility, a utility that knows how to build shared libraries on a number of platforms.

By default, only shared libraries are built. If you have difficulties building shared libraries, or you want to build static versions, you can use the --{enable,disable}{shared,static} options to configure libtool to your likings.

According to the libtool 1.2 docs, shared libraries work on:

  • AIX 3.x (*-*-aix3*)
  • AIX 4.x (*-*-aix4*)
  • AmigaOS (*-*-amigaos*)
  • Digital/UNIX 3.x, 4.x, a.k.a. OSF/1 (*-*-osf3*, *-*-osf4*)
  • FreeBSD 2.x, 3.x (*-*-freebsd2*, *-*-freebsd3*)
  • GNU/Linux ELF (*-*-linux-gnu*, except aout, coff, and oldld)
  • HP-UX 9.x, 10.x (*-*-hpux9*, *-*-hpux10*) [see note]
  • IRIX 5.x, 6.x (*-*-irix5*, *-*-irix6*)
  • NetBSD 1.x (*-*-netbsd*)
  • OpenBSD 2.x (*-*-openbsd*)
  • OS/2 using EMX (*-*-os2*)
  • SCO OpenServer 5.x (*-*-sco3.2v5*)
  • Solaris 2.x (*-*-solaris2*)
  • SunOS 4.x, a.k.a. Solaris 1.x (*-*-sunos4*)
  • UnixWare 2.x (*-*-sysv4.2uw2*)
  • UTS 4.x (*-*-uts4*)
  • All ELF targets that use both the GNU C compiler (gcc) and GNU ld

One more note from the libtool documentation: the HP/UX sed seems to be badly broken, install GNU sed before attempting to build - libtool depends on a working sed.

openjade-1.3.2/jadedoc/contributors.htm0100664000076400007640000001204106765377201016270 0ustar ianian Using Jade for SGML transformations

OpenJade

Contributors

James Clark:
The father of Jade. James made the first version called Jade. He was instrumental to the idea of a single set of flow objects and multiple backend formats. James carried the Jade project for several years until it became a group project and got renamed OpenJade. He is no longer participating to the OpenJade project but his spirit still and will always remain with us. He created most of the Openjade code and the SGML/XML and the RTF backends. But it is shorter to tell what he didn't do than what he did :-)
Matthias Clasen:
I am an old-time LaTeX user and a scheme lover. My first jade hacking experience was trying to use dsssl to produce properly formatted indexes, realizing the need for language-dependent string sorting. That code is now part of OpenJade. Since I think that the full power of DSSSL can only be explored with a reasonably complete implementation, I am working to fill the gaps in jade's coverage of the standard.
Avi Kivity:
I stumbled on Jade after attempts to format SGML documents using C++ proved too cumbersome. I was impressed by the power of DSSSL and the functional programming style, which I hadn't used before. My main interest is fully-integrated backends; that is, formatters which do the layout themselves and do not depend on external layout engines like TeX or Word. I also maintain the CVS repository and perform builds and releases.
Didier PH Martin:
I encountered Jade simply by browsing to find new ways to process XML/SGML documents. I had to learn it without a book and with minimal documentation. The more I know about this environment the more I learn to appreciate it. This is why, I am a fervant advocate of DSSSL, OpenJade and work hard to provide to members of the OpenJade community, a rich environment, an adequate documentation, a future to this language.

After more than 20 years in the computer business, I still enjoy creating and learning. As a canadian member of the ISO Document Description and Processing Languages comittee, my goal is to make a DSSSL-2 possible reality.

Peter Nilsson:
The man behind braifo.
Sebastian Ratz:
You have a question about Tex? Sebastian is the right guy to answer to your question. He created the Tex backend processor with David and Kathleen.
Kathleen Marszalek:
She is the bee, working hard and methodical. She created the Tex and MIF backends with other members of the team.
Paul Prescod:
Paul has always a good comment to bring to the table. He created the MIF backend with Kathleen.
David Megginson:
An other fellow canadian that is bringing every day to the XML community ideas, new code, its commitment. He created the Tex backend with Kathleen and Sebastian.

 

openjade-1.3.2/jadedoc/copying.txt0100664000076400007640000000243506765052167015241 0ustar ianianCopyright (c) 1994, 1995, 1996 James Clark Copyright (c) 1999 The OpenJade group Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the ``Software''), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL JAMES CLARK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of James Clark shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from James Clark. openjade-1.3.2/jadedoc/dsssl2.htm0100664000076400007640000005776206765751016014770 0ustar ianian Experimental DSSSL extensions for XSL

OpenJade

Experimental DSSSL extensions

Contents

Introduction

This document descibes some experimental extensions to DSSSL that are implemented in OpenJade. These are designed so that, with these extensions, DSSSL provides a superset of the semantics XSL for flow object tree construction. OpenJade has a -2 option that enables these extensions.

These extensions do not include the additional flow object classes and characteristics that will be needed for XSL; in particular they do not include the HTML/CSS flow object classes.

UpBack to top 

Imperative programming

The following features come from R4RS:

  • assignment (set!) expressions (with restrictions)
  • vectors (with restrictions)
  • call-with-current-continuation (with restrictions)
  • begin expressions
  • multiple expressions in procedure bodies, cond clauses
  • alternate in if expression optional
  • it is not an error when nothing matches in cond or case expression
  • eqv? and memv procedures; these behave as specified in R4RS for vectors but behave the same as equal? for strings and lists

    This is so that case expressions can use eqv? as required by R4RS without breaking compatibility with existing DSSSL code which assumes case expressions with strings and lists will use equal?. R4RS specifies that eqv? should return #t when its arguments "should normally be regarded as the same object". R4RS treats strings and lists as mutable and its specification of eqv? for strings and lists is consistent with this. So long as DSSSL keeps strings and lists as immutable data-types with value semantics, it is more consistent to define eqv? to behave like equal? for them.

The use of side-effects is restricted. Assignment to top-level variables is not allowed. There is also the concept that a memory location can be read-only. When a memory location is read-only, it is an error to change that location. An memory location can be recursively marked as read-only; this means that the memory location along with all memory locations reachable from that memory location become read-only. A memory location is recursively marked as read-only when:

  • an object stored in that memory location is bound to a top-level variable
  • an expression specifying a characteristic is evaluated and a variable that names that memory location occurs free in that expression; for example, this would be an error:
    
    (let ((x 10pt))
      (make paragraph
        font-size: (begin (set! x 12pt) x)))
    
  • an object stored in that memory location is returned by a (inherited-C) or (actual-C) procedure
  • an object stored in that memory location is passed as the first argument to the node-list-map procedure

A continuation created with call-with-current-continuation cannot be called if it is read-only, and can only be used to return to a stack frame in the current call chain (sometimes referred to as upwards only).

There's a void data type with a single value which can be written as #v. This is returned by cond, case and if expressions which don't match.

UpBack to top 

Style rules

When a construction rule has a keyword argument list instead of a construct expression it is treated as a style rule. For example,


(element H1
  font-size: 14pt
  font-weight: 'bold)

The keyword argument list can include a use: keyword just as with style expressions. See the XSL proposal for the semantics of style rules.

UpBack to top 

Extended patterns

The syntax for element patterns is extended. These provide provide a superset of the semantics of XSL patterns. They are allowed both in element construction rules and in contexts where a match-element? pattern is currently allowed (eg select-elements, process-matching-children, process-first-descendant).

A pattern is either a single gi or a list. A list consists of a sequence of gis, where each gi can be followed by one or more keyword/value pairs (where the value is always a single datum). A gi can be #t, a string or a symbol. The following keywords are allowed:

id:
followed by a string or symbol
class:
followed by a string or symbol
repeat:
followed by one of the symbols *, +, ?
only:
followed by one of the symbols of-type, of-any
position:
followed by one of the symbols first-of-type, first-of-any, last-of-type, last-of-any
attributes:
followed by a list of name/value pairs; for backward compatibility with match-element? patterns in the current DSSSL standard the attributes: keyword can be omitted; #t and #f can be used as a value to test for presence or absence of attributes.
children:
followed by a pattern; each of the elements in the pattern must occur as child; repeat: is not allowed in children patterns; the children: qualifier is allowed on any gi in a pattern not just the last element
priority:
followed by an integer; multiple priority: qualifiers are allowed in a pattern and will be added together
importance:
followed by an integer; multiple importance: qualifiers are allowed and will be added together

Class attribute names are declared using


(declare-class-attribute "class")

or


(declare-class-attribute class)

Id attribute names can be declared similarily using declare-id-attribute.

Some examples:


(element (E importance: 42) ...)

(element (E attributes: (A1 V1)) ...)

(element (P E children: C) ...)

(element (P children: C priority: -11
          E children: C attributes: (A1 V1 A2 V2))
 ...)

(element (P E children: (A children: C B children: C)) ...)

The last is equivalent to the following in XSL syntax:


<element type="P">
  <target-element type="E">
     <element type="A">
       <element type="C"/>
     </element>
     <element type="B">
       <element type="C"/>
     </element>
  </target-element>
</element>
UpBack to top 

Multiple patterns per rule

An or-element construction rule has the syntax


(or-element (pattern+) expression)

where pattern is any pattern that could be allowed in an element construction rule. It is equivalent to a sequence of element construction rules.

For example,


(or-element (H1 H2 H3)
  font-weight: 'bold)

(or-element ((H1 TITLE) (H2 TITLE) (H3 TITLE))
  font-weight: 'bold)

is equivalent to


(element H1
  font-weight: 'bold)

(element H2
  font-weight: 'bold)

(element H3
  font-weight: 'bold)

(element (H1 TITLE)
  font-weight: 'bold)

(element (H2 TITLE)
  font-weight: 'bold)

(element (H3 TITLE)
  font-weight: 'bold)
UpBack to top 

Flow object macros

A flow object macro can be defined like this:

 

(declare-flow-object-macro list-item ((indent 1in) (marker "\bullet") #!contents contents)
  (make paragraph
       first-line-start-indent: (- indent)
       start-indent: (+ indent (inherited-start-indent))
       (make line-field
            field-width: indent
            (literal marker)
       )
  contents
  )
)

(root
    (make simple-page-sequence
        (make paragraph
              (literal "Para 1")
        )
        (make list-item
              (literal "Item 1")
              (make list-item
                    indent: .5in
                    marker: "\black-circle"
                    (literal "Sub item 1.1")
              )
        )
        (make list-item
              font-weight: 'bold
              (literal "Item 2")
              (make list-item
                    (literal "Sub item 2.1")
              )
         )
        (make paragraph
              (literal "Para 2")
        )
    )
)

If the formal argument list includes #!contents the flow object behaves like a compound flow object, otherwise like an atomic flow object. Inherited characteristics can be specified; these are applied to a sequence flow object which is automatically wrapped around what is returned by the body of the flow object macro. The preceding formal arguments are the non-inherited characteristics; like keyword arguments they can be specified either as id (in which case they default to #f), or as (id init-expression).

Note that flow object macros are quite different from ordinary procedures in that the macro body is not evaluated when the make expression is evaluated, but rather when the flow object is to be added to the tree; this allows (inherited-c) and (actual-c) procedures to be used in flow object macro characteristics, non-inherited as well as inherited, just as with normal flow objects. It is also possible to use (inherited-c) and (actual-c) procedures in the body of the flow object macro; they will return the same result as if they were used in the specification of a characteristic on the invocation of the flow object macro.

For an example of a library built with the macro facility read: Simple XML to HTML Conversion and Rendition Example

UpBack to top 

Characteristic value conversion

Most characteristic values can now be specified as strings and will be converted appropriately. For boolean valued characteristics any of the strings "true", "false", "yes" and "no" are acceptable.

UpBack to top 

Characteristic names

The question mark that can be omitted from those DSSSL characteristic names that end with a question mark. This is because the question mark is not (and cannot reasonably be made) a legal XML name character.

UpBack to top 

openjade-1.3.2/jadedoc/index.htm0100664000076400007640000011562407001713047014637 0ustar ianian OpenJade

OpenJade  

 

OpenJade

Contents

What is OpenJade?

OpenJade is an implementation of the ISO/IEC 10179:1996 standard DSSSL language. It is based on the James Clark implementation of DSSSL named Jade. OpenJade is now developed and maintained by the OpenJade team. The current version is 1.3.

For general information about DSSSL, see the OpenJade home page. The OpenJade home page contains useful resources such as links to articles, tutorials, libraries, etc.

Another site with lots of in-depth information about DSSSL is that of Mulberry Technologies. Among other things, it hosts the DSSSL Users mailing list.

OpenJade is a command line application and a set of components. The DSSSL engine receives as input an SGML or XML document and transforms it into formats like:

  • XML representation of the flow object tree.
  • RTF format that can be rendered and printed with Microsoft's free Word Viewer 97
  • TeX format
  • MIF format that can be rendered and printed with Framemaker
  • SGML or XML format. This is used in conjunction with non-standard flow object classes to generate SGML, thus allowing OpenJade to be used for SGML/XML transformations.

UpBack to top 

Copyright

OpenJade is licensed with almost no restrictions even for commercial use (see license terms).

If you do use OpenJade in a commercial product, we ask you, as a courtesy, to acknowledge the use of OpenJade.

UpBack to top

Building OpenJade

Win32

Only Microsoft Visual C++ 6.0 is supported. Also, Perl 5 is required; the executable must be on your PATH.

To build on the command line, ensure that the directories containing msdev and nmake are in your path, typically by executing the command:

path C:/Program Files/Microsoft Visual Studio/Common/MSDev98/Bin;
    C:/Program Files/Microsoft Visual Studio/VC98/Bin;%path%

(all in one long line) then run the command:

build-win32.bat

To build using the Visual Studio GUI, open the workspace jade.dsw and build the Win32 Release configuration of the all project. You must first do a command-line build, however, to get the perl-generated files.

Unix

The following compilers should work:

  • gcc 2.95.1
  • egcs 1.1.2
  • egcs 1.0.2
  • gcc 2.8.1
  • gcc 2.7.2

Only the first two have been recently tested.

If you use gcc 2.7.2 with -O on an x86 processor you must use -fno-strength-reduce. gcc 2.7.2.1 fixes this problem.

Edit Makefile, then build with make. Note that you must use -DSP_MULTI_BYTE. If you plan to do any development, also do make depend. Alternatively you can build using the experimental autoconf support. This will soon be the recommended method.

UpBack to top

Installing OpenJade

Win32

OpenJade requires the file dsssl/builtins.dsl to operate. You can tell OpenJade where this file is in one of two ways:

  • By including a SYSTEM catalog entry for "builtins.dsl" pointing to this file. See dsssl/catalog for an example.
  • By including the dsssl/catalog catalog with the -c command line option or the SGML_CATALOG_FILES environment variable.

Unix

Run

make install
as root.

UpBack to top

Using OpenJade

Add the directory containing the OpenJade binary to your path, change directory to the dsssl directory, and do


openjade demo.sgm

If everything is working, there should be a well-formed XML file demo.fot created.

The system identifier of the document to be processed is specified as an argument to OpenJade. If this is omitted, standard input will be read.

OpenJade determines the system identifier for the DSSSL specification as follows:

  1. If the -d option is specified, it will use the argument as the system identifier.
  2. Otherwise, it will look for processing instructions in the prolog of the document. Two kinds of processing instruction are recognized:
    <?stylesheet href="sysid" type="text/dsssl">
    The system data of the processing instruction is parsed like an SGML start-tag. It will be parsed using the reference concrete syntax whatever the actual concrete syntax of the document. The name that starts the processing instruction can be either stylesheet, xml-stylesheet or xml:stylesheet. The processing instruction will be ignored unless the value of the type attribute is one of text/dsssl, text/x-dsssl, application/dsssl, or application/x-dsssl. The value of href attribute is the system identifier of the DSSSL specification.
    <?dsssl sysid>
    The system identifier is the portion of the system data of the processing instruction following the initial name and any whitespace.

    Although the processing instruction is only recognized in the prolog, it need not occur in the document entity. For example, it could occur in a DTD. The system identifier will be interpreted relative to where the the processing instruction occurs.

  3. Otherwise, it will use the system identifier of the document with any extension changed to .dsl.

A DSSSL specification document can contain more than one style-specification. If the system identifier of the DSSSL specification is followed by #id, then OpenJade will use the style-specification whose unique identifier is id. This is allowed both with the -d option and with the processing instructions.

The DSSSL specification must be an SGML document conforming to the DSSSL architecture. For an example, see dsssl/demo.dsl.

OpenJade supports the following options in addition to the normal SP options (note that all options are case-sensitive, ie -g and -G are different options):

-d dsssl_spec
This specifies that dsssl_spec is the system identifier of the DSSSL specification to be used.
-G
Debug mode. When an error occurs in the evaluation of an expression, OpenJade will display a stack trace. Note that this disables tail-call optimization.
-c filename
The filename arguments specify catalog files rather than the document entity. The document entity is specified by the first DOCUMENT entry in the catalog files.
-s
Strict compliance mode. Currently the only effect is that jade doesn't use any predefined character names, sdata-entity mappings or name-characters. This is useful for checking that your stylesheet is portable to other DSSSL implementations and that it is strictly compliant to the DSSSL specifications.
-t output_type
output_type specifies the type of output as follows:
fot
An XML representation of the flow object tree
rtf rtf-95
RTF (used for SGML/XML to RTF transformations)
Microsoft's Rich Text Format. rtf-95 produces output optimized for Word 95 rather than Word 97.
tex
TeX (used for SGML/XML to TeX transformations)
sgml sgml-raw
SGML (used for SGML/XML to SGML transformations). sgml-raw doesn't emit linebreaks in tags.
xml xml-raw
XML (used for SGML/XML to XML transformations). xml-raw doesn't emit linebreaks in tags.
html
HTML (used for SGML/XML to HTML transformations)
mif
MIF (used for SGML/XML to MIF transformations)
-o output_file
Write output to output_file instead of the default. The default filename is the name of the last input file with its extension replaced by the name of the type of output. If there is no input filename, then the extension is added onto jade-out.
-V variable
This is equivalent to doing (define variable #t) except that this definition will take priority over any definition of variable in a style-sheet.
-V variable=value
This is equivalent to doing (define variable "value") except that this definition will take priority over any definition of variable in a style-sheet.
-V (define variable value)
This is equivalent to doing (define variable value) except that this definition will take priority over any definition of variable in a style-sheet. Note that you will probably have to use some escaping mechanism for the spaces to get the entire scheme expression parsed as one cmdline argument.
-wtype (examples: wxml, wmixed, wsgmldecl, etc.)
Control warnings and errors. Multiple -w options are allowed. The following values of type enable warnings:
xml
Warn about constructs that are not allowed by XML.
mixed
Warn about mixed content models that do not allow #pcdata anywhere.
sgmldecl
Warn about various dubious constructions in the SGML declaration.
should
Warn about various recommendations made in ISO 8879 that the document does not comply with. (Recommendations are expressed with ``should'', as distinct from requirements which are usually expressed with ``shall''.)
default
Warn about defaulted references.
duplicate
Warn about duplicate entity declarations.
undefined
Warn about undefined elements: elements used in the DTD but not defined.
unclosed
Warn about unclosed start and end-tags.
empty
Warn about empty start and end-tags.
net
Warn about net-enabling start-tags and null end-tags.
min-tag
Warn about minimized start and end-tags. Equivalent to combination of unclosed, empty and net warnings.
unused-map
Warn about unused short reference maps: maps that are declared with a short reference mapping declaration but never used in a short reference use declaration in the DTD.
unused-param
Warn about parameter entities that are defined but not used in a DTD. Unused internal parameter entities whose text is INCLUDE or IGNORE won't get the warning.
notation-sysid
Warn about notations for which no system identifier could be generated.
all
Warn about conditions that should usually be avoided (in the opinion of the author). Equivalent to: mixed, should, default, undefined, sgmldecl, unused-map, unused-param, empty and unclosed.

A warning can be disabled by using its name prefixed with no-. Thus -wall -wno-duplicate will enable all warnings except those about duplicate entity declarations.

The following values for warning_type disable errors:

no-idref
Do not give an error for an ID reference value which no element has as its ID. The effect will be as if each attribute declared as an ID reference value had been declared as a name.
no-significant
Do not give an error when a character that is not a significant character in the reference concrete syntax occurs in a literal in the SGML declaration. This may be useful in conjunction with certain buggy test suites.
no-valid
Do not require the document to be type-valid. This has the effect of changing the SGML declaration to specify VALIDITY NOASSERT and IMPLYDEF ATTLIST YES ELEMENT YES. An option of -wvalid has the effect of changing the SGML declaration to specify VALIDITY TYPE and IMPLYDEF ATTLIST NO ELEMENT NO. If neither -wvalid nor -wno-valid are specified, then the VALIDITY and IMPLYDEF specified in the SGML declaration will be used.

OpenJade ignores the SP_CHARSET_FIXED and SP_SYSTEM_CHARSET environment variables and always uses Unicode as its internal character set, as if SP_CHARSET_FIXED was 1 and SP_SYSTEM_CHARSET was unset. Thus only the SP_ENCODING environment variable is relevant to OpenJade's handling of character sets.

UpBack to top 

OpenJade Extensions

The following external procedures are available. These external procedures are defined by a prototype in the same manner as in the standard. To use one of these external procedures, you must make use of the standard external-procedure procedure, using a public identifier of "UNREGISTERED::James Clark//Procedure::name" where name is the name given here, typically by including the following in the DSSSL specification:


(define name
  (external-procedure "UNREGISTERED::James Clark//Procedure::name"))

Note that external-procedure returns #f if it doesn't know about the specified public identifier. You can use this to enable your DSSSL specifications to work gracefully with other implementations which do not support these extensions.

For external procedures added by the OpenJade team, use a public identifier of the form "UNREGISTERED::OpenJade//Procedure::name".

An easy way to get access to all external procedures is to use the style specification dsssl/extensions.dsl#procedures. The file dsssl/extensions.dsl also contains style specifications which make the nonstandard flow object classes and inherited characteristics supported by the backends available in a convenient way.

Debugging


(debug obj)

Generates a message including the value of obj and then returns obj.

Simple-page-sequence header/footer control


(if-first-page sosofo1 sosofo2)

This can be used only in the specification of the value of one of the header/footer characteristics of simple-page-sequence. It returns a sosofo that will display as sosofo1 if the page is the first page of the simple-page-sequence and as sosofo2 otherwise.



(if-front-page sosofo1 sosofo2)

This can be used only in the specification of the value of one of the header/footer characteristics of simple-page-sequence. It returns a sosofo that will display as sosofo1 if the page is a front (ie recto, odd-numbered) page and as sosofo2 if it is a back (ie verso, even-numbered) page.

Numbering


(all-element-number)
(all-element-number osnl)

This is the same as element-number except it counts elements with any generic identifier. If osnl is not an element returns #f, otherwise returns 1 plus the number of elements that started before osnl. This provides an efficient way of creating a unique identifier for any element in a document.

External entity access


(read-entity string)

This returns a string containing the contents of the external entity with system identifier string. This should be used only for textual entities (CDATA and SDATA), and not for binary entities (NDATA).

POSIX locale access


(language lang country)

This procedure returns an object of type language, if the system supports the specified language. lang is a string or symbol giving the two letter language code. country is a string or symbol giving the two letter country code.

This procedure uses POSIX locales. It is an OpenJade addition.

Extended standard procedures


(sgml-parse sysid #!key active: parent: architecture:)

This allows you to specify an SGML architecture with respect to which the document should be parsed. It is an OpenJade addition.



(expt q k)

This allows you to raise a quantity to an integral power. It is an OpenJade addition.

UpBack to top 

Current OpenJade Limitations

This section describes the limitations of the front-end (the general-purpose DSSSL engine); each backend also has its own limitations.

OpenJade doesn't allow internal definions at the beginning of bodies and the (test => recipient) variant of cond clauses.

OpenJade supports only a single, fixed grove plan which comprises the following modules:

  • baseabs
  • prlgabs0
  • prlgabs1
  • instabs
  • basesds0
  • instsds0
  • subdcabs

It doesn't implement the following parts of SDQL: HyTime support, auxiliary parsing, node regular expressions.

Query rules, sosofo synchronisation, indirect sosofos, reference values, decoration areas and font properties are not supported.

Note that only inherited characteristics that are applicable to some supported flow object can be specified.

Character/glyph handling

It only supports a single pre-defined character repertoire. A character name of the form U-XXXX where XXXX are four upper-case hexadecimal digits, is recognized as referring to the Unicode character with that code. For many characters, it is also possible to use the ISO/IEC 10646 name in lower-case with words separated by hyphens.

Some common SDATA entity names from the ISO entity sets are recognized and mapped to characters. In addition an SDATA entity name of the form U-XXXX, where XXXX are four upper-case hexadecimal digits, is mapped to the Unicode character with that code.

OpenJade now supports the standard-chars, map-sdata-entity, add-name-chars, add-separator-chars and char-repertoire declaration element forms, allowing a style-sheet to define additional character names, sdata entity mappings, name characters (i.e. characters allowed in identifiers) and separator characters. Currently the only recognized character repertoire is the built-in repertoire. It has the public identifier "UNREGISTERED::OpenJade//Character Repertoire::OpenJade".

Validation

Several things that it would be desirable to have checked aren't checked:

  • When the allowed value of an inherited characteristic is a symbol, OpenJade checks only that the value is a symbol that is allowed as the value of some characteristic; #t and #f are treated as a special kind of symbol in this case.
  • OpenJade doesn't check whether a flow object is occurring in a context where it is allowed.
  • OpenJade does not prevent flow objects being attached to the principal port of a flow object when the flow object shouldn't have a principal port.
  • Most type-checking is done at run-time not compile-time.
  • OpenJade does not check for non-inherited characteristics that are required to be specified.
  • It doesn't check that optional features that have been used were declared in the features form.

Other limitations

The following primitives are just stubs:

char-script-case
Always returns last argument.
address-visited?
Always returns #f.

UpBack to top

About OpenJade sources

The source of OpenJade is available via CVS from jade-cvs.avionitek.com. See the OpenJade home page for more details.

UpBack to top


All trademarks herein are the property of their respective owners. 
Copyright ©  1999 OpenJade project, All rights reserved. Created by Didier PH Martin, modified: September 9, 1999

   

 

openjade-1.3.2/jadedoc/mif.htm0100664000076400007640000012376006765751017014322 0ustar ianian The OpenJade MIF backend

OpenJade

 

The OpenJade MIF backend

Created by Kathleen Marszalek and Paul Prescod
Sponsored by ISOGEN International Corp

Contents

Supported Flow Objects

character

Inherited characteristics Non-inherited characteristics
  • font-weight
  • font-posture
  • font-name
  • font-size
  • input-whitespace-treatment
  • position-point-shift
  • language
  • country
  • color

Up Back to top  

display-group
Inherited characteristics Non-inherited characteristics
 
  • space-before
  • space-after
  • keep-with-previous?
  • keep-with-next?
  • break-before (#f, page)
  • break-after (#f, page)
  • keep (#f, page)
  • may-violate-keep-before?
  • may-violate-keep-after?

Up Back to top  

rule
Inherited characteristics Non-inherited characteristics
  • line-cap
  • line-thickness
  • line-repeat
  • line-sep
  • position-point-shift
  • display-alignment (start, end, center)
  • start-indent
  • end-indent
  • span (spans all columns if > 1)
  • color
  • orientation (horizontal, escapement)
  • length
  • space-before
  • space-after
  • keep-with-previous?
  • keep-with-next?
  • break-before (#f, page)
  • break-after (#f, page)
  • keep (#f, page)
  • may-violate-keep-before?
  • may-violate-keep-after?

Up Back to top  

score
Inherited characteristics Non-inherited characteristics
  • line-repeat (1 for type of before and through, 1 or 2 for after)
  • type (before, through, after)

Up Back to top  

line-field*
Inherited characteristics Non-inherited characteristics
  • field-width
  • field-align
 
* At the beginning of paragraph only.

Up Back to top  

leader*
Inherited characteristics Non-inherited characteristics
   
*

On the last line of paragraph only. The principal port (the leader string itself) can contain characters only.

The content of the flow object is ignored: a dotted leader will always be used. The specified length is ignored: it always fills out the line.

Up Back to top  

link
Inherited characteristics Non-inherited characteristics
 
  • destination [#f, objects returned by (idref-address ...) and (current-node-address ...)]

Up Back to top  

index-entry
Inherited characteristics Non-inherited characteristics
 
  • components
  • page-number?
  • sort-string
  • starts-page-range?
  • ends-page-range?
components
is a list of strings that represent index entry levels. This characteristic is not inherited and shall be specified.
page-number?
is a boolean specifying whether this index entry should contain page number information. This characteristic is not inherited. The default is #t.
sort-string
is either #f, specifying that this index entry's components should be used for sorting the index, or a string that should be used for sorting. This characteristic is not inherited. The default is #f.
starts-page-range?
is a boolean specifying whether the index entry starts a page range. This characteristic is not inherited. The default is #f.
ends-page-range?
is a boolean specifying whether the index entry starts a page range. This characteristic is not inherited. The default is #f.
Here's how to enable the above extension:
(declare-flow-object-class index-entry
    "UNREGISTERED::ISOGEN//Flow Object Class::index-entry")
 

Up Back to top  

external-graphic
Inherited characteristics Non-inherited characteristics
  • space-before
  • space-after
  • display?
  • scale (max)
  • max-width
  • max-height
  • entity-system-id
  • display-alignment
  • start-indent
  • end-indent
  • span (spans all columns if > 1)
  • space-before
  • space-after
  • keep-with-previous?
  • keep-with-next?
  • break-before (#f, page)
  • break-after (#f, page)
  • keep (#f, page)
  • may-violate-keep-before?
  • may-violate-keep-after?

Up Back to top  

paragraph
Inherited characteristics Non-inherited characteristics
  • lines (wrap, asis-wrap)
  • hyphenation-ladder-count
  • hyphenation-remain-char-count
  • hyphenation-push-char-count
  • font-weight
  • font-posture
  • font-name
  • font-size
  • quadding
  • widow-count
  • orphan-count
  • language
  • country
  • span (spans all columns if > 1)
  • space-before
  • space-after
  • keep-with-previous?
  • keep-with-next?
  • break-before (#f, page)
  • break-after (#f, page)
  • keep (#f, page)
  • may-violate-keep-before?
  • may-violate-keep-after?
  • line-spacing
  • min-leading (#f or 0 for proportional line spacing)
  • first-line-start-indent

Up Back to top  

paragraph-break
Inherited characteristics Non-inherited characteristics
Same as for paragraph Same as for paragraph

Up Back to top  

simple-page-sequence
Inherited characteristics Non-inherited characteristics
  • page-width
  • page-height
  • left-margin
  • right-margin
  • top-margin
  • bottom-margin
  • header-margin
  • footer-margin
  • left-header
  • center-header
  • right-header
  • left-footer
  • center-footer
  • right-footer
(page-number-sosofo)
(current-node-page-number-sosofo)
"UNREGISTERED::James Clark//Procedure::if-first-page"
This can be used only in the specification of the value of one of the header/footer characteristics of simple-page-sequence. It returns a sosofo that will display as sosofo1 if the page is the first page of the simple-page-sequence and as sosofo2 otherwise.
"UNREGISTERED::James Clark//Procedure::if-front-page"
This can be used only in the specification of the value of one of the header/footer characteristics of simple-page-sequence. It returns a sosofo that will display as sosofo1 if the page is a front (ie recto, odd-numbered) page and as sosofo2 if it is a back (i.e. verso, even-numbered) page.
"UNREGISTERED::James Clark//Characteristic::page-n-columns"
Value is a strictly positive integer, specifying the number of columns. The initial value is 1.
"UNREGISTERED::James Clark//Characteristic::page-column-sep"
Value is a length, specifying the separation between columns. The initial value is .5in.
"UNREGISTERED::James Clark//Characteristic::page-balance-columns?"
Value is a boolean. If true, the columns on the final page of the page-sequence should be balanced. The initial value is #f.
Here's how to enable the above extensions:
(define if-first-page (external-procedure
    "UNREGISTERED::James Clark//Procedure::if-first-page"))
(define if-front-page (external-procedure  
    "UNREGISTERED::James Clark//Procedure::if-front-page"))
(declare-characteristic page-n-columns
    "UNREGISTERED::James Clark//Characteristic::page-n-columns" 1)
(declare-characteristic page-n-columns
    "UNREGISTERED::James Clark//Characteristic::page-column-gap" (* 36 1pt))
(declare-characteristic page-balance-columns?
    "UNREGISTERED::James Clark//Characteristic::page-balance-columns?" #f)
 

Up Back to top  

table
Inherited characteristics Non-inherited characteristics
  • table-border
  • display-alignment
  • start-indent
  • end-indent
  • table-width
  • before-row-border
  • after-row-border
  • before-column-border
  • after-column-border
  • span (spans all columns if > 1)
  • space-before
  • space-after
  • keep-with-previous?
  • keep-with-next?
  • break-before (#f, page)
  • break-after (#f, page)
  • keep (#f, page)
  • may-violate-keep-before?
  • may-violate-keep-after?

Up Back to top  

table-part
Inherited characteristics Non-inherited characteristics
 
  • space-before
  • space-after
  • keep-with-previous?
  • keep-with-next?
  • break-before (#f, page)
  • break-after (#f, page)
  • keep (#f, page)
  • may-violate-keep-before?
  • may-violate-keep-after?
  • header
  • footer

Up Back to top  

table-column
Inherited characteristics Non-inherited characteristics
  • start-indent
  • end-indent
  • column-number
  • n-columns-spanned
  • width
  • (table-unit k)

Up Back to top  

table-cell
Inherited characteristics Non-inherited characteristics
  • cell-before-row-margin
  • cell-after-row-margin
  • cell-before-column-margin
  • cell-after-column-margin
  • cell-row-alignment
  • cell-before-row-border
  • cell-after-row-border
  • cell-before-column-border
  • cell-after-column-border
  • cell-background?
  • background-color
  • column-number
  • n-columns-spanned
  • n-rows-spanned
  • starts-row?
  • ends-row?

Up Back to top  

table-border
Inherited characteristics Non-inherited characteristics
  • border-present?
  • line-thickness
  • line-repeat (0, 1, or 2)
  • line-sep
  • color
 

Up Back to top  

Problems & Limitations

Table border resolution

It's not clear how to predictably enforce cell borders that have mixed line styles. I've posted a question about this to comp.text.frame, but there were no responses so far.

External graphic width and height

In order to place external graphics inside a text flow one must use an anchored frame containing the <ImportObject...> statement. The ImportObject within the frame can shrink-wrap the referenced graphics, however the anchored frame itself cannot - in general the size of an anchored frame has to be specified explicitly. I've asked about this in comp.text.frame, but the only solutions involved using external programs to read the graphic size from graphic files.

Space before non-paragraph displayed objects

Flow objects like external-graphic need to be anchored to empty paragraphs so that that frame can determine their position on the page automatically. Since the smallest paragraph height is 2pt (smallest font size that can be used), the total space before such objects should be larger than that. This does not apply to the paragraph flow objects themselves, and to the rule flow object. The rule flow object has the placement direction display size of 0 and it's possible to use negative PgfLeading to let the next paragraph move up if necessary.

The vertical positioning of the displayed rule flow object

Since the rule is position using inlined anchored frame, the placement is relative to the font baseline. It's assumed that the baseline is 1/3 the font size from the bottom.

The box flow object

Not sure how to implement it since anchored frames must have fixed height. Maybe using tables would work here(?)

Tips

Creating hypertext documents

You must decide on the filename extension you'll use at the stage when you run jade. If you don't want the .mif extension for your final document, feel free to use other extension when specifying the file name using the -o option.

  1. Open the book file.
  2. While holding SHIFT, select File->Open All Files in Book from the menu.
  3. Save each file using View Only format - make sure you use original filenames.

Updating page numbering

  1. Open the book file.
  2. While holding SHIFT, select File->Open All Files in Book from the menu.
  3. Select File->Generate/Update... and then press Update.

Specifying colors

OpenJade supports all color spaces specified in DSSSL. The following example uses the RGB color space to create a red rule:

(make rule
    color: (color (color-space "ISO/IEC 10179:1996//Color-Space Family::Device RGB")
                   1 0 0)
    ...
)
openjade-1.3.2/jadedoc/rtf.htm0100664000076400007640000012754406765751017014346 0ustar ianian The OpenJade RTF backend

OpenJade

 

The OpenJade RTF backend

Created by James Clark

Contents

Supported Flow Objects

character

Inherited characteristics Non-inherited characteristics
  • font-weight
  • font-posture
  • font-name
  • font-size
  • input-whitespace-treatment
  • position-point-shift
  • language
  • country
  • color
 

Up Back to top  

display-group
Inherited characteristics Non-inherited characteristics
 
  • space-before
  • space-after
  • keep-with-previous?
  • keep-with-next?
  • break-before (#f, page)
  • break-after (#f, page)
  • keep (#f, page)
  • may-violate-keep-before?
  • may-violate-keep-after?

Up Back to top  

rule
Inherited characteristics Non-inherited characteristics
  • line-cap
  • line-thickness
  • line-repeat
  • line-sep
  • position-point-shift
  • display-alignment (start, end, center)
  • start-indent
  • end-indent
  • span (spans all columns if > 1)
  • color
  • orientation (horizontal, escapement)
  • length
  • space-before
  • space-after
  • keep-with-previous?
  • keep-with-next?
  • break-before (#f, page)
  • break-after (#f, page)
  • keep (#f, page)
  • may-violate-keep-before?
  • may-violate-keep-after?

Only the horizontal orientation is supported. Rules only show up in Page Layout View

Up Back to top  

score
Inherited characteristics Non-inherited characteristics
  • line-repeat (1 for type of before and through, 1 or 2 for after)
  • type (before, through, after)

Up Back to top  

line-field*
Inherited characteristics Non-inherited characteristics
  • field-width
  • field-align
 
* At the beginning of paragraph only.

Up Back to top  

leader*
Inherited characteristics Non-inherited characteristics
   
* On the last line of paragraph only. The principal port (the leader string itself) can contain characters only.

The content of the flow object is ignored: a dotted leader will always be used. The specified length is ignored: it always fills out the line.

Up Back to top  

link
Inherited characteristics Non-inherited characteristics
 
  • destination [#f, objects returned by (idref-address ...) and (current-node-address ...)]
* Only destinations that are single elements in the same RTF output file.

Up Back to top  

index-entry
Inherited characteristics Non-inherited characteristics
 
  • components
  • page-number?
  • sort-string
  • starts-page-range?
  • ends-page-range?
components
is a list of strings that represent index entry levels. This characteristic is not inherited and shall be specified.
page-number?
is a boolean specifying whether this index entry should contain page number information. This characteristic is not inherited. The default is #t.
sort-string
is either #f, specifying that this index entry's components should be used for sorting the index, or a string that should be used for sorting. This characteristic is not inherited. The default is #f.
starts-page-range?
is a boolean specifying whether the index entry starts a page range. This characteristic is not inherited. The default is #f.
ends-page-range?
is a boolean specifying whether the index entry starts a page range. This characteristic is not inherited. The default is #f.
Only destinations that are single elements in the same RTF output file.

Up Back to top  

external-graphic
Inherited characteristics Non-inherited characteristics
  • space-before
  • space-after
  • display?
  • scale (max)
  • max-width
  • max-height
  • entity-system-id
  • display-alignment
  • start-indent
  • end-indent
  • span (spans all columns if > 1)
  • space-before
  • space-after
  • keep-with-previous?
  • keep-with-next?
  • break-before (#f, page)
  • break-after (#f, page)
  • keep (#f, page)
  • may-violate-keep-before?
  • may-violate-keep-after?

On Windows platforms, this can be used to embed OLE objects, by making the the value of the notation-system-id: a formal system identifier whose storage manager is CLSID and whose storage object identifier is the COM CLSID (including surrounding braces). The system identifier may also be just <CLSID> (that is, the storage object identifier may be empty); in this case, the OLE default CLSID for the file (usually chosen based on the file's extension) will be used.

 

Up Back to top  

paragraph
Inherited characteristics Non-inherited characteristics
  • lines (wrap, asis-wrap)
  • hyphenation-ladder-count
  • hyphenation-remain-char-count
  • hyphenation-push-char-count
  • font-weight
  • font-posture
  • font-name
  • font-size
  • quadding
  • widow-count
  • orphan-count
  • language
  • country
  • span (spans all columns if > 1)
  • space-before
  • space-after
  • keep-with-previous?
  • keep-with-next?
  • break-before (#f, page)
  • break-after (#f, page)
  • keep (#f, page)
  • may-violate-keep-before?
  • may-violate-keep-after?
  • line-spacing
  • min-leading (#f or 0 for proportional line spacing)
  • first-line-start-indent

Up Back to top  

paragraph-break
Inherited characteristics Non-inherited characteristics
Same as for paragraph Same as for paragraph

Up Back to top  

simple-page-sequence
Inherited characteristics Non-inherited characteristics
  • page-width
  • page-height
  • left-margin
  • right-margin
  • top-margin
  • bottom-margin
  • header-margin
  • footer-margin
  • left-header
  • center-header
  • right-header
  • left-footer
  • center-footer
  • right-footer
(page-number-sosofo)
(current-node-page-number-sosofo)
"UNREGISTERED::James Clark//Procedure::if-first-page"
This can be used only in the specification of the value of one of the header/footer characteristics of simple-page-sequence. It returns a sosofo that will display as sosofo1 if the page is the first page of the simple-page-sequence and as sosofo2 otherwise.
"UNREGISTERED::James Clark//Procedure::if-front-page"
This can be used only in the specification of the value of one of the header/footer characteristics of simple-page-sequence. It returns a sosofo that will display as sosofo1 if the page is a front (ie recto, odd-numbered) page and as sosofo2 if it is a back (i.e. verso, even-numbered) page.
"UNREGISTERED::James Clark//Characteristic::page-n-columns"
Value is a strictly positive integer, specifying the number of columns. The initial value is 1.
"UNREGISTERED::James Clark//Characteristic::page-column-sep"
Value is a length, specifying the separation between columns. The initial value is .5in.
"UNREGISTERED::James Clark//Characteristic::page-balance-columns?"
Value is a boolean. If true, the columns on the final page of the page-sequence should be balanced. The initial value is #f.
Here's how to enable the above extensions:
(define if-first-page (external-procedure
    "UNREGISTERED::James Clark//Procedure::if-first-page"))
(define if-front-page (external-procedure  
    "UNREGISTERED::James Clark//Procedure::if-front-page"))
(declare-characteristic page-n-columns
    "UNREGISTERED::James Clark//Characteristic::page-n-columns" 1)
(declare-characteristic page-n-columns
    "UNREGISTERED::James Clark//Characteristic::page-column-gap" (* 36 1pt))
(declare-characteristic page-balance-columns?
    "UNREGISTERED::James Clark//Characteristic::page-balance-columns?" #f)
 

Up Back to top  

table
Inherited characteristics Non-inherited characteristics
  • table-border
  • display-alignment
  • start-indent
  • end-indent
  • table-width
  • before-row-border
  • after-row-border
  • before-column-border
  • after-column-border
  • span (spans all columns if > 1)
  • space-before
  • space-after
  • keep-with-previous?
  • keep-with-next?
  • break-before (#f, page)
  • break-after (#f, page)
  • keep (#f, page)
  • may-violate-keep-before?
  • may-violate-keep-after?

Up Back to top  

table-part
Inherited characteristics Non-inherited characteristics
 
  • space-before
  • space-after
  • keep-with-previous?
  • keep-with-next?
  • break-before (#f, page)
  • break-after (#f, page)
  • keep (#f, page)
  • may-violate-keep-before?
  • may-violate-keep-after?
  • header
  • footer

Up Back to top  

table-column
Inherited characteristics Non-inherited characteristics
  • start-indent
  • end-indent
  • column-number
  • n-columns-spanned
  • width
  • (table-unit k)

Up Back to top  

table-cell
Inherited characteristics Non-inherited characteristics
  • cell-before-row-margin
  • cell-after-row-margin
  • cell-before-column-margin
  • cell-after-column-margin
  • cell-row-alignment
  • cell-before-row-border
  • cell-after-row-border
  • cell-before-column-border
  • cell-after-column-border
  • cell-background?
  • background-color
  • column-number
  • n-columns-spanned
  • n-rows-spanned
  • starts-row?
  • ends-row?

Up Back to top  

table-border
Inherited characteristics Non-inherited characteristics
  • border-present?
  • line-thickness
  • line-repeat (0, 1, or 2)
  • line-sep
  • color
 

Up Back to top  

Many DSSSL characteristics cannot be implemented in RTF. The backend does the best it can.

In order to get correct page numbers in Microsoft Word, type the following after opening the document:

  1. CTRL+END
  2. CTRL+A
  3. F9

In Word Viewer 97, you must instead do:

  1. CTRL+END
  2. ALT
  3. V
  4. N
  5. ALT
  6. V
  7. P

Page numbers also get updated automatically when you print.

We also ship a perl script contrib/rtf2doc for this purpose.

The RTF backend supports some additional characteristics. To use a characteristic named here as C, declare it using declare-characteristic with the public identifier:

"UNREGISTERED::James Clark//Characteristic::C"
heading-level
Value is an integer. It applies to paragraph flow objects. If the value is between 1 and 9, then the paragraph is output as a header of this level, otherwise it is output as body text. Using this characteristic allows Word to provide useful outline views and a document map. (Note that Word's handling of document maps for RTF documents is buggy: if you load an RTF document, and the previous document was using the Online Layout view, then RTF will attempt to guess what paragraphs are headings, which it will almost always do wrong. To avoid this, switch to the Normal view before loading an RTF document.) The initial value is 0
page-number-format
Value is a string as for format-number procedure. This controls the format of the number used by page-number-sosofo and current-page-number-sosofo for references to pages in the simple-page-sequence. The initial value is "1". It applies to simple-page-sequence flow objects.
page-number-restart?
Value is a boolean. If true, then for the purposes of page-number-sosofo and current-page-number-sosofo, the page numbers for this simple-page-sequence will restart from 1. The initial value is #f. It applies to simple-page-sequence flow objects.
page-n-columns
Value is a strictly positive integer, specifying the number of columns. The initial value is 1. It applies to simple-page-sequence flow objects.
page-column-sep
Value is a length, specifying the separation between columns. The initial value is .5in. It applies to simple-page-sequence flow objects.
page-balance-columns?
Value is a boolean. If true, the columns on the final page of the page-sequence should be balanced. The initial value is #f. It applies to simple-page-sequence flow objects.
superscript-height
Value is a length. Specifies the height of the baseline of a superscript above its parent's baseline. It applies to superscript and script flow objects.
subscript-depth
Value is a length. Specifies the depth of the baseline of a subscript below its parent's baseline. It applies to subscript and script flow objects.
over-mark-height
Value is a length. Specifies the height of the baseline of the contents of the over-mark area of a mark flow object above the baseline of the contents of the main area. It also controls the height of the contents of the mid-sup area of the script flow object. It applies to mark and script flow objects.
under-mark-depth
Value is a length. Specifies the depth of the baseline of the contents of the under-mark area of a mark flow object below the baseline of the contents of the main area. It also controls the depth of the contents of the mid-sub area of the script flow object. It applies to mark and script flow objects.
grid-row-sep
Value is a length. Specifies the separation between rows of a grid flow object.
grid-column-sep
Value is a length. Specifies the separation between columns of a grid flow object.
openjade-1.3.2/jadedoc/tex.htm0100664000076400007640000005634706765751017014355 0ustar ianian The OpenJade TeX backend

OpenJade

The OpenJade TeX backend

Created by David Megginson, Sebastian Rahtz and Kathleen Marszalek
Sponsored by Novare International Corp.

Introduction

The TeX backend was initially written by David Megginson, but is now maintained by Sebastian Rahtz. In a development sponsored by Novare International (to whom many thanks!), Kathleen Marszalek drastically improved the table support.

The job of the backend is to map DSSSL flow-objects into generic TeX macro calls. Atomic flow objects appear as single \insertOBJECT{} macro calls, while non-atomic flow objects appear as nested pairs of \OBJECT{}..\endOBJECT{} macro calls.

The \insertOBJECT and \OBJECT calls receive a single argument, which is a list of definitions for inherited and non-inherited characteristics (see below). For example, the following DSSSL handler:


(element P
  (make paragraph
	start-indent: 6pt))

would generate the following TeX calls:


\startPar{\def\StartIndent{6pt}}%
CONTENTS
\endPar{}

It is important to note that any characters with values >255 will appear as \Character{value} macro calls ie.


\Character{1024}

In addition to nearly all of the flow-object classes currently supported by Jade, the TeX backend generates two pseudo flow-object macro calls:

  • \FOT{version}
  • \endFOT{}

These are guaranteed to appear at the very beginning and very end of the .tex output file, and give your macros a chance to grab control at both points. The argument to \FOT is the version of the TeX markup generated by the Jade backend (currently 2). Macro packages should check this for compatibility.

The output .tex file is not ready to be passed directly through TeX or LaTeX -- instead, it is necessary to have TeX macro definitions for all of the flow-object macros, and to set default values for the characteristics. The macros can use of TeX primitives, plain TeX, LaTeX, or any other format which is convenient.

A LaTeX macro package for use with the output of this backend has been developed by Sebastian Rahtz. The current stable release can be found on CTAN in macros/jadetex; experimental releases will be placed at http://www.tug.org/applications/jadetex/ at intervals.

Characteristics

The SETTINGS argument to the flow-object macros will contain a series of \def statements for both inherited and non-inherited characteristics. These will appear only when the characteristic's value differs from the standard default (in the case of non-inherited characteristics) or from the current value (in the case of inherited characteristics). Since these statements appear as an argument, they will not take effect until you reference the parameter explicitly.

Inherited Characteristics

The characteristics in the following table are inherited -- you should set these to their default values only once, at the beginning of the parse (but they should always revert to their previous values after a flow-object has finished):

Characteristic Default Value DSSSL Equivalent
\AsisWrapIndent 0 [#f]  
\BackgroundColor 0 [#f]  
\BackgroundLayer -1  
\BackgroundTile 0 [#f]  
\BorderAlignment center  
\BorderOmitAtBreak 0 [#f]  
\BorderPresent 1 [true]  
\BorderPriority 0  
\BottomMargin 0pt  
\BoxBorderAlignment outside  
\BoxCornerRadius 0pt [note]
\BoxOpenEnd 0 [#f]  
\BoxSizeAfter 4pt  
\BoxSizeBefore 8pt  
\BoxType border  
\CellAfterColumnMargin 0pt  
\CellAfterRowMargin 0pt  
\CellBackground 0 [#f]  
\CellBeforeColumnMargin 0pt  
\CellBeforeRowMargin 0pt  
\CellCrossed 0 [#f]  
\CellRowAlignment start  
\Color current gray  
\Country 0 [#f]  
\DisplayAlignment start  
\EndIndent 0pt  
\EndMargin 0pt  
\ExpandTabs 8  
\FieldAlign start  
\FieldWidth 0pt  
\FillingDirection top-to-bottom  
\FirstLineStartIndent 0pt  
\FloatOutLineNumbers 0 [#f]  
\FloatOutMarginalia 0 [#f]  
\FloatOutSidelines 0 [#f]  
\FontFamilyName iso-serif  
\FontName 0 [#f]  
\FontPosture upright  
\FontProportionateWidth medium  
\FontSize 10pt  
\FontStructure solid  
\FontWeight medium  
\FooterMargin 0pt  
\GlyphAlignmentMode font  
\GlyphReorderMethod ??  
\GlyphSubstMethod ??  
\HangingPunct 0 [#f]  
\HeaderMargin 0pt  
\Hyphenate ??  
\HyphenationKeep 0 [#f]  
\HyphenationLadderCount 0 [#f]  
\HyphenationMethod ??  
\HyphenationPushCharCount 2  
\HyphenationRemainCharCount 2  
\IgnoreRecordEnd 0 [#f]  
\ImplicitBidiMethod 0 [#f]  
\InhibitLineBreaks 0 [#f]  
\InputWhitespaceTreatment ??  
\JustifyGlyphSpaceMaxAdd 0pt  
\JustifyGlyphSpaceMaxRemove 0pt  
\Kern ??  
\KernMode ??  
\Language 0 [#f]  
\LastLineEndIndent 0pt  
\LastLineJustifyLimit 0pt  
\LastLineQuadding relative  
\Layer 0  
\LeftMargin 0pt  
\Ligature ??  
\LineBreakingMethod 0 [#f]  
\LineCap butt  
\LineCompositionMethod 0 [#f]  
\LineJoin miter  
\LineNumberSep ??  
\LineNumberSide ??  
\LineRepeat 1  
\LineSep 1pt  
\LineSpacing 12pt  
\LineThickness 1pt  
\Lines wrap  
\MarginaliaKeepWithPrevious 0 [#f]  
\MarginaliaSep 0pt  
\MarginaliaSide start  
\MathDisplayMode ??  
\MinLeaderRepeat 1  
\NColumnsSpanned 1  
\NRowsSpanned 1  
\NumberedLines 1 [true]  
\OrphanCount 2  
\PageHeight sysdep  
\PageWidth sysdep  
\PositionPointShift 0pt  
\PrincipalModeSimultaneous 0 [#f]  
\Quadding start  
\RightMargin 0pt  
\ScoreSpaces 1 [true]  
\SidelineSep required  
\SidelineSide required  
\Span 1  
\SpanWeak 0 [#f]  
\StartIndent 0pt  
\StartMargin 0pt  
\TableAutoWidthMethod 0 [#f]  
\TableCornerRadius 0pt [note]
\TablePartOmitMiddleFooter 0 [#f]  
\TablePartOmitMiddleHeader 0 [#f]  
\TopMargin 0pt  
\WidowCount 2  
\WritingMode left-to-right  

 

Notes

  1. \BoxCornerRadius combines the box-corner-rounded and box-corner-radius characteristics (its value is 0pt if box-corner-rounded is #f).
  2. \TableCornerRadius combines the table-corner-rounded and table-corner-radius characteristics (its value is 0pt if table-corner-rounded is #f).

Non-Inherited Characteristics

The characteristics in the following table are not inherited -- you should set these to their default values at the beginning of every relevant flow-object, before evaluating the SETTINGS argument:

Characteristic Default Value DSSSL Equivalent
\AlignLeader 1 [true]  
\BreakAfter 0 [#f]  
\BreakAfterPriority 0  
\BreakBefore 0 [#f]  
\BreakBeforePriority 0  
\Ch no default  
\CoalesceId 0 [#f]  
\ColumnIndex contextual column-number [??]
\EntitySystemId required  
\EscapementDirection   writing-mode
\GlyphId no default  
\IdrefAddress ??  
\IsDisplay 0 [#f]  
\IsDropAfterLineBreak unspecified  
\IsDropUnlessBeforeLineBreak unspecified  
\IsPunct unspecified  
\IsInputTab unspecified  
\IsInputWhiteSpace unspecified  
\IsRecordEnd unspecified  
\IsSpace unspecified  
\Keep 0 [#f]  
\KeepWithNext 0 [#f]  
\KeepWithPrevious 0 [#f]  
\Length context  
\MathClass unspecified  
\MathFontPosture unspecified  
\MaxHeight contextual  
\MaxWidth contextual  
\MayViolateKeepAfter 0 [#f]  
\MayViolateKeepBefore 0 [#f]  
\NotationSystemId required  
\Orientation required  
\PositionPointX ??  
\PositionPointY ??  
\PositionPreference 0 [#f] position-preference
\ScaleType maxuniform scale [note]
\ScaleX n/a scale [note]
\ScaleY n/a scale [note]
\ScoreLength ??  
\ScoreType required type
\Script unspecified  
\SpaceAfterConditional 0 [#f] space-after
\SpaceAfterForce 0 [#f] space-after
\SpaceAfterMax 0pt space-after
\SpaceAfterMaxFactor 0 space-after
\SpaceAfterMin 0pt space-after
\SpaceAfterMinFactor 0 space-after
\SpaceAfterNominal 0pt space-after
\SpaceAfterNominalFactor 0 space-after
\SpaceAfterPriority 0 space-after
\SpaceBeforeConditional 0 [#f] space-before
\SpaceBeforeForce 0 [#f] space-before
\SpaceBeforeMax 0pt space-before
\SpaceBeforeMaxFactor 0 space-before
\SpaceBeforeMin 0pt space-before
\SpaceBeforeMinFactor 0 space-before
\SpaceBeforeNominal 0pt space-before
\SpaceBeforeNominalFactor 0 space-before
\SpaceBeforePriority 0 space-before
\StretchFactor 0  
\TableWidth contextual  
\TruncateLeader 0 [#f]  
\Width required [note]

Notes

  1. ScaleType, ScaleX, and ScaleY are all the equivalent of the scale characteristic: if ScaleType is 0 [#f], then ScaleX and ScaleY become relevant.
  2. The Width characteristic is not required if table-auto-width feature is present.
Sebastian Rahtz, s.rahtz@elsevier.co.uk

 

 

 

 

 

 

 

 

 

 

 

 

 

openjade-1.3.2/jadedoc/transform.htm0100664000076400007640000002661106765751020015551 0ustar ianian The OpenJade SGML/XML backend

OpenJade

The OpenJade SGML/XML backend

Created by James Clark

OpenJade does not support the DSSSL Transformation Language. However, it provides some simple, non-standardized extensions to the DSSSL Style Language that allow it to be used for SGML transformations.

These extensions are used in conjunction with the SGML backend which is selected with the -t sgml or -t xml options. Unlike other backends, the SGML backend writes its output to the standard output.

The -t xml option makes empty elements and processing instructions use the XML syntax. Note that the XML declaration is not automatically emitted.

The extensions consist of a collection of flow object classes that are used instead of the standard DSSSL-defined flow object classes:

element
empty-element
Each of these flow objects results in an element in the output. The element flow object is a compound flow object (one that can have child flow objects). Both a start-tag and an end-tag are generated for this flow object. The empty-element is an atomic flow object (one that cannot have child flow objects). Only a start-tag is output for this. It should should be used for elements with a declared content of EMPTY or with a content reference attribute. Both of these flow objects support the following non-inherited characteristics:
gi
This is a string-valued characteristic that specifies the element's generic identifier. It defaults to the generic identifier of the current node.
attributes
This specifies the element's attributes as a list of lists each of which consists of exactly two strings, the first specifying the attribute name and the second the attribute value. It defaults to the empty list.
 
processing-instruction
This is an atomic flow object that results in a processing instruction. It supports the following non-inherited characteristics:
data
This is a string-valued characteristic that specifies the content of the processing instruction. It defaults to the empty string.
document-type
This is an atomic flow object that results in a DOCTYPE declaration. It supports the following non-inherited characteristics:
name
This is a string-valued characteristic that specifies the name of the document type (which must be the same as the name of the document element). It must not be omitted.
system-id
This is a string-valued characteristic that specifies the system identifier of the document type. If non-empty, this will be used as the system identifier in the doctype declaration. The default value is the empty string.
public-id
This is a string-valued characteristic that specifies the public identifier of the document type. If non-empty, this will be used as the public identifier in the doctype declaration. The default value is the empty string.
entity
This is an compound flow object that stores its content in a separate entity. It supports the following non-inherited characteristic:
system-id
The system identifier of the entity. For now this is treated as a filename not as an FSI.

Note that no entity reference or declaration is emitted.

entity-ref
This is an atomic flow object that results in an entity reference. It supports the following non-inherited characteristic:
name
The name of the entity.
formatting-instruction
This is an atomic flow object that inserts characters into the output without change. It supports the following non-inherited characteristic:
data
This is the string to be inserted.

It differs from normal data characters in the &, < and > will not be escaped.

There is also the following characteristic:

preserve-sdata?
This is an inherited boolean characteristic that applies to character flow objects. When true, if the current-node for the character flow object was an sdata node, then the character will be output as a reference to an entity with the same name. The initial value is #f.

Each of these flow object classes must be declared using declare-flow-object-class in any DSSSL specification that makes use of it. A suitable set of declarations is:


(declare-flow-object-class element
  "UNREGISTERED::James Clark//Flow Object Class::element")
(declare-flow-object-class empty-element
  "UNREGISTERED::James Clark//Flow Object Class::empty-element")
(declare-flow-object-class document-type
  "UNREGISTERED::James Clark//Flow Object Class::document-type")
(declare-flow-object-class processing-instruction
  "UNREGISTERED::James Clark//Flow Object Class::processing-instruction")
(declare-flow-object-class entity
  "UNREGISTERED::James Clark//Flow Object Class::entity")
(declare-flow-object-class entity-ref
  "UNREGISTERED::James Clark//Flow Object Class::entity-ref")
(declare-flow-object-class formatting-instruction
  "UNREGISTERED::James Clark//Flow Object Class::formatting-instruction")
(declare-characteristic preserve-sdata?
  "UNREGISTERED::James Clark//Characteristic::preserve-sdata?"
  #f)

Here's a simple example that does the identity transformation:


<!doctype style-sheet PUBLIC "-//James Clark//DTD DSSSL Style Sheet//EN">

(declare-flow-object-class element
  "UNREGISTERED::James Clark//Flow Object Class::element")

(define (copy-attributes #!optional (nd (current-node)))
  (let loop ((atts (named-node-list-names (attributes nd))))
    (if (null? atts)
        '()
        (let* ((name (car atts))
               (value (attribute-string name nd)))
          (if value
              (cons (list name value)
                    (loop (cdr atts)))
              (loop (cdr atts)))))))

(default (make element
               attributes: (copy-attributes)))

Note that this does not deal with empty elements nor processing instructions, nor does it include a doctype declaration.

 

openjade-1.3.2/jadedoc/xmlfo.htm0100664000076400007640000000246706765751020014666 0ustar ianian The OpenJade FOT backend

OpenJade

 

The OpenJade FOT backend

Created by James Clark

This backend creates an XML representation of the flow object tree, The DTD for the XML generated is in dsssl/fot.dtd.

Characteristics declared with declare-characteristic are not reported.

Flow objects of classes declared with declare-flow-object are not reported.

openjade-1.3.2/pubtext/0040775000076400007640000000000007572430640013122 5ustar ianianopenjade-1.3.2/pubtext/HTML32.dcl0100664000076400007640000000415106713045044014511 0ustar ianian openjade-1.3.2/pubtext/HTML32.dtd0100664000076400007640000004757706713045044014545 0ustar ianian ... -- > ]]> %ISOlat1; ]]> ]]> openjade-1.3.2/pubtext/HTML32.soc0100664000076400007640000000052206713045044014531 0ustar ianian-- html32.soc: catalog for parsing HTML 3.2 documents -- SGMLDECL "HTML32.dcl" PUBLIC "-//W3C//DTD HTML 3.2 Final//EN" HTML32.dtd PUBLIC "-//W3C//DTD HTML 3.2 Draft//EN" HTML32.dtd PUBLIC "-//W3C//DTD HTML 3.2//EN" HTML32.dtd PUBLIC "ISO 8879-1986//ENTITIES Added Latin 1//EN//HTML" ISOlat1.ent -- added by jjc -- DOCTYPE html HTML32.dtd openjade-1.3.2/pubtext/HTML4-f.dtd0100664000076400007640000000175706713070453014677 0ustar ianian ... ... --> %HTML4.dtd;openjade-1.3.2/pubtext/HTML4-s.dtd0100664000076400007640000010422506713070453014706 0ustar ianian %HTMLlat1; %HTMLsymbol; %HTMLspecial; ]]> openjade-1.3.2/pubtext/HTML4.dcl0100664000076400007640000000547606713070453014445 0ustar ianianopenjade-1.3.2/pubtext/HTML4.dtd0100664000076400007640000013114106713070453014443 0ustar ianian ... ... The URI used as a system identifier with the public identifier allows the user agent to download the DTD and entity sets as needed. The FPI for the Strict HTML 4.0 DTD is: "-//W3C//DTD HTML 4.0//EN" and its URI is: http://www.w3.org/TR/REC-html40/strict.dtd Authors should use the Strict DTD unless they need the presentation control for user agents that don't (adequately) support style sheets. If you are writing a document that includes frames, use the following FPI: "-//W3C//DTD HTML 4.0 Frameset//EN" with the URI: http://www.w3.org/TR/REC-html40/frameset.dtd The following URIs are supported in relation to HTML 4.0 "http://www.w3.org/TR/REC-html40/strict.dtd" (Strict DTD) "http://www.w3.org/TR/REC-html40/loose.dtd" (Loose DTD) "http://www.w3.org/TR/REC-html40/frameset.dtd" (Frameset DTD) "http://www.w3.org/TR/REC-html40/HTMLlat1.ent" (Latin-1 entities) "http://www.w3.org/TR/REC-html40/HTMLsymbol.ent" (Symbol entities) "http://www.w3.org/TR/REC-html40/HTMLspecial.ent" (Special entities) These URIs point to the latest version of each file. To reference this specific revision use the following URIs: "http://www.w3.org/TR/REC-html40-971218/strict.dtd" "http://www.w3.org/TR/REC-html40-971218/loose.dtd" "http://www.w3.org/TR/REC-html40-971218/frameset.dtd" "http://www.w3.org/TR/REC-html40-971218/HTMLlat1.ent" "http://www.w3.org/TR/REC-html40-971218/HTMLsymbol.ent" "http://www.w3.org/TR/REC-html40-971218/HTMLspecial.ent" --> %HTMLlat1; %HTMLsymbol; %HTMLspecial; ]]> ]]> ]]> ]]> ]]> openjade-1.3.2/pubtext/HTML4.soc0100664000076400007640000000057606713071073014462 0ustar ianianOVERRIDE YES SGMLDECL HTML4.dcl DOCTYPE HTML HTML4.dtd PUBLIC "-//W3C//DTD HTML 4.0//EN" HTML4-s.dtd PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" HTML4.dtd PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN" HTML4-f.dtd PUBLIC "-//W3C//ENTITIES Latin1//EN//HTML" HTMLlat1.ent PUBLIC "-//W3C//ENTITIES Special//EN//HTML" HTMLspec.ent PUBLIC "-//W3C//ENTITIES Symbols//EN//HTML" HTMLsym.ent openjade-1.3.2/pubtext/HTMLlat1.ent0100664000076400007640000002736706713070453015172 0ustar ianian openjade-1.3.2/pubtext/HTMLspec.ent0100664000076400007640000001002406713070453015241 0ustar ianian openjade-1.3.2/pubtext/HTMLsym.ent0100664000076400007640000003415606713070453015133 0ustar ianian openjade-1.3.2/pubtext/ISOlat1.ent0100664000076400007640000001422506713045044015043 0ustar ianian openjade-1.3.2/pubtext/ISOlat1.sgm0100664000076400007640000001045206713045044015041 0ustar ianian openjade-1.3.2/pubtext/html-1.dtd0100664000076400007640000000116206713045044014712 0ustar ianian ... -- > %html; openjade-1.3.2/pubtext/html-1s.dtd0100664000076400007640000000116606713045044015101 0ustar ianian ... -- > %html-1; openjade-1.3.2/pubtext/html-s.dtd0100664000076400007640000000116306713045044015015 0ustar ianian ... -- > %html; openjade-1.3.2/pubtext/html.dcl0100664000076400007640000000450506713045044014547 0ustar ianian openjade-1.3.2/pubtext/html.dtd0100664000076400007640000004040506713071072014557 0ustar ianian ... -- > ]]> %ISOlat1; ]]> Heading is preferred to

Heading

--> ]]> " > #AttVal(Alt)" > ]]> ]]> ]]> Directory" > Menu" > Heading

Text ... is preferred to

Heading

Text ... --> ]]> Form:" %SDASUFF; "Form End." > Select #AttVal(Multiple)" > ]]> ]]> " > [Document is indexed/searchable.]"> ]]> openjade-1.3.2/pubtext/html.soc0100664000076400007640000000226306713071072014570 0ustar ianian -- catalog: SGML Open style entity catalog for HTML -- -- $Id: html.soc,v 1.1.1.2 1999/05/02 15:41:46 Avi Exp $ -- -- Hacked by jjc -- -- Ways to refer to Level 2: most general to most specific -- PUBLIC "-//IETF//DTD HTML//EN" html.dtd PUBLIC "-//IETF//DTD HTML 2.0//EN" html.dtd PUBLIC "-//IETF//DTD HTML Level 2//EN" html.dtd PUBLIC "-//IETF//DTD HTML 2.0 Level 2//EN" html.dtd -- Ways to refer to Level 1: most general to most specific -- PUBLIC "-//IETF//DTD HTML Level 1//EN" html-1.dtd PUBLIC "-//IETF//DTD HTML 2.0 Level 1//EN" html-1.dtd -- Ways to refer to Strict Level 2: most general to most specific -- PUBLIC "-//IETF//DTD HTML Strict//EN" html-s.dtd PUBLIC "-//IETF//DTD HTML 2.0 Strict//EN" html-s.dtd PUBLIC "-//IETF//DTD HTML Strict Level 2//EN" html-s.dtd PUBLIC "-//IETF//DTD HTML 2.0 Strict Level 2//EN" html-s.dtd -- Ways to refer to Strict Level 1: most general to most specific -- PUBLIC "-//IETF//DTD HTML Strict Level 1//EN" html-1s.dtd PUBLIC "-//IETF//DTD HTML 2.0 Strict Level 1//EN" html-1s.dtd -- ISO latin 1 entity set for HTML -- PUBLIC "ISO 8879-1986//ENTITIES Added Latin 1//EN//HTML" ISOlat1.sgm SGMLDECL html.dcl DOCTYPE html html.dtd openjade-1.3.2/pubtext/xml.dcl0100664000076400007640000001522106713070453014402 0ustar ianian" PIC "?>" SHORTREF NONE NAMES SGMLREF QUANTITY NONE ENTITIES "amp" 38 "lt" 60 "gt" 62 "quot" 34 "apos" 39 FEATURES MINIMIZE DATATAG NO OMITTAG NO RANK NO SHORTTAG STARTTAG EMPTY NO UNCLOSED NO NETENABL IMMEDNET ENDTAG EMPTY NO UNCLOSED NO ATTRIB DEFAULT YES OMITNAME NO VALUE NO EMPTYNRM YES IMPLYDEF ATTLIST NO DOCTYPE NO ELEMENT NO ENTITY NO NOTATION NO LINK SIMPLE NO IMPLICIT NO EXPLICIT NO OTHER CONCUR NO SUBDOC NO FORMAL NO URN NO KEEPRSRE YES VALIDITY TYPE ENTITIES REF ANY INTEGRAL YES APPINFO NONE SEEALSO "ISO 8879:1986//NOTATION Extensible Markup Language (XML) 1.0//EN" > openjade-1.3.2/pubtext/xml.soc0100664000076400007640000000002306713045172014416 0ustar ianianSGMLDECL "xml.dcl" openjade-1.3.2/spgrove/0040775000076400007640000000000007572430645013121 5ustar ianianopenjade-1.3.2/spgrove/GroveApp.cxx0100664000076400007640000000206406713045701015356 0ustar ianian// Copyright (c) 1996 James Clark // See the file COPYING for copying permission. #ifdef __GNUG__ #pragma implementation #endif #include "config.h" #include "GroveApp.h" #include "GroveBuilder.h" #include "threads.h" #ifdef SP_NAMESPACE namespace SP_NAMESPACE { #endif GroveApp::GroveApp(const char *requiredCodingSystem) : ParserApp(requiredCodingSystem) { } static int generateEventsThread(void *args) { return ((GroveApp::GenerateEventArgs *)args)->run(); } int GroveApp::generateEvents(ErrorCountEventHandler *eceh) { #if 0 int ret = ParserApp::generateEvents(eceh); processGrove(); return ret; #else GenerateEventArgs args(eceh, this); Thread thread(generateEventsThread, &args); processGrove(); rootNode_.clear(); return thread.wait(); #endif } ErrorCountEventHandler *GroveApp::makeEventHandler() { return GroveBuilder::make(0, this, this, 0, rootNode_); } void GroveApp::dispatchMessage(const Message &message) { static Mutex mutex; Mutex::Lock lock(&mutex); MessageReporter::dispatchMessage(message); } #ifdef SP_NAMESPACE } #endif openjade-1.3.2/spgrove/GroveApp.h0100664000076400007640000000250706713045701015005 0ustar ianian// Copyright (c) 1996 James Clark // See the file COPYING for copying permission. #ifndef GroveApp_INCLUDED #define GroveApp_INCLUDED 1 #ifdef __GNUG__ #pragma interface #endif #include "ParserApp.h" #include "GroveBuilder.h" #include "HashTable.h" #ifdef SP_NAMESPACE namespace SP_NAMESPACE { #endif class SPGROVE_API GroveApp : public ParserApp { public: GroveApp(const char *requiredCodingSystem = 0); ErrorCountEventHandler *makeEventHandler(); int generateEvents(ErrorCountEventHandler *eceh); virtual void processGrove() = 0; class GenerateEventArgs { public: int run() { return app_->inheritedGenerateEvents(eceh_); } private: GenerateEventArgs(ErrorCountEventHandler *eceh, GroveApp *app) : app_(app), eceh_(eceh) { } ErrorCountEventHandler *eceh_; GroveApp *app_; friend class GroveApp; }; friend class GenerateEventArgs; void dispatchMessage(const Message &); protected: GROVE_NAMESPACE_SCOPE NodePtr rootNode_; private: int inheritedGenerateEvents(ErrorCountEventHandler *eceh) { return ParserApp::generateEvents(eceh); } }; inline OutputCharStream &operator<<(OutputCharStream &os, #ifdef GROVE_NAMESPACE GROVE_NAMESPACE:: #endif GroveString &str) { return os.write(str.data(), str.size()); } #ifdef SP_NAMESPACE } #endif #endif /* not GroveApp_INCLUDED */ openjade-1.3.2/spgrove/GroveBuilder.cxx0100664000076400007640000053426607565503750016253 0ustar ianian// Copyright (c) 1996, 1997 James Clark // See the file COPYING for copying permission. // FIXME location for SgmlDocument node. #include "config.h" #include "Boolean.h" #include "Node.h" #include "Resource.h" #include "Ptr.h" #include "xnew.h" #include "Event.h" #include "GroveBuilder.h" #include "ErrorCountEventHandler.h" #include "OutputCharStream.h" #include "MessageFormatter.h" #include "Dtd.h" #include "Syntax.h" #include "Attribute.h" #include "Vector.h" #include "LocNode.h" #include "SdNode.h" #include "threads.h" #include "macros.h" #include #include #ifdef _MSC_VER #pragma warning ( disable : 4250 ) // inherits via dominance #endif #include #include #ifdef SP_NAMESPACE namespace SP_NAMESPACE { #endif #ifdef GROVE_NAMESPACE using namespace GROVE_NAMESPACE; #endif static bool blockingAccess = 1; size_t initialBlockSize = 8192; unsigned maxBlocksPerSize = 20; struct Chunk; struct ParentChunk; class ElementChunk; struct SgmlDocumentChunk; class DataChunk; class GroveImpl; class BaseNode; class ChunkNode; class ElementNode; class DataNode; class CdataAttributeValueNode; class AttributeValueTokenNode; class AttributeAsgnNode; class AttributeDefNode; class EntityNode; class NotationNode; class ExternalIdNode; class DocumentTypeNode; class SgmlConstantsNode; class MessageNode; class ElementTypeNode; class ModelGroupNode; class ElementTokenNode; class PcdataTokenNode; class DefaultEntityNode; struct Chunk { // second arg never null // Set ptr to a node pointing to first Node in this. virtual AccessResult setNodePtrFirst(NodePtr &ptr, const BaseNode *) const = 0; virtual AccessResult setNodePtrFirst(NodePtr &ptr, const ElementNode *node) const; virtual AccessResult setNodePtrFirst(NodePtr &ptr, const DataNode *node) const; virtual const Chunk *after() const = 0; virtual AccessResult getFollowing(const GroveImpl *, const Chunk *&, unsigned long &nNodes) const; virtual AccessResult getFirstSibling(const GroveImpl *, const Chunk *&) const; virtual const StringC *id() const; virtual Boolean getLocOrigin(const Origin *&) const; ParentChunk *origin; }; struct LocChunk : public Chunk { Index locIndex; }; struct ParentChunk : public LocChunk { ParentChunk() : nextSibling(0) { } Chunk *nextSibling; }; class ElementChunk : public ParentChunk { public: virtual const AttributeValue * attributeValue(size_t attIndex, const GroveImpl &grove) const; virtual Boolean mustOmitEndTag() const; virtual Boolean included() const; const AttributeDefinitionList *attDefList() const; AccessResult setNodePtrFirst(NodePtr &ptr, const BaseNode *node) const; AccessResult setNodePtrFirst(NodePtr &ptr, const DataNode *node) const; AccessResult setNodePtrFirst(NodePtr &ptr, const ElementNode *node) const; static const StringC &key(const ElementChunk &chunk) { return *chunk.id(); } const Chunk *after() const; AccessResult getFollowing(const GroveImpl *, const Chunk *&, unsigned long &nNodes) const; const ElementType *elementType() const { return type; } private: friend class ElementNode; const ElementType *type; public: unsigned long elementIndex; }; inline const AttributeDefinitionList *ElementChunk::attDefList() const { return type->attributeDefTemp(); } class LocOriginChunk : public Chunk { public: LocOriginChunk(const Origin *lo) : locOrigin(lo) { } AccessResult setNodePtrFirst(NodePtr &ptr, const BaseNode *) const; AccessResult setNodePtrFirst(NodePtr &ptr, const ElementNode *node) const; AccessResult setNodePtrFirst(NodePtr &ptr, const DataNode *node) const; const Chunk *after() const; AccessResult getFollowing(const GroveImpl *, const Chunk *&, unsigned long &nNodes) const; Boolean getLocOrigin(const Origin *&) const; private: const Origin *locOrigin; }; class MessageItem { public: MessageItem(Node::Severity severity, const StringC &text, const Location &loc) : severity_(severity), text_(text), loc_(loc), next_(0) { } Node::Severity severity() const { return severity_; } const Location &loc() const { return loc_; } const StringC &text() const { return text_; } const MessageItem *next() const { return next_; } MessageItem **nextP() { return &next_; } private: Node::Severity severity_; StringC text_; Location loc_; MessageItem *next_; }; // multiple threads using const interface. class GroveImpl { public: GroveImpl(unsigned groveIndex); // Const interface void addRef() const { ++(((GroveImpl *)this)->refCount_); } void release() const { if (!--(((GroveImpl *)this)->refCount_)) delete (GroveImpl *)this; } unsigned groveIndex() const { return groveIndex_; } const SgmlDocumentChunk *root() const { return root_; } const AttributeValue *impliedAttributeValue() const { return impliedAttributeValue_.pointer(); } // Return 0 if not yet available. Boolean getAppinfo(const StringC *&) const; const SubstTable *generalSubstTable() const { return instanceSyntax_.isNull() ? 0 : instanceSyntax_->generalSubstTable(); } const SubstTable *entitySubstTable() const { return instanceSyntax_.isNull() ? 0 : instanceSyntax_->entitySubstTable(); } // Be careful not to change ref counts while accessing DTD. const Dtd *governingDtd() const { return dtd_.pointer(); } // must not be called till grove is complete Dtd::ConstEntityIter defaultedEntityIter() const; const Entity *lookupDefaultedEntity(const StringC &) const; const ElementChunk *lookupElement(const StringC &) const; typedef PointerTableIter ElementIter; // must not be called till grove is complete ElementIter elementIter() const; Boolean complete() const { return complete_; } const void *completeLimit() const { return completeLimit_; } const void *completeLimitWithLocChunkAfter() const { return completeLimitWithLocChunkAfter_; } const Origin *currentLocOrigin() const { return currentLocOrigin_; } Boolean hasDefaultEntity() const { return hasDefaultEntity_; } Boolean maybeMoreSiblings(const ParentChunk *chunk) const; // return zero for timeout Boolean waitForMoreNodes() const; AccessResult proxifyLocation(const Location &, Location &) const; const MessageItem *messageList() const { return messageList_; } // must not be called till grove is complete void getSd(ConstPtr &, ConstPtr &, ConstPtr &) const; // non-const interface void *allocChunk(size_t); void appendSibling(Chunk *); void appendSibling(DataChunk *); Boolean tryExtend(size_t n) { if (n <= nFree_) { nFree_ -= n; freePtr_ += n; return 1; } else return 0; } DataChunk *pendingData() { return pendingData_; } void push(ElementChunk *, Boolean hasId); void pop(); void setAppinfo(const StringC &); void setDtd(const ConstPtr &dtd); void setSd(const ConstPtr &, const ConstPtr &, const ConstPtr &); void storeAttributeValue(const ConstPtr &value) { values_.push_back(value); } void addDefaultedEntity(const ConstPtr &); void setComplete(); Boolean haveRootOrigin(); void setLocOrigin(const ConstPtr &); void appendMessage(MessageItem *); ~GroveImpl(); private: GroveImpl(const GroveImpl &); void operator=(const GroveImpl &); Boolean maybeMoreSiblings1(const ParentChunk *) const; void *allocFinish(size_t); void pulse(); void maybePulse(); void finishDocumentElement(); void finishProlog(); void addBarrier(); void storeLocOrigin(const ConstPtr &); struct BlockHeader { BlockHeader() : next(0) { } BlockHeader *next; }; unsigned groveIndex_; SgmlDocumentChunk *root_; ParentChunk *origin_; DataChunk *pendingData_; Chunk **tailPtr_; ConstPtr dtd_; ConstPtr sd_; ConstPtr prologSyntax_; ConstPtr instanceSyntax_; ConstPtr impliedAttributeValue_; Vector > values_; Vector > origins_; NamedResourceTable defaultedEntityTable_; PointerTable idTable_; Boolean hasDefaultEntity_; Boolean haveAppinfo_; StringC appinfo_; const Origin *currentLocOrigin_; Boolean complete_; const void *completeLimit_; const void *completeLimitWithLocChunkAfter_; // pointer to first free byte in current block char *freePtr_; // free bytes in current block // there's space for a forwarding chunk after this if freePtr_ != 0 size_t nFree_; // the head of the list of blocks BlockHeader *blocks_; // where to store pointer to next block BlockHeader **blockTailPtr_; // current normal size for a block size_t blockAllocSize_; // number of blocks allocated at this size size_t nBlocksThisSizeAlloced_; RefCount refCount_; mutable Condition moreNodesCondition_; Mutex mutex_; Mutex *mutexPtr_; unsigned pulseStep_; unsigned long nEvents_; unsigned long nElements_; enum { maxChunksWithoutLocOrigin = 100 }; unsigned nChunksSinceLocOrigin_; MessageItem *messageList_; MessageItem **messageListTailP_; }; class GroveImplPtr { public: GroveImplPtr(const GroveImpl *grove) : grove_(grove) { grove_->addRef(); } ~GroveImplPtr() { grove_->release(); } const GroveImpl *operator->() const { return grove_; } operator const GroveImpl *() const { return grove_; } private: GroveImplPtr(const GroveImplPtr &); // undefined void operator=(const GroveImplPtr &); // undefined const GroveImpl *grove_; }; class GroveImplProxyOrigin : public ProxyOrigin { public: GroveImplProxyOrigin(const GroveImpl *grove, const Origin *origin) : grove_(grove), ProxyOrigin(origin) { } private: GroveImplPtr grove_; }; class GroveBuilderMessageEventHandler : public ErrorCountEventHandler { public: GroveBuilderMessageEventHandler(unsigned groveIndex, Messenger *mgr, MessageFormatter *msgFmt_); ~GroveBuilderMessageEventHandler(); void message(MessageEvent *); void sgmlDecl(SgmlDeclEvent *); void makeInitialRoot(NodePtr &); void setSd(const ConstPtr &, const ConstPtr &, const ConstPtr &); protected: GroveImpl *grove_; private: Messenger *mgr_; MessageFormatter *msgFmt_; }; class GroveBuilderEventHandler : public GroveBuilderMessageEventHandler { public: GroveBuilderEventHandler(unsigned groveIndex, Messenger *mgr, MessageFormatter *msgFmt_); void appinfo(AppinfoEvent *); void startElement(StartElementEvent *); void endElement(EndElementEvent *); void data(DataEvent *); void sdataEntity(SdataEntityEvent *); void nonSgmlChar(NonSgmlCharEvent *); void externalDataEntity(ExternalDataEntityEvent *); void subdocEntity(SubdocEntityEvent *); void pi(PiEvent *); void endProlog(EndPrologEvent *); void entityDefaulted(EntityDefaultedEvent *); }; inline void setString(GroveString &to, const StringC &from) { to.assign(from.data(), from.size()); } inline bool operator==(const StringC &str1, const GroveString &str2) { return (str1.size() == str2.size() && memcmp(str1.data(), str2.data(), str1.size()*sizeof(Char)) == 0); } inline bool operator!=(const StringC &str1, const GroveString &str2) { return !(str1 == str2); } inline size_t roundUp(size_t n) { return (n + (sizeof(void *) - 1)) & ~(sizeof(void *) - 1); } // All nodes in this grove must be derived from BaseNode. class BaseNode : public Node, public LocNode { public: BaseNode(const GroveImpl *grove); virtual ~BaseNode(); void addRef(); void release(); bool canReuse(NodePtr &ptr) const; unsigned groveIndex() const; bool operator==(const Node &node) const; // Implemented with double dispatching. virtual bool same(const BaseNode &) const = 0; // The second half of the dispatch. virtual bool same2(const ChunkNode *) const; virtual bool same2(const DataNode *) const; virtual bool same2(const AttributeAsgnNode *) const; virtual bool same2(const AttributeValueTokenNode *) const; virtual bool same2(const CdataAttributeValueNode *) const; virtual bool same2(const EntityNode *) const; virtual bool same2(const NotationNode *) const; virtual bool same2(const ExternalIdNode *) const; virtual bool same2(const DocumentTypeNode *) const; virtual bool same2(const SgmlConstantsNode *) const; virtual bool same2(const MessageNode *) const; virtual bool same2(const ElementTypeNode *) const; virtual bool same2(const ModelGroupNode *) const; virtual bool same2(const ElementTokenNode *) const; virtual bool same2(const PcdataTokenNode *) const; virtual bool same2(const AttributeDefNode *) const; virtual bool same2(const DefaultEntityNode *) const; const GroveImpl *grove() const { return grove_; } AccessResult nextSibling(NodePtr &ptr) const; AccessResult follow(NodeListPtr &ptr) const; AccessResult children(NodeListPtr &) const; AccessResult getOrigin(NodePtr &ptr) const; AccessResult getGroveRoot(NodePtr &ptr) const; AccessResult getLocation(Location &) const; bool queryInterface(IID, const void *&) const; bool chunkContains(const Node &) const; bool inChunk(const DataNode *node) const; bool inChunk(const CdataAttributeValueNode *) const; protected: static unsigned long secondHash(unsigned long n) { return n * 1001; } private: unsigned refCount_; GroveImplPtr grove_; }; inline BaseNode::BaseNode(const GroveImpl *grove) : grove_(grove), refCount_(0) { } inline bool BaseNode::canReuse(NodePtr &ptr) const { const Node *tem = &*ptr; return tem == this && refCount_ == 1; } struct ForwardingChunk : Chunk { ForwardingChunk(const Chunk *to, ParentChunk *p) : forwardTo(to) { origin = p; } AccessResult setNodePtrFirst(NodePtr &ptr, const BaseNode *node) const; AccessResult getFollowing(const GroveImpl *, const Chunk *&, unsigned long &nNodes) const; const Chunk *after() const { return forwardTo; } const Chunk *forwardTo; }; class ChunkNode : public BaseNode { public: ChunkNode(const GroveImpl *grove, const LocChunk *chunk); const LocChunk *chunk() const { return chunk_; } bool same(const BaseNode &node) const; bool same2(const ChunkNode *node) const; unsigned long hash() const; AccessResult getParent(NodePtr &ptr) const; AccessResult getTreeRoot(NodePtr &ptr) const; AccessResult getOrigin(NodePtr &) const; AccessResult getOriginToSubnodeRelPropertyName(ComponentName::Id &) const; AccessResult nextChunkSibling(NodePtr &) const; AccessResult nextChunkAfter(NodePtr &) const; AccessResult firstSibling(NodePtr &) const; AccessResult siblingsIndex(unsigned long &) const; AccessResult followSiblingRef(unsigned long, NodePtr &) const; AccessResult getLocation(Location &) const; protected: const LocChunk *chunk_; // never null }; inline ChunkNode::ChunkNode(const GroveImpl *grove, const LocChunk *chunk) : BaseNode(grove), chunk_(chunk) { } class SgmlDocumentNode; struct SgmlDocumentChunk : public ParentChunk { SgmlDocumentChunk() : prolog(0), documentElement(0), epilog(0) { } Chunk *prolog; Chunk *documentElement; Chunk *epilog; AccessResult setNodePtrFirst(NodePtr &ptr, const BaseNode *node) const; const Chunk *after() const { return this + 1; } }; class SgmlDocumentNode : public ChunkNode, public SdNode { public: SgmlDocumentNode(const GroveImpl *grove, const SgmlDocumentChunk *chunk); void accept(NodeVisitor &visitor); const ClassDef &classDef() const { return ClassDef::sgmlDocument; } AccessResult getDocumentElement(NodePtr &ptr) const; AccessResult getElements(NamedNodeListPtr &ptr) const; AccessResult getEntities(NamedNodeListPtr &ptr) const; AccessResult getDefaultedEntities(NamedNodeListPtr &ptr) const; AccessResult getGoverningDoctype(NodePtr &ptr) const; AccessResult getDoctypesAndLinktypes(NamedNodeListPtr &ptr) const; AccessResult getProlog(NodeListPtr &ptr) const; AccessResult getEpilog(NodeListPtr &ptr) const; AccessResult getSgmlConstants(NodePtr &) const; AccessResult getApplicationInfo(GroveString &str) const; AccessResult getMessages(NodeListPtr &ptr) const; AccessResult nextChunkSibling(NodePtr &) const { return accessNotInClass; } AccessResult firstSibling(NodePtr &) const { return accessNotInClass; } AccessResult siblingsIndex(unsigned long &) const { return accessNotInClass; } AccessResult getOriginToSubnodeRelPropertyName(ComponentName::Id &) const { return accessNull; } AccessResult getSd(ConstPtr &sd, ConstPtr &prologSyntax, ConstPtr &instanceSyntax) const; private: const SgmlDocumentChunk *chunk() const { return (const SgmlDocumentChunk *)ChunkNode::chunk(); } }; inline SgmlDocumentNode::SgmlDocumentNode(const GroveImpl *grove, const SgmlDocumentChunk *chunk) : ChunkNode(grove, chunk) { } // array of pointers to attribute values stored after chunk class AttElementChunk : private ElementChunk { protected: AttElementChunk(size_t n) : nAtts(n) { } friend class ElementNode; private: const AttributeValue * attributeValue(size_t attIndex, const GroveImpl &) const; Boolean mustOmitEndTag() const; const Chunk *after() const; const StringC *id() const; size_t nAtts; }; class IncludedElementChunk : public ElementChunk { friend class ElementNode; Boolean included() const; }; class IncludedAttElementChunk : public AttElementChunk { IncludedAttElementChunk(size_t n) : AttElementChunk(n) { } friend class ElementNode; Boolean included() const; }; class ElementNode : public ChunkNode { public: friend class ElementChunk; ElementNode(const GroveImpl *grove, const ElementChunk *chunk) : ChunkNode(grove, chunk) { } AccessResult attributeRef(unsigned long i, NodePtr &ptr) const; AccessResult nextChunkSibling(NodePtr &ptr) const; AccessResult nextChunkAfter(NodePtr &) const; AccessResult firstChild(NodePtr &ptr) const; AccessResult getAttributes(NamedNodeListPtr &ptr) const; AccessResult getGi(GroveString &str) const; bool hasGi(GroveString) const; AccessResult getId(GroveString &str) const; AccessResult getContent(NodeListPtr &ptr) const; AccessResult getMustOmitEndTag(bool &) const; AccessResult getIncluded(bool &) const; AccessResult elementIndex(unsigned long &) const; AccessResult getElementType(NodePtr &) const; void accept(NodeVisitor &visitor); const ClassDef &classDef() const { return ClassDef::element; } static void add(GroveImpl &grove, const StartElementEvent &event); private: static ElementChunk *makeAttElementChunk(GroveImpl &grove, const StartElementEvent &, Boolean &hasId); const ElementChunk *chunk() const { return (const ElementChunk *)ChunkNode::chunk(); } void reuseFor(const ElementChunk *chunk) { chunk_ = chunk; } }; class CharsChunk : public LocChunk { public: const Chunk *after() const { return (const Chunk *)((char *)this + allocSize(size)); } const Char *data() const { return (const Char *)(this + 1); } size_t size; static size_t allocSize(size_t nChars) { return roundUp(sizeof(CharsChunk) + nChars*sizeof(Char)); } }; // The characters immediately follow the chunk class DataChunk : public CharsChunk { private: friend class DataNode; AccessResult setNodePtrFirst(NodePtr &ptr, const BaseNode *node) const; AccessResult setNodePtrFirst(NodePtr &ptr, const ElementNode *node) const; AccessResult setNodePtrFirst(NodePtr &ptr, const DataNode *node) const; AccessResult getFollowing(const GroveImpl *, const Chunk *&, unsigned long &) const; }; class DataNode : public ChunkNode { public: friend class DataChunk; DataNode(const GroveImpl *, const DataChunk *chunk, size_t index); bool same(const BaseNode &node) const; bool same2(const DataNode *node) const; AccessResult nextSibling(NodePtr &ptr) const; AccessResult nextChunkSibling(NodePtr &ptr) const; AccessResult nextChunkAfter(NodePtr &) const; AccessResult siblingsIndex(unsigned long &) const; AccessResult followSiblingRef(unsigned long, NodePtr &) const; AccessResult charChunk(const SdataMapper &, GroveString &) const; bool chunkContains(const Node &) const; bool inChunk(const DataNode *node) const; AccessResult getNonSgml(unsigned long &) const; AccessResult getLocation(Location &) const; void accept(NodeVisitor &visitor); const ClassDef &classDef() const { return ClassDef::dataChar; } unsigned long hash() const; static void add(GroveImpl &grove, const DataEvent &event); private: const DataChunk *chunk() const { return (const DataChunk *)ChunkNode::chunk(); } void reuseFor(const DataChunk *chunk, size_t index); size_t index_; }; inline DataNode::DataNode(const GroveImpl *grove, const DataChunk *chunk, size_t index) : ChunkNode(grove, chunk), index_(index) { } class PiChunk : protected CharsChunk { friend class PiNode; AccessResult setNodePtrFirst(NodePtr &ptr, const BaseNode *node) const; }; class PrologPiChunk : public PiChunk { AccessResult getFirstSibling(const GroveImpl *, const struct Chunk *&) const; }; class EpilogPiChunk : public PiChunk { AccessResult getFirstSibling(const GroveImpl *, const struct Chunk *&) const; }; class PiNode : public ChunkNode { public: PiNode(const GroveImpl *grove, const PiChunk *chunk) : ChunkNode(grove, chunk) {} AccessResult getSystemData(GroveString &) const; AccessResult getEntityName(GroveString &) const{ return accessNull; } AccessResult getEntity(NodePtr &) const { return accessNull; } void accept(NodeVisitor &visitor) { visitor.pi(*this); } const ClassDef &classDef() const { return ClassDef::pi; } static void add(GroveImpl &grove, const PiEvent &); private: const PiChunk *chunk() const { return (const PiChunk *)ChunkNode::chunk(); } }; class EntityRefChunk : public LocChunk { public: const Entity *entity; const Chunk *after() const { return this + 1; } }; class EntityRefNode : public ChunkNode { public: EntityRefNode(const GroveImpl *grove, const EntityRefChunk *chunk) : ChunkNode(grove, chunk) { } AccessResult getEntity(NodePtr &) const; AccessResult getEntityName(GroveString &) const; protected: const EntityRefChunk *chunk() const { return (const EntityRefChunk *)ChunkNode::chunk(); } }; class SdataNode; class SdataChunk : private EntityRefChunk { friend class SdataNode; AccessResult setNodePtrFirst(NodePtr &ptr, const BaseNode *node) const; }; class SdataNode : public EntityRefNode { public: SdataNode(const GroveImpl *grove, const SdataChunk *chunk) : EntityRefNode(grove, chunk) { } AccessResult charChunk(const SdataMapper &, GroveString &) const; AccessResult getSystemData(GroveString &str) const; void accept(NodeVisitor &visitor) { visitor.sdata(*this); } const ClassDef &classDef() const { return ClassDef::sdata; } static void add(GroveImpl &grove, const SdataEntityEvent &event); private: Char c_; }; class NonSgmlNode; class NonSgmlChunk : public LocChunk { public: Char c; AccessResult setNodePtrFirst(NodePtr &ptr, const BaseNode *node) const; const Chunk *after() const { return this + 1; } }; class NonSgmlNode : public ChunkNode { public: NonSgmlNode(const GroveImpl *grove, const NonSgmlChunk *chunk) : ChunkNode(grove, chunk) { } AccessResult charChunk(const SdataMapper &, GroveString &) const; AccessResult getNonSgml(unsigned long &) const; void accept(NodeVisitor &visitor) { visitor.nonSgml(*this); } const ClassDef &classDef() const { return ClassDef::nonSgml; } static void add(GroveImpl &grove, const NonSgmlCharEvent &event); protected: const NonSgmlChunk *chunk() const { return (const NonSgmlChunk *)ChunkNode::chunk(); } }; class ExternalDataNode; class ExternalDataChunk : private EntityRefChunk { friend class ExternalDataNode; AccessResult setNodePtrFirst(NodePtr &ptr, const BaseNode *node) const; }; class ExternalDataNode : public EntityRefNode { public: ExternalDataNode(const GroveImpl *grove, const ExternalDataChunk *chunk) : EntityRefNode(grove, chunk) { } void accept(NodeVisitor &visitor) { visitor.externalData(*this); } const ClassDef &classDef() const { return ClassDef::externalData; } static void add(GroveImpl &grove, const ExternalDataEntityEvent &event); }; class SubdocChunk : private EntityRefChunk { friend class SubdocNode; AccessResult setNodePtrFirst(NodePtr &ptr, const BaseNode *node) const; }; class SubdocNode : public EntityRefNode { public: SubdocNode(const GroveImpl *grove, const SubdocChunk *chunk) : EntityRefNode(grove, chunk) { } void accept(NodeVisitor &visitor) { visitor.subdocument(*this); } const ClassDef &classDef() const { return ClassDef::subdocument; } static void add(GroveImpl &grove, const SubdocEntityEvent &event); }; class PiEntityChunk : private EntityRefChunk { friend class PiEntityNode; AccessResult setNodePtrFirst(NodePtr &ptr, const BaseNode *node) const; }; class PiEntityNode : public EntityRefNode { public: PiEntityNode(const GroveImpl *grove, const PiEntityChunk *chunk) : EntityRefNode(grove, chunk) { } AccessResult getSystemData(GroveString &) const; void accept(NodeVisitor &visitor) { visitor.pi(*this); } const ClassDef &classDef() const { return ClassDef::pi; } static void add(GroveImpl &grove, const Entity *, const Location &); }; struct AttributeDefOrigin { AttributeDefOrigin(size_t attIndex = 0) : attIndex_(attIndex) { } virtual const AttributeDefinitionList *attDefList() const = 0; virtual Node *makeCdataAttributeValueNode(const GroveImpl *grove, const AttributeValue *value, size_t attIndex, const TextIter &iter, size_t charIndex = 0) const = 0; virtual Node *makeAttributeValueTokenNode(const GroveImpl *grove, const TokenizedAttributeValue *value, size_t attIndex, size_t tokenIndex) const = 0; virtual Node *makeOriginNode(const GroveImpl *grove, size_t attIndex) const = 0; virtual AccessResult makeAttributeValueNode(const GroveImpl *grove, NodePtr &ptr, const AttributeValue *value) const; virtual AccessResult makeAttributeValueNodeList(const GroveImpl *grove, NodeListPtr &ptr, const AttributeValue *value) const; virtual AccessResult makeAttributeDefNode(const GroveImpl *grove, NodePtr &ptr, size_t attributeDefIdx) const = 0; virtual AccessResult makeAttributeDefList(const GroveImpl *, NodeListPtr &, size_t) const { return accessNull; } AccessResult makeAttributeDefNode(const GroveImpl *grove, NodePtr &ptr, const StringC &name) const; virtual const void *attributeOriginId() const = 0; const size_t attIndex() const { return attIndex_; } protected: size_t attIndex_; }; struct AttributeOrigin : public virtual AttributeDefOrigin { virtual const AttributeValue * attributeValue(size_t attIndex, const GroveImpl &grove) const = 0; virtual AccessResult setNodePtrAttributeOrigin(NodePtr &, const BaseNode *) const = 0; virtual Node *makeAttributeAsgnNode(const GroveImpl *grove, size_t attIndex) const = 0; }; class ElementAttributeOrigin : public virtual AttributeOrigin { public: ElementAttributeOrigin(const ElementChunk *); const AttributeDefinitionList *attDefList() const; const AttributeValue * attributeValue(size_t attIndex, const GroveImpl &grove) const; AccessResult setNodePtrAttributeOrigin(NodePtr &, const BaseNode *) const; Node *makeCdataAttributeValueNode(const GroveImpl *grove, const AttributeValue *value, size_t attIndex, const TextIter &iter, size_t charIndex) const; Node *makeAttributeValueTokenNode(const GroveImpl *grove, const TokenizedAttributeValue *value, size_t attIndex, size_t tokenIndex) const; Node *makeAttributeAsgnNode(const GroveImpl *grove, size_t attIndex) const; virtual Node *makeOriginNode(const GroveImpl *grove, size_t attIndex) const; virtual AccessResult makeAttributeDefNode(const GroveImpl *grove, NodePtr &ptr, size_t attributeDefIdx) const; const void *attributeOriginId() const; private: const ElementChunk *chunk_; }; class EntityAttributeOrigin : public virtual AttributeOrigin { public: EntityAttributeOrigin(const ExternalDataEntity *); const AttributeDefinitionList *attDefList() const; const AttributeValue * attributeValue(size_t attIndex, const GroveImpl &grove) const; AccessResult setNodePtrAttributeOrigin(NodePtr &, const BaseNode *) const; Node *makeCdataAttributeValueNode(const GroveImpl *grove, const AttributeValue *value, size_t attIndex, const TextIter &iter, size_t charIndex) const; Node *makeAttributeValueTokenNode(const GroveImpl *grove, const TokenizedAttributeValue *value, size_t attIndex, size_t tokenIndex) const; Node *makeAttributeAsgnNode(const GroveImpl *grove, size_t attIndex) const; virtual AccessResult makeAttributeDefNode(const GroveImpl *grove, NodePtr &ptr, size_t attributeDefIdx) const; virtual Node *makeOriginNode(const GroveImpl *grove, size_t attIndex) const; const void *attributeOriginId() const; private: const ExternalDataEntity *entity_; }; // CLASS DEF: ElementTypeAttributeDefOrigin class ElementTypeAttributeDefOrigin : public virtual AttributeDefOrigin { public: ElementTypeAttributeDefOrigin(const ElementType *); const AttributeDefinitionList *attDefList() const; Node *makeCdataAttributeValueNode(const GroveImpl *grove, const AttributeValue *value, size_t attIndex, const TextIter &iter, size_t charIndex) const; Node *makeAttributeValueTokenNode(const GroveImpl *grove, const TokenizedAttributeValue *value, size_t attIndex, size_t tokenIndex) const; virtual AccessResult makeAttributeDefNode(const GroveImpl *grove, NodePtr &ptr, size_t attributeDefIdx) const; virtual AccessResult makeAttributeDefList(const GroveImpl *grove, NodeListPtr &ptr, size_t firstAttDefIdx) const; virtual Node *makeOriginNode(const GroveImpl *grove, size_t attIndex) const; virtual const void *attributeOriginId() const; protected: const ElementType *elementType_; }; // CLASS DEF: NotationAttributeDefOrigin class NotationAttributeDefOrigin : public virtual AttributeDefOrigin { public: NotationAttributeDefOrigin(const Notation *); virtual const AttributeDefinitionList *attDefList() const; Node *makeCdataAttributeValueNode(const GroveImpl *grove, const AttributeValue *value, size_t attIndex, const TextIter &iter, size_t charIndex) const; Node *makeAttributeValueTokenNode(const GroveImpl *grove, const TokenizedAttributeValue *value, size_t attIndex, size_t tokenIndex) const; virtual AccessResult makeAttributeDefNode(const GroveImpl *grove, NodePtr &ptr, size_t attributeDefIdx) const; virtual AccessResult makeAttributeDefList(const GroveImpl *grove, NodeListPtr &ptr, size_t firstAttDefIdx) const; virtual Node *makeOriginNode(const GroveImpl *grove, size_t attIndex) const; virtual const void *attributeOriginId() const; protected: const Notation *notation_; }; class AttributeAsgnNode : public BaseNode, public virtual AttributeOrigin { public: AttributeAsgnNode(const GroveImpl *grove, size_t attIndex); AccessResult getOrigin(NodePtr &ptr) const; AccessResult getName(GroveString &str) const; AccessResult getImplied(bool &implied) const; AccessResult getValue(NodeListPtr &ptr) const; AccessResult children(NodeListPtr &ptr) const; AccessResult firstChild(NodePtr &ptr) const; AccessResult nextChunkSibling(NodePtr &ptr) const; AccessResult followSiblingRef(unsigned long, NodePtr &) const; AccessResult firstSibling(NodePtr &) const; AccessResult siblingsIndex(unsigned long &) const; AccessResult getTokenSep(Char &) const; AccessResult tokens(GroveString &) const; AccessResult getAttributeDef(NodePtr &) const; void accept(NodeVisitor &visitor); const ClassDef &classDef() const { return ClassDef::attributeAssignment; } AccessResult getOriginToSubnodeRelPropertyName(ComponentName::Id &name) const { name = ComponentName::idAttributes; return accessOK; } bool same(const BaseNode &node) const; bool same2(const AttributeAsgnNode *node) const; unsigned long hash() const; }; class ElementAttributeAsgnNode : public AttributeAsgnNode, public ElementAttributeOrigin { public: ElementAttributeAsgnNode(const GroveImpl *grove, size_t attIndex, const ElementChunk *); }; class EntityAttributeAsgnNode : public AttributeAsgnNode, public EntityAttributeOrigin { public: EntityAttributeAsgnNode(const GroveImpl *grove, size_t attIndex, const ExternalDataEntity *); }; class AttributeValueTokenNode : public BaseNode, public virtual AttributeDefOrigin { public: AttributeValueTokenNode(const GroveImpl *grove, const TokenizedAttributeValue *value, size_t attIndex, size_t tokenIndex); AccessResult getParent(NodePtr &ptr) const; AccessResult nextChunkSibling(NodePtr &ptr) const; AccessResult followSiblingRef(unsigned long, NodePtr &ptr) const; AccessResult firstSibling(NodePtr &) const; AccessResult siblingsIndex(unsigned long &) const; AccessResult getToken(GroveString &str) const; AccessResult getEntity(NodePtr &ptr) const; AccessResult getNotation(NodePtr &ptr) const; AccessResult getReferent(NodePtr &ptr) const; AccessResult getLocation(Location &) const; void accept(NodeVisitor &visitor); const ClassDef &classDef() const { return ClassDef::attributeValueToken; } AccessResult getOriginToSubnodeRelPropertyName(ComponentName::Id &name) const { name = ComponentName::idValue; return accessOK; } bool same(const BaseNode &node) const; bool same2(const AttributeValueTokenNode *node) const; unsigned long hash() const; private: const TokenizedAttributeValue *value_; size_t tokenIndex_; }; class ElementAttributeValueTokenNode : public AttributeValueTokenNode, public ElementAttributeOrigin { public: ElementAttributeValueTokenNode(const GroveImpl *grove, const TokenizedAttributeValue *value, size_t attIndex, size_t tokenIndex, const ElementChunk *); }; class EntityAttributeValueTokenNode : public AttributeValueTokenNode, public EntityAttributeOrigin { public: EntityAttributeValueTokenNode(const GroveImpl *grove, const TokenizedAttributeValue *value, size_t attIndex, size_t tokenIndex, const ExternalDataEntity *); }; class ElementTypeAttributeValueTokenNode : public AttributeValueTokenNode, public ElementTypeAttributeDefOrigin { public: ElementTypeAttributeValueTokenNode(const GroveImpl *grove, const TokenizedAttributeValue *value, size_t attIndex, size_t tokenIndex, const ElementType *); AccessResult getOriginToSubnodeRelPropertyName(ComponentName::Id &name) const { name = ComponentName::idDefaultValue; return accessOK; } }; class NotationAttributeValueTokenNode : public AttributeValueTokenNode, public NotationAttributeDefOrigin { public: NotationAttributeValueTokenNode(const GroveImpl *grove, const TokenizedAttributeValue *value, size_t attIndex, size_t tokenIndex, const Notation *); AccessResult getOriginToSubnodeRelPropertyName(ComponentName::Id &name) const { name = ComponentName::idDefaultValue; return accessOK; } }; class CdataAttributeValueNode : public BaseNode, public virtual AttributeDefOrigin { public: static bool skipBoring(TextIter &iter); CdataAttributeValueNode(const GroveImpl *grove, const AttributeValue *value, size_t attIndex, const TextIter &iter, size_t charIndex); AccessResult getParent(NodePtr &ptr) const; AccessResult charChunk(const SdataMapper &, GroveString &) const; bool chunkContains(const Node &) const; bool inChunk(const CdataAttributeValueNode *) const; AccessResult getEntity(NodePtr &) const; AccessResult getEntityName(GroveString &) const; AccessResult getSystemData(GroveString &str) const; AccessResult nextSibling(NodePtr &ptr) const; AccessResult nextChunkSibling(NodePtr &ptr) const; AccessResult firstSibling(NodePtr &) const; AccessResult siblingsIndex(unsigned long &) const; AccessResult getLocation(Location &) const; void accept(NodeVisitor &visitor); const ClassDef &classDef() const; AccessResult getOriginToSubnodeRelPropertyName(ComponentName::Id &name) const { name = ComponentName::idValue; return accessOK; } bool same(const BaseNode &node) const; bool same2(const CdataAttributeValueNode *node) const; unsigned long hash() const; private: const AttributeValue *value_; TextIter iter_; // must be valid size_t charIndex_; Char c_; }; class ElementCdataAttributeValueNode : public CdataAttributeValueNode, public ElementAttributeOrigin { public: ElementCdataAttributeValueNode(const GroveImpl *grove, const AttributeValue *value, size_t attIndex, const TextIter &iter, size_t charIndex, const ElementChunk *); }; class EntityCdataAttributeValueNode : public CdataAttributeValueNode, public EntityAttributeOrigin { public: EntityCdataAttributeValueNode(const GroveImpl *grove, const AttributeValue *value, size_t attIndex, const TextIter &iter, size_t charIndex, const ExternalDataEntity *); }; class ElementTypeCdataAttributeValueNode : public CdataAttributeValueNode, public ElementTypeAttributeDefOrigin { public: ElementTypeCdataAttributeValueNode(const GroveImpl *grove, const AttributeValue *value, size_t attIndex, const TextIter &iter, size_t charIndex, const ElementType *); AccessResult getOriginToSubnodeRelPropertyName(ComponentName::Id &name) const { name = ComponentName::idDefaultValue; return accessOK; } }; class NotationCdataAttributeValueNode : public CdataAttributeValueNode, public NotationAttributeDefOrigin { public: NotationCdataAttributeValueNode(const GroveImpl *grove, const AttributeValue *value, size_t attIndex, const TextIter &iter, size_t charIndex, const Notation *); AccessResult getOriginToSubnodeRelPropertyName(ComponentName::Id &name) const { name = ComponentName::idDefaultValue; return accessOK; } }; class EntityNodeBase : public BaseNode { public: EntityNodeBase(const GroveImpl *grove, const Entity *entity) : BaseNode(grove), entity_(entity) {} AccessResult getName(GroveString &str) const; AccessResult getExternalId(NodePtr &ptr) const; AccessResult getNotation(NodePtr &) const; AccessResult getNotationName(GroveString &) const; AccessResult getText(GroveString &) const; AccessResult getEntityType(Node::EntityType::Enum &) const; AccessResult getAttributes(NamedNodeListPtr &) const; AccessResult attributeRef(unsigned long i, NodePtr &ptr) const; AccessResult getLocation(Location &) const; unsigned long hash() const; protected: const Entity *entity_; }; class EntityNode : public EntityNodeBase { public: EntityNode(const GroveImpl *grove, const Entity *entity); AccessResult getOrigin(NodePtr &ptr) const; AccessResult getOriginToSubnodeRelPropertyName(ComponentName::Id &) const; AccessResult getDefaulted(bool &) const; bool same(const BaseNode &) const; bool same2(const EntityNode *) const; void accept(NodeVisitor &); const ClassDef &classDef() const { return ClassDef::entity; } }; class DefaultEntityNode : public EntityNodeBase { public: DefaultEntityNode(const GroveImpl *grove, const Entity *entity); AccessResult getOrigin(NodePtr &ptr) const; AccessResult getOriginToSubnodeRelPropertyName(ComponentName::Id &) const; bool same(const BaseNode &) const; bool same2(const DefaultEntityNode *) const; void accept(NodeVisitor &); const ClassDef &classDef() const { return ClassDef::defaultEntity; } }; class NotationNode : public BaseNode { public: NotationNode(const GroveImpl *grove, const Notation *notation); AccessResult getOrigin(NodePtr &ptr) const; AccessResult getOriginToSubnodeRelPropertyName(ComponentName::Id &name) const { name = ComponentName::idNotations; return accessOK; } AccessResult getName(GroveString &str) const; AccessResult getExternalId(NodePtr &ptr) const; AccessResult getAttributeDefs(NamedNodeListPtr &) const; bool same(const BaseNode &) const; bool same2(const NotationNode *) const; AccessResult getLocation(Location &) const; void accept(NodeVisitor &); const ClassDef &classDef() const { return ClassDef::notation; } unsigned long hash() const; private: const Notation *notation_; }; class ExternalIdNode : public BaseNode { public: ExternalIdNode(const GroveImpl *grove); virtual const ExternalId &externalId() const = 0; AccessResult getPublicId(GroveString &) const; AccessResult getSystemId(GroveString &) const; AccessResult getGeneratedSystemId(GroveString &) const; void accept(NodeVisitor &); const ClassDef &classDef() const { return ClassDef::externalId; } AccessResult getOriginToSubnodeRelPropertyName(ComponentName::Id &name) const { name = ComponentName::idExternalId; return accessOK; } bool same(const BaseNode &) const; bool same2(const ExternalIdNode *) const; }; class EntityExternalIdNode : public ExternalIdNode { public: EntityExternalIdNode(const GroveImpl *grove, const ExternalEntity *entity); const ExternalId &externalId() const; AccessResult getOrigin(NodePtr &ptr) const; unsigned long hash() const; private: const ExternalEntity *entity_; }; class NotationExternalIdNode : public ExternalIdNode { public: NotationExternalIdNode(const GroveImpl *grove, const Notation *notation); const ExternalId &externalId() const; AccessResult getOrigin(NodePtr &ptr) const; unsigned long hash() const; private: const Notation *notation_; }; class DocumentTypeNode : public BaseNode { public: DocumentTypeNode(const GroveImpl *grove, const Dtd *); AccessResult getName(GroveString &) const; AccessResult getGoverning(bool &) const; AccessResult getGeneralEntities(NamedNodeListPtr &) const; AccessResult getNotations(NamedNodeListPtr &) const; AccessResult getElementTypes(NamedNodeListPtr &) const; AccessResult getDefaultEntity(NodePtr &) const; AccessResult getParameterEntities(NamedNodeListPtr &) const; AccessResult getOrigin(NodePtr &) const; AccessResult getOriginToSubnodeRelPropertyName(ComponentName::Id &name) const { name = ComponentName::idDoctypesAndLinktypes; return accessOK; } AccessResult nextChunkSibling(NodePtr &) const; void accept(NodeVisitor &); const ClassDef &classDef() const { return ClassDef::documentType; } bool same(const BaseNode &) const; bool same2(const DocumentTypeNode *) const; private: const Dtd *dtd_; }; class SgmlConstantsNode : public BaseNode { public: SgmlConstantsNode(const GroveImpl *); AccessResult getOrigin(NodePtr &) const; void accept(NodeVisitor &); const ClassDef &classDef() const { return ClassDef::sgmlConstants; } AccessResult getOriginToSubnodeRelPropertyName(ComponentName::Id &name) const { name = ComponentName::idSgmlConstants; return accessOK; } bool same(const BaseNode &) const; bool same2(const SgmlConstantsNode *) const; }; class MessageNode : public BaseNode { public: MessageNode(const GroveImpl *, const MessageItem *); AccessResult getOrigin(NodePtr &) const; AccessResult getOriginToSubnodeRelPropertyName(ComponentName::Id &name) const { name = ComponentName::noId; return accessOK; } AccessResult nextChunkSibling(NodePtr &) const; AccessResult firstSibling(NodePtr &) const; AccessResult siblingsIndex(unsigned long &) const; void accept(NodeVisitor &); const ClassDef &classDef() const { return ClassDef::message; } bool same(const BaseNode &) const; bool same2(const MessageNode *) const; AccessResult getLocation(Location &) const; AccessResult getText(GroveString &) const; AccessResult getSeverity(Severity &) const; private: const MessageItem *item_; }; // CLASS DEF: ElementTypeNode class ElementTypeNode : public BaseNode { public: ElementTypeNode(const GroveImpl *grove, const ElementType &elementType) : BaseNode(grove), elementType_(elementType) {}; AccessResult getOrigin(NodePtr &) const; const ClassDef &classDef() const { return ClassDef::elementType; } AccessResult getOriginToSubnodeRelPropertyName(ComponentName::Id &name) const { name = ComponentName::idElementTypes; return accessOK; } AccessResult getGi(GroveString &str) const; AccessResult getAttributeDefs(NamedNodeListPtr &) const; AccessResult getContentType(Node::ContentType::Enum &) const; AccessResult getExclusions(GroveStringListPtr &) const; AccessResult getInclusions(GroveStringListPtr &) const; AccessResult getModelGroup(NodePtr &) const; AccessResult getOmitEndTag(bool &) const; AccessResult getOmitStartTag(bool &) const; AccessResult getLocation(Location &) const; bool same(const BaseNode &) const; bool same2(const ElementTypeNode *) const; void accept(NodeVisitor &); unsigned long hash() const; const ElementType &elementType() const { return elementType_; } protected: const ElementType &elementType_; }; // CLASS DEF: ContentTokenNodeBase class ModelGroupNode; class ContentTokenNodeBase : public BaseNode { public: ContentTokenNodeBase(const GroveImpl *grove, const ElementType &elementType, ModelGroupNode *parentModelGroupNode = 0); ~ContentTokenNodeBase(); AccessResult getOriginToSubnodeRelPropertyName(ComponentName::Id &name) const { name = ComponentName::idContentTokens; return accessOK; } AccessResult getOrigin(NodePtr &) const; AccessResult getLocation(Location &) const; const ElementType &elementType() const { return elementType_; } protected: ModelGroupNode *parentModelGroupNode_; const ElementType &elementType_; }; // CLASS DEF: ElementTokenNode class ElementTokenNode : public ContentTokenNodeBase { public: ElementTokenNode(const GroveImpl *grove, const ElementType &elementType, const ElementToken &elementToken, ModelGroupNode *parentModelGroupNode) : ContentTokenNodeBase(grove, elementType, parentModelGroupNode), elementToken_(elementToken) {} const ClassDef &classDef() const { return ClassDef::elementToken; } AccessResult getGi(GroveString &str) const; AccessResult getOccurIndicator(Node::OccurIndicator::Enum &) const; bool same(const BaseNode &) const; bool same2(const ElementTokenNode *) const; void accept(NodeVisitor &); unsigned long hash() const; const ElementToken &elementToken() const { return elementToken_; } protected: const ElementToken &elementToken_; }; // CLASS DEF: PcdataTokenNode class PcdataTokenNode : public ContentTokenNodeBase { public: PcdataTokenNode(const GroveImpl *grove, const ElementType &elementType, const PcdataToken &pcdataToken, ModelGroupNode *parentModelGroupNode) : ContentTokenNodeBase(grove, elementType, parentModelGroupNode), pcdataToken_(pcdataToken) {} const ClassDef &classDef() const { return ClassDef::pcdataToken; } bool same(const BaseNode &) const; bool same2(const PcdataTokenNode *) const; void accept(NodeVisitor &); unsigned long hash() const; const PcdataToken &pcdataToken() const { return pcdataToken_; } protected: const PcdataToken &pcdataToken_; }; // CLASS DEF: ModelGroupNode class ModelGroupNode : public ContentTokenNodeBase { public: ModelGroupNode(const GroveImpl *grove, const ElementType &elementType, const ModelGroup &modelGroup, ModelGroupNode *parentModelGroupNode = 0) : ContentTokenNodeBase(grove, elementType, parentModelGroupNode), modelGroup_(modelGroup) {} const ClassDef &classDef() const { return ClassDef::modelGroup; } AccessResult getOriginToSubnodeRelPropertyName(ComponentName::Id &name) const; AccessResult getConnector(Node::Connector::Enum &con) const; AccessResult getOccurIndicator(Node::OccurIndicator::Enum &occur) const; AccessResult getContentTokens(NodeListPtr &) const; bool same(const BaseNode &) const; bool same2(const ModelGroupNode *) const; void accept(NodeVisitor &); unsigned long hash() const; void makeNode(NodePtr &ptr, unsigned contentTokenIdx); const ModelGroup &modelGroup() const { return modelGroup_; } private: const ModelGroup &modelGroup_; }; // class DEF: AttributeDefNode class AttributeDefNode : public BaseNode, public virtual AttributeDefOrigin { public: AttributeDefNode(const GroveImpl *grove, size_t attIndex) : BaseNode(grove), AttributeDefOrigin(attIndex) {} const ClassDef &classDef() const { return ClassDef::attributeDef; } AccessResult getOrigin(NodePtr &ptr) const; AccessResult getName(GroveString &) const; AccessResult getDeclValueType(Node::DeclValueType::Enum &) const; AccessResult getDefaultValueType(Node::DefaultValueType::Enum &) const; AccessResult getTokens(GroveStringListPtr &) const; AccessResult getCurrentAttributeIndex(long &) const; void accept(NodeVisitor &visitor); bool same(const BaseNode &node) const; bool same2(const AttributeDefNode *node) const; unsigned long hash() const; protected: }; // class DEF: ElementTypeAttributeDefNode class ElementTypeAttributeDefNode : public AttributeDefNode, public ElementTypeAttributeDefOrigin { public: ElementTypeAttributeDefNode(const GroveImpl *grove, const ElementType &elementType, size_t attributeDefIdx) : AttributeDefNode(grove, attributeDefIdx), ElementTypeAttributeDefOrigin(&elementType), AttributeDefOrigin(attributeDefIdx) {} AccessResult getOriginToSubnodeRelPropertyName(ComponentName::Id &name) const { name = ComponentName::idAttributeDefs; return accessOK; } AccessResult getCurrentGroup(NodeListPtr &) const; AccessResult getLocation(Location &) const; AccessResult getDefaultValue(NodeListPtr &) const; }; // class DEF: NotationAttributeDefNode class NotationAttributeDefNode : public AttributeDefNode, public NotationAttributeDefOrigin { public: NotationAttributeDefNode(const GroveImpl *grove, const Notation ¬ation, size_t attributeDefIdx) : AttributeDefNode(grove, attributeDefIdx), NotationAttributeDefOrigin(¬ation), AttributeDefOrigin(attributeDefIdx) {}; AccessResult getOriginToSubnodeRelPropertyName(ComponentName::Id &name) const { name = ComponentName::idAttributeDefs; return accessOK; } AccessResult getCurrentGroup(NodeListPtr &) const; AccessResult getLocation(Location &) const; //AccessResult getDefaultValue(NodeListPtr &) const; }; class BaseNodeList : public NodeList { public: BaseNodeList() : refCount_(0) { } virtual ~BaseNodeList() { } void addRef() { ++refCount_; } bool canReuse(NodeListPtr &ptr) const { const NodeList *tem = &*ptr; return tem == this && refCount_ == 1; } void release() { ASSERT(refCount_ != 0); if (--refCount_ == 0) delete this; } AccessResult first(NodePtr &) const { return accessNull; } AccessResult rest(NodeListPtr &ptr) const { return chunkRest(ptr); } AccessResult chunkRest(NodeListPtr &) const { return accessNull; } private: unsigned refCount_; }; class SiblingNodeList : public BaseNodeList { public: SiblingNodeList(const NodePtr &first) : first_(first) { } AccessResult first(NodePtr &ptr) const { ptr = first_; return accessOK; } AccessResult rest(NodeListPtr &ptr) const { AccessResult ret; if (canReuse(ptr)) { ret = ((SiblingNodeList *)this)->first_.assignNextSibling(); if (ret == accessOK) return ret; } else { NodePtr next; ret = first_->nextSibling(next); if (ret == accessOK) { ptr.assign(new SiblingNodeList(next)); return ret; } } if (ret == accessNull) { ptr.assign(new BaseNodeList); return accessOK; } return ret; } AccessResult chunkRest(NodeListPtr &ptr) const { AccessResult ret; if (canReuse(ptr)) { ret = ((SiblingNodeList *)this)->first_.assignNextChunkSibling(); if (ret == accessOK) return ret; } else { NodePtr next; ret = first_->nextChunkSibling(next); if (ret == accessOK) { ptr.assign(new SiblingNodeList(next)); return ret; } } if (ret == accessNull) { ptr.assign(new BaseNodeList); return accessOK; } return ret; } AccessResult ref(unsigned long i, NodePtr &ptr) const { if (i == 0) { ptr = first_; return accessOK; } return first_->followSiblingRef(i - 1, ptr); } private: NodePtr first_; // never null }; class BaseNamedNodeList : public NamedNodeList { public: BaseNamedNodeList(const GroveImpl *grove, const SubstTable *substTable) : grove_(grove), substTable_(substTable), refCount_(0) { } virtual ~BaseNamedNodeList() { } void addRef() { ++refCount_; } bool canReuse(NamedNodeListPtr &ptr) const { const NamedNodeList *tem = &*ptr; return tem == this && refCount_ == 1; } void release() { ASSERT(refCount_ != 0); if (--refCount_ == 0) delete this; } size_t normalize(Char *s, size_t n) const { if (substTable_) { for (size_t i = 0; i < n; i++) substTable_->subst(s[i]); } return n; } const GroveImpl *grove() const { return grove_; } AccessResult namedNode(GroveString str, NodePtr &node) const { StringC tem(str.data(), str.size()); normalize(&tem[0], tem.size()); return namedNodeU(tem, node); } virtual AccessResult namedNodeU(const StringC &, NodePtr &) const = 0; private: GroveImplPtr grove_; const SubstTable *substTable_; unsigned refCount_; }; class AttributesNamedNodeList : public BaseNamedNodeList, public virtual AttributeOrigin { public: AttributesNamedNodeList(const GroveImpl *grove) : BaseNamedNodeList(grove, grove->generalSubstTable()) { } NodeListPtr nodeList() const; AccessResult namedNodeU(const StringC &, NodePtr &) const; Type type() const { return attributes; } }; class ElementAttributesNamedNodeList : public AttributesNamedNodeList, public ElementAttributeOrigin { public: ElementAttributesNamedNodeList(const GroveImpl *grove, const ElementChunk *chunk) : AttributesNamedNodeList(grove), ElementAttributeOrigin(chunk) { } }; class EntityAttributesNamedNodeList : public AttributesNamedNodeList, public EntityAttributeOrigin { public: EntityAttributesNamedNodeList(const GroveImpl *grove, const ExternalDataEntity *entity) : AttributesNamedNodeList(grove), EntityAttributeOrigin(entity) { } }; class ElementsNamedNodeList : public BaseNamedNodeList { public: ElementsNamedNodeList(const GroveImpl *grove) : BaseNamedNodeList(grove, grove->generalSubstTable()) { } NodeListPtr nodeList() const; AccessResult namedNodeU(const StringC &, NodePtr &) const; Type type() const { return elements; } }; class DocEntitiesNamedNodeList : public BaseNamedNodeList { public: DocEntitiesNamedNodeList(const GroveImpl *grove) : BaseNamedNodeList(grove, grove->entitySubstTable()) { } NodeListPtr nodeList() const; AccessResult namedNodeU(const StringC &, NodePtr &) const; Type type() const { return entities; } }; class DefaultedEntitiesNamedNodeList : public BaseNamedNodeList { public: DefaultedEntitiesNamedNodeList(const GroveImpl *grove) : BaseNamedNodeList(grove, grove->entitySubstTable()) { } NodeListPtr nodeList() const; AccessResult namedNodeU(const StringC &, NodePtr &) const; Type type() const { return entities; } }; class GeneralEntitiesNamedNodeList : public BaseNamedNodeList { public: GeneralEntitiesNamedNodeList(const GroveImpl *, const Dtd *); NodeListPtr nodeList() const; AccessResult namedNodeU(const StringC &, NodePtr &) const; Type type() const { return entities; } private: const Dtd *dtd_; }; class ParameterEntitiesNamedNodeList : public BaseNamedNodeList { public: ParameterEntitiesNamedNodeList(const GroveImpl *, const Dtd *); NodeListPtr nodeList() const; AccessResult namedNodeU(const StringC &, NodePtr &) const; Type type() const { return entities; } private: const Dtd *dtd_; }; class NotationsNamedNodeList : public BaseNamedNodeList { public: NotationsNamedNodeList(const GroveImpl *, const Dtd *); NodeListPtr nodeList() const; AccessResult namedNodeU(const StringC &, NodePtr &) const; Type type() const { return notations; } private: const Dtd *dtd_; }; class DoctypesAndLinktypesNamedNodeList : public BaseNamedNodeList { public: DoctypesAndLinktypesNamedNodeList(const GroveImpl *); NodeListPtr nodeList() const; AccessResult namedNodeU(const StringC &, NodePtr &) const; Type type() const { return doctypesAndLinktypes; } }; class ElementsNodeList : public BaseNodeList { public: ElementsNodeList(const GroveImpl *grove, const Chunk *head); AccessResult first(NodePtr &) const; AccessResult chunkRest(NodeListPtr &) const; public: GroveImplPtr grove_; const Chunk *first_; }; class EntitiesNodeList : public BaseNodeList { public: EntitiesNodeList(const GroveImpl *grove, const Dtd::ConstEntityIter &iter); AccessResult first(NodePtr &) const; AccessResult chunkRest(NodeListPtr &) const; protected: const GroveImpl *grove() const { return grove_; } public: GroveImplPtr grove_; Dtd::ConstEntityIter iter_; }; class DocEntitiesNodeList : public EntitiesNodeList { public: DocEntitiesNodeList(const GroveImpl *grove); AccessResult first(NodePtr &) const; AccessResult chunkRest(NodeListPtr &) const; }; class NotationsNodeList : public BaseNodeList { public: NotationsNodeList(const GroveImpl *grove, const Dtd::ConstNotationIter &iter); AccessResult first(NodePtr &) const; AccessResult chunkRest(NodeListPtr &) const; public: GroveImplPtr grove_; Dtd::ConstNotationIter iter_; }; // -- CLASS DEF: ElementTypesNodeList class ElementTypesNodeList : public BaseNodeList { public: ElementTypesNodeList( const GroveImpl *grove, const Dtd::ConstElementTypeIter &iter); AccessResult first(NodePtr &) const; AccessResult chunkRest(NodeListPtr &) const; public: GroveImplPtr grove_; Dtd::ConstElementTypeIter iter_; }; // -- CLASS DEF: ElementTypesNamedNodeList class ElementTypesNamedNodeList : public BaseNamedNodeList { public: ElementTypesNamedNodeList(const GroveImpl *, const Dtd *); NodeListPtr nodeList() const; AccessResult namedNodeU(const StringC &, NodePtr &) const; Type type() const { return elementTypes; } protected: const Dtd *dtd_; }; // -- CLASS DEF: ContentTokenNodeList class ContentTokenNodeList : public BaseNodeList { public: ContentTokenNodeList(const GroveImpl *grove, ModelGroupNode &modelGroupNode, unsigned firstTokenIdx = 0); AccessResult first(NodePtr &) const; AccessResult chunkRest(NodeListPtr &) const; unsigned firstTokenIdx() const { return firstTokenIdx_; } AccessResult next(); protected: GroveImplPtr grove_; ModelGroupNode &modelGroupNode_; unsigned firstTokenIdx_; }; // -- CLASS DEF: ModelGroupNodeList class ModelGroupNodeList : public BaseNodeList { public: ModelGroupNodeList(const GroveImpl *grove, const ModelGroup &modelGroupNode, size_t firstTokenIdx); AccessResult first(NodePtr &) const; AccessResult chunkRest(NodeListPtr &) const; protected: GroveImplPtr grove_; ModelGroup &modelGroup_; size_t firstTokenIdx_; }; // -- CLASS DEF: AttributeDefsNodeList class AttributeDefsNodeList : public BaseNodeList, public virtual AttributeDefOrigin { public: AttributeDefsNodeList(const GroveImpl *grove, size_t firstAttIndex) : grove_(grove), AttributeDefOrigin(firstAttIndex) {} AccessResult first(NodePtr &) const; AccessResult chunkRest(NodeListPtr &) const; bool inList(size_t attIndex) const; protected: GroveImplPtr grove_; }; // -- CLASS DEF: ElementTypeAttributeDefsNodeList class ElementTypeAttributeDefsNodeList : public AttributeDefsNodeList, public ElementTypeAttributeDefOrigin { public: ElementTypeAttributeDefsNodeList(const GroveImpl *grove, const ElementType &elementType, size_t firstAttIndex) : AttributeDefsNodeList(grove, firstAttIndex), ElementTypeAttributeDefOrigin(&elementType), AttributeDefOrigin(firstAttIndex) {} }; // -- CLASS DEF: NotationAttributeDefsNodeList class NotationAttributeDefsNodeList : public AttributeDefsNodeList, public NotationAttributeDefOrigin { public: NotationAttributeDefsNodeList(const GroveImpl *grove, const Notation ¬ation, size_t firstAttIndex) : AttributeDefsNodeList(grove, firstAttIndex), NotationAttributeDefOrigin(¬ation), AttributeDefOrigin(firstAttIndex) {} }; // -- CLASS DEF: AttributeDefsNamedNodeList class AttributeDefsNamedNodeList : public BaseNamedNodeList, public virtual AttributeDefOrigin { public: AttributeDefsNamedNodeList(const GroveImpl *grove) : BaseNamedNodeList(grove, grove->generalSubstTable()) { } NodeListPtr nodeList() const; AccessResult namedNodeU(const StringC &, NodePtr &) const; Type type() const { return attributeDefs; } }; // -- CLASS DEF: ElementTypeAttributeDefsNamedNodeList class ElementTypeAttributeDefsNamedNodeList : public AttributeDefsNamedNodeList, public ElementTypeAttributeDefOrigin { public: ElementTypeAttributeDefsNamedNodeList(const GroveImpl *grove, const ElementType &elementType) : AttributeDefsNamedNodeList(grove), ElementTypeAttributeDefOrigin(&elementType) { } }; // -- CLASS DEF: NotationAttributeDefsNamedNodeList class NotationAttributeDefsNamedNodeList : public AttributeDefsNamedNodeList, public NotationAttributeDefOrigin { public: NotationAttributeDefsNamedNodeList(const GroveImpl *grove, const Notation ¬ation) : AttributeDefsNamedNodeList(grove), NotationAttributeDefOrigin(¬ation) { } }; // -- CLASS DEF: ElementTypeCurrentGroupAttributeDefsNodeList // elementType_ is first list element, iter.next() represents rest class ElementTypeCurrentGroupAttributeDefsNodeList : public BaseNodeList { public: ElementTypeCurrentGroupAttributeDefsNodeList(const GroveImpl *grove, const Dtd::ConstElementTypeIter &iter, size_t currentGroupIndex); ElementTypeCurrentGroupAttributeDefsNodeList(const GroveImpl *grove, const Dtd::ConstElementTypeIter &iter, const ElementType *elementType, size_t firstAttIndex, size_t currentGroupIndex) : grove_(grove), iter_(iter), elementType_(elementType), attIndex_(firstAttIndex), currentGroupIndex_(currentGroupIndex) {} AccessResult first(NodePtr &) const; AccessResult chunkRest(NodeListPtr &) const; bool next(Dtd::ConstElementTypeIter &iter, const ElementType *&elementType, size_t &attIndex, bool incrementFirst = true) const; bool next(bool incrementFirst = true) { return next(iter_, elementType_, attIndex_, incrementFirst); } protected: GroveImplPtr grove_; Dtd::ConstElementTypeIter iter_; const ElementType *elementType_; size_t currentGroupIndex_; size_t attIndex_; }; inline Boolean GroveImpl::waitForMoreNodes() const { if (blockingAccess) return moreNodesCondition_.wait(); else return 0; } inline void GroveImpl::pulse() { moreNodesCondition_.pulse(); } inline void GroveImpl::maybePulse() { // Once we've had (2^n)*(2^10) events, only pulse every (2^n)th event. // Up to a limit of n == 8. // This reduces the overhead of pulsing to negligible levels on WinNT. if ((++nEvents_ & ~(~unsigned(0) << pulseStep_)) == 0) { pulse(); if (pulseStep_ < 8 && nEvents_ > (1 << (pulseStep_ + 10))) pulseStep_++; } } inline void GroveImpl::appendSibling(Chunk *chunk) { if (pendingData_) { if (tailPtr_) { // Must set completeLimit_ before setting tailPtr_. completeLimit_ = pendingData_->after(); *tailPtr_ = pendingData_; tailPtr_ = 0; } pendingData_ = 0; } // Must set origin before advancing completeLimit_. chunk->origin = origin_; // Must advance completeLimit_ before setting tailPtr_. completeLimit_ = freePtr_; if (tailPtr_) { *tailPtr_ = chunk; tailPtr_ = 0; } pendingData_ = 0; maybePulse(); } inline void GroveImpl::appendSibling(DataChunk *chunk) { // Since we might extend this DataChunk, it's // not safe to set completeLimit_ to after this chunk yet. // This means we can't yet set tailPtr_. if (pendingData_) { // Must set completeLimit_ before setting tailPtr_. completeLimit_ = pendingData_->after(); if (tailPtr_) { *tailPtr_ = pendingData_; tailPtr_ = 0; } } chunk->origin = origin_; pendingData_ = chunk; maybePulse(); } inline void GroveImpl::push(ElementChunk *chunk, Boolean hasId) { if (pendingData_) { if (tailPtr_) { // Must set completeLimit_ before setting tailPtr_. completeLimit_ = pendingData_->after(); *tailPtr_ = pendingData_; tailPtr_ = 0; } pendingData_ = 0; } chunk->elementIndex = nElements_++; chunk->origin = origin_; // Must set origin_ to chunk before advancing completeLimit_ // otherwise thread would look at element and // maybeMoreSiblings() would return false. // Must advance completeLimit_ before setting tailPtr_, // otherwise tailPtr_ would be beyond completeLimit_. origin_ = chunk; completeLimit_ = freePtr_; // Allow for the possibility of invalid documents with elements // after the document element. if ((const Chunk *)chunk->origin == root_ && root_->documentElement == 0) root_->documentElement = chunk; else if (tailPtr_) { *tailPtr_ = chunk; tailPtr_ = 0; } if (hasId) { Mutex::Lock lock(mutexPtr_); idTable_.insert(chunk); } maybePulse(); } inline void GroveImpl::pop() { if (pendingData_) { // Must set completeLimit_ before setting tailPtr_. completeLimit_ = pendingData_->after(); if (tailPtr_) { *tailPtr_ = pendingData_; tailPtr_ = 0; } pendingData_ = 0; } tailPtr_ = &origin_->nextSibling; origin_ = origin_->origin; if ((const Chunk *)origin_ == root_) finishDocumentElement(); maybePulse(); } inline Boolean GroveImpl::haveRootOrigin() { return (const Chunk *)origin_ == root_; } inline void GroveImpl::setDtd(const ConstPtr &dtd) { dtd_ = dtd; hasDefaultEntity_ = !dtd_->defaultEntity().isNull(); finishProlog(); pulse(); } inline const ElementChunk *GroveImpl::lookupElement(const StringC &id) const { Mutex::Lock lock(mutexPtr_); return idTable_.lookup(id); } inline GroveImpl::ElementIter GroveImpl::elementIter() const { ASSERT(complete()); return ElementIter(idTable_); } inline Boolean GroveImpl::maybeMoreSiblings(const ParentChunk *chunk) const { return (complete_ ? chunk->nextSibling != 0 : (origin_ == chunk || &chunk->nextSibling == tailPtr_ || maybeMoreSiblings1(chunk))); } inline void *GroveImpl::allocChunk(size_t n) { nChunksSinceLocOrigin_++; if (n <= nFree_) { void *p = freePtr_; freePtr_ += n; nFree_ -= n; return p; } else return allocFinish(n); } inline void GroveImpl::setLocOrigin(const ConstPtr &locOrigin) { if (locOrigin.pointer() != currentLocOrigin_ || nChunksSinceLocOrigin_ >= maxChunksWithoutLocOrigin) storeLocOrigin(locOrigin); } inline void GroveImpl::appendMessage(MessageItem *item) { *messageListTailP_ = item; messageListTailP_ = item->nextP(); pulse(); } inline void ElementNode::add(GroveImpl &grove, const StartElementEvent &event) { grove.setLocOrigin(event.location().origin()); ElementChunk *chunk; const AttributeList &atts = event.attributes(); Boolean hasId; if (atts.nSpec() == 0 && !atts.anyCurrent()) { void *mem = grove.allocChunk(sizeof(ElementChunk)); if (event.included()) chunk = new (mem) IncludedElementChunk; else chunk = new (mem) ElementChunk; hasId = 0; } else chunk = makeAttElementChunk(grove, event, hasId); chunk->type = event.elementType(); chunk->locIndex = event.location().index(); grove.push(chunk, hasId); } // We duplicate ChunkNode::nextChunkSibling to take advantage // of Node reuse (via setNodePtrFirst(NodePtr &, const DataNode *). inline AccessResult DataNode::nextChunkSibling(NodePtr &ptr) const { // The forwarding chunk has origin = 0, so it will stop // the iteration before after() can return 0. const Chunk *p = chunk_->after(); while (p == grove()->completeLimit()) if (!grove()->waitForMoreNodes()) return accessTimeout; if (p->origin != chunk_->origin) return accessNull; return p->setNodePtrFirst(ptr, this); } inline void DataNode::reuseFor(const DataChunk *chunk, size_t index) { chunk_ = chunk; index_ = index; } inline void DataNode::add(GroveImpl &grove, const DataEvent &event) { size_t dataLen = event.dataLength(); if (dataLen) { DataChunk *chunk = grove.pendingData(); if (chunk && event.location().origin().pointer() == grove.currentLocOrigin() && event.location().index() == chunk->locIndex + chunk->size && grove.tryExtend(CharsChunk::allocSize(chunk->size + dataLen) - CharsChunk::allocSize(chunk->size))) { memcpy((Char *)(chunk + 1) + chunk->size, event.data(), dataLen * sizeof(Char)); chunk->size += dataLen; } else { grove.setLocOrigin(event.location().origin()); chunk = new (grove.allocChunk(CharsChunk::allocSize(dataLen))) DataChunk; chunk->size = dataLen; chunk->locIndex = event.location().index(); memcpy(chunk + 1, event.data(), dataLen * sizeof(Char)); grove.appendSibling(chunk); } } } GroveBuilderMessageEventHandler::GroveBuilderMessageEventHandler(unsigned groveIndex, Messenger *mgr, MessageFormatter *msgFmt) : mgr_(mgr), grove_(new GroveImpl(groveIndex)), msgFmt_(msgFmt) { grove_->addRef(); } GroveBuilderMessageEventHandler::~GroveBuilderMessageEventHandler() { grove_->setComplete(); grove_->release(); } void GroveBuilderMessageEventHandler::makeInitialRoot(NodePtr &root) { root.assign(new SgmlDocumentNode(grove_, grove_->root())); } void GroveBuilderMessageEventHandler::message(MessageEvent *event) { mgr_->dispatchMessage(event->message()); const Message &msg = event->message(); StrOutputCharStream os; msgFmt_->formatMessage(*msg.type, msg.args, os); StringC tem; os.extractString(tem); Node::Severity severity; switch (msg.type->severity()) { case MessageType::info: severity = Node::info; break; case MessageType::warning: severity = Node::warning; break; default: severity = Node::error; break; } grove_->appendMessage(new MessageItem(severity, tem, msg.loc)); if (!msg.auxLoc.origin().isNull()) { msgFmt_->formatMessage(msg.type->auxFragment(), msg.args, os); os.extractString(tem); grove_->appendMessage(new MessageItem(Node::info, tem, msg.auxLoc)); } ErrorCountEventHandler::message(event); } void GroveBuilderMessageEventHandler::sgmlDecl(SgmlDeclEvent *event) { grove_->setSd(event->sdPointer(), event->prologSyntaxPointer(), event->instanceSyntaxPointer()); delete event; } void GroveBuilderMessageEventHandler::setSd(const ConstPtr &sd, const ConstPtr &prologSyntax, const ConstPtr &instanceSyntax) { grove_->setSd(sd, prologSyntax, instanceSyntax); } GroveBuilderEventHandler::GroveBuilderEventHandler(unsigned groveIndex, Messenger *mgr, MessageFormatter *msgFmt) : GroveBuilderMessageEventHandler(groveIndex, mgr, msgFmt) { } void GroveBuilderEventHandler::appinfo(AppinfoEvent *event) { const StringC *appinfo; if (event->literal(appinfo)) grove_->setAppinfo(*appinfo); delete event; } void GroveBuilderEventHandler::endProlog(EndPrologEvent *event) { grove_->setDtd(event->dtdPointer()); delete event; } void GroveBuilderEventHandler::startElement(StartElementEvent *event) { ElementNode::add(*grove_, *event); delete event; } void GroveBuilderEventHandler::endElement(EndElementEvent *event) { grove_->pop(); delete event; } void GroveBuilderEventHandler::data(DataEvent *event) { DataNode::add(*grove_, *event); delete event; } void GroveBuilderEventHandler::sdataEntity(SdataEntityEvent *event) { SdataNode::add(*grove_, *event); delete event; } void GroveBuilderEventHandler::nonSgmlChar(NonSgmlCharEvent *event) { NonSgmlNode::add(*grove_, *event); delete event; } void GroveBuilderEventHandler::externalDataEntity(ExternalDataEntityEvent *event) { ExternalDataNode::add(*grove_, *event); delete event; } void GroveBuilderEventHandler::subdocEntity(SubdocEntityEvent *event) { SubdocNode::add(*grove_, *event); delete event; } void GroveBuilderEventHandler::pi(PiEvent *event) { PiNode::add(*grove_, *event); delete event; } void GroveBuilderEventHandler::entityDefaulted(EntityDefaultedEvent *event) { grove_->addDefaultedEntity(event->entityPointer()); delete event; } ErrorCountEventHandler *GroveBuilder::make(unsigned index, Messenger *mgr, MessageFormatter *msgFmt, bool validateOnly, NodePtr &root) { GroveBuilderMessageEventHandler *eh; if (validateOnly) eh = new GroveBuilderMessageEventHandler(index, mgr, msgFmt); else eh = new GroveBuilderEventHandler(index, mgr, msgFmt); eh->makeInitialRoot(root); return eh; } ErrorCountEventHandler *GroveBuilder::make(unsigned index, Messenger *mgr, MessageFormatter *msgFmt, bool validateOnly, const ConstPtr &sd, const ConstPtr &prologSyntax, const ConstPtr &instanceSyntax, NodePtr &root) { GroveBuilderMessageEventHandler *eh; if (validateOnly) eh = new GroveBuilderMessageEventHandler(index, mgr, msgFmt); else eh = new GroveBuilderEventHandler(index, mgr, msgFmt); eh->makeInitialRoot(root); eh->setSd(sd, prologSyntax, instanceSyntax); return eh; } bool GroveBuilder::setBlocking(bool b) { bool prev = blockingAccess; blockingAccess = b; return prev; } GroveImpl::GroveImpl(unsigned groveIndex) : groveIndex_(groveIndex), root_(0), impliedAttributeValue_(new ImpliedAttributeValue), tailPtr_(0), freePtr_(0), nFree_(0), blocks_(0), blockTailPtr_(&blocks_), blockAllocSize_(initialBlockSize), nBlocksThisSizeAlloced_(0), complete_(0), mutexPtr_(&mutex_), pulseStep_(0), nEvents_(0), haveAppinfo_(0), pendingData_(0), nElements_(0), currentLocOrigin_(0), completeLimitWithLocChunkAfter_(0), nChunksSinceLocOrigin_(0), messageList_(0), messageListTailP_(&messageList_) { root_ = new (allocChunk(sizeof(SgmlDocumentChunk))) SgmlDocumentChunk; root_->origin = 0; root_->locIndex = 0; completeLimit_ = freePtr_; origin_ = root_; tailPtr_ = &root_->prolog; } GroveImpl::~GroveImpl() { while (blocks_) { BlockHeader *tem = blocks_; blocks_ = blocks_->next; ::operator delete(tem); } while (messageList_) { MessageItem *tem = messageList_; messageList_ = *messageList_->nextP(); delete tem; } } void GroveImpl::setAppinfo(const StringC &appinfo) { appinfo_ = appinfo; haveAppinfo_ = 1; } Boolean GroveImpl::getAppinfo(const StringC *&appinfo) const { if (!haveAppinfo_) { if (!complete_ && sd_.isNull()) return 0; // not available yet appinfo = 0; } else appinfo = &appinfo_; return 1; } void GroveImpl::setSd(const ConstPtr &sd, const ConstPtr &prologSyntax, const ConstPtr &instanceSyntax) { instanceSyntax_ = instanceSyntax; prologSyntax_ = prologSyntax; sd_ = sd; } void GroveImpl::getSd(ConstPtr &sd, ConstPtr &prologSyntax, ConstPtr &instanceSyntax) const { instanceSyntax = instanceSyntax_; prologSyntax = prologSyntax_; sd = sd_; } void GroveImpl::finishProlog() { if (root_->prolog) addBarrier(); tailPtr_ = 0; } void GroveImpl::finishDocumentElement() { // Be robust in the case of erroneous documents. if (root_->epilog == 0) { addBarrier(); tailPtr_ = &root_->epilog; } } void GroveImpl::addBarrier() { if (freePtr_) { (void) new (freePtr_) ForwardingChunk(0, 0); if (nFree_ <= sizeof(ForwardingChunk)) { nFree_ = 0; freePtr_ = 0; } else { nFree_ -= sizeof(ForwardingChunk); freePtr_ += sizeof(ForwardingChunk); } } } void GroveImpl::setComplete() { addBarrier(); mutexPtr_ = 0; completeLimit_ = 0; completeLimitWithLocChunkAfter_ = 0; if (pendingData_ && tailPtr_) *tailPtr_ = pendingData_; tailPtr_ = 0; pendingData_ = 0; complete_ = 1; moreNodesCondition_.set(); } void GroveImpl::addDefaultedEntity(const ConstPtr &entity) { Mutex::Lock lock(mutexPtr_); // We need a table of ConstPtr but we don't have one. defaultedEntityTable_.insert((Entity *)entity.pointer()); } const Entity *GroveImpl::lookupDefaultedEntity(const StringC &name) const { Mutex::Lock lock(mutexPtr_); return defaultedEntityTable_.lookupTemp(name); } Dtd::ConstEntityIter GroveImpl::defaultedEntityIter() const { ASSERT(complete()); return Dtd::ConstEntityIter(defaultedEntityTable_); } Boolean GroveImpl::maybeMoreSiblings1(const ParentChunk *chunk) const { for (const ParentChunk *open = origin_; open; open = open->origin) if (open == chunk) return 1; // for multi-thread case return tailPtr_ == &chunk->nextSibling || chunk->nextSibling != 0; } void *GroveImpl::allocFinish(size_t n) { if (++nBlocksThisSizeAlloced_ >= maxBlocksPerSize) { blockAllocSize_ *= 2; nBlocksThisSizeAlloced_ = 0; } size_t allocSize = n + (sizeof(ForwardingChunk) + sizeof(BlockHeader)); if (allocSize < blockAllocSize_) { nFree_ = blockAllocSize_ - allocSize; allocSize = blockAllocSize_; } else nFree_ = 0; *blockTailPtr_ = new (::operator new(allocSize)) BlockHeader; char *chunkStart = (char *)(*blockTailPtr_ + 1); blockTailPtr_ = &(*blockTailPtr_)->next; if (freePtr_) (void)new (freePtr_) ForwardingChunk((const Chunk *)chunkStart, origin_); freePtr_ = chunkStart + n; return chunkStart; } AccessResult ChunkNode::getLocation(Location &loc) const { const Origin *origin = grove()->currentLocOrigin(); for (const Chunk *p = chunk_->after(); p; p = p->after()) { if (p == grove()->completeLimitWithLocChunkAfter()) { while (!p->getLocOrigin(origin)) { p = p->after(); ASSERT(p != 0); } break; } if (p == grove()->completeLimit() || p->getLocOrigin(origin)) break; } if (!origin) return accessNull; loc = Location(new GroveImplProxyOrigin(grove(), origin), chunk_->locIndex); return accessOK; } void GroveImpl::storeLocOrigin(const ConstPtr &locOrigin) { LocOriginChunk *chunk = new (allocChunk(sizeof(LocOriginChunk))) LocOriginChunk(currentLocOrigin_); chunk->origin = origin_; completeLimitWithLocChunkAfter_ = completeLimit_; nChunksSinceLocOrigin_ = 0; if (locOrigin.pointer() == currentLocOrigin_) return; if (currentLocOrigin_ && locOrigin == currentLocOrigin_->parent().origin()) { // Don't need to store it. currentLocOrigin_ = locOrigin.pointer(); return; } currentLocOrigin_ = locOrigin.pointer(); if (locOrigin.isNull()) return; origins_.push_back(locOrigin); } AccessResult GroveImpl::proxifyLocation(const Location &loc, Location &ret) const { if (loc.origin().isNull()) return accessNull; ret = Location(new GroveImplProxyOrigin(this, loc.origin().pointer()), loc.index()); return accessOK; } NodeListPtr AttributesNamedNodeList::nodeList() const { const AttributeDefinitionList *defList = attDefList(); if (!defList || defList->size() == 0) return new BaseNodeList; else return new SiblingNodeList(makeAttributeAsgnNode(grove(), 0)); } AccessResult AttributesNamedNodeList::namedNodeU(const StringC &str, NodePtr &ptr) const { const AttributeDefinitionList *defList = attDefList(); if (defList) { for (size_t i = 0; i < defList->size(); i++) if (defList->def(i)->name() == str) { ptr.assign(makeAttributeAsgnNode(grove(), i)); return accessOK; } } return accessNull; } void SgmlDocumentNode::accept(NodeVisitor &visitor) { visitor.sgmlDocument(*this); } AccessResult SgmlDocumentNode::getSgmlConstants(NodePtr &ptr) const { ptr.assign(new SgmlConstantsNode(grove())); return accessOK; } AccessResult SgmlDocumentNode::getApplicationInfo(GroveString &str) const { const StringC *appinfo; while (!grove()->getAppinfo(appinfo)) if (!grove()->waitForMoreNodes()) return accessTimeout; if (!appinfo) return accessNull; setString(str, *appinfo); return accessOK; } AccessResult SgmlDocumentNode::getDocumentElement(NodePtr &ptr) const { while (chunk()->documentElement == 0) { if (grove()->complete()) { // Just in case another thread crept if (chunk()->documentElement) break; return accessNull; } if (!grove()->waitForMoreNodes()) return accessTimeout; } return chunk()->documentElement->setNodePtrFirst(ptr, this); } AccessResult SgmlDocumentNode::getProlog(NodeListPtr &ptr) const { while (chunk()->prolog == 0) { if (chunk()->documentElement || grove()->complete()) break; if (!grove()->waitForMoreNodes()) return accessTimeout; } if (chunk()->prolog == 0) ptr.assign(new BaseNodeList); else { NodePtr tem; chunk()->prolog->setNodePtrFirst(tem, this); ptr.assign(new SiblingNodeList(tem)); } return accessOK; } AccessResult SgmlDocumentNode::getEpilog(NodeListPtr &ptr) const { while (chunk()->epilog == 0) { if (grove()->complete()) break; if (!grove()->waitForMoreNodes()) return accessTimeout; } if (chunk()->epilog == 0) ptr.assign(new BaseNodeList); else { NodePtr tem; chunk()->epilog->setNodePtrFirst(tem, this); ptr.assign(new SiblingNodeList(tem)); } return accessOK; } AccessResult SgmlDocumentNode::getElements(NamedNodeListPtr &ptr) const { while (!grove()->root()->documentElement) { if (grove()->complete()) { if (grove()->root()->documentElement) break; return accessNull; } if (!grove()->waitForMoreNodes()) return accessTimeout; } if (!grove()->generalSubstTable()) return accessNull; ptr.assign(new ElementsNamedNodeList(grove())); return accessOK; } AccessResult SgmlDocumentNode::getEntities(NamedNodeListPtr &ptr) const { while (!grove()->governingDtd()) { if (grove()->complete()) { if (grove()->governingDtd()) break; return accessNull; } if (!grove()->waitForMoreNodes()) return accessTimeout; } ptr.assign(new DocEntitiesNamedNodeList(grove())); return accessOK; } AccessResult SgmlDocumentNode::getDefaultedEntities(NamedNodeListPtr &ptr) const { while (!grove()->complete()) if (!grove()->waitForMoreNodes()) return accessTimeout; ptr.assign(new DefaultedEntitiesNamedNodeList(grove())); return accessOK; } AccessResult SgmlDocumentNode::getGoverningDoctype(NodePtr &ptr) const { while (!grove()->governingDtd()) { if (grove()->complete()) { if (grove()->governingDtd()) break; return accessNull; } if (!grove()->waitForMoreNodes()) return accessTimeout; } ptr.assign(new DocumentTypeNode(grove(), grove()->governingDtd())); return accessOK; } AccessResult SgmlDocumentNode::getDoctypesAndLinktypes(NamedNodeListPtr &ptr) const { while (!grove()->governingDtd()) { if (grove()->complete()) { if (grove()->governingDtd()) break; return accessNull; } if (!grove()->waitForMoreNodes()) return accessTimeout; } ptr.assign(new DoctypesAndLinktypesNamedNodeList(grove())); return accessOK; } AccessResult SgmlDocumentNode::getMessages(NodeListPtr &ptr) const { while (grove()->messageList() == 0) { if (grove()->complete()) break; if (!grove()->waitForMoreNodes()) return accessTimeout; } if (grove()->messageList()) { NodePtr tem(new MessageNode(grove(), grove()->messageList())); ptr.assign(new SiblingNodeList(tem)); } else ptr.assign(new BaseNodeList); return accessOK; } AccessResult SgmlDocumentNode::getSd(ConstPtr &sd, ConstPtr &prologSyntax, ConstPtr &instanceSyntax) const { while (!grove()->complete()) { if (!grove()->waitForMoreNodes()) return accessTimeout; } grove()->getSd(sd, prologSyntax, instanceSyntax); if (!sd.isNull() && !prologSyntax.isNull() && !instanceSyntax.isNull()) return accessOK; return accessNull; } AccessResult SgmlDocumentChunk::setNodePtrFirst(NodePtr &ptr, const BaseNode *node) const { ptr.assign(new SgmlDocumentNode(node->grove(), this)); return accessOK; } DocumentTypeNode::DocumentTypeNode(const GroveImpl *grove, const Dtd *dtd) : BaseNode(grove), dtd_(dtd) { } AccessResult DocumentTypeNode::nextChunkSibling(NodePtr &) const { return accessNull; } AccessResult DocumentTypeNode::getName(GroveString &str) const { setString(str, dtd_->name()); return accessOK; } AccessResult DocumentTypeNode::getGoverning(bool &governing) const { governing = dtd_->isBase(); return accessOK; } AccessResult DocumentTypeNode::getGeneralEntities(NamedNodeListPtr &ptr) const { ptr.assign(new GeneralEntitiesNamedNodeList(grove(), dtd_)); return accessOK; } AccessResult DocumentTypeNode::getParameterEntities(NamedNodeListPtr &ptr) const { ptr.assign(new ParameterEntitiesNamedNodeList(grove(), dtd_)); return accessOK; } AccessResult DocumentTypeNode::getNotations(NamedNodeListPtr &ptr) const { ptr.assign(new NotationsNamedNodeList(grove(), dtd_)); return accessOK; } AccessResult DocumentTypeNode::getElementTypes(NamedNodeListPtr &ptr) const { ptr.assign(new ElementTypesNamedNodeList(grove(), dtd_)); return accessOK; } AccessResult DocumentTypeNode::getDefaultEntity(NodePtr &ptr) const { const Entity *entity = dtd_->defaultEntityTemp(); if (entity == 0) return accessNull; ptr.assign(new DefaultEntityNode(grove(), entity)); return accessOK; } AccessResult DocumentTypeNode::getOrigin(NodePtr &ptr) const { ptr.assign(new SgmlDocumentNode(grove(), grove()->root())); return accessOK; } void DocumentTypeNode::accept(NodeVisitor &visitor) { visitor.documentType(*this); } bool DocumentTypeNode::same(const BaseNode &node) const { return node.same2(this); } bool DocumentTypeNode::same2(const DocumentTypeNode *node) const { return dtd_ == node->dtd_; } SgmlConstantsNode::SgmlConstantsNode(const GroveImpl *grove) : BaseNode(grove) { } AccessResult SgmlConstantsNode::getOrigin(NodePtr &ptr) const { ptr.assign(new SgmlDocumentNode(grove(), grove()->root())); return accessOK; } void SgmlConstantsNode::accept(NodeVisitor &visitor) { visitor.sgmlConstants(*this); } bool SgmlConstantsNode::same(const BaseNode &node) const { return node.same2(this); } bool SgmlConstantsNode::same2(const SgmlConstantsNode *) const { return 1; } MessageNode::MessageNode(const GroveImpl *grove, const MessageItem *item) : BaseNode(grove), item_(item) { } AccessResult MessageNode::getOrigin(NodePtr &ptr) const { ptr.assign(new SgmlDocumentNode(grove(), grove()->root())); return accessOK; } AccessResult MessageNode::nextChunkSibling(NodePtr &ptr) const { while (!item_->next()) { if (grove()->complete()) { if (item_->next()) break; return accessNull; } if (!grove()->waitForMoreNodes()) return accessTimeout; } const MessageItem *p = item_->next(); if (!p) return accessNull; ptr.assign(new MessageNode(grove(), p)); return accessOK; } AccessResult MessageNode::firstSibling(NodePtr &ptr) const { ptr.assign(new MessageNode(grove(), grove()->messageList())); return accessOK; } AccessResult MessageNode::siblingsIndex(unsigned long &n) const { n = 0; for (const MessageItem *p = grove()->messageList(); p != item_; p = p->next()) n++; return accessOK; } void MessageNode::accept(NodeVisitor &visitor) { visitor.message(*this); } bool MessageNode::same(const BaseNode &node) const { return node.same2(this); } bool MessageNode::same2(const MessageNode *node) const { return item_ == node->item_; } AccessResult MessageNode::getLocation(Location &loc) const { return grove()->proxifyLocation(item_->loc(), loc); } AccessResult MessageNode::getText(GroveString &str) const { setString(str, item_->text()); return accessOK; } AccessResult MessageNode::getSeverity(Severity &severity) const { severity = item_->severity(); return accessOK; } AccessResult ElementNode::nextChunkSibling(NodePtr &ptr) const { while (!chunk()->nextSibling) { if (!grove()->maybeMoreSiblings(chunk())) { // Allow for the possibility of invalid documents with elements in the epilog. if ((const Chunk *)chunk() == grove()->root()->documentElement) return accessNotInClass; else return accessNull; } if (!grove()->waitForMoreNodes()) return accessTimeout; } return chunk()->nextSibling->setNodePtrFirst(ptr, this); } // This is a duplicate of ChunkNode::nextChunkAfter // to take advantage of overloaded setNodePtrFirst. AccessResult ElementNode::nextChunkAfter(NodePtr &nd) const { const Chunk *p = chunk_->after(); while (p == grove()->completeLimit()) if (!grove()->waitForMoreNodes()) return accessTimeout; return p->setNodePtrFirst(nd, this); } AccessResult ElementChunk::getFollowing(const GroveImpl *grove, const Chunk *&f, unsigned long &n) const { while (!nextSibling) { if (!grove->maybeMoreSiblings(this)) { if ((const Chunk *)origin == grove->root()) return accessNotInClass; else return accessNull; } if (!grove->waitForMoreNodes()) return accessTimeout; } f = nextSibling; n = 1; return accessOK; } AccessResult ElementNode::firstChild(NodePtr &ptr) const { const Chunk *p = chunk()->after(); while (p == grove()->completeLimit()) { if (!grove()->waitForMoreNodes()) return accessTimeout; } if ((const Chunk *)(p->origin) == chunk()) return p->setNodePtrFirst(ptr, this); return accessNull; } AccessResult ElementNode::attributeRef(unsigned long n, NodePtr &ptr) const { const AttributeDefinitionList *defList = chunk()->attDefList(); if (!defList || n >= defList->size()) return accessNull; ptr.assign(new ElementAttributeAsgnNode(grove(), size_t(n), chunk())); return accessOK; } AccessResult ElementNode::getAttributes(NamedNodeListPtr &ptr) const { ptr.assign(new ElementAttributesNamedNodeList(grove(), chunk())); return accessOK; } AccessResult ElementNode::getGi(GroveString &str) const { setString(str, chunk()->type->name()); return accessOK; } bool ElementNode::hasGi(GroveString str) const { const StringC &gi = chunk()->type->name(); size_t len = gi.size(); if (len != str.size()) return 0; const SubstTable *subst = grove()->generalSubstTable(); if (!subst) return 0; for (size_t i = 0; i < len; i++) if ((*subst)[str[i]] != gi[i]) return 0; return 1; } AccessResult ElementNode::getId(GroveString &str) const { const StringC *id = chunk()->id(); if (!id) return accessNull; setString(str, *id); return accessOK; } AccessResult ElementNode::elementIndex(unsigned long &i) const { i = chunk()->elementIndex; return accessOK; } AccessResult ElementNode::getElementType(NodePtr &ptr) const { if (chunk()->elementType() == 0) return accessNull; ptr.assign(new ElementTypeNode(grove(), *(chunk()->elementType()))); return accessOK; } AccessResult ElementNode::getContent(NodeListPtr &ptr) const { return children(ptr); } AccessResult ElementNode::getMustOmitEndTag(bool &b) const { b = chunk()->mustOmitEndTag(); return accessOK; } AccessResult ElementNode::getIncluded(bool &b) const { b = chunk()->included(); return accessOK; } void ElementNode::accept(NodeVisitor &visitor) { visitor.element(*this); } ElementChunk * ElementNode::makeAttElementChunk(GroveImpl &grove, const StartElementEvent &event, Boolean &hasId) { const AttributeList &atts = event.attributes(); size_t nAtts = atts.size(); while (nAtts > 0 && !atts.specified(nAtts - 1) && !atts.current(nAtts - 1)) nAtts--; ElementChunk *chunk; void *mem = grove.allocChunk(sizeof(AttElementChunk) + nAtts * sizeof(AttributeValue *)); if (event.included()) { // Workaround VC++ 4.1 bug. AttElementChunk *tem = new (mem) IncludedAttElementChunk(nAtts); chunk = tem; } else chunk = new (mem) AttElementChunk(nAtts); const AttributeValue **values = (const AttributeValue **)(((AttElementChunk *)chunk) + 1); const AttributeDefinitionList *defList = event.elementType()->attributeDef().pointer(); unsigned idIndex; if (atts.idIndex(idIndex) && atts.specified(idIndex) && atts.value(idIndex)) hasId = 1; else hasId = 0; for (size_t i = 0; i < nAtts; i++) { if (atts.specified(i) || atts.current(i)) { grove.storeAttributeValue(atts.valuePointer(i)); values[i] = atts.value(i); } else { // If we stored a reference to the implied attribute value in the // Dtd then it would be safe just to use atts.value(i) here. // But that would mean we couldn't conveniently tell whether it // was specified or implied. values[i] = defList->def(i)->defaultValue(grove.impliedAttributeValue()); } } return chunk; } const Chunk *AttElementChunk::after() const { return (const Chunk *)((char *)(this + 1) + (sizeof(const AttributeValue *) * nAtts)); } const AttributeValue * AttElementChunk::attributeValue(size_t attIndex, const GroveImpl &grove) const { if (attIndex < nAtts) return ((const AttributeValue **)(this + 1))[attIndex]; else return ElementChunk::attributeValue(attIndex, grove); } const StringC *AttElementChunk::id() const { size_t i = ElementChunk::attDefList()->idIndex(); if (i == size_t(-1) || i >= nAtts) return 0; const AttributeValue *av = ((const AttributeValue **)(this + 1))[i]; if (!av) return 0; const Text *t = av->text(); if (!t) return 0; return &t->string(); } Boolean AttElementChunk::mustOmitEndTag() const { if (ElementChunk::mustOmitEndTag()) return 1; const AttributeDefinitionList *adl = ElementChunk::attDefList(); size_t nAtts = adl->size(); const AttributeValue **atts = (const AttributeValue **)(this + 1); for (size_t i = 0; i < nAtts; i++) if (adl->def(i)->isConref() && atts[i] && atts[i]->text()) return 1; return 0; } const Chunk *ElementChunk::after() const { return this + 1; } const AttributeValue * ElementChunk::attributeValue(size_t attIndex, const GroveImpl &grove) const { return attDefList()->def(attIndex)->defaultValue(grove.impliedAttributeValue()); } Boolean ElementChunk::mustOmitEndTag() const { return type->definition()->declaredContent() == ElementDefinition::empty; } Boolean IncludedElementChunk::included() const { return 1; } Boolean IncludedAttElementChunk::included() const { return 1; } Boolean ElementChunk::included() const { return 0; } AccessResult ElementChunk::setNodePtrFirst(NodePtr &ptr, const BaseNode *node) const { ptr.assign(new ElementNode(node->grove(), this)); return accessOK; } AccessResult ElementChunk::setNodePtrFirst(NodePtr &ptr, const ElementNode *node) const { if (node->canReuse(ptr)) ((ElementNode *)node)->reuseFor(this); else ptr.assign(new ElementNode(node->grove(), this)); return accessOK; } AccessResult ElementChunk::setNodePtrFirst(NodePtr &ptr, const DataNode *node) const { ptr.assign(new ElementNode(node->grove(), this)); return accessOK; } ElementAttributeOrigin::ElementAttributeOrigin(const ElementChunk *chunk) : chunk_(chunk) { } const AttributeDefinitionList *ElementAttributeOrigin::attDefList() const { return chunk_->attDefList(); } const AttributeValue * ElementAttributeOrigin::attributeValue(size_t attIndex, const GroveImpl &grove) const { return chunk_->attributeValue(attIndex, grove); } AccessResult ElementAttributeOrigin::setNodePtrAttributeOrigin(NodePtr &ptr, const BaseNode *node) const { return chunk_->setNodePtrFirst(ptr, node); } Node *ElementAttributeOrigin ::makeCdataAttributeValueNode(const GroveImpl *grove, const AttributeValue *value, size_t attIndex, const TextIter &iter, size_t charIndex) const { return new ElementCdataAttributeValueNode(grove, value, attIndex, iter, charIndex, chunk_); } Node *ElementAttributeOrigin ::makeAttributeValueTokenNode(const GroveImpl *grove, const TokenizedAttributeValue *value, size_t attIndex, size_t tokenIndex) const { return new ElementAttributeValueTokenNode(grove, value, attIndex, tokenIndex, chunk_); } Node *ElementAttributeOrigin ::makeAttributeAsgnNode(const GroveImpl *grove, size_t attIndex) const { return new ElementAttributeAsgnNode(grove, attIndex, chunk_); } AccessResult ElementAttributeOrigin ::makeAttributeDefNode(const GroveImpl *grove, NodePtr &ptr, size_t attributeDefIdx) const { if (chunk_->elementType() == 0) return accessNull; ptr.assign(new ElementTypeAttributeDefNode(grove, *(chunk_->elementType()), attributeDefIdx)); return accessOK; } Node *ElementAttributeOrigin::makeOriginNode(const GroveImpl *grove, size_t attIndex) const { return makeAttributeAsgnNode(grove, attIndex); } const void *ElementAttributeOrigin::attributeOriginId() const { return chunk_; } bool DataNode::same(const BaseNode &node) const { return node.same2(this); } bool DataNode::same2(const DataNode *node) const { return chunk_ == node->chunk_ && index_ == node->index_; } bool DataNode::chunkContains(const Node &node) const { if (!sameGrove(node)) return 0; return ((const BaseNode &)node).inChunk(this); } bool DataNode::inChunk(const DataNode *node) const { return chunk_ == node->chunk_ && index_ >= node->index_; } AccessResult DataNode::charChunk(const SdataMapper &, GroveString &str) const { str.assign(chunk()->data() + index_, chunk()->size - index_); return accessOK; } void DataNode::accept(NodeVisitor &visitor) { visitor.dataChar(*this); } unsigned long DataNode::hash() const { return secondHash(ChunkNode::hash() + index_); } AccessResult DataNode::getNonSgml(unsigned long &) const { return accessNull; } AccessResult DataNode::nextSibling(NodePtr &ptr) const { if (index_ + 1 < chunk()->size) { if (canReuse(ptr)) ((DataNode *)this)->index_ += 1; else ptr.assign(new DataNode(grove(), chunk(), index_ + 1)); return accessOK; } return DataNode::nextChunkSibling(ptr); } AccessResult DataNode::nextChunkAfter(NodePtr &nd) const { const Chunk *p = chunk_->after(); while (p == grove()->completeLimit()) if (!grove()->waitForMoreNodes()) return accessTimeout; return p->setNodePtrFirst(nd, this); } AccessResult DataNode::followSiblingRef(unsigned long i, NodePtr &ptr) const { if (i < chunk()->size - index_ - 1) { if (canReuse(ptr)) ((DataNode *)this)->index_ += 1 + size_t(i); else ptr.assign(new DataNode(grove(), chunk(), index_ + size_t(i) + 1)); return accessOK; } return ChunkNode::followSiblingRef(i - (chunk()->size - index_ - 1), ptr); } AccessResult DataNode::siblingsIndex(unsigned long &i) const { AccessResult ret = ChunkNode::siblingsIndex(i); if (ret == accessOK) i += index_; return ret; } AccessResult DataNode::getLocation(Location &loc) const { AccessResult ret = ChunkNode::getLocation(loc); if (ret == accessOK) loc += index_; return ret; } AccessResult DataChunk::getFollowing(const GroveImpl *grove, const Chunk *&f, unsigned long &i) const { // We could call Chunk::getFollowing to do most of // the work, but that would cost us a couple of extra // virtual function calls. const Chunk *p = CharsChunk::after(); while (p == grove->completeLimit()) if (!grove->waitForMoreNodes()) return accessTimeout; if (p->origin != origin) return accessNull; i = size; f = p; return accessOK; } AccessResult DataChunk::setNodePtrFirst(NodePtr &ptr, const BaseNode *node) const { ptr.assign(new DataNode(node->grove(), this, 0)); return accessOK; } // This just saves us a virtual function call in a common case AccessResult DataChunk::setNodePtrFirst(NodePtr &ptr, const ElementNode *node) const { ptr.assign(new DataNode(node->grove(), this, 0)); return accessOK; } AccessResult DataChunk::setNodePtrFirst(NodePtr &ptr, const DataNode *node) const { if (node->canReuse(ptr)) ((DataNode *)node)->reuseFor(this, 0); else ptr.assign(new DataNode(node->grove(), this, 0)); return accessOK; } AccessResult PiNode::getSystemData(GroveString &str) const { str.assign(chunk()->data(), chunk()->size); return accessOK; } void PiNode::add(GroveImpl &grove, const PiEvent &event) { const Entity *entity = event.entity(); if (entity) PiEntityNode::add(grove, entity, event.location()); else { grove.setLocOrigin(event.location().origin()); size_t dataLen = event.dataLength(); void *mem = grove.allocChunk(CharsChunk::allocSize(dataLen)); PiChunk *chunk; if (grove.haveRootOrigin()) { if (grove.root()->documentElement) chunk = new (mem) EpilogPiChunk; else chunk = new (mem) PrologPiChunk; } else chunk = new (mem) PiChunk; chunk->size = dataLen; chunk->locIndex = event.location().index(); memcpy(chunk + 1, event.data(), dataLen * sizeof(Char)); grove.appendSibling(chunk); } } AccessResult PiChunk::setNodePtrFirst(NodePtr &ptr, const BaseNode *node) const { ptr.assign(new PiNode(node->grove(), this)); return accessOK; } AccessResult PrologPiChunk::getFirstSibling(const GroveImpl *grove, const struct Chunk *&p) const { p = grove->root()->prolog; return accessOK; } AccessResult EpilogPiChunk::getFirstSibling(const GroveImpl *grove, const struct Chunk *&p) const { p = grove->root()->epilog; return accessOK; } AccessResult SdataNode::charChunk(const SdataMapper &mapper, GroveString &str) const { const StringC &name = chunk()->entity->name(); const StringC &text = chunk()->entity->asInternalEntity()->string(); Char *cp = (Char *)&c_; if (mapper.sdataMap(GroveString(name.data(), name.size()), GroveString(text.data(), text.size()), *cp)) { str.assign(&c_, 1); return accessOK; } else return accessNull; } AccessResult SdataNode::getSystemData(GroveString &str) const { setString(str, chunk()->entity->asInternalEntity()->string()); return accessOK; } void SdataNode::add(GroveImpl &grove, const SdataEntityEvent &event) { const Location &loc = event.location().origin()->parent(); grove.setLocOrigin(loc.origin()); SdataChunk *chunk = new (grove.allocChunk(sizeof(SdataChunk))) SdataChunk; chunk->entity = event.entity(); chunk->locIndex = loc.index(); grove.appendSibling(chunk); } AccessResult SdataChunk::setNodePtrFirst(NodePtr &ptr, const BaseNode *node) const { ptr.assign(new SdataNode(node->grove(), this)); return accessOK; } AccessResult NonSgmlChunk::setNodePtrFirst(NodePtr &ptr, const BaseNode *node) const { ptr.assign(new NonSgmlNode(node->grove(), this)); return accessOK; } AccessResult NonSgmlNode::getNonSgml(unsigned long &n) const { n = chunk()->c; return accessOK; } AccessResult NonSgmlNode::charChunk(const SdataMapper &, GroveString &) const { return accessNull; } void NonSgmlNode::add(GroveImpl &grove, const NonSgmlCharEvent &event) { grove.setLocOrigin(event.location().origin()); NonSgmlChunk *chunk = new (grove.allocChunk(sizeof(NonSgmlChunk))) NonSgmlChunk; chunk->c = event.character(); chunk->locIndex = event.location().index(); grove.appendSibling(chunk); } void ExternalDataNode::add(GroveImpl &grove, const ExternalDataEntityEvent &event) { grove.setLocOrigin(event.location().origin()); ExternalDataChunk *chunk = new (grove.allocChunk(sizeof(ExternalDataChunk))) ExternalDataChunk; chunk->entity = event.entity(); chunk->locIndex = event.location().index(); grove.appendSibling(chunk); } AccessResult ExternalDataChunk::setNodePtrFirst(NodePtr &ptr, const BaseNode *node) const { ptr.assign(new ExternalDataNode(node->grove(), this)); return accessOK; } void SubdocNode::add(GroveImpl &grove, const SubdocEntityEvent &event) { grove.setLocOrigin(event.location().origin()); SubdocChunk *chunk = new (grove.allocChunk(sizeof(SubdocChunk))) SubdocChunk; chunk->entity = event.entity(); chunk->locIndex = event.location().index(); grove.appendSibling(chunk); } AccessResult SubdocChunk::setNodePtrFirst(NodePtr &ptr, const BaseNode *node) const { ptr.assign(new SubdocNode(node->grove(), this)); return accessOK; } AccessResult PiEntityNode::getSystemData(GroveString &str) const { setString(str, chunk()->entity->asInternalEntity()->string()); return accessOK; } void PiEntityNode::add(GroveImpl &grove, const Entity *entity, const Location &loc) { // FIXME use parent? grove.setLocOrigin(loc.origin()); PiEntityChunk *chunk = new (grove.allocChunk(sizeof(PiEntityChunk))) PiEntityChunk; chunk->entity = entity; chunk->locIndex = loc.index(); grove.appendSibling(chunk); } AccessResult PiEntityChunk::setNodePtrFirst(NodePtr &ptr, const BaseNode *node) const { ptr.assign(new PiEntityNode(node->grove(), this)); return accessOK; } AccessResult EntityRefNode::getEntity(NodePtr &ptr) const { ptr.assign(new EntityNode(grove(), chunk()->entity)); return accessOK; } AccessResult EntityRefNode::getEntityName(GroveString &str) const { setString(str, chunk()->entity->name()); return accessOK; } AttributeAsgnNode::AttributeAsgnNode(const GroveImpl *grove, size_t attIndex) : BaseNode(grove), AttributeDefOrigin(attIndex) { } AccessResult ChunkNode::nextChunkSibling(NodePtr &ptr) const { // The forwarding chunk has origin = 0, so it will stop // the iteration before after() can return 0. const Chunk *p = chunk_->after(); while (p == grove()->completeLimit()) if (!grove()->waitForMoreNodes()) return accessTimeout; if (p->origin != chunk_->origin) return accessNull; return p->setNodePtrFirst(ptr, this); } AccessResult ChunkNode::nextChunkAfter(NodePtr &nd) const { const Chunk *p = chunk_->after(); while (p == grove()->completeLimit()) if (!grove()->waitForMoreNodes()) return accessTimeout; return p->setNodePtrFirst(nd, this); } AccessResult ChunkNode::firstSibling(NodePtr &ptr) const { const Chunk *first; AccessResult ret = chunk_->getFirstSibling(grove(), first); if (ret != accessOK) return ret; return first->setNodePtrFirst(ptr, this); } AccessResult ChunkNode::siblingsIndex(unsigned long &i) const { const Chunk *p; AccessResult ret = chunk_->getFirstSibling(grove(), p); if (ret != accessOK) return ret; i = 0; while (p != chunk_) { unsigned long tem; if (p->getFollowing(grove(), p, tem) != accessOK) CANNOT_HAPPEN(); i += tem; } return accessOK; } AccessResult ChunkNode::followSiblingRef(unsigned long i, NodePtr &ptr) const { const Chunk *p; unsigned long count; AccessResult ret = chunk()->getFollowing(grove(), p, count); if (ret != accessOK) return ret; while (i > 0) { const Chunk *lastP = p; ret = p->getFollowing(grove(), p, count); if (ret == accessOK && count <= i) i -= count; else if (ret == accessOK || ret == accessNull) { lastP->setNodePtrFirst(ptr, this); return ptr->followSiblingRef(i - 1, ptr); } else return ret; } return p->setNodePtrFirst(ptr, this); } AccessResult AttributeAsgnNode::getOrigin(NodePtr &ptr) const { return setNodePtrAttributeOrigin(ptr, this); } AccessResult AttributeAsgnNode::getName(GroveString &str) const { setString(str, attDefList()->def(attIndex_)->name()); return accessOK; } AccessResult AttributeAsgnNode::getImplied(bool &implied) const { const AttributeValue *value = attributeValue(attIndex_, *grove()); implied = (value != 0 && value->text() == 0); return accessOK; } AccessResult AttributeAsgnNode::getValue(NodeListPtr &ptr) const { return children(ptr); } AccessResult AttributeAsgnNode::nextChunkSibling(NodePtr &ptr) const { return followSiblingRef(0, ptr); } AccessResult AttributeAsgnNode::followSiblingRef(unsigned long i, NodePtr &ptr) const { // Do it like this to avoid overflow. if (i >= attDefList()->size() - attIndex_ - 1) return accessNull; if (canReuse(ptr)) ((AttributeAsgnNode *)this)->attIndex_ += size_t(i) + 1; else ptr.assign(makeAttributeAsgnNode(grove(), attIndex_ + 1 + size_t(i))); return accessOK; } AccessResult AttributeAsgnNode::firstSibling(NodePtr &ptr) const { if (canReuse(ptr)) ((AttributeAsgnNode *)this)->attIndex_ = 0; else ptr.assign(makeAttributeAsgnNode(grove(), 0)); return accessOK; } AccessResult AttributeAsgnNode::siblingsIndex(unsigned long &i) const { i = attIndex_; return accessOK; } void AttributeAsgnNode::accept(NodeVisitor &visitor) { visitor.attributeAssignment(*this); } AccessResult AttributeAsgnNode::firstChild(NodePtr &ptr) const { const AttributeValue *value = attributeValue(attIndex_, *grove()); return makeAttributeValueNode(grove(), ptr, value); } AccessResult AttributeAsgnNode::children(NodeListPtr &ptr) const { const AttributeValue *value = attributeValue(attIndex_, *grove()); return makeAttributeValueNodeList(grove(), ptr, value); } AccessResult AttributeAsgnNode::getTokenSep(Char &ch) const { const AttributeValue *value = attributeValue(attIndex_, *grove()); if (!value) return accessNull; const Text *text; const StringC *str; if (value->info(text, str) != AttributeValue::tokenized) return accessNull; const TokenizedAttributeValue *tValue = (const TokenizedAttributeValue *)value; if (tValue->nTokens() <= 1) return accessNull; const Char *ptr; size_t len; tValue->token(0, ptr, len); // the character following the token is a space ch = ptr[len]; return accessOK; } AccessResult AttributeAsgnNode::tokens(GroveString &s) const { const AttributeValue *value = attributeValue(attIndex_, *grove()); if (!value) return accessNull; const Text *text; const StringC *str; if (value->info(text, str) != AttributeValue::tokenized) return accessNull; setString(s, *str); return accessOK; } AccessResult AttributeAsgnNode::getAttributeDef(NodePtr &ptr) const { return makeAttributeDefNode(grove(), ptr, attIndex_); } bool AttributeAsgnNode::same(const BaseNode &node) const { return node.same2(this); } bool AttributeAsgnNode::same2(const AttributeAsgnNode *node) const { return (attributeOriginId() == node->attributeOriginId() && attIndex_ == node->attIndex_); } unsigned long AttributeAsgnNode::hash() const { unsigned long n = (unsigned long)attributeOriginId(); return secondHash(n + attIndex_); } ElementAttributeAsgnNode ::ElementAttributeAsgnNode(const GroveImpl *grove, size_t attIndex, const ElementChunk *chunk) : AttributeAsgnNode(grove, attIndex), ElementAttributeOrigin(chunk), AttributeDefOrigin(attIndex) { } EntityAttributeAsgnNode ::EntityAttributeAsgnNode(const GroveImpl *grove, size_t attIndex, const ExternalDataEntity *entity) : AttributeAsgnNode(grove, attIndex), EntityAttributeOrigin(entity), AttributeDefOrigin(attIndex) { } CdataAttributeValueNode ::CdataAttributeValueNode(const GroveImpl *grove, const AttributeValue *value, size_t attIndex, const TextIter &iter, size_t charIndex) : BaseNode(grove), AttributeDefOrigin(attIndex), value_(value), iter_(iter), charIndex_(charIndex) { } bool CdataAttributeValueNode::skipBoring(TextIter &iter) { while (iter.valid()) { switch (iter.type()) { case TextItem::data: case TextItem::cdata: case TextItem::sdata: { size_t length; iter.chars(length); if (length > 0) return 1; } // fall through default: iter.advance(); break; } } return 0; } AccessResult CdataAttributeValueNode::getParent(NodePtr &ptr) const { ptr.assign(makeOriginNode(grove(), attIndex_)); return accessOK; } AccessResult CdataAttributeValueNode::charChunk(const SdataMapper &mapper, GroveString &str) const { if (iter_.type() == TextItem::sdata) { const Entity *entity = iter_.location().origin()->asEntityOrigin()->entity(); const StringC &name = entity->name(); const StringC &text = entity->asInternalEntity()->string(); Char *cp = (Char *)&c_; if (mapper.sdataMap(GroveString(name.data(), name.size()), GroveString(text.data(), text.size()), *cp)) { str.assign(&c_, 1); return accessOK; } else return accessNull; } size_t len; const Char *s = iter_.chars(len); str.assign(s + charIndex_, len - charIndex_); return accessOK; } AccessResult CdataAttributeValueNode::siblingsIndex(unsigned long &n) const { TextIter copy(iter_); size_t tem; const Char *iterChars = iter_.chars(tem); copy.rewind(); skipBoring(copy); n = 0; while (copy.chars(tem) != iterChars) { if (copy.type() == TextItem::sdata) n += 1; else n += tem; copy.advance(); skipBoring(copy); } n += charIndex_; return accessOK; } AccessResult CdataAttributeValueNode::getEntity(NodePtr &ptr) const { if (iter_.type() != TextItem::sdata) return accessNotInClass; const Entity *entity = iter_.location().origin()->asEntityOrigin()->entity(); ptr.assign(new EntityNode(grove(), entity)); return accessOK; } AccessResult CdataAttributeValueNode::getEntityName(GroveString &str) const { if (iter_.type() != TextItem::sdata) return accessNotInClass; const Entity *entity = iter_.location().origin()->asEntityOrigin()->entity(); setString(str, entity->name()); return accessOK; } AccessResult CdataAttributeValueNode::getSystemData(GroveString &str) const { if (iter_.type() != TextItem::sdata) return accessNotInClass; size_t len; const Char *ptr = iter_.chars(len); str.assign(ptr, len); return accessOK; } AccessResult CdataAttributeValueNode::firstSibling(NodePtr &ptr) const { TextIter copy(iter_); copy.rewind(); skipBoring(copy); if (canReuse(ptr)) { CdataAttributeValueNode *node = (CdataAttributeValueNode *)this; node->iter_ = copy; node->charIndex_ = 0; } else ptr.assign(makeCdataAttributeValueNode(grove(), value_, attIndex_, copy)); return accessOK; } AccessResult CdataAttributeValueNode::nextChunkSibling(NodePtr &ptr) const { TextIter copy(iter_); copy.advance(); if (!skipBoring(copy)) return accessNull; if (canReuse(ptr)) { CdataAttributeValueNode *node = (CdataAttributeValueNode *)this; node->iter_ = copy; node->charIndex_ = 0; } else ptr.assign(makeCdataAttributeValueNode(grove(), value_, attIndex_, copy)); return accessOK; } AccessResult CdataAttributeValueNode::nextSibling(NodePtr &ptr) const { if (iter_.type() != TextItem::sdata) { size_t length; iter_.chars(length); if (charIndex_ + 1 < length) { if (canReuse(ptr)) ((CdataAttributeValueNode *)this)->charIndex_ += 1; else ptr.assign(makeCdataAttributeValueNode(grove(), value_, attIndex_, iter_, charIndex_ + 1)); return accessOK; } } return CdataAttributeValueNode::nextChunkSibling(ptr); } AccessResult CdataAttributeValueNode::getLocation(Location &loc) const { if (iter_.type() == TextItem::sdata) return grove()->proxifyLocation(iter_.location().origin()->parent(), loc); else return grove()->proxifyLocation(iter_.location(), loc); } void CdataAttributeValueNode::accept(NodeVisitor &visitor) { if (iter_.type() == TextItem::sdata) visitor.sdata(*this); else visitor.dataChar(*this); } unsigned long CdataAttributeValueNode::hash() const { unsigned long n; CdataAttributeValueNode::siblingsIndex(n); return secondHash(secondHash((unsigned long)attributeOriginId() + attIndex_) + n); } const ClassDef &CdataAttributeValueNode::classDef() const { if (iter_.type() == TextItem::sdata) return ClassDef::sdata; else return ClassDef::dataChar; } bool CdataAttributeValueNode::same(const BaseNode &node) const { return node.same2(this); } bool CdataAttributeValueNode::same2(const CdataAttributeValueNode *node) const { size_t tem; return (attributeOriginId() == node->attributeOriginId() && attIndex_ == node->attIndex_ && charIndex_ == node->charIndex_ && iter_.chars(tem) == node->iter_.chars(tem)); } bool CdataAttributeValueNode::chunkContains(const Node &node) const { if (!sameGrove(node)) return 0; return ((const BaseNode &)node).inChunk(this); } bool CdataAttributeValueNode::inChunk(const CdataAttributeValueNode *node) const { size_t tem; return (attributeOriginId() == node->attributeOriginId() && attIndex_ == node->attIndex_ && iter_.chars(tem) == node->iter_.chars(tem) && charIndex_ >= node->charIndex_); } ElementCdataAttributeValueNode ::ElementCdataAttributeValueNode(const GroveImpl *grove, const AttributeValue *value, size_t attIndex, const TextIter &iter, size_t charIndex, const ElementChunk *chunk) : CdataAttributeValueNode(grove, value, attIndex, iter, charIndex), ElementAttributeOrigin(chunk), AttributeDefOrigin(attIndex) { } EntityCdataAttributeValueNode ::EntityCdataAttributeValueNode(const GroveImpl *grove, const AttributeValue *value, size_t attIndex, const TextIter &iter, size_t charIndex, const ExternalDataEntity *entity) : CdataAttributeValueNode(grove, value, attIndex, iter, charIndex), EntityAttributeOrigin(entity), AttributeDefOrigin(attIndex) { } ElementTypeCdataAttributeValueNode ::ElementTypeCdataAttributeValueNode(const GroveImpl *grove, const AttributeValue *value, size_t attIndex, const TextIter &iter, size_t charIndex, const ElementType *elementType) : CdataAttributeValueNode(grove, value, attIndex, iter, charIndex), ElementTypeAttributeDefOrigin(elementType), AttributeDefOrigin(attIndex) { } NotationCdataAttributeValueNode ::NotationCdataAttributeValueNode(const GroveImpl *grove, const AttributeValue *value, size_t attIndex, const TextIter &iter, size_t charIndex, const Notation *notation) : CdataAttributeValueNode(grove, value, attIndex, iter, charIndex), NotationAttributeDefOrigin(notation), AttributeDefOrigin(attIndex) { } AttributeValueTokenNode ::AttributeValueTokenNode(const GroveImpl *grove, const TokenizedAttributeValue *value, size_t attIndex, size_t tokenIndex) : BaseNode(grove), AttributeDefOrigin(attIndex), value_(value), tokenIndex_(tokenIndex) { } AccessResult AttributeValueTokenNode::getParent(NodePtr &ptr) const { ptr.assign(makeOriginNode(grove(), attIndex_)); return accessOK; } AccessResult AttributeValueTokenNode::nextChunkSibling(NodePtr &ptr) const { return followSiblingRef(0, ptr); } AccessResult AttributeValueTokenNode::followSiblingRef(unsigned long i, NodePtr &ptr) const { // Do it like this to avoid possibility of overflow if (i >= value_->nTokens() - tokenIndex_ - 1) return accessNull; if (canReuse(ptr)) { AttributeValueTokenNode *node = (AttributeValueTokenNode *)this; node->tokenIndex_ += size_t(i) + 1; } else ptr.assign(makeAttributeValueTokenNode(grove(), value_, attIndex_, tokenIndex_ + size_t(i) + 1)); return accessOK; } AccessResult AttributeValueTokenNode::firstSibling(NodePtr &ptr) const { if (canReuse(ptr)) ((AttributeValueTokenNode *)this)->tokenIndex_ = 0; else ptr.assign(makeAttributeValueTokenNode(grove(), value_, attIndex_, 0)); return accessOK; } AccessResult AttributeValueTokenNode::siblingsIndex(unsigned long &i) const { i = tokenIndex_; return accessOK; } AccessResult AttributeValueTokenNode::getToken(GroveString &str) const { const Char *ptr; size_t len; value_->token(tokenIndex_, ptr, len); str.assign(ptr, len); return accessOK; } AccessResult AttributeValueTokenNode::getEntity(NodePtr &ptr) const { if (!attDefList()->def(attIndex_)->isEntity()) return accessNull; StringC token(value_->token(tokenIndex_)); const Entity *entity = grove()->governingDtd()->lookupEntityTemp(0, token); if (!entity) { entity = grove()->lookupDefaultedEntity(token); if (!entity) return accessNull; } ptr.assign(new EntityNode(grove(), entity)); return accessOK; } AccessResult AttributeValueTokenNode::getNotation(NodePtr &ptr) const { if (!attDefList()->def(attIndex_)->isNotation()) return accessNull; StringC token(value_->token(tokenIndex_)); const Notation *notation = grove()->governingDtd()->lookupNotationTemp(token); if (!notation) return accessNull; ptr.assign(new NotationNode(grove(), notation)); return accessOK; } AccessResult AttributeValueTokenNode::getReferent(NodePtr &ptr) const { if (!attDefList()->def(attIndex_)->isIdref()) return accessNull; StringC token(value_->token(tokenIndex_)); for (;;) { Boolean complete = grove()->complete(); const ElementChunk *element = grove()->lookupElement(token); if (element) { ptr.assign(new ElementNode(grove(), element)); break; } if (complete) return accessNull; if (!grove()->waitForMoreNodes()) return accessTimeout; } return accessOK; } void AttributeValueTokenNode::accept(NodeVisitor &visitor) { visitor.attributeValueToken(*this); } unsigned long AttributeValueTokenNode::hash() const { return secondHash(secondHash((unsigned long)attributeOriginId() + attIndex_) + tokenIndex_); } bool AttributeValueTokenNode::same(const BaseNode &node) const { return node.same2(this); } bool AttributeValueTokenNode::same2(const AttributeValueTokenNode *node) const { return (attributeOriginId() == node->attributeOriginId() && attIndex_ == node->attIndex_ && tokenIndex_ == node->tokenIndex_); } AccessResult AttributeValueTokenNode::getLocation(Location &loc) const { const ConstPtr *originP; Index index; if (!value_->tokenLocation(tokenIndex_, originP, index) && originP->pointer()) { loc = Location(new GroveImplProxyOrigin(grove(), originP->pointer()), index); return accessOK; } return accessNull; } ElementAttributeValueTokenNode ::ElementAttributeValueTokenNode(const GroveImpl *grove, const TokenizedAttributeValue *value, size_t attIndex, size_t tokenIndex, const ElementChunk *chunk) : AttributeValueTokenNode(grove, value, attIndex, tokenIndex), ElementAttributeOrigin(chunk), AttributeDefOrigin(attIndex) { } EntityAttributeValueTokenNode ::EntityAttributeValueTokenNode(const GroveImpl *grove, const TokenizedAttributeValue *value, size_t attIndex, size_t tokenIndex, const ExternalDataEntity *entity) : AttributeValueTokenNode(grove, value, attIndex, tokenIndex), EntityAttributeOrigin(entity), AttributeDefOrigin(attIndex) { } ElementTypeAttributeValueTokenNode ::ElementTypeAttributeValueTokenNode(const GroveImpl *grove, const TokenizedAttributeValue *value, size_t attIndex, size_t tokenIndex, const ElementType *elementType) : AttributeValueTokenNode(grove, value, attIndex, tokenIndex), ElementTypeAttributeDefOrigin(elementType), AttributeDefOrigin(attIndex) { } NotationAttributeValueTokenNode ::NotationAttributeValueTokenNode(const GroveImpl *grove, const TokenizedAttributeValue *value, size_t attIndex, size_t tokenIndex, const Notation *notation) : AttributeValueTokenNode(grove, value, attIndex, tokenIndex), NotationAttributeDefOrigin(notation), AttributeDefOrigin(attIndex) { } EntityNode::EntityNode(const GroveImpl *grove, const Entity *entity) : EntityNodeBase(grove, entity) { } DefaultEntityNode::DefaultEntityNode(const GroveImpl *grove, const Entity *entity) : EntityNodeBase(grove, entity) { } AccessResult EntityNode::getOrigin(NodePtr &ptr) const { if (entity_->defaulted() && grove()->lookupDefaultedEntity(entity_->name())) ptr.assign(new SgmlDocumentNode(grove(), grove()->root())); else ptr.assign(new DocumentTypeNode(grove(), grove()->governingDtd())); return accessOK; } AccessResult DefaultEntityNode::getOrigin(NodePtr &ptr) const { ptr.assign(new DocumentTypeNode(grove(), grove()->governingDtd())); return accessOK; } AccessResult EntityNode::getOriginToSubnodeRelPropertyName(ComponentName::Id &name) const { if (entity_->defaulted() && grove()->lookupDefaultedEntity(entity_->name())) name = ComponentName::idDefaultedEntities; else name = ComponentName::idGeneralEntities; return accessOK; } AccessResult DefaultEntityNode::getOriginToSubnodeRelPropertyName(ComponentName::Id &name) const { name = ComponentName::idDefaultEntity; return accessOK; } AccessResult EntityNodeBase::getName(GroveString &str) const { setString(str, entity_->name()); return accessOK; } AccessResult EntityNodeBase::getExternalId(NodePtr &ptr) const { const ExternalEntity *x = entity_->asExternalEntity(); if (!x) return accessNull; ptr.assign(new EntityExternalIdNode(grove(), x)); return accessOK; } AccessResult EntityNodeBase::getNotation(NodePtr &ptr) const { const ExternalDataEntity *x = entity_->asExternalDataEntity(); if (!x || !x->notation()) return accessNull; ptr.assign(new NotationNode(grove(), x->notation())); return accessOK; } AccessResult EntityNodeBase::getNotationName(GroveString &str) const { const ExternalDataEntity *x = entity_->asExternalDataEntity(); if (!x || !x->notation()) return accessNull; setString(str, x->notation()->name()); return accessOK; } AccessResult EntityNodeBase::getText(GroveString &str) const { const InternalEntity *i = entity_->asInternalEntity(); if (!i) return accessNull; setString(str, i->string()); return accessOK; } AccessResult EntityNodeBase::getEntityType(Node::EntityType::Enum &entityType) const { switch (entity_->dataType()) { case EntityDecl::sgmlText: entityType = EntityType::text; break; case EntityDecl::pi: entityType = EntityType::pi; break; case EntityDecl::cdata: entityType = EntityType::cdata; break; case EntityDecl::sdata: entityType = EntityType::sdata; break; case EntityDecl::ndata: entityType = EntityType::ndata; break; case EntityDecl::subdoc: entityType = EntityType::subdocument; break; default: CANNOT_HAPPEN(); } return accessOK; } AccessResult EntityNode::getDefaulted(bool &dflted) const { dflted = entity_->defaulted(); return accessOK; } AccessResult EntityNodeBase::getAttributes(NamedNodeListPtr &ptr) const { const ExternalDataEntity *x = entity_->asExternalDataEntity(); if (!x) return accessNull; ptr.assign(new EntityAttributesNamedNodeList(grove(), x)); return accessOK; } AccessResult EntityNodeBase::attributeRef(unsigned long i, NodePtr &ptr) const { const ExternalDataEntity *x = entity_->asExternalDataEntity(); if (!x || i >= x->attributes().size()) return accessNull; ptr.assign(new EntityAttributeAsgnNode(grove(), size_t(i), x)); return accessOK; } AccessResult EntityNodeBase::getLocation(Location &loc) const { return grove()->proxifyLocation(entity_->defLocation(), loc); } bool EntityNode::same(const BaseNode &node) const { return node.same2(this); } bool DefaultEntityNode::same(const BaseNode &node) const { return node.same2(this); } bool EntityNode::same2(const EntityNode *node) const { return entity_ == node->entity_; } bool DefaultEntityNode::same2(const DefaultEntityNode *node) const { return entity_ == node->entity_; } void EntityNode::accept(NodeVisitor &visitor) { visitor.entity(*this); } void DefaultEntityNode::accept(NodeVisitor &visitor) { visitor.defaultEntity(*this); } unsigned long EntityNodeBase::hash() const { return (unsigned long)entity_; } EntityAttributeOrigin ::EntityAttributeOrigin(const ExternalDataEntity *entity) : entity_(entity) { } const AttributeDefinitionList * EntityAttributeOrigin::attDefList() const { return entity_->notation()->attributeDefTemp(); } const AttributeValue * EntityAttributeOrigin::attributeValue(size_t attIndex, const GroveImpl &) const { return entity_->attributes().value(attIndex); } AccessResult EntityAttributeOrigin::setNodePtrAttributeOrigin(NodePtr &ptr, const BaseNode *node) const { ptr.assign(new EntityNode(node->grove(), entity_)); return accessOK; } Node *EntityAttributeOrigin ::makeCdataAttributeValueNode(const GroveImpl *grove, const AttributeValue *value, size_t attIndex, const TextIter &iter, size_t charIndex) const { return new EntityCdataAttributeValueNode(grove, value, attIndex, iter, charIndex, entity_); } Node *EntityAttributeOrigin ::makeAttributeValueTokenNode(const GroveImpl *grove, const TokenizedAttributeValue *value, size_t attIndex, size_t tokenIndex) const { return new EntityAttributeValueTokenNode(grove, value, attIndex, tokenIndex, entity_); } Node *EntityAttributeOrigin ::makeAttributeAsgnNode(const GroveImpl *grove, size_t attIndex) const { return new EntityAttributeAsgnNode(grove, attIndex, entity_); } AccessResult EntityAttributeOrigin ::makeAttributeDefNode(const GroveImpl *grove, NodePtr &ptr, size_t attributeDefIdx) const { if (entity_->notation() == 0) return accessNull; ptr.assign(new NotationAttributeDefNode(grove, *(entity_->notation()), attributeDefIdx)); return accessOK; } Node *EntityAttributeOrigin::makeOriginNode(const GroveImpl *grove, size_t attIndex) const { return makeAttributeAsgnNode(grove, attIndex); } const void *EntityAttributeOrigin::attributeOriginId() const { return entity_; } DoctypesAndLinktypesNamedNodeList ::DoctypesAndLinktypesNamedNodeList(const GroveImpl *grove) : BaseNamedNodeList(grove, grove->generalSubstTable()) { } NodeListPtr DoctypesAndLinktypesNamedNodeList::nodeList() const { NodePtr tem(new DocumentTypeNode(grove(), grove()->governingDtd())); return new SiblingNodeList(tem); } AccessResult DoctypesAndLinktypesNamedNodeList ::namedNodeU(const StringC &str, NodePtr &ptr) const { if (grove()->governingDtd()->name() != str) return accessNull; ptr.assign(new DocumentTypeNode(grove(), grove()->governingDtd())); return accessOK; } GeneralEntitiesNamedNodeList ::GeneralEntitiesNamedNodeList(const GroveImpl *grove, const Dtd *dtd) : BaseNamedNodeList(grove, grove->entitySubstTable()), dtd_(dtd) { } NodeListPtr GeneralEntitiesNamedNodeList::nodeList() const { return new EntitiesNodeList(grove(), dtd_->generalEntityIter()); } AccessResult GeneralEntitiesNamedNodeList::namedNodeU(const StringC &str, NodePtr &ptr) const { const Entity *entity = dtd_->lookupEntityTemp(0, str); if (!entity) return accessNull; ptr.assign(new EntityNode(grove(), entity)); return accessOK; } ParameterEntitiesNamedNodeList ::ParameterEntitiesNamedNodeList(const GroveImpl *grove, const Dtd *dtd) : BaseNamedNodeList(grove, grove->entitySubstTable()), dtd_(dtd) { } NodeListPtr ParameterEntitiesNamedNodeList::nodeList() const { return new EntitiesNodeList(grove(), dtd_->parameterEntityIter()); } AccessResult ParameterEntitiesNamedNodeList::namedNodeU(const StringC &str, NodePtr &ptr) const { const Entity *entity = dtd_->lookupEntityTemp(1, str); if (!entity) return accessNull; ptr.assign(new EntityNode(grove(), entity)); return accessOK; } AccessResult DefaultedEntitiesNamedNodeList::namedNodeU(const StringC &str, NodePtr &ptr) const { const Entity *entity = grove()->lookupDefaultedEntity(str); if (!entity) return accessNull; ptr.assign(new EntityNode(grove(), entity)); return accessOK; } NodeListPtr DefaultedEntitiesNamedNodeList::nodeList() const { return new EntitiesNodeList(grove(), grove()->defaultedEntityIter()); } NodeListPtr DocEntitiesNamedNodeList::nodeList() const { return new DocEntitiesNodeList(grove()); } AccessResult DocEntitiesNamedNodeList::namedNodeU(const StringC &str, NodePtr &ptr) const { const Entity *entity = grove()->governingDtd()->lookupEntityTemp(0, str); // How I hate the default entity. while (!entity) { if (!grove()->hasDefaultEntity()) return accessNull; // Make sure that the value of complete // we look at is that before we looked up // the entity. Boolean complete = grove()->complete(); entity = grove()->lookupDefaultedEntity(str); if (entity) break; if (complete) return accessNull; if (!grove()->waitForMoreNodes()) return accessTimeout; } ptr.assign(new EntityNode(grove(), entity)); return accessOK; } AccessResult ElementsNamedNodeList::namedNodeU(const StringC &str, NodePtr &ptr) const { for (;;) { Boolean complete = grove()->complete(); const ElementChunk *element = grove()->lookupElement(str); if (element) { ptr.assign(new ElementNode(grove(), element)); break; } if (complete) return accessNull; if (!grove()->waitForMoreNodes()) return accessTimeout; } return accessOK; } NodeListPtr ElementsNamedNodeList::nodeList() const { return new ElementsNodeList(grove(), grove()->root()->documentElement); } ElementsNodeList::ElementsNodeList(const GroveImpl *grove, const Chunk *first) : grove_(grove), first_(first) { } AccessResult ElementsNodeList::first(NodePtr &ptr) const { const Chunk *p = first_; while (p) { while (p == grove_->completeLimit()) { if (!grove_->waitForMoreNodes()) return accessTimeout; } if (p->id()) { ((ElementsNodeList *)this)->first_ = p; ptr.assign(new ElementNode(grove_, (const ElementChunk *)p)); return accessOK; } p = p->after(); } return accessNull; } AccessResult ElementsNodeList::chunkRest(NodeListPtr &ptr) const { const Chunk *p = first_; while (p) { while (p == grove_->completeLimit()) { if (!grove_->waitForMoreNodes()) return accessTimeout; } if (p->id()) { if (canReuse(ptr)) ((ElementsNodeList *)this)->first_ = p->after(); else ptr.assign(new ElementsNodeList(grove_, p->after())); return accessOK; } p = p->after(); } return accessNull; } // iter.next() gives first member of list that this represents EntitiesNodeList::EntitiesNodeList(const GroveImpl *grove, const Dtd::ConstEntityIter &iter) : grove_(grove), iter_(iter) { } AccessResult EntitiesNodeList::first(NodePtr &ptr) const { Dtd::ConstEntityIter tem(iter_); const Entity *entity = tem.nextTemp(); if (!entity) return accessNull; ptr.assign(new EntityNode(grove_, entity)); return accessOK; } AccessResult EntitiesNodeList::chunkRest(NodeListPtr &ptr) const { if (canReuse(ptr)) { EntitiesNodeList *list = (EntitiesNodeList *)this; if (list->iter_.nextTemp() == 0) return accessNull; return accessOK; } Dtd::ConstEntityIter tem(iter_); if (tem.nextTemp() == 0) return accessNull; ptr.assign(new EntitiesNodeList(grove_, tem)); return accessOK; } DocEntitiesNodeList::DocEntitiesNodeList(const GroveImpl *grove) : EntitiesNodeList(grove, grove->governingDtd()->generalEntityIter()) { } AccessResult DocEntitiesNodeList::first(NodePtr &ptr) const { AccessResult ret = EntitiesNodeList::first(ptr); if (ret != accessNull || !grove()->hasDefaultEntity()) return ret; while (!grove()->complete()) if (!grove()->waitForMoreNodes()) return accessTimeout; Dtd::ConstEntityIter tem(grove()->defaultedEntityIter()); const Entity *entity = tem.nextTemp(); if (!entity) return accessNull; ptr.assign(new EntityNode(grove(), entity)); return accessOK; } AccessResult DocEntitiesNodeList::chunkRest(NodeListPtr &ptr) const { AccessResult ret = EntitiesNodeList::chunkRest(ptr); if (ret != accessNull || !grove()->hasDefaultEntity()) return ret; while (!grove()->complete()) if (!grove()->waitForMoreNodes()) return accessTimeout; Dtd::ConstEntityIter tem(grove()->defaultedEntityIter()); const Entity *entity = tem.nextTemp(); if (!entity) return accessNull; ptr.assign(new EntitiesNodeList(grove(), tem)); return accessOK; } NotationsNamedNodeList ::NotationsNamedNodeList(const GroveImpl *grove, const Dtd *dtd) : BaseNamedNodeList(grove, grove->generalSubstTable()), dtd_(dtd) { } NodeListPtr NotationsNamedNodeList::nodeList() const { return new NotationsNodeList(grove(), dtd_->notationIter()); } AccessResult NotationsNamedNodeList::namedNodeU(const StringC &str, NodePtr &ptr) const { const Notation *notation = dtd_->lookupNotationTemp(str); if (!notation) return accessNull; ptr.assign(new NotationNode(grove(), notation)); return accessOK; } // iter.next() gives first member of list that this represents NotationsNodeList::NotationsNodeList(const GroveImpl *grove, const Dtd::ConstNotationIter &iter) : grove_(grove), iter_(iter) { } AccessResult NotationsNodeList::first(NodePtr &ptr) const { Dtd::ConstNotationIter tem(iter_); const Notation *notation = tem.nextTemp(); if (!notation) return accessNull; ptr.assign(new NotationNode(grove_, notation)); return accessOK; } AccessResult NotationsNodeList::chunkRest(NodeListPtr &ptr) const { if (canReuse(ptr)) { NotationsNodeList *list = (NotationsNodeList *)this; if (list->iter_.next().isNull()) return accessNull; return accessOK; } Dtd::ConstNotationIter tem(iter_); if (tem.nextTemp() == 0) return accessNull; ptr.assign(new NotationsNodeList(grove_, tem)); return accessOK; } NotationNode::NotationNode(const GroveImpl *grove, const Notation *notation) : BaseNode(grove), notation_(notation) { } AccessResult NotationNode::getOrigin(NodePtr &ptr) const { ptr.assign(new DocumentTypeNode(grove(), grove()->governingDtd())); return accessOK; } AccessResult NotationNode::getName(GroveString &str) const { setString(str, notation_->name()); return accessOK; } AccessResult NotationNode::getExternalId(NodePtr &ptr) const { ptr.assign(new NotationExternalIdNode(grove(), notation_)); return accessOK; } AccessResult NotationNode::getAttributeDefs(NamedNodeListPtr &ptr) const { ptr.assign(new NotationAttributeDefsNamedNodeList(grove(), *notation_)); return accessOK; } AccessResult NotationNode::getLocation(Location &loc) const { return grove()->proxifyLocation(notation_->defLocation(), loc); } bool NotationNode::same(const BaseNode &node) const { return node.same2(this); } bool NotationNode::same2(const NotationNode *node) const { return notation_ == node->notation_; } void NotationNode::accept(NodeVisitor &visitor) { visitor.notation(*this); } unsigned long NotationNode::hash() const { return (unsigned long)notation_; } ExternalIdNode::ExternalIdNode(const GroveImpl *grove) : BaseNode(grove) { } AccessResult ExternalIdNode::getPublicId(GroveString &str) const { const StringC *s = externalId().publicIdString(); if (!s) return accessNull; setString(str, *s); return accessOK; } AccessResult ExternalIdNode::getSystemId(GroveString &str) const { const StringC *s = externalId().systemIdString(); if (!s) return accessNull; setString(str, *s); return accessOK; } AccessResult ExternalIdNode::getGeneratedSystemId(GroveString &str) const { const StringC &s = externalId().effectiveSystemId(); if (!s.size()) return accessNull; setString(str, s); return accessOK; } void ExternalIdNode::accept(NodeVisitor &visitor) { visitor.externalId(*this); } bool ExternalIdNode::same(const BaseNode &node) const { return node.same2(this); } bool ExternalIdNode::same2(const ExternalIdNode *node) const { return &externalId() == &node->externalId(); } EntityExternalIdNode::EntityExternalIdNode(const GroveImpl *grove, const ExternalEntity *entity) : ExternalIdNode(grove), entity_(entity) { } const ExternalId &EntityExternalIdNode::externalId() const { return entity_->externalId(); } AccessResult EntityExternalIdNode::getOrigin(NodePtr &ptr) const { ptr.assign(new EntityNode(grove(), entity_)); return accessOK; } unsigned long EntityExternalIdNode::hash() const { return secondHash((unsigned long)entity_); } NotationExternalIdNode::NotationExternalIdNode(const GroveImpl *grove, const Notation *notation) : ExternalIdNode(grove), notation_(notation) { } const ExternalId &NotationExternalIdNode::externalId() const { return notation_->externalId(); } AccessResult NotationExternalIdNode::getOrigin(NodePtr &ptr) const { ptr.assign(new NotationNode(grove(), notation_)); return accessOK; } unsigned long NotationExternalIdNode::hash() const { return secondHash((unsigned long)notation_); } AccessResult ChunkNode::getParent(NodePtr &ptr) const { if (!chunk_->origin) return accessNull; // This is needed because PiNodes in the prolog and // epilog don't have a parent but do have an origin. // Also for the document element. if ((const Chunk *)chunk()->origin == grove()->root()) return accessNull; chunk_->origin->setNodePtrFirst(ptr, this); return accessOK; } AccessResult ChunkNode::getTreeRoot(NodePtr &ptr) const { if (chunk()->origin && (const Chunk *)chunk()->origin != grove()->root() // With invalid documents we might have elements in the epilog && !grove()->root()->epilog && grove()->root()->documentElement) return grove()->root()->documentElement->setNodePtrFirst(ptr, this); return Node::getTreeRoot(ptr); } AccessResult ChunkNode::getOrigin(NodePtr &ptr) const { if (!chunk_->origin) return accessNull; chunk_->origin->setNodePtrFirst(ptr, this); return accessOK; } AccessResult ChunkNode::getOriginToSubnodeRelPropertyName(ComponentName::Id &name) const { if ((const Chunk *)chunk()->origin != grove()->root()) name = ComponentName::idContent; else if ((const Chunk *)chunk() == grove()->root()->documentElement) name = ComponentName::idDocumentElement; else { const Chunk *tem; if (chunk()->getFirstSibling(grove(), tem) == accessOK && tem == grove()->root()->prolog) name = ComponentName::idProlog; else name = ComponentName::idEpilog; } return accessOK; } unsigned long ChunkNode::hash() const { return (unsigned long)chunk_; } bool ChunkNode::same(const BaseNode &node) const { return node.same2(this); } bool ChunkNode::same2(const ChunkNode *node) const { return chunk_ == node->chunk_; } BaseNode::~BaseNode() { } void BaseNode::addRef() { ++refCount_; } void BaseNode::release() { ASSERT(refCount_ != 0); if (--refCount_ == 0) delete this; } unsigned BaseNode::groveIndex() const { return grove_->groveIndex(); } bool BaseNode::operator==(const Node &node) const { if (!sameGrove(node)) return 0; return same((const BaseNode &)node); } bool BaseNode::chunkContains(const Node &node) const { if (!sameGrove(node)) return 0; return same((const BaseNode &)node); } bool BaseNode::inChunk(const DataNode *) const { return 0; } bool BaseNode::inChunk(const CdataAttributeValueNode *) const { return 0; } bool BaseNode::same2(const ChunkNode *) const { return 0; } bool BaseNode::same2(const DataNode *) const { return 0; } bool BaseNode::same2(const AttributeAsgnNode *) const { return 0; } bool BaseNode::same2(const AttributeValueTokenNode *) const { return 0; } bool BaseNode::same2(const CdataAttributeValueNode *) const { return 0; } bool BaseNode::same2(const EntityNode *) const { return 0; } bool BaseNode::same2(const NotationNode *) const { return 0; } bool BaseNode::same2(const ExternalIdNode *) const { return 0; } bool BaseNode::same2(const DocumentTypeNode *) const { return 0; } bool BaseNode::same2(const SgmlConstantsNode *) const { return 0; } bool BaseNode::same2(const MessageNode *) const { return 0; } bool BaseNode::same2(const ElementTypeNode *) const { return 0; } bool BaseNode::same2(const ModelGroupNode *) const { return 0; } bool BaseNode::same2(const ElementTokenNode *) const { return 0; } bool BaseNode::same2(const PcdataTokenNode *) const { return 0; } bool BaseNode::same2(const AttributeDefNode *) const { return 0; } bool BaseNode::same2(const DefaultEntityNode *) const { return 0; } AccessResult BaseNode::nextSibling(NodePtr &ptr) const { return nextChunkSibling(ptr); } AccessResult BaseNode::follow(NodeListPtr &ptr) const { NodePtr nd; AccessResult ret = nextSibling(nd); switch (ret) { case accessOK: ptr.assign(new SiblingNodeList(nd)); break; case accessNull: ptr.assign(new BaseNodeList); ret = accessOK; break; default: break; } return ret; } AccessResult BaseNode::children(NodeListPtr &ptr) const { NodePtr head; AccessResult ret = firstChild(head); switch (ret) { case accessOK: ptr.assign(new SiblingNodeList(head)); break; case accessNull: ptr.assign(new BaseNodeList); ret = accessOK; break; default: break; } return ret; } AccessResult BaseNode::getOrigin(NodePtr &ptr) const { return getParent(ptr); } AccessResult BaseNode::getGroveRoot(NodePtr &ptr) const { ptr.assign(new SgmlDocumentNode(grove(), grove()->root())); return accessOK; } AccessResult BaseNode::getLocation(Location &) const { return accessNull; } bool BaseNode::queryInterface(IID iid, const void *&p) const { if (iid == LocNode::iid) { const LocNode *ip = this; p = ip; return 1; } return 0; } AccessResult ForwardingChunk::setNodePtrFirst(NodePtr &ptr, const BaseNode *node) const { if (forwardTo == 0) return accessNull; ASSERT(origin == forwardTo->origin); return forwardTo->setNodePtrFirst(ptr, node); } AccessResult ForwardingChunk::getFollowing(const GroveImpl *grove, const Chunk *&p, unsigned long &nNodes) const { AccessResult ret = Chunk::getFollowing(grove, p, nNodes); if (ret == accessOK) nNodes = 0; return ret; } AccessResult LocOriginChunk::getFollowing(const GroveImpl *grove, const Chunk *&p, unsigned long &nNodes) const { AccessResult ret = Chunk::getFollowing(grove, p, nNodes); if (ret == accessOK) nNodes = 0; return ret; } AccessResult LocOriginChunk::setNodePtrFirst(NodePtr &ptr, const BaseNode *node) const { return ((const Chunk *)(this + 1))->setNodePtrFirst(ptr, node); } AccessResult LocOriginChunk::setNodePtrFirst(NodePtr &ptr, const ElementNode *node) const { return ((const Chunk *)(this + 1))->setNodePtrFirst(ptr, node); } AccessResult LocOriginChunk::setNodePtrFirst(NodePtr &ptr, const DataNode *node) const { return ((const Chunk *)(this + 1))->setNodePtrFirst(ptr, node); } const Chunk *LocOriginChunk::after() const { return this + 1; } Boolean LocOriginChunk::getLocOrigin(const Origin *&ret) const { ret = locOrigin; return 1; } AccessResult Chunk::setNodePtrFirst(NodePtr &ptr, const ElementNode *node) const { return setNodePtrFirst(ptr, (const BaseNode *)node); } AccessResult Chunk::setNodePtrFirst(NodePtr &ptr, const DataNode *node) const { return setNodePtrFirst(ptr, (const BaseNode *)node); } const StringC *Chunk::id() const { return 0; } AccessResult Chunk::getFollowing(const GroveImpl *grove, const Chunk *&f, unsigned long &n) const { const Chunk *p = after(); while (p == grove->completeLimit()) if (!grove->waitForMoreNodes()) return accessTimeout; if (p->origin != origin) return accessNull; n = 1; f = p; return accessOK; } AccessResult Chunk::getFirstSibling(const GroveImpl *grove, const Chunk *&p) const { if ((const Chunk *)origin == grove->root()) return accessNotInClass; p = origin->after(); return accessOK; } Boolean Chunk::getLocOrigin(const Origin *&) const { return 0; } // ------------------------------ dev -------------------------------- // -- CLASS IMP: ElementTypeNode AccessResult ElementTypeNode::getOrigin(NodePtr &ptr) const { ptr.assign(new DocumentTypeNode(grove(), grove()->governingDtd())); return accessOK; } AccessResult ElementTypeNode::getLocation(Location &loc) const { const ElementDefinition *def = elementType_.definition(); if (def == 0) return accessNull; return grove()->proxifyLocation(def->location(), loc); } AccessResult ElementTypeNode::getGi(GroveString &str) const { setString(str, elementType_.name()); return accessOK; } AccessResult ElementTypeNode::getModelGroup(NodePtr &ptr) const { const ElementDefinition *def = elementType_.definition(); if (def == 0 || def->declaredContent() != ElementDefinition::modelGroup) return accessNull; ptr.assign(new ModelGroupNode(grove(), elementType_, *(def->compiledModelGroup()->modelGroup()))); return accessOK; } AccessResult ElementTypeNode::getContentType(Node::ContentType::Enum &enumId) const { const ElementDefinition *def = elementType_.definition(); if (def == 0) return accessNull; switch (def->declaredContent() ) { case ElementDefinition::modelGroup: enumId = ContentType::modelgrp; break; case ElementDefinition::any: enumId = ContentType::any; break; case ElementDefinition::cdata: enumId = ContentType::cdata; break; case ElementDefinition::rcdata: enumId = ContentType::rcdata; break; case ElementDefinition::empty: enumId = ContentType::empty; break; default: CANNOT_HAPPEN(); } return accessOK; } AccessResult ElementTypeNode::getExclusions(GroveStringListPtr &sl) const { const ElementDefinition *def = elementType_.definition(); if (def == 0 || (def->declaredContent() != ElementDefinition::modelGroup && def->declaredContent() != ElementDefinition::any)) return accessNull; sl.assign(new GroveStringList); GroveString str; for (size_t i = 0; i < def->nExclusions(); i++ ) { setString(str, def->exclusion(i)->name()); sl->append(str); } return accessOK; } AccessResult ElementTypeNode::getInclusions(GroveStringListPtr &sl) const { const ElementDefinition *def = elementType_.definition(); if (def == 0 || (def->declaredContent() != ElementDefinition::modelGroup && def->declaredContent() != ElementDefinition::any)) return accessNull; sl.assign(new GroveStringList); GroveString str; for (size_t i = 0; i < def->nInclusions(); i++ ) { setString(str, def->inclusion(i)->name()); sl->append(str); } return accessOK; } AccessResult ElementTypeNode::getOmitEndTag(bool &f) const { const ElementDefinition *def = elementType_.definition(); if (def == 0 || !def->omittedTagSpec()) return accessNull; f = def->canOmitEndTag(); return accessOK; } AccessResult ElementTypeNode::getOmitStartTag(bool &f) const { const ElementDefinition *def = elementType_.definition(); if (def == 0 || !def->omittedTagSpec()) return accessNull; f = def->canOmitStartTag(); return accessOK; } AccessResult ElementTypeNode::getAttributeDefs(NamedNodeListPtr &ptr) const { ptr.assign(new ElementTypeAttributeDefsNamedNodeList(grove(), elementType_)); return accessOK; } bool ElementTypeNode::same(const BaseNode &node) const { return node.same2(this); } bool ElementTypeNode::same2(const ElementTypeNode *node) const { return &elementType_ == &(node->elementType()); } void ElementTypeNode::accept(NodeVisitor &visitor) { visitor.elementType(*this); } unsigned long ElementTypeNode::hash() const { return (unsigned long)&elementType_; } // -- CLASS IMP: ElementTypesNodeList ElementTypesNodeList::ElementTypesNodeList( const GroveImpl *grove, const Dtd::ConstElementTypeIter &iter ) : grove_(grove), iter_(iter) { } AccessResult ElementTypesNodeList::first(NodePtr &ptr) const { Dtd::ConstElementTypeIter tem(iter_); const ElementType *elementType = tem.next(); if (!elementType) return accessNull; ptr.assign(new ElementTypeNode(grove_, *elementType)); return accessOK; } AccessResult ElementTypesNodeList::chunkRest(NodeListPtr &ptr) const { if (canReuse(ptr)) { ElementTypesNodeList *list = (ElementTypesNodeList *)this; if (list->iter_.next() == 0) return accessNull; return accessOK; } Dtd::ConstElementTypeIter tem(iter_); if (tem.next() == 0) return accessNull; ptr.assign(new ElementTypesNodeList(grove_, tem)); return accessOK; } // -- CLASS IMP: ElementTypesNamedNodeList ElementTypesNamedNodeList::ElementTypesNamedNodeList(const GroveImpl *grove, const Dtd *dtd) : BaseNamedNodeList( grove, grove->generalSubstTable() ), dtd_(dtd) { } NodeListPtr ElementTypesNamedNodeList::nodeList() const { return new ElementTypesNodeList(grove(), dtd_->elementTypeIter()); } AccessResult ElementTypesNamedNodeList::namedNodeU(const StringC &str, NodePtr &ptr) const { const ElementType *elementType = dtd_->lookupElementType(str); // ? Temp if (!elementType) return accessNull; ptr.assign(new ElementTypeNode(grove(), *elementType)); return accessOK; } // -- CLASS IMP: ContentTokenNodeBase ContentTokenNodeBase::ContentTokenNodeBase(const GroveImpl *grove, const ElementType &elementType, ModelGroupNode *parentModelGroupNode) : BaseNode(grove), elementType_(elementType), parentModelGroupNode_(parentModelGroupNode) { if (parentModelGroupNode_ != 0) parentModelGroupNode_->addRef(); } ContentTokenNodeBase::~ContentTokenNodeBase() { if (parentModelGroupNode_ != 0) parentModelGroupNode_->release(); } AccessResult ContentTokenNodeBase::getOrigin(NodePtr &ptr) const { if (parentModelGroupNode_ != 0) ptr.assign(parentModelGroupNode_); else ptr.assign(new ElementTypeNode(grove(), elementType_)); return accessOK; } AccessResult ContentTokenNodeBase::getLocation(Location &loc) const { const ElementDefinition *def = elementType_.definition(); if (def == 0) return accessNull; return grove()->proxifyLocation(def->location(), loc); } // -- CLASS IMP: ElementTokenNode AccessResult ElementTokenNode::getGi(GroveString &str) const { assert(elementToken_.elementType() != 0); setString(str, elementToken_.elementType()->name()); return accessOK; } AccessResult ElementTokenNode::getOccurIndicator(Node::OccurIndicator::Enum &occur) const { switch (elementToken_.occurrenceIndicator()) { case ContentToken::opt: occur = OccurIndicator::opt; break; case ContentToken::plus: occur = OccurIndicator::plus; break; case ContentToken::rep: occur = OccurIndicator::rep; break; case ContentToken::none: return accessNull; default: CANNOT_HAPPEN(); } return accessOK; } bool ElementTokenNode::same(const BaseNode &node) const { return node.same2(this); } bool ElementTokenNode::same2(const ElementTokenNode *node) const { return &elementToken_ == &(node->elementToken()); } void ElementTokenNode::accept(NodeVisitor &visitor) { visitor.elementToken(*this); } unsigned long ElementTokenNode::hash() const { return (unsigned long)&elementToken_; } // -- CLASS IMP: PcdataTokenNode bool PcdataTokenNode::same(const BaseNode &node) const { return node.same2(this); } bool PcdataTokenNode::same2(const PcdataTokenNode *node) const { return &pcdataToken_ == &(node->pcdataToken()); } void PcdataTokenNode::accept(NodeVisitor &visitor) { visitor.pcdataToken(*this); } unsigned long PcdataTokenNode::hash() const { return (unsigned long)&pcdataToken_; } // -- CLASS IMP: ModelGroupNode AccessResult ModelGroupNode::getOriginToSubnodeRelPropertyName(ComponentName::Id &name) const { name = parentModelGroupNode_ == 0 ? ComponentName::idModelGroup : ComponentName::idContentTokens; return accessOK; } AccessResult ModelGroupNode::getConnector(Node::Connector::Enum &conn) const { switch (modelGroup_.connector()) { case ModelGroup::andConnector: conn = Connector::and_; break; case ModelGroup::orConnector: conn = Connector::or_; break; case ModelGroup::seqConnector: conn = Connector::seq; break; default: CANNOT_HAPPEN(); } return accessOK; } AccessResult ModelGroupNode::getOccurIndicator(Node::OccurIndicator::Enum &occur) const { switch (modelGroup_.occurrenceIndicator()) { case ContentToken::opt: occur = OccurIndicator::opt; break; case ContentToken::plus: occur = OccurIndicator::plus; break; case ContentToken::rep: occur = OccurIndicator::rep; break; case ContentToken::none: return accessNull; default: CANNOT_HAPPEN(); } return accessOK; } AccessResult ModelGroupNode::getContentTokens(NodeListPtr &ptr) const { ptr.assign(new ContentTokenNodeList(grove(), *(ModelGroupNode *)this)); return accessOK; } void ModelGroupNode::makeNode(NodePtr &ptr, unsigned contentTokenIdx) { assert( contentTokenIdx < modelGroup_.nMembers()); const ContentToken &contentToken = modelGroup_.member(contentTokenIdx); const ModelGroup *asModelGroup = contentToken.asModelGroup(); if (asModelGroup != 0) ptr.assign(new ModelGroupNode(grove(), elementType_, *asModelGroup, this)); else { const LeafContentToken *asLeafContentToken = contentToken.asLeafContentToken(); if (asLeafContentToken != 0) if (asLeafContentToken->elementType() != 0) ptr.assign(new ElementTokenNode(grove(), elementType_, *(const ElementToken*)asLeafContentToken, this)); else if (asLeafContentToken->occurrenceIndicator() == ContentToken::rep) ptr.assign(new PcdataTokenNode(grove(), elementType_, *(const PcdataToken*)asLeafContentToken, this)); else CANNOT_HAPPEN(); } } bool ModelGroupNode::same(const BaseNode &node) const { return node.same2(this); } bool ModelGroupNode::same2(const ModelGroupNode *node) const { return &modelGroup_ == &(node->modelGroup()); } void ModelGroupNode::accept(NodeVisitor &visitor) { visitor.modelGroup(*this); } unsigned long ModelGroupNode::hash() const { return (unsigned long)&modelGroup_; } // -- CLASS IMP: ContentTokenNodeList ContentTokenNodeList::ContentTokenNodeList(const GroveImpl *grove, ModelGroupNode &modelGroupNode, unsigned firstTokenIdx) : grove_(grove), modelGroupNode_(modelGroupNode), firstTokenIdx_(firstTokenIdx) { } AccessResult ContentTokenNodeList::next() { if (++firstTokenIdx_ >= modelGroupNode_.modelGroup().nMembers()) return accessNull; return accessOK; } AccessResult ContentTokenNodeList::first(NodePtr &ptr) const { if (firstTokenIdx_ < modelGroupNode_.modelGroup().nMembers()) modelGroupNode_.makeNode(ptr, firstTokenIdx_); else return accessNull; return accessOK; } AccessResult ContentTokenNodeList::chunkRest(NodeListPtr &ptr) const { if (canReuse(ptr)) { ContentTokenNodeList *list = (ContentTokenNodeList *)this; return list->next(); } unsigned firstTokenIdx = firstTokenIdx_; if (++firstTokenIdx >= modelGroupNode_.modelGroup().nMembers()) return accessNull; ptr.assign(new ContentTokenNodeList(grove_, modelGroupNode_, firstTokenIdx)); return accessOK; } // class IMP: AttributeDefOrigin AccessResult AttributeDefOrigin::makeAttributeValueNode(const GroveImpl *grove, NodePtr &ptr, const AttributeValue *value) const { if (value) { const Text *text; const StringC *str; switch (value->info(text, str)) { case AttributeValue::tokenized: ptr.assign(makeAttributeValueTokenNode(grove, (const TokenizedAttributeValue *)value, attIndex_, 0)); return accessOK; case AttributeValue::cdata: { TextIter iter(*text); if (!CdataAttributeValueNode::skipBoring(iter)) { ptr.assign(0); return accessNull; } else { ptr.assign(makeCdataAttributeValueNode(grove, value, attIndex_, iter)); return accessOK; } } default: break; } } return accessNull; } AccessResult AttributeDefOrigin::makeAttributeValueNodeList(const GroveImpl *grove, NodeListPtr &ptr, const AttributeValue *value = 0) const { NodePtr nodePtr; AccessResult result; result = makeAttributeValueNode(grove, nodePtr, value); if (result == accessOK) ptr.assign(nodePtr.operator->() == 0 ? new BaseNodeList : new SiblingNodeList(nodePtr)); return result; } AccessResult AttributeDefOrigin::makeAttributeDefNode(const GroveImpl *grove, NodePtr &ptr, const StringC &name) const { if (attDefList() == 0) return accessNull; for (size_t i = 0; i < attDefList()->size(); i++) if (attDefList()->def(i)->name() == name) { return makeAttributeDefNode(grove, ptr, i); break; } return accessNull; } // class IMP: ElementTypeAttributeDefOrigin ElementTypeAttributeDefOrigin::ElementTypeAttributeDefOrigin(const ElementType *elementType) : elementType_(elementType) { } const AttributeDefinitionList *ElementTypeAttributeDefOrigin::attDefList() const { return elementType_->attributeDefTemp(); } AccessResult ElementTypeAttributeDefOrigin::makeAttributeDefNode(const GroveImpl *grove, NodePtr &ptr, size_t attributeDefIdx) const { ptr.assign(new ElementTypeAttributeDefNode(grove, *elementType_, attributeDefIdx)); return accessOK; } AccessResult ElementTypeAttributeDefOrigin::makeAttributeDefList(const GroveImpl *grove, NodeListPtr &ptr, size_t firstAttDefIdx) const { ptr.assign(new ElementTypeAttributeDefsNodeList(grove, *elementType_, firstAttDefIdx)); return accessOK; } Node *ElementTypeAttributeDefOrigin ::makeCdataAttributeValueNode(const GroveImpl *grove, const AttributeValue *value, size_t attIndex, const TextIter &iter, size_t charIndex) const { return new ElementTypeCdataAttributeValueNode(grove, value, attIndex, iter, charIndex, elementType_); } Node *ElementTypeAttributeDefOrigin ::makeAttributeValueTokenNode(const GroveImpl *grove, const TokenizedAttributeValue *value, size_t attIndex, size_t tokenIndex) const { return new ElementTypeAttributeValueTokenNode(grove, value, attIndex, tokenIndex, elementType_); } Node *ElementTypeAttributeDefOrigin::makeOriginNode(const GroveImpl *grove, size_t) const { return new ElementTypeAttributeDefNode(grove, *elementType_, attIndex_); } const void *ElementTypeAttributeDefOrigin::attributeOriginId() const { return elementType_; } // class IMP: NotationAttributeDefOrigin NotationAttributeDefOrigin::NotationAttributeDefOrigin(const Notation *notation) : notation_(notation) { } const AttributeDefinitionList *NotationAttributeDefOrigin::attDefList() const { return notation_->attributeDefTemp(); } AccessResult NotationAttributeDefOrigin::makeAttributeDefNode(const GroveImpl *grove, NodePtr &ptr, size_t attributeDefIdx) const { ptr.assign(new NotationAttributeDefNode(grove, *notation_, attributeDefIdx)); return accessOK; } AccessResult NotationAttributeDefOrigin::makeAttributeDefList(const GroveImpl *grove, NodeListPtr &ptr, size_t firstAttDefIdx) const { ptr.assign(new NotationAttributeDefsNodeList(grove, *notation_, firstAttDefIdx)); return accessOK; } Node *NotationAttributeDefOrigin ::makeCdataAttributeValueNode(const GroveImpl *grove, const AttributeValue *value, size_t attIndex, const TextIter &iter, size_t charIndex) const { return new NotationCdataAttributeValueNode(grove, value, attIndex, iter, charIndex, notation_); } Node *NotationAttributeDefOrigin ::makeAttributeValueTokenNode(const GroveImpl *grove, const TokenizedAttributeValue *value, size_t attIndex, size_t tokenIndex) const { return new NotationAttributeValueTokenNode(grove, value, attIndex, tokenIndex, notation_); } Node *NotationAttributeDefOrigin::makeOriginNode(const GroveImpl *grove, size_t) const { return new NotationAttributeDefNode(grove, *notation_, attIndex_); } const void *NotationAttributeDefOrigin::attributeOriginId() const { return notation_; } // class IMP: AttributeDefNode AccessResult AttributeDefNode::getOrigin(NodePtr &ptr) const { ptr.assign(makeOriginNode(grove(), attIndex_)); return accessOK; } AccessResult AttributeDefNode::getName(GroveString &str) const { setString(str, attDefList()->def(attIndex_)->name()); return accessOK; } AccessResult AttributeDefNode::getDeclValueType(Node::DeclValueType::Enum &dvt) const { AttributeDefinitionDesc desc; attDefList()->def(attIndex_)->getDesc(desc); switch (desc.declaredValue) { case AttributeDefinitionDesc::cdata: dvt = DeclValueType::cdata; break; case AttributeDefinitionDesc::name: dvt = DeclValueType::name; break; case AttributeDefinitionDesc::number: dvt = DeclValueType::number; break; case AttributeDefinitionDesc::nmtoken: dvt = DeclValueType::nmtoken; break; case AttributeDefinitionDesc::nutoken: dvt = DeclValueType::nutoken; break; case AttributeDefinitionDesc::entity: dvt = DeclValueType::entity; break; case AttributeDefinitionDesc::idref: dvt = DeclValueType::idref; break; case AttributeDefinitionDesc::names: dvt = DeclValueType::names; break; case AttributeDefinitionDesc::numbers: dvt = DeclValueType::numbers; break; case AttributeDefinitionDesc::nmtokens: dvt = DeclValueType::nmtokens; break; case AttributeDefinitionDesc::nutokens: dvt = DeclValueType::nutokens; break; case AttributeDefinitionDesc::entities: dvt = DeclValueType::entities; break; case AttributeDefinitionDesc::idrefs: dvt = DeclValueType::idrefs; break; case AttributeDefinitionDesc::id: dvt = DeclValueType::id; break; case AttributeDefinitionDesc::notation: dvt = DeclValueType::notation; break; case AttributeDefinitionDesc::nameTokenGroup: dvt = DeclValueType::nmtkgrp; break; default: CANNOT_HAPPEN(); } return accessOK; } AccessResult AttributeDefNode::getDefaultValueType(Node::DefaultValueType::Enum &dvt) const { AttributeDefinitionDesc desc; attDefList()->def(attIndex_)->getDesc(desc); switch (desc.defaultValueType) { case AttributeDefinitionDesc::required: dvt = DefaultValueType::required; break; case AttributeDefinitionDesc::current: dvt = DefaultValueType::current; break; case AttributeDefinitionDesc::implied: dvt = DefaultValueType::implied; break; case AttributeDefinitionDesc::conref: dvt = DefaultValueType::conref; break; case AttributeDefinitionDesc::defaulted: dvt = DefaultValueType::value; break; case AttributeDefinitionDesc::fixed: dvt = DefaultValueType::fixed; break; default: CANNOT_HAPPEN(); } return accessOK; } AccessResult AttributeDefNode::getTokens(GroveStringListPtr &tokens) const { AttributeDefinitionDesc desc; attDefList()->def(attIndex_)->getDesc(desc); if (desc.declaredValue != AttributeDefinitionDesc::notation && desc.declaredValue != AttributeDefinitionDesc::nameTokenGroup) return accessNull; tokens.assign(new GroveStringList); GroveString str; for (size_t i = 0; i < desc.allowedValues.size(); i++) { setString(str, desc.allowedValues[i]); tokens->append(str); } return accessOK; } AccessResult AttributeDefNode::getCurrentAttributeIndex(long &index) const { AttributeDefinitionDesc desc; attDefList()->def(attIndex_)->getDesc(desc); if (desc.defaultValueType != AttributeDefinitionDesc::current) return accessNull; index = desc.currentIndex; return accessOK; } void AttributeDefNode::accept(NodeVisitor &visitor) { visitor.attributeDef(*this); } bool AttributeDefNode::same(const BaseNode &node) const { return node.same2(this); } bool AttributeDefNode::same2(const AttributeDefNode *node) const { return (attributeOriginId() == node->attributeOriginId() && attIndex_ == node->attIndex()); } unsigned long AttributeDefNode::hash() const { unsigned long n = (unsigned long)attributeOriginId(); return secondHash(n + attIndex_); } // class IMP: ElementTypeAttributeDefNode AccessResult ElementTypeAttributeDefNode::getCurrentGroup(NodeListPtr &ptr) const { AttributeDefinitionDesc desc; attDefList()->def(attIndex_)->getDesc(desc); if (desc.defaultValueType != AttributeDefinitionDesc::current) return accessNull; ptr.assign( new ElementTypeCurrentGroupAttributeDefsNodeList(grove(), grove()->governingDtd()->elementTypeIter(), desc.currentIndex)); return accessOK; } AccessResult ElementTypeAttributeDefNode::getLocation(Location &loc) const { const ElementDefinition *def = elementType_->definition(); if (def == 0) return accessNull; return grove()->proxifyLocation(def->location(), loc); } AccessResult ElementTypeAttributeDefNode::getDefaultValue(NodeListPtr &ptr) const { AttributeDefinitionDesc desc; attDefList()->def(attIndex_)->getDesc(desc); const AttributeValue *value = desc.defaultValue.pointer(); return makeAttributeValueNodeList(grove(), ptr, value); } // class IMP: NotationAttributeDefNode AccessResult NotationAttributeDefNode::getCurrentGroup(NodeListPtr &ptr) const { AttributeDefinitionDesc desc; attDefList()->def(attIndex_)->getDesc(desc); if (desc.defaultValueType != AttributeDefinitionDesc::current) return accessNull; NodePtr nodePtr; nodePtr.assign(new NotationAttributeDefNode(grove(), *notation_, attIndex_)); ptr.assign(new SiblingNodeList(nodePtr)); return accessOK; } AccessResult NotationAttributeDefNode::getLocation(Location &loc) const { return grove()->proxifyLocation(notation_->defLocation(), loc); } // -- CLASS IMP: AttributeDefsNodeList bool AttributeDefsNodeList::inList(size_t attIndex) const { if (attDefList() == 0 || attIndex >= attDefList()->size()) return false; return true; } AccessResult AttributeDefsNodeList::first(NodePtr &ptr) const { return inList(attIndex_) ? makeAttributeDefNode(grove_, ptr, attIndex_) : accessNull; } AccessResult AttributeDefsNodeList::chunkRest(NodeListPtr &ptr) const { if (canReuse(ptr)) { AttributeDefsNodeList *list = (AttributeDefsNodeList *)this; if (list->inList(list->attIndex_)) { ++(list->attIndex_); return accessOK; } return accessNull; } return inList(attIndex_) ? makeAttributeDefList(grove_, ptr, attIndex_+1) : accessNull; } // -- CLASS IMP: AttributeDefsNamedNodeList NodeListPtr AttributeDefsNamedNodeList::nodeList() const { NodeListPtr ptr; makeAttributeDefList(grove(), ptr, 0); return ptr; } AccessResult AttributeDefsNamedNodeList::namedNodeU(const StringC &str, NodePtr &ptr) const { return makeAttributeDefNode(grove(), ptr, str); } // -- CLASS IMP: ElementTypeCurrentGroupAttributeDefsNodeList ElementTypeCurrentGroupAttributeDefsNodeList ::ElementTypeCurrentGroupAttributeDefsNodeList(const GroveImpl *grove, const Dtd::ConstElementTypeIter &iter, size_t currentGroupIndex) : grove_(grove), iter_(iter), currentGroupIndex_(currentGroupIndex), attIndex_(0) { elementType_ = iter_.next(); next(false); } bool ElementTypeCurrentGroupAttributeDefsNodeList::next(Dtd::ConstElementTypeIter &iter, const ElementType *&elementType, size_t &attIndex, bool incrementFirst) const { if (incrementFirst) attIndex++; while (elementType != 0) { if (attIndex >= elementType->attributeDefTemp()->size() ) { do { elementType = iter.next(); } while(elementType != 0 && !elementType->attributeDefTemp()->anyCurrent()); attIndex = 0; } else { if (elementType->attributeDefTemp()->def(attIndex)->isCurrent()) { AttributeDefinitionDesc desc; elementType->attributeDefTemp()->def(attIndex)->getDesc(desc); if (desc.currentIndex == currentGroupIndex_) break; } attIndex++; } } return elementType != 0 ? true : false; } AccessResult ElementTypeCurrentGroupAttributeDefsNodeList::first(NodePtr &ptr) const { if (elementType_ == 0) return accessNull; ptr.assign(new ElementTypeAttributeDefNode(grove_, *elementType_, attIndex_)); return accessOK; } AccessResult ElementTypeCurrentGroupAttributeDefsNodeList::chunkRest(NodeListPtr &ptr) const { if (elementType_ == 0) return accessNull; if (canReuse(ptr)) { ElementTypeCurrentGroupAttributeDefsNodeList *list = (ElementTypeCurrentGroupAttributeDefsNodeList *)this; list->next(); return accessOK; } else { Dtd::ConstElementTypeIter iter(iter_); const ElementType *elementType = elementType_; size_t attIndex = attIndex_; next(iter, elementType, attIndex); ptr.assign(new ElementTypeCurrentGroupAttributeDefsNodeList(grove_, iter, elementType, attIndex, currentGroupIndex_)); } return accessOK; } // ------------------------------ dev end -------------------------------- #ifdef SP_NAMESPACE } #endif #include "grove_inst.cxx" openjade-1.3.2/spgrove/GroveBuilder.h0100664000076400007640000000225706713045702015656 0ustar ianian// Copyright (c) 1996 James Clark // See the file COPYING for copying permission. #ifndef GroveBuilder_INCLUDED #define GroveBuilder_INCLUDED 1 #include "Boolean.h" #include "Node.h" #ifdef SP_USE_DLL #ifdef BUILD_LIBSPGROVE #define SPGROVE_API SP_DLLEXPORT #else #define SPGROVE_API SP_DLLIMPORT #endif #else /* not SP_USE_DLL */ #define SPGROVE_API /* as nothing */ #endif /* not SP_USE_DLL */ #ifdef SP_NAMESPACE namespace SP_NAMESPACE { #endif class Messenger; class ErrorCountEventHandler; class MessageFormatter; class SPGROVE_API GroveBuilder { public: static bool setBlocking(bool); static ErrorCountEventHandler *make(unsigned index, Messenger *, MessageFormatter *, bool validateOnly, GROVE_NAMESPACE_SCOPE NodePtr &root); static ErrorCountEventHandler *make(unsigned index, Messenger *, MessageFormatter *, bool validateOnly, const ConstPtr &sd, const ConstPtr &prologSyntax, const ConstPtr &instanceSyntax, GROVE_NAMESPACE_SCOPE NodePtr &root); private: GroveBuilder(); }; #ifdef SP_NAMESPACE } #endif #endif /* not GroveBuilder_INCLUDED */ openjade-1.3.2/spgrove/Makefile.sub0100664000076400007640000000043707565274532015355 0ustar ianianLTVERSION=0:1:0 LIB=ospgrove INCLUDE=-I$(srcdir)/../grove DEPLIBS=-lm -L$(TOP)/grove -L$(TOP)/grove/.libs \ -L$(TOP)/lib -L$(TOP)/lib/.libs \ $(LIB_THREADS) OBJS=GroveApp.o GroveBuilder.o SdNode.o GENSRCS=grove_inst.cxx GroveBuilder.o: grove_inst.cxx GroveBuilder.lo: grove_inst.cxx openjade-1.3.2/spgrove/SdNode.cxx0100664000076400007640000000047006713071634015012 0ustar ianian// Copyright (c) 1997 James Clark // See the file COPYING for copying permission. #include "config.h" #include "SdNode.h" #ifdef SP_NAMESPACE namespace SP_NAMESPACE { #endif #ifdef GROVE_NAMESPACE using namespace GROVE_NAMESPACE; #endif const Node::IID SdNode::iid = "SdNode"; #ifdef SP_NAMESPACE } #endif openjade-1.3.2/spgrove/SdNode.h0100664000076400007640000000166206713071634014443 0ustar ianian// Copyright (c) 1997 James Clark // See the file COPYING for copying permission. #ifndef SdNode_INCLUDED #define SdNode_INCLUDED 1 #include "Boolean.h" #include "Node.h" #include "Sd.h" #include "Syntax.h" #include "GroveBuilder.h" #ifdef SP_NAMESPACE namespace SP_NAMESPACE { #endif #ifdef GROVE_NAMESPACE #define GROVE_NAMESPACE_SCOPE GROVE_NAMESPACE:: #else #define GROVE_NAMESPACE_SCOPE #endif class SPGROVE_API SdNode { public: virtual GROVE_NAMESPACE_SCOPE AccessResult getSd(ConstPtr &sd, ConstPtr &prologSyntax, ConstPtr &instanceSyntax) const = 0; static const GROVE_NAMESPACE_SCOPE Node::IID iid; static const SdNode *convert(const GROVE_NAMESPACE_SCOPE NodePtr &nd) { const void *p; if (nd && nd->queryInterface(iid, p)) return (const SdNode *)p; else return 0; } }; #undef GROVE_NAMESPACE_SCOPE #ifdef SP_NAMESPACE } #endif #endif /* not SdNode_INCLUDED */ openjade-1.3.2/spgrove/grove_inst.m40100664000076400007640000000110706713045702015526 0ustar ianian// Copyright (c) 1996, 1997 James Clark // See the file copying.txt for copying permission. #include "config.h" #ifdef SP_MANUAL_INST #define SP_DEFINE_TEMPLATES #include "PointerTable.h" #include "Vector.h" #undef SP_DEFINE_TEMPLATES #include "Hash.h" #include "StringC.h" #include "Node.h" #ifdef SP_NAMESPACE namespace SP_NAMESPACE { #endif class ElementChunk; __instantiate(`PointerTable') __instantiate(`Vector') __instantiate(Vector >) #ifdef SP_NAMESPACE } #endif #endif /* SP_MANUAL_INST */ openjade-1.3.2/spgrove/spgrove.dsp0100664000076400007640000001302006777044621015310 0ustar ianian# Microsoft Developer Studio Project File - Name="spgrove" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 CFG=spgrove - Win32 Release !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "spgrove.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "spgrove.mak" CFG="spgrove - Win32 Release" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "spgrove - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE "spgrove - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe MTL=midl.exe RSC=rc.exe !IF "$(CFG)" == "spgrove - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir ".\Release" # PROP BASE Intermediate_Dir ".\Release" # PROP BASE Target_Dir "." # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir ".\Release" # PROP Intermediate_Dir ".\Release" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "." # ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c # ADD CPP /nologo /MD /W3 /GX /O2 /I "..\include" /I "..\grove" /D "BUILD_LIBSPGROVE" /D "NDEBUG" /D "_WINDOWS" /D "WIN32" /D SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D "SP_MULTI_BYTE" /YX /FD /c # ADD BASE MTL /nologo /D "NDEBUG" /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x809 /d "NDEBUG" # ADD RSC /l 0x809 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:"0x20100000" /subsystem:windows /dll /machine:I386 /out:"..\bin\ospgrove13.dll" # SUBTRACT LINK32 /profile /map !ELSEIF "$(CFG)" == "spgrove - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir ".\Debug" # PROP BASE Intermediate_Dir ".\Debug" # PROP BASE Target_Dir "." # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir ".\Debug" # PROP Intermediate_Dir ".\Debug" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "." # ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c # ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\include" /I "..\grove" /D "BUILD_LIBSPGROVE" /D "_DEBUG" /D "_WINDOWS" /D "WIN32" /D SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D "SP_MULTI_BYTE" /YX /FD /c # ADD BASE MTL /nologo /D "_DEBUG" /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x809 /d "_DEBUG" # ADD RSC /l 0x809 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:"0x20100000" /subsystem:windows /dll /debug /machine:I386 /out:"..\dbgbin\ospgrove13d.dll" # SUBTRACT LINK32 /incremental:no !ENDIF # Begin Target # Name "spgrove - Win32 Release" # Name "spgrove - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;for;f90" # Begin Source File SOURCE=.\grove_inst.m4 !IF "$(CFG)" == "spgrove - Win32 Release" # Begin Custom Build - Processing $(InputPath) InputDir=. InputPath=.\grove_inst.m4 InputName=grove_inst "$(InputDir)\$(InputName).cxx" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" del /f $(InputDir)\$(InputName).cxx perl ..\lib\instmac.pl $(InputPath) >$(InputDir)\$(InputName).cxx attrib +r $(InputDir)\$(InputName).cxx # End Custom Build !ELSEIF "$(CFG)" == "spgrove - Win32 Debug" # Begin Custom Build - Processing $(InputPath) InputDir=. InputPath=.\grove_inst.m4 InputName=grove_inst "$(InputDir)\$(InputName).cxx" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" del /f $(InputDir)\$(InputName).cxx perl ..\lib\instmac.pl $(InputPath) >$(InputDir)\$(InputName).cxx attrib +r $(InputDir)\$(InputName).cxx # End Custom Build !ENDIF # End Source File # Begin Source File SOURCE=.\GroveApp.cxx # End Source File # Begin Source File SOURCE=.\GroveBuilder.cxx # End Source File # Begin Source File SOURCE=.\SdNode.cxx # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd" # Begin Source File SOURCE=.\GroveApp.h # End Source File # Begin Source File SOURCE=.\GroveBuilder.h # End Source File # Begin Source File SOURCE=.\SdNode.h # End Source File # Begin Source File SOURCE=.\threads.h # End Source File # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe" # End Group # Begin Source File SOURCE=.\grove_inst.cxx # PROP BASE Exclude_From_Build 1 # PROP Exclude_From_Build 1 # End Source File # End Target # End Project openjade-1.3.2/spgrove/threads.h0100664000076400007640000002751707421560435014727 0ustar ianian// Copyright (c) 1996 James Clark // See the file copying.txt for copying permission. #ifndef threads_INCLUDED #define threads_INCLUDED 1 // Thread primitives. #if defined(_MSC_VER) && defined(_MT) // WIN32 #define SP_THREAD #define STRICT 1 #define WIN32_LEAN_AND_MEAN #include #include // appears to turn these warnings back on #ifdef _MSC_VER #pragma warning ( disable : 4237 ) #endif class Thread { public: Thread(int (*func)(void *), void *arg) { unsigned threadId; arg_ = new Arg; arg_->func = func; arg_->arg = arg; arg_->exited = 0; handle_ = HANDLE(_beginthreadex(NULL, 0, start, arg_, 0, &threadId)); } int wait() { if (WaitForSingleObject(handle_, INFINITE) != WAIT_OBJECT_0) abort(); if (!CloseHandle(handle_)) abort(); if (arg_->exited) { int ret = arg_->ret; delete arg_; return ret; } // Something's gone wrong. We'll get a leak. return 0; } private: struct Arg { int (*func)(void *); void *arg; int ret; int exited; }; static unsigned __stdcall start(void *p) { Arg *arg = (Arg *)p; arg->ret = (*arg->func)(arg->arg); arg->exited = 1; return 0; } HANDLE handle_; Arg *arg_; }; class Mutex { public: class Lock { public: Lock(Mutex *mp) : mp_(mp) { if (mp) EnterCriticalSection(&mp->cs_); } ~Lock() { if (mp_) LeaveCriticalSection(&mp_->cs_); } private: Mutex *mp_; }; Mutex() { InitializeCriticalSection(&cs_); } ~Mutex() { DeleteCriticalSection(&cs_); } friend class Lock; private: CRITICAL_SECTION cs_; }; // Thread-safe reference counts. class RefCount { public: RefCount() : count_(0) { } void operator++() { InterlockedIncrement(&count_); } bool operator--() { return InterlockedDecrement(&count_) != 0; } operator unsigned long() const { return count_; } private: long count_; }; #ifndef SP_NO_BLOCK #define SP_CONDITION class Condition { public: // Manual reset event, initially non-signalled Condition() : handle_(CreateEvent(NULL, 1, 0, NULL)), nWaiters_(0) { } ~Condition() { CloseHandle(handle_); } // Set the event to signalled, releasing all threads waiting on it, // then set it back to non-signalled. // For performance reasons, we want to avoid calling PulseEvent unless we have // some thread waiting on this condition. // The obvious solution of a boolean variable that's set by wait() and // cleared by pulse() fails in the following scenario: // reader: needPulse_ = 1; // writer: needPulse_ = 0; // writer: PulseEvent() // reader: WaitForSingleObject() void pulse() { if (nWaiters_) { PulseEvent(handle_); } } // Wait for the event to become signalled. bool wait() const { InterlockedIncrement((long *)&nWaiters_); bool ret = (WaitForSingleObject(handle_, INFINITE) == WAIT_OBJECT_0); InterlockedDecrement((long *)&nWaiters_); return ret; } // Set the event to signalled, releasing all threads waiting on it. // Don't set it back to non-signalled. Any thread that subsequently // waits will return immediately. void set() { SetEvent(handle_); } private: long nWaiters_; HANDLE handle_; }; #endif /* not SP_NO_BLOCK */ #endif /* _MSC_VER && _MT */ #if ((defined __MACH__) && !(defined __APPLE__)) || (defined __GNU__) // For Mach, using C Threads. May or may not work as-is on your Mach-based OS. // Written by Raf Schietekat on 1996-11-10. // Platform used: NEXTSTEP_(Dev_)3.2 with sp-1.1.1 and jade-0.1. // Maturity: only dsssl/demo.sgm tested (successfully). #define SP_THREAD extern "C" { #ifdef __NeXT__ // catch is a reserved word in C++, it's only used to declare a struct member #define catch catch22 #include #undef catch // don't want ASSERT to clash with ASSERT in SP's macros.h #undef ASSERT #elif defined __GNU__ // catch is a reserved word in C++, it's only used to declare a struct member #define catch catch22 #include #undef catch // don't want ASSERT to clash with ASSERT in SP's macros.h #undef ASSERT #else // Change to whatever works for you, and tell James Clark (or me). // catch is a reserved word in C++, it's only used to declare a struct member #define catch catch22 #include #undef catch // don't want ASSERT to clash with ASSERT in SP's macros.h #undef ASSERT #endif } class Thread { public: Thread(int (*func)(void *), void *arg) { arg_ = new Arg; arg_->func = func; arg_->arg = arg; arg_->exited = 0; handle_ = cthread_fork((cthread_fn_t)start, (any_t)arg_); // will be cthread_join()'ed in wait() } int wait() { cthread_join(handle_); if (arg_ && arg_->exited) { int ret = arg_->ret; delete arg_; arg_ = 0; return ret; } // Something's gone wrong. We'll get a leak. return 0; } private: struct Arg { int (*func)(void *); void *arg; int ret; int exited; }; static void *start(void *p) { Arg *arg = (Arg *)p; arg->ret = (*arg->func)(arg->arg); arg->exited = 1; return 0; } cthread_t handle_; Arg *arg_; }; class Mutex { public: class Lock { // Lock serves to automatically unlock Mutex, however control leaves // a block. Don't let any "warning: unused variable `class Mutex::Lock lock'" // mislead you; hopefully your compiler won't optimise this away... public: Lock(Mutex *mp) : mp_(mp) { if (mp_) mutex_lock (&mp_->cs_); } ~Lock() { if (mp_) mutex_unlock(&mp_->cs_); } private: Mutex *mp_; }; Mutex() { mutex_init (&cs_); } ~Mutex() { mutex_clear(&cs_); } friend class Lock; private: struct mutex cs_; }; // Thread-safe reference counts. class RefCount { public: RefCount() : count_(0) { mutex_init (&cs_); } ~RefCount() { mutex_clear(&cs_); } void operator++() { mutex_lock(&cs_); ++count_; mutex_unlock(&cs_); } bool operator--() { bool ret; mutex_lock(&cs_); ret=(0!=--count_); mutex_unlock(&cs_); return ret; // safe iff reference-count semantics are observed } operator unsigned long() const { return count_; } // safe iff reference-count semantics are observed private: long count_; // hmm, () returns unsigned long... struct mutex cs_; // don't build on top of Mutex class, for efficiency }; #ifndef SP_NO_BLOCK #define SP_CONDITION class Condition { // doesn't trivially map to a condition_t! public: Condition() : set_(0) { /**/mutex_= mutex_alloc(); condition_=condition_alloc(); } ~Condition() { /**/mutex_free( mutex_); condition_free(condition_); } void pulse() { condition_broadcast(condition_); } bool wait() const { mutex_lock ( mutex_); if(!set_) condition_wait(condition_, mutex_); mutex_unlock( mutex_); return 1; // 0 would be interpreted as timeout, which is not supported directly // do we need that? would require some more coding, with another thread } void set() { mutex_lock (mutex_); set_=1; mutex_unlock(mutex_); condition_broadcast(condition_); } private: // nWaiters_ functionality already in Mach C Threads mutex_t mutex_; // every C Threads condition_t needs a mutex_t // but also see set_ below condition_t condition_; // can't have struct and struct mutex because of the const in wait() // (can/should this const-ness be revised?) bool set_; // born as false, does a single transition to true, then dies // therefore, no mutex (with its overhead) seems required, right? // wrong: // consumer reads set_ as false // producer sets set_ to true // producer signals condition for the last time // consumer waits, and waits forever // (consumer didn't get last condition because it was not yet waiting) }; #endif /* SP_NO_BLOCK */ #endif /* __MACH__ || __GNU__ */ #ifdef SP_USE_PTHREADS // Support for pthreads on Linux. // Written by Matthias Clasen extern "C" { // for some reason sigset_t is missing here (with glibc 2.0.7); // so we define it manually. // Except for MacOS X, which has introduced it. #if !((defined __APPLE__) && (defined __MACH__)) typedef __sigset_t sigset_t; #endif #include } #define SP_THREAD class Thread { public: Thread(int (*func)(void *), void *arg) { arg_ = new Arg; arg_->func = func; arg_->arg = arg; arg_->exited = 0; pthread_create (&handle_, NULL, start, (void *)arg_); } int wait() { pthread_join(handle_, NULL); if (arg_ && arg_->exited) { int ret = arg_->ret; delete arg_; arg_ = 0; return ret; } // Something's gone wrong. We'll get a leak. return 0; } private: struct Arg { int (*func)(void *); void *arg; int ret; int exited; }; static void *start(void *p) { Arg *arg = (Arg *)p; arg->ret = (*arg->func)(arg->arg); arg->exited = 1; return 0; } pthread_t handle_; Arg *arg_; }; class Mutex { public: class Lock { // Lock serves to automatically unlock Mutex, however control leaves // a block. Don't let any "warning: unused variable `class Mutex::Lock lock'" // mislead you; hopefully your compiler won't optimise this away... public: Lock(Mutex *mp) : mp_(mp) { if (mp_) pthread_mutex_lock (&mp_->cs_); } ~Lock() { if (mp_) pthread_mutex_unlock(&mp_->cs_); } private: Mutex *mp_; }; Mutex() { pthread_mutex_init (&cs_, NULL); } ~Mutex() { pthread_mutex_destroy (&cs_); } friend class Lock; private: pthread_mutex_t cs_; }; // Thread-safe reference counts. class RefCount { public: RefCount() : count_(0) { pthread_mutex_init (&cs_, NULL); } ~RefCount() { pthread_mutex_destroy (&cs_); } void operator++() { pthread_mutex_lock(&cs_); ++count_; pthread_mutex_unlock(&cs_); } bool operator--() { bool ret; pthread_mutex_lock(&cs_); ret=(0!=--count_); pthread_mutex_unlock(&cs_); return ret; // safe iff reference-count semantics are observed } operator unsigned long() const { return count_; } // safe iff reference-count semantics are observed private: long count_; // hmm, () returns unsigned long... pthread_mutex_t cs_; // don't build on top of Mutex class, for efficiency }; #ifndef SP_NO_BLOCK #define SP_CONDITION class Condition { // doesn't trivially map to a condition_t! public: Condition() : set_(0) { pthread_mutex_init(&mutex_, NULL); pthread_cond_init(&condition_, NULL); } ~Condition() { pthread_mutex_destroy(&mutex_); pthread_cond_destroy(&condition_); } void pulse() { pthread_cond_broadcast(&condition_); } bool wait() { pthread_mutex_lock(&mutex_); if (!set_) pthread_cond_wait(&condition_, &mutex_); pthread_mutex_unlock(&mutex_); return 1; // 0 would be interpreted as timeout, which is not supported directly // do we need that? would require some more coding, with another thread } void set() { pthread_mutex_lock(&mutex_); set_=1; pthread_mutex_unlock(&mutex_); pthread_cond_broadcast(&condition_); } private: pthread_mutex_t mutex_; pthread_cond_t condition_; bool set_; }; #endif /* SP_NO_BLOCK */ #endif /* SP_USE_PTHREADS */ #ifndef SP_THREAD class Thread { public: Thread(int (*func)(void *), void *args) : ret_((*func)(args)) { } int wait() { return ret_; } private: int ret_; }; class RefCount { public: RefCount() : count_(0) { } void operator++() { ++count_; } bool operator--() { return --count_ != 0; } operator unsigned long() const { return count_; } private: unsigned long count_; }; class Mutex { public: class Lock { public: Lock(Mutex *) { } }; Mutex() { } }; #endif /* not SP_THREAD */ #ifndef SP_CONDITION class Condition { public: Condition() { } void pulse() { } void set() { } bool wait() const { return 0; } }; #endif /* not SP_CONDITION */ #endif /* not threads_INCLUDED */ openjade-1.3.2/style/0040775000076400007640000000000007572430651012571 5ustar ianianopenjade-1.3.2/style/Collector.cxx0100664000076400007640000001535506713071635015250 0ustar ianian// Copyright (c) 1996 James Clark // See the file copying.txt for copying permission. #include "config.h" #include "Collector.h" #include "macros.h" #include #if 0 #define DEBUG #endif Collector::Collector(size_t maxSize) : freePtr_(&allObjectsList_), currentColor_(Object::someColor), blocks_(0), lastTraced_(0), totalObjects_(0), maxSize_(maxSize) { allObjectsList_.makeHead(); permanentFinalizersList_.makeHead(); } Collector::~Collector() { if (freePtr_ != &allObjectsList_) { for (Object *p = allObjectsList_.next(); p != freePtr_; p = p->next()) { if (!p->hasFinalizer_) break; p->finalize(); } } { for (Object *p = permanentFinalizersList_.next(); p != &permanentFinalizersList_; p = p->next()) { ASSERT(p->hasFinalizer_); p->finalize(); } } while (blocks_) { Block *tem = blocks_; blocks_ = blocks_->next; delete tem; } } void Collector::makeSpace() { unsigned long nLive = collect(); // Ensure that at least one-quarter of the heap is free, but don't allocate fewer // than 512 objects. if (freePtr_ == &allObjectsList_ || totalObjects_ - nLive < (totalObjects_ >> 2) || totalObjects_ < 128) { size_t allocObjs; if (totalObjects_ < 128) allocObjs = 512; else { allocObjs = (totalObjects_ >> 2) - (totalObjects_ - nLive); if (allocObjs < 512) allocObjs = 512; } if (freePtr_ == &allObjectsList_) { blocks_ = new Block(blocks_, allocObjs, maxSize_, freePtr_->prev()); freePtr_ = blocks_->firstObj; } else blocks_ = new Block(blocks_, allocObjs, maxSize_, freePtr_); totalObjects_ += allocObjs; } #ifdef DEBUG check(); #endif } void Collector::check() { size_t n = 0; bool allocated = 1; bool allowFinalizer = 1; for (Object *p = allObjectsList_.next(); p != &allObjectsList_; p = p->next()) { if (p == freePtr_) allocated = 0; else if (allocated) { if (p->color() != currentColor_) abort(); if (allowFinalizer) { if (!p->hasFinalizer_) allowFinalizer = 0; } else if (p->hasFinalizer_) abort(); } if (p->next()->prev() != p) abort(); if (p->prev()->next() != p) abort(); n++; } if (n != totalObjects_) abort(); } // Link block in after follow. Collector::Block::Block(Block *p, size_t n, size_t sz, Object *follow) : next(p) { Object *next = follow->next_; Object *prev = follow; Object *cur = (Object *)::operator new(n * sz); firstObj = follow->next_ = cur; for (size_t i = 0; i < n; i++) { Object *tem = (i == n - 1 ? next : (Object *)((char *)cur + sz)); cur->next_ = tem; cur->prev_ = prev; prev = cur; cur = tem; } next->prev_ = prev; } unsigned long Collector::collect() { Object *oldFreePtr = freePtr_; unsigned long nLive = 0; currentColor_ = (currentColor_ == Object::someColor ? Object::anotherColor : Object::someColor); lastTraced_ = &allObjectsList_; traceStaticRoots(); traceDynamicRoots(); if (lastTraced_ != &allObjectsList_) { Object *scanPtr = allObjectsList_.next(); for (;;) { if (scanPtr->hasSubObjects()) scanPtr->traceSubObjects(*this); nLive++; Object *next = scanPtr->next(); if (scanPtr->hasFinalizer_) scanPtr->moveAfter(&allObjectsList_); if (scanPtr == lastTraced_) { freePtr_ = next; break; } scanPtr = next; } } else freePtr_ = allObjectsList_.next(); lastTraced_ = 0; for (Object *p = freePtr_; p != oldFreePtr; p = p->next()) { if (!p->hasFinalizer_) break; p->finalize(); } #ifdef DEBUG check(); #endif return nLive; } void Collector::makePermanent(Object *obj) { if (!obj->hasSubObjects()) { // Handle the simple case quickly. if (obj->color() != Object::permanentColor) { totalObjects_--; obj->setColor(Object::permanentColor); obj->readOnly_ = 1; if (obj->hasFinalizer_) obj->moveAfter(&permanentFinalizersList_); else { obj->next_->prev_ = obj->prev_; obj->prev_->next_ = obj->next_; } } } else { Object::Color saveColor = currentColor_; currentColor_ = Object::permanentColor; lastTraced_ = &allObjectsList_; trace(obj); if (lastTraced_ != &allObjectsList_) { Object *scanPtr = allObjectsList_.next(); for (;;) { scanPtr->readOnly_ = 1; if (scanPtr->hasSubObjects()) scanPtr->traceSubObjects(*this); totalObjects_--; Object *next = scanPtr->next(); if (scanPtr->hasFinalizer_) scanPtr->moveAfter(&permanentFinalizersList_); else { // unlink from allObjectsList_ scanPtr->next_->prev_ = scanPtr->prev_; scanPtr->prev_->next_ = scanPtr->next_; } if (scanPtr == lastTraced_) break; scanPtr = next; } } lastTraced_ = 0; currentColor_ = saveColor; } } void Collector::makeReadOnly1(Object *obj) { Object::Color saveColor = currentColor_; currentColor_ = (currentColor_ == Object::someColor ? Object::anotherColor : Object::someColor); lastTraced_ = &allObjectsList_; trace(obj); if (lastTraced_ != &allObjectsList_) { Object *scanPtr = allObjectsList_.next(); Object *firstNonFinal = 0; Object *lim; for (;;) { if (scanPtr->hasSubObjects()) scanPtr->traceSubObjects(*this); Object *next = scanPtr->next(); if (scanPtr->hasFinalizer_) scanPtr->moveAfter(&allObjectsList_); else if (!firstNonFinal) firstNonFinal = scanPtr; if (scanPtr == lastTraced_) { lim = next; break; } scanPtr = next; } // We have 1 or more objects to be made read-only in currentColor // Followed by 0 or more objects with finalizers in saveColor // Followed by 0 or more objects without finalizers in saveColor for (scanPtr = allObjectsList_.next(); scanPtr != lim; scanPtr = scanPtr->next()) { scanPtr->readOnly_ = 1; scanPtr->setColor(saveColor); } if (firstNonFinal) { for (; scanPtr != freePtr_ && scanPtr->hasFinalizer_; scanPtr = scanPtr->next()) ; if (scanPtr != lim) { Object *last = lim->prev(); // Move section of list from firstNonFinal up to lastTraced but not including // lim to before scanPtr firstNonFinal->prev()->next_ = last->next(); last->next()->prev_ = firstNonFinal->prev(); firstNonFinal->prev_ = scanPtr->prev(); last->next_ = scanPtr->prev()->next(); firstNonFinal->prev()->next_ = firstNonFinal; last->next()->prev_ = last; } } } lastTraced_ = 0; currentColor_ = saveColor; #ifdef DEBUG check(); #endif } void Collector::traceDynamicRoots() { for (DynamicRoot *p = dynRootList_.next_; p != &dynRootList_; p = p->next_) p->trace(*this); } Collector::DynamicRoot::~DynamicRoot() { unlink(); } void Collector::unallocateObject(void *obj) { ((Object *)obj)->moveAfter(freePtr_); } openjade-1.3.2/style/Collector.h0100664000076400007640000001276606713071635014700 0ustar ianian// Copyright (c) 1996 James Clark // See the file copying.txt for copying permission. #ifndef Collector_INCLUDED #define Collector_INCLUDED 1 #include #include "Boolean.h" // A garbage collector. class Collector { public: struct Block; class Object { friend struct Block; friend class Collector; public: bool readOnly() const { return readOnly_; } bool permanent() const { return color_ == permanentColor; } protected: Object() : readOnly_(0) { } virtual ~Object() { } // If we copy an object, don't copy inappropriate info. Object(const Object &obj) { hasSubObjects_ = obj.hasSubObjects_; } // For objects with subobjects, this must be overriden // to call Collector::trace for each direct subobject. virtual void traceSubObjects(Collector &) const { } private: enum Color { someColor, anotherColor, permanentColor }; Object *next() const { return next_; } Object *prev() const { return prev_; } void makeHead() { prev_ = next_ = this; } Color color() const { return Color(color_); } void setColor(Color color) { color_ = color; } void moveAfter(Object *tail); bool hasSubObjects() const { return hasSubObjects_; } void finalize() { this->~Object(); } private: Object *prev_; Object *next_; char color_; char hasFinalizer_; protected: char hasSubObjects_; char readOnly_; }; class DynamicRoot { public: DynamicRoot(Collector &); virtual ~DynamicRoot(); virtual void trace(Collector &) const { } DynamicRoot(const DynamicRoot &); void operator=(const DynamicRoot &); private: DynamicRoot(); void link(const DynamicRoot *); void unlink(); DynamicRoot *next_; DynamicRoot *prev_; friend class Collector; }; class ObjectDynamicRoot : public DynamicRoot { public: ObjectDynamicRoot(Collector &, Object * = 0); ObjectDynamicRoot &operator=(Object *obj); void trace(Collector &) const; operator Object *() const { return obj_; } private: Object *obj_; }; struct Block { Block(Block *, size_t, size_t, Object *); ~Block(); Block *next; Object *firstObj; }; Collector(size_t maxSize); virtual ~Collector(); void *allocateObject(bool hasFinalizer); // This is called only when the constructor throws an exception. void unallocateObject(void *); void trace(const Object *obj); // Permanent objects must not be altered in such a way that // they contain pointers to non-permanent objects. void makePermanent(Object *); // Returns the number of live objects. unsigned long collect(); void makeReadOnly(Object *); bool objectMaybeLive(Object *); protected: virtual void traceStaticRoots() const { } private: Collector(const Collector &); // undefined void operator=(const Collector &); // undefined Object *freePtr_; Object allObjectsList_; // doubly-linked circular list of all objects Object permanentFinalizersList_; Object *lastTraced_; DynamicRoot dynRootList_; // doubly-linked circular list Object::Color currentColor_; Block *blocks_; unsigned long totalObjects_; size_t maxSize_; void makeSpace(); void traceDynamicRoots(); void check(); void makeReadOnly1(Object *); friend class DynamicRoot; friend class Object; }; inline void Collector::Object::moveAfter(Object *tail) { // unlink from old position next_->prev_ = prev_; prev_->next_ = next_; // link in following tail next_ = tail->next_; tail->next_->prev_ = this; prev_ = tail; tail->next_ = this; } inline void *Collector::allocateObject(bool hasFinalizer) { if (freePtr_ == &allObjectsList_) makeSpace(); Object *tem = freePtr_; freePtr_ = freePtr_->next(); tem->setColor(currentColor_); tem->hasFinalizer_ = hasFinalizer; if (hasFinalizer) tem->moveAfter(&allObjectsList_); return tem; } inline void Collector::trace(const Object *obj) { if (obj && obj->color() != currentColor_ && obj->color() != Object::permanentColor) { ((Object *)obj)->setColor(currentColor_); ((Object *)obj)->moveAfter(lastTraced_); lastTraced_ = (Object *)obj; } } inline void Collector::DynamicRoot::link(const DynamicRoot *root) { DynamicRoot *list = (DynamicRoot *)root; // link in just after list prev_ = list; next_ = list->next_; list->next_->prev_ = this; list->next_ = this; } inline void Collector::DynamicRoot::unlink() { next_->prev_ = prev_; prev_->next_ = next_; } inline Collector::DynamicRoot::DynamicRoot(Collector &c) { link(&c.dynRootList_); } inline Collector::DynamicRoot::DynamicRoot() : next_(this), prev_(this) { } inline Collector::DynamicRoot::DynamicRoot(const DynamicRoot &root) { link(&root); } inline void Collector::DynamicRoot::operator=(const DynamicRoot &root) { unlink(); link(&root); } inline Collector::ObjectDynamicRoot::ObjectDynamicRoot(Collector &c, Object *obj) : Collector::DynamicRoot(c), obj_(obj) { } inline Collector::ObjectDynamicRoot & Collector::ObjectDynamicRoot::operator=(Object *obj) { obj_ = obj; return *this; } inline void Collector::ObjectDynamicRoot::trace(Collector &c) const { c.trace(obj_); } inline Collector::Block::~Block() { ::operator delete(firstObj); } inline bool Collector::objectMaybeLive(Object *obj) { return obj->color() == currentColor_ || obj->color() == Object::permanentColor; } inline void Collector::makeReadOnly(Object *obj) { if (!obj->hasSubObjects()) obj->readOnly_ = 1; else if (!obj->readOnly()) makeReadOnly1(obj); } #endif /* not Collector_INCLUDED */ openjade-1.3.2/style/DssslApp.cxx0100664000076400007640000002525507554622156015057 0ustar ianian// Copyright (c) 1996, 1997 James Clark // See the file copying.txt for copying permission. #include "stylelib.h" #include "DssslApp.h" #include "StorageManager.h" #include "DssslAppMessages.h" #include "StyleEngine.h" #include "sptchar.h" #include "macros.h" #include "LocNode.h" #include "SdNode.h" #include "InputSource.h" #include "jade_version.h" #include "ArcEngine.h" #include "Entity.h" #include "MessageTable.h" #include #include #ifdef SP_HAVE_LOCALE #ifdef SP_HAVE_WCHAR #include #endif #endif #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif DssslApp::DssslApp(int unitsPerInch) : GroveApp("unicode"), unitsPerInch_(unitsPerInch), dssslSpecOption_(0), debugMode_(0), dsssl2_(0), strictMode_(0) { registerOption('G'); registerOption('2'); registerOption('d', SP_T("dsssl_spec")); registerOption('V', SP_T("variable[=value]")); registerOption('s'); } int DssslApp::init(int argc, AppChar **argv) { int ret = GroveApp::init(argc, argv); #ifdef SP_HAVE_LOCALE #ifdef SP_HAVE_WCHAR // Since we use strtod(), must have C numeric setlocale(LC_NUMERIC, "C"); #endif #endif MessageTable::instance()->registerMessageDomain(jstyleModule, OPENJADE_MESSAGE_DOMAIN, OPENJADE_LOCALE_DIR); return ret; } int DssslApp::processSysid(const StringC &sysid) { rootSystemId_ = sysid; ParsedSystemId v; if (!entityManager()->parseSystemId(sysid, systemCharset(), 0, 0, *this, v)) return 0; for (size_t i = v.size(); i > 0; i--) if (v[i - 1].storageManager->inheritable()) { ParsedSystemId specId; specId.resize(1); StorageObjectSpec &spec = specId[0]; spec = v[i - 1]; StringC &s = spec.specId; // replace an up to 5 character extension with .dsl for (size_t j = 0; j < 5; j++) { if (s.size() < j + 1) break; if (s[s.size() - j - 1] == '.') { s.resize(s.size() - j - 1); break; } } if (strcmp(v[i - 1].storageManager->type(), "OSFILE") == 0) defaultOutputBasename_ = s; if (!dssslSpecOption_) { static const Char ext[] = { '.', 'd', 's', 'l' }; s.append(ext, SIZEOF(ext)); specId.unparse(systemCharset(), 0, dssslSpecSysid_); } break; } return GroveApp::processSysid(sysid); } void DssslApp::processOption(AppChar opt, const AppChar *arg) { switch (opt) { case 'G': debugMode_ = 1; break; case '2': dsssl2_ = 1; break; case 'd': dssslSpecId_.resize(0); dssslSpecSysid_ = convertInput(arg); dssslSpecOption_ = 1; splitOffId(dssslSpecSysid_, dssslSpecId_); break; case 'V': defineVars_.push_back(convertInput(arg)); break; case 's': strictMode_ = 1; break; case 'v': message(DssslAppMessages::versionInfo, StringMessageArg(convertInput(SP_T(OPENJADE_PACKAGE))), StringMessageArg(convertInput(SP_T(OPENJADE_VERSION)))); // fall through default: GroveApp::processOption(opt, arg); } } void DssslApp::splitOffId(StringC &sysid, StringC &id) { id.resize(0); for (size_t i = sysid.size(); i > 0; i--) { if (sysid[i - 1] == '#') { id.assign(sysid.data() + i, sysid.size() - i); sysid.resize(i - 1); break; } } } int DssslApp::generateEvents(ErrorCountEventHandler *eceh) { groveTable_.insert(rootSystemId_, rootNode_); // Since the thread parsing the DSSSL spec is a different thread // from the thread parsing the document, we can't share an // entity manager. // The document parser has already been inited and so will // use the current entity manager. // The spec parser hasn't yet been inited and so will use // a new entity manager. // The parser thread is started in GroveApp::generateEvents // which hasn't happened yet. clearEntityManager(); return GroveApp::generateEvents(eceh); } Boolean DssslApp::getDssslSpecFromGrove() { NodeListPtr nl; if (rootNode_->getProlog(nl) != accessOK) return 0; for (;;) { NodePtr nd; if (nl->first(nd) != accessOK) break; GroveString pi; if (nd->getSystemData(pi) == accessOK) { Location loc; const LocNode *lnd = LocNode::convert(nd); if (lnd) lnd->getLocation(loc); if (getDssslSpecFromPi(pi.data(), pi.size(), loc)) return 1; } if (nl.assignRest() != accessOK) break; } return 0; } Boolean DssslApp::getDssslSpecFromPi(const Char *s, size_t n, const Location &loc) { static struct { const char *key; Boolean (DssslApp::*handler)(const Char *s, size_t, const Location &); } pis[] = { { "xml-stylesheet", &DssslApp::handleAttlistPi }, { "xml:stylesheet", &DssslApp::handleAttlistPi }, { "stylesheet", &DssslApp::handleAttlistPi }, { "dsssl", &DssslApp::handleSimplePi }, }; for (size_t i = 0; i < SIZEOF(pis); i++) { size_t len = strlen(pis[i].key); if (n >= len && matchCi(s, len, pis[i].key) && (n == len || isS(s[len]))) { s += len; n -= len; return (this->*pis[i].handler)(s, n, loc); } } return 0; } Boolean DssslApp::handleSimplePi(const Char *s, size_t n, const Location &loc) { skipS(s, n); if (n == 0) return 0; StringC sysid(s, n); splitOffId(sysid, dssslSpecId_); return entityManager()->expandSystemId(sysid, loc, 0, systemCharset(), 0, *this, dssslSpecSysid_); } Boolean DssslApp::handleAttlistPi(const Char *s, size_t n, const Location &loc) { // FIXME maybe give warnings if syntax is wrong Boolean hadHref = 0; StringC href; Boolean isDsssl = 0; StringC name; StringC value; while (getAttribute(s, n, name, value)) { if (matchCi(name, "type")) { static const char *types[] = { "text/dsssl", "text/x-dsssl", "application/dsssl", "application/x-dsssl" }; for (size_t i = 0; i < SIZEOF(types); i++) if (matchCi(value, types[i])) { isDsssl = 1; break; } if (!isDsssl) return 0; } else if (matchCi(name, "href")) { hadHref = 1; value.swap(href); } } if (!isDsssl || !hadHref) return 0; splitOffId(href, dssslSpecId_); // FIXME should use location of attribute value rather than location of PI return entityManager()->expandSystemId(href, loc, 0, systemCharset(), 0, *this, dssslSpecSysid_); } void DssslApp::skipS(const Char *&s, size_t &n) { while (n > 0 && isS(*s)) s++, n--; } Boolean DssslApp::isS(Char c) { return c <= CHAR_MAX && isspace((unsigned char)c); } Boolean DssslApp::matchCi(const StringC &s, const char *key) { return matchCi(s.data(), s.size(), key); } Boolean DssslApp::matchCi(const Char *s, size_t n, const char *key) { for (; *key; key++, s++, n--) { if (!n) return 0; if (*s != tolower(*key) && *s != toupper(*key)) return 0; } return n == 0; } Boolean DssslApp::getAttribute(const Char *&s, size_t &n, StringC &name, StringC &value) { name.resize(0); value.resize(0); skipS(s, n); for (;;) { if (n == 0) return 0; if (*s == '=' || isS(*s)) break; name += *s; s++, n--; } skipS(s, n); if (n == 0 || *s != '=') return 0; s++, n--; skipS(s, n); Char quote = 0; if (n > 0 && (*s == '"' || *s == '\'')) { quote = *s; s++, n--; } for (;;) { if (n == 0) { if (quote) return 0; break; } if (quote) { if (*s == quote) { s++, n--; break; } } else if (isS(*s)) break; value += *s; s++, n--; } // FIXME resolve numeric character references return 1; } Boolean DssslApp::initSpecParser() { if (!dssslSpecOption_ && !getDssslSpecFromGrove() && dssslSpecSysid_.size() == 0) { message(DssslAppMessages::noSpec); return 0; } SgmlParser::Params params; params.sysid = dssslSpecSysid_; params.entityManager = entityManager().pointer(); params.options = &options_; specParser_.init(params); specParser_.allLinkTypesActivated(); return 1; } void DssslApp::processGrove() { if (!initSpecParser()) return; const FOTBuilder::Extension *extensions = 0; Owner fotb(makeFOTBuilder(extensions)); if (!fotb) return; StyleEngine se(*this, *this, unitsPerInch_, debugMode_, dsssl2_, strictMode_, extensions); for (size_t i = 0; i < defineVars_.size(); i++) se.defineVariable(defineVars_[i]); se.parseSpec(specParser_, systemCharset(), dssslSpecId_, *this); se.process(rootNode_, *fotb); } bool DssslApp::load(const StringC &sysid, const Vector &active, const NodePtr &parent, NodePtr &rootNode, const Vector &architecture) { SgmlParser::Params params; params.sysid = sysid; const NodePtr *ndp = groveTable_.lookup(params.sysid); if (ndp) { rootNode = *ndp; return 1; } ErrorCountEventHandler *eceh; const SdNode *sdNode; NodePtr parentRoot; if (parent && parent->getGroveRoot(parentRoot) == accessOK && (sdNode = SdNode::convert(parentRoot)) != 0 && sdNode->getSd(params.sd, params.prologSyntax, params.instanceSyntax) == accessOK) { params.entityType = SgmlParser::Params::subdoc; eceh = GroveBuilder::make(groveTable_.count() + 1, this, this, 0, params.sd, params.prologSyntax, params.instanceSyntax, rootNode); } else eceh = GroveBuilder::make(groveTable_.count() + 1, this, this, 0, rootNode); Owner eh(eceh); groveTable_.insert(params.sysid, rootNode); params.entityManager = entityManager().pointer(); params.options = &options_; SgmlParser parser; parser.init(params); for (size_t i = 0; i < active.size(); i++) parser.activateLinkType(active[i]); parser.allLinkTypesActivated(); if (architecture.size() > 0) { SelectOneArcDirector director(architecture, *eh); ArcEngine::parseAll(parser, director, director, eceh->cancelPtr()); } else parser.parseAll(*eh, eceh->cancelPtr()); return 1; } void DssslApp::mapSysid(StringC &sysid) { // map a sysid according to SYSTEM catalog entries. ConstPtr catalog(entityManager()->makeCatalog(sysid, systemCharset(), *this)); Text txt; Location loc; txt.addChars(sysid, loc); ExternalId extid; extid.setSystem(txt); StringC name; ExternalTextEntity ent(name, EntityDecl::generalEntity, loc, extid); catalog->lookup(ent, *(parser().instanceSyntax()), systemCharset(), *this, sysid); } bool DssslApp::readEntity(const StringC &sysid, StringC &contents) { Owner in(entityManager()->open(sysid, systemCharset(), InputSourceOrigin::make(), 0, *this)); if (!in) return 0; for (;;) { Xchar c = in->get(*this); if (c == InputSource::eE) break; in->extendToBufferEnd(); contents.append(in->currentTokenStart(), in->currentTokenLength()); } return !in->accessError(); } #ifdef DSSSL_NAMESPACE } #endif openjade-1.3.2/style/DssslApp.h0100664000076400007640000000375706736256320014504 0ustar ianian// Copyright (c) 1996, 1997 James Clark // See the file copying.txt for copying permission. #ifndef DssslApp_INCLUDED #define DssslApp_INCLUDED 1 #include "GroveApp.h" #include "FOTBuilder.h" #include "GroveManager.h" #include "dsssl_ns.h" #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif class STYLE_API DssslApp : public GroveApp, public GroveManager { public: DssslApp(int unitsPerInch); virtual FOTBuilder *makeFOTBuilder(const FOTBuilder::Extension *&) = 0; int processSysid(const StringC &); bool load(const StringC &sysid, const Vector &active, const NodePtr &parent, NodePtr &rootNode, const Vector &architecture); bool readEntity(const StringC &, StringC &); void mapSysid(StringC &); protected: void processOption(AppChar opt, const AppChar *arg); int init(int argc, AppChar **argv); int unitsPerInch_; StringC defaultOutputBasename_; private: void processGrove(); int generateEvents(ErrorCountEventHandler *eceh); Boolean getDssslSpecFromGrove(); Boolean getDssslSpecFromPi(const Char *s, size_t n, const Location &loc); static void splitOffId(StringC &, StringC &); Boolean handleSimplePi(const Char *, size_t, const Location &); Boolean handleAttlistPi(const Char *, size_t, const Location &); static void skipS(const Char *&s, size_t &n); static Boolean isS(Char c); static Boolean matchCi(const StringC &s, const char *key); static Boolean matchCi(const Char *s, size_t n, const char *key); static Boolean getAttribute(const Char *&s, size_t &n, StringC &name, StringC &value); Boolean initSpecParser(); Boolean dssslSpecOption_; StringC dssslSpecSysid_; // system ID of doc StringC dssslSpecId_; // unique ID in doc // Variables to be defined as true Vector defineVars_; SgmlParser specParser_; HashTable groveTable_; StringC rootSystemId_; bool debugMode_; bool dsssl2_; bool strictMode_; }; #ifdef DSSSL_NAMESPACE } #endif #endif /* not DssslApp_INCLUDED */ openjade-1.3.2/style/DssslAppMessages.msg0100664000076400007640000000025207554622156016521 0ustar ianian# Copyright (c) 1996 James Clark # See the file COPYING for copying permission =2000 I2+versionInfo++%1 version %2 E0+noSpec++no DSSSL specification: use -d to specify openjade-1.3.2/style/DssslSpecEventHandler.cxx0100664000076400007640000004157407554622156017533 0ustar ianian// Copyright (c) 1996 James Clark // See the file copying.txt for copying permission. #include "stylelib.h" #include "DssslSpecEventHandler.h" #include "InterpreterMessages.h" #include "InternalInputSource.h" #include "FOTBuilder.h" #include "macros.h" #include "Node.h" #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif // FIXME Stop parsing spec when we know we don't we have everything we ever need class TextInputSourceOrigin : public InputSourceOrigin { public: TextInputSourceOrigin(Text &text); Boolean defLocation(Offset off, const Origin *&, Index &) const; const Text &text() const { return text_; } void noteCharRef(Index, const NamedCharRef &); void setExternalInfo(ExternalInfo *); InputSourceOrigin *copy() const; const Location &parent() const; private: Text text_; Location refLocation_; }; DssslSpecEventHandler::DssslSpecEventHandler(Messenger &mgr) : mgr_(&mgr), gatheringBody_(0), currentPart_(0), currentDoc_(0), currentDecl_(0) { } void DssslSpecEventHandler::load(SgmlParser &specParser, const CharsetInfo &charset, const StringC &id, Vector &parts) { parser_ = &specParser; charset_ = &charset; Doc *doc = findDoc(StringC()); // Load it now so that we can get the concrete syntax. doc->load(*this); Part *tem; if (id.size() == 0) tem = doc->resolveFirstPart(*this); else { StringC normId(id); ConstPtr syn = parser_->instanceSyntax(); if (!syn.isNull()) syn->generalSubstTable()->subst(normId); tem = doc->refPart(normId)->resolve(*this); } resolveParts(tem, parts); } DssslSpecEventHandler::Doc *DssslSpecEventHandler::findDoc(const StringC &sysid) { for (IListIter iter(docs_); !iter.done(); iter.next()) if (sysid == iter.cur()->sysid()) return iter.cur(); Doc *doc = new Doc(sysid); docs_.insert(doc); return doc; } void DssslSpecEventHandler::resolveParts(Part *part, Vector &parts) { if (!part) return; parts.push_back(part); if (part->setMark()) { mgr_->message(InterpreterMessages::useLoop); return; } const Vector &use = part->use(); for (size_t i = 0; i < use.size(); i++) { Part *tem = use[i]->resolve(*this); resolveParts(tem, parts); } part->setMark(0); } void DssslSpecEventHandler::loadDoc(SgmlParser &parser, Doc &doc) { currentDoc_ = &doc; gotArc_ = 0; ArcEngine::parseAll(parser, *mgr_, *this, cancelPtr()); if (!gotArc_) { mgr_->message(InterpreterMessages::specNotArc); return; } } EventHandler * DssslSpecEventHandler::arcEventHandler(const StringC *arcPublicId, const Notation *notation, const Vector &, const SubstTable *) { if (!notation) return 0; const StringC *pubid = notation->externalId().publicIdString(); static const char dssslArc[] = "ISO/IEC 10179:1996//NOTATION DSSSL Architecture Definition Document//EN"; if (pubid == 0 || pubid->size() != sizeof(dssslArc) - 1) return 0; for (int i = 0; dssslArc[i] != '\0'; i++) { if (dssslArc[i] != (*pubid)[i]) return 0; } gotArc_ = 1; return this; } void DssslSpecEventHandler::message(MessageEvent *event) { mgr_->dispatchMessage(event->message()); delete event; } static struct { const char *gi; void (DssslSpecEventHandler::*start)(const StartElementEvent &); void (DssslSpecEventHandler::*end)(const EndElementEvent &); } mappingTable[] = { { "STYLE-SPECIFICATION", &DssslSpecEventHandler::styleSpecificationStart, &DssslSpecEventHandler::styleSpecificationEnd }, { "STYLE-SPECIFICATION-BODY", &DssslSpecEventHandler::styleSpecificationBodyStart, &DssslSpecEventHandler::styleSpecificationBodyEnd }, { "EXTERNAL-SPECIFICATION", &DssslSpecEventHandler::externalSpecificationStart, &DssslSpecEventHandler::externalSpecificationEnd }, { "FEATURES", &DssslSpecEventHandler::declarationStart, &DssslSpecEventHandler::declarationEnd }, { "BASESET-ENCODING", &DssslSpecEventHandler::declarationStart, &DssslSpecEventHandler::declarationEnd }, { "LITERAL-DESCRIBED-CHAR", &DssslSpecEventHandler::declarationStart, &DssslSpecEventHandler::declarationEnd }, { "ADD-NAME-CHARS", &DssslSpecEventHandler::declarationStart, &DssslSpecEventHandler::declarationEnd }, { "ADD-SEPARATOR-CHARS", &DssslSpecEventHandler::declarationStart, &DssslSpecEventHandler::declarationEnd }, { "STANDARD-CHARS", &DssslSpecEventHandler::declarationStart, &DssslSpecEventHandler::declarationEnd }, { "OTHER-CHARS", &DssslSpecEventHandler::declarationStart, &DssslSpecEventHandler::declarationEnd }, { "COMBINE-CHAR", &DssslSpecEventHandler::declarationStart, &DssslSpecEventHandler::declarationEnd }, { "MAP-SDATA-ENTITY", &DssslSpecEventHandler::declarationStart, &DssslSpecEventHandler::declarationEnd }, { "CHAR-REPERTOIRE", &DssslSpecEventHandler::declarationStart, &DssslSpecEventHandler::declarationEnd }, { "SGML-GROVE-PLAN", &DssslSpecEventHandler::declarationStart, &DssslSpecEventHandler::declarationEnd }, }; void DssslSpecEventHandler::endProlog(EndPrologEvent *event) { currentDoc_->setLocation(event->location()); delete event; } void DssslSpecEventHandler::startElement(StartElementEvent *event) { for (size_t i = 0; i < SIZEOF(mappingTable); i++) if (event->name() == mappingTable[i].gi) { (this->*(mappingTable[i].start))(*event); break; } delete event; } void DssslSpecEventHandler::endElement(EndElementEvent *event) { for (size_t i = 0; i < SIZEOF(mappingTable); i++) if (event->name() == mappingTable[i].gi) { (this->*(mappingTable[i].end))(*event); break; } delete event; } void DssslSpecEventHandler::data(DataEvent *event) { if (gatheringBody_) currentBody_.addChars(event->data(), event->dataLength(), event->location()); delete event; } const Text * DssslSpecEventHandler::attributeText(const StartElementEvent &event, const char *attName) { const AttributeList &atts = event.attributes(); StringC attNameString; for (const char *p = attName; *p; p++) attNameString += Char(*p); unsigned index; if (atts.attributeIndex(attNameString, index)) { const AttributeValue *val = atts.value(index); if (val) return val->text(); } return 0; } const StringC * DssslSpecEventHandler::attributeString(const StartElementEvent &event, const char *attName) { const Text *text = attributeText(event, attName); if (text) return &text->string(); else return 0; } ConstPtr DssslSpecEventHandler::attributeEntity(const StartElementEvent &event, const char *attName) { const AttributeList &atts = event.attributes(); StringC attNameString; for (const char *p = attName; *p; p++) attNameString += Char(*p); unsigned index; if (!atts.attributeIndex(attNameString, index)) return 0; const AttributeSemantics *sem = atts.semantics(index); if (!sem || sem->nEntities() != 1) return 0; return sem->entity(0); } void DssslSpecEventHandler::externalSpecificationStart(const StartElementEvent &event) { StringC empty; const StringC *idP = attributeString(event, "ID"); if (!idP) idP = ∅ PartHeader *header = currentDoc_->refPart(*idP); const Entity *ent = attributeEntity(event, "DOCUMENT").pointer(); if (!ent) return; const ExternalEntity *ext = ent->asExternalEntity(); if (!ext) return; const StringC &sysid = ext->externalId().effectiveSystemId(); if (sysid.size()) { Doc *doc = findDoc(sysid); const StringC *specidP = attributeString(event, "SPECID"); if (!specidP) header->setPart(new ExternalFirstPart(doc)); else header->setPart(new ExternalPart(doc->refPart(*specidP, event.location()))); } } void DssslSpecEventHandler::externalSpecificationEnd(const EndElementEvent &) { // nothing to do } void DssslSpecEventHandler::styleSpecificationStart(const StartElementEvent &event) { StringC empty; const StringC *idP = attributeString(event, "ID"); if (!idP) idP = ∅ PartHeader *header = currentDoc_->refPart(*idP); // FIXME give an error (or ignore) if header has part already const Text *useP = attributeText(event, "USE"); header->setPart(currentPart_ = new Part(currentDoc_)); if (useP) { const StringC &use = useP->string(); size_t i = 0; for (;;) { size_t j; for (j = i; j < use.size() && use[j] != ' '; j++) ; if (j > i) currentPart_->addUse(currentDoc_->refPart(StringC(use.data() + i, j - i), useP->charLocation(i))); if (j >= use.size()) break; i = j + 1; } } // FIXME Give warning if selected part is incomplete } void DssslSpecEventHandler::styleSpecificationEnd(const EndElementEvent &event) { currentPart_ = 0; } void DssslSpecEventHandler::styleSpecificationBodyStart(const StartElementEvent &event) { if (currentPart_) { currentBody_.clear(); ConstPtr entity = attributeEntity(event, "CONTENT"); if (entity.isNull()) gatheringBody_ = 1; else currentPart_->append(new EntityBodyElement(entity)); } } void DssslSpecEventHandler::styleSpecificationBodyEnd(const EndElementEvent &event) { if (gatheringBody_) { if (currentPart_) currentPart_->append(new ImmediateBodyElement(currentBody_)); gatheringBody_ = 0; } } void DssslSpecEventHandler::declarationStart(const StartElementEvent &event) { if (currentPart_ || currentDoc_) { currentBody_.clear(); gatheringBody_ = 1; DssslSpecEventHandler::DeclarationElement::Type type; if (event.name() == "FEATURES") type = DssslSpecEventHandler::DeclarationElement::features; else if (event.name() == "BASESET-ENCODING") type = DssslSpecEventHandler::DeclarationElement::basesetEncoding; else if (event.name() == "LITERAL-DESCRIBED-CHAR") type = DssslSpecEventHandler::DeclarationElement::literalDescribedChar; else if (event.name() == "ADD-NAME-CHARS") type = DssslSpecEventHandler::DeclarationElement::addNameChars; else if (event.name() == "ADD-SEPARATOR-CHARS") type = DssslSpecEventHandler::DeclarationElement::addSeparatorChars; else if (event.name() == "STANDARD-CHARS") type = DssslSpecEventHandler::DeclarationElement::standardChars; else if (event.name() == "OTHER-CHARS") type = DssslSpecEventHandler::DeclarationElement::otherChars; else if (event.name() == "COMBINE-CHAR") type = DssslSpecEventHandler::DeclarationElement::combineChar; else if (event.name() == "MAP-SDATA-ENTITY") type = DssslSpecEventHandler::DeclarationElement::mapSdataEntity; else if (event.name() == "CHAR-REPERTOIRE") type = DssslSpecEventHandler::DeclarationElement::charRepertoire; else if (event.name() == "SGML-GROVE-PLAN") type = DssslSpecEventHandler::DeclarationElement::sgmlGrovePlan; currentDecl_ = new DeclarationElement(type); const StringC *str; if (str = attributeString(event, "NAME")) currentDecl_->setName(*str); if (str = attributeString(event, "TEXT")) currentDecl_->setText(*str); if (str = attributeString(event, "MODADD")) currentDecl_->setModadd(*str); if (str = attributeString(event, "DESC")) currentDecl_->setDesc(*str); } } void DssslSpecEventHandler::declarationEnd(const EndElementEvent &event) { if (gatheringBody_ && currentDecl_) { currentDecl_->setContent(currentBody_); if (currentPart_) currentPart_->append(currentDecl_); else currentDoc_->append(currentDecl_); gatheringBody_ = 0; currentDecl_ = 0; } } TextInputSourceOrigin::TextInputSourceOrigin(Text &text) { text_.swap(text); } Boolean TextInputSourceOrigin::defLocation(Offset off, const Origin *&origin, Index &index) const { return text_.charLocation(off, origin, index); } void TextInputSourceOrigin::noteCharRef(Index, const NamedCharRef &) { CANNOT_HAPPEN(); } void TextInputSourceOrigin::setExternalInfo(ExternalInfo *) { CANNOT_HAPPEN(); } InputSourceOrigin *TextInputSourceOrigin::copy() const { return new TextInputSourceOrigin(*this); } const Location &TextInputSourceOrigin::parent() const { return refLocation_; } DssslSpecEventHandler::Doc::Doc() : loaded_(0) { } DssslSpecEventHandler::Doc::Doc(const StringC &sysid) : sysid_(sysid), loaded_(0) { } void DssslSpecEventHandler::Doc::setLocation(const Location &loc) { loc_ = loc; } DssslSpecEventHandler::Part * DssslSpecEventHandler::Doc::resolveFirstPart(DssslSpecEventHandler &eh) { load(eh); PartHeader *header = 0; for (IListIter iter(headers_); !iter.done(); iter.next()) header = iter.cur(); if (!header) { if (!loc_.origin().isNull()) { eh.mgr_->setNextLocation(loc_); eh.mgr_->message(InterpreterMessages::noParts); } return 0; } return header->resolve(eh); } void DssslSpecEventHandler::Doc::load(DssslSpecEventHandler &eh) { if (loaded_) return; loaded_ = 1; if (sysid_.size() > 0) { SgmlParser::Params params; params.parent = eh.parser_; params.sysid = sysid_; SgmlParser specParser(params); eh.loadDoc(specParser, *this); } else eh.loadDoc(*eh.parser_, *this); } DssslSpecEventHandler::PartHeader * DssslSpecEventHandler::Doc::refPart(const StringC &id) { for (IListIter iter(headers_); !iter.done(); iter.next()) if (iter.cur()->id() == id) return iter.cur(); PartHeader *header = new PartHeader(this, id); headers_.insert(header); return header; } DssslSpecEventHandler::PartHeader * DssslSpecEventHandler::Doc::refPart(const StringC &id, const Location &refLoc) { PartHeader *header = refPart(id); header->setRefLoc(refLoc); return header; } void DssslSpecEventHandler::Doc::append(DeclarationElement *decl) { declarations_.append(decl); } DssslSpecEventHandler::BodyElement::~BodyElement() { } DssslSpecEventHandler::ImmediateBodyElement::ImmediateBodyElement(Text &text) { text_.swap(text); } void DssslSpecEventHandler ::ImmediateBodyElement::makeInputSource(DssslSpecEventHandler &, Owner &in) { TextInputSourceOrigin *origin = new TextInputSourceOrigin(text_); in = new InternalInputSource(origin->text().string(), origin); } DssslSpecEventHandler::DeclarationElement::DeclarationElement(Type type) : type_(type) { } void DssslSpecEventHandler ::DeclarationElement::setContent(Text &content) { content_.swap(content); } void DssslSpecEventHandler ::DeclarationElement::makeInputSource(DssslSpecEventHandler &, Owner &in) { TextInputSourceOrigin *origin = new TextInputSourceOrigin(content_); in = new InternalInputSource(origin->text().string(), origin); } DssslSpecEventHandler::DeclarationElement::Type DssslSpecEventHandler::DeclarationElement::type() const { return type_; } DssslSpecEventHandler ::EntityBodyElement::EntityBodyElement(const ConstPtr &entity) : entity_(entity) { } void DssslSpecEventHandler ::EntityBodyElement::makeInputSource(DssslSpecEventHandler &eh, Owner &in) { const InternalEntity *internal = entity_->asInternalEntity(); if (internal) { in = new InternalInputSource(internal->string(), EntityOrigin::make(entity_, Location())); return; } const StringC &sysid = entity_->asExternalEntity()->externalId().effectiveSystemId(); if (sysid.size()) in = eh.parser_->entityManager().open(sysid, *eh.charset_, InputSourceOrigin::make(), 0, *eh.mgr_); } DssslSpecEventHandler::PartHeader::PartHeader(Doc *doc, const StringC &id) : doc_(doc), id_(id) { } void DssslSpecEventHandler::PartHeader::setRefLoc(const Location &loc) { if (refLoc_.origin().isNull()) refLoc_ = loc; } DssslSpecEventHandler::Part * DssslSpecEventHandler::PartHeader::resolve(DssslSpecEventHandler &eh) { doc_->load(eh); if (!specPart_) { eh.mgr_->setNextLocation(refLoc_); eh.mgr_->message(InterpreterMessages::missingPart, StringMessageArg(id_)); return 0; } return specPart_->resolve(eh); } DssslSpecEventHandler::SpecPart::~SpecPart() { } DssslSpecEventHandler::ExternalPart::ExternalPart(PartHeader *header) : header_(header) { } DssslSpecEventHandler::Part * DssslSpecEventHandler::ExternalPart::resolve(DssslSpecEventHandler &eh) { return header_->resolve(eh); } DssslSpecEventHandler::ExternalFirstPart::ExternalFirstPart(Doc *doc) : doc_(doc) { } DssslSpecEventHandler::Part * DssslSpecEventHandler::ExternalFirstPart::resolve(DssslSpecEventHandler &eh) { return doc_->resolveFirstPart(eh); } DssslSpecEventHandler::Part::Part(Doc *doc) : mark_(0), doc_(doc) { } DssslSpecEventHandler::Part * DssslSpecEventHandler::Part::resolve(DssslSpecEventHandler &) { return this; } void DssslSpecEventHandler::Part::append(BodyElement *element) { bodyElements_.append(element); } void DssslSpecEventHandler::Part::append(DeclarationElement *element) { declarations_.append(element); } DssslSpecEventHandler::Doc *DssslSpecEventHandler::Part::doc() { return doc_; } #ifdef DSSSL_NAMESPACE } #endif openjade-1.3.2/style/DssslSpecEventHandler.h0100664000076400007640000001531407554622156017151 0ustar ianian// Copyright (c) 1996 James Clark // See the file copying.txt for copying permission. #ifndef DssslSpecEventHandler_INCLUDED #define DssslSpecEventHandler_INCLUDED 1 #include "ErrorCountEventHandler.h" #include "ArcEngine.h" #include "Message.h" #include "Text.h" #include "Owner.h" #include "Boolean.h" #include "InputSource.h" #include "Vector.h" #include "NCVector.h" #include "IList.h" #include "IListIter.h" #include "StringC.h" #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif class DssslSpecEventHandler : private ErrorCountEventHandler, private ArcDirector { public: class BodyElement : public Link { public: virtual ~BodyElement(); virtual void makeInputSource(DssslSpecEventHandler &, Owner &) = 0; }; class ImmediateBodyElement : public BodyElement { public: ImmediateBodyElement(Text &); void makeInputSource(DssslSpecEventHandler &, Owner &); private: Text text_; }; class EntityBodyElement : public BodyElement { public: EntityBodyElement(const ConstPtr &); void makeInputSource(DssslSpecEventHandler &, Owner &); private: ConstPtr entity_; }; class SpecPart; class Doc; class Part; class MapSdataEntityElement; class DeclarationElement : public Link { public: enum Type { features, basesetEncoding, literalDescribedChar, addNameChars, addSeparatorChars, standardChars, otherChars, combineChar, mapSdataEntity, charRepertoire, sgmlGrovePlan, }; DeclarationElement(Type); void makeInputSource(DssslSpecEventHandler&, Owner&); Type type() const; void setContent(Text &); void setName(const StringC &s) { name_ = s; }; const StringC &name() { return name_; }; void setText(const StringC &s) { text_ = s; }; const StringC &text() { return text_; }; void setModadd(const StringC &s) { modadd_ = s; }; const StringC &modadd() { return modadd_; }; void setDesc(const StringC &s) { desc_ = s; }; const StringC &desc() { return desc_; }; private: Type type_; Text content_; StringC name_; StringC text_; StringC modadd_; StringC desc_; }; class PartHeader : public Link { public: PartHeader(Doc *, const StringC &id); const StringC &id() const; Part *resolve(DssslSpecEventHandler &); void setPart(SpecPart *); void setRefLoc(const Location &); private: Doc *doc_; StringC id_; // Location of first reference Location refLoc_; Owner specPart_; }; class SpecPart { public: virtual ~SpecPart(); virtual Part *resolve(DssslSpecEventHandler &) = 0; }; class ExternalPart : public SpecPart { public: ExternalPart(PartHeader *); Part *resolve(DssslSpecEventHandler &); private: PartHeader *header_; }; class ExternalFirstPart : public SpecPart { public: ExternalFirstPart(Doc *); Part *resolve(DssslSpecEventHandler &); private: Doc *doc_; }; class Part : public SpecPart { public: typedef IListIter Iter; typedef IListIter DIter; Part(Doc *); Iter iter(); DIter diter(); Doc *doc(); const Vector &use() const; void addUse(PartHeader *); void append(BodyElement *); void append(DeclarationElement *); bool setMark(bool = 1); private: Part *resolve(DssslSpecEventHandler &); IList declarations_; IList bodyElements_; Vector use_; bool mark_; Doc *doc_; }; class Doc : public Link { public: Doc(); Doc(const StringC &sysid); void setLocation(const Location &); PartHeader *refPart(const StringC &); PartHeader *refPart(const StringC &, const Location &refLoc); Part *resolveFirstPart(DssslSpecEventHandler &); Part::DIter diter(); void load(DssslSpecEventHandler &); void append(DeclarationElement *); const StringC &sysid() const; private: bool loaded_; StringC sysid_; IList declarations_; IList headers_; Location loc_; friend class Part; }; DssslSpecEventHandler(Messenger &); void load(SgmlParser &specParser, const CharsetInfo &, const StringC &id, Vector &parts); void externalSpecificationStart(const StartElementEvent &); void externalSpecificationEnd(const EndElementEvent &); void styleSpecificationStart(const StartElementEvent &); void styleSpecificationEnd(const EndElementEvent &); void styleSpecificationBodyStart(const StartElementEvent &); void styleSpecificationBodyEnd(const EndElementEvent &); void declarationStart(const StartElementEvent &); void declarationEnd(const EndElementEvent &); private: Vector &parts(); void startElement(StartElementEvent *); void endElement(EndElementEvent *); void data(DataEvent *); void message(MessageEvent *); void endProlog(EndPrologEvent *); EventHandler *arcEventHandler(const StringC *, const Notation *, const Vector &, const SubstTable *); void loadDoc(SgmlParser &, Doc &); void resolveParts(Part *, Vector &); Doc *findDoc(const StringC &); const StringC *attributeString(const StartElementEvent &, const char *); const Text *attributeText(const StartElementEvent &, const char *); ConstPtr attributeEntity(const StartElementEvent &, const char *); Messenger *mgr_; bool gotArc_; bool gatheringBody_; Part *currentPart_; Text currentBody_; Doc *currentDoc_; IList docs_; SgmlParser *parser_; const CharsetInfo *charset_; DeclarationElement *currentDecl_; friend class Doc; friend class EntityBodyElement; friend class PartHeader; }; inline const StringC &DssslSpecEventHandler::PartHeader::id() const { return id_; } inline void DssslSpecEventHandler::PartHeader::setPart(SpecPart *part) { specPart_ = part; } inline void DssslSpecEventHandler::Part::addUse(PartHeader *header) { use_.push_back(header); } inline const Vector & DssslSpecEventHandler::Part::use() const { return use_; } inline const StringC &DssslSpecEventHandler::Doc::sysid() const { return sysid_; } inline DssslSpecEventHandler::Part::Iter DssslSpecEventHandler::Part::iter() { return Iter(bodyElements_); } inline DssslSpecEventHandler::Part::DIter DssslSpecEventHandler::Part::diter() { return DIter(declarations_); } inline DssslSpecEventHandler::Part::DIter DssslSpecEventHandler::Doc::diter() { return Part::DIter(declarations_); } inline bool DssslSpecEventHandler::Part::setMark(bool b) { bool tem = mark_; mark_ = b; return tem; } #ifdef DSSSL_NAMESPACE } #endif #endif /* not DssslSpecEventHandler_INCLUDED */ openjade-1.3.2/style/ELObj.cxx0100664000076400007640000005731007417604526014255 0ustar ianian// Copyright (c) 1996 James Clark // See the file copying.txt for copying permission. #include "stylelib.h" #include "ELObj.h" #include "Interpreter.h" #include "InterpreterMessages.h" #include "macros.h" #include #include #include #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif class ReverseNodeListObj : public NodeListObj { public: ReverseNodeListObj(NodeListObj *); NodePtr nodeListFirst(EvalContext &, Interpreter &); NodeListObj *nodeListRest(EvalContext &, Interpreter &); NodeListObj *nodeListReverse(EvalContext &context, Interpreter &interp); NodePtr nodeListRef(long, EvalContext &, Interpreter &); long nodeListLength(EvalContext &context, Interpreter &interp); void traceSubObjects(Collector &) const; private: NodeListObj *reversed(EvalContext &context, Interpreter &interp); NodeListObj *nl_; NodeListObj *reversed_; }; ELObj::ELObj() { hasSubObjects_ = 0; } bool ELObj::isEqual(ELObj &) { return false; } bool ELObj::isEquiv(ELObj &obj) { return isEqual(obj); } bool ELObj::isNil() const { return false; } bool ELObj::isList() const { return false; } bool ELObj::isTrue() const { return true; } PairObj *ELObj::asPair() { return 0; } VectorObj *ELObj::asVector() { return 0; } SymbolObj *ELObj::asSymbol() { return 0; } KeywordObj *ELObj::asKeyword() { return 0; } StringObj *ELObj::convertToString() { return 0; } FunctionObj *ELObj::asFunction() { return 0; } SosofoObj *ELObj::asSosofo() { return 0; } AppendSosofoObj *ELObj::asAppendSosofo() { return 0; } ColorObj *ELObj::asColor() { return 0; } ColorSpaceObj *ELObj::asColorSpace() { return 0; } AddressObj *ELObj::asAddress() { return 0; } DisplaySpaceObj *ELObj::asDisplaySpace() { return 0; } InlineSpaceObj *ELObj::asInlineSpace() { return 0; } GlyphSubstTableObj *ELObj::asGlyphSubstTable() { return 0; } LanguageObj *ELObj::asLanguage() { return 0; } bool ELObj::optSingletonNodeList(EvalContext &, Interpreter &, NodePtr &) { return 0; } NodeListObj *ELObj::asNodeList() { return 0; } NamedNodeListObj *ELObj::asNamedNodeList() { return 0; } StyleObj *ELObj::asStyle() { return 0; } BoxObj *ELObj::asBox() { return 0; } void ELObj::print(Interpreter &interp, OutputCharStream &out) { out << "#"; } void ELObj::print(Interpreter &interp, OutputCharStream &out, unsigned) { print(interp, out); } bool ELObj::exactIntegerValue(long &) { return false; } bool ELObj::realValue(double &) { return false; } bool ELObj::inexactRealValue(double &) { return false; } bool ELObj::lengthValue(long &n) { return false; } ELObj::QuantityType ELObj::quantityValue(long &, double &, int &) { return noQuantity; } const LengthSpec *ELObj::lengthSpec() const { return 0; } bool ELObj::stringData(const Char *&, size_t &) { return false; } bool ELObj::charValue(Char &) { return false; } const FOTBuilder::GlyphId *ELObj::glyphId() const { return 0; } ELObj *ELObj::resolveQuantities(bool, Interpreter &, const Location &) { return this; } ErrorObj::ErrorObj() { } void ErrorObj::print(Interpreter &interp, OutputCharStream &out) { out << "#"; } UnspecifiedObj::UnspecifiedObj() { } void UnspecifiedObj::print(Interpreter &interp, OutputCharStream &out) { out << "#v"; } NilObj::NilObj() { } bool NilObj::isNil() const { return true; } bool NilObj::isList() const { return true; } void NilObj::print(Interpreter &, OutputCharStream &out) { out << "()"; } TrueObj::TrueObj() { } void TrueObj::print(Interpreter &, OutputCharStream &out) { out << "#t"; } FalseObj::FalseObj() { } bool FalseObj::isTrue() const { return false; } void FalseObj::print(Interpreter &, OutputCharStream &out) { out << "#f"; } SymbolObj::SymbolObj(StringObj *name) : name_(name), cValue_(FOTBuilder::symbolFalse) { hasSubObjects_ = 1; } void SymbolObj::traceSubObjects(Collector &c) const { c.trace(name_); } void SymbolObj::print(Interpreter &interp, OutputCharStream &out) { out.write(name()->data(), name()->size()); } SymbolObj *SymbolObj::asSymbol() { return this; } StringObj *SymbolObj::convertToString() { return name(); } KeywordObj::KeywordObj(const Identifier *ident) : ident_(ident) { } KeywordObj *KeywordObj::asKeyword() { return this; } bool KeywordObj::isEqual(ELObj &obj) { KeywordObj *k = obj.asKeyword(); return k && k->ident_ == ident_; } void KeywordObj::print(Interpreter &interp, OutputCharStream &out) { out << ident_->name() << ":"; } PairObj::PairObj(ELObj *car, ELObj *cdr) : car_(car), cdr_(cdr) { hasSubObjects_ = 1; } bool PairObj::isEqual(ELObj &obj) { PairObj *p = obj.asPair(); // FIXME need non-recursive implementation return p && equal(*p->car(), *car()) && equal(*p->cdr(), *cdr()); } bool PairObj::isEquiv(ELObj &obj) { PairObj *p = obj.asPair(); // FIXME need non-recursive implementation return p && eqv(*p->car(), *car()) && eqv(*p->cdr(), *cdr()); } void PairObj::traceSubObjects(Collector &c) const { c.trace(car_); c.trace(cdr_); } ELObj *PairObj::resolveQuantities(bool force, Interpreter &interp, const Location &loc) { bool fail = 0; PairObj *pair = this; for (;;) { ELObj *tem = pair->car_->resolveQuantities(force, interp, loc); if (!tem) fail = 1; else { if (pair->permanent()) interp.makePermanent(tem); pair->car_ = tem; } PairObj *nextPair = pair->cdr_->asPair(); if (!nextPair) break; pair = nextPair; } ELObj *tem = pair->cdr_->resolveQuantities(force, interp, loc); if (!tem) fail = 1; else { if (pair->permanent()) interp.makePermanent(tem); pair->cdr_ = tem; } if (fail) return 0; else return this; } PairObj *PairObj::asPair() { return this; } bool PairObj::isList() const { ELObj *p = cdr_; while (!p->isNil()) { PairObj *pair = p->asPair(); if (!pair) return false; p = pair->cdr(); } return true; } void PairObj::print(Interpreter &interp, OutputCharStream &out) { out << "("; car_->print(interp, out); ELObj *p = cdr_; for (;;) { if (p->isNil()) { out << ")"; return; } PairObj *pair = p->asPair(); if (!pair) { out << " . "; p->print(interp, out); out << ")"; return; } out << " "; pair->car()->print(interp, out); p = pair->cdr(); } } VectorObj::VectorObj() { hasSubObjects_ = 1; } VectorObj::VectorObj(Vector &v) { hasSubObjects_ = 1; v.swap(*this); } void VectorObj::traceSubObjects(Collector &c) const { for (size_t i = 0; i < Vector::size(); i++) c.trace((*this)[i]); } VectorObj *VectorObj::asVector() { return this; } bool VectorObj::isEquiv(ELObj &) { return 0; } bool VectorObj::isEqual(ELObj &obj) { VectorObj *v = obj.asVector(); if (!v) return 0; if (size() != v->size()) return 0; for (size_t i = 0; i < size(); i++) if (!equal(*(*this)[i], *(*v)[i])) return 0; return 1; } void VectorObj::print(Interpreter &interp, OutputCharStream &out) { out << "#("; Vector &v = *this; for (size_t i = 0; i < v.size(); i++) { if (i) out << " "; ELObj *tem = v[i]; if (!tem) out << "#"; else { v[i] = 0; tem->print(interp, out); v[i] = tem; } } out << ")"; } ELObj *VectorObj::resolveQuantities(bool force, Interpreter &interp, const Location &loc) { bool fail = 0; Vector &v = *this; for (size_t i = 0; i < v.size(); i++) { ELObj *tem = v[i]->resolveQuantities(force, interp, loc); if (tem) { if (permanent()) interp.makePermanent(tem); v[i] = tem; } else fail = 1; } if (fail) return 0; return this; } CharObj::CharObj(Char ch) : ch_(ch) { } void CharObj::display(Interpreter &interp, OutputCharStream &out) const { out.put(ch_); // FIXME } void CharObj::print(Interpreter &, OutputCharStream &out) { out << "#\\"; out.put(ch_); // FIXME } bool CharObj::charValue(Char &c) { c = ch_; return 1; } bool CharObj::isEqual(ELObj &obj) { Char c; return obj.charValue(c) && c == ch_; } StringObj::StringObj() { } StringObj::StringObj(const StringC &str) : StringC(str) { } StringObj::StringObj(const Char *s, size_t len) : StringC(s, len) { } bool StringObj::stringData(const Char *&s, size_t &n) { s = data(); n = size(); return true; } bool StringObj::isEqual(ELObj &obj) { const Char *s; size_t n; return (obj.stringData(s, n) && n == size() && (n == 0 || memcmp(s, data(), n*sizeof(Char)) == 0)); } StringObj *StringObj::convertToString() { return this; } void StringObj::print(Interpreter &interp, OutputCharStream &out) { // FIXME out << "\""; const Char *s = data(); for (size_t i = 0; i < size(); i++) switch (s[i]) { case '\\': case '"': out << "\\"; // fall through default: out.put(s[i]); break; } out << "\""; } IntegerObj::IntegerObj() : n_(0) { } IntegerObj::IntegerObj(long n) : n_(n) { } bool IntegerObj::isEqual(ELObj &obj) { long n; return obj.exactIntegerValue(n) && n == n_; } void IntegerObj::print(Interpreter &interp, OutputCharStream &out) { print(interp, out, 10); } void IntegerObj::print(Interpreter &, OutputCharStream &out, unsigned radix) { if (radix == 10) { if (n_ < 0) out << '-' << (unsigned long)-n_; else out << (unsigned long)n_; return; } if (n_ == 0) { out << '0'; return; } unsigned long n; if (n_ < 0) { out << '-'; n = -n_; } else n = n_; char buf[64]; int i = 0; while (n != 0) { buf[i++] = "0123456789abcdef"[n % radix]; n /= radix; } while (i > 0) out << buf[--i]; } bool IntegerObj::exactIntegerValue(long &n) { n = n_; return true; } bool IntegerObj::realValue(double &n) { n = n_; return true; } ELObj::QuantityType IntegerObj::quantityValue(long &val, double &, int &dim) { val = n_; dim = 0; return longQuantity; } RealObj::RealObj(double n) : n_(n) { } bool RealObj::isEqual(ELObj &obj) { double n; return obj.inexactRealValue(n) && n == n_; } bool RealObj::realValue(double &n) { n = n_; return true; } bool RealObj::inexactRealValue(double &n) { n = n_; return true; } ELObj::QuantityType RealObj::quantityValue(long &, double &val, int &dim) { val = n_; dim = 0; return doubleQuantity; } void RealObj::print(Interpreter &, OutputCharStream &out) { char buf[1024]; sprintf(buf, "%g", n_); out << buf; } LengthObj::LengthObj(long n) : n_(n) { } bool LengthObj::lengthValue(long &n) { n = n_; return true; } ELObj::QuantityType LengthObj::quantityValue(long &val, double &, int &dim) { val = n_; dim = 1; return longQuantity; } bool LengthObj::isEqual(ELObj &obj) { long n; double d; int dim; switch (obj.quantityValue(n, d, dim)) { case noQuantity: break; case doubleQuantity: return dim == 1 && d == n_; case longQuantity: return dim == 1 && n == n_; } return 0; } void LengthObj::print(Interpreter &interp, OutputCharStream &out) { char buf[1024]; sprintf(buf, "%gpt", n_ * 72.0/interp.unitsPerInch()); out << buf; } QuantityObj::QuantityObj(double val, int dim) : val_(val), dim_(dim) { } bool QuantityObj::isEqual(ELObj &obj) { long n; double d; int dim; switch (obj.quantityValue(n, d, dim)) { case noQuantity: break; case doubleQuantity: return dim == dim_ && d == val_; case longQuantity: return dim == dim_ && n == val_; } return 0; } ELObj::QuantityType QuantityObj::quantityValue(long &, double &val, int &dim) { val = val_; dim = dim_; return doubleQuantity; } void QuantityObj::print(Interpreter &interp, OutputCharStream &out) { char buf[1024]; sprintf(buf, "%gpt%d", val_ * pow(72.0/interp.unitsPerInch(), double(dim_)), dim_); out << buf; } bool QuantityObj::realValue(double &d) { if (dim_ != 0) return 0; d = val_; return 1; } bool QuantityObj::inexactRealValue(double &d) { if (dim_ != 0) return 0; d = val_; return 1; } LengthSpecObj::LengthSpecObj(const LengthSpec &spec) : lengthSpec_(new LengthSpec(spec)) { } const LengthSpec *LengthSpecObj::lengthSpec() const { return lengthSpec_.pointer(); } LengthSpec::LengthSpec() { for (int i = 0; i < nVals; i++) val_[i] = 0.0; } LengthSpec::LengthSpec(double d) { val_[0] = d; for (int i = 1; i < nVals; i++) val_[i] = 0.0; } LengthSpec::LengthSpec(Unknown unknown, double d) { int i; for (i = 0; i < unknown; i++) val_[i] = 0.0; val_[unknown] = d; for (i = unknown + 1; i < nVals; i++) val_[i] = 0.0; } void LengthSpec::operator+=(const LengthSpec &ls) { for (int i = 0; i < nVals; i++) val_[i] += ls.val_[i]; } void LengthSpec::operator-=(const LengthSpec &ls) { for (int i = 0; i < nVals; i++) val_[i] -= ls.val_[i]; } void LengthSpec::operator*=(double d) { for (int i = 0; i < nVals; i++) val_[i] *= d; } void LengthSpec::operator/=(double d) { for (int i = 0; i < nVals; i++) val_[i] /= d; } bool LengthSpec::convert(FOTBuilder::LengthSpec &result) const { // FIXME do some checking result.length = long(val_[0] < 0.0 ? val_[0] - 0.5 : val_[0] + .5); result.displaySizeFactor = val_[1]; return 1; } bool LengthSpec::convert(FOTBuilder::TableLengthSpec &result) const { // FIXME do some checking result.length = long(val_[0] < 0.0 ? val_[0] - 0.5 : val_[0] + .5); result.displaySizeFactor = val_[1]; result.tableUnitFactor = val_[2]; return 1; } DisplaySpaceObj::DisplaySpaceObj(const FOTBuilder::DisplaySpace &displaySpace) : displaySpace_(new FOTBuilder::DisplaySpace(displaySpace)) { } const FOTBuilder::DisplaySpace &DisplaySpaceObj::displaySpace() const { return *displaySpace_; } DisplaySpaceObj *DisplaySpaceObj::asDisplaySpace() { return this; } InlineSpaceObj::InlineSpaceObj(const FOTBuilder::InlineSpace &inlineSpace) : inlineSpace_(new FOTBuilder::InlineSpace(inlineSpace)) { } const FOTBuilder::InlineSpace &InlineSpaceObj::inlineSpace() const { return *inlineSpace_; } InlineSpaceObj *InlineSpaceObj::asInlineSpace() { return this; } UnresolvedLengthObj::UnresolvedLengthObj(long val, int valExp, Unit *unit) : val_(val), valExp_(valExp), unit_(unit) { } ELObj *UnresolvedLengthObj::resolveQuantities(bool force, Interpreter &interp, const Location &loc) { unsigned part; Location defLoc; if (!unit_->defined(part, defLoc)) { interp.setNextLocation(loc); interp.message(InterpreterMessages::undefinedQuantity, StringMessageArg(unit_->name())); return interp.makeError(); } return unit_->resolveQuantity(force, interp, val_, valExp_); } UnresolvedQuantityObj ::UnresolvedQuantityObj(double val, Unit *unit, int unitExp) : val_(val), unit_(unit), unitExp_(unitExp) { } ELObj *UnresolvedQuantityObj::resolveQuantities(bool force, Interpreter &interp, const Location &loc) { unsigned part; Location defLoc; if (!unit_->defined(part, defLoc)) { interp.setNextLocation(loc); interp.message(InterpreterMessages::undefinedQuantity, StringMessageArg(unit_->name())); return interp.makeError(); } return unit_->resolveQuantity(force, interp, val_, unitExp_); } GlyphIdObj::GlyphIdObj(const FOTBuilder::GlyphId &glyphId) : glyphId_(glyphId) { } const FOTBuilder::GlyphId *GlyphIdObj::glyphId() const { return &glyphId_; } bool GlyphIdObj::isEqual(ELObj &obj) { const FOTBuilder::GlyphId *p = obj.glyphId(); return (p && p->publicId == glyphId_.publicId && p->suffix == glyphId_.suffix); } GlyphSubstTableObj::GlyphSubstTableObj(const ConstPtr &table) : table_(table) { } GlyphSubstTableObj *GlyphSubstTableObj::asGlyphSubstTable() { return this; } AddressObj::AddressObj(FOTBuilder::Address::Type type, const NodePtr &node, const StringC &str1, const StringC &str2, const StringC &str3) { address_ = new FOTBuilder::Address; address_->type = type; address_->node = node; address_->params[0] = str1; address_->params[1] = str2; address_->params[2] = str3; } AddressObj *AddressObj::asAddress() { return this; } NodeListObj *NodeListObj::asNodeList() { return this; } NodeListObj *NodeListObj::nodeListNoOrder(Collector &) { return this; } NodeListObj *NodeListObj::nodeListChunkRest(EvalContext &context, Interpreter &interp, bool &chunk) { chunk = 0; return nodeListRest(context, interp); } bool NodeListObj::optSingletonNodeList(EvalContext &context, Interpreter &interp, NodePtr &node) { NodeListObj *rest = nodeListRest(context, interp); ELObjDynamicRoot protect(interp, rest); if (rest->nodeListFirst(context, interp)) return 0; node = nodeListFirst(context, interp); return 1; } NodePtr NodeListObj::nodeListRef(long n, EvalContext &context, Interpreter &interp) { if (n < 0) return NodePtr(); NodeListObj *nl = this; ELObjDynamicRoot protect(interp, nl); while (n > 0) { NodePtr nd(nl->nodeListFirst(context, interp)); if (!nd) return NodePtr(); GroveString str; if (nd->charChunk(interp, str) == accessOK && str.size() <= n) { bool chunk; nl = nl->nodeListChunkRest(context, interp, chunk); if (chunk) n -= str.size(); else n--; } else { nl = nl->nodeListRest(context, interp); n--; } protect = nl; } return nl->nodeListFirst(context, interp); } NodeListObj *NodeListObj::nodeListReverse(EvalContext &, Interpreter &interp) { return new (interp) ReverseNodeListObj(this); } long NodeListObj::nodeListLength(EvalContext &context, Interpreter &interp) { NodeListObj *nl = this; long n = 0; ELObjDynamicRoot protect(interp, nl); for (;;) { NodePtr nd(nl->nodeListFirst(context, interp)); if (!nd) break; bool chunk; nl = nl->nodeListChunkRest(context, interp, chunk); protect = nl; GroveString str; if (chunk && nd->charChunk(interp, str) == accessOK) n += str.size(); else n += 1; } return n; } bool NodeListObj::suppressError() { return 0; } NamedNodeListObj *NamedNodeListObj::asNamedNodeList() { return this; } NodePtrNodeListObj::NodePtrNodeListObj() { } NodePtrNodeListObj::NodePtrNodeListObj(const NodePtr &node) : node_(node) { } bool NodePtrNodeListObj::optSingletonNodeList(EvalContext &, Interpreter &, NodePtr &node) { node = node_; return 1; } NodePtr NodePtrNodeListObj::nodeListFirst(EvalContext &, Interpreter &) { return node_; } NodeListObj *NodePtrNodeListObj::nodeListRest(EvalContext &context, Interpreter &interp) { if (node_) return new (interp) NodePtrNodeListObj; else return this; } NodeListPtrNodeListObj::NodeListPtrNodeListObj(const NodeListPtr &nodeList) : nodeList_(nodeList) { } NodePtr NodeListPtrNodeListObj::nodeListFirst(EvalContext &, Interpreter &) { NodePtr nd; if (nodeList_->first(nd) == accessOK) return nd; else return NodePtr(); } NodeListObj *NodeListPtrNodeListObj::nodeListRest(EvalContext &context, Interpreter &interp) { NodeListPtr nl; if (nodeList_->rest(nl) == accessOK) return new (interp) NodeListPtrNodeListObj(nl); else return interp.makeEmptyNodeList(); } NodeListObj *NodeListPtrNodeListObj::nodeListChunkRest(EvalContext &context, Interpreter &interp, bool &chunk) { NodeListPtr nl; if (nodeList_->chunkRest(nl) == accessOK) { chunk = 1; return new (interp) NodeListPtrNodeListObj(nl); } else { chunk = 0; return interp.makeEmptyNodeList(); } } NodePtr NodeListPtrNodeListObj::nodeListRef(long i, EvalContext &, Interpreter &interp) { NodePtr nd; if (i < 0 || nodeList_->ref(i, nd) != accessOK) return NodePtr(); return nd; } NamedNodeListPtrNodeListObj ::NamedNodeListPtrNodeListObj(const NamedNodeListPtr &nnl) : namedNodeList_(nnl) { } NodePtr NamedNodeListPtrNodeListObj::namedNode(const Char *s, size_t n) { NodePtr node; if (namedNodeList_->namedNode(GroveString(s, n), node) != accessOK) node.clear(); return node; } bool NamedNodeListPtrNodeListObj::nodeName(const NodePtr &nd, GroveString &str) { return namedNodeList_->nodeName(nd, str) == accessOK; } size_t NamedNodeListPtrNodeListObj::normalize(Char *s, size_t n) { return namedNodeList_->normalize(s, n); } NodePtr NamedNodeListPtrNodeListObj::nodeListFirst(EvalContext &, Interpreter &) { if (!nodeList_) nodeList_ = namedNodeList_->nodeList(); NodePtr nd; if (nodeList_->first(nd) == accessOK) return nd; else return NodePtr(); } NodeListObj *NamedNodeListPtrNodeListObj::nodeListRest(EvalContext &context, Interpreter &interp) { if (!nodeList_) nodeList_ = namedNodeList_->nodeList(); NodeListPtr nl; if (nodeList_->rest(nl) == accessOK) return new (interp) NodeListPtrNodeListObj(nl); else return new (interp) NodePtrNodeListObj; } NodeListObj *NamedNodeListPtrNodeListObj::nodeListNoOrder(Collector &c) { return new (c) NodeListPtrNodeListObj(namedNodeList_->nodeListNoOrder()); } PairNodeListObj::PairNodeListObj(NodeListObj *head, NodeListObj *tail) : head_(head), tail_(tail) { hasSubObjects_ = 1; } NodePtr PairNodeListObj::nodeListFirst(EvalContext &context, Interpreter &interp) { if (head_) { NodePtr nd(head_->nodeListFirst(context, interp)); if (nd) return nd; head_ = 0; } return tail_->nodeListFirst(context, interp); } NodeListObj *PairNodeListObj::nodeListRest(EvalContext &context, Interpreter &interp) { if (!head_ || !head_->nodeListFirst(context, interp)) return tail_->nodeListRest(context, interp); NodeListObj *tem = head_->nodeListRest(context, interp); ELObjDynamicRoot protect(interp, tem); return new (interp) PairNodeListObj(tem, tail_); } NodeListObj *PairNodeListObj::nodeListChunkRest(EvalContext &context, Interpreter &interp, bool &chunk) { if (!head_ || !head_->nodeListFirst(context, interp)) return tail_->nodeListChunkRest(context, interp, chunk); NodeListObj *tem = head_->nodeListChunkRest(context, interp, chunk); ELObjDynamicRoot protect(interp, tem); return new (interp) PairNodeListObj(tem, tail_); } void PairNodeListObj::traceSubObjects(Collector &c) const { c.trace(head_); c.trace(tail_); } ReverseNodeListObj::ReverseNodeListObj(NodeListObj *nl) : nl_(nl), reversed_(0) { hasSubObjects_ = 1; } NodePtr ReverseNodeListObj::nodeListFirst(EvalContext &context, Interpreter &interp) { return reversed(context, interp)->nodeListFirst(context, interp); } NodeListObj *ReverseNodeListObj::nodeListRest(EvalContext &context, Interpreter &interp) { return reversed(context, interp)->nodeListRest(context, interp); } NodePtr ReverseNodeListObj::nodeListRef(long n, EvalContext &context, Interpreter &interp) { if (reversed_) return reversed_->nodeListRef(n, context, interp); if (n < 0) return NodePtr(); size_t len = nl_->nodeListLength(context, interp); if (n >= len) return 0; return nl_->nodeListRef(len - n - 1, context, interp); } NodeListObj *ReverseNodeListObj::reversed(EvalContext &context, Interpreter &interp) { if (!reversed_) { NodePtr nd(nl_->nodeListFirst(context, interp)); if (nd) { reversed_ = new (interp) NodePtrNodeListObj(nd); NodeListObj *tem = nl_; ELObjDynamicRoot protect(interp, tem); ELObjDynamicRoot protect2(interp, reversed_); for (;;) { tem = tem->nodeListRest(context, interp); protect = tem; nd = tem->nodeListFirst(context, interp); if (!nd) break; NodeListObj *single = new (interp) NodePtrNodeListObj(nd); protect2 = single; reversed_ = new (interp) PairNodeListObj(single, reversed_); } } else reversed_ = nl_; } return reversed_; } NodeListObj *ReverseNodeListObj::nodeListReverse(EvalContext &, Interpreter &) { return nl_; } long ReverseNodeListObj::nodeListLength(EvalContext &context, Interpreter &interp) { return nl_->nodeListLength(context, interp); } void ReverseNodeListObj::traceSubObjects(Collector &c) const { c.trace(nl_); c.trace(reversed_); } #ifdef DSSSL_NAMESPACE } #endif openjade-1.3.2/style/ELObj.h0100664000076400007640000003503307417604526013700 0ustar ianian// Copyright (c) 1996 James Clark // See the file copying.txt for copying permission. #ifndef ELObj_INCLUDED #define ELObj_INCLUDED 1 #include "types.h" #include "Collector.h" #include "OutputCharStream.h" #include "Boolean.h" #include "Location.h" #include "Node.h" #include "FOTBuilder.h" #include #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif class Interpreter; class EvalContext; class Unit; class PairObj; class FunctionObj; class SymbolObj; class KeywordObj; class BoxObj; class StringObj; class SosofoObj; class AppendSosofoObj; class ColorObj; class ColorSpaceObj; class StyleObj; class AddressObj; class NodeListObj; class NamedNodeListObj; class Identifier; class LengthSpec; class DisplaySpaceObj; class InlineSpaceObj; class GlyphSubstTableObj; class VectorObj; class LanguageObj; class ELObj : public Collector::Object { public: ELObj(); void *operator new(size_t, Collector &c) { return c.allocateObject(0); } #ifdef SP_HAVE_PLACEMENT_OPERATOR_DELETE private: void operator delete(void *p) { } public: void operator delete(void *p, Collector &c) { c.unallocateObject(p); } #endif virtual bool isNil() const; virtual bool isList() const; virtual bool isTrue() const; virtual PairObj *asPair(); virtual SymbolObj *asSymbol(); virtual KeywordObj *asKeyword(); virtual FunctionObj *asFunction(); virtual SosofoObj *asSosofo(); virtual AppendSosofoObj *asAppendSosofo(); virtual ColorObj *asColor(); virtual ColorSpaceObj *asColorSpace(); virtual StyleObj *asStyle(); virtual AddressObj *asAddress(); virtual DisplaySpaceObj *asDisplaySpace(); virtual InlineSpaceObj *asInlineSpace(); virtual GlyphSubstTableObj *asGlyphSubstTable(); virtual NodeListObj *asNodeList(); virtual NamedNodeListObj *asNamedNodeList(); virtual StringObj *convertToString(); // either symbol or string virtual BoxObj *asBox(); virtual VectorObj *asVector(); virtual LanguageObj *asLanguage(); virtual bool charValue(Char &); virtual bool stringData(const Char *&, size_t &); virtual void print(Interpreter &, OutputCharStream &); virtual void print(Interpreter &, OutputCharStream &, unsigned); virtual bool exactIntegerValue(long &); virtual bool realValue(double &); virtual bool inexactRealValue(double &); virtual bool lengthValue(long &); virtual const FOTBuilder::GlyphId *glyphId() const; virtual const LengthSpec *lengthSpec() const; enum QuantityType { noQuantity, longQuantity, doubleQuantity }; virtual QuantityType quantityValue(long &, double &, int &); virtual ELObj *resolveQuantities(bool force, Interpreter &, const Location &); virtual bool optSingletonNodeList(EvalContext &, Interpreter &, NodePtr &); static bool equal(ELObj &, ELObj &); // Note that in DSSSL2 unlike Scheme eqv? for lists and strings is the same // as equal?. Only for vectors do they differ. static bool eqv(ELObj &, ELObj &); protected: // This checks for equality of *distinct* objects. virtual bool isEqual(ELObj &); // This checks for equivalence of *distinct* objects. virtual bool isEquiv(ELObj &); }; class ErrorObj : public ELObj { public: void print(Interpreter &, OutputCharStream &); private: ErrorObj(); friend class Interpreter; }; class UnspecifiedObj : public ELObj { public: void print(Interpreter &, OutputCharStream &); private: UnspecifiedObj(); friend class Interpreter; }; class NilObj : public ELObj { public: bool isNil() const; bool isList() const; void print(Interpreter &, OutputCharStream &); private: NilObj(); friend class Interpreter; }; class TrueObj : public ELObj { public: void print(Interpreter &, OutputCharStream &); private: TrueObj(); friend class Interpreter; }; class FalseObj : public ELObj { public: void print(Interpreter &, OutputCharStream &); bool isTrue() const; private: FalseObj(); friend class Interpreter; }; class StringObj; class CharObj; class SymbolObj : public ELObj { public: void print(Interpreter &, OutputCharStream &); SymbolObj *asSymbol(); StringObj *convertToString(); StringObj *name() const; void traceSubObjects(Collector &) const; FOTBuilder::Symbol cValue() const; void setCValue(FOTBuilder::Symbol); static const StringC &key(const SymbolObj &); private: SymbolObj(StringObj *); StringObj *name_; FOTBuilder::Symbol cValue_; friend class Interpreter; }; class Identifier; class KeywordObj : public ELObj { public: void print(Interpreter &, OutputCharStream &); KeywordObj *asKeyword(); const Identifier *identifier() const; bool isEqual(ELObj &); private: KeywordObj(const Identifier *); const Identifier *ident_; friend class Interpreter; }; class PairObj : public ELObj { public: PairObj(ELObj *car, ELObj *cdr); ELObj *car(); ELObj *cdr(); void setCar(ELObj *); void setCdr(ELObj *); PairObj *asPair(); bool isList() const; void print(Interpreter &, OutputCharStream &); void traceSubObjects(Collector &) const; ELObj *resolveQuantities(bool force, Interpreter &, const Location &); bool isEqual(ELObj &); bool isEquiv(ELObj &); private: ELObj *car_; ELObj *cdr_; }; class VectorObj : public ELObj, public Vector { public: void *operator new(size_t, Collector &c) { return c.allocateObject(1); } VectorObj(); VectorObj(Vector &v); void traceSubObjects(Collector &) const; VectorObj *asVector(); bool isEqual(ELObj &); bool isEquiv(ELObj &); void print(Interpreter &, OutputCharStream &); ELObj *resolveQuantities(bool force, Interpreter &, const Location &); }; class CharObj : public ELObj { public: Char ch(); void print(Interpreter &, OutputCharStream &); void display(Interpreter &, OutputCharStream &) const; bool isEqual(ELObj &); bool charValue(Char &); private: CharObj(Char); Char ch_; friend class Interpreter; }; class StringObj : public ELObj, public StringC { public: void *operator new(size_t, Collector &c) { return c.allocateObject(1); } StringObj(); StringObj(const StringC &str); StringObj(const Char *, size_t); void print(Interpreter &, OutputCharStream &); StringObj *convertToString(); bool stringData(const Char *&, size_t &); bool isEqual(ELObj &); }; class IntegerObj : public ELObj { public: void print(Interpreter &, OutputCharStream &); void print(Interpreter &, OutputCharStream &, unsigned); bool exactIntegerValue(long &); bool realValue(double &); QuantityType quantityValue(long &, double &, int &); bool isEqual(ELObj &); private: friend class Interpreter; IntegerObj(); IntegerObj(long); long n_; }; class RealObj : public ELObj { public: RealObj(double); bool realValue(double &); bool inexactRealValue(double &); QuantityType quantityValue(long &, double &, int &); bool isEqual(ELObj &); void print(Interpreter &, OutputCharStream &); private: double n_; }; class LengthObj : public ELObj { public: LengthObj(long units); bool lengthValue(long &); QuantityType quantityValue(long &, double &, int &); void print(Interpreter &, OutputCharStream &); bool isEqual(ELObj &); private: long n_; }; class QuantityObj : public ELObj { public: QuantityObj(double, int); QuantityType quantityValue(long &, double &, int &); void print(Interpreter &, OutputCharStream &); bool isEqual(ELObj &); bool realValue(double &); bool inexactRealValue(double &); private: // This is in units per inch. double val_; int dim_; }; class LengthSpec { public: enum Unknown { displaySize = 1, tableUnit }; LengthSpec(); LengthSpec(double); LengthSpec(Unknown, double); void operator+=(const LengthSpec &); void operator+=(double d) { val_[0] += d; } void operator-=(const LengthSpec &); void operator-=(double d) { val_[0] -= d; } void operator*=(double); void operator/=(double); bool convert(FOTBuilder::LengthSpec &) const; bool convert(FOTBuilder::TableLengthSpec &) const; private: enum { nVals = 3 }; double val_[nVals]; }; class LengthSpecObj : public ELObj { public: void *operator new(size_t, Collector &c) { return c.allocateObject(1); } LengthSpecObj(const LengthSpec &); const LengthSpec *lengthSpec() const; private: Owner lengthSpec_; }; class DisplaySpaceObj : public ELObj { public: void *operator new(size_t, Collector &c) { return c.allocateObject(1); } DisplaySpaceObj(const FOTBuilder::DisplaySpace &); const FOTBuilder::DisplaySpace &displaySpace() const; DisplaySpaceObj *asDisplaySpace(); private: Owner displaySpace_; }; class InlineSpaceObj : public ELObj { public: void *operator new(size_t, Collector &c) { return c.allocateObject(1); } InlineSpaceObj(const FOTBuilder::InlineSpace &); const FOTBuilder::InlineSpace &inlineSpace() const; InlineSpaceObj *asInlineSpace(); private: Owner inlineSpace_; }; class UnresolvedQuantityObj : public ELObj { public: UnresolvedQuantityObj(double, Unit *, int); ELObj *resolveQuantities(bool force, Interpreter &, const Location &); private: double val_; Unit *unit_; int unitExp_; }; class UnresolvedLengthObj : public ELObj { public: UnresolvedLengthObj(long val, int valExp, Unit *); ELObj *resolveQuantities(bool force, Interpreter &, const Location &); private: long val_; Unit *unit_; int valExp_; }; class GlyphIdObj : public ELObj { public: GlyphIdObj(const FOTBuilder::GlyphId &); const FOTBuilder::GlyphId *glyphId() const; bool isEqual(ELObj &); private: FOTBuilder::GlyphId glyphId_; }; class GlyphSubstTableObj : public ELObj { public: void *operator new(size_t, Collector &c) { return c.allocateObject(1); } GlyphSubstTableObj(const ConstPtr &); GlyphSubstTableObj *asGlyphSubstTable(); const ConstPtr &glyphSubstTable() const; private: ConstPtr table_; }; class AddressObj : public ELObj { public: void *operator new(size_t, Collector &c) { return c.allocateObject(1); } AddressObj(FOTBuilder::Address::Type, const NodePtr & = NodePtr(), const StringC & = StringC(), const StringC & = StringC(), const StringC & = StringC()); AddressObj *asAddress(); const FOTBuilder::Address &address() const; private: Owner address_; }; class NodeListObj : public ELObj { public: NodeListObj *asNodeList(); bool optSingletonNodeList(EvalContext &, Interpreter &, NodePtr &); virtual NodePtr nodeListFirst(EvalContext &, Interpreter &) = 0; virtual NodeListObj *nodeListRest(EvalContext &, Interpreter &) = 0; virtual NodeListObj *nodeListNoOrder(Collector &); // If this node contains all the node in the chunk of the first node, then // this *may* return the node list containing the nodes following the chunk; // If so chunk, will be set to 1. Otherwise return nodeListRest() and set // chunk to 0. If charChunk() returns a string of length n, then // the chunk of the node is the node together with the n - 1 following siblings; // otherwise the chunk of the node is the node itself. virtual NodeListObj *nodeListChunkRest(EvalContext &, Interpreter &, bool &chunk); virtual NodePtr nodeListRef(long, EvalContext &, Interpreter &); virtual NodeListObj *nodeListReverse(EvalContext &, Interpreter &); virtual long nodeListLength(EvalContext &, Interpreter &); virtual bool suppressError(); }; class NamedNodeListObj : public NodeListObj { public: NamedNodeListObj *asNamedNodeList(); virtual NodePtr namedNode(const Char *, size_t) = 0; virtual bool nodeName(const NodePtr &, GroveString &) = 0; virtual size_t normalize(Char *, size_t) = 0; }; class NodePtrNodeListObj : public NodeListObj { public: void *operator new(size_t, Collector &c) { return c.allocateObject(1); } NodePtrNodeListObj(); NodePtrNodeListObj(const NodePtr &); NodePtr nodeListFirst(EvalContext &, Interpreter &); NodeListObj *nodeListRest(EvalContext &, Interpreter &); bool optSingletonNodeList(EvalContext &, Interpreter &, NodePtr &); bool chunkComplete(); private: // Null for no node. NodePtr node_; }; class NodeListPtrNodeListObj : public NodeListObj { public: void *operator new(size_t, Collector &c) { return c.allocateObject(1); } NodeListPtrNodeListObj(const NodeListPtr &); NodePtr nodeListFirst(EvalContext &, Interpreter &); NodeListObj *nodeListRest(EvalContext &, Interpreter &); NodeListObj *nodeListChunkRest(EvalContext &, Interpreter &, bool &); NodePtr nodeListRef(long, EvalContext &, Interpreter &); private: // never null NodeListPtr nodeList_; }; class NamedNodeListPtrNodeListObj : public NamedNodeListObj { public: void *operator new(size_t, Collector &c) { return c.allocateObject(1); } NamedNodeListPtrNodeListObj(const NamedNodeListPtr &); NodePtr nodeListFirst(EvalContext &, Interpreter &); NodeListObj *nodeListRest(EvalContext &, Interpreter &); NodePtr namedNode(const Char *, size_t); bool nodeName(const NodePtr &, GroveString &); size_t normalize(Char *, size_t); NodeListObj *nodeListNoOrder(Collector &); private: NamedNodeListPtr namedNodeList_; // cached node list, null if not yet computed NodeListPtr nodeList_; }; class PairNodeListObj : public NodeListObj { public: PairNodeListObj(NodeListObj *, NodeListObj *); NodePtr nodeListFirst(EvalContext &, Interpreter &); NodeListObj *nodeListRest(EvalContext &, Interpreter &); NodeListObj *nodeListChunkRest(EvalContext &, Interpreter &, bool &); void traceSubObjects(Collector &) const; private: NodeListObj *head_; // may be null NodeListObj *tail_; }; inline bool ELObj::equal(ELObj &obj1, ELObj &obj2) { return &obj1 == &obj2 || obj1.isEqual(obj2); } inline bool ELObj::eqv(ELObj &obj1, ELObj &obj2) { return &obj1 == &obj2 || obj1.isEquiv(obj2); } inline ELObj *PairObj::car() { return car_; } inline ELObj *PairObj::cdr() { return cdr_; } inline void PairObj::setCar(ELObj *car) { car_ = car; } inline void PairObj::setCdr(ELObj *cdr) { cdr_ = cdr; } inline StringObj *SymbolObj::name() const { return name_; } inline FOTBuilder::Symbol SymbolObj::cValue() const { return cValue_; } inline void SymbolObj::setCValue(FOTBuilder::Symbol sym) { cValue_ = sym; } inline Char CharObj::ch() { return ch_; } inline const StringC &SymbolObj::key(const SymbolObj &sym) { return *sym.name(); } inline const Identifier *KeywordObj::identifier() const { return ident_; } inline const FOTBuilder::Address &AddressObj::address() const { return *address_; } inline const ConstPtr & GlyphSubstTableObj::glyphSubstTable() const { return table_; } #ifdef DSSSL_NAMESPACE } #endif #endif /* not ELObj_INCLUDED */ openjade-1.3.2/style/ELObjMessageArg.cxx0100664000076400007640000000110706713043552016177 0ustar ianian// Copyright (c) 1996 James Clark // See the file copying.txt for copying permission. #include "stylelib.h" #include "ELObjMessageArg.h" #include "Interpreter.h" #include "OutputCharStream.h" #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif ELObjMessageArg::ELObjMessageArg(ELObj *obj, Interpreter &interp) : StringMessageArg(convert(obj, interp)) { } StringC ELObjMessageArg::convert(ELObj *obj, Interpreter &interp) { StrOutputCharStream os; obj->print(interp, os); StringC result; os.extractString(result); return result; } #ifdef DSSSL_NAMESPACE } #endif openjade-1.3.2/style/ELObjMessageArg.h0100664000076400007640000000077406713043552015635 0ustar ianian// Copyright (c) 1996 James Clark // See the file copying.txt for copying permission. #ifndef ELObjMessageArg_INCLUDED #define ELObjMessageArg_INCLUDED 1 #include "ELObj.h" #include "MessageArg.h" #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif class ELObjMessageArg : public StringMessageArg { public: ELObjMessageArg(ELObj *, Interpreter &); private: static StringC convert(ELObj *obj, Interpreter &interp); }; #ifdef DSSSL_NAMESPACE } #endif #endif /* not ELObjMessageArg_INCLUDED */ openjade-1.3.2/style/ELObjPropVal.h0100664000076400007640000000500106756236454015202 0ustar ianian// Copyright (c) 1999 Matthias Clasen // See the file copying.txt for copying permission. #ifndef ELObjPropVal_INCLUDED #define ELObjPropVal_INCLUDED 1 #include "Node.h" #include "ELObj.h" #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif class ELObjPropertyValue : public PropertyValue { public: ELObjPropertyValue(Interpreter &interp, bool rcs) : interp_(&interp), rcs_(rcs), obj(0) { } void set(const NodePtr &nd) { obj = new (*interp_) NodePtrNodeListObj(nd); } void set(const NodeListPtr &nl) { obj = new (*interp_) NodeListPtrNodeListObj(nl); } void set(const NamedNodeListPtr &nnl) { obj = new (*interp_) NamedNodeListPtrNodeListObj(nnl); } void set(bool b) { if (b) obj = interp_->makeTrue(); else obj = interp_->makeFalse(); } void set(GroveChar c) { obj = interp_->makeChar(c); } void set(GroveString s) { obj = new (*interp_) StringObj(s.data(), s.size()); } void set(ComponentName::Id id) { const char *s = rcs_ ? ComponentName::rcsName(id) : ComponentName::sdqlName(id); obj = interp_->makeSymbol(interp_->makeStringC(s)); } void set(const GroveStringListPtr &gsListPtr) { PairObj *head = new (*interp_) PairObj(0, 0); ELObjDynamicRoot protect(*interp_, head); PairObj *tail = head; ConstGroveStringListIter sgListIter(*gsListPtr); while (!sgListIter.done()) { StringObj *gs = new (*interp_) StringObj(sgListIter.cur().data(), sgListIter.cur().size()); tail->setCdr(gs); PairObj *tem = new (*interp_) PairObj(gs, 0); tail->setCdr(tem); tail = tem; sgListIter.next(); } tail->setCdr(interp_->makeNil()); obj = head->cdr(); } void set(const ComponentName::Id *names) { PairObj *head = new (*interp_) PairObj(0, 0); ELObjDynamicRoot protect(*interp_, head); PairObj *tail = head; for (int i = 0; names[i] != ComponentName::noId; i++) { const char *s = (rcs_ ? ComponentName::rcsName(names[i]) : ComponentName::sdqlName(names[i])); SymbolObj *sym = interp_->makeSymbol(interp_->makeStringC(s)); tail->setCdr(sym); // in case we ever gc symbols PairObj *tem = new (*interp_) PairObj(sym, 0); tail->setCdr(tem); tail = tem; } tail->setCdr(interp_->makeNil()); obj = head->cdr(); } void set(long l) { obj = interp_->makeInteger(l); } ELObj *obj; private: Interpreter *interp_; bool rcs_; }; #ifdef DSSSL_NAMESPACE } #endif #endif /* not ELObjPropVal_INCLUDED */ openjade-1.3.2/style/EvalContext.h0100664000076400007640000000305506736770227015205 0ustar ianian// Copyright (c) 1996 James Clark // See the file copying.txt for copying permission. #ifndef EvalContext_INCLUDED #define EvalContext_INCLUDED 1 #include "Boolean.h" #include "Node.h" #include "Vector.h" #include #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif class StyleStack; class StyleObj; class ProcessingMode; class LanguageObj; class EvalContext { public: class CurrentNodeSetter { public: CurrentNodeSetter(const NodePtr &, const ProcessingMode *, EvalContext &); ~CurrentNodeSetter(); private: EvalContext *ec_; NodePtr saveCurrentNode_; const ProcessingMode *saveProcessingMode_; }; EvalContext(); StyleStack *styleStack; unsigned specLevel; // level of the specification flow object in the style stack StyleObj *overridingStyle; Vector *actualDependencies; NodePtr currentNode; const ProcessingMode *processingMode; LanguageObj *currentLanguage; }; inline EvalContext::EvalContext() : styleStack(0), overridingStyle(0), actualDependencies(0), processingMode(0), currentLanguage(0) { } inline EvalContext::CurrentNodeSetter::CurrentNodeSetter(const NodePtr &node, const ProcessingMode *mode, EvalContext &ec) : ec_(&ec), saveCurrentNode_(ec.currentNode), saveProcessingMode_(ec.processingMode) { ec.currentNode = node; ec.processingMode = mode; } inline EvalContext::CurrentNodeSetter::~CurrentNodeSetter() { ec_->currentNode = saveCurrentNode_; ec_->processingMode = saveProcessingMode_; } #ifdef DSSSL_NAMESPACE } #endif #endif /* not EvalContext_INCLUDED */ openjade-1.3.2/style/Expression.cxx0100664000076400007640000012666006756103462015464 0ustar ianian// Copyright (c) 1996 James Clark // See the file copying.txt for copying permission. #include "stylelib.h" #include "Insn.h" #include "Insn2.h" #include "Interpreter.h" #include "InterpreterMessages.h" #include "ELObjMessageArg.h" #include "Expression.h" #include "Style.h" #include "macros.h" #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif Expression::Expression(const Location &loc) : loc_(loc) { } void Expression::optimize(Interpreter &, const Environment &, Owner &) { } ELObj *Expression::constantValue() const { return 0; } const Identifier *Expression::keyword() const { return 0; } void Expression::markBoundVars(BoundVarList &, bool) { } ConstantExpression::ConstantExpression(ELObj *obj, const Location &loc) : Expression(loc), obj_(obj) { } InsnPtr ConstantExpression::compile(Interpreter &interp, const Environment &env, int stackPos, const InsnPtr &next) { return new ConstantInsn(obj_, new ResolveQuantitiesInsn(location(), next)); } void ConstantExpression::optimize(Interpreter &interp, const Environment &, Owner &expr) { ELObj *tem = obj_->resolveQuantities(0, interp, location()); if (tem) { interp.makePermanent(tem); expr = new ResolvedConstantExpression(tem, location()); } } bool ConstantExpression::canEval(bool) const { return 0; } const Identifier *ConstantExpression::keyword() const { const KeywordObj *k = obj_->asKeyword(); if (k) return k->identifier(); else return 0; } ResolvedConstantExpression::ResolvedConstantExpression(ELObj *obj, const Location &loc) : Expression(loc), obj_(obj) { } InsnPtr ResolvedConstantExpression::compile(Interpreter &interp, const Environment &env, int stackPos, const InsnPtr &next) { return new ConstantInsn(obj_, next); } ELObj *ResolvedConstantExpression::constantValue() const { return obj_; } bool ResolvedConstantExpression::canEval(bool) const { return 1; } CallExpression::CallExpression(Owner &op, NCVector > &args, const Location &loc) : Expression(loc) { op.swap(op_); args.swap(args_); } bool CallExpression::canEval(bool) const { if (!op_->canEval(1)) return 0; for (size_t i = 0; i < args_.size(); i++) if (!args_[i]->canEval(1)) return 0; return 1; } int CallExpression::nArgs() { return args_.size(); } InsnPtr CallExpression::compile(Interpreter &interp, const Environment &env, int stackPos, const InsnPtr &next) { op_->optimize(interp, env, op_); ELObj *value = op_->constantValue(); InsnPtr result; if (value) { FunctionObj *func = value->asFunction(); if (!func) { interp.setNextLocation(location()); interp.message(InterpreterMessages::callNonFunction, ELObjMessageArg(value, interp)); return new ErrorInsn; } if (nArgs() < func->nRequiredArgs()) { interp.setNextLocation(location()); interp.message(InterpreterMessages::missingArg); return new ErrorInsn; } if (nArgs() - func->nRequiredArgs() > func->nOptionalArgs()) { if (func->nKeyArgs()) { if ((nArgs() - func->nRequiredArgs() - func->nOptionalArgs()) & 1) { interp.setNextLocation(location()); interp.message(InterpreterMessages::oddKeyArgs); args_.resize(func->nRequiredArgs() + func->nOptionalArgs()); } } else if (!func->restArg()) { interp.setNextLocation(location()); interp.message(InterpreterMessages::tooManyArgs); args_.resize(func->nRequiredArgs() + func->nOptionalArgs()); } } int callerArgs; if (!next.isNull() && next->isReturn(callerArgs) && !interp.debugMode()) result = func->makeTailCallInsn(nArgs(), interp, location(), callerArgs); else result = func->makeCallInsn(nArgs(), interp, location(), next); } else { int n = nArgs(); int callerArgs; if (!next.isNull() && next->isReturn(callerArgs) && !interp.debugMode()) result = new TailApplyInsn(callerArgs, n, location()); else result = new ApplyInsn(n, location(), next); result = op_->compile(interp, env, stackPos + n, result); } for (size_t i = args_.size(); i > 0; i--) result = optimizeCompile(args_[i - 1], interp, env, stackPos + i - 1, result); return result; } void CallExpression::markBoundVars(BoundVarList &vars, bool shared) { op_->markBoundVars(vars, shared); for (size_t i = 0; i < args_.size(); i++) args_[i]->markBoundVars(vars, shared); } VariableExpression::VariableExpression(const Identifier *ident, const Location &loc) : Expression(loc), ident_(ident), isTop_(0) { } InsnPtr VariableExpression::compile(Interpreter &interp, const Environment &env, int stackPos, const InsnPtr &next) { bool isFrame; int index; unsigned flags; if (env.lookup(ident_, isFrame, index, flags)) { bool boxed = BoundVar::flagsBoxed(flags); InsnPtr tem; int n; if (isFrame && !next.isNull() && next->isPopBindings(n, tem) && n == 1 && index - stackPos == -1) { if (flags & BoundVar::uninitFlag) tem = new CheckInitInsn(ident_, location(), tem); // This happens with named let. if (boxed) return new UnboxInsn(tem); else return tem; } if (flags & BoundVar::uninitFlag) tem = new CheckInitInsn(ident_, location(), next); else tem = next; if (boxed) tem = new UnboxInsn(tem); if (isFrame) return new StackRefInsn(index - stackPos, index, tem); else return new ClosureRefInsn(index, tem); } isTop_ = 1; Location loc; unsigned part; if (!ident_->defined(part, loc)) { interp.setNextLocation(location()); interp.message(InterpreterMessages::undefinedVariableReference, StringMessageArg(ident_->name())); return new ErrorInsn; } ELObj *val = ident_->computeValue(0, interp); if (!val) return new TopRefInsn(ident_, next); if (interp.isError(val)) return new ErrorInsn; return new ConstantInsn(val, next); } void VariableExpression::optimize(Interpreter &interp, const Environment &env, Owner &expr) { bool isFrame; int index; unsigned flags; if (env.lookup(ident_, isFrame, index, flags)) return; isTop_ = 1; Location loc; unsigned part; if (ident_->defined(part, loc)) { ELObj *obj = ident_->computeValue(0, interp); if (obj && !interp.isError(obj)) { interp.makePermanent(obj); expr = new ConstantExpression(obj, location()); expr->optimize(interp, env, expr); } } } bool VariableExpression::canEval(bool) const { return !isTop_ || ident_->evaluated(); } void VariableExpression::markBoundVars(BoundVarList &vars, bool shared) { vars.mark(ident_, BoundVar::usedFlag | (shared ? BoundVar::sharedFlag : 0)); } IfExpression::IfExpression(Owner &test, Owner &consequent, Owner &alternate, const Location &loc) : Expression(loc) { test.swap(test_); consequent.swap(consequent_); alternate.swap(alternate_); } bool IfExpression::canEval(bool maybeCall) const { return (test_->canEval(maybeCall) && consequent_->canEval(maybeCall) && alternate_->canEval(maybeCall)); } void IfExpression::optimize(Interpreter &interp, const Environment &env, Owner &expr) { test_->optimize(interp, env, test_); ELObj *obj = test_->constantValue(); if (obj) { if (obj->isTrue()) { expr = consequent_.extract(); expr->optimize(interp, env, expr); } else { expr = alternate_.extract(); expr->optimize(interp, env, expr); } } } InsnPtr IfExpression::compile(Interpreter &interp, const Environment &env, int stackPos, const InsnPtr &next) { alternate_->optimize(interp, env, alternate_); if (alternate_->constantValue() == interp.makeFalse()) return test_->compile(interp, env, stackPos, new AndInsn(optimizeCompile(consequent_, interp, env, stackPos, next), next)); else return test_->compile(interp, env, stackPos, new TestInsn(optimizeCompile(consequent_, interp, env, stackPos, next), alternate_->compile(interp, env, stackPos, next))); } void IfExpression::markBoundVars(BoundVarList &vars, bool shared) { test_->markBoundVars(vars, shared); consequent_->markBoundVars(vars, shared); alternate_->markBoundVars(vars, shared); } OrExpression::OrExpression(Owner &test1, Owner &test2, const Location &loc) : Expression(loc) { test1.swap(test1_); test2.swap(test2_); } bool OrExpression::canEval(bool maybeCall) const { return (test1_->canEval(maybeCall) && test2_->canEval(maybeCall)); } void OrExpression::optimize(Interpreter &interp, const Environment &env, Owner &expr) { test1_->optimize(interp, env, test1_); ELObj *obj = test1_->constantValue(); if (obj) { if (obj->isTrue()) expr = test1_.extract(); else { expr = test2_.extract(); expr->optimize(interp, env, expr); } } } InsnPtr OrExpression::compile(Interpreter &interp, const Environment &env, int stackPos, const InsnPtr &next) { return test1_->compile(interp, env, stackPos, new OrInsn(optimizeCompile(test2_, interp, env, stackPos, next), next)); } void OrExpression::markBoundVars(BoundVarList &vars, bool shared) { test1_->markBoundVars(vars, shared); test2_->markBoundVars(vars, shared); } CondFailExpression::CondFailExpression(const Location &loc) : Expression(loc) { } InsnPtr CondFailExpression::compile(Interpreter &, const Environment &, int, const InsnPtr &) { return new CondFailInsn(location()); } bool CondFailExpression::canEval(bool maybeCall) const { return 1; } CaseExpression::CaseExpression(Owner &key, NCVector &cases, Owner &elseClause, const Location &loc) : Expression(loc) { key.swap(key_); cases.swap(cases_); elseClause.swap(else_); } InsnPtr CaseExpression::compile(Interpreter &interp, const Environment &env, int stackPos, const InsnPtr &next) { InsnPtr finish; if (else_) finish = new PopInsn(else_->compile(interp, env, stackPos, next)); else finish = new CaseFailInsn(location()); for (size_t i = 0; i < cases_.size(); i++) { InsnPtr match = cases_[i].expr->compile(interp, env, stackPos, next); for (size_t j = 0; j < nResolved_[i]; j++) finish = new CaseInsn(cases_[i].datums[j], match, finish); } // FIXME handle unresolved quantities return key_->compile(interp, env, stackPos, finish); } void CaseExpression::markBoundVars(BoundVarList &vars, bool shared) { key_->markBoundVars(vars, shared); for (size_t i = 0; i < cases_.size(); i++) cases_[i].expr->markBoundVars(vars, shared); if (else_) else_->markBoundVars(vars, shared); } bool CaseExpression::canEval(bool maybeCall) const { if (!key_->canEval(maybeCall)) return 0; if (else_ && !else_->canEval(maybeCall)) return 0; for (size_t i = 0; i < cases_.size(); i++) { if (!cases_[i].expr->canEval(maybeCall)) return 0; if (nResolved_[i] == cases_[i].datums.size()) return 0; } return 1; } void CaseExpression::optimize(Interpreter &interp, const Environment &env, Owner &expr) { key_->optimize(interp, env, key_); ELObj *k = key_->constantValue(); nResolved_.assign(cases_.size(), 0); bool unresolved = 0; for (size_t i = 0; i < cases_.size(); i++) { cases_[i].expr->optimize(interp, env, cases_[i].expr); int nResolved = 0; for (size_t j = 0; j < cases_[i].datums.size(); j++) { ELObj *tem = cases_[i].datums[j]->resolveQuantities(0, interp, location()); if (tem) { if (k && ELObj::eqv(*k, *tem)) { expr = cases_[i].expr.extract(); return; } if (j != nResolved) cases_[i].datums[j] = cases_[i].datums[nResolved]; cases_[i].datums[nResolved++] = tem; } else unresolved = 1; } nResolved_[i] = nResolved; } if (else_) { else_->optimize(interp, env, else_); if (k && !unresolved) expr = else_.extract(); } else if (k && !unresolved) { interp.setNextLocation(location()); interp.message(InterpreterMessages::caseFail, ELObjMessageArg(k, interp)); } if (unresolved) { interp.setNextLocation(location()); interp.message(InterpreterMessages::caseUnresolvedQuantities); } } LambdaExpression::LambdaExpression(Vector &formals, NCVector > &inits, int nOptional, bool hasRest, int nKey, Owner &body, const Location &loc) : Expression(loc) { formals.swap(formals_); inits.swap(inits_); body.swap(body_); sig_.nRequiredArgs = formals_.size() - nOptional - nKey - hasRest; sig_.nOptionalArgs = nOptional; sig_.restArg = hasRest; sig_.nKeyArgs = nKey; sig_.keys = formals_.begin() + formals_.size() - nKey; } bool LambdaExpression::canEval(bool maybeCall) const { if (!maybeCall) return 1; if (!body_->canEval(1)) return 0; for (size_t i = 0; i < inits_.size(); i++) if (inits_[i] && !inits_[i]->canEval(1)) return 0; return 1; } InsnPtr LambdaExpression::compile(Interpreter &interp, const Environment &env, int stackPos, const InsnPtr &next) { BoundVarList boundVars; env.boundVars(boundVars); markBoundVars(boundVars, 0); boundVars.removeUnused(); BoundVarList formalVars(formals_, sig_.nRequiredArgs); for (int i = 0; i < sig_.nOptionalArgs + sig_.nKeyArgs; i++) { if (inits_[i]) inits_[i]->markBoundVars(formalVars, 0); formalVars.append(formals_[sig_.nRequiredArgs + i], 0); } if (sig_.restArg) formalVars.append(formals_.back(), 0); ASSERT(formalVars.size() == formals_.size()); body_->markBoundVars(formalVars, 0); InsnPtr code = optimizeCompile(body_, interp, Environment(formalVars, boundVars), formals_.size(), new ReturnInsn(formals_.size())); if (sig_.nOptionalArgs || sig_.restArg || sig_.nKeyArgs) { Vector entryPoints(sig_.nOptionalArgs + (sig_.restArg || sig_.nKeyArgs) + 1); // First entry point is for only required args supplied // Next entry is for one optional arg supplied, no rest arg // Next entry is for two optional args, no rest arg // .. // Next entry is for all optional args, no other args // Last entry is for all optional args supplied, and other args // (for this entry point all args are pushed; unspecified // keyword args are bound to 0). entryPoints.back() = code; // Box the rest arg if necessary. if (sig_.restArg && formalVars.back().boxed()) entryPoints.back() = new BoxStackInsn(-1 - sig_.nKeyArgs, entryPoints.back()); if (sig_.nKeyArgs) { // For each keyword argument test whether it is 0, // and if so initialize it. for (int i = sig_.nOptionalArgs + sig_.nKeyArgs - 1; i >= sig_.nOptionalArgs; i--) { int offset = i - (sig_.nOptionalArgs + sig_.nKeyArgs); InsnPtr &next = entryPoints.back(); InsnPtr set(new SetKeyArgInsn(offset, next)); if (formalVars[sig_.nRequiredArgs + i].boxed()) set = new BoxInsn(set); if (inits_[i]) { BoundVarList f(formalVars); f.resize(sig_.nRequiredArgs + i + sig_.restArg); set = optimizeCompile(inits_[i], interp, Environment(f, boundVars), formals_.size(), set); } else set = new ConstantInsn(interp.makeFalse(), set); next = new TestNullInsn(offset, set, next); } } if (sig_.restArg || sig_.nKeyArgs) { for (int i = sig_.nOptionalArgs + sig_.nKeyArgs - 1; i >= sig_.nOptionalArgs; i--) { if (formalVars[sig_.nRequiredArgs + i].boxed()) code = new BoxInsn(code); if (inits_[i]) { BoundVarList f(formalVars); f.resize(sig_.nRequiredArgs + i + sig_.restArg); code = optimizeCompile(inits_[i], interp, Environment(f, boundVars), f.size(), code); } else code = new ConstantInsn(interp.makeFalse(), code); } if (sig_.restArg) { if (formalVars.back().boxed()) code = new BoxInsn(code); code = new ConstantInsn(interp.makeNil(), code); } entryPoints[sig_.nOptionalArgs] = code; } for (int i = sig_.nOptionalArgs - 1; i >= 0; i--) { InsnPtr tem(entryPoints[i + 1]); if (formalVars[sig_.nRequiredArgs + i].boxed()) tem = new BoxInsn(tem); if (inits_[i]) { BoundVarList f(formalVars); f.resize(sig_.nRequiredArgs + i); entryPoints[i] = optimizeCompile(inits_[i], interp, Environment(f, boundVars), f.size(), tem); } else entryPoints[i] = new ConstantInsn(interp.makeFalse(), tem); } for (int i = 0; i < sig_.nOptionalArgs; i++) { if (formalVars[sig_.nRequiredArgs + i].boxed()) { for (int j = i; j < sig_.nOptionalArgs; j++) entryPoints[j + 1] = new BoxArgInsn(i + sig_.nRequiredArgs, entryPoints[j + 1]); if (sig_.nKeyArgs || sig_.restArg) entryPoints.back() = new BoxStackInsn(i - sig_.nKeyArgs - sig_.restArg - sig_.nOptionalArgs, entryPoints.back()); } } code = new VarargsInsn(sig_, entryPoints, location()); } for (int i = 0; i < sig_.nRequiredArgs; i++) if (formalVars[i].boxed()) code = new BoxArgInsn(i, code); return compilePushVars(interp, env, stackPos, boundVars, 0, new ClosureInsn(&sig_, code, boundVars.size(), next)); } InsnPtr Expression::compilePushVars(Interpreter &interp, const Environment &env, int stackPos, const BoundVarList &vars, size_t varIndex, const InsnPtr &next) { if (varIndex >= vars.size()) return next; bool isFrame; int index; unsigned flags; if (!env.lookup(vars[varIndex].ident, isFrame, index, flags)) CANNOT_HAPPEN(); if (isFrame) return new FrameRefInsn(index, compilePushVars(interp, env, stackPos + 1, vars, varIndex + 1, next)); else return new ClosureRefInsn(index, compilePushVars(interp, env, stackPos + 1, vars, varIndex + 1, next)); } void LambdaExpression::markBoundVars(BoundVarList &vars, bool shared) { for (int i = 0; i < sig_.nOptionalArgs + sig_.nKeyArgs; i++) if (inits_[i]) { Vector f(formals_); f.resize(sig_.nRequiredArgs + i + (sig_.restArg && i >= sig_.nOptionalArgs)); vars.rebind(f); inits_[i]->markBoundVars(vars, 1); vars.unbind(f); } vars.rebind(formals_); body_->markBoundVars(vars, 1); vars.unbind(formals_); } LetExpression::LetExpression(Vector &vars, NCVector > &inits, Owner &body, const Location &loc) : Expression(loc) { vars.swap(vars_); inits.swap(inits_); body.swap(body_); } bool LetExpression::canEval(bool maybeCall) const { if (!body_->canEval(maybeCall)) return 0; for (size_t i = 0; i < inits_.size(); i++) if (!inits_[i]->canEval(1)) return 0; return 1; } InsnPtr LetExpression::compile(Interpreter &interp, const Environment &env, int stackPos, const InsnPtr &next) { int nVars = vars_.size(); Environment bodyEnv(env); BoundVarList boundVars(vars_); body_->markBoundVars(boundVars, 0); bodyEnv.augmentFrame(boundVars, stackPos); return compileInits(interp, env, boundVars, 0, stackPos, optimizeCompile(body_, interp, bodyEnv, stackPos + nVars, PopBindingsInsn::make(nVars, next))); } InsnPtr LetExpression::compileInits(Interpreter &interp, const Environment &env, const BoundVarList &initVars, size_t initIndex, int stackPos, const InsnPtr &next) { if (initIndex >= inits_.size()) return next; InsnPtr tem = compileInits(interp, env, initVars, initIndex + 1, stackPos + 1, next); if (initVars[initIndex].boxed()) tem = new BoxInsn(tem); return optimizeCompile(inits_[initIndex], interp, env, stackPos, tem); } void LetExpression::markBoundVars(BoundVarList &vars, bool shared) { for (size_t i = 0; i < inits_.size(); i++) inits_[i]->markBoundVars(vars, shared); vars.rebind(vars_); body_->markBoundVars(vars, shared); vars.unbind(vars_); } LetStarExpression::LetStarExpression(Vector &vars, NCVector > &inits, Owner &body, const Location &loc) : LetExpression(vars, inits, body, loc) { } InsnPtr LetStarExpression::compile(Interpreter &interp, const Environment &env, int stackPos, const InsnPtr &next) { int nVars = vars_.size(); Environment bodyEnv(env); BoundVarList vars; for (int i = 0; i < nVars; i++) { if (i > 0) inits_[i]->markBoundVars(vars, 0); vars.append(vars_[i], 0); } body_->markBoundVars(vars, 0); bodyEnv.augmentFrame(vars, stackPos); return compileInits(interp, env, vars, 0, stackPos, optimizeCompile(body_, interp, bodyEnv, stackPos + vars_.size(), PopBindingsInsn::make(nVars, next))); } InsnPtr LetStarExpression::compileInits(Interpreter &interp, const Environment &env, const BoundVarList &initVars, size_t initIndex, int stackPos, const InsnPtr &next) { if (initIndex >= inits_.size()) return next; Environment nextEnv(env); BoundVarList vars; vars.append(initVars[initIndex].ident, initVars[initIndex].flags); nextEnv.augmentFrame(vars, stackPos); InsnPtr tem = compileInits(interp, nextEnv, initVars, initIndex + 1, stackPos + 1, next); if (initVars[initIndex].boxed()) tem = new BoxInsn(tem); return optimizeCompile(inits_[initIndex], interp, env, stackPos, tem); } LetrecExpression::LetrecExpression(Vector &vars, NCVector > &inits, Owner &body, const Location &loc) : Expression(loc) { vars.swap(vars_); inits.swap(inits_); body.swap(body_); } bool LetrecExpression::canEval(bool maybeCall) const { if (!body_->canEval(maybeCall)) return 0; for (size_t i = 0; i < inits_.size(); i++) if (!inits_[i]->canEval(1)) return 0; return 1; } InsnPtr LetrecExpression::compile(Interpreter &interp, const Environment &env, int stackPos, const InsnPtr &next) { int nVars = vars_.size(); BoundVarList vars(vars_, nVars, BoundVar::assignedFlag); Environment bodyEnv(env); for (size_t i = 0; i < nVars; i++) inits_[i]->markBoundVars(vars, 0); body_->markBoundVars(vars, 0); bodyEnv.augmentFrame(vars, stackPos); InsnPtr tem = optimizeCompile(body_, interp, bodyEnv, stackPos + nVars, PopBindingsInsn::make(nVars, next)); for (size_t i = 0; i < nVars; i++) vars[i].flags |= BoundVar::uninitFlag; for (int i = 0; i < nVars; i++) { if (vars[i].boxed()) tem = new SetBoxInsn(nVars, tem); else tem = new SetImmediateInsn(nVars, tem); } tem = compileInits(interp, bodyEnv, 0, stackPos + nVars, tem); for (int i = nVars; i > 0; --i) { if (vars[i - 1].boxed()) tem = new BoxInsn(tem); tem = new ConstantInsn(0, tem); } return tem; } InsnPtr LetrecExpression::compileInits(Interpreter &interp, const Environment &env, size_t initIndex, int stackPos, const InsnPtr &next) { if (initIndex >= inits_.size()) return next; return optimizeCompile(inits_[initIndex], interp, env, stackPos, compileInits(interp, env, initIndex + 1, stackPos + 1, next)); } void LetrecExpression::markBoundVars(BoundVarList &vars, bool shared) { vars.rebind(vars_); for (size_t i = 0; i < inits_.size(); i++) inits_[i]->markBoundVars(vars, shared); body_->markBoundVars(vars, shared); vars.unbind(vars_); } QuasiquoteExpression::QuasiquoteExpression(NCVector > &members, Vector &spliced, Type type, const Location &loc) : Expression(loc), spliced_(spliced), type_(type) { members.swap(members_); } InsnPtr QuasiquoteExpression::compile(Interpreter &interp, const Environment &env, int stackPos, const InsnPtr &next) { InsnPtr tem(next); size_t n = members_.size(); if (type_ == vectorType) { bool splicy = 0; for (size_t i = 0; i < n; i++) { if (spliced_[i]) { splicy = 1; break; } } if (!splicy) { tem = new VectorInsn(n, tem); for (size_t i = n; i > 0; i--) tem = members_[i - 1]->compile(interp, env, stackPos + (i - 1), tem); return tem; } tem = new ListToVectorInsn(tem); } else if (type_ == improperType) n--; for (size_t i = 0; i < n; i++) { if (spliced_[i]) tem = new AppendInsn(location(), tem); else tem = new ConsInsn(tem); tem = members_[i]->compile(interp, env, stackPos + 1, tem); } if (type_ == improperType) tem = members_.back()->compile(interp, env, stackPos, tem); else tem = new ConstantInsn(interp.makeNil(), tem); return tem; } void QuasiquoteExpression::markBoundVars(BoundVarList &vars, bool shared) { for (size_t i = 0; i < members_.size(); i++) members_[i]->markBoundVars(vars, shared); } bool QuasiquoteExpression::canEval(bool maybeCall) const { for (size_t i = 0; i < members_.size(); i++) if (!members_[i]->canEval(maybeCall)) return 0; return 1; } void QuasiquoteExpression::optimize(Interpreter &interp, const Environment &env, Owner &expr) { for (size_t i = 0; i < members_.size(); i++) members_[i]->optimize(interp, env, members_[i]); if (type_ == vectorType) return; if (members_.size() == 0) { expr = new ResolvedConstantExpression(interp.makeNil(), location()); return; } ELObj *tail = members_.back()->constantValue(); if (!tail) return; ASSERT(!(spliced_.back() && type_ == improperType)); if (type_ != improperType && !spliced_.back()) { tail = interp.makePair(tail, interp.makeNil()); interp.makePermanent(tail); } for (size_t i = members_.size() - 1; i-- > 0;) { ELObj *tem = members_[i]->constantValue(); // FIXME optimize splice as well if (!tem || spliced_[i]) { members_.resize(i + 2); type_ = improperType; members_[i + 1] = new ResolvedConstantExpression(tail, location()); return; } tail = interp.makePair(tem, tail); interp.makePermanent(tail); } expr = new ResolvedConstantExpression(tail, location()); } SequenceExpression::SequenceExpression(NCVector > &sequence, const Location &loc) : Expression(loc) { ASSERT(sequence.size() > 0); sequence.swap(sequence_); } InsnPtr SequenceExpression::compile(Interpreter &interp, const Environment &env, int stackPos, const InsnPtr &next) { // FIXME optimize this InsnPtr result(sequence_.back()->compile(interp, env, stackPos, next)); for (size_t i = sequence_.size() - 1; i > 0; i--) result = sequence_[i - 1]->compile(interp, env, stackPos, new PopInsn(result)); return result; } void SequenceExpression::markBoundVars(BoundVarList &vars, bool shared) { for (size_t i = 0; i < sequence_.size(); i++) sequence_[i]->markBoundVars(vars, shared); } bool SequenceExpression::canEval(bool maybeCall) const { for (size_t i = 0; i < sequence_.size(); i++) if (!sequence_[i]->canEval(maybeCall)) return 0; return 1; } void SequenceExpression::optimize(Interpreter &interp, const Environment &env, Owner &expr) { size_t j = 0; for (size_t i = 0;; i++) { if (j != i) sequence_[j].swap(sequence_[i]); sequence_[j]->optimize(interp, env, sequence_[j]); if (i == sequence_.size() - 1) break; if (!sequence_[j]->constantValue()) j++; } if (j == 0) sequence_[0].swap(expr); else sequence_.resize(j + 1); } AssignmentExpression::AssignmentExpression(const Identifier *var, Owner &value, const Location &loc) : Expression(loc), var_(var) { value.swap(value_); } InsnPtr AssignmentExpression::compile(Interpreter &interp, const Environment &env, int stackPos, const InsnPtr &next) { bool isFrame; int index; unsigned flags; if (!env.lookup(var_, isFrame, index, flags)) { interp.setNextLocation(location()); unsigned part; Location loc; if (var_->defined(part, loc)) interp.message(InterpreterMessages::topLevelAssignment, StringMessageArg(var_->name())); else interp.message(InterpreterMessages::undefinedVariableReference, StringMessageArg(var_->name())); return new ErrorInsn; } InsnPtr result; if (flags & BoundVar::uninitFlag) result = new CheckInitInsn(var_, location(), next); else result = next; if (isFrame) { if (BoundVar::flagsBoxed(flags)) result = new StackSetBoxInsn(index - (stackPos + 1), index, location(), result); else result = new StackSetInsn(index - (stackPos + 1), index, result); } else { ASSERT(BoundVar::flagsBoxed(flags)); result = new ClosureSetBoxInsn(index, location(), result); } return optimizeCompile(value_, interp, env, stackPos, result); } void AssignmentExpression::markBoundVars(BoundVarList &vars, bool shared) { vars.mark(var_, (BoundVar::usedFlag |BoundVar::assignedFlag |(shared ? BoundVar::sharedFlag : 0))); value_->markBoundVars(vars, shared); } bool AssignmentExpression::canEval(bool maybeCall) const { return value_->canEval(maybeCall); } WithModeExpression::WithModeExpression(const ProcessingMode *mode, Owner &expr, const Location &loc) : Expression(loc), mode_(mode) { expr.swap(expr_); } InsnPtr WithModeExpression::compile(Interpreter &interp, const Environment &env, int stackPos, const InsnPtr &next) { if (!mode_->defined()) { interp.setNextLocation(location()); interp.message(InterpreterMessages::undefinedMode, StringMessageArg(mode_->name())); } return new PushModeInsn(mode_, optimizeCompile(expr_, interp, env, stackPos, new PopModeInsn(next))); } void WithModeExpression::markBoundVars(BoundVarList &vars, bool shared) { expr_->markBoundVars(vars, shared); } bool WithModeExpression::canEval(bool maybeCall) const { return expr_->canEval(maybeCall); } StyleExpression::StyleExpression(Vector &keys, NCVector > &exprs, const Location &loc) : Expression(loc) { keys.swap(keys_); exprs.swap(exprs_); } // Interpret keywords in the following order of preference // 1. non-inherited characteristics // 2. DSSSL defined meaning (use: content-map:) etc // 3. inherited characteristics InsnPtr StyleExpression::compile(Interpreter &interp, const Environment &env, int stackPos, const InsnPtr &next) { Vector > ics; Vector > forceIcs; Vector forceKeys(keys_.size()); for (size_t i = 0; i < keys_.size(); i++) { forceKeys[i] = 0; if (keys_[i]->name().size() > 6) { StringC prefix(keys_[i]->name().data(), 6); if (prefix == interp.makeStringC("force!")) { StringC name(keys_[i]->name().data() + 6, keys_[i]->name().size() - 6); forceKeys[i] = interp.lookup(name); } } } bool hasUse = 0; size_t useIndex; BoundVarList boundVars; env.boundVars(boundVars); for (size_t i = 0; i < keys_.size(); i++) { Identifier::SyntacticKey sk; if (forceKeys[i] && maybeStyleKeyword(forceKeys[i]) && !forceKeys[i]->inheritedC().isNull()) { forceIcs.resize(forceIcs.size() + 1); exprs_[i]->markBoundVars(boundVars, 0); } else if (maybeStyleKeyword(keys_[i]) && !(keys_[i]->syntacticKey(sk) && sk == Identifier::keyUse) && !keys_[i]->inheritedC().isNull()) { ics.resize(ics.size() + 1); exprs_[i]->markBoundVars(boundVars, 0); } } // FIXME optimize case where ics.size() == 0 boundVars.removeUnused(); BoundVarList noVars; Environment newEnv(noVars, boundVars); size_t j = 0; size_t k = 0; for (size_t i = 0; i < keys_.size(); i++) { Identifier::SyntacticKey sk; if (forceKeys[i] && maybeStyleKeyword(forceKeys[i]) && !forceKeys[i]->inheritedC().isNull()) { exprs_[i]->optimize(interp, newEnv, exprs_[i]); ELObj *val = exprs_[i]->constantValue(); if (val) { interp.makePermanent(val); forceIcs[k] = forceKeys[i]->inheritedC()->make(val, exprs_[i]->location(), interp); if (forceIcs[k].isNull()) forceIcs.resize(forceIcs.size() - 1); else k++; } else { forceIcs[k++] = new VarInheritedC(forceKeys[i]->inheritedC(), exprs_[i]->compile(interp, newEnv, 0, InsnPtr()), exprs_[i]->location()); } } else if (!maybeStyleKeyword(keys_[i])) ; else if (keys_[i]->syntacticKey(sk) && sk == Identifier::keyUse) { if (!hasUse) { hasUse = 1; useIndex = i; } } else if (!keys_[i]->inheritedC().isNull()) { exprs_[i]->optimize(interp, newEnv, exprs_[i]); ELObj *val = exprs_[i]->constantValue(); if (val) { interp.makePermanent(val); ics[j] = keys_[i]->inheritedC()->make(val, exprs_[i]->location(), interp); if (ics[j].isNull()) ics.resize(ics.size() - 1); else j++; } else { ics[j++] = new VarInheritedC(keys_[i]->inheritedC(), exprs_[i]->compile(interp, newEnv, 0, InsnPtr()), exprs_[i]->location()); } } else unknownStyleKeyword(keys_[i], interp, location()); } InsnPtr result = compilePushVars(interp, env, stackPos + hasUse, boundVars, 0, new VarStyleInsn(new StyleSpec(forceIcs, ics), boundVars.size(), hasUse, new MaybeOverrideStyleInsn(next))); if (!hasUse) return result; else { result = new CheckStyleInsn(location(), result); return optimizeCompile(exprs_[useIndex], interp, env, stackPos, result); } } void StyleExpression::markBoundVars(BoundVarList &vars, bool shared) { for (size_t i = 0; i < exprs_.size(); i++) exprs_[i]->markBoundVars(vars, 1); } bool StyleExpression::canEval(bool maybeCall) const { for (size_t i = 0; i < exprs_.size(); i++) if (!exprs_[i]->canEval(maybeCall)) return 0; return 1; } void StyleExpression::unknownStyleKeyword(const Identifier *ident, Interpreter &interp, const Location &loc) const { interp.setNextLocation(loc); StringC tem(ident->name()); tem += Char(':'); interp.message(InterpreterMessages::invalidStyleKeyword, StringMessageArg(tem)); } bool StyleExpression::maybeStyleKeyword(const Identifier *ident) const { return 1; } MakeExpression::MakeExpression(const Identifier *foc, Vector &keys, NCVector > &exprs, const Location &loc) : foc_(foc), StyleExpression(keys, exprs, loc) { } InsnPtr MakeExpression::compile(Interpreter &interp, const Environment &env, int stackPos, const InsnPtr &next) { FlowObj *flowObj = foc_->flowObj(); if (!flowObj) { interp.setNextLocation(location()); interp.message(InterpreterMessages::unknownFlowObjectClass, StringMessageArg(foc_->name())); flowObj = new (interp) SequenceFlowObj; interp.makePermanent(flowObj); } Owner *contentMapExpr = 0; InsnPtr rest(next); for (size_t i = 0; i < keys_.size(); i++) { Identifier::SyntacticKey syn; if (!flowObj->hasNonInheritedC(keys_[i]) && keys_[i]->syntacticKey(syn)) { if (syn == Identifier::keyLabel) rest = optimizeCompile(exprs_[i], interp, env, stackPos + 1, new LabelSosofoInsn(exprs_[i]->location(), rest)); else if (syn == Identifier::keyContentMap) contentMapExpr = &exprs_[i]; } } flowObj = applyConstNonInheritedCs(flowObj, interp, env); size_t nContent = exprs_.size() - keys_.size(); CompoundFlowObj *cFlowObj = flowObj->asCompoundFlowObj(); if (!cFlowObj && nContent > 0) { interp.setNextLocation(location()); interp.message(InterpreterMessages::atomicContent, StringMessageArg(foc_->name())); nContent = 0; } rest = compileNonInheritedCs(interp, env, stackPos + 1, rest); for (size_t i = 0; i < keys_.size(); i++) { if (flowObj->hasPseudoNonInheritedC(keys_[i]) && !exprs_[i]->constantValue()) { rest = exprs_[i]->compile(interp, env, stackPos + 1, new SetPseudoNonInheritedCInsn(keys_[i], exprs_[i]->location(), rest)); } } // FIXME optimize case where there are no non-inherited styles. rest = StyleExpression::compile(interp, env, stackPos + 1, new SetStyleInsn(rest)); if (nContent == 0 && !contentMapExpr) { if (cFlowObj) return new SetDefaultContentInsn(cFlowObj, location(), rest); else return new CopyFlowObjInsn(flowObj, rest); } rest = new SetContentInsn(cFlowObj, rest); if (contentMapExpr) { rest = optimizeCompile(*contentMapExpr, interp, env, stackPos + 1, new ContentMapSosofoInsn((*contentMapExpr)->location(), rest)); if (nContent == 0) return new MakeDefaultContentInsn(location(), rest); } // FIXME get rid of CheckSosofoInsn if we can guarantee result is a SosofoObj. if (nContent == 1) return optimizeCompile(exprs_.back(), interp, env, stackPos, new CheckSosofoInsn(exprs_.back()->location(), rest)); rest = new SosofoAppendInsn(nContent, rest); for (size_t i = 1; i <= nContent; i++) rest = optimizeCompile(exprs_[exprs_.size() - i], interp, env, stackPos + nContent - i, new CheckSosofoInsn(exprs_[exprs_.size() - i]->location(), rest)); return rest; } FlowObj *MakeExpression::applyConstNonInheritedCs(FlowObj *flowObj, Interpreter &interp, const Environment &env) { FlowObj *result = flowObj; for (size_t i = 0; i < keys_.size(); i++) if (flowObj->hasNonInheritedC(keys_[i]) || flowObj->hasPseudoNonInheritedC(keys_[i])) { exprs_[i]->optimize(interp, env, exprs_[i]); ELObj *val = exprs_[i]->constantValue(); if (val) { if (result == flowObj) { result = flowObj->copy(interp); interp.makePermanent(result); } result->setNonInheritedC(keys_[i], val, exprs_[i]->location(), interp); } } return result; } // Have a copied flow object on the stack. // Generate code to set its non-constant, non-inherited characteristics. InsnPtr MakeExpression::compileNonInheritedCs(Interpreter &interp, const Environment &env, int stackPos, const InsnPtr &next) { FlowObj *flowObj = foc_->flowObj(); if (!flowObj) return next; bool gotOne = flowObj->isCharacter(); BoundVarList boundVars; env.boundVars(boundVars); for (size_t i = 0; i < keys_.size(); i++) { if (flowObj->hasNonInheritedC(keys_[i]) && !exprs_[i]->constantValue()) { exprs_[i]->markBoundVars(boundVars, 0); gotOne = 1; } } if (!gotOne) return next; boundVars.removeUnused(); BoundVarList noVars; Environment newEnv(noVars, boundVars); InsnPtr code; for (size_t i = 0; i < keys_.size(); i++) if (flowObj->hasNonInheritedC(keys_[i]) && !exprs_[i]->constantValue()) code = exprs_[i]->compile(interp, newEnv, 1, new SetNonInheritedCInsn(keys_[i], exprs_[i]->location(), code)); InsnPtr rest(new SetNonInheritedCsSosofoInsn(code, boundVars.size(), next)); if (flowObj->isCharacter()) rest = new SetImplicitCharInsn(Location(), rest); return compilePushVars(interp, env, stackPos, boundVars, 0, rest); } void MakeExpression::unknownStyleKeyword(const Identifier *ident, Interpreter &interp, const Location &loc) const { FlowObj *flowObj = foc_->flowObj(); if (!flowObj) return; Identifier::SyntacticKey key; if (ident->syntacticKey(key)) { switch(key) { case Identifier::keyLabel: case Identifier::keyContentMap: return; default: break; } } if (flowObj->hasNonInheritedC(ident) || flowObj->hasPseudoNonInheritedC(ident)) return; interp.setNextLocation(loc); StringC tem(ident->name()); tem += Char(':'); interp.message(InterpreterMessages::invalidMakeKeyword, StringMessageArg(tem), StringMessageArg(foc_->name())); } bool MakeExpression::maybeStyleKeyword(const Identifier *ident) const { FlowObj *flowObj = foc_->flowObj(); if (!flowObj) return 1; return (!flowObj->hasNonInheritedC(ident) && !flowObj->hasPseudoNonInheritedC(ident)); } Environment::Environment() : closureVars_(0) { } Environment::Environment(const BoundVarList &frameVars, const BoundVarList &closureVars) : closureVars_(&closureVars) { FrameVarList *tem = new FrameVarList; frameVarList_ = tem; tem->vars = &frameVars; tem->stackPos = 0; } void Environment::boundVars(BoundVarList &result) const { if (closureVars_) { for (size_t i = 0; i < closureVars_->size(); i++) result.append((*closureVars_)[i].ident, (*closureVars_)[i].flags); } for (const FrameVarList *f = frameVarList_.pointer(); f; f = f->next.pointer()) { for (size_t i = 0; i < f->vars->size(); i++) result.append((*f->vars)[i].ident, (*f->vars)[i].flags); } } bool Environment::lookup(const Identifier *ident, bool &isFrame, int &index, unsigned &flags) const { for (const FrameVarList *p = frameVarList_.pointer(); p; p = p->next.pointer()) { for (size_t i = 0; i < p->vars->size(); i++) if ((*p->vars)[i].ident == ident) { isFrame = true; index = i + p->stackPos; flags = (*p->vars)[i].flags; return true; } } if (closureVars_) { for (size_t i = 0; i < closureVars_->size(); i++) if ((*closureVars_)[i].ident == ident) { isFrame = false; index = i; flags = (*closureVars_)[i].flags; return true; } } return false; } void Environment::augmentFrame(const BoundVarList &vars, int stackPos) { FrameVarList *tem = new FrameVarList; tem->stackPos = stackPos; tem->vars = &vars; tem->next = frameVarList_; frameVarList_ = tem; } BoundVarList::BoundVarList(const Vector &idents) : Vector(idents.size()) { for (size_t i = 0; i < size(); i++) { BoundVar &tem = (*this)[i]; tem.ident = idents[i]; tem.reboundCount = 0; tem.flags = 0; } } BoundVarList::BoundVarList(const Vector &idents, size_t n, unsigned flags) : Vector(n) { for (size_t i = 0; i < n; i++) { BoundVar &tem = (*this)[i]; tem.ident = idents[i]; tem.reboundCount = 0; tem.flags = (flags & ~BoundVar::usedFlag); } } void BoundVarList::append(const Identifier *id, unsigned flags) { resize(size() + 1); BoundVar &tem = back(); tem.ident = id; tem.flags = (flags & ~BoundVar::usedFlag); tem.reboundCount = 0; } void BoundVarList::remove(const Vector &idents) { size_t j = 0; for (size_t i = 0; i < size(); i++) { const Identifier *ident = (*this)[i].ident; for (size_t k = 0;; k++) { if (k >= idents.size()) { if (j != i) (*this)[j] = (*this)[i]; j++; break; } if (idents[k] == ident) break; // skip it } } resize(j); } void BoundVarList::removeUnused() { size_t j = 0; for (size_t i = 0; i < size(); i++) { if ((*this)[i].flags & BoundVar::usedFlag) { if (j != i) (*this)[j] = (*this)[i]; j++; } } resize(j); } void BoundVarList::mark(const Identifier *ident, unsigned flags) { BoundVar *bv = find(ident); if (bv && !bv->reboundCount) bv->flags |= flags; } void BoundVarList::rebind(const Vector &idents) { for (size_t i = 0; i < idents.size(); i++) { BoundVar *bv = find(idents[i]); if (bv) bv->reboundCount += 1; } } void BoundVarList::unbind(const Vector &idents) { for (size_t i = 0; i < idents.size(); i++) { BoundVar *bv = find(idents[i]); if (bv) bv->reboundCount -= 1; } } BoundVar *BoundVarList::find(const Identifier *ident) { for (size_t i = 0; i < size(); i++) if ((*this)[i].ident == ident) return &(*this)[i]; return 0; } #ifdef DSSSL_NAMESPACE } #endif openjade-1.3.2/style/Expression.h0100664000076400007640000002702506713070461015077 0ustar ianian// Copyright (c) 1996 James Clark // See the file copying.txt for copying permission. #ifndef Expression_INCLUDED #define Expression_INCLUDED 1 #include "ELObj.h" #include "Owner.h" #include "Vector.h" #include "NCVector.h" #include "Resource.h" #include "Ptr.h" #include "Insn.h" #include "Named.h" #include "Location.h" #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif class Interpreter; class Identifier; struct BoundVar { const Identifier *ident; enum { usedFlag = 01, assignedFlag = 02, sharedFlag = 04, uninitFlag = 010, boxedFlags = assignedFlag|sharedFlag }; static bool flagsBoxed(unsigned f) { return (f & boxedFlags) == boxedFlags; } bool boxed() const { return flagsBoxed(flags); } unsigned flags; unsigned reboundCount; }; class BoundVarList : public Vector { public: BoundVarList() { } BoundVarList(const Vector &); BoundVarList(const Vector &, size_t, unsigned flags = 0); void append(const Identifier *, unsigned flags); void mark(const Identifier *, unsigned flags); void removeUnused(); void remove(const Vector &); void rebind(const Vector &); void unbind(const Vector &); BoundVar *find(const Identifier *); }; class Environment { public: Environment(); Environment(const BoundVarList &frameVars, const BoundVarList &closureVars); void boundVars(BoundVarList &) const; bool lookup(const Identifier *var, bool &isFrame, int &index, unsigned &flags) const; void augmentFrame(const BoundVarList &, int stackPos); private: struct FrameVarList : public Resource { int stackPos; const BoundVarList *vars; ConstPtr next; }; ConstPtr frameVarList_; const BoundVarList *closureVars_; }; class Expression { public: Expression(const Location &); virtual ~Expression() { } virtual InsnPtr compile(Interpreter &, const Environment &, int, const InsnPtr &) = 0; static InsnPtr optimizeCompile(Owner &, Interpreter &, const Environment &, int, const InsnPtr &); virtual void markBoundVars(BoundVarList &vars, bool); virtual void optimize(Interpreter &, const Environment &, Owner &); virtual ELObj *constantValue() const; virtual bool canEval(bool maybeCall) const = 0; virtual const Identifier *keyword() const; const Location &location() const; protected: static InsnPtr compilePushVars(Interpreter &interp, const Environment &env, int stackPos, const BoundVarList &vars, size_t varIndex, const InsnPtr &next); private: Location loc_; }; class ConstantExpression : public Expression { public: ConstantExpression(ELObj *, const Location &); InsnPtr compile(Interpreter &, const Environment &, int, const InsnPtr &); void optimize(Interpreter &, const Environment &, Owner &); bool canEval(bool maybeCall) const; const Identifier *keyword() const; private: ELObj *obj_; // must be permanent }; class ResolvedConstantExpression : public Expression { public: ResolvedConstantExpression(ELObj *, const Location &); InsnPtr compile(Interpreter &, const Environment &, int, const InsnPtr &); bool canEval(bool maybeCall) const; ELObj *constantValue() const; private: ELObj *obj_; }; class CallExpression : public Expression { public: CallExpression(Owner &, NCVector > &, const Location &loc); InsnPtr compile(Interpreter &, const Environment &, int, const InsnPtr &); void markBoundVars(BoundVarList &vars, bool); int nArgs(); bool canEval(bool maybeCall) const; private: Owner op_; NCVector > args_; }; class VariableExpression : public Expression { public: VariableExpression(const Identifier *, const Location &loc); InsnPtr compile(Interpreter &, const Environment &, int, const InsnPtr &); void optimize(Interpreter &, const Environment &, Owner &); void markBoundVars(BoundVarList &vars, bool); bool canEval(bool maybeCall) const; private: const Identifier *ident_; bool isTop_; }; class IfExpression : public Expression { public: IfExpression(Owner &, Owner &, Owner &, const Location &); InsnPtr compile(Interpreter &, const Environment &, int, const InsnPtr &); void markBoundVars(BoundVarList &vars, bool); bool canEval(bool maybeCall) const; void optimize(Interpreter &, const Environment &, Owner &); private: Owner test_; Owner consequent_; Owner alternate_; }; class OrExpression : public Expression { public: OrExpression(Owner &, Owner &, const Location &); InsnPtr compile(Interpreter &, const Environment &, int, const InsnPtr &); void markBoundVars(BoundVarList &vars, bool); bool canEval(bool maybeCall) const; void optimize(Interpreter &, const Environment &, Owner &); private: Owner test1_; Owner test2_; }; class CondFailExpression : public Expression { public: CondFailExpression(const Location &); InsnPtr compile(Interpreter &, const Environment &, int, const InsnPtr &); bool canEval(bool maybeCall) const; }; class CaseExpression : public Expression { public: struct Case { Vector datums; Owner expr; }; CaseExpression(Owner &, NCVector &, Owner &, const Location &); InsnPtr compile(Interpreter &, const Environment &, int, const InsnPtr &); void markBoundVars(BoundVarList &vars, bool); bool canEval(bool maybeCall) const; void optimize(Interpreter &, const Environment &, Owner &); private: Owner key_; NCVector cases_; Vector nResolved_; Owner else_; }; class LambdaExpression : public Expression { public: LambdaExpression(Vector &vars, NCVector > &inits, int nOptional, bool hasRest, int nKey, Owner &body, const Location &); InsnPtr compile(Interpreter &, const Environment &, int, const InsnPtr &); void markBoundVars(BoundVarList &vars, bool); bool canEval(bool maybeCall) const; private: Vector formals_; NCVector > inits_; Signature sig_; Owner body_; }; class LetExpression : public Expression { public: LetExpression(Vector &vars, NCVector > &inits, Owner &body, const Location &); InsnPtr compile(Interpreter &, const Environment &, int, const InsnPtr &); void markBoundVars(BoundVarList &vars, bool); bool canEval(bool maybeCall) const; protected: InsnPtr compileInits(Interpreter &interp, const Environment &env, const BoundVarList &initVars, size_t initIndex, int stackPos, const InsnPtr &next); Vector vars_; NCVector > inits_; Owner body_; }; class LetStarExpression : public LetExpression { public: LetStarExpression(Vector &vars, NCVector > &inits, Owner &body, const Location &); InsnPtr compile(Interpreter &, const Environment &, int, const InsnPtr &); private: InsnPtr compileInits(Interpreter &interp, const Environment &env, const BoundVarList &initVars, size_t initIndex, int stackPos, const InsnPtr &next); }; class LetrecExpression : public Expression { public: LetrecExpression(Vector &vars, NCVector > &inits, Owner &body, const Location &); InsnPtr compile(Interpreter &, const Environment &, int, const InsnPtr &); void markBoundVars(BoundVarList &vars, bool); bool canEval(bool maybeCall) const; private: InsnPtr compileInits(Interpreter &interp, const Environment &env, size_t initIndex, int stackPos, const InsnPtr &next); Vector vars_; NCVector > inits_; Owner body_; }; class QuasiquoteExpression : public Expression { public: enum Type { listType, improperType, vectorType }; QuasiquoteExpression(NCVector > &, Vector &spliced, Type type, const Location &); InsnPtr compile(Interpreter &, const Environment &, int, const InsnPtr &); void markBoundVars(BoundVarList &vars, bool); bool canEval(bool maybeCall) const; void optimize(Interpreter &, const Environment &, Owner &); private: NCVector > members_; Vector spliced_; Type type_; }; class SequenceExpression : public Expression { public: SequenceExpression(NCVector > &, const Location &); InsnPtr compile(Interpreter &, const Environment &, int, const InsnPtr &); void markBoundVars(BoundVarList &vars, bool); bool canEval(bool maybeCall) const; void optimize(Interpreter &, const Environment &, Owner &); private: NCVector > sequence_; }; class AssignmentExpression : public Expression { public: AssignmentExpression(const Identifier *, Owner &, const Location &); InsnPtr compile(Interpreter &, const Environment &, int, const InsnPtr &); void markBoundVars(BoundVarList &vars, bool); bool canEval(bool maybeCall) const; private: const Identifier *var_; Owner value_; }; class ProcessingMode; class WithModeExpression : public Expression { public: WithModeExpression(const ProcessingMode *, Owner &, const Location &); InsnPtr compile(Interpreter &, const Environment &, int, const InsnPtr &); void markBoundVars(BoundVarList &vars, bool); bool canEval(bool maybeCall) const; private: const ProcessingMode *mode_; Owner expr_; }; class StyleExpression : public Expression { public: StyleExpression(Vector &, NCVector > &, const Location &loc); InsnPtr compile(Interpreter &, const Environment &, int, const InsnPtr &); void markBoundVars(BoundVarList &vars, bool); bool canEval(bool maybeCall) const; protected: virtual void unknownStyleKeyword(const Identifier *ident, Interpreter &interp, const Location &loc) const; virtual bool maybeStyleKeyword(const Identifier *ident) const; Vector keys_; NCVector > exprs_; }; class FlowObj; class MakeExpression : public StyleExpression { public: MakeExpression(const Identifier *, Vector &, NCVector > &, const Location &loc); InsnPtr compile(Interpreter &, const Environment &, int, const InsnPtr &); private: InsnPtr compileNonInheritedCs(Interpreter &interp, const Environment &env, int stackPos, const InsnPtr &next); FlowObj *applyConstNonInheritedCs(FlowObj *, Interpreter &, const Environment &); void unknownStyleKeyword(const Identifier *ident, Interpreter &interp, const Location &loc) const; bool maybeStyleKeyword(const Identifier *ident) const; const Identifier *foc_; }; inline const Location &Expression::location() const { return loc_; } inline InsnPtr Expression::optimizeCompile(Owner &expr, Interpreter &interp, const Environment &env, int stackPos, const InsnPtr &next) { expr->optimize(interp, env, expr); return expr->compile(interp, env, stackPos, next); } #ifdef DSSSL_NAMESPACE } #endif #endif /* not Expression_INCLUDED */ openjade-1.3.2/style/FOTBuilder.cxx0100664000076400007640000014463006755077552015272 0ustar ianian// Copyright (c) 1996 James Clark // See the file copying.txt for copying permission. #include "stylelib.h" #include "FOTBuilder.h" #include "Owner.h" #include "macros.h" #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif const char *FOTBuilder::symbolName(Symbol sym) { if (sym < 2 || sym >= int(nSymbols)) return 0; // These must match the order in Symbol static const char *names[] = { "not-applicable", "ultra-condensed", "extra-condensed", "condensed", "semi-condensed", "ultra-light", "extra-light", "light", "semi-light", "medium", "semi-expanded", "expanded", "extra-expanded", "ultra-expanded", "semi-bold", "bold", "extra-bold", "ultra-bold", "upright", "oblique", "back-slanted-oblique", "italic", "back-slanted-italic", "start", "end", "center", "justify", "spread-inside", "spread-outside", "page-inside", "page-outside", "wrap", "asis", "asis-wrap", "asis-truncate", "none", "before", "through", "after", "top-to-bottom", "left-to-right", "bottom-to-top", "right-to-left", "inside", "outside", "horizontal", "vertical", "escapement", "line-progression", "math", "ordinary", "operator", "binary", "relation", "opening", "closing", "punctuation", "inner", "space", "page", "page-region", "column-set", "column", "max", "max-uniform", "miter", "round", "join", "butt", "square", "loose", "normal", "kern", "tight", "touch", "preserve", "collapse", "ignore", "relative", "display", "inline", "border", "background", "both", "base", "font", "top", "bottom", "spread", "solid", "outline", "with", "against", "force", "independent", "pile", "sup-out", "sub-out", "lead-edge", "trail-edge", "explicit", "row-major", "column-major", }; ASSERT(SIZEOF(names) == nSymbols - 2); return names[sym - 2]; } SaveFOTBuilder *FOTBuilder::asSaveFOTBuilder() { return 0; } FOTBuilder::~FOTBuilder() { } void FOTBuilder::start() { } void FOTBuilder::end() { } void FOTBuilder::atomic() { start(); end(); } void FOTBuilder::characters(const Char *, size_t) { } void FOTBuilder::charactersFromNode(const NodePtr &, const Char *s, size_t n) { characters(s, n); } void FOTBuilder::character(const CharacterNIC &nic) { if (nic.valid) characters(&nic.ch, 1); atomic(); } void FOTBuilder::startSequence() { start(); } void FOTBuilder::endSequence() { end(); } void FOTBuilder::startLineField(const LineFieldNIC &) { start(); } void FOTBuilder::endLineField() { end(); } void FOTBuilder::paragraphBreak(const ParagraphNIC &) { atomic(); } void FOTBuilder::externalGraphic(const ExternalGraphicNIC &) { atomic(); } void FOTBuilder::rule(const RuleNIC &) { atomic(); } void FOTBuilder::alignmentPoint() { atomic(); } void FOTBuilder::formattingInstruction(const StringC &) { atomic(); } void FOTBuilder::startParagraph(const ParagraphNIC &) { start(); } void FOTBuilder::endParagraph() { end(); } void FOTBuilder::startDisplayGroup(const DisplayGroupNIC &) { start(); } void FOTBuilder::endDisplayGroup() { end(); } void FOTBuilder::startScroll() { start(); } void FOTBuilder::endScroll() { end(); } void FOTBuilder::startLink(const Address &) { start(); } void FOTBuilder::endLink() { end(); } void FOTBuilder::startMarginalia() { start(); } void FOTBuilder::endMarginalia() { end(); } void FOTBuilder::startMultiMode(const FOTBuilder::MultiMode *, const Vector &, Vector &ports) { start(); for (size_t i = 0; i < ports.size(); i++) ports[i] = this; } void FOTBuilder::endMultiMode() { end(); } void FOTBuilder::startScore(Symbol) { start(); } void FOTBuilder::startScore(Char) { start(); } void FOTBuilder::startScore(const LengthSpec &) { start(); } void FOTBuilder::endScore() { end(); } void FOTBuilder::startLeader(const LeaderNIC &) { start(); } void FOTBuilder::endLeader() { end(); } void FOTBuilder::startBox(const BoxNIC &) { start(); } void FOTBuilder::endBox() { end(); } void FOTBuilder::startSideline() { } void FOTBuilder::endSideline() { } void FOTBuilder::startSimplePageSequence(FOTBuilder* headerFooter[nHF]) { for ( unsigned i = 0; i < nHF; ++i ) headerFooter[i] = this; start(); } void FOTBuilder::endSimplePageSequenceHeaderFooter() { } void FOTBuilder::endSimplePageSequence() { end(); } void FOTBuilder::pageNumber() { } void FOTBuilder::startTable(const TableNIC &) { start(); } void FOTBuilder::endTable() { end(); } void FOTBuilder::tableBeforeRowBorder() { atomic(); } void FOTBuilder::tableAfterRowBorder() { atomic(); } void FOTBuilder::tableBeforeColumnBorder() { atomic(); } void FOTBuilder::tableAfterColumnBorder() { atomic(); } void FOTBuilder::startTablePart(const TablePartNIC &, FOTBuilder *&header, FOTBuilder *&footer) { start(); header = footer = this; } void FOTBuilder::endTablePart() { end(); } void FOTBuilder::tableColumn(const TableColumnNIC &) { atomic(); } void FOTBuilder::startTableRow() { start(); } void FOTBuilder::endTableRow() { end(); } void FOTBuilder::startTableCell(const TableCellNIC &) { start(); } void FOTBuilder::endTableCell() { end(); } void FOTBuilder::tableCellBeforeRowBorder() { atomic(); } void FOTBuilder::tableCellAfterRowBorder() { atomic(); } void FOTBuilder::tableCellBeforeColumnBorder() { atomic(); } void FOTBuilder::tableCellAfterColumnBorder() { atomic(); } void FOTBuilder::startMathSequence() { start(); } void FOTBuilder::endMathSequence() { end(); } void FOTBuilder::startFraction(FOTBuilder *&numerator, FOTBuilder *&denominator) { start(); numerator = denominator = this; } void FOTBuilder::endFraction() { end(); } void FOTBuilder::fractionBar() { atomic(); } void FOTBuilder::startUnmath() { start(); } void FOTBuilder::endUnmath() { end(); } void FOTBuilder::startSuperscript() { start(); } void FOTBuilder::endSuperscript() { end(); } void FOTBuilder::startSubscript() { start(); } void FOTBuilder::endSubscript() { end(); } void FOTBuilder::startScript(FOTBuilder *&preSup, FOTBuilder *&preSub, FOTBuilder *&postSup, FOTBuilder *&postSub, FOTBuilder *&midSup, FOTBuilder *&midSub) { start(); preSup = preSub = postSup = postSub = midSup = midSub = this; } void FOTBuilder::endScript() { end(); } void FOTBuilder::startMark(FOTBuilder *&overMark, FOTBuilder *&underMark) { start(); overMark = underMark = this; } void FOTBuilder::endMark() { end(); } void FOTBuilder::startFence(FOTBuilder *&open, FOTBuilder *&close) { start(); open = close = this; } void FOTBuilder::endFence() { end(); } void FOTBuilder::startRadical(FOTBuilder *°ree) { start(); degree = this; } void FOTBuilder::endRadical() { end(); } void FOTBuilder::radicalRadical(const CharacterNIC &) { atomic(); } void FOTBuilder::radicalRadicalDefaulted() { } void FOTBuilder::startMathOperator(FOTBuilder *&oper, FOTBuilder *&lowerLimit, FOTBuilder *&upperLimit) { start(); oper = lowerLimit = upperLimit = this; } void FOTBuilder::endMathOperator() { end(); } void FOTBuilder::startGrid(const GridNIC &) { start(); } void FOTBuilder::endGrid() { end(); } void FOTBuilder::startGridCell(const GridCellNIC &) { start(); } void FOTBuilder::endGridCell() { end(); } void FOTBuilder::extension(const ExtensionFlowObj &, const NodePtr &) { atomic(); } void FOTBuilder::startExtension(const CompoundExtensionFlowObj &, const NodePtr &, Vector &ports) { for (size_t i = 0; i < ports.size(); i++) ports[i] = this; start(); } void FOTBuilder::endExtension(const CompoundExtensionFlowObj &) { end(); } void FOTBuilder::setFontSize(Length) { } void FOTBuilder::setFontFamilyName(const StringC &) { } void FOTBuilder::setFontWeight(Symbol) { } void FOTBuilder::setFontPosture(Symbol) { } void FOTBuilder::setStartIndent(const LengthSpec &) { } void FOTBuilder::setEndIndent(const LengthSpec &) { } void FOTBuilder::setFirstLineStartIndent(const LengthSpec &) { } void FOTBuilder::setLastLineEndIndent(const LengthSpec &) { } void FOTBuilder::setLineSpacing(const LengthSpec &) { } void FOTBuilder::setFieldWidth(const LengthSpec &) { } void FOTBuilder::setQuadding(Symbol) { } void FOTBuilder::setDisplayAlignment(Symbol) { } void FOTBuilder::setFieldAlign(Symbol) { } void FOTBuilder::setLines(Symbol) { } void FOTBuilder::setColor(const DeviceRGBColor &) { } void FOTBuilder::setBackgroundColor(const DeviceRGBColor &) { } void FOTBuilder::setBackgroundColor() { } void FOTBuilder::setPageWidth(Length) { } void FOTBuilder::setPageHeight(Length) { } void FOTBuilder::setLeftMargin(Length) { } void FOTBuilder::setRightMargin(Length) { } void FOTBuilder::setTopMargin(Length) { } void FOTBuilder::setBottomMargin(Length) { } void FOTBuilder::setHeaderMargin(Length) { } void FOTBuilder::setFooterMargin(Length) { } void FOTBuilder::setBorderPresent(bool) { } void FOTBuilder::setLineThickness(Length) { } void FOTBuilder::setCellBeforeRowMargin(Length) { } void FOTBuilder::setCellAfterRowMargin(Length) { } void FOTBuilder::setCellBeforeColumnMargin(Length) { } void FOTBuilder::setCellAfterColumnMargin(Length) { } void FOTBuilder::setLineSep(Length) { } void FOTBuilder::setBoxSizeBefore(Length) { } void FOTBuilder::setBoxSizeAfter(Length) { } void FOTBuilder::setPositionPointShift(const LengthSpec &) { } void FOTBuilder::setStartMargin(const LengthSpec &) { } void FOTBuilder::setEndMargin(const LengthSpec &) { } void FOTBuilder::setSidelineSep(const LengthSpec &) { } void FOTBuilder::setAsisWrapIndent(const LengthSpec &) { } void FOTBuilder::setLineNumberSep(const LengthSpec &) { } void FOTBuilder::setLastLineJustifyLimit(const LengthSpec &) { } void FOTBuilder::setJustifyGlyphSpaceMaxAdd(const LengthSpec &) { } void FOTBuilder::setJustifyGlyphSpaceMaxRemove(const LengthSpec &) { } void FOTBuilder::setTableCornerRadius(const LengthSpec &) { } void FOTBuilder::setBoxCornerRadius(const LengthSpec &) { } void FOTBuilder::setMarginaliaSep(const LengthSpec &) { } void FOTBuilder::setMinPreLineSpacing(const OptLengthSpec &) { } void FOTBuilder::setMinPostLineSpacing(const OptLengthSpec &) { } void FOTBuilder::setMinLeading(const OptLengthSpec &) { } void FOTBuilder::setInhibitLineBreaks(bool) { } void FOTBuilder::setHyphenate(bool) { } void FOTBuilder::setKern(bool) { } void FOTBuilder::setLigature(bool) { } void FOTBuilder::setScoreSpaces(bool) { } void FOTBuilder::setFloatOutMarginalia(bool) { } void FOTBuilder::setFloatOutSidelines(bool) { } void FOTBuilder::setFloatOutLineNumbers(bool) { } void FOTBuilder::setCellBackground(bool) { } void FOTBuilder::setSpanWeak(bool) { } void FOTBuilder::setIgnoreRecordEnd(bool) { } void FOTBuilder::setNumberedLines(bool) { } void FOTBuilder::setHangingPunct(bool) { } void FOTBuilder::setBoxOpenEnd(bool) { } void FOTBuilder::setTruncateLeader(bool) { } void FOTBuilder::setAlignLeader(bool) { } void FOTBuilder::setTablePartOmitMiddleHeader(bool) { } void FOTBuilder::setTablePartOmitMiddleFooter(bool) { } void FOTBuilder::setBorderOmitAtBreak(bool) { } void FOTBuilder::setPrincipalModeSimultaneous(bool) { } void FOTBuilder::setMarginaliaKeepWithPrevious(bool) { } void FOTBuilder::setGridEquidistantRows(bool) { } void FOTBuilder::setGridEquidistantColumns(bool) { } void FOTBuilder::setLineJoin(Symbol) { } void FOTBuilder::setLineCap(Symbol) { } void FOTBuilder::setLineNumberSide(Symbol) { } void FOTBuilder::setKernMode(Symbol) { } void FOTBuilder::setInputWhitespaceTreatment(Symbol) { } void FOTBuilder::setFillingDirection(Symbol) { } void FOTBuilder::setWritingMode(Symbol) { } void FOTBuilder::setLastLineQuadding(Symbol) { } void FOTBuilder::setMathDisplayMode(Symbol) { } void FOTBuilder::setScriptPreAlign(Symbol) { } void FOTBuilder::setScriptPostAlign(Symbol) { } void FOTBuilder::setScriptMidSupAlign(Symbol) { } void FOTBuilder::setScriptMidSubAlign(Symbol) { } void FOTBuilder::setNumeratorAlign(Symbol) { } void FOTBuilder::setDenominatorAlign(Symbol) { } void FOTBuilder::setGridPositionCellType(Symbol) { } void FOTBuilder::setGridColumnAlignment(Symbol) { } void FOTBuilder::setGridRowAlignment(Symbol) { } void FOTBuilder::setBoxType(Symbol) { } void FOTBuilder::setGlyphAlignmentMode(Symbol) { } void FOTBuilder::setBoxBorderAlignment(Symbol) { } void FOTBuilder::setCellRowAlignment(Symbol) { } void FOTBuilder::setBorderAlignment(Symbol) { } void FOTBuilder::setSidelineSide(Symbol) { } void FOTBuilder::setHyphenationKeep(Symbol) { } void FOTBuilder::setFontStructure(Symbol) { } void FOTBuilder::setFontProportionateWidth(Symbol) { } void FOTBuilder::setCellCrossed(Symbol) { } void FOTBuilder::setMarginaliaSide(Symbol) { } void FOTBuilder::setLayer(long) { } void FOTBuilder::setBackgroundLayer(long) { } void FOTBuilder::setBorderPriority(long) { } void FOTBuilder::setLineRepeat(long) { } void FOTBuilder::setSpan(long) { } void FOTBuilder::setMinLeaderRepeat(long) { } void FOTBuilder::setHyphenationRemainCharCount(long) { } void FOTBuilder::setHyphenationPushCharCount(long) { } void FOTBuilder::setWidowCount(long) { } void FOTBuilder::setOrphanCount(long) { } void FOTBuilder::setExpandTabs(long) { } void FOTBuilder::setHyphenationLadderCount(long) { } void FOTBuilder::setBackgroundTile(PublicId) { } void FOTBuilder::setLineBreakingMethod(PublicId) { } void FOTBuilder::setLineCompositionMethod(PublicId) { } void FOTBuilder::setImplicitBidiMethod(PublicId) { } void FOTBuilder::setGlyphSubstMethod(PublicId) { } void FOTBuilder::setGlyphReorderMethod(PublicId) { } void FOTBuilder::setHyphenationMethod(PublicId) { } void FOTBuilder::setTableAutoWidthMethod(PublicId) { } void FOTBuilder::setFontName(PublicId) { } void FOTBuilder::setLanguage(Letter2) { } void FOTBuilder::setCountry(Letter2) { } void FOTBuilder::setEscapementSpaceBefore(const InlineSpace &) { } void FOTBuilder::setEscapementSpaceAfter(const InlineSpace &) { } void FOTBuilder::setInlineSpaceSpace(const OptInlineSpace &) { } void FOTBuilder::setGlyphSubstTable(const Vector > &) { } void FOTBuilder::startNode(const NodePtr &, const StringC &) { } void FOTBuilder::endNode() { } void FOTBuilder::currentNodePageNumber(const NodePtr &) { } void FOTBuilder::extensionSet(void (FOTBuilder::*func)(bool), bool arg) { (this->*func)(arg); } void FOTBuilder::extensionSet(void (FOTBuilder::*func)(const StringC &), const StringC &arg) { (this->*func)(arg); } void FOTBuilder::extensionSet(void (FOTBuilder::*func)(long), long arg) { (this->*func)(arg); } FOTBuilder::DisplayNIC::DisplayNIC() : positionPreference(symbolFalse), keep(symbolFalse), breakBefore(symbolFalse), breakAfter(symbolFalse), keepWithPrevious(0), keepWithNext(0), mayViolateKeepBefore(0), mayViolateKeepAfter(0) { } FOTBuilder::DisplayGroupNIC::DisplayGroupNIC() : hasCoalesceId(0) { } FOTBuilder::InlineNIC::InlineNIC() : breakBeforePriority(0), breakAfterPriority(0) { } FOTBuilder::ExternalGraphicNIC::ExternalGraphicNIC() : scaleType(symbolMaxUniform), isDisplay(0), hasMaxWidth(0), hasMaxHeight(0), escapementDirection(symbolFalse) { } FOTBuilder::BoxNIC::BoxNIC() : isDisplay(0) { } FOTBuilder::RuleNIC::RuleNIC() : orientation(symbolHorizontal), hasLength(0) { } FOTBuilder::LeaderNIC::LeaderNIC() : hasLength(0) { } FOTBuilder::CharacterNIC::CharacterNIC() : valid(0), specifiedC(0), stretchFactor(1.0) { } FOTBuilder::TableNIC::TableNIC() : widthType(widthFull) { } FOTBuilder::TableColumnNIC::TableColumnNIC() : columnIndex(0), nColumnsSpanned(1), hasWidth(0) { } FOTBuilder::TableCellNIC::TableCellNIC() : columnIndex(0), nColumnsSpanned(1), nRowsSpanned(1), missing(0) { } FOTBuilder::GridNIC::GridNIC() : nColumns(0), nRows(0) { } FOTBuilder::GridCellNIC::GridCellNIC() : columnNumber(0), rowNumber(0) { } FOTBuilder::MultiMode::MultiMode() : hasDesc(0) { } FOTBuilder::GlyphId FOTBuilder::GlyphSubstTable::subst(const FOTBuilder::GlyphId &gid) const { for (size_t i = 0; i < pairs.size(); i += 2) if (gid == pairs[i]) return pairs[i + 1]; return gid; } SaveFOTBuilder::SaveFOTBuilder() : calls_(0), tail_(&calls_) { } SaveFOTBuilder::SaveFOTBuilder(const NodePtr ¤tNode, const StringC &processingMode) : currentNode_(currentNode), processingMode_(processingMode), calls_(0), tail_(&calls_) { } SaveFOTBuilder::~SaveFOTBuilder() { *tail_ = 0; while (calls_) { Call *tem = calls_; calls_ = calls_->next; delete tem; } } SaveFOTBuilder *SaveFOTBuilder::asSaveFOTBuilder() { return this; } void SaveFOTBuilder::emit(FOTBuilder &fotb) { if (currentNode_) fotb.startNode(currentNode_, processingMode_); SaveFOTBuilder *save = fotb.asSaveFOTBuilder(); if (save) { if (calls_) { *save->tail_ = calls_; save->tail_ = tail_; calls_ = 0; tail_ = &calls_; } } else { *tail_ = 0; while (calls_) { Call *tem = calls_; calls_ = calls_->next; tem->emit(fotb); delete tem; } tail_ = &calls_; } if (currentNode_) fotb.endNode(); } #define NO_ARG_CALL(F) \ void SaveFOTBuilder::F() { \ *tail_ = new NoArgCall(&FOTBuilder::F); \ tail_ = &(*tail_)->next; } NO_ARG_CALL(startSequence) NO_ARG_CALL(endSequence) NO_ARG_CALL(endLineField) NO_ARG_CALL(endParagraph) NO_ARG_CALL(endDisplayGroup) NO_ARG_CALL(alignmentPoint) NO_ARG_CALL(startScroll) NO_ARG_CALL(endScroll) NO_ARG_CALL(endLeader) NO_ARG_CALL(endLink) NO_ARG_CALL(startMarginalia) NO_ARG_CALL(endMarginalia) NO_ARG_CALL(endMultiMode) NO_ARG_CALL(endScore) NO_ARG_CALL(endBox) NO_ARG_CALL(startSideline) NO_ARG_CALL(endSideline) NO_ARG_CALL(endNode) NO_ARG_CALL(endSimplePageSequenceHeaderFooter) NO_ARG_CALL(endSimplePageSequence) NO_ARG_CALL(pageNumber) NO_ARG_CALL(endTable) NO_ARG_CALL(tableBeforeRowBorder) NO_ARG_CALL(tableAfterRowBorder) NO_ARG_CALL(tableBeforeColumnBorder) NO_ARG_CALL(tableAfterColumnBorder) NO_ARG_CALL(endTablePart) NO_ARG_CALL(startTableRow) NO_ARG_CALL(endTableRow) NO_ARG_CALL(endTableCell) NO_ARG_CALL(tableCellBeforeRowBorder) NO_ARG_CALL(tableCellAfterRowBorder) NO_ARG_CALL(tableCellBeforeColumnBorder) NO_ARG_CALL(tableCellAfterColumnBorder) NO_ARG_CALL(startMathSequence) NO_ARG_CALL(endMathSequence) NO_ARG_CALL(endFraction) NO_ARG_CALL(fractionBar) NO_ARG_CALL(startUnmath) NO_ARG_CALL(endUnmath) NO_ARG_CALL(startSuperscript) NO_ARG_CALL(endSuperscript) NO_ARG_CALL(startSubscript) NO_ARG_CALL(endSubscript) NO_ARG_CALL(endScript) NO_ARG_CALL(endMark) NO_ARG_CALL(endFence) NO_ARG_CALL(endRadical) NO_ARG_CALL(radicalRadicalDefaulted) NO_ARG_CALL(endMathOperator) NO_ARG_CALL(endGrid) NO_ARG_CALL(endGridCell) #define LENGTH_SPEC_ARG_CALL(F) \ void SaveFOTBuilder::F(const LengthSpec &lengthSpec) { \ *tail_ = new LengthSpecArgCall(&FOTBuilder::F, lengthSpec); \ tail_ = &(*tail_)->next; } LENGTH_SPEC_ARG_CALL(setStartIndent) LENGTH_SPEC_ARG_CALL(setEndIndent) LENGTH_SPEC_ARG_CALL(setFirstLineStartIndent) LENGTH_SPEC_ARG_CALL(setLastLineEndIndent) LENGTH_SPEC_ARG_CALL(setLineSpacing) LENGTH_SPEC_ARG_CALL(setFieldWidth) LENGTH_SPEC_ARG_CALL(setPositionPointShift) LENGTH_SPEC_ARG_CALL(setStartMargin) LENGTH_SPEC_ARG_CALL(setEndMargin) LENGTH_SPEC_ARG_CALL(setSidelineSep) LENGTH_SPEC_ARG_CALL(setAsisWrapIndent) LENGTH_SPEC_ARG_CALL(setLineNumberSep) LENGTH_SPEC_ARG_CALL(setLastLineJustifyLimit) LENGTH_SPEC_ARG_CALL(setJustifyGlyphSpaceMaxAdd) LENGTH_SPEC_ARG_CALL(setJustifyGlyphSpaceMaxRemove) LENGTH_SPEC_ARG_CALL(setTableCornerRadius) LENGTH_SPEC_ARG_CALL(setBoxCornerRadius) LENGTH_SPEC_ARG_CALL(setMarginaliaSep) #define OPT_LENGTH_SPEC_ARG_CALL(F) \ void SaveFOTBuilder::F(const OptLengthSpec &optLengthSpec) { \ *tail_ = new OptLengthSpecArgCall(&FOTBuilder::F, optLengthSpec); \ tail_ = &(*tail_)->next; } OPT_LENGTH_SPEC_ARG_CALL(setMinPreLineSpacing) OPT_LENGTH_SPEC_ARG_CALL(setMinPostLineSpacing) OPT_LENGTH_SPEC_ARG_CALL(setMinLeading) #define LONG_ARG_CALL(F) \ void SaveFOTBuilder::F(long n) { \ *tail_ = new LongArgCall(&FOTBuilder::F, n); \ tail_ = &(*tail_)->next; } LONG_ARG_CALL(setFontSize) LONG_ARG_CALL(setPageWidth) LONG_ARG_CALL(setPageHeight) LONG_ARG_CALL(setLeftMargin) LONG_ARG_CALL(setRightMargin) LONG_ARG_CALL(setTopMargin) LONG_ARG_CALL(setBottomMargin) LONG_ARG_CALL(setHeaderMargin) LONG_ARG_CALL(setFooterMargin) LONG_ARG_CALL(setLineThickness) LONG_ARG_CALL(setCellBeforeRowMargin) LONG_ARG_CALL(setCellAfterRowMargin) LONG_ARG_CALL(setCellBeforeColumnMargin) LONG_ARG_CALL(setCellAfterColumnMargin) LONG_ARG_CALL(setLineSep) LONG_ARG_CALL(setBoxSizeBefore) LONG_ARG_CALL(setBoxSizeAfter) LONG_ARG_CALL(setLayer) LONG_ARG_CALL(setBackgroundLayer) LONG_ARG_CALL(setBorderPriority) LONG_ARG_CALL(setLineRepeat) LONG_ARG_CALL(setSpan) LONG_ARG_CALL(setMinLeaderRepeat) LONG_ARG_CALL(setHyphenationRemainCharCount) LONG_ARG_CALL(setHyphenationPushCharCount) LONG_ARG_CALL(setWidowCount) LONG_ARG_CALL(setOrphanCount) LONG_ARG_CALL(setExpandTabs) LONG_ARG_CALL(setHyphenationLadderCount) #define BOOL_ARG_CALL(F) \ void SaveFOTBuilder::F(bool b) { \ *tail_ = new BoolArgCall(&FOTBuilder::F, b); \ tail_ = &(*tail_)->next; } BOOL_ARG_CALL(setBorderPresent) BOOL_ARG_CALL(setInhibitLineBreaks) BOOL_ARG_CALL(setHyphenate) BOOL_ARG_CALL(setKern) BOOL_ARG_CALL(setLigature) BOOL_ARG_CALL(setScoreSpaces) BOOL_ARG_CALL(setFloatOutMarginalia) BOOL_ARG_CALL(setFloatOutSidelines) BOOL_ARG_CALL(setFloatOutLineNumbers) BOOL_ARG_CALL(setCellBackground) BOOL_ARG_CALL(setSpanWeak) BOOL_ARG_CALL(setIgnoreRecordEnd) BOOL_ARG_CALL(setNumberedLines) BOOL_ARG_CALL(setHangingPunct) BOOL_ARG_CALL(setBoxOpenEnd) BOOL_ARG_CALL(setTruncateLeader) BOOL_ARG_CALL(setAlignLeader) BOOL_ARG_CALL(setTablePartOmitMiddleHeader) BOOL_ARG_CALL(setTablePartOmitMiddleFooter) BOOL_ARG_CALL(setBorderOmitAtBreak) BOOL_ARG_CALL(setPrincipalModeSimultaneous) BOOL_ARG_CALL(setMarginaliaKeepWithPrevious) BOOL_ARG_CALL(setGridEquidistantRows) BOOL_ARG_CALL(setGridEquidistantColumns) #define SYMBOL_ARG_CALL(F) \ void SaveFOTBuilder::F(Symbol sym) { \ *tail_ = new SymbolArgCall(&FOTBuilder::F, sym); \ tail_ = &(*tail_)->next; } SYMBOL_ARG_CALL(setFontWeight) SYMBOL_ARG_CALL(setFontPosture) SYMBOL_ARG_CALL(setLines) SYMBOL_ARG_CALL(setQuadding) SYMBOL_ARG_CALL(setDisplayAlignment) SYMBOL_ARG_CALL(setFieldAlign) SYMBOL_ARG_CALL(setLineJoin) SYMBOL_ARG_CALL(setLineCap) SYMBOL_ARG_CALL(setLineNumberSide) SYMBOL_ARG_CALL(setKernMode) SYMBOL_ARG_CALL(setInputWhitespaceTreatment) SYMBOL_ARG_CALL(setFillingDirection) SYMBOL_ARG_CALL(setWritingMode) SYMBOL_ARG_CALL(setLastLineQuadding) SYMBOL_ARG_CALL(setMathDisplayMode) SYMBOL_ARG_CALL(setScriptPreAlign) SYMBOL_ARG_CALL(setScriptPostAlign) SYMBOL_ARG_CALL(setScriptMidSupAlign) SYMBOL_ARG_CALL(setScriptMidSubAlign) SYMBOL_ARG_CALL(setNumeratorAlign) SYMBOL_ARG_CALL(setDenominatorAlign) SYMBOL_ARG_CALL(setGridPositionCellType) SYMBOL_ARG_CALL(setGridColumnAlignment) SYMBOL_ARG_CALL(setGridRowAlignment) SYMBOL_ARG_CALL(setBoxType) SYMBOL_ARG_CALL(setGlyphAlignmentMode) SYMBOL_ARG_CALL(setBoxBorderAlignment) SYMBOL_ARG_CALL(setCellRowAlignment) SYMBOL_ARG_CALL(setBorderAlignment) SYMBOL_ARG_CALL(setSidelineSide) SYMBOL_ARG_CALL(setHyphenationKeep) SYMBOL_ARG_CALL(setFontStructure) SYMBOL_ARG_CALL(setFontProportionateWidth) SYMBOL_ARG_CALL(setCellCrossed) SYMBOL_ARG_CALL(setMarginaliaSide) #define PUBLIC_ID_ARG_CALL(F) \ void SaveFOTBuilder::F(PublicId pubid) { \ *tail_ = new PublicIdArgCall(&FOTBuilder::F, pubid); \ tail_ = &(*tail_)->next; } PUBLIC_ID_ARG_CALL(setBackgroundTile) PUBLIC_ID_ARG_CALL(setLineBreakingMethod) PUBLIC_ID_ARG_CALL(setLineCompositionMethod) PUBLIC_ID_ARG_CALL(setImplicitBidiMethod) PUBLIC_ID_ARG_CALL(setGlyphSubstMethod) PUBLIC_ID_ARG_CALL(setGlyphReorderMethod) PUBLIC_ID_ARG_CALL(setHyphenationMethod) PUBLIC_ID_ARG_CALL(setTableAutoWidthMethod) PUBLIC_ID_ARG_CALL(setFontName) #define UNSIGNED_ARG_CALL(F) \ void SaveFOTBuilder::F(unsigned n) { \ *tail_ = new UnsignedArgCall(&FOTBuilder::F, n); \ tail_ = &(*tail_)->next; } UNSIGNED_ARG_CALL(setLanguage) UNSIGNED_ARG_CALL(setCountry) #define STRING_ARG_CALL(F) \ void SaveFOTBuilder::F(const StringC &str) { \ *tail_ = new StringArgCall(&FOTBuilder::F, str); \ tail_ = &(*tail_)->next; } STRING_ARG_CALL(setFontFamilyName) STRING_ARG_CALL(formattingInstruction) #define INLINE_SPACE_ARG_CALL(F) \ void SaveFOTBuilder::F(const InlineSpace &is) { \ *tail_ = new InlineSpaceArgCall(&FOTBuilder::F, is); \ tail_ = &(*tail_)->next; } INLINE_SPACE_ARG_CALL(setEscapementSpaceBefore) INLINE_SPACE_ARG_CALL(setEscapementSpaceAfter) SaveFOTBuilder::Call::~Call() { } void SaveFOTBuilder::NoArgCall::emit(FOTBuilder &fotb) { (fotb.*func)(); } void SaveFOTBuilder::LongArgCall::emit(FOTBuilder &fotb) { (fotb.*func)(arg); } void SaveFOTBuilder::ExtensionLongArgCall::emit(FOTBuilder &fotb) { fotb.extensionSet(func, arg); } void SaveFOTBuilder::BoolArgCall::emit(FOTBuilder &fotb) { (fotb.*func)(arg); } void SaveFOTBuilder::ExtensionBoolArgCall::emit(FOTBuilder &fotb) { fotb.extensionSet(func, arg); } void SaveFOTBuilder::SymbolArgCall::emit(FOTBuilder &fotb) { (fotb.*func)(arg); } void SaveFOTBuilder::PublicIdArgCall::emit(FOTBuilder &fotb) { (fotb.*func)(arg); } void SaveFOTBuilder::UnsignedArgCall::emit(FOTBuilder &fotb) { (fotb.*func)(arg); } void SaveFOTBuilder::InlineSpaceArgCall::emit(FOTBuilder &fotb) { (fotb.*func)(arg); } void SaveFOTBuilder::StringArgCall::emit(FOTBuilder &fotb) { (fotb.*func)(arg); } void SaveFOTBuilder::ExtensionStringArgCall::emit(FOTBuilder &fotb) { fotb.extensionSet(func, arg); } void SaveFOTBuilder::CharArgCall::emit(FOTBuilder &fotb) { (fotb.*func)(arg); } void SaveFOTBuilder::LengthSpecArgCall::emit(FOTBuilder &fotb) { (fotb.*func)(arg); } void SaveFOTBuilder::OptLengthSpecArgCall::emit(FOTBuilder &fotb) { (fotb.*func)(arg); } void SaveFOTBuilder::NodePtrArgCall::emit(FOTBuilder &fotb) { (fotb.*func)(arg); } void SaveFOTBuilder::DeviceRGBColorArgCall::emit(FOTBuilder &fotb) { (fotb.*func)(arg); } void SaveFOTBuilder::charactersFromNode(const NodePtr &node, const Char *s, size_t n) { *tail_ = new CharactersFromNodeCall(node, s, n); tail_ = &(*tail_)->next; } SaveFOTBuilder::CharactersFromNodeCall::CharactersFromNodeCall(const NodePtr &nd, const Char *s, size_t n) : data(s), size(n), node(nd) { } void SaveFOTBuilder::CharactersFromNodeCall::emit(FOTBuilder &fotb) { fotb.charactersFromNode(node, data, size); } void SaveFOTBuilder::characters(const Char *s, size_t n) { *tail_ = new CharactersCall(s, n); tail_ = &(*tail_)->next; } void SaveFOTBuilder::CharacterCall::emit(FOTBuilder &fotb) { fotb.character(arg); } void SaveFOTBuilder::character(const CharacterNIC &nic) { *tail_ = new CharacterCall(nic); tail_ = &(*tail_)->next; } SaveFOTBuilder::StartNodeCall::StartNodeCall(const NodePtr &nd, const StringC &m) : node(nd), mode(m) { } void SaveFOTBuilder::StartNodeCall::emit(FOTBuilder &fotb) { fotb.startNode(node, mode); } void SaveFOTBuilder::startNode(const NodePtr &node, const StringC &mode) { *tail_ = new StartNodeCall(node, mode); tail_ = &(*tail_)->next; } void SaveFOTBuilder::currentNodePageNumber(const NodePtr &node) { *tail_ = new NodePtrArgCall(&FOTBuilder::currentNodePageNumber, node); tail_ = &(*tail_)->next; } void SaveFOTBuilder::setColor(const DeviceRGBColor &color) { *tail_ = new DeviceRGBColorArgCall(&FOTBuilder::setColor, color); tail_ = &(*tail_)->next; } void SaveFOTBuilder::setBackgroundColor(const DeviceRGBColor &color) { DeviceRGBColorArgCall::FuncPtr f = &FOTBuilder::setBackgroundColor; *tail_ = new DeviceRGBColorArgCall(f, color); tail_ = &(*tail_)->next; } void SaveFOTBuilder::setBackgroundColor() { NoArgCall::FuncPtr f = &FOTBuilder::setBackgroundColor; *tail_ = new NoArgCall(f); tail_ = &(*tail_)->next; } void SaveFOTBuilder::startParagraph(const ParagraphNIC &nic) { *tail_ = new StartParagraphCall(nic); tail_ = &(*tail_)->next; } void SaveFOTBuilder::paragraphBreak(const ParagraphNIC &nic) { *tail_ = new ParagraphBreakCall(nic); tail_ = &(*tail_)->next; } void SaveFOTBuilder::startDisplayGroup(const DisplayGroupNIC &nic) { *tail_ = new StartDisplayGroupCall(nic); tail_ = &(*tail_)->next; } void SaveFOTBuilder::externalGraphic(const ExternalGraphicNIC &nic) { *tail_ = new ExternalGraphicCall(nic); tail_ = &(*tail_)->next; } void SaveFOTBuilder::rule(const RuleNIC &nic) { *tail_ = new RuleCall(nic); tail_ = &(*tail_)->next; } void SaveFOTBuilder::startLeader(const LeaderNIC &nic) { *tail_ = new StartLeaderCall(nic); tail_ = &(*tail_)->next; } void SaveFOTBuilder::startLink(const Address &addr) { *tail_ = new StartLinkCall(addr); tail_ = &(*tail_)->next; } void SaveFOTBuilder::startScore(Symbol type) { SymbolArgCall::FuncPtr func = &FOTBuilder::startScore; *tail_ = new SymbolArgCall(func, type); tail_ = &(*tail_)->next; } void SaveFOTBuilder::startScore(Char c) { CharArgCall::FuncPtr func = &FOTBuilder::startScore; *tail_ = new CharArgCall(func, c); tail_ = &(*tail_)->next; } void SaveFOTBuilder::startScore(const LengthSpec &len) { LengthSpecArgCall::FuncPtr func = &FOTBuilder::startScore; *tail_ = new LengthSpecArgCall(func, len); tail_ = &(*tail_)->next; } void SaveFOTBuilder::startLineField(const LineFieldNIC &nic) { *tail_ = new StartLineFieldCall(nic); tail_ = &(*tail_)->next; } void SaveFOTBuilder::startBox(const BoxNIC &nic) { *tail_ = new StartBoxCall(nic); tail_ = &(*tail_)->next; } void SaveFOTBuilder::startSimplePageSequence(FOTBuilder* headerFooter[nHF]) { *tail_ = new StartSimplePageSequenceCall(headerFooter); tail_ = &(*tail_)->next; } void SaveFOTBuilder::startTable(const TableNIC &nic) { *tail_ = new StartTableCall(nic); tail_ = &(*tail_)->next; } void SaveFOTBuilder::startTablePart(const TablePartNIC &nic, FOTBuilder *&header, FOTBuilder *&footer) { *tail_ = new StartTablePartCall(nic, header, footer); tail_ = &(*tail_)->next; } void SaveFOTBuilder::tableColumn(const TableColumnNIC &nic) { *tail_ = new TableColumnCall(nic); tail_ = &(*tail_)->next; } void SaveFOTBuilder::startTableCell(const TableCellNIC &nic) { *tail_ = new StartTableCellCall(nic); tail_ = &(*tail_)->next; } void SaveFOTBuilder::startFraction(FOTBuilder *&numerator, FOTBuilder *&denominator) { *tail_ = new StartFractionCall(numerator, denominator); tail_ = &(*tail_)->next; } void SaveFOTBuilder::startScript(FOTBuilder *&preSup, FOTBuilder *&preSub, FOTBuilder *&postSup, FOTBuilder *&postSub, FOTBuilder *&midSup, FOTBuilder *&midSub) { *tail_ = new StartScriptCall(preSup, preSub, postSup, postSub, midSup, midSub); tail_ = &(*tail_)->next; } void SaveFOTBuilder::startMark(FOTBuilder *&overMark, FOTBuilder *&underMark) { *tail_ = new StartMarkCall(overMark, underMark); tail_ = &(*tail_)->next; } void SaveFOTBuilder::startFence(FOTBuilder *&open, FOTBuilder *&close) { *tail_ = new StartFenceCall(open, close); tail_ = &(*tail_)->next; } void SaveFOTBuilder::startRadical(FOTBuilder *°ree) { *tail_ = new StartRadicalCall(degree); tail_ = &(*tail_)->next; } void SaveFOTBuilder::radicalRadical(const CharacterNIC &nic) { *tail_ = new RadicalRadicalCall(nic); tail_ = &(*tail_)->next; } void SaveFOTBuilder::startMathOperator(FOTBuilder *&oper, FOTBuilder *&lowerLimit, FOTBuilder *&upperLimit) { *tail_ = new StartMathOperatorCall(oper, lowerLimit, upperLimit); tail_ = &(*tail_)->next; } void SaveFOTBuilder::startGrid(const GridNIC &nic) { *tail_ = new StartGridCall(nic); tail_ = &(*tail_)->next; } void SaveFOTBuilder::startGridCell(const GridCellNIC &nic) { *tail_ = new StartGridCellCall(nic); tail_ = &(*tail_)->next; } void SaveFOTBuilder::startMultiMode(const MultiMode *principalMode, const Vector &namedModes, Vector &namedPorts) { *tail_ = new StartMultiModeCall(principalMode, namedModes, namedPorts); tail_ = &(*tail_)->next; } void SaveFOTBuilder::setGlyphSubstTable(const Vector > &tables) { *tail_ = new SetGlyphSubstTableCall(tables); tail_ = &(*tail_)->next; } void SaveFOTBuilder::extensionSet(void (FOTBuilder::*func)(bool), bool arg) { *tail_ = new ExtensionBoolArgCall(func, arg); tail_ = &(*tail_)->next; } void SaveFOTBuilder::extensionSet(void (FOTBuilder::*func)(const StringC &), const StringC &arg) { *tail_ = new ExtensionStringArgCall(func, arg); tail_ = &(*tail_)->next; } void SaveFOTBuilder::extensionSet(void (FOTBuilder::*func)(long), long arg) { *tail_ = new ExtensionLongArgCall(func, arg); tail_ = &(*tail_)->next; } void SaveFOTBuilder::startExtension(const CompoundExtensionFlowObj &fo, const NodePtr &node, Vector &ports) { *tail_ = new StartExtensionCall(fo, node, ports); tail_ = &(*tail_)->next; } void SaveFOTBuilder::endExtension(const CompoundExtensionFlowObj &fo) { *tail_ = new EndExtensionCall(fo); tail_ = &(*tail_)->next; } void SaveFOTBuilder::extension(const ExtensionFlowObj &fo, const NodePtr &node) { *tail_ = new ExtensionCall(fo, node); tail_ = &(*tail_)->next; } SaveFOTBuilder::CharactersCall::CharactersCall(const Char *s, size_t n) : str(s, n) { } void SaveFOTBuilder::CharactersCall::emit(FOTBuilder &fotb) { fotb.characters(str.data(), str.size()); } StartSimplePageSequenceCall::StartSimplePageSequenceCall(FOTBuilder* hf[FOTBuilder::nHF]) { for ( unsigned i = 0; i < FOTBuilder::nHF; ++i ) hf[i] = &headerFooter[i]; } void StartSimplePageSequenceCall::emit(FOTBuilder& fotb) { FOTBuilder* hf[FOTBuilder::nHF]; fotb.startSimplePageSequence(hf); for ( unsigned i = 0; i < FOTBuilder::nHF; ++i ) headerFooter[i].emit(*hf[i]); } StartFractionCall::StartFractionCall(FOTBuilder *&n, FOTBuilder *&d) { n = &numerator; d = &denominator; } void StartFractionCall::emit(FOTBuilder &fotb) { FOTBuilder *n, *d; fotb.startFraction(n, d); numerator.emit(*n); denominator.emit(*d); } StartScriptCall::StartScriptCall(FOTBuilder *&p0, FOTBuilder *&p1, FOTBuilder *&p2, FOTBuilder *&p3, FOTBuilder *&p4, FOTBuilder *&p5) { p0 = &preSup; p1 = &preSub; p2 = &postSup; p3 = &postSub; p4 = &midSup; p5 = &midSub; } void StartScriptCall::emit(FOTBuilder &fotb) { FOTBuilder *v[6]; fotb.startScript(v[0], v[1], v[2], v[3], v[4], v[5]); preSup.emit(*v[0]); preSub.emit(*v[1]); postSup.emit(*v[2]); postSub.emit(*v[3]); midSup.emit(*v[4]); midSub.emit(*v[5]); } StartMarkCall::StartMarkCall(FOTBuilder *&o, FOTBuilder *&u) { o = &overMark; u = &underMark; } void StartMarkCall::emit(FOTBuilder &fotb) { FOTBuilder *o, *u; fotb.startMark(o, u); overMark.emit(*o); underMark.emit(*u); } StartFenceCall::StartFenceCall(FOTBuilder *&o, FOTBuilder *&c) { o = &open; c = &close; } void StartFenceCall::emit(FOTBuilder &fotb) { FOTBuilder *o, *c; fotb.startFence(o, c); open.emit(*o); close.emit(*c); } StartRadicalCall::StartRadicalCall(FOTBuilder *&d) { d = °ree; } void StartRadicalCall::emit(FOTBuilder &fotb) { FOTBuilder *d; fotb.startRadical(d); degree.emit(*d); } StartMathOperatorCall::StartMathOperatorCall(FOTBuilder *&o, FOTBuilder *&l, FOTBuilder *&u) { o = &oper; l = &lowerLimit; u = &upperLimit; } void StartMathOperatorCall::emit(FOTBuilder &fotb) { FOTBuilder *o, *l, *u; fotb.startMathOperator(o, l, u); oper.emit(*o); lowerLimit.emit(*l); upperLimit.emit(*u); } StartMultiModeCall::StartMultiModeCall(const FOTBuilder::MultiMode *pm, const Vector &nm, Vector &v) : namedModes(nm) { if (pm) { hasPrincipalMode = 1; principalMode = *pm; } else hasPrincipalMode = 0; for (size_t i = v.size(); i > 0; i--) { ports.insert(new SaveFOTBuilder); v[i - 1] = ports.head(); } } void StartMultiModeCall::emit(FOTBuilder &fotb) { Vector v(namedModes.size()); fotb.startMultiMode(hasPrincipalMode ? &principalMode : 0, namedModes, v); for (size_t i = 0; i < v.size(); i++) { Owner tem(ports.get()); tem->emit(*v[i]); } } void SaveFOTBuilder::StartTableCall::emit(FOTBuilder &fotb) { fotb.startTable(arg); } void SaveFOTBuilder::TableColumnCall::emit(FOTBuilder &fotb) { fotb.tableColumn(arg); } void SaveFOTBuilder::StartTableCellCall::emit(FOTBuilder &fotb) { fotb.startTableCell(arg); } StartTablePartCall::StartTablePartCall(const SaveFOTBuilder::TablePartNIC &nic, FOTBuilder *&h, FOTBuilder *&f) : arg(nic) { h = &header; f = &footer; } void StartTablePartCall::emit(FOTBuilder &fotb) { FOTBuilder *h, *f; fotb.startTablePart(arg, h, f); header.emit(*h); footer.emit(*f); } SaveFOTBuilder::StartParagraphCall::StartParagraphCall(const ParagraphNIC &nic) : arg(nic) { } void SaveFOTBuilder::StartParagraphCall::emit(FOTBuilder &fotb) { fotb.startParagraph(arg); } SaveFOTBuilder::ParagraphBreakCall::ParagraphBreakCall(const ParagraphNIC &nic) : arg(nic) { } void SaveFOTBuilder::ParagraphBreakCall::emit(FOTBuilder &fotb) { fotb.paragraphBreak(arg); } SaveFOTBuilder ::StartDisplayGroupCall::StartDisplayGroupCall(const DisplayGroupNIC &nic) : arg(nic) { } void SaveFOTBuilder::StartDisplayGroupCall::emit(FOTBuilder &fotb) { fotb.startDisplayGroup(arg); } void SaveFOTBuilder::ExternalGraphicCall::emit(FOTBuilder &fotb) { fotb.externalGraphic(arg); } void SaveFOTBuilder::RuleCall::emit(FOTBuilder &fotb) { fotb.rule(arg); } void SaveFOTBuilder::StartLeaderCall::emit(FOTBuilder &fotb) { fotb.startLeader(arg); } void SaveFOTBuilder::StartBoxCall::emit(FOTBuilder &fotb) { fotb.startBox(arg); } void SaveFOTBuilder::StartLineFieldCall::emit(FOTBuilder &fotb) { fotb.startLineField(arg); } void SaveFOTBuilder::StartLinkCall::emit(FOTBuilder &fotb) { fotb.startLink(arg); } void SaveFOTBuilder::SetGlyphSubstTableCall::emit(FOTBuilder &fotb) { fotb.setGlyphSubstTable(arg); } void SaveFOTBuilder::StartGridCall::emit(FOTBuilder &fotb) { fotb.startGrid(arg); } void SaveFOTBuilder::StartGridCellCall::emit(FOTBuilder &fotb) { fotb.startGridCell(arg); } void SaveFOTBuilder::RadicalRadicalCall::emit(FOTBuilder &fotb) { fotb.radicalRadical(arg); } void SaveFOTBuilder::ExtensionCall::emit(FOTBuilder &fotb) { fotb.extension(*arg, node); } void SaveFOTBuilder::EndExtensionCall::emit(FOTBuilder &fotb) { fotb.endExtension(*arg); } StartExtensionCall::StartExtensionCall(const FOTBuilder::CompoundExtensionFlowObj &fo, const NodePtr &nd, Vector &v) : flowObj(fo.copy()->asCompoundExtensionFlowObj()), node(nd) { for (size_t i = v.size(); i > 0; i--) { ports.insert(new SaveFOTBuilder); v[i - 1] = ports.head(); } } void StartExtensionCall::emit(FOTBuilder &fotb) { Vector portNames; flowObj->portNames(portNames); Vector v(portNames.size()); fotb.startExtension(*flowObj, node, v); for (size_t i = 0; i < v.size(); i++) { Owner tem(ports.get()); tem->emit(*v[i]); } } SerialFOTBuilder::SerialFOTBuilder() { } void SerialFOTBuilder::startSimplePageSequence(FOTBuilder* headerFooter[FOTBuilder::nHF]) { for ( unsigned i = 0; i < nHF; ++i ) { save_.insert(new SaveFOTBuilder); headerFooter[nHF-1-i] = save_.head(); } startSimplePageSequenceSerial(); } void SerialFOTBuilder::endSimplePageSequenceHeaderFooter() { Owner hf[nHF]; for ( unsigned k = 0; k < nHF; ++k ) hf[k] = save_.get(); // output all 24 parts, but in same order as 1.2.1, for regression testing // replace with single loop later. // sorry about all those constants :( for (int i = 0; i < (1 << 2); i++) { for (int j = 0; j < 6; j++) { unsigned k = i | (j << 2); startSimplePageSequenceHeaderFooter(k); hf[k]->emit(*this); endSimplePageSequenceHeaderFooter(k); } } endAllSimplePageSequenceHeaderFooter(); } void SerialFOTBuilder::endSimplePageSequence() { endSimplePageSequenceSerial(); } void SerialFOTBuilder::startFraction(FOTBuilder *&numerator, FOTBuilder *&denominator) { save_.insert(new SaveFOTBuilder); denominator = save_.head(); save_.insert(new SaveFOTBuilder); numerator = save_.head(); startFractionSerial(); } void SerialFOTBuilder::endFraction() { { Owner numerator(save_.get()); startFractionNumerator(); numerator->emit(*this); endFractionNumerator(); } { Owner denominator(save_.get()); startFractionDenominator(); denominator->emit(*this); endFractionDenominator(); } endFractionSerial(); } void SerialFOTBuilder::startScript(FOTBuilder *&preSup, FOTBuilder *&preSub, FOTBuilder *&postSup, FOTBuilder *&postSub, FOTBuilder *&midSup, FOTBuilder *&midSub) { save_.insert(new SaveFOTBuilder); midSub = save_.head(); save_.insert(new SaveFOTBuilder); midSup = save_.head(); save_.insert(new SaveFOTBuilder); postSub = save_.head(); save_.insert(new SaveFOTBuilder); postSup = save_.head(); save_.insert(new SaveFOTBuilder); preSub = save_.head(); save_.insert(new SaveFOTBuilder); preSup = save_.head(); startScriptSerial(); } void SerialFOTBuilder::endScript() { { Owner tem(save_.get()); startScriptPreSup(); tem->emit(*this); endScriptPreSup(); } { Owner tem(save_.get()); startScriptPreSub(); tem->emit(*this); endScriptPreSub(); } { Owner tem(save_.get()); startScriptPostSup(); tem->emit(*this); endScriptPostSup(); } { Owner tem(save_.get()); startScriptPostSub(); tem->emit(*this); endScriptPostSub(); } { Owner tem(save_.get()); startScriptMidSup(); tem->emit(*this); endScriptMidSup(); } { Owner tem(save_.get()); startScriptMidSub(); tem->emit(*this); endScriptMidSub(); } endScriptSerial(); } void SerialFOTBuilder::startMark(FOTBuilder *&overMark, FOTBuilder *&underMark) { save_.insert(new SaveFOTBuilder); underMark = save_.head(); save_.insert(new SaveFOTBuilder); overMark = save_.head(); startMarkSerial(); } void SerialFOTBuilder::endMark() { { Owner tem(save_.get()); startMarkOver(); tem->emit(*this); endMarkOver(); } { Owner tem(save_.get()); startMarkUnder(); tem->emit(*this); endMarkUnder(); } endMarkSerial(); } void SerialFOTBuilder::startFence(FOTBuilder *&open, FOTBuilder *&close) { save_.insert(new SaveFOTBuilder); close = save_.head(); save_.insert(new SaveFOTBuilder); open = save_.head(); startFenceSerial(); } void SerialFOTBuilder::endFence() { { Owner tem(save_.get()); startFenceOpen(); tem->emit(*this); endFenceOpen(); } { Owner tem(save_.get()); startFenceClose(); tem->emit(*this); endFenceClose(); } endFenceSerial(); } void SerialFOTBuilder::startRadical(FOTBuilder *°ree) { save_.insert(new SaveFOTBuilder); degree = save_.head(); startRadicalSerial(); } void SerialFOTBuilder::endRadical() { Owner tem(save_.get()); startRadicalDegree(); tem->emit(*this); endRadicalDegree(); endRadicalSerial(); } void SerialFOTBuilder::startMathOperator(FOTBuilder *&oper, FOTBuilder *&lowerLimit, FOTBuilder *&upperLimit) { save_.insert(new SaveFOTBuilder); upperLimit = save_.head(); save_.insert(new SaveFOTBuilder); lowerLimit = save_.head(); save_.insert(new SaveFOTBuilder); oper = save_.head(); startMathOperatorSerial(); } void SerialFOTBuilder::endMathOperator() { { Owner tem(save_.get()); startMathOperatorOperator(); tem->emit(*this); endMathOperatorOperator(); } { Owner tem(save_.get()); startMathOperatorLowerLimit(); tem->emit(*this); endMathOperatorLowerLimit(); } { Owner tem(save_.get()); startMathOperatorUpperLimit(); tem->emit(*this); endMathOperatorUpperLimit(); } endMathOperatorSerial(); } void SerialFOTBuilder::startSimplePageSequenceSerial() { start(); } void SerialFOTBuilder::endSimplePageSequenceSerial() { end(); } void SerialFOTBuilder::startSimplePageSequenceHeaderFooter(unsigned) { start(); } void SerialFOTBuilder::endSimplePageSequenceHeaderFooter(unsigned) { end(); } void SerialFOTBuilder::endAllSimplePageSequenceHeaderFooter() { } void SerialFOTBuilder::startFractionSerial() { start(); } void SerialFOTBuilder::endFractionSerial() { end(); } void SerialFOTBuilder::startFractionNumerator() { } void SerialFOTBuilder::endFractionNumerator() { } void SerialFOTBuilder::startFractionDenominator() { } void SerialFOTBuilder::endFractionDenominator() { } void SerialFOTBuilder::startScriptSerial() { start(); } void SerialFOTBuilder::endScriptSerial() { end(); } void SerialFOTBuilder::startScriptPreSup() { } void SerialFOTBuilder::endScriptPreSup() { } void SerialFOTBuilder::startScriptPreSub() { } void SerialFOTBuilder::endScriptPreSub() { } void SerialFOTBuilder::startScriptPostSup() { } void SerialFOTBuilder::endScriptPostSup() { } void SerialFOTBuilder::startScriptPostSub() { } void SerialFOTBuilder::endScriptPostSub() { } void SerialFOTBuilder::startScriptMidSup() { } void SerialFOTBuilder::endScriptMidSup() { } void SerialFOTBuilder::startScriptMidSub() { } void SerialFOTBuilder::endScriptMidSub() { } void SerialFOTBuilder::startMarkSerial() { start(); } void SerialFOTBuilder::endMarkSerial() { end(); } void SerialFOTBuilder::startMarkOver() { } void SerialFOTBuilder::endMarkOver() { } void SerialFOTBuilder::startMarkUnder() { } void SerialFOTBuilder::endMarkUnder() { } void SerialFOTBuilder::startFenceSerial() { start(); } void SerialFOTBuilder::endFenceSerial() { end(); } void SerialFOTBuilder::startFenceOpen() { } void SerialFOTBuilder::endFenceOpen() { } void SerialFOTBuilder::startFenceClose() { } void SerialFOTBuilder::endFenceClose() { } void SerialFOTBuilder::startRadicalSerial() { start(); } void SerialFOTBuilder::endRadicalSerial() { end(); } void SerialFOTBuilder::startRadicalDegree() { } void SerialFOTBuilder::endRadicalDegree() { } void SerialFOTBuilder::startMathOperatorSerial() { start(); } void SerialFOTBuilder::endMathOperatorSerial() { end(); } void SerialFOTBuilder::startMathOperatorOperator() { } void SerialFOTBuilder::endMathOperatorOperator() { } void SerialFOTBuilder::startMathOperatorLowerLimit() { } void SerialFOTBuilder::endMathOperatorLowerLimit() { } void SerialFOTBuilder::startMathOperatorUpperLimit() { } void SerialFOTBuilder::endMathOperatorUpperLimit() { } void SerialFOTBuilder::startTablePart(const FOTBuilder::TablePartNIC &nic, FOTBuilder *&header, FOTBuilder *&footer) { save_.insert(new SaveFOTBuilder); footer = save_.head(); save_.insert(new SaveFOTBuilder); header = save_.head(); startTablePartSerial(nic); } void SerialFOTBuilder::endTablePart() { Owner header(save_.get()); startTablePartHeader(); header->emit(*this); endTablePartHeader(); Owner footer(save_.get()); startTablePartFooter(); footer->emit(*this); endTablePartFooter(); endTablePartSerial(); } void SerialFOTBuilder::startTablePartSerial(const TablePartNIC &) { start(); } void SerialFOTBuilder::endTablePartSerial() { end(); } void SerialFOTBuilder::startTablePartHeader() { } void SerialFOTBuilder::endTablePartHeader() { } void SerialFOTBuilder::startTablePartFooter() { } void SerialFOTBuilder::endTablePartFooter() { } void SerialFOTBuilder::startMultiMode(const MultiMode *principalMode, const Vector &namedModes, Vector &namedPorts) { for (size_t i = namedModes.size(); i > 0; i--) { save_.insert(new SaveFOTBuilder); namedPorts[i - 1] = save_.head(); } multiModeStack_.push_back(namedModes); startMultiModeSerial(principalMode); } void SerialFOTBuilder::endMultiMode() { const Vector &namedModes = multiModeStack_.back(); for (size_t i = 0; i < namedModes.size(); i++) { Owner mode(save_.get()); startMultiModeMode(namedModes[i]); mode->emit(*this); endMultiModeMode(); } endMultiModeSerial(); multiModeStack_.resize(multiModeStack_.size() - 1); } void SerialFOTBuilder::startMultiModeSerial(const MultiMode *) { start(); } void SerialFOTBuilder::endMultiModeSerial() { end(); } void SerialFOTBuilder::startMultiModeMode(const MultiMode &) { } void SerialFOTBuilder::endMultiModeMode() { } void SerialFOTBuilder::startExtension(const CompoundExtensionFlowObj &flowObj, const NodePtr &nd, Vector &ports) { for (size_t i = ports.size(); i > 0; i--) { save_.insert(new SaveFOTBuilder); ports[i - 1] = save_.head(); } startExtensionSerial(flowObj, nd); } void SerialFOTBuilder::endExtension(const CompoundExtensionFlowObj &flowObj) { Vector portNames; flowObj.portNames(portNames); for (size_t i = 0; i < portNames.size(); i++) { Owner stream(save_.get()); startExtensionStream(portNames[i]); stream->emit(*this); endExtensionStream(portNames[i]); } endExtensionSerial(flowObj); } void SerialFOTBuilder::startExtensionSerial(const CompoundExtensionFlowObj &, const NodePtr &) { start(); } void SerialFOTBuilder::endExtensionSerial(const CompoundExtensionFlowObj &) { end(); } void SerialFOTBuilder::startExtensionStream(const StringC &) { } void SerialFOTBuilder::endExtensionStream(const StringC &) { } FOTBuilder::ExtensionFlowObj::~ExtensionFlowObj() { } FOTBuilder::CompoundExtensionFlowObj * FOTBuilder::ExtensionFlowObj::asCompoundExtensionFlowObj() { return 0; } const FOTBuilder::CompoundExtensionFlowObj * FOTBuilder::ExtensionFlowObj::asCompoundExtensionFlowObj() const { return 0; } bool FOTBuilder::ExtensionFlowObj::hasNIC(const StringC &) const { return 0; } void FOTBuilder::ExtensionFlowObj::setNIC(const StringC &, const Value &) { CANNOT_HAPPEN(); } FOTBuilder::CompoundExtensionFlowObj * FOTBuilder::CompoundExtensionFlowObj::asCompoundExtensionFlowObj() { return this; } const FOTBuilder::CompoundExtensionFlowObj * FOTBuilder::CompoundExtensionFlowObj::asCompoundExtensionFlowObj() const { return this; } bool FOTBuilder::CompoundExtensionFlowObj::hasPrincipalPort() const { return 1; } void FOTBuilder::CompoundExtensionFlowObj::portNames(Vector &) const { } #ifdef DSSSL_NAMESPACE } #endif openjade-1.3.2/style/FOTBuilder.h0100664000076400007640000013126406755077551014715 0ustar ianian// Copyright (c) 1996, 1997 James Clark // See the file copying.txt for copying permission. #ifndef FOTBuilder_INCLUDED #define FOTBuilder_INCLUDED 1 #include "types.h" #include "StringC.h" #include "Boolean.h" #include "Node.h" #include "Link.h" #include "IList.h" #include "Vector.h" #include "Resource.h" #include "Ptr.h" #include "Owner.h" #include #include #include "dsssl_ns.h" // This is a work around for a bug in Sun C++ 4.1. // The class local typedef of PublicId will cause it to reject a // subsequent declaration of the class PublicId, but it's happy // if it sees the class first. #ifdef __SUNPRO_CC #include "ExternalId.h" #endif #ifdef SP_USE_DLL #ifdef BUILD_LIBSTYLE #define STYLE_API SP_DLLEXPORT #else #define STYLE_API SP_DLLIMPORT #endif #else /* not SP_USE_DLL */ #define STYLE_API /* as nothing */ #endif /* not SP_USE_DLL */ #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif class SaveFOTBuilder; class STYLE_API FOTBuilder { public: enum Symbol { symbolFalse, symbolTrue, symbolNotApplicable, // These are guaranteed to be in increasing order of weight, // and expansion. symbolUltraCondensed, symbolExtraCondensed, symbolCondensed, symbolSemiCondensed, symbolUltraLight, symbolExtraLight, symbolLight, symbolSemiLight, symbolMedium, symbolSemiExpanded, symbolExpanded, symbolExtraExpanded, symbolUltraExpanded, symbolSemiBold, symbolBold, symbolExtraBold, symbolUltraBold, symbolUpright, symbolOblique, symbolBackSlantedOblique, symbolItalic, symbolBackSlantedItalic, symbolStart, symbolEnd, symbolCenter, symbolJustify, symbolSpreadInside, symbolSpreadOutside, symbolPageInside, symbolPageOutside, symbolWrap, symbolAsis, symbolAsisWrap, symbolAsisTruncate, symbolNone, symbolBefore, symbolThrough, symbolAfter, symbolTopToBottom, symbolLeftToRight, symbolBottomToTop, symbolRightToLeft, symbolInside, symbolOutside, symbolHorizontal, symbolVertical, symbolEscapement, symbolLineProgression, symbolMath, symbolOrdinary, symbolOperator, symbolBinary, symbolRelation, symbolOpening, symbolClosing, symbolPunctuation, symbolInner, symbolSpace, symbolPage, symbolPageRegion, symbolColumnSet, symbolColumn, symbolMax, symbolMaxUniform, symbolMiter, symbolRound, symbolBevel, symbolButt, symbolSquare, symbolLoose, symbolNormal, symbolKern, symbolTight, symbolTouch, symbolPreserve, symbolCollapse, symbolIgnore, symbolRelative, symbolDisplay, symbolInline, symbolBorder, symbolBackground, symbolBoth, symbolBase, symbolFont, symbolTop, symbolBottom, symbolSpread, symbolSolid, symbolOutline, symbolWith, symbolAgainst, symbolForce, symbolIndependent, symbolPile, symbolSupOut, symbolSubOut, symbolLeadEdge, symbolTrailEdge, symbolExplicit, symbolRowMajor, symbolColumnMajor }; enum { nSymbols = symbolColumnMajor + 1 }; typedef const char *PublicId; struct GlyphId { GlyphId() : publicId(0), suffix(0) { } GlyphId(const char *s, unsigned long n = 0) : publicId(s), suffix(n) { } PublicId publicId; // If suffix is non-zero, then add a double-colon plus // the suffix in decimal onto publicId to get the complete // public identifier of the glyph id. unsigned long suffix; }; struct GlyphSubstTable : public Resource { unsigned uniqueId; Vector pairs; GlyphId subst(const GlyphId &) const; }; // SP_LETTER2('U', 'K') #define SP_LETTER2(c1, c2) (((c1) << 8) | (c2)) typedef unsigned Letter2; typedef long Length; struct LengthSpec { LengthSpec(long len = 0) : length(len), displaySizeFactor(0.0) { } long length; double displaySizeFactor; operator bool() const { return length != 0 || displaySizeFactor != 0.0; } }; struct TableLengthSpec : LengthSpec { TableLengthSpec() : tableUnitFactor(0.0) { } double tableUnitFactor; }; struct OptLengthSpec { OptLengthSpec() : hasLength(0) { } bool hasLength; LengthSpec length; }; struct DisplaySpace { DisplaySpace() : priority(0), conditional(1), force(0) { } LengthSpec nominal; LengthSpec min; LengthSpec max; long priority; bool conditional; bool force; }; struct InlineSpace { LengthSpec nominal; LengthSpec min; LengthSpec max; }; struct OptInlineSpace { OptInlineSpace() : hasSpace(0) { } bool hasSpace; InlineSpace space; }; // non-inherited characteristics for all displayed flow objects struct DisplayNIC { DisplayNIC(); DisplaySpace spaceBefore; DisplaySpace spaceAfter; Symbol positionPreference; Symbol keep; Symbol breakBefore; Symbol breakAfter; bool keepWithPrevious; bool keepWithNext; bool mayViolateKeepBefore; bool mayViolateKeepAfter; }; struct InlineNIC { InlineNIC(); long breakBeforePriority; long breakAfterPriority; }; struct DisplayGroupNIC : DisplayNIC { DisplayGroupNIC(); bool hasCoalesceId; StringC coalesceId; }; struct ExternalGraphicNIC : DisplayNIC, InlineNIC { ExternalGraphicNIC(); bool isDisplay; Symbol scaleType; // symbolFalse if not a symbol double scale[2]; // if scaleType == symbolFalse StringC entitySystemId; StringC notationSystemId; bool hasMaxWidth; LengthSpec maxWidth; bool hasMaxHeight; LengthSpec maxHeight; // These apply only if !isDisplay // symbolFalse if no escapementDirection Symbol escapementDirection; LengthSpec positionPointX; LengthSpec positionPointY; }; struct BoxNIC : DisplayNIC, InlineNIC { BoxNIC(); bool isDisplay; }; struct RuleNIC : DisplayNIC, InlineNIC { RuleNIC(); Symbol orientation; bool hasLength; LengthSpec length; }; struct LeaderNIC : InlineNIC { LeaderNIC(); bool hasLength; LengthSpec length; }; // A paragraph has the same non-inherited characteristics // as a display-group. typedef DisplayNIC ParagraphNIC; struct CharacterNIC { CharacterNIC(); enum { cIsDropAfterLineBreak, cIsDropUnlessBeforeLineBreak, cIsPunct, cIsInputWhitespace, cIsInputTab, cIsRecordEnd, cIsSpace, cChar, cGlyphId, cScript, cMathClass, cMathFontPosture, cBreakBeforePriority, cBreakAfterPriority }; bool valid; unsigned specifiedC; Char ch; GlyphId glyphId; long breakBeforePriority; long breakAfterPriority; Symbol mathClass; Symbol mathFontPosture; PublicId script; bool isDropAfterLineBreak; bool isDropUnlessBeforeLineBreak; bool isPunct; bool isInputWhitespace; bool isInputTab; bool isRecordEnd; bool isSpace; // This doesn't have a flag in specifiedC, // because it has a fixed default. double stretchFactor; }; typedef InlineNIC LineFieldNIC; struct TableNIC : public DisplayNIC { TableNIC(); enum WidthType { widthFull, widthMinimum, widthExplicit }; WidthType widthType; LengthSpec width; }; typedef DisplayNIC TablePartNIC; struct TableColumnNIC { TableColumnNIC(); unsigned columnIndex; // zero-based unsigned nColumnsSpanned; bool hasWidth; TableLengthSpec width; }; struct TableCellNIC { TableCellNIC(); // If true, this isn't a real table cell. // Rather it's one that can be used to fill in cells missing in this row. bool missing; unsigned columnIndex; // zero-based unsigned nColumnsSpanned; unsigned nRowsSpanned; }; struct DeviceRGBColor { unsigned char red; unsigned char green; unsigned char blue; }; struct MultiMode { MultiMode(); bool hasDesc; StringC name; StringC desc; }; struct Address { enum Type { // An address of #f none, // An address that was resolved by the front-end to a node // Only the node member is valid. resolvedNode, // node contains current node, params[0] is string. idref, entity, sgmlDocument, hytimeLinkend, tei, html }; Type type; // Gives current node or resolved node. NodePtr node; StringC params[3]; }; virtual SaveFOTBuilder *asSaveFOTBuilder(); virtual ~FOTBuilder(); // Default for compound flow objects virtual void start(); virtual void end(); // Default for atomic flow objects: defaults to start(); end(); virtual void atomic(); // Atomic flow objects virtual void characters(const Char *, size_t); // Like characters(), but data comes from charChunk() on a NodePtr. // If you are building a tree, then the NodePtr can be saved instead // of the data. The default implementation calls characters(). virtual void charactersFromNode(const NodePtr &, const Char *, size_t); virtual void character(const CharacterNIC &); virtual void paragraphBreak(const ParagraphNIC &); virtual void externalGraphic(const ExternalGraphicNIC &); virtual void rule(const RuleNIC &); virtual void alignmentPoint(); // For flow object class public id // "UNREGISTERED::James Clark//Flow Object Class::formatting-instruction" virtual void formattingInstruction(const StringC &); // Non-atomic flow objects virtual void startSequence(); virtual void endSequence(); virtual void startLineField(const LineFieldNIC &); virtual void endLineField(); virtual void startParagraph(const ParagraphNIC &); virtual void endParagraph(); virtual void startDisplayGroup(const DisplayGroupNIC &); virtual void endDisplayGroup(); virtual void startScroll(); virtual void endScroll(); virtual void startLink(const Address &); virtual void endLink(); virtual void startMarginalia(); virtual void endMarginalia(); virtual void startMultiMode(const MultiMode *principalPort, // null if no principal port const Vector &namedPorts, Vector &); virtual void endMultiMode(); virtual void startScore(Char); virtual void startScore(const LengthSpec &); virtual void startScore(Symbol); virtual void endScore(); virtual void startLeader(const LeaderNIC &); virtual void endLeader(); virtual void startSideline(); virtual void endSideline(); virtual void startBox(const BoxNIC &); virtual void endBox(); // Tables virtual void startTable(const TableNIC &); virtual void endTable(); // A call for each border is made immediately // after startTable(), each preceded by any appropriate set*() calls. virtual void tableBeforeRowBorder(); virtual void tableAfterRowBorder(); virtual void tableBeforeColumnBorder(); virtual void tableAfterColumnBorder(); virtual void startTablePart(const TablePartNIC &, FOTBuilder *&header, FOTBuilder *&footer); virtual void endTablePart(); virtual void tableColumn(const TableColumnNIC &); virtual void startTableRow(); virtual void endTableRow(); virtual void startTableCell(const TableCellNIC &); virtual void endTableCell(); virtual void tableCellBeforeRowBorder(); virtual void tableCellAfterRowBorder(); virtual void tableCellBeforeColumnBorder(); virtual void tableCellAfterColumnBorder(); // Implementation must set numerator and denominator // must be set to non-null values. virtual void startMathSequence(); virtual void endMathSequence(); virtual void startFraction(FOTBuilder *&numerator, FOTBuilder *&denominator); // startFraction is followed by call to fractionBar with set...() calls // intervening virtual void fractionBar(); virtual void endFraction(); virtual void startUnmath(); virtual void endUnmath(); virtual void startSuperscript(); virtual void endSuperscript(); virtual void startSubscript(); virtual void endSubscript(); virtual void startScript(FOTBuilder *&preSup, FOTBuilder *&preSub, FOTBuilder *&postSup, FOTBuilder *&postSub, FOTBuilder *&midSup, FOTBuilder *&midSub); virtual void endScript(); virtual void startMark(FOTBuilder *&overMark, FOTBuilder *&underMark); virtual void endMark(); virtual void startFence(FOTBuilder *&open, FOTBuilder *&close); virtual void endFence(); virtual void startRadical(FOTBuilder *°ree); // startRadical is followed by one of the following virtual void radicalRadical(const CharacterNIC &); virtual void radicalRadicalDefaulted(); virtual void endRadical(); virtual void startMathOperator(FOTBuilder *&oper, FOTBuilder *&lowerLimit, FOTBuilder *&upperLimit); virtual void endMathOperator(); struct GridNIC { GridNIC(); unsigned nColumns; unsigned nRows; }; virtual void startGrid(const GridNIC &); virtual void endGrid(); struct GridCellNIC { GridCellNIC(); unsigned columnNumber; unsigned rowNumber; }; virtual void startGridCell(const GridCellNIC &); virtual void endGridCell(); // Simple page // Headers and footers are treated like a separate port. // There are 24 different parts to the headers and footers // numbered 0 to 027; the numbers are computed by or'ing the // following flags. enum HF { // first page or other page firstHF = 01, otherHF = 0, // front page or back page frontHF = 02, backHF = 0, // header or footer headerHF = 04, footerHF = 0, // left, center or right part of header leftHF = 0, centerHF = 010, rightHF = 020, // number of different HF calls nHF = 030 }; virtual void startSimplePageSequence(FOTBuilder* headerFooter[nHF]); virtual void endSimplePageSequenceHeaderFooter(); virtual void endSimplePageSequence(); // page-number sosofo virtual void pageNumber(); // Inherited characteristics // Set the value of the characteristic for the next flow object. // Inherited characteristics that are not explicitly set have // the same value as the parent flow object. virtual void setFontSize(Length); virtual void setFontFamilyName(const StringC &); virtual void setFontWeight(Symbol); virtual void setFontPosture(Symbol); virtual void setStartIndent(const LengthSpec &); virtual void setEndIndent(const LengthSpec &); virtual void setFirstLineStartIndent(const LengthSpec &); virtual void setLastLineEndIndent(const LengthSpec &); virtual void setLineSpacing(const LengthSpec &); virtual void setFieldWidth(const LengthSpec &); virtual void setMarginaliaSep(const LengthSpec &); virtual void setLines(Symbol); virtual void setQuadding(Symbol); virtual void setDisplayAlignment(Symbol); virtual void setFieldAlign(Symbol); virtual void setColor(const DeviceRGBColor &); virtual void setBackgroundColor(); // background of #f virtual void setBackgroundColor(const DeviceRGBColor &); virtual void setBorderPresent(bool); virtual void setLineThickness(Length); virtual void setCellBeforeRowMargin(Length); virtual void setCellAfterRowMargin(Length); virtual void setCellBeforeColumnMargin(Length); virtual void setCellAfterColumnMargin(Length); virtual void setLineSep(Length); virtual void setBoxSizeBefore(Length); virtual void setBoxSizeAfter(Length); virtual void setPositionPointShift(const LengthSpec &); virtual void setStartMargin(const LengthSpec &); virtual void setEndMargin(const LengthSpec &); virtual void setSidelineSep(const LengthSpec &); virtual void setAsisWrapIndent(const LengthSpec &); virtual void setLineNumberSep(const LengthSpec &); virtual void setLastLineJustifyLimit(const LengthSpec &); virtual void setJustifyGlyphSpaceMaxAdd(const LengthSpec &); virtual void setJustifyGlyphSpaceMaxRemove(const LengthSpec &); virtual void setTableCornerRadius(const LengthSpec &); virtual void setBoxCornerRadius(const LengthSpec &); virtual void setMinPreLineSpacing(const OptLengthSpec &); virtual void setMinPostLineSpacing(const OptLengthSpec &); virtual void setMinLeading(const OptLengthSpec &); virtual void setInhibitLineBreaks(bool); virtual void setHyphenate(bool); virtual void setKern(bool); virtual void setLigature(bool); virtual void setScoreSpaces(bool); virtual void setFloatOutMarginalia(bool); virtual void setFloatOutSidelines(bool); virtual void setFloatOutLineNumbers(bool); virtual void setCellBackground(bool); virtual void setSpanWeak(bool); virtual void setIgnoreRecordEnd(bool); virtual void setNumberedLines(bool); virtual void setHangingPunct(bool); virtual void setBoxOpenEnd(bool); virtual void setTruncateLeader(bool); virtual void setAlignLeader(bool); virtual void setTablePartOmitMiddleHeader(bool); virtual void setTablePartOmitMiddleFooter(bool); virtual void setBorderOmitAtBreak(bool); virtual void setPrincipalModeSimultaneous(bool); virtual void setMarginaliaKeepWithPrevious(bool); virtual void setGridEquidistantRows(bool); virtual void setGridEquidistantColumns(bool); virtual void setLineJoin(Symbol); virtual void setLineCap(Symbol); virtual void setLineNumberSide(Symbol); virtual void setKernMode(Symbol); virtual void setInputWhitespaceTreatment(Symbol); virtual void setFillingDirection(Symbol); virtual void setWritingMode(Symbol); virtual void setLastLineQuadding(Symbol); virtual void setMathDisplayMode(Symbol); virtual void setScriptPreAlign(Symbol); virtual void setScriptPostAlign(Symbol); virtual void setScriptMidSupAlign(Symbol); virtual void setScriptMidSubAlign(Symbol); virtual void setNumeratorAlign(Symbol); virtual void setDenominatorAlign(Symbol); virtual void setGridPositionCellType(Symbol); virtual void setGridColumnAlignment(Symbol); virtual void setGridRowAlignment(Symbol); virtual void setBoxType(Symbol); virtual void setGlyphAlignmentMode(Symbol); virtual void setBoxBorderAlignment(Symbol); virtual void setCellRowAlignment(Symbol); virtual void setBorderAlignment(Symbol); virtual void setSidelineSide(Symbol); virtual void setHyphenationKeep(Symbol); virtual void setFontStructure(Symbol); virtual void setFontProportionateWidth(Symbol); virtual void setCellCrossed(Symbol); virtual void setMarginaliaSide(Symbol); virtual void setLayer(long); virtual void setBackgroundLayer(long); virtual void setBorderPriority(long); virtual void setLineRepeat(long); virtual void setSpan(long); virtual void setMinLeaderRepeat(long); virtual void setHyphenationRemainCharCount(long); virtual void setHyphenationPushCharCount(long); virtual void setWidowCount(long); virtual void setOrphanCount(long); // 0 means #f virtual void setExpandTabs(long); virtual void setHyphenationLadderCount(long); // public id or #f virtual void setBackgroundTile(PublicId); virtual void setLineBreakingMethod(PublicId); virtual void setLineCompositionMethod(PublicId); virtual void setImplicitBidiMethod(PublicId); virtual void setGlyphSubstMethod(PublicId); virtual void setGlyphReorderMethod(PublicId); virtual void setHyphenationMethod(PublicId); virtual void setTableAutoWidthMethod(PublicId); virtual void setFontName(PublicId); // Two-letter code virtual void setLanguage(Letter2); virtual void setCountry(Letter2); virtual void setEscapementSpaceBefore(const InlineSpace &); virtual void setEscapementSpaceAfter(const InlineSpace &); virtual void setInlineSpaceSpace(const OptInlineSpace &); // For simple page sequence virtual void setPageWidth(Length); virtual void setPageHeight(Length); virtual void setLeftMargin(Length); virtual void setRightMargin(Length); virtual void setTopMargin(Length); virtual void setBottomMargin(Length); virtual void setHeaderMargin(Length); virtual void setFooterMargin(Length); // Others virtual void setGlyphSubstTable(const Vector > &); // Backlinks // processingMode is empty for initial processing mode. virtual void startNode(const NodePtr &, const StringC &processingMode); virtual void endNode(); virtual void currentNodePageNumber(const NodePtr &); class CompoundExtensionFlowObj; class STYLE_API ExtensionFlowObj { public: virtual ~ExtensionFlowObj(); class Value { public: virtual bool convertString(StringC &) const = 0; virtual bool convertStringPairList(Vector &) const = 0; virtual bool convertStringList(Vector &) const = 0; virtual bool convertBoolean(bool &) const = 0; }; virtual CompoundExtensionFlowObj *asCompoundExtensionFlowObj(); virtual const CompoundExtensionFlowObj *asCompoundExtensionFlowObj() const; virtual bool hasNIC(const StringC &) const; virtual void setNIC(const StringC &, const Value &); virtual ExtensionFlowObj *copy() const = 0; }; class STYLE_API CompoundExtensionFlowObj : public ExtensionFlowObj { public: CompoundExtensionFlowObj *asCompoundExtensionFlowObj(); const CompoundExtensionFlowObj *asCompoundExtensionFlowObj() const; virtual bool hasPrincipalPort() const; virtual void portNames(Vector &) const; }; // extension inherited characteristics virtual void extensionSet(void (FOTBuilder::*)(bool), bool); virtual void extensionSet(void (FOTBuilder::*)(const StringC &), const StringC &); virtual void extensionSet(void (FOTBuilder::*)(long), long); // extension flow objects virtual void extension(const ExtensionFlowObj &, const NodePtr &); virtual void startExtension(const CompoundExtensionFlowObj &, const NodePtr &, Vector &ports); virtual void endExtension(const CompoundExtensionFlowObj &); struct Extension { const char *pubid; void (FOTBuilder::*boolSetter)(bool); void (FOTBuilder::*stringSetter)(const StringC &); void (FOTBuilder::*integerSetter)(long); void (FOTBuilder::*lengthSetter)(Length); const ExtensionFlowObj *flowObj; }; static const char *symbolName(Symbol); }; class STYLE_API SaveFOTBuilder : public Link, public FOTBuilder { public: SaveFOTBuilder(); SaveFOTBuilder(const NodePtr &, const StringC &processingMode); ~SaveFOTBuilder(); SaveFOTBuilder *asSaveFOTBuilder(); void emit(FOTBuilder &); void characters(const Char *, size_t); void charactersFromNode(const NodePtr &, const Char *, size_t); void character(const CharacterNIC &); void paragraphBreak(const ParagraphNIC &); void externalGraphic(const ExternalGraphicNIC &); void rule(const RuleNIC &); void alignmentPoint(); void formattingInstruction(const StringC &); void startSequence(); void endSequence(); void startLineField(const LineFieldNIC &); void endLineField(); void startParagraph(const ParagraphNIC &); void endParagraph(); void startDisplayGroup(const DisplayGroupNIC &); void endDisplayGroup(); void startScroll(); void endScroll(); void startLink(const Address &); void endLink(); void startMultiMode(const MultiMode *principalPort, const Vector &namedPorts, Vector &); void endMultiMode(); void startMarginalia(); void endMarginalia(); void startScore(Char); void startScore(const LengthSpec &); void startScore(Symbol); void endScore(); void startLeader(const LeaderNIC &); void endLeader(); void startSideline(); void endSideline(); void startBox(const BoxNIC &); void endBox(); void startSimplePageSequence(FOTBuilder* headerFooter[nHF]); void endSimplePageSequenceHeaderFooter(); void endSimplePageSequence(); // page-number sosofo void pageNumber(); // math void startMathSequence(); void endMathSequence(); void startFraction(FOTBuilder *&numerator, FOTBuilder *&denominator); void fractionBar(); void endFraction(); void startUnmath(); void endUnmath(); void startSuperscript(); void endSuperscript(); void startSubscript(); void endSubscript(); void startScript(FOTBuilder *&preSup, FOTBuilder *&preSub, FOTBuilder *&postSup, FOTBuilder *&postSub, FOTBuilder *&midSup, FOTBuilder *&midSub); void endScript(); void startMark(FOTBuilder *&overMark, FOTBuilder *&underMark); void endMark(); void startFence(FOTBuilder *&open, FOTBuilder *&close); void endFence(); void startRadical(FOTBuilder *°ree); void endRadical(); void radicalRadical(const CharacterNIC &); void radicalRadicalDefaulted(); void startMathOperator(FOTBuilder *&oper, FOTBuilder *&lowerLimit, FOTBuilder *&upperLimit); void endMathOperator(); void startGrid(const GridNIC &); void endGrid(); void startGridCell(const GridCellNIC &); void endGridCell(); // Tables void startTable(const TableNIC &); void endTable(); void tableBeforeRowBorder(); void tableAfterRowBorder(); void tableBeforeColumnBorder(); void tableAfterColumnBorder(); void startTablePart(const TablePartNIC &, FOTBuilder *&header, FOTBuilder *&footer); void endTablePart(); void tableColumn(const TableColumnNIC &); void startTableRow(); void endTableRow(); void startTableCell(const TableCellNIC &); void endTableCell(); void tableCellBeforeRowBorder(); void tableCellAfterRowBorder(); void tableCellBeforeColumnBorder(); void tableCellAfterColumnBorder(); // Inherited characteristics void setFontSize(Length); void setFontFamilyName(const StringC &); void setFontWeight(Symbol); void setFontPosture(Symbol); void setStartIndent(const LengthSpec &); void setEndIndent(const LengthSpec &); void setFirstLineStartIndent(const LengthSpec &); void setLastLineEndIndent(const LengthSpec &); void setLineSpacing(const LengthSpec &); void setFieldWidth(const LengthSpec &); void setLines(Symbol); void setQuadding(Symbol); void setDisplayAlignment(Symbol); void setFieldAlign(Symbol); void setColor(const DeviceRGBColor &); void setBackgroundColor(const DeviceRGBColor &); void setBackgroundColor(); void setPageWidth(Length); void setPageHeight(Length); void setLeftMargin(Length); void setRightMargin(Length); void setTopMargin(Length); void setBottomMargin(Length); void setHeaderMargin(Length); void setFooterMargin(Length); void setBorderPresent(bool); void setLineThickness(Length); void setCellBeforeRowMargin(Length); void setCellAfterRowMargin(Length); void setCellBeforeColumnMargin(Length); void setCellAfterColumnMargin(Length); void setLineSep(Length); void setBoxSizeBefore(Length); void setBoxSizeAfter(Length); void setPositionPointShift(const LengthSpec &); void setStartMargin(const LengthSpec &); void setEndMargin(const LengthSpec &); void setSidelineSep(const LengthSpec &); void setAsisWrapIndent(const LengthSpec &); void setLineNumberSep(const LengthSpec &); void setLastLineJustifyLimit(const LengthSpec &); void setJustifyGlyphSpaceMaxAdd(const LengthSpec &); void setJustifyGlyphSpaceMaxRemove(const LengthSpec &); void setTableCornerRadius(const LengthSpec &); void setBoxCornerRadius(const LengthSpec &); void setMarginaliaSep(const LengthSpec &); void setMinPreLineSpacing(const OptLengthSpec &); void setMinPostLineSpacing(const OptLengthSpec &); void setMinLeading(const OptLengthSpec &); void setInhibitLineBreaks(bool); void setHyphenate(bool); void setKern(bool); void setLigature(bool); void setScoreSpaces(bool); void setFloatOutMarginalia(bool); void setFloatOutSidelines(bool); void setFloatOutLineNumbers(bool); void setCellBackground(bool); void setSpanWeak(bool); void setIgnoreRecordEnd(bool); void setNumberedLines(bool); void setHangingPunct(bool); void setBoxOpenEnd(bool); void setTruncateLeader(bool); void setAlignLeader(bool); void setTablePartOmitMiddleHeader(bool); void setTablePartOmitMiddleFooter(bool); void setBorderOmitAtBreak(bool); void setPrincipalModeSimultaneous(bool); void setMarginaliaKeepWithPrevious(bool); void setGridEquidistantRows(bool); void setGridEquidistantColumns(bool); void setLineJoin(Symbol); void setLineCap(Symbol); void setLineNumberSide(Symbol); void setKernMode(Symbol); void setInputWhitespaceTreatment(Symbol); void setFillingDirection(Symbol); void setWritingMode(Symbol); void setLastLineQuadding(Symbol); void setMathDisplayMode(Symbol); void setScriptPreAlign(Symbol); void setScriptPostAlign(Symbol); void setScriptMidSupAlign(Symbol); void setScriptMidSubAlign(Symbol); void setNumeratorAlign(Symbol); void setDenominatorAlign(Symbol); void setGridPositionCellType(Symbol); void setGridColumnAlignment(Symbol); void setGridRowAlignment(Symbol); void setBoxType(Symbol); void setGlyphAlignmentMode(Symbol); void setBoxBorderAlignment(Symbol); void setCellRowAlignment(Symbol); void setBorderAlignment(Symbol); void setSidelineSide(Symbol); void setHyphenationKeep(Symbol); void setFontStructure(Symbol); void setFontProportionateWidth(Symbol); void setCellCrossed(Symbol); void setMarginaliaSide(Symbol); void setLayer(long); void setBackgroundLayer(long); void setBorderPriority(long); void setLineRepeat(long); void setSpan(long); void setMinLeaderRepeat(long); void setHyphenationRemainCharCount(long); void setHyphenationPushCharCount(long); void setWidowCount(long); void setOrphanCount(long); void setExpandTabs(long); void setHyphenationLadderCount(long); void setBackgroundTile(PublicId); void setLineBreakingMethod(PublicId); void setLineCompositionMethod(PublicId); void setImplicitBidiMethod(PublicId); void setGlyphSubstMethod(PublicId); void setGlyphReorderMethod(PublicId); void setHyphenationMethod(PublicId); void setTableAutoWidthMethod(PublicId); void setFontName(PublicId); void setLanguage(Letter2); void setCountry(Letter2); void setEscapementSpaceBefore(const InlineSpace &); void setEscapementSpaceAfter(const InlineSpace &); void setGlyphSubstTable(const Vector > &); void startNode(const NodePtr &, const StringC &processingMode); void endNode(); void currentNodePageNumber(const NodePtr &); void extensionSet(void (FOTBuilder::*)(bool), bool); void extensionSet(void (FOTBuilder::*)(const StringC &), const StringC &); void extensionSet(void (FOTBuilder::*)(long), long); void extension(const ExtensionFlowObj &, const NodePtr &); void startExtension(const CompoundExtensionFlowObj &, const NodePtr &, Vector &ports); void endExtension(const CompoundExtensionFlowObj &); struct Call { virtual ~Call(); virtual void emit(FOTBuilder &) = 0; Call *next; }; private: SaveFOTBuilder(const SaveFOTBuilder &); // undefined void operator=(const SaveFOTBuilder &); // undefined struct NoArgCall : Call { typedef void (FOTBuilder::*FuncPtr)(); NoArgCall(FuncPtr f) : func(f) { } void emit(FOTBuilder &); FuncPtr func; }; struct LongArgCall : Call { typedef void (FOTBuilder::*FuncPtr)(long); LongArgCall(FuncPtr f, long n) : func(f), arg(n) { } void emit(FOTBuilder &); FuncPtr func; long arg; }; struct ExtensionLongArgCall : Call { typedef void (FOTBuilder::*FuncPtr)(long); ExtensionLongArgCall(FuncPtr f, long n) : func(f), arg(n) { } void emit(FOTBuilder &); FuncPtr func; long arg; }; struct LengthSpecArgCall : Call { typedef void (FOTBuilder::*FuncPtr)(const LengthSpec &); LengthSpecArgCall(FuncPtr f, const LengthSpec &ls) : func(f), arg(ls) { } void emit(FOTBuilder &); FuncPtr func; LengthSpec arg; }; struct OptLengthSpecArgCall : Call { typedef void (FOTBuilder::*FuncPtr)(const OptLengthSpec &); OptLengthSpecArgCall(FuncPtr f, const OptLengthSpec &ols) : func(f), arg(ols) { } void emit(FOTBuilder &); FuncPtr func; OptLengthSpec arg; }; struct NodePtrArgCall : Call { typedef void (FOTBuilder::*FuncPtr)(const NodePtr &); NodePtrArgCall(FuncPtr f, const NodePtr &nd) : func(f), arg(nd) { } void emit(FOTBuilder &); FuncPtr func; NodePtr arg; }; struct StringArgCall : Call { typedef void (FOTBuilder::*FuncPtr)(const StringC &); StringArgCall(FuncPtr f, const StringC &s) : func(f), arg(s) { } void emit(FOTBuilder &); FuncPtr func; StringC arg; }; struct ExtensionStringArgCall : Call { typedef void (FOTBuilder::*FuncPtr)(const StringC &); ExtensionStringArgCall(FuncPtr f, const StringC &s) : func(f), arg(s) { } void emit(FOTBuilder &); FuncPtr func; StringC arg; }; struct CharArgCall : Call { typedef void (FOTBuilder::*FuncPtr)(Char); CharArgCall(FuncPtr f, Char c) : func(f), arg(c) { } void emit(FOTBuilder &); FuncPtr func; Char arg; }; struct BoolArgCall : Call { typedef void (FOTBuilder::*FuncPtr)(bool); BoolArgCall(FuncPtr f, bool b) : func(f), arg(b) { } void emit(FOTBuilder &); FuncPtr func; bool arg; }; struct ExtensionBoolArgCall : Call { typedef void (FOTBuilder::*FuncPtr)(bool); ExtensionBoolArgCall(FuncPtr f, bool b) : func(f), arg(b) { } void emit(FOTBuilder &); FuncPtr func; bool arg; }; struct SymbolArgCall : Call { typedef void (FOTBuilder::*FuncPtr)(Symbol); SymbolArgCall(FuncPtr f, Symbol sym) : func(f), arg(sym) { } void emit(FOTBuilder &); FuncPtr func; Symbol arg; }; struct PublicIdArgCall : Call { typedef void (FOTBuilder::*FuncPtr)(PublicId); PublicIdArgCall(FuncPtr f, PublicId pubid) : func(f), arg(pubid) { } void emit(FOTBuilder &); FuncPtr func; PublicId arg; }; struct UnsignedArgCall : Call { typedef void (FOTBuilder::*FuncPtr)(unsigned); UnsignedArgCall(FuncPtr f, unsigned n) : func(f), arg(n) { } void emit(FOTBuilder &); FuncPtr func; unsigned arg; }; struct DeviceRGBColorArgCall : Call { typedef void (FOTBuilder::*FuncPtr)(const DeviceRGBColor &); DeviceRGBColorArgCall(FuncPtr f, const DeviceRGBColor &color) : func(f), arg(color) { } void emit(FOTBuilder &); FuncPtr func; DeviceRGBColor arg; }; struct InlineSpaceArgCall : Call { typedef void (FOTBuilder::*FuncPtr)(const InlineSpace &); InlineSpaceArgCall(FuncPtr f, InlineSpace is) : func(f), arg(is) { } void emit(FOTBuilder &); FuncPtr func; InlineSpace arg; }; struct CharactersFromNodeCall : Call { CharactersFromNodeCall(const NodePtr &, const Char *, size_t); void emit(FOTBuilder &); const Char *data; size_t size; NodePtr node; }; struct CharactersCall : Call { CharactersCall(const Char *, size_t); void emit(FOTBuilder &); StringC str; }; struct CharacterCall : Call { CharacterCall(const CharacterNIC &nic) : arg(nic) { } void emit(FOTBuilder &); CharacterNIC arg; }; struct StartNodeCall : Call { StartNodeCall(const NodePtr &, const StringC &); void emit(FOTBuilder &); NodePtr node; StringC mode; }; struct StartParagraphCall : Call { StartParagraphCall(const ParagraphNIC &nic); void emit(FOTBuilder &); ParagraphNIC arg; }; struct ParagraphBreakCall : Call { ParagraphBreakCall(const ParagraphNIC &nic); void emit(FOTBuilder &); ParagraphNIC arg; }; struct StartDisplayGroupCall : Call { StartDisplayGroupCall(const DisplayGroupNIC &nic); void emit(FOTBuilder &); DisplayGroupNIC arg; }; struct StartBoxCall : Call { StartBoxCall(const BoxNIC &nic) : arg(nic) { } void emit(FOTBuilder &); BoxNIC arg; }; struct StartLineFieldCall : Call { StartLineFieldCall(const LineFieldNIC &nic) : arg(nic) { } void emit(FOTBuilder &); LineFieldNIC arg; }; struct ExternalGraphicCall : Call { ExternalGraphicCall(const ExternalGraphicNIC &nic) : arg(nic) { } void emit(FOTBuilder &); ExternalGraphicNIC arg; }; struct RuleCall : Call { RuleCall(const RuleNIC &nic) : arg(nic) { } void emit(FOTBuilder &); RuleNIC arg; }; struct StartLeaderCall : Call { StartLeaderCall(const LeaderNIC &nic) : arg(nic) { } void emit(FOTBuilder &); LeaderNIC arg; }; struct StartTableCall : Call { StartTableCall(const TableNIC &nic) : arg(nic) { } void emit(FOTBuilder &); TableNIC arg; }; struct TableColumnCall : Call { TableColumnCall(const TableColumnNIC &nic) : arg(nic) { } void emit(FOTBuilder &); TableColumnNIC arg; }; struct StartTableCellCall : Call { StartTableCellCall(const TableCellNIC &nic) : arg(nic) { } void emit(FOTBuilder &); TableCellNIC arg; }; struct StartLinkCall : Call { StartLinkCall(const Address &addr) : arg(addr) { } void emit(FOTBuilder &); Address arg; }; struct SetGlyphSubstTableCall : Call { SetGlyphSubstTableCall(const Vector > &tables) : arg(tables) { } void emit(FOTBuilder &); Vector > arg; }; struct StartGridCall : Call { StartGridCall(const GridNIC &nic) : arg(nic) { } void emit(FOTBuilder &); GridNIC arg; }; struct StartGridCellCall : Call { StartGridCellCall(const GridCellNIC &nic) : arg(nic) { } void emit(FOTBuilder &); GridCellNIC arg; }; struct RadicalRadicalCall : Call { RadicalRadicalCall(const CharacterNIC &nic) : arg(nic) { } void emit(FOTBuilder &); CharacterNIC arg; }; struct ExtensionCall : Call { ExtensionCall(const ExtensionFlowObj &fo, const NodePtr &nd) : arg(fo.copy()), node(nd) { } void emit(FOTBuilder &); Owner arg; NodePtr node; }; struct EndExtensionCall : Call { EndExtensionCall(const CompoundExtensionFlowObj &fo) : arg(fo.copy()->asCompoundExtensionFlowObj()) { } void emit(FOTBuilder &); Owner arg; }; Call *calls_; Call **tail_; NodePtr currentNode_; StringC processingMode_; }; // Would like to make this a member of SaveFOTBuilder, but can't because // it has members that are instances of SaveFOTBuilder. struct StartSimplePageSequenceCall : SaveFOTBuilder::Call { StartSimplePageSequenceCall(FOTBuilder* headerFooter[FOTBuilder::nHF]); void emit(FOTBuilder&); SaveFOTBuilder headerFooter[FOTBuilder::nHF]; }; struct StartFractionCall : SaveFOTBuilder::Call { StartFractionCall(FOTBuilder *&numerator, FOTBuilder *&denominator); void emit(FOTBuilder &); SaveFOTBuilder numerator; SaveFOTBuilder denominator; }; struct StartScriptCall : SaveFOTBuilder::Call { StartScriptCall(FOTBuilder *&preSup, FOTBuilder *&preSub, FOTBuilder *&postSup, FOTBuilder *&postSub, FOTBuilder *&midSup, FOTBuilder *&midSub); void emit(FOTBuilder &); SaveFOTBuilder preSup; SaveFOTBuilder preSub; SaveFOTBuilder postSup; SaveFOTBuilder postSub; SaveFOTBuilder midSup; SaveFOTBuilder midSub; }; struct StartMarkCall : public SaveFOTBuilder::Call { StartMarkCall(FOTBuilder *&overMark, FOTBuilder *&underMark); void emit(FOTBuilder &); SaveFOTBuilder overMark; SaveFOTBuilder underMark; }; struct StartFenceCall : public SaveFOTBuilder::Call { StartFenceCall(FOTBuilder *&open, FOTBuilder *&close); void emit(FOTBuilder &); SaveFOTBuilder open; SaveFOTBuilder close; }; struct StartRadicalCall : public SaveFOTBuilder::Call { StartRadicalCall(FOTBuilder *°ree); void emit(FOTBuilder &); SaveFOTBuilder degree; }; struct StartMathOperatorCall : public SaveFOTBuilder::Call { StartMathOperatorCall(FOTBuilder *&oper, FOTBuilder *&lowerLimit, FOTBuilder *&upperLimit); void emit(FOTBuilder &); SaveFOTBuilder oper; SaveFOTBuilder lowerLimit; SaveFOTBuilder upperLimit; }; struct StartTablePartCall : SaveFOTBuilder::Call { StartTablePartCall(const FOTBuilder::TablePartNIC &nic, FOTBuilder *&header, FOTBuilder *&footer); void emit(FOTBuilder &); FOTBuilder::TablePartNIC arg; SaveFOTBuilder header; SaveFOTBuilder footer; }; struct StartMultiModeCall : SaveFOTBuilder::Call { StartMultiModeCall(const FOTBuilder::MultiMode *principalMode, const Vector &namedModes, Vector &ports); void emit(FOTBuilder &); FOTBuilder::MultiMode principalMode; bool hasPrincipalMode; Vector namedModes; IList ports; }; struct StartExtensionCall : SaveFOTBuilder::Call { StartExtensionCall(const FOTBuilder::CompoundExtensionFlowObj &, const NodePtr &, Vector &); void emit(FOTBuilder &); IList ports; NodePtr node; Owner flowObj; }; // This uses SaveFOTBuilder to provide a serial view of multi-port objects. class STYLE_API SerialFOTBuilder : public FOTBuilder { public: SerialFOTBuilder(); // Instead of overriding these void startSimplePageSequence(FOTBuilder* headerFooter[nHF]); void endSimplePageSequenceHeaderFooter(); void endSimplePageSequence(); void startTablePart(const TablePartNIC &, FOTBuilder *&header, FOTBuilder *&footer); void endTablePart(); void startFraction(FOTBuilder *&numerator, FOTBuilder *&denominator); void endFraction(); void startScript(FOTBuilder *&preSup, FOTBuilder *&preSub, FOTBuilder *&postSup, FOTBuilder *&postSub, FOTBuilder *&midSup, FOTBuilder *&midSub); void endScript(); void startMark(FOTBuilder *&overMark, FOTBuilder *&underMark); void endMark(); void startFence(FOTBuilder *&open, FOTBuilder *&close); void endFence(); void startRadical(FOTBuilder *°ree); void endRadical(); void startMathOperator(FOTBuilder *&oper, FOTBuilder *&lowerLimit, FOTBuilder *&upperLimit); void endMathOperator(); void startMultiMode(const MultiMode *, const Vector &, Vector &); void endMultiMode(); void startExtension(const CompoundExtensionFlowObj &, const NodePtr &, Vector &ports); void endExtension(const CompoundExtensionFlowObj &); // Override these virtual void startSimplePageSequenceSerial(); virtual void endSimplePageSequenceSerial(); virtual void startSimplePageSequenceHeaderFooter(unsigned); virtual void endSimplePageSequenceHeaderFooter(unsigned); virtual void endAllSimplePageSequenceHeaderFooter(); virtual void startFractionSerial(); virtual void endFractionSerial(); virtual void startFractionNumerator(); virtual void endFractionNumerator(); virtual void startFractionDenominator(); virtual void endFractionDenominator(); virtual void startScriptSerial(); virtual void endScriptSerial(); virtual void startScriptPreSup(); virtual void endScriptPreSup(); virtual void startScriptPreSub(); virtual void endScriptPreSub(); virtual void startScriptPostSup(); virtual void endScriptPostSup(); virtual void startScriptPostSub(); virtual void endScriptPostSub(); virtual void startScriptMidSup(); virtual void endScriptMidSup(); virtual void startScriptMidSub(); virtual void endScriptMidSub(); virtual void startMarkSerial(); virtual void endMarkSerial(); virtual void startMarkOver(); virtual void endMarkOver(); virtual void startMarkUnder(); virtual void endMarkUnder(); virtual void startFenceSerial(); virtual void endFenceSerial(); virtual void startFenceOpen(); virtual void endFenceOpen(); virtual void startFenceClose(); virtual void endFenceClose(); virtual void startRadicalSerial(); virtual void endRadicalSerial(); virtual void startRadicalDegree(); virtual void endRadicalDegree(); virtual void startMathOperatorSerial(); virtual void endMathOperatorSerial(); virtual void startMathOperatorOperator(); virtual void endMathOperatorOperator(); virtual void startMathOperatorLowerLimit(); virtual void endMathOperatorLowerLimit(); virtual void startMathOperatorUpperLimit(); virtual void endMathOperatorUpperLimit(); virtual void startTablePartSerial(const TablePartNIC &); virtual void endTablePartSerial(); virtual void startTablePartHeader(); virtual void endTablePartHeader(); virtual void startTablePartFooter(); virtual void endTablePartFooter(); virtual void startMultiModeSerial(const MultiMode *); virtual void endMultiModeSerial(); virtual void startMultiModeMode(const MultiMode &); virtual void endMultiModeMode(); virtual void startExtensionSerial(const CompoundExtensionFlowObj &, const NodePtr &); virtual void endExtensionSerial(const CompoundExtensionFlowObj &); virtual void startExtensionStream(const StringC &); virtual void endExtensionStream(const StringC &); private: IList save_; Vector > multiModeStack_; }; inline bool operator==(const FOTBuilder::GlyphId &g1, const FOTBuilder::GlyphId &g2) { return g1.publicId == g2.publicId && g1.suffix == g2.suffix; } bool STYLE_API operator==(const StringC &, const char *); #ifdef DSSSL_NAMESPACE } #endif #endif /* not FOTBuilder_INCLUDED */ openjade-1.3.2/style/FlowObj.cxx0100664000076400007640000025077106756777637014715 0ustar ianian// Copyright (c) 1996 James Clark // See the file copying.txt for copying permission. #include "stylelib.h" #include "ProcessContext.h" #include "Interpreter.h" #include "InterpreterMessages.h" #include "SosofoObj.h" #include "macros.h" #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif FlowObj::FlowObj() : style_(0) { hasSubObjects_ = 1; } void FlowObj::process(ProcessContext &context) { context.startFlowObj(); unsigned flags = 0; pushStyle(context, flags); processInner(context); popStyle(context, flags); context.endFlowObj(); } void FlowObj::pushStyle(ProcessContext &context, unsigned &) { if (style_) context.currentStyleStack().push(style_, context.vm(), context.currentFOTBuilder()); else context.currentStyleStack().pushEmpty(); } void FlowObj::popStyle(ProcessContext &context, unsigned) { if (style_) context.currentStyleStack().pop(); else context.currentStyleStack().popEmpty(); } void FlowObj::traceSubObjects(Collector &c) const { c.trace(style_); } CompoundFlowObj *FlowObj::asCompoundFlowObj() { return 0; } bool FlowObj::hasNonInheritedC(const Identifier *) const { return 0; } bool FlowObj::hasPseudoNonInheritedC(const Identifier *) const { return 0; } void FlowObj::setNonInheritedC(const Identifier *, ELObj *, const Location &, Interpreter &) { CANNOT_HAPPEN(); } bool FlowObj::isDisplayNIC(const Identifier *ident) { Identifier::SyntacticKey key; if (ident->syntacticKey(key)) { switch (key) { case Identifier::keyPositionPreference: case Identifier::keyIsKeepWithPrevious: case Identifier::keyIsKeepWithNext: case Identifier::keyKeep: case Identifier::keyBreakBefore: case Identifier::keyBreakAfter: case Identifier::keyIsMayViolateKeepBefore: case Identifier::keyIsMayViolateKeepAfter: case Identifier::keySpaceBefore: case Identifier::keySpaceAfter: return 1; default: break; } } return 0; } bool FlowObj::setDisplayNIC(FOTBuilder::DisplayNIC &nic, const Identifier *ident, ELObj *obj, const Location &loc, Interpreter &interp) { static FOTBuilder::Symbol breakVals[] = { FOTBuilder::symbolFalse, FOTBuilder::symbolPage, FOTBuilder::symbolColumnSet, FOTBuilder::symbolColumn }; Identifier::SyntacticKey key; if (ident->syntacticKey(key)) { switch (key) { case Identifier::keyPositionPreference: { static FOTBuilder::Symbol vals[] = { FOTBuilder::symbolFalse, FOTBuilder::symbolTop, FOTBuilder::symbolBottom, }; interp.convertEnumC(vals, SIZEOF(vals), obj, ident, loc, nic.positionPreference); } return 1; case Identifier::keyIsKeepWithPrevious: interp.convertBooleanC(obj, ident, loc, nic.keepWithPrevious); return 1; case Identifier::keyIsKeepWithNext: interp.convertBooleanC(obj, ident, loc, nic.keepWithNext); return 1; case Identifier::keyKeep: { static FOTBuilder::Symbol vals[] = { FOTBuilder::symbolFalse, FOTBuilder::symbolTrue, FOTBuilder::symbolPage, FOTBuilder::symbolColumnSet, FOTBuilder::symbolColumn }; interp.convertEnumC(vals, SIZEOF(vals), obj, ident, loc, nic.keep); } return 1; case Identifier::keyBreakBefore: interp.convertEnumC(breakVals, SIZEOF(breakVals), obj, ident, loc, nic.breakBefore); return 1; case Identifier::keyBreakAfter: interp.convertEnumC(breakVals, SIZEOF(breakVals), obj, ident, loc, nic.breakAfter); return 1; case Identifier::keyIsMayViolateKeepBefore: interp.convertBooleanC(obj, ident, loc, nic.mayViolateKeepBefore); return 1; case Identifier::keyIsMayViolateKeepAfter: interp.convertBooleanC(obj, ident, loc, nic.mayViolateKeepAfter); return 1; case Identifier::keySpaceBefore: case Identifier::keySpaceAfter: { FOTBuilder::DisplaySpace &ds = (key == Identifier::keySpaceBefore ? nic.spaceBefore : nic.spaceAfter); DisplaySpaceObj *dso = obj->asDisplaySpace(); if (dso) ds = dso->displaySpace(); else if (interp.convertLengthSpecC(obj, ident, loc, ds.nominal)) { ds.max = ds.nominal; ds.min = ds.nominal; } } return 1; default: break; } } return 0; } void CompoundFlowObj::processInner(ProcessContext &context) { if (content_) content_->process(context); else context.processChildren(context.vm().interp->initialProcessingMode()); } void CompoundFlowObj::traceSubObjects(Collector &c) const { c.trace(content_); FlowObj::traceSubObjects(c); } CompoundFlowObj *CompoundFlowObj::asCompoundFlowObj() { return this; } class DisplayGroupFlowObj : public CompoundFlowObj { public: void *operator new(size_t, Collector &c) { return c.allocateObject(1); } DisplayGroupFlowObj(); DisplayGroupFlowObj(const DisplayGroupFlowObj &); void processInner(ProcessContext &); FlowObj *copy(Collector &) const; void setNonInheritedC(const Identifier *, ELObj *, const Location &, Interpreter &); bool hasNonInheritedC(const Identifier *) const; protected: Owner nic_; }; DisplayGroupFlowObj::DisplayGroupFlowObj() : nic_(new FOTBuilder::DisplayGroupNIC) { } DisplayGroupFlowObj::DisplayGroupFlowObj(const DisplayGroupFlowObj &fo) : CompoundFlowObj(fo), nic_(new FOTBuilder::DisplayGroupNIC(*fo.nic_)) { } void DisplayGroupFlowObj::processInner(ProcessContext &context) { FOTBuilder &fotb = context.currentFOTBuilder(); fotb.startDisplayGroup(*nic_); CompoundFlowObj::processInner(context); fotb.endDisplayGroup(); } bool DisplayGroupFlowObj::hasNonInheritedC(const Identifier *ident) const { Identifier::SyntacticKey key; if (ident->syntacticKey(key) && key == Identifier::keyCoalesceId) return 1; return isDisplayNIC(ident); } void DisplayGroupFlowObj::setNonInheritedC(const Identifier *ident, ELObj *obj, const Location &loc, Interpreter &interp) { if (!setDisplayNIC(*nic_, ident, obj, loc, interp)) { const Char *s; size_t n; if (!obj->stringData(s, n)) { interp.setNextLocation(loc); interp.message(InterpreterMessages::invalidCharacteristicValue, StringMessageArg(ident->name())); } nic_->hasCoalesceId = 1; nic_->coalesceId.assign(s, n); } } FlowObj *DisplayGroupFlowObj::copy(Collector &c) const { return new (c) DisplayGroupFlowObj(*this); } class ParagraphFlowObj : public CompoundFlowObj { public: void *operator new(size_t, Collector &c) { return c.allocateObject(1); } ParagraphFlowObj(); ParagraphFlowObj(const ParagraphFlowObj &); void processInner(ProcessContext &); FlowObj *copy(Collector &) const; void setNonInheritedC(const Identifier *, ELObj *, const Location &, Interpreter &); bool hasNonInheritedC(const Identifier *) const; private: Owner nic_; }; ParagraphFlowObj::ParagraphFlowObj() : nic_(new FOTBuilder::ParagraphNIC) { } ParagraphFlowObj::ParagraphFlowObj(const ParagraphFlowObj &fo) : CompoundFlowObj(fo), nic_(new FOTBuilder::ParagraphNIC(*fo.nic_)) { } void ParagraphFlowObj::processInner(ProcessContext &context) { FOTBuilder &fotb = context.currentFOTBuilder(); fotb.startParagraph(*nic_); CompoundFlowObj::processInner(context); fotb.endParagraph(); } void ParagraphFlowObj::setNonInheritedC(const Identifier *ident, ELObj *obj, const Location &loc, Interpreter &interp) { setDisplayNIC(*nic_, ident, obj, loc, interp); } bool ParagraphFlowObj::hasNonInheritedC(const Identifier *ident) const { return isDisplayNIC(ident); } FlowObj *ParagraphFlowObj::copy(Collector &c) const { return new (c) ParagraphFlowObj(*this); } class ParagraphBreakFlowObj : public FlowObj { public: void *operator new(size_t, Collector &c) { return c.allocateObject(1); } ParagraphBreakFlowObj(); ParagraphBreakFlowObj(const ParagraphBreakFlowObj &); FlowObj *copy(Collector &) const; void processInner(ProcessContext &); void setNonInheritedC(const Identifier *, ELObj *, const Location &, Interpreter &); bool hasNonInheritedC(const Identifier *) const; private: Owner nic_; }; ParagraphBreakFlowObj::ParagraphBreakFlowObj() : nic_(new FOTBuilder::ParagraphNIC) { } ParagraphBreakFlowObj::ParagraphBreakFlowObj(const ParagraphBreakFlowObj &fo) : FlowObj(fo), nic_(new FOTBuilder::ParagraphNIC(*fo.nic_)) { } FlowObj *ParagraphBreakFlowObj::copy(Collector &c) const { return new (c) ParagraphBreakFlowObj(*this); } void ParagraphBreakFlowObj::processInner(ProcessContext &context) { context.currentFOTBuilder().paragraphBreak(*nic_); } void ParagraphBreakFlowObj::setNonInheritedC(const Identifier *ident, ELObj *obj, const Location &loc, Interpreter &interp) { setDisplayNIC(*nic_, ident, obj, loc, interp); } bool ParagraphBreakFlowObj::hasNonInheritedC(const Identifier *ident) const { return isDisplayNIC(ident); } class ExternalGraphicFlowObj : public FlowObj { public: void *operator new(size_t, Collector &c) { return c.allocateObject(1); } ExternalGraphicFlowObj(); ExternalGraphicFlowObj(const ExternalGraphicFlowObj &); void processInner(ProcessContext &); FlowObj *copy(Collector &) const; void setNonInheritedC(const Identifier *, ELObj *, const Location &, Interpreter &); bool hasNonInheritedC(const Identifier *) const; private: Owner nic_; }; ExternalGraphicFlowObj::ExternalGraphicFlowObj() : nic_(new FOTBuilder::ExternalGraphicNIC) { } ExternalGraphicFlowObj::ExternalGraphicFlowObj(const ExternalGraphicFlowObj &fo) : FlowObj(fo), nic_(new FOTBuilder::ExternalGraphicNIC(*fo.nic_)) { } void ExternalGraphicFlowObj::processInner(ProcessContext &context) { context.currentFOTBuilder().externalGraphic(*nic_); } void ExternalGraphicFlowObj::setNonInheritedC(const Identifier *ident, ELObj *obj, const Location &loc, Interpreter &interp) { if (!setDisplayNIC(*nic_, ident, obj, loc, interp)) { Identifier::SyntacticKey key; if (ident->syntacticKey(key)) { switch (key) { case Identifier::keyIsDisplay: interp.convertBooleanC(obj, ident, loc, nic_->isDisplay); return; case Identifier::keyScale: { double d; if (obj->realValue(d)) { nic_->scaleType = FOTBuilder::symbolFalse; nic_->scale[0] = nic_->scale[1] = d; } else if (obj->asSymbol()) { static FOTBuilder::Symbol vals[] = { FOTBuilder::symbolMax, FOTBuilder::symbolMaxUniform }; interp.convertEnumC(vals, 2, obj, ident, loc, nic_->scaleType); } else { PairObj *pair = obj->asPair(); if (pair && pair->car()->realValue(nic_->scale[0]) && (pair = pair->cdr()->asPair()) != 0 && pair->car()->realValue(nic_->scale[1]) && pair->cdr()->isNil()) { nic_->scaleType = FOTBuilder::symbolFalse; } else interp.invalidCharacteristicValue(ident, loc); } } return; case Identifier::keyMaxWidth: if (interp.convertLengthSpecC(obj, ident, loc, nic_->maxWidth)) nic_->hasMaxWidth = 1; return; case Identifier::keyMaxHeight: if (interp.convertLengthSpecC(obj, ident, loc, nic_->maxHeight)) nic_->hasMaxHeight = 1; return; case Identifier::keyEntitySystemId: interp.convertStringC(obj, ident, loc, nic_->entitySystemId); return; case Identifier::keyNotationSystemId: interp.convertStringC(obj, ident, loc, nic_->notationSystemId); return; case Identifier::keyPositionPointX: interp.convertLengthSpecC(obj, ident, loc, nic_->positionPointX); return; case Identifier::keyPositionPointY: interp.convertLengthSpecC(obj, ident, loc, nic_->positionPointY); return; case Identifier::keyEscapementDirection: { static FOTBuilder::Symbol vals[] = { FOTBuilder::symbolTopToBottom, FOTBuilder::symbolLeftToRight, FOTBuilder::symbolBottomToTop, FOTBuilder::symbolRightToLeft }; interp.convertEnumC(vals, SIZEOF(vals), obj, ident, loc, nic_->escapementDirection); } return; case Identifier::keyBreakBeforePriority: interp.convertIntegerC(obj, ident, loc, nic_->breakBeforePriority); return; case Identifier::keyBreakAfterPriority: interp.convertIntegerC(obj, ident, loc, nic_->breakAfterPriority); return; default: break; } } CANNOT_HAPPEN(); } } bool ExternalGraphicFlowObj::hasNonInheritedC(const Identifier *ident) const { Identifier::SyntacticKey key; if (ident->syntacticKey(key)) { switch (key) { case Identifier::keyIsDisplay: case Identifier::keyScale: case Identifier::keyMaxWidth: case Identifier::keyMaxHeight: case Identifier::keyEntitySystemId: case Identifier::keyNotationSystemId: case Identifier::keyPositionPointX: case Identifier::keyPositionPointY: case Identifier::keyEscapementDirection: case Identifier::keyBreakBeforePriority: case Identifier::keyBreakAfterPriority: return 1; default: break; } } return isDisplayNIC(ident); } FlowObj *ExternalGraphicFlowObj::copy(Collector &c) const { return new (c) ExternalGraphicFlowObj(*this); } class RuleFlowObj : public FlowObj { public: void *operator new(size_t, Collector &c) { return c.allocateObject(1); } RuleFlowObj(); RuleFlowObj(const RuleFlowObj &); void processInner(ProcessContext &); FlowObj *copy(Collector &) const; void setNonInheritedC(const Identifier *, ELObj *, const Location &, Interpreter &); bool hasNonInheritedC(const Identifier *) const; bool ruleStyle(ProcessContext &, StyleObj *&style) { style = style_; return 1; } bool isRule() { return 1; } private: Owner nic_; }; RuleFlowObj::RuleFlowObj() : nic_(new FOTBuilder::RuleNIC) { } RuleFlowObj::RuleFlowObj(const RuleFlowObj &fo) : FlowObj(fo), nic_(new FOTBuilder::RuleNIC(*fo.nic_)) { } void RuleFlowObj::processInner(ProcessContext &context) { context.currentFOTBuilder().rule(*nic_); } void RuleFlowObj::setNonInheritedC(const Identifier *ident, ELObj *obj, const Location &loc, Interpreter &interp) { if (setDisplayNIC(*nic_, ident, obj, loc, interp)) return; Identifier::SyntacticKey key; if (ident->syntacticKey(key)) { switch (key) { case Identifier::keyOrientation: { static FOTBuilder::Symbol vals[] = { FOTBuilder::symbolHorizontal, FOTBuilder::symbolVertical, FOTBuilder::symbolEscapement, FOTBuilder::symbolLineProgression }; interp.convertEnumC(vals, SIZEOF(vals), obj, ident, loc, nic_->orientation); } return; case Identifier::keyLength: if (interp.convertLengthSpecC(obj, ident, loc, nic_->length)) nic_->hasLength = 1; return; case Identifier::keyBreakBeforePriority: interp.convertIntegerC(obj, ident, loc, nic_->breakBeforePriority); return; case Identifier::keyBreakAfterPriority: interp.convertIntegerC(obj, ident, loc, nic_->breakAfterPriority); return; default: break; } } CANNOT_HAPPEN(); } bool RuleFlowObj::hasNonInheritedC(const Identifier *ident) const { Identifier::SyntacticKey key; if (ident->syntacticKey(key)) { switch (key) { case Identifier::keyOrientation: case Identifier::keyLength: case Identifier::keyBreakBeforePriority: case Identifier::keyBreakAfterPriority: return 1; default: break; } } return isDisplayNIC(ident); } FlowObj *RuleFlowObj::copy(Collector &c) const { return new (c) RuleFlowObj(*this); } class AlignmentPointFlowObj : public FlowObj { public: AlignmentPointFlowObj() { } FlowObj *copy(Collector &) const; void processInner(ProcessContext &); }; FlowObj *AlignmentPointFlowObj::copy(Collector &c) const { return new (c) AlignmentPointFlowObj(*this); } void AlignmentPointFlowObj::processInner(ProcessContext &context) { context.currentFOTBuilder().alignmentPoint(); } class SidelineFlowObj : public CompoundFlowObj { public: SidelineFlowObj() { } FlowObj *copy(Collector &) const; void processInner(ProcessContext &); }; FlowObj *SidelineFlowObj::copy(Collector &c) const { return new (c) SidelineFlowObj(*this); } void SidelineFlowObj::processInner(ProcessContext &context) { FOTBuilder &fotb = context.currentFOTBuilder(); fotb.startSideline(); CompoundFlowObj::processInner(context); fotb.endSideline(); } void SequenceFlowObj::processInner(ProcessContext &context) { FOTBuilder &fotb = context.currentFOTBuilder(); fotb.startSequence(); CompoundFlowObj::processInner(context); fotb.endSequence(); } FlowObj *SequenceFlowObj::copy(Collector &c) const { return new (c) SequenceFlowObj(*this); } class LineFieldFlowObj : public CompoundFlowObj { public: void *operator new(size_t, Collector &c) { return c.allocateObject(1); } LineFieldFlowObj() : nic_(new FOTBuilder::LineFieldNIC) { } LineFieldFlowObj(const LineFieldFlowObj &fo) : CompoundFlowObj(fo), nic_(new FOTBuilder::LineFieldNIC(*fo.nic_)) { } void processInner(ProcessContext &); FlowObj *copy(Collector &) const; bool hasNonInheritedC(const Identifier *ident) const; void setNonInheritedC(const Identifier *ident, ELObj *obj, const Location &loc, Interpreter &interp); private: Owner nic_; }; FlowObj *LineFieldFlowObj::copy(Collector &c) const { return new (c) LineFieldFlowObj(*this); } void LineFieldFlowObj::processInner(ProcessContext &context) { FOTBuilder &fotb = context.currentFOTBuilder(); fotb.startLineField(*nic_); CompoundFlowObj::processInner(context); fotb.endLineField(); } void LineFieldFlowObj::setNonInheritedC(const Identifier *ident, ELObj *obj, const Location &loc, Interpreter &interp) { Identifier::SyntacticKey key; if (ident->syntacticKey(key)) { switch (key) { case Identifier::keyBreakBeforePriority: interp.convertIntegerC(obj, ident, loc, nic_->breakBeforePriority); return; case Identifier::keyBreakAfterPriority: interp.convertIntegerC(obj, ident, loc, nic_->breakAfterPriority); return; default: break; } } CANNOT_HAPPEN(); } bool LineFieldFlowObj::hasNonInheritedC(const Identifier *ident) const { Identifier::SyntacticKey key; if (ident->syntacticKey(key)) { switch (key) { case Identifier::keyBreakBeforePriority: case Identifier::keyBreakAfterPriority: return 1; default: break; } } return 0; } class SimplePageSequenceFlowObj : public CompoundFlowObj { public: void *operator new(size_t, Collector &c) { return c.allocateObject(1); } struct HeaderFooter { enum { nParts = 6 }; HeaderFooter(); SosofoObj *part[nParts]; }; SimplePageSequenceFlowObj(); SimplePageSequenceFlowObj(const SimplePageSequenceFlowObj &); void processInner(ProcessContext &); FlowObj *copy(Collector &) const; bool hasNonInheritedC(const Identifier *) const; void setNonInheritedC(const Identifier *, ELObj *, const Location &, Interpreter &); void traceSubObjects(Collector &) const; private: enum { nPageTypeBits = 2 }; Owner hf_; }; SimplePageSequenceFlowObj::SimplePageSequenceFlowObj() : hf_(new HeaderFooter) { hasSubObjects_ = 1; } SimplePageSequenceFlowObj::SimplePageSequenceFlowObj(const SimplePageSequenceFlowObj &fo) : CompoundFlowObj(fo), hf_(new HeaderFooter(*fo.hf_)) { } void SimplePageSequenceFlowObj::traceSubObjects(Collector &c) const { for (int i = 0; i < HeaderFooter::nParts; i++) c.trace(hf_->part[i]); CompoundFlowObj::traceSubObjects(c); } void SimplePageSequenceFlowObj::processInner(ProcessContext &context) { FOTBuilder &fotb = context.currentFOTBuilder(); FOTBuilder* hf_fotb[FOTBuilder::nHF]; fotb.startSimplePageSequence(hf_fotb); for (int i = 0; i < (1 << nPageTypeBits); i++) { context.setPageType(i); for (int j = 0; j < HeaderFooter::nParts; j++) { if (hf_->part[j]) { context.pushPrincipalPort(hf_fotb[i | (j << nPageTypeBits)]); hf_->part[j]->process(context); context.popPrincipalPort(); } } } fotb.endSimplePageSequenceHeaderFooter(); CompoundFlowObj::processInner(context); fotb.endSimplePageSequence(); } void SimplePageSequenceFlowObj::setNonInheritedC(const Identifier *ident, ELObj *obj, const Location &loc, Interpreter &interp) { SosofoObj *sosofo = obj->asSosofo(); if (!sosofo) { interp.setNextLocation(loc); interp.message(InterpreterMessages::invalidCharacteristicValue, StringMessageArg(ident->name())); return; } Identifier::SyntacticKey key; if (ident->syntacticKey(key)) { switch (key) { case Identifier::keyLeftHeader: hf_->part[(FOTBuilder::leftHF | FOTBuilder::headerHF) >> nPageTypeBits] = sosofo; return; case Identifier::keyCenterHeader: hf_->part[(FOTBuilder::centerHF | FOTBuilder::headerHF) >> nPageTypeBits] = sosofo; return; case Identifier::keyRightHeader: hf_->part[(FOTBuilder::rightHF | FOTBuilder::headerHF) >> nPageTypeBits] = sosofo; return; case Identifier::keyLeftFooter: hf_->part[(FOTBuilder::leftHF | FOTBuilder::footerHF) >> nPageTypeBits] = sosofo; return; case Identifier::keyCenterFooter: hf_->part[(FOTBuilder::centerHF | FOTBuilder::footerHF) >> nPageTypeBits] = sosofo; return; case Identifier::keyRightFooter: hf_->part[(FOTBuilder::rightHF | FOTBuilder::footerHF) >> nPageTypeBits] = sosofo; return; default: break; } } CANNOT_HAPPEN(); } bool SimplePageSequenceFlowObj::hasNonInheritedC(const Identifier *ident) const { Identifier::SyntacticKey key; if (ident->syntacticKey(key)) { switch (key) { case Identifier::keyLeftHeader: case Identifier::keyCenterHeader: case Identifier::keyRightHeader: case Identifier::keyLeftFooter: case Identifier::keyCenterFooter: case Identifier::keyRightFooter: return 1; default: break; } } return 0; } FlowObj *SimplePageSequenceFlowObj::copy(Collector &c) const { return new (c) SimplePageSequenceFlowObj(*this); } SimplePageSequenceFlowObj::HeaderFooter::HeaderFooter() { for (int i = 0; i < nParts; i++) part[i] = 0; } class LinkFlowObj : public CompoundFlowObj { public: LinkFlowObj(); FlowObj *copy(Collector &) const; void processInner(ProcessContext &); void traceSubObjects(Collector &) const; bool hasNonInheritedC(const Identifier *) const; void setNonInheritedC(const Identifier *, ELObj *, const Location &, Interpreter &); private: AddressObj *addressObj_; }; LinkFlowObj::LinkFlowObj() : addressObj_(0) { } void LinkFlowObj::processInner(ProcessContext &context) { FOTBuilder &fotb = context.currentFOTBuilder(); if (!addressObj_) { FOTBuilder::Address addr; addr.type = FOTBuilder::Address::none; fotb.startLink(addr); } else fotb.startLink(addressObj_->address()); CompoundFlowObj::processInner(context); fotb.endLink(); } FlowObj *LinkFlowObj::copy(Collector &c) const { return new (c) LinkFlowObj(*this); } void LinkFlowObj::traceSubObjects(Collector &c) const { CompoundFlowObj::traceSubObjects(c); c.trace(addressObj_); } bool LinkFlowObj::hasNonInheritedC(const Identifier *ident) const { Identifier::SyntacticKey key; return ident->syntacticKey(key) && key == Identifier::keyDestination; } void LinkFlowObj::setNonInheritedC(const Identifier *ident, ELObj *obj, const Location &loc, Interpreter &interp) { AddressObj *address = obj->asAddress(); if (!address) { if (obj != interp.makeFalse()) { interp.setNextLocation(loc); interp.message(InterpreterMessages::invalidCharacteristicValue, StringMessageArg(ident->name())); } else address = interp.makeAddressNone(); } addressObj_ = address; } class ScrollFlowObj : public CompoundFlowObj { public: ScrollFlowObj() { } void processInner(ProcessContext &); FlowObj *copy(Collector &) const; }; void ScrollFlowObj::processInner(ProcessContext &context) { FOTBuilder &fotb = context.currentFOTBuilder(); fotb.startScroll(); CompoundFlowObj::processInner(context); fotb.endScroll(); } FlowObj *ScrollFlowObj::copy(Collector &c) const { return new (c) ScrollFlowObj(*this); } class MarginaliaFlowObj : public CompoundFlowObj { public: MarginaliaFlowObj() { } void processInner(ProcessContext &); FlowObj *copy(Collector &) const; }; void MarginaliaFlowObj::processInner(ProcessContext &context) { FOTBuilder &fotb = context.currentFOTBuilder(); fotb.startMarginalia(); CompoundFlowObj::processInner(context); fotb.endMarginalia(); } FlowObj *MarginaliaFlowObj::copy(Collector &c) const { return new (c) MarginaliaFlowObj(*this); } class MultiModeFlowObj : public CompoundFlowObj { public: void *operator new(size_t, Collector &c) { return c.allocateObject(1); } MultiModeFlowObj(); MultiModeFlowObj(const MultiModeFlowObj &); void processInner(ProcessContext &); FlowObj *copy(Collector &) const; bool hasNonInheritedC(const Identifier *) const; void setNonInheritedC(const Identifier *, ELObj *, const Location &, Interpreter &); struct NIC { NIC() : hasPrincipalMode(0) { } bool hasPrincipalMode; FOTBuilder::MultiMode principalMode; Vector namedModes; }; private: bool handleMultiModesMember(const Identifier *, ELObj *obj, const Location &, Interpreter &); Owner nic_; }; MultiModeFlowObj::MultiModeFlowObj() : nic_(new NIC) { } MultiModeFlowObj::MultiModeFlowObj(const MultiModeFlowObj &fo) : CompoundFlowObj(fo), nic_(new NIC(*fo.nic_)) { } void MultiModeFlowObj::processInner(ProcessContext &context) { FOTBuilder &fotb = context.currentFOTBuilder(); Vector fotbs(nic_->namedModes.size()); fotb.startMultiMode(nic_->hasPrincipalMode ? &nic_->principalMode : 0, nic_->namedModes, fotbs); Vector portSyms(nic_->namedModes.size()); for (size_t i = 0; i < portSyms.size(); i++) portSyms[i] = context.vm().interp->makeSymbol(nic_->namedModes[i].name); context.pushPorts(nic_->hasPrincipalMode, portSyms, fotbs); CompoundFlowObj::processInner(context); context.popPorts(); fotb.endMultiMode(); } FlowObj *MultiModeFlowObj::copy(Collector &c) const { return new (c) MultiModeFlowObj(*this); } bool MultiModeFlowObj::hasNonInheritedC(const Identifier *ident) const { Identifier::SyntacticKey key; return ident->syntacticKey(key) && key == Identifier::keyMultiModes; } void MultiModeFlowObj::setNonInheritedC(const Identifier *ident, ELObj *obj, const Location &loc, Interpreter &interp) { while (!obj->isNil()) { PairObj *pair = obj->asPair(); if (!pair || !handleMultiModesMember(ident, pair->car(), loc, interp)) { interp.setNextLocation(loc); interp.message(InterpreterMessages::invalidCharacteristicValue, StringMessageArg(ident->name())); return; } obj = pair->cdr(); } } bool MultiModeFlowObj::handleMultiModesMember(const Identifier *, ELObj *obj, const Location &loc, Interpreter &interp) { if (obj == interp.makeFalse()) { nic_->hasPrincipalMode = 1; return 1; } SymbolObj *sym = obj->asSymbol(); if (sym) { nic_->namedModes.resize(nic_->namedModes.size() + 1); nic_->namedModes.back().name = *sym->name(); return 1; } PairObj *pair = obj->asPair(); if (!pair) return 0; ELObj *spec = pair->car(); pair = pair->cdr()->asPair(); if (!pair || !pair->cdr()->isNil()) return 0; const Char *s; size_t n; if (!pair->car()->stringData(s, n)) return 0; if (spec == interp.makeFalse()) { nic_->hasPrincipalMode = 1; nic_->principalMode.hasDesc = 1; nic_->principalMode.desc.assign(s, n); return 1; } sym = spec->asSymbol(); if (!sym) return 0; nic_->namedModes.resize(nic_->namedModes.size() + 1); nic_->namedModes.back().name = *sym->name(); nic_->namedModes.back().desc.assign(s, n); nic_->namedModes.back().hasDesc = 1; return 1; } class ScoreFlowObj : public CompoundFlowObj { public: void *operator new(size_t, Collector &c) { return c.allocateObject(1); } ScoreFlowObj(); FlowObj *copy(Collector &) const; void processInner(ProcessContext &); bool hasNonInheritedC(const Identifier *) const; void setNonInheritedC(const Identifier *, ELObj *, const Location &, Interpreter &); class Type { public: virtual ~Type(); virtual void start(FOTBuilder &) = 0; virtual Type *copy() const = 0; }; private: class SymbolType : public Type { public: SymbolType(FOTBuilder::Symbol type) : type_(type) { } void start(FOTBuilder &); Type *copy() const; private: FOTBuilder::Symbol type_; }; class LengthSpecType : public Type { public: LengthSpecType(long n) : len_(n) { } void start(FOTBuilder &); Type *copy() const; private: FOTBuilder::LengthSpec len_; }; class CharType : public Type { public: CharType(Char c) : c_(c) { } void start(FOTBuilder &); Type *copy() const; private: Char c_; }; CopyOwner type_; }; ScoreFlowObj::ScoreFlowObj() { } FlowObj *ScoreFlowObj::copy(Collector &c) const { return new (c) ScoreFlowObj(*this); } void ScoreFlowObj::processInner(ProcessContext &context) { FOTBuilder &fotb = context.currentFOTBuilder(); if (type_) type_->start(fotb); else fotb.startSequence(); CompoundFlowObj::processInner(context); if (type_) fotb.endScore(); else fotb.endSequence(); } bool ScoreFlowObj::hasNonInheritedC(const Identifier *ident) const { Identifier::SyntacticKey key; return ident->syntacticKey(key) && key == Identifier::keyType; } void ScoreFlowObj::setNonInheritedC(const Identifier *ident, ELObj *obj, const Location &loc, Interpreter &interp) { Char c; if (obj->charValue(c)) { type_ = new CharType(c); return; } double d; long n; int dim; switch (obj->quantityValue(n, d, dim)) { case longQuantity: if (dim == 1) { type_ = new LengthSpecType(n); return; } break; case doubleQuantity: if (dim == 1) { type_ = new LengthSpecType(long(d)); return; } break; default: break; } static FOTBuilder::Symbol vals[] = { FOTBuilder::symbolBefore, FOTBuilder::symbolThrough, FOTBuilder::symbolAfter }; FOTBuilder::Symbol sym; if (interp.convertEnumC(vals, SIZEOF(vals), obj, ident, loc, sym)) type_ = new SymbolType(sym); } ScoreFlowObj::Type::~Type() { } void ScoreFlowObj::SymbolType::start(FOTBuilder &fotb) { fotb.startScore(type_); } void ScoreFlowObj::CharType::start(FOTBuilder &fotb) { fotb.startScore(c_); } void ScoreFlowObj::LengthSpecType::start(FOTBuilder &fotb) { fotb.startScore(len_); } ScoreFlowObj::Type *ScoreFlowObj::SymbolType::copy() const { return new SymbolType(*this); } ScoreFlowObj::Type *ScoreFlowObj::LengthSpecType::copy() const { return new LengthSpecType(*this); } ScoreFlowObj::Type *ScoreFlowObj::CharType::copy() const { return new CharType(*this); } class BoxFlowObj : public CompoundFlowObj { public: void *operator new(size_t, Collector &c) { return c.allocateObject(1); } BoxFlowObj(); BoxFlowObj(const BoxFlowObj &); FlowObj *copy(Collector &) const; void processInner(ProcessContext &); bool hasNonInheritedC(const Identifier *) const; void setNonInheritedC(const Identifier *, ELObj *, const Location &, Interpreter &); private: Owner nic_; }; BoxFlowObj::BoxFlowObj() : nic_(new FOTBuilder::BoxNIC) { } BoxFlowObj::BoxFlowObj(const BoxFlowObj &fo) : CompoundFlowObj(fo), nic_(new FOTBuilder::BoxNIC(*fo.nic_)) { } void BoxFlowObj::processInner(ProcessContext &context) { FOTBuilder &fotb = context.currentFOTBuilder(); fotb.startBox(*nic_); CompoundFlowObj::processInner(context); fotb.endBox(); } void BoxFlowObj::setNonInheritedC(const Identifier *ident, ELObj *obj, const Location &loc, Interpreter &interp) { if (setDisplayNIC(*nic_, ident, obj, loc, interp)) return; Identifier::SyntacticKey key; if (ident->syntacticKey(key)) { switch (key) { case Identifier::keyIsDisplay: interp.convertBooleanC(obj, ident, loc, nic_->isDisplay); return; case Identifier::keyBreakBeforePriority: interp.convertIntegerC(obj, ident, loc, nic_->breakBeforePriority); return; case Identifier::keyBreakAfterPriority: interp.convertIntegerC(obj, ident, loc, nic_->breakAfterPriority); return; default: break; } } CANNOT_HAPPEN(); } bool BoxFlowObj::hasNonInheritedC(const Identifier *ident) const { Identifier::SyntacticKey key; if (ident->syntacticKey(key)) { switch (key) { case Identifier::keyIsDisplay: case Identifier::keyBreakBeforePriority: case Identifier::keyBreakAfterPriority: return 1; default: break; } } return isDisplayNIC(ident); } FlowObj *BoxFlowObj::copy(Collector &c) const { return new (c) BoxFlowObj(*this); } class LeaderFlowObj : public CompoundFlowObj { public: void *operator new(size_t, Collector &c) { return c.allocateObject(1); } LeaderFlowObj(); LeaderFlowObj(const LeaderFlowObj &); void processInner(ProcessContext &); FlowObj *copy(Collector &) const; void setNonInheritedC(const Identifier *, ELObj *, const Location &, Interpreter &); bool hasNonInheritedC(const Identifier *) const; private: Owner nic_; }; LeaderFlowObj::LeaderFlowObj() : nic_(new FOTBuilder::LeaderNIC) { } LeaderFlowObj::LeaderFlowObj(const LeaderFlowObj &fo) : CompoundFlowObj(fo), nic_(new FOTBuilder::LeaderNIC(*fo.nic_)) { } void LeaderFlowObj::processInner(ProcessContext &context) { FOTBuilder &fotb = context.currentFOTBuilder(); fotb.startLeader(*nic_); CompoundFlowObj::processInner(context); fotb.endLeader(); } void LeaderFlowObj::setNonInheritedC(const Identifier *ident, ELObj *obj, const Location &loc, Interpreter &interp) { Identifier::SyntacticKey key; if (ident->syntacticKey(key)) { switch (key) { case Identifier::keyLength: if (interp.convertLengthSpecC(obj, ident, loc, nic_->length)) nic_->hasLength = 1; return; case Identifier::keyBreakBeforePriority: interp.convertIntegerC(obj, ident, loc, nic_->breakBeforePriority); return; case Identifier::keyBreakAfterPriority: interp.convertIntegerC(obj, ident, loc, nic_->breakAfterPriority); return; default: break; } } CANNOT_HAPPEN(); } bool LeaderFlowObj::hasNonInheritedC(const Identifier *ident) const { Identifier::SyntacticKey key; if (ident->syntacticKey(key)) { switch (key) { case Identifier::keyLength: case Identifier::keyBreakBeforePriority: case Identifier::keyBreakAfterPriority: return 1; default: break; } } return 0; } FlowObj *LeaderFlowObj::copy(Collector &c) const { return new (c) LeaderFlowObj(*this); } class CharacterFlowObj : public FlowObj { public: void *operator new(size_t, Collector &c) { return c.allocateObject(1); } CharacterFlowObj(); CharacterFlowObj(const CharacterFlowObj &); void processInner(ProcessContext &); FlowObj *copy(Collector &) const; void setNonInheritedC(const Identifier *, ELObj *, const Location &, Interpreter &); bool setImplicitChar(ELObj *, const Location &, Interpreter &); bool hasNonInheritedC(const Identifier *) const; bool characterStyle(ProcessContext &, StyleObj *&style, FOTBuilder::CharacterNIC &nic) { style = style_; nic = *nic_; return 1; } bool isCharacter() { return 1; } private: Owner nic_; }; CharacterFlowObj::CharacterFlowObj() : nic_(new FOTBuilder::CharacterNIC) { } CharacterFlowObj::CharacterFlowObj(const CharacterFlowObj &fo) : FlowObj(fo), nic_(new FOTBuilder::CharacterNIC(*fo.nic_)) { } void CharacterFlowObj::processInner(ProcessContext &context) { context.currentFOTBuilder().character(*nic_); } bool FlowObj::setImplicitChar(ELObj *obj, const Location &loc, Interpreter &interp) { CANNOT_HAPPEN(); return false; } bool CharacterFlowObj::setImplicitChar(ELObj *obj, const Location &loc, Interpreter &interp) { Identifier *ident = interp.lookup(interp.makeStringC("char")); if (!(nic_->specifiedC & (1 << FOTBuilder::CharacterNIC::cChar)) && interp.convertCharC(obj, ident, loc, nic_->ch)) { nic_->valid = 1; if (!(nic_->specifiedC & (1 << FOTBuilder::CharacterNIC::cIsSpace))) interp.convertBooleanC( interp.charProperty(interp.makeStringC("space?"), nic_->ch, loc, 0), ident, loc, nic_->isSpace); if (!(nic_->specifiedC & (1 << FOTBuilder::CharacterNIC::cIsRecordEnd))) interp.convertBooleanC( interp.charProperty(interp.makeStringC("record-end?"), nic_->ch, loc, 0), ident, loc, nic_->isRecordEnd); if (!(nic_->specifiedC & (1 << FOTBuilder::CharacterNIC::cIsInputTab))) interp.convertBooleanC( interp.charProperty(interp.makeStringC("input-tab?"), nic_->ch, loc, 0), ident, loc, nic_->isInputTab); if (!(nic_->specifiedC & (1 << FOTBuilder::CharacterNIC::cIsInputWhitespace))) interp.convertBooleanC( interp.charProperty(interp.makeStringC("input-whitespace?"), nic_->ch, loc, 0), ident, loc, nic_->isInputWhitespace); if (!(nic_->specifiedC & (1 << FOTBuilder::CharacterNIC::cIsPunct))) interp.convertBooleanC( interp.charProperty(interp.makeStringC("punct?"), nic_->ch, loc, 0), ident, loc, nic_->isPunct); if (!(nic_->specifiedC & (1 << FOTBuilder::CharacterNIC::cIsDropAfterLineBreak))) interp.convertBooleanC( interp.charProperty(interp.makeStringC("drop-after-line-break?"), nic_->ch, loc, 0), ident, loc, nic_->isDropAfterLineBreak); if (!(nic_->specifiedC & (1 << FOTBuilder::CharacterNIC::cIsDropUnlessBeforeLineBreak))) interp.convertBooleanC( interp.charProperty(interp.makeStringC("drop-unless-before-line-break?"), nic_->ch, loc, 0), ident, loc, nic_->isDropUnlessBeforeLineBreak); if (!(nic_->specifiedC & (1 << FOTBuilder::CharacterNIC::cBreakBeforePriority))) interp.convertIntegerC( interp.charProperty(interp.makeStringC("break-before-priority"), nic_->ch, loc, 0), ident, loc, nic_->breakBeforePriority); if (!(nic_->specifiedC & (1 << FOTBuilder::CharacterNIC::cBreakAfterPriority))) interp.convertIntegerC( interp.charProperty(interp.makeStringC("break-after-priority"), nic_->ch, loc, 0), ident, loc, nic_->breakAfterPriority); if (!(nic_->specifiedC & (1 << FOTBuilder::CharacterNIC::cScript))) { ELObj *prop = interp.charProperty(interp.makeStringC("script"), nic_->ch, loc, 0); if (prop == interp.makeFalse()) nic_->script = 0; else { StringC tem; if (interp.convertStringC(prop, ident, loc, tem)) nic_->script = interp.storePublicId(tem.data(), tem.size(), loc); } } if (!(nic_->specifiedC & (1 << FOTBuilder::CharacterNIC::cGlyphId))) { ELObj *prop = interp.charProperty(interp.makeStringC("glyph-id"), nic_->ch, loc, 0); if (prop == interp.makeFalse()) nic_->glyphId = FOTBuilder::GlyphId(); else { const FOTBuilder::GlyphId *p = prop->glyphId(); if (p) nic_->glyphId = *p; } } if (!(nic_->specifiedC & (1 << FOTBuilder::CharacterNIC::cMathFontPosture))) { ELObj *prop = interp.charProperty(interp.makeStringC("math-font-posture"), nic_->ch, loc, 0); static FOTBuilder::Symbol vals[] = { FOTBuilder::symbolFalse, FOTBuilder::symbolNotApplicable, FOTBuilder::symbolUpright, FOTBuilder::symbolOblique, FOTBuilder::symbolBackSlantedOblique, FOTBuilder::symbolItalic, FOTBuilder::symbolBackSlantedItalic, }; interp.convertEnumC(vals, SIZEOF(vals), prop, ident, loc, nic_->mathFontPosture); } if (!(nic_->specifiedC & (1 << FOTBuilder::CharacterNIC::cMathClass))) { ELObj *prop = interp.charProperty(interp.makeStringC("math-class"), nic_->ch, loc, 0); static FOTBuilder::Symbol vals[] = { FOTBuilder::symbolOrdinary, FOTBuilder::symbolOperator, FOTBuilder::symbolBinary, FOTBuilder::symbolRelation, FOTBuilder::symbolOpening, FOTBuilder::symbolClosing, FOTBuilder::symbolPunctuation, FOTBuilder::symbolInner, FOTBuilder::symbolSpace, }; interp.convertEnumC(vals, SIZEOF(vals), prop, ident, loc, nic_->mathClass); } return 1; } else return 0; } void CharacterFlowObj::setNonInheritedC(const Identifier *ident, ELObj *obj, const Location &loc, Interpreter &interp) { Identifier::SyntacticKey key; if (ident->syntacticKey(key)) { switch (key) { case Identifier::keyIsSpace: if (interp.convertBooleanC(obj, ident, loc, nic_->isSpace)) nic_->specifiedC |= (1 << FOTBuilder::CharacterNIC::cIsSpace); return; case Identifier::keyIsRecordEnd: if (interp.convertBooleanC(obj, ident, loc, nic_->isRecordEnd)) nic_->specifiedC |= (1 << FOTBuilder::CharacterNIC::cIsRecordEnd); return; case Identifier::keyIsInputTab: if (interp.convertBooleanC(obj, ident, loc, nic_->isInputTab)) nic_->specifiedC |= (1 << FOTBuilder::CharacterNIC::cIsInputTab); return; case Identifier::keyIsInputWhitespace: if (interp.convertBooleanC(obj, ident, loc, nic_->isInputWhitespace)) nic_->specifiedC |= (1 << FOTBuilder::CharacterNIC::cIsInputWhitespace); return; case Identifier::keyIsPunct: if (interp.convertBooleanC(obj, ident, loc, nic_->isPunct)) nic_->specifiedC |= (1 << FOTBuilder::CharacterNIC::cIsPunct); return; case Identifier::keyIsDropAfterLineBreak: if (interp.convertBooleanC(obj, ident, loc, nic_->isDropAfterLineBreak)) nic_->specifiedC |= (1 << FOTBuilder::CharacterNIC::cIsDropAfterLineBreak); return; case Identifier::keyIsDropUnlessBeforeLineBreak: if (interp.convertBooleanC(obj, ident, loc, nic_->isDropUnlessBeforeLineBreak)) nic_->specifiedC |= (1 << FOTBuilder::CharacterNIC::cIsDropUnlessBeforeLineBreak); return; case Identifier::keyBreakBeforePriority: if (interp.convertIntegerC(obj, ident, loc, nic_->breakBeforePriority)) nic_->specifiedC |= (1 << FOTBuilder::CharacterNIC::cBreakBeforePriority); return; case Identifier::keyBreakAfterPriority: if (interp.convertIntegerC(obj, ident, loc, nic_->breakAfterPriority)) nic_->specifiedC |= (1 << FOTBuilder::CharacterNIC::cBreakAfterPriority); return; case Identifier::keyScript: { if (obj == interp.makeFalse()) nic_->script = 0; else { StringC tem; if (!interp.convertStringC(obj, ident, loc, tem)) return; nic_->script = interp.storePublicId(tem.data(), tem.size(), loc); } nic_->specifiedC |= (1 << FOTBuilder::CharacterNIC::cScript); } return; case Identifier::keyChar: if (setImplicitChar(obj, loc, interp)) { nic_->specifiedC |= (1 << FOTBuilder::CharacterNIC::cChar); if (!(nic_->specifiedC & (1 << FOTBuilder::CharacterNIC::cIsInputTab))) nic_->isInputTab = 0; if (!(nic_->specifiedC & (1 << FOTBuilder::CharacterNIC::cIsInputWhitespace))) nic_->isInputWhitespace = 0; } return; case Identifier::keyGlyphId: { if (obj == interp.makeFalse()) { nic_->glyphId = FOTBuilder::GlyphId(); nic_->specifiedC |= (1 << FOTBuilder::CharacterNIC::cGlyphId); return; } const FOTBuilder::GlyphId *p = obj->glyphId(); if (!p) { interp.setNextLocation(loc); interp.message(InterpreterMessages::invalidCharacteristicValue, StringMessageArg(ident->name())); return; } nic_->glyphId = *p; nic_->specifiedC |= (1 << FOTBuilder::CharacterNIC::cGlyphId); } return; case Identifier::keyMathFontPosture: { static FOTBuilder::Symbol vals[] = { FOTBuilder::symbolFalse, FOTBuilder::symbolNotApplicable, FOTBuilder::symbolUpright, FOTBuilder::symbolOblique, FOTBuilder::symbolBackSlantedOblique, FOTBuilder::symbolItalic, FOTBuilder::symbolBackSlantedItalic, }; if (interp.convertEnumC(vals, SIZEOF(vals), obj, ident, loc, nic_->mathFontPosture)) nic_->specifiedC |= (1 << FOTBuilder::CharacterNIC::cMathFontPosture); } return; case Identifier::keyMathClass: { static FOTBuilder::Symbol vals[] = { FOTBuilder::symbolOrdinary, FOTBuilder::symbolOperator, FOTBuilder::symbolBinary, FOTBuilder::symbolRelation, FOTBuilder::symbolOpening, FOTBuilder::symbolClosing, FOTBuilder::symbolPunctuation, FOTBuilder::symbolInner, FOTBuilder::symbolSpace, }; if (interp.convertEnumC(vals, SIZEOF(vals), obj, ident, loc, nic_->mathClass)) nic_->specifiedC |= (1 << FOTBuilder::CharacterNIC::cMathClass); } return; case Identifier::keyStretchFactor: interp.convertRealC(obj, ident, loc, nic_->stretchFactor); return; default: break; } } else { unsigned part; Location loc; if (ident->charNICDefined(part, loc)) return; } CANNOT_HAPPEN(); } bool CharacterFlowObj::hasNonInheritedC(const Identifier *ident) const { Identifier::SyntacticKey key; if (ident->syntacticKey(key)) { switch (key) { case Identifier::keyChar: case Identifier::keyGlyphId: case Identifier::keyIsSpace: case Identifier::keyIsRecordEnd: case Identifier::keyIsInputTab: case Identifier::keyIsInputWhitespace: case Identifier::keyIsPunct: case Identifier::keyIsDropAfterLineBreak: case Identifier::keyIsDropUnlessBeforeLineBreak: case Identifier::keyScript: case Identifier::keyMathClass: case Identifier::keyMathFontPosture: case Identifier::keyStretchFactor: case Identifier::keyBreakBeforePriority: case Identifier::keyBreakAfterPriority: return 1; default: break; } } unsigned part; Location loc; if (ident->charNICDefined(part, loc)) return 1; return 0; } FlowObj *CharacterFlowObj::copy(Collector &c) const { return new (c) CharacterFlowObj(*this); } class MathSequenceFlowObj : public CompoundFlowObj { public: MathSequenceFlowObj() { } void processInner(ProcessContext &context) { FOTBuilder &fotb = context.currentFOTBuilder(); fotb.startMathSequence(); CompoundFlowObj::processInner(context); fotb.endMathSequence(); } FlowObj *copy(Collector &c) const { return new (c) MathSequenceFlowObj(*this); } }; class FractionFlowObj : public CompoundFlowObj { public: FractionFlowObj() { } void processInner(ProcessContext &); FlowObj *copy(Collector &) const; }; void FractionFlowObj::processInner(ProcessContext &context) { FOTBuilder &fotb = context.currentFOTBuilder(); Vector fotbs(2); fotb.startFraction(fotbs[0], fotbs[1]); Vector dep; StyleObj *fractionBarStyle = 0; SosofoObj *sosofo = context.currentStyleStack().actual(context.vm().interp->fractionBarC(), *context.vm().interp, dep)->asSosofo(); if (sosofo) sosofo->ruleStyle(context, fractionBarStyle); if (fractionBarStyle) context.currentStyleStack().push(fractionBarStyle, context.vm(), fotb); fotb.fractionBar(); if (fractionBarStyle) context.currentStyleStack().pop(); Vector labels(2); labels[0] = context.vm().interp->portName(Interpreter::portNumerator); labels[1] = context.vm().interp->portName(Interpreter::portDenominator); context.pushPorts(0, labels, fotbs); // Fraction flow object doesn't have principal port, // so clear the current connection. CompoundFlowObj::processInner(context); context.popPorts(); fotb.endFraction(); } FlowObj *FractionFlowObj::copy(Collector &c) const { return new (c) FractionFlowObj(*this); } class UnmathFlowObj : public CompoundFlowObj { public: UnmathFlowObj() { } void processInner(ProcessContext &context) { FOTBuilder &fotb = context.currentFOTBuilder(); fotb.startUnmath(); CompoundFlowObj::processInner(context); fotb.endUnmath(); } FlowObj *copy(Collector &c) const { return new (c) UnmathFlowObj(*this); } }; class SuperscriptFlowObj : public CompoundFlowObj { public: SuperscriptFlowObj() { } void processInner(ProcessContext &context) { FOTBuilder &fotb = context.currentFOTBuilder(); fotb.startSuperscript(); CompoundFlowObj::processInner(context); fotb.endSuperscript(); } FlowObj *copy(Collector &c) const { return new (c) SuperscriptFlowObj(*this); } }; class SubscriptFlowObj : public CompoundFlowObj { public: SubscriptFlowObj() { } void processInner(ProcessContext &context) { FOTBuilder &fotb = context.currentFOTBuilder(); fotb.startSubscript(); CompoundFlowObj::processInner(context); fotb.endSubscript(); } FlowObj *copy(Collector &c) const { return new (c) SubscriptFlowObj(*this); } }; class ScriptFlowObj : public CompoundFlowObj { public: ScriptFlowObj() { } void processInner(ProcessContext &); FlowObj *copy(Collector &c) const { return new (c) ScriptFlowObj(*this); } }; void ScriptFlowObj::processInner(ProcessContext &context) { FOTBuilder &fotb = context.currentFOTBuilder(); Vector fotbs(6); fotb.startScript(fotbs[0], fotbs[1], fotbs[2], fotbs[3], fotbs[4], fotbs[5]); Vector labels(6); labels[0] = context.vm().interp->portName(Interpreter::portPreSup); labels[1] = context.vm().interp->portName(Interpreter::portPreSub); labels[2] = context.vm().interp->portName(Interpreter::portPostSup); labels[3] = context.vm().interp->portName(Interpreter::portPostSub); labels[4] = context.vm().interp->portName(Interpreter::portMidSup); labels[5] = context.vm().interp->portName(Interpreter::portMidSub); context.pushPorts(1, labels, fotbs); CompoundFlowObj::processInner(context); context.popPorts(); fotb.endScript(); } class MarkFlowObj : public CompoundFlowObj { public: MarkFlowObj() { } void processInner(ProcessContext &); FlowObj *copy(Collector &c) const { return new (c) MarkFlowObj(*this); } }; void MarkFlowObj::processInner(ProcessContext &context) { FOTBuilder &fotb = context.currentFOTBuilder(); Vector fotbs(2); fotb.startMark(fotbs[0], fotbs[1]); Vector labels(2); labels[0] = context.vm().interp->portName(Interpreter::portOverMark); labels[1] = context.vm().interp->portName(Interpreter::portUnderMark); context.pushPorts(1, labels, fotbs); CompoundFlowObj::processInner(context); context.popPorts(); fotb.endMark(); } class FenceFlowObj : public CompoundFlowObj { public: FenceFlowObj() { } void processInner(ProcessContext &); FlowObj *copy(Collector &c) const { return new (c) FenceFlowObj(*this); } }; void FenceFlowObj::processInner(ProcessContext &context) { FOTBuilder &fotb = context.currentFOTBuilder(); Vector fotbs(2); fotb.startFence(fotbs[0], fotbs[1]); Vector labels(2); labels[0] = context.vm().interp->portName(Interpreter::portOpen); labels[1] = context.vm().interp->portName(Interpreter::portClose); context.pushPorts(1, labels, fotbs); CompoundFlowObj::processInner(context); context.popPorts(); fotb.endFence(); } class RadicalFlowObj : public CompoundFlowObj { public: RadicalFlowObj() : radical_(0) { } void processInner(ProcessContext &); FlowObj *copy(Collector &c) const { return new (c) RadicalFlowObj(*this); } void setNonInheritedC(const Identifier *, ELObj *, const Location &, Interpreter &); bool hasNonInheritedC(const Identifier *) const; void traceSubObjects(Collector &c) const { c.trace(radical_); CompoundFlowObj::traceSubObjects(c); } private: SosofoObj *radical_; }; void RadicalFlowObj::processInner(ProcessContext &context) { FOTBuilder &fotb = context.currentFOTBuilder(); Vector fotbs(1); fotb.startRadical(fotbs[0]); StyleObj *style; FOTBuilder::CharacterNIC nic; if (radical_ && radical_->characterStyle(context, style, nic)) { if (style) context.currentStyleStack().push(style, context.vm(), fotb); fotb.radicalRadical(nic); if (style) context.currentStyleStack().pop(); } else fotb.radicalRadicalDefaulted(); Vector labels(1); labels[0] = context.vm().interp->portName(Interpreter::portDegree); context.pushPorts(1, labels, fotbs); CompoundFlowObj::processInner(context); context.popPorts(); fotb.endRadical(); } bool RadicalFlowObj::hasNonInheritedC(const Identifier *ident) const { Identifier::SyntacticKey key; return ident->syntacticKey(key) && key == Identifier::keyRadical; } void RadicalFlowObj::setNonInheritedC(const Identifier *ident, ELObj *obj, const Location &loc, Interpreter &interp) { radical_ = obj->asSosofo(); if (!radical_ || !radical_->isCharacter()) { interp.setNextLocation(loc); interp.message(InterpreterMessages::invalidCharacteristicValue, StringMessageArg(ident->name())); } } class MathOperatorFlowObj : public CompoundFlowObj { public: MathOperatorFlowObj() { } void processInner(ProcessContext &); FlowObj *copy(Collector &c) const { return new (c) MathOperatorFlowObj(*this); } }; void MathOperatorFlowObj::processInner(ProcessContext &context) { FOTBuilder &fotb = context.currentFOTBuilder(); Vector fotbs(3); fotb.startMathOperator(fotbs[0], fotbs[1], fotbs[2]); Vector labels(3); labels[0] = context.vm().interp->portName(Interpreter::portOperator); labels[1] = context.vm().interp->portName(Interpreter::portLowerLimit); labels[2] = context.vm().interp->portName(Interpreter::portUpperLimit); context.pushPorts(1, labels, fotbs); CompoundFlowObj::processInner(context); context.popPorts(); fotb.endMathOperator(); } class GridFlowObj : public CompoundFlowObj { public: void *operator new(size_t, Collector &c) { return c.allocateObject(1); } GridFlowObj(); GridFlowObj(const GridFlowObj &); void processInner(ProcessContext &); FlowObj *copy(Collector &c) const { return new (c) GridFlowObj(*this); } void setNonInheritedC(const Identifier *, ELObj *, const Location &, Interpreter &); bool hasNonInheritedC(const Identifier *) const; private: Owner nic_; }; GridFlowObj::GridFlowObj() : nic_(new FOTBuilder::GridNIC) { } GridFlowObj::GridFlowObj(const GridFlowObj &fo) : CompoundFlowObj(fo), nic_(new FOTBuilder::GridNIC(*fo.nic_)) { } void GridFlowObj::processInner(ProcessContext &context) { FOTBuilder &fotb = context.currentFOTBuilder(); fotb.startGrid(*nic_); CompoundFlowObj::processInner(context); fotb.endGrid(); } void GridFlowObj::setNonInheritedC(const Identifier *ident, ELObj *obj, const Location &loc, Interpreter &interp) { long tem; if (!interp.convertIntegerC(obj, ident, loc, tem)) return; if (tem <= 0) { interp.setNextLocation(loc); interp.message(InterpreterMessages::invalidCharacteristicValue, StringMessageArg(ident->name())); return; } Identifier::SyntacticKey key; if (ident->syntacticKey(key)) { switch (key) { case Identifier::keyGridNColumns: nic_->nColumns = tem; return; case Identifier::keyGridNRows: nic_->nRows = tem; return; default: break; } } CANNOT_HAPPEN(); } bool GridFlowObj::hasNonInheritedC(const Identifier *ident) const { Identifier::SyntacticKey key; if (ident->syntacticKey(key)) { switch (key) { case Identifier::keyGridNColumns: case Identifier::keyGridNRows: return 1; default: break; } } return 0; } class GridCellFlowObj : public CompoundFlowObj { public: void *operator new(size_t, Collector &c) { return c.allocateObject(1); } GridCellFlowObj(); GridCellFlowObj(const GridCellFlowObj &); void processInner(ProcessContext &); FlowObj *copy(Collector &c) const { return new (c) GridCellFlowObj(*this); } void setNonInheritedC(const Identifier *, ELObj *, const Location &, Interpreter &); bool hasNonInheritedC(const Identifier *) const; private: Owner nic_; }; GridCellFlowObj::GridCellFlowObj() : nic_(new FOTBuilder::GridCellNIC) { } GridCellFlowObj::GridCellFlowObj(const GridCellFlowObj &fo) : CompoundFlowObj(fo), nic_(new FOTBuilder::GridCellNIC(*fo.nic_)) { } void GridCellFlowObj::processInner(ProcessContext &context) { FOTBuilder &fotb = context.currentFOTBuilder(); fotb.startGridCell(*nic_); CompoundFlowObj::processInner(context); fotb.endGridCell(); } void GridCellFlowObj::setNonInheritedC(const Identifier *ident, ELObj *obj, const Location &loc, Interpreter &interp) { long tem; if (!interp.convertIntegerC(obj, ident, loc, tem)) return; if (tem <= 0) { interp.setNextLocation(loc); interp.message(InterpreterMessages::invalidCharacteristicValue, StringMessageArg(ident->name())); return; } Identifier::SyntacticKey key; if (ident->syntacticKey(key)) { switch (key) { case Identifier::keyColumnNumber: nic_->columnNumber = tem; return; case Identifier::keyRowNumber: nic_->rowNumber = tem; return; default: break; } } CANNOT_HAPPEN(); } bool GridCellFlowObj::hasNonInheritedC(const Identifier *ident) const { Identifier::SyntacticKey key; if (ident->syntacticKey(key)) { switch (key) { case Identifier::keyColumnNumber: case Identifier::keyRowNumber: return 1; default: break; } } return 0; } class TableFlowObj : public CompoundFlowObj { public: void *operator new(size_t, Collector &c) { return c.allocateObject(1); } struct NIC : public FOTBuilder::TableNIC { NIC() : beforeRowBorder(0), afterRowBorder(0), beforeColumnBorder(0), afterColumnBorder(0) { } StyleObj *beforeRowBorder; StyleObj *afterRowBorder; StyleObj *beforeColumnBorder; StyleObj *afterColumnBorder; }; TableFlowObj() : nic_(new NIC) { } TableFlowObj(const TableFlowObj &fo) : CompoundFlowObj(fo), nic_(new NIC(*fo.nic_)) { } void processInner(ProcessContext &context) { context.startTable(); FOTBuilder &fotb = context.currentFOTBuilder(); fotb.startTable(*nic_); Interpreter &interp = *context.vm().interp; Vector dep; ELObj *obj = context.currentStyleStack().actual(interp.tableBorderC(), interp, dep); StyleObj *borderStyle; if (obj == interp.makeFalse()) borderStyle = interp.borderFalseStyle(); else if (obj == interp.makeTrue()) borderStyle = interp.borderTrueStyle(); else { SosofoObj *sosofo = obj->asSosofo(); if (!sosofo || !sosofo->tableBorderStyle(borderStyle)) borderStyle = 0; } border(nic_->beforeRowBorder, borderStyle, &FOTBuilder::tableBeforeRowBorder, context); border(nic_->afterRowBorder, borderStyle, &FOTBuilder::tableAfterRowBorder, context); border(nic_->beforeColumnBorder, borderStyle, &FOTBuilder::tableBeforeColumnBorder, context); border(nic_->afterColumnBorder, borderStyle, &FOTBuilder::tableAfterColumnBorder, context); CompoundFlowObj::processInner(context); if (context.inTableRow()) context.endTableRow(); context.endTable(); fotb.endTable(); } FlowObj *copy(Collector &c) const { return new (c) TableFlowObj(*this); } bool hasNonInheritedC(const Identifier *ident) const { Identifier::SyntacticKey key; if (ident->syntacticKey(key)) { switch (key) { case Identifier::keyBeforeRowBorder: case Identifier::keyAfterRowBorder: case Identifier::keyBeforeColumnBorder: case Identifier::keyAfterColumnBorder: case Identifier::keyTableWidth: return 1; default: break; } } return isDisplayNIC(ident); } void setNonInheritedC(const Identifier *ident, ELObj *obj, const Location &loc, Interpreter &interp) { if (setDisplayNIC(*nic_, ident, obj, loc, interp)) return; Identifier::SyntacticKey key; if (!ident->syntacticKey(key)) CANNOT_HAPPEN(); if (key == Identifier::keyTableWidth) { if (obj == interp.makeFalse()) nic_->widthType = FOTBuilder::TableNIC::widthMinimum; else if (interp.convertLengthSpecC(obj, ident, loc, nic_->width)) nic_->widthType = FOTBuilder::TableNIC::widthExplicit; return; } StyleObj *style; SosofoObj *sosofo = obj->asSosofo(); if (!sosofo || !sosofo->tableBorderStyle(style)) { Boolean b; if (!interp.convertBooleanC(obj, ident, loc, b)) return; style = b ? interp.borderTrueStyle() : interp.borderFalseStyle(); } switch (key) { case Identifier::keyBeforeRowBorder: nic_->beforeRowBorder = style; break; case Identifier::keyAfterRowBorder: nic_->afterRowBorder = style; break; case Identifier::keyBeforeColumnBorder: nic_->beforeColumnBorder = style; break; case Identifier::keyAfterColumnBorder: nic_->afterColumnBorder = style; break; default: CANNOT_HAPPEN(); } } private: void border(StyleObj *style, StyleObj *style2, void (FOTBuilder::*setter)(), ProcessContext &context) { FOTBuilder &fotb = context.currentFOTBuilder(); if (!style) style = style2; if (style) context.currentStyleStack().push(style, context.vm(), fotb); (fotb.*setter)(); if (style) context.currentStyleStack().pop(); } Owner nic_; }; class TablePartFlowObj : public CompoundFlowObj { public: void *operator new(size_t, Collector &c) { return c.allocateObject(1); } TablePartFlowObj() : nic_(new FOTBuilder::TablePartNIC) { } TablePartFlowObj(const TablePartFlowObj &fo) : CompoundFlowObj(fo), nic_(new FOTBuilder::TablePartNIC(*fo.nic_)) { } void processInner(ProcessContext &context) { context.startTablePart(); FOTBuilder &fotb = context.currentFOTBuilder(); Vector fotbs(2); fotb.startTablePart(*nic_, fotbs[0], fotbs[1]); Vector labels(2); labels[0] = context.vm().interp->portName(Interpreter::portHeader); labels[1] = context.vm().interp->portName(Interpreter::portFooter); context.pushPorts(1, labels, fotbs); CompoundFlowObj::processInner(context); context.popPorts(); if (context.inTableRow()) context.endTableRow(); context.endTablePart(); fotb.endTablePart(); } FlowObj *copy(Collector &c) const { return new (c) TablePartFlowObj(*this); } void setNonInheritedC(const Identifier *ident, ELObj *obj, const Location &loc, Interpreter &interp) { setDisplayNIC(*nic_, ident, obj, loc, interp); } bool hasNonInheritedC(const Identifier *ident) const { if (!isDisplayNIC(ident)) return 0; Identifier::SyntacticKey key; ident->syntacticKey(key); if (key == Identifier::keyPositionPreference) return 0; return 1; } private: Owner nic_; }; class TableColumnFlowObj : public FlowObj { public: void *operator new(size_t, Collector &c) { return c.allocateObject(1); } struct NIC : public FOTBuilder::TableColumnNIC { NIC() : hasColumnNumber(0) { } bool hasColumnNumber; }; TableColumnFlowObj() : nic_(new NIC) { } TableColumnFlowObj(const TableColumnFlowObj &fo) : FlowObj(fo), nic_(new NIC(*fo.nic_)) { } void processInner(ProcessContext &context) { if (nic_->hasColumnNumber) { context.currentFOTBuilder().tableColumn(*nic_); context.addTableColumn(nic_->columnIndex, nic_->nColumnsSpanned, style_); } else { FOTBuilder::TableColumnNIC nic(*nic_); nic.columnIndex = context.currentTableColumn(); context.currentFOTBuilder().tableColumn(nic); context.addTableColumn(nic.columnIndex, nic_->nColumnsSpanned, style_); } } FlowObj *copy(Collector &c) const { return new (c) TableColumnFlowObj(*this); } bool hasNonInheritedC(const Identifier *ident) const { Identifier::SyntacticKey key; if (ident->syntacticKey(key)) { switch (key) { case Identifier::keyColumnNumber: case Identifier::keyNColumnsSpanned: case Identifier::keyWidth: return 1; default: break; } } return 0; } void setNonInheritedC(const Identifier *ident, ELObj *obj, const Location &loc, Interpreter &interp) { Identifier::SyntacticKey key; if (ident->syntacticKey(key)) { switch (key) { case Identifier::keyColumnNumber: case Identifier::keyNColumnsSpanned: { long n; if (!interp.convertIntegerC(obj, ident, loc, n)) return; if (n <= 0) { interp.setNextLocation(loc); interp.message(InterpreterMessages::invalidCharacteristicValue, StringMessageArg(ident->name())); return; } if (key == Identifier::keyColumnNumber) { nic_->columnIndex = n - 1; nic_->hasColumnNumber = 1; } else nic_->nColumnsSpanned = n; } return; case Identifier::keyWidth: { const LengthSpec *ls = obj->lengthSpec(); if (ls) { // width is a TableLengthSpec not just a LengthSpec if (ls->convert(nic_->width)) nic_->hasWidth = 1; else interp.invalidCharacteristicValue(ident, loc); } else if (interp.convertLengthSpecC(obj, ident, loc, nic_->width)) nic_->hasWidth = 1; } return; default: break; } } CANNOT_HAPPEN(); } private: Owner nic_; }; class TableRowFlowObj : public CompoundFlowObj { public: TableRowFlowObj() { } void pushStyle(ProcessContext &, unsigned &) { } void popStyle(ProcessContext &, unsigned) { } void processInner(ProcessContext &context) { if (!context.inTable()) { // FIXME location context.vm().interp->message(InterpreterMessages::tableRowOutsideTable); CompoundFlowObj::processInner(context); return; } if (context.inTableRow()) context.endTableRow(); context.startTableRow(style_); CompoundFlowObj::processInner(context); if (context.inTableRow()) context.endTableRow(); // else FIXME give an error // must have used ends-row? in a table-row } FlowObj *copy(Collector &c) const { return new (c) TableRowFlowObj(*this); } }; class TableCellFlowObj : public CompoundFlowObj { public: void *operator new(size_t, Collector &c) { return c.allocateObject(1); } struct NIC : FOTBuilder::TableCellNIC { NIC() : startsRow(0), endsRow(0), hasColumnNumber(0) { } bool hasColumnNumber; bool startsRow; bool endsRow; }; TableCellFlowObj(bool missing = 0) : nic_(new NIC) { if (missing) nic_->missing = 1; } TableCellFlowObj(const TableCellFlowObj &fo) : CompoundFlowObj(fo), nic_(new NIC(*fo.nic_)) { } void pushStyle(ProcessContext &context, unsigned &nPush) { if (context.inTableRow()) { if (nic_->startsRow) { context.endTableRow(); context.startTableRow(0); } } else context.startTableRow(0); unsigned columnNumber = nic_->hasColumnNumber ? nic_->columnIndex : context.currentTableColumn(); StyleObj *columnStyle = context.tableColumnStyle(columnNumber, nic_->nColumnsSpanned); if (columnStyle) { context.currentStyleStack().push(columnStyle, context.vm(), context.currentFOTBuilder()); context.currentFOTBuilder().startSequence(); nPush++; } StyleObj *rowStyle = context.tableRowStyle(); if (rowStyle) { context.currentStyleStack().push(rowStyle, context.vm(), context.currentFOTBuilder()); context.currentFOTBuilder().startSequence(); nPush++; } CompoundFlowObj::pushStyle(context, nPush); } void popStyle(ProcessContext &context, unsigned nPush) { CompoundFlowObj::popStyle(context, nPush); for (unsigned i = 0; i < nPush; i++) { context.currentFOTBuilder().endSequence(); context.currentStyleStack().pop(); } if (nic_->endsRow) context.endTableRow(); } void processInner(ProcessContext &context) { if (!context.inTable()) { // FIXME location context.vm().interp->message(InterpreterMessages::tableCellOutsideTable); CompoundFlowObj::processInner(context); return; } FOTBuilder &fotb = context.currentFOTBuilder(); if (!nic_->hasColumnNumber) { FOTBuilder::TableCellNIC nic(*nic_); nic.columnIndex = context.currentTableColumn(); fotb.startTableCell(nic); if (!nic_->missing) context.noteTableCell(nic.columnIndex, nic.nColumnsSpanned, nic.nRowsSpanned); } else { fotb.startTableCell(*nic_); if (!nic_->missing) context.noteTableCell(nic_->columnIndex, nic_->nColumnsSpanned, nic_->nRowsSpanned); } Interpreter &interp = *context.vm().interp; border(interp.cellBeforeRowBorderC(), &FOTBuilder::tableCellBeforeRowBorder, context); border(interp.cellAfterRowBorderC(), &FOTBuilder::tableCellAfterRowBorder, context); border(interp.cellBeforeColumnBorderC(), &FOTBuilder::tableCellBeforeColumnBorder, context); border(interp.cellAfterColumnBorderC(), &FOTBuilder::tableCellAfterColumnBorder, context); CompoundFlowObj::processInner(context); fotb.endTableCell(); } FlowObj *copy(Collector &c) const { return new (c) TableCellFlowObj(*this); } bool hasNonInheritedC(const Identifier *ident) const { Identifier::SyntacticKey key; if (ident->syntacticKey(key)) { switch (key) { case Identifier::keyNRowsSpanned: return 1; default: break; } } return 0; } bool hasPseudoNonInheritedC(const Identifier *ident) const { Identifier::SyntacticKey key; if (ident->syntacticKey(key)) { switch (key) { case Identifier::keyColumnNumber: case Identifier::keyNColumnsSpanned: case Identifier::keyIsStartsRow: case Identifier::keyIsEndsRow: return 1; default: break; } } return 0; } void setNonInheritedC(const Identifier *ident, ELObj *obj, const Location &loc, Interpreter &interp) { Identifier::SyntacticKey key; if (ident->syntacticKey(key)) { switch (key) { case Identifier::keyIsStartsRow: interp.convertBooleanC(obj, ident, loc, nic_->startsRow); return; case Identifier::keyIsEndsRow: interp.convertBooleanC(obj, ident, loc, nic_->endsRow); return; case Identifier::keyColumnNumber: case Identifier::keyNColumnsSpanned: case Identifier::keyNRowsSpanned: { long n; if (!interp.convertIntegerC(obj, ident, loc, n)) return; if (n <= 0) { interp.setNextLocation(loc); interp.message(InterpreterMessages::invalidCharacteristicValue, StringMessageArg(ident->name())); return; } if (key == Identifier::keyColumnNumber) { nic_->columnIndex = n - 1; nic_->hasColumnNumber = 1; } else if (key == Identifier::keyNColumnsSpanned) nic_->nColumnsSpanned = n; else nic_->nRowsSpanned = n; } return; default: break; } } CANNOT_HAPPEN(); } private: void border(const ConstPtr &ic, void (FOTBuilder::*setter)(), ProcessContext &context) { Interpreter &interp = *context.vm().interp; Vector dep; ELObj *obj = context.currentStyleStack().actual(ic, interp, dep); StyleObj *style; if (obj == interp.makeFalse()) style = interp.borderFalseStyle(); else if (obj == interp.makeTrue()) style = interp.borderTrueStyle(); else { SosofoObj *sosofo = obj->asSosofo(); if (!sosofo || !sosofo->tableBorderStyle(style)) style = 0; } FOTBuilder &fotb = context.currentFOTBuilder(); if (style) context.currentStyleStack().push(style, context.vm(), fotb); (fotb.*setter)(); if (style) context.currentStyleStack().pop(); } Owner nic_; }; class TableBorderFlowObj : public FlowObj { public: TableBorderFlowObj() { } void process(ProcessContext &) { } void processInner(ProcessContext &) { } bool tableBorderStyle(StyleObj *&style) { style = style_; return 1; } FlowObj *copy(Collector &c) const { return new (c) TableBorderFlowObj(*this); } }; void ProcessContext::startTable() { tableStack_.insert(new Table); } void ProcessContext::endTable() { coverSpannedRows(); delete tableStack_.get(); } void ProcessContext::coverSpannedRows() { // Generate empty cells to cover any remaining vertical spans Table *table = tableStack_.head(); if (!table) return; unsigned n = 0; for (size_t i = 0; i < table->covered.size(); i++) if (table->covered[i] > n) n = table->covered[i]; for (; n > 0; n--) { SosofoObj *content = new (*vm().interp) EmptySosofoObj; ELObjDynamicRoot protect(*vm().interp, content); TableRowFlowObj *row = new (*vm().interp) TableRowFlowObj; row->setContent(content); protect = row; row->process(*this); } } void ProcessContext::startTablePart() { Table *table = tableStack_.head(); if (table) { table->currentColumn = 0; table->rowStyle = 0; table->columnStyles.clear(); table->covered.clear(); table->nColumns = 0; } } void ProcessContext::endTablePart() { coverSpannedRows(); } void ProcessContext::addTableColumn(unsigned columnIndex, unsigned span, StyleObj *style) { Table *table = tableStack_.head(); if (table) { table->currentColumn = columnIndex + span; if (columnIndex >= table->columnStyles.size()) table->columnStyles.resize(columnIndex + 1); Vector &tem = table->columnStyles[columnIndex]; if (span > 0) { while (tem.size() < span) tem.push_back((StyleObj *)0); tem[span - 1] = style; } } } unsigned ProcessContext::currentTableColumn() { Table *table = tableStack_.head(); if (table) return table->currentColumn; return 0; } void ProcessContext::noteTableCell(unsigned colIndex, unsigned colSpan, unsigned rowSpan) { Table *table = tableStack_.head(); if (!table) return; table->currentColumn = colIndex + colSpan; Vector &covered = table->covered; for (size_t i = covered.size(); i < colIndex + colSpan; i++) covered.push_back(0); for (size_t i = 0; i < colSpan; i++) covered[colIndex + i] = rowSpan; if (colIndex + colSpan > table->nColumns) table->nColumns = colIndex + colSpan; } StyleObj *ProcessContext::tableColumnStyle(unsigned columnIndex, unsigned span) { Table *table = tableStack_.head(); if (table) { if (columnIndex < table->columnStyles.size()) { Vector &tem = table->columnStyles[columnIndex]; if (span > 0 && span <= tem.size()) return tem[span - 1]; } } return 0; } StyleObj *ProcessContext::tableRowStyle() { Table *table = tableStack_.head(); if (table) return table->rowStyle; return 0; } void ProcessContext::startTableRow(StyleObj *style) { Table *table = tableStack_.head(); if (table) { table->rowStyle = style; table->currentColumn = 0; table->inTableRow = 1; table->rowConnectableLevel = connectionStack_.head()->connectableLevel; } currentFOTBuilder().startTableRow(); } void ProcessContext::endTableRow() { Table *table = tableStack_.head(); if (table) { // Fill in blank cells Vector &covered = table->covered; for (size_t i = 0; i < table->nColumns + 1; i++) { if (i >= covered.size() || !covered[i]) { table->currentColumn = i; SosofoObj *content = new (*vm().interp) EmptySosofoObj; ELObjDynamicRoot protect(*vm().interp, content); // The last cell is a dummy one TableCellFlowObj *cell = new (*vm().interp) TableCellFlowObj(i >= table->nColumns); cell->setContent(content); protect = cell; cell->process(*this); } // cell->process() will cover it if (i < table->nColumns) covered[i] -= 1; } table->inTableRow = 0; } currentFOTBuilder().endTableRow(); } bool ProcessContext::inTableRow() { Table *table = tableStack_.head(); if (table) return table->inTableRow; return 0; } ProcessContext::Table::Table() : rowStyle(0), currentColumn(0), inTableRow(0), nColumns(0) { } // Flow object classes declared with declare-flow-object-class // that we don't know about are assumed to have one principal port // and accept any non-inherited characteristic. class UnknownFlowObj : public CompoundFlowObj { public: UnknownFlowObj() { } FlowObj *copy(Collector &c) const { return new (c) UnknownFlowObj(*this); } void setNonInheritedC(const Identifier *, ELObj *, const Location &, Interpreter &) { } bool hasNonInheritedC(const Identifier *ident) const { Identifier::SyntacticKey syn; if (ident->syntacticKey(syn) && (syn == Identifier::keyLabel || syn == Identifier::keyContentMap)) return 0; if (!ident->inheritedC().isNull()) return 0; return 1; } }; class FormattingInstructionFlowObj : public FlowObj { public: void *operator new(size_t, Collector &c) { return c.allocateObject(1); } FormattingInstructionFlowObj() { } void processInner(ProcessContext &context) { context.currentFOTBuilder().formattingInstruction(data_); } FlowObj *copy(Collector &c) const { return new (c) FormattingInstructionFlowObj(*this); } void setNonInheritedC(const Identifier *ident, ELObj *obj, const Location &loc, Interpreter &interp) { interp.convertStringC(obj, ident, loc, data_); } bool hasNonInheritedC(const Identifier *ident) const { Identifier::SyntacticKey key; return ident->syntacticKey(key) && key == Identifier::keyData; } private: StringC data_; }; class ELObjExtensionFlowObjValue : public FOTBuilder::ExtensionFlowObj::Value { public: ELObjExtensionFlowObjValue(const Identifier *ident, ELObj *obj, const Location &loc, Interpreter &interp) : ident_(ident), obj_(obj), loc_(&loc), interp_(&interp) { } bool convertString(StringC &result) const { return interp_->convertStringC(obj_, ident_, *loc_, result); } bool convertStringPairList(Vector &v) const { ELObj *obj = obj_; for (;;) { if (obj->isNil()) return 1; PairObj *pair = obj->asPair(); if (!pair) break; obj = pair->cdr(); PairObj *att = pair->car()->asPair(); if (!att) break; const Char *s; size_t n; if (!att->car()->stringData(s, n)) break; v.resize(v.size() + 1); v.back().assign(s, n); att = att->cdr()->asPair(); if (!att || !att->car()->stringData(s, n) || !att->cdr()->isNil()) { v.resize(v.size() - 1); break; } v.resize(v.size() + 1); v.back().assign(s, n); } interp_->setNextLocation(*loc_); interp_->message(InterpreterMessages::invalidCharacteristicValue, StringMessageArg(ident_->name())); return 0; } bool convertStringList(Vector &v) const { ELObj *obj = obj_; for (;;) { if (obj->isNil()) return 1; PairObj *pair = obj->asPair(); if (!pair) break; const Char *s; size_t n; if (!pair->car()->stringData(s, n)) break; v.resize(v.size() + 1); v.back().assign(s, n); obj = pair->cdr(); } interp_->setNextLocation(*loc_); interp_->message(InterpreterMessages::invalidCharacteristicValue, StringMessageArg(ident_->name())); return 0; } bool convertBoolean(bool &result) const { return interp_->convertBooleanC(obj_, ident_, *loc_, result); } private: ELObj *obj_; const Identifier *ident_; const Location *loc_; Interpreter *interp_; }; class ExtensionFlowObj : public FlowObj { public: void *operator new(size_t, Collector &c) { return c.allocateObject(1); } ExtensionFlowObj(const FOTBuilder::ExtensionFlowObj &); ExtensionFlowObj(const ExtensionFlowObj &); void processInner(ProcessContext &); FlowObj *copy(Collector &) const; bool hasNonInheritedC(const Identifier *) const; void setNonInheritedC(const Identifier *, ELObj *, const Location &, Interpreter &); private: Owner fo_; }; ExtensionFlowObj::ExtensionFlowObj(const FOTBuilder::ExtensionFlowObj &fo) : fo_(fo.copy()) { } ExtensionFlowObj::ExtensionFlowObj(const ExtensionFlowObj &fo) : FlowObj(fo), fo_(fo.fo_->copy()) { } void ExtensionFlowObj::processInner(ProcessContext &context) { context.currentFOTBuilder().extension(*fo_, context.vm().currentNode); } void ExtensionFlowObj::setNonInheritedC(const Identifier *ident, ELObj *obj, const Location &loc, Interpreter &interp) { fo_->setNIC(ident->name(), ELObjExtensionFlowObjValue(ident, obj, loc, interp)); } bool ExtensionFlowObj::hasNonInheritedC(const Identifier *ident) const { return fo_->hasNIC(ident->name()); } FlowObj *ExtensionFlowObj::copy(Collector &c) const { return new (c) ExtensionFlowObj(*this); } class CompoundExtensionFlowObj : public CompoundFlowObj { public: void *operator new(size_t, Collector &c) { return c.allocateObject(1); } CompoundExtensionFlowObj(const FOTBuilder::CompoundExtensionFlowObj &); CompoundExtensionFlowObj(const CompoundExtensionFlowObj &); void processInner(ProcessContext &); FlowObj *copy(Collector &) const; bool hasNonInheritedC(const Identifier *) const; void setNonInheritedC(const Identifier *, ELObj *, const Location &, Interpreter &); private: Owner fo_; }; CompoundExtensionFlowObj::CompoundExtensionFlowObj(const FOTBuilder::CompoundExtensionFlowObj &fo) : fo_(fo.copy()->asCompoundExtensionFlowObj()) { } CompoundExtensionFlowObj::CompoundExtensionFlowObj(const CompoundExtensionFlowObj &fo) : CompoundFlowObj(fo), fo_(fo.fo_->copy()->asCompoundExtensionFlowObj()) { } void CompoundExtensionFlowObj::processInner(ProcessContext &context) { FOTBuilder &fotb = context.currentFOTBuilder(); Vector portNames; fo_->portNames(portNames); Vector fotbs(portNames.size()); fotb.startExtension(*fo_, context.vm().currentNode, fotbs); if (portNames.size()) { Vector portSyms(portNames.size()); for (size_t i = 0; i < portSyms.size(); i++) portSyms[i] = context.vm().interp->makeSymbol(portNames[i]); context.pushPorts(fo_->hasPrincipalPort(), portSyms, fotbs); CompoundFlowObj::processInner(context); context.popPorts(); } else CompoundFlowObj::processInner(context); fotb.endExtension(*fo_); } void CompoundExtensionFlowObj::setNonInheritedC(const Identifier *ident, ELObj *obj, const Location &loc, Interpreter &interp) { fo_->setNIC(ident->name(), ELObjExtensionFlowObjValue(ident, obj, loc, interp)); } bool CompoundExtensionFlowObj::hasNonInheritedC(const Identifier *ident) const { return fo_->hasNIC(ident->name()); } FlowObj *CompoundExtensionFlowObj::copy(Collector &c) const { return new (c) CompoundExtensionFlowObj(*this); } #define FLOW_OBJ(name, string) \ { FlowObj *tem = new (*this) name; \ lookup(makeStringC(string))->setFlowObj(tem); \ makePermanent(tem); } void Interpreter::installFlowObjs() { FLOW_OBJ(SequenceFlowObj, "sequence"); FLOW_OBJ(DisplayGroupFlowObj, "display-group"); FLOW_OBJ(ParagraphFlowObj, "paragraph"); FLOW_OBJ(ParagraphBreakFlowObj, "paragraph-break"); FLOW_OBJ(LineFieldFlowObj, "line-field"); FLOW_OBJ(ScoreFlowObj, "score"); FLOW_OBJ(ExternalGraphicFlowObj, "external-graphic"); FLOW_OBJ(RuleFlowObj, "rule"); FLOW_OBJ(LeaderFlowObj, "leader"); FLOW_OBJ(CharacterFlowObj, "character"); FLOW_OBJ(BoxFlowObj, "box"); FLOW_OBJ(AlignmentPointFlowObj, "alignment-point"); FLOW_OBJ(SidelineFlowObj, "sideline"); // simple-page FLOW_OBJ(SimplePageSequenceFlowObj, "simple-page-sequence"); // tables FLOW_OBJ(TableFlowObj, "table"); FLOW_OBJ(TablePartFlowObj, "table-part"); FLOW_OBJ(TableColumnFlowObj, "table-column"); FLOW_OBJ(TableRowFlowObj, "table-row"); FLOW_OBJ(TableCellFlowObj, "table-cell"); FLOW_OBJ(TableBorderFlowObj, "table-border"); // online FLOW_OBJ(LinkFlowObj, "link"); FLOW_OBJ(ScrollFlowObj, "scroll"); FLOW_OBJ(MarginaliaFlowObj, "marginalia"); FLOW_OBJ(MultiModeFlowObj, "multi-mode"); // math FLOW_OBJ(MathSequenceFlowObj, "math-sequence"); FLOW_OBJ(FractionFlowObj, "fraction"); FLOW_OBJ(UnmathFlowObj, "unmath"); FLOW_OBJ(SuperscriptFlowObj, "superscript"); FLOW_OBJ(SubscriptFlowObj, "subscript"); FLOW_OBJ(ScriptFlowObj, "script"); FLOW_OBJ(MarkFlowObj, "mark"); FLOW_OBJ(FenceFlowObj, "fence"); FLOW_OBJ(RadicalFlowObj, "radical"); FLOW_OBJ(MathOperatorFlowObj, "math-operator"); FLOW_OBJ(GridFlowObj, "grid"); FLOW_OBJ(GridCellFlowObj, "grid-cell"); } void Interpreter::installExtensionFlowObjectClass(Identifier *ident, const StringC &pubid, const Location &loc) { FlowObj *tem = 0; if (extensionTable_) { for (const FOTBuilder::Extension *ep = extensionTable_; ep->pubid; ep++) { if (pubid == ep->pubid) { if (ep->flowObj) { const FOTBuilder::CompoundExtensionFlowObj *cFlowObj = ep->flowObj->asCompoundExtensionFlowObj(); if (cFlowObj) tem = new (*this) CompoundExtensionFlowObj(*cFlowObj); else tem = new (*this) ExtensionFlowObj(*ep->flowObj); } break; } } } if (!tem) { if (pubid == "UNREGISTERED::James Clark//Flow Object Class::" "formatting-instruction") tem = new (*this) FormattingInstructionFlowObj; else tem = new (*this) UnknownFlowObj; } makePermanent(tem); ident->setFlowObj(tem, currentPartIndex(), loc); } #ifdef DSSSL_NAMESPACE } #endif #include "FlowObj_inst.cxx" openjade-1.3.2/style/FlowObj_inst.m40100664000076400007640000000241506713071640015424 0ustar ianian// Copyright (c) 1996 James Clark // See the file copying.txt for copying permission. #include "stylelib.h" #ifdef SP_MANUAL_INST #define SP_DEFINE_TEMPLATES #include "Owner.h" #include "CopyOwner.h" #undef SP_DEFINE_TEMPLATES #if _MSC_VER >= 1100 #ifdef SP_NAMESPACE namespace SP_NAMESPACE { #endif #ifdef DSSSL_NAMESPACE using namespace DSSSL_NAMESPACE; #endif #ifdef GROVE_NAMESPACE using namespace GROVE_NAMESPACE; #endif #else #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif #endif __instantiate(Owner) __instantiate(CopyOwner) __instantiate(Owner) __instantiate(Owner) __instantiate(Owner) __instantiate(Owner) __instantiate(Owner) __instantiate(Owner) __instantiate(Owner) __instantiate(Owner) __instantiate(Owner) __instantiate(Owner) __instantiate(Owner) __instantiate(Owner) __instantiate(Owner) __instantiate(Owner) #ifdef SP_NAMESPACE } #endif #endif /* SP_MANUAL_INST */ openjade-1.3.2/style/GroveManager.cxx0100664000076400007640000000040706713045703015664 0ustar ianian// Copyright (c) 1997 James Clark // See the file copying.txt for copying permission. #include "stylelib.h" #include "GroveManager.h" #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif GroveManager::~GroveManager() { } #ifdef DSSSL_NAMESPACE } #endif openjade-1.3.2/style/GroveManager.h0100664000076400007640000000135406736232343015316 0ustar ianian// Copyright (c) 1997 James Clark // See the file copying.txt for copying permission. #ifndef GroveManager_INCLUDED #define GroveManager_INCLUDED 1 #include "Boolean.h" #include "Node.h" #include "StringC.h" #include "Vector.h" #include "FOTBuilder.h" #include "Boolean.h" #include "dsssl_ns.h" #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif class STYLE_API GroveManager { public: virtual ~GroveManager(); virtual bool load(const StringC &, const Vector &active, const NodePtr &parent, NodePtr &, const Vector &architecture) = 0; virtual bool readEntity(const StringC &, StringC &) = 0; virtual void mapSysid(StringC &) = 0; }; #ifdef DSSSL_NAMESPACE } #endif #endif /* not GroveManager_INCLUDED */ openjade-1.3.2/style/InheritedC.cxx0100664000076400007640000015401206755652244015341 0ustar ianian// Copyright (c) 1996 James Clark // See the file copying.txt for copying permission. #include "stylelib.h" #include "Style.h" #include "VM.h" #include "Interpreter.h" #include "InterpreterMessages.h" #include "macros.h" #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif InheritedC::InheritedC(const Identifier *ident, unsigned index) : ident_(ident), index_(index) { } InheritedC::~InheritedC() { } void InheritedC::invalidValue(const Location &loc, Interpreter &interp) const { interp.invalidCharacteristicValue(identifier(), loc); } class BoolInheritedC : public InheritedC { public: BoolInheritedC(const Identifier *, unsigned index, bool); ELObj *value(VM &, const VarStyleObj *, Vector &) const; protected: bool value_; }; BoolInheritedC::BoolInheritedC(const Identifier *ident, unsigned index, bool value) : InheritedC(ident, index), value_(value) { } ELObj *BoolInheritedC::value(VM &vm, const VarStyleObj *, Vector &) const { if (value_) return vm.interp->makeTrue(); else return vm.interp->makeFalse(); } class IntegerInheritedC : public InheritedC { public: IntegerInheritedC(const Identifier *, unsigned index, long); ELObj *value(VM &, const VarStyleObj *, Vector &) const; protected: long n_; }; IntegerInheritedC::IntegerInheritedC(const Identifier *ident, unsigned index, long n) : InheritedC(ident, index), n_(n) { } ELObj *IntegerInheritedC::value(VM &vm, const VarStyleObj *, Vector &) const { return vm.interp->makeInteger(n_); } class LengthInheritedC : public InheritedC { public: LengthInheritedC(const Identifier *, unsigned index, FOTBuilder::Length); ELObj *value(VM &, const VarStyleObj *, Vector &) const; protected: FOTBuilder::Length size_; }; LengthInheritedC::LengthInheritedC(const Identifier *ident, unsigned index, FOTBuilder::Length size) : InheritedC(ident, index), size_(size) { } ELObj *LengthInheritedC::value(VM &vm, const VarStyleObj *, Vector &) const { return new (*vm.interp) LengthObj(size_); } class SymbolInheritedC : public InheritedC { public: SymbolInheritedC(const Identifier *, unsigned index, FOTBuilder::Symbol); ELObj *value(VM &, const VarStyleObj *, Vector &) const; protected: FOTBuilder::Symbol sym_; }; SymbolInheritedC::SymbolInheritedC(const Identifier *ident, unsigned index, FOTBuilder::Symbol sym) : InheritedC(ident, index), sym_(sym) { } ELObj *SymbolInheritedC::value(VM &vm, const VarStyleObj *, Vector &) const { return vm.interp->cValueSymbol(sym_); } class PublicIdInheritedC : public InheritedC { public: PublicIdInheritedC(const Identifier *, unsigned index, FOTBuilder::PublicId = 0); ELObj *value(VM &, const VarStyleObj *, Vector &) const; protected: FOTBuilder::PublicId pubid_; }; PublicIdInheritedC::PublicIdInheritedC(const Identifier *ident, unsigned index, FOTBuilder::PublicId pubid) : InheritedC(ident, index), pubid_(pubid) { } ELObj *PublicIdInheritedC::value(VM &vm, const VarStyleObj *, Vector &) const { Interpreter &interp = *vm.interp; if (pubid_) return new (interp) StringObj(interp.makeStringC(pubid_)); else return interp.makeFalse(); } class Letter2InheritedC : public InheritedC { public: Letter2InheritedC(const Identifier *, unsigned index, FOTBuilder::Letter2 = 0); ELObj *value(VM &, const VarStyleObj *, Vector &) const; protected: FOTBuilder::Letter2 code_; }; Letter2InheritedC::Letter2InheritedC(const Identifier *ident, unsigned index, FOTBuilder::Letter2 code) : InheritedC(ident, index), code_(code) { } ELObj *Letter2InheritedC::value(VM &vm, const VarStyleObj *, Vector &) const { Interpreter &interp = *vm.interp; if (code_) { StringC buf; buf += (code_ >> 8) & 0xff; buf += code_ & 0xff; buf += 0; return interp.makeSymbol(buf); } else return interp.makeFalse(); } class LengthSpecInheritedC : public InheritedC { public: LengthSpecInheritedC(const Identifier *, unsigned index, FOTBuilder::Length); ELObj *value(VM &, const VarStyleObj *, Vector &) const; protected: bool setValue(ELObj *, const Location &, Interpreter &); FOTBuilder::LengthSpec value_; }; LengthSpecInheritedC::LengthSpecInheritedC(const Identifier *ident, unsigned index, FOTBuilder::Length n) : InheritedC(ident, index), value_(n) { } ELObj *LengthSpecInheritedC::value(VM &vm, const VarStyleObj *, Vector &) const { return vm.interp->makeLengthSpec(value_); } bool LengthSpecInheritedC::setValue(ELObj *obj, const Location &loc, Interpreter &interp) { return interp.convertLengthSpecC(obj, identifier(), loc, value_); } class OptLengthSpecInheritedC : public InheritedC { public: OptLengthSpecInheritedC(const Identifier *, unsigned index); ELObj *value(VM &, const VarStyleObj *, Vector &) const; protected: bool setValue(ELObj *, const Location &, Interpreter &); FOTBuilder::OptLengthSpec value_; }; OptLengthSpecInheritedC::OptLengthSpecInheritedC(const Identifier *ident, unsigned index) : InheritedC(ident, index) { } ELObj *OptLengthSpecInheritedC::value(VM &vm, const VarStyleObj *, Vector &) const { if (!value_.hasLength) return vm.interp->makeFalse(); else return vm.interp->makeLengthSpec(value_.length); } bool OptLengthSpecInheritedC::setValue(ELObj *obj, const Location &loc, Interpreter &interp) { return interp.convertOptLengthSpecC(obj, identifier(), loc, value_); } class StringInheritedC : public InheritedC { public: StringInheritedC(const Identifier *, unsigned index, const Char *, size_t ); StringInheritedC(const Identifier *, unsigned index, const StringC &); ELObj *value(VM &, const VarStyleObj *, Vector &) const; protected: StringC str_; }; StringInheritedC::StringInheritedC(const Identifier *ident, unsigned index, const Char *s, size_t n) : InheritedC(ident, index), str_(s, n) { } StringInheritedC::StringInheritedC(const Identifier *ident, unsigned index, const StringC &s) : InheritedC(ident, index), str_(s) { } ELObj *StringInheritedC::value(VM &vm, const VarStyleObj *, Vector &) const { return new(*vm.interp) StringObj(str_); } class GenericInlineSpaceInheritedC : public InheritedC { public: typedef void (FOTBuilder::*Setter)(const FOTBuilder::InlineSpace &); GenericInlineSpaceInheritedC(const Identifier *, unsigned index, Setter setter); ELObj *value(VM &, const VarStyleObj *, Vector &) const; void set(VM &, const VarStyleObj *, FOTBuilder &, ELObj *&value, Vector &dependencies) const; ConstPtr make(ELObj *, const Location &, Interpreter &) const; private: FOTBuilder::InlineSpace value_; Setter setter_; }; GenericInlineSpaceInheritedC::GenericInlineSpaceInheritedC(const Identifier *ident, unsigned index, Setter setter) : InheritedC(ident, index), setter_(setter) { } ELObj *GenericInlineSpaceInheritedC::value(VM &vm, const VarStyleObj *, Vector &) const { return new (*vm.interp) InlineSpaceObj(value_); } void GenericInlineSpaceInheritedC::set(VM &, const VarStyleObj *, FOTBuilder &fotb, ELObj *&, Vector &) const { (fotb.*setter_)(value_); } ConstPtr GenericInlineSpaceInheritedC::make(ELObj *obj, const Location &loc, Interpreter &interp) const { GenericInlineSpaceInheritedC *copy = new GenericInlineSpaceInheritedC(identifier(), index(), setter_); InlineSpaceObj *iso = obj->asInlineSpace(); if (iso) { copy->value_ = iso->inlineSpace(); return copy; } else if (interp.convertLengthSpecC(obj, identifier(), loc, copy->value_.nominal)) { copy->value_.min = copy->value_.nominal; copy->value_.max = copy->value_.nominal; return copy; } delete copy; return 0; } class GenericBoolInheritedC : public BoolInheritedC { public: typedef void (FOTBuilder::*Setter)(bool); GenericBoolInheritedC(const Identifier *, unsigned index, Setter, bool = 0); void set(VM &, const VarStyleObj *, FOTBuilder &, ELObj *&value, Vector &dependencies) const; ConstPtr make(ELObj *, const Location &, Interpreter &) const; private: Setter setter_; }; GenericBoolInheritedC ::GenericBoolInheritedC(const Identifier *ident, unsigned index, Setter setter, bool b) : BoolInheritedC(ident, index, b), setter_(setter) { } void GenericBoolInheritedC::set(VM &, const VarStyleObj *, FOTBuilder &fotb, ELObj *&, Vector &) const { (fotb.*setter_)(value_); } ConstPtr GenericBoolInheritedC::make(ELObj *obj, const Location &loc, Interpreter &interp) const { bool b; if (interp.convertBooleanC(obj, identifier(), loc, b)) return new GenericBoolInheritedC(identifier(), index(), setter_, b); return ConstPtr(); } class ExtensionBoolInheritedC : public BoolInheritedC { public: typedef void (FOTBuilder::*Setter)(bool); ExtensionBoolInheritedC(const Identifier *, unsigned index, Setter, bool = 0); void set(VM &, const VarStyleObj *, FOTBuilder &, ELObj *&value, Vector &dependencies) const; ConstPtr make(ELObj *, const Location &, Interpreter &) const; private: Setter setter_; }; ExtensionBoolInheritedC ::ExtensionBoolInheritedC(const Identifier *ident, unsigned index, Setter setter, bool b) : BoolInheritedC(ident, index, b), setter_(setter) { } void ExtensionBoolInheritedC::set(VM &, const VarStyleObj *, FOTBuilder &fotb, ELObj *&, Vector &) const { fotb.extensionSet(setter_, value_); } ConstPtr ExtensionBoolInheritedC::make(ELObj *obj, const Location &loc, Interpreter &interp) const { bool b; if (interp.convertBooleanC(obj, identifier(), loc, b)) return new ExtensionBoolInheritedC(identifier(), index(), setter_, b); return ConstPtr(); } class ExtensionStringInheritedC : public StringInheritedC { public: typedef void (FOTBuilder::*Setter)(const StringC &); ExtensionStringInheritedC(const Identifier *, unsigned index, Setter); ExtensionStringInheritedC(const Identifier *, unsigned index, Setter, const Char *, size_t); void set(VM &, const VarStyleObj *, FOTBuilder &, ELObj *&value, Vector &dependencies) const; ConstPtr make(ELObj *, const Location &, Interpreter &) const; private: Setter setter_; }; ExtensionStringInheritedC ::ExtensionStringInheritedC(const Identifier *ident, unsigned index, Setter setter) : StringInheritedC(ident, index, StringC()), setter_(setter) { } ExtensionStringInheritedC ::ExtensionStringInheritedC(const Identifier *ident, unsigned index, Setter setter, const Char *s, size_t n) : StringInheritedC(ident, index, s, n), setter_(setter) { } void ExtensionStringInheritedC::set(VM &, const VarStyleObj *, FOTBuilder &fotb, ELObj *&, Vector &) const { fotb.extensionSet(setter_, str_); } ConstPtr ExtensionStringInheritedC::make(ELObj *obj, const Location &loc, Interpreter &interp) const { const Char *s; size_t n; if (obj->stringData(s, n)) return new ExtensionStringInheritedC(identifier(), index(), setter_, s, n); invalidValue(loc, interp); return ConstPtr(); } class ExtensionIntegerInheritedC : public IntegerInheritedC { public: typedef void (FOTBuilder::*Setter)(long); ExtensionIntegerInheritedC(const Identifier *, unsigned index, Setter, long = 0); void set(VM &, const VarStyleObj *, FOTBuilder &, ELObj *&value, Vector &dependencies) const; ConstPtr make(ELObj *, const Location &, Interpreter &) const; private: Setter setter_; }; ExtensionIntegerInheritedC ::ExtensionIntegerInheritedC(const Identifier *ident, unsigned index, Setter setter, long n) : IntegerInheritedC(ident, index, n), setter_(setter) { } void ExtensionIntegerInheritedC::set(VM &, const VarStyleObj *, FOTBuilder &fotb, ELObj *&, Vector &) const { fotb.extensionSet(setter_, n_); } ConstPtr ExtensionIntegerInheritedC::make(ELObj *obj, const Location &loc, Interpreter &interp) const { long n; if (interp.convertIntegerC(obj, identifier(), loc, n)) return new ExtensionIntegerInheritedC(identifier(), index(), setter_, n); return ConstPtr(); } class ExtensionLengthInheritedC : public LengthInheritedC { public: typedef void (FOTBuilder::*Setter)(FOTBuilder::Length); ExtensionLengthInheritedC(const Identifier *, unsigned index, Setter, FOTBuilder::Length = 0); void set(VM &, const VarStyleObj *, FOTBuilder &, ELObj *&value, Vector &dependencies) const; ConstPtr make(ELObj *, const Location &, Interpreter &) const; private: Setter setter_; }; ExtensionLengthInheritedC ::ExtensionLengthInheritedC(const Identifier *ident, unsigned index, Setter setter, FOTBuilder::Length n) : LengthInheritedC(ident, index, n), setter_(setter) { } void ExtensionLengthInheritedC::set(VM &, const VarStyleObj *, FOTBuilder &fotb, ELObj *&, Vector &) const { fotb.extensionSet(setter_, size_); } ConstPtr ExtensionLengthInheritedC::make(ELObj *obj, const Location &loc, Interpreter &interp) const { FOTBuilder::Length n; if (interp.convertLengthC(obj, identifier(), loc, n)) return new ExtensionLengthInheritedC(identifier(), index(), setter_, n); return ConstPtr(); } class GenericLengthInheritedC : public LengthInheritedC { public: typedef void (FOTBuilder::*Setter)(FOTBuilder::Length); GenericLengthInheritedC(const Identifier *, unsigned index, Setter, FOTBuilder::Length = 0); void set(VM &, const VarStyleObj *, FOTBuilder &, ELObj *&value, Vector &dependencies) const; ConstPtr make(ELObj *, const Location &, Interpreter &) const; private: Setter setter_; }; GenericLengthInheritedC ::GenericLengthInheritedC(const Identifier *ident, unsigned index, Setter setter, FOTBuilder::Length n) : LengthInheritedC(ident, index, n), setter_(setter) { } void GenericLengthInheritedC::set(VM &, const VarStyleObj *, FOTBuilder &fotb, ELObj *&, Vector &) const { (fotb.*setter_)(size_); } ConstPtr GenericLengthInheritedC::make(ELObj *obj, const Location &loc, Interpreter &interp) const { FOTBuilder::Length n; if (interp.convertLengthC(obj, identifier(), loc, n)) return new GenericLengthInheritedC(identifier(), index(), setter_, n); return ConstPtr(); } class GenericIntegerInheritedC : public IntegerInheritedC { public: typedef void (FOTBuilder::*Setter)(long); GenericIntegerInheritedC(const Identifier *, unsigned index, Setter, long); void set(VM &, const VarStyleObj *, FOTBuilder &, ELObj *&value, Vector &dependencies) const; ConstPtr make(ELObj *, const Location &, Interpreter &) const; protected: Setter setter_; }; GenericIntegerInheritedC ::GenericIntegerInheritedC(const Identifier *ident, unsigned index, Setter setter, long n) : IntegerInheritedC(ident, index, n), setter_(setter) { } void GenericIntegerInheritedC::set(VM &, const VarStyleObj *, FOTBuilder &fotb, ELObj *&, Vector &) const { (fotb.*setter_)(n_); } ConstPtr GenericIntegerInheritedC::make(ELObj *obj, const Location &loc, Interpreter &interp) const { long n; if (interp.convertIntegerC(obj, identifier(), loc, n)) return new GenericIntegerInheritedC(identifier(), index(), setter_, n); return ConstPtr(); } class GenericMaybeIntegerInheritedC : public GenericIntegerInheritedC { public: GenericMaybeIntegerInheritedC(const Identifier *, unsigned index, Setter, long); ConstPtr make(ELObj *, const Location &, Interpreter &) const; ELObj *value(VM &, const VarStyleObj *, Vector &) const; }; GenericMaybeIntegerInheritedC ::GenericMaybeIntegerInheritedC(const Identifier *ident, unsigned index, Setter setter, long n) : GenericIntegerInheritedC(ident, index, setter, n) { } ELObj *GenericMaybeIntegerInheritedC::value(VM &vm, const VarStyleObj *style, Vector &dep) const { if (!n_) return vm.interp->makeFalse(); else return IntegerInheritedC::value(vm, style, dep); } ConstPtr GenericMaybeIntegerInheritedC::make(ELObj *obj, const Location &loc, Interpreter &interp) const { long n; if (interp.convertOptPositiveIntegerC(obj, identifier(), loc, n)) return new GenericMaybeIntegerInheritedC(identifier(), index(), setter_, n); return ConstPtr(); } class GenericSymbolInheritedC : public SymbolInheritedC { public: typedef void (FOTBuilder::*Setter)(FOTBuilder::Symbol); GenericSymbolInheritedC(const Identifier *, unsigned index, Setter, FOTBuilder::Symbol = FOTBuilder::symbolFalse); void set(VM &, const VarStyleObj *, FOTBuilder &, ELObj *&value, Vector &dependencies) const; ConstPtr make(ELObj *, const Location &, Interpreter &) const; private: Setter setter_; }; GenericSymbolInheritedC ::GenericSymbolInheritedC(const Identifier *ident, unsigned index, Setter setter, FOTBuilder::Symbol sym) : SymbolInheritedC(ident, index, sym), setter_(setter) { } void GenericSymbolInheritedC::set(VM &, const VarStyleObj *, FOTBuilder &fotb, ELObj *&, Vector &) const { (fotb.*setter_)(sym_); } ConstPtr GenericSymbolInheritedC::make(ELObj *obj, const Location &loc, Interpreter &interp) const { FOTBuilder::Symbol sym; if (interp.convertEnumC(obj, identifier(), loc, sym)) return new GenericSymbolInheritedC(identifier(), index(), setter_, sym); return ConstPtr(); } class GenericPublicIdInheritedC : public PublicIdInheritedC { public: typedef void (FOTBuilder::*Setter)(FOTBuilder::PublicId); GenericPublicIdInheritedC(const Identifier *, unsigned index, Setter, FOTBuilder::PublicId = 0); void set(VM &, const VarStyleObj *, FOTBuilder &, ELObj *&value, Vector &dependencies) const; ConstPtr make(ELObj *, const Location &, Interpreter &) const; private: Setter setter_; }; GenericPublicIdInheritedC ::GenericPublicIdInheritedC(const Identifier *ident, unsigned index, Setter setter, FOTBuilder::PublicId pubid) : PublicIdInheritedC(ident, index, pubid), setter_(setter) { } void GenericPublicIdInheritedC::set(VM &, const VarStyleObj *, FOTBuilder &fotb, ELObj *&, Vector &) const { (fotb.*setter_)(pubid_); } ConstPtr GenericPublicIdInheritedC::make(ELObj *obj, const Location &loc, Interpreter &interp) const { FOTBuilder::PublicId pubid; if (interp.convertPublicIdC(obj, identifier(), loc, pubid)) return new GenericPublicIdInheritedC(identifier(), index(), setter_, pubid); return ConstPtr(); } class GenericLetter2InheritedC : public Letter2InheritedC { public: typedef void (FOTBuilder::*Setter)(FOTBuilder::Letter2); GenericLetter2InheritedC(const Identifier *, unsigned index, Setter, FOTBuilder::Letter2 = 0); void set(VM &, const VarStyleObj *, FOTBuilder &, ELObj *&value, Vector &dependencies) const; ConstPtr make(ELObj *, const Location &, Interpreter &) const; private: Setter setter_; }; GenericLetter2InheritedC ::GenericLetter2InheritedC(const Identifier *ident, unsigned index, Setter setter, FOTBuilder::Letter2 code) : Letter2InheritedC(ident, index, code), setter_(setter) { } void GenericLetter2InheritedC::set(VM &, const VarStyleObj *, FOTBuilder &fotb, ELObj *&, Vector &) const { (fotb.*setter_)(code_); } ConstPtr GenericLetter2InheritedC::make(ELObj *obj, const Location &loc, Interpreter &interp) const { FOTBuilder::Letter2 code; if (interp.convertLetter2C(obj, identifier(), loc, code)) return new GenericLetter2InheritedC(identifier(), index(), setter_, code); return ConstPtr(); } class GenericLengthSpecInheritedC : public LengthSpecInheritedC { public: typedef void (FOTBuilder::*Setter)(const FOTBuilder::LengthSpec &); GenericLengthSpecInheritedC(const Identifier *, unsigned index, Setter, long = 0); void set(VM &, const VarStyleObj *, FOTBuilder &, ELObj *&value, Vector &dependencies) const; ConstPtr make(ELObj *, const Location &, Interpreter &) const; private: Setter setter_; }; GenericLengthSpecInheritedC ::GenericLengthSpecInheritedC(const Identifier *ident, unsigned index, Setter setter, long n) : LengthSpecInheritedC(ident, index, n), setter_(setter) { } void GenericLengthSpecInheritedC::set(VM &, const VarStyleObj *, FOTBuilder &fotb, ELObj *&, Vector &) const { (fotb.*setter_)(value_); } ConstPtr GenericLengthSpecInheritedC::make(ELObj *obj, const Location &loc, Interpreter &interp) const { GenericLengthSpecInheritedC *copy = new GenericLengthSpecInheritedC(identifier(), index(), setter_); if (!copy->setValue(obj, loc, interp)) { delete copy; copy = 0; } return copy; } class GenericOptInlineSpaceInheritedC : public InheritedC { public: typedef void (FOTBuilder::*Setter)(const FOTBuilder::OptInlineSpace &); GenericOptInlineSpaceInheritedC(const Identifier *, unsigned index, Setter); ELObj *value(VM &, const VarStyleObj *, Vector &) const; void set(VM &, const VarStyleObj *, FOTBuilder &, ELObj *&value, Vector &dependencies) const; ConstPtr make(ELObj *, const Location &, Interpreter &) const; private: FOTBuilder::OptInlineSpace value_; Setter setter_; }; GenericOptInlineSpaceInheritedC ::GenericOptInlineSpaceInheritedC(const Identifier *ident, unsigned index, Setter setter) : InheritedC(ident, index), setter_(setter) { } ELObj *GenericOptInlineSpaceInheritedC::value(VM &vm, const VarStyleObj *, Vector &) const { if (!value_.hasSpace) return vm.interp->makeFalse(); else return new (*vm.interp) InlineSpaceObj(value_.space); } void GenericOptInlineSpaceInheritedC::set(VM &, const VarStyleObj *, FOTBuilder &fotb, ELObj *&, Vector &) const { (fotb.*setter_)(value_); } ConstPtr GenericOptInlineSpaceInheritedC::make(ELObj *obj, const Location &loc, Interpreter &interp) const { GenericOptInlineSpaceInheritedC *copy = new GenericOptInlineSpaceInheritedC(identifier(), index(), setter_); InlineSpaceObj *iso = obj->asInlineSpace(); if (iso) { copy->value_.space = iso->inlineSpace(); copy->value_.hasSpace = 1; } else { FOTBuilder::OptLengthSpec res; if (interp.convertOptLengthSpecC(obj, identifier(), loc, res)) { if (res.hasLength) { copy->value_.space.nominal = res.length; copy->value_.space.min = res.length; copy->value_.space.max = res.length; copy->value_.hasSpace = 1; } else copy->value_.hasSpace = 0; } else { delete copy; copy = 0; } } return copy; } class GenericOptLengthSpecInheritedC : public OptLengthSpecInheritedC { public: typedef void (FOTBuilder::*Setter)(const FOTBuilder::OptLengthSpec &); GenericOptLengthSpecInheritedC(const Identifier *, unsigned index, Setter); void set(VM &, const VarStyleObj *, FOTBuilder &, ELObj *&value, Vector &dependencies) const; ConstPtr make(ELObj *, const Location &, Interpreter &) const; private: Setter setter_; }; GenericOptLengthSpecInheritedC ::GenericOptLengthSpecInheritedC(const Identifier *ident, unsigned index, Setter setter) : OptLengthSpecInheritedC(ident, index), setter_(setter) { } void GenericOptLengthSpecInheritedC::set(VM &, const VarStyleObj *, FOTBuilder &fotb, ELObj *&, Vector &) const { (fotb.*setter_)(value_); } ConstPtr GenericOptLengthSpecInheritedC::make(ELObj *obj, const Location &loc, Interpreter &interp) const { GenericOptLengthSpecInheritedC *copy = new GenericOptLengthSpecInheritedC(identifier(), index(), setter_); if (!copy->setValue(obj, loc, interp)) { delete copy; copy = 0; } return copy; } class FontSizeC : public LengthInheritedC { public: FontSizeC(const Identifier *, unsigned index, long); void set(VM &, const VarStyleObj *, FOTBuilder &, ELObj *&value, Vector &dependencies) const; ConstPtr make(ELObj *, const Location &, Interpreter &) const; }; FontSizeC::FontSizeC(const Identifier *ident, unsigned index, long size) : LengthInheritedC(ident, index, size) { } void FontSizeC::set(VM &vm, const VarStyleObj *, FOTBuilder &fotb, ELObj *&, Vector &) const { fotb.setFontSize(size_); } ConstPtr FontSizeC::make(ELObj *obj, const Location &loc, Interpreter &interp) const { long n; if (interp.convertLengthC(obj, identifier(), loc, n)) return new FontSizeC(identifier(), index(), n); return ConstPtr(); } class FontFamilyNameC : public StringInheritedC { public: FontFamilyNameC(const Identifier *, unsigned index, const Char *, size_t); FontFamilyNameC(const Identifier *, unsigned index, const StringC &); void set(VM &, const VarStyleObj *, FOTBuilder &, ELObj *&value, Vector &dependencies) const; ConstPtr make(ELObj *, const Location &, Interpreter &) const; }; FontFamilyNameC::FontFamilyNameC(const Identifier *ident, unsigned index, const Char *s, size_t n) : StringInheritedC(ident, index, s, n) { } FontFamilyNameC::FontFamilyNameC(const Identifier *ident, unsigned index, const StringC &s) : StringInheritedC(ident, index, s) { } void FontFamilyNameC::set(VM &vm, const VarStyleObj *, FOTBuilder &fotb, ELObj *&, Vector &) const { fotb.setFontFamilyName(str_); } ConstPtr FontFamilyNameC::make(ELObj *obj, const Location &loc, Interpreter &interp) const { const Char *s; size_t n; if (obj->stringData(s, n)) return new FontFamilyNameC(identifier(), index(), s, n); invalidValue(loc, interp); return ConstPtr(); } class ColorC : public InheritedC, private Collector::DynamicRoot { public: ColorC(const Identifier *, unsigned index, ColorObj *, Interpreter &); void set(VM &, const VarStyleObj *, FOTBuilder &, ELObj *&value, Vector &dependencies) const; ConstPtr make(ELObj *, const Location &, Interpreter &) const; ELObj *value(VM &, const VarStyleObj *, Vector &) const; void trace(Collector &) const; private: ColorObj *color_; }; ColorC::ColorC(const Identifier *ident, unsigned index, ColorObj *color, Interpreter &interp) : InheritedC(ident, index), Collector::DynamicRoot(interp), color_(color) { } void ColorC::set(VM &, const VarStyleObj *, FOTBuilder &fotb, ELObj *&, Vector &) const { color_->set(fotb); } ConstPtr ColorC::make(ELObj *obj, const Location &loc, Interpreter &interp) const { ColorObj *color; if (interp.convertColorC(obj, identifier(), loc, color)) return new ColorC(identifier(), index(), color, interp); return ConstPtr(); } ELObj *ColorC::value(VM &vm, const VarStyleObj *, Vector &) const { if (!color_) return vm.interp->makeFalse(); else return color_; } void ColorC::trace(Collector &c) const { c.trace(color_); } class BackgroundColorC : public InheritedC, private Collector::DynamicRoot { public: BackgroundColorC(const Identifier *, unsigned index, ColorObj *, Interpreter &); void set(VM &, const VarStyleObj *, FOTBuilder &, ELObj *&value, Vector &dependencies) const; ConstPtr make(ELObj *, const Location &, Interpreter &) const; ELObj *value(VM &, const VarStyleObj *, Vector &) const; void trace(Collector &) const; private: ColorObj *color_; }; BackgroundColorC::BackgroundColorC(const Identifier *ident, unsigned index, ColorObj *color, Interpreter &interp) : InheritedC(ident, index), Collector::DynamicRoot(interp), color_(color) { } void BackgroundColorC::set(VM &, const VarStyleObj *, FOTBuilder &fotb, ELObj *&, Vector &) const { if (color_) color_->setBackground(fotb); else fotb.setBackgroundColor(); } ConstPtr BackgroundColorC::make(ELObj *obj, const Location &loc, Interpreter &interp) const { ColorObj *color; if (interp.convertOptColorC(obj, identifier(), loc, color)) return new BackgroundColorC(identifier(), index(), color, interp); return ConstPtr(); } ELObj * BackgroundColorC::value(VM &vm, const VarStyleObj *, Vector &) const { if (color_) return color_; else return vm.interp->makeFalse(); } void BackgroundColorC::trace(Collector &c) const { c.trace(color_); } class GlyphSubstTableC : public InheritedC { public: GlyphSubstTableC(const Identifier *, unsigned index, bool isList); void set(VM &, const VarStyleObj *, FOTBuilder &, ELObj *&value, Vector &dependencies) const; ConstPtr make(ELObj *, const Location &, Interpreter &) const; ELObj *value(VM &, const VarStyleObj *, Vector &) const; void append(const ConstPtr &table) { tables_.push_back(table); } private: // Distinguish between #f and () for inherited-glyph-subst-table bool isList_; Vector > tables_; }; GlyphSubstTableC::GlyphSubstTableC(const Identifier *ident, unsigned index, bool isList) : InheritedC(ident, index), isList_(isList) { } void GlyphSubstTableC::set(VM &, const VarStyleObj *, FOTBuilder &fotb, ELObj *&, Vector &) const { fotb.setGlyphSubstTable(tables_); } ConstPtr GlyphSubstTableC::make(ELObj *obj, const Location &loc, Interpreter &interp) const { if (obj == interp.makeFalse()) return new GlyphSubstTableC(identifier(), index(), 0); GlyphSubstTableObj *table = obj->asGlyphSubstTable(); if (table) { Ptr tem = new GlyphSubstTableC(identifier(), index(), 0); ((GlyphSubstTableC *)tem.pointer())->append(table->glyphSubstTable()); return tem; } Ptr tem = new GlyphSubstTableC(identifier(), index(), 1); for (;;) { if (obj->isNil()) return tem; PairObj *pair = obj->asPair(); if (!pair) break; obj = pair->cdr(); table = pair->car()->asGlyphSubstTable(); if (!table) break; ((GlyphSubstTableC *)tem.pointer())->append(table->glyphSubstTable()); } invalidValue(loc, interp); return ConstPtr(); } ELObj *GlyphSubstTableC::value(VM &vm, const VarStyleObj *, Vector &) const { if (!isList_) { if (tables_.size()) return new (*vm.interp) GlyphSubstTableObj(tables_[0]); else return vm.interp->makeFalse(); } else { ELObj *list = vm.interp->makeNil(); ELObjDynamicRoot protect(*vm.interp, list); for (size_t i = tables_.size(); i > 0; i--) { ELObj *tableObj = new (*vm.interp) GlyphSubstTableObj(tables_[i - 1]); ELObjDynamicRoot protect2(*vm.interp, tableObj); list = vm.interp->makePair(tableObj, list); protect = list; } return list; } } class IgnoredC : public InheritedC, private Collector::DynamicRoot { public: IgnoredC(const Identifier *, unsigned index, ELObj *, Interpreter &); void set(VM &, const VarStyleObj *, FOTBuilder &, ELObj *&, Vector &) const; ConstPtr make(ELObj *, const Location &, Interpreter &) const; ELObj *value(VM &, const VarStyleObj *, Vector &) const; void trace(Collector &) const; private: ELObj *value_; }; IgnoredC::IgnoredC(const Identifier *ident, unsigned index, ELObj *value, Interpreter &interp) : InheritedC(ident, index), Collector::DynamicRoot(interp), value_(value) { } void IgnoredC::set(VM &, const VarStyleObj *, FOTBuilder &fotb, ELObj *&, Vector &) const { } ConstPtr IgnoredC::make(ELObj *obj, const Location &, Interpreter &interp) const { return new IgnoredC(identifier(), index(), obj, interp); } ELObj *IgnoredC::value(VM &, const VarStyleObj *, Vector &) const { return value_; } void IgnoredC::trace(Collector &c) const { c.trace(value_); } class BorderC : public IgnoredC { public: BorderC(const Identifier *, unsigned index, ELObj *, Interpreter &); ConstPtr make(ELObj *, const Location &, Interpreter &) const; }; BorderC::BorderC(const Identifier *ident, unsigned index, ELObj *value, Interpreter &interp) : IgnoredC(ident, index, value, interp) { } ConstPtr BorderC::make(ELObj *obj, const Location &loc, Interpreter &interp) const { StyleObj *tem; SosofoObj *sosofo = obj->asSosofo(); if (sosofo && sosofo->tableBorderStyle(tem)) return new BorderC(identifier(), index(), obj, interp); bool b; if (interp.convertBooleanC(obj, identifier(), loc, b)) { if (b) obj = interp.makeTrue(); else obj = interp.makeFalse(); return new BorderC(identifier(), index(), obj, interp); } return ConstPtr(); } class RuleC : public IgnoredC { public: RuleC(const Identifier *, unsigned index, ELObj *, Interpreter &); ConstPtr make(ELObj *, const Location &, Interpreter &) const; }; RuleC::RuleC(const Identifier *ident, unsigned index, ELObj *value, Interpreter &interp) : IgnoredC(ident, index, value, interp) { } ConstPtr RuleC::make(ELObj *obj, const Location &loc, Interpreter &interp) const { SosofoObj *sosofo = obj->asSosofo(); if (sosofo && sosofo->isRule()) return new RuleC(identifier(), index(), obj, interp); invalidValue(loc, interp); return ConstPtr(); } class InheritedCPrimitiveObj : public PrimitiveObj { public: void *operator new(size_t, Collector &c) { return c.allocateObject(1); } static const Signature signature_; InheritedCPrimitiveObj(const ConstPtr &ic) : PrimitiveObj(&signature_), inheritedC_(ic) { } ELObj *primitiveCall(int, ELObj **, EvalContext &, Interpreter &, const Location &); private: ConstPtr inheritedC_; }; const Signature InheritedCPrimitiveObj::signature_ = { 0, 0, 0 }; ELObj *InheritedCPrimitiveObj::primitiveCall(int, ELObj **, EvalContext &ec, Interpreter &interp, const Location &loc) { if (!ec.styleStack) { interp.setNextLocation(loc); interp.message(InterpreterMessages::notInCharacteristicValue); return interp.makeError(); } ELObj *obj = ec.styleStack->inherited(inheritedC_, ec.specLevel, interp, *ec.actualDependencies); interp.makeReadOnly(obj); return obj; } class ActualCPrimitiveObj : public PrimitiveObj { public: void *operator new(size_t, Collector &c) { return c.allocateObject(1); } static const Signature signature_; ActualCPrimitiveObj(const ConstPtr &ic) : PrimitiveObj(&signature_), inheritedC_(ic) { } ELObj *primitiveCall(int, ELObj **, EvalContext &, Interpreter &, const Location &); private: ConstPtr inheritedC_; }; const Signature ActualCPrimitiveObj::signature_ = { 0, 0, 0 }; ELObj *ActualCPrimitiveObj::primitiveCall(int, ELObj **, EvalContext &ec, Interpreter &interp, const Location &loc) { if (!ec.styleStack) { interp.setNextLocation(loc); interp.message(InterpreterMessages::notInCharacteristicValue); return interp.makeError(); } ELObj *obj = ec.styleStack->actual(inheritedC_, loc, interp, *ec.actualDependencies); const Char *s; size_t n; interp.makeReadOnly(obj); return obj; } #define INHERITED_C(name, C, init) \ installInheritedC(name, new C(0, nInheritedC_++, init)) #define INHERITED_C2(name, C, init1, init2) \ installInheritedC(name, new C(0, nInheritedC_++, init1, init2)) #define STORE_INHERITED_C2(var, name, C, init1, init2) \ { InheritedC *ic = new C(0, nInheritedC_++, init1, init2); \ installInheritedC(name, ic); \ var = ic; } #define IGNORED_C(name, init) INHERITED_C2(name, IgnoredC, init, *this) static StyleObj *makeBorderStyle(bool b, unsigned index, Interpreter &interp) { Vector > forceSpecs; Vector > specs; specs.push_back( new GenericBoolInheritedC(interp.lookup(interp.makeStringC("border-present?")), index, &FOTBuilder::setBorderPresent, b)); StyleObj *style = new (interp) VarStyleObj(new StyleSpec(forceSpecs, specs), 0, 0, NodePtr()); interp.makePermanent(style); return style; } void Interpreter::installInheritedCs() { INHERITED_C("font-size", FontSizeC, (unitsPerInch()*10)/72); INHERITED_C("font-family-name", FontFamilyNameC, makeStringC("iso-serif")); INHERITED_C2("font-weight", GenericSymbolInheritedC, &FOTBuilder::setFontWeight, FOTBuilder::symbolMedium); INHERITED_C2("font-posture", GenericSymbolInheritedC, &FOTBuilder::setFontPosture, FOTBuilder::symbolUpright); INHERITED_C2("quadding", GenericSymbolInheritedC, &FOTBuilder::setQuadding, FOTBuilder::symbolStart); INHERITED_C2("display-alignment", GenericSymbolInheritedC, &FOTBuilder::setDisplayAlignment, FOTBuilder::symbolStart); INHERITED_C2("field-align", GenericSymbolInheritedC, &FOTBuilder::setFieldAlign, FOTBuilder::symbolStart); INHERITED_C2("lines", GenericSymbolInheritedC, &FOTBuilder::setLines, FOTBuilder::symbolWrap); INHERITED_C("start-indent", GenericLengthSpecInheritedC, &FOTBuilder::setStartIndent); INHERITED_C("first-line-start-indent", GenericLengthSpecInheritedC, &FOTBuilder::setFirstLineStartIndent); INHERITED_C("end-indent", GenericLengthSpecInheritedC, &FOTBuilder::setEndIndent); INHERITED_C("last-line-end-indent", GenericLengthSpecInheritedC, &FOTBuilder::setLastLineEndIndent); INHERITED_C2("line-spacing", GenericLengthSpecInheritedC, &FOTBuilder::setLineSpacing, unitsPerInch()*12/72); INHERITED_C("field-width", GenericLengthSpecInheritedC, &FOTBuilder::setFieldWidth); INHERITED_C("left-margin", GenericLengthInheritedC, &FOTBuilder::setLeftMargin); INHERITED_C("right-margin", GenericLengthInheritedC, &FOTBuilder::setRightMargin); INHERITED_C("top-margin", GenericLengthInheritedC, &FOTBuilder::setTopMargin); INHERITED_C("bottom-margin", GenericLengthInheritedC, &FOTBuilder::setBottomMargin); INHERITED_C("header-margin", GenericLengthInheritedC, &FOTBuilder::setHeaderMargin); INHERITED_C("footer-margin", GenericLengthInheritedC, &FOTBuilder::setFooterMargin); INHERITED_C2("page-width", GenericLengthInheritedC, &FOTBuilder::setPageWidth, unitsPerInch()*8 + unitsPerInch()/2); INHERITED_C2("page-height", GenericLengthInheritedC, &FOTBuilder::setPageHeight, unitsPerInch()*11); INHERITED_C2("color", ColorC, new (*this) DeviceRGBColorObj(0, 0, 0), *this); INHERITED_C2("background-color", BackgroundColorC, 0, *this); INHERITED_C2("border-present?", GenericBoolInheritedC, &FOTBuilder::setBorderPresent, 1); borderTrueStyle_ = makeBorderStyle(1, nInheritedC_ - 1, *this); borderFalseStyle_ = makeBorderStyle(0, nInheritedC_ - 1, *this); STORE_INHERITED_C2(tableBorderC_, "table-border", BorderC, makeFalse(), *this); STORE_INHERITED_C2(cellBeforeRowBorderC_, "cell-before-row-border", BorderC, makeFalse(), *this); STORE_INHERITED_C2(cellAfterRowBorderC_, "cell-after-row-border", BorderC, makeFalse(), *this); STORE_INHERITED_C2(cellBeforeColumnBorderC_, "cell-before-column-border", BorderC, makeFalse(), *this); STORE_INHERITED_C2(cellAfterColumnBorderC_, "cell-after-column-border", BorderC, makeFalse(), *this); STORE_INHERITED_C2(fractionBarC_, "fraction-bar", RuleC, lookup(makeStringC("rule"))->flowObj(), *this); INHERITED_C2("line-thickness", GenericLengthInheritedC, &FOTBuilder::setLineThickness, unitsPerInch()/72); INHERITED_C2("cell-before-row-margin", GenericLengthInheritedC, &FOTBuilder::setCellBeforeRowMargin, 0); INHERITED_C2("cell-after-row-margin", GenericLengthInheritedC, &FOTBuilder::setCellAfterRowMargin, 0); INHERITED_C2("cell-before-column-margin", GenericLengthInheritedC, &FOTBuilder::setCellBeforeColumnMargin, 0); INHERITED_C2("cell-after-column-margin", GenericLengthInheritedC, &FOTBuilder::setCellAfterColumnMargin, 0); INHERITED_C2("line-sep", GenericLengthInheritedC, &FOTBuilder::setLineSep, unitsPerInch()/72); INHERITED_C2("box-size-before", GenericLengthInheritedC, &FOTBuilder::setBoxSizeBefore, 8*unitsPerInch()/72); INHERITED_C2("box-size-after", GenericLengthInheritedC, &FOTBuilder::setBoxSizeAfter, 4*unitsPerInch()/72); INHERITED_C2("position-point-shift", GenericLengthSpecInheritedC, &FOTBuilder::setPositionPointShift, 0); INHERITED_C2("start-margin", GenericLengthSpecInheritedC, &FOTBuilder::setStartMargin, 0); INHERITED_C2("end-margin", GenericLengthSpecInheritedC, &FOTBuilder::setEndMargin, 0); INHERITED_C2("sideline-sep", GenericLengthSpecInheritedC, &FOTBuilder::setSidelineSep, 4*unitsPerInch()/72); INHERITED_C2("asis-wrap-indent", GenericLengthSpecInheritedC, &FOTBuilder::setAsisWrapIndent, 0); INHERITED_C2("line-number-sep", GenericLengthSpecInheritedC, &FOTBuilder::setLineNumberSep, 0); INHERITED_C2("last-line-justify-limit", GenericLengthSpecInheritedC, &FOTBuilder::setLastLineJustifyLimit, 0); INHERITED_C2("justify-glyph-space-max-add", GenericLengthSpecInheritedC, &FOTBuilder::setJustifyGlyphSpaceMaxAdd, 0); INHERITED_C2("justify-glyph-space-max-remove", GenericLengthSpecInheritedC, &FOTBuilder::setJustifyGlyphSpaceMaxRemove, 0); INHERITED_C2("table-corner-radius", GenericLengthSpecInheritedC, &FOTBuilder::setTableCornerRadius, 3*unitsPerInch()/72); INHERITED_C2("box-corner-radius", GenericLengthSpecInheritedC, &FOTBuilder::setBoxCornerRadius, 3*unitsPerInch()/72); INHERITED_C2("marginalia-sep", GenericLengthSpecInheritedC, &FOTBuilder::setMarginaliaSep, 0); INHERITED_C2("inhibit-line-breaks?", GenericBoolInheritedC, &FOTBuilder::setInhibitLineBreaks, 0); INHERITED_C2("hyphenate?", GenericBoolInheritedC, &FOTBuilder::setHyphenate, 0); INHERITED_C2("kern?", GenericBoolInheritedC, &FOTBuilder::setKern, 0); INHERITED_C2("ligature?", GenericBoolInheritedC, &FOTBuilder::setLigature, 0); INHERITED_C2("score-spaces?", GenericBoolInheritedC, &FOTBuilder::setScoreSpaces, 0); INHERITED_C2("float-out-sidelines?", GenericBoolInheritedC, &FOTBuilder::setFloatOutSidelines, 0); INHERITED_C2("float-out-marginalia?", GenericBoolInheritedC, &FOTBuilder::setFloatOutMarginalia, 0); INHERITED_C2("float-out-line-numbers?", GenericBoolInheritedC, &FOTBuilder::setFloatOutLineNumbers, 0); INHERITED_C2("cell-background?", GenericBoolInheritedC, &FOTBuilder::setCellBackground, 0); INHERITED_C2("span-weak?", GenericBoolInheritedC, &FOTBuilder::setSpanWeak, 0); INHERITED_C2("ignore-record-end?", GenericBoolInheritedC, &FOTBuilder::setIgnoreRecordEnd, 0); INHERITED_C2("numbered-lines?", GenericBoolInheritedC, &FOTBuilder::setNumberedLines, 1); INHERITED_C2("hanging-punct?", GenericBoolInheritedC, &FOTBuilder::setHangingPunct, 0); INHERITED_C2("box-open-end?", GenericBoolInheritedC, &FOTBuilder::setBoxOpenEnd, 0); INHERITED_C2("truncate-leader?", GenericBoolInheritedC, &FOTBuilder::setTruncateLeader, 0); INHERITED_C2("align-leader?", GenericBoolInheritedC, &FOTBuilder::setAlignLeader, 1); INHERITED_C2("table-part-omit-middle-header?", GenericBoolInheritedC, &FOTBuilder::setTablePartOmitMiddleHeader, 0); INHERITED_C2("table-part-omit-middle-footer?", GenericBoolInheritedC, &FOTBuilder::setTablePartOmitMiddleFooter, 0); INHERITED_C2("border-omit-at-break?", GenericBoolInheritedC, &FOTBuilder::setBorderOmitAtBreak, 0); INHERITED_C2("principal-mode-simultaneous?", GenericBoolInheritedC, &FOTBuilder::setPrincipalModeSimultaneous, 0); INHERITED_C2("marginalia-keep-with-previous?", GenericBoolInheritedC, &FOTBuilder::setMarginaliaKeepWithPrevious, 0); INHERITED_C2("grid-equidistant-rows?", GenericBoolInheritedC, &FOTBuilder::setGridEquidistantRows, 0); INHERITED_C2("grid-equidistant-columns?", GenericBoolInheritedC, &FOTBuilder::setGridEquidistantColumns, 0); INHERITED_C2("line-join", GenericSymbolInheritedC, &FOTBuilder::setLineJoin, FOTBuilder::symbolMiter); INHERITED_C2("line-cap", GenericSymbolInheritedC, &FOTBuilder::setLineCap, FOTBuilder::symbolButt); INHERITED_C2("line-number-side", GenericSymbolInheritedC, &FOTBuilder::setLineNumberSide, FOTBuilder::symbolStart); INHERITED_C2("kern-mode", GenericSymbolInheritedC, &FOTBuilder::setKernMode, FOTBuilder::symbolNormal); INHERITED_C2("input-whitespace-treatment", GenericSymbolInheritedC, &FOTBuilder::setInputWhitespaceTreatment, FOTBuilder::symbolPreserve); INHERITED_C2("filling-direction", GenericSymbolInheritedC, &FOTBuilder::setFillingDirection, FOTBuilder::symbolTopToBottom ); INHERITED_C2("writing-mode", GenericSymbolInheritedC, &FOTBuilder::setWritingMode, FOTBuilder::symbolLeftToRight ); INHERITED_C2("last-line-quadding", GenericSymbolInheritedC, &FOTBuilder::setLastLineQuadding, FOTBuilder::symbolRelative); INHERITED_C2("math-display-mode", GenericSymbolInheritedC, &FOTBuilder::setMathDisplayMode, FOTBuilder::symbolDisplay); INHERITED_C2("script-pre-align", GenericSymbolInheritedC, &FOTBuilder::setScriptPreAlign, FOTBuilder::symbolIndependent); INHERITED_C2("script-post-align", GenericSymbolInheritedC, &FOTBuilder::setScriptPostAlign, FOTBuilder::symbolIndependent); INHERITED_C2("script-mid-sup-align", GenericSymbolInheritedC, &FOTBuilder::setScriptMidSupAlign, FOTBuilder::symbolCenter); INHERITED_C2("script-mid-sub-align", GenericSymbolInheritedC, &FOTBuilder::setScriptMidSubAlign, FOTBuilder::symbolCenter); INHERITED_C2("numerator-align", GenericSymbolInheritedC, &FOTBuilder::setNumeratorAlign, FOTBuilder::symbolCenter); INHERITED_C2("denominator-align", GenericSymbolInheritedC, &FOTBuilder::setDenominatorAlign, FOTBuilder::symbolCenter); INHERITED_C2("grid-position-cell-type", GenericSymbolInheritedC, &FOTBuilder::setGridPositionCellType, FOTBuilder::symbolRowMajor); INHERITED_C2("grid-column-alignment", GenericSymbolInheritedC, &FOTBuilder::setGridColumnAlignment, FOTBuilder::symbolCenter); INHERITED_C2("grid-row-alignment", GenericSymbolInheritedC, &FOTBuilder::setGridRowAlignment, FOTBuilder::symbolCenter); INHERITED_C2("box-type", GenericSymbolInheritedC, &FOTBuilder::setBoxType, FOTBuilder::symbolBorder); INHERITED_C2("glyph-alignment-mode", GenericSymbolInheritedC, &FOTBuilder::setGlyphAlignmentMode, FOTBuilder::symbolFont); INHERITED_C2("box-border-alignment", GenericSymbolInheritedC, &FOTBuilder::setBoxBorderAlignment, FOTBuilder::symbolOutside); INHERITED_C2("cell-row-alignment", GenericSymbolInheritedC, &FOTBuilder::setCellRowAlignment, FOTBuilder::symbolStart); INHERITED_C2("border-alignment", GenericSymbolInheritedC, &FOTBuilder::setBorderAlignment, FOTBuilder::symbolCenter); INHERITED_C2("sideline-side", GenericSymbolInheritedC, &FOTBuilder::setSidelineSide, FOTBuilder::symbolStart); INHERITED_C2("hyphenation-keep", GenericSymbolInheritedC, &FOTBuilder::setHyphenationKeep, FOTBuilder::symbolFalse); INHERITED_C2("font-structure", GenericSymbolInheritedC, &FOTBuilder::setFontStructure, FOTBuilder::symbolSolid); INHERITED_C2("font-proportionate-width", GenericSymbolInheritedC, &FOTBuilder::setFontProportionateWidth, FOTBuilder::symbolMedium); INHERITED_C2("cell-crossed", GenericSymbolInheritedC, &FOTBuilder::setCellCrossed, FOTBuilder::symbolFalse); INHERITED_C2("marginalia-side", GenericSymbolInheritedC, &FOTBuilder::setMarginaliaSide, FOTBuilder::symbolStart); INHERITED_C2("layer", GenericIntegerInheritedC, &FOTBuilder::setLayer, 0); INHERITED_C2("background-layer", GenericIntegerInheritedC, &FOTBuilder::setBackgroundLayer, -1); INHERITED_C2("border-priority", GenericIntegerInheritedC, &FOTBuilder::setBorderPriority, 0); INHERITED_C2("line-repeat", GenericIntegerInheritedC, &FOTBuilder::setLineRepeat, 1); INHERITED_C2("span", GenericIntegerInheritedC, &FOTBuilder::setSpan, 1); INHERITED_C2("min-leader-repeat", GenericIntegerInheritedC, &FOTBuilder::setMinLeaderRepeat, 1); INHERITED_C2("hyphenation-remain-char-count", GenericIntegerInheritedC, &FOTBuilder::setHyphenationRemainCharCount, 2); INHERITED_C2("hyphenation-push-char-count", GenericIntegerInheritedC, &FOTBuilder::setHyphenationPushCharCount, 2); INHERITED_C2("widow-count", GenericIntegerInheritedC, &FOTBuilder::setWidowCount, 2); INHERITED_C2("orphan-count", GenericIntegerInheritedC, &FOTBuilder::setOrphanCount, 2); // #f or strictly positive integer INHERITED_C2("expand-tabs?", GenericMaybeIntegerInheritedC, &FOTBuilder::setExpandTabs, 8); INHERITED_C2("hyphenation-ladder-count", GenericMaybeIntegerInheritedC, &FOTBuilder::setHyphenationLadderCount, 0); INHERITED_C("background-tile", GenericPublicIdInheritedC, &FOTBuilder::setBackgroundTile); INHERITED_C("line-breaking-method", GenericPublicIdInheritedC, &FOTBuilder::setLineBreakingMethod); INHERITED_C("line-composition-method", GenericPublicIdInheritedC, &FOTBuilder::setLineCompositionMethod); INHERITED_C("implicit-bidi-method", GenericPublicIdInheritedC, &FOTBuilder::setImplicitBidiMethod); INHERITED_C("glyph-subst-method", GenericPublicIdInheritedC, &FOTBuilder::setGlyphSubstMethod); INHERITED_C("glyph-reorder-method", GenericPublicIdInheritedC, &FOTBuilder::setGlyphReorderMethod); INHERITED_C("hyphenation-method", GenericPublicIdInheritedC, &FOTBuilder::setHyphenationMethod); INHERITED_C("table-auto-width-method", GenericPublicIdInheritedC, &FOTBuilder::setTableAutoWidthMethod); INHERITED_C("font-name", GenericPublicIdInheritedC, &FOTBuilder::setFontName); // 2 letter symbol or #f INHERITED_C("language", GenericLetter2InheritedC, &FOTBuilder::setLanguage); INHERITED_C("country", GenericLetter2InheritedC, &FOTBuilder::setCountry); // Ignored characteristics ELObjDynamicRoot length0(*this, new (*this) LengthObj(0)); // #f or length-spec INHERITED_C("min-pre-line-spacing", GenericOptLengthSpecInheritedC, &FOTBuilder::setMinPreLineSpacing); INHERITED_C("min-post-line-spacing", GenericOptLengthSpecInheritedC, &FOTBuilder::setMinPostLineSpacing); INHERITED_C("min-leading", GenericOptLengthSpecInheritedC, &FOTBuilder::setMinLeading); // inline spaces INHERITED_C("escapement-space-before", GenericInlineSpaceInheritedC, &FOTBuilder::setEscapementSpaceBefore); INHERITED_C("escapement-space-after", GenericInlineSpaceInheritedC, &FOTBuilder::setEscapementSpaceAfter); // #f or glyph-subst-table INHERITED_C("glyph-subst-table", GlyphSubstTableC, 0); // #f or inline-space INHERITED_C("inline-space-space", GenericOptInlineSpaceInheritedC, &FOTBuilder::setInlineSpaceSpace); // integers // float IGNORED_C("line-miter-limit", makeInteger(10)); // #f or percentage IGNORED_C("alignment-point-offset", makeInteger(50)); // char IGNORED_C("hyphenation-char", new (*this) CharObj('-')); // char or #f IGNORED_C("asis-truncate-char", makeFalse()); IGNORED_C("asis-wrap-char", makeFalse()); // #f, #t or char IGNORED_C("first-line-align", makeFalse()); // list of strings IGNORED_C("hyphenation-exceptions", makeNil()); // set of corners IGNORED_C("box-corner-rounded", makeFalse()); IGNORED_C("table-corner-rounded", makeFalse()); // list of lengths IGNORED_C("line-dash", new (*this) PairObj(length0, makeNil())); // list of glyphs/chars IGNORED_C("allowed-ligatures", makeNil()); // #f or sosofo IGNORED_C("line-number", makeFalse()); // integer or 'force IGNORED_C("line-spacing-priority", makeInteger(0)); // procedure or #f IGNORED_C("char-map", makeFalse()); } void Interpreter::installInheritedC(const char *s, InheritedC *ic) { StringC name(makeStringC(s)); Identifier *ident = lookup(name); ic->setIdentifier(ident); ident->setInheritedC(ic); installInheritedCProc(ident); if (dsssl2() && name.size() && name[name.size() - 1] == '?') { name.resize(name.size() - 1); Identifier *ident2 = lookup(name); ASSERT(ident2->inheritedC().isNull()); ident2->setInheritedC(ic); installInheritedCProc(ident2); } } void Interpreter::installExtensionInheritedC(Identifier *ident, const StringC &pubid, const Location &loc) { ConstPtr ic; if (pubid.size() != 0 && extensionTable_) { for (const FOTBuilder::Extension *ep = extensionTable_; ep->pubid; ep++) { if (pubid == ep->pubid) { if (ep->boolSetter) ic = new ExtensionBoolInheritedC(ident, nInheritedC_++, ep->boolSetter); else if (ep->stringSetter) ic = new ExtensionStringInheritedC(ident, nInheritedC_++, ep->stringSetter); else if (ep->integerSetter) ic = new ExtensionIntegerInheritedC(ident, nInheritedC_++, ep->integerSetter); else if (ep->lengthSetter) ic = new ExtensionLengthInheritedC(ident, nInheritedC_++, ep->lengthSetter); break; } } } if (ic.isNull()) // FIXME should call FOTBuilder with PublicId argument ic = new IgnoredC(ident, nInheritedC_++, makeFalse(), *this); ident->setInheritedC(ic, currentPartIndex(), loc); installInheritedCProc(ident); } void Interpreter::installInheritedCProc(const Identifier *ident) { const ConstPtr &ic = ident->inheritedC(); StringC tem(makeStringC("inherited-")); tem += ident->name(); Identifier *inhIdent = lookup(tem); PrimitiveObj *prim = new (*this) InheritedCPrimitiveObj(ic); makePermanent(prim); prim->setIdentifier(inhIdent); inhIdent->setValue(prim); tem = makeStringC("actual-"); tem += ident->name(); Identifier *actIdent = lookup(tem); prim = new (*this) ActualCPrimitiveObj(ic); makePermanent(prim); prim->setIdentifier(actIdent); actIdent->setValue(prim); } #ifdef DSSSL_NAMESPACE } #endif openjade-1.3.2/style/Insn.cxx0100664000076400007640000010205006755077551014227 0ustar ianian// Copyright (c) 1996 James Clark // See the file copying.txt for copying permission. #include "stylelib.h" #include "VM.h" #include "Insn.h" #include "Interpreter.h" #include "InterpreterMessages.h" #include "ELObjMessageArg.h" #include "Expression.h" #include "macros.h" #include "Insn2.h" #include "SosofoObj.h" #include "Node.h" #include "ELObjPropVal.h" #include #include #include #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif VM::VM(Interpreter &interpreter) : Collector::DynamicRoot(interpreter), interp(&interpreter) { init(); } VM::VM(EvalContext &context, Interpreter &interpreter) : EvalContext(context), Collector::DynamicRoot(interpreter), interp(&interpreter) { init(); } void VM::init() { slim = 0; sbase = 0; sp = 0; closure = 0; frame = 0; protectClosure = 0; csp = 0; cslim = 0; csbase = 0; closureLoc.clear(); } VM::~VM() { delete [] sbase; delete [] csbase; } void VM::initStack() { sp = sbase; frame = sbase; csp = csbase; modeStack.resize(0); } void VM::growStack(int n) { size_t newSize = sp - sbase; if (n > newSize) newSize += (n + 15) & ~15; else newSize += newSize; ELObj **newStack = new ELObj *[newSize]; slim = newStack + newSize; memcpy(newStack, sbase, (sp - sbase)*sizeof(ELObj *)); sp = newStack + (sp - sbase); frame = newStack + (frame - sbase); if (sbase) delete [] sbase; sbase = newStack; } void VM::trace(Collector &c) const { if (sp) { for (ELObj **p = sbase; p != sp; p++) c.trace(*p); } for (ControlStackEntry *p = csbase; p != csp; p++) { c.trace(p->protectClosure); c.trace(p->continuation); } c.trace(protectClosure); } void VM::pushFrame(const Insn *next, int argsPushed) { if (csp >= cslim) { size_t newSize = csbase ? (cslim - csbase)*2 : 8; ControlStackEntry *newBase = new ControlStackEntry[newSize]; cslim = newBase + newSize; ControlStackEntry *newP = newBase; for (const ControlStackEntry *oldP = csbase; oldP < csp; oldP++) *newP++ = *oldP; csp = newP; if (csbase) delete [] csbase; csbase = newBase; } csp->closure = closure; csp->protectClosure = protectClosure; csp->next = next; csp->frameSize = sp - frame - argsPushed; csp->closureLoc = closureLoc; csp->continuation = 0; csp++; } const Insn *VM::popFrame() { ASSERT(csp > csbase); --csp; if (csp->continuation) csp->continuation->kill(); closure = csp->closure; protectClosure = csp->protectClosure; frame = sp - csp->frameSize; closureLoc = csp->closureLoc; return csp->next; } void VM::setClosureArgToCC() { ASSERT(nActualArgs == 1); ContinuationObj *cc = (ContinuationObj *)sp[-1]; csp[-1].continuation = cc; cc->set(sp - sbase, csp - csbase); } ELObj *VM::eval(const Insn *insn, ELObj **display, ELObj *arg) { initStack(); if (arg) { needStack(1); *sp++ = arg; } closure = display; protectClosure = 0; closureLoc.clear(); // The inner loop. while (insn) insn = insn->execute(*this); ELObj *result; if (sp) { sp--; ASSERT(sp == sbase); ASSERT(csp == csbase); result = *sp; ASSERT(result != 0); } else { if (interp->debugMode()) stackTrace(); result = interp->makeError(); } return result; } void VM::stackTrace() { unsigned long count = 0; if (protectClosure) { interp->setNextLocation(closureLoc); interp->message(InterpreterMessages::stackTrace); count++; } ControlStackEntry *lim = csbase; if (csp != csbase && !csbase->protectClosure) lim++; for (ControlStackEntry *p = csp; p != lim; p--) { interp->setNextLocation(p[-1].closureLoc); count++; if (count == 5 && p - lim > 7) { interp->message(InterpreterMessages::stackTraceEllipsis, NumberMessageArg(p - (lim + 6))); p = lim + 6; } else interp->message(InterpreterMessages::stackTrace); } } Insn::~Insn() { } bool Insn::isReturn(int &) const { return false; } bool Insn::isPopBindings(int &, InsnPtr &) const { return false; } const Insn *ErrorInsn::execute(VM &vm) const { vm.sp = 0; return 0; } CondFailInsn::CondFailInsn(const Location &loc) : loc_(loc) { } const Insn *CondFailInsn::execute(VM &vm) const { vm.interp->setNextLocation(loc_); vm.interp->message(InterpreterMessages::condFail); return ErrorInsn::execute(vm); } CaseFailInsn::CaseFailInsn(const Location &loc) : loc_(loc) { } const Insn *CaseFailInsn::execute(VM &vm) const { vm.interp->setNextLocation(loc_); vm.interp->message(InterpreterMessages::caseFail, ELObjMessageArg(vm.sp[-1], *vm.interp)); return ErrorInsn::execute(vm); } ConstantInsn::ConstantInsn(ELObj *obj, InsnPtr next) : value_(obj), next_(next) { } const Insn *ConstantInsn::execute(VM &vm) const { vm.needStack(1); *vm.sp++ = value_; return next_.pointer(); } ResolveQuantitiesInsn::ResolveQuantitiesInsn(const Location &loc, InsnPtr next) : loc_(loc), next_(next) { } const Insn *ResolveQuantitiesInsn::execute(VM &vm) const { ELObj *tem = vm.sp[-1]->resolveQuantities(1, *vm.interp, loc_); ASSERT(tem != 0); if (vm.interp->isError(tem)) { vm.sp = 0; return 0; } vm.sp[-1] = tem; return next_.pointer(); } TestInsn::TestInsn(InsnPtr consequent, InsnPtr alternative) : consequent_(consequent), alternative_(alternative) { } const Insn *TestInsn::execute(VM &vm) const { return (*--vm.sp)->isTrue() ? consequent_.pointer() : alternative_.pointer(); } OrInsn::OrInsn(InsnPtr nextTest, InsnPtr next) : nextTest_(nextTest), next_(next) { } const Insn *OrInsn::execute(VM &vm) const { if (vm.sp[-1]->isTrue()) return next_.pointer(); --vm.sp; return nextTest_.pointer(); } AndInsn::AndInsn(InsnPtr nextTest, InsnPtr next) : nextTest_(nextTest), next_(next) { } const Insn *AndInsn::execute(VM &vm) const { if (!vm.sp[-1]->isTrue()) return next_.pointer(); --vm.sp; return nextTest_.pointer(); } CaseInsn::CaseInsn(ELObj *obj, InsnPtr match, InsnPtr fail) : obj_(obj), match_(match), fail_(fail) { } const Insn *CaseInsn::execute(VM &vm) const { if (ELObj::eqv(*vm.sp[-1], *obj_)) { --vm.sp; return match_.pointer(); } return fail_.pointer(); } PopInsn::PopInsn(InsnPtr next) : next_(next) { } const Insn *PopInsn::execute(VM &vm) const { --vm.sp; return next_.pointer(); } ConsInsn::ConsInsn(InsnPtr next) : next_(next) { } const Insn *ConsInsn::execute(VM &vm) const { vm.sp[-2] = vm.interp->makePair(vm.sp[-1], vm.sp[-2]); --vm.sp; return next_.pointer(); } AppendInsn:: AppendInsn(const Location &loc, InsnPtr next) : loc_(loc), next_(next) { } const Insn *AppendInsn::execute(VM &vm) const { ELObj *&source = vm.sp[-1]; if (!source->isNil()) { PairObj *pair = source->asPair(); if (!pair) { vm.interp->setNextLocation(loc_); vm.interp->message(InterpreterMessages::spliceNotList); vm.sp = 0; return 0; } source = pair->cdr(); PairObj *tail = vm.interp->makePair(pair->car(), 0); ELObjDynamicRoot head(*vm.interp, tail); while (!source->isNil()) { pair = source->asPair(); if (!pair) { vm.interp->setNextLocation(loc_); vm.interp->message(InterpreterMessages::spliceNotList); vm.sp = 0; return 0; } PairObj *newTail = vm.interp->makePair(pair->car(), 0); tail->setCdr(newTail); tail = newTail; source = pair->cdr(); } tail->setCdr(vm.sp[-2]); vm.sp[-2] = head; } --vm.sp; return next_.pointer(); } ApplyBaseInsn::ApplyBaseInsn(int nArgs, const Location &loc) : nArgs_(nArgs), loc_(loc) { } ApplyInsn::ApplyInsn(int nArgs, const Location &loc, InsnPtr next) : ApplyBaseInsn(nArgs, loc), next_(next) { } TailApplyInsn::TailApplyInsn(int nCallerArgs, int nArgs, const Location &loc) : ApplyBaseInsn(nArgs, loc), nCallerArgs_(nCallerArgs) { } // top of stack is operand; next down is last operand and so on FunctionObj *ApplyBaseInsn::decodeArgs(VM &vm) const { FunctionObj *func = (*--vm.sp)->asFunction(); if (!func) { vm.interp->setNextLocation(loc_); vm.interp->message(InterpreterMessages::callNonFunction, ELObjMessageArg(*vm.sp, *vm.interp)); vm.sp = 0; return 0; } int nReq = func->nRequiredArgs(); if (nArgs_ < nReq) { vm.interp->setNextLocation(loc_); vm.interp->message(InterpreterMessages::missingArg); vm.sp = 0; return 0; } if (nArgs_ - nReq > func->nOptionalArgs()) { if (func->nKeyArgs()) { // Keyword args can be specified more than once // so we can only check there are an even number. if ((nArgs_ - nReq - func->nOptionalArgs()) & 1) { vm.interp->setNextLocation(loc_); vm.interp->message(InterpreterMessages::oddKeyArgs); vm.sp -= (nArgs_ - nReq) - func->nOptionalArgs(); } } else if (!func->restArg()) { vm.interp->setNextLocation(loc_); vm.interp->message(InterpreterMessages::tooManyArgs); vm.sp -= (nArgs_ - nReq) - func->nOptionalArgs(); } } return func; } const Insn *ApplyInsn::execute(VM &vm) const { FunctionObj *func = decodeArgs(vm); vm.nActualArgs = nArgs_; if (func) return func->call(vm, loc_, next_.pointer()); else return 0; } const Insn *TailApplyInsn::execute(VM &vm) const { FunctionObj *func = decodeArgs(vm); vm.nActualArgs = nArgs_; if (func) return func->tailCall(vm, loc_, nCallerArgs_); else return 0; } ApplyPrimitiveObj::ApplyPrimitiveObj() : FunctionObj(&signature_) { } const Signature ApplyPrimitiveObj::signature_ = { 2, 0, 1 }; const Insn *ApplyPrimitiveObj::call(VM &vm, const Location &loc, const Insn *next) { if (!shuffle(vm, loc)) return 0; ApplyInsn insn(vm.nActualArgs, loc, (Insn *)next); return insn.execute(vm); } bool ApplyPrimitiveObj::shuffle(VM &vm, const Location &loc) { int nArgs = vm.nActualArgs; ELObj *func = vm.sp[-nArgs]; for (int i = nArgs - 2; i > 0; i--) vm.sp[-i - 2] = vm.sp[-i - 1]; vm.nActualArgs = nArgs - 2; ELObj *list = *--vm.sp; --vm.sp; while (!list->isNil()) { PairObj *tem = list->asPair(); if (!tem) { vm.interp->setNextLocation(loc); vm.interp->message(InterpreterMessages::notAList, StringMessageArg(vm.interp->makeStringC("apply")), OrdinalMessageArg(nArgs), ELObjMessageArg(list, *vm.interp)); vm.sp = 0; return 0; } vm.needStack(1); vm.nActualArgs++; *vm.sp++ = tem->car(); list = tem->cdr(); } vm.needStack(1); *vm.sp++ = func; return 1; } const Insn *ApplyPrimitiveObj::tailCall(VM &vm, const Location &loc, int nCallerArgs) { if (!shuffle(vm, loc)) return 0; TailApplyInsn insn(nCallerArgs, vm.nActualArgs, loc); return insn.execute(vm); } PrimitiveCallInsn::PrimitiveCallInsn(int nArgs, PrimitiveObj *prim, const Location &loc, InsnPtr next) : nArgs_(nArgs), prim_(prim), loc_(loc), next_(next) { } const Insn *PrimitiveCallInsn::execute(VM &vm) const { if (nArgs_ == 0) vm.needStack(1); ELObj **argp = vm.sp - nArgs_; *argp = prim_->primitiveCall(nArgs_, argp, vm, *vm.interp, loc_); ASSERT(vm.interp->objectMaybeLive(*argp)); vm.sp = argp + 1; if (vm.interp->isError(*argp)) { vm.sp = 0; return 0; } else return next_.pointer(); } InsnPtr FunctionObj::makeCallInsn(int nArgs, Interpreter &, const Location &loc, InsnPtr next) { return new FunctionCallInsn(nArgs, this, loc, next); } InsnPtr FunctionObj::makeTailCallInsn(int nArgs, Interpreter &, const Location &loc, int nCallerArgs) { return new FunctionTailCallInsn(nArgs, this, loc, nCallerArgs); } FunctionObj *FunctionObj::asFunction() { return this; } void FunctionObj::setArgToCC(VM &) { } const Insn *PrimitiveObj::call(VM &vm, const Location &loc, const Insn *next) { if (vm.nActualArgs == 0) vm.needStack(1); ELObj **argp = vm.sp - vm.nActualArgs; *argp = primitiveCall(vm.nActualArgs, argp, vm, *vm.interp, loc); vm.sp = argp + 1; if (vm.interp->isError(*argp)) { vm.sp = 0; return 0; } else return next; } const Insn *PrimitiveObj::tailCall(VM &vm, const Location &loc, int nCallerArgs) { ELObj **argp = vm.sp - vm.nActualArgs; ELObj *result = primitiveCall(vm.nActualArgs, argp, vm, *vm.interp, loc); if (vm.interp->isError(result)) { vm.sp = 0; return 0; } else { vm.sp = argp - nCallerArgs; const Insn *next = vm.popFrame(); vm.needStack(1); *vm.sp++ = result; return next; } } InsnPtr PrimitiveObj::makeCallInsn(int nArgs, Interpreter &interp, const Location &loc, InsnPtr next) { return new PrimitiveCallInsn(nArgs, this, loc, next); } ELObj *PrimitiveObj::argError(Interpreter &interp, const Location &loc, const MessageType3 &msg, unsigned index, ELObj *obj) const { NodeListObj *nl = obj->asNodeList(); if (!nl || !nl->suppressError()) { interp.setNextLocation(loc); interp.message(msg, StringMessageArg(ident_->name()), OrdinalMessageArg(index + 1), ELObjMessageArg(obj, interp)); } return interp.makeError(); } ELObj *PrimitiveObj::noCurrentNodeError(Interpreter &interp, const Location &loc) const { interp.setNextLocation(loc); interp.message(InterpreterMessages::noCurrentNode); return interp.makeError(); } ClosureInsn::ClosureInsn(const Signature *sig, InsnPtr code, int displayLength, InsnPtr next) : sig_(sig), code_(code), displayLength_(displayLength), next_(next) { } const Insn *ClosureInsn::execute(VM &vm) const { ELObj **display = displayLength_ ? new ELObj *[displayLength_ + 1] : 0; ELObj **tem = vm.sp - displayLength_; for (int i = 0; i < displayLength_; i++) display[i] = tem[i]; if (displayLength_ == 0) { vm.needStack(1); tem = vm.sp; } else display[displayLength_] = 0; // Make sure objects in display are still visible on the stack // to the garbage collector. *tem++ = new (*vm.interp) ClosureObj(sig_, code_, display); vm.sp = tem; return next_.pointer(); } FunctionCallInsn:: FunctionCallInsn(int nArgs, FunctionObj *function, const Location &loc, InsnPtr next) : nArgs_(nArgs), function_(function), loc_(loc), next_(next) { } const Insn *FunctionCallInsn::execute(VM &vm) const { vm.nActualArgs = nArgs_; return function_->call(vm, loc_, next_.pointer()); } FunctionTailCallInsn:: FunctionTailCallInsn(int nArgs, FunctionObj *function, const Location &loc, int nCallerArgs) : nArgs_(nArgs), function_(function), loc_(loc), nCallerArgs_(nCallerArgs) { } const Insn *FunctionTailCallInsn::execute(VM &vm) const { vm.nActualArgs = nArgs_; return function_->tailCall(vm, loc_, nCallerArgs_); } TestNullInsn::TestNullInsn(int offset, InsnPtr ifNull, InsnPtr ifNotNull) : offset_(offset), ifNull_(ifNull), ifNotNull_(ifNotNull) { } const Insn *TestNullInsn::execute(VM &vm) const { if (vm.sp[offset_] == 0) return ifNull_.pointer(); else return ifNotNull_.pointer(); } VarargsInsn::VarargsInsn(const Signature &sig, Vector &entryPoints, const Location &loc) : sig_(&sig), loc_(loc) { entryPoints.swap(entryPoints_); } const Insn *VarargsInsn::execute(VM &vm) const { int n = vm.nActualArgs - sig_->nRequiredArgs; if ((sig_->restArg || sig_->nKeyArgs) && n > entryPoints_.size() - 2) { // cons up the rest args ELObjDynamicRoot protect(*vm.interp, vm.interp->makeNil()); for (int i = n - (entryPoints_.size() - 2); i > 0; i--) { protect = new (*vm.interp) PairObj(vm.sp[-1], protect); --vm.sp; } vm.needStack(sig_->nKeyArgs + sig_->restArg); if (sig_->restArg) *vm.sp++ = protect; if (sig_->nKeyArgs) { for (int i = 0; i < sig_->nKeyArgs; i++) vm.sp[i] = 0; ELObj *tem = protect; for (int i = n - (entryPoints_.size() - 2); i > 0; i -= 2) { KeywordObj *k = ((PairObj *)tem)->car()->asKeyword(); tem = ((PairObj *)tem)->cdr(); if (k) { for (int j = 0; j < sig_->nKeyArgs; j++) if (sig_->keys[j] == k->identifier()) { if (vm.sp[j] == 0) vm.sp[j] = ((PairObj *)tem)->car(); k = 0; break; } if (k && !sig_->restArg) { vm.interp->setNextLocation(loc_); vm.interp->message(InterpreterMessages::invalidKeyArg, StringMessageArg(k->identifier()->name())); } } else { vm.interp->setNextLocation(loc_); vm.interp->message(InterpreterMessages::keyArgsNotKey); } tem = ((PairObj *)tem)->cdr(); } vm.sp += sig_->nKeyArgs; } return entryPoints_.back().pointer(); } return entryPoints_[n].pointer(); } SetKeyArgInsn::SetKeyArgInsn(int offset, InsnPtr next) : offset_(offset), next_(next) { } const Insn *SetKeyArgInsn::execute(VM &vm) const { ELObj *val = *--vm.sp; vm.sp[offset_] = val; return next_.pointer(); } ClosureObj::ClosureObj(const Signature *sig, InsnPtr code, ELObj **display) : FunctionObj(sig), code_(code), display_(display) { hasSubObjects_ = 1; } const Insn *ClosureObj::call(VM &vm, const Location &loc, const Insn *next) { vm.needStack(1); vm.pushFrame(next, vm.nActualArgs); vm.frame = vm.sp - vm.nActualArgs; vm.closure = display_; vm.protectClosure = this; vm.closureLoc = loc; return code_.pointer(); } const Insn *ClosureObj::tailCall(VM &vm, const Location &loc, int nCallerArgs) { vm.needStack(1); int nArgs = vm.nActualArgs; if (nCallerArgs) { ELObj **oldFrame = vm.sp - nArgs; ELObj **newFrame = oldFrame - nCallerArgs; for (int i = 0; i < nArgs; i++) newFrame[i] = oldFrame[i]; vm.frame = newFrame; vm.sp = newFrame + nArgs; } else vm.frame = vm.sp - nArgs; vm.closure = display_; vm.protectClosure = this; vm.closureLoc = loc; return code_.pointer(); } void ClosureObj::setArgToCC(VM &vm) { vm.setClosureArgToCC(); } void ClosureObj::traceSubObjects(Collector &c) const { if (display_) { for (ELObj **p = display_; *p; p++) c.trace(*p); } } const Signature ContinuationObj::signature_ = { 1, 0, 0 }; ContinuationObj::ContinuationObj() : FunctionObj(&signature_), controlStackSize_(0) { } const Insn *ContinuationObj::call(VM &vm, const Location &loc, const Insn *) { if (!live() || readOnly()) { vm.interp->setNextLocation(loc); vm.interp->message(InterpreterMessages::continuationDead); vm.sp = 0; return 0; } ELObj *result = vm.sp[-1]; ASSERT(vm.sp - vm.sbase >= stackSize_); ASSERT(vm.csp - vm.csbase >= controlStackSize_); ASSERT(vm.csbase[controlStackSize_ - 1].continuation == this); while (vm.csp - vm.csbase > controlStackSize_) { vm.csp--; if (vm.csp->continuation) vm.csp->continuation->kill(); } vm.sp = vm.sbase + stackSize_; --vm.sp; const Insn *next = vm.popFrame(); *vm.sp++ = result; return next; } const Insn *ContinuationObj::tailCall(VM &vm, const Location &loc, int nCallerArgs) { return call(vm, loc, 0); } ReturnInsn::ReturnInsn(int totalArgs) : totalArgs_(totalArgs) { } bool ReturnInsn::isReturn(int &nArgs) const { nArgs = totalArgs_; return true; } const Insn *ReturnInsn::execute(VM &vm) const { ELObj *result = *--vm.sp; vm.sp -= totalArgs_; const Insn *next = vm.popFrame(); *vm.sp++ = result; return next; } FrameRefInsn::FrameRefInsn(int index, InsnPtr next) : index_(index), next_(next) { } const Insn *FrameRefInsn::execute(VM &vm) const { vm.needStack(1); *vm.sp++ = vm.frame[index_]; return next_.pointer(); } StackRefInsn::StackRefInsn(int index, int frameIndex, InsnPtr next) : index_(index), frameIndex_(frameIndex), next_(next) { } const Insn *StackRefInsn::execute(VM &vm) const { vm.needStack(1); ASSERT(vm.sp - vm.frame == frameIndex_ - index_); *vm.sp = vm.sp[index_]; vm.sp += 1; return next_.pointer(); } ClosureRefInsn::ClosureRefInsn(int index, InsnPtr next) : index_(index), next_(next) { } const Insn *ClosureRefInsn::execute(VM &vm) const { vm.needStack(1); *vm.sp++ = vm.closure[index_]; return next_.pointer(); } TopRefInsn::TopRefInsn(const Identifier *var, InsnPtr next) : var_(var), next_(next) { } const Insn *TopRefInsn::execute(VM &vm) const { ELObj *tem = var_->computeValue(1, *vm.interp); if (vm.interp->isError(tem)) { vm.sp = 0; return 0; } else { vm.needStack(1); *vm.sp++ = tem; return next_.pointer(); } } ClosureSetBoxInsn::ClosureSetBoxInsn(int index, const Location &loc, InsnPtr next) : index_(index), loc_(loc), next_(next) { } const Insn *ClosureSetBoxInsn::execute(VM &vm) const { BoxObj *box = vm.closure[index_]->asBox(); ASSERT(box != 0); if (box->readOnly()) { vm.interp->setNextLocation(loc_); vm.interp->message(InterpreterMessages::readOnly); vm.sp = 0; return 0; } ELObj *tem = box->value; box->value = vm.sp[-1]; vm.sp[-1] = tem; return next_.pointer(); } StackSetBoxInsn::StackSetBoxInsn(int index, int frameIndex, const Location &loc, InsnPtr next) : index_(index), frameIndex_(frameIndex), loc_(loc), next_(next) { } const Insn *StackSetBoxInsn::execute(VM &vm) const { ASSERT(vm.sp - vm.frame == frameIndex_ - index_); BoxObj *box = vm.sp[index_]->asBox(); ASSERT(box != 0); if (box->readOnly()) { vm.interp->setNextLocation(loc_); vm.interp->message(InterpreterMessages::readOnly); vm.sp = 0; return 0; } ELObj *tem = box->value; box->value = vm.sp[-1]; vm.sp[-1] = tem; return next_.pointer(); } StackSetInsn::StackSetInsn(int index, int frameIndex, InsnPtr next) : index_(index), frameIndex_(frameIndex), next_(next) { } const Insn *StackSetInsn::execute(VM &vm) const { ASSERT(vm.sp - vm.frame == frameIndex_ - index_); ELObj *tem = vm.sp[index_]; vm.sp[index_] = vm.sp[-1]; vm.sp[-1] = tem; return next_.pointer(); } InsnPtr PopBindingsInsn::make(int n, InsnPtr next) { if (!next.isNull()) { int i; if (next->isReturn(i)) return new ReturnInsn(n + i); if (next->isPopBindings(i, next)) return new PopBindingsInsn(n + i, next); } return new PopBindingsInsn(n, next); } PopBindingsInsn::PopBindingsInsn(int n, InsnPtr next) : n_(n), next_(next) { } const Insn *PopBindingsInsn::execute(VM &vm) const { vm.sp -= n_; vm.sp[-1] = vm.sp[n_ - 1]; return next_.pointer(); } bool PopBindingsInsn::isPopBindings(int &n, InsnPtr &next) const { n = n_; next = next_; return true; } SetBoxInsn::SetBoxInsn(int n, InsnPtr next) : n_(n), next_(next) { } const Insn *SetBoxInsn::execute(VM &vm) const { --vm.sp; BoxObj *box = vm.sp[-n_]->asBox(); ASSERT(box != 0); box->value = *vm.sp; return next_.pointer(); } SetImmediateInsn::SetImmediateInsn(int n, InsnPtr next) : n_(n), next_(next) { } const Insn *SetImmediateInsn::execute(VM &vm) const { --vm.sp; vm.sp[-n_] = *vm.sp; return next_.pointer(); } CheckInitInsn::CheckInitInsn(const Identifier *ident, const Location &loc, InsnPtr next) : ident_(ident), loc_(loc), next_(next) { } const Insn *CheckInitInsn::execute(VM &vm) const { if (vm.sp[-1] == 0) { vm.interp->setNextLocation(loc_); vm.interp->message(InterpreterMessages::uninitializedVariableReference, StringMessageArg(ident_->name())); vm.sp = 0; return 0; } return next_.pointer(); } UnboxInsn::UnboxInsn(InsnPtr next) : next_(next) { } const Insn *UnboxInsn::execute(VM &vm) const { BoxObj *box = vm.sp[-1]->asBox(); ASSERT(box != 0); vm.sp[-1] = box->value; return next_.pointer(); } BoxInsn::BoxInsn(InsnPtr next) : next_(next) { } const Insn *BoxInsn::execute(VM &vm) const { vm.sp[-1] = new (*vm.interp) BoxObj(vm.sp[-1]); return next_.pointer(); } BoxArgInsn::BoxArgInsn(int n, InsnPtr next) : n_(n), next_(next) { } const Insn *BoxArgInsn::execute(VM &vm) const { ELObj *&arg = vm.sp[n_ - vm.nActualArgs]; arg = new (*vm.interp) BoxObj(arg); return next_.pointer(); } BoxStackInsn::BoxStackInsn(int n, InsnPtr next) : n_(n), next_(next) { } const Insn *BoxStackInsn::execute(VM &vm) const { vm.sp[n_] = new (*vm.interp) BoxObj(vm.sp[n_]); return next_.pointer(); } VectorInsn::VectorInsn(size_t n, InsnPtr next) : n_(n), next_(next) { } const Insn *VectorInsn::execute(VM &vm) const { if (n_ == 0) { vm.needStack(1); *vm.sp++ = new (*vm.interp) VectorObj; } else { Vector v(n_); ELObj **p = vm.sp; for (size_t n = n_; n > 0; n--) v[n - 1] = *--p; *p = new (*vm.interp) VectorObj(v); vm.sp = p + 1; } return next_.pointer(); } ListToVectorInsn::ListToVectorInsn(InsnPtr next) : next_(next) { } const Insn *ListToVectorInsn::execute(VM &vm) const { Vector v; ELObj *obj = vm.sp[-1]; while (!obj->isNil()) { PairObj *pair = obj->asPair(); ASSERT(pair != 0); v.push_back(pair->car()); obj = pair->cdr(); } vm.sp[-1] = new (*vm.interp) VectorObj(v); return next_.pointer(); } const Insn *CheckSosofoInsn::execute(VM &vm) const { if (!vm.sp[-1]->asSosofo()) { vm.sp = 0; vm.interp->setNextLocation(loc_); vm.interp->message(InterpreterMessages::sosofoContext); return 0; } return next_.pointer(); } const Insn *CheckStyleInsn::execute(VM &vm) const { if (!vm.sp[-1]->asStyle()) { vm.sp = 0; vm.interp->setNextLocation(loc_); vm.interp->message(InterpreterMessages::styleContext); return 0; } return next_.pointer(); } const Insn *PushModeInsn::execute(VM &vm) const { vm.modeStack.push_back(vm.processingMode); vm.processingMode = mode_; return next_.pointer(); } const Insn *PopModeInsn::execute(VM &vm) const { vm.processingMode = vm.modeStack.back(); vm.modeStack.resize(vm.modeStack.size() - 1); return next_.pointer(); } MaybeOverrideStyleInsn::MaybeOverrideStyleInsn(InsnPtr next) : next_(next) { } const Insn *MaybeOverrideStyleInsn::execute(VM &vm) const { if (vm.overridingStyle) vm.sp[-1] = new (*vm.interp) OverriddenStyleObj((BasicStyleObj *)vm.sp[-1], vm.overridingStyle); return next_.pointer(); } VarStyleInsn::VarStyleInsn(const ConstPtr &styleSpec, unsigned displayLength, bool hasUse, InsnPtr next) : styleSpec_(styleSpec), displayLength_(displayLength), hasUse_(hasUse), next_(next) { } const Insn *VarStyleInsn::execute(VM &vm) const { ELObj **display = displayLength_ ? new ELObj *[displayLength_ + 1] : 0; ELObj **tem = vm.sp - displayLength_; for (int i = 0; i < displayLength_; i++) display[i] = tem[i]; if (displayLength_ == 0) { vm.needStack(1); tem = vm.sp; } else display[displayLength_] = 0; // Make sure objects in display are still visible on the stack // to the garbage collector. StyleObj *use; if (hasUse_) use = (StyleObj *)*--tem; else use = 0; *tem++ = new (*vm.interp) VarStyleObj(styleSpec_, use, display, vm.currentNode); vm.sp = tem; vm.interp->makeReadOnly(tem[-1]); return next_.pointer(); } SetStyleInsn::SetStyleInsn(InsnPtr next) : next_(next) { } const Insn *SetStyleInsn::execute(VM &vm) const { ((FlowObj *)vm.sp[-2])->setStyle((StyleObj *)vm.sp[-1]); vm.sp--; return next_.pointer(); } SosofoAppendInsn::SosofoAppendInsn(size_t n, InsnPtr next) : n_(n), next_(next) { } const Insn *SosofoAppendInsn::execute(VM &vm) const { AppendSosofoObj *obj = new (*vm.interp) AppendSosofoObj; ELObj **tem = vm.sp - n_; for (size_t i = 0; i < n_; i++) { ASSERT(tem[i]->asSosofo() != 0); obj->append((SosofoObj *)tem[i]); } vm.sp -= n_ - 1; vm.sp[-1] = obj; return next_.pointer(); } CopyFlowObjInsn::CopyFlowObjInsn(FlowObj *flowObj, InsnPtr next) : flowObj_(flowObj), next_(next) { } const Insn *CopyFlowObjInsn::execute(VM &vm) const { vm.needStack(1); *vm.sp++ = flowObj_->copy(*vm.interp); return next_.pointer(); } SetNonInheritedCsSosofoInsn ::SetNonInheritedCsSosofoInsn(InsnPtr code, int displayLength, InsnPtr next) : code_(code), displayLength_(displayLength), next_(next) { } const Insn *SetNonInheritedCsSosofoInsn::execute(VM &vm) const { ELObj **display = displayLength_ ? new ELObj *[displayLength_ + 1] : 0; ELObj **tem = vm.sp - displayLength_; for (int i = 0; i < displayLength_; i++) { display[i] = tem[i]; ASSERT(display[i] != 0); } if (displayLength_) display[displayLength_] = 0; // Make sure objects in display are still visible on the stack // to the garbage collector. FlowObj *flowObj = (FlowObj *)*--tem; ASSERT((*tem)->asSosofo() != 0); *tem++ = new (*vm.interp) SetNonInheritedCsSosofoObj(flowObj, code_, display, vm.currentNode); vm.sp = tem; return next_.pointer(); } SetPseudoNonInheritedCInsn::SetPseudoNonInheritedCInsn(const Identifier *nic, const Location &loc, InsnPtr next) : nic_(nic), loc_(loc), next_(next) { } const Insn *SetPseudoNonInheritedCInsn::execute(VM &vm) const { ASSERT(vm.sp[-2]->asSosofo() != 0); ((FlowObj *)vm.sp[-2])->setNonInheritedC(nic_, vm.sp[-1], loc_, *vm.interp); vm.sp--; return next_.pointer(); } SetNonInheritedCInsn::SetNonInheritedCInsn(const Identifier *nic, const Location &loc, InsnPtr next) : SetPseudoNonInheritedCInsn(nic, loc, next) { } const Insn *SetNonInheritedCInsn::execute(VM &vm) const { vm.actualDependencies->resize(0); return SetPseudoNonInheritedCInsn::execute(vm); } SetContentInsn::SetContentInsn(const CompoundFlowObj *flowObj, InsnPtr next) : flowObj_(flowObj), next_(next) { } SetImplicitCharInsn::SetImplicitCharInsn(const Location &loc, InsnPtr next) : loc_(loc), next_(next) { } const Insn *SetImplicitCharInsn::execute(VM &vm) const { ASSERT(vm.sp[-1]->asSosofo() != 0); if (vm.currentNode) { ELObjPropertyValue value(*vm.interp, 0); AccessResult ret = vm.currentNode->property(ComponentName::idChar, *vm.interp, value); if (ret == accessOK) ((FlowObj *)vm.sp[-1])->setImplicitChar(value.obj, loc_, *vm.interp); } return next_.pointer(); } const Insn *SetContentInsn::execute(VM &vm) const { CompoundFlowObj *copy = (CompoundFlowObj *)flowObj_->copy(*vm.interp); copy->setContent((SosofoObj *)vm.sp[-1]); vm.sp[-1] = copy; return next_.pointer(); } SetDefaultContentInsn::SetDefaultContentInsn(const CompoundFlowObj *flowObj, const Location &loc, InsnPtr next) : flowObj_(flowObj), next_(next), loc_(loc) { } const Insn *SetDefaultContentInsn::execute(VM &vm) const { if (!vm.processingMode) { vm.interp->setNextLocation(loc_); vm.interp->message(InterpreterMessages::noCurrentProcessingMode); vm.sp = 0; return 0; } vm.needStack(1); *vm.sp++ = flowObj_->copy(*vm.interp); ((CompoundFlowObj *)vm.sp[-1]) ->setContent(new (*vm.interp) ProcessChildrenSosofoObj(vm.processingMode)); return next_.pointer(); } MakeDefaultContentInsn::MakeDefaultContentInsn(const Location &loc, InsnPtr next) : next_(next), loc_(loc) { } const Insn *MakeDefaultContentInsn::execute(VM &vm) const { if (!vm.processingMode) { vm.interp->setNextLocation(loc_); vm.interp->message(InterpreterMessages::noCurrentProcessingMode); vm.sp = 0; return 0; } vm.needStack(1); *vm.sp++ = new (*vm.interp) ProcessChildrenSosofoObj(vm.processingMode); return next_.pointer(); } LabelSosofoInsn::LabelSosofoInsn(const Location &loc, InsnPtr next) : loc_(loc), next_(next) { } const Insn *LabelSosofoInsn::execute(VM &vm) const { SymbolObj *sym = vm.sp[-1]->asSymbol(); if (!sym) { vm.interp->setNextLocation(loc_); vm.interp->message(InterpreterMessages::labelNotASymbol); vm.sp = 0; return 0; } ASSERT(vm.sp[-2]->asSosofo() != 0); vm.sp[-2] = new (*vm.interp) LabelSosofoObj(sym, loc_, (SosofoObj *)vm.sp[-2]); vm.sp--; return next_.pointer(); } ContentMapSosofoInsn::ContentMapSosofoInsn(const Location &loc, InsnPtr next) : loc_(loc), next_(next) { } const Insn *ContentMapSosofoInsn::execute(VM &vm) const { ASSERT(vm.sp[-2]->asSosofo() != 0); vm.sp[-2] = new (*vm.interp) ContentMapSosofoObj(vm.sp[-1], &loc_, (SosofoObj *)vm.sp[-2]); vm.sp--; return next_.pointer(); } BoxObj::BoxObj() : value(0) { hasSubObjects_ = 1; } BoxObj::BoxObj(ELObj *obj) : value(obj) { hasSubObjects_ = 1; } BoxObj *BoxObj::asBox() { return this; } void BoxObj::traceSubObjects(Collector &c) const { c.trace(value); } CallWithCurrentContinuationPrimitiveObj::CallWithCurrentContinuationPrimitiveObj() : FunctionObj(&signature_) { } const Insn *CallWithCurrentContinuationPrimitiveObj::call(VM &vm, const Location &loc, const Insn *next) { FunctionObj *f = vm.sp[-1]->asFunction(); if (!f) { vm.interp->setNextLocation(loc); vm.interp->message(InterpreterMessages::notAProcedure, StringMessageArg(Interpreter::makeStringC("call-with-current-continuation")), OrdinalMessageArg(1), ELObjMessageArg(vm.sp[-1], *vm.interp)); vm.sp = 0; return 0; } ELObjDynamicRoot protect(*vm.interp, f); vm.sp[-1] = new (*vm.interp) ContinuationObj; const Insn *insn = f->call(vm, loc, next); f->setArgToCC(vm); return insn; } const Insn *CallWithCurrentContinuationPrimitiveObj::tailCall(VM &vm, const Location &loc, int nCallerArgs) { FunctionObj *f = vm.sp[-1]->asFunction(); if (!f) { vm.interp->setNextLocation(loc); vm.interp->message(InterpreterMessages::notAProcedure, StringMessageArg(Interpreter::makeStringC("call-with-current-continuation")), OrdinalMessageArg(1), ELObjMessageArg(vm.sp[-1], *vm.interp)); vm.sp = 0; return 0; } ELObjDynamicRoot protect(*vm.interp, f); vm.sp[-1] = new (*vm.interp) ContinuationObj; const Insn *insn = f->tailCall(vm, loc, nCallerArgs); f->setArgToCC(vm); return insn; } const Signature CallWithCurrentContinuationPrimitiveObj::signature_ = { 1, 0, 0 }; #ifdef DSSSL_NAMESPACE } #endif openjade-1.3.2/style/Insn.h0100664000076400007640000002752606713070463013657 0ustar ianian// Copyright (c) 1996 James Clark // See the file copying.txt for copying permission. #ifndef Insn_INCLUDED #define Insn_INCLUDED 1 #include "ELObj.h" #include "Resource.h" #include "Ptr.h" #include "Location.h" #include "Message.h" #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif class VM; class EvalContext; class Interpreter; class Insn : public Resource { public: virtual ~Insn(); virtual const Insn *execute(VM &) const = 0; virtual bool isReturn(int &nArgs) const; virtual bool isPopBindings(int &n, ConstPtr &) const; }; typedef ConstPtr InsnPtr; class ErrorInsn : public Insn { public: const Insn *execute(VM &) const; }; class CondFailInsn : public ErrorInsn { public: CondFailInsn(const Location &loc); const Insn *execute(VM &) const; private: Location loc_; }; class CaseFailInsn : public ErrorInsn { public: CaseFailInsn(const Location &loc); const Insn *execute(VM &) const; private: Location loc_; }; class ConstantInsn : public Insn { public: ConstantInsn(ELObj *, InsnPtr); const Insn *execute(VM &) const; private: ELObj *value_; InsnPtr next_; }; class ResolveQuantitiesInsn : public Insn { public: ResolveQuantitiesInsn(const Location &, InsnPtr); const Insn *execute(VM &) const; private: Location loc_; InsnPtr next_; }; class TestInsn : public Insn { public: TestInsn(InsnPtr, InsnPtr); const Insn *execute(VM &) const; private: InsnPtr consequent_; InsnPtr alternative_; }; class OrInsn : public Insn { public: OrInsn(InsnPtr nextTest, InsnPtr next); const Insn *execute(VM &) const; private: InsnPtr nextTest_; InsnPtr next_; }; class AndInsn : public Insn { public: AndInsn(InsnPtr nextTest, InsnPtr next); const Insn *execute(VM &) const; private: InsnPtr nextTest_; InsnPtr next_; }; class CaseInsn : public Insn { public: CaseInsn(ELObj *, InsnPtr match, InsnPtr fail); const Insn *execute(VM &) const; private: ELObj *obj_; InsnPtr match_; InsnPtr fail_; }; class PopInsn : public Insn { public: PopInsn(InsnPtr next); const Insn *execute(VM &) const; private: InsnPtr next_; }; class ConsInsn : public Insn { public: ConsInsn(InsnPtr next); const Insn *execute(VM &) const; private: InsnPtr next_; }; class AppendInsn : public Insn { public: AppendInsn(const Location &, InsnPtr next); const Insn *execute(VM &) const; private: Location loc_; InsnPtr next_; }; class ApplyBaseInsn : public Insn { public: ApplyBaseInsn(int nArgs, const Location &); protected: FunctionObj *decodeArgs(VM &) const; Location loc_; int nArgs_; }; class ApplyInsn : public ApplyBaseInsn { public: ApplyInsn(int nArgs, const Location &, InsnPtr); const Insn *execute(VM &) const; private: InsnPtr next_; }; class TailApplyInsn : public ApplyBaseInsn { public: TailApplyInsn(int nCallerArgs, int nArgs, const Location &); const Insn *execute(VM &) const; private: int nCallerArgs_; }; class FrameRefInsn : public Insn { public: FrameRefInsn(int index, InsnPtr next); const Insn *execute(VM &vm) const; private: int index_; InsnPtr next_; }; class StackRefInsn : public Insn { public: StackRefInsn(int index, int frameIndex, InsnPtr next); const Insn *execute(VM &vm) const; private: int index_; // always negative int frameIndex_; InsnPtr next_; }; class ClosureRefInsn : public Insn { public: ClosureRefInsn(int index, InsnPtr next); const Insn *execute(VM &vm) const; private: int index_; InsnPtr next_; }; class StackSetBoxInsn : public Insn { public: StackSetBoxInsn(int index, int frameIndex, const Location &loc, InsnPtr next); const Insn *execute(VM &vm) const; private: int index_; // always negative int frameIndex_; Location loc_; InsnPtr next_; }; class StackSetInsn : public Insn { public: StackSetInsn(int index, int frameIndex, InsnPtr next); const Insn *execute(VM &vm) const; private: int index_; // always negative int frameIndex_; InsnPtr next_; }; class ClosureSetBoxInsn : public Insn { public: ClosureSetBoxInsn(int index, const Location &loc, InsnPtr next); const Insn *execute(VM &vm) const; private: int index_; Location loc_; InsnPtr next_; }; class TopRefInsn : public Insn { public: TopRefInsn(const Identifier *var, InsnPtr next); const Insn *execute(VM &vm) const; private: const Identifier *var_; InsnPtr next_; Location loc_; }; class PopBindingsInsn : public Insn { public: const Insn *execute(VM &vm) const; bool isPopBindings(int &n, InsnPtr &) const; static InsnPtr make(int n, InsnPtr next); private: PopBindingsInsn(int n, InsnPtr next); int n_; InsnPtr next_; }; class PrimitiveObj; class PrimitiveCallInsn : public Insn { public: PrimitiveCallInsn(int nArgs, PrimitiveObj *, const Location &, InsnPtr); const Insn *execute(VM &) const; private: int nArgs_; PrimitiveObj *prim_; Location loc_; InsnPtr next_; }; struct Signature { int nRequiredArgs; int nOptionalArgs; bool restArg; int nKeyArgs; const Identifier *const *keys; }; // This Insn constructs a ClosureObj. class ClosureInsn : public Insn { public: ClosureInsn(const Signature *, InsnPtr code, int displayLength, InsnPtr next); const Insn *execute(VM &) const; private: const Signature *sig_; InsnPtr code_; int displayLength_; InsnPtr next_; }; class ClosureObj; class FunctionCallInsn : public Insn { public: FunctionCallInsn(int nArgs, FunctionObj *, const Location &, InsnPtr); const Insn *execute(VM &) const; private: int nArgs_; FunctionObj *function_; // must be permanent Location loc_; InsnPtr next_; }; class FunctionTailCallInsn : public Insn { public: FunctionTailCallInsn(int nArgs, FunctionObj *, const Location &, int nCallerArgs); const Insn *execute(VM &) const; private: int nArgs_; FunctionObj *function_; // must be permanent Location loc_; int nCallerArgs_; }; class VarargsInsn : public Insn { public: VarargsInsn(const Signature &, Vector &entryPoints, const Location &); const Insn *execute(VM &) const; private: const Signature *sig_; Vector entryPoints_; Location loc_; }; class SetKeyArgInsn : public Insn { public: SetKeyArgInsn(int offset, InsnPtr); const Insn *execute(VM &) const; private: int offset_; InsnPtr next_; }; class TestNullInsn : public Insn { public: TestNullInsn(int offset, InsnPtr ifNull, InsnPtr ifNotNull); const Insn *execute(VM &) const; private: int offset_; InsnPtr ifNull_; InsnPtr ifNotNull_; InsnPtr next_; }; class ReturnInsn : public Insn { public: ReturnInsn(int totalArgs); const Insn *execute(VM &) const; bool isReturn(int &nArgs) const; private: int totalArgs_; }; class FunctionObj : public ELObj { public: FunctionObj(const Signature *sig) : sig_(sig) { } int totalArgs(); int nRequiredArgs(); int nOptionalArgs(); int nKeyArgs(); bool restArg(); virtual const Insn *call(VM &vm, const Location &, const Insn *next) = 0; virtual const Insn *tailCall(VM &vm, const Location &, int nCallerArgs) = 0; virtual InsnPtr makeCallInsn(int nArgs, Interpreter &, const Location &, InsnPtr next); virtual InsnPtr makeTailCallInsn(int nArgs, Interpreter &, const Location &, int nCallerArgs); const Signature &signature() const { return *sig_; } FunctionObj *asFunction(); virtual void setArgToCC(VM &); private: const Signature *sig_; }; class PrimitiveObj : public FunctionObj { public: PrimitiveObj(const Signature *sig) : FunctionObj(sig) { } const Insn *call(VM &vm, const Location &, const Insn *next); const Insn *tailCall(VM &vm, const Location &, int nCallerArgs); InsnPtr makeCallInsn(int nArgs, Interpreter &, const Location &, InsnPtr next); virtual ELObj *primitiveCall(int nArgs, ELObj **args, EvalContext &, Interpreter &, const Location &) = 0; void setIdentifier(const Identifier *ident); protected: ELObj *argError(Interpreter &, const Location &, const MessageType3 &, unsigned, ELObj *) const; ELObj *noCurrentNodeError(Interpreter &, const Location &) const; private: const Identifier *ident_; }; class ApplyPrimitiveObj : public FunctionObj { public: ApplyPrimitiveObj(); const Insn *call(VM &vm, const Location &, const Insn *next); const Insn *tailCall(VM &vm, const Location &, int nCallerArgs); private: bool shuffle(VM &vm, const Location &loc); static const Signature signature_; }; class CallWithCurrentContinuationPrimitiveObj : public FunctionObj { public: CallWithCurrentContinuationPrimitiveObj(); const Insn *call(VM &vm, const Location &, const Insn *next); const Insn *tailCall(VM &vm, const Location &, int nCallerArgs); private: static const Signature signature_; }; class ClosureObj : public FunctionObj { public: void *operator new(size_t, Collector &c) { return c.allocateObject(1); } ClosureObj(const Signature *, InsnPtr, ELObj **display); ~ClosureObj() { delete [] display_; } ELObj **display(); const Insn *call(VM &, const Location &, const Insn *); const Insn *tailCall(VM &, const Location &, int nCallerArgs); void traceSubObjects(Collector &) const; ELObj *display(int) const; void setArgToCC(VM &); private: InsnPtr code_; // terminated by null pointer. // null if empty. ELObj **display_; }; class ContinuationObj : public FunctionObj { public: ContinuationObj(); const Insn *call(VM &, const Location &, const Insn *); const Insn *tailCall(VM &, const Location &, int nCallerArgs); void set(size_t stackSize, size_t controlStackSize) { stackSize_ = stackSize; controlStackSize_ = controlStackSize; } void kill() { controlStackSize_ = 0; } bool live() const { return controlStackSize_ > 0; } private: size_t stackSize_; size_t controlStackSize_; static const Signature signature_; }; class BoxObj : public ELObj { public: BoxObj(); BoxObj(ELObj *); BoxObj *asBox(); void traceSubObjects(Collector &) const; ELObj *value; }; class SetBoxInsn : public Insn { public: SetBoxInsn(int n, InsnPtr next); const Insn *execute(VM &vm) const; private: int n_; InsnPtr next_; }; class SetImmediateInsn : public Insn { public: SetImmediateInsn(int n, InsnPtr next); const Insn *execute(VM &vm) const; private: int n_; InsnPtr next_; }; class UnboxInsn : public Insn { public: UnboxInsn(InsnPtr next); const Insn *execute(VM &vm) const; private: InsnPtr next_; }; class CheckInitInsn : public Insn { public: CheckInitInsn(const Identifier *ident, const Location &, InsnPtr next); const Insn *execute(VM &vm) const; private: const Identifier *ident_; Location loc_; InsnPtr next_; }; class BoxInsn : public Insn { public: BoxInsn(InsnPtr next); const Insn *execute(VM &vm) const; private: InsnPtr next_; }; class BoxArgInsn : public Insn { public: BoxArgInsn(int n, InsnPtr next); const Insn *execute(VM &vm) const; private: int n_; InsnPtr next_; }; class BoxStackInsn : public Insn { public: BoxStackInsn(int n, InsnPtr next); const Insn *execute(VM &vm) const; private: int n_; InsnPtr next_; }; class VectorInsn : public Insn { public: VectorInsn(size_t n, InsnPtr next); const Insn *execute(VM &vm) const; private: size_t n_; InsnPtr next_; }; class ListToVectorInsn : public Insn { public: ListToVectorInsn(InsnPtr next); const Insn *execute(VM &vm) const; private: InsnPtr next_; }; inline int FunctionObj::nRequiredArgs() { return signature().nRequiredArgs; } inline int FunctionObj::nOptionalArgs() { return signature().nOptionalArgs; } inline bool FunctionObj::restArg() { return signature().restArg; } inline int FunctionObj::nKeyArgs() { return signature().nKeyArgs; } inline int FunctionObj::totalArgs() { const Signature &sig = signature(); return sig.nRequiredArgs + sig.nOptionalArgs + sig.nKeyArgs + sig.restArg; } inline void PrimitiveObj::setIdentifier(const Identifier *ident) { ident_ = ident; } inline ELObj *ClosureObj::display(int i) const { return display_[i]; } #ifdef DSSSL_NAMESPACE } #endif #endif /* not Insn_INCLUDED */ openjade-1.3.2/style/Insn2.h0100664000076400007640000001104406755077552013741 0ustar ianian// Copyright (c) 1996 James Clark // See the file copying.txt for copying permission. #ifndef Insn2_INCLUDED #define Insn2_INCLUDED 1 #include "Insn.h" #include "SosofoObj.h" #include "Style.h" #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif class CheckSosofoInsn : public Insn { public: CheckSosofoInsn(const Location &loc, InsnPtr next) : loc_(loc), next_(next) { } const Insn *execute(VM &vm) const; private: Location loc_; InsnPtr next_; }; class CheckStyleInsn : public Insn { public: CheckStyleInsn(const Location &loc, InsnPtr next) : loc_(loc), next_(next) { } const Insn *execute(VM &vm) const; private: Location loc_; InsnPtr next_; }; class ProcessingMode; class PushModeInsn : public Insn { public: PushModeInsn(const ProcessingMode *mode, InsnPtr next) : mode_(mode), next_(next) { } const Insn *execute(VM &) const; private: const ProcessingMode *mode_; InsnPtr next_; }; class PopModeInsn : public Insn { public: PopModeInsn(InsnPtr next) : next_(next) { } const Insn *execute(VM &) const; private: InsnPtr next_; }; // This creates a SetNonInheritedCsSosofo // displayLength_ vars are on the top of the stack. // flowObj is next. class SetNonInheritedCsSosofoInsn : public Insn { public: SetNonInheritedCsSosofoInsn(InsnPtr code, int displayLength, InsnPtr next); const Insn *execute(VM &) const; private: InsnPtr code_; int displayLength_; InsnPtr next_; }; class CopyFlowObjInsn : public Insn { public: CopyFlowObjInsn(FlowObj *, InsnPtr); const Insn *execute(VM &) const; private: FlowObj *flowObj_; InsnPtr next_; }; // Value for characteristic is on top of the stack // Flow object is next down. class SetPseudoNonInheritedCInsn : public Insn { public: SetPseudoNonInheritedCInsn(const Identifier *, const Location &, InsnPtr); const Insn *execute(VM &) const; private: Location loc_; const Identifier *nic_; InsnPtr next_; }; class SetNonInheritedCInsn : public SetPseudoNonInheritedCInsn { public: SetNonInheritedCInsn(const Identifier *, const Location &, InsnPtr); const Insn *execute(VM &) const; }; class SetImplicitCharInsn : public Insn { public: SetImplicitCharInsn(const Location &, InsnPtr); const Insn *execute(VM &) const; private: Location loc_; InsnPtr next_; }; // sosofo with content is on top of the stack // flow object is next class SetContentInsn : public Insn { public: SetContentInsn(const CompoundFlowObj *, InsnPtr next); const Insn *execute(VM &vm) const; private: InsnPtr next_; const CompoundFlowObj *flowObj_; }; class SetDefaultContentInsn : public Insn { public: SetDefaultContentInsn(const CompoundFlowObj *, const Location &loc, InsnPtr next); const Insn *execute(VM &vm) const; private: Location loc_; InsnPtr next_; const CompoundFlowObj *flowObj_; }; class MakeDefaultContentInsn : public Insn { public: MakeDefaultContentInsn(const Location &loc, InsnPtr next); const Insn *execute(VM &vm) const; private: Location loc_; InsnPtr next_; }; class SosofoAppendInsn : public Insn { public: SosofoAppendInsn(size_t, InsnPtr); const Insn *execute(VM &vm) const; private: size_t n_; InsnPtr next_; }; // This creates a VarStyleObj. // displayLength vars are on the top, then the use StyleObj is there is one. class VarStyleInsn : public Insn { public: VarStyleInsn(const ConstPtr &, unsigned, bool, InsnPtr); const Insn *execute(VM &vm) const; private: unsigned displayLength_; bool hasUse_; ConstPtr styleSpec_; InsnPtr next_; }; // BasicStyleObj is on top of stack. // If there is a current overriding style, // replace it by an OverridenStyleObj. class MaybeOverrideStyleInsn : public Insn { public: MaybeOverrideStyleInsn(InsnPtr next); const Insn *execute(VM &vm) const; private: InsnPtr next_; }; // StyleObj is on top // FlowObj is next down // calls set style on the flowobj class SetStyleInsn : public Insn { public: SetStyleInsn(InsnPtr next); const Insn *execute(VM &vm) const; private: InsnPtr next_; }; class Expression; // label is on the top // content is next down class LabelSosofoInsn : public Insn { public: LabelSosofoInsn(const Location &, InsnPtr next); const Insn *execute(VM &) const; private: Location loc_; InsnPtr next_; }; // Constructs a ContentMapSosofo // content-map is on top // content is next down class ContentMapSosofoInsn : public Insn { public: ContentMapSosofoInsn(const Location &loc, InsnPtr next); const Insn *execute(VM &) const; private: Location loc_; InsnPtr next_; }; #ifdef DSSSL_NAMESPACE } #endif #endif /* not Insn2_INCLUDED */ openjade-1.3.2/style/Interpreter.cxx0100664000076400007640000017246407421073253015625 0ustar ianian// Copyright (c) 1996 James Clark // See the file copying.txt for copying permission. #include "stylelib.h" #include "Interpreter.h" #include "Insn.h" #include "InterpreterMessages.h" #include "LocNode.h" #include "Pattern.h" #include "MacroFlowObj.h" #include "ELObjMessageArg.h" #include "VM.h" #include "Owner.h" #include "SchemeParser.h" #include "macros.h" #include "InternalInputSource.h" #include #include "LangObj.h" #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif const Char defaultChar = 0xfffd; static size_t maxObjSize() { static size_t sz[] = { sizeof(UnresolvedQuantityObj), sizeof(VarStyleObj), sizeof(OverriddenStyleObj), sizeof(MergeStyleObj), sizeof(DeviceRGBColorObj), sizeof(ColorSpaceObj), sizeof(PairObj), sizeof(QuantityObj), sizeof(GlyphIdObj), sizeof(NamedNodeListPtrNodeListObj), sizeof(ProcessNodeSosofoObj), sizeof(AppendSosofoObj), sizeof(SetNonInheritedCsSosofoObj), sizeof(LabelSosofoObj), sizeof(MacroFlowObj), sizeof(FlowObj) + sizeof(StringC), // for FormattingInstructionFlowObj sizeof(LangObj), #ifdef SP_HAVE_LOCALE #ifdef SP_HAVE_WCHAR sizeof(RefLangObj), #endif #endif }; size_t n = sz[0]; for (size_t i = 1; i < SIZEOF(sz); i++) if (sz[i] > n) n = sz[i]; return n; } Interpreter::Interpreter(GroveManager *groveManager, Messenger *messenger, int unitsPerInch, bool debugMode, bool dsssl2, bool strictMode, const FOTBuilder::Extension *extensionTable) : groveManager_(groveManager), messenger_(messenger), extensionTable_(extensionTable), Collector(maxObjSize()), partIndex_(0), // 0 is for command-line definitions dPartIndex_(1), lexCategory_(lexOther), unitsPerInch_(unitsPerInch), nInheritedC_(0), initialProcessingMode_(StringC()), currentPartFirstInitialValue_(0), initialStyle_(0), nextGlyphSubstTableUniqueId_(0), debugMode_(debugMode), dsssl2_(dsssl2), strictMode_(strictMode) { makePermanent(theNilObj_ = new (*this) NilObj); makePermanent(theFalseObj_ = new (*this) FalseObj); makePermanent(theTrueObj_ = new (*this) TrueObj); makePermanent(theErrorObj_ = new (*this) ErrorObj); makePermanent(theUnspecifiedObj_ = new (*this) UnspecifiedObj); makePermanent(addressNoneObj_ = new (*this) AddressObj(FOTBuilder::Address::none)); makePermanent(emptyNodeListObj_ = new (*this) NodePtrNodeListObj); defaultLanguage_ = theFalseObj_; installSyntacticKeys(); installCValueSymbols(); installPortNames(); installPrimitives(); installUnits(); if (!strictMode_) { installCharNames(); installSdata(); } installFlowObjs(); installInheritedCs(); installNodeProperties(); static const char *lexCategories[] = { "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz", "!$%&*/<=>?~_^:", "", "0123456789", "-+.", "", "();\"", " \t\r\n\f", "", }; lexCategory_.setEe(lexDelimiter); for (size_t i = 0; i < SIZEOF(lexCategories); i++) for (const char *s = lexCategories[i]; *s; s++) lexCategory_.setChar(*s, i); // #',@[\\]`{|} are ASCII chars not mentioned above, // but I guess we don't want to allow any of these // in names (as most of them have special meaning in // scheme/dsssl). if (!strictMode_) for (Char i = 127; i < charMax; i++) lexCategory_.setChar(i, lexAddNameStart); initialProcessingMode_.setDefined(); // can't be done before initializing lexCategory_ installBuiltins(); installCharProperties(); } void Interpreter::compile() { // FIXME compile all definitions compileInitialValues(); initialProcessingMode_.compile(*this); NamedTableIter iter(processingModeTable_); for (;;) { ProcessingMode *mode = iter.next(); if (!mode) break; mode->compile(*this); } compileCharProperties(); compileDefaultLanguage(); } void Interpreter::compileInitialValues() { Vector > ics; for (size_t i = 0; i < initialValueNames_.size(); i++) { const Identifier *ident = initialValueNames_[i]; Owner &expr = initialValueValues_[i]; ConstPtr ic(ident->inheritedC()); expr->optimize(*this, Environment(), expr); ELObj *val = expr->constantValue(); if (val) { ConstPtr tem(ic->make(val, expr->location(), *this)); if (!tem.isNull()) ics.push_back(tem); } else ics.push_back(new VarInheritedC(ic, expr->compile(*this, Environment(), 0, InsnPtr()), expr->location())); } if (ics.size()) { Vector > forceIcs; initialStyle_ = new (*this) VarStyleObj(new StyleSpec(forceIcs, ics), 0, 0, NodePtr()); makePermanent(initialStyle_); } } void Interpreter::installInitialValue(Identifier *ident, Owner &expr) { for (size_t i = 0; i < initialValueNames_.size(); i++) { if (ident == initialValueNames_[i]) { if (i >= currentPartFirstInitialValue_) { setNextLocation(expr->location()); message(InterpreterMessages::duplicateInitialValue, StringMessageArg(ident->name()), initialValueValues_[i]->location()); } return; } } initialValueValues_.resize(initialValueValues_.size() + 1); expr.swap(initialValueValues_.back()); initialValueNames_.push_back(ident); } void Interpreter::installUnits() { static struct { const char *name; int numer; int denom; bool dsssl2; } units[] = { { "m", 5000, 127 }, { "cm", 50, 127 }, { "mm", 5, 127 }, { "in", 1, 1 }, { "pt", 1, 72 }, { "pica", 1, 6 }, { "pc", 1, 6 } // a DSSSL2 addition }; size_t nUnits = dsssl2() ? SIZEOF(units) : SIZEOF(units) - 1; for (size_t i = 0; i < nUnits; i++) { Unit *unit = lookupUnit(makeStringC(units[i].name)); long n = unitsPerInch_ * units[i].numer; if (n % units[i].denom == 0) unit->setValue(long(n / units[i].denom)); else unit->setValue(double(n)/units[i].denom); } } void Interpreter::installSyntacticKeys() { static struct { const char *name; Identifier::SyntacticKey key; } keys[] = { { "quote", Identifier::keyQuote }, { "lambda", Identifier::keyLambda }, { "if", Identifier::keyIf }, { "cond", Identifier::keyCond }, { "and", Identifier::keyAnd }, { "or", Identifier::keyOr }, { "case", Identifier::keyCase }, { "let", Identifier::keyLet }, { "let*", Identifier::keyLetStar }, { "letrec", Identifier::keyLetrec }, { "quasiquote", Identifier::keyQuasiquote }, { "unquote", Identifier::keyUnquote }, { "unquote-splicing", Identifier::keyUnquoteSplicing }, { "define", Identifier::keyDefine }, { "else", Identifier::keyElse }, { "=>", Identifier::keyArrow }, { "there-exists?", Identifier::keyThereExists }, { "for-all?", Identifier::keyForAll }, { "select-each", Identifier::keySelectEach }, { "union-for-each", Identifier::keyUnionForEach }, { "make", Identifier::keyMake }, { "style", Identifier::keyStyle }, { "with-mode", Identifier::keyWithMode }, { "define-unit", Identifier::keyDefineUnit }, { "query", Identifier::keyQuery }, { "element", Identifier::keyElement }, { "default", Identifier::keyDefault }, { "root", Identifier::keyRoot }, { "id", Identifier::keyId }, { "mode", Identifier::keyMode }, { "declare-initial-value", Identifier::keyDeclareInitialValue }, { "declare-characteristic", Identifier::keyDeclareCharacteristic }, { "declare-flow-object-class", Identifier::keyDeclareFlowObjectClass }, { "declare-char-characteristic+property", Identifier::keyDeclareCharCharacteristicAndProperty }, { "declare-reference-value-type", Identifier::keyDeclareReferenceValueType }, { "declare-default-language", Identifier::keyDeclareDefaultLanguage }, { "declare-char-property", Identifier::keyDeclareCharProperty }, { "define-page-model", Identifier::keyDefinePageModel }, { "define-column-set-model", Identifier::keyDefineColumnSetModel }, { "define-language", Identifier::keyDefineLanguage }, { "add-char-properties", Identifier::keyAddCharProperties }, { "use", Identifier::keyUse }, { "label", Identifier::keyLabel }, { "content-map", Identifier::keyContentMap }, { "keep-with-previous?", Identifier::keyIsKeepWithPrevious }, { "keep-with-next?", Identifier::keyIsKeepWithNext }, { "space-before", Identifier::keySpaceBefore }, { "space-after", Identifier::keySpaceAfter }, { "left-header", Identifier::keyLeftHeader }, { "center-header", Identifier::keyCenterHeader }, { "right-header", Identifier::keyRightHeader }, { "left-footer", Identifier::keyLeftFooter }, { "center-footer", Identifier::keyCenterFooter }, { "right-footer", Identifier::keyRightFooter }, { "destination", Identifier::keyDestination }, { "type", Identifier::keyType }, { "coalesce-id", Identifier::keyCoalesceId }, { "display?", Identifier::keyIsDisplay }, { "scale", Identifier::keyScale }, { "max-width", Identifier::keyMaxWidth }, { "max-height", Identifier::keyMaxHeight }, { "entity-system-id", Identifier::keyEntitySystemId }, { "notation-system-id", Identifier::keyNotationSystemId }, { "position-point-x", Identifier::keyPositionPointX }, { "position-point-y", Identifier::keyPositionPointY }, { "escapement-direction", Identifier::keyEscapementDirection }, { "break-before-priority", Identifier::keyBreakBeforePriority }, { "break-after-priority", Identifier::keyBreakAfterPriority }, { "orientation", Identifier::keyOrientation }, { "length", Identifier::keyLength }, { "char", Identifier::keyChar }, { "glyph-id", Identifier::keyGlyphId }, { "space?", Identifier::keyIsSpace }, { "record-end?", Identifier::keyIsRecordEnd }, { "input-tab?", Identifier::keyIsInputTab }, { "input-whitespace?", Identifier::keyIsInputWhitespace }, { "punct?", Identifier::keyIsPunct }, { "drop-after-line-break?", Identifier::keyIsDropAfterLineBreak }, { "drop-unless-before-line-break?", Identifier::keyIsDropUnlessBeforeLineBreak }, { "math-class", Identifier::keyMathClass }, { "math-font-posture", Identifier::keyMathFontPosture }, { "script", Identifier::keyScript }, { "stretch-factor", Identifier::keyStretchFactor }, { "keep", Identifier::keyKeep }, { "break-before", Identifier::keyBreakBefore }, { "break-after", Identifier::keyBreakAfter }, { "may-violate-keep-before?", Identifier::keyIsMayViolateKeepBefore }, { "may-violate-keep-after?", Identifier::keyIsMayViolateKeepAfter }, { "before-row-border", Identifier::keyBeforeRowBorder }, { "after-row-border", Identifier::keyAfterRowBorder }, { "before-column-border", Identifier::keyBeforeColumnBorder }, { "after-column-border", Identifier::keyAfterColumnBorder }, { "column-number", Identifier::keyColumnNumber }, { "row-number", Identifier::keyRowNumber }, { "n-columns-spanned", Identifier::keyNColumnsSpanned }, { "n-rows-spanned", Identifier::keyNRowsSpanned }, { "width", Identifier::keyWidth }, { "starts-row?", Identifier::keyIsStartsRow }, { "ends-row?", Identifier::keyIsEndsRow }, { "table-width", Identifier::keyTableWidth }, { "multi-modes", Identifier::keyMultiModes }, { "data", Identifier::keyData }, { "min", Identifier::keyMin }, { "max", Identifier::keyMax }, { "conditional?", Identifier::keyIsConditional }, { "priority", Identifier::keyPriority }, { "grid-n-rows", Identifier::keyGridNRows }, { "grid-n-columns", Identifier::keyGridNColumns }, { "radical", Identifier::keyRadical }, { "null", Identifier::keyNull }, { "rcs?", Identifier::keyIsRcs }, { "parent", Identifier::keyParent }, { "active", Identifier::keyActive }, { "attributes", Identifier::keyAttributes }, { "children", Identifier::keyChildren }, { "repeat", Identifier::keyRepeat }, { "position", Identifier::keyPosition }, { "only", Identifier::keyOnly }, { "class", Identifier::keyClass }, { "importance", Identifier::keyImportance }, { "position-preference", Identifier::keyPositionPreference }, { "collate", Identifier::keyCollate }, { "toupper", Identifier::keyToupper }, { "tolower", Identifier::keyTolower }, { "symbol", Identifier::keySymbol }, { "order", Identifier::keyOrder }, { "forward", Identifier::keyForward }, { "backward", Identifier::keyBackward }, { "white-point", Identifier::keyWhitePoint }, { "black-point", Identifier::keyBlackPoint }, { "range", Identifier::keyRange }, { "range-abc", Identifier::keyRangeAbc }, { "range-lmn", Identifier::keyRangeLmn }, { "range-a", Identifier::keyRangeA }, { "decode-abc", Identifier::keyDecodeAbc }, { "decode-lmn", Identifier::keyDecodeLmn }, { "decode-a", Identifier::keyDecodeA }, { "matrix-abc", Identifier::keyMatrixAbc }, { "matrix-lmn", Identifier::keyMatrixLmn }, { "matrix-a", Identifier::keyMatrixA }, { "architecture", Identifier::keyArchitecture }, }, keys2[] = { { "declare-class-attribute", Identifier::keyDeclareClassAttribute }, { "declare-id-attribute", Identifier::keyDeclareIdAttribute }, { "declare-flow-object-macro", Identifier::keyDeclareFlowObjectMacro }, { "or-element", Identifier::keyOrElement }, { "set!", Identifier::keySet }, { "begin", Identifier::keyBegin }, }; for (size_t i = 0; i < SIZEOF(keys); i++) { StringC tem(makeStringC(keys[i].name)); lookup(tem)->setSyntacticKey(keys[i].key); if (dsssl2() && tem[tem.size() - 1] == '?') { tem.resize(tem.size() - 1); lookup(tem)->setSyntacticKey(keys[i].key); } } if (dsssl2()) { for (size_t i = 0; i < SIZEOF(keys2); i++) lookup(makeStringC(keys2[i].name))->setSyntacticKey(keys2[i].key); } } void Interpreter::installCValueSymbols() { cValueSymbols_[0] = makeFalse(); cValueSymbols_[1] = makeTrue(); for (size_t i = 2; i < FOTBuilder::nSymbols; i++) { SymbolObj *sym = makeSymbol(makeStringC(FOTBuilder::symbolName(FOTBuilder::Symbol(i)))); sym->setCValue(FOTBuilder::Symbol(i)); cValueSymbols_[i] = sym; } } void Interpreter::installPortNames() { // These must match the order in SymbolObj. static const char *names[] = { "numerator", "denominator", "pre-sup", "pre-sub", "post-sup", "post-sub", "mid-sup", "mid-sub", "over-mark", "under-mark", "open", "close", "degree", "operator", "lower-limit", "upper-limit", "header", "footer" }; ASSERT(SIZEOF(names) == nPortNames); for (size_t i = 0; i < SIZEOF(names); i++) portNames_[i] = makeSymbol(makeStringC(names[i])); } void Interpreter::installCharNames() { static struct { Char c; const char *name; } chars[] = { #include "charNames.h" }; for (size_t i = 0; i < SIZEOF(chars); i++) { CharPart ch; ch.c = chars[i].c; ch.defPart = unsigned(-1); namedCharTable_.insert(makeStringC(chars[i].name), ch, 1); } } void Interpreter::installSdata() { // This comes from uni2sgml.txt on ftp://unicode.org. // It is marked there as obsolete, so it probably ought to be checked. // The definitions of apos and quot have been fixed for consistency with XML. static struct { Char c; const char *name; } entities[] = { #include "sdata.h" }; for (size_t i = 0; i < SIZEOF(entities); i++) { CharPart ch; ch.c = entities[i].c; ch.defPart = unsigned(-1); sdataEntityNameTable_.insert(makeStringC(entities[i].name), ch, 1); } } void Interpreter::installNodeProperties() { for (int i = 0; i < ComponentName::nIds; i++) { ComponentName::Id id = ComponentName::Id(i); nodePropertyTable_.insert(makeStringC(ComponentName::rcsName(id)), i); nodePropertyTable_.insert(makeStringC(ComponentName::sdqlName(id)), i); } } void Interpreter::setCharRepertoire(const StringC &pubid) { if (pubid == "UNREGISTERED::OpenJade//Character Repertoire::OpenJade") { if (strictMode_) { installCharNames(); installSdata(); // This assumes that we process char-repertoire // declaration before any declarations which change // lexical categories. for (Char i = 127; i < charMax; i++) lexCategory_.setChar(i, lexAddNameStart); strictMode_ = 0; } } else message(InterpreterMessages::unsupportedCharRepertoire, StringMessageArg(pubid)); } void Interpreter::addStandardChar(const StringC &name, const StringC &num) { int n; size_t i = 0; if (!scanSignDigits(num, i, n)) { message(InterpreterMessages::invalidCharNumber, StringMessageArg(num)); return; } const CharPart *def = namedCharTable_.lookup(name); CharPart ch; ch.c = n; ch.defPart = dPartIndex_; if (def) { if (dPartIndex_ < def->defPart) namedCharTable_.insert(name, ch, 1); else if (def->defPart == dPartIndex_ && def->c != ch.c) message(InterpreterMessages::duplicateCharName, StringMessageArg(name)); } else namedCharTable_.insert(name, ch, 1); } void Interpreter::addNameChar(const StringC &name) { const CharPart *cp = namedCharTable_.lookup(name); if (!cp) message(InterpreterMessages::badCharName, StringMessageArg(name)); else if (lexCategory_[cp->c] != lexOther) // FIXME give a more specific error message(InterpreterMessages::badDeclaration); else lexCategory_.setChar(cp->c, lexAddNameStart); } void Interpreter::addSeparatorChar(const StringC &name) { const CharPart *cp = namedCharTable_.lookup(name); if (!cp) message(InterpreterMessages::badCharName, StringMessageArg(name)); else if (lexCategory_[cp->c] != lexOther) // FIXME give a more specific error message(InterpreterMessages::badDeclaration); else lexCategory_.setChar(cp->c, lexAddWhiteSpace); } void Interpreter::addSdataEntity(const StringC &ename, const StringC &etext, const StringC &name) { const CharPart *cp = namedCharTable_.lookup(name); if (!cp) { message(InterpreterMessages::badCharName, StringMessageArg(name)); return; } CharPart ch; ch.c = cp->c; ch.defPart = dPartIndex_; if (ename.size() > 0) { const CharPart *def = sdataEntityNameTable_.lookup(ename); if (def) { if (dPartIndex_ < def->defPart) sdataEntityNameTable_.insert(ename, ch); else if (def->defPart == dPartIndex_ && def->c != cp->c) message(InterpreterMessages::duplicateSdataEntityName, StringMessageArg(ename)); } else sdataEntityNameTable_.insert(ename, ch); } if (etext.size() > 0) { const CharPart *def = sdataEntityTextTable_.lookup(etext); if (def) { if (dPartIndex_ < def->defPart) sdataEntityTextTable_.insert(etext, ch); else if (def->defPart == dPartIndex_ && def->c != cp->c) message(InterpreterMessages::duplicateSdataEntityText, StringMessageArg(etext)); } else sdataEntityTextTable_.insert(etext, ch); } } bool Interpreter::sdataMap(GroveString name, GroveString text, GroveChar &c) const { StringC tem(name.data(), name.size()); StringC tem2(text.data(), text.size()); const CharPart *cp = sdataEntityNameTable_.lookup(tem); if (cp) { c = cp->c; return 1; } cp = sdataEntityTextTable_.lookup(tem2); if (cp) { c = cp->c; return 1; } if (convertUnicodeCharName(tem, c)) return 1; // I think this is the best thing to do. // At least it makes preserve-sdata work with unknown SDATA entities. c = defaultChar; return 1; } ELObj *Interpreter::convertGlyphId(const Char *str, size_t len, const Location &loc) { unsigned long n = 0; const char *publicId = 0; for (size_t i = len; i > 1; --i) { if (str[i - 1] == ':' && str[i - 2] == ':' && i < len && str[i] != '0') { for (size_t j = i; j < len; j++) n = n*10 + (str[j] - '0'); publicId = storePublicId(str, i - 2, loc); break; } if (str[i - 1] < '0' || str[i - 1] > '9') break; } if (!publicId) publicId = storePublicId(str, len, loc); return new (*this) GlyphIdObj(FOTBuilder::GlyphId(publicId, n)); } bool Interpreter::convertCharName(const StringC &str, Char &c) const { const CharPart *cp = namedCharTable_.lookup(str); if (cp) { c = cp->c; return 1; } return convertUnicodeCharName(str, c); } bool Interpreter::convertUnicodeCharName(const StringC &str, Char &c) { if (str.size() != 6 || str[0] != 'U' || str[1] != '-') return 0; Char value = 0; for (int i = 2; i < 6; i++) { value <<= 4; switch (str[i]) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': value |= str[i] - '0'; break; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': value |= 10 + (str[i] - 'A'); break; default: return 0; } } c = value; return 1; } SymbolObj *Interpreter::makeSymbol(const StringC &str) { SymbolObj *sym = symbolTable_.lookup(str); if (!sym) { StringObj *strObj = new (*this) StringObj(str); makePermanent(strObj); sym = new (*this) SymbolObj(strObj); makePermanent(sym); symbolTable_.insert(sym); } return sym; } Identifier *Interpreter::lookup(const StringC &str) { Identifier *ident = identTable_.lookup(str); if (!ident) { ident = new Identifier(str); identTable_.insert(ident); } return ident; } bool Interpreter::lookupNodeProperty(const StringC &str, ComponentName::Id &id) { const int *val = nodePropertyTable_.lookup(str); if (!val) { StringC tem(str); for (size_t i = 0; i < tem.size(); i++) { if (tem[i] >= 'A' && tem[i] <= 'Z') tem[i] = 'a' + (tem[i] - 'A'); } val = nodePropertyTable_.lookup(tem); if (!val) return 0; } id = ComponentName::Id(*val); return 1; } Unit *Interpreter::lookupUnit(const StringC &str) { Unit *unit = unitTable_.lookup(str); if (!unit) { unit = new Unit(str); unitTable_.insert(unit); } return unit; } ProcessingMode *Interpreter::lookupProcessingMode(const StringC &str) { ProcessingMode *mode = processingModeTable_.lookup(str); if (!mode) { mode = new ProcessingMode(str, &initialProcessingMode_); processingModeTable_.insert(mode); } return mode; } StringC Interpreter::makeStringC(const char *s) { StringC tem; if (s) while (*s) tem += (unsigned char)*s++; return tem; } void Interpreter::endPart() { currentPartFirstInitialValue_ = initialValueNames_.size(); partIndex_++; } void Interpreter::dEndPart() { dPartIndex_++; } void Interpreter::normalizeGeneralName(const NodePtr &nd, StringC &str) { NamedNodeListPtr nnl; NodePtr root; if (nd->getGroveRoot(root) == accessOK && root->getElements(nnl) == accessOK) str.resize(nnl->normalize(str.begin(), str.size())); } ELObj *Interpreter::makeLengthSpec(const FOTBuilder::LengthSpec &ls) { if (ls.displaySizeFactor != 0.0) { LengthSpec result(LengthSpec::displaySize, ls.displaySizeFactor); result += double(ls.length); return new (*this) LengthSpecObj(result); } else return new (*this) LengthObj(ls.length); } bool Interpreter::convertBooleanC(ELObj *obj, const Identifier *ident, const Location &loc, bool &result) { obj = convertFromString(obj, convertAllowBoolean, loc); if (obj == makeFalse()) { result = 0; return 1; } if (obj == makeTrue()) { result = 1; return 1; } invalidCharacteristicValue(ident, loc); return 0; } bool Interpreter::convertPublicIdC(ELObj *obj, const Identifier *ident, const Location &loc, FOTBuilder::PublicId &pubid) { if (obj == makeFalse()) { pubid = 0; return 1; } const Char *s; size_t n; if (obj->stringData(s, n)) { if (n == 0) pubid = 0; else pubid = storePublicId(s, n, loc); return 1; } invalidCharacteristicValue(ident, loc); return 0; } const char *Interpreter::storePublicId(const Char *s, size_t n, const Location &loc) { String buf; for (; n > 0; s++, n--) { if (*s >= 128) { setNextLocation(loc); message(InterpreterMessages::invalidPublicIdChar, StringMessageArg(StringC(s, 1))); } else buf += char(*s); } buf += '\0'; return publicIds_.store(buf); } bool Interpreter::convertStringC(ELObj *obj, const Identifier *ident, const Location &loc, StringC &result) { const Char *s; size_t n; if (obj->stringData(s, n)) { result.assign(s, n); return 1; } invalidCharacteristicValue(ident, loc); return 0; } bool Interpreter::convertLengthSpec(ELObj *obj, FOTBuilder::LengthSpec &result) { int dim; double d; switch (obj->quantityValue(result.length, d, dim)) { case ELObj::longQuantity: if (dim == 1) return 1; break; case ELObj::doubleQuantity: if (dim == 1) { // FIXME catch overflow result.length = d < 0.0 ? long(d - .5) : long(d + .5); return 1; } break; default: { const LengthSpec *ls = obj->lengthSpec(); if (ls) return ls->convert(result); } break; } return 0; } bool Interpreter::convertLengthC(ELObj *obj, const Identifier *ident, const Location &loc, FOTBuilder::Length &n) { obj = convertFromString(obj, convertAllowNumber, loc); int dim; double d; switch (obj->quantityValue(n, d, dim)) { case ELObj::longQuantity: if (dim == 1) return 1; break; case ELObj::doubleQuantity: if (dim == 1) { // FIXME catch overflow n = long(d); return 1; } break; default: break; } invalidCharacteristicValue(ident, loc); return 0; } bool Interpreter::convertLengthSpecC(ELObj *obj, const Identifier *ident, const Location &loc, FOTBuilder::LengthSpec &result) { obj = convertFromString(obj, convertAllowNumber, loc); if (convertLengthSpec(obj, result)) return 1; invalidCharacteristicValue(ident, loc); return 0; } bool Interpreter::convertOptLengthSpecC(ELObj *obj, const Identifier *ident, const Location &loc, FOTBuilder::OptLengthSpec &result) { obj = convertFromString(obj, convertAllowBoolean|convertAllowNumber, loc); if (obj == makeFalse()) { result.hasLength = 0; return 1; } if (convertLengthSpecC(obj, ident, loc, result.length)) { result.hasLength = 1; return 1; } return 0; } bool Interpreter::convertOptPositiveIntegerC(ELObj *obj, const Identifier *ident, const Location &loc, long &result) { obj = convertFromString(obj, convertAllowNumber|convertAllowBoolean, loc); if (obj == makeFalse()) { result = 0; return 1; } if (obj->exactIntegerValue(result) && result > 0) return 1; // FIXME allow inexact value invalidCharacteristicValue(ident, loc); return 0; } bool Interpreter::convertIntegerC(ELObj *obj, const Identifier *ident, const Location &loc, long &result) { obj = convertFromString(obj, convertAllowNumber, loc); if (obj->exactIntegerValue(result)) return 1; // FIXME allow inexact value invalidCharacteristicValue(ident, loc); return 0; } bool Interpreter::convertLetter2C(ELObj *obj, const Identifier *ident, const Location &loc, FOTBuilder::Letter2 &code) { StringObj *strObj = obj->convertToString(); if (strObj) { const StringC &str = *strObj; if (str.size() == 2 && str[0] >= 'A' && str[0] <= 'Z' && str[1] >= 'A' && str[1] <= 'Z') { code = SP_LETTER2(str[0], str[1]); return 1; } if (str.size() == 0) { code = 0; return 1; } } else if (obj == makeFalse()) { code = 0; return 1; } invalidCharacteristicValue(ident, loc); return 0; } bool Interpreter::convertCharC(ELObj *obj, const Identifier *ident, const Location &loc, Char &result) { if (obj->charValue(result)) return 1; const Char *s; size_t n; if (obj->stringData(s, n) && n == 1) { result = s[0]; return 1; } invalidCharacteristicValue(ident, loc); return 0; } bool Interpreter::convertColorC(ELObj *obj, const Identifier *ident, const Location &loc, ColorObj *&color) { color = obj->asColor(); if (color) return 1; invalidCharacteristicValue(ident, loc); return 0; } bool Interpreter::convertOptColorC(ELObj *obj, const Identifier *ident, const Location &loc, ColorObj *&color) { color = obj->asColor(); if (color) return 1; if (obj == makeFalse()) return 1; invalidCharacteristicValue(ident, loc); return 0; } bool Interpreter::convertRealC(ELObj *obj, const Identifier *ident, const Location &loc, double &result) { obj = convertFromString(obj, convertAllowNumber, loc); if (obj->realValue(result)) return 1; invalidCharacteristicValue(ident, loc); return 0; } bool Interpreter::convertEnumC(ELObj *obj, const Identifier *ident, const Location &loc, FOTBuilder::Symbol &sym) { obj = convertFromString(obj, convertAllowSymbol|convertAllowBoolean, loc); if (obj == makeFalse()) { sym = FOTBuilder::symbolFalse; return 1; } SymbolObj *symObj = obj->asSymbol(); if (symObj) { sym = symObj->cValue(); if (sym != FOTBuilder::symbolFalse) return 1; } if (obj == makeTrue()) { sym = FOTBuilder::symbolTrue; return 1; } invalidCharacteristicValue(ident, loc); return 0; } bool Interpreter::convertEnumC(const FOTBuilder::Symbol *syms, size_t nSyms, ELObj *obj, const Identifier *ident, const Location &loc, FOTBuilder::Symbol &result) { obj = convertFromString(obj, convertAllowSymbol|convertAllowBoolean, loc); SymbolObj *symObj = obj->asSymbol(); FOTBuilder::Symbol val; if (symObj) { val = symObj->cValue(); if (val == FOTBuilder::symbolFalse) { invalidCharacteristicValue(ident, loc); return 0; } } else if (obj == makeFalse()) val = FOTBuilder::symbolFalse; else if (obj == makeTrue()) val = FOTBuilder::symbolTrue; else { invalidCharacteristicValue(ident, loc); return 0; } for (size_t i = 0; i < nSyms; i++) if (val == syms[i]) { result = val; return 1; } invalidCharacteristicValue(ident, loc); return 0; } void Interpreter::invalidCharacteristicValue(const Identifier *ident, const Location &loc) { setNextLocation(loc); message(InterpreterMessages::invalidCharacteristicValue, StringMessageArg(ident->name())); } static bool equal(const Char *s1, const char *s2, size_t n) { while (n > 0) { if (*s1++ != (unsigned char)*s2++) return 0; --n; } return 1; } ELObj *Interpreter::convertFromString(ELObj *obj, unsigned hints, const Location &loc) { // FIXME fold to lower case const Char *s; size_t n; if (!dsssl2() || !obj->stringData(s, n)) return obj; if (hints & convertAllowNumber) { ELObj *tem = convertNumber(StringC(s, n)); if (tem) return tem->resolveQuantities(1, *this, loc); } if (hints & convertAllowSymbol) { StringC tem(s, n); SymbolObj *sym = symbolTable_.lookup(tem); if (sym && sym->cValue() != FOTBuilder::symbolFalse) return sym; } if (hints & convertAllowBoolean) { switch (n) { case 2: if (equal(s, "no", n)) return makeFalse(); break; case 3: if (equal(s, "yes", n)) return makeTrue(); break; case 4: if (equal(s, "true", n)) return makeTrue(); break; case 5: if (equal(s, "false", n)) return makeFalse(); break; } } return obj; } ELObj *Interpreter::convertNumber(const StringC &str, int radix) { { if (str.size() == 0) return 0; size_t i = 0; if (str[0] == '#') { if (str.size() < 2) return 0; switch (str[1]) { case 'd': radix = 10; break; case 'x': radix = 16; break; case 'o': radix = 8; break; case 'b': radix = 2; break; default: return 0; } i += 2; } if (i >= str.size()) return 0; bool negative; if (str[i] == '-') { negative = 1; i++; } else { negative = 0; if (str[i] == '+') i++; } bool hadDecimalPoint = 0; bool hadDigit = 0; long n = 0; int exp = 0; for (; i < str.size(); i++) { Char c = str[i]; int weight; switch (c) { case '0': weight = 0; break; case '1': weight = 1; break; case '2': weight = 2; break; case '3': weight = 3; break; case '4': weight = 4; break; case '5': weight = 5; break; case '6': weight = 6; break; case '7': weight = 7; break; case '8': weight = 8; break; case '9': weight = 9; break; case 'a': weight = 10; break; case 'b': weight = 11; break; case 'c': weight = 12; break; case 'd': weight = 13; break; case 'e': weight = 14; break; case 'f': weight = 15; break; default: weight = -1; break; } if (weight >= 0 && weight < radix) { hadDigit = 1; if (negative) { if (-(unsigned long)n > (-(unsigned long)LONG_MIN - weight)/radix) { if (radix != 10) return 0; return convertNumberFloat(str); } else n = n*radix - weight; } else { if (n > (LONG_MAX - weight)/radix) { if (radix != 10) return 0; return convertNumberFloat(str); } else n = n*radix + weight; } if (hadDecimalPoint) exp--; } else if (c == '.' && radix == 10) { if (hadDecimalPoint) return 0; hadDecimalPoint = 1; } else break; } if (!hadDigit || (radix != 10 && i < str.size())) return 0; if (i + 1 < str.size() && str[i] == 'e' && lexCategory(str[i + 1]) != lexLetter) { hadDecimalPoint = 1; i++; int e; if (!scanSignDigits(str, i, e)) return 0; exp += e; } if (i < str.size()) { int unitExp; Unit *unit = scanUnit(str, i, unitExp); if (!unit) return 0; if (unitExp == 1) return new (*this) UnresolvedLengthObj(n, exp, unit); else return convertNumberFloat(str); } if (hadDecimalPoint) return convertNumberFloat(str); return makeInteger(n); } } bool Interpreter::scanSignDigits(const StringC &str, size_t &i, int &n) { bool negative = 0; if (i < str.size()) { if (str[i] == '-') { i++; negative = 1; } else if (str[i] == '+') i++; } size_t j = i; n = 0; while (i < str.size() && ('0' <= str[i] && str[i] <= '9')) { if (negative) n = n*10 - (str[i] - '0'); else n = n*10 + (str[i] - '0'); i++; } if (i == j) return 0; return 1; } ELObj *Interpreter::convertNumberFloat(const StringC &str) { String buf; // omit an optional radix prefix size_t i0 = 0; if (str.size() > 1 && str[0] == '#' && str[1] == 'd') i0 = 2; for (size_t i = i0; i < str.size(); i++) { if (str[i] > CHAR_MAX || str[i] == '\0') return 0; // 'E' is a valid exponent marker for C but not us if (str[i] == 'E') break; buf += char(str[i]); } buf += '\0'; const char *endPtr; double val = strtod((char *)buf.data(), (char **)&endPtr); if (endPtr - buf.data() == str.size() - i0) return new (*this) RealObj(val); if (endPtr == buf.data()) return 0; int unitExp; Unit *unit = scanUnit(str, endPtr - buf.data() + i0, unitExp); if (!unit) return 0; return new (*this) UnresolvedQuantityObj(val, unit, unitExp); } // Return 0 for error. Unit *Interpreter::scanUnit(const StringC &str, size_t i, int &unitExp) { StringC unitName; while (i < str.size()) { if (str[i] == '-' || str[i] == '+' || ('0' <= str[i] && str[i] <= '9')) break; unitName += str[i++]; } if (i >= str.size()) unitExp = 1; else { unitExp = 0; bool neg = 0; if (str[i] == '-' || str[i] == '+') { if (str[i] == '-') neg = 1; i++; if (i >= str.size()) return 0; } while (i < str.size()) { if (str[i] < '0' || str[i] > '9') return 0; unitExp *= 10; if (neg) unitExp -= (str[i] - '0'); else unitExp += (str[i] - '0'); i++; } } return lookupUnit(unitName); } void Interpreter::setNodeLocation(const NodePtr &nd) { const LocNode *lnp; Location nodeLoc; if ((lnp = LocNode::convert(nd)) != 0 && lnp->getLocation(nodeLoc) == accessOK) setNextLocation(nodeLoc); } bool Interpreter::convertToPattern(ELObj *obj, const Location &loc, Pattern &pattern) { IList list; if (!convertToPattern(obj, loc, 0, list)) return 0; Pattern tem(list); tem.swap(pattern); return 1; } bool Interpreter::convertToPattern(ELObj *obj, const Location &loc, bool isChild, IList &list) { StringObj *str = obj->convertToString(); if (str) { const Char *s; size_t n; str->stringData(s, n); if (!n) { setNextLocation(loc); message(InterpreterMessages::patternEmptyGi); return 0; } list.insert(new Pattern::Element(StringC(s, n))); return 1; } if (obj == makeTrue()) { list.insert(new Pattern::Element(StringC())); return 1; } Pattern::Element *curElement = 0; while (!obj->isNil()) { PairObj *pair = obj->asPair(); if (!pair) { setNextLocation(loc); message(InterpreterMessages::patternNotList); return 0; } ELObj *head = pair->car(); obj = pair->cdr(); if (head == makeTrue() && dsssl2()) { list.insert(curElement = new Pattern::Element(StringC())); continue; } str = head->convertToString(); if (str) { const Char *s; size_t n; str->stringData(s, n); if (!n) { setNextLocation(loc); message(InterpreterMessages::patternEmptyGi); return 0; } list.insert(curElement = new Pattern::Element(StringC(s, n))); continue; } if (!curElement) { setNextLocation(loc); message(InterpreterMessages::patternBadGi, ELObjMessageArg(head, *this)); return 0; } if (head->isNil()) continue; // empty attribute list if (head->asPair()) { if (!patternAddAttributeQualifiers(head, loc, *curElement)) { setNextLocation(loc); message(InterpreterMessages::patternBadAttributeQualifier); return 0; } continue; } KeywordObj *key = dsssl2() ? head->asKeyword() : 0; if (!key) { setNextLocation(loc); message(InterpreterMessages::patternBadMember, ELObjMessageArg(head, *this)); return 0; } pair = obj->asPair(); if (!pair) { setNextLocation(loc); message(obj->isNil() ? InterpreterMessages::patternMissingQualifierValue : InterpreterMessages::patternNotList); return 0; } ELObj *value = pair->car(); obj = pair->cdr(); Identifier::SyntacticKey k; if (!key->identifier()->syntacticKey(k)) { setNextLocation(loc); message(InterpreterMessages::patternUnknownQualifier, StringMessageArg(key->identifier()->name())); return 0; } switch (k) { case Identifier::keyAttributes: if (!patternAddAttributeQualifiers(value, loc, *curElement)) { setNextLocation(loc); message(InterpreterMessages::patternBadAttributeQualifier); return 0; } break; case Identifier::keyChildren: { IList children; if (!convertToPattern(value, loc, 1, children)) return 0; if (!children.empty()) curElement->addQualifier(new Pattern::ChildrenQualifier(children)); } break; case Identifier::keyRepeat: { if (isChild) { setNextLocation(loc); message(InterpreterMessages::patternChildRepeat); return 0; } SymbolObj *sym = value->asSymbol(); if (sym) { const StringC &str = *sym->name(); if (str.size() == 1) { switch (str[0]) { case '*': curElement->setRepeat(0, Pattern::Repeat(-1)); value = 0; break; case '?': curElement->setRepeat(0, 1); value = 0; break; case '+': curElement->setRepeat(1, Pattern::Repeat(-1)); value = 0; break; default: break; } } } if (value) { setNextLocation(loc); message(InterpreterMessages::patternBadQualifierValue, ELObjMessageArg(value, *this), StringMessageArg(key->identifier()->name())); return 0; } } break; case Identifier::keyPosition: { SymbolObj *sym = value->asSymbol(); if (sym) { Pattern::Qualifier *qual = 0; const StringC &str = *sym->name(); if (str == "first-of-type") qual = new Pattern::FirstOfTypeQualifier; else if (str == "last-of-type") qual = new Pattern::LastOfTypeQualifier; else if (str == "first-of-any") qual = new Pattern::FirstOfAnyQualifier; else if (str == "last-of-any") qual = new Pattern::LastOfAnyQualifier; if (qual) { curElement->addQualifier(qual); break; } } setNextLocation(loc); message(InterpreterMessages::patternBadQualifierValue, ELObjMessageArg(value, *this), StringMessageArg(key->identifier()->name())); return 0; } case Identifier::keyOnly: { SymbolObj *sym = value->asSymbol(); if (sym) { Pattern::Qualifier *qual = 0; const StringC &str = *sym->name(); if (str == "of-type") qual = new Pattern::OnlyOfTypeQualifier; else if (str == "of-any") qual = new Pattern::OnlyOfAnyQualifier; if (qual) { curElement->addQualifier(qual); break; } } setNextLocation(loc); message(InterpreterMessages::patternBadQualifierValue, ELObjMessageArg(value, *this), StringMessageArg(key->identifier()->name())); return 0; } break; case Identifier::keyId: { StringObj *str = value->convertToString(); if (!str) { setNextLocation(loc); message(InterpreterMessages::patternBadQualifierValue, ELObjMessageArg(value, *this), StringMessageArg(key->identifier()->name())); return 0; } const Char *s; size_t n; str->stringData(s, n); curElement->addQualifier(new Pattern::IdQualifier(StringC(s, n))); } break; case Identifier::keyClass: { StringObj *str = value->convertToString(); if (!str) { setNextLocation(loc); message(InterpreterMessages::patternBadQualifierValue, ELObjMessageArg(value, *this), StringMessageArg(key->identifier()->name())); return 0; } const Char *s; size_t n; str->stringData(s, n); curElement->addQualifier(new Pattern::ClassQualifier(StringC(s, n))); } break; case Identifier::keyImportance: { long n; if (!value->exactIntegerValue(n)) { setNextLocation(loc); message(InterpreterMessages::patternBadQualifierValue, ELObjMessageArg(value, *this), StringMessageArg(key->identifier()->name())); return 0; } curElement->addQualifier(new Pattern::ImportanceQualifier(n)); } break; case Identifier::keyPriority: { long n; if (!value->exactIntegerValue(n)) { setNextLocation(loc); message(InterpreterMessages::patternBadQualifierValue, ELObjMessageArg(value, *this), StringMessageArg(key->identifier()->name())); return 0; } curElement->addQualifier(new Pattern::PriorityQualifier(n)); } break; default: setNextLocation(loc); message(InterpreterMessages::patternUnknownQualifier, StringMessageArg(key->identifier()->name())); return 0; } } return 1; } bool Interpreter::patternAddAttributeQualifiers(ELObj *obj, const Location &loc, Pattern::Element &elem) { while (!obj->isNil()) { PairObj *pair = obj->asPair(); if (!pair) return 0; StringObj *tem = pair->car()->convertToString(); if (!tem) return 0; const Char *s; size_t n; tem->stringData(s, n); if (n == 0) return 0; StringC name(s, n); obj = pair->cdr(); pair = obj->asPair(); if (!pair) return 0; obj = pair->cdr(); if (pair->car() == makeFalse() && dsssl2()) elem.addQualifier(new Pattern::AttributeMissingValueQualifier(name)); else if (pair->car() == makeTrue() && dsssl2()) elem.addQualifier(new Pattern::AttributeHasValueQualifier(name)); else { tem = pair->car()->convertToString(); if (!tem) return 0; tem->stringData(s, n); elem.addQualifier(new Pattern::AttributeQualifier(name, StringC(s, n))); } } return 1; } void Interpreter::dispatchMessage(Message &msg) { messenger_->dispatchMessage(msg); } void Interpreter::dispatchMessage(const Message &msg) { messenger_->dispatchMessage(msg); } Interpreter::StringSet::StringSet() { } const char *Interpreter::StringSet::store(String &str) { str += '\0'; const String *p = table_.lookup(str); if (!p) { String *tem = new String; str.swap(*tem); table_.insert(tem); p = tem; } return p->data(); } unsigned long Interpreter::StringSet::hash(const String &str) { const char *p = str.data(); unsigned long h = 0; for (size_t n = str.size(); n > 0; n--) h = (h << 5) + h + (unsigned char)*p++; // from Chris Torek return h; } bool Identifier::preferBuiltin_ = 0; Identifier::Identifier(const StringC &name) : Named(name), value_(0), syntacticKey_(notKey), beingComputed_(0), flowObj_(0), builtin_(0), defPart_(0), charNIC_(0) { } void Identifier::maybeSaveBuiltin() { if (defPart_ == unsigned(-1) && !builtin_) { builtin_ = new Identifier(name()); if (value_) builtin_->setValue(value_, defPart_); else builtin_->setDefinition(def_, defPart_, defLoc_); } } void Identifier::setDefinition(Owner &expr, unsigned part, const Location &loc) { maybeSaveBuiltin(); def_.swap(expr); defPart_ = part; defLoc_ = loc; value_ = 0; } void Identifier::setValue(ELObj *value, unsigned partIndex) { maybeSaveBuiltin(); value_ = value; // Built in functions have lowest priority. defPart_ = partIndex; } bool Identifier::defined(unsigned &part, Location &loc) const { if (!def_ && !value_) return 0; part = defPart_; loc = defLoc_; return 1; } ELObj *Identifier::computeValue(bool force, Interpreter &interp) const { if (builtin_ && preferBuiltin_) return builtin_->computeValue(force, interp); if (value_) return value_; bool preferred = 0; if (defPart_ == unsigned(-1) && !preferBuiltin_) { preferBuiltin_ = 1; preferred = 1; } ASSERT(def_); if (beingComputed_) { if (force) { interp.setNextLocation(defLoc_); interp.message(InterpreterMessages::identifierLoop, StringMessageArg(name())); ((Identifier *)this)->value_ = interp.makeError(); } } else { ((Identifier *)this)->beingComputed_ = 1; if (insn_.isNull()) ((Identifier *)this)->insn_ = Expression::optimizeCompile(((Identifier *)this)->def_, interp, Environment(), 0, InsnPtr()); if (force || def_->canEval(0)) { VM vm(interp); ELObj *v = vm.eval(insn_.pointer()); interp.makePermanent(v); ((Identifier *)this)->value_ = v; } ((Identifier *)this)->beingComputed_ = 0; } if (preferred) preferBuiltin_ = 0; return value_; } ELObj *Identifier::computeBuiltinValue(bool force, Interpreter &interp) const { preferBuiltin_ = 1; ELObj *res = computeValue(force, interp); preferBuiltin_ = 0; return res; } Unit::Unit(const StringC &name) : Named(name), computed_(notComputed) { } bool Unit::defined(unsigned &part, Location &loc) const { if (!def_ && computed_ == notComputed) return 0; part = defPart_; loc = defLoc_; return 1; } void Unit::setDefinition(Owner &expr, unsigned part, const Location &loc) { def_.swap(expr); defPart_ = part; defLoc_ = loc; computed_ = notComputed; } void Unit::setValue(long n) { computed_ = computedExact; exact_ = n; dim_ = 1; defPart_ = unsigned(-1); } void Unit::setValue(double n) { computed_ = computedInexact; inexact_ = n; dim_ = 1; defPart_ = unsigned(-1); } void Unit::tryCompute(bool force, Interpreter &interp) { if (computed_ == notComputed) { computed_ = beingComputed; if (insn_.isNull()) insn_ = Expression::optimizeCompile(def_, interp, Environment(), 0, InsnPtr()); if (force || def_->canEval(0)) { VM vm(interp); ELObj *v = vm.eval(insn_.pointer()); switch (v->quantityValue(exact_, inexact_, dim_)) { case ELObj::noQuantity: if (!interp.isError(v)) { interp.setNextLocation(defLoc_); interp.message(InterpreterMessages::badUnitDefinition, StringMessageArg(name())); } computed_ = computedError; break; case ELObj::longQuantity: computed_ = computedExact; break; case ELObj::doubleQuantity: computed_ = computedInexact; break; default: CANNOT_HAPPEN(); } } if (computed_ == beingComputed) computed_ = notComputed; } else if (computed_ == beingComputed) { interp.setNextLocation(defLoc_); interp.message(InterpreterMessages::unitLoop, StringMessageArg(name())); computed_ = computedError; } } // multiply by 10^valExp // quantity has exponent of 1 ELObj *Unit::resolveQuantity(bool force, Interpreter &interp, long val, int valExp) { tryCompute(force, interp); long result; if (computed_ == computedExact && scale(val, valExp, exact_, result)) return new (interp) LengthObj(result); double x = val; while (valExp > 0) { x *= 10.0; valExp--; } while (valExp < 0) { x /= 10.0; valExp++; } return resolveQuantity(force, interp, x, 1); } // val * 10^valExp * factor // return 0 if it can't be done without overflow bool Unit::scale(long val, int valExp, long factor, long &result) { if (factor <= 0) return 0; // feeble while (valExp > 0) { if (factor > LONG_MAX/10) return 0; valExp--; factor *= 10; } if (val >= 0) { if (val > LONG_MAX/factor) return 0; } else { if (-(unsigned long)val > -(unsigned long)LONG_MIN/factor) return 0; } result = val*factor; while (valExp < 0) { result /= 10; valExp++; } return 1; } ELObj *Unit::resolveQuantity(bool force, Interpreter &interp, double val, int unitExp) { tryCompute(force, interp); double factor; switch (computed_) { case computedExact: factor = exact_; break; case computedInexact: factor = inexact_; break; case computedError: return interp.makeError(); default: return 0; } int resultDim = 0; double resultVal = val; while (unitExp > 0) { resultDim += dim_; resultVal *= factor; unitExp--; } while (unitExp < 0) { resultDim -= dim_; resultVal /= factor; unitExp++; } if (resultDim == 0) return new (interp) RealObj(resultVal); return new (interp) QuantityObj(resultVal, resultDim); } void ELObjDynamicRoot::trace(Collector &c) const { c.trace(obj_); } bool operator==(const StringC &s, const char *p) { for (size_t i = 0; i < s.size(); i++) if (p[i] == '\0' || (unsigned char)p[i] != s[i]) return 0; return p[s.size()] == '\0'; } void Interpreter::installBuiltins() { partIndex_ = unsigned(-1); StringC sysid(makeStringC(DEFAULT_SCHEME_BUILTINS)); StringC src; groveManager_->mapSysid(sysid); if (groveManager_->readEntity(sysid, src)) { Owner in(new InternalInputSource(src, InputSourceOrigin::make())); SchemeParser scm(*this, in); scm.parse(); } endPart(); partIndex_ = 0; } void Interpreter::setDefaultLanguage(Owner &expr, unsigned part, const Location &loc) { defaultLanguageDef_.swap(expr); defaultLanguageDefPart_ = part; defaultLanguageDefLoc_ = loc; } ELObj *Interpreter::defaultLanguage() const { return defaultLanguage_; } bool Interpreter::defaultLanguageSet(unsigned &part,Location &loc) const { if(defaultLanguageDef_) { part = defaultLanguageDefPart_; loc = defaultLanguageDefLoc_; return true; } return false; } void Interpreter::compileDefaultLanguage() { if(defaultLanguageDef_) { InsnPtr insn = Expression::optimizeCompile(defaultLanguageDef_, *this, Environment(), 0, InsnPtr()); VM vm(*this); ELObj *obj = vm.eval(insn.pointer()); if(!obj->asLanguage()) { if(!isError(obj)) { setNextLocation(defaultLanguageDefLoc_); message(InterpreterMessages::defLangDeclRequiresLanguage, ELObjMessageArg(obj, *this)); } return; } makePermanent(obj); defaultLanguage_ = obj; } } void Interpreter::installCharProperties() { //FIXME convert this to tables // initialize charProperties_; // if a character doesn't have a value for a property, // the CharMap contains 0. CharProp cp; cp.def = ELObjPart(makeFalse(), unsigned(-1)); cp.loc = Location(); cp.map = new CharMap(ELObjPart(0, 0)); if (!strictMode_) for (int i = 0; i < 10; i++) { ELObjPart num(makeInteger(i), unsigned(-1)); makePermanent(num.obj); cp.map->setChar(i+'0', num); } charProperties_.insert(makeStringC("numeric-equiv"), cp); cp.def = ELObjPart(makeFalse(), unsigned(-1)); cp.map = new CharMap(ELObjPart(0, 0)); if (!strictMode_) { static struct { Char c; unsigned num; } chars[] = { #define SPACE #include "charProps.h" #undef SPACE }; for (size_t i = 0; i < SIZEOF(chars); i++) cp.map->setRange(chars[i].c, chars[i].c+chars[i].num-1, ELObjPart(makeTrue(), unsigned(-1))); } charProperties_.insert(makeStringC("space?"), cp); cp.def = ELObjPart(makeFalse(), unsigned(-1)); cp.map = new CharMap(ELObjPart(0, 0)); if (!strictMode_) { static struct { Char c; unsigned num; } chars[] = { #define RECORD_END #include "charProps.h" #undef RECORD_END }; for (size_t i = 0; i < SIZEOF(chars); i++) cp.map->setRange(chars[i].c, chars[i].c+chars[i].num-1, ELObjPart(makeTrue(), unsigned(-1))); } charProperties_.insert(makeStringC("record-end?"), cp); cp.def = ELObjPart(makeFalse(), unsigned(-1)); cp.map = new CharMap(ELObjPart(0, 0)); if (!strictMode_) { static struct { Char c; unsigned num; } chars[] = { #define BLANK #include "charProps.h" #undef BLANK }; for (size_t i = 0; i < SIZEOF(chars); i++) cp.map->setRange(chars[i].c, chars[i].c+chars[i].num-1, ELObjPart(makeTrue(), unsigned(-1))); } charProperties_.insert(makeStringC("blank?"), cp); cp.def = ELObjPart(makeFalse(), unsigned(-1)); cp.map = new CharMap(ELObjPart(0, 0)); if (!strictMode_) { static struct { Char c; unsigned num; } chars[] = { #define INPUT_TAB #include "charProps.h" #undef INPUT_TAB }; for (size_t i = 0; i < SIZEOF(chars); i++) cp.map->setRange(chars[i].c, chars[i].c+chars[i].num-1, ELObjPart(makeTrue(), unsigned(-1))); } charProperties_.insert(makeStringC("input-tab?"), cp); cp.def = ELObjPart(makeFalse(), unsigned(-1)); cp.map = new CharMap(ELObjPart(0, 0)); if (!strictMode_) { static struct { Char c; unsigned num; } chars[] = { #define INPUT_WHITESPACE #include "charProps.h" #undef INPUT_WHITESPACE }; for (size_t i = 0; i < SIZEOF(chars); i++) cp.map->setRange(chars[i].c, chars[i].c+chars[i].num-1, ELObjPart(makeTrue(), unsigned(-1))); } charProperties_.insert(makeStringC("input-whitespace?"), cp); cp.def = ELObjPart(makeFalse(), unsigned(-1)); cp.map = new CharMap(ELObjPart(0, 0)); if (!strictMode_) { static struct { Char c; unsigned num; } chars[] = { #define PUNCT #include "charProps.h" #undef PUNCT }; for (size_t i = 0; i < SIZEOF(chars); i++) cp.map->setRange(chars[i].c, chars[i].c+chars[i].num-1, ELObjPart(makeTrue(), unsigned(-1))); } charProperties_.insert(makeStringC("punct?"), cp); cp.def = ELObjPart(makeFalse(), unsigned(-1)); cp.map = new CharMap(ELObjPart(0, 0)); if (!strictMode_) { static struct { Char c1, c2; char *script; } chars[] = { #define SCRIPT #include "charProps.h" #undef SCRIPT }; StringC prefix = makeStringC("ISO/IEC 10179::1996//Script::"); for (size_t i = 0; i < SIZEOF(chars); i++) { StringC tem(prefix); tem += makeStringC(chars[i].script); StringObj *obj = new (*this) StringObj(tem); makePermanent(obj); cp.map->setRange(chars[i].c1, chars[i].c2, ELObjPart(obj, unsigned(-1))); } } charProperties_.insert(makeStringC("script"), cp); cp.def = ELObjPart(makeFalse(), unsigned(-1)); cp.map = new CharMap(ELObjPart(0, 0)); charProperties_.insert(makeStringC("glyph-id"), cp); cp.def = ELObjPart(makeFalse(), unsigned(-1)); cp.map = new CharMap(ELObjPart(0, 0)); charProperties_.insert(makeStringC("drop-after-line-break?"), cp); cp.def = ELObjPart(makeFalse(), unsigned(-1)); cp.map = new CharMap(ELObjPart(0, 0)); charProperties_.insert(makeStringC("drop-unless-before-line-break?"), cp); cp.def = ELObjPart(makeInteger(0), unsigned(-1)); makePermanent(cp.def.obj); cp.map = new CharMap(ELObjPart(0, 0)); CharProp cp2; cp2.def = ELObjPart(cp.def.obj, unsigned(-1)); cp2.loc = Location(); cp2.map = new CharMap(ELObjPart(0, 0)); if(!strictMode_) { static struct { Char c; unsigned short num; unsigned short bbp; unsigned short bap; } chars[] ={ #define BREAK_PRIORITIES #include "charProps.h" #undef BREAK_PRIORITIES }; for(size_t i = 0; isetRange(chars[i].c, chars[i].c + chars[i].num-1, ELObjPart(obj, unsigned(-1))); if(chars[i].bap!=chars[i].bbp) { obj = makeInteger(chars[i].bap); makePermanent(obj); } cp2.map->setRange(chars[i].c, chars[i].c+chars[i].num-1, ELObjPart(obj, unsigned(-1))); } } charProperties_.insert(makeStringC("break-before-priority"), cp); charProperties_.insert(makeStringC("break-after-priority"), cp2); cp.def = ELObjPart(makeSymbol(makeStringC("ordinary")), unsigned(-1)); makePermanent(cp.def.obj); cp.map = new CharMap(ELObjPart(0, 0)); charProperties_.insert(makeStringC("math-class"), cp); cp.def = ELObjPart(makeFalse(), unsigned(-1)); cp.map = new CharMap(ELObjPart(0, 0)); charProperties_.insert(makeStringC("math-font-posture"), cp); } // return 1 if the character has the property, return 0 if no such property // or the character doesn't have the property // set ret to the value or the default value ELObj *Interpreter::charProperty(const StringC &prop, Char c, const Location &loc, ELObj *def) { const CharProp *cp = charProperties_.lookup(prop); if (!cp) { setNextLocation(loc); message(InterpreterMessages::unknownCharProperty, StringMessageArg(prop)); return makeError(); } if ((*cp->map)[c].obj) return (*cp->map)[c].obj; else if (def) return def; else return cp->def.obj; } void Interpreter::addCharProperty(const Identifier *prop, Owner &defval) { // FIXME: what about variable default values ? defval->optimize(*this, Environment(), defval); if(!defval->constantValue()) { setNextLocation(defval->location()); message(InterpreterMessages::varCharPropertyExprUnsupported); return; } // FIXME: this is a kind of memory leak makePermanent(defval->constantValue()); ELObjPart val(defval->constantValue(), partIndex_); const CharProp *cp = charProperties_.lookup(prop->name()); if (cp) { if (partIndex_ < cp->def.defPart) ((CharProp *)cp)->def = val; else if (partIndex_ == cp->def.defPart && !ELObj::eqv(*val.obj, *cp->def.obj)) { // FIXME: report previous location setNextLocation(defval->location()); message(InterpreterMessages::duplicateCharPropertyDecl, StringMessageArg(prop->name()), cp->loc); } } else { CharProp ncp; ncp.map = new CharMap(ELObjPart(0,0)); ncp.def = val; ncp.loc = defval->location(); charProperties_.insert(prop->name(), ncp); } } void Interpreter::setCharProperty(const Identifier *prop, Char c, Owner &val) { // FIXME: what about variable default values ? val->optimize(*this, Environment(), val); if(!val->constantValue()) { setNextLocation(val->location()); message(InterpreterMessages::varCharPropertyExprUnsupported); return; } makePermanent(val->constantValue()); const CharProp *cp = charProperties_.lookup(prop->name()); if (!cp) { CharProp ncp; ncp.map = new CharMap(ELObjPart(0,0)); ncp.def = ELObjPart(0, unsigned(-1)); ncp.loc = val->location(); charProperties_.insert(prop->name(), ncp); cp = charProperties_.lookup(prop->name()); } ELObjPart obj = ELObjPart(val->constantValue(), partIndex_); ELObjPart def = (*cp->map)[c]; if (def.obj) { if (partIndex_ < def.defPart) cp->map->setChar(c, obj); else if (partIndex_ == def.defPart && !ELObj::eqv(*obj.obj, *def.obj)) { setNextLocation(val->location()); // FIXME: report previous location message(InterpreterMessages::duplicateAddCharProperty, StringMessageArg(prop->name()), StringMessageArg(StringC(&c, 1))); } } else cp->map->setChar(c, obj); } void Interpreter::compileCharProperties() { HashTableIter iter(charProperties_); const StringC *key; const CharProp *val; while (iter.next(key, val)) if (!val->def.obj) { // FIXME location setNextLocation(val->loc); message(InterpreterMessages::unknownCharProperty, StringMessageArg(*key)); ((CharProp *)val)->def = ELObjPart(makeError(), 0); } } void Interpreter::installExtensionCharNIC(Identifier *ident, const StringC &pubid, const Location &loc) { ident->setCharNIC(currentPartIndex(), loc); } #ifdef DSSSL_NAMESPACE } #endif openjade-1.3.2/style/Interpreter.h0100664000076400007640000005260206757324023015246 0ustar ianian// Copyright (c) 1996 James Clark // See the file copying.txt for copying permission. #ifndef Interpreter_INCLUDED #define Interpreter_INCLUDED 1 #include "ELObj.h" #include "Expression.h" #include "Message.h" #include "PointerTable.h" #include "NamedTable.h" #include "Collector.h" #include "InputSource.h" #include "XcharMap.h" #include "Owner.h" #include "Style.h" #include "SosofoObj.h" #include "ProcessingMode.h" #include "NumberCache.h" #include "HashTable.h" #include "FOTBuilder.h" #include "Owner.h" #include "Boolean.h" #include "Node.h" #include "GroveManager.h" #include "Pattern.h" #include "CharMap.h" #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif class Interpreter; class Identifier : public Named { public: enum SyntacticKey { notKey, keyQuote, keyLambda, keyIf, keyCond, keyAnd, keyOr, keyCase, keyLet, keyLetStar, keyLetrec, keyQuasiquote, keyUnquote, keyUnquoteSplicing, keyDefine, keyElse, keyArrow, keySet, keyBegin, keyThereExists, keyForAll, keySelectEach, keyUnionForEach, keyMake, keyStyle, keyWithMode, keyDefineUnit, keyQuery, keyElement, keyDefault, keyRoot, keyId, keyMode, keyDeclareInitialValue, keyDeclareCharacteristic, keyDeclareFlowObjectClass, keyDeclareCharCharacteristicAndProperty, keyDeclareReferenceValueType, keyDeclareDefaultLanguage, keyDeclareCharProperty, keyDefinePageModel, keyDefineColumnSetModel, keyDefineLanguage, keyAddCharProperties, keyUse, keyLabel, keyContentMap, keyIsKeepWithPrevious, keyIsKeepWithNext, keySpaceBefore, keySpaceAfter, keyLeftHeader, keyCenterHeader, keyRightHeader, keyLeftFooter, keyCenterFooter, keyRightFooter, keyDestination, keyType, keyCoalesceId, keyIsDisplay, keyScale, keyMaxWidth, keyMaxHeight, keyEntitySystemId, keyNotationSystemId, keyPositionPointX, keyPositionPointY, keyEscapementDirection, keyBreakBeforePriority, keyBreakAfterPriority, keyOrientation, keyLength, keyChar, keyGlyphId, keyIsSpace, keyIsRecordEnd, keyIsInputTab, keyIsInputWhitespace, keyIsPunct, keyIsDropAfterLineBreak, keyIsDropUnlessBeforeLineBreak, keyMathClass, keyMathFontPosture, keyScript, keyStretchFactor, keyKeep, keyBreakBefore, keyBreakAfter, keyIsMayViolateKeepBefore, keyIsMayViolateKeepAfter, keyBeforeRowBorder, keyAfterRowBorder, keyBeforeColumnBorder, keyAfterColumnBorder, keyColumnNumber, keyRowNumber, keyNColumnsSpanned, keyNRowsSpanned, keyWidth, keyIsStartsRow, keyIsEndsRow, keyTableWidth, keyMultiModes, keyData, keyMin, keyMax, keyIsConditional, keyPriority, keyGridNRows, keyGridNColumns, keyRadical, keyNull, keyIsRcs, keyParent, keyActive, keyAttributes, keyChildren, keyRepeat, keyPosition, keyOnly, keyClass, keyImportance, keyDeclareClassAttribute, keyDeclareIdAttribute, keyDeclareFlowObjectMacro, keyOrElement, keyPositionPreference, keyCollate, keyToupper, keyTolower, keySymbol, keyOrder, keyForward, keyBackward, keyWhitePoint, keyBlackPoint, keyRange, keyRangeAbc, keyRangeLmn, keyRangeA, keyDecodeAbc, keyDecodeLmn, keyDecodeA, keyMatrixAbc, keyMatrixLmn, keyMatrixA, keyArchitecture }; enum { lastSyntacticKey = keyWithMode }; Identifier(const StringC &name); // Return 0 is value can't yet be computed. ELObj *computeValue(bool force, Interpreter &) const; ELObj *computeBuiltinValue(bool force, Interpreter &) const; bool syntacticKey(SyntacticKey &) const; void setSyntacticKey(SyntacticKey); bool defined(unsigned &, Location &) const; void setDefinition(Owner &, unsigned part, const Location &); void setValue(ELObj *, unsigned defPart = unsigned(-1)); bool evaluated() const; const ConstPtr &inheritedC() const; bool inheritedCDefined(unsigned &, Location &) const; bool charNICDefined(unsigned &, Location &) const; void setCharNIC(unsigned, const Location &); void setInheritedC(const ConstPtr &); void setInheritedC(const ConstPtr &, unsigned, const Location &); FlowObj *flowObj() const; bool flowObjDefined(unsigned &, Location &) const; void setFlowObj(FlowObj *); void setFlowObj(FlowObj *, unsigned part, const Location &); private: unsigned defPart_; Owner def_; InsnPtr insn_; // Value in top-level environment. ELObj *value_; // must be permanent FlowObj *flowObj_; // prototype FlowObj with this name unsigned flowObjPart_; Location flowObjLoc_; Location defLoc_; SyntacticKey syntacticKey_; bool beingComputed_; bool charNIC_; ConstPtr inheritedC_; unsigned inheritedCPart_; Location inheritedCLoc_; void maybeSaveBuiltin(); Identifier *builtin_; static bool preferBuiltin_; }; class Unit : public Named { public: Unit(const StringC &); void setValue(long); void setValue(double); bool defined(unsigned &, Location &) const; // return 0 if it can't be done ELObj *resolveQuantity(bool force, Interpreter &, double val, int unitExp); ELObj *resolveQuantity(bool force, Interpreter &, long val, int valExp); void setDefinition(Owner &, unsigned part, const Location &); private: void tryCompute(bool force, Interpreter &); static bool scale(long val, int valExp, long num, long &result); unsigned defPart_; Location defLoc_; Owner def_; InsnPtr insn_; enum { notComputed, beingComputed, computedExact, computedInexact, computedError } computed_; union { long exact_; double inexact_; }; int dim_; }; class ELObjDynamicRoot : public Collector::DynamicRoot { public: ELObjDynamicRoot(Collector &c, ELObj *obj = 0) : Collector::DynamicRoot(c), obj_(obj) { } void operator=(ELObj *obj) { obj_ = obj; } operator ELObj *() const { return obj_; } private: void trace(Collector &) const; ELObj *obj_; }; struct CharPart { Char c; unsigned defPart; }; struct ELObjPart { ELObjPart(); ELObjPart(ELObj *x, unsigned y); void operator=(const ELObjPart &); bool operator==(const ELObjPart &) const; bool operator!=(const ELObjPart &) const; ELObj *obj; unsigned defPart; }; struct CharProp { CharMap *map; ELObjPart def; Location loc; }; class Interpreter : public Collector, public Pattern::MatchContext, public NumberCache, public Messenger { public: enum PortName { portNumerator, portDenominator, portPreSup, portPreSub, portPostSup, portPostSub, portMidSup, portMidSub, portOverMark, portUnderMark, portOpen, portClose, portDegree, portOperator, portLowerLimit, portUpperLimit, portHeader, portFooter }; enum { nPortNames = portFooter + 1 }; Interpreter(GroveManager *, Messenger *, int unitsPerInch, bool debugMode, bool dsssl2, bool strictMode, const FOTBuilder::Extension *); void endPart(); void dEndPart(); FalseObj *makeFalse(); TrueObj *makeTrue(); NilObj *makeNil(); SymbolObj *makeSymbol(const StringC &); KeywordObj *makeKeyword(const StringC &); IntegerObj *makeInteger(long n); ErrorObj *makeError(); UnspecifiedObj *makeUnspecified(); PairObj *makePair(ELObj *, ELObj *); ELObj *convertGlyphId(const Char *, size_t, const Location &); bool isError(const ELObj *) const; bool isUnspecified(const ELObj *) const; CharObj *makeChar(Char); ELObj *makeLengthSpec(const FOTBuilder::LengthSpec &); AddressObj *makeAddressNone(); NodeListObj *makeEmptyNodeList(); void dispatchMessage(Message &); void dispatchMessage(const Message &); Identifier *lookup(const StringC &); Unit *lookupUnit(const StringC &); FunctionObj *lookupExternalProc(const StringC &); int unitsPerInch() const; unsigned currentPartIndex() const; void compile(); static StringC makeStringC(const char *); SymbolObj *portName(PortName); ELObj *cValueSymbol(FOTBuilder::Symbol); ELObj *charProperty(const StringC &, Char, const Location &, ELObj *); void addCharProperty(const Identifier *, Owner &); void setCharProperty(const Identifier *, Char, Owner &); void compileCharProperties(); // Map of LexCategory XcharMap lexCategory_; static void normalizeGeneralName(const NodePtr &, StringC &); GroveManager *groveManager() const; StyleObj *initialStyle() const; StyleObj *borderTrueStyle() const; StyleObj *borderFalseStyle() const; bool convertBooleanC(ELObj *, const Identifier *, const Location &, bool &); bool convertPublicIdC(ELObj *, const Identifier *, const Location &, FOTBuilder::PublicId &); bool convertStringC(ELObj *, const Identifier *, const Location &, StringC &); bool convertLengthC(ELObj *, const Identifier *, const Location &, FOTBuilder::Length &); bool convertLengthSpecC(ELObj *, const Identifier *, const Location &, FOTBuilder::LengthSpec &); bool convertLetter2C(ELObj *, const Identifier *, const Location &, FOTBuilder::Letter2 &); bool convertOptLengthSpecC(ELObj *, const Identifier *, const Location &, FOTBuilder::OptLengthSpec &); bool convertCharC(ELObj *, const Identifier *, const Location &, Char &); bool convertColorC(ELObj *, const Identifier *, const Location &, ColorObj *&); bool convertOptColorC(ELObj *, const Identifier *, const Location &, ColorObj *&); // FIXME allow inexact value bool convertIntegerC(ELObj *, const Identifier *, const Location &, long &); bool convertOptPositiveIntegerC(ELObj *, const Identifier *, const Location &, long &); bool convertRealC(ELObj *, const Identifier *, const Location &, double &); bool convertEnumC(const FOTBuilder::Symbol *, size_t, ELObj *, const Identifier *, const Location &, FOTBuilder::Symbol &); bool convertEnumC(ELObj *, const Identifier *, const Location &, FOTBuilder::Symbol &); void invalidCharacteristicValue(const Identifier *ident, const Location &loc); bool convertLengthSpec(ELObj *, FOTBuilder::LengthSpec &); bool convertToPattern(ELObj *, const Location &, Pattern &); const ConstPtr &tableBorderC() const; const ConstPtr &cellBeforeRowBorderC() const; const ConstPtr &cellAfterRowBorderC() const; const ConstPtr &cellBeforeColumnBorderC() const; const ConstPtr &cellAfterColumnBorderC() const; const ConstPtr &fractionBarC() const; const char *storePublicId(const Char *, size_t, const Location &); unsigned allocGlyphSubstTableUniqueId(); bool lookupNodeProperty(const StringC &, ComponentName::Id &); bool debugMode() const; bool dsssl2() const; bool strictMode() const; void setNodeLocation(const NodePtr &); void setDefaultLanguage(Owner &,unsigned part,const Location &); ELObj *defaultLanguage() const; bool defaultLanguageSet(unsigned &,Location &) const; void compileDefaultLanguage(); void makeReadOnly(ELObj *); ProcessingMode *lookupProcessingMode(const StringC &); ProcessingMode *initialProcessingMode(); void addClassAttributeName(const StringC &name); void addIdAttributeName(const StringC &name); void installInitialValue(Identifier *, Owner &); void installExtensionInheritedC(Identifier *, const StringC &, const Location &); void installExtensionCharNIC(Identifier *, const StringC &, const Location &); void installExtensionFlowObjectClass(Identifier *, const StringC &, const Location &); // Return 0 if an invalid number. ELObj *convertNumber(const StringC &, int radix = 10); bool convertCharName(const StringC &str, Char &c) const; enum LexCategory { lexLetter, // a - z A - Z lexOtherNameStart, // !$%&*/<=>?~_^: lexAddNameStart, lexDigit, // 0-9 lexOtherNumberStart, // -+. lexOther, lexDelimiter, // ;()" lexWhiteSpace, lexAddWhiteSpace }; LexCategory lexCategory(Xchar); void addStandardChar(const StringC &, const StringC &); void addSdataEntity(const StringC &, const StringC &, const StringC &); void addNameChar(const StringC &); void addSeparatorChar(const StringC &); void setCharRepertoire(const StringC &); private: Interpreter(const Interpreter &); // undefined void operator=(const Interpreter &); // undefined void installSyntacticKeys(); void installPortNames(); void installCValueSymbols(); void installPrimitives(); void installPrimitive(const char *, PrimitiveObj *); void installXPrimitive(const char *, const char *, PrimitiveObj *); void installBuiltins(); void installUnits(); void installCharNames(); void installInheritedCs(); void installInheritedC(const char *, InheritedC *); void installInheritedCProc(const Identifier *); void installFlowObjs(); void installSdata(); void installNodeProperties(); void installCharProperties(); void compileInitialValues(); bool sdataMap(GroveString, GroveString, GroveChar &) const; static bool convertUnicodeCharName(const StringC &str, Char &c); bool convertToPattern(ELObj *obj, const Location &loc, bool isChild, IList &list); bool patternAddAttributeQualifiers(ELObj *obj, const Location &loc, Pattern::Element &elem); enum { convertAllowBoolean = 01, convertAllowSymbol = 02, convertAllowNumber = 04 }; ELObj *convertFromString(ELObj *, unsigned hints, const Location &); ELObj *convertNumberFloat(const StringC &); bool scanSignDigits(const StringC &str, size_t &i, int &n); Unit *scanUnit(const StringC &str, size_t i, int &unitExp); NilObj *theNilObj_; TrueObj *theTrueObj_; FalseObj *theFalseObj_; ErrorObj *theErrorObj_; UnspecifiedObj *theUnspecifiedObj_; typedef PointerTable SymbolTable; SymbolTable symbolTable_; NamedTable identTable_; NamedTable unitTable_; HashTable externalProcTable_; Messenger *messenger_; const FOTBuilder::Extension *extensionTable_; unsigned partIndex_; unsigned dPartIndex_; int unitsPerInch_; unsigned nInheritedC_; GroveManager *groveManager_; ProcessingMode initialProcessingMode_; NamedTable processingModeTable_; SymbolObj *portNames_[nPortNames]; ELObj *cValueSymbols_[FOTBuilder::nSymbols]; HashTable namedCharTable_; HashTable sdataEntityNameTable_; HashTable sdataEntityTextTable_; Vector initialValueNames_; NCVector > initialValueValues_; size_t currentPartFirstInitialValue_; StyleObj *initialStyle_; StyleObj *borderTrueStyle_; StyleObj *borderFalseStyle_; ConstPtr tableBorderC_; ConstPtr cellBeforeRowBorderC_; ConstPtr cellAfterRowBorderC_; ConstPtr cellBeforeColumnBorderC_; ConstPtr cellAfterColumnBorderC_; ConstPtr fractionBarC_; class StringSet { public: StringSet(); const char *store(String &); static unsigned long hash(const String &); static inline const String &key(const String &str) { return str; } private: OwnerTable, String, StringSet, StringSet> table_; }; StringSet publicIds_; unsigned nextGlyphSubstTableUniqueId_; AddressObj *addressNoneObj_; NodeListObj *emptyNodeListObj_; HashTable nodePropertyTable_; bool debugMode_; bool dsssl2_; bool strictMode_; ELObj *defaultLanguage_; Owner defaultLanguageDef_; unsigned defaultLanguageDefPart_; Location defaultLanguageDefLoc_; friend class Identifier; HashTable charProperties_; }; inline ErrorObj *Interpreter::makeError() { return theErrorObj_; } inline bool Interpreter::isError(const ELObj *obj) const { return obj == theErrorObj_; } inline bool Interpreter::isUnspecified(const ELObj *obj) const { return obj == theUnspecifiedObj_; } inline FalseObj *Interpreter::makeFalse() { return theFalseObj_; } inline TrueObj *Interpreter::makeTrue() { return theTrueObj_; } inline NilObj *Interpreter::makeNil() { return theNilObj_; } inline UnspecifiedObj *Interpreter::makeUnspecified() { return theUnspecifiedObj_; } inline IntegerObj *Interpreter::makeInteger(long n) { return new (*this) IntegerObj(n); } inline PairObj *Interpreter::makePair(ELObj *car, ELObj *cdr) { return new (*this) PairObj(car, cdr); } inline CharObj *Interpreter::makeChar(Char c) { return new (*this) CharObj(c); } inline AddressObj *Interpreter::makeAddressNone() { return addressNoneObj_; } inline NodeListObj *Interpreter::makeEmptyNodeList() { return emptyNodeListObj_; } inline ELObj *Interpreter::cValueSymbol(FOTBuilder::Symbol sym) { return cValueSymbols_[sym]; } inline SymbolObj *Interpreter::portName(PortName i) { return portNames_[i]; } inline ProcessingMode *Interpreter::initialProcessingMode() { return &initialProcessingMode_; } inline int Interpreter::unitsPerInch() const { return unitsPerInch_; } inline unsigned Interpreter::currentPartIndex() const { return partIndex_; } inline KeywordObj *Interpreter::makeKeyword(const StringC &str) { return new (*this) KeywordObj(lookup(str)); } inline StyleObj *Interpreter::initialStyle() const { return initialStyle_; } inline StyleObj *Interpreter::borderTrueStyle() const { return borderTrueStyle_; } inline StyleObj *Interpreter::borderFalseStyle() const { return borderFalseStyle_; } inline GroveManager *Interpreter::groveManager() const { return groveManager_; } inline const ConstPtr &Interpreter::tableBorderC() const { return tableBorderC_; } inline const ConstPtr &Interpreter::cellBeforeRowBorderC() const { return cellBeforeRowBorderC_; } inline const ConstPtr &Interpreter::cellAfterRowBorderC() const { return cellAfterRowBorderC_; } inline const ConstPtr &Interpreter::cellBeforeColumnBorderC() const { return cellBeforeColumnBorderC_; } inline const ConstPtr &Interpreter::cellAfterColumnBorderC() const { return cellAfterColumnBorderC_; } inline const ConstPtr &Interpreter::fractionBarC() const { return fractionBarC_; } inline FunctionObj *Interpreter::lookupExternalProc(const StringC &pubid) { FunctionObj *const *func = externalProcTable_.lookup(pubid); return func ? *func : 0; } inline unsigned Interpreter::allocGlyphSubstTableUniqueId() { return nextGlyphSubstTableUniqueId_++; } inline bool Interpreter::debugMode() const { return debugMode_; } inline bool Interpreter::dsssl2() const { return dsssl2_; } inline bool Interpreter::strictMode() const { return strictMode_; } inline void Interpreter::makeReadOnly(ELObj *obj) { if (dsssl2()) Collector::makeReadOnly(obj); } inline void Interpreter::addClassAttributeName(const StringC &name) { classAttributeNames_.push_back(name); } inline void Interpreter::addIdAttributeName(const StringC &name) { idAttributeNames_.push_back(name); } inline Interpreter::LexCategory Interpreter::lexCategory(Xchar c) { return LexCategory(lexCategory_[c]); } inline bool Identifier::syntacticKey(SyntacticKey &key) const { if (syntacticKey_ == notKey) return 0; key = syntacticKey_; return 1; } inline void Identifier::setSyntacticKey(SyntacticKey key) { syntacticKey_ = key; } inline bool Identifier::evaluated() const { return value_ != 0; } inline const ConstPtr &Identifier::inheritedC() const { return inheritedC_; } inline bool Identifier::inheritedCDefined(unsigned &part, Location &loc) const { if (inheritedC_.isNull()) return 0; part = inheritedCPart_; loc = inheritedCLoc_; return 1; } inline bool Identifier::charNICDefined(unsigned &part, Location &loc) const { if (!charNIC_) return 0; part = inheritedCPart_; loc = inheritedCLoc_; return 1; } inline void Identifier::setCharNIC(unsigned part, const Location &loc) { charNIC_ = 1; inheritedC_ = ConstPtr(0); inheritedCPart_ = part; inheritedCLoc_ = loc; } inline void Identifier::setInheritedC(const ConstPtr &ic, unsigned part, const Location &loc) { inheritedC_ = ic; inheritedCPart_ = part; inheritedCLoc_ = loc; } inline void Identifier::setInheritedC(const ConstPtr &ic) { inheritedC_ = ic; inheritedCPart_ = unsigned(-1); inheritedCLoc_ = Location(); } inline FlowObj *Identifier::flowObj() const { return flowObj_; } inline bool Identifier::flowObjDefined(unsigned &part, Location &loc) const { if (!flowObj_) return 0; part = flowObjPart_; loc = flowObjLoc_; return 1; } inline void Identifier::setFlowObj(FlowObj *fo) { flowObj_ = fo; flowObjPart_ = unsigned(-1); } inline void Identifier::setFlowObj(FlowObj *fo, unsigned part, const Location &loc) { flowObj_ = fo; flowObjPart_ = part; flowObjLoc_ = loc; } inline ELObjPart::ELObjPart() : obj(0), defPart(0) { } inline ELObjPart::ELObjPart(ELObj *o, unsigned p) : obj(o), defPart(p) { } inline void ELObjPart::operator=(const ELObjPart &x) { obj = x.obj; defPart = x.defPart; } inline bool ELObjPart::operator==(const ELObjPart &x) const { return defPart == x.defPart && obj && x.obj && ELObj::eqv(*obj, *x.obj); } inline bool ELObjPart::operator!=(const ELObjPart &x) const { return !(*this == x); } #ifdef DSSSL_NAMESPACE } #endif #endif /* not Interpreter_INCLUDED */ openjade-1.3.2/style/InterpreterMessages.msg0100664000076400007640000002456107417604526017303 0ustar ianian!cxx E0+unexpectedEof++unexpected end of file E0+invalidChar++invalid character E0+unknownHash++invalid character after '#' E1+unknownNamedConstant++unknown #! named constant %1 E1+unexpectedToken++unexpected token %1 E0+unterminatedString++string with no closing quote E0+missingCloseParen++missing closing parenthesis E1+invalidNumber++invalid number %1 E1+invalidAfiiGlyphId++invalid AFII glyph identifier %1 E1+callNonFunction++call of non-function object %1 E0+tooManyArgs++too many arguments for function E0+oddKeyArgs++odd number of keyword/value arguments E0+missingArg++missing argument for function call E1+syntacticKeywordAsVariable++syntactic keyword %1 used as variable E1+undefinedVariableReference++reference to undefined variable %1 E1+badCharName++no character with name %1 E1+keywordNotAllowedCall++syntactic keyword %1 not valid in call position E1+symbolRequired++symbol required (got %1) E1+unknownTopLevelForm++unknown top level form %1 E1+badModeForm++bad form %1 in mode group E1+duplicateDefinition++identifier %1 already defined in same part+first definition was here E1+identifierLoop++loop in specification of value of %1 E0+outOfRange++argument out of range E1+unitLoop++loop in specification of value of unit %1 E1+badUnitDefinition++bad value specified for unit %1 E1+duplicateUnitDefinition++unit %1 already defined in same part+first definition was here E1+undefinedQuantity++quantity %1 undefined E0+incompatibleDimensions++incompatible dimensions E3+notABoolean++%2 argument for primitive %1 of wrong type: %3 not a boolean E3+notAPair++%2 argument for primitive %1 of wrong type: %3 not a pair E3+notAList++%2 argument for primitive %1 of wrong type: %3 not a list E3+notASymbol++%2 argument for primitive %1 of wrong type: %3 not a symbol E3+notAString++%2 argument for primitive %1 of wrong type: %3 not a string E3+notAStringOrSymbol++%2 argument for primitive %1 of wrong type: %3 not a string or symbol E3+notASymbolOrString++%2 argument for primitive %1 of wrong type: %3 neither a string not a symbol E3+notAChar++%2 argument for primitive %1 of wrong type: %3 not a char E3+notATimeString++%2 argument for primitive %1 of wrong type: %3 not an ISO8601 time string E3+notAStyle++%2 argument for primitive %1 of wrong type: %3 not a style E3+notAnExactInteger++%2 argument for primitive %1 of wrong type: %3 not an exact integer E3+notAQuantity++%2 argument for primitive %1 of wrong type: %3 not a quantity E3+notAColorSpace++%2 argument for primitive %1 of wrong type: %3 not a color-space E3+notANumber++%2 argument for primitive %1 of wrong type: %3 not a number E3+notASosofo++%2 argument for primitive %1 of wrong type: %3 not a sosofo E3+notAnOptSingletonNode++%2 argument for primitive %1 of wrong type: %3 not an optional singleton node list E3+notASingletonNode++%2 argument for primitive %1 of wrong type: %3 not a singleton node list E3+notANodeList++%2 argument for primitive %1 of wrong type: %3 not a node list E3+notANamedNodeList++%2 argument for primitive %1 of wrong type: %3 not a named node list E3+notALengthSpec++%2 argument for primitive %1 of wrong type: %3 not a length or length-spec E3+notAQuantityOrLengthSpec++%2 argument for primitive %1 of wrong type: %3 not a quantity or length-spec E3+notAPriority++%2 argument for primitive %1 of wrong type: %3 not an integer or the symbol "force" E3+notAPattern++%2 argument for primitive %1 of wrong type: %3 not a valid element matching pattern E3+notAnAddress++%2 argument for primitive %1 of wrong type: %3 not an address E3+notAGlyphId++%2 argument for primitive %1 of wrong type: %3 not a glyph-id E3+notAGlyphSubstTable++%2 argument for primitive %1 of wrong type: %3 not a glyph-subst-table E3+notAGlyphIdPairList++%2 argument for primitive %1 of wrong type: %3 not a list of pairs of glyph-ids E3+notAProcedure++%2 argument for primitive %1 of wrong type: %3 not a procedure E3+notAVector++%2 argument for primitive %1 of wrong type: %3 not a vector E0+duplicateRootRule++root rule already defined in same part with same importance+first definition was here E1+duplicateInitialValue++initial value already declared for characteristic %1 in same part+first declaration was here E1+invalidStyleKeyword++%1 is not a valid keyword in a style expression E2+invalidMakeKeyword++%1 is not a valid keyword in a make expression for flow object class %2 E1+unknownFlowObjectClass++%1 is not the name of any flow object class E1+atomicContent++content expression cannot be specified in make expression for atomic flow object class %1 E0+labelNotASymbol++value for "label:" not a symbol E1+badConnection++no port for label %1 E0+badContentMap++invalid content map E1+contentMapBadPort++content map references non-existent port %1 E1+invalidCharacteristicValue++invalid value for %1 characteristic E0+condFail++no clause in cond expression matched E1+caseFail++no clause in case expression matched %1 E1+caseElse++expected "else" not %1 E0+caseUnresolvedQuantities++sorry, cannot handle unresolvable quantities in datums in case expression E1+errorProc++%1 E0+divideBy0++division by zero E1+invalidKeyArg++procedure does not have %1 keyword argument E0+keyArgsNotKey++argument not a keyword E0+oneBody++support for more than one style-specification-body not yet implemented E0+specNotArc++specification document does not have the DSSSL architecture as a base architecture E0+noStyleSpec++specification document did not contain a style-specification-body element E1+unknownCharName++unknown character name %1 E0+noCurrentNode++attempt to use current node when there is none E0+noCurrentProcessingMode++attempt to process node in illegal context E0+invalidRadix++radix must be 2, 8, 10 or 16 E0+sosofoContext++this context requires a sosofo E0+styleContext++this context requires a style object E0+notInCharacteristicValue++procedure can only be used in evaluation of characteristic value E1+expressionNotImplemented++sorry, %1 expression not implemented E1+colorArgCount++%1 color requires three arguments E1+colorArgType++arguments for %1 color must be numbers E1+colorArgRange++arguments for %1 color must be in the range 0 to 1 E1+colorProcResType++result of procedure in %1 color must be a number E1+unknownColorSpaceFamily++unknown color-space family %1 E1+colorSpaceNoArgs++%1 color-space family does not take any arguments E1+colorSpaceArgError++invalid parameters for %1 color-space family E1+notABuiltinInheritedC++%1 is not a pre-defined inherited characteristic E1+invalidNumberFormat++invalid number format %1 E1+invalidPublicIdChar++invalid character %1 in public identifier I1+debug++debug %1 E0+useLoop++circular use of specification parts E1+missingPart++no style-specification or external-specification with ID %1 E0+noParts++document did not contain any style-specifications or external-specifications E0+tableCellOutsideTable++table-cell flow object not inside a table E0+tableRowOutsideTable++table-row flow object not inside a table E1+noNodePropertyValue++no value for node property %1 E0+returnNotNodeList++value returned by procedure was not a node-list I0+stackTrace++called from here I1+stackTraceEllipsis++called from here...(%1 calls omitted) E0+processNodeLoop++node processing loop detected E0+spliceNotList++unquote-splicing expression does not evaluate to a list E0+readOnly++object is read-only E1+topLevelAssignment++assignment to top-level variable %1 E0+continuationDead++invalid call to continuation E0+patternEmptyGi++empty generic identifier in pattern E0+patternNotList++pattern is not a list E1+patternBadGi++%1 cannot be used as a generic identifier in a pattern E1+patternBadMember++%1 cannot occur in a pattern E0+patternMissingQualifierValue++value missing for qualifier in pattern E1+patternUnknownQualifier++unknown pattern qualifier %1 E2+patternBadQualifierValue++bad value %1 for %2 qualifier in pattern E0+patternChildRepeat++repeat qualifier not allowed inside children qualifier E0+patternBadAttributeQualifier++bad value for attributes qualifier in pattern E1+ambiguousStyle++characteristic %1 applied in style rule with same specificity+other style rule is here E0+ambiguousMatch++node matches more than one pattern with the same specificity E1+uninitializedVariableReference++reference to uninitialized variable %1 E1+actualLoop++circular use of actual value of characteristic %1 E1+duplicateCharacteristic++characteristic %1 already defined in same part+first definition was here E1+duplicateFlowObjectClass++flow object class %1 already defined in same part+first definition was here E1+undefinedMode++mode %1 not defined E1+duplicateCharName++duplicate character name %1 E1+duplicateSdataEntityName++duplicate SDATA entity name %1 E1+duplicateSdataEntityText++duplicate SDATA entity text %1 W0+unsupportedDeclaration++unsupported declaration will be ignored W1+unsupportedCharRepertoire++unsupported character repertoire %1 will be ignored E0+badDeclaration++error in declaration element E1+duplicateDeclaration++duplicate declaration element (%1) E1+invalidIdentifier++%1 is not a valid identifier E0+badLanguageDefinition++error in language definition E0+noCurrentLanguage++no current language E3+notALanguage++%2 argument for primitive %1 of wrong type: %3 not a language E3+notAPositiveInteger++%2 argument for primitive %1 of wrong type: %3 not a po E3+notAnInteger++%2 argument for primitive %1 of wrong type: %3 not an integer E3+notAKeyword++%2 argument for primitive %1 of wrong type: %3 not a keyword E3+notAnAlist++%2 argument for primitive %1 of wrong type: %3 not an alist E3+notACharList++%2 argument for primitive %1 of wrong type: %3 not a list of characters E3+lengthError++%2 argument for primitive %1 has wrong length W1+noExactRepresentation++quantity %1 can't be represented exactly E0+duplicateDefLangDecl++default language already declared in this part+first declaration was here E1+defLangDeclRequiresLanguage++%1 not a language as required in a default-language-declaration E1+invalidUnitName++%1 is not a valid unit name E1+invalidCharName++%1 is not a valid character name E1+invalidCharNumber++%1 is not a valid character number E1+unknownCharProperty++unknown character property %1 E0+badAddCharProperty++error in character property declaration E1+duplicateCharPropertyDecl++duplicate definition for character property %1+first definition was here E2+duplicateAddCharProperty++duplicate character property declaration %1 for character %2 E0+returnNotSosofo++value returned by procedure was not a sosofo E0+varCharPropertyExprUnsupported++variable expressions for character property values currently not supported openjade-1.3.2/style/LangObj.cxx0100664000076400007640000003004207421073253014617 0ustar ianian// Copyright (c) 1998, 1999 Matthias Clasen // See the file copying.txt for copying permission. #include "stylelib.h" #include "LangObj.h" #include "HashTable.h" #include "CharMap.h" #include "constant.h" #include #include #include #include #include #include #ifdef SP_HAVE_LOCALE #ifdef SP_HAVE_WCHAR #include #include #include #endif #endif #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif #ifdef SP_HAVE_LOCALE #ifdef SP_HAVE_WCHAR # ifndef __GLIBC__ static char *strdup(const char *s) { size_t l = strlen(s) + 1; return (char *) memcpy ((char *) malloc (sizeof (char) * l), s, l); } # endif /* __GLIBC__ */ static char *stringify(const StringC &s) { char *r = (char *) malloc (sizeof(char)*(s.size() + 1)); for (size_t i = 0; i < s.size(); i++) r[i] = char(s[i]); r[s.size()] = 0; return r; } // FIXME this is unneeded if SP_WCHAR_IS_USHORT static wchar_t *wchartify(const StringC &s) { wchar_t *r = (wchar_t *) malloc (sizeof(wchar_t)*(s.size() + 1)); for (size_t i = 0; i < s.size(); i++) r[i] = wchar_t(s[i]); r[s.size()] = 0; return r; } char *RefLangObj::localeName(const StringC &lang, const StringC &country) { char *p; p = (char *) malloc (sizeof(char)*(lang.size() + country.size() + 2)); size_t i; for (i = 0; i < lang.size(); i++) p[i] = tolower(char(lang[i])); p[i++] = '_'; for (size_t j = 0; j < country.size(); j++, i++) p[i] = toupper(char(country[j])); p[i] = 0; return p; } bool RefLangObj::supportedLanguage(const StringC &lang, const StringC &country) { char *p = RefLangObj::localeName(lang, country); char *old = strdup(setlocale(LC_ALL, 0)); bool res = (setlocale(LC_ALL, p) != 0); setlocale(LC_ALL, old); free (p); free (old); return res; } RefLangObj::RefLangObj(const StringC &lang, const StringC &country) { char *p = localeName(lang, country); oldLocale_ = strdup(setlocale(LC_ALL, 0)); newLocale_ = strdup(setlocale(LC_ALL, p)); free (p); } RefLangObj::~RefLangObj() { free (oldLocale_); free (newLocale_); } LanguageObj *RefLangObj::asLanguage() { return this; } Char RefLangObj::toUpper(const Char c) const { setlocale(LC_ALL, newLocale_); Char uc = towupper(c); setlocale(LC_ALL, oldLocale_); return uc; } Char RefLangObj::toLower(const Char c) const { setlocale(LC_ALL, newLocale_); Char lc = towlower(c); setlocale(LC_ALL, oldLocale_); return lc; } bool RefLangObj::areEquivalent(const StringC &r, const StringC &s, const Char l) const { setlocale(LC_ALL, newLocale_); wchar_t *rr = wchartify(r); unsigned rn = wcsxfrm (0, rr, 0); wchar_t *rx = (wchar_t *) malloc (sizeof(wchar_t)*rn); wcsxfrm(rx, rr, rn); wchar_t *ss = wchartify(s); unsigned sn = wcsxfrm (0, ss, 0); wchar_t *sx = (wchar_t *) malloc (sizeof(wchar_t)*sn); wcsxfrm(sx, ss, sn); bool res; unsigned k = 0; for (unsigned i = 0; ; i++) { if (rx[i] != sx[i]) { res = 0; break; } if (rx[i] == 1) k++; if (k == l || rx[i] == 0) { res = 1; break; } } free (rr); free (ss); free (rx); free (sx); setlocale(LC_ALL, oldLocale_); return res; } bool RefLangObj::isLess(const StringC &r, const StringC &s) const { setlocale(LC_ALL, newLocale_); wchar_t *rr = wchartify(r); wchar_t *ss = wchartify(s); int res = wcscoll(rr, ss); free (rr); free (ss); setlocale(LC_ALL, oldLocale_); return (res < 0); } bool RefLangObj::isLessOrEqual(const StringC &r, const StringC &s) const { setlocale(LC_ALL, newLocale_); wchar_t *rr = wchartify(r); wchar_t *ss = wchartify(s); int res = wcscoll(rr, ss); free (rr); free (ss); setlocale(LC_ALL, oldLocale_); return (res <= 0); } #endif /* SP_HAVE_WCHAR */ #endif /* SP_HAVE_LOCALE */ class LangBuildData { public: LangBuildData() : currentpos(0) {}; HashTable order; Char currentpos; HashTable ce; HashTable syms; }; class LangData { public: LangData(); LangObj::LevelSort level[20]; // FIXME Char levels; HashTable weights; HashTable collate; CharMap toupper; CharMap tolower; }; LangData::LangData() { toupper.setAll(charMax); tolower.setAll(charMax); levels = 0; } void LangObj::addMultiCollatingElement(const StringC &sym, const StringC &str) { buildData_->ce.insert(sym, str); } void LangObj::addCollatingSymbol(const StringC &sym) { buildData_->syms.insert(sym, charMax); } void LangObj::addLevel(const LevelSort &sort) { data_->level[data_->levels++] = sort; } void LangObj::addDefaultPos() { StringC empty; addCollatingPos(empty); } bool LangObj::addCollatingPos(const StringC &sym) { if (!buildData_->ce.lookup(sym) && !buildData_->syms.lookup(sym)) if (sym.size() <= 1) buildData_->ce.insert(sym, sym); else return 0; buildData_->order.insert(StringC(&buildData_->currentpos, 1), sym); buildData_->currentpos++; return 1; } bool LangObj::addLevelWeight(const Char l, const StringC &w) { if (!buildData_->ce.lookup(w) && !buildData_->syms.lookup(w)) if (w.size() <= 1) buildData_->ce.insert(w, w); else return 0; StringC key; key.resize(3); key[0] = buildData_->currentpos - 1; key[1] = l; for (key[2] = 0; buildData_->order.lookup(key); key[2]++) ; buildData_->order.insert(key, w); return 1; } void LangObj::addToupper(const Char lc, const Char uc) { data_->toupper.setChar(lc, uc); } void LangObj::addTolower(const Char uc, const Char lc) { data_->tolower.setChar(uc, lc); } LangObj::LangObj() { buildData_ = new LangBuildData; data_ = new LangData; } LangObj::~LangObj() { if (buildData_) delete buildData_; if (data_) delete data_; } bool LangObj::compile() { const Char *col; StringC key, val, data; StringC empty; const StringC *match, *match2; data_->collate.insert(empty, buildData_->currentpos); key.resize(1); for (key[0] = 0; key[0] < buildData_->currentpos; key[0]++) { match = buildData_->order.lookup(key); if (match == 0) return 0; match2 = buildData_->ce.lookup(*match); if (match2 == 0) buildData_->syms.insert(*match, key[0]); else data_->collate.insert(*match2, key[0]); } key.resize(2); data.resize(3); for (data[0] = 0; data[0] < buildData_->currentpos; data[0]++) { key[0] = data[0]; for (data[1] = 0; data[1] < levels(); data[1]++) { key[1] = data[1]; val.resize(0); for (data[2] = 0; buildData_->order.lookup(data); data[2]++) { match = buildData_->order.lookup(data); if (match == 0) return 0; match2 = buildData_->ce.lookup(*match); if (match2 == 0) col = buildData_->syms.lookup(*match); else col = data_->collate.lookup(*match2); if (col == 0) return 0; val += *col; } data_->weights.insert(key, val); } } delete buildData_; buildData_ = 0; return 1; } LanguageObj *LangObj::asLanguage() { return this; } bool LangObj::areEquivalent(const StringC &r, const StringC &s, const Char k) const { return (compare(r, s, k) == 0); } int LangObj::compare(const StringC &rr, const StringC &ss, const Char k) const { StringC rc = asCollatingElts(rr); StringC sc = asCollatingElts(ss); for (Char l = 0; (l < k) && (l < levels()); l++) { StringC r = atLevel(rc, l); StringC s = atLevel(sc, l); for (size_t i = 0; (i < r.size()) || (i < s.size()); i++) { if (i == r.size()) return -1; if (i == s.size()) return 1; if (r[i] < s[i]) return -1; if (r[i] > s[i]) return 1; } } return 0; } StringC LangObj::asCollatingElts(const StringC &s) const { StringC res, key, empty; unsigned i, j; int col; const Char *c, *def; Char def_val; def = data_->collate.lookup(empty); def_val = (def == 0) ? charMax : *def; for (i = 0; i < s.size(); i = j) { col = def_val; key = empty; for (j = i; j < s.size(); j++) { key += s[j]; c = data_->collate.lookup(key); if (c == 0) break; col = *c; } if (i == j) // if we get here, s[j] is a single `unknown' char and // we better not reconsider it to avoid an infinite loop. j++; res += col; } return res; } StringC LangObj::atLevel(const StringC &s, const Char l) const { StringC cols, res, key; const StringC *w; if (data_->level[l].backward) for (int i = s.size() - 1; i >= 0; i--) cols += s[i]; else cols = s; key.resize(2); key[1] = l; for (size_t i = 0; i < cols.size(); i++) { key[0] = cols[i]; w = data_->weights.lookup(key); if (w == 0) return res; if (data_->level[l].backward) for (int j = w->size() - 1; j >= 0; j--) { if (data_->level[l].position) res += i; res += (*w)[j]; } else // forward for (int j = 0; j < w->size(); j++) { if (data_->level[l].position) res += i; res += (*w)[j]; } } return res; } Char LangObj::toUpper(const Char c) const { Char uc = data_->toupper[c]; return (uc == charMax) ? c : uc; } Char LangObj::toLower(const Char c) const { Char lc = data_->tolower[c]; return (lc == charMax) ? c : lc; } unsigned LangObj::levels() const { return data_->levels; } bool LangObj::isLess(const StringC &r, const StringC &s) const { return (compare(r, s, levels()) < 0); } bool LangObj::isLessOrEqual(const StringC &r, const StringC &s) const { return (compare(r, s, levels()) <= 0); } #ifdef DSSSL_NAMESPACE } #endif /* Notes on the LangObj class: All data is in the classes LanguageData and LanguageBuildData. The LanguageBuildData is only needed until we call LanguageObj::compile() and is freed afterwards. Once a LangObj is built, we use the functions isLess(), isLessOrEqual(), toUpper(), toLower() and areEquivalent() to implement the language-dependent functions of the expression language. The LangBuildData stores a map symbols --> strings for multi-collating-elements (ce) and a second map positions --> symbols (order). These are incrementally filled up while parsing a define-language expression. order also stores a map positions x levels x weight-numbers --> weights (there may be more than one weight for a given position and level). The empty string is used as key for the default entry in syms. Compilation is done in two phases: In the first phase, we build the syms and collate maps (syms maps symbols --> positions and collate maps multi-collating-elements --> positions). This is achived by inverting the corresponding part of order. In the next phase, the weights map is built. It maps positions x levels x weight-numbers --> positions. Comparing two string works in three phases: First, the strings are converted to positions (done by asCollatingElts()), then we are comparing one level at a time. For this, the strings of positions are converted into strings of weights. How this is done depends on the level. Finally the strings of weights are lexicographically compared. Notes on the RefLangObj class: It uses the underlying POSIX locale system and wchar_t. At least with GNU libc, wchar_t is always encoded as ISO-10646 UCS4, thus the Char and wchar_t codes of a character have the same value. But since sizeof(wchar_t) = 4 != 2 = sizeof(Char), we have to do ugly conversions (at least on i386-linux-glibc2) to be able to use the libc wide character routines wcscoll() and wcsxfrm(). To create a language by reference to a locale, use the external procedure with pubid UNREGISTERED::OpenJade//Procedure::language (language lang country) where lang and country are symbols or strings like the ones used for the language: and country: characteristics of the paragraph FO. If the locale is not supported, language returns #f. If Jade is compiled without locale support (!SP_HAVE_LOCALE) language *always* returns #f. The implementation of string-equiv? depends on the fact that wcsxfrm() returns a 0-terminated string of integers where the substrings for each level are separated by 1. This is true for glibc, but I don't know if it is universally true. */ openjade-1.3.2/style/LangObj.h0100664000076400007640000000522307421073253014247 0ustar ianian// Copyright (c) 1998, 1999 Matthias Clasen // See the file copying.txt for copying permission. #ifndef LangObj_INCLUDED #define LangObj_INCLUDED 1 #include "config.h" #include "ELObj.h" #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif class LanguageObj : public ELObj { public: virtual Char toUpper(const Char) const = 0; virtual Char toLower(const Char) const = 0; virtual bool areEquivalent(const StringC &, const StringC &, const Char) const = 0; virtual bool isLess(const StringC &, const StringC &) const = 0; virtual bool isLessOrEqual(const StringC &, const StringC &) const = 0; }; #ifdef SP_HAVE_LOCALE #ifdef SP_HAVE_WCHAR class RefLangObj : public LanguageObj { public: static bool supportedLanguage(const StringC &, const StringC &); RefLangObj(const StringC &, const StringC &); ~RefLangObj(); void *operator new(size_t, Collector &c) { return c.allocateObject(1); } LanguageObj *asLanguage(); Char toUpper(const Char) const; Char toLower(const Char) const; bool areEquivalent(const StringC &, const StringC &, const Char) const; bool isLess(const StringC &, const StringC &) const; bool isLessOrEqual(const StringC &, const StringC &) const; private: static char *localeName(const StringC &, const StringC &); char *oldLocale_; char *newLocale_; }; #endif /* SP_HAVE_WCHAR */ #endif /* SP_HAVE_LOCALE */ class LangBuildData; class LangData; class LangObj : public LanguageObj { public: struct LevelSort { unsigned int forward :1; unsigned int backward :1; unsigned int position :1; }; LangObj(); ~LangObj(); void *operator new(size_t, Collector &c) { return c.allocateObject(1); } LanguageObj *asLanguage(); unsigned levels() const; Char toUpper(const Char) const; Char toLower(const Char) const; bool areEquivalent(const StringC &, const StringC &, const Char) const; bool isLess(const StringC &, const StringC &) const; bool isLessOrEqual(const StringC &, const StringC &) const; private: void addMultiCollatingElement(const StringC &, const StringC &); void addCollatingSymbol(const StringC &); void addLevel(const LevelSort &); void addDefaultPos(); bool addCollatingPos(const StringC &); bool addLevelWeight(const Char, const StringC &); void addToupper(const Char, const Char); void addTolower(const Char, const Char); bool compile(); int compare(const StringC &, const StringC &, const Char) const; StringC asCollatingElts(const StringC &) const; StringC atLevel(const StringC &, const Char) const; LangBuildData *buildData_; LangData *data_; friend class SchemeParser; }; #ifdef DSSSL_NAMESPACE } #endif #endif /* not LangObj_INCLUDED */ openjade-1.3.2/style/MacroFlowObj.cxx0100664000076400007640000001210606713070465015635 0ustar ianian// Copyright (c) 1997 James Clark // See the file copying.txt for copying permission. #include "stylelib.h" #include "MacroFlowObj.h" #include "VM.h" #include "Insn2.h" #include "Insn.h" #include "Expression.h" #include "Interpreter.h" #include "ProcessContext.h" #include "macros.h" #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif MacroFlowObj::MacroFlowObj(Vector &nics, NCVector > &inits, const Identifier *contentsId, Owner &body) : def_(new Definition(nics, inits, contentsId, body)) { size_t n = def_->nics().size(); charicVals_ = new ELObj *[n]; for (size_t i = 0; i < n; i++) charicVals_[i] = 0; } MacroFlowObj::MacroFlowObj(const MacroFlowObj &obj) : CompoundFlowObj(obj), def_(obj.def_) { size_t n = def_->nics().size(); charicVals_ = new ELObj *[n]; for (size_t i = 0; i < n; i++) charicVals_[i] = obj.charicVals_[i]; } MacroFlowObj::~MacroFlowObj() { delete [] charicVals_; } FlowObj *MacroFlowObj::copy(Collector &c) const { return new (c) MacroFlowObj(*this); } CompoundFlowObj *MacroFlowObj::asCompoundFlowObj() { if (def_->isCompound()) return this; else return 0; } bool MacroFlowObj::hasNonInheritedC(const Identifier *id) const { const Vector &nics = def_->nics(); for (size_t i = 0; i < nics.size(); i++) if (nics[i] == id) return 1; return 0; } void MacroFlowObj::setNonInheritedC(const Identifier *id, ELObj *obj, const Location &, Interpreter &) { const Vector &nics = def_->nics(); for (size_t i = 0;; i++) { if (nics[i] == id) { charicVals_[i] = obj; return; } } } void MacroFlowObj::traceSubObjects(Collector &c) const { size_t n = def_->nics().size(); for (size_t i = 0; i < n; i++) c.trace(charicVals_[i]); CompoundFlowObj::traceSubObjects(c); } class EmptyStyleObj : public StyleObj { public: void appendIter(StyleObjIter &) const { } }; void MacroFlowObj::unpack(VM &vm) { size_t n = def_->nics().size(); vm.needStack(n + 1 + def_->isCompound()); for (size_t i = 0; i < n; i++) *vm.sp++ = charicVals_[i]; if (def_->isCompound()) { ELObj *tem = content(); if (!tem) tem = new (*vm.interp) ProcessChildrenSosofoObj(vm.interp->initialProcessingMode()); *vm.sp++ = tem; } } void MacroFlowObj::processInner(ProcessContext &context) { FOTBuilder &fotb = context.currentFOTBuilder(); fotb.startSequence(); def_->process(context, this); fotb.endSequence(); } MacroFlowObj::Definition::Definition(Vector &charics, NCVector > &charicInits, const Identifier *contentsId, Owner &body) : contentsId_(contentsId) { charics.swap(charics_); charicInits.swap(charicInits_); charicInits_.resize(charics_.size()); body.swap(body_); } void MacroFlowObj::Definition::process(ProcessContext &context, MacroFlowObj *macro) { VM &vm = context.vm(); Interpreter &interp = *vm.interp;; if (code_.isNull()) compile(interp); StyleStack *saveStyleStack = vm.styleStack; vm.styleStack = &context.currentStyleStack(); unsigned saveSpecLevel = vm.specLevel; vm.specLevel = vm.styleStack->level(); Vector dep; vm.actualDependencies = &dep; ELObj *obj = context.vm().eval(code_.pointer(), 0, macro); vm.styleStack = saveStyleStack; vm.specLevel = saveSpecLevel; if (!interp.isError(obj)) { ELObjDynamicRoot protect(interp, obj); ((SosofoObj *)obj)->process(context); } } class UnpackMacroFlowObjInsn : public Insn { public: UnpackMacroFlowObjInsn(InsnPtr next) : next_(next) { } const Insn *execute(VM &vm) const { ((MacroFlowObj *)*--vm.sp)->unpack(vm); return next_.pointer(); } private: InsnPtr next_; }; void MacroFlowObj::Definition::compile(Interpreter &interp) { InsnPtr result; result = new CheckSosofoInsn(body_->location(), result); int nPush = charics_.size() + (contentsId_ != 0); result = PopBindingsInsn::make(nPush, result); BoundVarList frameVars; for (size_t i = 0; i < charics_.size(); i++) { if (i > 0 && charicInits_[i]) charicInits_[i]->markBoundVars(frameVars, 0); frameVars.append(charics_[i], 0); } if (contentsId_) frameVars.append(contentsId_, 0); body_->markBoundVars(frameVars, 0); result = Expression::optimizeCompile(body_, interp, Environment(frameVars, BoundVarList()), nPush, result); for (size_t i = charics_.size(); i > 0; i--) { int stackOffset = int(i) - nPush - 1; if (frameVars[i - 1].boxed()) result = new BoxStackInsn(stackOffset, result); InsnPtr ifNull = new SetKeyArgInsn(stackOffset, result); if (charicInits_[i - 1]) { BoundVarList f(frameVars); f.resize(i - 1); ifNull = Expression::optimizeCompile(charicInits_[i - 1], interp, Environment(f, BoundVarList()), nPush, ifNull); } else ifNull = new ConstantInsn(interp.makeFalse(), ifNull); result = new TestNullInsn(stackOffset, ifNull, result); } code_ = new UnpackMacroFlowObjInsn(result); } #ifdef DSSSL_NAMESPACE } #endif openjade-1.3.2/style/MacroFlowObj.h0100664000076400007640000000412706713070465015266 0ustar ianian// Copyright (c) 1997 James Clark // See the file copying.txt for copying permission. #ifndef MacroFlowObj_INCLUDED #define MacroFlowObj_INCLUDED 1 #include "SosofoObj.h" #include "Insn.h" #include "Resource.h" #include "Ptr.h" #include "Vector.h" #include "NCVector.h" #include "Owner.h" #include "Expression.h" #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif class ProcessContext; class Identifier; class Interpreter; class MacroFlowObj : public CompoundFlowObj { public: void *operator new(size_t, Collector &c) { return c.allocateObject(1); } class Definition : public Resource { public: Definition(Vector &, NCVector > &, const Identifier *contentsId, Owner &); void process(ProcessContext &, MacroFlowObj *); bool isCompound() const; const Vector &nics() const; private: Definition(const Definition &); // undefined void operator=(const Definition &); // undefined void compile(Interpreter &); Vector charics_; NCVector > charicInits_; const Identifier *contentsId_; Owner body_; InsnPtr code_; }; MacroFlowObj(Vector &, NCVector > &, const Identifier *contentsId, Owner &); MacroFlowObj(const MacroFlowObj &); ~MacroFlowObj(); FlowObj *copy(Collector &) const; CompoundFlowObj *asCompoundFlowObj(); bool hasNonInheritedC(const Identifier *) const; void setNonInheritedC(const Identifier *, ELObj *, const Location &, Interpreter &); void traceSubObjects(Collector &) const; void processInner(ProcessContext &); void unpack(VM &); private: void operator=(const MacroFlowObj &); // undefined Ptr def_; ELObj **charicVals_; }; inline bool MacroFlowObj::Definition::isCompound() const { return contentsId_ != 0; } inline const Vector &MacroFlowObj::Definition::nics() const { return charics_; } #ifdef DSSSL_NAMESPACE } #endif #endif /* not MacroFlowObj_INCLUDED */ openjade-1.3.2/style/Makefile.sub0100664000076400007640000000201307565274532015020 0ustar ianianLTVERSION=0:1:0 LIB=ostyle DEPLIBS=-lm -L$(TOP)/grove -L$(TOP)/grove/.libs \ -L$(TOP)/lib -L$(TOP)/lib/.libs \ -L$(TOP)/spgrove -L$(TOP)/spgrove/.libs OBJS=LangObj.o \ Collector.o \ DssslApp.o \ InterpreterMessages.o \ DssslSpecEventHandler.o \ ELObj.o \ ELObjMessageArg.o \ Expression.o \ FOTBuilder.o \ FlowObj.o \ InheritedC.o \ Insn.o \ Interpreter.o \ NumberCache.o \ ProcessContext.o \ ProcessingMode.o \ SchemeParser.o \ Style.o \ StyleEngine.o \ primitive.o \ GroveManager.o \ Pattern.o \ MacroFlowObj.o \ style_inst.o \ MessageModule.o \ INCLUDE=-I$(srcdir)/../grove -I$(srcdir)/../spgrove GENSRCS=style_inst.cxx FlowObj_inst.cxx primitive_inst.cxx \ InterpreterMessages.h DssslAppMessages.h FlowObj.o: FlowObj_inst.cxx primitive.o: primitive_inst.cxx DssslApp.o: DssslAppMessages.h FlowObj.lo: FlowObj_inst.cxx primitive.lo: primitive_inst.cxx DssslApp.lo: DssslAppMessages.h InterpreterMessages.o: InterpreterMessages.h InterpreterMessages.lo: InterpreterMessages.h openjade-1.3.2/style/MessageModule.cxx0100664000076400007640000000053707554622156016054 0ustar ianian// Copyright (c) 2002 Ian Castle // See the file COPYING for copying permission. #ifdef __GNUG__ #pragma implementation #endif // #include "splib.h" // #include "MessageTable.h" #include "stylelib.h" #include #ifdef SP_NAMESPACE namespace SP_NAMESPACE { #endif MessageModule jstyleModule; #ifdef SP_NAMESPACE } #endif openjade-1.3.2/style/NumberCache.cxx0100664000076400007640000001207006713070465015465 0ustar ianian// Copyright (c) 1996 James Clark // See the file copying.txt for copying permission. #include "stylelib.h" #include "NumberCache.h" #include "macros.h" #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif NumberCache::NumberCache() { } inline void advance(NodePtr &node) { if (node.assignNextChunkAfter() != accessOK) CANNOT_HAPPEN(); } // This caching scheme will be defeated (but not disastrously so) // by numbering both notes and footnotes, say, per chapter. unsigned long NumberCache::elementNumberAfter(const NodePtr &node, const StringC &gi, const StringC &resetGi) { NodePtr start; NodePtr lastMatch; unsigned long resetCount = 0; unsigned long count = 0; ElementEntry *entry = elementNumbers_.lookup(resetGi); if (entry) { unsigned long nodeIndex, entryIndex; bool useSubnode = 1; node->elementIndex(nodeIndex); unsigned long nodeGroveIndex = node->groveIndex(); if (entry->node) { if (*entry->node == *node) return 0; entry->node->elementIndex(entryIndex); if (entryIndex < nodeIndex && entry->node->groveIndex() == nodeGroveIndex) { start = lastMatch = entry->node; advance(start); resetCount = entry->num; } else useSubnode = 0; } if (entry->subNode && useSubnode) { GroveString tem; if (entry->subNode->getGi(tem) == accessOK && tem == GroveString(gi.data(), gi.size())) { if (*entry->subNode == *node) return entry->subNum; entry->subNode->elementIndex(entryIndex); if (entryIndex < nodeIndex && entry->subNode->groveIndex() == nodeGroveIndex) { start = entry->subNode; advance(start); count = entry->subNum; } } } } else elementNumbers_.insert(entry = new ElementEntry(resetGi)); if (!start) { node->getGroveRoot(start); start->getDocumentElement(start); } for (;;) { GroveString tem; if (start->getGi(tem) == accessOK) { if (tem == GroveString(resetGi.data(), resetGi.size())) { lastMatch = start; resetCount++; count = 0; } else if (tem == GroveString(gi.data(), gi.size())) count++; } if (*start == *node) break; advance(start); } entry->node = lastMatch; entry->num = resetCount; entry->subNode = node; entry->subNum = count; return count; } unsigned long NumberCache::elementNumber(const NodePtr &node, const StringC &gi) { NodePtr start; NodePtr lastMatch; unsigned long count = 0; ElementEntry *entry = elementNumbers_.lookup(gi); if (entry && entry->node) { if (*entry->node == *node) { lastMatch = node; return entry->num; } unsigned long nodeIndex, entryIndex; entry->node->elementIndex(entryIndex); node->elementIndex(nodeIndex); if (entryIndex < nodeIndex && node->groveIndex() == entry->node->groveIndex()) { lastMatch = start = entry->node; count = entry->num; advance(start); } } if (!start) { node->getGroveRoot(start); start->getDocumentElement(start); } for (;;) { GroveString tem; if (start->getGi(tem) == accessOK && tem == GroveString(gi.data(), gi.size())) { lastMatch = start; count++; } if (*start == *node) break; advance(start); } if (count) { ASSERT(lastMatch); if (!entry) elementNumbers_.insert(entry = new ElementEntry(gi)); entry->node = lastMatch; entry->subNode.clear(); entry->num = count; } return count; } bool NumberCache::childNumber(const NodePtr &node, unsigned long &result) { GroveString gs; if (node->getGi(gs) != accessOK) return 0; NodePtr tem; if (node->getParent(tem) != accessOK) { // must be document element result = 0; return 1; } NodePtr parent(tem); unsigned level = 0; while (tem->getParent(tem) == accessOK) level++; StringC gi(gs.data(), gs.size()); if (level >= childNumbers_.size()) childNumbers_.resize(level + 1); NodePtr start; unsigned long count = 0; Entry *entry = childNumbers_[level].lookup(gi); if (entry) { if (*entry->node == *node) { result = entry->num; return 1; } // Start counting from the cached entry if it has the same // parent as us and it is before us. NodePtr entryParent; entry->node->getParent(entryParent); if (*entryParent == *parent) { unsigned long nodeIndex, entryIndex; entry->node->elementIndex(entryIndex); node->elementIndex(nodeIndex); if (entryIndex < nodeIndex && node->groveIndex() == entry->node->groveIndex()) { start = entry->node; count = entry->num; } } } else { entry = new Entry(gi); childNumbers_[level].insert(entry); } if (!start) node->firstSibling(start); while (*start != *node) { GroveString tem; if (start->getGi(tem) == accessOK && tem == gs) count++; if (start.assignNextChunkSibling() != accessOK) CANNOT_HAPPEN(); } entry->node = node; entry->num = count; result = count; return 1; } NumberCache::Entry::Entry(const StringC &name) : Named(name) { } NumberCache::ElementEntry::ElementEntry(const StringC &name) : NumberCache::Entry(name) { } #ifdef DSSSL_NAMESPACE } #endif openjade-1.3.2/style/NumberCache.h0100664000076400007640000000244106713043552015110 0ustar ianian// Copyright (c) 1996 James Clark // See the file copying.txt for copying permission. #ifndef NumberCache_INCLUDED #define NumberCache_INCLUDED 1 #include "Boolean.h" #include "Node.h" #include "NamedTable.h" #include "StringC.h" #include "NCVector.h" #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif class NumberCache { public: NumberCache(); // Return 0 if argument is not a node. bool childNumber(const NodePtr &node, unsigned long &); // Number of elements before or equal to node whose gi is equal to s. unsigned long elementNumber(const NodePtr &node, const StringC &s); // Number of elements before or equal to node whose gi is equal to s, // and that are after the last element before node with gi reset. unsigned long elementNumberAfter(const NodePtr &, const StringC &s, const StringC &reset); private: struct Entry : Named { Entry(const StringC &); NodePtr node; unsigned long num; }; // A separate cache for each level of the tree. NCVector > childNumbers_; struct ElementEntry : Entry { ElementEntry(const StringC &); NodePtr subNode; unsigned long subNum; }; NamedTable elementNumbers_; friend struct ElementEntry; }; #ifdef DSSSL_NAMESPACE } #endif #endif /* not NumberCache_INCLUDED */ openjade-1.3.2/style/Pattern.cxx0100664000076400007640000002605006713070465014731 0ustar ianian// Copyright (c) 1997 James Clark // See the file copying.txt for copying permission. #include "stylelib.h" #include "Pattern.h" #include "macros.h" #include "Vector.h" #include "Interpreter.h" #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif Pattern::Pattern() : trivial_(0) { } Pattern::Pattern(IList &ancestors) : trivial_(computeTrivial(ancestors)) { ancestors_.swap(ancestors); } bool Pattern::computeTrivial(const IList &ancestors) { IListIter iter(ancestors); if (iter.done()) return 1; if (!iter.cur()->trivial()) return 0; iter.next(); if (!iter.done()) return 0; return 1; } Pattern::Element::Element(const StringC &gi) : gi_(gi), minRepeat_(1), maxRepeat_(1) { } bool Pattern::Element::matches(const NodePtr &nd, MatchContext &context) const { if (gi_.size()) { if (!nd->hasGi(GroveString(gi_.data(), gi_.size()))) return 0; } else { GroveString tem; if (nd->getGi(tem) != accessOK) return 0; } for (IListIter iter(qualifiers_); !iter.done(); iter.next()) if (!iter.cur()->satisfies(nd, context)) return 0; return 1; } bool Pattern::Element::trivial() const { if (minRepeat_ > 1) return 0; for (IListIter iter(qualifiers_); !iter.done(); iter.next()) if (!iter.cur()->vacuous()) return 0; return 1; } void Pattern::Element::contributeSpecificity(int *s) const { if (gi_.size()) s[giSpecificity] += minRepeat_; for (IListIter iter(qualifiers_); !iter.done(); iter.next()) iter.cur()->contributeSpecificity(s); if (minRepeat_ != maxRepeat_) s[repeatSpecificity] -= 1; } Pattern::Qualifier::~Qualifier() { } bool Pattern::Qualifier::vacuous() const { return 0; } bool Pattern::Qualifier::matchAttribute(const StringC &name, const StringC &value, const NodePtr &nd, MatchContext &context) { NamedNodeListPtr atts; if (nd->getAttributes(atts) != accessOK) return 0; NodePtr att; if (atts->namedNode(GroveString(name.data(), name.size()), att) != accessOK) return 0; bool implied; if (att->getImplied(implied) == accessOK && implied) return 0; GroveString tokens; if (att->tokens(tokens) == accessOK) { if (tokens.size() != value.size()) return 0; NodePtr node; NamedNodeListPtr normalizer; if (att->firstChild(node) != accessOK || node->getEntity(node) != accessOK || node->getGroveRoot(node) != accessOK || node->getEntities(normalizer) != accessOK) normalizer = atts; StringC tem(value); tem.resize(normalizer->normalize(&tem[0], tem.size())); if (tokens != GroveString(tem.data(), tem.size())) return 0; } else { NodePtr tem; StringC s; if (att->firstChild(tem) == accessOK) { do { GroveString chunk; if (tem->charChunk(context, chunk) == accessOK) s.append(chunk.data(), chunk.size()); } while (tem.assignNextChunkSibling() == accessOK); } if (s != value) return 0; } return 1; } Pattern::ChildrenQualifier::ChildrenQualifier(IList &children) { children.swap(children_); } bool Pattern::ChildrenQualifier::satisfies(const NodePtr &nd, MatchContext &context) const { ASSERT(!children_.empty()); NodePtr child; if (nd->firstChild(child) != accessOK) return 0; Vector toMatch; for (IListIter iter(children_); !iter.done(); iter.next()) toMatch.push_back(iter.cur()); do { size_t j = 0; for (size_t i = 0; i < toMatch.size(); i++) { if (!toMatch[i]->matches(child, context)) { if (j != i) toMatch[j] = toMatch[i]; j++; } } if (j == 0) return 1; toMatch.resize(j); } while (child.assignNextChunkSibling() == accessOK); return 0; } void Pattern::ChildrenQualifier::contributeSpecificity(int *s) const { for (IListIter iter(children_); !iter.done(); iter.next()) iter.cur()->contributeSpecificity(s); } Pattern::IdQualifier::IdQualifier(const StringC &id) : id_(id) { } bool Pattern::IdQualifier::satisfies(const NodePtr &nd, MatchContext &context) const { GroveString nodeId; if (nd->getId(nodeId) == accessOK) { size_t len = id_.size(); if (nodeId.size() == len) { StringC tem(id_); Interpreter::normalizeGeneralName(nd, tem); GroveString patternId(tem.data(), tem.size()); if (patternId == nodeId) return 1; } } const Vector &idAtts = context.idAttributeNames(); for (size_t i = 0; i < idAtts.size(); i++) if (matchAttribute(idAtts[i], id_, nd, context)) return 1; return 0; } void Pattern::IdQualifier::contributeSpecificity(int *s) const { s[idSpecificity] += 1; } Pattern::ClassQualifier::ClassQualifier(const StringC &cls) : class_(cls) { } bool Pattern::ClassQualifier::satisfies(const NodePtr &nd, MatchContext &context) const { const Vector &classAtts = context.classAttributeNames(); for (size_t i = 0; i < classAtts.size(); i++) if (matchAttribute(classAtts[i], class_, nd, context)) return 1; return 0; } void Pattern::ClassQualifier::contributeSpecificity(int *s) const { s[classSpecificity] += 1; } Pattern::AttributeHasValueQualifier::AttributeHasValueQualifier(const StringC &name) : name_(name) { } bool Pattern::AttributeHasValueQualifier::satisfies(const NodePtr &nd, MatchContext &context) const { NamedNodeListPtr atts; if (nd->getAttributes(atts) != accessOK) return 0; NodePtr att; if (atts->namedNode(GroveString(name_.data(), name_.size()), att) != accessOK) return 0; bool implied; if (att->getImplied(implied) == accessOK && implied) return 0; return 1; } void Pattern::AttributeHasValueQualifier::contributeSpecificity(int *s) const { s[attributeSpecificity] += 1; } Pattern::AttributeMissingValueQualifier::AttributeMissingValueQualifier(const StringC &name) : name_(name) { } bool Pattern::AttributeMissingValueQualifier::satisfies(const NodePtr &nd, MatchContext &context) const { NamedNodeListPtr atts; if (nd->getAttributes(atts) != accessOK) return 1; NodePtr att; if (atts->namedNode(GroveString(name_.data(), name_.size()), att) != accessOK) return 1; bool implied; if (att->getImplied(implied) == accessOK && implied) return 1; return 0; } void Pattern::AttributeMissingValueQualifier::contributeSpecificity(int *s) const { s[attributeSpecificity] += 1; } Pattern::AttributeQualifier::AttributeQualifier(const StringC &name, const StringC &value) : name_(name), value_(value) { } bool Pattern::AttributeQualifier::satisfies(const NodePtr &nd, MatchContext &context) const { return matchAttribute(name_, value_, nd, context); } void Pattern::AttributeQualifier::contributeSpecificity(int *s) const { s[attributeSpecificity] += 1; } void Pattern::PositionQualifier::contributeSpecificity(int *s) const { s[positionSpecificity] += 1; } bool Pattern::FirstOfTypeQualifier::satisfies(const NodePtr &nd, MatchContext &context) const { GroveString ndType; nd->getGi(ndType); NodePtr tem; if (nd->firstSibling(tem) != accessOK) return 1; // must be document element while (*tem != *nd) { GroveString temType; if (tem->getGi(temType) == accessOK && temType == ndType) return 0; tem.assignNextChunkSibling(); } return 1; } bool Pattern::LastOfTypeQualifier::satisfies(const NodePtr &nd, MatchContext &context) const { NodePtr tem; if (nd->nextChunkSibling(tem) != accessOK) return 1; GroveString ndType; nd->getGi(ndType); do { GroveString temType; if (tem->getGi(temType) == accessOK && temType == ndType) return 0; } while (tem.assignNextChunkSibling() == accessOK); return 1; } bool Pattern::FirstOfAnyQualifier::satisfies(const NodePtr &nd, MatchContext &) const { NodePtr tem; if (nd->firstSibling(tem) != accessOK) return 1; // must be document element while (*tem != *nd) { GroveString temType; if (tem->getGi(temType) == accessOK) return 0; tem.assignNextChunkSibling(); } return 1; } bool Pattern::LastOfAnyQualifier::satisfies(const NodePtr &nd, MatchContext &context) const { NodePtr tem; if (nd->nextChunkSibling(tem) != accessOK) return 1; GroveString ndType; nd->getGi(ndType); do { GroveString temType; if (tem->getGi(temType) == accessOK) return 0; } while (tem.assignNextChunkSibling() == accessOK); return 1; } void Pattern::OnlyQualifier::contributeSpecificity(int *s) const { s[onlySpecificity] += 1; } bool Pattern::OnlyOfTypeQualifier::satisfies(const NodePtr &nd, MatchContext &context) const { GroveString ndType; nd->getGi(ndType); NodePtr tem; if (nd->firstSibling(tem) != accessOK) return 1; // must be document element unsigned count = 0; do { GroveString temType; if (tem->getGi(temType) == accessOK && temType == ndType) { if (count++) return 0; } } while (tem.assignNextChunkSibling() == accessOK); return 1; } bool Pattern::OnlyOfAnyQualifier::satisfies(const NodePtr &nd, MatchContext &context) const { NodePtr tem; if (nd->firstSibling(tem) != accessOK) return 1; // must be document element unsigned count = 0; do { GroveString temType; if (tem->getGi(temType) == accessOK) { if (count++) return 0; } } while (tem.assignNextChunkSibling() == accessOK); return 1; } bool Pattern::VacuousQualifier::vacuous() const { return 1; } Pattern::PriorityQualifier::PriorityQualifier(long n) : n_(n) { } void Pattern::PriorityQualifier::contributeSpecificity(int *s) const { s[prioritySpecificity] += n_; } bool Pattern::PriorityQualifier::satisfies(const NodePtr &, MatchContext &) const { return 1; } Pattern::ImportanceQualifier::ImportanceQualifier(long n) : n_(n) { } void Pattern::ImportanceQualifier::contributeSpecificity(int *s) const { s[importanceSpecificity] += n_; } bool Pattern::ImportanceQualifier::satisfies(const NodePtr &, MatchContext &) const { return 1; } bool Pattern::matchAncestors1(const IListIter &ancestors, const NodePtr &node, MatchContext &context) { const Element &r = *ancestors.cur(); NodePtr tem(node); for (Repeat i = 0; i < r.minRepeat(); i++) { if (!tem || !r.matches(tem, context)) return 0; if (tem->getParent(tem) != accessOK) tem.clear(); } Repeat i = r.minRepeat(); for (;;) { IListIter up(ancestors); up.next(); if (matchAncestors(up, tem, context)) break; if (i == r.maxRepeat() || !tem || !r.matches(tem, context)) return 0; i++; if (tem->getParent(tem) != accessOK) tem.clear(); } return 1; } void Pattern::computeSpecificity(int *s) const { for (int i = 0; i < nSpecificity; i++) s[i] = 0; for (IListIter iter(ancestors_); !iter.done(); iter.next()) iter.cur()->contributeSpecificity(s); } int Pattern::compareSpecificity(const Pattern &pattern1, const Pattern &pattern2) { int s1[nSpecificity]; int s2[nSpecificity]; int i; // declare here to avoid gcc bug pattern1.computeSpecificity(s1); pattern2.computeSpecificity(s2); for (i = 0; i < nSpecificity; i++) { if (s1[i] != s2[i]) return s1[i] > s2[i] ? -1 : 1; } return 0; } #ifdef DSSSL_NAMESPACE } #endif openjade-1.3.2/style/Pattern.h0100664000076400007640000001647606713070465014371 0ustar ianian// Copyright (c) 1997 James Clark // See the file copying.txt for copying permission. #ifndef Pattern_INCLUDED #define Pattern_INCLUDED 1 #include "Boolean.h" #include "Node.h" #include "Link.h" #include "IList.h" #include "IListIter.h" #include "StringC.h" #include "Vector.h" #include "Ptr.h" #include "Resource.h" #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif class Pattern { public: class MatchContext : public SdataMapper { public: const Vector &classAttributeNames() const; const Vector &idAttributeNames() const; protected: Vector classAttributeNames_; Vector idAttributeNames_; }; class Qualifier : public Link { public: virtual ~Qualifier(); virtual bool satisfies(const NodePtr &, MatchContext &) const = 0; virtual void contributeSpecificity(int *) const = 0; virtual bool vacuous() const; protected: static bool matchAttribute(const StringC &name, const StringC &value, const NodePtr &nd, MatchContext &context); }; class IdQualifier : public Qualifier { public: IdQualifier(const StringC &); bool satisfies(const NodePtr &, MatchContext &) const; void contributeSpecificity(int *) const; private: StringC id_; }; class ClassQualifier : public Qualifier { public: ClassQualifier(const StringC &); bool satisfies(const NodePtr &, MatchContext &) const; void contributeSpecificity(int *) const; private: StringC class_; }; class AttributeHasValueQualifier : public Qualifier { public: AttributeHasValueQualifier(const StringC &); bool satisfies(const NodePtr &, MatchContext &) const; void contributeSpecificity(int *) const; private: StringC name_; }; class AttributeMissingValueQualifier : public Qualifier { public: AttributeMissingValueQualifier(const StringC &); bool satisfies(const NodePtr &, MatchContext &) const; void contributeSpecificity(int *) const; private: StringC name_; }; class AttributeQualifier : public Qualifier { public: AttributeQualifier(const StringC &, const StringC &); bool satisfies(const NodePtr &, MatchContext &) const; void contributeSpecificity(int *) const; private: StringC name_; StringC value_; }; class PositionQualifier : public Qualifier { public: void contributeSpecificity(int *) const; }; class FirstOfTypeQualifier : public PositionQualifier { public: bool satisfies(const NodePtr &, MatchContext &) const; }; class LastOfTypeQualifier : public PositionQualifier { public: bool satisfies(const NodePtr &, MatchContext &) const; }; class FirstOfAnyQualifier : public PositionQualifier { public: bool satisfies(const NodePtr &, MatchContext &) const; }; class LastOfAnyQualifier : public PositionQualifier { public: bool satisfies(const NodePtr &, MatchContext &) const; }; class OnlyQualifier : public Qualifier { public: void contributeSpecificity(int *) const; }; class OnlyOfTypeQualifier : public OnlyQualifier { public: bool satisfies(const NodePtr &, MatchContext &) const; }; class OnlyOfAnyQualifier : public OnlyQualifier { public: bool satisfies(const NodePtr &, MatchContext &) const; }; class VacuousQualifier : public Qualifier { public: bool vacuous() const; }; class PriorityQualifier : public VacuousQualifier { public: PriorityQualifier(long); void contributeSpecificity(int *) const; bool satisfies(const NodePtr &, MatchContext &) const; private: long n_; }; class ImportanceQualifier : public VacuousQualifier { public: ImportanceQualifier(long); void contributeSpecificity(int *) const; bool satisfies(const NodePtr &, MatchContext &) const; private: long n_; }; typedef unsigned Repeat; class Element : public Link { public: Element(const StringC &); bool matches(const NodePtr &, MatchContext &) const; void contributeSpecificity(int *) const; void addQualifier(Qualifier *); void setRepeat(Repeat minRepeat, Repeat maxRepeat); Repeat minRepeat() const; Repeat maxRepeat() const; bool mustHaveGi(StringC &) const; bool trivial() const; private: StringC gi_; Repeat minRepeat_; Repeat maxRepeat_; IList qualifiers_; }; class ChildrenQualifier : public Qualifier { public: ChildrenQualifier(IList &); bool satisfies(const NodePtr &, MatchContext &) const; void contributeSpecificity(int *) const; private: IList children_; }; Pattern(); Pattern(IList &); void swap(Pattern &); bool matches(const NodePtr &, MatchContext &) const; // If mustHaveGi returns true, then any element that matches the pattern // must have the string returned in str. bool mustHaveGi(StringC &str) const; // A pattern is trivial if any element that has the gi returned my mustHaveGi // matches the pattern, or, if mustHaveGi returns false, if any element matches // the pattern. bool trivial() const; static int compareSpecificity(const Pattern &, const Pattern &); enum { importanceSpecificity, idSpecificity, classSpecificity, giSpecificity, repeatSpecificity, prioritySpecificity, onlySpecificity, positionSpecificity, attributeSpecificity, nSpecificity }; private: Pattern(const Pattern &); // undefined void operator=(const Pattern &); // undefined void computeSpecificity(int *) const; static bool computeTrivial(const IList &); static bool matchAncestors(const IListIter &, const NodePtr &, MatchContext &); static bool matchAncestors1(const IListIter &, const NodePtr &, MatchContext &); IList ancestors_; // first is self, second is parent ... bool trivial_; }; inline void Pattern::Element::setRepeat(Repeat minRepeat, Repeat maxRepeat) { minRepeat_ = minRepeat; maxRepeat_ = maxRepeat; } inline Pattern::Repeat Pattern::Element::minRepeat() const { return minRepeat_; } inline Pattern::Repeat Pattern::Element::maxRepeat() const { return maxRepeat_; } inline void Pattern::Element::addQualifier(Qualifier *q) { qualifiers_.insert(q); } inline bool Pattern::matchAncestors(const IListIter &ancestors, const NodePtr &node, MatchContext &context) { return ancestors.done() || matchAncestors1(ancestors, node, context); } inline bool Pattern::matches(const NodePtr &nd, MatchContext &context) const { return matchAncestors(IListIter(ancestors_), nd, context); } inline void Pattern::swap(Pattern &pattern) { ancestors_.swap(pattern.ancestors_); bool tem = trivial_; trivial_ = pattern.trivial_; pattern.trivial_ = tem; } inline bool Pattern::Element::mustHaveGi(StringC &gi) const { if (minRepeat_ == 0) return 0; else if (gi_.size()) { gi = gi_; return 1; } else return 0; } inline bool Pattern::mustHaveGi(StringC &gi) const { return !ancestors_.empty() && ancestors_.head()->mustHaveGi(gi); } inline const Vector &Pattern::MatchContext::classAttributeNames() const { return classAttributeNames_; } inline const Vector &Pattern::MatchContext::idAttributeNames() const { return idAttributeNames_; } inline bool Pattern::trivial() const { return trivial_; } #ifdef DSSSL_NAMESPACE } #endif #endif /* not Pattern_INCLUDED */ openjade-1.3.2/style/ProcessContext.cxx0100664000076400007640000005241007417604526016301 0ustar ianian// Copyright (c) 1996 James Clark // See the file copying.txt for copying permission. #include "stylelib.h" #include "ProcessContext.h" #include "Interpreter.h" #include "InterpreterMessages.h" #include "SosofoObj.h" #include "macros.h" #include "IListIter.h" #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif ProcessContext::ProcessContext(Interpreter &interp, FOTBuilder &fotb) : Collector::DynamicRoot(interp), vm_(interp), flowObjLevel_(0), havePageType_(0), connectableStackLevel_(0) { connectionStack_.insert(new Connection(&fotb)); } void ProcessContext::process(const NodePtr &node) { Interpreter &interp = *vm_.interp; StyleObj *style = interp.initialStyle(); if (style) { currentStyleStack().push(style, vm(), currentFOTBuilder()); currentFOTBuilder().startSequence(); } processNode(node, interp.initialProcessingMode()); if (style) { currentFOTBuilder().endSequence(); currentStyleStack().pop(); } } void ProcessContext::processNodeSafe(const NodePtr &nodePtr, const ProcessingMode *processingMode, bool chunk) { unsigned long elementIndex; if (nodePtr->elementIndex(elementIndex) == accessOK) { unsigned groveIndex = nodePtr->groveIndex(); for (size_t i = 0; i < nodeStack_.size(); i++) { const NodeStackEntry &nse = nodeStack_[i]; if (nse.elementIndex == elementIndex && nse.groveIndex == groveIndex && nse.processingMode == processingMode) { vm_.interp->setNodeLocation(nodePtr); vm_.interp->message(InterpreterMessages::processNodeLoop); return; } } nodeStack_.resize(nodeStack_.size() + 1); NodeStackEntry &e = nodeStack_.back(); e.elementIndex = elementIndex; e.groveIndex = groveIndex; e.processingMode = processingMode; processNode(nodePtr, processingMode, chunk); nodeStack_.resize(nodeStack_.size() - 1); } else processNode(nodePtr, processingMode, chunk); } void ProcessContext::processNode(const NodePtr &nodePtr, const ProcessingMode *processingMode, bool chunk) { ASSERT(processingMode != 0); GroveString str; if (nodePtr->charChunk(*vm_.interp, str) == accessOK) currentFOTBuilder().charactersFromNode(nodePtr, str.data(), chunk ? str.size() : 1); else { EvalContext::CurrentNodeSetter cns(nodePtr, processingMode, vm()); ProcessingMode::Specificity saveSpecificity(matchSpecificity_); matchSpecificity_ = ProcessingMode::Specificity(); bool hadStyle = 0; currentFOTBuilder().startNode(nodePtr, processingMode->name()); for (;;) { const ProcessingMode::Rule *rule = vm().processingMode->findMatch(nodePtr, *vm_.interp, *vm_.interp, matchSpecificity_); if (!rule) { if (hadStyle) { currentStyleStack().pushEnd(vm(), currentFOTBuilder()); currentFOTBuilder().startSequence(); } processChildren(processingMode); break; } if (!matchSpecificity_.isStyle()) { SosofoObj *sosofoObj; InsnPtr insn; rule->action().get(insn, sosofoObj); if (hadStyle) { currentStyleStack().pushEnd(vm(), currentFOTBuilder()); currentFOTBuilder().startSequence(); } if (sosofoObj) sosofoObj->process(*this); else { ELObj *obj = vm().eval(insn.pointer()); if (vm_.interp->isError(obj)) { if (processingMode->name().size() == 0) processChildren(processingMode); } else { ELObjDynamicRoot protect(*vm_.interp, obj); ((SosofoObj *)obj)->process(*this); } } break; } SosofoObj *sosofoObj; InsnPtr insn; rule->action().get(insn, sosofoObj); ELObj *obj = vm().eval(insn.pointer()); if (!vm_.interp->isError(obj)) { if (!hadStyle) { currentStyleStack().pushStart(); hadStyle = 1; } currentStyleStack().pushContinue((StyleObj *)obj, rule, nodePtr, vm_.interp); } } if (hadStyle) { currentFOTBuilder().endSequence(); currentStyleStack().pop(); } currentFOTBuilder().endNode(); matchSpecificity_ = saveSpecificity; } } void ProcessContext::nextMatch(StyleObj *overridingStyle) { ProcessingMode::Specificity saveSpecificity(matchSpecificity_); StyleObj *saveOverridingStyle = vm().overridingStyle; if (overridingStyle) vm().overridingStyle = overridingStyle; const ProcessingMode::Rule *rule = vm().processingMode->findMatch(vm().currentNode, *vm_.interp, *vm_.interp, matchSpecificity_); if (rule) { ASSERT(!matchSpecificity_.isStyle()); SosofoObj *sosofoObj; InsnPtr insn; rule->action().get(insn, sosofoObj); if (sosofoObj) sosofoObj->process(*this); else { ELObj *obj = vm().eval(insn.pointer()); if (vm_.interp->isError(obj)) processChildren(vm().processingMode); else { ELObjDynamicRoot protect(*vm_.interp, obj); ((SosofoObj *)obj)->process(*this); } } } else processChildren(vm().processingMode); vm().overridingStyle = saveOverridingStyle; matchSpecificity_ = saveSpecificity; } void ProcessContext::processChildren(const ProcessingMode *processingMode) { if (vm().currentNode.assignFirstChild() == accessOK) { do { processNode(vm().currentNode, processingMode); } while (vm().currentNode.assignNextChunkSibling() == accessOK); } else if (vm().currentNode->getDocumentElement(vm().currentNode) == accessOK) processNode(vm().currentNode, processingMode); } inline bool isWhiteSpace(Char c, Interpreter &interp) { return interp.charProperty( interp.makeStringC("input-whitespace?"), c, Location(), 0)->isTrue(); } static bool onlyWhiteSpaceFollows(const NodePtr &node, Interpreter &interp) { NodePtr tem; if (node->nextChunkSibling(tem) == accessOK) { do { GroveString str; if (tem->charChunk(interp, str) == accessOK) { for (size_t i = 0; i < str.size(); i++) if (!isWhiteSpace(str[i], interp)) return 0; } else if (tem->getGi(str) == accessOK) return 0; } while (tem.assignNextChunkSibling() == accessOK); } return 1; } void ProcessContext::processChildrenTrim(const ProcessingMode *processingMode) { if (vm().currentNode.assignFirstChild() == accessOK) { bool atStart = 1; do { NodePtr curNode = vm().currentNode; GroveString str; if (curNode->charChunk(*vm().interp, str) == accessOK) { if (atStart) { const Char *s = str.data(); size_t n = str.size(); for (; n > 0; n--, s++) { if (!isWhiteSpace(*s, *vm().interp)) break; } if (n == 0) str.assign(0, 0); else { atStart = 0; if (s != str.data()) { if (curNode->followSiblingRef(str.size() - (n + 1), curNode) != accessOK) CANNOT_HAPPEN(); str.assign(s, n); } } } if (str.size()) { if (isWhiteSpace(str[str.size() - 1], *vm().interp) && onlyWhiteSpaceFollows(curNode, *vm().interp)) { for (size_t n = str.size() - 1; n > 0; n--) { if (!isWhiteSpace(str[n - 1], *vm().interp)) { currentFOTBuilder().charactersFromNode(curNode, str.data(), n); return; } } return; } currentFOTBuilder().charactersFromNode(curNode, str.data(), str.size()); } } else { if (atStart && vm().currentNode->getGi(str) == accessOK) atStart = 0; processNode(vm().currentNode, processingMode); } } while (vm().currentNode.assignNextChunkSibling() == accessOK); } else if (vm().currentNode->getDocumentElement(vm().currentNode) == accessOK) processNode(vm().currentNode, processingMode); } void ProcessContext::startConnection(SymbolObj *label, const Location &loc) { unsigned connLevel = connectableStackLevel_; for (IListIter iter(connectableStack_); !iter.done(); iter.next(), --connLevel) { Connectable *conn = iter.cur(); for (size_t i = 0; i < conn->ports.size(); i++) { Port &port = conn->ports[i]; for (size_t j = 0; j < port.labels.size(); j++) if (port.labels[j] == label) { restoreConnection(connLevel, i); return; } } for (size_t i = 0; i < conn->principalPortLabels.size(); i++) if (conn->principalPortLabels[i] == label) { restoreConnection(connLevel, size_t(-1)); return; } } vm().interp->setNextLocation(loc); vm().interp->message(InterpreterMessages::badConnection, StringMessageArg(*label->name())); connectionStack_.head()->nBadFollow++; } void ProcessContext::endConnection() { if (inTableRow() && tableStack_.head()->rowConnectableLevel == connectableStackLevel_) endTableRow(); if (connectionStack_.head()->nBadFollow > 0) connectionStack_.head()->nBadFollow--; else { currentFOTBuilder().endNode(); Port *port = connectionStack_.head()->port; if (port && --(port->connected) == 0) { while (!port->saveQueue.empty()) { SaveFOTBuilder *saved = port->saveQueue.get(); saved->emit(*port->fotb); delete saved; } } delete connectionStack_.get(); } } void ProcessContext::restoreConnection(unsigned connectableLevel, size_t portIndex) { unsigned connLevel = connectableStackLevel_; IListIter iter(connectableStack_); for (; connLevel != connectableLevel; iter.next(), --connLevel) ; Connectable *conn = iter.cur(); if (portIndex != size_t(-1)) { Port &port = conn->ports[portIndex]; Connection *c = new Connection(conn->styleStack, &port, connLevel); if (port.connected) { port.connected++; SaveFOTBuilder *save = new SaveFOTBuilder(vm().currentNode, vm().processingMode->name()); c->fotb = save; port.saveQueue.append(save); } else { c->fotb = port.fotb; port.connected = 1; } connectionStack_.insert(c); currentFOTBuilder().startNode(vm().currentNode, vm().processingMode->name()); } else { Connection *c = new Connection(conn->styleStack, 0, connLevel); if (conn->flowObjLevel == flowObjLevel_) { c->fotb = ¤tFOTBuilder(); } else { SaveFOTBuilder *save = new SaveFOTBuilder(vm().currentNode, vm().processingMode->name()); c->fotb = save; if (conn->flowObjLevel >= principalPortSaveQueues_.size()) principalPortSaveQueues_.resize(conn->flowObjLevel + 1); principalPortSaveQueues_[conn->flowObjLevel].append(save); } connectionStack_.insert(c); currentFOTBuilder().startNode(vm().currentNode, vm().processingMode->name()); } } void ProcessContext::endFlowObj() { flowObjLevel_--; if (flowObjLevel_ < principalPortSaveQueues_.size()) { IQueue &saveQueue = principalPortSaveQueues_[flowObjLevel_]; while (!saveQueue.empty()) { SaveFOTBuilder *saved = saveQueue.get(); saved->emit(currentFOTBuilder()); delete saved; } } } ProcessContext::Connection::Connection(const StyleStack &s, Port *p, unsigned connLevel) : styleStack(s), port(p), nBadFollow(0), connectableLevel(connLevel) { } ProcessContext::Connection::Connection(FOTBuilder *f) : fotb(f), port(0), nBadFollow(0), connectableLevel(0) { } void ProcessContext::pushPorts(bool, const Vector &labels, const Vector &fotbs) { Connectable *c = new Connectable(labels.size(), currentStyleStack(), flowObjLevel_); connectableStack_.insert(c); for (size_t i = 0; i < labels.size(); i++) { c->ports[i].labels.push_back(labels[i]); c->ports[i].fotb = fotbs[i]; } connectableStackLevel_++; // FIXME deal with !hasPrincipalPort } void ProcessContext::popPorts() { connectableStackLevel_--; delete connectableStack_.get(); } void ProcessContext::pushPrincipalPort(FOTBuilder* principalPort) { connectionStack_.insert(new Connection(principalPort)); } void ProcessContext::popPrincipalPort() { delete connectionStack_.get(); } void ProcessContext::startDiscardLabeled(SymbolObj *label) { startFlowObj(); Connectable *c = new Connectable(1, currentStyleStack(), flowObjLevel_); connectableStack_.insert(c); c->ports[0].labels.push_back(label); c->ports[0].fotb = &ignoreFotb_; } void ProcessContext::endDiscardLabeled() { delete connectableStack_.get(); endFlowObj(); } void ProcessContext::startMapContent(ELObj *contentMap, const Location &loc) { bool badFlag = 0; if (!connectableStack_.head() || connectableStack_.head()->flowObjLevel != flowObjLevel_) connectableStack_.insert(new Connectable(0, currentStyleStack(), flowObjLevel_)); Connectable &conn = *connectableStack_.head(); Vector portNames(conn.ports.size()); for (size_t i = 0; i < conn.ports.size(); i++) { portNames[i] = conn.ports[i].labels[0]; conn.ports[i].labels.clear(); } for (;;) { if (contentMap->isNil()) break; PairObj *tem = contentMap->asPair(); if (!tem) { badContentMap(badFlag, loc); break; } ELObj *entry = tem->car(); contentMap = tem->cdr(); tem = entry->asPair(); if (tem) { SymbolObj *label = tem->car()->asSymbol(); if (label) { // FIXME check if label already specified tem = tem->cdr()->asPair(); if (tem) { SymbolObj *port = tem->car()->asSymbol(); if (port) { for (size_t i = 0; i < portNames.size(); i++) if (portNames[i] == port) { conn.ports[i].labels.push_back(label); port = 0; break; } if (port) { vm().interp->setNextLocation(loc); vm().interp->message(InterpreterMessages::contentMapBadPort, StringMessageArg(*port->name())); } } else if (tem->car() == vm().interp->makeFalse()) conn.principalPortLabels.push_back(label); else badContentMap(badFlag, loc); if (!tem->cdr()->isNil()) badContentMap(badFlag, loc); } else badContentMap(badFlag, loc); } else badContentMap(badFlag, loc); } else badContentMap(badFlag, loc); } } void ProcessContext::endMapContent() { if (connectableStack_.head()->ports.size() == 0) delete connectableStack_.get(); } void ProcessContext::badContentMap(bool &badFlag, const Location &loc) { if (badFlag) return; badFlag = 1; vm().interp->setNextLocation(loc); vm().interp->message(InterpreterMessages::badContentMap); } ProcessContext::Connectable::Connectable(int nPorts, const StyleStack &ss, unsigned fol) : ports(nPorts), styleStack(ss), flowObjLevel(fol) { } ProcessContext::Port::Port() : connected(0), fotb(0) { } void ProcessContext::trace(Collector &c) const { for (IListIter iter(connectionStack_); !iter.done(); iter.next()) iter.cur()->styleStack.trace(c); for (IListIter iter(connectableStack_); !iter.done(); iter.next()) iter.cur()->styleStack.trace(c); for (IListIter iter(tableStack_); !iter.done(); iter.next()) { c.trace(iter.cur()->rowStyle); Vector > &styles = iter.cur()->columnStyles; for (size_t i = 0; i < styles.size(); i++) for (size_t j = 0; j < styles[i].size(); j++) c.trace(styles[i][j]); } } SosofoObj *SosofoObj::asSosofo() { return this; } bool SosofoObj::tableBorderStyle(StyleObj *&) { return 0; } bool SosofoObj::isRule() { return 0; } bool SosofoObj::ruleStyle(ProcessContext &, StyleObj *&) { return 0; } bool SosofoObj::isCharacter() { return 0; } bool SosofoObj::characterStyle(ProcessContext &, StyleObj *&, FOTBuilder::CharacterNIC &) { return 0; } AppendSosofoObj *AppendSosofoObj::asAppendSosofo() { return this; } void AppendSosofoObj::process(ProcessContext &context) { for (size_t i = 0; i < v_.size(); i++) v_[i]->process(context); } void AppendSosofoObj::traceSubObjects(Collector &c) const { for (size_t i = 0; i < v_.size(); i++) c.trace(v_[i]); } void LiteralSosofoObj::process(ProcessContext &context) { const Char *s; size_t n; if (str_->stringData(s, n)) context.currentFOTBuilder().characters(s, n); } void LiteralSosofoObj::traceSubObjects(Collector &c) const { c.trace(str_); } void ProcessChildrenSosofoObj::process(ProcessContext &context) { NodePtr node(context.vm().currentNode); context.processChildren(mode_); context.vm().currentNode = node; } void ProcessChildrenTrimSosofoObj::process(ProcessContext &context) { NodePtr node(context.vm().currentNode); context.processChildrenTrim(mode_); context.vm().currentNode = node; } NextMatchSosofoObj::NextMatchSosofoObj(StyleObj *style) : style_(style) { } void NextMatchSosofoObj::process(ProcessContext &context) { context.nextMatch(style_); } void EmptySosofoObj::process(ProcessContext &) { // nothing needed } ProcessNodeListSosofoObj::ProcessNodeListSosofoObj(NodeListObj *nodeList, const ProcessingMode *mode) : nodeList_(nodeList), mode_(mode) { hasSubObjects_ = 1; } void ProcessNodeListSosofoObj::process(ProcessContext &context) { NodeListObj *nl = nodeList_; Interpreter &interp = *context.vm().interp; ELObjDynamicRoot protect(interp, nl); for (;;) { NodePtr node = nl->nodeListFirst(context.vm(), interp); if (!node) break; bool chunk; nl = nl->nodeListChunkRest(context.vm(), interp, chunk); protect = nl; context.processNodeSafe(node, mode_, chunk); } } void ProcessNodeListSosofoObj::traceSubObjects(Collector &c) const { c.trace(nodeList_); } ProcessNodeSosofoObj::ProcessNodeSosofoObj(const NodePtr &node, const ProcessingMode *mode) : node_(node), mode_(mode) { } void ProcessNodeSosofoObj::process(ProcessContext &context) { context.processNode(node_, mode_); } void CurrentNodePageNumberSosofoObj::process(ProcessContext &context) { context.currentFOTBuilder().currentNodePageNumber(node_); } void PageNumberSosofoObj::process(ProcessContext &context) { context.currentFOTBuilder().pageNumber(); } SetNonInheritedCsSosofoObj ::SetNonInheritedCsSosofoObj(FlowObj *flowObj, const InsnPtr &code, ELObj **display, const NodePtr &node) : flowObj_(flowObj), code_(code), display_(display), node_(node) { hasSubObjects_ = 1; } SetNonInheritedCsSosofoObj::~SetNonInheritedCsSosofoObj() { delete [] display_; } ELObj *SetNonInheritedCsSosofoObj::resolve(ProcessContext &context) { VM &vm = context.vm(); EvalContext::CurrentNodeSetter cns(node_, 0, vm); StyleStack *saveStyleStack = vm.styleStack; vm.styleStack = &context.currentStyleStack(); unsigned saveSpecLevel = vm.specLevel; vm.specLevel = vm.styleStack->level(); Vector dep; vm.actualDependencies = &dep; ELObj *obj = vm.eval(code_.pointer(), display_, flowObj_->copy(*vm.interp)); vm.styleStack = saveStyleStack; vm.specLevel = saveSpecLevel; if (vm.interp->isError(obj)) return 0; return obj; } void SetNonInheritedCsSosofoObj::process(ProcessContext &context) { context.startFlowObj(); unsigned flags = 0; flowObj_->pushStyle(context, flags); ELObj *obj = resolve(context); if (obj) { ELObjDynamicRoot protect(*context.vm().interp, obj); ((FlowObj *)obj)->processInner(context); } flowObj_->popStyle(context, flags); context.endFlowObj(); } bool SetNonInheritedCsSosofoObj::isCharacter() { return flowObj_->isCharacter(); } bool SetNonInheritedCsSosofoObj::isRule() { return flowObj_->isRule(); } bool SetNonInheritedCsSosofoObj::characterStyle(ProcessContext &context, StyleObj *&style, FOTBuilder::CharacterNIC &nic) { ELObj *obj = resolve(context); if (obj) { ELObjDynamicRoot protect(*context.vm().interp, obj); return ((SosofoObj *)obj)->characterStyle(context, style, nic); } return 0; } bool SetNonInheritedCsSosofoObj::ruleStyle(ProcessContext &context, StyleObj *&style) { ELObj *obj = resolve(context); if (obj) { ELObjDynamicRoot protect(*context.vm().interp, obj); return ((SosofoObj *)obj)->ruleStyle(context, style); } return 0; } void SetNonInheritedCsSosofoObj::traceSubObjects(Collector &c) const { c.trace(flowObj_); if (display_) for (ELObj **p = display_; *p; p++) c.trace(*p); } LabelSosofoObj::LabelSosofoObj(SymbolObj *label, const Location &loc, SosofoObj *content) : label_(label), locp_(new Location(loc)), content_(content) { hasSubObjects_ = 1; } void LabelSosofoObj::process(ProcessContext &context) { context.startConnection(label_, *locp_); content_->process(context); context.endConnection(); } void LabelSosofoObj::traceSubObjects(Collector &c) const { // Symbols are permanent and don't need tracing. c.trace(content_); } ContentMapSosofoObj::ContentMapSosofoObj(ELObj *contentMap, const Location *locp, SosofoObj *content) : contentMap_(contentMap), locp_(locp), content_(content) { hasSubObjects_ = 1; } void ContentMapSosofoObj::process(ProcessContext &context) { context.startMapContent(contentMap_, *locp_); content_->process(context); context.endMapContent(); } void ContentMapSosofoObj::traceSubObjects(Collector &c) const { c.trace(contentMap_); c.trace(content_); } DiscardLabeledSosofoObj::DiscardLabeledSosofoObj(SymbolObj *label, SosofoObj *content) : label_(label), content_(content) { hasSubObjects_ = 1; } void DiscardLabeledSosofoObj::process(ProcessContext &context) { context.startDiscardLabeled(label_); content_->process(context); context.endDiscardLabeled(); } void DiscardLabeledSosofoObj::traceSubObjects(Collector &c) const { c.trace(content_); } PageTypeSosofoObj::PageTypeSosofoObj(unsigned pageTypeFlag, SosofoObj *match, SosofoObj *noMatch) : pageTypeFlag_(pageTypeFlag), match_(match), noMatch_(noMatch) { hasSubObjects_ = 1; } void PageTypeSosofoObj::process(ProcessContext &context) { unsigned pageType; if (context.getPageType(pageType)) { if (pageType & pageTypeFlag_) match_->process(context); else noMatch_->process(context); } } void PageTypeSosofoObj::traceSubObjects(Collector &c) const { c.trace(match_); c.trace(noMatch_); } #ifdef DSSSL_NAMESPACE } #endif openjade-1.3.2/style/ProcessContext.h0100664000076400007640000001210106746130044015710 0ustar ianian// Copyright (c) 1996 James Clark // See the file copying.txt for copying permission. #ifndef ProcessContext_INCLUDED #define ProcessContext_INCLUDED 1 #include "Resource.h" #include "Ptr.h" #include "Vector.h" #include "NCVector.h" #include "Owner.h" #include "Collector.h" #include "Style.h" #include "FOTBuilder.h" #include "ELObj.h" #include "SosofoObj.h" #include "VM.h" #include "ProcessingMode.h" #include "Link.h" #include "IList.h" #include "IQueue.h" #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif class Expression; class ProcessContext : public Collector::DynamicRoot { public: ProcessContext(Interpreter &, FOTBuilder &); FOTBuilder ¤tFOTBuilder(); StyleStack ¤tStyleStack(); void process(const NodePtr &); void processNode(const NodePtr &, const ProcessingMode *, bool chunk = 1); void processNodeSafe(const NodePtr &, const ProcessingMode *, bool chunk = 1); void nextMatch(StyleObj *); void processChildren(const ProcessingMode *); void processChildrenTrim(const ProcessingMode *); void trace(Collector &) const; void startFlowObj(); void endFlowObj(); // Uses of label: do this void startConnection(SymbolObj *, const Location &); void endConnection(); // happens only for object with a non-principal port void pushPorts(bool hasPrincipalPort, const Vector &ports, const Vector &fotbs); void popPorts(); void pushPrincipalPort(FOTBuilder* principalPort); void popPrincipalPort(); // happens inside pushPorts() (if any) void startMapContent(ELObj *, const Location &); void endMapContent(); void startDiscardLabeled(SymbolObj *); void endDiscardLabeled(); // table support void startTable(); void endTable(); void startTablePart(); void endTablePart(); void addTableColumn(unsigned columnIndex, unsigned span, StyleObj *); unsigned currentTableColumn(); void noteTableCell(unsigned colIndex, unsigned colSpan, unsigned rowSpan); StyleObj *tableColumnStyle(unsigned columnIndex, unsigned span); StyleObj *tableRowStyle(); void startTableRow(StyleObj *); bool inTable() const; bool inTableRow(); void endTableRow(); void clearPageType(); void setPageType(unsigned); bool getPageType(unsigned &) const; VM &vm(); private: ProcessContext(const ProcessContext &); // undefined void operator=(const ProcessContext &); // undefined void badContentMap(bool &, const Location &); void coverSpannedRows(); void restoreConnection(unsigned connectableLevel, size_t portIndex); struct Port { Port(); FOTBuilder *fotb; IQueue saveQueue; Vector labels; unsigned connected; }; // A flow object with a port that can be connected to. struct Connectable; friend struct Connectable; struct Connectable : public Link { Connectable(int nPorts, const StyleStack &, unsigned); NCVector ports; StyleStack styleStack; unsigned flowObjLevel; Vector principalPortLabels; }; // An connection between a flow object and its flow parent // made with label:. struct Connection; friend struct Connection; struct Connection : public Link { Connection(FOTBuilder *); Connection(const StyleStack &, Port *, unsigned connectableLevel); FOTBuilder *fotb; StyleStack styleStack; Port *port; unsigned connectableLevel; unsigned nBadFollow; }; struct Table : public Link { Table(); unsigned currentColumn; // first index is column (zero-based) // second is span - 1. Vector > columnStyles; // for each column, how many rows are covered // starting with the current row Vector covered; unsigned nColumns; StyleObj *rowStyle; bool inTableRow; unsigned rowConnectableLevel; }; struct NodeStackEntry { unsigned long elementIndex; unsigned groveIndex; const ProcessingMode *processingMode; }; FOTBuilder ignoreFotb_; IList connectionStack_; IList connectableStack_; unsigned connectableStackLevel_; IList
tableStack_; NCVector > principalPortSaveQueues_; VM vm_; ProcessingMode::Specificity matchSpecificity_; unsigned flowObjLevel_; bool havePageType_; unsigned pageType_; Vector nodeStack_; friend class CurrentNodeSetter; friend struct Table; }; inline FOTBuilder &ProcessContext::currentFOTBuilder() { return *connectionStack_.head()->fotb; } inline StyleStack &ProcessContext::currentStyleStack() { return connectionStack_.head()->styleStack; } inline VM &ProcessContext::vm() { return vm_; } inline void ProcessContext::startFlowObj() { flowObjLevel_++; } inline void ProcessContext::setPageType(unsigned n) { havePageType_ = 1; pageType_ = n; } inline void ProcessContext::clearPageType() { havePageType_ = 0; } inline bool ProcessContext::getPageType(unsigned &n) const { if (!havePageType_) return 0; n = pageType_; return 1; } inline bool ProcessContext::inTable() const { return !tableStack_.empty(); } #ifdef DSSSL_NAMESPACE } #endif #endif /* not ProcessContext_INCLUDED */ openjade-1.3.2/style/ProcessingMode.cxx0100664000076400007640000002073606713071107016234 0ustar ianian// Copyright (c) 1996, 1997 James Clark // See the file copying.txt for copying permission. #include "stylelib.h" #include "ProcessingMode.h" #include "Interpreter.h" #include "MessageArg.h" #include "InterpreterMessages.h" #include "Expression.h" #include "Insn.h" #include "Insn2.h" #include "IListIter.h" #include "LocNode.h" #include "macros.h" #include #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif ProcessingMode::ProcessingMode(const StringC &name, const ProcessingMode *initial) : Named(name), initial_(initial), defined_(0) { } void ProcessingMode::compile(Interpreter &interp) { for (int i = 0; i < nRuleType; i++) { for (size_t j = 0; j < rootRules_[i].size(); j++) rootRules_[i][j].action().compile(interp, RuleType(i)); for (IListIter iter(elementRules_[i]); !iter.done(); iter.next()) iter.cur()->action().compile(interp, RuleType(i)); } } void ProcessingMode::GroveRules::build(const IList *lists, const NodePtr &node, Messenger &) { built = 1; for (int ruleType = 0; ruleType < nRuleType; ruleType++) { for (IListIter iter(lists[ruleType]); !iter.done(); iter.next()) { StringC gi; if (iter.cur()->mustHaveGi(gi)) { Interpreter::normalizeGeneralName(node, gi); ElementRules *p = elementTable.lookup(gi); if (!p) { p = new ElementRules(gi); elementTable.insert(p); } p->rules[ruleType].push_back(iter.cur()); } else otherRules[ruleType].push_back(iter.cur()); } } for (int ruleType = 0; ruleType < nRuleType; ruleType++) { NamedTableIter iter(elementTable); for (;;) { ElementRules *p = iter.next(); if (!p) break; size_t j = p->rules[ruleType].size(); p->rules[ruleType].resize(p->rules[ruleType].size() + otherRules[ruleType].size()); for (size_t i = 0; i < otherRules[ruleType].size(); i++) p->rules[ruleType][j++] = otherRules[ruleType][i]; sortRules(p->rules[ruleType]); } sortRules(otherRules[ruleType]); } } extern "C" { static int ruleCompare(const void *p1, const void *p2) { return (*(const ProcessingMode::Rule *const *)p1) ->compareSpecificity(**(const ProcessingMode::Rule *const *)p2); } } void ProcessingMode::GroveRules::sortRules(Vector &v) { qsort(&v[0], v.size(), sizeof(v[0]), ruleCompare); } ProcessingMode::Action::Action(unsigned partIndex, Owner &expr, const Location &loc) : partIndex_(partIndex), defLoc_(loc), sosofo_(0) { expr.swap(expr_); } ProcessingMode::Rule::Rule() { } ProcessingMode::Rule::Rule(const Ptr &action) : action_(action) { } int ProcessingMode::Rule::compareSpecificity(const Rule &r) const { unsigned i1 = action().partIndex(); unsigned i2 = r.action().partIndex(); if (i1 == i2) return 0; return i1 < i2 ? -1 : 1; } void ProcessingMode::Action::compile(Interpreter &interp, RuleType ruleType) { expr_->optimize(interp, Environment(), expr_); ELObj *tem = expr_->constantValue(); if (tem) { if (ruleType == constructionRule) { sosofo_ = tem->asSosofo(); if (sosofo_) return; } } InsnPtr check; if (ruleType == constructionRule) check = new CheckSosofoInsn(defLoc_, check); insn_ = expr_->compile(interp, Environment(), 0, check); } ProcessingMode::ElementRule::ElementRule(const Ptr &action, Pattern &pattern) : Rule(action) { pattern.swap(*this); } int ProcessingMode::ElementRule::compareSpecificity(const Rule &r) const { int result = Rule::compareSpecificity(r); if (result) return result; return Pattern::compareSpecificity(*this, (const ElementRule &)r); } void ProcessingMode::addRule(bool root, NCVector &patterns, Owner &expr, RuleType ruleType, const Location &loc, Interpreter &interp) { Ptr action = new Action(interp.currentPartIndex(), expr, loc); for (size_t i = 0; i < patterns.size(); i++) elementRules_[ruleType].insert(new ElementRule(action, patterns[i])); if (!root) return; Vector &rules = rootRules_[ruleType]; rules.push_back(Rule(action)); for (size_t i = rules.size() - 1; i > 0; i--) { int cmp = rules[i - 1].compareSpecificity(rules[i]); if (cmp <= 0) { if (cmp == 0 && ruleType == constructionRule) { interp.setNextLocation(loc); interp.message(InterpreterMessages::duplicateRootRule, rules[i - 1].location()); } break; } rules[i - 1].swap(rules[i]); } } ProcessingMode::GroveRules::GroveRules() : built(0) { } ProcessingMode::ElementRules::ElementRules(const StringC &name) : Named(name) { } // Specificity gives specificity of last match; get specificity of current match. const ProcessingMode::Rule * ProcessingMode::findMatch(const NodePtr &node, Pattern::MatchContext &context, Messenger &mgr, Specificity &specificity) const { GroveString gi; if (node->getGi(gi) == accessOK) return findElementMatch(StringC(gi.data(), gi.size()), node, context, mgr, specificity); NodePtr tem; if (node->getOrigin(tem) != accessOK) return findRootMatch(node, context, mgr, specificity); return 0; } const ProcessingMode::Rule * ProcessingMode::findElementMatch(const StringC &gi, const NodePtr &node, Pattern::MatchContext &context, Messenger &mgr, Specificity &specificity) const { const Vector *vecP = 0; for (;;) { for (;;) { const ProcessingMode &mode = *(initial_ && specificity.toInitial_ ? initial_ : this); if (!vecP) { const GroveRules &gr = mode.groveRules(node, mgr); const ElementRules *er = gr.elementTable.lookup(gi); vecP = er ? er->rules : gr.otherRules; } const Vector &vec = vecP[specificity.ruleType_]; ASSERT(specificity.nextRuleIndex_ <= vec.size()); for (size_t &i = specificity.nextRuleIndex_; i < vec.size(); i++) { if (vec[i]->trivial() || vec[i]->matches(node, context)) { const Rule *rule = vec[i]; elementRuleAdvance(node, context, mgr, specificity, vec); return rule; } } if (!initial_) break; vecP = 0; if (specificity.toInitial_) break; specificity.nextRuleIndex_ = 0; specificity.toInitial_ = 1; } if (specificity.ruleType_ == constructionRule) break; specificity.ruleType_ = constructionRule; specificity.nextRuleIndex_ = 0; specificity.toInitial_ = 0; } return 0; } const ProcessingMode::Rule * ProcessingMode::findRootMatch(const NodePtr &node, Pattern::MatchContext &context, Messenger &mgr, Specificity &specificity) const { for (;;) { for (;;) { const ProcessingMode &mode = *(initial_ && specificity.toInitial_ ? initial_ : this); const Vector &rules = mode.rootRules_[specificity.ruleType_]; if (specificity.nextRuleIndex_ < rules.size()) return &rules[specificity.nextRuleIndex_++]; if (!initial_ || specificity.toInitial_) break; specificity.nextRuleIndex_ = 0; specificity.toInitial_ = 1; } if (specificity.ruleType_ == constructionRule) break; specificity.ruleType_ = constructionRule; specificity.nextRuleIndex_ = 0; specificity.toInitial_ = 0; } return 0; } const ProcessingMode::GroveRules &ProcessingMode::groveRules(const NodePtr &node, Messenger &mgr) const { unsigned long n = node->groveIndex(); ProcessingMode *cache = (ProcessingMode *)this; if (n >= groveRules_.size()) cache->groveRules_.resize(n + 1); if (!groveRules_[n].built) cache->groveRules_[n].build(elementRules_, node, mgr); return groveRules_[n]; } void ProcessingMode::elementRuleAdvance(const NodePtr &node, Pattern::MatchContext &context, Messenger &mgr, Specificity &specificity, const Vector &vec) { size_t &i = specificity.nextRuleIndex_; if (specificity.ruleType_ != constructionRule) { ++i; return; } size_t hit = i; do { ++i; if (i >= vec.size() || vec[hit]->ElementRule::compareSpecificity(*vec[i]) != 0) return; } while (!(vec[i]->trivial() || vec[i]->matches(node, context))); const LocNode *lnp; Location nodeLoc; if ((lnp = LocNode::convert(node)) != 0 && lnp->getLocation(nodeLoc) == accessOK) mgr.setNextLocation(nodeLoc); mgr.message(InterpreterMessages::ambiguousMatch); do { ++i; } while (i < vec.size() && vec[hit]->ElementRule::compareSpecificity(*vec[i]) == 0); } #ifdef DSSSL_NAMESPACE } #endif openjade-1.3.2/style/ProcessingMode.h0100664000076400007640000001076606713071645015672 0ustar ianian// Copyright (c) 1996 James Clark // See the file copying.txt for copying permission. #ifndef ProcessingMode_INCLUDED #define ProcessingMode_INCLUDED 1 #include "Named.h" #include "StringC.h" #include "Location.h" #include "Owner.h" #include "Vector.h" #include "NCVector.h" #include "NamedTable.h" #include "Expression.h" #include "Insn.h" #include "Boolean.h" #include "Node.h" #include "FOTBuilder.h" #include "IList.h" #include "Pattern.h" #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif class Interpreter; class SosofoObj; class ProcessingMode : public Named { public: enum RuleType { styleRule, constructionRule }; enum { nRuleType = 2 }; class Specificity { public: Specificity(); bool isStyle() const; private: bool toInitial_; // 1 if the match fell through from a named processing mode to // the initial processing mode RuleType ruleType_; size_t nextRuleIndex_; friend class ProcessingMode; }; class Action : public Resource { public: Action(unsigned partIndex, Owner &, const Location &); void compile(Interpreter &, RuleType); void get(InsnPtr &, SosofoObj *&) const; const Location &location() const; unsigned partIndex() const; private: Location defLoc_; Owner expr_; // One of these will be non-null. InsnPtr insn_; // must be permanent SosofoObj *sosofo_; unsigned partIndex_; }; class Rule { public: Rule(); Rule(const Ptr &); const Action &action() const; Action &action(); virtual int compareSpecificity(const Rule &) const; const Location &location() const; void swap(Rule &); private: Ptr action_; }; class ElementRule : public Rule, public Pattern, public Link { public: ElementRule(const Ptr &, Pattern &); int compareSpecificity(const Rule &) const; }; ProcessingMode(const StringC &, const ProcessingMode *initial = 0); void addRule(bool matchesRoot, NCVector &, Owner &expr, RuleType, const Location &, Interpreter &); // Specificity gives specificity of last match; gets specificity of current match. const Rule *findMatch(const NodePtr &, Pattern::MatchContext &, Messenger &, Specificity &) const; void compile(Interpreter &); bool defined() const; void setDefined(); struct ElementRules : public Named { public: ElementRules(const StringC &); Vector rules[nRuleType]; }; struct GroveRules { GroveRules(); bool built; NamedTable elementTable; Vector otherRules[nRuleType]; void build(const IList *, const NodePtr &, Messenger &); static void sortRules(Vector &v); }; private: const Rule *findElementMatch(const StringC &, const NodePtr &, Pattern::MatchContext &, Messenger &, Specificity &) const; const Rule *findRootMatch(const NodePtr &, Pattern::MatchContext &, Messenger &, Specificity &) const; const GroveRules &groveRules(const NodePtr &, Messenger &) const; static void elementRuleAdvance(const NodePtr &nd, Pattern::MatchContext &context, Messenger &mgr, Specificity &specificity, const Vector &vec); Vector rootRules_[nRuleType]; IList elementRules_[nRuleType]; NCVector groveRules_; const ProcessingMode *initial_; // 0 for initial mode bool defined_; }; inline bool ProcessingMode::defined() const { return defined_; } inline void ProcessingMode::setDefined() { defined_ = 1; } inline ProcessingMode::Specificity::Specificity() : toInitial_(0), nextRuleIndex_(0), ruleType_(styleRule) { } inline bool ProcessingMode::Specificity::isStyle() const { return ruleType_ == styleRule; } inline void ProcessingMode::Action::get(InsnPtr &insn, SosofoObj *&sosofo) const { insn = insn_; sosofo = sosofo_; } inline const Location &ProcessingMode::Action::location() const { return defLoc_; } inline ProcessingMode::Action &ProcessingMode::Rule::action() { return *action_; } inline const ProcessingMode::Action &ProcessingMode::Rule::action() const { return *action_; } inline unsigned ProcessingMode::Action::partIndex() const { return partIndex_; } inline const Location &ProcessingMode::Rule::location() const { return action_->location(); } inline void ProcessingMode::Rule::swap(Rule &r) { action_.swap(r.action_); } #ifdef DSSSL_NAMESPACE } #endif #endif /* not ProcessingMode_INCLUDED */ openjade-1.3.2/style/SchemeParser.cxx0100664000076400007640000017546407443642102015705 0ustar ianian// Copyright (c) 1996 James Clark // See the file copying.txt for copying permission. #include "stylelib.h" #include "SchemeParser.h" #include "InterpreterMessages.h" #include "Pattern.h" #include "MacroFlowObj.h" #include "macros.h" #include #include "LangObj.h" #include "VM.h" #include "ELObjMessageArg.h" #include "DssslSpecEventHandler.h" #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif const Char defaultChar = 0xfffd; SchemeParser::SchemeParser(Interpreter &interp, Owner &in) : interp_(&interp), defMode_(interp.initialProcessingMode()), dsssl2_(interp.dsssl2()), lang_(0) { in_.swap(in); { StringC tem(Interpreter::makeStringC("ISO/IEC 10036/RA//Glyphs")); afiiPublicId_ = interp_->storePublicId(tem.data(), tem.size(), Location()); } } void SchemeParser::parseStandardChars() { for (;;) { Token tok; if (!getToken(allowIdentifier|allowEndOfEntity, tok) || tok == tokenEndOfEntity) break; StringC name(currentToken_); if (!getToken(allowOtherExpr, tok) || tok != tokenNumber) { message(InterpreterMessages::badDeclaration); break; } int i; for (i = 0; i < name.size(); i++) if (interp_->lexCategory(name[i]) != Interpreter::lexLetter && ((i == 0) || (interp_->lexCategory(name[i]) != Interpreter::lexDigit && name[i] != '-' && name[i] != '.'))) break; if (i < name.size() || name.size() == 1) { message(InterpreterMessages::invalidCharName, StringMessageArg(name)); continue; } for (i = 0; i < currentToken_.size(); i++) if (interp_->lexCategory(currentToken_[i]) != Interpreter::lexDigit) break; if (i < currentToken_.size()) { message(InterpreterMessages::invalidCharNumber, StringMessageArg(currentToken_)); continue; } interp_->addStandardChar(name, currentToken_); } } void SchemeParser::parseNameChars() { for (;;) { // FIXME we do not check that we have valid character names Token tok; if (!getToken(allowIdentifier|allowEndOfEntity, tok) || tok == tokenEndOfEntity) break; interp_->addNameChar(currentToken_); } } void SchemeParser::parseSeparatorChars() { for (;;) { // FIXME we do not check that we have valid character names Token tok; if (!getToken(allowIdentifier|allowEndOfEntity, tok) || tok == tokenEndOfEntity) break; interp_->addSeparatorChar(currentToken_); } } void SchemeParser::parseMapSdataEntity(const StringC &ename, const StringC &etext) { Token tok; if (!getToken(allowIdentifier|allowEndOfEntity, tok) || tok == tokenEndOfEntity) { message(InterpreterMessages::badDeclaration); return; } interp_->addSdataEntity(ename, etext, currentToken_); } void SchemeParser::parse() { bool recovering = 0; for (;;) { Token tok; if (!getToken(recovering ? ~0 : allowOpenParen|allowEndOfEntity, tok)) recovering = 1; else { if (tok == tokenEndOfEntity) break; if (tok != tokenOpenParen || !getToken(recovering ? ~0 : unsigned(allowIdentifier), tok) || tok != tokenIdentifier) recovering = 1; else { const Identifier *ident = lookup(currentToken_); Identifier::SyntacticKey key; if (!ident->syntacticKey(key)) { if (!recovering) message(InterpreterMessages::unknownTopLevelForm, StringMessageArg(currentToken_)); recovering = 1; } else { switch (key) { case Identifier::keyDefine: recovering = !doDefine(); break; case Identifier::keyDefineUnit: recovering = !doDefineUnit(); break; case Identifier::keyDefault: recovering = !doDefault(); break; case Identifier::keyElement: recovering = !doElement(); break; case Identifier::keyOrElement: recovering = !doOrElement(); break; case Identifier::keyRoot: recovering = !doRoot(); break; case Identifier::keyId: recovering = !doId(); break; case Identifier::keyMode: recovering = !doMode(); break; case Identifier::keyDeclareInitialValue: recovering = !doDeclareInitialValue(); break; case Identifier::keyDeclareCharacteristic: recovering = !doDeclareCharacteristic(); break; case Identifier::keyDeclareFlowObjectClass: recovering = !doDeclareFlowObjectClass(); break; case Identifier::keyDeclareClassAttribute: recovering = !doDeclareClassAttribute(); break; case Identifier::keyDeclareIdAttribute: recovering = !doDeclareIdAttribute(); break; case Identifier::keyDeclareFlowObjectMacro: recovering = !doDeclareFlowObjectMacro(); break; case Identifier::keyDeclareDefaultLanguage: recovering = !doDeclareDefaultLanguage(); break; case Identifier::keyDefineLanguage: recovering = !doDefineLanguage(); break; case Identifier::keyDeclareCharProperty: recovering = !doDeclareCharProperty(); break; case Identifier::keyAddCharProperties: recovering = !doAddCharProperties(); break; case Identifier::keyDeclareCharCharacteristicAndProperty: recovering = !doDeclareCharCharacteristicAndProperty(); break; case Identifier::keyDeclareReferenceValueType: case Identifier::keyDefinePageModel: case Identifier::keyDefineColumnSetModel: recovering = !skipForm(); break; default: if (!recovering) message(InterpreterMessages::unknownTopLevelForm, StringMessageArg(currentToken_)); recovering = 1; break; } } } } } #if 0 NamedTableIter iter(identTable_); for (;;) { Identifier *ident = iter.next(); if (!ident) break; Location loc; unsigned part; if (ident->defined(part, loc)) { ELObj *obj = ident->computeValue(1, *this); if (!isError(obj)) { *os_ << ident->name() << "="; obj->print(*this, *os_); *os_ << OutputCharStream::newline; os_->flush(); } } } #endif } bool SchemeParser::parseExpression(Owner &expr) { Identifier::SyntacticKey key; Token tok; if (!parseExpression(0, expr, key, tok)) return 0; getToken(allowEndOfEntity, tok); return 1; } bool SchemeParser::doMode() { Token tok; if (!getToken(allowIdentifier, tok)) return 0; defMode_ = lookupProcessingMode(currentToken_); defMode_->setDefined(); for (;;) { if (!getToken(allowOpenParen|allowCloseParen, tok)) return 0; if (tok == tokenCloseParen) break; if (!getToken(allowIdentifier, tok)) return 0; const Identifier *ident = lookup(currentToken_); Identifier::SyntacticKey key; if (!ident->syntacticKey(key)) { message(InterpreterMessages::badModeForm, StringMessageArg(currentToken_)); return 0; } else { switch (key) { case Identifier::keyDefault: if (!doDefault()) return 0; break; case Identifier::keyElement: if (!doElement()) return 0; break; case Identifier::keyOrElement: if (!doOrElement()) return 0; break; case Identifier::keyRoot: if (!doRoot()) return 0; break; case Identifier::keyId: if (!doId()) return 0; break; default: message(InterpreterMessages::badModeForm, StringMessageArg(currentToken_)); return 0; } } } defMode_ = interp_->initialProcessingMode(); return 1; } bool SchemeParser::doElement() { Location loc(in_->currentLocation()); Token tok; ELObj *obj; if (!parseDatum(0, obj, loc, tok)) return 0; NCVector patterns(1); Owner expr; ProcessingMode::RuleType ruleType; if (interp_->convertToPattern(obj, loc, patterns[0])) { if (!parseRuleBody(expr, ruleType)) return 0; defMode_->addRule(0, patterns, expr, ruleType, loc, *interp_); } else if (!parseRuleBody(expr, ruleType)) return 0; return 1; } bool SchemeParser::doOrElement() { Location loc(in_->currentLocation()); Token tok; if (!getToken(allowOpenParen, tok)) return 0; NCVector patterns; unsigned allowed = 0; bool ok = 1; for (;;) { ELObj *obj; if (!parseDatum(allowed, obj, loc, tok)) return 0; if (!obj) break; allowed = allowCloseParen; if (ok) { patterns.resize(patterns.size() + 1); if (!interp_->convertToPattern(obj, loc, patterns.back())) ok = 0; } } ProcessingMode::RuleType ruleType; Owner expr; if (!parseRuleBody(expr, ruleType)) return 0; if (ok) defMode_->addRule(0, patterns, expr, ruleType, loc, *interp_); return 1; } bool SchemeParser::doId() { Location loc(in_->currentLocation()); Token tok; if (!getToken(allowString|allowIdentifier, tok)) return 0; StringC id(currentToken_); Owner expr; ProcessingMode::RuleType ruleType; if (!parseRuleBody(expr, ruleType)) return 0; IList list; Pattern::Element *elem = new Pattern::Element(StringC()); list.insert(elem); elem->addQualifier(new Pattern::IdQualifier(id)); Pattern pattern(list); NCVector patterns(1); patterns[0].swap(pattern); defMode_->addRule(0, patterns, expr, ruleType, loc, *interp_); return 1; } bool SchemeParser::doDefault() { Location loc(in_->currentLocation()); Owner expr; ProcessingMode::RuleType ruleType; if (!parseRuleBody(expr, ruleType)) return 0; IList list; list.insert(new Pattern::Element(StringC())); Pattern pattern(list); NCVector patterns(1); pattern.swap(patterns[0]); defMode_->addRule(0, patterns, expr, ruleType, loc, *interp_); return 1; } bool SchemeParser::doRoot() { Location loc(in_->currentLocation()); Owner expr; ProcessingMode::RuleType ruleType; if (!parseRuleBody(expr, ruleType)) return 0; NCVector patterns; defMode_->addRule(1, patterns, expr, ruleType, loc, *interp_); return 1; } bool SchemeParser::parseRuleBody(Owner &expr, ProcessingMode::RuleType &ruleType) { Token tok; Identifier::SyntacticKey key; if (!parseExpression(0, expr, key, tok)) return 0; const Identifier *k = dsssl2() ? expr->keyword() : 0; if (k) { // style rule Vector keys; NCVector > exprs; for (;;) { keys.push_back(k); exprs.resize(exprs.size() + 1); if (!parseExpression(0, exprs.back(), key, tok)) return 0; if (!getToken(allowKeyword|allowCloseParen, tok)) return 0; if (tok == tokenCloseParen) break; k = lookup(currentToken_); } expr = new StyleExpression(keys, exprs, expr->location()); ruleType = ProcessingMode::styleRule; } else { ruleType = ProcessingMode::constructionRule; if (!getToken(allowCloseParen, tok)) return 0; } return 1; } bool SchemeParser::doDeclareInitialValue() { Token tok; if (!getToken(allowIdentifier, tok)) return 0; Identifier *ident = lookup(currentToken_); if (ident->inheritedC().isNull()) message(InterpreterMessages::notABuiltinInheritedC, StringMessageArg(ident->name())); Owner expr; Identifier::SyntacticKey key; if (!parseExpression(0, expr, key, tok)) return 0; if (!getToken(allowCloseParen, tok)) return 0; if (ident->inheritedC().isNull()) return 1; interp_->installInitialValue(ident, expr); return 1; } bool SchemeParser::doDeclareCharCharacteristicAndProperty() { Location loc(in_->currentLocation()); Token tok; if (!getToken(allowIdentifier, tok)) return 0; Identifier *ident = lookup(currentToken_); if (!getToken(allowString|(dsssl2() ? unsigned(allowFalse) : 0), tok)) return 0; StringC pubid; if (tok == tokenString) pubid = currentToken_; Owner expr; Identifier::SyntacticKey key; if (!parseExpression(0, expr, key, tok)) return 0; if (!getToken(allowCloseParen, tok)) return 0; Location defLoc; unsigned defPart; if (ident->inheritedCDefined(defPart, defLoc)) { interp_->setNextLocation(loc); interp_->message(InterpreterMessages::duplicateCharacteristic, StringMessageArg(ident->name()), defLoc); } else if (ident->charNICDefined(defPart, defLoc) && defPart <= interp_->currentPartIndex()) { if (defPart == interp_->currentPartIndex()) { interp_->setNextLocation(loc); interp_->message(InterpreterMessages::duplicateCharacteristic, StringMessageArg(ident->name()), defLoc); } } else { interp_->installExtensionCharNIC(ident, pubid, loc); interp_->addCharProperty(ident, expr); } return 1; } bool SchemeParser::doDeclareCharacteristic() { Location loc(in_->currentLocation()); Token tok; if (!getToken(allowIdentifier, tok)) return 0; Identifier *ident = lookup(currentToken_); if (!getToken(allowString|(dsssl2() ? unsigned(allowFalse) : 0), tok)) return 0; StringC pubid; if (tok == tokenString) pubid = currentToken_; Owner expr; Identifier::SyntacticKey key; if (!parseExpression(0, expr, key, tok)) return 0; if (!getToken(allowCloseParen, tok)) return 0; Location defLoc; unsigned defPart; if (ident->charNICDefined(defPart, defLoc)) { interp_->setNextLocation(loc); interp_->message(InterpreterMessages::duplicateCharacteristic, StringMessageArg(ident->name()), defLoc); } else if (ident->inheritedCDefined(defPart, defLoc) && defPart <= interp_->currentPartIndex()) { if (defPart == interp_->currentPartIndex()) { interp_->setNextLocation(loc); interp_->message(InterpreterMessages::duplicateCharacteristic, StringMessageArg(ident->name()), defLoc); } } else { interp_->installExtensionInheritedC(ident, pubid, loc); interp_->installInitialValue(ident, expr); } return 1; } bool SchemeParser::doDeclareFlowObjectClass() { Location loc(in_->currentLocation()); Token tok; if (!getToken(allowIdentifier, tok)) return 0; Identifier *ident = lookup(currentToken_); if (!getToken(allowString, tok)) return 0; Location defLoc; unsigned defPart; if (ident->inheritedCDefined(defPart, defLoc) && defPart <= interp_->currentPartIndex()) { if (defPart == interp_->currentPartIndex()) { interp_->setNextLocation(loc); interp_->message(InterpreterMessages::duplicateFlowObjectClass, StringMessageArg(ident->name()), defLoc); } } else interp_->installExtensionFlowObjectClass(ident, currentToken_, loc); if (!getToken(allowCloseParen, tok)) return 0; return 1; } bool SchemeParser::doDeclareFlowObjectMacro() { Location loc(in_->currentLocation()); Token tok; if (!getToken(allowIdentifier, tok)) return 0; Identifier *ident = lookup(currentToken_); if (ident->flowObj()) // FIXME report an error if same part ; if (!getToken(allowOpenParen, tok)) return 0; Vector nics; NCVector > inits; const Identifier *contentsId = 0; unsigned allowed = (allowOpenParen|allowCloseParen|allowIdentifier|allowHashContents); for (;;) { if (!getToken(allowed, tok)) return 0; if (tok == tokenCloseParen) break; switch (tok) { case tokenHashContents: if (!getToken(allowIdentifier, tok)) return 0; contentsId = lookup(currentToken_); allowed = allowCloseParen; break; case tokenIdentifier: nics.push_back(lookup(currentToken_)); break; case tokenOpenParen: { if (!getToken(allowIdentifier, tok)) return 0; nics.push_back(lookup(currentToken_)); inits.resize(nics.size()); Identifier::SyntacticKey key; if (!parseExpression(0, inits.back(), key, tok)) return 0; if (!getToken(allowCloseParen, tok)) return 0; } break; default: CANNOT_HAPPEN(); } } // We could allow sequence which is appended together here. Owner body; Identifier::SyntacticKey key; if (!parseExpression(0, body, key, tok)) return 0; if (!getToken(allowCloseParen, tok)) return 0; Location defLoc; unsigned defPart; if (ident->inheritedCDefined(defPart, defLoc) && defPart <= interp_->currentPartIndex()) { if (defPart == interp_->currentPartIndex()) { interp_->setNextLocation(loc); interp_->message(InterpreterMessages::duplicateFlowObjectClass, StringMessageArg(ident->name()), defLoc); } } else { MacroFlowObj *flowObj = new (*interp_) MacroFlowObj(nics, inits, contentsId, body); interp_->makePermanent(flowObj); ident->setFlowObj(flowObj); } return 1; } bool SchemeParser::doDeclareClassAttribute() { Token tok; if (!getToken(allowString|allowIdentifier, tok)) return 0; interp_->addClassAttributeName(currentToken_); if (!getToken(allowCloseParen, tok)) return 0; return 1; } bool SchemeParser::doDeclareIdAttribute() { Token tok; if (!getToken(allowString|allowIdentifier, tok)) return 0; interp_->addIdAttributeName(currentToken_); if (!getToken(allowCloseParen, tok)) return 0; return 1; } bool SchemeParser::doDefine() { Location loc(in_->currentLocation()); Token tok; if (!getToken(allowOpenParen|allowIdentifier, tok)) return 0; Vector formals; bool isProcedure; if (tok == tokenOpenParen) { if (!getToken(allowIdentifier, tok)) return 0; isProcedure = 1; } else isProcedure = 0; Identifier *ident = lookup(currentToken_); Identifier::SyntacticKey key; if (ident->syntacticKey(key) && key <= int(Identifier::lastSyntacticKey)) message(InterpreterMessages::syntacticKeywordAsVariable, StringMessageArg(currentToken_)); NCVector > inits; int nOptional; int nKey; bool hasRest; if (isProcedure && !parseFormals(formals, inits, nOptional, hasRest, nKey)) return 0; Owner expr; if (isProcedure) { if (!parseBegin(expr)) return 0; } else { if (!parseExpression(0, expr, key, tok)) return 0; if (!getToken(allowCloseParen, tok)) return 0; } if (isProcedure) expr = new LambdaExpression(formals, inits, nOptional, hasRest, nKey, expr, loc); Location defLoc; unsigned defPart; if (ident->defined(defPart, defLoc) && defPart <= interp_->currentPartIndex()) { if (defPart == interp_->currentPartIndex()) message(InterpreterMessages::duplicateDefinition, StringMessageArg(ident->name()), defLoc); } else ident->setDefinition(expr, interp_->currentPartIndex(), loc); return 1; } bool SchemeParser::doDefineUnit() { Location loc(in_->currentLocation()); Token tok; if (!getToken(allowIdentifier, tok)) return 0; int i; for (i = 0; i < currentToken_.size(); i++) if (interp_->lexCategory(currentToken_[i]) != Interpreter::lexLetter) break; if ((i < currentToken_.size()) || ((currentToken_.size() == 1) && (currentToken_[0] =='e'))) { message(InterpreterMessages::invalidUnitName, StringMessageArg(currentToken_)); return 0; } Unit *unit = interp_->lookupUnit(currentToken_); Owner expr; Identifier::SyntacticKey key; if (!parseExpression(0, expr, key, tok)) return 0; if (!getToken(allowCloseParen, tok)) return 0; Location defLoc; unsigned defPart; if (unit->defined(defPart, defLoc) && defPart <= interp_->currentPartIndex()) { if (defPart == interp_->currentPartIndex()) message(InterpreterMessages::duplicateUnitDefinition, StringMessageArg(unit->name()), defLoc); } else unit->setDefinition(expr, interp_->currentPartIndex(), loc); return 1; } bool SchemeParser::skipForm() { static const unsigned allow = (~0 & ~allowEndOfEntity); unsigned level = 0; for (;;) { Token tok; if (!getToken(allow, tok)) break; switch (tok) { case tokenOpenParen: level++; break; case tokenCloseParen: if (level == 0) return 1; level--; break; default: break; } } return 0; } bool SchemeParser::parseExpression(unsigned allowed, Owner &expr, Identifier::SyntacticKey &key, Token &tok) { expr.clear(); key = Identifier::notKey; ELObj *obj; if (!parseSelfEvaluating(allowed, obj, tok)) return 0; if (obj) { interp_->makePermanent(obj); expr = new ConstantExpression(obj, in_->currentLocation()); return 1; } switch (tok) { case tokenQuote: { Location loc; if (!parseDatum(0, obj, loc, tok)) return 0; interp_->makePermanent(obj); expr = new ConstantExpression(obj, loc); break; } case tokenQuasiquote: { bool spliced; return parseQuasiquoteTemplate(0, 0, expr, key, tok, spliced); } case tokenOpenParen: { Location loc(in_->currentLocation()); if (!parseExpression(allowExpressionKey, expr, key, tok)) return 0; if (expr) { NCVector > args; for (;;) { args.resize(args.size() + 1); if (!parseExpression(allowCloseParen, args.back(), key, tok)) return 0; if (!args.back()) { args.resize(args.size() - 1); break; } } expr = new CallExpression(expr, args, loc); } else { switch (key) { case Identifier::keyQuote: return parseQuote(expr); case Identifier::keyLambda: return parseLambda(expr); case Identifier::keyIf: return parseIf(expr); case Identifier::keyCond: return parseCond(expr); case Identifier::keyAnd: return parseAnd(expr); case Identifier::keyOr: return parseOr(expr); case Identifier::keyCase: return parseCase(expr); case Identifier::keyLet: return parseLet(expr); case Identifier::keyLetStar: return parseLetStar(expr); case Identifier::keyLetrec: return parseLetrec(expr); case Identifier::keyThereExists: return parseSpecialQuery(expr, "node-list-some?"); case Identifier::keyForAll: return parseSpecialQuery(expr, "node-list-every?"); case Identifier::keySelectEach: return parseSpecialQuery(expr, "node-list-filter"); case Identifier::keyUnionForEach: return parseSpecialQuery(expr, "node-list-union-map"); case Identifier::keyMake: return parseMake(expr); case Identifier::keyStyle: return parseStyle(expr); case Identifier::keyWithMode: return parseWithMode(expr); case Identifier::keyQuasiquote: return parseQuasiquote(expr); case Identifier::keySet: return parseSet(expr); case Identifier::keyBegin: return parseBegin(expr); default: CANNOT_HAPPEN(); } } break; } case tokenIdentifier: { const Identifier *ident = lookup(currentToken_); if (ident->syntacticKey(key) && key <= int(Identifier::lastSyntacticKey)) { switch (key) { case Identifier::keyDefine: if (allowed & allowKeyDefine) return 1; break; case Identifier::keyArrow: if (allowed & allowKeyArrow) return 1; break; case Identifier::keyElse: if (allowed & allowKeyElse) return 1; break; case Identifier::keyUnquote: case Identifier::keyUnquoteSplicing: break; default: if (allowed & allowExpressionKey) return 1; break; } message(InterpreterMessages::syntacticKeywordAsVariable, StringMessageArg(currentToken_)); } expr = new VariableExpression(ident, in_->currentLocation()); } break; default: break; } return 1; } bool SchemeParser::parseQuote(Owner &expr) { Token tok; Location loc; ELObj *obj; if (!parseDatum(0, obj, loc, tok)) return 0; if (!getToken(allowCloseParen, tok)) return 0; interp_->makePermanent(obj); expr = new ConstantExpression(obj, loc); return 1; } bool SchemeParser::parseQuasiquote(Owner &expr) { bool spliced; Token tok; Identifier::SyntacticKey key; if (!parseQuasiquoteTemplate(0, 0, expr, key, tok, spliced)) return 0; return getToken(allowCloseParen, tok); } bool SchemeParser::parseQuasiquoteTemplate(unsigned level, unsigned allowed, Owner &expr, Identifier::SyntacticKey &key, Token &tok, bool &spliced) { key = Identifier::notKey; spliced = 0; ELObj *obj; if (!parseSelfEvaluating(allowed|allowUnquote|allowVector, obj, tok)) return 0; switch (tok) { case tokenQuasiquote: if (!parseQuasiquoteTemplate(level + 1, 0, expr, key, tok, spliced)) return 0; createQuasiquoteAbbreviation("quasiquote", expr); break; case tokenQuote: if (!parseQuasiquoteTemplate(level, 0, expr, key, tok, spliced)) break; createQuasiquoteAbbreviation("quote", expr); break; case tokenUnquote: case tokenUnquoteSplicing: if (level == 0) { spliced = (tok == tokenUnquoteSplicing); if (!parseExpression(0, expr, key, tok)) return 0; } else { Token tem; if (!parseQuasiquoteTemplate(level - 1, 0, expr, key, tem, spliced)) break; createQuasiquoteAbbreviation(tok == tokenUnquote ? "unquote" : "unquote-splicing", expr); } break; case tokenOpenParen: case tokenVector: { QuasiquoteExpression::Type type = (tok == tokenVector ? QuasiquoteExpression::vectorType : QuasiquoteExpression::listType); Location loc(in_->currentLocation()); NCVector > exprs(1); Vector exprsSpliced; bool temSpliced; if (!parseQuasiquoteTemplate(level, allowCloseParen|allowQuasiquoteKey|allowUnquoteSplicing, exprs[0], key, tok, temSpliced)) return 0; if (!exprs[0]) { switch (key) { case Identifier::keyQuasiquote: if (!parseQuasiquoteTemplate(level + 1, 0, expr, key, tok, spliced)) return 0; createQuasiquoteAbbreviation("quasiquotation", expr); break; case Identifier::keyUnquoteSplicing: spliced = 1; // fall through case Identifier::keyUnquote: if (level == 0) { if (!parseExpression(0, expr, key, tok)) return 0; } else { if (!parseQuasiquoteTemplate(level - 1, 0, expr, key, tok, temSpliced)) return 0; createQuasiquoteAbbreviation(spliced ? "unquote-splicing" : "unquote", expr); spliced = 0; } break; default: expr = new ConstantExpression(interp_->makeNil(), loc); return 1; } return getToken(allowCloseParen, tok); } exprsSpliced.push_back(PackedBoolean(temSpliced)); for (;;) { Owner tem; if (!parseQuasiquoteTemplate(level, allowCloseParen|allowUnquoteSplicing |(type == QuasiquoteExpression::vectorType ? 0 : allowPeriod), tem, key, tok, temSpliced)) return 0; if (!tem) { if (tok == tokenCloseParen) break; exprs.resize(exprs.size() + 1); type = QuasiquoteExpression::improperType; if (!parseQuasiquoteTemplate(level, 0, exprs.back(), key, tok, temSpliced)) return 0; if (!getToken(allowCloseParen, tok)) return 0; exprsSpliced.push_back(0); break; } exprs.resize(exprs.size() + 1); exprs.back().swap(tem); exprsSpliced.push_back(PackedBoolean(temSpliced)); } expr = new QuasiquoteExpression(exprs, exprsSpliced, type, loc); } break; case tokenIdentifier: if (allowed & allowQuasiquoteKey) { const Identifier *ident = lookup(currentToken_); if (ident->syntacticKey(key)) { switch (key) { case Identifier::keyUnquoteSplicing: case Identifier::keyUnquote: case Identifier::keyQuasiquote: return 1; default: break; } } } obj = interp_->makeSymbol(currentToken_); // fall through default: if (obj) { interp_->makePermanent(obj); expr = new ConstantExpression(obj, in_->currentLocation()); } break; } return 1; } void SchemeParser::createQuasiquoteAbbreviation(const char *sym, Owner &expr) { Location loc(expr->location()); NCVector > v(2); v[1].swap(expr); v[0] = new ConstantExpression(interp_->makeSymbol(Interpreter::makeStringC(sym)), loc); Vector spliced; spliced.push_back(0); spliced.push_back(0); expr = new QuasiquoteExpression(v, spliced, QuasiquoteExpression::listType, loc); } bool SchemeParser::parseIf(Owner &expr) { Location loc(in_->currentLocation()); Owner expr0, expr1, expr2; Token tok; Identifier::SyntacticKey key; if (!parseExpression(0, expr0, key, tok) || !parseExpression(0, expr1, key, tok) || !parseExpression(dsssl2() ? allowCloseParen : 0, expr2, key, tok)) return 0; if (!expr2) expr2 = new ConstantExpression(interp_->makeUnspecified(), in_->currentLocation()); else if (!getToken(allowCloseParen, tok)) return 0; expr = new IfExpression(expr0, expr1, expr2, loc); return 1; } bool SchemeParser::parseCond(Owner &expr, bool opt) { Location loc(in_->currentLocation()); Token tok; if (!getToken(allowOpenParen|(opt ? unsigned(allowCloseParen) : 0), tok)) return 0; if (tok == tokenCloseParen) { if (dsssl2()) expr = new ConstantExpression(interp_->makeUnspecified(), loc); else expr = new CondFailExpression(loc); return 1; } Identifier::SyntacticKey key; Owner testExpr; if (!parseExpression(allowKeyElse, testExpr, key, tok)) return 0; if (!testExpr) { if (!parseBegin(expr)) return 0; return getToken(allowCloseParen, tok); } NCVector > valExprs; for (;;) { Owner tem; if (!parseExpression(allowCloseParen, tem, key, tok)) return 0; if (!tem) break; valExprs.resize(valExprs.size() + 1); tem.swap(valExprs.back()); } Owner valExpr; if (valExprs.size() == 1) valExprs[0].swap(valExpr); else if (valExprs.size()) valExpr = new SequenceExpression(valExprs, valExprs[0]->location()); Owner elseExpr; if (!parseCond(elseExpr, 1)) return 0; if (valExpr) expr = new IfExpression(testExpr, valExpr, elseExpr, loc); else expr = new OrExpression(testExpr, elseExpr, loc); return 1; } bool SchemeParser::parseCase(Owner &expr) { Owner keyExpr; Owner elseClause; NCVector cases; Location loc(in_->currentLocation()); Token tok; Identifier::SyntacticKey key; if (!parseExpression(0, keyExpr, key, tok)) return 0; for (;;) { if (!getToken(allowOpenParen |(cases.size() ? unsigned(allowCloseParen) : 0), tok)) return 0; if (tok == tokenCloseParen) break; if (!getToken(allowOpenParen|allowIdentifier, tok)) return 0; if (tok == tokenOpenParen) { cases.resize(cases.size() + 1); Location loc; for (;;) { ELObj *obj; if (!parseDatum(allowCloseParen, obj, loc, tok)) return 0; if (tok == tokenCloseParen) break; interp_->makePermanent(obj); cases.back().datums.push_back(obj); } if (!parseBegin(cases.back().expr)) return 0; } else { const Identifier *ident = lookup(currentToken_); if (ident->syntacticKey(key) && key == Identifier::keyElse) { if (!parseBegin(elseClause)) return 0; if (!getToken(allowCloseParen, tok)) return 0; break; } else { message(InterpreterMessages::caseElse, StringMessageArg(currentToken_)); return 0; } } } if (dsssl2() && !elseClause) elseClause = new ConstantExpression(interp_->makeUnspecified(), loc); expr = new CaseExpression(keyExpr, cases, elseClause, loc); return 1; } bool SchemeParser::parseOr(Owner &expr) { Location loc(in_->currentLocation()); Token tok; Identifier::SyntacticKey key; Owner test1Expr; if (!parseExpression(allowCloseParen, test1Expr, key, tok)) return 0; if (!test1Expr) { expr = new ConstantExpression(interp_->makeFalse(), loc); return 1; } Owner test2Expr; if (!parseOr(test2Expr)) return 0; expr = new OrExpression(test1Expr, test2Expr, loc); return 1; } bool SchemeParser::parseAnd(Owner &expr, bool opt) { Location loc(in_->currentLocation()); Token tok; Identifier::SyntacticKey key; Owner testExpr; if (!parseExpression(allowCloseParen, testExpr, key, tok)) return 0; if (!testExpr) { if (!opt) expr = new ConstantExpression(interp_->makeTrue(), loc); return 1; } Owner restExpr; if (!parseAnd(restExpr, 1)) return 0; if (!restExpr) testExpr.swap(expr); else { // This relies on the fact that #f is the only false value. Owner falseExpr(new ConstantExpression(interp_->makeFalse(), loc)); expr = new IfExpression(testExpr, restExpr, falseExpr, loc); } return 1; } bool SchemeParser::parseBegin(Owner &expr) { Location loc(in_->currentLocation()); Token tok; Identifier::SyntacticKey key; if (!parseExpression(0, expr, key, tok)) return 0; if (dsssl2()) { NCVector > exprs; for (size_t i = 1;; i++) { Owner tem; if (!parseExpression(allowCloseParen, tem, key, tok)) return 0; if (!tem) break; exprs.resize(i + 1); tem.swap(exprs[i]); } if (exprs.size()) { expr.swap(exprs[0]); expr = new SequenceExpression(exprs, loc); } return 1; } else return getToken(allowCloseParen, tok); } bool SchemeParser::parseSet(Owner &expr) { Location loc(in_->currentLocation()); Token tok; if (!getToken(allowIdentifier, tok)) return 0; const Identifier *var = lookup(currentToken_); Identifier::SyntacticKey key; Owner value; if (!parseExpression(0, value, key, tok)) return 0; if (!getToken(allowCloseParen, tok)) return 0; expr = new AssignmentExpression(var, value, loc); return 1; } bool SchemeParser::parseWithMode(Owner &expr) { Location loc(in_->currentLocation()); Token tok; if (!getToken(allowIdentifier|allowFalse, tok)) return 0; const ProcessingMode *mode; if (tok == tokenFalse) mode = interp_->initialProcessingMode(); else mode = interp_->lookupProcessingMode(currentToken_); Owner content; Identifier::SyntacticKey key; if (!parseExpression(0, content, key, tok)) return 0; if (!getToken(allowCloseParen, tok)) return 0; expr = new WithModeExpression(mode, content, loc); return 1; } bool SchemeParser::parseMake(Owner &expr) { Location loc(in_->currentLocation()); Token tok; if (!getToken(allowIdentifier, tok)) return 0; const Identifier *foc = lookup(currentToken_); NCVector > exprs; Vector keys; for (;;) { Owner tem; Identifier::SyntacticKey key; if (!parseExpression(allowCloseParen, tem, key, tok)) return 0; if (!tem) break; if (keys.size() == exprs.size()) { const Identifier *k = tem->keyword(); if (k) { tem.clear(); if (!parseExpression(0, tem, key, tok)) return 0; size_t i; for (i = 0; i < keys.size(); i++) if (keys[i]->name() == k->name()) break; if (i < keys.size()) continue; keys.push_back(k); } } exprs.resize(exprs.size() + 1); tem.swap(exprs.back()); } expr = new MakeExpression(foc, keys, exprs, loc); return 1; } bool SchemeParser::parseStyle(Owner &expr) { Location loc(in_->currentLocation()); NCVector > exprs; Vector keys; for (;;) { Token tok; if (!getToken(allowKeyword|allowCloseParen, tok)) return 0; if (tok == tokenCloseParen) break; keys.resize(keys.size() + 1); keys.back() = lookup(currentToken_); exprs.resize(exprs.size() + 1); Identifier::SyntacticKey key; if (!parseExpression(0, exprs.back(), key, tok)) return 0; } expr = new StyleExpression(keys, exprs, loc); return 1; } bool SchemeParser::parseLambda(Owner &expr) { Location loc(in_->currentLocation()); Token tok; if (!getToken(allowOpenParen, tok)) return 0; Vector formals; NCVector > inits; int nOptional; int nKey; bool hasRest; if (!parseFormals(formals, inits, nOptional, hasRest, nKey)) return 0; Owner body; if (!parseBegin(body)) return 0; expr = new LambdaExpression(formals, inits, nOptional, hasRest, nKey, body, loc); return 1; } // The rest arg is put last. bool SchemeParser::parseFormals(Vector &formals, NCVector > &inits, int &nOptional, bool &hasRest, int &nKey) { Token tok; enum FormalType { required, optional, rest, key } type = required; unsigned allowed = (allowCloseParen|allowIdentifier |allowHashOptional|allowHashRest|allowHashKey); int argCount[4]; for (int i = 0; i < 4; i++) argCount[i] = 0; for (;;) { if (!getToken(allowed, tok)) return 0; switch (tok) { case tokenHashOptional: allowed |= allowOpenParen; allowed &= ~allowHashOptional; type = optional; break; case tokenHashRest: allowed = allowIdentifier; type = rest; break; case tokenHashKey: allowed = (allowOpenParen|allowCloseParen|allowIdentifier); type = key; break; case tokenOpenParen: { if (!getToken(allowIdentifier, tok)) return 0; argCount[type]++; formals.push_back(lookup(currentToken_)); inits.resize(argCount[optional] + argCount[key]); Identifier::SyntacticKey key; if (!parseExpression(0, inits.back(), key, tok)) return 0; if (!getToken(allowCloseParen, tok)) return 0; } break; case tokenIdentifier: { formals.push_back(lookup(currentToken_)); argCount[type]++; if (type == rest) allowed = (allowHashKey|allowCloseParen); } break; case tokenCloseParen: goto done; default: CANNOT_HAPPEN(); } } done: nOptional = argCount[optional]; nKey = argCount[key]; inits.resize(nOptional + nKey); hasRest = argCount[rest]; return 1; } bool SchemeParser::parseLet(Owner &expr) { Location loc(in_->currentLocation()); Token tok; if (!getToken(allowOpenParen|allowIdentifier, tok)) return 0; Vector vars; NCVector > inits; Owner body; const Identifier *name; if (tok == tokenOpenParen) { name = 0; if (!parseBindingsAndBody1(vars, inits, body)) return 0; } else { name = lookup(currentToken_); if (!parseBindingsAndBody(vars, inits, body)) return 0; } if (name) { // Named let NCVector > loopInit(1); NCVector > argsInit; loopInit[0] = new LambdaExpression(vars, argsInit, 0, 0, 0, body, loc); Vector loopFormal(1); loopFormal[0] = name; expr = new VariableExpression(name, loc); expr = new LetrecExpression(loopFormal, loopInit, expr, loc); expr = new CallExpression(expr, inits, loc); } else expr = new LetExpression(vars, inits, body, loc); return 1; } bool SchemeParser::parseLetStar(Owner &expr) { Location loc(in_->currentLocation()); Vector vars; NCVector > inits; Owner body; if (!parseBindingsAndBody(vars, inits, body)) return 0; expr = new LetStarExpression(vars, inits, body, loc); return 1; } bool SchemeParser::parseLetrec(Owner &expr) { Location loc(in_->currentLocation()); Vector vars; NCVector > inits; Owner body; if (!parseBindingsAndBody(vars, inits, body)) return 0; expr = new LetrecExpression(vars, inits, body, loc); return 1; } bool SchemeParser::parseBindingsAndBody(Vector &vars, NCVector > &inits, Owner &body) { Token tok; if (!getToken(allowOpenParen, tok)) return 0; return parseBindingsAndBody1(vars, inits, body); } bool SchemeParser::parseBindingsAndBody1(Vector &vars, NCVector > &inits, Owner &body) { Token tok; Identifier::SyntacticKey key; for (;;) { if (!getToken(allowCloseParen|allowOpenParen, tok)) return 0; if (tok == tokenCloseParen) break; if (!getToken(allowIdentifier, tok)) return 0; vars.push_back(lookup(currentToken_)); inits.resize(inits.size() + 1); if (!parseExpression(0, inits.back(), key, tok)) return 0; if (!getToken(allowCloseParen, tok)) return 0; } return parseBegin(body); } bool SchemeParser::parseDatum(unsigned otherAllowed, ELObj *&result, Location &loc, Token &tok) { if (!parseSelfEvaluating(otherAllowed|allowVector|allowUnquote|allowUnquoteSplicing, result, tok)) return 0; loc = in_->currentLocation(); if (result) return 1; switch (tok) { case tokenIdentifier: result = interp_->makeSymbol(currentToken_); break; case tokenQuote: return parseAbbreviation("quote", result); case tokenQuasiquote: return parseAbbreviation("quasiquote", result); case tokenUnquote: return parseAbbreviation("unquote", result); case tokenUnquoteSplicing: return parseAbbreviation("unquote-splicing", result); case tokenOpenParen: { ELObj *tem; Location ignore; if (!parseDatum(allowCloseParen, tem, ignore, tok)) return 0; if (!tem) { result = interp_->makeNil(); break; } ELObjDynamicRoot list(*interp_, tem); PairObj *last = new (*interp_) PairObj(tem, 0); list = last; for (;;) { if (!parseDatum(allowCloseParen|allowPeriod, tem, ignore, tok)) return 0; if (!tem) { if (tok == tokenCloseParen) { last->setCdr(interp_->makeNil()); break; } if (!parseDatum(0, tem, ignore, tok)) return 0; last->setCdr(tem); if (!getToken(allowCloseParen, tok)) return 0; break; } last->setCdr(tem); // to protect it PairObj *p = new (*interp_) PairObj(tem, 0); last->setCdr(p); last = p; } result = list; } break; case tokenVector: { VectorObj *v = new (*interp_) VectorObj; ELObjDynamicRoot protect(*interp_, v); Vector &vec = *v; Location ignore; for (;;) { ELObj *tem; if (!parseDatum(allowCloseParen, tem, ignore, tok)) return 0; if (!tem) break; vec.push_back(tem); } result = v; } break; default: break; } return 1; } bool SchemeParser::parseSelfEvaluating(unsigned otherAllowed, ELObj *&result, Token &tok) { if (!getToken(allowExpr|otherAllowed, tok)) return 0; switch (tok) { case tokenTrue: result = interp_->makeTrue(); break; case tokenFalse: result = interp_->makeFalse(); break; case tokenVoid: result = interp_->makeUnspecified(); break; case tokenString: result = new (*interp_) StringObj(currentToken_); break; case tokenKeyword: result = interp_->makeKeyword(currentToken_); break; case tokenChar: result = interp_->makeChar(currentToken_[0]); break; case tokenNumber: result = interp_->convertNumber(currentToken_); if (!result) { message(InterpreterMessages::invalidNumber, StringMessageArg(currentToken_)); result = interp_->makeError(); } break; case tokenGlyphId: result = convertAfiiGlyphId(currentToken_); break; default: result = 0; break; } return 1; } bool SchemeParser::parseAbbreviation(const char *sym, ELObj *&result) { SymbolObj *quoteSym = interp_->makeSymbol(Interpreter::makeStringC(sym)); ELObj *obj; Location ignore; Token tok; if (!parseDatum(0, obj, ignore, tok)) return 0; ELObjDynamicRoot protect(*interp_, obj); protect = new (*interp_) PairObj(protect, interp_->makeNil()); result = interp_->makePair(quoteSym, protect); return 1; } bool SchemeParser::getToken(unsigned allowed, Token &tok) { InputSource *in = in_.pointer(); for (;;) { in->startToken(); Xchar c = in->tokenChar(*this); switch (c) { case InputSource::eE: if (!(allowed & allowEndOfEntity)) return tokenRecover(allowed, tok); tok = tokenEndOfEntity; return 1; case '(': if (!(allowed & allowOpenParen)) return tokenRecover(allowed, tok); tok = tokenOpenParen; return 1; case ')': if (!(allowed & allowCloseParen)) return tokenRecover(allowed, tok); tok = tokenCloseParen; return 1; case '\'': if (!(allowed & allowOtherExpr)) return tokenRecover(allowed, tok); tok = tokenQuote; return 1; case '`': if (!(allowed & allowOtherExpr)) return tokenRecover(allowed, tok); tok = tokenQuasiquote; return 1; case ',': c = in->tokenChar(*this); if (c == '@') { if (!(allowed & allowUnquoteSplicing)) return tokenRecover(allowed, tok); tok = tokenUnquoteSplicing; } else { if (!(allowed & allowUnquote)) return tokenRecover(allowed, tok); tok = tokenUnquote; in->endToken(1); } return 1; case ' ': case '\r': case '\n': case '\t': case '\f': // whitespace break; case '#': c = in->tokenChar(*this); switch (c) { case 't': if (!(allowed & allowOtherExpr)) return tokenRecover(allowed, tok); tok = tokenTrue; return 1; case 'f': if (!(allowed & allowFalse)) return tokenRecover(allowed, tok); tok = tokenFalse; return 1; case '\\': { c = in->tokenChar(*this); if (c == InputSource::eE) { message(InterpreterMessages::unexpectedEof); if (allowed & allowEndOfEntity) { tok = tokenEndOfEntity; return 1; } return 0; } if (!(allowed & allowOtherExpr)) { extendToken(); return tokenRecover(allowed, tok); } in->discardInitial(); extendToken(); tok = tokenChar; if (in->currentTokenLength() == 1) { currentToken_.assign(in->currentTokenStart(), 1); } else { StringC tem(in->currentTokenStart(), in->currentTokenLength()); currentToken_.resize(1); if (!interp_->convertCharName(tem, currentToken_[0])) { message(InterpreterMessages::unknownCharName, StringMessageArg(tem)); currentToken_[0] = defaultChar; } } return 1; } case '!': { extendToken(); StringC tem(in->currentTokenStart() + 2, in->currentTokenLength() - 2); if (tem == Interpreter::makeStringC("optional")) { if (!(allowed & allowHashOptional)) return tokenRecover(allowed, tok); tok = tokenHashOptional; return 1; } if (tem == Interpreter::makeStringC("key")) { if (!(allowed & allowHashKey)) return tokenRecover(allowed, tok); tok = tokenHashKey; return 1; } if (tem == Interpreter::makeStringC("rest")) { if (!(allowed & allowHashRest)) return tokenRecover(allowed, tok); tok = tokenHashRest; return 1; } if (tem == Interpreter::makeStringC("contents")) { if (!(allowed & allowHashContents)) return tokenRecover(allowed, tok); tok = tokenHashContents; return 1; } message(InterpreterMessages::unknownNamedConstant, StringMessageArg(tem)); break; } case 'b': case 'o': case 'x': case 'd': extendToken(); if (!(allowed & allowOtherExpr)) return tokenRecover(allowed, tok); tok = tokenNumber; currentToken_.assign(in->currentTokenStart(), in->currentTokenLength()); return 1; case 'A': extendToken(); if (!(allowed & allowOtherExpr)) return tokenRecover(allowed, tok); tok = tokenGlyphId; currentToken_.assign(in->currentTokenStart() + 2, in->currentTokenLength() - 2); return 1; case InputSource::eE: message(InterpreterMessages::unexpectedEof); if (allowed & allowEndOfEntity) { tok = tokenEndOfEntity; return 1; } return 0; case 'v': if (dsssl2()) { if (!(allowed & allowOtherExpr)) return tokenRecover(allowed, tok); tok = tokenVoid; return 1; } // fall through case '(': if (dsssl2()) { if (!(allowed & allowVector)) return tokenRecover(allowed, tok); tok = tokenVector; return 1; } //fall through default: message(InterpreterMessages::unknownHash); break; } break; case '"': if (!(allowed & allowString)) return tokenRecover(allowed, tok); return scanString(allowed, tok); case ';': skipComment(); break; case '.': extendToken(); switch (in->currentTokenLength()) { case 1: if (!(allowed & allowPeriod)) return tokenRecover(allowed, tok); tok = tokenPeriod; return 1; case 3: if (in_->currentTokenStart()[1] == '.' && in_->currentTokenStart()[2] == '.') return handleIdentifier(allowed, tok); break; } return handleNumber(allowed, tok); default: switch (interp_->lexCategory(c)) { case Interpreter::lexAddWhiteSpace: break; case Interpreter::lexOtherNumberStart: extendToken(); // handle + and - as identifiers if (in->currentTokenLength() == 1) return handleIdentifier(allowed, tok); return handleNumber(allowed, tok); case Interpreter::lexDigit: extendToken(); return handleNumber(allowed, tok); case Interpreter::lexOther: if (c < ' ') { // ignore control characters message(InterpreterMessages::invalidChar); break; } in->ungetToken(); // fall through default: { bool invalid = 0; size_t length = in->currentTokenLength(); for (;;) { Interpreter::LexCategory lc = interp_->lexCategory(in->tokenChar(*this)); if (lc > Interpreter::lexOther) break; if (lc == Interpreter::lexOther) invalid = 1; length++; } in->endToken(length); if (in->currentTokenEnd()[-1] == ':' && in->currentTokenLength() > 1) { if (!(allowed & allowKeyword)) return tokenRecover(allowed, tok); currentToken_.assign(in->currentTokenStart(), in->currentTokenLength() - 1); tok = tokenKeyword; if (invalid || (currentToken_.size() > 1 && currentToken_[currentToken_.size() - 1] == ':')) message(InterpreterMessages::invalidIdentifier, StringMessageArg(currentToken_)); return 1; } if (invalid) message(InterpreterMessages::invalidIdentifier, StringMessageArg(StringC(in->currentTokenStart(), in->currentTokenLength()))); return handleIdentifier(allowed, tok); } } } } } bool SchemeParser::handleNumber(unsigned allowed, Token &tok) { if (!(allowed & allowOtherExpr)) return tokenRecover(allowed, tok); tok = tokenNumber; currentToken_.assign(in_->currentTokenStart(), in_->currentTokenLength()); return 1; } bool SchemeParser::handleIdentifier(unsigned allowed, Token &tok) { if (!(allowed & allowIdentifier)) return tokenRecover(allowed, tok); currentToken_.assign(in_->currentTokenStart(), in_->currentTokenLength()); tok = tokenIdentifier; return 1; } bool SchemeParser::tokenRecover(unsigned allowed, Token &tok) { if (allowed == allowCloseParen) { in_->ungetToken(); tok = tokenCloseParen; message(InterpreterMessages::missingCloseParen); return 1; } if (in_->currentTokenLength() == 0) message(InterpreterMessages::unexpectedEof); else message(InterpreterMessages::unexpectedToken, StringMessageArg(StringC(in_->currentTokenStart(), in_->currentTokenLength()))); return 0; } void SchemeParser::extendToken() { // extend to a delimiter InputSource *in = in_.pointer(); size_t length = in->currentTokenLength(); while (interp_->lexCategory(in->tokenChar(*this)) <= Interpreter::lexOther) length++; in->endToken(length); } bool SchemeParser::scanString(unsigned allowed, Token &tok) { InputSource *in = in_.pointer(); currentToken_.resize(0); for (;;) { Xchar c = in->tokenChar(*this); switch (c) { case InputSource::eE: message(InterpreterMessages::unterminatedString); in->endToken(1); return 0; case '"': tok = tokenString; return 1; case '\\': c = in->tokenChar(*this); if (c == '\\' || c == '"') currentToken_ += c; else if (c == InputSource::eE) break; else { StringC name; name += c; while (interp_->lexCategory(c = in->tokenChar(*this)) < Interpreter::lexOther) name += c; if (c != ';') in->endToken(in->currentTokenLength() - 1); Char ch; if (interp_->convertCharName(name, ch)) currentToken_ += ch; else message(InterpreterMessages::unknownCharName, StringMessageArg(name)); } break; default: currentToken_ += c; break; } } return 0; // not reached } void SchemeParser::skipComment() { for (;;) { Xchar c = in_->get(*this); if (c == InputSource::eE || c == '\r') break; } } ELObj *SchemeParser::convertAfiiGlyphId(const StringC &str) { unsigned long n = 0; for (size_t i = 0; i < str.size(); i++) { if (str[i] < '0' || str[i] > '9') { n = 0; break; } // FIXME check for overflow n = n*10 + (str[i] - '0'); } if (n == 0) { message(InterpreterMessages::invalidAfiiGlyphId, StringMessageArg(str)); return 0; } return new (*interp_) GlyphIdObj(FOTBuilder::GlyphId(afiiPublicId_, n)); } void SchemeParser::dispatchMessage(Message &msg) { interp_->dispatchMessage(msg); } void SchemeParser::dispatchMessage(const Message &msg) { interp_->dispatchMessage(msg); } void SchemeParser::initMessage(Message &msg) { if (in_) msg.loc = in_->currentLocation(); } bool SchemeParser::doDeclareDefaultLanguage() { Location loc(in_->currentLocation()); Owner expr; Token tok; Identifier::SyntacticKey key; if (!parseExpression(0, expr, key, tok)) return 0; if (!getToken(allowCloseParen, tok)) return 0; Location defLoc; unsigned defPart; if(interp_->defaultLanguageSet(defPart, defLoc) && defPart <= interp_->currentPartIndex()) { if(defPart == interp_->currentPartIndex()) { interp_->setNextLocation(loc); message(InterpreterMessages::duplicateDefLangDecl, defLoc); } } else interp_->setDefaultLanguage(expr, interp_->currentPartIndex(), loc); return 1; } bool SchemeParser::doDefineLanguage() { Location loc(in_->currentLocation()); Token tok; if (!getToken(allowIdentifier, tok)) return 0; Identifier *ident = lookup(currentToken_); Identifier::SyntacticKey key; if (ident->syntacticKey(key) && (key <= int(Identifier::lastSyntacticKey))) message(InterpreterMessages::syntacticKeywordAsVariable, StringMessageArg(currentToken_)); Location defLoc; unsigned defPart; if (ident->defined(defPart, defLoc) && defPart <= interp_->currentPartIndex()) { if (defPart == interp_->currentPartIndex()) { message(InterpreterMessages::duplicateDefinition, StringMessageArg(ident->name()), defLoc); return 0; } } lang_ = new (*interp_) LangObj; for (;;) { if (!getToken(allowOpenParen|allowCloseParen, tok)) return 0; if (tok == tokenCloseParen) break; if (!getToken(allowIdentifier, tok)) return 0; const Identifier *ident = lookup(currentToken_); Identifier::SyntacticKey key; if (!ident->syntacticKey(key)) return 0; else { switch (key) { case Identifier::keyCollate: if (!doCollate()) return 0; break; case Identifier::keyToupper: if (!doToupper()) return 0; break; case Identifier::keyTolower: if (!doTolower()) return 0; break; default: return 0; } } } if (!lang_->compile()) return 0; interp_->makePermanent(lang_); Owner expr; expr = new ConstantExpression(lang_, in_->currentLocation()); lang_ = 0; ident->setDefinition(expr, interp_->currentPartIndex(), loc); return 1; } bool SchemeParser::doCollate() { Token tok; for (;;) { if (!getToken(allowOpenParen|allowCloseParen, tok)) return 0; if (tok == tokenCloseParen) break; if (!getToken(allowIdentifier, tok)) return 0; const Identifier *ident = lookup(currentToken_); Identifier::SyntacticKey key; if (!ident->syntacticKey(key)) { return 0; } else { switch (key) { case Identifier::keyElement: if (!doMultiCollatingElement()) return 0; break; case Identifier::keySymbol: if (!doCollatingSymbol()) return 0; break; case Identifier::keyOrder: if (!doCollatingOrder()) return 0; break; default: return 0; } } } return 1; } bool SchemeParser::doMultiCollatingElement() { Token tok; if (!getToken(allowIdentifier, tok)) return 0; StringC sym(currentToken_); if (!getToken(allowString, tok)) return 0; StringC str(currentToken_); if (!getToken(allowCloseParen, tok)) return 0; lang_->addMultiCollatingElement(sym, str); return 1; } bool SchemeParser::doCollatingSymbol() { Token tok; if (!getToken(allowIdentifier, tok)) return 0; StringC sym(currentToken_); if (!getToken(allowCloseParen, tok)) return 0; lang_->addCollatingSymbol(sym); return 1; } bool SchemeParser::doCollatingOrder() { Token tok; if (!getToken(allowOpenParen, tok)) return 0; int nested = 0; LangObj::LevelSort sort = { 0, 0, 0}; for (;;) { if (!getToken(((nested == 0) ? allowOpenParen : 0)| allowCloseParen|allowIdentifier, tok)) return 0; if (tok == tokenOpenParen) nested++; else if (tok == tokenCloseParen) nested--; else { const Identifier *ident = lookup(currentToken_); Identifier::SyntacticKey key; if (!ident->syntacticKey(key)) return 0; switch (key) { case Identifier::keyForward: if (sort.backward) return 0; sort.forward = 1; break; case Identifier::keyBackward: if (sort.forward) return 0; sort.backward = 1; break; case Identifier::keyPosition: sort.position = 1; break; default: return 0; } } if (nested < 0) break; if (nested == 0) { if (!sort.backward) sort.forward = 1; lang_->addLevel(sort); } } for (;;) { if (!getToken(allowOpenParen| allowCloseParen| allowIdentifier| allowOtherExpr, tok)) return 0; if (tok == tokenCloseParen) break; StringC empty; switch (tok) { case tokenTrue: lang_->addDefaultPos(); for(Char i = 0; i < lang_->levels(); i++) lang_->addLevelWeight(i, empty); break; case tokenIdentifier: case tokenChar: if (!lang_->addCollatingPos(currentToken_)) return 0; for (unsigned i = 0; i < lang_->levels(); i++) lang_->addLevelWeight(i, currentToken_); break; case tokenOpenParen: if (!doWeights()) return 0; break; default: return 0; } } return 1; } bool SchemeParser::doWeights() { Token tok; if (!getToken(allowIdentifier|allowOtherExpr, tok)) return 0; StringC sym(currentToken_); if (!lang_->addCollatingPos(sym)) return 0; int nested = 0; unsigned l = 0; for (;;) { if (!getToken((nested ? 0 : allowOpenParen)| allowCloseParen| allowIdentifier| allowOtherExpr| allowString, tok)) return 0; if (tok == tokenOpenParen) nested++; else if (tok == tokenCloseParen) nested--; else { switch (tok) { case tokenString: for (size_t i = 0; i < currentToken_.size(); i++) { StringC ctok(&(currentToken_[i]), 1); if (!lang_->addLevelWeight(l, ctok)) return 0; } break; case tokenIdentifier: case tokenChar: if (!lang_->addLevelWeight(l, currentToken_)) return 0; break; default: return 0; } } if (nested < 0) break; if (nested == 0) l++; } return 1; } bool SchemeParser::doToupper() { Token tok; for (;;) { if (!getToken(allowOpenParen|allowCloseParen, tok)) return 0; if (tok == tokenCloseParen) break; if (!getToken(allowOtherExpr, tok) || (tok != tokenChar)) return 0; Char lc = currentToken_[0]; if (!getToken(allowOtherExpr, tok) || (tok != tokenChar)) return 0; Char uc = currentToken_[0]; if (!getToken(allowCloseParen, tok)) return 0; lang_->addToupper(lc, uc); } return 1; } bool SchemeParser::doTolower() { Token tok; for (;;) { if (!getToken(allowOpenParen|allowCloseParen, tok)) return 0; if (tok == tokenCloseParen) break; if (!getToken(allowOtherExpr, tok) || (tok != tokenChar)) return 0; Char uc = currentToken_[0]; if (!getToken(allowOtherExpr, tok) || (tok != tokenChar)) return 0; Char lc = currentToken_[0]; if (!getToken(allowCloseParen, tok)) return 0; lang_->addTolower(uc, lc); } return 1; } bool SchemeParser::parseSpecialQuery(Owner &rexp, const char *query) { Location loc(in_->currentLocation()); Token tok; if (!getToken(allowIdentifier, tok)) return 0; Vector vars; vars.push_back(lookup(currentToken_)); Identifier::SyntacticKey key; if (vars.back()->syntacticKey(key) && key <= int(Identifier::lastSyntacticKey)) message(InterpreterMessages::syntacticKeywordAsVariable, StringMessageArg(currentToken_)); Owner op(new ConstantExpression( interp_->lookup(interp_->makeStringC(query))->computeBuiltinValue(1, *interp_), loc)); NCVector > inits, args(2); Owner expr; if (!parseExpression(0, args[1], key, tok) || !parseExpression(0, expr, key, tok) || !getToken(allowCloseParen, tok)) return 0; args[0] = new LambdaExpression(vars, inits, 0, 0, 0, expr, loc); rexp = new CallExpression(op, args, loc); return 1; } bool SchemeParser::doDeclareCharProperty() { Token tok; if (!getToken(allowIdentifier, tok)) return 0; Identifier *ident = lookup(currentToken_); Owner expr; Identifier::SyntacticKey key; if (!parseExpression(0, expr, key, tok)) return 0; if (!getToken(allowCloseParen, tok)) return 0; interp_->addCharProperty(ident, expr); return 1; } bool SchemeParser::doAddCharProperties() { NCVector > exprs; Vector keys; Token tok; for (;;) { if (!getToken(allowKeyword|allowOtherExpr, tok)) return 0; if (tok!=tokenKeyword) break; keys.push_back(lookup(currentToken_)); exprs.resize(exprs.size() + 1); Identifier::SyntacticKey key; if (!parseExpression(0, exprs.back(), key, tok)) return 0; } for(;;) { if (tok!=tokenChar) { message(InterpreterMessages::badAddCharProperty); return 0; } for (size_t j = 0; j < keys.size(); j++) interp_->setCharProperty(keys[j], currentToken_[0], exprs[j]); if(!getToken(allowOtherExpr|allowCloseParen, tok)) return 0; if (tok==tokenCloseParen) break; } return 1; } #ifdef DSSSL_NAMESPACE } #endif openjade-1.3.2/style/SchemeParser.h0100664000076400007640000001264006755641431015325 0ustar ianian// Copyright (c) 1996 James Clark // See the file copying.txt for copying permission. #ifndef SchemeParser_INCLUDED #define SchemeParser_INCLUDED 1 #include "Interpreter.h" #include "Expression.h" #include "Owner.h" #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif class LangObj; class SchemeParser : public Messenger { public: SchemeParser(Interpreter &, Owner &); void parse(); void parseStandardChars(); void parseMapSdataEntity(const StringC &name, const StringC &text); void parseNameChars(); void parseSeparatorChars(); bool parseExpression(Owner &); private: SchemeParser(const SchemeParser &); // undefined void operator=(const SchemeParser &); // undefined enum { allowEndOfEntity = 01, allowFalse = 02, allowKeyword = 04, allowOpenParen = 010, allowCloseParen = 020, allowIdentifier = 040, allowPeriod = 0100, allowOtherExpr = 0200, // number, character, glyph-id, quote, backquote allowExpressionKey = 0400, allowKeyDefine = 01000, allowKeyElse = 02000, allowKeyArrow = 04000, // => allowString = 010000, allowHashOptional = 020000, allowHashKey = 040000, allowHashRest = 0100000, allowUnquote = 0200000, allowUnquoteSplicing = 0400000, allowQuasiquoteKey = 01000000, allowVector = 02000000, allowHashContents = 04000000, allowExpr = (allowFalse|allowKeyword|allowOpenParen|allowIdentifier |allowString|allowHashOptional|allowHashKey|allowHashRest |allowOtherExpr) }; enum Token { tokenEndOfEntity, tokenTrue, tokenFalse, tokenString, tokenIdentifier, tokenKeyword, tokenChar, tokenNumber, tokenGlyphId, tokenOpenParen, tokenCloseParen, tokenPeriod, tokenVector, tokenQuote, tokenQuasiquote, tokenUnquote, tokenUnquoteSplicing, tokenHashRest, tokenHashOptional, tokenHashKey, tokenHashContents, tokenVoid }; bool doDefine(); bool doDefineUnit(); bool doElement(); bool doOrElement(); bool doDefault(); bool doId(); bool doRoot(); bool doMode(); bool doDeclareInitialValue(); bool doDeclareCharacteristic(); bool doDeclareCharCharacteristicAndProperty(); bool doDeclareFlowObjectClass(); bool doDeclareClassAttribute(); bool doDeclareIdAttribute(); bool doDeclareFlowObjectMacro(); bool doDeclareDefaultLanguage(); bool doDefineLanguage(); bool doCollate(); bool doMultiCollatingElement(); bool doCollatingSymbol(); bool doCollatingOrder(); bool doWeights(); bool doToupper(); bool doTolower(); bool doDeclareCharProperty(); bool doAddCharProperties(); bool skipForm(); bool parseSpecialQuery(Owner &expr, const char *query); bool parseExpression(unsigned allowed, Owner &, Identifier::SyntacticKey &, Token &); bool parseBegin(Owner &expr); bool parseSet(Owner &expr); bool parseLambda(Owner &); bool parseLet(Owner &); bool parseLetStar(Owner &); bool parseLetrec(Owner &); bool parseBindingsAndBody(Vector &vars, NCVector > &inits, Owner &body); bool parseBindingsAndBody1(Vector &vars, NCVector > &inits, Owner &body); bool parseQuote(Owner &); bool parseIf(Owner &); bool parseCond(Owner &, bool opt = 0); bool parseCase(Owner &); bool parseOr(Owner &); bool parseAnd(Owner &, bool opt = 0); bool parseMake(Owner &); bool parseStyle(Owner &); bool parseWithMode(Owner &); bool parseFormals(Vector &, NCVector > &, int &, bool &, int &); bool parseDatum(unsigned otherAllowed, ELObj *&, Location &, Token &); bool parseSelfEvaluating(unsigned otherAllowed, ELObj *&, Token &); bool parseAbbreviation(const char *, ELObj *&); bool parseQuasiquote(Owner &); bool parseQuasiquoteTemplate(unsigned level, unsigned allowed, Owner &, Identifier::SyntacticKey &, Token &, bool &spliced); void createQuasiquoteAbbreviation(const char *, Owner &); bool parseRuleBody(Owner &, ProcessingMode::RuleType &); bool getToken(unsigned, Token &); bool handleNumber(unsigned, Token &); bool handleIdentifier(unsigned, Token &); void extendToken(); bool scanString(); void skipComment(); bool tokenRecover(unsigned, Token &); bool scanString(unsigned, Token &); ELObj *convertAfiiGlyphId(const StringC &); Identifier *lookup(const StringC &str); ProcessingMode *lookupProcessingMode(const StringC &); void dispatchMessage(Message &); void dispatchMessage(const Message &); void initMessage(Message &msg); bool dsssl2() const; Interpreter *interp_; Owner in_; StringC currentToken_; ProcessingMode *defMode_; const char *afiiPublicId_; bool dsssl2_; LangObj *lang_; }; inline Identifier *SchemeParser::lookup(const StringC &str) { return interp_->lookup(str); } inline ProcessingMode *SchemeParser::lookupProcessingMode(const StringC &name) { return interp_->lookupProcessingMode(name); } inline bool SchemeParser::dsssl2() const { return dsssl2_; } #ifdef DSSSL_NAMESPACE } #endif #endif /* not SchemeParser_INCLUDED */ openjade-1.3.2/style/SosofoObj.h0100664000076400007640000001506707417604526014655 0ustar ianian// Copyright (c) 1996 James Clark // See the file copying.txt for copying permission. #ifndef SosofoObj_INCLUDED #define SosofoObj_INCLUDED 1 #include "ELObj.h" #include "Location.h" #include "FOTBuilder.h" #include "Owner.h" #include "CopyOwner.h" #include "Insn.h" #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif class ProcessContext; class Interpreter; class SosofoObj : public ELObj { public: virtual void process(ProcessContext &) = 0; SosofoObj *asSosofo(); virtual bool tableBorderStyle(StyleObj *&); virtual bool ruleStyle(ProcessContext &, StyleObj *&); virtual bool isRule(); virtual bool characterStyle(ProcessContext &, StyleObj *&, FOTBuilder::CharacterNIC &); virtual bool isCharacter(); }; class NextMatchSosofoObj : public SosofoObj { public: NextMatchSosofoObj(StyleObj *); void process(ProcessContext &); private: StyleObj *style_; }; class EmptySosofoObj : public SosofoObj { public: void process(ProcessContext &); }; class ProcessingMode; class ProcessNodeSosofoObj : public SosofoObj { public: void *operator new(size_t, Collector &c) { return c.allocateObject(1); } ProcessNodeSosofoObj(const NodePtr &node, const ProcessingMode *mode); void process(ProcessContext &); private: NodePtr node_; const ProcessingMode *mode_; }; class ProcessNodeListSosofoObj : public SosofoObj { public: ProcessNodeListSosofoObj(NodeListObj *, const ProcessingMode *); void process(ProcessContext &); void traceSubObjects(Collector &) const; private: NodeListObj *nodeList_; const ProcessingMode *mode_; }; class AppendSosofoObj : public SosofoObj { public: void *operator new(size_t, Collector &c) { return c.allocateObject(1); } AppendSosofoObj() { hasSubObjects_ = 1; } AppendSosofoObj *asAppendSosofo(); void process(ProcessContext &); void append(SosofoObj *); void traceSubObjects(Collector &) const; private: Vector v_; }; class LiteralSosofoObj : public SosofoObj { public: LiteralSosofoObj(ELObj *str) : str_(str) { hasSubObjects_ = 1; } void process(ProcessContext &); void traceSubObjects(Collector &) const; private: ELObj *str_; }; class CurrentNodePageNumberSosofoObj : public SosofoObj { public: void *operator new(size_t, Collector &c) { return c.allocateObject(1); } CurrentNodePageNumberSosofoObj(const NodePtr &node) : node_(node) { } void process(ProcessContext &); private: NodePtr node_; }; class PageNumberSosofoObj : public SosofoObj { public: PageNumberSosofoObj() { } void process(ProcessContext &); }; class CompoundFlowObj; class FlowObj : public SosofoObj { public: FlowObj(); virtual FlowObj *copy(Collector &) const = 0; virtual CompoundFlowObj *asCompoundFlowObj(); virtual bool hasNonInheritedC(const Identifier *) const; virtual bool hasPseudoNonInheritedC(const Identifier *) const; virtual void setNonInheritedC(const Identifier *, ELObj *, const Location &, Interpreter &); virtual bool setImplicitChar(ELObj *, const Location &, Interpreter &); void traceSubObjects(Collector &) const; void setStyle(StyleObj *); void process(ProcessContext &); virtual void pushStyle(ProcessContext &, unsigned &); virtual void popStyle(ProcessContext &, unsigned); virtual void processInner(ProcessContext &) = 0; protected: static bool setDisplayNIC(FOTBuilder::DisplayNIC &, const Identifier *, ELObj *, const Location &, Interpreter &); static bool isDisplayNIC(const Identifier *); StyleObj *style_; }; class CompoundFlowObj : public FlowObj { public: CompoundFlowObj() : content_(0) { } void processInner(ProcessContext &); void traceSubObjects(Collector &) const; void setContent(SosofoObj *content) { content_ = content; } CompoundFlowObj *asCompoundFlowObj(); protected: SosofoObj *content() const; private: SosofoObj *content_; }; class SequenceFlowObj : public CompoundFlowObj { public: SequenceFlowObj() { } void processInner(ProcessContext &); FlowObj *copy(Collector &) const; }; class ProcessingMode; class ProcessChildrenSosofoObj : public SosofoObj { public: ProcessChildrenSosofoObj(const ProcessingMode *mode) : mode_(mode) { } void process(ProcessContext &); private: const ProcessingMode *mode_; }; class ProcessChildrenTrimSosofoObj : public SosofoObj { public: ProcessChildrenTrimSosofoObj(const ProcessingMode *mode) : mode_(mode) { } void process(ProcessContext &); private: const ProcessingMode *mode_; }; class SetNonInheritedCsSosofoObj : public SosofoObj { public: void *operator new(size_t, Collector &c) { return c.allocateObject(1); } SetNonInheritedCsSosofoObj(FlowObj *, const InsnPtr &, ELObj **, const NodePtr &); ~SetNonInheritedCsSosofoObj(); void process(ProcessContext &); void traceSubObjects(Collector &) const; bool characterStyle(ProcessContext &, StyleObj *&, FOTBuilder::CharacterNIC &); bool isCharacter(); bool ruleStyle(ProcessContext &, StyleObj *&); bool isRule(); private: ELObj *resolve(ProcessContext &); FlowObj *flowObj_; ELObj **display_; InsnPtr code_; NodePtr node_; }; class Expression; // This wraps a flow object that has a label:. class LabelSosofoObj : public SosofoObj { public: void *operator new(size_t, Collector &c) { return c.allocateObject(1); } LabelSosofoObj(SymbolObj *, const Location &, SosofoObj *content); void process(ProcessContext &); void traceSubObjects(Collector &) const; private: SymbolObj *label_; Owner locp_; SosofoObj *content_; }; // This wraps the content of a sosofo with a content-map:. class ContentMapSosofoObj : public SosofoObj { public: ContentMapSosofoObj(ELObj *, const Location *, SosofoObj *content); void process(ProcessContext &); void traceSubObjects(Collector &) const; private: ELObj *contentMap_; const Location *locp_; SosofoObj *content_; }; class DiscardLabeledSosofoObj : public SosofoObj { public: DiscardLabeledSosofoObj(SymbolObj *, SosofoObj *); void process(ProcessContext &); void traceSubObjects(Collector &) const; private: SymbolObj *label_; SosofoObj *content_; }; class PageTypeSosofoObj : public SosofoObj { public: PageTypeSosofoObj(unsigned, SosofoObj *, SosofoObj *); void process(ProcessContext &); void traceSubObjects(Collector &) const; private: unsigned pageTypeFlag_; SosofoObj *match_; SosofoObj *noMatch_; }; inline void FlowObj::setStyle(StyleObj *style) { style_ = style; } inline void AppendSosofoObj::append(SosofoObj *obj) { v_.push_back(obj); } inline SosofoObj *CompoundFlowObj::content() const { return content_; } #ifdef DSSSL_NAMESPACE } #endif #endif /* not SosofoObj_INCLUDED */ openjade-1.3.2/style/Style.cxx0100664000076400007640000006656106752115504014424 0ustar ianian// Copyright (c) 1996 James Clark // See the file copying.txt for copying permission. #include "stylelib.h" #include "Style.h" #include "VM.h" #include "Interpreter.h" #include "InterpreterMessages.h" #include "SosofoObj.h" #include "macros.h" #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif StyleStack::StyleStack() : level_(0) { } void StyleStack::pushContinue(StyleObj *style, const ProcessingMode::Rule *rule, const NodePtr &nodePtr, Messenger *mgr) { StyleObjIter iter; style->appendIter(iter); for (;;) { const VarStyleObj *varStyle; ConstPtr spec(iter.next(varStyle)); if (spec.isNull()) break; size_t ind = spec->index(); if (ind >= inheritedCInfo_.size()) inheritedCInfo_.resize(ind + 1); Ptr &info = inheritedCInfo_[ind]; if (!info.isNull() && info->valLevel == level_) { if (rule) { ASSERT(info->rule != 0); if (rule->compareSpecificity(*info->rule) == 0) { mgr->setNextLocation(info->rule->location()); mgr->message(InterpreterMessages::ambiguousStyle, StringMessageArg(info->spec->identifier()->name()), rule->location()); } } } else { popList_->list.push_back(ind); info = new InheritedCInfo(spec, varStyle, level_, level_, rule, info); } } } void StyleStack::pushEnd(VM &vm, FOTBuilder &fotb) { const PopList *oldPopList = popList_->prev.pointer(); if (oldPopList) { for (size_t i = 0; i < oldPopList->dependingList.size(); i++) { size_t d = oldPopList->dependingList[i]; // d is the index of a characteristic that depends on the actual // value of another characteritistic if (inheritedCInfo_[d]->valLevel != level_) { const Vector &dependencies = inheritedCInfo_[d]->dependencies; bool changed = 0; for (size_t j = 0; j < dependencies.size(); j++) { const InheritedCInfo *p = inheritedCInfo_[dependencies[j]].pointer(); if (p && p->valLevel == level_) { inheritedCInfo_[d] = new InheritedCInfo(inheritedCInfo_[d]->spec, inheritedCInfo_[d]->style, level_, inheritedCInfo_[d]->specLevel, inheritedCInfo_[d]->rule, inheritedCInfo_[d]); popList_->list.push_back(d); changed = 1; break; } } // If it changed, then doing set() on the new value will add // it to the dependingList for this level. if (!changed) popList_->dependingList.push_back(d); } } } vm.styleStack = this; for (size_t i = 0; i < popList_->list.size(); i++) { InheritedCInfo &info = *inheritedCInfo_[popList_->list[i]]; vm.specLevel = info.specLevel; info.spec->set(vm, info.style, fotb, info.cachedValue, info.dependencies); if (info.dependencies.size()) popList_->dependingList.push_back(popList_->list[i]); } vm.styleStack = 0; } void StyleStack::pop() { for (size_t i = 0; i < popList_->list.size(); i++) { size_t ind = popList_->list[i]; ASSERT(inheritedCInfo_[ind]->valLevel == level_); Ptr tem(inheritedCInfo_[ind]->prev); inheritedCInfo_[ind] = tem; } level_--; Ptr tem(popList_->prev); popList_ = tem; } ELObj *StyleStack::inherited(const ConstPtr &ic, unsigned specLevel, Interpreter &interp, Vector &dependencies) { ASSERT(specLevel != unsigned(-1)); size_t ind = ic->index(); ConstPtr spec; const VarStyleObj *style = 0; unsigned newSpecLevel = unsigned(-1); if (ind >= inheritedCInfo_.size()) spec = ic; else { const InheritedCInfo *p = inheritedCInfo_[ind].pointer(); while (p != 0) { if (p->specLevel < specLevel) break; p = p->prev.pointer(); } if (!p) spec = ic; else { if (p->cachedValue) { // We can only use the cached value if none of the values // we depended on changed since we computed it. bool cacheOk = 1; for (size_t i = 0; i < p->dependencies.size(); i++) { size_t d = p->dependencies[i]; if (d < inheritedCInfo_.size() && inheritedCInfo_[d]->valLevel > p->valLevel) { cacheOk = 0; break; } } if (cacheOk) return p->cachedValue; } style = p->style; spec = p->spec; newSpecLevel = p->specLevel; } } VM vm(interp); vm.styleStack = this; vm.specLevel = newSpecLevel; return spec->value(vm, style, dependencies); } ELObj *StyleStack::actual(const ConstPtr &ic, const Location &loc, Interpreter &interp, Vector &dependencies) { size_t ind = ic->index(); for (size_t i = 0; i < dependencies.size(); i++) { if (dependencies[i] == ind) { interp.setNextLocation(loc); interp.message(InterpreterMessages::actualLoop, StringMessageArg(ic->identifier()->name())); return interp.makeError(); } } dependencies.push_back(ind); ConstPtr spec; const VarStyleObj *style = 0; if (ind >= inheritedCInfo_.size()) spec = ic; else { const InheritedCInfo *p = inheritedCInfo_[ind].pointer(); if (!p) spec = ic; else if (p->cachedValue) { const Vector &dep = p->dependencies; for (size_t i = 0; i < dep.size(); i++) dependencies.push_back(dep[i]); return p->cachedValue; } else { style = p->style; spec = p->spec; } } VM vm(interp); vm.styleStack = this; vm.specLevel = level_; return spec->value(vm, style, dependencies); } void StyleStack::trace(Collector &c) const { for (size_t i = 0; i < inheritedCInfo_.size(); i++) { for (const InheritedCInfo *p = inheritedCInfo_[i].pointer(); p; p = p->prev.pointer()) { c.trace(p->style); c.trace(p->cachedValue); } } } InheritedCInfo::InheritedCInfo(const ConstPtr &sp, const VarStyleObj *so, unsigned vl, unsigned sl, const ProcessingMode::Rule *r, const Ptr &p) : spec(sp), style(so), valLevel(vl), specLevel(sl), rule(r), prev(p), cachedValue(0) { } StyleObj *StyleObj::asStyle() { return this; } VarStyleObj::VarStyleObj(const ConstPtr &styleSpec, StyleObj *use, ELObj **display, const NodePtr &node) : styleSpec_(styleSpec), use_(use), display_(display), node_(node) { hasSubObjects_ = 1; } VarStyleObj::~VarStyleObj() { delete [] display_; } void VarStyleObj::traceSubObjects(Collector &c) const { c.trace(use_); if (display_) for (ELObj **pp = display_; *pp; pp++) c.trace(*pp); } void VarStyleObj::appendIterForce(StyleObjIter &iter) const { if (styleSpec_->forceSpecs.size()) iter.append(&styleSpec_->forceSpecs, this); } void VarStyleObj::appendIterNormal(StyleObjIter &iter) const { if (styleSpec_->specs.size()) iter.append(&styleSpec_->specs, this); if (use_) use_->appendIter(iter); } void VarStyleObj::appendIter(StyleObjIter &iter) const { VarStyleObj::appendIterForce(iter); VarStyleObj::appendIterNormal(iter); } OverriddenStyleObj::OverriddenStyleObj(BasicStyleObj *basic, StyleObj *override) : basic_(basic), override_(override) { hasSubObjects_ = 1; } void OverriddenStyleObj::traceSubObjects(Collector &c) const { c.trace(basic_); c.trace(override_); } void OverriddenStyleObj::appendIter(StyleObjIter &iter) const { basic_->appendIterForce(iter); override_->appendIter(iter); basic_->appendIterNormal(iter); } MergeStyleObj::MergeStyleObj() { hasSubObjects_ = 1; } void MergeStyleObj::append(StyleObj *obj) { styles_.push_back(obj); } void MergeStyleObj::appendIter(StyleObjIter &iter) const { for (size_t i = 0; i < styles_.size(); i++) styles_[i]->appendIter(iter); } void MergeStyleObj::traceSubObjects(Collector &c) const { for (size_t i = 0; i < styles_.size(); i++) c.trace(styles_[i]); } ColorObj *ColorObj::asColor() { return this; } DeviceRGBColorObj::DeviceRGBColorObj(unsigned char red, unsigned char green, unsigned char blue) { color_.red = red; color_.green = green; color_.blue = blue; } void DeviceRGBColorObj::set(FOTBuilder &fotb) const { fotb.setColor(color_); } void DeviceRGBColorObj::setBackground(FOTBuilder &fotb) const { fotb.setBackgroundColor(color_); } ColorSpaceObj *ColorSpaceObj::asColorSpace() { return this; } // invert a 3x3 matrix A. result is returned in B // both must be arrays of length 9. static void invert(double *A, double *B) { B[0] = (A[4]*A[8] - A[5]*A[7]); B[3] = - (A[3]*A[8] - A[5]*A[6]); B[6] = (A[3]*A[7] - A[4]*A[6]); B[1] = - (A[1]*A[8] - A[2]*A[7]); B[4] = (A[0]*A[8] - A[2]*A[6]); B[7] = - (A[0]*A[7] - A[1]*A[6]); B[2] = (A[1]*A[5] - A[2]*A[4]); B[5] = - (A[0]*A[5] - A[2]*A[3]); B[8] = (A[0]*A[4] - A[1]*A[3]); double det = A[0]*B[0] + A[1]*B[3] + A[2]*B[6]; if (det < 0.0001) { //FIXME message } B[0] /= det; B[1] /= det; B[2] /= det; B[3] /= det; B[4] /= det; B[5] /= det; B[6] /= det; B[7] /= det; B[8] /= det; } /* FIXME make color handling more flexible: * pass different color types to backends * move the conversion code to a separate class ColorConverter, which could then be used by backends to do the needed conversions. * make phosphors settable * make highlight color for KX settable * whitepoint correction, making the device whitepoint/blackpoint settable for the formulas used here, see: * Computer Graphics, Principles and Practice, Second Edition, Foley, van Damme, Hughes, Addison-Wesley, 1987 * Principles of Color Technology, Second Edition, Fred W. Billmeyer, Jr. and Max Saltzman, John Wiley & Sons, Inc., 1981 * The color faq */ CIEXYZColorSpaceObj::CIEXYZColorSpaceObj(const double *wp, const double *bp) { xyzData_ = new XYZData; for (int i = 0; i < 3; i++) xyzData_->white_[i] = wp[i]; double tmp = wp[0] + 15*wp[1] + 3*wp[2]; xyzData_->white_u = 4*wp[0]/tmp; xyzData_->white_v = 9*wp[1]/tmp; // from the color faq double xr = .64; double yr = .33; double xg = .30; double yg = .60; double xb = .15; double yb = .06; double U[9]; U[0] = xr; U[1] = xg; U[2] = xb; U[3] = yr; U[4] = yg; U[5] = yb; U[6] = 1.0 - xr - yr; U[7] = 1.0 - xg - yg; U[8] = 1.0 - xb - yb; double Uinv[9]; invert(U, Uinv); double C[3]; for (int i = 0; i < 3; i++) C[i] = Uinv[3*i]*wp[0] + Uinv[3*i+1]*wp[1] + Uinv[3*i+2]*wp[2]; double Minv[9]; Minv[0] = U[0]*C[0]; Minv[1] = U[1]*C[1]; Minv[2] = U[2]*C[2]; Minv[3] = U[3]*C[0]; Minv[4] = U[4]*C[1]; Minv[5] = U[5]*C[2]; Minv[6] = U[6]*C[0]; Minv[7] = U[7]*C[1]; Minv[8] = U[8]*C[2]; invert(Minv, xyzData_->M_); } CIEXYZColorSpaceObj::~CIEXYZColorSpaceObj() { delete xyzData_; } ELObj *CIEXYZColorSpaceObj::makeColor (const double *h, Interpreter &interp) { unsigned char c[3]; for (int i = 0; i < 3; i++) c[i] = (unsigned char) ((xyzData_->M_[3*i]*h[0] + xyzData_->M_[3*i+1]*h[1] + xyzData_->M_[3*i+2]*h[2])*255.0 + .5); return new (interp) DeviceRGBColorObj(c[0], c[1], c[2]); } CIELUVColorSpaceObj::CIELUVColorSpaceObj(const double *wp, const double *bp, const double *r) : CIEXYZColorSpaceObj(wp, bp) { luvData_ = new LUVData; for (int i = 0; i < 6; i++) luvData_->range_[i] = r ? r[i] : ((i % 2) ? 1.0 : .0); } CIELUVColorSpaceObj::~CIELUVColorSpaceObj() { delete luvData_; } ELObj *CIELUVColorSpaceObj::makeColor(int argc, ELObj **argv, Interpreter &interp, const Location &loc) { if (argc == 0) return new (interp) DeviceRGBColorObj(0, 0, 0); if (argc != 3) { interp.setNextLocation(loc); interp.message(InterpreterMessages::colorArgCount, StringMessageArg(interp.makeStringC("CIE LUV"))); return interp.makeError(); } double d[3]; for (int i = 0; i < 3; i++) { if (!argv[i]->realValue(d[i])) { interp.setNextLocation(loc); interp.message(InterpreterMessages::colorArgType, StringMessageArg(interp.makeStringC("CIE LUV"))); return interp.makeError(); } if (d[i] < luvData_->range_[2*i] || d[i] > luvData_->range_[2*i+1]) { interp.setNextLocation(loc); interp.message(InterpreterMessages::colorArgRange, StringMessageArg(interp.makeStringC("CIE LUV"))); return interp.makeError(); } } double h[3]; if (d[0] == 0.0) { h[0] = h[1] = h[2] = 0.0; } else { if (d[0] <= 7.996968) h[1] = d[0] / 903.0; else { h[1] = (d[0] + 16.0) / 116.0; h[1] = h[1] * h[1] * h[1]; } double uu = d[1] / (13.0 * d[0]) + xyzData_->white_u; double vv = d[2] / (13.0 * d[0]) + xyzData_->white_v; double tmp = 9.0 * h[1] / vv; h[0] = uu * tmp / 4.0; h[2] = (tmp - 15.0 * h[1] - h[0]) / 3.0; } return CIEXYZColorSpaceObj::makeColor(h, interp); } CIELABColorSpaceObj::CIELABColorSpaceObj(const double *wp, const double *bp, const double *r) : CIEXYZColorSpaceObj(wp, bp) { labData_ = new LABData; if (r) for (int i = 0; i < 6; i++) labData_->range_[i] = r[i]; else { labData_->range_[0] = .0; labData_->range_[1] = 100.0; labData_->range_[2] = .0; labData_->range_[3] = 1.0; labData_->range_[4] = .0; labData_->range_[5] = 1.0; } } CIELABColorSpaceObj::~CIELABColorSpaceObj() { delete labData_; } ELObj *CIELABColorSpaceObj::makeColor(int argc, ELObj **argv, Interpreter &interp, const Location &loc) { if (argc == 0) return new (interp) DeviceRGBColorObj(0, 0, 0); if (argc != 3) { interp.setNextLocation(loc); interp.message(InterpreterMessages::colorArgCount, StringMessageArg(interp.makeStringC("CIE LAB"))); return interp.makeError(); } double d[3]; for (int i = 0; i < 3; i++) { if (!argv[i]->realValue(d[i])) { interp.setNextLocation(loc); interp.message(InterpreterMessages::colorArgType, StringMessageArg(interp.makeStringC("CIE LAB"))); return interp.makeError(); } if (d[i] < labData_->range_[2*i] || d[i] > labData_->range_[2*i+1]) { interp.setNextLocation(loc); interp.message(InterpreterMessages::colorArgRange, StringMessageArg(interp.makeStringC("CIE LAB"))); return interp.makeError(); } } d[0] /= 100.0; double h[3]; double tmp = (d[0] + 16.0) / 116.0; h[1] = tmp * tmp * tmp; if (h[1] < 0.008856) { tmp = d[0] / 9.03292; h[0] = xyzData_->white_[0] * ((d[1] / 3893.5) + tmp); h[1] = tmp; h[2] = xyzData_->white_[2] * (tmp - (d[2] / 1557.4)); } else { double tmp2 = tmp + (d[1] / 5.0); h[0] = xyzData_->white_[0] * tmp2 * tmp2 * tmp2; tmp2 = tmp - (d[2] / 2.0); h[2] = xyzData_->white_[2] * tmp2 * tmp2 * tmp2; } return CIEXYZColorSpaceObj::makeColor(h, interp); } CIEABCColorSpaceObj::CIEABCColorSpaceObj(const double *wp, const double *bp, const double *rabc, FunctionObj **dabc, const double *mabc, const double *rlmn, FunctionObj **dlmn, const double *mlmn) : CIEXYZColorSpaceObj(wp, bp) { abcData_ = new ABCData; int i; for (i = 0; i < 6; i++) abcData_->rangeAbc_[i] = rabc ? rabc[i] : ((i % 2) ? 1.0 : 0.0); for (i = 0; i < 3; i++) abcData_->decodeAbc_[i] = dabc ? dabc[i] : 0; for (i = 0; i < 9; i++) abcData_->matrixAbc_[i] = mabc ? mabc[i] : ((i % 4) ? 0.0 : 1.0); for (i = 0; i < 6; i++) abcData_->rangeLmn_[i] = rlmn ? rlmn[i] : ((i % 2) ? 1.0 : 0.0); for (i = 0; i < 3; i++) abcData_->decodeLmn_[i] = dlmn ? dlmn[i] : 0; for (i = 0; i < 9; i++) abcData_->matrixLmn_[i] = mlmn ? mlmn[i] : ((i % 4) ? 0.0 : 1.0); } CIEABCColorSpaceObj::~CIEABCColorSpaceObj() { delete abcData_; } void CIEABCColorSpaceObj::traceSubObjects(Collector &c) const { for (int i = 0; i < 3; i++) if (abcData_->decodeAbc_[i]) c.trace(abcData_->decodeAbc_[i]); for (int i = 0; i < 3; i++) if (abcData_->decodeLmn_[i]) c.trace(abcData_->decodeLmn_[i]); } static bool applyFunc(Interpreter &interp, FunctionObj *f, double &d) { InsnPtr insns[2]; insns[1] = f->makeCallInsn(1, interp, Location(), InsnPtr()); insns[0] = InsnPtr(new ConstantInsn(new (interp) RealObj(d),insns[1])); VM vm(interp); ELObj *res = vm.eval(insns[0].pointer()); if (!res || !res->realValue(d)) return 0; return 1; } ELObj *CIEABCColorSpaceObj::makeColor(int argc, ELObj **argv, Interpreter &interp, const Location &loc) { if (argc == 0) return new (interp) DeviceRGBColorObj(0, 0, 0); if (argc != 3) { interp.setNextLocation(loc); interp.message(InterpreterMessages::colorArgCount, StringMessageArg(interp.makeStringC("CIE Based ABC"))); return interp.makeError(); } double d[3]; for (int i = 0; i < 3; i++) { if (!argv[i]->realValue(d[i])) { interp.setNextLocation(loc); interp.message(InterpreterMessages::colorArgType, StringMessageArg(interp.makeStringC("CIE Based ABC"))); return interp.makeError(); } if (d[i] < abcData_->rangeAbc_[2*i] || d[i] > abcData_->rangeAbc_[2*i+1]) { interp.setNextLocation(loc); interp.message(InterpreterMessages::colorArgRange, StringMessageArg(interp.makeStringC("CIE Based ABC"))); return interp.makeError(); } if (abcData_->decodeAbc_[i] && !applyFunc(interp, abcData_->decodeAbc_[i], d[i])) { interp.setNextLocation(loc); interp.message(InterpreterMessages::colorProcResType, StringMessageArg(interp.makeStringC("CIE Based ABC"))); return interp.makeError(); } } double l[3]; for (int i = 0; i < 3; i++) { l[i] = abcData_->matrixAbc_[i]*d[0] + abcData_->matrixAbc_[3+i]*d[1] + abcData_->matrixAbc_[6+i]*d[2]; if (l[i] < abcData_->rangeLmn_[2*i] || l[i] > abcData_->rangeLmn_[2*i+1]) { interp.setNextLocation(loc); interp.message(InterpreterMessages::colorArgRange, StringMessageArg(interp.makeStringC("CIE Based ABC"))); return interp.makeError(); } if (abcData_->decodeLmn_[i] && !applyFunc(interp, abcData_->decodeLmn_[i], l[i])) { interp.setNextLocation(loc); interp.message(InterpreterMessages::colorProcResType, StringMessageArg(interp.makeStringC("CIE Based ABC"))); return interp.makeError(); } } double h[3]; for (int i = 0; i < 3; i++) h[i] = abcData_->matrixLmn_[i]*l[0] + abcData_->matrixLmn_[3+i]*l[1] + abcData_->matrixLmn_[6+i]*l[2]; return CIEXYZColorSpaceObj::makeColor(h, interp); } CIEAColorSpaceObj::CIEAColorSpaceObj(const double *wp, const double *bp, const double *ra, FunctionObj *da, const double *ma, const double *rlmn, FunctionObj **dlmn, const double *mlmn) : CIEXYZColorSpaceObj(wp, bp) { aData_ = new AData; int i; for (i = 0; i < 2; i++) aData_->rangeA_[i] = ra ? ra[i] : ((i % 2) ? 1.0 : 0.0); aData_->decodeA_ = da ? da : 0; for (i = 0; i < 3; i++) aData_->matrixA_[i] = ma ? ma[i] : 1.0; for (i = 0; i < 6; i++) aData_->rangeLmn_[i] = rlmn ? rlmn[i] : ((i % 2) ? 1.0 : 0.0); for (i = 0; i < 3; i++) aData_->decodeLmn_[i] = dlmn ? dlmn[i] : 0; for (i = 0; i < 9; i++) aData_->matrixLmn_[i] = mlmn ? mlmn[i] : ((i % 4) ? 0.0 : 1.0); } CIEAColorSpaceObj::~CIEAColorSpaceObj() { delete aData_; } void CIEAColorSpaceObj::traceSubObjects(Collector &c) const { if (aData_->decodeA_) c.trace(aData_->decodeA_); for (int i = 0; i < 3; i++) if (aData_->decodeLmn_[i]) c.trace(aData_->decodeLmn_[i]); } ELObj *CIEAColorSpaceObj::makeColor(int argc, ELObj **argv, Interpreter &interp, const Location &loc) { if (argc == 0) return new (interp) DeviceRGBColorObj(0, 0, 0); if (argc != 1) { interp.setNextLocation(loc); interp.message(InterpreterMessages::colorArgCount, StringMessageArg(interp.makeStringC("CIE Based A"))); return interp.makeError(); } double d; if (!argv[0]->realValue(d)) { interp.setNextLocation(loc); interp.message(InterpreterMessages::colorArgType, StringMessageArg(interp.makeStringC("CIE Based A"))); return interp.makeError(); } if (d < aData_->rangeA_[0] || d > aData_->rangeA_[1]) { interp.setNextLocation(loc); interp.message(InterpreterMessages::colorArgRange, StringMessageArg(interp.makeStringC("CIE Based A"))); return interp.makeError(); } if (aData_->decodeA_ && !applyFunc(interp, aData_->decodeA_, d)) { interp.setNextLocation(loc); interp.message(InterpreterMessages::colorProcResType, StringMessageArg(interp.makeStringC("CIE Based A"))); return interp.makeError(); } double l[3]; for (int i = 0; i < 3; i++) { l[i] = aData_->matrixA_[i]*d; if (l[i] < aData_->rangeLmn_[2*i] || l[i] > aData_->rangeLmn_[2*i+1]) { interp.setNextLocation(loc); interp.message(InterpreterMessages::colorArgRange, StringMessageArg(interp.makeStringC("CIE Based A"))); return interp.makeError(); } if (aData_->decodeLmn_[i] && !applyFunc(interp, aData_->decodeLmn_[i], l[i])) { interp.setNextLocation(loc); interp.message(InterpreterMessages::colorProcResType, StringMessageArg(interp.makeStringC("CIE Based A"))); return interp.makeError(); } } double h[3]; for (int i = 0; i < 3; i++) { h[i] = aData_->matrixLmn_[i]*l[0] + aData_->matrixLmn_[3+i]*l[1] + aData_->matrixLmn_[6+i]*l[2]; } return CIEXYZColorSpaceObj::makeColor(h, interp); } ELObj *DeviceRGBColorSpaceObj::makeColor(int argc, ELObj **argv, Interpreter &interp, const Location &loc) { if (argc == 0) return new (interp) DeviceRGBColorObj(0, 0, 0); if (argc != 3) { interp.setNextLocation(loc); interp.message(InterpreterMessages::colorArgCount, StringMessageArg(interp.makeStringC("Device RGB"))); return interp.makeError(); } unsigned char c[3]; for (int i = 0; i < 3; i++) { double d; if (!argv[i]->realValue(d)) { interp.setNextLocation(loc); interp.message(InterpreterMessages::colorArgType, StringMessageArg(interp.makeStringC("Device RGB"))); return interp.makeError(); } if (d < 0.0 || d > 1.0) { interp.setNextLocation(loc); interp.message(InterpreterMessages::colorArgRange, StringMessageArg(interp.makeStringC("Device RGB"))); return interp.makeError(); } c[i] = (unsigned char)(d*255.0 + .5); } return new (interp) DeviceRGBColorObj(c[0], c[1], c[2]); } ELObj *DeviceGrayColorSpaceObj::makeColor(int argc, ELObj **argv, Interpreter &interp, const Location &loc) { if (argc == 0) return new (interp) DeviceRGBColorObj(0, 0, 0); if (argc != 1) { interp.setNextLocation(loc); interp.message(InterpreterMessages::colorArgCount, StringMessageArg(interp.makeStringC("Device Gray"))); return interp.makeError(); } unsigned char c; double d; if (!argv[0]->realValue(d)) { interp.setNextLocation(loc); interp.message(InterpreterMessages::colorArgType, StringMessageArg(interp.makeStringC("Device Gray"))); return interp.makeError(); } if (d < 0.0 || d > 1.0) { interp.setNextLocation(loc); interp.message(InterpreterMessages::colorArgRange, StringMessageArg(interp.makeStringC("Device Gray"))); return interp.makeError(); } c = (unsigned char)(d*255.0 + .5); return new (interp) DeviceRGBColorObj(c, c, c); } #define MIN(x,y) (((x) < (y)) ? (x) : (y)) ELObj *DeviceCMYKColorSpaceObj::makeColor(int argc, ELObj **argv, Interpreter &interp, const Location &loc) { if (argc == 0) return new (interp) DeviceRGBColorObj(0, 0, 0); if (argc != 4) { interp.setNextLocation(loc); interp.message(InterpreterMessages::colorArgCount, StringMessageArg(interp.makeStringC("Device CMYK"))); return interp.makeError(); } double d[4]; for (int i = 0; i < 4; i++) { if (!argv[i]->realValue(d[i])) { interp.setNextLocation(loc); interp.message(InterpreterMessages::colorArgType, StringMessageArg(interp.makeStringC("Device CMYK"))); return interp.makeError(); } if (d[i] < 0.0 || d[i] > 1.0) { interp.setNextLocation(loc); interp.message(InterpreterMessages::colorArgRange, StringMessageArg(interp.makeStringC("Device CMYK"))); return interp.makeError(); } } unsigned char c[3]; for (int i = 0; i < 3; i++) c[i] = (unsigned char)((1 - MIN(1, d[i] + d[3]))*255.0 + .5); return new (interp) DeviceRGBColorObj(c[0], c[1], c[2]); } ELObj *DeviceKXColorSpaceObj::makeColor(int argc, ELObj **argv, Interpreter &interp, const Location &loc) { if (argc == 0) return new (interp) DeviceRGBColorObj(0, 0, 0); if (argc != 2) { interp.setNextLocation(loc); interp.message(InterpreterMessages::colorArgCount, StringMessageArg(interp.makeStringC("Device KX"))); return interp.makeError(); } double d[2]; for (int i = 0; i < 2; i++) { if (!argv[i]->realValue(d[i])) { interp.setNextLocation(loc); interp.message(InterpreterMessages::colorArgType, StringMessageArg(interp.makeStringC("Device KX"))); return interp.makeError(); } if (d[i] < 0.0 || d[i] > 1.0) { interp.setNextLocation(loc); interp.message(InterpreterMessages::colorArgRange, StringMessageArg(interp.makeStringC("Device KX"))); return interp.makeError(); } } unsigned char c; c = (unsigned char)((1 - MIN(1, d[0] + d[1]))*255.0 + .5); return new (interp) DeviceRGBColorObj(c, c, c); } VarInheritedC::VarInheritedC(const ConstPtr &ic, const InsnPtr &code, const Location &loc) : InheritedC(ic->identifier(), ic->index()), inheritedC_(ic), code_(code), loc_(loc) { } void VarInheritedC::set(VM &vm, const VarStyleObj *style, FOTBuilder &fotb, ELObj *&cacheObj, Vector &dependencies) const { if (!cacheObj) { EvalContext::CurrentNodeSetter cns(style->node(), 0, vm); vm.actualDependencies = &dependencies; cacheObj = vm.eval(code_.pointer(), style->display()); ASSERT(cacheObj != 0); vm.actualDependencies = 0; } if (!vm.interp->isError(cacheObj)) { ConstPtr c(inheritedC_->make(cacheObj, loc_, *vm.interp)); if (!c.isNull()) c->set(vm, 0, fotb, cacheObj, dependencies); } } ConstPtr VarInheritedC::make(ELObj *obj, const Location &loc, Interpreter &interp) const { return inheritedC_->make(obj, loc, interp); } ELObj *VarInheritedC::value(VM &vm, const VarStyleObj *style, Vector &dependencies) const { EvalContext::CurrentNodeSetter cns(style->node(), 0, vm); vm.actualDependencies = &dependencies; return vm.eval(code_.pointer(), style->display()); } StyleObjIter::StyleObjIter() : i_(0), vi_(0) { } void StyleObjIter::append(const Vector > *v, const VarStyleObj *obj) { styleVec_.push_back(obj); vecs_.push_back(v); } ConstPtr StyleObjIter::next(const VarStyleObj *&style) { for (; vi_ < vecs_.size(); vi_++, i_ = 0) { if (i_ < vecs_[vi_]->size()) { style = styleVec_[vi_]; return (*vecs_[vi_])[i_++]; } } return ConstPtr(); } StyleSpec::StyleSpec(Vector > &fs, Vector > &s) { fs.swap(forceSpecs); s.swap(specs); } #ifdef DSSSL_NAMESPACE } #endif openjade-1.3.2/style/Style.h0100664000076400007640000002433006752115503014034 0ustar ianian// Copyright (c) 1996 James Clark // See the file copying.txt for copying permission. #ifndef Style_INCLUDED #define Style_INCLUDED 1 #include "types.h" #include "StringC.h" #include "Named.h" #include #include "ELObj.h" #include "Vector.h" #include "Ptr.h" #include "Resource.h" #include "Owner.h" #include "Insn.h" #include "FOTBuilder.h" #include "Boolean.h" #include "Node.h" #include "Location.h" #include "ProcessingMode.h" #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif class StyleStack; class Interpreter; class VarStyleObj; // InheritedC represents the specification of a value // of an inherited characteristic. // It is also used as a prototype for other specifications of // values for that characteristic: // the identifier for an inherited characteristic contains the // InheritedC that specifies its initial value. class InheritedC : public Resource { public: InheritedC(const Identifier *ident, unsigned index); virtual ~InheritedC(); virtual void set(VM &vm, const VarStyleObj *, FOTBuilder &, ELObj *&, Vector &dependencies) const = 0; virtual ELObj *value(VM &, const VarStyleObj *, Vector &) const = 0; virtual ConstPtr make(ELObj *, const Location &, Interpreter &) const = 0; unsigned index() const; const Identifier *identifier() const; void setIdentifier(const Identifier *); protected: void invalidValue(const Location &, Interpreter &) const; private: const Identifier *ident_; // The index of the inherited characteristic (not the specification). unsigned index_; }; class VarInheritedC : public InheritedC { public: VarInheritedC(const ConstPtr &, const InsnPtr &code, const Location &); void set(VM &, const VarStyleObj *, FOTBuilder &, ELObj *&value, Vector &dependencies) const; ELObj *value(VM &, const VarStyleObj *, Vector &) const; virtual ConstPtr make(ELObj *, const Location &, Interpreter &) const; private: ConstPtr inheritedC_; InsnPtr code_; Location loc_; }; class StyleObjIter { public: StyleObjIter(); void append(const Vector > *, const VarStyleObj *); ConstPtr next(const VarStyleObj *&); private: size_t i_; size_t vi_; Vector styleVec_; Vector > *> vecs_; }; class StyleObj : public ELObj { public: StyleObj *asStyle(); virtual void appendIter(StyleObjIter &) const = 0; }; struct StyleSpec : public Resource { StyleSpec(Vector > &, Vector > &); Vector > forceSpecs; Vector > specs; }; class BasicStyleObj : public StyleObj { public: virtual void appendIterForce(StyleObjIter &) const = 0; virtual void appendIterNormal(StyleObjIter &) const = 0; }; class VarStyleObj : public BasicStyleObj { public: void *operator new(size_t, Collector &c) { return c.allocateObject(1); } VarStyleObj(const ConstPtr &, StyleObj *use, ELObj **display, const NodePtr &node); ~VarStyleObj(); void appendIter(StyleObjIter &) const; void appendIterForce(StyleObjIter &) const; void appendIterNormal(StyleObjIter &) const; const NodePtr &node() const; ELObj **display() const; void traceSubObjects(Collector &) const; private: ConstPtr styleSpec_; StyleObj *use_; ELObj **display_; NodePtr node_; }; class OverriddenStyleObj : public StyleObj { public: OverriddenStyleObj(BasicStyleObj *basic, StyleObj *override); void appendIter(StyleObjIter &) const; void traceSubObjects(Collector &) const; private: BasicStyleObj *basic_; StyleObj *override_; }; class MergeStyleObj : public StyleObj { public: void *operator new(size_t, Collector &c) { return c.allocateObject(1); } MergeStyleObj(); void append(StyleObj *); void appendIter(StyleObjIter &) const; void traceSubObjects(Collector &) const; private: Vector styles_; }; class ColorObj : public ELObj { public: ColorObj *asColor(); virtual void set(FOTBuilder &) const = 0; virtual void setBackground(FOTBuilder &) const = 0; }; class DeviceRGBColorObj : public ColorObj { public: DeviceRGBColorObj(unsigned char, unsigned char, unsigned char); void set(FOTBuilder &) const; void setBackground(FOTBuilder &) const; private: FOTBuilder::DeviceRGBColor color_; }; class ColorSpaceObj : public ELObj { public: ColorSpaceObj *asColorSpace(); virtual ELObj *makeColor(int argc, ELObj **argv, Interpreter &, const Location &) = 0; }; class DeviceRGBColorSpaceObj : public ColorSpaceObj { public: ELObj *makeColor(int argc, ELObj **argv, Interpreter &interp, const Location &); }; class DeviceGrayColorSpaceObj : public ColorSpaceObj { public: ELObj *makeColor(int argc, ELObj **argv, Interpreter &interp, const Location &); }; class DeviceCMYKColorSpaceObj : public ColorSpaceObj { public: ELObj *makeColor(int argc, ELObj **argv, Interpreter &interp, const Location &); }; class DeviceKXColorSpaceObj : public ColorSpaceObj { public: ELObj *makeColor(int argc, ELObj **argv, Interpreter &interp, const Location &); }; class CIEXYZColorSpaceObj : public ColorSpaceObj { public: CIEXYZColorSpaceObj(const double *, const double *); void *operator new(size_t, Collector &c) { return c.allocateObject(1); } ~CIEXYZColorSpaceObj(); ELObj *makeColor(const double *, Interpreter &); protected: struct XYZData { double white_[3]; double white_u; double white_v; double M_[9]; }; XYZData *xyzData_; }; class CIELUVColorSpaceObj : public CIEXYZColorSpaceObj { public: CIELUVColorSpaceObj(const double *, const double *, const double *); void *operator new(size_t, Collector &c) { return c.allocateObject(1); } ~CIELUVColorSpaceObj(); ELObj *makeColor(int argc, ELObj **argv, Interpreter &interp, const Location &); private: struct LUVData { double range_[6]; }; LUVData *luvData_; }; class CIELABColorSpaceObj : public CIEXYZColorSpaceObj { public: CIELABColorSpaceObj(const double *, const double *, const double *); void *operator new(size_t, Collector &c) { return c.allocateObject(1); } ~CIELABColorSpaceObj(); ELObj *makeColor(int argc, ELObj **argv, Interpreter &interp, const Location &); private: struct LABData { double range_[6]; }; LABData *labData_; }; class CIEABCColorSpaceObj : public CIEXYZColorSpaceObj { public: CIEABCColorSpaceObj(const double *, const double *, const double *, FunctionObj **, const double *, const double *, FunctionObj **, const double *); void *operator new(size_t, Collector &c) { return c.allocateObject(1); } ~CIEABCColorSpaceObj(); void traceSubObjects(Collector &) const; ELObj *makeColor(int argc, ELObj **argv, Interpreter &interp, const Location &); private: struct ABCData { double rangeAbc_[6]; FunctionObj *decodeAbc_[3]; double matrixAbc_[9]; double rangeLmn_[6]; FunctionObj *decodeLmn_[3]; double matrixLmn_[9]; }; ABCData *abcData_; }; class CIEAColorSpaceObj : public CIEXYZColorSpaceObj { public: CIEAColorSpaceObj(const double *, const double *, const double *, FunctionObj *, const double *, const double *, FunctionObj **, const double *); void *operator new(size_t, Collector &c) { return c.allocateObject(1); } ~CIEAColorSpaceObj(); void traceSubObjects(Collector &) const; ELObj *makeColor(int argc, ELObj **argv, Interpreter &interp, const Location &); private: struct AData { double rangeA_[2]; FunctionObj *decodeA_; double matrixA_[3]; double rangeLmn_[6]; FunctionObj *decodeLmn_[3]; double matrixLmn_[9]; }; AData *aData_; }; struct InheritedCInfo : public Resource { InheritedCInfo(const ConstPtr &, const VarStyleObj *, unsigned valLevel, unsigned specLevel, const ProcessingMode::Rule *, const Ptr &); ConstPtr spec; Ptr prev; unsigned valLevel; unsigned specLevel; const ProcessingMode::Rule *rule; // If there are dependencies, then the cached value can only // be used only when the "value" flow object is at this level. ELObj *cachedValue; const VarStyleObj *style; // Includes both direct and indirect dependencies. Vector dependencies; }; struct PopList : public Resource { PopList(const Ptr &); Vector list; // List of the indices of those ICs that have dependencies // (ie that use actual-*) directly or indirectly. Vector dependingList; Ptr prev; }; class StyleStack { public: StyleStack(); // These append on to dependencies. ELObj *actual(const ConstPtr &, const Location &, Interpreter &, Vector &dependencies); ELObj *actual(const ConstPtr &, Interpreter &, Vector &dependencies); ELObj *inherited(const ConstPtr &, unsigned specLevel, Interpreter &, Vector &dependencies); void push(StyleObj *, VM &, FOTBuilder &); void pushStart(); void pushContinue(StyleObj *, const ProcessingMode::Rule *, const NodePtr &, Messenger *); void pushEnd(VM &, FOTBuilder &); void pop(); void pushEmpty() { level_++; } void popEmpty() { level_--; } unsigned level() const { return level_; } void trace(Collector &) const; private: Vector > inheritedCInfo_; unsigned level_; Ptr popList_; }; inline PopList::PopList(const Ptr &p) : prev(p) { } inline const Identifier *InheritedC::identifier() const { return ident_; } inline void InheritedC::setIdentifier(const Identifier *ident) { ident_ = ident; } inline unsigned InheritedC::index() const { return index_; } inline ELObj **VarStyleObj::display() const { return display_; } inline const NodePtr &VarStyleObj::node() const { return node_; } inline void StyleStack::pushStart() { level_++; popList_ = new PopList(popList_); } inline void StyleStack::push(StyleObj *style, VM &vm, FOTBuilder &fotb) { pushStart(); pushContinue(style, 0, NodePtr(), 0); pushEnd(vm, fotb); } inline ELObj *StyleStack::actual(const ConstPtr &ic, Interpreter &interp, Vector &dep) { return actual(ic, Location(), interp, dep); } #ifdef DSSSL_NAMESPACE } #endif #endif /* not Style_INCLUDED */ openjade-1.3.2/style/StyleEngine.cxx0100664000076400007640000001052606757324023015543 0ustar ianian// Copyright (c) 1996 James Clark // See the file copying.txt for copying permission. #include "stylelib.h" #include "StyleEngine.h" #include "Interpreter.h" #include "InterpreterMessages.h" #include "SchemeParser.h" #include "FOTBuilder.h" #include "DssslSpecEventHandler.h" #include "ArcEngine.h" #include "ProcessContext.h" #include "macros.h" #include "InternalInputSource.h" #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif StyleEngine::StyleEngine(Messenger &mgr, GroveManager &groveManager, int unitsPerInch, bool debugMode, bool dsssl2, bool strictMode, const FOTBuilder::Extension *extensionTable) : interpreter_(new Interpreter(&groveManager, &mgr, unitsPerInch, debugMode, dsssl2, strictMode, extensionTable)) { } void StyleEngine::parseSpec(SgmlParser &specParser, const CharsetInfo &charset, const StringC &id, Messenger &mgr) { DssslSpecEventHandler specHandler(mgr); Vector parts; specHandler.load(specParser, charset, id, parts); for (int phase = 0; phase < 2; phase++) { for (size_t i = 0; i < parts.size(); i++) { DssslSpecEventHandler::Part::DIter diter(parts[i]->doc()->diter()); bool local = 0; do { if (local) diter = parts[i]->diter(); local = !local; for (; !diter.done(); diter.next()) { if ((diter.cur()->type() == DssslSpecEventHandler::DeclarationElement::charRepertoire || diter.cur()->type() == DssslSpecEventHandler::DeclarationElement::standardChars) ? phase == 0 : phase == 1) { Owner in; diter.cur()->makeInputSource(specHandler, in); SchemeParser scm(*interpreter_, in); switch (diter.cur()->type()) { case DssslSpecEventHandler::DeclarationElement::charRepertoire: interpreter_->setCharRepertoire(diter.cur()->name()); break; case DssslSpecEventHandler::DeclarationElement::standardChars: scm.parseStandardChars(); break; case DssslSpecEventHandler::DeclarationElement::mapSdataEntity: scm.parseMapSdataEntity(diter.cur()->name(), diter.cur()->text()); break; case DssslSpecEventHandler::DeclarationElement::addNameChars: scm.parseNameChars(); break; case DssslSpecEventHandler::DeclarationElement::addSeparatorChars: scm.parseSeparatorChars(); break; default: interpreter_->message( InterpreterMessages::unsupportedDeclaration); break; } } } } while (local); interpreter_->dEndPart(); } } if (cmdline.size() > 0) { Owner in(new InternalInputSource(cmdline, InputSourceOrigin::make())); SchemeParser scm(*interpreter_, in); scm.parse(); interpreter_->endPart(); } for (size_t i = 0; i < parts.size(); i++) { for (DssslSpecEventHandler::Part::Iter iter(parts[i]->iter()); !iter.done(); iter.next()) { Owner in; iter.cur()->makeInputSource(specHandler, in); if (in) { SchemeParser scm(*interpreter_, in); scm.parse(); } } interpreter_->endPart(); } interpreter_->compile(); } void StyleEngine::defineVariable(const StringC &str) { // Dk: Interpret "name=value" as a string variable Setting. if (str[0] == '(') { cmdline += str; } else { int i; for (i = 0; (i < str.size()) && (str[i] != '='); i++) ; // Dk: Not name=value? if (!i || (i >= (str.size()))) { cmdline += interpreter_->makeStringC("(define "); cmdline += str; cmdline += interpreter_->makeStringC(" #t)"); } else { // Dk: name=value. cmdline += interpreter_->makeStringC("(define "); cmdline += StringC(str.begin(), i); cmdline += interpreter_->makeStringC(" \""); if (str.size() - (i + 1) > 0); cmdline += StringC(str.begin() + i + 1, str.size() - (i + 1)); cmdline += interpreter_->makeStringC("\")"); } } } StyleEngine::~StyleEngine() { delete interpreter_; } void StyleEngine::process(const NodePtr &node, FOTBuilder &fotb) { ProcessContext context(*interpreter_, fotb); context.process(node); } #ifdef DSSSL_NAMESPACE } #endif openjade-1.3.2/style/StyleEngine.h0100664000076400007640000000201106757324022015155 0ustar ianian// Copyright (c) 1996 James Clark // See the file copying.txt for copying permission. #ifndef StyleEngine_INCLUDED #define StyleEngine_INCLUDED 1 #include "Boolean.h" #include "Node.h" #include "Message.h" #include "SgmlParser.h" #include "FOTBuilder.h" #include "GroveManager.h" #include "dsssl_ns.h" #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif class Interpreter; class STYLE_API StyleEngine { public: StyleEngine(Messenger &, GroveManager &, int unitsPerInch, bool debugMode, bool dsssl2, bool strictMode, const FOTBuilder::Extension * = 0); void defineVariable(const StringC &); void parseSpec(SgmlParser &specParser, const CharsetInfo &charset, const StringC &id, Messenger &mgr); void process(const NodePtr &, FOTBuilder &); ~StyleEngine(); private: StyleEngine(const StyleEngine &); // undefined void operator=(const StyleEngine &); // undefined Interpreter *interpreter_; StringC cmdline; }; #ifdef DSSSL_NAMESPACE } #endif #endif /* not StyleEngine_INCLUDED */ openjade-1.3.2/style/VM.h0100664000076400007640000000270406713070471013260 0ustar ianian// Copyright (c) 1996 James Clark // See the file copying.txt for copying permission. #ifndef VM_INCLUDED #define VM_INCLUDED 1 #include "Collector.h" #include "EvalContext.h" #include "Location.h" #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif class ELObj; class ContinuationObj; class Interpreter; class Insn; class VM : public EvalContext, private Collector::DynamicRoot { public: VM(Interpreter &); VM(EvalContext &, Interpreter &); virtual ~VM(); ELObj **sp; Interpreter *interp; ELObj **closure; ELObj *protectClosure; ELObj **frame; int nActualArgs; Location closureLoc; ELObj *eval(const Insn *, ELObj **display = 0, ELObj *arg = 0); void initStack(); void needStack(int); void pushFrame(const Insn *next, int argsPushed); const Insn *popFrame(); void setClosureArgToCC(); void trace(Collector &) const; Vector modeStack; private: void growStack(int); void init(); void stackTrace(); ELObj **slim; ELObj **sbase; struct ControlStackEntry { int frameSize; // before pushing args ELObj **closure; ELObj *protectClosure; Location closureLoc; ContinuationObj *continuation; const Insn *next; }; ControlStackEntry *csp; ControlStackEntry *csbase; ControlStackEntry *cslim; friend class ContinuationObj; }; inline void VM::needStack(int n) { if (slim - sp < n) growStack(n); } #ifdef DSSSL_NAMESPACE } #endif #endif /* not VM_INCLUDED */ openjade-1.3.2/style/charNames.h0100664000076400007640000011042606735236153014645 0ustar ianian// Unicode code, character name { 0x000a, "line-feed" }, { 0x000d, "carriage-return" }, { 0x0020, "space" }, { 0x0021, "exclamation-mark" }, { 0x0022, "quotation-mark" }, { 0x0023, "number-sign" }, { 0x0024, "dollar-sign" }, { 0x0025, "percent-sign" }, { 0x0026, "ampersand" }, { 0x0027, "apostrophe" }, { 0x0028, "left-parenthesis" }, { 0x0029, "right-parenthesis" }, { 0x002a, "asterisk" }, { 0x002b, "plus-sign" }, { 0x002c, "comma" }, { 0x002d, "hyphen-minus" }, { 0x002e, "full-stop" }, { 0x002f, "solidus" }, { 0x0030, "digit-zero" }, { 0x0031, "digit-one" }, { 0x0032, "digit-two" }, { 0x0033, "digit-three" }, { 0x0034, "digit-four" }, { 0x0035, "digit-five" }, { 0x0036, "digit-six" }, { 0x0037, "digit-seven" }, { 0x0038, "digit-eight" }, { 0x0039, "digit-nine" }, { 0x003a, "colon" }, { 0x003b, "semicolon" }, { 0x003c, "less-than-sign" }, { 0x003d, "equals-sign" }, { 0x003e, "greater-than-sign" }, { 0x003f, "question-mark" }, { 0x0040, "commercial-at" }, { 0x0041, "latin-capital-letter-a" }, { 0x0042, "latin-capital-letter-b" }, { 0x0043, "latin-capital-letter-c" }, { 0x0044, "latin-capital-letter-d" }, { 0x0045, "latin-capital-letter-e" }, { 0x0046, "latin-capital-letter-f" }, { 0x0047, "latin-capital-letter-g" }, { 0x0048, "latin-capital-letter-h" }, { 0x0049, "latin-capital-letter-i" }, { 0x004a, "latin-capital-letter-j" }, { 0x004b, "latin-capital-letter-k" }, { 0x004c, "latin-capital-letter-l" }, { 0x004d, "latin-capital-letter-m" }, { 0x004e, "latin-capital-letter-n" }, { 0x004f, "latin-capital-letter-o" }, { 0x0050, "latin-capital-letter-p" }, { 0x0051, "latin-capital-letter-q" }, { 0x0052, "latin-capital-letter-r" }, { 0x0053, "latin-capital-letter-s" }, { 0x0054, "latin-capital-letter-t" }, { 0x0055, "latin-capital-letter-u" }, { 0x0056, "latin-capital-letter-v" }, { 0x0057, "latin-capital-letter-w" }, { 0x0058, "latin-capital-letter-x" }, { 0x0059, "latin-capital-letter-y" }, { 0x005a, "latin-capital-letter-z" }, { 0x005b, "left-square-bracket" }, { 0x005c, "reverse-solidus" }, { 0x005d, "right-square-bracket" }, { 0x005e, "circumflex-accent" }, { 0x005f, "low-line" }, { 0x0060, "grave-accent" }, { 0x0061, "latin-small-letter-a" }, { 0x0062, "latin-small-letter-b" }, { 0x0063, "latin-small-letter-c" }, { 0x0064, "latin-small-letter-d" }, { 0x0065, "latin-small-letter-e" }, { 0x0066, "latin-small-letter-f" }, { 0x0067, "latin-small-letter-g" }, { 0x0068, "latin-small-letter-h" }, { 0x0069, "latin-small-letter-i" }, { 0x006a, "latin-small-letter-j" }, { 0x006b, "latin-small-letter-k" }, { 0x006c, "latin-small-letter-l" }, { 0x006d, "latin-small-letter-m" }, { 0x006e, "latin-small-letter-n" }, { 0x006f, "latin-small-letter-o" }, { 0x0070, "latin-small-letter-p" }, { 0x0071, "latin-small-letter-q" }, { 0x0072, "latin-small-letter-r" }, { 0x0073, "latin-small-letter-s" }, { 0x0074, "latin-small-letter-t" }, { 0x0075, "latin-small-letter-u" }, { 0x0076, "latin-small-letter-v" }, { 0x0077, "latin-small-letter-w" }, { 0x0078, "latin-small-letter-x" }, { 0x0079, "latin-small-letter-y" }, { 0x007a, "latin-small-letter-z" }, { 0x007b, "left-curly-bracket" }, { 0x007c, "vertical-line" }, { 0x007d, "right-curly-bracket" }, { 0x007e, "tilde" }, { 0x00a0, "no-break-space" }, { 0x00a1, "inverted-exclamation-mark" }, { 0x00a2, "cent-sign" }, { 0x00a3, "pound-sign" }, { 0x00a4, "currency-sign" }, { 0x00a5, "yen-sign" }, { 0x00a6, "broken-bar" }, { 0x00a7, "section-sign" }, { 0x00a8, "diaeresis" }, { 0x00a9, "copyright-sign" }, { 0x00aa, "feminine-ordinal-indicator" }, { 0x00ab, "left-pointing-double-angle-quotation-mark" }, { 0x00ac, "not-sign" }, { 0x00ad, "soft-hyphen" }, { 0x00ae, "registered-sign" }, { 0x00af, "macron" }, { 0x00b0, "degree-sign" }, { 0x00b1, "plus-minus-sign" }, { 0x00b2, "superscript-two" }, { 0x00b3, "superscript-three" }, { 0x00b4, "acute-accent" }, { 0x00b5, "micro-sign" }, { 0x00b6, "pilcrow-sign" }, { 0x00b7, "middle-dot" }, { 0x00b8, "cedilla" }, { 0x00b9, "superscript-one" }, { 0x00ba, "masculine-ordinal-indicator" }, { 0x00bb, "right-pointing-double-angle-quotation-mark" }, { 0x00bc, "vulgar-fraction-one-quarter" }, { 0x00bd, "vulgar-fraction-one-half" }, { 0x00be, "vulgar-fraction-three-quarters" }, { 0x00bf, "inverted-question-mark" }, { 0x00c0, "latin-capital-letter-a-with-grave" }, { 0x00c1, "latin-capital-letter-a-with-acute" }, { 0x00c2, "latin-capital-letter-a-with-circumflex" }, { 0x00c3, "latin-capital-letter-a-with-tilde" }, { 0x00c4, "latin-capital-letter-a-with-diaeresis" }, { 0x00c5, "latin-capital-letter-a-with-ring-above" }, { 0x00c6, "latin-capital-letter-ae" }, { 0x00c7, "latin-capital-letter-c-with-cedilla" }, { 0x00c8, "latin-capital-letter-e-with-grave" }, { 0x00c9, "latin-capital-letter-e-with-acute" }, { 0x00ca, "latin-capital-letter-e-with-circumflex" }, { 0x00cb, "latin-capital-letter-e-with-diaeresis" }, { 0x00cc, "latin-capital-letter-i-with-grave" }, { 0x00cd, "latin-capital-letter-i-with-acute" }, { 0x00ce, "latin-capital-letter-i-with-circumflex" }, { 0x00cf, "latin-capital-letter-i-with-diaeresis" }, { 0x00d0, "latin-capital-letter-eth" }, { 0x00d1, "latin-capital-letter-n-with-tilde" }, { 0x00d2, "latin-capital-letter-o-with-grave" }, { 0x00d3, "latin-capital-letter-o-with-acute" }, { 0x00d4, "latin-capital-letter-o-with-circumflex" }, { 0x00d5, "latin-capital-letter-o-with-tilde" }, { 0x00d6, "latin-capital-letter-o-with-diaeresis" }, { 0x00d7, "multiplication-sign" }, { 0x00d8, "latin-capital-letter-o-with-stroke" }, { 0x00d9, "latin-capital-letter-u-with-grave" }, { 0x00da, "latin-capital-letter-u-with-acute" }, { 0x00db, "latin-capital-letter-u-with-circumflex" }, { 0x00dc, "latin-capital-letter-u-with-diaeresis" }, { 0x00dd, "latin-capital-letter-y-with-acute" }, { 0x00de, "latin-capital-letter-thorn" }, { 0x00df, "latin-small-letter-sharp-s" }, { 0x00e0, "latin-small-letter-a-with-grave" }, { 0x00e1, "latin-small-letter-a-with-acute" }, { 0x00e2, "latin-small-letter-a-with-circumflex" }, { 0x00e3, "latin-small-letter-a-with-tilde" }, { 0x00e4, "latin-small-letter-a-with-diaeresis" }, { 0x00e5, "latin-small-letter-a-with-ring-above" }, { 0x00e6, "latin-small-letter-ae" }, { 0x00e7, "latin-small-letter-c-with-cedilla" }, { 0x00e8, "latin-small-letter-e-with-grave" }, { 0x00e9, "latin-small-letter-e-with-acute" }, { 0x00ea, "latin-small-letter-e-with-circumflex" }, { 0x00eb, "latin-small-letter-e-with-diaeresis" }, { 0x00ec, "latin-small-letter-i-with-grave" }, { 0x00ed, "latin-small-letter-i-with-acute" }, { 0x00ee, "latin-small-letter-i-with-circumflex" }, { 0x00ef, "latin-small-letter-i-with-diaeresis" }, { 0x00f0, "latin-small-letter-eth" }, { 0x00f1, "latin-small-letter-n-with-tilde" }, { 0x00f2, "latin-small-letter-o-with-grave" }, { 0x00f3, "latin-small-letter-o-with-acute" }, { 0x00f4, "latin-small-letter-o-with-circumflex" }, { 0x00f5, "latin-small-letter-o-with-tilde" }, { 0x00f6, "latin-small-letter-o-with-diaeresis" }, { 0x00f7, "division-sign" }, { 0x00f8, "latin-small-letter-o-with-stroke" }, { 0x00f9, "latin-small-letter-u-with-grave" }, { 0x00fa, "latin-small-letter-u-with-acute" }, { 0x00fb, "latin-small-letter-u-with-circumflex" }, { 0x00fc, "latin-small-letter-u-with-diaeresis" }, { 0x00fd, "latin-small-letter-y-with-acute" }, { 0x00fe, "latin-small-letter-thorn" }, { 0x00ff, "latin-small-letter-y-with-diaeresis" }, { 0x0100, "latin-capital-letter-a-with-macron" }, { 0x0101, "latin-small-letter-a-with-macron" }, { 0x0102, "latin-capital-letter-a-with-breve" }, { 0x0103, "latin-small-letter-a-with-breve" }, { 0x0104, "latin-capital-letter-a-with-ogonek" }, { 0x0105, "latin-small-letter-a-with-ogonek" }, { 0x0106, "latin-capital-letter-c-with-acute" }, { 0x0107, "latin-small-letter-c-with-acute" }, { 0x0108, "latin-capital-letter-c-with-circumflex" }, { 0x0109, "latin-small-letter-c-with-circumflex" }, { 0x010a, "latin-capital-letter-c-with-dot-above" }, { 0x010b, "latin-small-letter-c-with-dot-above" }, { 0x010c, "latin-capital-letter-c-with-caron" }, { 0x010d, "latin-small-letter-c-with-caron" }, { 0x010e, "latin-capital-letter-d-with-caron" }, { 0x010f, "latin-small-letter-d-with-caron" }, { 0x0110, "latin-capital-letter-d-with-stroke" }, { 0x0111, "latin-small-letter-d-with-stroke" }, { 0x0112, "latin-capital-letter-e-with-macron" }, { 0x0113, "latin-small-letter-e-with-macron" }, { 0x0114, "latin-capital-letter-e-with-breve" }, { 0x0115, "latin-small-letter-e-with-breve" }, { 0x0116, "latin-capital-letter-e-with-dot-above" }, { 0x0117, "latin-small-letter-e-with-dot-above" }, { 0x0118, "latin-capital-letter-e-with-ogonek" }, { 0x0119, "latin-small-letter-e-with-ogonek" }, { 0x011a, "latin-capital-letter-e-with-caron" }, { 0x011b, "latin-small-letter-e-with-caron" }, { 0x011c, "latin-capital-letter-g-with-circumflex" }, { 0x011d, "latin-small-letter-g-with-circumflex" }, { 0x011e, "latin-capital-letter-g-with-breve" }, { 0x011f, "latin-small-letter-g-with-breve" }, { 0x0120, "latin-capital-letter-g-with-dot-above" }, { 0x0121, "latin-small-letter-g-with-dot-above" }, { 0x0122, "latin-capital-letter-g-with-cedilla" }, { 0x0123, "latin-small-letter-g-with-cedilla" }, { 0x0124, "latin-capital-letter-h-with-circumflex" }, { 0x0125, "latin-small-letter-h-with-circumflex" }, { 0x0126, "latin-capital-letter-h-with-stroke" }, { 0x0127, "latin-small-letter-h-with-stroke" }, { 0x0128, "latin-capital-letter-i-with-tilde" }, { 0x0129, "latin-small-letter-i-with-tilde" }, { 0x012a, "latin-capital-letter-i-with-macron" }, { 0x012b, "latin-small-letter-i-with-macron" }, { 0x012c, "latin-capital-letter-i-with-breve" }, { 0x012d, "latin-small-letter-i-with-breve" }, { 0x012e, "latin-capital-letter-i-with-ogonek" }, { 0x012f, "latin-small-letter-i-with-ogonek" }, { 0x0130, "latin-capital-letter-i-with-dot-above" }, { 0x0131, "latin-small-letter-dotless-i" }, { 0x0132, "latin-capital-ligature-ij" }, { 0x0133, "latin-small-ligature-ij" }, { 0x0134, "latin-capital-letter-j-with-circumflex" }, { 0x0135, "latin-small-letter-j-with-circumflex" }, { 0x0136, "latin-capital-letter-k-with-cedilla" }, { 0x0137, "latin-small-letter-k-with-cedilla" }, { 0x0138, "latin-small-letter-kra" }, { 0x0139, "latin-capital-letter-l-with-acute" }, { 0x013a, "latin-small-letter-l-with-acute" }, { 0x013b, "latin-capital-letter-l-with-cedilla" }, { 0x013c, "latin-small-letter-l-with-cedilla" }, { 0x013d, "latin-capital-letter-l-with-caron" }, { 0x013e, "latin-small-letter-l-with-caron" }, { 0x013f, "latin-capital-letter-l-with-middle-dot" }, { 0x0140, "latin-small-letter-l-with-middle-dot" }, { 0x0141, "latin-capital-letter-l-with-stroke" }, { 0x0142, "latin-small-letter-l-with-stroke" }, { 0x0143, "latin-capital-letter-n-with-acute" }, { 0x0144, "latin-small-letter-n-with-acute" }, { 0x0145, "latin-capital-letter-n-with-cedilla" }, { 0x0146, "latin-small-letter-n-with-cedilla" }, { 0x0147, "latin-capital-letter-n-with-caron" }, { 0x0148, "latin-small-letter-n-with-caron" }, { 0x0149, "latin-small-letter-n-preceded-by-apostrophe" }, { 0x014a, "latin-capital-letter-eng" }, { 0x014b, "latin-small-letter-eng" }, { 0x014c, "latin-capital-letter-o-with-macron" }, { 0x014d, "latin-small-letter-o-with-macron" }, { 0x014e, "latin-capital-letter-o-with-breve" }, { 0x014f, "latin-small-letter-o-with-breve" }, { 0x0150, "latin-capital-letter-o-with-double-acute" }, { 0x0151, "latin-small-letter-o-with-double-acute" }, { 0x0152, "latin-capital-ligature-oe" }, { 0x0153, "latin-small-ligature-oe" }, { 0x0154, "latin-capital-letter-r-with-acute" }, { 0x0155, "latin-small-letter-r-with-acute" }, { 0x0156, "latin-capital-letter-r-with-cedilla" }, { 0x0157, "latin-small-letter-r-with-cedilla" }, { 0x0158, "latin-capital-letter-r-with-caron" }, { 0x0159, "latin-small-letter-r-with-caron" }, { 0x015a, "latin-capital-letter-s-with-acute" }, { 0x015b, "latin-small-letter-s-with-acute" }, { 0x015c, "latin-capital-letter-s-with-circumflex" }, { 0x015d, "latin-small-letter-s-with-circumflex" }, { 0x015e, "latin-capital-letter-s-with-cedilla" }, { 0x015f, "latin-small-letter-s-with-cedilla" }, { 0x0160, "latin-capital-letter-s-with-caron" }, { 0x0161, "latin-small-letter-s-with-caron" }, { 0x0162, "latin-capital-letter-t-with-cedilla" }, { 0x0163, "latin-small-letter-t-with-cedilla" }, { 0x0164, "latin-capital-letter-t-with-caron" }, { 0x0165, "latin-small-letter-t-with-caron" }, { 0x0166, "latin-capital-letter-t-with-stroke" }, { 0x0167, "latin-small-letter-t-with-stroke" }, { 0x0168, "latin-capital-letter-u-with-tilde" }, { 0x0169, "latin-small-letter-u-with-tilde" }, { 0x016a, "latin-capital-letter-u-with-macron" }, { 0x016b, "latin-small-letter-u-with-macron" }, { 0x016c, "latin-capital-letter-u-with-breve" }, { 0x016d, "latin-small-letter-u-with-breve" }, { 0x016e, "latin-capital-letter-u-with-ring-above" }, { 0x016f, "latin-small-letter-u-with-ring-above" }, { 0x0170, "latin-capital-letter-u-with-double-acute" }, { 0x0171, "latin-small-letter-u-with-double-acute" }, { 0x0172, "latin-capital-letter-u-with-ogonek" }, { 0x0173, "latin-small-letter-u-with-ogonek" }, { 0x0174, "latin-capital-letter-w-with-circumflex" }, { 0x0175, "latin-small-letter-w-with-circumflex" }, { 0x0176, "latin-capital-letter-y-with-circumflex" }, { 0x0177, "latin-small-letter-y-with-circumflex" }, { 0x0178, "latin-capital-letter-y-with-diaeresis" }, { 0x0179, "latin-capital-letter-z-with-acute" }, { 0x017a, "latin-small-letter-z-with-acute" }, { 0x017b, "latin-capital-letter-z-with-dot-above" }, { 0x017c, "latin-small-letter-z-with-dot-above" }, { 0x017d, "latin-capital-letter-z-with-caron" }, { 0x017e, "latin-small-letter-z-with-caron" }, { 0x017f, "latin-small-letter-long-s" }, { 0x0192, "latin-small-letter-f-with-hook" }, { 0x01fa, "latin-capital-letter-a-with-ring-above-and-acute" }, { 0x01fb, "latin-small-letter-a-with-ring-above-and-acute" }, { 0x01fc, "latin-capital-letter-ae-with-acute" }, { 0x01fd, "latin-small-letter-ae-with-acute" }, { 0x01fe, "latin-capital-letter-o-with-stroke-and-acute" }, { 0x01ff, "latin-small-letter-o-with-stroke-and-acute" }, { 0x02c6, "modifier-letter-circumflex-accent" }, { 0x02c7, "caron" }, { 0x02c9, "modifier-letter-macron" }, { 0x02d8, "breve" }, { 0x02d9, "dot-above" }, { 0x02da, "ring-above" }, { 0x02db, "ogonek" }, { 0x02dc, "small-tilde" }, { 0x02dd, "double-acute-accent" }, { 0x0384, "greek-tonos" }, { 0x0385, "greek-dialytika-tonos" }, { 0x0386, "greek-capital-letter-alpha-with-tonos" }, { 0x0387, "greek-ano-teleia" }, { 0x0388, "greek-capital-letter-epsilon-with-tonos" }, { 0x0389, "greek-capital-letter-eta-with-tonos" }, { 0x038a, "greek-capital-letter-iota-with-tonos" }, { 0x038c, "greek-capital-letter-omicron-with-tonos" }, { 0x038e, "greek-capital-letter-upsilon-with-tonos" }, { 0x038f, "greek-capital-letter-omega-with-tonos" }, { 0x0390, "greek-small-letter-iota-with-dialytika-and-tonos" }, { 0x0391, "greek-capital-letter-alpha" }, { 0x0392, "greek-capital-letter-beta" }, { 0x0393, "greek-capital-letter-gamma" }, { 0x0394, "greek-capital-letter-delta" }, { 0x0395, "greek-capital-letter-epsilon" }, { 0x0396, "greek-capital-letter-zeta" }, { 0x0397, "greek-capital-letter-eta" }, { 0x0398, "greek-capital-letter-theta" }, { 0x0399, "greek-capital-letter-iota" }, { 0x039a, "greek-capital-letter-kappa" }, { 0x039b, "greek-capital-letter-lamda" }, { 0x039c, "greek-capital-letter-mu" }, { 0x039d, "greek-capital-letter-nu" }, { 0x039e, "greek-capital-letter-xi" }, { 0x039f, "greek-capital-letter-omicron" }, { 0x03a0, "greek-capital-letter-pi" }, { 0x03a1, "greek-capital-letter-rho" }, { 0x03a3, "greek-capital-letter-sigma" }, { 0x03a4, "greek-capital-letter-tau" }, { 0x03a5, "greek-capital-letter-upsilon" }, { 0x03a6, "greek-capital-letter-phi" }, { 0x03a7, "greek-capital-letter-chi" }, { 0x03a8, "greek-capital-letter-psi" }, { 0x03a9, "greek-capital-letter-omega" }, { 0x03aa, "greek-capital-letter-iota-with-dialytika" }, { 0x03ab, "greek-capital-letter-upsilon-with-dialytika" }, { 0x03ac, "greek-small-letter-alpha-with-tonos" }, { 0x03ad, "greek-small-letter-epsilon-with-tonos" }, { 0x03ae, "greek-small-letter-eta-with-tonos" }, { 0x03af, "greek-small-letter-iota-with-tonos" }, { 0x03b0, "greek-small-letter-upsilon-with-dialytika-and-tonos" }, { 0x03b1, "greek-small-letter-alpha" }, { 0x03b2, "greek-small-letter-beta" }, { 0x03b3, "greek-small-letter-gamma" }, { 0x03b4, "greek-small-letter-delta" }, { 0x03b5, "greek-small-letter-epsilon" }, { 0x03b6, "greek-small-letter-zeta" }, { 0x03b7, "greek-small-letter-eta" }, { 0x03b8, "greek-small-letter-theta" }, { 0x03b9, "greek-small-letter-iota" }, { 0x03ba, "greek-small-letter-kappa" }, { 0x03bb, "greek-small-letter-lamda" }, { 0x03bc, "greek-small-letter-mu" }, { 0x03bd, "greek-small-letter-nu" }, { 0x03be, "greek-small-letter-xi" }, { 0x03bf, "greek-small-letter-omicron" }, { 0x03c0, "greek-small-letter-pi" }, { 0x03c1, "greek-small-letter-rho" }, { 0x03c2, "greek-small-letter-final-sigma" }, { 0x03c3, "greek-small-letter-sigma" }, { 0x03c4, "greek-small-letter-tau" }, { 0x03c5, "greek-small-letter-upsilon" }, { 0x03c6, "greek-small-letter-phi" }, { 0x03c7, "greek-small-letter-chi" }, { 0x03c8, "greek-small-letter-psi" }, { 0x03c9, "greek-small-letter-omega" }, { 0x03ca, "greek-small-letter-iota-with-dialytika" }, { 0x03cb, "greek-small-letter-upsilon-with-dialytika" }, { 0x03cc, "greek-small-letter-omicron-with-tonos" }, { 0x03cd, "greek-small-letter-upsilon-with-tonos" }, { 0x03ce, "greek-small-letter-omega-with-tonos" }, { 0x03d1, "greek-theta-symbol" }, { 0x03d2, "greek-upsilon-with-hook-symbol" }, { 0x03d5, "greek-phi-symbol" }, { 0x03d6, "greek-pi-symbol" }, { 0x0401, "cyrillic-capital-letter-io" }, { 0x0402, "cyrillic-capital-letter-dje" }, { 0x0403, "cyrillic-capital-letter-gje" }, { 0x0404, "cyrillic-capital-letter-ukrainian-ie" }, { 0x0405, "cyrillic-capital-letter-dze" }, { 0x0406, "cyrillic-capital-letter-byelorussian-ukrainian-i" }, { 0x0407, "cyrillic-capital-letter-yi" }, { 0x0408, "cyrillic-capital-letter-je" }, { 0x0409, "cyrillic-capital-letter-lje" }, { 0x040a, "cyrillic-capital-letter-nje" }, { 0x040b, "cyrillic-capital-letter-tshe" }, { 0x040c, "cyrillic-capital-letter-kje" }, { 0x040e, "cyrillic-capital-letter-short-u" }, { 0x040f, "cyrillic-capital-letter-dzhe" }, { 0x0410, "cyrillic-capital-letter-a" }, { 0x0411, "cyrillic-capital-letter-be" }, { 0x0412, "cyrillic-capital-letter-ve" }, { 0x0413, "cyrillic-capital-letter-ghe" }, { 0x0414, "cyrillic-capital-letter-de" }, { 0x0415, "cyrillic-capital-letter-ie" }, { 0x0416, "cyrillic-capital-letter-zhe" }, { 0x0417, "cyrillic-capital-letter-ze" }, { 0x0418, "cyrillic-capital-letter-i" }, { 0x0419, "cyrillic-capital-letter-short-i" }, { 0x041a, "cyrillic-capital-letter-ka" }, { 0x041b, "cyrillic-capital-letter-el" }, { 0x041c, "cyrillic-capital-letter-em" }, { 0x041d, "cyrillic-capital-letter-en" }, { 0x041e, "cyrillic-capital-letter-o" }, { 0x041f, "cyrillic-capital-letter-pe" }, { 0x0420, "cyrillic-capital-letter-er" }, { 0x0421, "cyrillic-capital-letter-es" }, { 0x0422, "cyrillic-capital-letter-te" }, { 0x0423, "cyrillic-capital-letter-u" }, { 0x0424, "cyrillic-capital-letter-ef" }, { 0x0425, "cyrillic-capital-letter-ha" }, { 0x0426, "cyrillic-capital-letter-tse" }, { 0x0427, "cyrillic-capital-letter-che" }, { 0x0428, "cyrillic-capital-letter-sha" }, { 0x0429, "cyrillic-capital-letter-shcha" }, { 0x042a, "cyrillic-capital-letter-hard-sign" }, { 0x042b, "cyrillic-capital-letter-yeru" }, { 0x042c, "cyrillic-capital-letter-soft-sign" }, { 0x042d, "cyrillic-capital-letter-e" }, { 0x042e, "cyrillic-capital-letter-yu" }, { 0x042f, "cyrillic-capital-letter-ya" }, { 0x0430, "cyrillic-small-letter-a" }, { 0x0431, "cyrillic-small-letter-be" }, { 0x0432, "cyrillic-small-letter-ve" }, { 0x0433, "cyrillic-small-letter-ghe" }, { 0x0434, "cyrillic-small-letter-de" }, { 0x0435, "cyrillic-small-letter-ie" }, { 0x0436, "cyrillic-small-letter-zhe" }, { 0x0437, "cyrillic-small-letter-ze" }, { 0x0438, "cyrillic-small-letter-i" }, { 0x0439, "cyrillic-small-letter-short-i" }, { 0x043a, "cyrillic-small-letter-ka" }, { 0x043b, "cyrillic-small-letter-el" }, { 0x043c, "cyrillic-small-letter-em" }, { 0x043d, "cyrillic-small-letter-en" }, { 0x043e, "cyrillic-small-letter-o" }, { 0x043f, "cyrillic-small-letter-pe" }, { 0x0440, "cyrillic-small-letter-er" }, { 0x0441, "cyrillic-small-letter-es" }, { 0x0442, "cyrillic-small-letter-te" }, { 0x0443, "cyrillic-small-letter-u" }, { 0x0444, "cyrillic-small-letter-ef" }, { 0x0445, "cyrillic-small-letter-ha" }, { 0x0446, "cyrillic-small-letter-tse" }, { 0x0447, "cyrillic-small-letter-che" }, { 0x0448, "cyrillic-small-letter-sha" }, { 0x0449, "cyrillic-small-letter-shcha" }, { 0x044a, "cyrillic-small-letter-hard-sign" }, { 0x044b, "cyrillic-small-letter-yeru" }, { 0x044c, "cyrillic-small-letter-soft-sign" }, { 0x044d, "cyrillic-small-letter-e" }, { 0x044e, "cyrillic-small-letter-yu" }, { 0x044f, "cyrillic-small-letter-ya" }, { 0x0451, "cyrillic-small-letter-io" }, { 0x0452, "cyrillic-small-letter-dje" }, { 0x0453, "cyrillic-small-letter-gje" }, { 0x0454, "cyrillic-small-letter-ukrainian-ie" }, { 0x0455, "cyrillic-small-letter-dze" }, { 0x0456, "cyrillic-small-letter-byelorussian-ukrainian-i" }, { 0x0457, "cyrillic-small-letter-yi" }, { 0x0458, "cyrillic-small-letter-je" }, { 0x0459, "cyrillic-small-letter-lje" }, { 0x045a, "cyrillic-small-letter-nje" }, { 0x045b, "cyrillic-small-letter-tshe" }, { 0x045c, "cyrillic-small-letter-kje" }, { 0x045e, "cyrillic-small-letter-short-u" }, { 0x045f, "cyrillic-small-letter-dzhe" }, { 0x0490, "cyrillic-capital-letter-ghe-with-upturn" }, { 0x0491, "cyrillic-small-letter-ghe-with-upturn" }, { 0x0950, "devanagari-om" }, { 0x1e80, "latin-capital-letter-w-with-grave" }, { 0x1e81, "latin-small-letter-w-with-grave" }, { 0x1e82, "latin-capital-letter-w-with-acute" }, { 0x1e83, "latin-small-letter-w-with-acute" }, { 0x1e84, "latin-capital-letter-w-with-diaeresis" }, { 0x1e85, "latin-small-letter-w-with-diaeresis" }, { 0x1ef2, "latin-capital-letter-y-with-grave" }, { 0x1ef3, "latin-small-letter-y-with-grave" }, { 0x2013, "en-dash" }, { 0x2014, "em-dash" }, { 0x2015, "horizontal-bar" }, { 0x2017, "double-low-line" }, { 0x2018, "left-single-quotation-mark" }, { 0x2019, "right-single-quotation-mark" }, { 0x201a, "single-low-9-quotation-mark" }, { 0x201b, "single-high-reversed-9-quotation-mark" }, { 0x201c, "left-double-quotation-mark" }, { 0x201d, "right-double-quotation-mark" }, { 0x201e, "double-low-9-quotation-mark" }, { 0x2020, "dagger" }, { 0x2021, "double-dagger" }, { 0x2022, "bullet" }, { 0x2026, "horizontal-ellipsis" }, { 0x2030, "per-mille-sign" }, { 0x2032, "prime" }, { 0x2033, "double-prime" }, { 0x2039, "single-left-pointing-angle-quotation-mark" }, { 0x203a, "single-right-pointing-angle-quotation-mark" }, { 0x203c, "double-exclamation-mark" }, { 0x203e, "overline" }, { 0x2044, "fraction-slash" }, { 0x207f, "superscript-latin-small-letter-n" }, { 0x20a3, "french-franc-sign" }, { 0x20a4, "lira-sign" }, { 0x20a7, "peseta-sign" }, { 0x2105, "care-of" }, { 0x2111, "black-letter-capital-i" }, { 0x2113, "script-small-l" }, { 0x2116, "numero-sign" }, { 0x2118, "script-capital-p" }, { 0x211c, "black-letter-capital-r" }, { 0x2122, "trade-mark-sign" }, { 0x2126, "ohm-sign" }, { 0x212e, "estimated-symbol" }, { 0x2135, "alef-symbol" }, { 0x215b, "vulgar-fraction-one-eighth" }, { 0x215c, "vulgar-fraction-three-eighths" }, { 0x215d, "vulgar-fraction-five-eighths" }, { 0x215e, "vulgar-fraction-seven-eighths" }, { 0x2190, "leftwards-arrow" }, { 0x2191, "upwards-arrow" }, { 0x2192, "rightwards-arrow" }, { 0x2193, "downwards-arrow" }, { 0x2194, "left-right-arrow" }, { 0x2195, "up-down-arrow" }, { 0x21a8, "up-down-arrow-with-base" }, { 0x21b5, "downwards-arrow-with-corner-leftwards" }, { 0x21d0, "leftwards-double-arrow" }, { 0x21d1, "upwards-double-arrow" }, { 0x21d2, "rightwards-double-arrow" }, { 0x21d3, "downwards-double-arrow" }, { 0x21d4, "left-right-double-arrow" }, { 0x2200, "for-all" }, { 0x2202, "partial-differential" }, { 0x2203, "there-exists" }, { 0x2205, "empty-set" }, { 0x2206, "increment" }, { 0x2207, "nabla" }, { 0x2208, "element-of" }, { 0x2209, "not-an-element-of" }, { 0x220b, "contains-as-member" }, { 0x220f, "n-ary-product" }, { 0x2211, "n-ary-summation" }, { 0x2212, "minus-sign" }, { 0x2215, "division-slash" }, { 0x2217, "asterisk-operator" }, { 0x2219, "bullet-operator" }, { 0x221a, "square-root" }, { 0x221d, "proportional-to" }, { 0x221e, "infinity" }, { 0x221f, "right-angle" }, { 0x2220, "angle" }, { 0x2227, "logical-and" }, { 0x2228, "logical-or" }, { 0x2229, "intersection" }, { 0x222a, "union" }, { 0x222b, "integral" }, { 0x2234, "therefore" }, { 0x223c, "tilde-operator" }, { 0x2245, "approximately-equal-to" }, { 0x2248, "almost-equal-to" }, { 0x2260, "not-equal-to" }, { 0x2261, "identical-to" }, { 0x2264, "less-than-or-equal-to" }, { 0x2265, "greater-than-or-equal-to" }, { 0x2282, "subset-of" }, { 0x2283, "superset-of" }, { 0x2284, "not-a-subset-of" }, { 0x2286, "subset-of-or-equal-to" }, { 0x2287, "superset-of-or-equal-to" }, { 0x2295, "circled-plus" }, { 0x2297, "circled-times" }, { 0x22a5, "up-tack" }, { 0x22c5, "dot-operator" }, { 0x2302, "house" }, { 0x2310, "reversed-not-sign" }, { 0x2320, "top-half-integral" }, { 0x2321, "bottom-half-integral" }, { 0x2326, "erase-to-the-right" }, { 0x2328, "keyboard" }, { 0x2329, "left-pointing-angle-bracket" }, { 0x232a, "right-pointing-angle-bracket" }, { 0x232b, "erase-to-the-left" }, { 0x2460, "circled-digit-one" }, { 0x2461, "circled-digit-two" }, { 0x2462, "circled-digit-three" }, { 0x2463, "circled-digit-four" }, { 0x2464, "circled-digit-five" }, { 0x2465, "circled-digit-six" }, { 0x2466, "circled-digit-seven" }, { 0x2467, "circled-digit-eight" }, { 0x2468, "circled-digit-nine" }, { 0x2469, "circled-number-ten" }, { 0x2500, "box-drawings-light-horizontal" }, { 0x2502, "box-drawings-light-vertical" }, { 0x250c, "box-drawings-light-down-and-right" }, { 0x2510, "box-drawings-light-down-and-left" }, { 0x2514, "box-drawings-light-up-and-right" }, { 0x2518, "box-drawings-light-up-and-left" }, { 0x251c, "box-drawings-light-vertical-and-right" }, { 0x2524, "box-drawings-light-vertical-and-left" }, { 0x252c, "box-drawings-light-down-and-horizontal" }, { 0x2534, "box-drawings-light-up-and-horizontal" }, { 0x253c, "box-drawings-light-vertical-and-horizontal" }, { 0x2550, "box-drawings-double-horizontal" }, { 0x2551, "box-drawings-double-vertical" }, { 0x2552, "box-drawings-down-single-and-right-double" }, { 0x2553, "box-drawings-down-double-and-right-single" }, { 0x2554, "box-drawings-double-down-and-right" }, { 0x2555, "box-drawings-down-single-and-left-double" }, { 0x2556, "box-drawings-down-double-and-left-single" }, { 0x2557, "box-drawings-double-down-and-left" }, { 0x2558, "box-drawings-up-single-and-right-double" }, { 0x2559, "box-drawings-up-double-and-right-single" }, { 0x255a, "box-drawings-double-up-and-right" }, { 0x255b, "box-drawings-up-single-and-left-double" }, { 0x255c, "box-drawings-up-double-and-left-single" }, { 0x255d, "box-drawings-double-up-and-left" }, { 0x255e, "box-drawings-vertical-single-and-right-double" }, { 0x255f, "box-drawings-vertical-double-and-right-single" }, { 0x2560, "box-drawings-double-vertical-and-right" }, { 0x2561, "box-drawings-vertical-single-and-left-double" }, { 0x2562, "box-drawings-vertical-double-and-left-single" }, { 0x2563, "box-drawings-double-vertical-and-left" }, { 0x2564, "box-drawings-down-single-and-horizontal-double" }, { 0x2565, "box-drawings-down-double-and-horizontal-single" }, { 0x2566, "box-drawings-double-down-and-horizontal" }, { 0x2567, "box-drawings-up-single-and-horizontal-double" }, { 0x2568, "box-drawings-up-double-and-horizontal-single" }, { 0x2569, "box-drawings-double-up-and-horizontal" }, { 0x256a, "box-drawings-vertical-single-and-horizontal-double" }, { 0x256b, "box-drawings-vertical-double-and-horizontal-single" }, { 0x256c, "box-drawings-double-vertical-and-horizontal" }, { 0x2580, "upper-half-block" }, { 0x2584, "lower-half-block" }, { 0x2588, "full-block" }, { 0x258c, "left-half-block" }, { 0x2590, "right-half-block" }, { 0x2591, "light-shade" }, { 0x2592, "medium-shade" }, { 0x2593, "dark-shade" }, { 0x25a0, "black-square" }, { 0x25a1, "white-square" }, { 0x25aa, "black-small-square" }, { 0x25ab, "white-small-square" }, { 0x25ac, "black-rectangle" }, { 0x25b2, "black-up-pointing-triangle" }, { 0x25ba, "black-right-pointing-pointer" }, { 0x25bc, "black-down-pointing-triangle" }, { 0x25c4, "black-left-pointing-pointer" }, { 0x25c6, "black-diamond" }, { 0x25ca, "lozenge" }, { 0x25cb, "white-circle" }, { 0x25cf, "black-circle" }, { 0x25d8, "inverse-bullet" }, { 0x25d9, "inverse-white-circle" }, { 0x25e6, "white-bullet" }, { 0x2605, "black-star" }, { 0x260e, "black-telephone" }, { 0x2611, "ballot-box-with-check" }, { 0x2612, "ballot-box-with-x" }, { 0x261b, "black-right-pointing-index" }, { 0x261c, "white-left-pointing-index" }, { 0x261d, "white-up-pointing-index" }, { 0x261e, "white-right-pointing-index" }, { 0x261f, "white-down-pointing-index" }, { 0x2620, "skull-and-crossbones" }, { 0x262a, "star-and-crescent" }, { 0x262f, "yin-yang" }, { 0x2638, "wheel-of-dharma" }, { 0x2639, "white-frowning-face" }, { 0x263a, "white-smiling-face" }, { 0x263b, "black-smiling-face" }, { 0x263c, "white-sun-with-rays" }, { 0x2640, "female-sign" }, { 0x2642, "male-sign" }, { 0x2648, "aries" }, { 0x2649, "taurus" }, { 0x264a, "gemini" }, { 0x264b, "cancer" }, { 0x264c, "leo" }, { 0x264d, "virgo" }, { 0x264e, "libra" }, { 0x264f, "scorpius" }, { 0x2650, "sagittarius" }, { 0x2651, "capricorn" }, { 0x2652, "aquarius" }, { 0x2653, "pisces" }, { 0x2660, "black-spade-suit" }, { 0x2663, "black-club-suit" }, { 0x2665, "black-heart-suit" }, { 0x2666, "black-diamond-suit" }, { 0x266a, "eighth-note" }, { 0x266b, "beamed-eighth-notes" }, { 0x2701, "upper-blade-scissors" }, { 0x2702, "black-scissors" }, { 0x2703, "lower-blade-scissors" }, { 0x2704, "white-scissors" }, { 0x2706, "telephone-location-sign" }, { 0x2707, "tape-drive" }, { 0x2708, "airplane" }, { 0x2709, "envelope" }, { 0x270c, "victory-hand" }, { 0x270d, "writing-hand" }, { 0x270e, "lower-right-pencil" }, { 0x270f, "pencil" }, { 0x2710, "upper-right-pencil" }, { 0x2711, "white-nib" }, { 0x2712, "black-nib" }, { 0x2713, "check-mark" }, { 0x2714, "heavy-check-mark" }, { 0x2715, "multiplication-x" }, { 0x2716, "heavy-multiplication-x" }, { 0x2717, "ballot-x" }, { 0x2718, "heavy-ballot-x" }, { 0x2719, "outlined-greek-cross" }, { 0x271a, "heavy-greek-cross" }, { 0x271b, "open-centre-cross" }, { 0x271c, "heavy-open-centre-cross" }, { 0x271d, "latin-cross" }, { 0x271e, "shadowed-white-latin-cross" }, { 0x271f, "outlined-latin-cross" }, { 0x2720, "maltese-cross" }, { 0x2721, "star-of-david" }, { 0x2722, "four-teardrop-spoked-asterisk" }, { 0x2723, "four-balloon-spoked-asterisk" }, { 0x2724, "heavy-four-balloon-spoked-asterisk" }, { 0x2725, "four-club-spoked-asterisk" }, { 0x2726, "black-four-pointed-star" }, { 0x2727, "white-four-pointed-star" }, { 0x2729, "stress-outlined-white-star" }, { 0x272a, "circled-white-star" }, { 0x272b, "open-centre-black-star" }, { 0x272c, "black-centre-white-star" }, { 0x272d, "outlined-black-star" }, { 0x272e, "heavy-outlined-black-star" }, { 0x272f, "pinwheel-star" }, { 0x2730, "shadowed-white-star" }, { 0x2731, "heavy-asterisk" }, { 0x2732, "open-centre-asterisk" }, { 0x2733, "eight-spoked-asterisk" }, { 0x2734, "eight-pointed-black-star" }, { 0x2735, "eight-pointed-pinwheel-star" }, { 0x2736, "six-pointed-black-star" }, { 0x2737, "eight-pointed-rectilinear-black-star" }, { 0x2738, "heavy-eight-pointed-rectilinear-black-star" }, { 0x2739, "twelve-pointed-black-star" }, { 0x273a, "sixteen-pointed-asterisk" }, { 0x273b, "teardrop-spoked-asterisk" }, { 0x273c, "open-centre-teardrop-spoked-asterisk" }, { 0x273d, "heavy-teardrop-spoked-asterisk" }, { 0x273e, "six-petalled-black-and-white-florette" }, { 0x273f, "black-florette" }, { 0x2740, "white-florette" }, { 0x2741, "eight-petalled-outlined-black-florette" }, { 0x2742, "circled-open-centre-eight-pointed-star" }, { 0x2743, "heavy-teardrop-spoked-pinwheel-asterisk" }, { 0x2744, "snowflake" }, { 0x2745, "tight-trifoliate-snowflake" }, { 0x2746, "heavy-chevron-snowflake" }, { 0x2747, "sparkle" }, { 0x2748, "heavy-sparkle" }, { 0x2749, "balloon-spoked-asterisk" }, { 0x274a, "eight-teardrop-spoked-propeller-asterisk" }, { 0x274b, "heavy-eight-teardrop-spoked-propeller-asterisk" }, { 0x274d, "shadowed-white-circle" }, { 0x274f, "lower-right-drop-shadowed-white-square" }, { 0x2750, "upper-right-drop-shadowed-white-square" }, { 0x2751, "lower-right-shadowed-white-square" }, { 0x2752, "upper-right-shadowed-white-square" }, { 0x2756, "black-diamond-minus-white-x" }, { 0x2758, "light-vertical-bar" }, { 0x2759, "medium-vertical-bar" }, { 0x275a, "heavy-vertical-bar" }, { 0x275b, "heavy-single-turned-comma-quotation-mark-ornament" }, { 0x275c, "heavy-single-comma-quotation-mark-ornament" }, { 0x275d, "heavy-double-turned-comma-quotation-mark-ornament" }, { 0x275e, "heavy-double-comma-quotation-mark-ornament" }, { 0x2761, "curved-stem-paragraph-sign-ornament" }, { 0x2762, "heavy-exclamation-mark-ornament" }, { 0x2763, "heavy-heart-exclamation-mark-ornament" }, { 0x2764, "heavy-black-heart" }, { 0x2765, "rotated-heavy-black-heart-bullet" }, { 0x2766, "floral-heart" }, { 0x2767, "rotated-floral-heart-bullet" }, { 0x2776, "dingbat-negative-circled-digit-one" }, { 0x2777, "dingbat-negative-circled-digit-two" }, { 0x2778, "dingbat-negative-circled-digit-three" }, { 0x2779, "dingbat-negative-circled-digit-four" }, { 0x277a, "dingbat-negative-circled-digit-five" }, { 0x277b, "dingbat-negative-circled-digit-six" }, { 0x277c, "dingbat-negative-circled-digit-seven" }, { 0x277d, "dingbat-negative-circled-digit-eight" }, { 0x277e, "dingbat-negative-circled-digit-nine" }, { 0x277f, "dingbat-negative-circled-number-ten" }, { 0x2780, "dingbat-circled-sans-serif-digit-one" }, { 0x2781, "dingbat-circled-sans-serif-digit-two" }, { 0x2782, "dingbat-circled-sans-serif-digit-three" }, { 0x2783, "dingbat-circled-sans-serif-digit-four" }, { 0x2784, "dingbat-circled-sans-serif-digit-five" }, { 0x2785, "dingbat-circled-sans-serif-digit-six" }, { 0x2786, "dingbat-circled-sans-serif-digit-seven" }, { 0x2787, "dingbat-circled-sans-serif-digit-eight" }, { 0x2788, "dingbat-circled-sans-serif-digit-nine" }, { 0x2789, "dingbat-circled-sans-serif-number-ten" }, { 0x278a, "dingbat-negative-circled-sans-serif-digit-one" }, { 0x278b, "dingbat-negative-circled-sans-serif-digit-two" }, { 0x278c, "dingbat-negative-circled-sans-serif-digit-three" }, { 0x278d, "dingbat-negative-circled-sans-serif-digit-four" }, { 0x278e, "dingbat-negative-circled-sans-serif-digit-five" }, { 0x278f, "dingbat-negative-circled-sans-serif-digit-six" }, { 0x2790, "dingbat-negative-circled-sans-serif-digit-seven" }, { 0x2791, "dingbat-negative-circled-sans-serif-digit-eight" }, { 0x2792, "dingbat-negative-circled-sans-serif-digit-nine" }, { 0x2793, "dingbat-negative-circled-sans-serif-number-ten" }, { 0x2794, "heavy-wide-headed-rightwards-arrow" }, { 0x2798, "heavy-south-east-arrow" }, { 0x2799, "heavy-rightwards-arrow" }, { 0x279a, "heavy-north-east-arrow" }, { 0x279b, "drafting-point-rightwards-arrow" }, { 0x279c, "heavy-round-tipped-rightwards-arrow" }, { 0x279d, "triangle-headed-rightwards-arrow" }, { 0x279e, "heavy-triangle-headed-rightwards-arrow" }, { 0x279f, "dashed-triangle-headed-rightwards-arrow" }, { 0x27a0, "heavy-dashed-triangle-headed-rightwards-arrow" }, { 0x27a1, "black-rightwards-arrow" }, { 0x27a2, "three-d-top-lighted-rightwards-arrowhead" }, { 0x27a3, "three-d-bottom-lighted-rightwards-arrowhead" }, { 0x27a4, "black-rightwards-arrowhead" }, { 0x27a5, "heavy-black-curved-downwards-and-rightwards-arrow" }, { 0x27a6, "heavy-black-curved-upwards-and-rightwards-arrow" }, { 0x27a7, "squat-black-rightwards-arrow" }, { 0x27a8, "heavy-concave-pointed-black-rightwards-arrow" }, { 0x27a9, "right-shaded-white-rightwards-arrow" }, { 0x27aa, "left-shaded-white-rightwards-arrow" }, { 0x27ab, "back-tilted-shadowed-white-rightwards-arrow" }, { 0x27ac, "front-tilted-shadowed-white-rightwards-arrow" }, { 0x27ad, "heavy-lower-right-shadowed-white-rightwards-arrow" }, { 0x27ae, "heavy-upper-right-shadowed-white-rightwards-arrow" }, { 0x27af, "notched-lower-right-shadowed-white-rightwards-arrow" }, { 0x27b1, "notched-upper-right-shadowed-white-rightwards-arrow" }, { 0x27b2, "circled-heavy-white-rightwards-arrow" }, { 0x27b3, "white-feathered-rightwards-arrow" }, { 0x27b4, "black-feathered-south-east-arrow" }, { 0x27b5, "black-feathered-rightwards-arrow" }, { 0x27b6, "black-feathered-north-east-arrow" }, { 0x27b7, "heavy-black-feathered-south-east-arrow" }, { 0x27b8, "heavy-black-feathered-rightwards-arrow" }, { 0x27b9, "heavy-black-feathered-north-east-arrow" }, { 0x27ba, "teardrop-barbed-rightwards-arrow" }, { 0x27bb, "heavy-teardrop-shanked-rightwards-arrow" }, { 0x27bc, "wedge-tailed-rightwards-arrow" }, { 0x27bd, "heavy-wedge-tailed-rightwards-arrow" }, { 0x27be, "open-outlined-rightwards-arrow" }, { 0xfb01, "latin-small-ligature-fi" }, { 0xfb02, "latin-small-ligature-fl" }, openjade-1.3.2/style/charProps.h0100664000076400007640000003122706756616057014716 0ustar ianian#ifdef SPACE { 0x0020, 1 }, { 0x00a0, 1 }, { 0x2000, 12 }, { 0x3000, 1 }, #endif #ifdef RECORD_END { 0x000D, 1 }, #endif #ifdef BLANK { 0x0000, 32 }, { 0x007f, 33 }, { 0x200e, 2 }, { 0x202a, 5 }, { 0x200c, 2 }, { 0x206a, 6 }, #endif #ifdef INPUT_TAB { 0x0009, 1 }, #endif #ifdef INPUT_WHITESPACE { 0x0009, 5 }, { 0x0020, 1 }, { 0x00a0, 1 }, { 0x2000, 12 }, { 0x2028, 2 }, { 0x3000, 1 }, #endif #ifdef PUNCT { 0x0021, 1 }, { 0x002c, 1 }, { 0x002e, 1 }, { 0x003a, 2 }, { 0x003f, 1 }, { 0x037e, 1 }, { 0x0387, 1 }, { 0x0589, 1 }, { 0x060c, 1 }, { 0x061b, 1 }, { 0x061f, 1 }, { 0x06d4, 1 }, { 0x0964, 2 }, { 0x0e5a, 2 }, { 0x203c, 2 }, { 0x3001, 2 }, { 0xfe50, 3 }, { 0xfe54, 4 }, { 0xff01, 1 }, { 0xff0c, 1 }, { 0xff0e, 1 }, { 0xff1a, 2 }, { 0xff1f, 1 }, { 0xff61, 1 }, { 0xff64, 1 }, #endif #ifdef SCRIPT { 0x0000, 0x007f, "Latin" }, { 0x0080, 0x00ff, "Latin" }, { 0x0100, 0x017f, "Latin" }, { 0x0180, 0x024f, "Latin" }, { 0x0370, 0x03ff, "Greek" }, { 0x0400, 0x04ff, "Cyrillic" }, { 0x0530, 0x058f, "Armenian" }, { 0x0590, 0x05ff, "Hebrew" }, { 0x0600, 0x06ff, "Arabic" }, { 0x0900, 0x097f, "Devanagari" }, { 0x0980, 0x09ff, "Bengali" }, { 0x0a00, 0x0a7f, "Gurmukhi" }, { 0x0a80, 0x0aff, "Gujarati" }, { 0x0b00, 0x0b7f, "Oriya" }, { 0x0b80, 0x0bff, "Tamil" }, { 0x0c00, 0x0c7f, "Telugu" }, { 0x0c80, 0x0cff, "Kannada" }, { 0x0d00, 0x0d7f, "Malayalam" }, { 0x0d80, 0x0dff, "Sinhala" }, { 0x0e00, 0x0e7f, "Thai" }, { 0x0e80, 0x0eff, "Lao" }, { 0x0f00, 0x0fbf, "Tibetan" }, { 0x10a0, 0x10ff, "Georgian" }, { 0x1100, 0x11ff, "Hangul" }, { 0x1200, 0x137f, "Ethiopian" }, { 0x1780, 0x17ff, "Khmer" }, { 0x1800, 0x18af, "Mongolian" }, { 0x1e00, 0x1eff, "Latin" }, { 0x1f00, 0x1fff, "Greek" }, { 0x2000, 0x206f, "Punctuation" }, { 0x20a0, 0x20cf, "Symbol" }, { 0x2100, 0x214f, "Symbol" }, { 0x2600, 0x26ff, "Symbol" }, { 0x3040, 0x309f, "Hiragana" }, { 0x30a0, 0x30ff, "Katakana" }, { 0x3100, 0x312f, "Bopomofo" }, { 0x3130, 0x318f, "Hangul" }, { 0xac00, 0xd7a3, "Hangul" }, #endif #ifdef BREAK_PRIORITIES // These are automatically generated by ../unicode/genbreakprios.pl. { 0x0009, 2, 2, 3 }, { 0x000d, 1, 2, 3 }, { 0x0020, 1, 2, 3 }, { 0x0021, 4, 1, 1 }, { 0x0025, 1, 3, 1 }, { 0x0026, 2, 1, 1 }, { 0x0028, 1, 1, 3 }, { 0x0029, 1, 3, 1 }, { 0x002a, 3, 1, 1 }, { 0x002d, 1, 3, 2 }, { 0x002e, 1, 1, 1 }, { 0x002f, 1, 1, 2 }, { 0x0030, 43, 1, 1 }, { 0x005b, 1, 1, 3 }, { 0x005c, 1, 1, 1 }, { 0x005d, 1, 3, 1 }, { 0x005e, 29, 1, 1 }, { 0x007b, 1, 1, 3 }, { 0x007c, 1, 1, 2 }, { 0x007d, 1, 3, 1 }, { 0x007e, 1, 1, 1 }, { 0x00a0, 2, 1, 1 }, { 0x00a2, 1, 3, 1 }, { 0x00a3, 10, 1, 1 }, { 0x00ad, 1, 1, 2 }, { 0x00ae, 2, 1, 1 }, { 0x00b0, 1, 3, 1 }, { 0x00b1, 3, 1, 1 }, { 0x00b4, 1, 1, 2 }, { 0x00b5, 363, 1, 1 }, { 0x0222, 18, 1, 1 }, { 0x0250, 94, 1, 1 }, { 0x02b0, 24, 1, 1 }, { 0x02c8, 1, 2, 3 }, { 0x02c9, 3, 1, 1 }, { 0x02cc, 1, 2, 3 }, { 0x02cd, 34, 1, 1 }, { 0x0300, 79, 1, 1 }, { 0x0360, 3, 1, 1 }, { 0x0374, 2, 1, 1 }, { 0x037a, 1, 1, 1 }, { 0x037e, 1, 1, 1 }, { 0x0384, 7, 1, 1 }, { 0x038c, 1, 1, 1 }, { 0x038e, 20, 1, 1 }, { 0x03a3, 44, 1, 1 }, { 0x03d0, 8, 1, 1 }, { 0x03da, 26, 1, 1 }, { 0x0400, 135, 1, 1 }, { 0x0488, 2, 1, 1 }, { 0x048e, 55, 1, 1 }, { 0x04c7, 2, 1, 1 }, { 0x04cb, 2, 1, 1 }, { 0x04d0, 38, 1, 1 }, { 0x04f8, 2, 1, 1 }, { 0x0531, 38, 1, 1 }, { 0x0559, 7, 1, 1 }, { 0x0561, 39, 1, 1 }, { 0x0589, 1, 1, 1 }, { 0x058a, 1, 1, 2 }, { 0x0591, 17, 1, 1 }, { 0x05a3, 23, 1, 1 }, { 0x05bb, 10, 1, 1 }, { 0x05d0, 27, 1, 1 }, { 0x05f0, 5, 1, 1 }, { 0x060c, 1, 1, 1 }, { 0x061b, 1, 1, 1 }, { 0x061f, 1, 1, 1 }, { 0x0621, 26, 1, 1 }, { 0x0640, 22, 1, 1 }, { 0x0660, 14, 1, 1 }, { 0x0670, 126, 1, 1 }, { 0x06f0, 15, 1, 1 }, { 0x0700, 14, 1, 1 }, { 0x070f, 30, 1, 1 }, { 0x0730, 27, 1, 1 }, { 0x0780, 49, 1, 1 }, { 0x0901, 3, 1, 1 }, { 0x0905, 53, 1, 1 }, { 0x093c, 18, 1, 1 }, { 0x0950, 5, 1, 1 }, { 0x0958, 25, 1, 1 }, { 0x0981, 3, 1, 1 }, { 0x0985, 8, 1, 1 }, { 0x098f, 2, 1, 1 }, { 0x0993, 22, 1, 1 }, { 0x09aa, 7, 1, 1 }, { 0x09b2, 1, 1, 1 }, { 0x09b6, 4, 1, 1 }, { 0x09bc, 1, 1, 1 }, { 0x09be, 7, 1, 1 }, { 0x09c7, 2, 1, 1 }, { 0x09cb, 3, 1, 1 }, { 0x09d7, 1, 1, 1 }, { 0x09dc, 2, 1, 1 }, { 0x09df, 5, 1, 1 }, { 0x09e6, 21, 1, 1 }, { 0x0a02, 1, 1, 1 }, { 0x0a05, 6, 1, 1 }, { 0x0a0f, 2, 1, 1 }, { 0x0a13, 22, 1, 1 }, { 0x0a2a, 7, 1, 1 }, { 0x0a32, 2, 1, 1 }, { 0x0a35, 2, 1, 1 }, { 0x0a38, 2, 1, 1 }, { 0x0a3c, 1, 1, 1 }, { 0x0a3e, 5, 1, 1 }, { 0x0a47, 2, 1, 1 }, { 0x0a4b, 3, 1, 1 }, { 0x0a59, 4, 1, 1 }, { 0x0a5e, 1, 1, 1 }, { 0x0a66, 15, 1, 1 }, { 0x0a81, 3, 1, 1 }, { 0x0a85, 7, 1, 1 }, { 0x0a8d, 1, 1, 1 }, { 0x0a8f, 3, 1, 1 }, { 0x0a93, 22, 1, 1 }, { 0x0aaa, 7, 1, 1 }, { 0x0ab2, 2, 1, 1 }, { 0x0ab5, 5, 1, 1 }, { 0x0abc, 10, 1, 1 }, { 0x0ac7, 3, 1, 1 }, { 0x0acb, 3, 1, 1 }, { 0x0ad0, 1, 1, 1 }, { 0x0ae0, 1, 1, 1 }, { 0x0ae6, 10, 1, 1 }, { 0x0b01, 3, 1, 1 }, { 0x0b05, 8, 1, 1 }, { 0x0b0f, 2, 1, 1 }, { 0x0b13, 22, 1, 1 }, { 0x0b2a, 7, 1, 1 }, { 0x0b32, 2, 1, 1 }, { 0x0b36, 4, 1, 1 }, { 0x0b3c, 8, 1, 1 }, { 0x0b47, 2, 1, 1 }, { 0x0b4b, 3, 1, 1 }, { 0x0b56, 2, 1, 1 }, { 0x0b5c, 2, 1, 1 }, { 0x0b5f, 3, 1, 1 }, { 0x0b66, 11, 1, 1 }, { 0x0b82, 2, 1, 1 }, { 0x0b85, 6, 1, 1 }, { 0x0b8e, 3, 1, 1 }, { 0x0b92, 4, 1, 1 }, { 0x0b99, 2, 1, 1 }, { 0x0b9c, 1, 1, 1 }, { 0x0b9e, 2, 1, 1 }, { 0x0ba3, 2, 1, 1 }, { 0x0ba8, 3, 1, 1 }, { 0x0bae, 8, 1, 1 }, { 0x0bb7, 3, 1, 1 }, { 0x0bbe, 5, 1, 1 }, { 0x0bc6, 3, 1, 1 }, { 0x0bca, 4, 1, 1 }, { 0x0bd7, 1, 1, 1 }, { 0x0be7, 12, 1, 1 }, { 0x0c01, 3, 1, 1 }, { 0x0c05, 8, 1, 1 }, { 0x0c0e, 3, 1, 1 }, { 0x0c12, 23, 1, 1 }, { 0x0c2a, 10, 1, 1 }, { 0x0c35, 5, 1, 1 }, { 0x0c3e, 7, 1, 1 }, { 0x0c46, 3, 1, 1 }, { 0x0c4a, 4, 1, 1 }, { 0x0c55, 2, 1, 1 }, { 0x0c60, 2, 1, 1 }, { 0x0c66, 10, 1, 1 }, { 0x0c82, 2, 1, 1 }, { 0x0c85, 8, 1, 1 }, { 0x0c8e, 3, 1, 1 }, { 0x0c92, 23, 1, 1 }, { 0x0caa, 10, 1, 1 }, { 0x0cb5, 5, 1, 1 }, { 0x0cbe, 7, 1, 1 }, { 0x0cc6, 3, 1, 1 }, { 0x0cca, 4, 1, 1 }, { 0x0cd5, 2, 1, 1 }, { 0x0cde, 1, 1, 1 }, { 0x0ce0, 2, 1, 1 }, { 0x0ce6, 10, 1, 1 }, { 0x0d02, 2, 1, 1 }, { 0x0d05, 8, 1, 1 }, { 0x0d0e, 3, 1, 1 }, { 0x0d12, 23, 1, 1 }, { 0x0d2a, 16, 1, 1 }, { 0x0d3e, 6, 1, 1 }, { 0x0d46, 3, 1, 1 }, { 0x0d4a, 4, 1, 1 }, { 0x0d57, 1, 1, 1 }, { 0x0d60, 2, 1, 1 }, { 0x0d66, 10, 1, 1 }, { 0x0d82, 2, 1, 1 }, { 0x0d85, 18, 1, 1 }, { 0x0d9a, 24, 1, 1 }, { 0x0db3, 9, 1, 1 }, { 0x0dbd, 1, 1, 1 }, { 0x0dc0, 7, 1, 1 }, { 0x0dca, 1, 1, 1 }, { 0x0dcf, 6, 1, 1 }, { 0x0dd6, 1, 1, 1 }, { 0x0dd8, 8, 1, 1 }, { 0x0df2, 3, 1, 1 }, { 0x0e01, 58, 1, 1 }, { 0x0e3f, 27, 1, 1 }, { 0x0e5a, 2, 5, 1 }, { 0x0e81, 2, 1, 1 }, { 0x0e84, 1, 1, 1 }, { 0x0e87, 2, 1, 1 }, { 0x0e8a, 1, 1, 1 }, { 0x0e8d, 1, 1, 1 }, { 0x0e94, 4, 1, 1 }, { 0x0e99, 7, 1, 1 }, { 0x0ea1, 3, 1, 1 }, { 0x0ea5, 1, 1, 1 }, { 0x0ea7, 1, 1, 1 }, { 0x0eaa, 2, 1, 1 }, { 0x0ead, 13, 1, 1 }, { 0x0ebb, 3, 1, 1 }, { 0x0ec0, 5, 1, 1 }, { 0x0ec6, 1, 1, 1 }, { 0x0ec8, 6, 1, 1 }, { 0x0ed0, 10, 1, 1 }, { 0x0edc, 2, 1, 1 }, { 0x0f00, 11, 1, 1 }, { 0x0f0b, 1, 1, 2 }, { 0x0f0c, 46, 1, 1 }, { 0x0f3a, 1, 1, 3 }, { 0x0f3b, 1, 3, 1 }, { 0x0f3c, 1, 1, 3 }, { 0x0f3d, 1, 3, 1 }, { 0x0f3e, 10, 1, 1 }, { 0x0f49, 34, 1, 1 }, { 0x0f71, 27, 1, 1 }, { 0x0f90, 8, 1, 1 }, { 0x0f99, 36, 1, 1 }, { 0x0fbe, 15, 1, 1 }, { 0x0fcf, 1, 1, 1 }, { 0x1000, 34, 1, 1 }, { 0x1023, 5, 1, 1 }, { 0x1029, 2, 1, 1 }, { 0x102c, 7, 1, 1 }, { 0x1036, 4, 1, 1 }, { 0x1040, 26, 1, 1 }, { 0x10a0, 38, 1, 1 }, { 0x10d0, 39, 1, 1 }, { 0x10fb, 1, 1, 1 }, { 0x1160, 67, 1, 1 }, { 0x11a8, 82, 1, 1 }, { 0x1200, 7, 1, 1 }, { 0x1208, 63, 1, 1 }, { 0x1248, 1, 1, 1 }, { 0x124a, 4, 1, 1 }, { 0x1250, 7, 1, 1 }, { 0x1258, 1, 1, 1 }, { 0x125a, 4, 1, 1 }, { 0x1260, 39, 1, 1 }, { 0x1288, 1, 1, 1 }, { 0x128a, 4, 1, 1 }, { 0x1290, 31, 1, 1 }, { 0x12b0, 1, 1, 1 }, { 0x12b2, 4, 1, 1 }, { 0x12b8, 7, 1, 1 }, { 0x12c0, 1, 1, 1 }, { 0x12c2, 4, 1, 1 }, { 0x12c8, 7, 1, 1 }, { 0x12d0, 7, 1, 1 }, { 0x12d8, 23, 1, 1 }, { 0x12f0, 31, 1, 1 }, { 0x1310, 1, 1, 1 }, { 0x1312, 4, 1, 1 }, { 0x1318, 7, 1, 1 }, { 0x1320, 39, 1, 1 }, { 0x1348, 19, 1, 1 }, { 0x1361, 1, 1, 2 }, { 0x1362, 27, 1, 1 }, { 0x13a0, 85, 1, 1 }, { 0x1401, 630, 1, 1 }, { 0x1680, 1, 1, 2 }, { 0x1681, 28, 1, 1 }, { 0x16a0, 81, 1, 1 }, { 0x1780, 84, 1, 1 }, { 0x17d4, 1, 5, 1 }, { 0x17d5, 1, 1, 2 }, { 0x17d6, 5, 5, 1 }, { 0x17db, 2, 1, 1 }, { 0x17e0, 10, 1, 1 }, { 0x1800, 6, 1, 1 }, { 0x1806, 1, 2, 3 }, { 0x1807, 8, 1, 1 }, { 0x1810, 10, 1, 1 }, { 0x1820, 88, 1, 1 }, { 0x1880, 42, 1, 1 }, { 0x1e00, 156, 1, 1 }, { 0x1ea0, 90, 1, 1 }, { 0x1f00, 22, 1, 1 }, { 0x1f18, 6, 1, 1 }, { 0x1f20, 38, 1, 1 }, { 0x1f48, 6, 1, 1 }, { 0x1f50, 8, 1, 1 }, { 0x1f59, 1, 1, 1 }, { 0x1f5b, 1, 1, 1 }, { 0x1f5d, 1, 1, 1 }, { 0x1f5f, 31, 1, 1 }, { 0x1f80, 53, 1, 1 }, { 0x1fb6, 15, 1, 1 }, { 0x1fc6, 14, 1, 1 }, { 0x1fd6, 6, 1, 1 }, { 0x1fdd, 19, 1, 1 }, { 0x1ff2, 3, 1, 1 }, { 0x1ff6, 9, 1, 1 }, { 0x2000, 7, 1, 2 }, { 0x2007, 1, 1, 1 }, { 0x2008, 4, 1, 2 }, { 0x200c, 4, 1, 1 }, { 0x2010, 1, 1, 2 }, { 0x2011, 1, 1, 1 }, { 0x2012, 2, 1, 2 }, { 0x2014, 1, 3, 2 }, { 0x2015, 5, 1, 1 }, { 0x201a, 1, 1, 3 }, { 0x201b, 3, 1, 1 }, { 0x201e, 1, 1, 3 }, { 0x201f, 8, 1, 1 }, { 0x2027, 1, 1, 2 }, { 0x202a, 6, 1, 1 }, { 0x2030, 8, 3, 1 }, { 0x2038, 4, 1, 1 }, { 0x203c, 1, 5, 1 }, { 0x203d, 7, 1, 1 }, { 0x2044, 1, 5, 1 }, { 0x2045, 1, 1, 3 }, { 0x2046, 1, 3, 1 }, { 0x2048, 6, 1, 1 }, { 0x206a, 7, 1, 1 }, { 0x2074, 9, 1, 1 }, { 0x207d, 1, 1, 3 }, { 0x207e, 1, 3, 1 }, { 0x207f, 14, 1, 1 }, { 0x208d, 1, 1, 3 }, { 0x208e, 1, 3, 1 }, { 0x20a0, 7, 1, 1 }, { 0x20a7, 1, 3, 1 }, { 0x20a8, 7, 1, 1 }, { 0x20d0, 20, 1, 1 }, { 0x2100, 3, 1, 1 }, { 0x2103, 1, 3, 1 }, { 0x2104, 5, 1, 1 }, { 0x2109, 1, 3, 1 }, { 0x210a, 28, 1, 1 }, { 0x2126, 1, 3, 1 }, { 0x2127, 20, 1, 1 }, { 0x2153, 49, 1, 1 }, { 0x2190, 100, 1, 1 }, { 0x2200, 242, 1, 1 }, { 0x2300, 41, 1, 1 }, { 0x2329, 1, 1, 3 }, { 0x232a, 1, 3, 1 }, { 0x232b, 81, 1, 1 }, { 0x237d, 30, 1, 1 }, { 0x2400, 39, 1, 1 }, { 0x2440, 11, 1, 1 }, { 0x2460, 139, 1, 1 }, { 0x2500, 150, 1, 1 }, { 0x25a0, 88, 1, 1 }, { 0x2600, 20, 1, 1 }, { 0x2619, 89, 1, 1 }, { 0x2701, 4, 1, 1 }, { 0x2706, 4, 1, 1 }, { 0x270c, 28, 1, 1 }, { 0x2729, 35, 1, 1 }, { 0x274d, 1, 1, 1 }, { 0x274f, 4, 1, 1 }, { 0x2756, 1, 1, 1 }, { 0x2758, 7, 1, 1 }, { 0x2761, 7, 1, 1 }, { 0x2776, 31, 1, 1 }, { 0x2798, 24, 1, 1 }, { 0x27b1, 14, 1, 1 }, { 0x2800, 256, 1, 1 }, { 0x3001, 2, 3, 1 }, { 0x3005, 1, 5, 1 }, { 0x3008, 1, 1, 3 }, { 0x3009, 1, 3, 1 }, { 0x300a, 1, 1, 3 }, { 0x300b, 1, 3, 1 }, { 0x300c, 1, 1, 3 }, { 0x300d, 1, 3, 1 }, { 0x300e, 1, 1, 3 }, { 0x300f, 1, 3, 1 }, { 0x3010, 1, 1, 3 }, { 0x3011, 1, 3, 1 }, { 0x3014, 1, 1, 3 }, { 0x3015, 1, 3, 1 }, { 0x3016, 1, 1, 3 }, { 0x3017, 1, 3, 1 }, { 0x3018, 1, 1, 3 }, { 0x3019, 1, 3, 1 }, { 0x301a, 1, 1, 3 }, { 0x301b, 1, 3, 1 }, { 0x301c, 1, 5, 1 }, { 0x301d, 1, 1, 3 }, { 0x301e, 2, 3, 1 }, { 0x3041, 1, 5, 1 }, { 0x3043, 1, 5, 1 }, { 0x3045, 1, 5, 1 }, { 0x3047, 1, 5, 1 }, { 0x3049, 1, 5, 1 }, { 0x3063, 1, 5, 1 }, { 0x3083, 1, 5, 1 }, { 0x3085, 1, 5, 1 }, { 0x3087, 1, 5, 1 }, { 0x308e, 1, 5, 1 }, { 0x309b, 4, 5, 1 }, { 0x30a1, 1, 5, 1 }, { 0x30a3, 1, 5, 1 }, { 0x30a5, 1, 5, 1 }, { 0x30a7, 1, 5, 1 }, { 0x30a9, 1, 5, 1 }, { 0x30c3, 1, 5, 1 }, { 0x30e3, 1, 5, 1 }, { 0x30e5, 1, 5, 1 }, { 0x30e7, 1, 5, 1 }, { 0x30ee, 1, 5, 1 }, { 0x30f5, 2, 5, 1 }, { 0x30fb, 1, 5, 1 }, { 0x30fd, 1, 5, 1 }, { 0xe000, 1, 1, 1 }, { 0xf8ff, 1, 1, 1 }, { 0xfb00, 7, 1, 1 }, { 0xfb13, 5, 1, 1 }, { 0xfb1d, 26, 1, 1 }, { 0xfb38, 5, 1, 1 }, { 0xfb3e, 1, 1, 1 }, { 0xfb40, 2, 1, 1 }, { 0xfb43, 2, 1, 1 }, { 0xfb46, 108, 1, 1 }, { 0xfbd3, 363, 1, 1 }, { 0xfd3e, 1, 1, 3 }, { 0xfd3f, 1, 3, 1 }, { 0xfd50, 64, 1, 1 }, { 0xfd92, 54, 1, 1 }, { 0xfdf0, 12, 1, 1 }, { 0xfe20, 4, 1, 1 }, { 0xfe35, 1, 1, 3 }, { 0xfe36, 1, 3, 1 }, { 0xfe37, 1, 1, 3 }, { 0xfe38, 1, 3, 1 }, { 0xfe39, 1, 1, 3 }, { 0xfe3a, 1, 3, 1 }, { 0xfe3b, 1, 1, 3 }, { 0xfe3c, 1, 3, 1 }, { 0xfe3d, 1, 1, 3 }, { 0xfe3e, 1, 3, 1 }, { 0xfe3f, 1, 1, 3 }, { 0xfe40, 1, 3, 1 }, { 0xfe41, 1, 1, 3 }, { 0xfe42, 1, 3, 1 }, { 0xfe43, 1, 1, 3 }, { 0xfe44, 1, 3, 1 }, { 0xfe50, 1, 3, 1 }, { 0xfe52, 1, 3, 1 }, { 0xfe54, 2, 5, 1 }, { 0xfe56, 2, 1, 1 }, { 0xfe59, 1, 1, 3 }, { 0xfe5a, 1, 3, 1 }, { 0xfe5b, 1, 1, 3 }, { 0xfe5c, 1, 3, 1 }, { 0xfe5d, 1, 1, 3 }, { 0xfe5e, 1, 3, 1 }, { 0xfe69, 1, 1, 1 }, { 0xfe6a, 1, 3, 1 }, { 0xfe6b, 1, 1, 1 }, { 0xfe70, 3, 1, 1 }, { 0xfe74, 1, 1, 1 }, { 0xfe76, 135, 1, 1 }, { 0xfeff, 1, 1, 1 }, { 0xff01, 1, 1, 1 }, { 0xff04, 1, 1, 1 }, { 0xff05, 1, 3, 1 }, { 0xff08, 1, 1, 3 }, { 0xff09, 1, 3, 1 }, { 0xff0c, 1, 3, 1 }, { 0xff0e, 1, 3, 1 }, { 0xff1a, 2, 5, 1 }, { 0xff1f, 1, 1, 1 }, { 0xff3b, 1, 1, 3 }, { 0xff3d, 1, 3, 1 }, { 0xff5b, 1, 1, 3 }, { 0xff5d, 1, 3, 1 }, { 0xff61, 1, 3, 1 }, { 0xff62, 1, 1, 3 }, { 0xff63, 2, 3, 1 }, { 0xff65, 1, 5, 1 }, { 0xff66, 1, 1, 1 }, { 0xff67, 10, 5, 1 }, { 0xff71, 45, 1, 1 }, { 0xff9e, 2, 5, 1 }, { 0xffa0, 31, 1, 1 }, { 0xffc2, 6, 1, 1 }, { 0xffca, 6, 1, 1 }, { 0xffd2, 6, 1, 1 }, { 0xffda, 3, 1, 1 }, { 0xffe0, 1, 3, 1 }, { 0xffe1, 1, 1, 1 }, { 0xffe5, 2, 1, 1 }, { 0xffe8, 7, 1, 1 }, { 0xfff9, 3, 1, 1 }, { 0xfffc, 1, 2, 1 }, #endif openjade-1.3.2/style/common_inst.m40100664000076400007640000000572106746150202015353 0ustar ianian// Copyright (c) 1996 James Clark // See the file copying.txt for copying permission. // Copyright (c) 1996 James Clark // See the file COPYING for copying permission. #include "stylelib.h" #ifdef SP_MANUAL_INST #define SP_DEFINE_TEMPLATES #include "StringOf.h" #include "Vector.h" #include "XcharMap.h" #include "CharMap.h" #include "Ptr.h" #include "PointerTable.h" #include "OwnerTable.h" #include "HashTable.h" #include "HashTableItemBase.h" #include "SubstTable.h" #include "ISet.h" #include "Owner.h" #undef SP_DEFINE_TEMPLATES #include "types.h" #include "Entity.h" #include "Syntax.h" #include "ExtendEntityManager.h" #include "Event.h" #include "CmdLineApp.h" #ifdef SP_NAMESPACE namespace SP_NAMESPACE { #endif __instantiate(Vector) __instantiate(Ptr) __instantiate(Ptr) __instantiate(Ptr) __instantiate(Vector) __instantiate(Vector) __instantiate(String) __instantiate(Vector >) __instantiate(Ptr >) __instantiate(String) __instantiate(`OwnerTable') __instantiate(`OwnerTableIter') __instantiate(XcharMap) __instantiate(SharedXcharMap) __instantiate(Ptr >) __instantiate(ConstPtr >) __instantiate(`PointerTableIter') __instantiate(`PointerTable') __instantiate(HashTableItemBase >) __instantiate(`OwnerTable >,String,Hash,HashTableKeyFunction > >') __instantiate(`CopyOwnerTable >,String,Hash,HashTableKeyFunction > >') __instantiate(`OwnerTableIter >, String, Hash, HashTableKeyFunction > >') __instantiate(`PointerTable >*,String,Hash,HashTableKeyFunction > >') __instantiate(`PointerTableIter > *, String, Hash, HashTableKeyFunction > >') __instantiate(Vector >*>) __instantiate(Ptr) __instantiate(`HashTable') __instantiate(ConstPtr) __instantiate(Ptr) __instantiate(SubstTable) __instantiate(Ptr) __instantiate(ConstPtr) __instantiate(ISet) __instantiate(Vector) __instantiate(`HashTableItem') __instantiate(`HashTable') __instantiate(Vector) __instantiate(Owner) __instantiate(Ptr) __instantiate(Ptr) __instantiate(Vector) __instantiate(Ptr) __instantiate(ConstPtr) __instantiate(CharMap) __instantiate(CharMapPage) #ifdef SP_NAMESPACE } #endif #endif /* SP_MANUAL_INST */ openjade-1.3.2/style/dsssl_ns.h0100664000076400007640000000155406713071636014574 0ustar ianian// Copyright (c) 1996 James Clark // See the file copying.txt for copying permission. #ifndef dsssl_ns_INCLUDED #define dsssl_ns_INCLUDED 1 #ifdef DSSSL_NAMESPACE #ifdef SP_NAMESPACE namespace SP_NAMESPACE { } #endif #ifdef GROVE_NAMESPACE namespace GROVE_NAMESPACE { } #endif namespace DSSSL_NAMESPACE { #ifdef SP_NAMESPACE using namespace SP_NAMESPACE; #endif #ifdef GROVE_NAMESPACE using namespace GROVE_NAMESPACE; #endif #if _MSC_VER >= 1100 /* This works around a bug with using directives in Visual C++ 6.0. I don't know if it also works in 5.0 */ const int work_around_bug_in_visual_c_6 = 0; } namespace DSSSL_NAMESPACE { #ifdef SP_NAMESPACE using namespace SP_NAMESPACE; #endif #ifdef GROVE_NAMESPACE using namespace GROVE_NAMESPACE; #endif #endif /* _MSC_VER >= 1100 */ } #endif /* DSSSL_NAMESPACE */ #endif /* not dsssl_ns_INCLUDED */ openjade-1.3.2/style/jade_version.h0100664000076400007640000000004307443642102015375 0ustar ianian#define JADE_VERSION SP_T("1.3.2") openjade-1.3.2/style/primitive.cxx0100664000076400007640000046461107443642102015327 0ustar ianian// Copyright (c) 1996 James Clark // See the file copying.txt for copying permission. #include "stylelib.h" #include "Interpreter.h" #include "InterpreterMessages.h" #include "EvalContext.h" #include "SosofoObj.h" #include "Style.h" #include "Insn.h" #include "macros.h" #include "ELObjMessageArg.h" #include "LocNode.h" #include "VM.h" #include "Pattern.h" #include "ELObjPropVal.h" #include #include #include #include #include "LangObj.h" #include #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif class DescendantsNodeListObj : public NodeListObj { public: void *operator new(size_t, Collector &c) { return c.allocateObject(1); } DescendantsNodeListObj(const NodePtr &, unsigned = 0); NodePtr nodeListFirst(EvalContext &, Interpreter &); NodeListObj *nodeListRest(EvalContext &, Interpreter &); NodeListObj *nodeListChunkRest(EvalContext &, Interpreter &, bool &); private: static void advance(NodePtr &, unsigned &); static void chunkAdvance(NodePtr &, unsigned &); // nodes in node list are strictly after this node NodePtr start_; unsigned depth_; }; class SiblingNodeListObj : public NodeListObj { public: void *operator new(size_t, Collector &c) { return c.allocateObject(1); } SiblingNodeListObj(const NodePtr &first, const NodePtr &end); NodePtr nodeListFirst(EvalContext &, Interpreter &); NodeListObj *nodeListRest(EvalContext &, Interpreter &); NodeListObj *nodeListChunkRest(EvalContext &, Interpreter &, bool &); private: NodePtr first_; NodePtr end_; }; class SelectByClassNodeListObj : public NodeListObj { public: SelectByClassNodeListObj(NodeListObj *nl, ComponentName::Id); NodePtr nodeListFirst(EvalContext &, Interpreter &); NodeListObj *nodeListRest(EvalContext &, Interpreter &); NodeListObj *nodeListChunkRest(EvalContext &, Interpreter &, bool &); void traceSubObjects(Collector &) const; private: NodeListObj *nodeList_; ComponentName::Id cls_; }; class MapNodeListObj : public NodeListObj { public: class Context : public Resource { public: Context(const EvalContext &, const Location &); void set(EvalContext &) const; void traceSubObjects(Collector &) const; Location loc; private: NodePtr currentNode_; const ProcessingMode *processingMode_; StyleObj *overridingStyle_; bool haveStyleStack_; }; void *operator new(size_t, Collector &c) { return c.allocateObject(1); } MapNodeListObj(FunctionObj *func, NodeListObj *nl, const ConstPtr &, NodeListObj *mapped = 0); NodePtr nodeListFirst(EvalContext &, Interpreter &); NodeListObj *nodeListRest(EvalContext &, Interpreter &); void traceSubObjects(Collector &) const; bool suppressError(); private: void mapNext(EvalContext &, Interpreter &); FunctionObj *func_; NodeListObj *nl_; NodeListObj *mapped_; ConstPtr context_; }; class SelectElementsNodeListObj : public NodeListObj { public: struct PatternSet : public Resource, public NCVector { }; void *operator new(size_t, Collector &c) { return c.allocateObject(1); } SelectElementsNodeListObj(NodeListObj *, NCVector &); SelectElementsNodeListObj(NodeListObj *, const ConstPtr &); void traceSubObjects(Collector &) const; NodePtr nodeListFirst(EvalContext &, Interpreter &); NodeListObj *nodeListRest(EvalContext &, Interpreter &); private: NodeListObj *nodeList_; ConstPtr patterns_; }; #define PRIMITIVE(name, string, nRequired, nOptional, rest) \ class name ## PrimitiveObj : public PrimitiveObj { \ public: \ static const Signature signature_; \ name ## PrimitiveObj() : PrimitiveObj(&signature_) { } \ ELObj *primitiveCall(int, ELObj **, EvalContext &, Interpreter &, const Location &); \ }; \ const Signature name ## PrimitiveObj::signature_ \ = { nRequired, nOptional, rest }; #define XPRIMITIVE PRIMITIVE #define XXPRIMITIVE PRIMITIVE #define PRIMITIVE2 PRIMITIVE #include "primitive.h" #undef PRIMITIVE #undef XPRIMITIVE #undef XXPRIMITIVE #undef PRIMITIVE2 #define DEFPRIMITIVE(name, argc, argv, context, interp, loc) \ ELObj *name ## PrimitiveObj \ ::primitiveCall(int argc, ELObj **argv, EvalContext &context, Interpreter &interp, \ const Location &loc) DEFPRIMITIVE(Cons, argc, argv, context, interp, loc) { return new (interp) PairObj(argv[0], argv[1]); } DEFPRIMITIVE(List, argc, argv, context, interp, loc) { if (argc == 0) return interp.makeNil(); PairObj *head = new (interp) PairObj(argv[0], 0); ELObjDynamicRoot protect(interp, head); PairObj *tail = head; for (int i = 1; i < argc; i++) { PairObj *tem = new (interp) PairObj(argv[i], 0); tail->setCdr(tem); tail = tem; } tail->setCdr(interp.makeNil()); return head; } DEFPRIMITIVE(IsNull, argc, argv, context, interp, loc) { if (argv[0]->isNil()) return interp.makeTrue(); else return interp.makeFalse(); } DEFPRIMITIVE(IsList, argc, argv, context, interp, loc) { ELObj *obj = argv[0]; for (;;) { PairObj *pair = obj->asPair(); if (pair) obj = pair->cdr(); else if (obj->isNil()) return interp.makeTrue(); else break; } return interp.makeFalse(); } DEFPRIMITIVE(IsEqual, argc, argv, context, interp, loc) { if (ELObj::equal(*argv[0], *argv[1])) return interp.makeTrue(); else return interp.makeFalse(); } DEFPRIMITIVE(IsEqv, argc, argv, context, interp, loc) { if (ELObj::eqv(*argv[0], *argv[1])) return interp.makeTrue(); else return interp.makeFalse(); } DEFPRIMITIVE(Car, argc, argv, context, interp, loc) { PairObj *pair = argv[0]->asPair(); if (!pair) return argError(interp, loc, InterpreterMessages::notAPair, 0, argv[0]); else return pair->car(); } DEFPRIMITIVE(Cdr, argc, argv, context, interp, loc) { PairObj *pair = argv[0]->asPair(); if (!pair) return argError(interp, loc, InterpreterMessages::notAPair, 0, argv[0]); else return pair->cdr(); } DEFPRIMITIVE(Append, argc, argv, context, interp, loc) { if (argc == 0) return interp.makeNil(); PairObj *tail = interp.makePair(0, 0); PairObj *head = tail; ELObjDynamicRoot protect(interp, head); for (int i = 0; i < argc - 1; i++) { for (ELObj *p = argv[i]; !p->isNil();) { PairObj *tem = p->asPair(); if (!tem) return argError(interp, loc, InterpreterMessages::notAList, i, p); PairObj *newTail = new (interp) PairObj(tem->car(), 0); tail->setCdr(newTail); tail = newTail; p = tem->cdr(); } } tail->setCdr(argv[argc - 1]); return head->cdr(); } DEFPRIMITIVE(Reverse, argc, argv, context, interp, loc) { ELObjDynamicRoot protect(interp, interp.makeNil()); ELObj *p = argv[0]; while (!p->isNil()) { PairObj *tem = p->asPair(); if (!tem) return argError(interp, loc, InterpreterMessages::notAList, 0, argv[0]); protect = new (interp) PairObj(tem->car(), protect); p = tem->cdr(); } return protect; } DEFPRIMITIVE(ListTail, argc, argv, context, interp, loc) { long k; if (!argv[1]->exactIntegerValue(k)) return argError(interp, loc, InterpreterMessages::notAnExactInteger, 1, argv[1]); if (k < 0) { interp.setNextLocation(loc); interp.message(InterpreterMessages::outOfRange); return interp.makeError(); } ELObj *p = argv[0]; for (; k > 0; k--) { PairObj *tem = p->asPair(); if (!tem) { if (p->isNil()) { interp.setNextLocation(loc); interp.message(InterpreterMessages::outOfRange); return interp.makeError(); } else return argError(interp, loc, InterpreterMessages::notAList, 0, argv[0]); } p = tem->cdr(); } return p; } DEFPRIMITIVE(ListRef, argc, argv, context, interp, loc) { long k; if (!argv[1]->exactIntegerValue(k)) return argError(interp, loc, InterpreterMessages::notAnExactInteger, 1, argv[1]); if (k < 0) { interp.setNextLocation(loc); interp.message(InterpreterMessages::outOfRange); return interp.makeError(); } ELObj *p = argv[0]; for (;;) { PairObj *tem = p->asPair(); if (!tem) break; if (k == 0) return tem->car(); --k; p = tem->cdr(); } if (p->isNil()) { interp.setNextLocation(loc); interp.message(InterpreterMessages::outOfRange); return interp.makeError(); } else return argError(interp, loc, InterpreterMessages::notAList, 0, argv[0]); } DEFPRIMITIVE(Member, argc, argv, context, interp, loc) { ELObj *p = argv[1]; while (!p->isNil()) { PairObj *tem = p->asPair(); if (!tem) return argError(interp, loc, InterpreterMessages::notAList, 1, argv[1]); if (ELObj::equal(*argv[0], *tem->car())) return p; p = tem->cdr(); } return interp.makeFalse(); } DEFPRIMITIVE(Memv, argc, argv, context, interp, loc) { ELObj *p = argv[1]; while (!p->isNil()) { PairObj *tem = p->asPair(); if (!tem) return argError(interp, loc, InterpreterMessages::notAList, 1, argv[1]); if (ELObj::eqv(*argv[0], *tem->car())) return p; p = tem->cdr(); } return interp.makeFalse(); } DEFPRIMITIVE(Length, argc, argv, context, interp, loc) { ELObj *obj = argv[0]; long n = 0; for (;;) { PairObj *pair = obj->asPair(); if (pair) { n++; obj = pair->cdr(); } else if (obj->isNil()) break; else if (interp.isError(obj)) return obj; else return argError(interp, loc, InterpreterMessages::notAList, 0, obj); } return interp.makeInteger(n); } DEFPRIMITIVE(Not, argc, argv, context, interp, loc) { if (argv[0]->isTrue()) return interp.makeFalse(); else return interp.makeTrue(); } DEFPRIMITIVE(IsSymbol, argc, argv, context, interp, loc) { if (argv[0]->asSymbol()) return interp.makeTrue(); else return interp.makeFalse(); } DEFPRIMITIVE(IsKeyword, argc, argv, context, interp, loc) { if (argv[0]->asKeyword()) return interp.makeTrue(); else return interp.makeFalse(); } DEFPRIMITIVE(IsInteger, argc, argv, context, interp, loc) { long n; if (argv[0]->exactIntegerValue(n)) return interp.makeTrue(); double x; if (argv[0]->realValue(x) && modf(x, &x) == 0.0) return interp.makeTrue(); else return interp.makeFalse(); } DEFPRIMITIVE(IsReal, argc, argv, context, interp, loc) { double x; if (argv[0]->realValue(x)) return interp.makeTrue(); else return interp.makeFalse(); } DEFPRIMITIVE(IsNumber, argc, argv, context, interp, loc) { double x; if (argv[0]->realValue(x)) return interp.makeTrue(); else return interp.makeFalse(); } DEFPRIMITIVE(IsQuantity, argc, argv, context, interp, loc) { long n; double d; int dim; if (argv[0]->quantityValue(n, d, dim) != ELObj::noQuantity) return interp.makeTrue(); else return interp.makeFalse(); } DEFPRIMITIVE(IsPair, argc, argv, context, interp, loc) { if (argv[0]->asPair()) return interp.makeTrue(); else return interp.makeFalse(); } DEFPRIMITIVE(IsProcedure, argc, argv, context, interp, loc) { if (argv[0]->asFunction()) return interp.makeTrue(); else return interp.makeFalse(); } DEFPRIMITIVE(IsBoolean, argc, argv, context, interp, loc) { if (argv[0] == interp.makeTrue()) return argv[0]; else if (argv[0] == interp.makeFalse()) return interp.makeTrue(); else return interp.makeFalse(); } DEFPRIMITIVE(IsChar, argc, argv, context, interp, loc) { Char c; if (argv[0]->charValue(c)) return interp.makeTrue(); else return interp.makeFalse(); } DEFPRIMITIVE(IsCharEqual, argc, argv, context, interp, loc) { Char c1, c2; if (!argv[0]->charValue(c1)) return argError(interp, loc, InterpreterMessages::notAChar, 0, argv[0]); if (!argv[1]->charValue(c2)) return argError(interp, loc, InterpreterMessages::notAChar, 1, argv[1]); if (c1 == c2) return interp.makeTrue(); else return interp.makeFalse(); } DEFPRIMITIVE(String, argc, argv, context, interp, loc) { StringObj *obj = new (interp) StringObj; for (int i = 0; i < argc; i++) { Char c; if (!argv[i]->charValue(c)) return argError(interp, loc, InterpreterMessages::notAChar, i, argv[i]); *obj += c; } return obj; } DEFPRIMITIVE(SymbolToString, argc, argv, context, interp, loc) { SymbolObj *obj = argv[0]->asSymbol(); if (!obj) return argError(interp, loc, InterpreterMessages::notASymbol, 0, argv[0]); return obj->name(); } DEFPRIMITIVE(StringToSymbol, argc, argv, context, interp, loc) { const Char *s; size_t n; if (!argv[0]->stringData(s, n)) return argError(interp, loc, InterpreterMessages::notAString, 0, argv[0]); return interp.makeSymbol(StringC(s, n)); } DEFPRIMITIVE(IsString, argc, argv, context, interp, loc) { const Char *s; size_t n; if (argv[0]->stringData(s, n)) return interp.makeTrue(); else return interp.makeFalse(); } DEFPRIMITIVE(StringLength, argc, argv, context, interp, loc) { const Char *s; size_t n; if (!argv[0]->stringData(s, n)) return argError(interp, loc, InterpreterMessages::notAString, 0, argv[0]); return interp.makeInteger(n); } DEFPRIMITIVE(IsStringEqual, argc, argv, context, interp, loc) { const Char *s1, *s2; size_t n1, n2; if (!argv[0]->stringData(s1, n1)) return argError(interp, loc, InterpreterMessages::notAString, 0, argv[0]); if (!argv[1]->stringData(s2, n2)) return argError(interp, loc, InterpreterMessages::notAString, 1, argv[1]); if (n1 == n2 && (n1 == 0 || memcmp(s1, s2, n1*sizeof(Char)) == 0)) return interp.makeTrue(); else return interp.makeFalse(); } DEFPRIMITIVE(StringAppend, argc, argv, context, interp, loc) { StringObj *result = new (interp) StringObj; for (int i = 0; i < argc; i++) { const Char *s; size_t n; if (!argv[i]->stringData(s, n)) return argError(interp, loc, InterpreterMessages::notAString, i, argv[i]); result->append(s, n); } return result; } DEFPRIMITIVE(StringRef, argc, argv, context, interp, loc) { const Char *s; size_t n; if (!argv[0]->stringData(s, n)) return argError(interp, loc, InterpreterMessages::notAString, 0, argv[0]); long k; if (!argv[1]->exactIntegerValue(k)) return argError(interp, loc, InterpreterMessages::notAnExactInteger, 1, argv[1]); if (k < 0 || (unsigned long)k >= n) { interp.setNextLocation(loc); interp.message(InterpreterMessages::outOfRange); return interp.makeError(); } return interp.makeChar(s[size_t(k)]); } DEFPRIMITIVE(Substring, argc, argv, context, interp, loc) { const Char *s; size_t n; if (!argv[0]->stringData(s, n)) return argError(interp, loc, InterpreterMessages::notAString, 0, argv[0]); long start; if (!argv[1]->exactIntegerValue(start)) return argError(interp, loc, InterpreterMessages::notAnExactInteger, 1, argv[1]); long end; if (!argv[2]->exactIntegerValue(end)) return argError(interp, loc, InterpreterMessages::notAnExactInteger, 2, argv[2]); if (start < 0 || (unsigned long)end > n || start > end) { interp.setNextLocation(loc); interp.message(InterpreterMessages::outOfRange); return interp.makeError(); } return new (interp) StringObj(s + size_t(start), size_t(end - start)); } DEFPRIMITIVE(Equal, argc, argv, context, interp, loc) { if (argc == 0) return interp.makeTrue(); long lResult; double dResult; int dim; int i = 1; switch (argv[0]->quantityValue(lResult, dResult, dim)) { case ELObj::noQuantity: return argError(interp, loc, InterpreterMessages::notAQuantity, 0, argv[0]); case ELObj::longQuantity: break; case ELObj::doubleQuantity: goto useDouble; break; default: CANNOT_HAPPEN(); } long lResult2; double dResult2; int dim2; for (; i < argc; i++) { switch (argv[i]->quantityValue(lResult2, dResult2, dim2)) { case ELObj::noQuantity: return argError(interp, loc, InterpreterMessages::notAQuantity, i, argv[i]); case ELObj::longQuantity: if (lResult2 != lResult || dim2 != dim) return interp.makeFalse(); break; case ELObj::doubleQuantity: dResult = lResult; if (dResult2 != dResult || dim2 != dim) return interp.makeFalse(); i++; goto useDouble; default: CANNOT_HAPPEN(); } } return interp.makeTrue(); useDouble: for (; i < argc; i++) { switch (argv[i]->quantityValue(lResult2, dResult2, dim2)) { case ELObj::noQuantity: return argError(interp, loc, InterpreterMessages::notAQuantity, i, argv[i]); case ELObj::longQuantity: if (lResult2 != dResult || dim2 != dim) return interp.makeFalse(); break; case ELObj::doubleQuantity: if (dResult2 != dResult || dim2 != dim) return interp.makeFalse(); break; } } return interp.makeTrue(); } DEFPRIMITIVE(Plus, argc, argv, context, interp, loc) { if (argc == 0) return interp.makeInteger(0); long lResult; double dResult; bool usingD; bool spec = 0; int dim; switch (argv[0]->quantityValue(lResult, dResult, dim)) { case ELObj::noQuantity: dim = 1; spec = 1; break; case ELObj::longQuantity: usingD = 0; break; case ELObj::doubleQuantity: usingD = 1; break; default: CANNOT_HAPPEN(); } for (int i = 1; !spec && i < argc; i++) { long lResult2; double dResult2; int dim2; switch (argv[i]->quantityValue(lResult2, dResult2, dim2)) { case ELObj::noQuantity: // FIXME shouldn't quantityValue set dim to 1 for length-specs ? dim2 = 1; spec = 1; break; case ELObj::longQuantity: if (!usingD) { if (lResult2 < 0) { if (lResult >= LONG_MIN - lResult2) { lResult += lResult2; break; } } else { if (lResult <= LONG_MAX - lResult2) { lResult += lResult2; break; } } usingD = 1; dResult = double(lResult); } dResult += double(lResult2); break; case ELObj::doubleQuantity: if (!usingD) { dResult = lResult; usingD = 1; } dResult += dResult2; break; default: CANNOT_HAPPEN(); } if (dim2 != dim) { interp.setNextLocation(loc); interp.message(InterpreterMessages::incompatibleDimensions); return interp.makeError(); } } if (spec) { LengthSpec ls; for (int i = 0; i < argc; i++) { const LengthSpec *lsp = argv[i]->lengthSpec(); if (lsp) ls += *lsp; else { switch (argv[i]->quantityValue(lResult, dResult, dim)) { case ELObj::noQuantity: return argError(interp, loc, InterpreterMessages::notAQuantityOrLengthSpec, i, argv[i]); case ELObj::longQuantity: dResult = lResult; // fall through case ELObj::doubleQuantity: if (dim != 1) { interp.setNextLocation(loc); interp.message(InterpreterMessages::incompatibleDimensions); return interp.makeError(); } ls += dResult; break; } } } return new (interp) LengthSpecObj(ls); } if (!usingD) { if (dim == 0) return interp.makeInteger(lResult); else if (dim == 1) return new (interp) LengthObj(lResult); else dResult = lResult; } if (dim == 0) return new (interp) RealObj(dResult); else return new (interp) QuantityObj(dResult, dim); } DEFPRIMITIVE(Minus, argc, argv, context, interp, loc) { long lResult; double dResult; bool usingD; bool spec = 0; int dim; switch (argv[0]->quantityValue(lResult, dResult, dim)) { case ELObj::noQuantity: spec = 1; break; case ELObj::longQuantity: usingD = 0; break; case ELObj::doubleQuantity: usingD = 1; break; default: CANNOT_HAPPEN(); } if (argc == 1) { if (usingD) dResult = -dResult; else lResult = -lResult; } else { for (int i = 1; !spec && i < argc; i++) { long lResult2; double dResult2; int dim2; switch (argv[i]->quantityValue(lResult2, dResult2, dim2)) { case ELObj::noQuantity: dim2 = dim; spec = 1; break; case ELObj::longQuantity: if (!usingD) { if (lResult2 > 0) { if (lResult >= LONG_MIN + lResult2) { lResult -= lResult2; break; } } else { if (lResult <= LONG_MAX + lResult2) { lResult -= lResult2; break; } } usingD = 1; dResult = double(lResult); } dResult -= double(lResult2); break; case ELObj::doubleQuantity: if (!usingD) { dResult = lResult; usingD = 1; } dResult -= dResult2; break; default: CANNOT_HAPPEN(); } if (dim2 != dim) { interp.setNextLocation(loc); interp.message(InterpreterMessages::incompatibleDimensions); return interp.makeError(); } } } if (spec) { LengthSpec ls; for (int i = 0; i < argc; i++) { const LengthSpec *lsp = argv[i]->lengthSpec(); if (lsp) { if (i > 0 || argc == 1) ls -= *lsp; else ls += *lsp; } else { switch (argv[i]->quantityValue(lResult, dResult, dim)) { case ELObj::noQuantity: return argError(interp, loc, InterpreterMessages::notAQuantityOrLengthSpec, i, argv[i]); case ELObj::longQuantity: dResult = lResult; // fall through case ELObj::doubleQuantity: if (dim != 1) { interp.setNextLocation(loc); interp.message(InterpreterMessages::incompatibleDimensions); return interp.makeError(); } if (i > 0 || argc == 1) ls -= dResult; else ls += dResult; break; } } } return new (interp) LengthSpecObj(ls); } if (!usingD) { if (dim == 0) return interp.makeInteger(lResult); else if (dim == 1) return new (interp) LengthObj(lResult); else dResult = lResult; } if (dim == 0) return new (interp) RealObj(dResult); else return new (interp) QuantityObj(dResult, dim); } DEFPRIMITIVE(Multiply, argc, argv, context, interp, loc) { if (argc == 0) return interp.makeInteger(1); long lResult; double dResult; int dim; int i = 1; switch (argv[0]->quantityValue(lResult, dResult, dim)) { case ELObj::noQuantity: { const LengthSpec *ls = argv[0]->lengthSpec(); if (ls) { LengthSpec result(*ls); double d; for (; i < argc; i++) { if (!argv[i]->realValue(d)) return argError(interp, loc, InterpreterMessages::notANumber, 1, argv[1]); result *= d; } return new (interp) LengthSpecObj(result); } } return argError(interp, loc, InterpreterMessages::notAQuantity, 0, argv[0]); case ELObj::longQuantity: break; case ELObj::doubleQuantity: goto useDouble; default: CANNOT_HAPPEN(); } long lResult2; double dResult2; int dim2; for (; i < argc; i++) { switch (argv[i]->quantityValue(lResult2, dResult2, dim2)) { case ELObj::noQuantity: return argError(interp, loc, InterpreterMessages::notAQuantity, i, argv[i]); case ELObj::longQuantity: dim += dim2; if (dim > 1 || (lResult2 != 0 && (lResult2 < 0 ? (lResult > 0 ? lResult > -(unsigned)LONG_MIN / -(unsigned)lResult2 : -(unsigned)lResult > LONG_MAX / -(unsigned)lResult2) : (lResult > 0 ? lResult > LONG_MAX / lResult2 : -(unsigned)lResult > -(unsigned)LONG_MIN / lResult2)))) { dResult = double(lResult) * lResult2; i++; goto useDouble; } lResult *= lResult2; break; case ELObj::doubleQuantity: dim += dim2; dResult = lResult * dResult2; i++; goto useDouble; default: CANNOT_HAPPEN(); } } if (dim == 0) return interp.makeInteger(lResult); else return new (interp) LengthObj(lResult); useDouble: for (; i < argc; i++) { switch (argv[i]->quantityValue(lResult2, dResult2, dim2)) { case ELObj::noQuantity: return argError(interp, loc, InterpreterMessages::notAQuantity, i, argv[i]); case ELObj::longQuantity: dResult *= lResult2; break; case ELObj::doubleQuantity: dResult *= dResult2; break; } dim += dim2; } if (dim == 0) return new (interp) RealObj(dResult); else return new (interp) QuantityObj(dResult, dim); } DEFPRIMITIVE(Divide, argc, argv, context, interp, loc) { long lResult; double dResult; int dim; if (argc == 1) { switch (argv[0]->quantityValue(lResult, dResult, dim)) { case ELObj::noQuantity: return argError(interp, loc, InterpreterMessages::notAQuantity, 0, argv[0]); case ELObj::longQuantity: if (lResult == 0) goto divide0; dResult = 1.0/lResult; break; case ELObj::doubleQuantity: if (dResult == 0.0) goto divide0; dResult = 1.0/dResult; break; default: CANNOT_HAPPEN(); } dim = -dim; } else { int i = 1; switch (argv[0]->quantityValue(lResult, dResult, dim)) { case ELObj::noQuantity: { const LengthSpec *ls = argv[0]->lengthSpec(); if (ls) { LengthSpec result(*ls); double d; for (; i < argc; i++) { if (!argv[i]->realValue(d)) return argError(interp, loc, InterpreterMessages::notANumber, 1, argv[1]); if (d == 0.0) goto divide0; result /= d; } return new (interp) LengthSpecObj(result); } } return argError(interp, loc, InterpreterMessages::notAQuantity, 0, argv[0]); case ELObj::longQuantity: break; case ELObj::doubleQuantity: goto useDouble; default: CANNOT_HAPPEN(); } long lResult2; double dResult2; int dim2; for (; i < argc; i++) { switch (argv[i]->quantityValue(lResult2, dResult2, dim2)) { case ELObj::noQuantity: return argError(interp, loc, InterpreterMessages::notAQuantity, 0, argv[0]); case ELObj::longQuantity: if (lResult2 == 0) goto divide0; dim -= dim2; // If dim and dim2 are both 1, must goto useDouble: // since lengths are inexact, result must be inexact. if (dim2 == 0 && lResult % lResult2 == 0) { lResult /= lResult2; break; } dResult = double(lResult)/lResult2; i++; goto useDouble; case ELObj::doubleQuantity: dim -= dim2; dResult = lResult; if (dResult2 == 0.0) goto divide0; dResult /= dResult2; i++; goto useDouble; default: CANNOT_HAPPEN(); } } if (dim == 0) return interp.makeInteger(lResult); else return new (interp) LengthObj(lResult); useDouble: for (; i < argc; i++) { switch (argv[i]->quantityValue(lResult2, dResult2, dim2)) { case ELObj::noQuantity: return argError(interp, loc, InterpreterMessages::notAQuantity, i, argv[i]); case ELObj::longQuantity: if (lResult2 == 0) goto divide0; dResult /= lResult2; break; case ELObj::doubleQuantity: dResult /= dResult2; if (dResult2 == 0.0) goto divide0; break; } dim -= dim2; } } if (dim == 0) return new (interp) RealObj(dResult); else return new (interp) QuantityObj(dResult, dim); divide0: interp.setNextLocation(loc); interp.message(InterpreterMessages::divideBy0); return interp.makeError(); } DEFPRIMITIVE(Quotient, argc, argv, context, interp, loc) { long n1; long n2; if (argv[0]->exactIntegerValue(n1) && argv[1]->exactIntegerValue(n2)) { if (n2 == 0) { interp.setNextLocation(loc); interp.message(InterpreterMessages::divideBy0); return interp.makeError(); } // This isn't strictly portable. return interp.makeInteger(n1 / n2); } double d1; if (!argv[0]->realValue(d1) || modf(d1, &d1) != 0.0) return argError(interp, loc, InterpreterMessages::notAnExactInteger, 0, argv[0]); double d2; if (!argv[1]->realValue(d2) || modf(d2, &d2) != 0.0) return argError(interp, loc, InterpreterMessages::notAnExactInteger, 1, argv[1]); if (d2 == 0.0) { interp.setNextLocation(loc); interp.message(InterpreterMessages::divideBy0); return interp.makeError(); } return new (interp) RealObj((d1 - fmod(d1, d2))/d2); } DEFPRIMITIVE(Remainder, argc, argv, context, interp, loc) { long n1; long n2; if (argv[0]->exactIntegerValue(n1) && argv[1]->exactIntegerValue(n2)) { if (n2 == 0) { interp.setNextLocation(loc); interp.message(InterpreterMessages::divideBy0); return interp.makeError(); } // This isn't strictly portable. return interp.makeInteger(n1 % n2); } double d1; if (!argv[0]->realValue(d1) || modf(d1, &d1) != 0.0) return argError(interp, loc, InterpreterMessages::notAnExactInteger, 0, argv[0]); double d2; if (!argv[1]->realValue(d2) || modf(d2, &d2) != 0.0) return argError(interp, loc, InterpreterMessages::notAnExactInteger, 1, argv[1]); if (d2 == 0.0) { interp.setNextLocation(loc); interp.message(InterpreterMessages::divideBy0); return interp.makeError(); } return new (interp) RealObj(fmod(d1, d2)); } DEFPRIMITIVE(Modulo, argc, argv, context, interp, loc) { long n1; long n2; if (argv[0]->exactIntegerValue(n1) && argv[1]->exactIntegerValue(n2)) { if (n2 == 0) { interp.setNextLocation(loc); interp.message(InterpreterMessages::divideBy0); return interp.makeError(); } long r = n1 % n2; if (n2 > 0 ? r < 0 : r > 0) r += n2; return interp.makeInteger(r); } double d1; if (!argv[0]->realValue(d1) || modf(d1, &d1) != 0.0) return argError(interp, loc, InterpreterMessages::notAnExactInteger, 0, argv[0]); double d2; if (!argv[1]->realValue(d2) || modf(d2, &d2) != 0.0) return argError(interp, loc, InterpreterMessages::notAnExactInteger, 1, argv[1]); if (d2 == 0.0) { interp.setNextLocation(loc); interp.message(InterpreterMessages::divideBy0); return interp.makeError(); } double r = fmod(d1, d2); if (d2 > 0 ? r < 0 : r > 0) r += d2; return new (interp) RealObj(r); } #define DEFCOMPARE(NAME, OP) \ DEFPRIMITIVE(NAME, argc, argv, context, interp, loc) \ { \ if (argc == 0) \ return interp.makeTrue(); \ long lResult; \ double dResult; \ int dim; \ bool lastWasDouble; \ switch (argv[0]->quantityValue(lResult, dResult, dim)) { \ case ELObj::noQuantity: \ return argError(interp, loc, \ InterpreterMessages::notAQuantity, 0, argv[0]); \ case ELObj::longQuantity: \ lastWasDouble = 0; \ break; \ case ELObj::doubleQuantity: \ lastWasDouble = 1; \ break; \ default: \ CANNOT_HAPPEN(); \ } \ for (int i = 1; i < argc; i++) { \ long lResult2; \ double dResult2; \ int dim2; \ switch (argv[i]->quantityValue(lResult2, dResult2, dim2)) { \ case ELObj::noQuantity: \ return argError(interp, loc, \ InterpreterMessages::notAQuantity, i, argv[i]); \ case ELObj::longQuantity: \ if (dim2 != dim) \ goto badDim; \ if (!(lastWasDouble \ ? (dResult OP lResult2) \ : (lResult OP lResult2))) \ return interp.makeFalse(); \ lResult = lResult2; \ lastWasDouble = 0; \ break; \ case ELObj::doubleQuantity: \ if (dim != dim2) \ goto badDim; \ if (!(lastWasDouble \ ? (dResult OP dResult2) \ : (lResult OP dResult2))) \ return interp.makeFalse(); \ dResult = dResult2; \ lastWasDouble = 1; \ break; \ } \ } \ return interp.makeTrue(); \ badDim: \ interp.setNextLocation(loc); \ interp.message(InterpreterMessages::incompatibleDimensions); \ return interp.makeError(); \ } DEFCOMPARE(Less, <) DEFCOMPARE(Greater, >) DEFCOMPARE(LessEqual, <=) DEFCOMPARE(GreaterEqual, >=) DEFPRIMITIVE(Min, argc, argv, context, interp, loc) { long lResult; double dResult; int dim; int i = 1; switch (argv[0]->quantityValue(lResult, dResult, dim)) { case ELObj::noQuantity: return argError(interp, loc, InterpreterMessages::notAQuantity, 0, argv[0]); case ELObj::longQuantity: break; case ELObj::doubleQuantity: goto useDouble; default: CANNOT_HAPPEN(); } // Note that result is inexact if any of the arguments are for (; i < argc; i++) { long lResult2; double dResult2; int dim2; switch (argv[i]->quantityValue(lResult2, dResult2, dim2)) { case ELObj::noQuantity: return argError(interp, loc, InterpreterMessages::notAQuantity, i, argv[i]); case ELObj::longQuantity: if (dim2 != dim) goto badDim; if (lResult2 < lResult) lResult = lResult2; break; case ELObj::doubleQuantity: if (dim != dim2) goto badDim; if (dResult2 < lResult) dResult = dResult2; else if (dim) break; else dResult = lResult; i++; goto useDouble; } } if (dim == 0) return interp.makeInteger(lResult); else return new (interp) LengthObj(lResult); useDouble: for (; i < argc; i++) { long lResult2; double dResult2; int dim2; switch (argv[i]->quantityValue(lResult2, dResult2, dim2)) { case ELObj::noQuantity: return argError(interp, loc, InterpreterMessages::notAQuantity, i, argv[i]); case ELObj::longQuantity: if (dim2 != dim) goto badDim; if (lResult2 < dResult) dResult = lResult2; break; case ELObj::doubleQuantity: if (dim != dim2) goto badDim; if (dResult2 < dResult) dResult = dResult2; break; } } if (dim == 0) return new (interp) RealObj(dResult); else return new (interp) QuantityObj(dResult, dim); badDim: interp.setNextLocation(loc); interp.message(InterpreterMessages::incompatibleDimensions); return interp.makeError(); } DEFPRIMITIVE(Max, argc, argv, context, interp, loc) { long lResult; double dResult; int dim; int i = 1; switch (argv[0]->quantityValue(lResult, dResult, dim)) { case ELObj::noQuantity: return argError(interp, loc, InterpreterMessages::notAQuantity, 0, argv[0]); case ELObj::longQuantity: break; case ELObj::doubleQuantity: goto useDouble; default: CANNOT_HAPPEN(); } // Note that result is inexact if any of the arguments are for (; i < argc; i++) { long lResult2; double dResult2; int dim2; switch (argv[i]->quantityValue(lResult2, dResult2, dim2)) { case ELObj::noQuantity: return argError(interp, loc, InterpreterMessages::notAQuantity, i, argv[i]); case ELObj::longQuantity: if (dim2 != dim) goto badDim; if (lResult2 > lResult) lResult = lResult2; break; case ELObj::doubleQuantity: if (dim != dim2) goto badDim; if (dResult2 > lResult) dResult = dResult2; else if (dim) break; else dResult = lResult; i++; goto useDouble; } } if (dim == 0) return interp.makeInteger(lResult); else return new (interp) LengthObj(lResult); useDouble: for (; i < argc; i++) { long lResult2; double dResult2; int dim2; switch (argv[i]->quantityValue(lResult2, dResult2, dim2)) { case ELObj::noQuantity: return argError(interp, loc, InterpreterMessages::notAQuantity, i, argv[i]); case ELObj::longQuantity: if (dim2 != dim) goto badDim; if (lResult2 > dResult) dResult = lResult2; break; case ELObj::doubleQuantity: if (dim != dim2) goto badDim; if (dResult2 > dResult) dResult = dResult2; break; } } if (dim == 0) return new (interp) RealObj(dResult); else return new (interp) QuantityObj(dResult, dim); badDim: interp.setNextLocation(loc); interp.message(InterpreterMessages::incompatibleDimensions); return interp.makeError(); } DEFPRIMITIVE(Floor, argc, argv, context, interp, loc) { double d; if (argv[0]->inexactRealValue(d)) return new (interp) RealObj(floor(d)); long n; if (argv[0]->exactIntegerValue(n)) return argv[0]; return argError(interp, loc, InterpreterMessages::notANumber, 0, argv[0]); } DEFPRIMITIVE(Ceiling, argc, argv, context, interp, loc) { double d; if (argv[0]->inexactRealValue(d)) return new (interp) RealObj(ceil(d)); long n; if (argv[0]->exactIntegerValue(n)) return argv[0]; return argError(interp, loc, InterpreterMessages::notANumber, 0, argv[0]); } DEFPRIMITIVE(Round, argc, argv, context, interp, loc) { double d; if (argv[0]->inexactRealValue(d)) { double result = floor(d + .5); // That rounded it upwards. // Now figure out if that was different from round to // even. if (result - d == 0.5 && fmod(result, 2.0) != 0) result -= 1.0; return new (interp) RealObj(result); } long n; if (argv[0]->exactIntegerValue(n)) return argv[0]; return argError(interp, loc, InterpreterMessages::notANumber, 0, argv[0]); } DEFPRIMITIVE(Truncate, argc, argv, context, interp, loc) { double d; if (argv[0]->inexactRealValue(d)) { double iPart; modf(d, &iPart); return new (interp) RealObj(iPart); } long n; if (argv[0]->exactIntegerValue(n)) return argv[0]; return argError(interp, loc, InterpreterMessages::notANumber, 0, argv[0]); } DEFPRIMITIVE(Abs, argc, argv, context, interp, loc) { long lResult; double dResult; int dim; switch (argv[0]->quantityValue(lResult, dResult, dim)) { case ELObj::noQuantity: return argError(interp, loc, InterpreterMessages::notAQuantity, 0, argv[0]); case ELObj::longQuantity: if (lResult != LONG_MIN) { if (lResult >= 0) return argv[0]; if (dim == 0) return interp.makeInteger(-lResult); else return new (interp) LengthObj(-lResult); } dResult = lResult; break; case ELObj::doubleQuantity: break; default: CANNOT_HAPPEN(); } if (dResult >= 0) return argv[0]; if (dim == 0) return new (interp) RealObj(-dResult); else return new (interp) QuantityObj(-dResult, dim); } DEFPRIMITIVE(Sqrt, argc, argv, context, interp, loc) { long lResult; double dResult; int dim; ELObj::QuantityType type = argv[0]->quantityValue(lResult, dResult, dim); switch (type) { case ELObj::noQuantity: return argError(interp, loc, InterpreterMessages::notAQuantity, 0, argv[0]); case ELObj::longQuantity: dResult = lResult; break; case ELObj::doubleQuantity: break; default: CANNOT_HAPPEN(); } if ((dim & 1) || dResult < 0.0) { interp.setNextLocation(loc); interp.message(InterpreterMessages::outOfRange); return interp.makeError(); } dim /= 2; dResult = sqrt(dResult); if (type == ELObj::longQuantity && dim == 0) { long n = long(dResult); if (n*n == lResult) return interp.makeInteger(n); } return new (interp) QuantityObj(dResult, dim); } DEFPRIMITIVE(Time, argc, argv, context, interp, loc) { // This assumes a Posix compatible time(). time_t t = time(0); return interp.makeInteger(long(t)); } DEFPRIMITIVE(TimeToString, argc, argv, context, interp, loc) { long k; if (!argv[0]->exactIntegerValue(k)) return argError(interp, loc, InterpreterMessages::notAnExactInteger, 0, argv[0]); time_t t = time_t(k); const struct tm *p; if (argc > 1 && argv[1] != interp.makeFalse()) p = gmtime(&t); else p = localtime(&t); char buf[64]; sprintf(buf, "%04d-%02d-%02dT%02d:%02d:%02d", p->tm_year + 1900, p->tm_mon + 1, p->tm_mday, p->tm_hour, p->tm_min, p->tm_sec); return new (interp) StringObj(interp.makeStringC(buf)); } DEFPRIMITIVE(CharProperty, argc, argv, context, interp, loc) { SymbolObj *sym = argv[0]->asSymbol(); if (!sym) return argError(interp, loc, InterpreterMessages::notASymbol, 0, argv[0]); StringObj *prop = argv[0]->asSymbol()->convertToString(); Char c; if (!argv[1]->charValue(c)) return argError(interp, loc, InterpreterMessages::notAChar, 1, argv[1]); return interp.charProperty(*prop, c, loc, (argc > 2) ? argv[2] : 0); } DEFPRIMITIVE(Literal, argc, argv, context, interp, loc) { if (argc == 0) return new (interp) EmptySosofoObj; const Char *s; size_t n; if (!argv[0]->stringData(s, n)) return argError(interp, loc, InterpreterMessages::notAString, 0, argv[0]); if (argc == 1) return new (interp) LiteralSosofoObj(argv[0]); StringObj *strObj = new (interp) StringObj(s, n); for (int i = 1; i < argc; i++) { if (!argv[i]->stringData(s, n)) return argError(interp, loc, InterpreterMessages::notAString, i, argv[i]); strObj->append(s, n); } ELObjDynamicRoot protect(interp, strObj); return new (interp) LiteralSosofoObj(strObj); } DEFPRIMITIVE(ProcessChildren, argc, argv, context, interp, loc) { if (!context.processingMode) { interp.setNextLocation(loc); interp.message(InterpreterMessages::noCurrentProcessingMode); return interp.makeError(); } return new (interp) ProcessChildrenSosofoObj(context.processingMode); } DEFPRIMITIVE(ProcessChildrenTrim, argc, argv, context, interp, loc) { if (!context.processingMode) { interp.setNextLocation(loc); interp.message(InterpreterMessages::noCurrentProcessingMode); return interp.makeError(); } return new (interp) ProcessChildrenTrimSosofoObj(context.processingMode); } DEFPRIMITIVE(SosofoAppend, argc, argv, context, interp, loc) { /* Optimize the case where there is no or only one argument */ if (argc == 0) return new (interp) EmptySosofoObj; else if (argc == 1) { SosofoObj *sosofo = argv[0]->asSosofo(); if (!sosofo) return argError(interp, loc, InterpreterMessages::notASosofo, 0, argv[0]); return sosofo; } /* Don't create another object if the first argument is already an AppendSosofoObj, this handles gracefully case like (let loop ( (res (empty-sosofo)) (nl (node-list-rest (children (current-node))))) (loop (sosofo-append res (process-node-list (node-list-first nl))) (node-list-rest nl))) */ AppendSosofoObj *obj; int i = 0; if ( argv[i]->asAppendSosofo() ) obj = argv[i++]->asAppendSosofo(); else obj = new (interp) AppendSosofoObj; for ( ; i < argc; i++) { SosofoObj *sosofo = argv[i]->asSosofo(); if (!sosofo) return argError(interp, loc, InterpreterMessages::notASosofo, i, argv[i]); obj->append(sosofo); } return obj; } DEFPRIMITIVE(NextMatch, argc, argv, context, interp, loc) { if (!context.processingMode) { interp.setNextLocation(loc); interp.message(InterpreterMessages::noCurrentProcessingMode); return interp.makeError(); } StyleObj *style; if (argc == 0) style = 0; else { style = argv[0]->asStyle(); if (!style) return argError(interp, loc, InterpreterMessages::notAStyle, 0, argv[0]); } return new (interp) NextMatchSosofoObj(style); } DEFPRIMITIVE(EmptySosofo, argc, argv, context, interp, loc) { return new (interp) EmptySosofoObj; } DEFPRIMITIVE(SosofoLabel, argc, argv, context, interp, loc) { SosofoObj *sosofo = argv[0]->asSosofo(); if (!sosofo) return argError(interp, loc, InterpreterMessages::notASosofo, 0, argv[0]); SymbolObj *sym = argv[1]->asSymbol(); if (!sym) return argError(interp, loc, InterpreterMessages::notASymbol, 1, argv[1]); return new (interp) LabelSosofoObj(sym, loc, sosofo); } DEFPRIMITIVE(SosofoDiscardLabeled, argc, argv, context, interp, loc) { SosofoObj *sosofo = argv[0]->asSosofo(); if (!sosofo) return argError(interp, loc, InterpreterMessages::notASosofo, 0, argv[0]); SymbolObj *sym = argv[1]->asSymbol(); if (!sym) return argError(interp, loc, InterpreterMessages::notASymbol, 1, argv[1]); return new (interp) DiscardLabeledSosofoObj(sym, sosofo); } DEFPRIMITIVE(IsSosofo, argc, argv, context, interp, loc) { if (argv[0]->asSosofo()) return interp.makeTrue(); else return interp.makeFalse(); } DEFPRIMITIVE(MergeStyle, argc, argv, context, interp, loc) { MergeStyleObj *merged = new (interp) MergeStyleObj; for (int i = 0; i < argc; i++) { StyleObj *style = argv[i]->asStyle(); if (!style) return argError(interp, loc, InterpreterMessages::notAStyle, i, argv[i]); merged->append(style); } return merged; } DEFPRIMITIVE(IsStyle, argc, argv, context, interp, loc) { if (argv[0]->asStyle()) return interp.makeTrue(); else return interp.makeFalse(); } DEFPRIMITIVE(CurrentNodePageNumberSosofo, argc, argv, context, interp, loc) { if (!context.currentNode) return noCurrentNodeError(interp, loc); return new (interp) CurrentNodePageNumberSosofoObj(context.currentNode); } DEFPRIMITIVE(PageNumberSosofo, argc, argv, context, interp, loc) { return new (interp) PageNumberSosofoObj; } DEFPRIMITIVE(ProcessElementWithId, argc, argv, context, interp, loc) { const Char *s; size_t n; if (!argv[0]->stringData(s, n)) return argError(interp, loc, InterpreterMessages::notAString, 0, argv[0]); if (!context.currentNode) return noCurrentNodeError(interp, loc); if (!context.processingMode) { interp.setNextLocation(loc); interp.message(InterpreterMessages::noCurrentProcessingMode); return interp.makeError(); } NodePtr root; NamedNodeListPtr elements; if (context.currentNode->getGroveRoot(root) == accessOK && root->getElements(elements) == accessOK) { NodePtr node; if (elements->namedNode(GroveString(s, n), node) == accessOK) return new (interp) ProcessNodeSosofoObj(node, context.processingMode); } return new (interp) EmptySosofoObj; } DEFPRIMITIVE(ProcessFirstDescendant, argc, argv, context, interp, loc) { if (!context.processingMode) { interp.setNextLocation(loc); interp.message(InterpreterMessages::noCurrentProcessingMode); return interp.makeError(); } if (!context.currentNode) return noCurrentNodeError(interp, loc); NCVector patterns(argc); for (size_t i = 0; i < argc; i++) { if (!interp.convertToPattern(argv[i], loc, patterns[i])) return interp.makeError(); } NodeListObj *nl = new (interp) DescendantsNodeListObj(context.currentNode); ELObjDynamicRoot protect(interp, nl); nl = new (interp) SelectElementsNodeListObj(nl, patterns); protect = nl; NodePtr nd(nl->nodeListFirst(context, interp)); if (!nd) return new (interp) EmptySosofoObj; return new (interp) ProcessNodeSosofoObj(nd, context.processingMode); } DEFPRIMITIVE(ProcessMatchingChildren, argc, argv, context, interp, loc) { if (!context.processingMode) { interp.setNextLocation(loc); interp.message(InterpreterMessages::noCurrentProcessingMode); return interp.makeError(); } if (!context.currentNode) return noCurrentNodeError(interp, loc); NCVector patterns(argc); for (size_t i = 0; i < argc; i++) { if (!interp.convertToPattern(argv[i], loc, patterns[i])) return interp.makeError(); } NodeListPtr nlPtr; // FIXME handle root if (patterns.size() == 0 || context.currentNode->children(nlPtr) != accessOK) return new (interp) EmptySosofoObj; NodeListObj *nl = new (interp) NodeListPtrNodeListObj(nlPtr); ELObjDynamicRoot protect(interp, nl); nl = new (interp) SelectElementsNodeListObj(nl, patterns); protect = nl; return new (interp) ProcessNodeListSosofoObj(nl, context.processingMode); } DEFPRIMITIVE(SelectElements, argc, argv, context, interp, loc) { NodeListObj *nl = argv[0]->asNodeList(); if (!nl) return argError(interp, loc, InterpreterMessages::notANodeList, 0, argv[0]); NCVector patterns(1); if (!interp.convertToPattern(argv[1], loc, patterns[0])) return interp.makeError(); return new (interp) SelectElementsNodeListObj(nl, patterns); } DEFPRIMITIVE(IsMatchElement, argc, argv, context, interp, loc) { Pattern pattern; if (!interp.convertToPattern(argv[0], loc, pattern)) return interp.makeError(); NodePtr node; if (!argv[1]->optSingletonNodeList(context, interp, node) || !node) return argError(interp, loc, InterpreterMessages::notASingletonNode, 1, argv[1]); if (pattern.matches(node, interp)) return interp.makeTrue(); return interp.makeFalse(); } DEFPRIMITIVE(ProcessNodeList, argc, argv, context, interp, loc) { if (!context.processingMode) { interp.setNextLocation(loc); interp.message(InterpreterMessages::noCurrentProcessingMode); return interp.makeError(); } NodeListObj *nl = argv[0]->asNodeList(); if (!nl) return argError(interp, loc, InterpreterMessages::notANodeList, 0, argv[0]); return new (interp) ProcessNodeListSosofoObj(nl, context.processingMode); } static void reverse(StringC &s) { size_t i = 0; size_t j = s.size() - 1; while (i < j) { Char tem = s[i]; s[i] = s[j]; s[j] = tem; i++; j--; } } static StringC formatNumberLetter(long n, const char *letters) { StringC result; if (n == 0) result += '0'; else { bool neg; // FIXME possibility of overflow if (n < 0) { n = -n; neg = 1; } else neg = 0; do { n--; int r = n % 26; n -= r; n /= 26; result += letters[r]; } while (n > 0); if (neg) result += '-'; reverse(result); } return result; } static StringC formatNumberDecimal(long n, size_t minWidth) { StringC result; char buf[32]; sprintf(buf, "%ld", n); const char *p = buf; if (*p == '-') { p++; result += '-'; } size_t len = strlen(p); while (len < minWidth) { result += '0'; len++; } while (*p) result += *p++; return result; } static StringC formatNumberRoman(long n, const char *letters) { StringC result; if (n > 5000 || n < -5000 || n == 0) return formatNumberDecimal(n, 1); if (n < 0) { n = -n; result += '-'; } while (n >= 1000) { result += letters[0]; n -= 1000; } for (int i = 100; i > 0; i /= 10, letters += 2) { long q = n / i; n -= q * i; switch (q) { case 1: result += letters[2]; break; case 2: result += letters[2]; result += letters[2]; break; case 3: result += letters[2]; result += letters[2]; result += letters[2]; break; case 4: result += letters[2]; result += letters[1]; break; case 5: result += letters[1]; break; case 6: result += letters[1]; result += letters[2]; break; case 7: result += letters[1]; result += letters[2]; result += letters[2]; break; case 8: result += letters[1]; result += letters[2]; result += letters[2]; result += letters[2]; break; case 9: result += letters[2]; result += letters[0]; break; } } return result; } static bool formatNumber(long n, const Char *s, size_t len, StringC &result) { if (len > 0) { switch (s[len - 1]) { case 'a': result += formatNumberLetter(n, "abcdefghijklmnopqrstuvwxyz"); return 1; case 'A': result += formatNumberLetter(n, "ABCDEFGHIJKLMNOPQRSTUVWXYZ"); return 1; case 'i': result += formatNumberRoman(n, "mdclxvi"); return 1; case 'I': result += formatNumberRoman(n, "MDCLXVI"); return 1; case '1': result += formatNumberDecimal(n, len); return 1; default: break; } } result += formatNumberDecimal(n, 1); return 0; } DEFPRIMITIVE(FormatNumber, argc, argv, context, interp, loc) { long n; if (!argv[0]->exactIntegerValue(n)) return argError(interp, loc, InterpreterMessages::notAnExactInteger, 0, argv[0]); const Char *s; size_t len; if (!argv[1]->stringData(s, len)) return argError(interp, loc, InterpreterMessages::notAString, 1, argv[1]); StringObj *result = new (interp) StringObj; if (!formatNumber(n, s, len, *result)) { interp.setNextLocation(loc); interp.message(InterpreterMessages::invalidNumberFormat, StringMessageArg(StringC(s, len))); } return result; } DEFPRIMITIVE(FormatNumberList, argc, argv, context, interp, loc) { ELObj *numbers = argv[0]; ELObj *formats = argv[1]; ELObj *seps = argv[2]; StringObj *result = new (interp) StringObj; while (!numbers->isNil()) { PairObj *tem; const Char *s; size_t len; if (numbers != argv[0]) { if (!seps->stringData(s, len)) { tem = seps->asPair(); if (!tem) return argError(interp, loc, InterpreterMessages::notAList, 2, argv[2]); if (!tem->car()->stringData(s, len)) return argError(interp, loc, InterpreterMessages::notAString, 2, tem->car()); seps = tem->cdr(); } result->append(s, len); } tem = numbers->asPair(); if (!tem) return argError(interp, loc, InterpreterMessages::notAList, 0, argv[0]); long k; if (!tem->car()->exactIntegerValue(k)) // FIXME message not quite right return argError(interp, loc, InterpreterMessages::notAnExactInteger, 0, tem->car()); numbers = tem->cdr(); if (!formats->stringData(s, len)) { tem = formats->asPair(); if (!tem) return argError(interp, loc, InterpreterMessages::notAList, 1, argv[1]); if (!tem->car()->stringData(s, len)) return argError(interp, loc, InterpreterMessages::notAString, 0, tem->car()); formats = tem->cdr(); } if (!formatNumber(k, s, len, *result)) { interp.setNextLocation(loc); interp.message(InterpreterMessages::invalidNumberFormat, StringMessageArg(StringC(s, len))); } } return result; } DEFPRIMITIVE(ExternalProcedure, argc, argv, context, interp, loc) { const Char *s; size_t n; if (!argv[0]->stringData(s, n)) return argError(interp, loc, InterpreterMessages::notAString, 0, argv[0]); StringC tem(s, n); FunctionObj *func = interp.lookupExternalProc(tem); if (func) return func; return interp.makeFalse(); } DEFPRIMITIVE(Error, argc, argv, context, interp, loc) { const Char *s; size_t n; if (!argv[0]->stringData(s, n)) return argError(interp, loc, InterpreterMessages::notAString, 0, argv[0]); interp.setNextLocation(loc); interp.message(InterpreterMessages::errorProc, StringMessageArg(StringC(s, n))); return interp.makeError(); } DEFPRIMITIVE(StringToNumber, argc, argv, context, interp, loc) { const Char *s; size_t n; if (!argv[0]->stringData(s, n)) return argError(interp, loc, InterpreterMessages::notAString, 0, argv[0]); long radix; if (argc > 1) { if (!argv[1]->exactIntegerValue(radix)) return argError(interp, loc, InterpreterMessages::notAnExactInteger, 1, argv[1]); switch (radix) { case 2: case 8: case 10: case 16: break; default: interp.setNextLocation(loc); interp.message(InterpreterMessages::invalidRadix); radix = 10; break; } } else radix = 10; ELObj *result = interp.convertNumber(StringC(s, n), int(radix)); if (result) { result = result->resolveQuantities(0, interp, loc); if (interp.isError(result)) return result; long n; double d; int dim; if (result->quantityValue(n, d, dim) != ELObj::noQuantity) return result; } return interp.makeFalse(); } DEFPRIMITIVE(NumberToString, argc, argv, context, interp, loc) { double x; if (!argv[0]->realValue(x)) return argError(interp, loc, InterpreterMessages::notANumber, 0, argv[0]); unsigned radix; if (argc > 1) { long r; if (!argv[1]->exactIntegerValue(r)) return argError(interp, loc, InterpreterMessages::notAnExactInteger, 1, argv[1]); switch (r) { case 2: case 8: case 10: case 16: radix = unsigned(r); break; default: interp.setNextLocation(loc); interp.message(InterpreterMessages::invalidRadix); radix = 10; break; } } else radix = 10; StrOutputCharStream os; argv[0]->print(interp, os, radix); StringC tem; os.extractString(tem); return new (interp) StringObj(tem); } DEFPRIMITIVE(QuantityToString, argc, argv, context, interp, loc) { long lResult; double dResult; int dim; if (argv[0]->quantityValue(lResult, dResult, dim) == ELObj::noQuantity) return argError(interp, loc, InterpreterMessages::notAQuantity, 0, argv[0]); unsigned radix; if (argc > 1) { long r; if (!argv[1]->exactIntegerValue(r)) return argError(interp, loc, InterpreterMessages::notAnExactInteger, 1, argv[1]); switch (r) { case 2: case 8: case 10: case 16: radix = unsigned(r); break; default: interp.setNextLocation(loc); interp.message(InterpreterMessages::invalidRadix); radix = 10; break; } } else radix = 10; StrOutputCharStream os; argv[0]->print(interp, os, radix); StringC tem; os.extractString(tem); return new (interp) StringObj(tem); } DEFPRIMITIVE(DisplaySize, argc, argv, context, interp, loc) { return new (interp) LengthSpecObj(LengthSpec(LengthSpec::displaySize, 1.0)); } DEFPRIMITIVE(TableUnit, argc, argv, context, interp, loc) { long k; if (!argv[0]->exactIntegerValue(k)) return argError(interp, loc, InterpreterMessages::notAnExactInteger, 0, argv[0]); return new (interp) LengthSpecObj(LengthSpec(LengthSpec::tableUnit, double(k))); } DEFPRIMITIVE(IsDisplaySpace, argc, argv, context, interp, loc) { if (argv[0]->asDisplaySpace()) return interp.makeTrue(); else return interp.makeFalse(); } DEFPRIMITIVE(DisplaySpace, argc, argv, context, interp, loc) { FOTBuilder::DisplaySpace displaySpace; if (!interp.convertLengthSpec(argv[0], displaySpace.nominal)) return argError(interp, loc, InterpreterMessages::notALengthSpec, 0, argv[0]); displaySpace.min = displaySpace.nominal; displaySpace.max = displaySpace.nominal; // first specified keyword argument takes priority, // so scan them backwards... for (int i = argc - 1; i > 0; i -= 2) { if ((argc & 1) == 0) { interp.setNextLocation(loc); interp.message(InterpreterMessages::oddKeyArgs); return interp.makeError(); } KeywordObj *keyObj = argv[i - 1]->asKeyword(); if (!keyObj) { interp.setNextLocation(loc); interp.message(InterpreterMessages::keyArgsNotKey); return interp.makeError(); } Identifier::SyntacticKey key; if (!keyObj->identifier()->syntacticKey(key)) { interp.setNextLocation(loc); interp.message(InterpreterMessages::invalidKeyArg, StringMessageArg(keyObj->identifier()->name())); return interp.makeError(); } else { switch (key) { case Identifier::keyMin: if (!interp.convertLengthSpec(argv[i], displaySpace.min)) return argError(interp, loc, InterpreterMessages::notALengthSpec, i, argv[i]); break; case Identifier::keyMax: if (!interp.convertLengthSpec(argv[i], displaySpace.max)) return argError(interp, loc, InterpreterMessages::notALengthSpec, i, argv[i]); break; case Identifier::keyIsConditional: if (argv[i] == interp.makeTrue()) displaySpace.conditional = 1; else if (argv[i] == interp.makeFalse()) displaySpace.conditional = 0; else return argError(interp, loc, InterpreterMessages::notABoolean, i, argv[i]); break; case Identifier::keyPriority: if (argv[i]->exactIntegerValue(displaySpace.priority)) displaySpace.force = 0; else { SymbolObj *sym = argv[i]->asSymbol(); if (sym && sym->cValue() == FOTBuilder::symbolForce) displaySpace.force = 1; else return argError(interp, loc, InterpreterMessages::notAPriority, i, argv[i]); } break; default: interp.setNextLocation(loc); interp.message(InterpreterMessages::invalidKeyArg, StringMessageArg(keyObj->identifier()->name())); return interp.makeError(); } } } return new (interp) DisplaySpaceObj(displaySpace); } DEFPRIMITIVE(IsInlineSpace, argc, argv, context, interp, loc) { if (argv[0]->asInlineSpace()) return interp.makeTrue(); else return interp.makeFalse(); } DEFPRIMITIVE(InlineSpace, argc, argv, context, interp, loc) { FOTBuilder::InlineSpace inlineSpace; if (!interp.convertLengthSpec(argv[0], inlineSpace.nominal)) return argError(interp, loc, InterpreterMessages::notALengthSpec, 0, argv[0]); inlineSpace.min = inlineSpace.nominal; inlineSpace.max = inlineSpace.nominal; // first specified keyword argument takes priority, // so scan them backwards... for (int i = argc - 1; i > 0; i -= 2) { if ((argc & 1) == 0) { interp.setNextLocation(loc); interp.message(InterpreterMessages::oddKeyArgs); return interp.makeError(); } KeywordObj *keyObj = argv[i - 1]->asKeyword(); if (!keyObj) { interp.setNextLocation(loc); interp.message(InterpreterMessages::keyArgsNotKey); return interp.makeError(); } Identifier::SyntacticKey key; if (!keyObj->identifier()->syntacticKey(key)) { interp.setNextLocation(loc); interp.message(InterpreterMessages::invalidKeyArg, StringMessageArg(keyObj->identifier()->name())); return interp.makeError(); } else { switch (key) { case Identifier::keyMin: if (!interp.convertLengthSpec(argv[i], inlineSpace.min)) return argError(interp, loc, InterpreterMessages::notALengthSpec, i, argv[i]); break; case Identifier::keyMax: if (!interp.convertLengthSpec(argv[i], inlineSpace.max)) return argError(interp, loc, InterpreterMessages::notALengthSpec, i, argv[i]); break; default: interp.setNextLocation(loc); interp.message(InterpreterMessages::invalidKeyArg, StringMessageArg(keyObj->identifier()->name())); return interp.makeError(); } } } return new (interp) InlineSpaceObj(inlineSpace); return argv[0]; } DEFPRIMITIVE(IsColor, argc, argv, context, interp, loc) { if (argv[0]->asColor()) return interp.makeTrue(); else return interp.makeFalse(); } DEFPRIMITIVE(IsColorSpace, argc, argv, context, interp, loc) { if (argv[0]->asColorSpace()) return interp.makeTrue(); else return interp.makeFalse(); } static bool decodeKeyArgs(int argc, ELObj **argv, const Identifier::SyntacticKey *keys, int nKeys, Interpreter &interp, const Location &loc, int *pos); // return 1 if obj is a list of numbers of length len. static bool decodeNumVector(double *res, int len, ELObj *obj) { ELObj *e = obj; PairObj *p; for (int i = 0; i < len; i++) { p = e->asPair(); if (!p || !p->car()->realValue(res[i])) return 0; e = p->cdr(); } return 1; } static bool decodeFuncVector(FunctionObj **res, int len, ELObj *obj) { ELObj *e = obj; PairObj *p; for (int i = 0; i < len; i++) { p = e->asPair(); if (!p || !(res[i] = p->car()->asFunction())) return 0; e = p->cdr(); } return 1; } DEFPRIMITIVE(ColorSpace, argc, argv, context, interp, loc) { const Char *s; size_t n; if (!argv[0]->stringData(s, n)) return argError(interp, loc, InterpreterMessages::notAString, 0, argv[0]); StringC str(s, (n < 43) ? n : 43); if (str == interp.makeStringC("ISO/IEC 10179:1996//Color-Space Family::Dev")) { str.assign(s + 40, n - 40); ELObj *res; if (str == interp.makeStringC("Device RGB")) res = new (interp) DeviceRGBColorSpaceObj; else if (str == interp.makeStringC("Device Gray")) res = new (interp) DeviceGrayColorSpaceObj; else if (str == interp.makeStringC("Device CMYK")) res = new (interp) DeviceCMYKColorSpaceObj; else if (str == interp.makeStringC("Device KX")) res = new (interp) DeviceKXColorSpaceObj; else { interp.setNextLocation(loc); interp.message(InterpreterMessages::unknownColorSpaceFamily, StringMessageArg(StringC(s, n))); return interp.makeError(); } if (argc > 1) { interp.setNextLocation(loc); interp.message(InterpreterMessages::colorSpaceNoArgs, StringMessageArg(str)); } return res; } else if (str == interp.makeStringC("ISO/IEC 10179:1996//Color-Space Family::CIE")) { str.assign(s + 40, n - 40); if ( str == interp.makeStringC("CIE LUV") || str == interp.makeStringC("CIE LAB") || str == interp.makeStringC("CIE Based ABC") || str == interp.makeStringC("CIE Based A")) { static const Identifier::SyntacticKey keys[12] = { Identifier::keyWhitePoint, Identifier::keyBlackPoint, Identifier::keyRange, Identifier::keyRangeAbc, Identifier::keyRangeLmn, Identifier::keyRangeA, Identifier::keyMatrixAbc, Identifier::keyMatrixLmn, Identifier::keyMatrixA, Identifier::keyDecodeAbc, Identifier::keyDecodeLmn, Identifier::keyDecodeA }; int pos[12]; // FIXME messages double wp[3], bp[3], range[6]; double rangeAbc[6], rangeLmn[6], rangeA[2]; double matrixAbc[9], matrixLmn[9], matrixA[3]; FunctionObj *decodeAbc[3], *decodeLmn[3], *decodeA; if (!decodeKeyArgs(argc - 1, argv + 1, keys, 12, interp, loc, pos) || (pos[0] < 0) || (pos[0] >= 0 && !decodeNumVector(wp, 3, argv[pos[0] + 1])) || (pos[1] >= 0 && !decodeNumVector(bp, 3, argv[pos[1] + 1])) || (pos[2] >= 0 && !decodeNumVector(range, 6, argv[pos[2] + 1])) || (pos[3] >= 0 && !decodeNumVector(rangeAbc, 6, argv[pos[3] + 1])) || (pos[4] >= 0 && !decodeNumVector(rangeLmn, 6, argv[pos[4] + 1])) || (pos[5] >= 0 && !decodeNumVector(rangeA, 2, argv[pos[5] + 1])) || (pos[6] >= 0 && !decodeNumVector(matrixAbc, 9, argv[pos[6] + 1])) || (pos[7] >= 0 && !decodeNumVector(matrixLmn, 9, argv[pos[7] + 1])) || (pos[8] >= 0 && !decodeNumVector(matrixA, 3, argv[pos[8] + 1])) || (pos[9] >= 0 && !decodeFuncVector(decodeAbc, 3, argv[pos[9] + 1])) || (pos[10] >= 0 && !decodeFuncVector(decodeLmn, 3, argv[pos[10] + 1])) || (pos[11] >= 0 && !(decodeA = argv[pos[11] + 1]->asFunction()))) { interp.setNextLocation(loc); interp.message(InterpreterMessages::colorSpaceArgError, StringMessageArg(str)); return interp.makeError(); } if ( str == interp.makeStringC("CIE LUV") || str == interp.makeStringC("CIE LAB")) { for (int i = 3; i < 12; i++) if (pos[i] >= 0) { interp.setNextLocation(loc); interp.message(InterpreterMessages::colorSpaceArgError, StringMessageArg(str)); return interp.makeError(); } if (str == interp.makeStringC("CIE LUV")) return new (interp) CIELUVColorSpaceObj(wp, (pos[1] >= 0) ? bp : 0, (pos[2] >= 0) ? range : 0); else return new (interp) CIELABColorSpaceObj(wp, (pos[1] >= 0) ? bp : 0, (pos[2] >= 0) ? range : 0); } else if (str == interp.makeStringC("CIE Based ABC")) { if (pos[2] >= 0 || pos[5] >= 0 || pos[8] >= 0 || pos[11] >= 0) { interp.setNextLocation(loc); interp.message(InterpreterMessages::colorSpaceArgError, StringMessageArg(str)); return interp.makeError(); } return new (interp) CIEABCColorSpaceObj(wp, (pos[1] >= 0) ? bp : 0, (pos[3] >= 0) ? rangeAbc : 0, (pos[9] >= 0) ? decodeAbc : 0, (pos[6] >= 0) ? matrixAbc : 0, (pos[4] >= 0) ? rangeLmn : 0, (pos[10] >= 0) ? decodeLmn : 0, (pos[7] >= 0) ? matrixLmn : 0); } else { // CIE Based A if (pos[2] >= 0 || pos[3] >= 0 || pos[6] >= 0 || pos[9] >= 0) { interp.setNextLocation(loc); interp.message(InterpreterMessages::colorSpaceArgError, StringMessageArg(str)); return interp.makeError(); } return new (interp) CIEAColorSpaceObj(wp, (pos[1] >= 0) ? bp : 0, (pos[5] >= 0) ? rangeA : 0, (pos[11] >= 0) ? decodeA : 0, (pos[8] >= 0) ? matrixA : 0, (pos[4] >= 0) ? rangeLmn : 0, (pos[10] >= 0) ? decodeLmn : 0, (pos[7] >= 0) ? matrixLmn : 0); } } } interp.setNextLocation(loc); interp.message(InterpreterMessages::unknownColorSpaceFamily, StringMessageArg(StringC(s, n))); return interp.makeError(); } DEFPRIMITIVE(Color, argc, argv, context, interp, loc) { ColorSpaceObj *colorSpace = argv[0]->asColorSpace(); if (!colorSpace) return argError(interp, loc, InterpreterMessages::notAColorSpace, 0, argv[0]); return colorSpace->makeColor(argc - 1, argv + 1, interp, loc); } DEFPRIMITIVE(IsAddress, argc, argv, context, interp, loc) { if (argv[0]->asAddress()) return interp.makeTrue(); else return interp.makeFalse(); } DEFPRIMITIVE(IsAddressLocal, argc, argv, context, interp, loc) { AddressObj *address = argv[0]->asAddress(); if (!address) return argError(interp, loc, InterpreterMessages::notAnAddress, 0, argv[0]); if (!context.currentNode) return noCurrentNodeError(interp, loc); switch (address->address().type) { case FOTBuilder::Address::resolvedNode: if (address->address().node->sameGrove(*context.currentNode)) return interp.makeTrue(); else return interp.makeFalse(); case FOTBuilder::Address::idref: return interp.makeTrue(); case FOTBuilder::Address::entity: return interp.makeFalse(); default: break; } return interp.makeFalse(); } DEFPRIMITIVE(IsAddressVisited, argc, argv, context, interp, loc) { AddressObj *address = argv[0]->asAddress(); if (!address) return argError(interp, loc, InterpreterMessages::notAnAddress, 0, argv[0]); // FIXME return interp.makeFalse(); } DEFPRIMITIVE(CurrentNodeAddress, argc, argv, context, interp, loc) { if (!context.currentNode) return noCurrentNodeError(interp, loc); return new (interp) AddressObj(FOTBuilder::Address::resolvedNode, context.currentNode); } DEFPRIMITIVE(HytimeLinkend, argc, argv, context, interp, loc) { if (!context.currentNode) return noCurrentNodeError(interp, loc); return new (interp) AddressObj(FOTBuilder::Address::hytimeLinkend, context.currentNode); } DEFPRIMITIVE(SgmlDocumentAddress, argc, argv, context, interp, loc) { const Char *s; size_t n; if (!argv[0]->stringData(s, n)) return argError(interp, loc, InterpreterMessages::notAString, 0, argv[0]); StringC sysid(s, n); if (!argv[1]->stringData(s, n)) return argError(interp, loc, InterpreterMessages::notAString, 1, argv[1]); return new (interp) AddressObj(FOTBuilder::Address::sgmlDocument, NodePtr(), sysid, StringC(s, n)); } DEFPRIMITIVE(IdrefAddress, argc, argv, context, interp, loc) { // The advantage of doing this rather than using an NodeAddressObj, // is that when it's a forward reference we don't have to // wait for the node. It might be cleaner to use a ProxyNode class // for this. const Char *s; size_t n; if (!argv[0]->stringData(s, n)) return argError(interp, loc, InterpreterMessages::notAString, 0, argv[0]); if (!context.currentNode) return noCurrentNodeError(interp, loc); return new (interp) AddressObj(FOTBuilder::Address::idref, context.currentNode, StringC(s, n)); } DEFPRIMITIVE(EntityAddress, argc, argv, context, interp, loc) { // Note that multiple space separated entity names are allowed; // currently Address doesn't support multiple nodes, so we can't resolve here. const Char *s; size_t n; if (!argv[0]->stringData(s, n)) return argError(interp, loc, InterpreterMessages::notAString, 0, argv[0]); if (!context.currentNode) return noCurrentNodeError(interp, loc); return new (interp) AddressObj(FOTBuilder::Address::entity, context.currentNode, StringC(s, n)); } DEFPRIMITIVE(NodeListAddress, argc, argv, context, interp, loc) { NodePtr node; if (!argv[0]->optSingletonNodeList(context, interp, node) || !node) return argError(interp, loc, InterpreterMessages::notASingletonNode, 0, argv[0]); return new (interp) AddressObj(FOTBuilder::Address::resolvedNode, node); } DEFPRIMITIVE(CharScriptCase, argc, argv, context, interp, loc) { if (!context.styleStack) { interp.setNextLocation(loc); interp.message(InterpreterMessages::notInCharacteristicValue); return interp.makeError(); } for (size_t i = 0; i < argc; i += 2) { const Char *s; size_t n; if (!argv[i]->stringData(s, n)) return argError(interp, loc, InterpreterMessages::notAString, i, argv[i]); } // FIXME return argv[argc - 1]; } DEFPRIMITIVE(IsGlyphId, argc, argv, context, interp, loc) { if (argv[0]->glyphId()) return interp.makeTrue(); else return interp.makeFalse(); } DEFPRIMITIVE(GlyphId, argc, argv, context, interp, loc) { const Char *s; size_t n; if (!argv[0]->stringData(s, n)) return argError(interp, loc, InterpreterMessages::notAString, 0, argv[0]); return interp.convertGlyphId(s, n, loc); } DEFPRIMITIVE(IsGlyphSubstTable, argc, argv, context, interp, loc) { if (argv[0]->asGlyphSubstTable()) return interp.makeTrue(); else return interp.makeFalse(); } DEFPRIMITIVE(GlyphSubstTable, argc, argv, context, interp, loc) { ELObj *p = argv[0]; Ptr table = new FOTBuilder::GlyphSubstTable; table->uniqueId = interp.allocGlyphSubstTableUniqueId(); while (!p->isNil()) { PairObj *tem = p->asPair(); if (!tem) return argError(interp, loc, InterpreterMessages::notAGlyphIdPairList, 0, argv[0]); p = tem->cdr(); tem = tem->car()->asPair(); const FOTBuilder::GlyphId *g1, *g2; if (!tem || (g1 = tem->car()->glyphId()) == 0 || (g2 = tem->cdr()->glyphId()) == 0) return argError(interp, loc, InterpreterMessages::notAGlyphIdPairList, 0, argv[0]); table->pairs.push_back(*g1); table->pairs.push_back(*g2); } return new (interp) GlyphSubstTableObj(table); } DEFPRIMITIVE(GlyphSubst, argc, argv, context, interp, loc) { GlyphSubstTableObj *table = argv[0]->asGlyphSubstTable(); if (!table) return argError(interp, loc, InterpreterMessages::notAGlyphSubstTable, 0, argv[0]); const FOTBuilder::GlyphId *glyphId = argv[1]->glyphId(); if (!glyphId) return argError(interp, loc, InterpreterMessages::notAGlyphId, 1, argv[1]); return new (interp) GlyphIdObj(table->glyphSubstTable()->subst(*glyphId)); } // Core query language DEFPRIMITIVE(CurrentNode, argc, argv, context, interp, loc) { if (!context.currentNode) return noCurrentNodeError(interp, loc); return new (interp) NodePtrNodeListObj(context.currentNode); } DEFPRIMITIVE(NodeListError, argc, argv, context, interp, loc) { const Char *s; size_t n; if (!argv[0]->stringData(s, n)) return argError(interp, loc, InterpreterMessages::notAString, 0, argv[0]); if (!argv[1]->asNodeList()) return argError(interp, loc, InterpreterMessages::notANodeList, 1, argv[1]); NodePtr nd; const LocNode *lnp; Location nodeLoc; if (argv[1]->optSingletonNodeList(context, interp, nd) && (lnp = LocNode::convert(nd)) != 0 && lnp->getLocation(nodeLoc) == accessOK) interp.setNextLocation(nodeLoc); else interp.setNextLocation(loc); interp.message(InterpreterMessages::errorProc, StringMessageArg(StringC(s, n))); return interp.makeError(); } DEFPRIMITIVE(IsNodeListEmpty, argc, argv, context, interp, loc) { NodeListObj *nl = argv[0]->asNodeList(); if (!nl) return argError(interp, loc, InterpreterMessages::notANodeList, 0, argv[0]); if (nl->nodeListFirst(context, interp)) return interp.makeFalse(); else return interp.makeTrue(); } DEFPRIMITIVE(IsNodeList, argc, argv, context, interp, loc) { if (argv[0]->asNodeList()) return interp.makeTrue(); else return interp.makeFalse(); } DEFPRIMITIVE(Parent, argc, argv, context, interp, loc) { NodePtr node; if (argc > 0) { if (!argv[0]->optSingletonNodeList(context, interp, node)) return argError(interp, loc, InterpreterMessages::notAnOptSingletonNode, 0, argv[0]); if (!node) return argv[0]; } else { node = context.currentNode; if (!node) return noCurrentNodeError(interp, loc); } if (node->getParent(node) != accessOK) return interp.makeEmptyNodeList(); return new (interp) NodePtrNodeListObj(node); } static bool convertGeneralName(ELObj *obj, const NodePtr &node, StringC &result) { const Char *s; size_t n; if (!obj->stringData(s, n)) return 0; result.assign(s, n); NodePtr root; node->getGroveRoot(root); NamedNodeListPtr elements; root->getElements(elements); result.resize(elements->normalize(result.begin(), result.size())); return 1; } DEFPRIMITIVE(Ancestor, argc, argv, context, interp, loc) { NodePtr node; if (argc > 1) { if (!argv[1]->optSingletonNodeList(context, interp, node) || !node) return argError(interp, loc, InterpreterMessages::notASingletonNode, 1, argv[1]); } else { node = context.currentNode; if (!node) return noCurrentNodeError(interp, loc); } StringC gi; if (!convertGeneralName(argv[0], node, gi)) return argError(interp, loc, InterpreterMessages::notAString, 0, argv[0]); while (node->getParent(node) == accessOK) { GroveString str; if (node->getGi(str) == accessOK && str == GroveString(gi.data(), gi.size())) return new (interp) NodePtrNodeListObj(node); } return interp.makeEmptyNodeList(); } DEFPRIMITIVE(Gi, argc, argv, context, interp, loc) { NodePtr node; if (argc > 0) { if (!argv[0]->optSingletonNodeList(context, interp, node)) return argError(interp, loc, InterpreterMessages::notAnOptSingletonNode, 0, argv[0]); } else { if (!context.currentNode) return noCurrentNodeError(interp, loc); node = context.currentNode; } GroveString str; if (node && node->getGi(str) == accessOK) return new (interp) StringObj(str.data(), str.size()); else return interp.makeFalse(); } DEFPRIMITIVE(FirstChildGi, argc, argv, context, interp, loc) { NodePtr node; if (argc > 0) { if (!argv[0]->optSingletonNodeList(context, interp, node)) return argError(interp, loc, InterpreterMessages::notAnOptSingletonNode, 0, argv[0]); if (!node) return interp.makeFalse(); } else { if (!context.currentNode) return noCurrentNodeError(interp, loc); node = context.currentNode; } if (node.assignFirstChild() != accessOK) return interp.makeFalse(); for (;;) { GroveString str; if (node->getGi(str) == accessOK) return new (interp) StringObj(str.data(), str.size()); if (node.assignNextChunkSibling() != accessOK) break; } return interp.makeFalse(); } DEFPRIMITIVE(Id, argc, argv, context, interp, loc) { NodePtr node; if (argc > 0) { if (!argv[0]->optSingletonNodeList(context, interp, node)) return argError(interp, loc, InterpreterMessages::notAnOptSingletonNode, 0, argv[0]); } else { if (!context.currentNode) return noCurrentNodeError(interp, loc); node = context.currentNode; } GroveString str; if (node && node->getId(str) == accessOK) return new (interp) StringObj(str.data(), str.size()); else return interp.makeFalse(); } static bool nodeAttributeString(const NodePtr &node, const Char *s, size_t n, const SdataMapper &mapper, StringC &value) { NamedNodeListPtr atts; if (node->getAttributes(atts) != accessOK) return 0; NodePtr att; if (atts->namedNode(GroveString(s, n), att) != accessOK) return 0; bool implied; if (att->getImplied(implied) == accessOK && implied) return 0; GroveString tokens; if (att->tokens(tokens) == accessOK) { value.assign(tokens.data(), tokens.size()); return 1; } NodePtr tem; value.resize(0); if (att->firstChild(tem) == accessOK) { do { GroveString chunk; if (tem->charChunk(mapper, chunk) == accessOK) value.append(chunk.data(), chunk.size()); } while (tem.assignNextChunkSibling() == accessOK); } return 1; } DEFPRIMITIVE(AttributeString, argc, argv, context, interp, loc) { NodePtr node; if (argc > 1) { if (!argv[1]->optSingletonNodeList(context, interp, node)) return argError(interp, loc, InterpreterMessages::notAnOptSingletonNode, 1, argv[1]); if (!node) return interp.makeFalse(); } else { if (!context.currentNode) return noCurrentNodeError(interp, loc); node = context.currentNode; } const Char *s; size_t n; if (!argv[0]->stringData(s, n)) return argError(interp, loc, InterpreterMessages::notAString, 0, argv[0]); StringC value; if (nodeAttributeString(node, s, n, interp, value)) return new (interp) StringObj(value); return interp.makeFalse(); } DEFPRIMITIVE(InheritedAttributeString, argc, argv, context, interp, loc) { NodePtr node; if (argc > 1) { if (!argv[1]->optSingletonNodeList(context, interp, node)) return argError(interp, loc, InterpreterMessages::notAnOptSingletonNode, 1, argv[1]); if (!node) return interp.makeFalse(); } else { if (!context.currentNode) return noCurrentNodeError(interp, loc); node = context.currentNode; } const Char *s; size_t n; if (!argv[0]->stringData(s, n)) return argError(interp, loc, InterpreterMessages::notAString, 0, argv[0]); do { StringC value; if (nodeAttributeString(node, s, n, interp, value)) return new (interp) StringObj(value); } while (node->getParent(node) == accessOK); return interp.makeFalse(); } DEFPRIMITIVE(InheritedElementAttributeString, argc, argv, context, interp, loc) { NodePtr node; if (argc > 2) { if (!argv[2]->optSingletonNodeList(context, interp, node)) return argError(interp, loc, InterpreterMessages::notAnOptSingletonNode, 2, argv[2]); if (!node) return interp.makeFalse(); } else { if (!context.currentNode) return noCurrentNodeError(interp, loc); node = context.currentNode; } StringC gi; if (!convertGeneralName(argv[0], node, gi)) return argError(interp, loc, InterpreterMessages::notAString, 0, argv[0]); const Char *s; size_t n; if (!argv[1]->stringData(s, n)) return argError(interp, loc, InterpreterMessages::notAString, 1, argv[1]); do { GroveString nodeGi; StringC value; if (node->getGi(nodeGi) == accessOK && nodeGi == GroveString(gi.data(), gi.size()) && nodeAttributeString(node, s, n, interp, value)) return new (interp) StringObj(value); } while (node->getParent(node) == accessOK); return interp.makeFalse(); } DEFPRIMITIVE(IsFirstSibling, argc, argv, context, interp, loc) { NodePtr nd; if (argc > 0) { if (!argv[0]->optSingletonNodeList(context, interp, nd) || !nd) return argError(interp, loc, InterpreterMessages::notASingletonNode, 0, argv[0]); } else { if (!context.currentNode) return noCurrentNodeError(interp, loc); nd = context.currentNode; } GroveString gi; NodePtr p; if (nd->firstSibling(p) != accessOK || nd->getGi(gi) != accessOK) return interp.makeFalse(); while (*p != *nd) { GroveString tem; if (p->getGi(tem) == accessOK && tem == gi) return interp.makeFalse(); if (p.assignNextChunkSibling() != accessOK) CANNOT_HAPPEN(); } return interp.makeTrue(); } DEFPRIMITIVE(IsAbsoluteFirstSibling, argc, argv, context, interp, loc) { NodePtr nd; if (argc > 0) { if (!argv[0]->optSingletonNodeList(context, interp, nd) || !nd) return argError(interp, loc, InterpreterMessages::notASingletonNode, 0, argv[0]); } else { if (!context.currentNode) return noCurrentNodeError(interp, loc); nd = context.currentNode; } NodePtr p; if (nd->firstSibling(p) != accessOK) return interp.makeFalse(); while (*p != *nd) { GroveString tem; if (p->getGi(tem) == accessOK) return interp.makeFalse(); if (p.assignNextChunkSibling() != accessOK) CANNOT_HAPPEN(); } return interp.makeTrue(); } DEFPRIMITIVE(IsLastSibling, argc, argv, context, interp, loc) { NodePtr nd; if (argc > 0) { if (!argv[0]->optSingletonNodeList(context, interp, nd) || !nd) return argError(interp, loc, InterpreterMessages::notASingletonNode, 0, argv[0]); } else { if (!context.currentNode) return noCurrentNodeError(interp, loc); nd = context.currentNode; } GroveString gi; if (nd->getGi(gi) != accessOK) return interp.makeFalse(); while (nd.assignNextChunkSibling() == accessOK) { GroveString tem; if (nd->getGi(tem) == accessOK && tem == gi) return interp.makeFalse(); } return interp.makeTrue(); } DEFPRIMITIVE(IsAbsoluteLastSibling, argc, argv, context, interp, loc) { NodePtr nd; if (argc > 0) { if (!argv[0]->optSingletonNodeList(context, interp, nd) || !nd) return argError(interp, loc, InterpreterMessages::notASingletonNode, 0, argv[0]); } else { if (!context.currentNode) return noCurrentNodeError(interp, loc); nd = context.currentNode; } while (nd.assignNextChunkSibling() == accessOK) { GroveString tem; if (nd->getGi(tem) == accessOK) return interp.makeFalse(); } return interp.makeTrue(); } // Return 0 on error. bool matchAncestors(ELObj *obj, const NodePtr &node, ELObj *&unmatched) { NodePtr parent; if (node->getParent(parent) != accessOK) { unmatched = obj; return 1; } if (!matchAncestors(obj, parent, unmatched)) return 0; if (!unmatched->isNil()) { PairObj *pair = unmatched->asPair(); if (!pair) return 0; StringC gi; if (!convertGeneralName(pair->car(), node, gi)) return 0; GroveString tem; if (parent->getGi(tem) == accessOK && tem == GroveString(gi.data(), gi.size())) unmatched = pair->cdr(); } return 1; } DEFPRIMITIVE(IsHaveAncestor, argc, argv, context, interp, loc) { NodePtr node; if (argc > 1) { if (!argv[1]->optSingletonNodeList(context, interp, node) || !node) return argError(interp, loc, InterpreterMessages::notASingletonNode, 1, argv[1]); } else { if (!context.currentNode) return noCurrentNodeError(interp, loc); node = context.currentNode; } StringC gi; if (convertGeneralName(argv[0], node, gi)) { while (node->getParent(node) == accessOK) { GroveString tem; if (node->getGi(tem) == accessOK && tem == GroveString(gi.data(), gi.size())) return interp.makeTrue(); } return interp.makeFalse(); } ELObj *unmatched; if (!matchAncestors(argv[0], node, unmatched)) return argError(interp, loc, InterpreterMessages::notAList, 0, argv[0]); else if (unmatched->isNil()) return interp.makeTrue(); else return interp.makeFalse(); } DEFPRIMITIVE(ChildNumber, argc, argv, context, interp, loc) { NodePtr node; if (argc > 0) { if (!argv[0]->optSingletonNodeList(context, interp, node) || !node) return argError(interp, loc, InterpreterMessages::notASingletonNode, 0, argv[0]); } else { if (!context.currentNode) return noCurrentNodeError(interp, loc); node = context.currentNode; } unsigned long num; if (!interp.childNumber(node, num)) return interp.makeFalse(); return interp.makeInteger(num + 1); } DEFPRIMITIVE(AncestorChildNumber, argc, argv, context, interp, loc) { NodePtr node; if (argc > 1) { if (!argv[1]->optSingletonNodeList(context, interp, node) || !node) return argError(interp, loc, InterpreterMessages::notASingletonNode, 1, argv[1]); } else { if (!context.currentNode) return noCurrentNodeError(interp, loc); node = context.currentNode; } StringC gi; if (!convertGeneralName(argv[0], node, gi)) return argError(interp, loc, InterpreterMessages::notAString, 0, argv[0]); while (node->getParent(node) == accessOK) { GroveString str; if (node->getGi(str) == accessOK && str == GroveString(gi.data(), gi.size())) { unsigned long num; interp.childNumber(node, num); return interp.makeInteger(num + 1); } } return interp.makeFalse(); } DEFPRIMITIVE(HierarchicalNumber, argc, argv, context, interp, loc) { NodePtr node; if (argc > 1) { if (!argv[1]->optSingletonNodeList(context, interp, node) || !node) return argError(interp, loc, InterpreterMessages::notASingletonNode, 1, argv[1]); } else { if (!context.currentNode) return noCurrentNodeError(interp, loc); node = context.currentNode; } // Make a reversed copy of the list of GIs. ELObjDynamicRoot list(interp, 0); ELObj *p = argv[0]; while (!p->isNil()) { PairObj *tem = p->asPair(); if (!tem) return argError(interp, loc, InterpreterMessages::notAList, 0, argv[0]); list = new (interp) PairObj(tem->car(), list); p = tem->cdr(); } p = list; while (p) { PairObj *pair = (PairObj *)p; StringC gi; // FIXME error message not quite right if (!convertGeneralName(pair->car(), node, gi)) return argError(interp, loc, InterpreterMessages::notAString, 0, pair->car()); for (;;) { // Replace the GI by its number. if (node->getParent(node) != accessOK) { pair->setCar(interp.makeInteger(0)); break; } GroveString str; if (node->getGi(str) == accessOK && str == GroveString(gi.data(), gi.size())) { unsigned long num; interp.childNumber(node, num); pair->setCar(interp.makeInteger(num + 1)); break; } } p = pair->cdr(); } // Reverse the list of numbers in place. p = list; ELObj *result = interp.makeNil(); while (p) { PairObj *tem = (PairObj *)p; p = tem->cdr(); tem->setCdr(result); result = tem; } return result; } DEFPRIMITIVE(HierarchicalNumberRecursive, argc, argv, context, interp, loc) { NodePtr node; if (argc > 1) { if (!argv[1]->optSingletonNodeList(context, interp, node) || !node) return argError(interp, loc, InterpreterMessages::notASingletonNode, 1, argv[1]); } else { if (!context.currentNode) return noCurrentNodeError(interp, loc); node = context.currentNode; } StringC gi; if (!convertGeneralName(argv[0], node, gi)) return argError(interp, loc, InterpreterMessages::notAString, 0, argv[0]); ELObjDynamicRoot result(interp, interp.makeNil()); while (node->getParent(node) == accessOK) { GroveString str; if (node->getGi(str) == accessOK && str == GroveString(gi.data(), gi.size())) { unsigned long num; interp.childNumber(node, num); PairObj *pair = new (interp) PairObj(0, result); result = pair; pair->setCar(interp.makeInteger(num + 1)); } } return result; } DEFPRIMITIVE(ElementNumber, argc, argv, context, interp, loc) { NodePtr node; if (argc > 0) { if (!argv[0]->optSingletonNodeList(context, interp, node) || !node) return argError(interp, loc, InterpreterMessages::notASingletonNode, 0, argv[0]); } else { if (!context.currentNode) return noCurrentNodeError(interp, loc); node = context.currentNode; } GroveString gi; if (node->getGi(gi) != accessOK) return interp.makeFalse(); StringC buf(gi.data(), gi.size()); unsigned long num = interp.elementNumber(node, buf); return interp.makeInteger(num); } DEFPRIMITIVE(ElementNumberList, argc, argv, context, interp, loc) { NodePtr node; if (argc > 1) { if (!argv[1]->optSingletonNodeList(context, interp, node) || !node) return argError(interp, loc, InterpreterMessages::notASingletonNode, 1, argv[1]); } else { if (!context.currentNode) return noCurrentNodeError(interp, loc); node = context.currentNode; } ELObjDynamicRoot list(interp, 0); ELObj *p = argv[0]; while (!p->isNil()) { PairObj *tem = p->asPair(); if (!tem) return argError(interp, loc, InterpreterMessages::notAList, 0, argv[0]); list = new (interp) PairObj(tem->car(), list); p = tem->cdr(); } ELObjDynamicRoot result(interp, interp.makeNil()); p = list; if (p) { PairObj *pair = (PairObj *)p; StringC gi; if (!convertGeneralName(pair->car(), node, gi)) return argError(interp, loc, InterpreterMessages::notAString, 0, pair->car()); p = pair->cdr(); while (p) { pair = (PairObj *)p; StringC numGi(gi); if (!convertGeneralName(pair->car(), node, gi)) return argError(interp, loc, InterpreterMessages::notAString, 0, pair->car()); unsigned long num = interp.elementNumberAfter(node, numGi, gi); PairObj *tem = new (interp) PairObj(0, result); result = tem; tem->setCar(interp.makeInteger(num)); p = pair->cdr(); } unsigned long num = interp.elementNumber(node, gi); PairObj *tem = new (interp) PairObj(0, result); result = tem; tem->setCar(interp.makeInteger(num)); } return result; } DEFPRIMITIVE(EntityAttributeString, argc, argv, context, interp, loc) { const Char *entityName; size_t entityNameLen; if (!argv[0]->stringData(entityName, entityNameLen)) return argError(interp, loc, InterpreterMessages::notAString, 0, argv[0]); const Char *attName; size_t attNameLen; if (!argv[1]->stringData(attName, attNameLen)) return argError(interp, loc, InterpreterMessages::notAString, 1, argv[1]); NodePtr node; if (argc > 2) { if (!argv[2]->optSingletonNodeList(context, interp, node) || !node) return argError(interp, loc, InterpreterMessages::notASingletonNode, 2, argv[2]); } else { node = context.currentNode; if (!node) return noCurrentNodeError(interp, loc); } NamedNodeListPtr entities; StringC value; if (node->getGroveRoot(node) == accessOK && node->getEntities(entities) == accessOK && entities->namedNode(GroveString(entityName, entityNameLen), node) == accessOK && nodeAttributeString(node, attName, attNameLen, interp, value)) return new (interp) StringObj(value); return interp.makeFalse(); } DEFPRIMITIVE(EntityGeneratedSystemId, argc, argv, context, interp, loc) { const Char *s; size_t n; if (!argv[0]->stringData(s, n)) return argError(interp, loc, InterpreterMessages::notAString, 0, argv[0]); NodePtr node; if (argc > 1) { if (!argv[1]->optSingletonNodeList(context, interp, node) || !node) return argError(interp, loc, InterpreterMessages::notASingletonNode, 1, argv[1]); } else { node = context.currentNode; if (!node) return noCurrentNodeError(interp, loc); } GroveString str; NamedNodeListPtr entities; if (node->getGroveRoot(node) == accessOK && node->getEntities(entities) == accessOK && entities->namedNode(GroveString(s, n), node) == accessOK && node->getExternalId(node) == accessOK && node->getGeneratedSystemId(str) == accessOK) return new (interp) StringObj(str.data(), str.size()); return interp.makeFalse(); } DEFPRIMITIVE(EntitySystemId, argc, argv, context, interp, loc) { const Char *s; size_t n; if (!argv[0]->stringData(s, n)) return argError(interp, loc, InterpreterMessages::notAString, 0, argv[0]); NodePtr node; if (argc > 1) { if (!argv[1]->optSingletonNodeList(context, interp, node) || !node) return argError(interp, loc, InterpreterMessages::notASingletonNode, 1, argv[1]); } else { node = context.currentNode; if (!node) return noCurrentNodeError(interp, loc); } GroveString str; NamedNodeListPtr entities; if (node->getGroveRoot(node) == accessOK && node->getEntities(entities) == accessOK && entities->namedNode(GroveString(s, n), node) == accessOK && node->getExternalId(node) == accessOK && node->getSystemId(str) == accessOK) return new (interp) StringObj(str.data(), str.size()); return interp.makeFalse(); } DEFPRIMITIVE(EntityPublicId, argc, argv, context, interp, loc) { const Char *s; size_t n; if (!argv[0]->stringData(s, n)) return argError(interp, loc, InterpreterMessages::notAString, 0, argv[0]); NodePtr node; if (argc > 1) { if (!argv[1]->optSingletonNodeList(context, interp, node) || !node) return argError(interp, loc, InterpreterMessages::notASingletonNode, 1, argv[1]); } else { node = context.currentNode; if (!node) return noCurrentNodeError(interp, loc); } GroveString str; NamedNodeListPtr entities; if (node->getGroveRoot(node) == accessOK && node->getEntities(entities) == accessOK) { StringC tem(s, n); tem.resize(entities->normalize(tem.begin(), tem.size())); if (entities->namedNode(GroveString(tem.data(), tem.size()), node) == accessOK && node->getExternalId(node) == accessOK && node->getPublicId(str) == accessOK) return new (interp) StringObj(str.data(), str.size()); } return interp.makeFalse(); } DEFPRIMITIVE(EntityNotation, argc, argv, context, interp, loc) { const Char *s; size_t n; if (!argv[0]->stringData(s, n)) return argError(interp, loc, InterpreterMessages::notAString, 0, argv[0]); NodePtr node; if (argc > 1) { if (!argv[1]->optSingletonNodeList(context, interp, node) || !node) return argError(interp, loc, InterpreterMessages::notASingletonNode, 1, argv[1]); } else { node = context.currentNode; if (!node) return noCurrentNodeError(interp, loc); } GroveString str; NamedNodeListPtr entities; if (node->getGroveRoot(node) == accessOK && node->getEntities(entities) == accessOK && entities->namedNode(GroveString(s, n), node) == accessOK && node->getNotation(node) == accessOK && node->getName(str) == accessOK) return new (interp) StringObj(str.data(), str.size()); return interp.makeFalse(); } DEFPRIMITIVE(EntityText, argc, argv, context, interp, loc) { const Char *s; size_t n; if (!argv[0]->stringData(s, n)) return argError(interp, loc, InterpreterMessages::notAString, 0, argv[0]); NodePtr node; if (argc > 1) { if (!argv[1]->optSingletonNodeList(context, interp, node) || !node) return argError(interp, loc, InterpreterMessages::notASingletonNode, 1, argv[1]); } else { node = context.currentNode; if (!node) return noCurrentNodeError(interp, loc); } GroveString str; NamedNodeListPtr entities; if (node->getGroveRoot(node) == accessOK && node->getEntities(entities) == accessOK && entities->namedNode(GroveString(s, n), node) == accessOK && node->getText(str) == accessOK) return new (interp) StringObj(str.data(), str.size()); return interp.makeFalse(); } DEFPRIMITIVE(EntityType, argc, argv, context, interp, loc) { const Char *s; size_t n; if (!argv[0]->stringData(s, n)) return argError(interp, loc, InterpreterMessages::notAString, 0, argv[0]); NodePtr node; if (argc > 1) { if (!argv[1]->optSingletonNodeList(context, interp, node) || !node) return argError(interp, loc, InterpreterMessages::notASingletonNode, 1, argv[1]); } else { node = context.currentNode; if (!node) return noCurrentNodeError(interp, loc); } NamedNodeListPtr entities; Node::EntityType::Enum type; if (node->getGroveRoot(node) == accessOK && node->getEntities(entities) == accessOK && entities->namedNode(GroveString(s, n), node) == accessOK && node->getEntityType(type) == accessOK) { const char *s; switch (type) { case Node::EntityType::text: s = "text"; break; case Node::EntityType::cdata: s = "cdata"; break; case Node::EntityType::sdata: s = "sdata"; break; case Node::EntityType::ndata: s = "ndata"; break; case Node::EntityType::subdocument: s = "subdocument"; break; case Node::EntityType::pi: s = "pi"; break; default: CANNOT_HAPPEN(); } return interp.makeSymbol(interp.makeStringC(s)); } return interp.makeFalse(); } DEFPRIMITIVE(NotationSystemId, argc, argv, context, interp, loc) { const Char *s; size_t n; if (!argv[0]->stringData(s, n)) return argError(interp, loc, InterpreterMessages::notAString, 0, argv[0]); NodePtr node; if (argc > 1) { if (!argv[1]->optSingletonNodeList(context, interp, node) || !node) return argError(interp, loc, InterpreterMessages::notASingletonNode, 1, argv[1]); } else { node = context.currentNode; if (!node) return noCurrentNodeError(interp, loc); } GroveString str; NamedNodeListPtr notations; if (node->getGroveRoot(node) == accessOK && node->getGoverningDoctype(node) == accessOK && node->getNotations(notations) == accessOK && notations->namedNode(GroveString(s, n), node) == accessOK && node->getExternalId(node) == accessOK && node->getSystemId(str) == accessOK) return new (interp) StringObj(str.data(), str.size()); return interp.makeFalse(); } DEFPRIMITIVE(NotationPublicId, argc, argv, context, interp, loc) { const Char *s; size_t n; if (!argv[0]->stringData(s, n)) return argError(interp, loc, InterpreterMessages::notAString, 0, argv[0]); NodePtr node; if (argc > 1) { if (!argv[1]->optSingletonNodeList(context, interp, node) || !node) return argError(interp, loc, InterpreterMessages::notASingletonNode, 1, argv[1]); } else { node = context.currentNode; if (!node) return noCurrentNodeError(interp, loc); } GroveString str; NamedNodeListPtr notations; if (node->getGroveRoot(node) == accessOK && node->getGoverningDoctype(node) == accessOK && node->getNotations(notations) == accessOK && notations->namedNode(GroveString(s, n), node) == accessOK && node->getExternalId(node) == accessOK && node->getPublicId(str) == accessOK) return new (interp) StringObj(str.data(), str.size()); return interp.makeFalse(); } DEFPRIMITIVE(NotationGeneratedSystemId, argc, argv, context, interp, loc) { const Char *s; size_t n; if (!argv[0]->stringData(s, n)) return argError(interp, loc, InterpreterMessages::notAString, 0, argv[0]); NodePtr node; if (argc > 1) { if (!argv[1]->optSingletonNodeList(context, interp, node) || !node) return argError(interp, loc, InterpreterMessages::notASingletonNode, 1, argv[1]); } else { node = context.currentNode; if (!node) return noCurrentNodeError(interp, loc); } GroveString str; NamedNodeListPtr notations; if (node->getGroveRoot(node) == accessOK && node->getGoverningDoctype(node) == accessOK && node->getNotations(notations) == accessOK && notations->namedNode(GroveString(s, n), node) == accessOK && node->getExternalId(node) == accessOK && node->getGeneratedSystemId(str) == accessOK) return new (interp) StringObj(str.data(), str.size()); return interp.makeFalse(); } DEFPRIMITIVE(GeneralNameNormalize, argc, argv, context, interp, loc) { NodePtr node; if (argc > 1) { if (!argv[1]->optSingletonNodeList(context, interp, node) || !node) return argError(interp, loc, InterpreterMessages::notASingletonNode, 1, argv[1]); } else { node = context.currentNode; if (!node) return noCurrentNodeError(interp, loc); } StringC result; if (!convertGeneralName(argv[0], node, result)) return argError(interp, loc, InterpreterMessages::notAString, 0, argv[0]); return new (interp) StringObj(result); } DEFPRIMITIVE(EntityNameNormalize, argc, argv, context, interp, loc) { const Char *s; size_t n; if (!argv[0]->stringData(s, n)) return argError(interp, loc, InterpreterMessages::notAString, 0, argv[0]); NodePtr node; if (argc > 1) { if (!argv[1]->optSingletonNodeList(context, interp, node) || !node) return argError(interp, loc, InterpreterMessages::notASingletonNode, 1, argv[1]); } else { node = context.currentNode; if (!node) return noCurrentNodeError(interp, loc); } StringC result(s, n); node->getGroveRoot(node); NamedNodeListPtr entities; node->getEntities(entities); result.resize(entities->normalize(result.begin(), result.size())); return new (interp) StringObj(result); } DEFPRIMITIVE(NodeListFirst, argc, argv, context, interp, loc) { NodeListObj *nl = argv[0]->asNodeList(); if (!nl) return argError(interp, loc, InterpreterMessages::notANodeList, 0, argv[0]); NodePtr nd = nl->nodeListFirst(context, interp); return new (interp) NodePtrNodeListObj(nd); } DEFPRIMITIVE(NodeListRest, argc, argv, context, interp, loc) { NodeListObj *nl = argv[0]->asNodeList(); if (!nl) return argError(interp, loc, InterpreterMessages::notANodeList, 0, argv[0]); return nl->nodeListRest(context, interp); } DEFPRIMITIVE(NodeList, argc, argv, context, interp, loc) { if (argc == 0) return interp.makeEmptyNodeList(); int i = argc - 1; NodeListObj *nl = argv[i]->asNodeList(); if (!nl) return argError(interp, loc, InterpreterMessages::notANodeList, i, argv[i]); if (i > 0) { ELObjDynamicRoot protect(interp, nl); for (;;) { i--; NodeListObj *tem = argv[i]->asNodeList(); if (!tem) return argError(interp, loc, InterpreterMessages::notANodeList, i, argv[i]); nl = new (interp) PairNodeListObj(tem, nl); if (i == 0) break; protect = nl; } } return nl; } DEFPRIMITIVE(NodeListNoOrder, argc, argv, context, interp, loc) { NodeListObj *nl = argv[0]->asNodeList(); if (!nl) return argError(interp, loc, InterpreterMessages::notANodeList, 0, argv[0]); return nl->nodeListNoOrder(interp); } DEFPRIMITIVE(IsNodeListEqual, argc, argv, context, interp, loc) { NodeListObj *nl1 = argv[0]->asNodeList(); if (!nl1) return argError(interp, loc, InterpreterMessages::notANodeList, 0, argv[0]); if (nl1 == argv[1]) return interp.makeTrue(); NodeListObj *nl2 = argv[1]->asNodeList(); if (!nl2) return argError(interp, loc, InterpreterMessages::notANodeList, 1, argv[1]); ELObjDynamicRoot protect1(interp, nl1); ELObjDynamicRoot protect2(interp, nl2); for (;;) { NodePtr nd1 = nl1->nodeListFirst(context, interp); NodePtr nd2 = nl2->nodeListFirst(context, interp); if (!nd1) { if (nd2) return interp.makeFalse(); else break; } else if (!nd2) return interp.makeFalse(); else if (*nd1 != *nd2) return interp.makeFalse(); nl1 = nl1->nodeListRest(context, interp); protect1 = nl1; nl2 = nl2->nodeListRest(context, interp); protect2 = nl2; } return interp.makeTrue(); } DEFPRIMITIVE(IsNamedNodeList, argc, argv, context, interp, loc) { if (argv[0]->asNamedNodeList()) return interp.makeTrue(); else return interp.makeFalse(); } DEFPRIMITIVE(NamedNode, argc, argv, context, interp, loc) { const Char *s; size_t n; if (!argv[0]->stringData(s, n)) return argError(interp, loc, InterpreterMessages::notAString, 0, argv[0]); NamedNodeListObj *nnl = argv[1]->asNamedNodeList(); if (!nnl) return argError(interp, loc, InterpreterMessages::notANamedNodeList, 1, argv[1]); return new (interp) NodePtrNodeListObj(nnl->namedNode(s, n)); } DEFPRIMITIVE(NamedNodeListNormalize, argc, argv, context, interp, loc) { const Char *s; size_t n; if (!argv[0]->stringData(s, n)) return argError(interp, loc, InterpreterMessages::notAString, 0, argv[0]); NamedNodeListObj *nnl = argv[1]->asNamedNodeList(); if (!nnl) return argError(interp, loc, InterpreterMessages::notANamedNodeList, 1, argv[1]); if (!argv[2]->asSymbol()) return argError(interp, loc, InterpreterMessages::notASymbol, 2, argv[2]); StringC result(s, n); result.resize(nnl->normalize(result.begin(), result.size())); return new (interp) StringObj(result); } DEFPRIMITIVE(NamedNodeListNames, argc, argv, context, interp, loc) { NamedNodeListObj *nnl = argv[0]->asNamedNodeList(); if (!nnl) return argError(interp, loc, InterpreterMessages::notANamedNodeList, 0, argv[0]); NodeListObj *nl = nnl; PairObj *tail = interp.makePair(0, 0); PairObj *head = tail; ELObjDynamicRoot protect(interp, head); for (;;) { ELObjDynamicRoot protect(interp, nl); NodePtr nd = nl->nodeListFirst(context, interp); if (!nd) break; GroveString str; if (nnl->nodeName(nd, str)) { // protect the StringObj by putting in the head's car head->setCar(new (interp) StringObj(str.data(), str.size())); PairObj *newTail = new (interp) PairObj(head->car(), 0); tail->setCdr(newTail); tail = newTail; } nl = nl->nodeListRest(context, interp); } tail->setCdr(interp.makeNil()); return head->cdr(); } DEFPRIMITIVE(Children, argc, argv, context, interp, loc) { NodePtr node; if (!argv[0]->optSingletonNodeList(context, interp, node)) { NodeListObj *nl = argv[0]->asNodeList(); if (nl) return new (interp) MapNodeListObj(this, nl, new MapNodeListObj::Context(context, loc)); return argError(interp, loc, InterpreterMessages::notANodeList, 0, argv[0]); } if (!node) return argv[0]; NodeListPtr nl; if (node->children(nl) != accessOK) return interp.makeEmptyNodeList(); return new (interp) NodeListPtrNodeListObj(nl); } DEFPRIMITIVE(Follow, argc, argv, context, interp, loc) { NodePtr node; if (!argv[0]->optSingletonNodeList(context, interp, node)) { NodeListObj *nl = argv[0]->asNodeList(); if (nl) return new (interp) MapNodeListObj(this, nl, new MapNodeListObj::Context(context, loc)); return argError(interp, loc, InterpreterMessages::notANodeList, 0, argv[0]); } if (!node) return argv[0]; NodeListPtr nl; if (node->follow(nl) != accessOK) return interp.makeEmptyNodeList(); return new (interp) NodeListPtrNodeListObj(nl); } DEFPRIMITIVE(Descendants, argc, argv, context, interp, loc) { NodePtr node; if (!argv[0]->optSingletonNodeList(context, interp, node)) { NodeListObj *nl = argv[0]->asNodeList(); if (nl) return new (interp) MapNodeListObj(this, nl, new MapNodeListObj::Context(context, loc)); return argError(interp, loc, InterpreterMessages::notANodeList, 0, argv[0]); } return new (interp) DescendantsNodeListObj(node); } DEFPRIMITIVE(Preced, argc, argv, context, interp, loc) { NodePtr node; if (!argv[0]->optSingletonNodeList(context, interp, node)) { NodeListObj *nl = argv[0]->asNodeList(); if (nl) return new (interp) MapNodeListObj(this, nl, new MapNodeListObj::Context(context, loc)); return argError(interp, loc, InterpreterMessages::notANodeList, 0, argv[0]); } NodePtr first; if (!node || node->firstSibling(first) != accessOK) return interp.makeEmptyNodeList(); return new (interp) SiblingNodeListObj(first, node); } DEFPRIMITIVE(Attributes, argc, argv, context, interp, loc) { NodePtr node; if (!argv[0]->optSingletonNodeList(context, interp, node)) { NodeListObj *nl = argv[0]->asNodeList(); if (nl) return new (interp) MapNodeListObj(this, nl, new MapNodeListObj::Context(context, loc)); return argError(interp, loc, InterpreterMessages::notANodeList, 0, argv[0]); } if (!node) return argv[0]; NamedNodeListPtr nnl; if (node->getAttributes(nnl) != accessOK) return interp.makeEmptyNodeList(); return new (interp) NamedNodeListPtrNodeListObj(nnl); } static void nodeData(const NodePtr &nd, const SdataMapper &mapper, bool chunk, StringC &s) { GroveString tem; if (nd->charChunk(mapper, tem) == accessOK) { s.append(tem.data(), chunk ? tem.size() : 1); return; } if (nd->tokens(tem) == accessOK) { s.append(tem.data(), tem.size()); return; } NodePtr cnd; if (nd->firstChild(cnd) == accessOK) { do { nodeData(cnd, mapper, 1, s); } while (cnd.assignNextChunkSibling() == accessOK); return; } // This happens if the data procedure is called on an AVT node if (nd->getToken(tem) == accessOK) s.append(tem.data(), tem.size()); } DEFPRIMITIVE(Data, argc, argv, context, interp, loc) { NodeListObj *nl = argv[0]->asNodeList(); if (!nl) return argError(interp, loc, InterpreterMessages::notANodeList, 0, argv[0]); StringObj *s = new (interp) StringObj; ELObjDynamicRoot protect(interp, s); for (;;) { ELObjDynamicRoot protect(interp, nl); NodePtr nd = nl->nodeListFirst(context, interp); if (!nd) break; bool chunk; nl = nl->nodeListChunkRest(context, interp, chunk); nodeData(nd, interp, chunk, *s); } return s; } DEFPRIMITIVE(ElementWithId, argc, argv, context, interp, loc) { const Char *s; size_t n; if (!argv[0]->stringData(s, n)) return argError(interp, loc, InterpreterMessages::notAString, 0, argv[0]); NodePtr node; if (argc > 1) { if (!argv[1]->optSingletonNodeList(context, interp, node) || !node) return argError(interp, loc, InterpreterMessages::notASingletonNode, 1, argv[1]); } else { node = context.currentNode; if (!node) return noCurrentNodeError(interp, loc); } NamedNodeListPtr elements; if (node->getGroveRoot(node) == accessOK && node->getElements(elements) == accessOK && elements->namedNode(GroveString(s, n), node) == accessOK) return new (interp) NodePtrNodeListObj(node); return interp.makeEmptyNodeList(); } DEFPRIMITIVE(EmptyNodeList, argc, argv, context, interp, loc) { return interp.makeEmptyNodeList(); } static bool decodeKeyArgs(int argc, ELObj **argv, const Identifier::SyntacticKey *keys, int nKeys, Interpreter &interp, const Location &loc, int *pos) { if ((argc & 1) == 1) { interp.setNextLocation(loc); interp.message(InterpreterMessages::oddKeyArgs); return 0; } for (int i = 0; i < nKeys; i++) pos[i] = -1; // First has priority, so scan in reverse order for (int i = argc - 1; i > 0; i -= 2) { KeywordObj *keyObj = argv[i - 1]->asKeyword(); if (!keyObj) { interp.setNextLocation(loc); interp.message(InterpreterMessages::keyArgsNotKey); return 0; } bool found = 0; Identifier::SyntacticKey key; if (keyObj->identifier()->syntacticKey(key)) { for (int j = 0; j < nKeys; j++) { if (key == keys[j]) { pos[j] = i; found = 1; } } } if (!found) { interp.setNextLocation(loc); interp.message(InterpreterMessages::invalidKeyArg, StringMessageArg(keyObj->identifier()->name())); return 0; } } return 1; } DEFPRIMITIVE(NodeProperty, argc, argv, context, interp, loc) { StringObj *str = argv[0]->convertToString(); if (!str) return argError(interp, loc, InterpreterMessages::notAStringOrSymbol, 0, argv[0]); NodePtr node; if (!argv[1]->optSingletonNodeList(context, interp, node) || !node) return argError(interp, loc, InterpreterMessages::notASingletonNode, 1, argv[1]); static const Identifier::SyntacticKey keys[3] = { Identifier::keyDefault, Identifier::keyNull, Identifier::keyIsRcs }; int pos[3]; if (!decodeKeyArgs(argc - 2, argv + 2, keys, 3, interp, loc, pos)) return interp.makeError(); //FIXME: this is just a hack to fix the single duplicate rcsname 'tokens'; // should really be handled in Interpreter. StringC propname; ComponentName::Id cls; ComponentName::Id id = ComponentName::noId; if (*str == "tokens" && node->getClassName(cls) == accessOK && cls == ComponentName::idModelGroup) id = ComponentName::idContentTokens; else interp.lookupNodeProperty(*str, id); if (id != ComponentName::noId) { ELObjPropertyValue value(interp, pos[2] >= 0 && argv[pos[2] + 2] != interp.makeFalse()); AccessResult ret = node->property(id, interp, value); if (ret == accessOK) return value.obj; if (ret == accessNull && pos[1] >= 0) return argv[pos[1] + 2]; } if (pos[0] < 0) { interp.setNextLocation(loc); interp.message(InterpreterMessages::noNodePropertyValue, StringMessageArg(*str)); return interp.makeError(); } return argv[pos[0] + 2]; } DEFPRIMITIVE(SelectByClass, argc, argv, context, interp, loc) { NodeListObj *nl = argv[0]->asNodeList(); if (!nl) return argError(interp, loc, InterpreterMessages::notANodeList, 0, argv[0]); StringObj *str = argv[1]->convertToString(); if (!str) return argError(interp, loc, InterpreterMessages::notAStringOrSymbol, 1, argv[1]); ComponentName::Id id; if (!interp.lookupNodeProperty(*str, id)) return interp.makeEmptyNodeList(); return new (interp) SelectByClassNodeListObj(nl, id); } DEFPRIMITIVE(NodeListMap, argc, argv, context, interp, loc) { FunctionObj *func = argv[0]->asFunction(); if (!func) return argError(interp, loc, InterpreterMessages::notAProcedure, 0, argv[0]); if (func->nRequiredArgs() > 1) { interp.setNextLocation(loc); // FIXME interp.message(InterpreterMessages::missingArg); return interp.makeError(); } if (func->nRequiredArgs() + func->nOptionalArgs() + func->restArg() == 0) { interp.setNextLocation(loc); // FIXME interp.message(InterpreterMessages::tooManyArgs); return interp.makeError(); } interp.makeReadOnly(func); NodeListObj *nl = argv[1]->asNodeList(); if (!nl) return argError(interp, loc, InterpreterMessages::notANodeList, 1, argv[1]); return new (interp) MapNodeListObj(func, nl, new MapNodeListObj::Context(context, loc)); } DEFPRIMITIVE(NodeListRef, argc, argv, context, interp, loc) { NodeListObj *nl = argv[0]->asNodeList(); if (!nl) return argError(interp, loc, InterpreterMessages::notANodeList, 0, argv[0]); long k; if (!argv[1]->exactIntegerValue(k)) return argError(interp, loc, InterpreterMessages::notAnExactInteger, 1, argv[1]); // Must use temporary variable, because operator new may bew called before nodeListRef. NodePtr nd(nl->nodeListRef(k, context, interp)); return new (interp) NodePtrNodeListObj(nd); } DEFPRIMITIVE(NodeListReverse, argc, argv, context, interp, loc) { NodeListObj *nl = argv[0]->asNodeList(); if (!nl) return argError(interp, loc, InterpreterMessages::notANodeList, 0, argv[0]); return nl->nodeListReverse(context, interp); } DEFPRIMITIVE(NodeListLength, argc, argv, context, interp, loc) { NodeListObj *nl = argv[0]->asNodeList(); if (!nl) return argError(interp, loc, InterpreterMessages::notANodeList, 0, argv[0]); return interp.makeInteger(nl->nodeListLength(context, interp)); } DEFPRIMITIVE(SgmlParse, argc, argv, context, interp, loc) { const Char *s; size_t n; if (!argv[0]->stringData(s, n)) return argError(interp, loc, InterpreterMessages::notAString, 0, argv[0]); StringC sysid(s, n); static const Identifier::SyntacticKey keys[2] = { Identifier::keyActive, Identifier::keyParent }; int pos[2]; if (!decodeKeyArgs(argc - 1, argv + 1, keys, 2, interp, loc, pos)) return interp.makeError(); Vector lists[2]; if (pos[0] >= 0) { ELObj *obj = argv[pos[0] + 1]; while (!obj->isNil()) { PairObj *pair = obj->asPair(); if (!pair) return argError(interp, loc, InterpreterMessages::notAList, pos[0] + 1, argv[pos[0] + 1]); if (!pair->car()->stringData(s, n)) return argError(interp, loc, InterpreterMessages::notAString, pos[0] + 1, pair->car()); lists[0].resize(lists[0].size() + 1); lists[0].back().assign(s, n); obj = pair->cdr(); } } NodePtr parent; if (pos[1] >= 0) { if (!argv[pos[1] + 1]->optSingletonNodeList(context, interp, parent) || !parent) return argError(interp, loc, InterpreterMessages::notASingletonNode, pos[1] + 1, argv[pos[1] + 1]); } NodePtr nd; if (!interp.groveManager()->load(sysid, lists[0], parent, nd, lists[1])) return interp.makeEmptyNodeList(); return new (interp) NodePtrNodeListObj(nd); } DEFPRIMITIVE(XSgmlParse, argc, argv, context, interp, loc) { const Char *s; size_t n; if (!argv[0]->stringData(s, n)) return argError(interp, loc, InterpreterMessages::notAString, 0, argv[0]); StringC sysid(s, n); static const Identifier::SyntacticKey keys[3] = { Identifier::keyActive, Identifier::keyArchitecture, Identifier::keyParent }; int pos[3]; if (!decodeKeyArgs(argc - 1, argv + 1, keys, 3, interp, loc, pos)) return interp.makeError(); Vector lists[2]; for (int i = 0; i < 3; i++) { if (pos[i] >= 0) { ELObj *obj = argv[pos[0] + 1]; while (!obj->isNil()) { PairObj *pair = obj->asPair(); if (!pair) return argError(interp, loc, InterpreterMessages::notAList, pos[i] + 1, argv[pos[i] + 1]); if (!pair->car()->stringData(s, n)) return argError(interp, loc, InterpreterMessages::notAString, pos[i] + 1, pair->car()); lists[i].resize(lists[i].size() + 1); lists[i].back().assign(s, n); obj = pair->cdr(); } } } NodePtr parent; if (pos[2] >= 0) { if (!argv[pos[2] + 1]->optSingletonNodeList(context, interp, parent) || !parent) return argError(interp, loc, InterpreterMessages::notASingletonNode, pos[2] + 1, argv[pos[2] + 1]); } NodePtr nd; if (!interp.groveManager()->load(sysid, lists[0], parent, nd, lists[1])) return interp.makeEmptyNodeList(); return new (interp) NodePtrNodeListObj(nd); } DEFPRIMITIVE(ReadEntity, argc, argv, context, interp, loc) { const Char *s; size_t n; if (!argv[0]->stringData(s, n)) return argError(interp, loc, InterpreterMessages::notAString, 0, argv[0]); StringC sysid(s, n); StringObj *contents = new (interp) StringObj; if (interp.groveManager()->readEntity(sysid, *contents)) return contents; return interp.makeError(); } DEFPRIMITIVE(Debug, argc, argv, context, interp, loc) { interp.setNextLocation(loc); interp.message(InterpreterMessages::debug, ELObjMessageArg(argv[0], interp)); return argv[0]; } DEFPRIMITIVE(IfFirstPage, argc, argv, context, interp, loc) { SosofoObj *sosofo[2]; for (int i = 0; i < 2; i++) { sosofo[i] = argv[i]->asSosofo(); if (!sosofo[i]) return argError(interp, loc, InterpreterMessages::notASosofo, i, argv[i]); } return new (interp) PageTypeSosofoObj(FOTBuilder::firstHF, sosofo[0], sosofo[1]); } DEFPRIMITIVE(IfFrontPage, argc, argv, context, interp, loc) { SosofoObj *sosofo[2]; for (int i = 0; i < 2; i++) { sosofo[i] = argv[i]->asSosofo(); if (!sosofo[i]) return argError(interp, loc, InterpreterMessages::notASosofo, i, argv[i]); } return new (interp) PageTypeSosofoObj(FOTBuilder::frontHF, sosofo[0], sosofo[1]); } DEFPRIMITIVE(AllElementNumber, argc, argv, context, interp, loc) { NodePtr node; if (argc > 0) { if (!argv[0]->optSingletonNodeList(context, interp, node)) return argError(interp, loc, InterpreterMessages::notAnOptSingletonNode, 0, argv[0]); } else { if (!context.currentNode) return noCurrentNodeError(interp, loc); node = context.currentNode; } unsigned long n; if (node && node->elementIndex(n) == accessOK) return interp.makeInteger(long(n) + 1); else return interp.makeFalse(); } DEFPRIMITIVE(IsVector, argc, argv, context, interp, loc) { if (argv[0]->asVector()) return interp.makeTrue(); else return interp.makeFalse(); } DEFPRIMITIVE(Vector, argc, argv, context, interp, loc) { Vector v(argc); for (size_t i = 0; i < argc; i++) v[i] = argv[i]; return new (interp) VectorObj(v); } DEFPRIMITIVE(MakeVector, argc, argv, context, interp, loc) { long k; if (!argv[0]->exactIntegerValue(k)) return argError(interp, loc, InterpreterMessages::notAnExactInteger, 0, argv[0]); if (k < 0) { interp.setNextLocation(loc); interp.message(InterpreterMessages::outOfRange); return interp.makeError(); } ELObj *fill = argc > 1 ? argv[1] : interp.makeUnspecified(); Vector v((size_t)k); for (size_t i = 0; i < v.size(); i++) v[i] = fill; return new (interp) VectorObj(v); } DEFPRIMITIVE(VectorSet, argc, argv, context, interp, loc) { VectorObj *v = argv[0]->asVector(); if (!v) return argError(interp, loc, InterpreterMessages::notAVector, 0, argv[0]); long k; if (!argv[1]->exactIntegerValue(k)) return argError(interp, loc, InterpreterMessages::notAnExactInteger, 1, argv[1]); if (k < 0 || (unsigned long)k >= v->size()) { interp.setNextLocation(loc); interp.message(InterpreterMessages::outOfRange); return interp.makeError(); } if (v->readOnly()) { interp.setNextLocation(loc); interp.message(InterpreterMessages::readOnly); return interp.makeError(); } (*v)[k] = argv[2]; return interp.makeUnspecified(); } DEFPRIMITIVE(VectorRef, argc, argv, context, interp, loc) { VectorObj *v = argv[0]->asVector(); if (!v) return argError(interp, loc, InterpreterMessages::notAVector, 0, argv[0]); long k; if (!argv[1]->exactIntegerValue(k)) return argError(interp, loc, InterpreterMessages::notAnExactInteger, 1, argv[1]); if (k < 0 || (unsigned long)k >= v->size()) { interp.setNextLocation(loc); interp.message(InterpreterMessages::outOfRange); return interp.makeError(); } return (*v)[k]; } DEFPRIMITIVE(VectorToList, argc, argv, context, interp, loc) { VectorObj *v = argv[0]->asVector(); if (!v) return argError(interp, loc, InterpreterMessages::notAVector, 0, argv[0]); Vector &vec = *v; ELObjDynamicRoot result(interp, interp.makeNil()); for (size_t i = vec.size(); i > 0; i--) result = new (interp) PairObj(vec[i - 1], result); return result; } DEFPRIMITIVE(ListToVector, argc, argv, context, interp, loc) { Vector v; ELObj *obj = argv[0]; while (!obj->isNil()) { PairObj *pair = obj->asPair(); if (!pair) return argError(interp, loc, InterpreterMessages::notAList, 0, obj); v.push_back(pair->car()); obj = pair->cdr(); } return new (interp) VectorObj(v); } DEFPRIMITIVE(VectorFill, argc, argv, context, interp, loc) { VectorObj *v = argv[0]->asVector(); if (!v) return argError(interp, loc, InterpreterMessages::notAVector, 0, argv[0]); if (v->readOnly()) { interp.setNextLocation(loc); interp.message(InterpreterMessages::readOnly); return interp.makeError(); } Vector &vec = *v; for (size_t i = 0; i < vec.size(); i++) vec[i] = argv[1]; return interp.makeUnspecified(); } DEFPRIMITIVE(Language, argc, argv, context, interp, loc) { StringObj *lang = argv[0]->convertToString(); if (!lang) return argError(interp, loc, InterpreterMessages::notAStringOrSymbol, 0, argv[0]); StringObj *country = argv[1]->convertToString(); if (!country) return argError(interp, loc, InterpreterMessages::notAStringOrSymbol, 1, argv[1]); #ifdef SP_HAVE_LOCALE #ifdef SP_HAVE_WCHAR if (RefLangObj::supportedLanguage(*lang, *country)) return new (interp) RefLangObj (*lang, *country); else #endif #endif return interp.makeFalse(); } DEFPRIMITIVE(IsLanguage, argc, argv, context, interp, loc) { if (argv[0]->asLanguage()) return interp.makeTrue(); else return interp.makeFalse(); } DEFPRIMITIVE(CurrentLanguage, argc, argv, context, interp, loc) { if (context.currentLanguage) return context.currentLanguage; else return interp.defaultLanguage(); } DEFPRIMITIVE(WithLanguage, argc, argv, context, interp, loc) { // Check that argv[0] is a language LanguageObj *lang = argv[0]->asLanguage(); if (!lang) return argError(interp, loc, InterpreterMessages::notALanguage, 0, argv[0]); // Check that argv[1] is a thunk FunctionObj *func = argv[1]->asFunction(); if (!func) return argError(interp, loc, InterpreterMessages::notAProcedure, 1, argv[1]); if (func->totalArgs() > 0) { interp.message(InterpreterMessages::tooManyArgs); return interp.makeError(); } LanguageObj *savedLanguage = context.currentLanguage; context.currentLanguage = lang; VM vm(context, interp); InsnPtr insn(func->makeCallInsn(0, interp, loc, InsnPtr())); ELObj *ret = vm.eval(insn.pointer()); context.currentLanguage = savedLanguage; return ret; } #define GETCURLANG(lang,context,interp) \ const LanguageObj *lang; \ if (context.currentLanguage != 0) \ lang = context.currentLanguage; \ else if (interp.defaultLanguage()->asLanguage() != 0) \ lang = interp.defaultLanguage()->asLanguage(); \ else { \ interp.message(InterpreterMessages::noCurrentLanguage); \ return interp.makeError(); \ } DEFPRIMITIVE(CharLess, argc, argv, context, interp, loc) { GETCURLANG(lang, context, interp); Char c[2]; for (unsigned i = 0; i < 2; i++) if (!argv[i]->charValue(c[i])) return argError(interp, loc, InterpreterMessages::notAChar, i, argv[i]); if (lang->isLess(StringC(c, 1), StringC(c + 1, 1))) return interp.makeTrue(); else return interp.makeFalse(); } DEFPRIMITIVE(CharLessOrEqual, argc, argv, context, interp, loc) { GETCURLANG(lang, context, interp); Char c[2]; for (unsigned i = 0; i < 2; i++) if (!argv[i]->charValue(c[i])) return argError(interp, loc, InterpreterMessages::notAChar, i, argv[i]); if (lang->isLessOrEqual(StringC(c, 1), StringC(c + 1, 1))) return interp.makeTrue(); else return interp.makeFalse(); } DEFPRIMITIVE(CharUpcase, argc, argv, context, interp, loc) { GETCURLANG(lang, context, interp); Char c; if (!argv[0]->charValue(c)) return argError(interp, loc, InterpreterMessages::notAChar, 0, argv[0]); return interp.makeChar(lang->toUpper(c)); } DEFPRIMITIVE(CharDowncase, argc, argv, context, interp, loc) { GETCURLANG(lang, context, interp); Char c; if (!argv[0]->charValue(c)) return argError(interp, loc, InterpreterMessages::notAChar, 0, argv[0]); return interp.makeChar(lang->toLower(c)); } DEFPRIMITIVE(StringEquiv, argc, argv, context, interp, loc) { GETCURLANG(lang, context, interp); const Char *s[2]; size_t n[2]; for (unsigned i = 0; i < 2; i++) if (!argv[i]->stringData(s[i], n[i])) return argError(interp, loc, InterpreterMessages::notAString, i, argv[i]); long k = 0; if (!argv[2]->exactIntegerValue(k) || (k <= 0)) return argError(interp, loc, InterpreterMessages::notAPositiveInteger, 2, argv[2]); if (lang->areEquivalent(StringC(s[0], n[0]), StringC(s[1], n[1]), k)) return interp.makeTrue(); else return interp.makeFalse(); } DEFPRIMITIVE(StringLess, argc, argv, context, interp, loc) { GETCURLANG(lang, context, interp); const Char *s[2]; size_t n[2]; for (unsigned i = 0; i < 2; i++) if (!argv[i]->stringData(s[i], n[i])) return argError(interp, loc, InterpreterMessages::notAString, i, argv[i]); if (lang->isLess(StringC(s[0], n[0]), StringC(s[1], n[1]))) return interp.makeTrue(); else return interp.makeFalse(); } DEFPRIMITIVE(StringLessOrEqual, argc, argv, context, interp, loc) { GETCURLANG(lang, context, interp); const Char *s[2]; size_t n[2]; for (unsigned i = 0; i < 2; i++) if (!argv[i]->stringData(s[i], n[i])) return argError(interp, loc, InterpreterMessages::notAString, i, argv[i]); if (lang->isLessOrEqual(StringC(s[0], n[0]), StringC(s[1], n[1]))) return interp.makeTrue(); else return interp.makeFalse(); } DEFPRIMITIVE(Assoc, argc, argv, context, interp, loc) { ELObj *list = argv[1]; for (;;) { PairObj *pair = list->asPair(); if (pair) { PairObj *car = pair->car()->asPair(); if (!car) return argError(interp, loc, InterpreterMessages::notAnAlist, 1, argv[1]); if (ELObj::equal(*car->car(), *argv[0])) return car; list = pair->cdr(); } else if (list->isNil()) break; else return argError(interp, loc, InterpreterMessages::notAList, 1, argv[1]); } return interp.makeFalse(); } DEFPRIMITIVE(KeywordToString, argc, argv, context, interp, loc) { KeywordObj *obj = argv[0]->asKeyword(); if (!obj) return argError(interp, loc, InterpreterMessages::notAKeyword, 0, argv[0]); return new (interp) StringObj(obj->identifier()->name()); } DEFPRIMITIVE(StringToKeyword, argc, argv, context, interp, loc) { const Char *s; size_t n; if (!argv[0]->stringData(s, n)) return argError(interp, loc, InterpreterMessages::notAString, 0, argv[0]); return interp.makeKeyword(StringC(s, n)); } DEFPRIMITIVE(IsExact, argc, argv, context, interp, loc) { long n; double d; int dim; switch (argv[0]->quantityValue(n, d, dim)) { case ELObj::noQuantity: return argError(interp, loc, InterpreterMessages::notAQuantity, 0, argv[0]); case ELObj::doubleQuantity: return interp.makeFalse(); case ELObj::longQuantity: return interp.makeTrue(); default: CANNOT_HAPPEN(); } } DEFPRIMITIVE(IsInexact, argc, argv, context, interp, loc) { long n; double d; int dim; switch (argv[0]->quantityValue(n, d, dim)) { case ELObj::noQuantity: return argError(interp, loc, InterpreterMessages::notAQuantity, 0, argv[0]); case ELObj::doubleQuantity: return interp.makeTrue(); case ELObj::longQuantity: return interp.makeFalse(); default: CANNOT_HAPPEN(); } } #define DEFNUMPRED(NAME, OP) \ DEFPRIMITIVE(NAME, argc, argv, context, interp, loc) \ { \ long n; \ double d; \ int dim; \ switch (argv[0]->quantityValue(n, d, dim)) { \ case ELObj::noQuantity: \ return argError(interp, loc, \ InterpreterMessages::notAQuantity, 0, argv[0]); \ case ELObj::doubleQuantity: \ if (d OP 0.0) \ return interp.makeTrue(); \ else \ return interp.makeFalse(); \ case ELObj::longQuantity: \ if (n OP 0) \ return interp.makeTrue(); \ else \ return interp.makeFalse(); \ default: \ CANNOT_HAPPEN(); \ } \ } DEFNUMPRED(IsZero, == ) DEFNUMPRED(IsPositive, > ) DEFNUMPRED(IsNegative, < ) DEFPRIMITIVE(IsOdd, argc, argv, context, interp, loc) { long n; double d; int dim; switch (argv[0]->quantityValue(n, d, dim)) { case ELObj::noQuantity: case ELObj::doubleQuantity: return argError(interp, loc, InterpreterMessages::notAnInteger, 0, argv[0]); case ELObj::longQuantity: if (n % 2) return interp.makeTrue(); else return interp.makeFalse(); default: CANNOT_HAPPEN(); } } DEFPRIMITIVE(IsEven, argc, argv, context, interp, loc) { long n; double d; int dim; switch (argv[0]->quantityValue(n, d, dim)) { case ELObj::noQuantity: case ELObj::doubleQuantity: return argError(interp, loc, InterpreterMessages::notAnInteger, 0, argv[0]); case ELObj::longQuantity: if (n % 2) return interp.makeFalse(); else return interp.makeTrue(); default: CANNOT_HAPPEN(); } } DEFPRIMITIVE(Exp, argc, argv, context, interp, loc) { double d; if (!argv[0]->realValue(d)) return argError(interp, loc, InterpreterMessages::notANumber, 0, argv[0]); return new (interp) RealObj(exp(d)); } DEFPRIMITIVE(Log, argc, argv, context, interp, loc) { double d; if (!argv[0]->realValue(d)) return argError(interp, loc, InterpreterMessages::notANumber, 0, argv[0]); if (d <= 0) { interp.setNextLocation(loc); interp.message(InterpreterMessages::outOfRange); return interp.makeError(); } return new (interp) RealObj(log(d)); } DEFPRIMITIVE(Sin, argc, argv, context, interp, loc) { double d; if (!argv[0]->realValue(d)) return argError(interp, loc, InterpreterMessages::notANumber, 0, argv[0]); return new (interp) RealObj(sin(d)); } DEFPRIMITIVE(Cos, argc, argv, context, interp, loc) { double d; if (!argv[0]->realValue(d)) return argError(interp, loc, InterpreterMessages::notANumber, 0, argv[0]); return new (interp) RealObj(cos(d)); } DEFPRIMITIVE(Tan, argc, argv, context, interp, loc) { double d; if (!argv[0]->realValue(d)) return argError(interp, loc, InterpreterMessages::notANumber, 0, argv[0]); return new (interp) RealObj(tan(d)); } DEFPRIMITIVE(Asin, argc, argv, context, interp, loc) { double d; if (!argv[0]->realValue(d)) return argError(interp, loc, InterpreterMessages::notANumber, 0, argv[0]); if (d < -1 || d > 1) { interp.setNextLocation(loc); interp.message(InterpreterMessages::outOfRange); return interp.makeError(); } return new (interp) RealObj(asin(d)); } DEFPRIMITIVE(Acos, argc, argv, context, interp, loc) { double d; if (!argv[0]->realValue(d)) return argError(interp, loc, InterpreterMessages::notANumber, 0, argv[0]); if (d < -1 || d > 1) { interp.setNextLocation(loc); interp.message(InterpreterMessages::outOfRange); return interp.makeError(); } return new (interp) RealObj(acos(d)); } DEFPRIMITIVE(Atan, argc, argv, context, interp, loc) { long lResult; double dResult; int dim; ELObj::QuantityType type = argv[0]->quantityValue(lResult, dResult, dim); if (argc == 1) { if (type == ELObj::noQuantity || dim != 0) return argError(interp, loc, InterpreterMessages::notANumber, 0, argv[0]); if (type == ELObj::longQuantity) dResult = lResult; return new (interp) RealObj(atan(dResult)); } long lResult2; double dResult2; int dim2; ELObj::QuantityType type2 = argv[1]->quantityValue(lResult2, dResult2, dim2); switch (type) { case ELObj::noQuantity: return argError(interp, loc, InterpreterMessages::notAQuantity, 0, argv[0]); case ELObj::doubleQuantity: break; case ELObj::longQuantity: dResult = lResult; break; default: CANNOT_HAPPEN(); } switch (type2) { case ELObj::noQuantity: return argError(interp, loc, InterpreterMessages::notAQuantity, 1, argv[1]); case ELObj::doubleQuantity: break; case ELObj::longQuantity: dResult2 = lResult2; break; default: CANNOT_HAPPEN(); } if (dim != dim2) { interp.setNextLocation(loc); interp.message(InterpreterMessages::incompatibleDimensions); return interp.makeError(); } // FIXME: the standard is a bit vague about the range // of atan with two arguments. The description sounds like // it should be [0,2pi] or [-pi,pi], but then it says // the range is [-pi/2,pi/2]. I guess that the last sentence // applies only to the one-argument version of atan, so that // the semantics would parallel that of the C libraries // atan/atan2. return new (interp) RealObj(atan2(dResult, dResult2)); } DEFPRIMITIVE(XExpt, argc, argv, context, interp, loc) { long n1, n2; double d1, d2; int dim1, dim2; ELObj::QuantityType q1 = argv[0]->quantityValue(n1, d1, dim1); ELObj::QuantityType q2 = argv[0]->quantityValue(n2, d2, dim2); if (q1 == ELObj::noQuantity) return argError(interp, loc, InterpreterMessages::notAQuantity, 0, argv[0]); else if (dim1 != 0) { if (!argv[1]->exactIntegerValue(n2)) return argError(interp, loc, InterpreterMessages::notAnExactInteger, 1, argv[1]); return new (interp) QuantityObj(pow(d1,n2), dim1*n2); } else { if ((q2 == ELObj::noQuantity) || (dim2 != 0)) return argError(interp, loc, InterpreterMessages::notANumber, 1, argv[1]); double res = pow(d1, d2); long tem; if (argv[0]->exactIntegerValue(tem) && argv[1]->exactIntegerValue(tem) && fabs(res) < LONG_MAX) return interp.makeInteger((long)res); return new (interp) RealObj(res); } } DEFPRIMITIVE(Expt, argc, argv, context, interp, loc) { double d, d2; if (!argv[0]->realValue(d)) return argError(interp, loc, InterpreterMessages::notANumber, 0, argv[0]); if (!argv[1]->realValue(d2)) return argError(interp, loc, InterpreterMessages::notANumber, 1, argv[1]); double res = pow(d, d2); long tem; if (argv[0]->exactIntegerValue(tem) && argv[1]->exactIntegerValue(tem) && fabs(res) < LONG_MAX) return interp.makeInteger((long)res); return new (interp) RealObj(res); } DEFPRIMITIVE(ExactToInexact, argc, argv, context, interp, loc) { long n; double d; int dim; switch (argv[0]->quantityValue(n, d, dim)) { case ELObj::noQuantity: return argError(interp, loc, InterpreterMessages::notAQuantity, 0, argv[0]); case ELObj::doubleQuantity: return argv[0]; case ELObj::longQuantity: argv[0]->realValue(d); return new (interp) RealObj(d); default: CANNOT_HAPPEN(); } } DEFPRIMITIVE(InexactToExact, argc, argv, context, interp, loc) { long n; double d; int dim; switch (argv[0]->quantityValue(n, d, dim)) { case ELObj::noQuantity: return argError(interp, loc, InterpreterMessages::notAQuantity, 0, argv[0]); case ELObj::doubleQuantity: if (argv[0]->realValue(d) && modf(d, &d) == 0.0 && fabs(d) < LONG_MAX && dim == 0) return interp.makeInteger((long)d); interp.setNextLocation(loc); interp.message(InterpreterMessages::noExactRepresentation, ELObjMessageArg(argv[0], interp)); case ELObj::longQuantity: // fall through return argv[0]; default: CANNOT_HAPPEN(); } } DEFPRIMITIVE(QuantityToNumber, argc, argv, context, interp, loc) { // FIXME this is wrong, but what exactly is the // `number of the quantity' ??? long n; double d; int dim; switch (argv[0]->quantityValue(n, d, dim)) { case ELObj::noQuantity: return argError(interp, loc, InterpreterMessages::notAQuantity, 0, argv[0]); case ELObj::doubleQuantity: if (dim == 0) return new (interp) RealObj(d); else return new (interp) RealObj(d * pow(0.0254/interp.unitsPerInch(), dim)); case ELObj::longQuantity: if (dim == 0) return interp.makeInteger(n); else return new (interp) RealObj(n * pow(0.0254/interp.unitsPerInch(), dim)); default: CANNOT_HAPPEN(); } } DEFPRIMITIVE(StringToList, argc, argv, context, interp, loc) { const Char *s; size_t n; if (!argv[0]->stringData(s, n)) return argError(interp, loc, InterpreterMessages::notAString, 0, argv[0]); ELObjDynamicRoot protect(interp, interp.makeNil()); for (int i = n; i > 0; i--) { // We have to do it in this order, to ensure that no object is GC'ed PairObj *p = interp.makePair(0, protect); protect = p; p->setCar(interp.makeChar(s[i - 1])); } return protect; } DEFPRIMITIVE(ListToString, argc, argv, context, interp, loc) { StringObj *obj = new (interp) StringObj; ELObj *list = argv[0]; for (;;) { PairObj *pair = list->asPair(); if (pair) { Char c; if (!pair->car()->charValue(c)) return argError(interp, loc, InterpreterMessages::notACharList, 0, list); *obj += c; list = pair->cdr(); } else if (list->isNil()) break; else return argError(interp, loc, InterpreterMessages::notAList, 0, list); } return obj; } static time_t timeConv(const Char *s, size_t n) { char buf[100]; unsigned i; for ( i = 0; i < n && i < (sizeof(buf) - 1); i++) buf[i] = char(s[i]); buf[i] = 0; time_t today_sec = time(NULL); struct tm tim, *today; int nparsed; today = localtime(&today_sec); /* First try to parse as time string without date */ /* Defaults are same as of today */ memcpy(&tim, today, sizeof(tim)); nparsed = sscanf(buf, "%d:%d:%d", &tim.tm_hour, &tim.tm_min, &tim.tm_sec); /* If we got only one number, it could be a year so try to parse complete format */ if ( nparsed < 2 ) { /* Defaults are set to zero */ memset( &tim, 0, sizeof(tim) ); /* This accepts any non digit character between the date and time spec */ nparsed = sscanf(buf, "%d-%d-%d%*[^0-9]%d:%d:%d", &tim.tm_year, &tim.tm_mon, &tim.tm_mday, &tim.tm_hour, &tim.tm_min, &tim.tm_sec); switch (nparsed) { case 0: /* Invalid parse */ return (time_t)-1; /* Not reached */ case 1: /* We only got a year set to January First Month is already set to 0 */ /* Fall through */ case 2: tim.tm_mday = 1; /* Fall through to month normalization */ default: tim.tm_mon -= 1; break; } if (tim.tm_year < 38 ) tim.tm_year += 100; /* Y2K workaround */ else if (tim.tm_year >= 1900) tim.tm_year -= 1900; } return mktime(&tim); } #define DEFTIMECOMP(NAME, OP) \ DEFPRIMITIVE(NAME, argc, argv, context, interp, loc) \ { \ const Char *s1, *s2; \ size_t n1, n2; \ time_t t1, t2; \ if (!argv[0]->stringData(s1, n1)) \ return argError(interp, loc, \ InterpreterMessages::notAString, 0, argv[0]); \ if (!argv[1]->stringData(s2, n2)) \ return argError(interp, loc, \ InterpreterMessages::notAString, 1, argv[1]); \ if ( (t1 = timeConv(s1, n1)) == (time_t)-1 ) \ return argError(interp, loc, \ InterpreterMessages::notATimeString, 0, argv[0]); \ if ( (t2 = timeConv(s2, n2)) == (time_t)-1 ) \ return argError(interp, loc, \ InterpreterMessages::notATimeString, 1, argv[1]); \ if (timeConv(s1, n1) OP timeConv(s2, n2)) \ return interp.makeTrue(); \ else \ return interp.makeFalse(); \ } DEFTIMECOMP(TimeLess, < ) DEFTIMECOMP(TimeGreater, > ) DEFTIMECOMP(TimeLessOrEqual, <= ) DEFTIMECOMP(TimeGreaterOrEqual, >= ) DEFPRIMITIVE(MapConstructor, argc, argv, context, interp, loc) { FunctionObj *func = argv[0]->asFunction(); if (!func) return argError(interp, loc, InterpreterMessages::notAProcedure, 0, argv[0]); if (func->totalArgs() > 0) { interp.setNextLocation(loc); interp.message(InterpreterMessages::tooManyArgs); return interp.makeError(); } NodeListObj *nl = argv[1]->asNodeList(); ELObjDynamicRoot protect1(interp, nl); if (!nl) return argError(interp, loc, InterpreterMessages::notANodeList, 1, argv[1]); AppendSosofoObj *obj = new (interp) AppendSosofoObj; ELObjDynamicRoot protect2(interp, obj); NodePtr nd; ELObj *ret; InsnPtr insn(func->makeCallInsn(0, interp, loc, InsnPtr())); VM vm(context, interp); while (nd = nl->nodeListFirst(context, interp)) { nl = nl->nodeListRest(context, interp); protect1 = nl; EvalContext::CurrentNodeSetter cns(nd, context.processingMode, vm); ret = vm.eval(insn.pointer()); if (!ret->asSosofo()) { interp.setNextLocation(loc); interp.message(InterpreterMessages::returnNotSosofo); return interp.makeError(); } obj->append(ret->asSosofo()); } return obj; } void Interpreter::installPrimitives() { #define PRIMITIVE(name, string, nRequired, nOptional, rest) \ installPrimitive(string, new (*this) name ## PrimitiveObj); #define XPRIMITIVE(name, string, nRequired, nOptional, rest) \ installXPrimitive("UNREGISTERED::James Clark//Procedure::", \ string, new (*this) name ## PrimitiveObj); #define XXPRIMITIVE(name, string, nRequired, nOptional, rest) \ installXPrimitive("UNREGISTERED::OpenJade//Procedure::", \ string, new (*this) name ## PrimitiveObj); #define PRIMITIVE2(name, string, nRequired, nOptional, rest) \ if (dsssl2()) installPrimitive(string, new (*this) name ## PrimitiveObj); #include "primitive.h" #undef PRIMITIVE #undef XPRIMITIVE #undef XXPRIMITIVE #undef PRIMITIVE2 FunctionObj *apply = new (*this) ApplyPrimitiveObj; makePermanent(apply); lookup(makeStringC("apply"))->setValue(apply); if (dsssl2()) { FunctionObj *callCC = new (*this) CallWithCurrentContinuationPrimitiveObj; makePermanent(callCC); lookup(makeStringC("call-with-current-continuation"))->setValue(callCC); } if (dsssl2()) lookup(makeStringC("string->quantity")) ->setValue(lookup(makeStringC("string->number"))->computeValue(0, *this)); } void Interpreter::installPrimitive(const char *s, PrimitiveObj *value) { makePermanent(value); Identifier *ident = lookup(makeStringC(s)); ident->setValue(value); value->setIdentifier(ident); StringC pubid(makeStringC("ISO/IEC 10179:1996//Procedure::")); pubid += makeStringC(s); externalProcTable_.insert(pubid, value); } void Interpreter::installXPrimitive(const char *prefix, const char *s, PrimitiveObj *value) { makePermanent(value); value->setIdentifier(lookup(makeStringC(s))); StringC pubid(makeStringC(prefix)); pubid += makeStringC(s); externalProcTable_.insert(pubid, value); } DescendantsNodeListObj::DescendantsNodeListObj(const NodePtr &start, unsigned depth) : start_(start), depth_(depth) { advance(start_, depth_); } NodePtr DescendantsNodeListObj::nodeListFirst(EvalContext &, Interpreter &) { return start_; } NodeListObj *DescendantsNodeListObj::nodeListRest(EvalContext &context, Interpreter &interp) { DescendantsNodeListObj *obj = new (interp) DescendantsNodeListObj(*this); advance(obj->start_, obj->depth_); return obj; } NodeListObj *DescendantsNodeListObj::nodeListChunkRest(EvalContext &context, Interpreter &interp, bool &chunk) { DescendantsNodeListObj *obj = new (interp) DescendantsNodeListObj(*this); chunkAdvance(obj->start_, obj->depth_); chunk = 1; return obj; } void DescendantsNodeListObj::advance(NodePtr &nd, unsigned &depth) { if (!nd) return; if (nd.assignFirstChild() == accessOK) { depth++; return; } if (depth == 0) { nd.clear(); return; } while (nd.assignNextSibling() != accessOK) { if (depth == 1 || nd.assignOrigin() != accessOK) { nd.clear(); return; } depth--; } } void DescendantsNodeListObj::chunkAdvance(NodePtr &nd, unsigned &depth) { if (!nd) return; if (nd.assignFirstChild() == accessOK) { depth++; return; } if (depth == 0) { nd.clear(); return; } while (nd.assignNextChunkSibling() != accessOK) { if (depth == 1 || nd.assignOrigin() != accessOK) { nd.clear(); return; } depth--; } } SelectByClassNodeListObj::SelectByClassNodeListObj(NodeListObj *nl, ComponentName::Id cls) : nodeList_(nl), cls_(cls) { hasSubObjects_ = 1; } NodePtr SelectByClassNodeListObj::nodeListFirst(EvalContext &context, Interpreter &interp) { for (;;) { NodePtr nd = nodeList_->nodeListFirst(context, interp); if (!nd || nd->classDef().className == cls_) return nd; // All nodes in a chunk have the same class bool chunk; nodeList_ = nodeList_->nodeListChunkRest(context, interp, chunk); } // not reached return NodePtr(); } NodeListObj *SelectByClassNodeListObj::nodeListRest(EvalContext &context, Interpreter &interp) { for (;;) { NodePtr nd = nodeList_->nodeListFirst(context, interp); if (!nd || nd->classDef().className == cls_) break; // All nodes in a chunk have the same class bool chunk; nodeList_ = nodeList_->nodeListChunkRest(context, interp, chunk); } NodeListObj *tem = nodeList_->nodeListRest(context, interp); ELObjDynamicRoot protect(interp, tem); return new (interp) SelectByClassNodeListObj(tem, cls_); } NodeListObj *SelectByClassNodeListObj::nodeListChunkRest(EvalContext &context, Interpreter &interp, bool &chunk) { for (;;) { NodePtr nd = nodeList_->nodeListFirst(context, interp); if (!nd) return interp.makeEmptyNodeList(); if (nd->classDef().className == cls_) break; bool tem; nodeList_ = nodeList_->nodeListChunkRest(context, interp, tem); } NodeListObj *tem = nodeList_->nodeListChunkRest(context, interp, chunk); ELObjDynamicRoot protect(interp, tem); return new (interp) SelectByClassNodeListObj(tem, cls_); } void SelectByClassNodeListObj::traceSubObjects(Collector &c) const { c.trace(nodeList_); } MapNodeListObj::MapNodeListObj(FunctionObj *func, NodeListObj *nl, const ConstPtr &context, NodeListObj *mapped) : func_(func), nl_(nl), context_(context), mapped_(mapped) { hasSubObjects_ = 1; } NodePtr MapNodeListObj::nodeListFirst(EvalContext &context, Interpreter &interp) { for (;;) { if (!mapped_) { mapNext(context, interp); if (!mapped_) break; } NodePtr nd = mapped_->nodeListFirst(context, interp); if (nd) return nd; mapped_ = 0; } return NodePtr(); } NodeListObj *MapNodeListObj::nodeListRest(EvalContext &context, Interpreter &interp) { for (;;) { if (!mapped_) { mapNext(context, interp); if (!mapped_) break; } NodePtr nd = mapped_->nodeListFirst(context, interp); if (nd) { NodeListObj *tem = mapped_->nodeListRest(context, interp); ELObjDynamicRoot protect(interp, tem); return new (interp) MapNodeListObj(func_, nl_, context_, tem); } mapped_ = 0; } return interp.makeEmptyNodeList(); } void MapNodeListObj::mapNext(EvalContext &context, Interpreter &interp) { if (!func_) return; NodePtr nd = nl_->nodeListFirst(context, interp); if (!nd) return; VM vm(context, interp); context_->set(vm); InsnPtr insn(func_->makeCallInsn(1, interp, context_->loc, InsnPtr())); ELObj *ret = vm.eval(insn.pointer(), 0, new (interp) NodePtrNodeListObj(nd)); if (interp.isError(ret)) { func_ = 0; return; } mapped_ = ret->asNodeList(); if (!mapped_) { interp.setNextLocation(context_->loc); interp.message(InterpreterMessages::returnNotNodeList); func_ = 0; return; } nl_ = nl_->nodeListRest(context, interp); } void MapNodeListObj::traceSubObjects(Collector &c) const { c.trace(nl_); c.trace(func_); c.trace(mapped_); context_->traceSubObjects(c); } bool MapNodeListObj::suppressError() { return func_ == 0; } MapNodeListObj::Context::Context(const EvalContext &context, const Location &l) : loc(l), haveStyleStack_(context.styleStack != 0), processingMode_(context.processingMode), currentNode_(context.currentNode), overridingStyle_(context.overridingStyle) { } void MapNodeListObj::Context::set(EvalContext &context) const { context.processingMode = processingMode_; context.currentNode = currentNode_; context.overridingStyle = overridingStyle_; if (!haveStyleStack_) context.styleStack = 0; } void MapNodeListObj::Context::traceSubObjects(Collector &c) const { c.trace(overridingStyle_); } SelectElementsNodeListObj::SelectElementsNodeListObj(NodeListObj *nodeList, const ConstPtr &patterns) : nodeList_(nodeList), patterns_(patterns) { ASSERT(!patterns_.isNull()); hasSubObjects_ = 1; } SelectElementsNodeListObj::SelectElementsNodeListObj(NodeListObj *nodeList, NCVector &patterns) : nodeList_(nodeList) { hasSubObjects_ = 1; Ptr tem(new PatternSet); tem->swap(patterns); patterns_ = tem; } void SelectElementsNodeListObj::traceSubObjects(Collector &c) const { c.trace(nodeList_); } NodePtr SelectElementsNodeListObj::nodeListFirst(EvalContext &context, Interpreter &interp) { for (;;) { NodePtr nd = nodeList_->nodeListFirst(context, interp); if (!nd) return nd; for (size_t i = 0; i < patterns_->size(); i++) if ((*patterns_)[i].matches(nd, interp)) return nd; bool chunk; nodeList_ = nodeList_->nodeListChunkRest(context, interp, chunk); } // not reached return NodePtr(); } NodeListObj *SelectElementsNodeListObj::nodeListRest(EvalContext &context, Interpreter &interp) { for (;;) { NodePtr nd = nodeList_->nodeListFirst(context, interp); if (!nd) break; bool matched = 0; for (size_t i = 0; i < patterns_->size(); i++) { if ((*patterns_)[i].matches(nd, interp)) { matched = 1; break; } } if (matched) break; bool chunk; nodeList_ = nodeList_->nodeListChunkRest(context, interp, chunk); } bool chunk; NodeListObj *tem = nodeList_->nodeListChunkRest(context, interp, chunk); ELObjDynamicRoot protect(interp, tem); return new (interp) SelectElementsNodeListObj(tem, patterns_); } SiblingNodeListObj::SiblingNodeListObj(const NodePtr &first, const NodePtr &end) : first_(first), end_(end) { } NodePtr SiblingNodeListObj::nodeListFirst(EvalContext &, Interpreter &) { if (*first_ == *end_) return NodePtr(); return first_; } NodeListObj *SiblingNodeListObj::nodeListRest(EvalContext &context, Interpreter &interp) { if (*first_ == *end_) return interp.makeEmptyNodeList(); NodePtr nd; if (first_->nextSibling(nd) != accessOK) CANNOT_HAPPEN(); return new (interp) SiblingNodeListObj(nd, end_); } NodeListObj *SiblingNodeListObj::nodeListChunkRest(EvalContext &context, Interpreter &interp, bool &chunk) { if (first_->chunkContains(*end_)) { chunk = 0; return nodeListRest(context, interp); } NodePtr nd; if (first_->nextChunkSibling(nd) != accessOK) CANNOT_HAPPEN(); chunk = 1; return new (interp) SiblingNodeListObj(nd, end_); } #ifdef DSSSL_NAMESPACE } #endif #include "primitive_inst.cxx" openjade-1.3.2/style/primitive.h0100664000076400007640000002511306755641431014753 0ustar ianian// Copyright (c) 1996 James Clark // See the file copying.txt for copying permission. PRIMITIVE(Cons, "cons", 2, 0, 0) PRIMITIVE(List, "list", 0, 0, 1) PRIMITIVE(IsNull, "null?", 1, 0, 0) PRIMITIVE(IsList, "list?", 1, 0, 0) PRIMITIVE(IsPair, "pair?", 1, 0, 0) PRIMITIVE(IsEqual, "equal?", 2, 0, 0) PRIMITIVE(Car, "car", 1, 0, 0) PRIMITIVE(Cdr, "cdr", 1, 0, 0) PRIMITIVE(Length, "length", 1, 0, 0) PRIMITIVE(Append, "append", 0, 0, 1) PRIMITIVE(Reverse, "reverse", 1, 0, 0) PRIMITIVE(ListTail, "list-tail", 2, 0, 0) PRIMITIVE(ListRef, "list-ref", 2, 0, 0) PRIMITIVE(Member, "member", 2, 0, 0) PRIMITIVE(Not, "not", 1, 0, 0) PRIMITIVE(IsSymbol, "symbol?", 1, 0, 0) PRIMITIVE(IsKeyword, "keyword?", 1, 0, 0) PRIMITIVE(IsBoolean, "boolean?", 1, 0, 0) PRIMITIVE(IsProcedure, "procedure?", 1, 0, 0) PRIMITIVE(IsString, "string?", 1, 0, 0) PRIMITIVE(IsInteger, "integer?", 1, 0, 0) PRIMITIVE(IsReal, "real?", 1, 0, 0) PRIMITIVE(IsNumber, "number?", 1, 0, 0) PRIMITIVE(IsQuantity, "quantity?", 1, 0, 0) PRIMITIVE(IsChar, "char?", 1, 0, 0) PRIMITIVE(IsCharEqual, "char=?", 2, 0, 0) PRIMITIVE(String, "string", 0, 0, 1) PRIMITIVE(SymbolToString, "symbol->string", 1, 0, 0) PRIMITIVE(StringToSymbol, "string->symbol", 1, 0, 0) PRIMITIVE(StringLength, "string-length", 1, 0, 0) PRIMITIVE(IsStringEqual, "string=?", 2, 0, 0) PRIMITIVE(StringAppend, "string-append", 0, 0, 1) PRIMITIVE(StringRef, "string-ref", 2, 0, 0) PRIMITIVE(Substring, "substring", 3, 0, 0) PRIMITIVE(Equal, "=", 0, 0, 1) PRIMITIVE(Plus, "+", 0, 0, 1) PRIMITIVE(Minus, "-", 1, 0, 1) PRIMITIVE(Multiply, "*", 0, 0, 1) PRIMITIVE(Divide, "/", 1, 0, 1) PRIMITIVE(Quotient, "quotient", 2, 0, 0) PRIMITIVE(Remainder, "remainder", 2, 0, 0) PRIMITIVE(Modulo, "modulo", 2, 0, 0) PRIMITIVE(Less, "<", 0, 0, 1) PRIMITIVE(Greater, ">", 0, 0, 1) PRIMITIVE(LessEqual, "<=", 0, 0, 1) PRIMITIVE(GreaterEqual, ">=", 0, 0, 1) PRIMITIVE(Min, "min", 1, 0, 1) PRIMITIVE(Max, "max", 1, 0, 1) PRIMITIVE(Floor, "floor", 1, 0, 0) PRIMITIVE(Ceiling, "ceiling", 1, 0, 0) PRIMITIVE(Truncate, "truncate", 1, 0, 0) PRIMITIVE(Round, "round", 1, 0, 0) PRIMITIVE(Abs, "abs", 1, 0, 0) PRIMITIVE(Sqrt, "sqrt", 1, 0, 0) PRIMITIVE(Time, "time", 0, 0, 0) PRIMITIVE(TimeToString, "time->string", 1, 1, 0) PRIMITIVE(CharProperty, "char-property", 2, 1, 0) PRIMITIVE(Literal, "literal", 0, 0, 1) PRIMITIVE(ProcessChildren, "process-children", 0, 0, 0) PRIMITIVE(ProcessChildrenTrim, "process-children-trim", 0, 0, 0) PRIMITIVE(SosofoAppend, "sosofo-append", 0, 0, 1) PRIMITIVE(NextMatch, "next-match", 0, 1, 0) PRIMITIVE(EmptySosofo, "empty-sosofo", 0, 0, 0) PRIMITIVE(SosofoLabel, "sosofo-label", 2, 0, 0) PRIMITIVE(SosofoDiscardLabeled, "sosofo-discard-labeled", 2, 0, 0) PRIMITIVE(IsSosofo, "sosofo?", 1, 0, 0) PRIMITIVE(IsStyle, "style?", 1, 0, 0) PRIMITIVE(MergeStyle, "merge-style", 0, 0, 1) PRIMITIVE(ProcessElementWithId, "process-element-with-id", 1, 0, 0) PRIMITIVE(ProcessFirstDescendant, "process-first-descendant", 0, 0, 1) PRIMITIVE(ProcessMatchingChildren, "process-matching-children", 0, 0, 1) PRIMITIVE(ProcessNodeList, "process-node-list", 1, 0, 0) PRIMITIVE(CurrentNodePageNumberSosofo, "current-node-page-number-sosofo", 0, 0, 0) PRIMITIVE(PageNumberSosofo, "page-number-sosofo", 0, 0, 0) PRIMITIVE(FormatNumber, "format-number", 2, 0, 0) PRIMITIVE(FormatNumberList, "format-number-list", 3, 0, 0) PRIMITIVE(Error, "error", 1, 0, 0) PRIMITIVE(ExternalProcedure, "external-procedure", 1, 0, 0) PRIMITIVE(StringToNumber, "string->number", 1, 1, 0) PRIMITIVE(NumberToString, "number->string", 1, 1, 0) PRIMITIVE(DisplaySize, "display-size", 0, 0, 0) PRIMITIVE(TableUnit, "table-unit", 1, 0, 0) PRIMITIVE(IsDisplaySpace, "display-space?", 1, 0, 0) PRIMITIVE(DisplaySpace, "display-space", 1, 0, 1) PRIMITIVE(IsInlineSpace, "inline-space?", 1, 0, 0) PRIMITIVE(InlineSpace, "inline-space", 1, 0, 1) PRIMITIVE(IsColor, "color?", 1, 0, 0) PRIMITIVE(IsColorSpace, "color-space?", 1, 0, 0) PRIMITIVE(Color, "color", 1, 0, 1) PRIMITIVE(ColorSpace, "color-space", 1, 0, 1) PRIMITIVE(IsAddress, "address?", 1, 0, 0) PRIMITIVE(IsAddressLocal, "address-local?", 1, 0, 0) PRIMITIVE(IsAddressVisited, "address-visited?", 1, 0, 0) PRIMITIVE(CurrentNodeAddress, "current-node-address", 0, 0, 0) PRIMITIVE(IdrefAddress, "idref-address", 1, 0, 0) PRIMITIVE(EntityAddress, "entity-address", 1, 0, 0) PRIMITIVE(SgmlDocumentAddress, "sgml-document-address", 2, 0, 0) PRIMITIVE(NodeListAddress, "node-list-address", 1, 0, 0) PRIMITIVE(HytimeLinkend, "hytime-linkend", 0, 0, 0) PRIMITIVE(CharScriptCase, "char-script-case", 1, 0, 1) PRIMITIVE(IsGlyphId, "glyph-id?", 1, 0, 0) PRIMITIVE(GlyphId, "glyph-id", 1, 0, 0) PRIMITIVE(IsGlyphSubstTable, "glyph-subst-table?", 1, 0, 0) PRIMITIVE(GlyphSubstTable, "glyph-subst-table", 1, 0, 0) PRIMITIVE(GlyphSubst, "glyph-subst", 2, 0, 0) // Core query language PRIMITIVE(CurrentNode, "current-node", 0, 0, 0) PRIMITIVE(IsNodeListEmpty, "node-list-empty?", 1, 0, 0) PRIMITIVE(IsNodeList, "node-list?", 1, 0, 0) PRIMITIVE(NodeListError, "node-list-error", 2, 0, 0) PRIMITIVE(Gi, "gi", 0, 1, 0) PRIMITIVE(FirstChildGi, "first-child-gi", 0, 1, 0) PRIMITIVE(Id, "id", 0, 1, 0) PRIMITIVE(Parent, "parent", 0, 1, 0) PRIMITIVE(Ancestor, "ancestor", 1, 1, 0) PRIMITIVE(AttributeString, "attribute-string", 1, 1, 0) PRIMITIVE(InheritedAttributeString, "inherited-attribute-string", 1, 1, 0) PRIMITIVE(InheritedElementAttributeString, "inherited-element-attribute-string", 2, 1, 0) PRIMITIVE(IsFirstSibling, "first-sibling?", 0, 1, 0) PRIMITIVE(IsAbsoluteFirstSibling, "absolute-first-sibling?", 0, 1, 0) PRIMITIVE(IsLastSibling, "last-sibling?", 0, 1, 0) PRIMITIVE(IsAbsoluteLastSibling, "absolute-last-sibling?", 0, 1, 0) PRIMITIVE(IsHaveAncestor, "have-ancestor?", 1, 1, 0) PRIMITIVE(ChildNumber, "child-number", 0, 1, 0) PRIMITIVE(AncestorChildNumber, "ancestor-child-number", 1, 1, 0) PRIMITIVE(HierarchicalNumber, "hierarchical-number", 1, 1, 0) PRIMITIVE(HierarchicalNumberRecursive, "hierarchical-number-recursive", 1, 1, 0) PRIMITIVE(ElementNumber, "element-number", 0, 1, 0) PRIMITIVE(ElementNumberList, "element-number-list", 1, 1, 0) PRIMITIVE(EntitySystemId, "entity-system-id", 1, 1, 0) PRIMITIVE(EntityPublicId, "entity-public-id", 1, 1, 0) PRIMITIVE(EntityGeneratedSystemId, "entity-generated-system-id", 1, 1, 0) PRIMITIVE(EntityText, "entity-text", 1, 1, 0) PRIMITIVE(EntityNotation, "entity-notation", 1, 1, 0) PRIMITIVE(EntityType, "entity-type", 1, 1, 0) PRIMITIVE(EntityAttributeString, "entity-attribute-string", 2, 1, 0) PRIMITIVE(NotationSystemId, "notation-system-id", 1, 1, 0) PRIMITIVE(NotationPublicId, "notation-public-id", 1, 1, 0) PRIMITIVE(NotationGeneratedSystemId, "notation-generated-system-id", 1, 1, 0) PRIMITIVE(GeneralNameNormalize, "general-name-normalize", 1, 1, 0) PRIMITIVE(EntityNameNormalize, "entity-name-normalize", 1, 1, 0) // Some non-core query language PRIMITIVE(NodeListFirst, "node-list-first", 1, 0, 0) PRIMITIVE(NodeListRest, "node-list-rest", 1, 0, 0) PRIMITIVE(NodeList, "node-list", 0, 0, 1) PRIMITIVE(Children, "children", 1, 0, 0) PRIMITIVE(Follow, "follow", 1, 0, 0) PRIMITIVE(Preced, "preced", 1, 0, 0) PRIMITIVE(Descendants, "descendants", 1, 0, 0) PRIMITIVE(Attributes, "attributes", 1, 0, 0) PRIMITIVE(NodeListNoOrder, "node-list-no-order", 1, 0, 0) PRIMITIVE(IsNodeListEqual, "node-list=?", 2, 0, 0) PRIMITIVE(IsNamedNodeList, "named-node-list?", 1, 0, 0) PRIMITIVE(NamedNode, "named-node", 2, 0, 0) PRIMITIVE(NamedNodeListNames, "named-node-list-names", 1, 0, 0) PRIMITIVE(NamedNodeListNormalize, "named-node-list-normalize", 3, 0, 0) PRIMITIVE(SelectElements, "select-elements", 2, 0, 0) PRIMITIVE(Data, "data", 1, 0, 0) PRIMITIVE(ElementWithId, "element-with-id", 1, 1, 0) PRIMITIVE(EmptyNodeList, "empty-node-list", 0, 0, 0) PRIMITIVE(NodeProperty, "node-property", 2, 0, 1) PRIMITIVE(SelectByClass, "select-by-class", 2, 0, 0) PRIMITIVE(NodeListMap, "node-list-map", 2, 0, 0) PRIMITIVE(NodeListRef, "node-list-ref", 2, 0, 0) PRIMITIVE(NodeListReverse, "node-list-reverse", 1, 0, 0) PRIMITIVE(NodeListLength, "node-list-length", 1, 0, 0) PRIMITIVE(SgmlParse, "sgml-parse", 1, 0, 1) PRIMITIVE(IsMatchElement, "match-element?", 2, 0, 0) // External procedures XPRIMITIVE(ReadEntity, "read-entity", 1, 0, 0) XPRIMITIVE(Debug, "debug", 1, 0, 0) XPRIMITIVE(IfFirstPage, "if-first-page", 2, 0, 0) XPRIMITIVE(IfFrontPage, "if-front-page", 2, 0, 0) XPRIMITIVE(AllElementNumber, "all-element-number", 0, 1, 0) // DSSSL2 procedures PRIMITIVE2(IsVector, "vector?", 1, 0, 0) PRIMITIVE2(Vector, "vector", 0, 0, 1) PRIMITIVE2(VectorRef, "vector-ref", 2, 0, 0) PRIMITIVE2(VectorSet, "vector-set!", 3, 0, 0) PRIMITIVE2(MakeVector, "make-vector", 1, 1, 0) PRIMITIVE2(VectorToList, "vector->list", 1, 0, 0) PRIMITIVE2(ListToVector, "list->vector", 1, 0, 0) PRIMITIVE2(VectorFill, "vector-fill!", 2, 0, 0) PRIMITIVE2(IsEqv, "eqv?", 2, 0, 0) PRIMITIVE2(Memv, "memv", 2, 0, 0) PRIMITIVE2(QuantityToString, "quantity->string", 1, 1, 0) //more non-core expression language PRIMITIVE(Assoc, "assoc", 2, 0, 0) PRIMITIVE(KeywordToString, "keyword->string", 1, 0, 0) PRIMITIVE(StringToKeyword, "string->keyword", 1, 0, 0) PRIMITIVE(IsExact, "exact?", 1, 0, 0) PRIMITIVE(IsInexact, "inexact?", 1, 0, 0) PRIMITIVE(IsZero, "zero?", 1, 0, 0) PRIMITIVE(IsPositive, "positive?", 1, 0, 0) PRIMITIVE(IsNegative, "negative?", 1, 0, 0) PRIMITIVE(IsOdd, "odd?", 1, 0, 0) PRIMITIVE(IsEven, "even?", 1, 0, 0) PRIMITIVE(Exp, "exp", 1, 0, 0) PRIMITIVE(Log, "log", 1, 0, 0) PRIMITIVE(Sin, "sin", 1, 0, 0) PRIMITIVE(Cos, "cos", 1, 0, 0) PRIMITIVE(Tan, "tan", 1, 0, 0) PRIMITIVE(Asin, "asin", 1, 0, 0) PRIMITIVE(Acos, "acos", 1, 0, 0) PRIMITIVE(Atan, "atan", 1, 1, 0) PRIMITIVE(Expt, "expt", 2, 0, 0) PRIMITIVE(ExactToInexact, "exact->inexact", 1, 0, 0) PRIMITIVE(InexactToExact, "inexact->exact", 1, 0, 0) PRIMITIVE(QuantityToNumber, "quantity->number", 1, 0, 0) PRIMITIVE(StringToList, "string->list", 1, 0, 0) PRIMITIVE(ListToString, "list->string", 1, 0, 0) PRIMITIVE(TimeLess, "time?", 2, 0, 0) PRIMITIVE(TimeLessOrEqual, "time<=?", 2, 0, 0) PRIMITIVE(TimeGreaterOrEqual, "time>=?", 2, 0, 0) PRIMITIVE(IsLanguage, "language?", 1, 0, 0) PRIMITIVE(CurrentLanguage, "current-language", 0, 0, 0) PRIMITIVE(WithLanguage, "with-language", 2, 0, 0) PRIMITIVE(CharLess, "char= 1100 #ifdef SP_NAMESPACE namespace SP_NAMESPACE { #endif #ifdef DSSSL_NAMESPACE using namespace DSSSL_NAMESPACE; #endif #ifdef GROVE_NAMESPACE using namespace GROVE_NAMESPACE; #endif #else #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif #endif __instantiate(ConstPtr) __instantiate(Ptr) __instantiate(Ptr) __instantiate(ConstPtr) #ifdef SP_NAMESPACE } #endif #endif /* SP_MANUAL_INST */ openjade-1.3.2/style/sdata.h0100664000076400007640000004360706763300275014044 0ustar ianian// Unicode code, SDATA entity name { 0x0021, "excl" }, { 0x0022, "quot" }, { 0x0023, "num" }, { 0x0024, "dollar" }, { 0x0025, "percnt" }, { 0x0026, "amp" }, { 0x0027, "apos" }, { 0x0028, "lpar" }, { 0x0029, "rpar" }, { 0x002A, "ast" }, { 0x002B, "plus" }, { 0x002C, "comma" }, { 0x002D, "hyphen" }, { 0x002E, "period" }, { 0x002F, "sol" }, { 0x003A, "colon" }, { 0x003B, "semi" }, { 0x003C, "lt" }, { 0x003D, "equals" }, { 0x003E, "gt" }, { 0x003F, "quest" }, { 0x0040, "commat" }, { 0x005B, "lsqb" }, { 0x005C, "bsol" }, { 0x005D, "rsqb" }, { 0x005E, "circ" }, { 0x005F, "lowbar" }, { 0x0060, "grave" }, { 0x007B, "lcub" }, { 0x007C, "verbar" }, { 0x007D, "rcub" }, { 0x007E, "tilde" }, { 0x00A0, "nbsp" }, { 0x00A1, "iexcl" }, { 0x00A2, "cent" }, { 0x00A3, "pound" }, { 0x00A4, "curren" }, { 0x00A5, "yen" }, { 0x00A6, "brvbar" }, { 0x00A7, "sect" }, { 0x00A8, "die" }, { 0x00A8, "Dot" }, { 0x00A8, "uml" }, { 0x00A9, "copy" }, { 0x00AA, "ordf" }, { 0x00AB, "laquo" }, { 0x00AC, "not" }, { 0x00AD, "shy" }, { 0x00AE, "reg" }, { 0x00AF, "macr" }, { 0x00B0, "deg" }, { 0x00B1, "plusmn" }, { 0x00B2, "sup2" }, { 0x00B3, "sup3" }, { 0x00B4, "acute" }, { 0x00B5, "micro" }, { 0x00B6, "para" }, { 0x00B7, "middot" }, { 0x00B8, "cedil" }, { 0x00B9, "sup1" }, { 0x00BA, "ordm" }, { 0x00BB, "raquo" }, { 0x00BC, "frac14" }, { 0x00BD, "frac12" }, { 0x00BE, "frac34" }, { 0x00BF, "iquest" }, { 0x00C0, "Agrave" }, { 0x00C1, "Aacute" }, { 0x00C2, "Acirc" }, { 0x00C3, "Atilde" }, { 0x00C4, "Auml" }, { 0x00C5, "Aring" }, { 0x00C6, "AElig" }, { 0x00C7, "Ccedil" }, { 0x00C8, "Egrave" }, { 0x00C9, "Eacute" }, { 0x00CA, "Ecirc" }, { 0x00CB, "Euml" }, { 0x00CC, "Igrave" }, { 0x00CD, "Iacute" }, { 0x00CE, "Icirc" }, { 0x00CF, "Iuml" }, { 0x00D0, "ETH" }, { 0x00D1, "Ntilde" }, { 0x00D2, "Ograve" }, { 0x00D3, "Oacute" }, { 0x00D4, "Ocirc" }, { 0x00D5, "Otilde" }, { 0x00D6, "Ouml" }, { 0x00D7, "times" }, { 0x00D8, "Oslash" }, { 0x00D9, "Ugrave" }, { 0x00DA, "Uacute" }, { 0x00DB, "Ucirc" }, { 0x00DC, "Uuml" }, { 0x00DD, "Yacute" }, { 0x00DE, "THORN" }, { 0x00DF, "szlig" }, { 0x00E0, "agrave" }, { 0x00E1, "aacute" }, { 0x00E2, "acirc" }, { 0x00E3, "atilde" }, { 0x00E4, "auml" }, { 0x00E5, "aring" }, { 0x00E6, "aelig" }, { 0x00E7, "ccedil" }, { 0x00E8, "egrave" }, { 0x00E9, "eacute" }, { 0x00EA, "ecirc" }, { 0x00EB, "euml" }, { 0x00EC, "igrave" }, { 0x00ED, "iacute" }, { 0x00EE, "icirc" }, { 0x00EF, "iuml" }, { 0x00F0, "eth" }, { 0x00F1, "ntilde" }, { 0x00F2, "ograve" }, { 0x00F3, "oacute" }, { 0x00F4, "ocirc" }, { 0x00F5, "otilde" }, { 0x00F6, "ouml" }, { 0x00F7, "divide" }, { 0x00F8, "oslash" }, { 0x00F9, "ugrave" }, { 0x00FA, "uacute" }, { 0x00FB, "ucirc" }, { 0x00FC, "uuml" }, { 0x00FD, "yacute" }, { 0x00FE, "thorn" }, { 0x00FF, "yuml" }, { 0x0100, "Amacr" }, { 0x0101, "amacr" }, { 0x0102, "Abreve" }, { 0x0103, "abreve" }, { 0x0104, "Aogon" }, { 0x0105, "aogon" }, { 0x0106, "Cacute" }, { 0x0107, "cacute" }, { 0x0108, "Ccirc" }, { 0x0109, "ccirc" }, { 0x010A, "Cdot" }, { 0x010B, "cdot" }, { 0x010C, "Ccaron" }, { 0x010D, "ccaron" }, { 0x010E, "Dcaron" }, { 0x010F, "dcaron" }, { 0x0110, "Dstrok" }, { 0x0111, "dstrok" }, { 0x0112, "Emacr" }, { 0x0113, "emacr" }, { 0x0116, "Edot" }, { 0x0117, "edot" }, { 0x0118, "Eogon" }, { 0x0119, "eogon" }, { 0x011A, "Ecaron" }, { 0x011B, "ecaron" }, { 0x011C, "Gcirc" }, { 0x011D, "gcirc" }, { 0x011E, "Gbreve" }, { 0x011F, "gbreve" }, { 0x0120, "Gdot" }, { 0x0121, "gdot" }, { 0x0122, "Gcedil" }, { 0x0123, "gcedil" }, { 0x0124, "Hcirc" }, { 0x0125, "hcirc" }, { 0x0126, "Hstrok" }, { 0x0127, "hstrok" }, { 0x0128, "Itilde" }, { 0x0129, "itilde" }, { 0x012A, "Imacr" }, { 0x012B, "imacr" }, { 0x012E, "Iogon" }, { 0x012F, "iogon" }, { 0x0130, "Idot" }, { 0x0131, "inodot" }, { 0x0132, "IJlig" }, { 0x0133, "ijlig" }, { 0x0134, "Jcirc" }, { 0x0135, "jcirc" }, { 0x0136, "Kcedil" }, { 0x0137, "kcedil" }, { 0x0138, "kgreen" }, { 0x0139, "Lacute" }, { 0x013A, "lacute" }, { 0x013B, "Lcedil" }, { 0x013C, "lcedil" }, { 0x013D, "Lcaron" }, { 0x013E, "lcaron" }, { 0x013F, "Lmidot" }, { 0x0140, "lmidot" }, { 0x0141, "Lstrok" }, { 0x0142, "lstrok" }, { 0x0143, "Nacute" }, { 0x0144, "nacute" }, { 0x0145, "Ncedil" }, { 0x0146, "ncedil" }, { 0x0147, "Ncaron" }, { 0x0148, "ncaron" }, { 0x0149, "napos" }, { 0x014A, "ENG" }, { 0x014B, "eng" }, { 0x014C, "Omacr" }, { 0x014D, "omacr" }, { 0x0150, "Odblac" }, { 0x0151, "odblac" }, { 0x0152, "OElig" }, { 0x0153, "oelig" }, { 0x0154, "Racute" }, { 0x0155, "racute" }, { 0x0156, "Rcedil" }, { 0x0157, "rcedil" }, { 0x0158, "Rcaron" }, { 0x0159, "rcaron" }, { 0x015A, "Sacute" }, { 0x015B, "sacute" }, { 0x015C, "Scirc" }, { 0x015D, "scirc" }, { 0x015E, "Scedil" }, { 0x015F, "scedil" }, { 0x0160, "Scaron" }, { 0x0161, "scaron" }, { 0x0162, "Tcedil" }, { 0x0163, "tcedil" }, { 0x0164, "Tcaron" }, { 0x0165, "tcaron" }, { 0x0166, "Tstrok" }, { 0x0167, "tstrok" }, { 0x0168, "Utilde" }, { 0x0169, "utilde" }, { 0x016A, "Umacr" }, { 0x016B, "umacr" }, { 0x016C, "Ubreve" }, { 0x016D, "ubreve" }, { 0x016E, "Uring" }, { 0x016F, "uring" }, { 0x0170, "Udblac" }, { 0x0171, "udblac" }, { 0x0172, "Uogon" }, { 0x0173, "uogon" }, { 0x0174, "Wcirc" }, { 0x0175, "wcirc" }, { 0x0176, "Ycirc" }, { 0x0177, "ycirc" }, { 0x0178, "Yuml" }, { 0x0179, "Zacute" }, { 0x017A, "zacute" }, { 0x017B, "Zdot" }, { 0x017C, "zdot" }, { 0x017D, "Zcaron" }, { 0x017E, "zcaron" }, { 0x0192, "fnof" }, { 0x02C7, "caron" }, { 0x02D8, "breve" }, { 0x02D9, "dot" }, { 0x02DA, "ring" }, { 0x02DB, "ogon" }, { 0x02DC, "tilde" }, { 0x02DD, "dblac" }, { 0x0386, "Aacgr" }, { 0x0388, "Eacgr" }, { 0x0389, "EEacgr" }, { 0x038A, "Iacgr" }, { 0x038C, "Oacgr" }, { 0x038E, "Uacgr" }, { 0x038F, "OHacgr" }, { 0x0390, "idiagr" }, { 0x0391, "Agr" }, { 0x0392, "Bgr" }, { 0x0393, "Ggr" }, { 0x0393, "Gamma" }, { 0x0394, "Dgr" }, { 0x0394, "Delta" }, { 0x0395, "Egr" }, { 0x0396, "Zgr" }, { 0x0397, "EEgr" }, { 0x0398, "THgr" }, { 0x0398, "Theta" }, { 0x0399, "Igr" }, { 0x039A, "Kgr" }, { 0x039B, "Lgr" }, { 0x039B, "Lambda" }, { 0x039C, "Mgr" }, { 0x039D, "Ngr" }, { 0x039E, "Xgr" }, { 0x039E, "Xi" }, { 0x039F, "Ogr" }, { 0x03A0, "Pgr" }, { 0x03A0, "Pi" }, { 0x03A1, "Rgr" }, { 0x03A3, "Sgr" }, { 0x03A3, "Sigma" }, { 0x03A4, "Tgr" }, { 0x03A5, "Ugr" }, { 0x03A5, "Upsi" }, { 0x03A6, "PHgr" }, { 0x03A6, "Phi" }, { 0x03A7, "KHgr" }, { 0x03A8, "PSgr" }, { 0x03A8, "Psi" }, { 0x03A9, "OHgr" }, { 0x03A9, "Omega" }, { 0x03AA, "Idigr" }, { 0x03AB, "Udigr" }, { 0x03AC, "aacgr" }, { 0x03AD, "eacgr" }, { 0x03AE, "eeacgr" }, { 0x03AF, "iacgr" }, { 0x03B0, "udiagr" }, { 0x03B1, "agr" }, { 0x03B1, "alpha" }, { 0x03B2, "bgr" }, { 0x03B2, "beta" }, { 0x03B3, "ggr" }, { 0x03B3, "gamma" }, { 0x03B4, "dgr" }, { 0x03B4, "delta" }, { 0x03B5, "egr" }, { 0x03B5, "epsi" }, { 0x03B6, "zgr" }, { 0x03B6, "zeta" }, { 0x03B7, "eegr" }, { 0x03B7, "eta" }, { 0x03B8, "thetas" }, { 0x03B8, "thgr" }, { 0x03B9, "igr" }, { 0x03B9, "iota" }, { 0x03BA, "kgr" }, { 0x03BA, "kappa" }, { 0x03BB, "lgr" }, { 0x03BB, "lambda" }, { 0x03BC, "mgr" }, { 0x03BC, "mu" }, { 0x03BD, "ngr" }, { 0x03BD, "nu" }, { 0x03BE, "xgr" }, { 0x03BE, "xi" }, { 0x03BF, "ogr" }, { 0x03C0, "pgr" }, { 0x03C0, "pi" }, { 0x03C1, "rgr" }, { 0x03C1, "rho" }, { 0x03C2, "sfgr" }, { 0x03C2, "sigmav" }, { 0x03C3, "sgr" }, { 0x03C3, "sigma" }, { 0x03C4, "tgr" }, { 0x03C4, "tau" }, { 0x03C5, "ugr" }, { 0x03C5, "upsi" }, { 0x03C6, "phgr" }, { 0x03C6, "phis" }, { 0x03C7, "khgr" }, { 0x03C7, "chi" }, { 0x03C8, "psgr" }, { 0x03C8, "psi" }, { 0x03C9, "ohgr" }, { 0x03C9, "omega" }, { 0x03CA, "idigr" }, { 0x03CB, "udigr" }, { 0x03CC, "oacgr" }, { 0x03CD, "uacgr" }, { 0x03CE, "ohacgr" }, { 0x03D1, "thetav" }, { 0x03D5, "phiv" }, { 0x03D6, "piv" }, { 0x03DD, "gammad" }, { 0x03F0, "kappav" }, { 0x03F1, "rhov" }, { 0x0401, "IOcy" }, { 0x0402, "DJcy" }, { 0x0403, "GJcy" }, { 0x0404, "Jukcy" }, { 0x0405, "DScy" }, { 0x0406, "Iukcy" }, { 0x0407, "YIcy" }, { 0x0408, "Jsercy" }, { 0x0409, "LJcy" }, { 0x040A, "NJcy" }, { 0x040B, "TSHcy" }, { 0x040C, "KJcy" }, { 0x040E, "Ubrcy" }, { 0x040F, "DZcy" }, { 0x0410, "Acy" }, { 0x0411, "Bcy" }, { 0x0412, "Vcy" }, { 0x0413, "Gcy" }, { 0x0414, "Dcy" }, { 0x0415, "IEcy" }, { 0x0416, "ZHcy" }, { 0x0417, "Zcy" }, { 0x0418, "Icy" }, { 0x0419, "Jcy" }, { 0x041A, "Kcy" }, { 0x041B, "Lcy" }, { 0x041C, "Mcy" }, { 0x041D, "Ncy" }, { 0x041E, "Ocy" }, { 0x041F, "Pcy" }, { 0x0420, "Rcy" }, { 0x0421, "Scy" }, { 0x0422, "Tcy" }, { 0x0423, "Ucy" }, { 0x0424, "Fcy" }, { 0x0425, "KHcy" }, { 0x0426, "TScy" }, { 0x0427, "CHcy" }, { 0x0428, "SHcy" }, { 0x0429, "SHCHcy" }, { 0x042A, "HARDcy" }, { 0x042B, "Ycy" }, { 0x042C, "SOFTcy" }, { 0x042D, "Ecy" }, { 0x042E, "YUcy" }, { 0x042F, "YAcy" }, { 0x0430, "acy" }, { 0x0431, "bcy" }, { 0x0432, "vcy" }, { 0x0433, "gcy" }, { 0x0434, "dcy" }, { 0x0435, "iecy" }, { 0x0436, "zhcy" }, { 0x0437, "zcy" }, { 0x0438, "icy" }, { 0x0439, "jcy" }, { 0x043A, "kcy" }, { 0x043B, "lcy" }, { 0x043C, "mcy" }, { 0x043D, "ncy" }, { 0x043E, "ocy" }, { 0x043F, "pcy" }, { 0x0440, "rcy" }, { 0x0441, "scy" }, { 0x0442, "tcy" }, { 0x0443, "ucy" }, { 0x0444, "fcy" }, { 0x0445, "khcy" }, { 0x0446, "tscy" }, { 0x0447, "chcy" }, { 0x0448, "shcy" }, { 0x0449, "shchcy" }, { 0x044A, "hardcy" }, { 0x044B, "ycy" }, { 0x044C, "softcy" }, { 0x044D, "ecy" }, { 0x044E, "yucy" }, { 0x044F, "yacy" }, { 0x0451, "iocy" }, { 0x0452, "djcy" }, { 0x0453, "gjcy" }, { 0x0454, "jukcy" }, { 0x0455, "dscy" }, { 0x0456, "iukcy" }, { 0x0457, "yicy" }, { 0x0458, "jsercy" }, { 0x0459, "ljcy" }, { 0x045A, "njcy" }, { 0x045B, "tshcy" }, { 0x045C, "kjcy" }, { 0x045E, "ubrcy" }, { 0x045F, "dzcy" }, { 0x2002, "ensp" }, { 0x2003, "emsp" }, { 0x2004, "emsp13" }, { 0x2005, "emsp14" }, { 0x2007, "numsp" }, { 0x2008, "puncsp" }, { 0x2009, "thinsp" }, { 0x200A, "hairsp" }, { 0x2010, "dash" }, { 0x2013, "ndash" }, { 0x2014, "mdash" }, { 0x2015, "horbar" }, { 0x2016, "Verbar" }, { 0x2018, "lsquo" }, { 0x2018, "rsquor" }, { 0x2019, "rsquo" }, { 0x201A, "lsquor" }, { 0x201C, "ldquo" }, { 0x201C, "rdquor" }, { 0x201D, "rdquo" }, { 0x201E, "ldquor" }, { 0x2020, "dagger" }, { 0x2021, "Dagger" }, { 0x2022, "bull" }, { 0x2025, "nldr" }, { 0x2026, "hellip" }, { 0x2026, "mldr" }, { 0x2030, "permil" }, { 0x2032, "prime" }, { 0x2032, "vprime" }, { 0x2033, "Prime" }, { 0x2034, "tprime" }, { 0x2035, "bprime" }, { 0x2041, "caret" }, { 0x2043, "hybull" }, { 0x20DB, "tdot" }, { 0x20DC, "DotDot" }, { 0x2105, "incare" }, { 0x210B, "hamilt" }, { 0x210F, "planck" }, { 0x2111, "image" }, { 0x2112, "lagran" }, { 0x2113, "ell" }, { 0x2116, "numero" }, { 0x2117, "copysr" }, { 0x2118, "weierp" }, { 0x211C, "real" }, { 0x211E, "rx" }, { 0x2122, "trade" }, { 0x2126, "ohm" }, { 0x212B, "angst" }, { 0x212C, "bernou" }, { 0x2133, "phmmat" }, { 0x2134, "order" }, { 0x2135, "aleph" }, { 0x2136, "beth" }, { 0x2137, "gimel" }, { 0x2138, "daleth" }, { 0x2153, "frac13" }, { 0x2154, "frac23" }, { 0x2155, "frac15" }, { 0x2156, "frac25" }, { 0x2157, "frac35" }, { 0x2158, "frac45" }, { 0x2159, "frac16" }, { 0x215A, "frac56" }, { 0x215B, "frac18" }, { 0x215C, "frac38" }, { 0x215D, "frac58" }, { 0x215E, "frac78" }, { 0x2190, "larr" }, { 0x2191, "uarr" }, { 0x2192, "rarr" }, { 0x2193, "darr" }, { 0x2194, "harr" }, { 0x2195, "varr" }, { 0x2196, "nwarr" }, { 0x2197, "nearr" }, { 0x2198, "drarr" }, { 0x2199, "dlarr" }, { 0x219A, "nlarr" }, { 0x219B, "nrarr" }, { 0x219D, "rarrw" }, { 0x219E, "Larr" }, { 0x21A0, "Rarr" }, { 0x21A2, "larrtl" }, { 0x21A3, "rarrtl" }, { 0x21A6, "map" }, { 0x21A9, "larrhk" }, { 0x21AA, "rarrhk" }, { 0x21AB, "larrlp" }, { 0x21AC, "rarrlp" }, { 0x21AD, "harrw" }, { 0x21AE, "nharr" }, { 0x21B0, "lsh" }, { 0x21B1, "rsh" }, { 0x21B6, "cularr" }, { 0x21B7, "curarr" }, { 0x21BA, "olarr" }, { 0x21BB, "orarr" }, { 0x21BC, "lharu" }, { 0x21BD, "lhard" }, { 0x21BE, "uharr" }, { 0x21BF, "uharl" }, { 0x21C0, "rharu" }, { 0x21C1, "rhard" }, { 0x21C2, "dharr" }, { 0x21C3, "dharl" }, { 0x21C4, "rlarr2" }, { 0x21C6, "lrarr2" }, { 0x21C7, "larr2" }, { 0x21C8, "uarr2" }, { 0x21C9, "rarr2" }, { 0x21CA, "darr2" }, { 0x21CB, "lrhar2" }, { 0x21CC, "rlhar2" }, { 0x21CD, "nlArr" }, { 0x21CE, "nhArr" }, { 0x21CF, "nrArr" }, { 0x21D0, "lArr" }, { 0x21D1, "uArr" }, { 0x21D2, "rArr" }, { 0x21D3, "dArr" }, { 0x21D4, "hArr" }, { 0x21D4, "iff" }, { 0x21D5, "vArr" }, { 0x21DA, "lAarr" }, { 0x21DB, "rAarr" }, { 0x21DD, "rarrw" }, { 0x2200, "forall" }, { 0x2201, "comp" }, { 0x2202, "part" }, { 0x2203, "exist" }, { 0x2204, "nexist" }, { 0x2205, "empty" }, { 0x2207, "nabla" }, { 0x2208, "isin" }, { 0x2209, "notin" }, { 0x220A, "epsis" }, { 0x220B, "ni" }, { 0x220D, "bepsi" }, { 0x220F, "prod" }, { 0x2210, "coprod" }, { 0x2210, "amalg" }, { 0x2210, "samalg" }, { 0x2211, "sum" }, { 0x2212, "minus" }, { 0x2213, "mnplus" }, { 0x2214, "plusdo" }, { 0x2216, "setmn" }, { 0x2218, "compfn" }, { 0x221A, "radic" }, { 0x221D, "vprop" }, { 0x221D, "prop" }, { 0x221E, "infin" }, { 0x221F, "ang90" }, { 0x2220, "ang" }, { 0x2221, "angmsd" }, { 0x2222, "angsph" }, { 0x2223, "mid" }, { 0x2224, "nmid" }, { 0x2225, "par" }, { 0x2226, "npar" }, { 0x2227, "and" }, { 0x2228, "or" }, { 0x2229, "cap" }, { 0x222A, "cup" }, { 0x222B, "int" }, { 0x222E, "conint" }, { 0x2234, "there4" }, { 0x2235, "becaus" }, { 0x223C, "thksim" }, { 0x223C, "sim" }, { 0x223D, "bsim" }, { 0x2240, "wreath" }, { 0x2241, "nsim" }, { 0x2243, "sime" }, { 0x2244, "nsime" }, { 0x2245, "cong" }, { 0x2247, "ncong" }, { 0x2248, "thkap" }, { 0x2248, "ap" }, { 0x2249, "nap" }, { 0x224A, "ape" }, { 0x224C, "bcong" }, { 0x224D, "asymp" }, { 0x224E, "bump" }, { 0x224F, "bumpe" }, { 0x2250, "esdot" }, { 0x2251, "eDot" }, { 0x2252, "efDot" }, { 0x2253, "erDot" }, { 0x2254, "colone" }, { 0x2255, "ecolon" }, { 0x2256, "ecir" }, { 0x2257, "cire" }, { 0x2259, "wedgeq" }, { 0x225C, "trie" }, { 0x2260, "ne" }, { 0x2261, "equiv" }, { 0x2262, "nequiv" }, { 0x2264, "le" }, { 0x2264, "les" }, { 0x2265, "ge" }, { 0x2265, "ges" }, { 0x2266, "lE" }, { 0x2267, "gE" }, { 0x2268, "lnE" }, { 0x2268, "lvnE" }, { 0x2269, "gnE" }, { 0x2269, "gvnE" }, { 0x226A, "Lt" }, { 0x226B, "Gt" }, { 0x226C, "twixt" }, { 0x226E, "nlt" }, { 0x226F, "ngt" }, { 0x2270, "nles" }, { 0x2270, "nle" }, { 0x2271, "nges" }, { 0x2271, "nge" }, { 0x2272, "lsim" }, { 0x2273, "gsim" }, { 0x2276, "lg" }, { 0x2277, "gl" }, { 0x227A, "pr" }, { 0x227B, "sc" }, { 0x227C, "cupre" }, { 0x227D, "sccue" }, { 0x227E, "prsim" }, { 0x227F, "scsim" }, { 0x2280, "npr" }, { 0x2281, "nsc" }, { 0x2282, "sub" }, { 0x2283, "sup" }, { 0x2284, "nsub" }, { 0x2285, "nsup" }, { 0x2286, "sube" }, { 0x2287, "supe" }, { 0x2288, "nsube" }, { 0x2289, "nsupe" }, { 0x228A, "subnE" }, { 0x228B, "supnE" }, { 0x228E, "uplus" }, { 0x228F, "sqsub" }, { 0x2290, "sqsup" }, { 0x2291, "sqsube" }, { 0x2292, "sqsupe" }, { 0x2293, "sqcap" }, { 0x2294, "sqcup" }, { 0x2295, "oplus" }, { 0x2296, "ominus" }, { 0x2297, "otimes" }, { 0x2298, "osol" }, { 0x2299, "odot" }, { 0x229A, "ocir" }, { 0x229B, "oast" }, { 0x229D, "odash" }, { 0x229E, "plusb" }, { 0x229F, "minusb" }, { 0x22A0, "timesb" }, { 0x22A1, "sdotb" }, { 0x22A2, "vdash" }, { 0x22A3, "dashv" }, { 0x22A4, "top" }, { 0x22A5, "bottom" }, { 0x22A5, "perp" }, { 0x22A7, "models" }, { 0x22A8, "vDash" }, { 0x22A9, "Vdash" }, { 0x22AA, "Vvdash" }, { 0x22AC, "nvdash" }, { 0x22AD, "nvDash" }, { 0x22AE, "nVdash" }, { 0x22AF, "nVDash" }, { 0x22B2, "vltri" }, { 0x22B3, "vrtri" }, { 0x22B4, "ltrie" }, { 0x22B5, "rtrie" }, { 0x22B8, "mumap" }, { 0x22BA, "intcal" }, { 0x22BB, "veebar" }, { 0x22BC, "barwed" }, { 0x22C4, "diam" }, { 0x22C5, "sdot" }, { 0x22C6, "sstarf" }, { 0x22C7, "divonx" }, { 0x22C8, "bowtie" }, { 0x22C9, "ltimes" }, { 0x22CA, "rtimes" }, { 0x22CB, "lthree" }, { 0x22CC, "rthree" }, { 0x22CD, "bsime" }, { 0x22CE, "cuvee" }, { 0x22CF, "cuwed" }, { 0x22D0, "Sub" }, { 0x22D1, "Sup" }, { 0x22D2, "Cap" }, { 0x22D3, "Cup" }, { 0x22D4, "fork" }, { 0x22D6, "ldot" }, { 0x22D7, "gsdot" }, { 0x22D8, "Ll" }, { 0x22D9, "Gg" }, { 0x22DA, "leg" }, { 0x22DB, "gel" }, { 0x22DC, "els" }, { 0x22DD, "egs" }, { 0x22DE, "cuepr" }, { 0x22DF, "cuesc" }, { 0x22E0, "npre" }, { 0x22E1, "nsce" }, { 0x22E6, "lnsim" }, { 0x22E7, "gnsim" }, { 0x22E8, "prnsim" }, { 0x22E9, "scnsim" }, { 0x22EA, "nltri" }, { 0x22EB, "nrtri" }, { 0x22EC, "nltrie" }, { 0x22ED, "nrtrie" }, { 0x22EE, "vellip" }, { 0x2306, "Barwed" }, { 0x2308, "lceil" }, { 0x2309, "rceil" }, { 0x230A, "lfloor" }, { 0x230B, "rfloor" }, { 0x230C, "drcrop" }, { 0x230D, "dlcrop" }, { 0x230E, "urcrop" }, { 0x230F, "ulcrop" }, { 0x2315, "telrec" }, { 0x2316, "target" }, { 0x231C, "ulcorn" }, { 0x231D, "urcorn" }, { 0x231E, "dlcorn" }, { 0x231F, "drcorn" }, { 0x2322, "frown" }, { 0x2323, "smile" }, { 0x2329, "lang" }, { 0x232A, "rang" }, { 0x2423, "blank" }, { 0x24C8, "oS" }, { 0x2500, "boxh" }, { 0x2502, "boxv" }, { 0x250C, "boxdr" }, { 0x2510, "boxdl" }, { 0x2514, "boxur" }, { 0x2518, "boxul" }, { 0x251C, "boxvr" }, { 0x2524, "boxvl" }, { 0x252C, "boxhd" }, { 0x2534, "boxhu" }, { 0x253C, "boxvh" }, { 0x2550, "boxH" }, { 0x2551, "boxV" }, { 0x2552, "boxdR" }, { 0x2553, "boxDr" }, { 0x2554, "boxDR" }, { 0x2555, "boxdL" }, { 0x2556, "boxDl" }, { 0x2557, "boxDL" }, { 0x2558, "boxuR" }, { 0x2559, "boxUr" }, { 0x255A, "boxUR" }, { 0x255B, "boxuL" }, { 0x255C, "boxUl" }, { 0x255D, "boxUL" }, { 0x255E, "boxvR" }, { 0x255F, "boxVr" }, { 0x2560, "boxVR" }, { 0x2561, "boxvL" }, { 0x2562, "boxVl" }, { 0x2563, "boxVL" }, { 0x2564, "boxHd" }, { 0x2565, "boxhD" }, { 0x2566, "boxHD" }, { 0x2567, "boxHu" }, { 0x2568, "boxhU" }, { 0x2569, "boxHU" }, { 0x256A, "boxvH" }, { 0x256B, "boxVh" }, { 0x256C, "boxVH" }, { 0x2580, "uhblk" }, { 0x2584, "lhblk" }, { 0x2588, "block" }, { 0x2591, "blk14" }, { 0x2592, "blk12" }, { 0x2593, "blk34" }, { 0x25A1, "squ" }, { 0x25A1, "square" }, { 0x25AA, "squf" }, { 0x25AD, "rect" }, { 0x25AE, "marker" }, { 0x25B3, "xutri" }, { 0x25B4, "utrif" }, { 0x25B5, "utri" }, { 0x25B8, "rtrif" }, { 0x25B9, "rtri" }, { 0x25BD, "xdtri" }, { 0x25BE, "dtrif" }, { 0x25BF, "dtri" }, { 0x25C2, "ltrif" }, { 0x25C3, "ltri" }, { 0x25CB, "cir" }, { 0x25CB, "xcirc" }, { 0x2605, "starf" }, { 0x2606, "star" }, { 0x260E, "phone" }, { 0x2640, "female" }, { 0x2642, "male" }, { 0x2660, "spades" }, { 0x2661, "hearts" }, { 0x2662, "diams" }, { 0x2663, "clubs" }, { 0x266A, "sung" }, { 0x266D, "flat" }, { 0x266E, "natur" }, { 0x266F, "sharp" }, { 0x2713, "check" }, { 0x2717, "cross" }, { 0x2720, "malt" }, { 0x2726, "lozf" }, { 0x2727, "loz" }, { 0x2736, "sextile" }, openjade-1.3.2/style/style.dsp0100664000076400007640000003225007421073253014432 0ustar ianian# Microsoft Developer Studio Project File - Name="style" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 CFG=style - Win32 Release !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "style.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "style.mak" CFG="style - Win32 Release" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "style - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE "style - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe MTL=midl.exe RSC=rc.exe !IF "$(CFG)" == "style - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir ".\Release" # PROP BASE Intermediate_Dir ".\Release" # PROP BASE Target_Dir "." # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir ".\Release" # PROP Intermediate_Dir ".\Release" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "." # ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c # ADD CPP /nologo /MD /W3 /GX /O2 /I "..\spgrove" /I "..\grove" /I "..\include" /D "_WINDOWS" /D "NDEBUG" /D DSSSL_NAMESPACE=James_Clark_DSSSL /D "WIN32" /D SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D "SP_MULTI_BYTE" /YX /FD /c # ADD BASE MTL /nologo /D "NDEBUG" /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x809 /d "NDEBUG" # ADD RSC /l 0x809 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:"0x20000000" /subsystem:windows /dll /machine:I386 /out:"..\bin\ostyle13.dll" # SUBTRACT LINK32 /profile /map !ELSEIF "$(CFG)" == "style - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir ".\Debug" # PROP BASE Intermediate_Dir ".\Debug" # PROP BASE Target_Dir "." # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir ".\Debug" # PROP Intermediate_Dir ".\Debug" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "." # ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c # ADD CPP /nologo /MDd /W3 /GX /ZI /Od /I "..\spgrove" /I "..\grove" /I "..\include" /D "_WINDOWS" /D "_DEBUG" /D DSSSL_NAMESPACE=James_Clark_DSSSL /D "WIN32" /D SP_NAMESPACE=James_Clark_SP /D GROVE_NAMESPACE=James_Clark_GROVE /D "SP_MULTI_BYTE" /D SP_HAVE_LOCALE=1 /D SP_HAVE_WCHAR=1 /FR /YX /FD /c # ADD BASE MTL /nologo /D "_DEBUG" /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x809 /d "_DEBUG" # ADD RSC /l 0x809 /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:"0x20000000" /subsystem:windows /dll /debug /machine:I386 /out:"..\dbgbin\ostyle13d.dll" # SUBTRACT LINK32 /incremental:no /map !ENDIF # Begin Target # Name "style - Win32 Release" # Name "style - Win32 Debug" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;for;f90" # Begin Source File SOURCE=.\Collector.cxx # SUBTRACT CPP /YX # End Source File # Begin Source File SOURCE=.\common_inst.cxx # ADD CPP /Yu"stylelib.h" # End Source File # Begin Source File SOURCE=.\common_inst.m4 !IF "$(CFG)" == "style - Win32 Release" # Begin Custom Build - Processing $(InputPath) InputDir=. InputPath=.\common_inst.m4 InputName=common_inst "$(InputDir)\$(InputName).cxx" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" del /f $(InputDir)\$(InputName).cxx perl ..\lib\instmac.pl $(InputPath) >$(InputDir)\$(InputName).cxx attrib +r $(InputDir)\$(InputName).cxx # End Custom Build !ELSEIF "$(CFG)" == "style - Win32 Debug" # Begin Custom Build - Processing $(InputPath) InputDir=. InputPath=.\common_inst.m4 InputName=common_inst "$(InputDir)\$(InputName).cxx" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" del /f $(InputDir)\$(InputName).cxx perl ..\lib\instmac.pl $(InputPath) >$(InputDir)\$(InputName).cxx attrib +r $(InputDir)\$(InputName).cxx # End Custom Build !ENDIF # End Source File # Begin Source File SOURCE=.\DssslApp.cxx # ADD CPP /Yu"stylelib.h" # End Source File # Begin Source File SOURCE=.\DssslAppMessages.msg !IF "$(CFG)" == "style - Win32 Release" # Begin Custom Build - Processing $(InputPath) InputDir=. InputPath=.\DssslAppMessages.msg InputName=DssslAppMessages "$(InputDir)\$(InputName).h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" perl -w ..\msggen.pl $(InputPath) # End Custom Build !ELSEIF "$(CFG)" == "style - Win32 Debug" # Begin Custom Build - Processing $(InputPath) InputDir=. InputPath=.\DssslAppMessages.msg InputName=DssslAppMessages "$(InputDir)\$(InputName).h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" perl -w ..\msggen.pl $(InputPath) # End Custom Build !ENDIF # End Source File # Begin Source File SOURCE=.\DssslSpecEventHandler.cxx # ADD CPP /Yu"stylelib.h" # End Source File # Begin Source File SOURCE=.\ELObj.cxx # ADD CPP /Yu"stylelib.h" # End Source File # Begin Source File SOURCE=.\ELObjMessageArg.cxx # ADD CPP /Yu"stylelib.h" # End Source File # Begin Source File SOURCE=.\Expression.cxx # ADD CPP /Yu"stylelib.h" # End Source File # Begin Source File SOURCE=.\FlowObj.cxx # ADD CPP /Yu"stylelib.h" # End Source File # Begin Source File SOURCE=.\FlowObj_inst.m4 !IF "$(CFG)" == "style - Win32 Release" # Begin Custom Build - Processing $(InputPath) InputDir=. InputPath=.\FlowObj_inst.m4 InputName=FlowObj_inst "$(InputDir)\$(InputName).cxx" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" del /f $(InputDir)\$(InputName).cxx perl ..\lib\instmac.pl $(InputPath) >$(InputDir)\$(InputName).cxx attrib +r $(InputDir)\$(InputName).cxx # End Custom Build !ELSEIF "$(CFG)" == "style - Win32 Debug" # Begin Custom Build - Processing $(InputPath) InputDir=. InputPath=.\FlowObj_inst.m4 InputName=FlowObj_inst "$(InputDir)\$(InputName).cxx" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" del /f $(InputDir)\$(InputName).cxx perl ..\lib\instmac.pl $(InputPath) >$(InputDir)\$(InputName).cxx attrib +r $(InputDir)\$(InputName).cxx # End Custom Build !ENDIF # End Source File # Begin Source File SOURCE=.\FOTBuilder.cxx # ADD CPP /Yu"stylelib.h" # End Source File # Begin Source File SOURCE=.\GroveManager.cxx # ADD CPP /Yu"stylelib.h" # End Source File # Begin Source File SOURCE=.\InheritedC.cxx # ADD CPP /Yu"stylelib.h" # End Source File # Begin Source File SOURCE=.\Insn.cxx # ADD CPP /Yu"stylelib.h" # End Source File # Begin Source File SOURCE=.\Interpreter.cxx # ADD CPP /Yu"stylelib.h" # End Source File # Begin Source File SOURCE=.\InterpreterMessages.cxx # SUBTRACT CPP /YX # End Source File # Begin Source File SOURCE=.\InterpreterMessages.msg !IF "$(CFG)" == "style - Win32 Release" # Begin Custom Build - Processing $(InputPath) InputDir=. InputPath=.\InterpreterMessages.msg InputName=InterpreterMessages "$(InputDir)\$(InputName).h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" perl -w ..\msggen.pl $(InputPath) # End Custom Build !ELSEIF "$(CFG)" == "style - Win32 Debug" # Begin Custom Build - Processing $(InputPath) InputDir=. InputPath=.\InterpreterMessages.msg InputName=InterpreterMessages "$(InputDir)\$(InputName).h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" perl -w ..\msggen.pl $(InputPath) # End Custom Build !ENDIF # End Source File # Begin Source File SOURCE=.\LangObj.cxx # End Source File # Begin Source File SOURCE=.\MacroFlowObj.cxx # ADD CPP /Yu"stylelib.h" # End Source File # Begin Source File SOURCE=.\NumberCache.cxx # ADD CPP /Yu"stylelib.h" # End Source File # Begin Source File SOURCE=.\Pattern.cxx # ADD CPP /Yu"stylelib.h" # End Source File # Begin Source File SOURCE=.\primitive.cxx # ADD CPP /Yu"stylelib.h" # End Source File # Begin Source File SOURCE=.\primitive_inst.m4 !IF "$(CFG)" == "style - Win32 Release" # Begin Custom Build - Processing $(InputPath) InputDir=. InputPath=.\primitive_inst.m4 InputName=primitive_inst "$(InputDir)\$(InputName).cxx" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" del /f $(InputDir)\$(InputName).cxx perl ..\lib\instmac.pl $(InputPath) >$(InputDir)\$(InputName).cxx attrib +r $(InputDir)\$(InputName).cxx # End Custom Build !ELSEIF "$(CFG)" == "style - Win32 Debug" # Begin Custom Build - Processing $(InputPath) InputDir=. InputPath=.\primitive_inst.m4 InputName=primitive_inst "$(InputDir)\$(InputName).cxx" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" del /f $(InputDir)\$(InputName).cxx perl ..\lib\instmac.pl $(InputPath) >$(InputDir)\$(InputName).cxx attrib +r $(InputDir)\$(InputName).cxx # End Custom Build !ENDIF # End Source File # Begin Source File SOURCE=.\ProcessContext.cxx # ADD CPP /Yu"stylelib.h" # End Source File # Begin Source File SOURCE=.\ProcessingMode.cxx # ADD CPP /Yu"stylelib.h" # End Source File # Begin Source File SOURCE=.\SchemeParser.cxx # ADD CPP /Yu"stylelib.h" # End Source File # Begin Source File SOURCE=.\Style.cxx # ADD CPP /Yu"stylelib.h" # End Source File # Begin Source File SOURCE=.\style_inst.cxx # ADD CPP /Yu"stylelib.h" # End Source File # Begin Source File SOURCE=.\style_inst.m4 !IF "$(CFG)" == "style - Win32 Release" # Begin Custom Build - Processing $(InputPath) InputDir=. InputPath=.\style_inst.m4 InputName=style_inst "$(InputDir)\$(InputName).cxx" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" del /f $(InputDir)\$(InputName).cxx perl ..\lib\instmac.pl $(InputPath) >$(InputDir)\$(InputName).cxx attrib +r $(InputDir)\$(InputName).cxx # End Custom Build !ELSEIF "$(CFG)" == "style - Win32 Debug" # Begin Custom Build - Processing $(InputPath) InputDir=. InputPath=.\style_inst.m4 InputName=style_inst "$(InputDir)\$(InputName).cxx" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" del /f $(InputDir)\$(InputName).cxx perl ..\lib\instmac.pl $(InputPath) >$(InputDir)\$(InputName).cxx attrib +r $(InputDir)\$(InputName).cxx # End Custom Build !ENDIF # End Source File # Begin Source File SOURCE=.\StyleEngine.cxx # ADD CPP /Yu"stylelib.h" # End Source File # Begin Source File SOURCE=.\stylelib.cxx # ADD CPP /Yc"stylelib.h" # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd" # Begin Source File SOURCE=.\charNames.h # End Source File # Begin Source File SOURCE=.\Collector.h # End Source File # Begin Source File SOURCE=.\dsssl_ns.h # End Source File # Begin Source File SOURCE=.\DssslApp.h # End Source File # Begin Source File SOURCE=.\DssslAppMessages.h # End Source File # Begin Source File SOURCE=.\DssslSpecEventHandler.h # End Source File # Begin Source File SOURCE=.\ELObj.h # End Source File # Begin Source File SOURCE=.\ELObjMessageArg.h # End Source File # Begin Source File SOURCE=.\EvalContext.h # End Source File # Begin Source File SOURCE=.\Expression.h # End Source File # Begin Source File SOURCE=.\FOTBuilder.h # End Source File # Begin Source File SOURCE=.\GroveManager.h # End Source File # Begin Source File SOURCE=.\Insn.h # End Source File # Begin Source File SOURCE=.\Insn2.h # End Source File # Begin Source File SOURCE=.\Interpreter.h # End Source File # Begin Source File SOURCE=.\InterpreterMessages.h # End Source File # Begin Source File SOURCE=.\jade_version.h # End Source File # Begin Source File SOURCE=.\MacroFlowObj.h # End Source File # Begin Source File SOURCE=.\NumberCache.h # End Source File # Begin Source File SOURCE=.\Pattern.h # End Source File # Begin Source File SOURCE=.\primitive.h # End Source File # Begin Source File SOURCE=.\ProcessContext.h # End Source File # Begin Source File SOURCE=.\ProcessingMode.h # End Source File # Begin Source File SOURCE=.\SchemeParser.h # End Source File # Begin Source File SOURCE=.\sdata.h # End Source File # Begin Source File SOURCE=.\SosofoObj.h # End Source File # Begin Source File SOURCE=.\Style.h # End Source File # Begin Source File SOURCE=.\style_pch.h # End Source File # Begin Source File SOURCE=.\StyleEngine.h # End Source File # Begin Source File SOURCE=.\stylelib.h # End Source File # Begin Source File SOURCE=.\VM.h # End Source File # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe" # End Group # Begin Source File SOURCE=.\FlowObj_inst.cxx # PROP BASE Exclude_From_Build 1 # PROP Ignore_Default_Tool 1 # End Source File # Begin Source File SOURCE=.\primitive_inst.cxx # PROP BASE Exclude_From_Build 1 # PROP Ignore_Default_Tool 1 # End Source File # End Target # End Project openjade-1.3.2/style/style_inst.m40100664000076400007640000001452306774340402015227 0ustar ianian// Copyright (c) 1996 James Clark // See the file copying.txt for copying permission. #include "stylelib.h" #ifdef SP_MANUAL_INST #define SP_DEFINE_TEMPLATES #include "Vector.h" #include "NCVector.h" #include "Ptr.h" #include "Owner.h" #include "PointerTable.h" #include "OwnerTable.h" #include "NamedTable.h" #include "IList.h" #include "IListIter.h" #include "IQueue.h" #include "HashTable.h" #include "CharMap.h" #ifdef SP_SIZEOF_BOOL_1 #include "XcharMap.h" #endif #undef SP_DEFINE_TEMPLATES #include "Insn.h" #include "Expression.h" #include "Interpreter.h" #include "ELObj.h" #include "Style.h" #include "FOTBuilder.h" #include "ProcessingMode.h" #include "ProcessContext.h" #include "SosofoObj.h" #include "DssslSpecEventHandler.h" #include "Boolean.h" #include "Node.h" #include "DssslApp.h" #include "Pattern.h" #include "MacroFlowObj.h" #ifdef DSSSL_NAMESPACE class DSSSL_NAMESPACE::ProcessingMode; class DSSSL_NAMESPACE::SosofoObj; #else class ProcessingMode; class SosofoObj; #endif #if _MSC_VER >= 1100 #ifdef SP_NAMESPACE namespace SP_NAMESPACE { #endif #ifdef DSSSL_NAMESPACE using namespace DSSSL_NAMESPACE; #endif #ifdef GROVE_NAMESPACE using namespace GROVE_NAMESPACE; #endif #else #ifdef DSSSL_NAMESPACE namespace DSSSL_NAMESPACE { #endif #endif __instantiate(Ptr) __instantiate(Owner) __instantiate(Vector) __instantiate(NCVector >) __instantiate(Vector) __instantiate(Owner) __instantiate(Owner) __instantiate(Owner) __instantiate(Vector) __instantiate(Owner) __instantiate(Ptr) __instantiate(ConstPtr) __instantiate(`PointerTable') __instantiate(NamedTableIter) __instantiate(Ptr) __instantiate(Ptr) __instantiate(ConstPtr) __instantiate(Vector >) __instantiate(Vector > *>) __instantiate(Vector) __instantiate(Ptr) __instantiate(NamedTable) __instantiate(NamedTableIter) __instantiate(NamedTableIter) __instantiate(NCVector) __instantiate(Vector) __instantiate(Ptr) __instantiate(IList) __instantiate(IListIter) __instantiate(Vector) __instantiate(IList) __instantiate(Vector) __instantiate(Owner) __instantiate(Vector) __instantiate(Vector) __instantiate(IQueue) __instantiate(NCVector >) __instantiate(IList) __instantiate(IListIter) __instantiate(IList) __instantiate(IListIter) __instantiate(Ptr) __instantiate(Vector >) __instantiate(NCVector) __instantiate(NCVector) __instantiate(NamedTable) __instantiate(NCVector >) __instantiate(NamedTable) __instantiate(NCVector >) __instantiate(Vector) __instantiate(Vector >) __instantiate(Vector) __instantiate(Vector >) __instantiate(IList) __instantiate(IListIter) __instantiate(Vector >) __instantiate(Owner) __instantiate(Vector) __instantiate(Vector >) __instantiate(`HashTable') __instantiate(`HashTableItem') __instantiate(Vector) __instantiate(Vector) __instantiate(IListIter) __instantiate(IList) __instantiate(IListIter) __instantiate(IList) __instantiate(IListIter) __instantiate(IList) __instantiate(Owner) __instantiate(Owner) __instantiate(Owner) __instantiate(Owner) __instantiate(Owner) __instantiate(Vector *>) __instantiate(`PointerTable *, String, Interpreter::StringSet, Interpreter::StringSet>') __instantiate(`OwnerTable, String, Interpreter::StringSet, Interpreter::StringSet>') __instantiate(Vector) __instantiate(Ptr) __instantiate(ConstPtr) __instantiate(Vector >) __instantiate(Owner) __instantiate(Owner) __instantiate(`HashTable') __instantiate(`HashTableItem') __instantiate(Vector) __instantiate(Vector) __instantiate(NCVector) __instantiate(IList) __instantiate(IListIter) __instantiate(IList) __instantiate(IListIter) __instantiate(Ptr) __instantiate(`HashTable') __instantiate(`HashTableItem') __instantiate(`HashTable') __instantiate(`HashTableItem') #ifdef SP_SIZEOF_BOOL_1 __instantiate(XcharMap) __instantiate(SharedXcharMap) __instantiate(Ptr >) __instantiate(ConstPtr >) #endif __instantiate(CharMap) __instantiate(CharMapPage) __instantiate(CharMapColumn) __instantiate(CharMapResource) __instantiate(Ptr >) __instantiate(ConstPtr >) __instantiate(`HashTable') __instantiate(`HashTableItem') __instantiate(`HashTableIter') #ifdef SP_NAMESPACE } #endif #endif /* SP_MANUAL_INST */ openjade-1.3.2/style/style_pch.h0100664000076400007640000000123706713070471014730 0ustar ianian// Copyright (c) 1996 James Clark // See the file copying.txt for copying permission. #include "Interpreter.h" #include "Collector.h" #include "DssslApp.h" #include "DssslSpecEventHandler.h" #include "ELObj.h" #include "ELObjMessageArg.h" #include "EvalContext.h" #include "Expression.h" #include "FOTBuilder.h" #include "GroveManager.h" #include "Insn.h" #include "Insn2.h" #include "Interpreter.h" #include "InterpreterMessages.h" #include "MacroFlowObj.h" #include "NumberCache.h" #include "Pattern.h" #include "ProcessContext.h" #include "ProcessingMode.h" #include "SchemeParser.h" #include "SosofoObj.h" #include "Style.h" #include "StyleEngine.h" #include "VM.h" openjade-1.3.2/style/stylelib.cxx0100664000076400007640000000015506713043552015136 0ustar ianian// Copyright (c) 1996 James Clark // See the file copying.txt for copying permission. #include "stylelib.h" openjade-1.3.2/style/stylelib.h0100664000076400007640000000055106713043552014563 0ustar ianian// Copyright (c) 1996 James Clark // See the file copying.txt for copying permission. #define BUILD_LIBSP #include "config.h" #undef BUILD_LIBSP #define BUILD_LIBSTYLE #ifdef SP_USE_DLL #undef SP_API #define SP_API SP_DLLIMPORT #endif #ifdef _MSC_VER #pragma warning (disable: 4355) #endif #include "dsssl_ns.h" #ifdef SP_PCH #include "style_pch.h" #endif openjade-1.3.2/testsuite/0040775000076400007640000000000007572430654013465 5ustar ianianopenjade-1.3.2/testsuite/Makefile0100664000076400007640000000047707443642102015120 0ustar ianian# OpenJade testsuite makefile # Copyright (C) 1999 Avi Kivity JADE=../jade/openjade JADEX=$(JADE) -c ../dsssl/catalog all: expr-lang.expected @echo All tests passed. %.expected: %.actual diff $< $@ expr-lang.actual: $(JADE) expr-lang.dsl $(JADEX) -t sgml -d expr-lang.dsl null.sgml > $@ clean: rm *.actual openjade-1.3.2/testsuite/expr-lang.dsl0100664000076400007640000000702107443642102016051 0ustar ianian ? #\a #\b) (testcase 'char>? #\a #\a) (testcase 'char>? #\a #\A) (testcase 'char>=? #\a #\b) (testcase 'char>=? #\a #\a) (testcase 'char>=? #\a #\A) (testcase 'char-ci=? #\a #\b) (testcase 'char-ci=? #\a #\a) (testcase 'char-ci=? #\a #\A) (testcase 'char-ci? #\a #\b) (testcase 'char-ci>? #\a #\a) (testcase 'char-ci>? #\a #\A) (testcase 'char-ci>=? #\a #\b) (testcase 'char-ci>=? #\a #\a) (testcase 'char-ci>=? #\a #\A) ) ) (define (test-string) (testcase 'string=? "\latin-small-letter-a\latin-small-letter-b;c" "abc") ) (define symbol-proc-map `( (char=? . ,char=?) (char? . ,char>?) (char>=? . ,char>=?) (char-ci=? . ,char-ci=?) (char-ci? . ,char-ci>?) (char-ci>=? . ,char-ci>=?) (string=? . ,string=?) ) ) (define (symbol->proc sym) (cdr (assoc sym symbol-proc-map))) (define (testcase proc-sym #!rest args) (write-line (string-append "(" (symbol->string proc-sym) (reduce args (lambda (args arg) (string-append args " " (obj->string arg))) "" ) " --> " (obj->string (apply (symbol->proc proc-sym) args)) ) ) ) (define (obj->string obj) (cond ((char? obj) (list->string (list #\# #\\ obj))) ((string? obj) (string-append "\"" obj "\"")) ((boolean? obj) (if obj "#t" "#f")) ((symbol? obj) (symbol->string obj)) (else "unimplemented") ) ) (define (make-test title proc) (sosofo-append (write-line title) (proc) (write-empty-line) ) ) (define (write-empty-line) (write-line "")) (define newline "\carriage-return;\line-feed;") (define (write-line string) (make formatting-instruction data: (string-append string newline) ) ) (declare-flow-object-class formatting-instruction "UNREGISTERED::James Clark//Flow Object Class::formatting-instruction") (declare-default-language (language "EN" "US")) (define language (external-procedure "UNREGISTERED::OpenJade//Procedure::language")) ]]> openjade-1.3.2/testsuite/expr-lang.expected0100664000076400007640000000146107443642102017072 0ustar ianianCharacter Primitives (char=? #\a #\b --> #f (char=? #\a #\a --> #t (char=? #\a #\A --> #f (char #t (char #f (char #f (char<=? #\a #\b --> #t (char<=? #\a #\a --> #t (char<=? #\a #\A --> #f (char>? #\a #\b --> #f (char>? #\a #\a --> #f (char>? #\a #\A --> #t (char>=? #\a #\b --> #f (char>=? #\a #\a --> #t (char>=? #\a #\A --> #t (char-ci=? #\a #\b --> #f (char-ci=? #\a #\a --> #t (char-ci=? #\a #\A --> #t (char-ci #t (char-ci #f (char-ci #f (char-ci<=? #\a #\b --> #t (char-ci<=? #\a #\a --> #t (char-ci<=? #\a #\A --> #t (char-ci>? #\a #\b --> #f (char-ci>? #\a #\a --> #f (char-ci>? #\a #\A --> #f (char-ci>=? #\a #\b --> #f (char-ci>=? #\a #\a --> #t (char-ci>=? #\a #\A --> #t String Primitives (string=? "abc" "abc" --> #t openjade-1.3.2/testsuite/null.sgml0100664000076400007640000000016506757335615015327 0ustar ianian ]> openjade-1.3.2/unicode/0040775000076400007640000000000007572430656013064 5ustar ianianopenjade-1.3.2/unicode/demo.sgm0100664000076400007640000000017006713045052014477 0ustar ianian ]> openjade-1.3.2/unicode/catalog0100664000076400007640000000016506713045052014404 0ustar ianianPUBLIC "-//SGML Open:TR95xx//SYNTAX Extended (ISO/IEC 10646-1:1993 repertoire)//EN" unicode.syn SGMLDECL unicode.sd openjade-1.3.2/unicode/gensyntax.pl0100664000076400007640000001003706713045052015423 0ustar ianian#! /usr/bin/perl # Feed this ftp://unicode.org/MappingTables/UnicodeData-1.1.4.txt. $compat_start = 0xfb00; # Small Kana $uc[12353] = 12354; $is_uc[12354] = 1; $uc[12355] = 12356; $is_uc[12356] = 1; $uc[12357] = 12358; $is_uc[12358] = 1; $uc[12359] = 12360; $is_uc[12360] = 1; $uc[12361] = 12362; $is_uc[12362] = 1; $uc[12387] = 12388; $is_uc[12388] = 1; $uc[12419] = 12420; $is_uc[12420] = 1; $uc[12421] = 12422; $is_uc[12422] = 1; $uc[12423] = 12424; $is_uc[12424] = 1; $uc[12430] = 12430; $is_uc[12430] = 1; $uc[12449] = 12450; $is_uc[12450] = 1; $uc[12451] = 12452; $is_uc[12452] = 1; $uc[12453] = 12454; $is_uc[12454] = 1; $uc[12455] = 12456; $is_uc[12456] = 1; $uc[12457] = 12458; $is_uc[12458] = 1; $uc[12483] = 12484; $is_uc[12484] = 1; $uc[12515] = 12516; $is_uc[12516] = 1; $uc[12517] = 12518; $is_uc[12518] = 1; $uc[12519] = 12520; $is_uc[12520] = 1; $uc[12526] = 12527; $is_uc[12527] = 1; while (<>) { next if /^#/; @F = split(';'); $code = hex($F[0]); next if $code < 0x200c && $F[2] eq "Cc"; $type[$code] = $F[2]; # 0x17f maps to 0x53, but SGML doesn't allow that. if ($F[12] && hex($F[12]) > 128) { $uc[$code] = hex($F[12]); $is_uc[hex($F[12])] = 1; } if ($F[2] eq "Zs") { $name[$code] = $F[1]; } if ($code == 0x4e00) { foreach $code (0x4e00 .. 0x9fa5) { $type[$code] = $F[2]; } foreach $code (0xf900 .. 0xfa2e) { $type[$code] = $F[2]; } } } print <= 0x200c $is_sr{"Cc"} = 1; # >= 0x200c $is_sr{"Pd"} = 1; $is_sr{"Ps"} = 1; $is_sr{"Pe"} = 1; $is_sr{"Po"} = 1; $is_sr{"Sm"} = 1; $is_sr{"Sc"} = 1; $is_sr{"So"} = 1; $is_sr{"Zs"} = 1; $is_sr{"Zl"} = 1; $is_sr{"Zp"} = 1; print "LCNMSTRT\n"; foreach $code (128 .. $#type) { if ($uc[$code] && $code < $compat_start) { &output($code); } } &flush(); print "UCNMSTRT\n"; foreach $code (128 .. $#type) { if ($uc[$code] && $code < $compat_start) { &output($uc[$code]); } } &flush(); print "NAMESTRT\n"; foreach $code (128 .. $#type) { if (!$uc[$code] && !$is_uc[$code] && $is_nmstrt{$type[$code]} && $code < $compat_start) { &output($code); } } &flush(); print "LCNMCHAR\n"; &output(ord("-")); &output(ord(".")); &flush(); print "UCNMCHAR\n"; &output(ord("-")); &output(ord(".")); &flush(); print "NAMECHAR\n"; foreach $code (128 .. $#type) { if ($is_nmchar{$type[$code]} && $code < $compat_start) { &output($code); } } &flush(); print < 0 && $base + $pending == $ch) { $pending++; } else { &flush; $base = $ch; $pending = 1; } } sub flush { if ($pending > 0) { printf("%d", $base); if ($pending > 1) { if ($pending > 2) { print "-"; } else { print "\n"; } printf("%d", $base + ($pending - 1)); } print "\n"; $count += $pending; $pending = 0; } } openjade-1.3.2/unicode/unicode.sd0100664000076400007640000000136406713045052015027 0ustar ianian openjade-1.3.2/unicode/unicode.syn0100664000076400007640000002040006713045052015222 0ustar ianianSHUNCHAR CONTROLS BASESET "ISO Registration Number 176//CHARSET ISO/IEC 10646-1:1993 UCS-2 with implementation level 3//ESC 2/5 2/15 4/5" DESCSET 0 65536 0 -- 16 bit -- FUNCTION RE 13 RS 10 SPACE 32 TAB SEPCHAR 9 "NO-BREAK-SPACE" SEPCHAR 160 "EN-QUAD" SEPCHAR 8192 "EM-QUAD" SEPCHAR 8193 "EN-SPACE" SEPCHAR 8194 "EM-SPACE" SEPCHAR 8195 "THREE-PER-EM-SPACE" SEPCHAR 8196 "FOUR-PER-EM-SPACE" SEPCHAR 8197 "SIX-PER-EM-SPACE" SEPCHAR 8198 "FIGURE-SPACE" SEPCHAR 8199 "PUNCTUATION-SPACE" SEPCHAR 8200 "THIN-SPACE" SEPCHAR 8201 "HAIR-SPACE" SEPCHAR 8202 "ZERO-WIDTH-SPACE" SEPCHAR 8203 "IDEOGRAPHIC-SPACE" SEPCHAR 12288 "ZERO-WIDTH-NO-BREAK-SPACE" SEPCHAR 65279 NAMING LCNMSTRT 224-246 248-255 257 259 261 263 265 267 269 271 273 275 277 279 281 283 285 287 289 291 293 295 297 299 301 303 307 309 311 314 316 318 320 322 324 326 328 331 333 335 337 339 341 343 345 347 349 351 353 355 357 359 361 363 365 367 369 371 373 375 378 380 382 387 389 392 396 402 409 417 419 421 424 429 432 436 438 441 445 453 454 456 457 459 460 462 464 466 468 470 472 474 476 479 481 483 485 487 489 491 493 495 498 499 501 507 509 511 513 515 517 519 521 523 525 527 529 531 533 535 595 596 599-601 603 608 611 616 617 623 626 643 648 650 651 658 940-943 945-961 963-974 976 977 981 982 995 997 999 1001 1003 1005 1007-1009 1072-1103 1105-1116 1118 1119 1121 1123 1125 1127 1129 1131 1133 1135 1137 1139 1141 1143 1145 1147 1149 1151 1153 1169 1171 1173 1175 1177 1179 1181 1183 1185 1187 1189 1191 1193 1195 1197 1199 1201 1203 1205 1207 1209 1211 1213 1215 1218 1220 1224 1228 1233 1235 1237 1239 1241 1243 1245 1247 1249 1251 1253 1255 1257 1259 1263 1265 1267 1269 1273 1377-1414 7681 7683 7685 7687 7689 7691 7693 7695 7697 7699 7701 7703 7705 7707 7709 7711 7713 7715 7717 7719 7721 7723 7725 7727 7729 7731 7733 7735 7737 7739 7741 7743 7745 7747 7749 7751 7753 7755 7757 7759 7761 7763 7765 7767 7769 7771 7773 7775 7777 7779 7781 7783 7785 7787 7789 7791 7793 7795 7797 7799 7801 7803 7805 7807 7809 7811 7813 7815 7817 7819 7821 7823 7825 7827 7829 7841 7843 7845 7847 7849 7851 7853 7855 7857 7859 7861 7863 7865 7867 7869 7871 7873 7875 7877 7879 7881 7883 7885 7887 7889 7891 7893 7895 7897 7899 7901 7903 7905 7907 7909 7911 7913 7915 7917 7919 7921 7923 7925 7927 7929 7936-7943 7952-7957 7968-7975 7984-7991 8000-8005 8017 8019 8021 8023 8032-8039 8048-8061 8064-8071 8080-8087 8096-8103 8112 8113 8115 8131 8144 8145 8160 8161 8165 8179 8560-8575 9424-9449 12353 12355 12357 12359 12361 12387 12419 12421 12423 12430 12449 12451 12453 12455 12457 12483 12515 12517 12519 12526 UCNMSTRT 192-214 216-222 376 256 258 260 262 264 266 268 270 272 274 276 278 280 282 284 286 288 290 292 294 296 298 300 302 306 308 310 313 315 317 319 321 323 325 327 330 332 334 336 338 340 342 344 346 348 350 352 354 356 358 360 362 364 366 368 370 372 374 377 379 381 386 388 391 395 401 408 416 418 420 423 428 431 435 437 440 444 452 452 455 455 458 458 461 463 465 467 469 471 473 475 478 480 482 484 486 488 490 492 494 497 497 500 506 508 510 512 514 516 518 520 522 524 526 528 530 532 534 385 390 394 398-400 403 404 407 406 412 413 425 430 433 434 439 902 904-906 913-929 931-939 908 910 911 914 920 934 928 994 996 998 1000 1002 1004 1006 922 929 1040-1071 1025-1036 1038 1039 1120 1122 1124 1126 1128 1130 1132 1134 1136 1138 1140 1142 1144 1146 1148 1150 1152 1168 1170 1172 1174 1176 1178 1180 1182 1184 1186 1188 1190 1192 1194 1196 1198 1200 1202 1204 1206 1208 1210 1212 1214 1217 1219 1223 1227 1232 1234 1236 1238 1240 1242 1244 1246 1248 1250 1252 1254 1256 1258 1262 1264 1266 1268 1272 1329-1366 7680 7682 7684 7686 7688 7690 7692 7694 7696 7698 7700 7702 7704 7706 7708 7710 7712 7714 7716 7718 7720 7722 7724 7726 7728 7730 7732 7734 7736 7738 7740 7742 7744 7746 7748 7750 7752 7754 7756 7758 7760 7762 7764 7766 7768 7770 7772 7774 7776 7778 7780 7782 7784 7786 7788 7790 7792 7794 7796 7798 7800 7802 7804 7806 7808 7810 7812 7814 7816 7818 7820 7822 7824 7826 7828 7840 7842 7844 7846 7848 7850 7852 7854 7856 7858 7860 7862 7864 7866 7868 7870 7872 7874 7876 7878 7880 7882 7884 7886 7888 7890 7892 7894 7896 7898 7900 7902 7904 7906 7908 7910 7912 7914 7916 7918 7920 7922 7924 7926 7928 7944-7951 7960-7965 7976-7983 7992-7999 8008-8013 8025 8027 8029 8031 8040-8047 8122 8123 8136-8139 8154 8155 8184 8185 8170 8171 8186 8187 8072-8079 8088-8095 8104-8111 8120 8121 8124 8140 8152 8153 8168 8169 8172 8188 8544-8559 9398-9423 12354 12356 12358 12360 12362 12388 12420 12422 12424 12430 12450 12452 12454 12456 12458 12484 12516 12518 12520 12527 NAMESTRT 223 304 305 312 329 383 384 393 397 405 410 411 414 415 422 426 427 442 443 446-451 477 496 592-594 597 598 602 604-607 609 610 612-615 618-622 624 625 627-642 644-647 649 652-657 659-680 912 944 962 978-980 986 988 990 992 1010 1011 1216 1415 1488-1514 1520-1522 1569-1594 1600-1610 1649-1719 1722-1726 1728-1742 1744-1747 1749 2309-2361 2392-2401 2437-2444 2447 2448 2451-2472 2474-2480 2482 2486-2489 2524 2525 2527-2529 2544 2545 2565-2570 2575 2576 2579-2600 2602-2608 2610 2611 2613 2614 2616 2617 2649-2652 2654 2693-2699 2701 2703-2705 2707-2728 2730-2736 2738 2739 2741-2745 2784 2821-2828 2831 2832 2835-2856 2858-2864 2866 2867 2870-2873 2908 2909 2911-2913 2949-2954 2958-2960 2962-2965 2969 2970 2972 2974 2975 2979 2980 2984-2986 2990-2997 2999-3001 3056-3058 3077-3084 3086-3088 3090-3112 3114-3123 3125-3129 3168 3169 3205-3212 3214-3216 3218-3240 3242-3251 3253-3257 3294 3296 3297 3333-3340 3342-3344 3346-3368 3370-3385 3424 3425 3585-3632 3634 3635 3648-3654 3663 3674 3675 3713 3714 3716 3719 3720 3722 3725 3732-3735 3737-3743 3745-3747 3749 3751 3754 3755 3757 3758 3760 3762 3763 3773 3776-3780 4256-4293 4304-4342 4352-4441 4447-4514 4520-4601 7830-7834 8016 8018 8020 8022 8114 8116 8118 8119 8130 8132 8134 8135 8146 8147 8150 8151 8162-8164 8166 8167 8178 8180 8182 8183 8204-8207 8234-8238 8298-8303 12295 12321-12329 12363-12386 12389-12418 12425-12429 12431-12436 12459-12482 12485-12514 12521-12525 12528-12538 12549-12588 12593-12686 13312-40869 63744-64046 LCNMCHAR 45 46 UCNMCHAR 45 46 NAMECHAR 168 175 180 184 688-734 736-745 768-837 864 865 890 900 901 1155-1158 1369 1456-1465 1467-1469 1471 1473 1474 1611-1618 1632-1641 1648 1750-1768 1770-1773 1776-1785 2305-2307 2364 2366-2381 2385-2388 2402 2403 2406-2415 2433-2435 2492 2494-2500 2503 2504 2507-2509 2519 2530 2531 2534-2543 2562 2620 2622-2626 2631 2632 2635-2637 2662-2673 2689-2691 2748 2750-2757 2759-2761 2763-2765 2790-2799 2817-2819 2876 2878-2883 2887 2888 2891-2893 2902 2903 2918-2927 2946 2947 3006-3010 3014-3016 3018-3021 3031 3047-3055 3073-3075 3134-3140 3142-3144 3146-3149 3157 3158 3174-3183 3202 3203 3262-3268 3270-3272 3274-3277 3285 3286 3302-3311 3330 3331 3390-3395 3398-3400 3402-3405 3415 3430-3439 3633 3636-3642 3655-3662 3664-3673 3761 3764-3769 3771 3772 3784-3789 3792-3801 8125-8129 8141-8143 8157-8159 8173-8175 8189 8190 8400-8417 9332-9340 9352-9360 9450 12330-12335 12441-12446 12540-12542 NAMECASE GENERAL YES ENTITY NO DELIM GENERAL SGMLREF SHORTREF SGMLREF 160-167 169-174 176-179 181-183 185-191 215 247 884 885 894 903 1154 1370-1375 1417 1470 1472 1475 1523 1524 1548 1563 1567 1642-1645 1748 1769 2365 2384 2404 2405 2416 2546-2554 2674-2676 2749 2768 2877 2928 3647 3759 3782 3804 3805 4347 8192-8238 8240-8262 8298-8304 8308-8334 8352-8362 8448-8504 8531-8578 8592-8682 8704-8945 8960 8962-9082 9216-9252 9280-9290 9312-9331 9341-9351 9361-9449 9472-9621 9632-9711 9728-9747 9754-9839 9985-9988 9990-9993 9996-10023 10025-10059 10061 10063-10066 10070 10072-10078 10081-10087 10102-10132 10136-10159 10161-10174 12288-12294 12296-12320 12336-12343 12351 12539 12688-12703 12800-12828 12832-12867 12896-12923 12927-12976 12992-13003 13008-13054 13056-13174 13179-13277 13280-13310 64297 64830 64831 65072-65092 65097-65106 65108-65126 65128-65131 65279 65281-65295 65306-65312 65339-65344 65371-65374 65377-65381 65392 65438 65439 65504-65510 65512-65518 65533 NAMES SGMLREF QUANTITY SGMLREF -- To be determined -- ATTSPLEN 1920 -- ?? -- LITLEN 240 -- ?? -- NAMELEN 240 -- ?? -- PILEN 1920 -- ?? -- TAGLEN 1920 -- ?? -- openjade-1.3.2/releasenotes.pdf0100664000076400007640000030133407572433017014615 0ustar ianian%PDF-1.3 1 0 obj << /S /GoTo /D (1.0) >> endobj 4 0 obj (Table of Contents) endobj 5 0 obj << /S /GoTo /D (2.0) >> endobj 8 0 obj (List of Tables) endobj 9 0 obj << /S /GoTo /D (3.0) >> endobj 12 0 obj (OpenJade 1.3.2 Release Notes) endobj 13 0 obj << /S /GoTo /D (3.1.1) >> endobj 16 0 obj (Applications of OpenJade) endobj 17 0 obj << /S /GoTo /D (3.2.1) >> endobj 20 0 obj (Obtaining OpenJade) endobj 21 0 obj << /S /GoTo /D (3.3.1) >> endobj 24 0 obj (Supported Platforms) endobj 25 0 obj << /S /GoTo /D (3.4.1) >> endobj 28 0 obj (Building OpenJade from Source) endobj 29 0 obj << /S /GoTo /D (3.5.1) >> endobj 32 0 obj (Binary Distributions) endobj 33 0 obj << /S /GoTo /D (3.6.1) >> endobj 36 0 obj (Installation) endobj 37 0 obj << /S /GoTo /D (3.7.1) >> endobj 40 0 obj (Support) endobj 41 0 obj << /S /GoTo /D (3.8.1) >> endobj 44 0 obj (Version 1.3.2) endobj 45 0 obj << /S /GoTo /D (3.9.1) >> endobj 48 0 obj (Version 1.3.1) endobj 49 0 obj << /S /GoTo /D (3.10.1) >> endobj 52 0 obj (Version 1.3) endobj 53 0 obj << /S /GoTo /D (3.11.1) >> endobj 56 0 obj (Version 1.2.2) endobj 57 0 obj << /S /GoTo /D (3.12.1) >> endobj 60 0 obj (Jade Version 1.2.1) endobj 61 0 obj << /S /GoTo /D [62 0 R /FitH ] >> endobj 65 0 obj << /Length 251 /Filter /FlateDecode >> stream xÚuP»nĂ0 ÜőíÁŚD=,­A¨‡>µ‚X-PÄuÝčď—víÄ Ĺ»#ŹT ů((–š HÎÂľ>ąjdç,qĽZç×÷śu«;Ň@‚ř>Pc˝ÉžľÓWµ«S^•ŮóO®|Ö~¦ý)ßĆŠ%f.)ŘQvľ¦CÚGÝc{JÇ^!năŮóŤF"ŐčÄf+ˇfł•\ÄÁ/ÇMđĐó<Ă˙ ŢÄËĽŚÖ轾Ěa@[ôÎ]D!w^0dK‹Ň»ĹťĘ€JŹ;….Ş+™NŘý'53«‡FÁMË3Ŕp'ÝDź5˙ŠCh÷endstream endobj 62 0 obj << /Type /Page /Contents 65 0 R /Resources 64 0 R /MediaBox [0 0 609.714 789.041] /Parent 75 0 R >> endobj 63 0 obj << /Type /XObject /Subtype /Image /Width 119 /Height 28 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Length 872 /Filter /FlateDecode >> stream xÚíXŰŤĺ0ťri‰nh…J˛Ž_9`Čf6‘öÇht•q0áyŔ>ŽM›6mÚ´iÓEŞJ"?L,Rţ-żía’¨¶E¦úP¶8!ő­ź …­ńłe=yĘ/î–óë\ŮRő¸~·l\ßÎínÝuęSěú)ZťŠqř išK yŞÓ/‰O÷Mę'Ús“݇V=;ţf´(äqś? jzľĽť‹ą†]š÷d—ŮßbndúsÔK ć÷–Ó9(Ö+Ś: Ł0Rëoĺ1őن†&üî”Űĺ]·pRµF‰5ĺśÉ7®C«qcĆł˘¬ŁŤˇEVI¶i¬YÉĚÜ îĺď8ĺYzĽ‡ Z˘Eµ¬Ěż\ ±şdâdő35Łš÷Úß K^’CÁŠdŁŔKd'ôđ—ZÜăÄëNó÷veŇŘ:ą±áâŠ!3%ĐޤęÁĐC“LđéçUB0 %ú÷x~B?ęt¶Ý0VxŢ-m±Úč ˝čz2×4Lă!ÄäŇŮЧq‹Ń ĘĽ| +ËŐ«S4ąq:Íßk]Ń9B-—{­č ^ľ{ÎŞt3Ě ‡ ß}ą…i,ąÖĂéB#«Ł¶nľhyňrł6)ńŢäy2Ľ !]ňb͉±M§kŻÄ Ł43 Ű(Ĺ>`P¬ů7Ă[ >úJ»b_»ż{Pŕ”Ő­ś»0ľ­ĂŢŽ”nş˘ăoŇřýđ&¶k‹#ŽbăP¶ßhÍ"Đë…‚ы٥ßĘÖ‚n]‘:™–qČłVĘh%]sýú Ň>¦ť‰¬Ç1˝ÎżúđD¶2€ŻŘá?ÎÍX…CĂGKăO—˙%ĽĽNÝ“—H”ś%ŃOzhET‘~eáf¤«›¸ŁzO¶ËdHëKžěql„Ě Ň ‚Öáb5˙fËn$0±?Rh _:ťó’Űx.H/@Ôß3Óßí<ěq §ńż^|~¦^G)[żň›x]­ „\H.Iř([N°}ťlŹŁČĂNs ă€L˘˘+n*(‹WŰN°§ v·:pĘ^vĎ]¨N«úě’3»cüöÜ׏ů·§úěřŁŽw»{ÄB’µ›ŹVŃúDÉO4ß´iÓ¦M›6mú/ôŽfendstream endobj 66 0 obj << /D [62 0 R /XYZ 71.731 729.265 null] >> endobj 67 0 obj << /D [62 0 R /XYZ 71.731 718.306 null] >> endobj 68 0 obj << /D [62 0 R /XYZ 71.731 718.306 null] >> endobj 64 0 obj << /Font << /F23 71 0 R /F24 74 0 R >> /XObject << /Im1 63 0 R >> /ProcSet [ /PDF /Text /ImageC ] >> endobj 78 0 obj << /Length 210 /Filter /FlateDecode >> stream xÚŤP;ŹÂ0 Ţű+2¶CMě’TYyJ, S6޶Š€˘Rţý§;‰yđ}ÇFĄĄPĺy&Ť5Ş> endobj 79 0 obj << /D [77 0 R /XYZ 71.731 729.265 null] >> endobj 76 0 obj << /Font << /F27 81 0 R >> /ProcSet [ /PDF /Text ] >> endobj 84 0 obj << /Length 1159 /Filter /FlateDecode >> stream xÚíÝ;sęFŕŢż‚ 6Ú•Rç5q‘db&M&¶ńf00€‹üűtýÇąqîÄ×ţĆ…dŻ8ěw¬fµG»±“5?±3Śa7‡T‡4(;çWGYçCÓňĂQüxE1„T¦ćü@c˙¦µźb(ëz{Íńčč«ď›±e5čŚ.w׎.~ďŽzUÖźőbÖťMzý4¬ş‹ËöřÍbľ™Ě7ëŢŁ“ćÓ©S‡zo?\ C•šoJYHEą‹óór2?éŲ;ľŘ†)łn yHí鯓ŮdĽţř÷ź›^ěNvaŹľÝö;‹ۨ÷hm÷ďuŕ¦÷áqŠ:>ĚË˙äŐtämi¤•†††††††††††FZihhhhhhhhhhh ´h^Ťć¦)kšŞ¶éÉx±ť~OĂ»¦~^ŐˇĚëN?–!/ňÝu_/—łéůx3]Ě×íDűnż9î¦ć·ÓňŹ:ÖOUŠ<ż óxĆýţwţŰýăńŐˇˇˇˇˇˇˇˇˇˇˇˇŃ-iĄˇů,š§&ËĹŰM–ßźOˇ.cű‚úŮf<ťO瞙ϳA¨Š»Ď𧎎ˇˇˇˇˇˇˇˇˇŃ-iĄˇˇˇy÷ĺi×tz˝\.V›ÉE[~ńËlĽą\¬®ÖĎÔ_$ő4444444444=I+ Ť´ŇĐĐĐĐШżh—ż8ľžÎ.öWżŘývąZ\µg§‹ë^ě®ÎěQ61›ď|ń˛n=ăHiĄˇˇˇˇˇˇˇˇˇˇˇ‘Vš/bú1=ýú÷ńt>^ýŮN2~;]oVÓł^Ęş×ívőާˇˇˇˇˇˇˇˇˇ‘V-Ewńň§ß˙qľŢŚgłń¶čbżć˘(BĘę—żŕíżICCCCCCCCCCC#­444444444444Z444444444o©ňęôzą\¬6űEWĺ š(vŐ ˇˇˇˇˇˇˇˇˇˇˇ‘V-š˙¦­xz/·ßz1ĆîdµŢ.#¶ŰŃ-†<¤ýâ¶Ľ©ľ|7· Ť'á444444444444ZŇJCCCCCCCCCóe–Ĺż)9ŠĎ”YO‹††††††††Ć“piĄˇˇˇˇˇˇˇˇˇˇˇ‘Vš·\rT~â*GűGE ĂX[ㆆ†††††††ĆS}iĄˇˇˇˇˇˇˇˇyĎšO©ZŠŮMŮRʲzvĄ¤ths¶T‡4X)‰††††††††ĆhiĄˇˇˇˇˇˇˇˇˇˇˇ‘VšĎXę•ú´+ťŚ/&m‰ĎᢟŰŁeuČ‹—/Vä>ˇˇˇˇˇˇˇˇˇ‘ViĄˇˇˇˇˇˇˇyßŐJ2ŠrRU7'U†uy(tQC]ä÷‚çů~đétú8zň¬zŘÝż˙Ôĺˇendstream endobj 83 0 obj << /Type /Page /Contents 84 0 R /Resources 82 0 R /MediaBox [0 0 609.714 789.041] /Parent 75 0 R /Annots [ 88 0 R 91 0 R 92 0 R 93 0 R 94 0 R 95 0 R 96 0 R 97 0 R 98 0 R 99 0 R 100 0 R 101 0 R 102 0 R 103 0 R 104 0 R 105 0 R 106 0 R 107 0 R 108 0 R 109 0 R 110 0 R 111 0 R 112 0 R 113 0 R 114 0 R 115 0 R ] >> endobj 88 0 obj << /Type /Annot /Border [0 0 0] /H /I /C [1 0 0] /Rect [119.552 685.398 245.857 694.285] /Subtype /Link /A << /S /GoTo /D (10) >> >> endobj 91 0 obj << /Type /Annot /Border [0 0 0] /H /I /C [1 0 0] /Rect [533.001 685.398 537.983 694.285] /Subtype /Link /A << /S /GoTo /D (10) >> >> endobj 92 0 obj << /Type /Annot /Border [0 0 0] /H /I /C [1 0 0] /Rect [143.462 669.921 246.943 678.833] /Subtype /Link /A << /S /GoTo /D (14) >> >> endobj 93 0 obj << /Type /Annot /Border [0 0 0] /H /I /C [1 0 0] /Rect [533.001 669.921 537.983 678.833] /Subtype /Link /A << /S /GoTo /D (14) >> >> endobj 94 0 obj << /Type /Annot /Border [0 0 0] /H /I /C [1 0 0] /Rect [143.462 656.97 225.085 665.881] /Subtype /Link /A << /S /GoTo /D (17) >> >> endobj 95 0 obj << /Type /Annot /Border [0 0 0] /H /I /C [1 0 0] /Rect [533.001 656.97 537.983 665.881] /Subtype /Link /A << /S /GoTo /D (17) >> >> endobj 96 0 obj << /Type /Annot /Border [0 0 0] /H /I /C [1 0 0] /Rect [143.462 644.018 225.653 652.93] /Subtype /Link /A << /S /GoTo /D (21) >> >> endobj 97 0 obj << /Type /Annot /Border [0 0 0] /H /I /C [1 0 0] /Rect [533.001 644.018 537.983 652.93] /Subtype /Link /A << /S /GoTo /D (21) >> >> endobj 98 0 obj << /Type /Annot /Border [0 0 0] /H /I /C [1 0 0] /Rect [143.462 631.067 272.128 639.978] /Subtype /Link /A << /S /GoTo /D (106) >> >> endobj 99 0 obj << /Type /Annot /Border [0 0 0] /H /I /C [1 0 0] /Rect [533.001 631.067 537.983 639.978] /Subtype /Link /A << /S /GoTo /D (106) >> >> endobj 100 0 obj << /Type /Annot /Border [0 0 0] /H /I /C [1 0 0] /Rect [143.462 618.116 224.906 627.027] /Subtype /Link /A << /S /GoTo /D (175) >> >> endobj 101 0 obj << /Type /Annot /Border [0 0 0] /H /I /C [1 0 0] /Rect [533.001 618.116 537.983 627.027] /Subtype /Link /A << /S /GoTo /D (175) >> >> endobj 102 0 obj << /Type /Annot /Border [0 0 0] /H /I /C [1 0 0] /Rect [143.462 607.221 188.293 614.076] /Subtype /Link /A << /S /GoTo /D (178) >> >> endobj 103 0 obj << /Type /Annot /Border [0 0 0] /H /I /C [1 0 0] /Rect [533.001 607.221 537.983 614.076] /Subtype /Link /A << /S /GoTo /D (178) >> >> endobj 104 0 obj << /Type /Annot /Border [0 0 0] /H /I /C [1 0 0] /Rect [143.462 592.213 175.013 601.124] /Subtype /Link /A << /S /GoTo /D (186) >> >> endobj 105 0 obj << /Type /Annot /Border [0 0 0] /H /I /C [1 0 0] /Rect [533.001 592.213 537.983 601.124] /Subtype /Link /A << /S /GoTo /D (186) >> >> endobj 106 0 obj << /Type /Annot /Border [0 0 0] /H /I /C [1 0 0] /Rect [143.462 581.319 196.313 588.173] /Subtype /Link /A << /S /GoTo /D (199) >> >> endobj 107 0 obj << /Type /Annot /Border [0 0 0] /H /I /C [1 0 0] /Rect [533.001 581.319 537.983 588.173] /Subtype /Link /A << /S /GoTo /D (199) >> >> endobj 108 0 obj << /Type /Annot /Border [0 0 0] /H /I /C [1 0 0] /Rect [143.462 568.367 196.313 575.221] /Subtype /Link /A << /S /GoTo /D (318) >> >> endobj 109 0 obj << /Type /Annot /Border [0 0 0] /H /I /C [1 0 0] /Rect [533.001 568.367 537.983 575.221] /Subtype /Link /A << /S /GoTo /D (318) >> >> endobj 110 0 obj << /Type /Annot /Border [0 0 0] /H /I /C [1 0 0] /Rect [143.462 555.416 188.841 562.27] /Subtype /Link /A << /S /GoTo /D (836) >> >> endobj 111 0 obj << /Type /Annot /Border [0 0 0] /H /I /C [1 0 0] /Rect [528.02 555.416 537.983 562.27] /Subtype /Link /A << /S /GoTo /D (836) >> >> endobj 112 0 obj << /Type /Annot /Border [0 0 0] /H /I /C [1 0 0] /Rect [143.462 542.464 196.313 549.318] /Subtype /Link /A << /S /GoTo /D (961) >> >> endobj 113 0 obj << /Type /Annot /Border [0 0 0] /H /I /C [1 0 0] /Rect [528.02 542.464 537.983 549.318] /Subtype /Link /A << /S /GoTo /D (961) >> >> endobj 114 0 obj << /Type /Annot /Border [0 0 0] /H /I /C [1 0 0] /Rect [143.462 529.513 216.508 536.367] /Subtype /Link /A << /S /GoTo /D (1018) >> >> endobj 115 0 obj << /Type /Annot /Border [0 0 0] /H /I /C [1 0 0] /Rect [528.02 529.513 537.983 536.367] /Subtype /Link /A << /S /GoTo /D (1018) >> >> endobj 85 0 obj << /D [83 0 R /XYZ 71.731 729.265 null] >> endobj 2 0 obj << /D [83 0 R /XYZ 193.599 707.666 null] >> endobj 82 0 obj << /Font << /F31 87 0 R /F32 90 0 R /F27 81 0 R /F33 117 0 R >> /ProcSet [ /PDF /Text ] >> endobj 133 0 obj << /Length 98 /Filter /FlateDecode >> stream xÚ3T0BCsC=sc ed©gdfŞśËe ”qç2„Ş013Ó325˛±HęÂduÍ, ôLL,9…pé»+XęYš+„¤ő„¤Dkd–iƆxqą†ŕ·/č sendstream endobj 132 0 obj << /Type /Page /Contents 133 0 R /Resources 131 0 R /MediaBox [0 0 609.714 789.041] /Parent 75 0 R >> endobj 134 0 obj << /D [132 0 R /XYZ 71.731 729.265 null] >> endobj 131 0 obj << /Font << /F33 117 0 R >> /ProcSet [ /PDF /Text ] >> endobj 137 0 obj << /Length 574 /Filter /FlateDecode >> stream xÚíÝËŽÚ0€á=O‘e˛ČŰqnŰVťJŁJí"»¶ DeDÎë×ŕ€¸M«nJýĹ" Ç>ńwÄ&±-t ÜGą–ŽôĐÂf™Ô¸ó+ÁxŤŤ–´,·mŢUŁ»{—S[I‹,¨f»¶Őôkř©é7Qlň"ěfţXE… ÇŹ‘Vá˛îŁďŐĂÝ˝ÉRĘ,Ůö´ąĆÝĆ(16Ý%Ń⺦*ü˛ofÝú©÷—]ëŹ/‹f˛đ§źWuűép<­ýZ1ţ´şýh»Č¤áËĐ{ÓůăcdTřÜ,§˛ÓčCu›<ë·ŇQQvđăŃďÝ—IÄ–ú´˘oäź4hţw eE 4hĐ A Ęz[Í>¤\¨đˇWóémľ ¶:ëk#ejv!#Gď#/#űU=iľ)e&ţzҵ۫ůs¤ĂőЦ[mš®íχębą¨$;Üĺm_Bň;B 4hĐ A†‡B4hĐ A 4hĐ ACY™KüÍ\brm.QűĐ0—ř~1nçő°‰aÖ­ýÉş^Öăţd·ĂůÔa˘´YqHĘţ4” 4hĐ A 4h(+4hĐ A 4hĐđ … š,‡°Żo­¶·B˙a9;©Ń A 4hĐ A†˛˘A 4hĐ A eE 47Y‘^,b°™×2NËRr[^˙O-…9Nť$—©ž§¶bMr:Ô_Ś™Éendstream endobj 136 0 obj << /Type /Page /Contents 137 0 R /Resources 135 0 R /MediaBox [0 0 609.714 789.041] /Parent 75 0 R /Annots [ 139 0 R 140 0 R 141 0 R 142 0 R 143 0 R 144 0 R 145 0 R 146 0 R ] >> endobj 139 0 obj << /Type /Annot /Border [0 0 0] /H /I /C [1 0 0] /Rect [119.552 685.264 345.742 694.175] /Subtype /Link /A << /S /GoTo /D (platforms) >> >> endobj 140 0 obj << /Type /Annot /Border [0 0 0] /H /I /C [1 0 0] /Rect [533.001 685.264 537.983 694.175] /Subtype /Link /A << /S /GoTo /D (platforms) >> >> endobj 141 0 obj << /Type /Annot /Border [0 0 0] /H /I /C [1 0 0] /Rect [119.552 672.312 273.672 681.224] /Subtype /Link /A << /S /GoTo /D (configure) >> >> endobj 142 0 obj << /Type /Annot /Border [0 0 0] /H /I /C [1 0 0] /Rect [533.001 672.312 537.983 681.224] /Subtype /Link /A << /S /GoTo /D (configure) >> >> endobj 143 0 obj << /Type /Annot /Border [0 0 0] /H /I /C [1 0 0] /Rect [119.552 659.361 230.495 668.272] /Subtype /Link /A << /S /GoTo /D (openjade132fixes) >> >> endobj 144 0 obj << /Type /Annot /Border [0 0 0] /H /I /C [1 0 0] /Rect [533.001 659.361 537.983 668.272] /Subtype /Link /A << /S /GoTo /D (openjade132fixes) >> >> endobj 145 0 obj << /Type /Annot /Border [0 0 0] /H /I /C [1 0 0] /Rect [119.552 646.409 230.495 655.321] /Subtype /Link /A << /S /GoTo /D (openjade131fixes) >> >> endobj 146 0 obj << /Type /Annot /Border [0 0 0] /H /I /C [1 0 0] /Rect [533.001 646.409 537.983 655.321] /Subtype /Link /A << /S /GoTo /D (openjade131fixes) >> >> endobj 138 0 obj << /D [136 0 R /XYZ 71.731 729.265 null] >> endobj 6 0 obj << /D [136 0 R /XYZ 164.441 707.666 null] >> endobj 135 0 obj << /Font << /F31 87 0 R /F27 81 0 R /F33 117 0 R >> /ProcSet [ /PDF /Text ] >> endobj 153 0 obj << /Length 98 /Filter /FlateDecode >> stream xÚ3T0BCsC=sc ed©gdfŞśËe ”qç2„Ş013Ó325˛±HęÂduÍ, ôLL,9…pé»+XęYš+„¤ő„¤Dk”ejƆxqą†ŕ·/ő sendstream endobj 152 0 obj << /Type /Page /Contents 153 0 R /Resources 151 0 R /MediaBox [0 0 609.714 789.041] /Parent 75 0 R >> endobj 154 0 obj << /D [152 0 R /XYZ 71.731 729.265 null] >> endobj 151 0 obj << /Font << /F33 117 0 R >> /ProcSet [ /PDF /Text ] >> endobj 157 0 obj << /Length 1679 /Filter /FlateDecode >> stream xÚĹXŮrÓH}÷W¸xą’(jÉ’,ŢB2„¤ dpIđĐ–ÚVmh!xľ~n«ű¶k0ST°¬ĺ®çś{-2·ŕ™űÄôř°ÓöÜyάů®\Îşcéy¦íÚpłPĺÖd+!¦š>,e0ífŻ"‰ŮAŤÂÄq?‘ÄA´4IrŃ“GmĚwŞ _Á–śŕĺYÁH+‹Đ®˘Ę›şhęa‰7ŘŤŕ3‹t!_–Ś˝X_Č/ŻRŚh“çť„V,Ěł)ôł‹Bv xµ~qó\×'ľçXŽşÄ;™Ď3dJĆ}]ˇi‘Ś`ŁT® („h]h:š#ľľK­ĄeşľšTm9äă?˧ä8Żj1$°Ďęt•7eȶŠgĚĚX="WgÔĆqČgŐý2OGph6·•VLđƸ®‹ç§§9<˙YpęâCĐEĽ„“ýF3¨I!ćć“áL”čTyRépx^ÂĂd_×Xă¬ë ę> ŢSE—W’źLü˙UŘA٧Ăî‡` –ĄŃ4ýk±î[‹c‰0fí´vG=ăI^u™ŕ\;ÎFs*Ë>‰•VÉč~A'€čxH.žŃrŻÇ®ÚűúŁŰ:J¤€-Š4¬tSh!6Đ˝‡~š ~›čş)ŠÖ?¸o;,˝ţ„AđYýŞÂnÚ‹8(%4[ îëŽrÝYX.Ú<¤ä!ĄăĽÁŮ’‹·Ýą)§…đ…„—[G8žR € ×,…uăŢß\Ý+?ű‚éöePt7 +Üč"©Ý“ÚÁőV–TůwĂ{ĂĂ2‡{±­ű‹ß'€T4Áu qŮ®řކ{PËô'vŕ‡LŇ2›¨0Ä”č„ęçiH_ŢĽW›AŞÇŹŽť*GÚ¬’ŢŞÎ˙ąđDW[đŃ®›ŕ¤śHíâ´WÄzĂp‡ÇÍ[,dď)J ÚEO—.Fw¦a ‹ŤY4±ŃĽĹ†×ăęÂmsÜZtu-u†jx‡\{ŐŽ@ţ‹ eń”]žź«VŔĹò‰#Ó™ş·=ż]!űQ˘l*ĂĚštĐ;IĆ0RĂş)™”0i"]‡+`§BwVŢx¶So©˛8ż~‹X ńŮýí‚bă/Ođt<ÁţŰŰó‘Éő©XÇ˝ăoC$ŘĂĺy˘u=Ą‹¬F˝źĺ#–)¸VFŇ śiE˙6rŕI˙‹Ŕ6:?DŃD©ş+U}ĐŘ«Ăî×AŰKzÝO|c1Ň1Gš Łl 3űý®{ť˘¦† ‘’•x_ňeöá“5ŹfÖüzf™N°š?±e’ §ł%Ś—%Ś/ů=™­güÂč]v–řn˙EMŻ~ň=ÍY)ÂEb±¨šo/Ť·ëĹI`ąKă\Ë”G<Ż{[ÓOÜ8¦łň˙Żô–:˝ţŔĆôhŇrŔ±VKă‚m8ÍŇ–H (q¨ŇŠîý$őA,§€É—gÄ„¬®ÜÎa<ä#f°˝pűĺ-"endstream endobj 156 0 obj << /Type /Page /Contents 157 0 R /Resources 155 0 R /MediaBox [0 0 609.714 789.041] /Parent 170 0 R >> endobj 118 0 obj << /D [156 0 R /XYZ 71.731 718.306 null] >> endobj 10 0 obj << /D [156 0 R /XYZ 282.515 707.666 null] >> endobj 158 0 obj << /D [156 0 R /XYZ 71.731 692.38 null] >> endobj 159 0 obj << /D [156 0 R /XYZ 71.731 662.359 null] >> endobj 119 0 obj << /D [156 0 R /XYZ 71.731 625.562 null] >> endobj 14 0 obj << /D [156 0 R /XYZ 220.437 590.986 null] >> endobj 160 0 obj << /D [156 0 R /XYZ 71.731 582.464 null] >> endobj 120 0 obj << /D [156 0 R /XYZ 71.731 526.015 null] >> endobj 18 0 obj << /D [156 0 R /XYZ 189.626 492.575 null] >> endobj 161 0 obj << /D [156 0 R /XYZ 71.731 483.866 null] >> endobj 162 0 obj << /D [156 0 R /XYZ 71.731 440.555 null] >> endobj 121 0 obj << /D [156 0 R /XYZ 71.731 409.671 null] >> endobj 22 0 obj << /D [156 0 R /XYZ 190.952 376.232 null] >> endobj 163 0 obj << /D [156 0 R /XYZ 71.731 367.709 null] >> endobj 164 0 obj << /D [156 0 R /XYZ 71.731 324.212 null] >> endobj 165 0 obj << /D [156 0 R /XYZ 71.731 293.328 null] >> endobj 166 0 obj << /D [156 0 R /XYZ 71.731 262.443 null] >> endobj 167 0 obj << /D [156 0 R /XYZ 71.731 232.276 null] >> endobj 147 0 obj << /D [156 0 R /XYZ 71.731 218.608 null] >> endobj 168 0 obj << /D [156 0 R /XYZ 71.731 180.884 null] >> endobj 169 0 obj << /D [156 0 R /XYZ 71.731 180.884 null] >> endobj 155 0 obj << /Font << /F31 87 0 R /F27 81 0 R /F32 90 0 R /F33 117 0 R >> /ProcSet [ /PDF /Text ] >> endobj 173 0 obj << /Length 1419 /Filter /FlateDecode >> stream xÚĹXŰrŰ6}×W𑚄0.Ľv:ť&i’&Ó&mě>t’<Đ$$±ˇ† í$ÓŹďB¸iÇq:ž±H`q°{pvń0ü/!(ađA3DăČ+ö+ěmaćůŠ ě1Ą‰šz|±:{Ć—ˇ,fŢĹć`qQľő_·Ľyąf‘ź—|Đű1Dőă^ó\šńW˘çrýţâĺęé…Ű"ŚcD#ęn§S'‚¤(GČŃÁćăęí{ě•`űr…ËRďž1"YćíWv~ŻWç«?ď±b$! ‘$i sukŠýbM°żCoBC˙őů:ČpúOÄľ­jŢ­ÄńHÄŮ3šLˇ!‡ŔĽŰŻg‘˙ ż¬ňFsČV „řĎ_ýĄ‡¶Eaç¨u8쀳kŰ€Žż¨bi @aBż(˘áĐ hŠŃá˝áĄ¶ů5ďőĂoU3|ŇŹ b°Žâ‰ŮšřÖŇáS nÁÓ;bŹţöM±koχó§3$f âdéíHŤ~Ęe‡ŕEDÓď<”}ś~€ůě‡rTµňˇb#âĆy==ĹÉäŇ–ôŽlL´ĐŠ5Ťük޵`LRv˙X4ždV’ŹÉw’"ŰĽFBü­HÓ j Ó˙ŁvA}ˇ‘«]ÇG×®?&Eşă­čLÖ@¸$ň?ë9—rg:ÔzčR•ĽˇŞK©ßaîyÓW˘±i_ tĄţ™mzq¤5zđăG]CęĄŕb¬\ŚPL2㦀Nót™ äWĽţą®d/‘hĆď ľÝ–Ł†÷óĘJ2†â„śźjަ¨‡˛j¶ Ń–ŐFir#ĎÚĽ/v\Efţgµ›šßĺ*öiDä%Ň[Ăa@T8ŠÔް.Ą3čcEIrpá±bMş…ęö o›C'{ýv.ÝYř<,N©ę‹@W’ŤÝŘuâŽŞŽ›ă ńď—ŽýC8‘·ü`Î»Í >1źž7ŇďŹK¤ěóşÎŐ™ë‘몮Ź\Đűĺť# MĽ™k:×J1ŤÇd·€ĚÜU=/z%ČŽ#‡‘ ŚŃ2öůŐť-UĽ ˝ß/]NK±éŻŐšĽ3¶…hŢaL·C7 ¶˘6 ďp„óˇ`·1*««Ke`ŢÔä^µ2í‹ä} ‰aőbÇřpN=yđŔúb/Z˝Ą ŕ§čC_ŐUołx'†Ú¦e-íÁiŘyˇWôĽ•GgYŢ  Í^ołŻIš÷ĹÉ:*›!F›öŤÜîë…ű ŁÄX=ś„(KÉIíX@IQFwDQž4nfó\„vfw…ióš@‘Šo‡ #ÔŘűaŚn|Z(• Ą,5J•'ň9wyWŮ,r™‘›Ť¨kÝÎA†ň‡yE‡V˘¦ęáPÜŐFŰ/U c?(ő§+ö‡oHŐř>ďĐö‹žţWŔ~řtµ1ëťĆ=ŇŐ¶XÄ<2چčL%néÍőŠ·ĆţăDąSĚIłUU@"„ćq‚ B׺Ţë»Đě5ÝĘ_ü.@!IĚéď5|¶˝gź›dnři.Ęë şŐńXż“°É<´¶`@®ws}Ŕ׸žŮtčÖ$ő…XŇFśÓfv'U‘jŢói==ms=¶¦¦z8r8łřk ˝0EÜ5čëJžđ`‘ ‡¦x·ŞoąSowâü•Ň2^ Ň ‹í•Çí7-¬°Ř —b0ľ=Ň@ąö•hM‹89şdRĆFĄŽpéî_ick-‹®j{'u”#Oă­Čč(»„mŁ…eÔ6¸J´uţŮJt®…;r — ˘á6†GLÍ’3vĽnO/Ű˝…4‚ĘNR¸ńG zÓĎxşü?őBFŤendstream endobj 172 0 obj << /Type /Page /Contents 173 0 R /Resources 171 0 R /MediaBox [0 0 609.714 789.041] /Parent 170 0 R >> endobj 174 0 obj << /D [172 0 R /XYZ 71.731 484.523 null] >> endobj 175 0 obj << /D [172 0 R /XYZ 119.552 461.609 null] >> endobj 122 0 obj << /D [172 0 R /XYZ 71.731 454.471 null] >> endobj 26 0 obj << /D [172 0 R /XYZ 255.456 421.032 null] >> endobj 178 0 obj << /D [172 0 R /XYZ 71.731 412.322 null] >> endobj 179 0 obj << /D [172 0 R /XYZ 71.731 381.963 null] >> endobj 180 0 obj << /D [172 0 R /XYZ 122.869 345.266 null] >> endobj 181 0 obj << /D [172 0 R /XYZ 162.171 345.266 null] >> endobj 182 0 obj << /D [172 0 R /XYZ 205.897 345.266 null] >> endobj 183 0 obj << /D [172 0 R /XYZ 259.027 345.266 null] >> endobj 184 0 obj << /D [172 0 R /XYZ 291.685 345.266 null] >> endobj 185 0 obj << /D [172 0 R /XYZ 324.342 345.266 null] >> endobj 186 0 obj << /D [172 0 R /XYZ 71.731 333.281 null] >> endobj 187 0 obj << /D [172 0 R /XYZ 184.11 300.334 null] >> endobj 188 0 obj << /D [172 0 R /XYZ 189.489 300.334 null] >> endobj 189 0 obj << /D [172 0 R /XYZ 189.489 300.334 null] >> endobj 192 0 obj << /D [172 0 R /XYZ 285.857 265.764 null] >> endobj 193 0 obj << /D [172 0 R /XYZ 71.731 253.644 null] >> endobj 194 0 obj << /D [172 0 R /XYZ 71.731 209.111 null] >> endobj 195 0 obj << /D [172 0 R /XYZ 137.534 176.698 null] >> endobj 196 0 obj << /D [172 0 R /XYZ 71.731 164.578 null] >> endobj 171 0 obj << /Font << /F33 117 0 R /F31 87 0 R /F27 81 0 R /F42 177 0 R /F32 90 0 R /F43 191 0 R >> /ProcSet [ /PDF /Text ] >> endobj 199 0 obj << /Length 1884 /Filter /FlateDecode >> stream xÚĹX[oŰ6~÷ŻđŁŤĹŚHÝ1ô!mš¦E˛eµ 节–h[­nĄ&ţ÷;/’,ĄI m€Z˘Hň;ß9ç#ńÜ‚?<÷1ňmř!!"ž;ʞ™5ßĂ—w3¬zŘŽ‹°íĎmäľčđz3;ż˛íyBĎžovmżMüiń{ÉňKŰ]Đ-WĵŮČÇŹ,e”«öߊš-ń‚/?o>ĚŢnŚ-L0ÂŘťŻŚ±ÓŐ¬ VĽ" 6 "ţxAďsiŽĆqR'…z« ő{P«á5ÍcZĹň­€…•˘7?;é·+Ň´Xwqźä{őŤnSő5f<Ş’-ăj9‡˛P˛(ů۲HÔ[‚B'–´@%ý=¬Ź‚Đkw˛Y†dŃŮ"HţJÄqń%°ąxŰ7Ő 6\Ű ú`ұńCę?łOź­y ř0łó{x¶Ăy6Ó^ďél=űă?ŚčĆaßíč…§č%}č?X\˛mŔSi ăĹۇ2Ą9m»Ś÷e#[ňéglË1ŰrČ<€myým­V,ž]‰e«1ˇKÚoĽLň(mb'Ő«’ÖÉ“>×±ĺ Ďňç˝Qç ŻÎŐŔsA‘őřţj‚ 9;!v @ŠÉŰ—ű«N;IŕYM,_Ät)k™¤V 6ŃŁě¸51Ô䱢{ gČ@"ôI)Ŕy4i˛}9,0ăyŢ$0峀©*Z5® /á ˙oxÄ oÉ’Ýă{–Ľş}ĄRBS–EU+社$…”‡qč.Ô´¦żHfČ®¨äĂUE3vKż-1ŚWmĆJŃÔeSw`ČF»š‚d<ËZLnÉvŻ7$łV ŻN˘Ł¬é`äXz€Ě®ÓČwt·)ômâ âذP(~bĚýCťĄOÁßöăop'–ë=÷ëÍíÍ/oÖëMŚ‹čS·„\a߇4ĺ(řq·ÎŃ^`űV٧pĆP'ň2ś…ç&™`:>ÁZE~,ň|ZOe€Ö4-öŻÔ”v7Ąc#Ë”YĐiÂëńę< ‹öSč’7ąžc-îŞBŮď‰N{E®˛…vQVTFěD|E˵Ěaľ”ł¨ÁüČ“ÔĆcIˇ˝Ş÷2…ME";çű,=‡ůEú&^U€-g´ŠĂ/ŘŔ99ń@«„OBôawÄEˇeżrŞá…Íž ü]h2š6¬‹›q@ŔGSzýîöćËúíĹÇ7×_î.6׊€őĽź"…-âţPŘŢő´tĹv:Ź•í‘×,“TŤ‹¨ÉX^ÓN › łš&©¦Ąúş]kŃ$ilÔ®QĐzţ?—޶Ňř ŔęťĐĎU¦­ĐôČrÝ–ŤZ‚[•éúA»“×INaŕOQ…°Ţ€Śnm•:DAO0† VĹ4i}(š˝¨ÜŽŁ‹ą«ő±’ÇĐPVĹWŐ˛[\´‘OyKBřž©ę&›·bqGŐy´®v ’€I cě¬g\YvŞlmËőضˇ¤•˛^ě&.ŁąĄx±«ď[ú›„s˛0q®:ëKµî°˘Ý–ŃŻÚó7IŢęDÖŠúŢIE,Sžďůđ-ĺÂéŃÓµ­ŮÖěa˘´O±Ł+ L  }:蓸Ub6T@×vAr*¨®ĺ•˙+ľ‹¬{v*<(ŕŢ@¬‘â»Ţ:o4U¤Qă+Óxmay¤=« ĹrŢtÇ ŞO˝ËU]¬bpĚ(ů„ŹŤ Îbµµ÷»ŮřahvÔ^©Ą˙u{3PRÝM®UtŇ»”…^3#JiE{‰ÍT?ĄŔJźXŃEsjGS(ö6w±_ –ĺgýÂi& 3šźŐC†Ś—)(>AJvŽřYŠâhBÇŰ>ňܰ'Ŕ‡§Ŕ˛SYń3"ԛЦOÂŔćY_KÔ=ÎĘ0đ˛ÉPíŠ:‘2Í*í#'pĂÓÚś0:V?ç]†/`Ő 4şÄäŁĐ¶»M“DŐANŮě] …Ń»AT¤·oFű‹ňŇ–í(I![ý*›’ZýrłË"ľĹ:Ů©'#bš2p\ld¦„‡†›…FŤĂ·‰TОďXÎ*(FG5MÉč7Ł&*BT1ţmÉT¨"_)]®×ë›QĐ(¤˘ =»ľŃŕźťŞsSFmH‡©{bwDśĹtamźÎě 0 ržđ_Ă1endstream endobj 198 0 obj << /Type /Page /Contents 199 0 R /Resources 197 0 R /MediaBox [0 0 609.714 789.041] /Parent 170 0 R >> endobj 148 0 obj << /D [198 0 R /XYZ 71.731 706.187 null] >> endobj 200 0 obj << /D [198 0 R /XYZ 71.731 668.463 null] >> endobj 201 0 obj << /D [198 0 R /XYZ 71.731 668.463 null] >> endobj 202 0 obj << /D [198 0 R /XYZ 71.731 408.698 null] >> endobj 123 0 obj << /D [198 0 R /XYZ 71.731 391.597 null] >> endobj 30 0 obj << /D [198 0 R /XYZ 186.817 358.157 null] >> endobj 203 0 obj << /D [198 0 R /XYZ 71.731 349.634 null] >> endobj 124 0 obj << /D [198 0 R /XYZ 71.731 295.243 null] >> endobj 34 0 obj << /D [198 0 R /XYZ 135.367 259.746 null] >> endobj 204 0 obj << /D [198 0 R /XYZ 71.731 253.568 null] >> endobj 205 0 obj << /D [198 0 R /XYZ 404.938 227.816 null] >> endobj 206 0 obj << /D [198 0 R /XYZ 328.954 188.962 null] >> endobj 207 0 obj << /D [198 0 R /XYZ 444.221 188.962 null] >> endobj 208 0 obj << /D [198 0 R /XYZ 71.731 168.872 null] >> endobj 197 0 obj << /Font << /F33 117 0 R /F27 81 0 R /F32 90 0 R /F31 87 0 R /F42 177 0 R /F43 191 0 R >> /ProcSet [ /PDF /Text ] >> endobj 211 0 obj << /Length 1957 /Filter /FlateDecode >> stream xÚŐYKsŰ6ľëWč(ÍX0˘$ć–ÄMęL[»‘¦Ó™$„DÄ$Á`÷×wAôý‘–¸îˇŘ­Šť4V‘踋?Ş‹‰BŃ ‚ű…h‚0źb%†šl¨I)°ŽşXŕ]˝Âc”-?[Ó“ó 4źb+mÝGĎ jn’ťą9“`Ă6S{YĐŠ'µë–(Z +^hěÖ!Ú…Ń÷аż*†DćPLĂe źť&f ÁžWĂŕLJ€ťöý—†ÔÔP3>˛FGéfżß˙¤B2¬DĎ­0ŔďZ?-¨­_4W`©9DŇtś„ :ŔËĺ"éM~$uý(H’! «ë”sž«˙TzA\;Ś ťěÁź„DčˇÝî»%Kł w7ᬿqbMxE YĄC@ź”ßurS;ý¬G‚n[ÉrýpN€@Ř‘aD ý.I¶ö+ŮmVwQ! 5ĺN÷a_†*8…ńĚt©Ú‚žl ś支d˘ Ý@¶ł†šK®µRŠŞ–h6˙?˘ÁÂpĽ±TëąăďoŽ+îd¦J Ă*ÝZ?vbÎĚ%ú}çţ^­_ŢßNAf 2Cr«´7gçĎĂôu‘„+ŕŘŞ¦v*óšBµÉ&¦˝ óľw”dĚöR¬4™ĆJb•Ď„¶—cÝť«aMjĆůJ>`ß7I )Űě˝D{ÚĐŽ?©™9Y©łÁ6÷jÚŞ)k¦†Ç­¦\-U$ŰEd˝a2Ő_”zÁ <“ÉŽ©·B}R#+—´:ˇxÔ÷Ú+h˛žŚvŁ‹B,t/«®(Â…n,®ôZ,u¶fĐÓ–¬ĐőęŹÎLdkŁ™)Ń1,RBd˘\ĺlJţî<úŰR˛v-=ËŐŕ˝ÝéC,% xv:Őg\Zµ’âhşř\„Ć3®ď{hłYkŞ8d_u˙¸ p¦ŕ5hüäCż¦W3íĄ™ĎK9ă—čĆi…Ĺ~ Ę–bŔmňýúńč¶2ŔnOظ=®đQdFC1¨q˝„•˛™çîŁřM âËuĄđöÍGA—ŚňĽŘ9‰íi{뉓0^"µ•hĚŽÔÎÍmPěx w˛­°Ů‘–ŠçFCKsú<Ć=ěşĆéó<ăc*t:ňC'iř$'cą`8Žô–qĐ›tCm÷ë —gąŤ I[°Ű­şĂ›*SEŮß( ÚŞüeöá“7Oˇśľ›y(Śwó ¬=äÇńĽ™S^uťĎöł_˙ĹýŃ6€2˝îήý‰"­ć<™îËŐvă¤Á yNЉ6¸÷†~kÁÇ'é…ęřúż°2z¶yONe"şń˘Ýâ­m×dUkŞ[W›´ÝaU„|)äĽĆęüďĚät±Ů÷ŔîPGü®íxmËřŐ{ĂÎ[ľĺĽ!ÄÝdUŮśŕô7;ş/3‰R_źkĎ=\ŘY‚†ĹĆwS?a¬źúQbĐ ţ ­Źy_endstream endobj 210 0 obj << /Type /Page /Contents 211 0 R /Resources 209 0 R /MediaBox [0 0 609.714 789.041] /Parent 170 0 R >> endobj 212 0 obj << /D [210 0 R /XYZ 71.731 688.254 null] >> endobj 125 0 obj << /D [210 0 R /XYZ 71.731 644.419 null] >> endobj 38 0 obj << /D [210 0 R /XYZ 118.178 610.979 null] >> endobj 213 0 obj << /D [210 0 R /XYZ 71.731 602.456 null] >> endobj 214 0 obj << /D [210 0 R /XYZ 71.731 550.989 null] >> endobj 215 0 obj << /D [210 0 R /XYZ 71.731 546.008 null] >> endobj 216 0 obj << /D [210 0 R /XYZ 129.514 525.25 null] >> endobj 217 0 obj << /D [210 0 R /XYZ 71.731 499.248 null] >> endobj 218 0 obj << /D [210 0 R /XYZ 129.514 481.415 null] >> endobj 219 0 obj << /D [210 0 R /XYZ 71.731 466.306 null] >> endobj 220 0 obj << /D [210 0 R /XYZ 129.514 450.531 null] >> endobj 221 0 obj << /D [210 0 R /XYZ 71.731 422.471 null] >> endobj 222 0 obj << /D [210 0 R /XYZ 129.514 406.695 null] >> endobj 223 0 obj << /D [210 0 R /XYZ 71.731 386.605 null] >> endobj 126 0 obj << /D [210 0 R /XYZ 71.731 342.77 null] >> endobj 42 0 obj << /D [210 0 R /XYZ 145.325 309.33 null] >> endobj 224 0 obj << /D [210 0 R /XYZ 71.731 303.152 null] >> endobj 225 0 obj << /D [210 0 R /XYZ 71.731 303.152 null] >> endobj 226 0 obj << /D [210 0 R /XYZ 230.216 290.351 null] >> endobj 149 0 obj << /D [210 0 R /XYZ 71.731 262.291 null] >> endobj 227 0 obj << /D [210 0 R /XYZ 71.731 224.568 null] >> endobj 228 0 obj << /D [210 0 R /XYZ 71.731 224.568 null] >> endobj 209 0 obj << /Font << /F33 117 0 R /F27 81 0 R /F31 87 0 R /F32 90 0 R >> /ProcSet [ /PDF /Text ] >> endobj 231 0 obj << /Length 1837 /Filter /FlateDecode >> stream xÚíYYoŰF~ׯR ˇ€ćňó'Ní4u m€$kr%­M‘ĘriĹýőť˝xËmŠ´1Š"@H®öëűffŤ¦üCÓŮ‘7¶Ý0&»‰3ÝŔ/Ż&HĎđüŔF^4őě`‰ ĎW““3Ď›ĆvzÓŐZÎ[Ą¬Ë=É/f^`á”ĚćnŕXČölW˝ľ#ÁĄ˙ąŕd†¬röiu1yąŞĎB.˛ ¦óú°ľ4s-l$ž#ŘO>|r¦)Ě˝8¶/¦xwlÇÓÝÄ,PßŮd9ůĺo¬0ç;p°kŁČo,†–8çdšF ÍćQëÍů™xzădć:Ö ÉS5vFżĚ`‘ö89sŁöŽsö}ąď;RYĹi‘Ďć! CąRZ”đôck‡oäVj´¬~ă[ĚŐŁ›­~ÝđSď´ÔK¶ĹĚ ¬C®‡ő3-’jGr®ga)şÚâÝIBŤ)r|;t"iŻ8@Rţ=ŢÉčď¤{0Í)§8Ł%Ń['c"JžÝÍÂŔ˛űѶń8îw± ~čÁçęŕ[Vű}–®v¤łŕǵÁ‚©Ź+ńQŃ,ĄůFŤ0/ßę ¶1ŰŰŢâ»á/¨MĐE‹Łq˛&Śä j:ÁÂ:Ç:ŽOE¸–<#OŐ÷kĚ2őö’&ŰŔÎ(DđyrÓS,H+°6»m€¶e±ćjŤ°®čçŐfdő[V\eÂ1B¨±.lb+ŕi€iHÝŠ +%äĄęĺ°5ޱŢbjÂü;Ť¨Ýžâ[mŇ‚ok”5L :ř#’Hçśw‘›ÂBRR†AÁÁł2„_ëű­5k Ú–:Ć?BKpxąĄű˝aťĺz¸™Ż±T®±˛ŐűŹĘYDüo é;–Ž*Úł37*TXjt »USF3Ć»Rb=Iž §É]ŠŇĆ0ëˇĹM0fµ2%Ţ™ éŽŘ͢‹Vöö»jä…É!8´‹Öë­ ÍÚŮţŽpm—˛8Őuˇp Y¦€‘ŃüF+°™AUAó’ßNuNʨ:(潟ň1gEľ©Ó`ždUJJc0­B‘ĄÇ$“6QŐłľ€úXÚBŽc‡‹˙óÖ‘ĽĺéĽuZWj<%Çu‚´>ŚH{ĂóćśQ•Ĺ8y¤iŢMnśćvZf-•ů_—ĘVłÄŮ•†ßr/ -J: ±䊚d'2‘|ůůë»r÷żyR[´(?ÁęÚU-h ]ťŔ9_^žśż<Ő°rP?Ł…†:HŇě…۵X„S¬ ßĺ«7?Ż>P:ăw5˝3ĚâT*÷™NˇÂ —8Đ5ß“!ď·Dťě®É[µnÂM2U7Nŕ‡÷űÉ©f¦’ąa!c:Ć4!˛nüťfńЉĆ×Dó˘FSŰ;K RćO4}®DëŞ8çqŹg:­†nĹÎ*RaťĹ›u"'ňţáRú·­Q%JűşśęÖ2#ČQNtdČC'ŞŤ®Ű\]¸ßWĽ.ꬎLJĽŁę‹[Q$Ş Đ`Ď93Mág$zňř‰ž±Ĺ ËÄ×)+›r¤%Ć 8;,›#îHú5ś%/! ¶1Ăń渕¸Ôa8/Ĺ®jčěRȵ2n˘Y}‘`jĽćơfçĆâ-ů{ÚC(HíŢş™¸źŃ3•›Ł,ůvýë,8÷# _ń„dˇ6'N´÷ë 4•Áe]ŢČŽC] ynRł/śZĘť˛ŕÖλŰŕĽÂL›Ć…,do—ŚF±ŻEXmM,uĘw3¸gt‡•Ö/aÓ°Ńś“ĽÉQz­î(LݒڶzĄr¤—ŃWM÷‡S…@ËF¨e%q; †ÝlSý†ĆëꇬgúↄőăU•ěŕ‡ÚŽ{č-ʦlŃu„syWŠô".7»­GRěö4ŐeŮ2l™ę‰Đ‚LĘm˛ŁEU*'ě1O¶¤ÔX۬)„”{’PśĚđ˘wÄjÁ¬÷}őĹÓ‘¶˝ßťĘ’fŘbI·~8)[Q`d¨ę¸˝Ç“–Íź(öHëžäŽ`VęXy_Őš™•WtáĂŤ|ą,ÉxWý#Z§F@‘îLĐâćN•Śř‘ä[CŁÍĄHŮŽ±ĆW°u×]é6JšÖ6jqggKŚ´®'óë*oUĚMţŕvüZĄC/ŠĆy˝ç5Kĺq} ˝ĂTe€ëĆWîٱçiŠ!cY¦®Pš4Ř öĹ4Ó1^;r‡Ż 2Ź_  \ŞŰ›öŐÍHA8¸4”płŘµ!|V§ŕĎŤÁŘZČl¤¶^X’Jz—DýT¶ŹěŘ—¦íŹ~oü'—KőúţD=_`>ý¶Mö Ł"ÇłCßű ‘-ä8çŢ?U îł};^¸j‘ŮđY7ˇäendstream endobj 230 0 obj << /Type /Page /Contents 231 0 R /Resources 229 0 R /MediaBox [0 0 609.714 789.041] /Parent 170 0 R >> endobj 232 0 obj << /D [230 0 R /XYZ 71.731 674.232 null] >> endobj 233 0 obj << /D [230 0 R /XYZ 71.731 674.232 null] >> endobj 234 0 obj << /D [230 0 R /XYZ 71.731 545.415 null] >> endobj 235 0 obj << /D [230 0 R /XYZ 71.731 545.415 null] >> endobj 236 0 obj << /D [230 0 R /XYZ 71.731 455.452 null] >> endobj 237 0 obj << /D [230 0 R /XYZ 71.731 455.452 null] >> endobj 127 0 obj << /D [230 0 R /XYZ 71.731 342.576 null] >> endobj 46 0 obj << /D [230 0 R /XYZ 145.325 309.968 null] >> endobj 238 0 obj << /D [230 0 R /XYZ 71.731 303.79 null] >> endobj 239 0 obj << /D [230 0 R /XYZ 71.731 303.79 null] >> endobj 240 0 obj << /D [230 0 R /XYZ 222.346 290.989 null] >> endobj 241 0 obj << /D [230 0 R /XYZ 71.731 219.094 null] >> endobj 150 0 obj << /D [230 0 R /XYZ 71.731 206.143 null] >> endobj 242 0 obj << /D [230 0 R /XYZ 71.731 168.419 null] >> endobj 243 0 obj << /D [230 0 R /XYZ 71.731 168.419 null] >> endobj 229 0 obj << /Font << /F33 117 0 R /F31 87 0 R /F27 81 0 R /F32 90 0 R >> /ProcSet [ /PDF /Text ] >> endobj 246 0 obj << /Length 1896 /Filter /FlateDecode >> stream xÚíY[“۶~ׯĐL_¤‰Ĺ%x•¦Oµc'v˝»Ž%·ž‰ó‘/(µňë{đ&ŞÝ¦í¤i3;ł< q9×ďś‘©dš/ ᬼ ‰§ŮqâO÷đĺ› ±3üičĹË?=ßLn^…átĺ­’pşŮŐ36ů÷łűoća<Ł9›/‚Řź/ôCľgŁĘľż“š©ů›7“—›ć(IĽ ¦‹ć¤!‹,˝]Ř9®çü8ůţšĂÜ7ß WËé#ĐľGV«éqâq1YOľű+Z%,Hŕ‘4jŐ@.ŐđZł#™.gdľHâĎÖŐé$çdVÂk¦ÍÇÝhYšÁ-Íî׆üxcž_Óň‘‹ˇ’€…Ŕ[-WżLôˇ q#H^ ňžíXÉD¦Z$~Ľś˝ââÁđJ#?łL˙ŃĽř3Ú]î«âS“gÖäg‰ě×§ĹÁÍa×Tł9‰g{Yžaße´š­ĺN?ÎAQ·µ>ňĽÚʬ~WĘmúM !ĆăpQÇá ‘Kä)!µ!¶¨đŠąRa‰˛†ö©v7°Š!jŰŔó㍵J=:TĂŮ;YG8}Ď”,*Íqׄ$É(ł1äZn·ŚŮÝ™8PĐ˝eRKóTčJĄ~Ä‹ŕ4Ď 6 2IüČKü´v€ULjViĄe&ĹÎĚę“ďűޤ†űúÜł2nŤĚ®—üV§} ?Ô.-”eť‹¬¨rgubÇs˛FwČPP3„š­ŐÚ•Ů ˛–G«ż#uü ĎŔ’tzĄ…f†wŐW?žJ‰ľ÷ţcN\·ˇ[^p}îńd”ôÉŹý_}eYŇç­3홂ĎÄkŃÍyÚ[ÜęÝýúőGC2ŁnŁŁşrŢχŢKŃ{š€®Ľ [·HŠőé[îéŤŕń}/YżšżxÇOďŔ‚÷‡»ÚXi ş^\0óůH"VE 3>Qîç ÖŮenó1«…Ë˙‚Śő$ ż“‚= şż–YugBwĐbÝŃvßIçÁ‹60ŠĹ¨¦Â(hŚ9clY¦{ ע~Złub@ý« -$žö8@lڰݲhÚˇĂusPquް"·ń§<çČEMçyĎl廫¨mXÍ€Q©‚ű – ‘1k¬‡¸Ďł¦DĂă ŚjńRJ·ÉF0Ȣ}Ţ’{Ěěňů‚}u` ĐÔř<ĘĘľ~äú0X+A|\o€÷2ŢŇČK—żŰ8¸…Ü0i;o‡÷ßÜ}0„’U‰–Ů—EĽÔRżu¨űËÁ–\V ç… }Ć0:ČrćÂůäŕËFT ĘĆĚşZż4Ô[.Ş/†L˝ĐÂ. ľĄÚ} đhďŰe¨›`<ý™…Ťä?DI@‚zň˘ťýź©°7®hQŘŔ VžX$ş€ŢŇÜ4éJp ‰Ş­Ô¤­A ľŐx ,ÚrňUŻ\^ŰS¨ĹÔÖśÜÔ§ş‹Ai/`¦)ÖöL`1éd¸Ą¨F†Â»”ch5‚ŞĘšýśéąPš‚-[µĺĽ„FŞnyTű`V2dĂ»n÷‹dVGwŽ€ŹÜGˇ)„áŮ)řaxq`ß ;±Ö­|@áęC[ăănµŽ€0YCH™m—«ďŞ_÷Rs@‚8r|´ş7Óď n›LŇéŢş¦˛űĄS,ľn•öF,~Żúľuń¬śűîę€Ę0=ÖŤ`§Ťŕbßo=D]<ŢT§Ľu&H´D/ĄčÜäĘËD¤ăĘŠď¶Úž{ç°ň"ÂZtëę˝ ÓşüuľÄK‰‡«]i.]ť¦ĺÚlÓę ĂujîÄĆ6¨]60ŇŰT3ĄźŇą•¬ŕ®_Ši´Ç W^¦ż—ăe@ôä ŞŹ·o ńü¬mIp_9k®°ĘeHôŕç÷·uŮţŰ®ÖҦ<śWčzý’Ŕ ČŢĄĺ(ż âÍ<…/?»t ¤nŢrjýţ»Š átôoş$k´Ö\8ú-CsYf¶UMTáEmţ¬×=(ńé`Ë$Ö+ˇm<·ÇË'˙*ę·@ťT8‚8–,R[ŐľůbńĺX€·ú>ńý¤a›ćňcxÂ%žrˇK™Wí-ۡ-o2vŇ}­ëă}š w ë<ż‹WÓµ¦$%OŔťć]‘ĺnôǮș†Úŕş¶!9•4Ó¬é4ÉLd2oňŹ)ɬjţžůŰ´†ÇĄŞ D‘{ÁnER®cloRŢ7ý'ňbZąľctk§Çw%RżcÔmv>ÁMş¬‹Ť‚˙S•ĐĐ)‡ö5f§ë4ţ4CĎ6Ů WŤ¬×ŻÜÂ˙·tôÔßKb›Ž^ń/ö’ /†”2Ţ cđ—}Ô‰şŢôT'"(ç`iáöâ˘÷ ˝Ý†×Ĺ.«¬íeÁ)ĂşÂxĽÚ…É-ş÷Y/ W˙) ćŰt¦×ÂÖŁ jăÄÝÎ|+™ŕŮKř‹(ő–1ľ/ŁîďzWIL®ý6čw—˙ ŚťZendstream endobj 245 0 obj << /Type /Page /Contents 246 0 R /Resources 244 0 R /MediaBox [0 0 609.714 789.041] /Parent 170 0 R >> endobj 247 0 obj << /D [245 0 R /XYZ 71.731 589.888 null] >> endobj 248 0 obj << /D [245 0 R /XYZ 71.731 589.888 null] >> endobj 249 0 obj << /D [245 0 R /XYZ 71.731 486.974 null] >> endobj 250 0 obj << /D [245 0 R /XYZ 71.731 486.974 null] >> endobj 251 0 obj << /D [245 0 R /XYZ 71.731 319.303 null] >> endobj 252 0 obj << /D [245 0 R /XYZ 71.731 319.303 null] >> endobj 253 0 obj << /D [245 0 R /XYZ 71.731 190.486 null] >> endobj 254 0 obj << /D [245 0 R /XYZ 71.731 190.486 null] >> endobj 244 0 obj << /Font << /F33 117 0 R /F31 87 0 R /F27 81 0 R >> /ProcSet [ /PDF /Text ] >> endobj 257 0 obj << /Length 1552 /Filter /FlateDecode >> stream xÚíY[oŰ6~÷Ż0°=H(ĚşZ{[łfkŃ6Yě-ş>Đmł•EU˘šfż~‡7ŮRä )V¤Š<—Cňđ~?*xęÁž&%üř)ňăhší&Ţt=żO°±Âá ™(š'ŇŕérrrÓĄq0]®•Ý2ăśW´|á‘CręÎüČs0 Ż‹—´ ¤1íŻą .v÷íňĹäٲ[ űaMgÝbCof!žŁ<žaé†ě›5 +7ş~łe‚ębS‘Ě«Úő=‡Ż\ZŘąXŮëĚčÁ4Đńu› ĆŤÝ?žpGÎŤŚó{!Š˝Dm Ť|ĺ(_˝Ł™Ý'g~˛ßČlo Ů—m`|JdÖ"gĂë[wĎĂÔY𵸑NXľ6Ů}ÚnÔ‚^oôEÍWj+ ĆN€¶…íĂHaFÚČ5kŁ+tÇ„ ą®¬¨¸ˇ´Ô±5öU»*X6cĆ”ůŔ ąm,EwťMFZŔcÁ!ÚlGŠ5ŻwvůëW/uÂëfrÁ­oúwCe>h Ë‘Z`4˘—´áE«3ă8VÇ"l×:‡I$¨:@Ůux+ŞV­Ţ‰Ý—FV ©ˇ!4!™I’ů#Nx$ Gź ôŘ]ćJť3™GyÖčßŇ QUrpe+ ĺVźmăśBÂsZŠBÚŢŽ¤!@Áüŕ˝Cş°á¸¤kZÓ ÎłÍć%á‚/e’p„IÔ­#\:ć*lĽ›´ĂPM ™s¸ŕň:ÁĘí†VDBq«Ç¬kľ307S\Ňť:MÚ'ą}=×»á4M5Çv‘˛O]|%+í•“Çr+DőËÉÉÁ’¨ámťQŕKĎQIĹ&y“$†ImUq h–Öťkuő׺rVSútń›®„(üÎÉBm6¬vgOîHIŔÇ»î¬x-ţGN Ä)j:Ţ%7—°ćqfŰąŐ>Cj?źFŘ첗Ý}Ě[é·˝Ő3^J,oZ fhÔ…­Ë[+—VÝĺOË-ç}őĐČ“U‹ÎEI]ť— -ŽR_$ĂŠB’Ţt10»8_<ż†"ä¤ŕ±ŞiM‰hm^ěÜç=Ác ¸ 4‘ţ(ٰ‚@ÎşîÝlá­{ ř!gHBsCBżĹ^´$ó¶ Eµ%FŐHH´;ZłL7d˛a w]& 0¸éż_–îňhŢ6şI%~Oy©žĄhľs2»´ űCňč¸ç_VF±˙ŕČŹľ"•1vNi-äVZ ™‚Ęŕ¬ě'Ć&­±Ň!ňš63şÉ˛ËĎĐŚŤ,âCt‚ŕ"µFzĆë—Vî€ÇtDÇBşGŔzę8šYn-#Tr›ęA×g C“ĺôşE–nÄxmŚdďeXAs?D}-*š1Öb×&­rN›űUŐţ ÷·KÄ·ÄŕďôÉ]‘7âÂčw3\1cq{ě{NĆw¨®ŽťîőÄPŐ_UN¬&˛ŮżÓşÓŁO:ŞąúzH~QĹöy»×ˇu[öi„Ćź+7”äźk2üQ'šáĂôJv >”ZšşÓČŇVÍŰÍv|Ë~hűFęk°ţľváĘsrL±%é~ç7ěÄĽ(tžIŃͨMęŕzőµ 7€“I÷DbzcľŠ~ÇL¶hĎôyz©ÄOkđžŰ|]‚{-Śá­*DdŰŽÚčP—XŠéT°açđ÷»iąL•t4{O6v)0:Ć)«-‰˝Ţ»ĽxĄôÝ ýł0m!˙íEČ×ď—á˙fÂŘC©çCůľ˙%Ă©#DzŚťđ?Ç€cßendstream endobj 256 0 obj << /Type /Page /Contents 257 0 R /Resources 255 0 R /MediaBox [0 0 609.714 789.041] /Parent 269 0 R >> endobj 258 0 obj << /D [256 0 R /XYZ 71.731 729.265 null] >> endobj 259 0 obj << /D [256 0 R /XYZ 71.731 630.954 null] >> endobj 260 0 obj << /D [256 0 R /XYZ 71.731 630.954 null] >> endobj 261 0 obj << /D [256 0 R /XYZ 71.731 528.04 null] >> endobj 262 0 obj << /D [256 0 R /XYZ 71.731 528.04 null] >> endobj 263 0 obj << /D [256 0 R /XYZ 71.731 425.126 null] >> endobj 264 0 obj << /D [256 0 R /XYZ 71.731 425.126 null] >> endobj 265 0 obj << /D [256 0 R /XYZ 71.731 335.164 null] >> endobj 266 0 obj << /D [256 0 R /XYZ 71.731 335.164 null] >> endobj 267 0 obj << /D [256 0 R /XYZ 71.731 232.25 null] >> endobj 268 0 obj << /D [256 0 R /XYZ 71.731 232.25 null] >> endobj 255 0 obj << /Font << /F33 117 0 R /F31 87 0 R /F27 81 0 R >> /ProcSet [ /PDF /Text ] >> endobj 272 0 obj << /Length 1869 /Filter /FlateDecode >> stream xÚíYmŹÓFţž_Á[ŕŤ×ď9µŞĘqĐ;ÁA/ˇŞý°goc{ÍA}gwgŰI$@EP©ş·¶÷eć™™gf6tęƔÄ>üóćÄ‹Âişť¸Ó5|y:ˇ8Ăťú$LbůéŃr2{âűÓ9™GţtąR3–ŮkëĹŽ—W¶Z,ă¶ă…®E‰O<=Ľág ľż®oěż–W“‹ewDEÄ ˝©Óť4 hBÔˇ°s¨ćĽźĽţËťf0÷jâžLď`ě:źO·ł@?“Ĺä÷ŻX±Áˇˇq°‡Âp)řÔŚ‹ş¶»a`]”VÚÔJů–—˘Ń_W¶çZU­ŐJܱšë§—¶ďZ,•Ţ1›şÖ:/ׯŮ/îźčĐĐ(PçŢđ¦*Z‘WĄíD4Šô©)‹¨?gďä^üŤëzoôKQé˙ĽlÚ'Š z´cé;¶6s™™–ü4\~+emó"ÓŹoÜĐÍ•ĆE›ˇěSę$rcâ<¤Jh–eąY.«VZÉŔ›& d$• B2÷ÄöńĹbůřňćŠěĚq/íŔµ>äuUJĽőŢl<łÎŮm„”č×—řąŮT-Čk(+9ý•CµwUÓä°ĽS]jĺ$q“ˇV#4n^>? g‰ß-›@„Zŕ÷»\€P(_ Ö­…„r€űމtĂ2&pŤ A|‡Ń ľSl†ź›csŃî4ěđp=›%·)řÇǧׯôŕüÁ=H«í./ŕ;LkŽXÂ'~ňŐ:\$ŤŻy™JźŚÜ¨]\h×z äeűQ?ĹÄ߇öŻeVč‹ts'y…Ýʰzhč}ű7C%Ďú{y8íĽ*KžŠ\›ĐŃŮ2 ÍůJâs&”=ÖU %Á\“§AÚĂóQ»>˛úe]AÄ”R´ LÎaˇ‰JĂůŞn Ś›Xk.6®yŹŚý›Y# ¨Yťá^ßvAžnŕ V®1XGr÷¶řJŃRcHZ2z—Dz<ŔŠ˘ĎX*wiřIK~1„Ź3ËľZOá`ĺër|~~„Ă=%»Oܡuű5•ˇöNnřLŐŮńŁÔŔ'ˇ3fę€>d%‰—|'ş›˙đĄ÷Ůt÷üF‡ŘGýÂ'hűÂ` Ń/ nYZ«őÇęKů$b«É3Ž;4R #ĂĆá2fŐÖ)ŕe­*$‰^jÖĂű?ŹĂIo#Äîl6ËŻ3®y/ -’_7-9ń|VAčJĚötűDÚ ?Ç ż"'ë©g,­ˇ ]ťě'} ]Ú 0‰\)ŤDÖŤ C(^vŞ~ b4¸Đy`¤™ľ/íříOýöę$UŞ–¸“Ňfµ%đ†*áđ}©˙÷řfAsp’¬:Žş¸9ĽđČGrłAűGŞëŽóöšHşh"§uXIzD¬dék°’Ż;¬ú¤z[wé(/ ť*QňˇkĹ#Ťęlť^µßę=FrżR°ý#¸Č ĘiaňPFڞ}óËOj…€v˘«ęÓ «Y |‘7"O{˝„ń­˝u@±şĘÚÔ r"˝Ą•śW r2ôűęQâyF­¸«‰ö‘Î!$ˇg: öÁNäc‡ţPłˇ)żNU:uľ§¦šĎ†gPχ;ÂC tϬh*í®÷Q"صgĆ:÷n Vľ3Ě*š1őU7łs5ÝMI©őé} »ŮY•¶˛ž¸‡[ëŕîDÄY+8°26čÜpP-ś´2VUžiÁňBĆďŮ!Îîŕ{Ż®o.ž^.–7ŹĎÎ0Â%Ŕ|6;vv¶®Ę1&ůĺŢŔłľb»‘qŹ8*Ú[čłFŮ‹Î@ł˙[ŻăµŹµČËZ±Ĺ™[™+ŢÎĐcw ‡ůŻË'íµÎÓ¶`ő MaŮłáĄi*wµ:Z—Ą`îşf[#˝ŃVĎůęŔ3 Xfč2F(ިŞúč…u]%ţ˙iáDZ0-\nwşˇ´= É;F‘o‘Ö•0ڎĎ Ľ`ţSşn Áqż¤+µ„úâlÔ˙}»»łc„aJJIe:$ćań窙4@R?iđź~ţŨ2D2tÉÜ5U»ĽbP»™ŤÜŔ b’xňŁ "ně÷U:ů;Vrę—)·żüŁü´endstream endobj 271 0 obj << /Type /Page /Contents 272 0 R /Resources 270 0 R /MediaBox [0 0 609.714 789.041] /Parent 269 0 R >> endobj 273 0 obj << /D [271 0 R /XYZ 71.731 729.265 null] >> endobj 274 0 obj << /D [271 0 R /XYZ 71.731 661.28 null] >> endobj 275 0 obj << /D [271 0 R /XYZ 71.731 661.28 null] >> endobj 276 0 obj << /D [271 0 R /XYZ 71.731 571.318 null] >> endobj 277 0 obj << /D [271 0 R /XYZ 71.731 571.318 null] >> endobj 278 0 obj << /D [271 0 R /XYZ 71.731 351.841 null] >> endobj 279 0 obj << /D [271 0 R /XYZ 71.731 351.841 null] >> endobj 280 0 obj << /D [271 0 R /XYZ 71.731 223.024 null] >> endobj 281 0 obj << /D [271 0 R /XYZ 71.731 223.024 null] >> endobj 270 0 obj << /Font << /F33 117 0 R /F31 87 0 R /F27 81 0 R /F42 177 0 R >> /ProcSet [ /PDF /Text ] >> endobj 284 0 obj << /Length 1647 /Filter /FlateDecode >> stream xÚíYKŹŰ6ľűWř ¨h‘Ôs/E“4MÝ$ÍEIZ™¶•H˘ŞÇşéŻďđ%K–,šĂ&Ŕb±I çĹ™o†2^şđ‡—!F!…‰ üeZ,ÜĺŢü¶Ŕš‚z>Â4\RäGˇ xş^¬^PşŚQĐĺz+éÖ›÷֛Е—6ő­dĂl‡ř®…ED ß±ś%Ť^Í[fc«±?®/ż®{Y`„±żtza§Ú8Ž;ű’ćďĹűŹîr´— Ń8Z`ě"ÇËba6¨yľ¸^üń?vů.&‡ŢŃxę‰W-+ŔŇ0˛°g;ˇë{Ö«˘ŞmâZÜ&ŘşcőşÍ ¦FM[gĺNŤ÷IąÉĹ ÜłzA¡ĂqžóŽ5<ďÚŚ—¶ŕ °ţ´1ĆVRgĽ“î•Îľb»ťž}p]ňŹŤ}KŞ Y©ží^ŽÖ F˝NbÜUŻ[5á[ő”'§ŤÔô•~ťiY%X5©xÓd·9F-±ëˇŔ Ą3cKkZ®S^TI=Pć'5Ü$­^÷ –°$Ň*ü’7š đhł$W“-Ż‹¤í]ŕ»M—î53…ú`Ť.77Ň“ÎŐ•óüą–ss\Őn¨ŐóĺË Đâę cÍÔč/\ŕh‚çOâ„{ň|ďÂYmx 4ňď›Fţ|¬”§ $2Ž'Éă»ËŘ‚-ˇ.Š#˘™7Ľá[î$ÄđÜPDŁď^ĆŮďęĽß˛š•)Óכ۶şXA ®˛×€˝qwvŕ[({ÝtčŮ›«#?A˘®Žđ˘NĘÔdęĄNźß“”7-“l˛Bŕ •rźÉtó­Żż€äČ‹­kľm6†é&čźv»™ÝokéŠ$Rî‡MćäÎ}˘Ş±ž˛VgkÁ ľjÚ$ý¬Vş&Ůią‡=+ źX«8 yRŰ8˛vsđC¤zyÖ€0đ¦u;śă–ŁE#üĄ€żkˇ eâŔSö/kT@zä8ŚPD˘s9>ü ŹÄšÖ`eÍ6]ŞefF}壨lNž8MČřc(>:˛kzfÝŤlUW˛\ ČyďëL ›őĄ_L]áŽÎBÄgÎZÝ‚1ŻÔH,Gµ 5aEäŘúâ(A"‚GQ|4N—P0Ń{KľaŽ8~X¶CQŘJ÷``-ĽaVÓ®†yë]FĘđ$q`ÎČŠńYËĺZš)Ţ8˝zçléŐßfµŃżĚG:9aäâłĆžO±Óů4|¬NgŞSđŐ&omG·%svR¤FĄkm®ĹţR“§I*X}~¬NPťô‘ĺz˶Ol®i^ۡ>:ŚgAę´¬•]ÁjŢť94ŇÇ›Ż-ײy<ëÖtź­Đłů6˝n™ü B 7Ţ / ˘_Lnk8@>¸Ďń!d<<Ľ®™ŕQcă!ţ)‚ÂHÔµÁöÓ§! !ř¨"=~×Ă‹Jď¤ŔÎŁ†Nőp+˛»ô¬×C%"eyî$Ű–ŐN ńP”N‘ČJ±ËĘ‹i“€i-n 7'¦Źr†‚4^4Ş#RĚ-w±ś]&$ÍĘń‚ ÔrTŠ5ĺŃbµ¦3Iň\7!ň=Ż?Cúśő:…VHÝľz7şµUIYö™ŻmŐiSsťPˇÖ{‰Y=¦-Piˇ/€s­`Ł€jńO ˝­Ű©×©‡ÂPÓÔZEŮĂčá¨đâ éHňlWŠű‘AŢíö?†űß čIędW'ŐţŮD¤ÎťKČŘĺmVĚVaüµëř}ÂňÁŔŕţĐ&°~OAöúX98}8Ěds˘Č5×tžOp GĚŇÔ1xÂ^<UQ wP‹ËÍĎSŹDT¶čk0 µ/ę“ńČK §‘?ahȡÂV¬n36ů 5•ř0ĄńcÇ}¦ăuÇ-O^4w°îĘÚo·˛ݧ_€p€Q€{MšLCńP$žžýčC’‹ĽhÄĹ9T=¶éßÖ¦ă#NźöčŢ\Ź>‡{ä›<‡~ť5óu4gńîL]™jÔw:¬$üöK5ül8ë?·3ßÎgáÚń}2ęÉá9T“Ć÷F¦qtŽ9ů"‘au'ĚIňn®1ö >NĐčS2ű»Ś™EÂLĎý@źröô÷ŘĂ˙Ô2nÇendstream endobj 283 0 obj << /Type /Page /Contents 284 0 R /Resources 282 0 R /MediaBox [0 0 609.714 789.041] /Parent 269 0 R >> endobj 285 0 obj << /D [283 0 R /XYZ 71.731 729.265 null] >> endobj 286 0 obj << /D [283 0 R /XYZ 71.731 661.28 null] >> endobj 287 0 obj << /D [283 0 R /XYZ 71.731 661.28 null] >> endobj 290 0 obj << /D [283 0 R /XYZ 71.731 493.609 null] >> endobj 291 0 obj << /D [283 0 R /XYZ 71.731 493.609 null] >> endobj 292 0 obj << /D [283 0 R /XYZ 71.731 235.278 null] >> endobj 293 0 obj << /D [283 0 R /XYZ 71.731 235.278 null] >> endobj 282 0 obj << /Font << /F33 117 0 R /F31 87 0 R /F27 81 0 R /F50 289 0 R /F42 177 0 R >> /ProcSet [ /PDF /Text ] >> endobj 296 0 obj << /Length 1638 /Filter /FlateDecode >> stream xÚíY[ŹÓ8~ďŻčňB"Oś{ŞaF{#Ři­<¸‰§Í’&™8ˇôßď±c§ą 7‰]­hěźËw®Îŕą ˙đÜÇČ·áÇ ‘ĺąóh73çxót†%…9·‘řüŐ/«ŮŮŰž‡(ôěůęVP¬â7ÚË‚f׺íj$¦şaআ‘Ť¬ćń†¦”0ą˙"Ż(Óß­®gW«V„ăyČr­ąŃJ*a88@(j`ŕě š»Ů›wć<Ú뙉ě0ďáŮD8 ç»™:ЬÓŮröÇ7ś8‚`` aß9€Ç0<«čĚô űşá›®Ł-ë˘Ču¬•°ojUóöV‡çĽä0ś=qÍyŚ<Î{yŘ–ě–°†¨+ \ĺyˇ¤!Yőý!ćĄŘů Ä×mSŚÄdť(l›ęT&dťŇAČK ¬JRşÄÇR¦˘˛ ń(ßíbÍ]˘Xm?UťC®§|đz"qˇ™«´Í žcč!sQ/$ěWSör KReJÖ Źm†ŔÄĘć]×éDídÔ¦‚–÷–jŚĘÜHú “Ć'޲:(ŁŮ–‚5#$ÔUÉK?V4ăĹśˇĄc@}¨¦JÝÚ¦*Tuy/Ë‹ŚjĘK<đ,3’¶řFĽćÇu©RJN|4v¨ý‡N)>ö˘$fcSŔ05Ř^ŻáS)Ţ`Ť’Ű$‚V 'Ţ8G 5ÚmÝďb’-p~_ŤńĺŕËFQŻÓ€Ź$¬1tĹä­iZ´#ŔM"{=äAlp)ţ|qsőôŮruusőŰb!n $ć@ŇłłWJčbA?Ő‰)›0¤¶ÉÁ9Ş©¦D•Ř$«DÜŔ<§Śj‚ ćŚ~ţŢŐ|š;Ş„˛űÝĺÂeÚ˙»kÂ]˘KĂđĚč—9 ˝ńĹ Ń ŇÝs5Tň9U¨ÍVŮŁm½«EČ?—»ż,˙CÜWGUF(cýi ¨ížá‘HĹű® •±ú·&&Ô“č50ő ętX~ťţtŇ Ó¬SŤŃl éÜŐ´<PˇŰAă ±©áĚANč~¶ńü'†bVqď'Ůć['âÁçg5± Ô'ĄĘď> endobj 297 0 obj << /D [295 0 R /XYZ 71.731 729.265 null] >> endobj 298 0 obj << /D [295 0 R /XYZ 71.731 741.22 null] >> endobj 128 0 obj << /D [295 0 R /XYZ 71.731 664.269 null] >> endobj 50 0 obj << /D [295 0 R /XYZ 135.271 631.661 null] >> endobj 299 0 obj << /D [295 0 R /XYZ 71.731 625.483 null] >> endobj 300 0 obj << /D [295 0 R /XYZ 71.731 625.483 null] >> endobj 301 0 obj << /D [295 0 R /XYZ 221.927 612.683 null] >> endobj 302 0 obj << /D [295 0 R /XYZ 71.731 597.574 null] >> endobj 303 0 obj << /D [295 0 R /XYZ 71.731 592.593 null] >> endobj 304 0 obj << /D [295 0 R /XYZ 129.514 571.836 null] >> endobj 305 0 obj << /D [295 0 R /XYZ 369.891 571.836 null] >> endobj 306 0 obj << /D [295 0 R /XYZ 71.731 570.428 null] >> endobj 307 0 obj << /D [295 0 R /XYZ 129.514 553.903 null] >> endobj 308 0 obj << /D [295 0 R /XYZ 422.861 553.903 null] >> endobj 309 0 obj << /D [295 0 R /XYZ 71.731 551.746 null] >> endobj 310 0 obj << /D [295 0 R /XYZ 129.514 535.97 null] >> endobj 311 0 obj << /D [295 0 R /XYZ 149.987 535.97 null] >> endobj 312 0 obj << /D [295 0 R /XYZ 71.731 533.813 null] >> endobj 313 0 obj << /D [295 0 R /XYZ 129.514 518.037 null] >> endobj 314 0 obj << /D [295 0 R /XYZ 177.942 518.037 null] >> endobj 315 0 obj << /D [295 0 R /XYZ 129.514 505.086 null] >> endobj 316 0 obj << /D [295 0 R /XYZ 71.731 503.678 null] >> endobj 317 0 obj << /D [295 0 R /XYZ 129.514 487.153 null] >> endobj 318 0 obj << /D [295 0 R /XYZ 71.731 480.015 null] >> endobj 319 0 obj << /D [295 0 R /XYZ 71.731 450.426 null] >> endobj 320 0 obj << /D [295 0 R /XYZ 129.514 434.65 null] >> endobj 321 0 obj << /D [295 0 R /XYZ 71.731 427.512 null] >> endobj 322 0 obj << /D [295 0 R /XYZ 71.731 397.923 null] >> endobj 323 0 obj << /D [295 0 R /XYZ 129.514 382.147 null] >> endobj 324 0 obj << /D [295 0 R /XYZ 188.453 382.147 null] >> endobj 325 0 obj << /D [295 0 R /XYZ 71.731 379.99 null] >> endobj 326 0 obj << /D [295 0 R /XYZ 129.514 364.214 null] >> endobj 327 0 obj << /D [295 0 R /XYZ 71.731 362.057 null] >> endobj 328 0 obj << /D [295 0 R /XYZ 129.514 346.282 null] >> endobj 329 0 obj << /D [295 0 R /XYZ 188.453 346.282 null] >> endobj 330 0 obj << /D [295 0 R /XYZ 71.731 344.125 null] >> endobj 331 0 obj << /D [295 0 R /XYZ 129.514 328.349 null] >> endobj 332 0 obj << /D [295 0 R /XYZ 71.731 326.192 null] >> endobj 333 0 obj << /D [295 0 R /XYZ 129.514 310.416 null] >> endobj 334 0 obj << /D [295 0 R /XYZ 71.731 308.259 null] >> endobj 335 0 obj << /D [295 0 R /XYZ 129.514 292.483 null] >> endobj 336 0 obj << /D [295 0 R /XYZ 71.731 290.326 null] >> endobj 337 0 obj << /D [295 0 R /XYZ 129.514 274.551 null] >> endobj 338 0 obj << /D [295 0 R /XYZ 71.731 267.412 null] >> endobj 339 0 obj << /D [295 0 R /XYZ 71.731 237.823 null] >> endobj 340 0 obj << /D [295 0 R /XYZ 129.514 222.047 null] >> endobj 341 0 obj << /D [295 0 R /XYZ 375.869 222.047 null] >> endobj 342 0 obj << /D [295 0 R /XYZ 432.157 222.047 null] >> endobj 343 0 obj << /D [295 0 R /XYZ 129.514 209.096 null] >> endobj 344 0 obj << /D [295 0 R /XYZ 266.5 209.096 null] >> endobj 345 0 obj << /D [295 0 R /XYZ 344.309 209.096 null] >> endobj 346 0 obj << /D [295 0 R /XYZ 432.876 209.096 null] >> endobj 347 0 obj << /D [295 0 R /XYZ 473.026 209.096 null] >> endobj 348 0 obj << /D [295 0 R /XYZ 129.514 196.145 null] >> endobj 349 0 obj << /D [295 0 R /XYZ 175.044 196.145 null] >> endobj 350 0 obj << /D [295 0 R /XYZ 220.573 196.145 null] >> endobj 351 0 obj << /D [295 0 R /XYZ 276.862 196.145 null] >> endobj 352 0 obj << /D [295 0 R /XYZ 333.15 196.145 null] >> endobj 353 0 obj << /D [295 0 R /XYZ 389.439 196.145 null] >> endobj 354 0 obj << /D [295 0 R /XYZ 451.108 196.145 null] >> endobj 355 0 obj << /D [295 0 R /XYZ 129.514 183.193 null] >> endobj 356 0 obj << /D [295 0 R /XYZ 196.563 183.193 null] >> endobj 357 0 obj << /D [295 0 R /XYZ 274.371 183.193 null] >> endobj 358 0 obj << /D [295 0 R /XYZ 341.419 183.193 null] >> endobj 359 0 obj << /D [295 0 R /XYZ 419.228 183.193 null] >> endobj 360 0 obj << /D [295 0 R /XYZ 470.137 183.193 null] >> endobj 361 0 obj << /D [295 0 R /XYZ 129.514 170.242 null] >> endobj 362 0 obj << /D [295 0 R /XYZ 185.803 170.242 null] >> endobj 363 0 obj << /D [295 0 R /XYZ 242.092 170.242 null] >> endobj 364 0 obj << /D [295 0 R /XYZ 309.141 170.242 null] >> endobj 365 0 obj << /D [295 0 R /XYZ 376.189 170.242 null] >> endobj 366 0 obj << /D [295 0 R /XYZ 448.617 170.242 null] >> endobj 367 0 obj << /D [295 0 R /XYZ 71.731 168.834 null] >> endobj 294 0 obj << /Font << /F33 117 0 R /F31 87 0 R /F50 289 0 R /F27 81 0 R /F42 177 0 R /F32 90 0 R >> /ProcSet [ /PDF /Text ] >> endobj 370 0 obj << /Length 2170 /Filter /FlateDecode >> stream xÚŐZ[oă¸~ź_aěKmtÉ’¨Ëb›íě´ělť ]`g‰¶Ő‘%‡”réŻďˇHʲMŰr`S 0VbęăąóśŹ!ţ‘ILpŔ‡źb?˘“lőΛ,ŕ›żľ#fERL‚x`šÄjÁźoß]}‚IŠÓ(Üλu·ůŻÓ¬yőqĐ)Ëů ůÔ›`_?ţ“—śIóűźę†ĎČTÎ~»ýřî‡Ű~/âLť ~ł]iPH‚ÄČ÷pę“ášN0?žÄ8Ť‡r}ń}ş»“Źă$…§Á뻟viŠŁ(ÔKí{Şß.Ťf˛y.9’KÎś7ąţeÎE1óéôaFč”›_ÎX ^éűţűĎź?˙¨™Č–EĂł¦ćË%“úáŽóJ?qůÔđ*·¸_<ęć[f–łěë㌀̕!Ŕx8LÁ†ÄÇ)ő; ˛zµfMqWš˝`=Ľ˙ hÄXëϢĘĘÖ:X˦ bV2µ¬ä+^5fŮóÚĽ0ŻĹĘ(!ŰőşŤ•űîY~„čÁú±·ęLŐŢ•EÖIďÁI'x‘Ă6ĹĎóąč÷رj ૎?IŔ‡‘ň!ńpd„Ł é żAWW]0(WWďoßĎPäißĚ™ţ¨ü¬\m•żŻ®~řé›Ý8S’†4 Â'ýÂu¨ŞÝ"[2_sŃÔDWg“a\'Ž@*˝úŰ}›…8M|ó5ËsT±G UîcĹ1NĽÄ.®r‡"ś€ 6p’ŻU0Őâ&ńB÷ #‚OG}ců[á3Hfó¬ŹL‡˙^Út[ ň¸Ň‘Ż‚l_Ł0ĹI` \@e¤ÄúŁ^­”eş=ʢâ6•˝€-ľÝä…‰ćş+žŐf$™%[[Z‹ĆÖ™ż.ĘƦ­ţTeYąŇ™„Dö’d«l ç0ý詾źji´¬ç»™ď*˝kQg<‡˛*µ ­mú·î[.L9*YµhŮ‚·ďdꀮ^ďĂV9$ęşŮwwbJ“ă e‘Ş:ç¨,$`”™+=#ěĹGŇ1¬đ¶ÝşÍęŞaE%o\‰ĺcĐë|AWőGy»V 5k¸+街𡠎Ş+ô¶R™}v‘BA@벝ďÔ˘‚,pľJf×zŤ€F犛ó9‡XpyŽxP‚Ňč\űĘçŐŠ7˘Č’őč4])=f•4Ć9ť©ŃŠ­_-4d˝â7śwvBđHĚ›óÂŤ6‡ę¨ áŮéĺaŹ ¬kő˙ki ‰Z:ÎT .ŚĎ Ě%gůkaIŐŹąÔL śÇł2†™#;4Žgý ŮjQ, G© ·âôŐ<ąn…śCM­ĽŃIŞ:¨ż®RŻϤ·o#8?pŽ…0}‘ä8ŚUc!Ô™ŕơŽÓdś8˛n…«Ôť˛ŮP0ŇĘă&ŁA:ťf.*‰Â nKčmĺůÖEˇGÁŤÉVlĚŚ`‚[^–;BÂXT ů×oҦX -ÖKĚ=™×eY?IÇ)¤­sǡĎwC<#m#a&@*ßTzÔ"w§jśľ‘¦8ŐŻ<,âÖŃf®Frä\ŠI ¶B\µeyťřPoz®¸«BJH ¬*«<€a/¦ă ËhăîÚ†H°‘a-x×6JQ:şyŃxŹěČü˘´·RÝ#ÄĄĽ,cď‘ĚYĂN€`ý} HCěÁLˇT#Şů?BťÄ4ÖdÎżfŠjţ“š “)Ápv kŚ_µĆIWeŐ놷4“ăGÓÚůś¤iŠ©(t—T•°cŞ’ˇvf5ŚŚözîž „ÔÜ_–0Žrą=Ň[ŞĘr®F5çÜî`ę·Fšţíö“ĺ<- ňéď6ÜĄ˘"y•›i˝§iŞZMöʆň©Ř]ąË%ć|ŢŃm٦2:óúoÍ&·ł”úeĎ;L°ˇŞ,ń Ác¸Ďźß[B_1ńUö¤j!{2ôŰł!î;k"EČžkłáű›çĽŃŚô!šůqYdËíí ˇśöPŕá$y+dÓĎ‚ç\ese ¶ˇÔ´ąŘŠ»hfU§ú¬H>4箉z8őŇŃ|iĆ„(ŘBőţM+\4I€Ib ř>7ľ+}»ş÷šZâŮ´Tľ5>Ť(¦Ţö9L‚Î ßóde"7ĽňvÍY±uwô€® ©K…¦/#g_n¸¸ä˙‹dn5†Ô§Ń(Ď eůť±–2ÓZq‰˛mÍŚŇé -7rňG+9u2ézFßýţ¦;ëRŃÜÁíA‘=EWňjŃ,‘\óĚŃűP&éçˇM6ŇéóămCŽ u1°hUî”zćŞK ˘hŚ4[Äôô™w»ÖŞ® ’­á‹¦O0ÂĘÍ1wěŔSă˝-ÇcÇ\čGŕÔ eť˝ ÂŽ0_ůó#L¨čr—pç”Ŕ@–nŹ[ş6č—1 ü Nť›—°: 8D śš‚†(˙墾ąĚŢëZBq|pŤďçĚO_°c0#ŞóÜĄÁ”ŚÔ‡?đęć˛(ćO®;„“`¤ e˝8 cČüí‹/é"\P8N“¬–˝=Çe–`N Ćřł/)N‚?–¶`Ő…!ő´n.S˘Ëutm’ţŻźśU9Đő1¬ŁőŃ×pĂúx߲®kD׺‹>płt\Ä(î{U]mÝ×,#XÁIßJ: ÎAr_ žĺ )Vüű—Uý-ŚëWŔřţO7/b޶9 ˛ß(EŞ.ŔuĆ&®żs ie,47®ż¸#d[/ŮęžţąRÔendstream endobj 369 0 obj << /Type /Page /Contents 370 0 R /Resources 368 0 R /MediaBox [0 0 609.714 789.041] /Parent 269 0 R >> endobj 371 0 obj << /D [369 0 R /XYZ 71.731 729.265 null] >> endobj 372 0 obj << /D [369 0 R /XYZ 129.514 708.344 null] >> endobj 373 0 obj << /D [369 0 R /XYZ 71.731 659.414 null] >> endobj 374 0 obj << /D [369 0 R /XYZ 129.514 642.889 null] >> endobj 375 0 obj << /D [369 0 R /XYZ 132.005 642.889 null] >> endobj 376 0 obj << /D [369 0 R /XYZ 217.684 642.889 null] >> endobj 377 0 obj << /D [369 0 R /XYZ 312.368 642.889 null] >> endobj 378 0 obj << /D [369 0 R /XYZ 279.351 629.938 null] >> endobj 379 0 obj << /D [369 0 R /XYZ 71.731 614.829 null] >> endobj 380 0 obj << /D [369 0 R /XYZ 129.514 599.054 null] >> endobj 381 0 obj << /D [369 0 R /XYZ 349.906 599.054 null] >> endobj 382 0 obj << /D [369 0 R /XYZ 419.445 599.054 null] >> endobj 383 0 obj << /D [369 0 R /XYZ 129.514 586.102 null] >> endobj 384 0 obj << /D [369 0 R /XYZ 236.712 586.102 null] >> endobj 385 0 obj << /D [369 0 R /XYZ 386.949 586.102 null] >> endobj 386 0 obj << /D [369 0 R /XYZ 129.514 573.151 null] >> endobj 387 0 obj << /D [369 0 R /XYZ 252.852 573.151 null] >> endobj 388 0 obj << /D [369 0 R /XYZ 365.429 573.151 null] >> endobj 389 0 obj << /D [369 0 R /XYZ 129.514 560.199 null] >> endobj 390 0 obj << /D [369 0 R /XYZ 236.712 560.199 null] >> endobj 391 0 obj << /D [369 0 R /XYZ 322.391 560.199 null] >> endobj 392 0 obj << /D [369 0 R /XYZ 413.449 560.199 null] >> endobj 393 0 obj << /D [369 0 R /XYZ 129.514 547.248 null] >> endobj 394 0 obj << /D [369 0 R /XYZ 215.193 547.248 null] >> endobj 395 0 obj << /D [369 0 R /XYZ 295.492 547.248 null] >> endobj 396 0 obj << /D [369 0 R /XYZ 375.791 547.248 null] >> endobj 397 0 obj << /D [369 0 R /XYZ 129.514 534.296 null] >> endobj 398 0 obj << /D [369 0 R /XYZ 215.193 534.296 null] >> endobj 399 0 obj << /D [369 0 R /XYZ 295.492 534.296 null] >> endobj 400 0 obj << /D [369 0 R /XYZ 397.31 534.296 null] >> endobj 401 0 obj << /D [369 0 R /XYZ 129.514 521.345 null] >> endobj 402 0 obj << /D [369 0 R /XYZ 247.389 521.345 null] >> endobj 403 0 obj << /D [369 0 R /XYZ 300.706 521.345 null] >> endobj 404 0 obj << /D [369 0 R /XYZ 359.402 521.345 null] >> endobj 405 0 obj << /D [369 0 R /XYZ 396.579 521.345 null] >> endobj 406 0 obj << /D [369 0 R /XYZ 439.137 521.345 null] >> endobj 407 0 obj << /D [369 0 R /XYZ 487.073 521.345 null] >> endobj 408 0 obj << /D [369 0 R /XYZ 129.514 508.394 null] >> endobj 409 0 obj << /D [369 0 R /XYZ 215.193 508.394 null] >> endobj 410 0 obj << /D [369 0 R /XYZ 268.593 508.394 null] >> endobj 411 0 obj << /D [369 0 R /XYZ 311.233 508.394 null] >> endobj 412 0 obj << /D [369 0 R /XYZ 353.873 508.394 null] >> endobj 413 0 obj << /D [369 0 R /XYZ 428.792 508.394 null] >> endobj 414 0 obj << /D [369 0 R /XYZ 129.514 495.442 null] >> endobj 415 0 obj << /D [369 0 R /XYZ 199.053 495.442 null] >> endobj 416 0 obj << /D [369 0 R /XYZ 263.213 495.442 null] >> endobj 417 0 obj << /D [369 0 R /XYZ 348.891 495.442 null] >> endobj 418 0 obj << /D [369 0 R /XYZ 129.514 482.491 null] >> endobj 419 0 obj << /D [369 0 R /XYZ 258.231 482.491 null] >> endobj 420 0 obj << /D [369 0 R /XYZ 403.088 482.491 null] >> endobj 421 0 obj << /D [369 0 R /XYZ 456.488 482.491 null] >> endobj 422 0 obj << /D [369 0 R /XYZ 129.514 469.539 null] >> endobj 423 0 obj << /D [369 0 R /XYZ 182.914 469.539 null] >> endobj 424 0 obj << /D [369 0 R /XYZ 225.554 469.539 null] >> endobj 129 0 obj << /D [369 0 R /XYZ 71.731 463.118 null] >> endobj 54 0 obj << /D [369 0 R /XYZ 145.325 428.961 null] >> endobj 425 0 obj << /D [369 0 R /XYZ 71.731 422.783 null] >> endobj 426 0 obj << /D [369 0 R /XYZ 71.731 422.783 null] >> endobj 427 0 obj << /D [369 0 R /XYZ 207.402 409.983 null] >> endobj 428 0 obj << /D [369 0 R /XYZ 71.731 402.844 null] >> endobj 429 0 obj << /D [369 0 R /XYZ 71.731 389.893 null] >> endobj 430 0 obj << /D [369 0 R /XYZ 71.731 384.912 null] >> endobj 431 0 obj << /D [369 0 R /XYZ 129.514 364.154 null] >> endobj 432 0 obj << /D [369 0 R /XYZ 71.731 361.998 null] >> endobj 433 0 obj << /D [369 0 R /XYZ 129.514 346.222 null] >> endobj 434 0 obj << /D [369 0 R /XYZ 71.731 333.171 null] >> endobj 435 0 obj << /D [369 0 R /XYZ 129.514 315.337 null] >> endobj 436 0 obj << /D [369 0 R /XYZ 244.044 315.337 null] >> endobj 437 0 obj << /D [369 0 R /XYZ 311.829 315.337 null] >> endobj 438 0 obj << /D [369 0 R /XYZ 71.731 302.287 null] >> endobj 439 0 obj << /D [369 0 R /XYZ 129.514 284.453 null] >> endobj 440 0 obj << /D [369 0 R /XYZ 71.731 282.296 null] >> endobj 441 0 obj << /D [369 0 R /XYZ 129.514 266.521 null] >> endobj 442 0 obj << /D [369 0 R /XYZ 71.731 264.364 null] >> endobj 443 0 obj << /D [369 0 R /XYZ 129.514 248.588 null] >> endobj 444 0 obj << /D [369 0 R /XYZ 132.005 248.588 null] >> endobj 445 0 obj << /D [369 0 R /XYZ 156.752 248.588 null] >> endobj 446 0 obj << /D [369 0 R /XYZ 197.818 248.588 null] >> endobj 447 0 obj << /D [369 0 R /XYZ 377.851 248.588 null] >> endobj 448 0 obj << /D [369 0 R /XYZ 71.731 246.431 null] >> endobj 449 0 obj << /D [369 0 R /XYZ 129.514 230.655 null] >> endobj 450 0 obj << /D [369 0 R /XYZ 336.895 230.655 null] >> endobj 451 0 obj << /D [369 0 R /XYZ 368.775 230.655 null] >> endobj 452 0 obj << /D [369 0 R /XYZ 400.656 230.655 null] >> endobj 453 0 obj << /D [369 0 R /XYZ 129.514 217.704 null] >> endobj 454 0 obj << /D [369 0 R /XYZ 215.193 217.704 null] >> endobj 455 0 obj << /D [369 0 R /XYZ 252.453 217.704 null] >> endobj 456 0 obj << /D [369 0 R /XYZ 300.473 217.704 null] >> endobj 457 0 obj << /D [369 0 R /XYZ 332.353 217.704 null] >> endobj 458 0 obj << /D [369 0 R /XYZ 385.753 217.704 null] >> endobj 459 0 obj << /D [369 0 R /XYZ 439.153 217.704 null] >> endobj 460 0 obj << /D [369 0 R /XYZ 465.653 217.704 null] >> endobj 461 0 obj << /D [369 0 R /XYZ 497.534 217.704 null] >> endobj 462 0 obj << /D [369 0 R /XYZ 518.655 217.704 null] >> endobj 463 0 obj << /D [369 0 R /XYZ 129.514 204.752 null] >> endobj 464 0 obj << /D [369 0 R /XYZ 150.635 204.752 null] >> endobj 465 0 obj << /D [369 0 R /XYZ 171.756 204.752 null] >> endobj 466 0 obj << /D [369 0 R /XYZ 192.877 204.752 null] >> endobj 467 0 obj << /D [369 0 R /XYZ 219.377 204.752 null] >> endobj 468 0 obj << /D [369 0 R /XYZ 245.878 204.752 null] >> endobj 469 0 obj << /D [369 0 R /XYZ 272.378 204.752 null] >> endobj 470 0 obj << /D [369 0 R /XYZ 298.879 204.752 null] >> endobj 471 0 obj << /D [369 0 R /XYZ 379.178 204.752 null] >> endobj 472 0 obj << /D [369 0 R /XYZ 129.514 191.801 null] >> endobj 473 0 obj << /D [369 0 R /XYZ 220.559 191.801 null] >> endobj 474 0 obj << /D [369 0 R /XYZ 290.084 191.801 null] >> endobj 475 0 obj << /D [369 0 R /XYZ 359.609 191.801 null] >> endobj 476 0 obj << /D [369 0 R /XYZ 380.715 191.801 null] >> endobj 477 0 obj << /D [369 0 R /XYZ 417.961 191.801 null] >> endobj 478 0 obj << /D [369 0 R /XYZ 455.207 191.801 null] >> endobj 479 0 obj << /D [369 0 R /XYZ 497.833 191.801 null] >> endobj 130 0 obj << /D [369 0 R /XYZ 71.731 185.38 null] >> endobj 368 0 obj << /Font << /F33 117 0 R /F27 81 0 R /F42 177 0 R /F31 87 0 R /F32 90 0 R >> /ProcSet [ /PDF /Text ] >> endobj 482 0 obj << /Length 330 /Filter /FlateDecode >> stream xÚuRÁNĂ0 ˝÷+rL5±ł´ÍH=0 U\€C×el°­S[‰ßÇmB»MšrHśř=??…â…"CČ4odR#ęC¤Äż> endobj 483 0 obj << /D [481 0 R /XYZ 71.731 729.265 null] >> endobj 58 0 obj << /D [481 0 R /XYZ 176.148 708.344 null] >> endobj 484 0 obj << /D [481 0 R /XYZ 71.731 702.166 null] >> endobj 485 0 obj << /D [481 0 R /XYZ 71.731 702.166 null] >> endobj 486 0 obj << /D [481 0 R /XYZ 221.717 689.365 null] >> endobj 480 0 obj << /Font << /F33 117 0 R /F31 87 0 R /F32 90 0 R /F27 81 0 R >> /ProcSet [ /PDF /Text ] >> endobj 487 0 obj << /Type /Encoding /Differences [ 0 /.notdef 1/dotaccent/fi/fl/fraction/hungarumlaut/Lslash/lslash/ogonek/ring 10/.notdef 11/breve/minus 13/.notdef 14/Zcaron/zcaron/caron/dotlessi/dotlessj/ff/ffi/ffl 22/.notdef 30/grave/quotesingle/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde 127/.notdef 130/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE 141/.notdef 147/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron/guilsinglright/oe 157/.notdef 159/Ydieresis 160/.notdef 161/exclamdown/cent/sterling/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis] >> endobj 289 0 obj << /Type /Font /Subtype /Type1 /Encoding 487 0 R /BaseFont /Courier-Bold >> endobj 191 0 obj << /Type /Font /Subtype /Type1 /Encoding 487 0 R /BaseFont /Courier-Oblique >> endobj 177 0 obj << /Type /Font /Subtype /Type1 /Encoding 487 0 R /BaseFont /Courier >> endobj 117 0 obj << /Type /Font /Subtype /Type1 /Encoding 487 0 R /BaseFont /Times-Italic >> endobj 90 0 obj << /Type /Font /Subtype /Type1 /Encoding 487 0 R /BaseFont /Times-Bold >> endobj 87 0 obj << /Type /Font /Subtype /Type1 /Encoding 487 0 R /BaseFont /Helvetica-Bold >> endobj 81 0 obj << /Type /Font /Subtype /Type1 /Encoding 487 0 R /BaseFont /Times-Roman >> endobj 73 0 obj << /Length1 1636 /Length2 11033 /Length3 532 /Length 11903 /Filter /FlateDecode >> stream xÚíweP]Ý–-îÜáŕîNpww—s€Cp$8‚kpw$ÁÝ îîňřľŰÝ·ëv˙zÝż^˝]µ«ö”5ćs¬µŞ6-Ąş«ĐÉ$ëäaĺdăčhę©[ŘŰ[ÁNʬ’Nö@Ŕ››…–VĘd;9J[@@B= ˛pq8QhRNÎŢ®`[€á ‘™™ĺźžżR–Ţ˙y[é¶qĐ˝}x€ěťś@Ž7˙ë…Z b XíAuIe)Ä[@°#@Öő-Şîni¶(­@Žn F€µ“+ŔţŔĘÉţ«57¶7, 7€ŔÍd¶°€Ľ¬@Î…XÎ W°›ŰŰ7ě°qµp„ĽÍâ;ZŮ»˙"đć·vú›ł«Ó[†Ă[ě LÝÉ âfĺ v†ŢŞŞKËţ'ÄÖňWm7đ[ŕdý– t˛r˙«Ążco0oQŘŃ yAţŞe ÁnÎöŢoµßŔś]ÁÓpw;Úü“ Ŕdcá ´ąą˝ÁĽa˙5ťö řOÝ[8;Ű{˙˝Úéď¬˙ŕ†¸ě­ŮP8ąŢjZAŢjŰ€QŘ˙Ú* ŽÖNNŽřîÎ˙óąţ= †żö ă  “Ł˝7˛FaWu‚Ľ•0üß©Ěöż'ň˙‚Ä˙+˙ŻČű?÷_5úO‡řzž˙ZÖÝŢ^ŐÂô÷"Ŕżß1eŔ_—ĚI¶pŰ{˙wé˙š©úÇ˙Ebń6 G›718Ř8ţá»É‚˝@@u0ÄĘ`ma˙6Ążý:Ž@«=Řô¦ćß°rrpüKLŰlőÁńݱóţ#rţ+ő7ţ&ή§¦'ˇ Ďü_oÔżóÔß”‡h{;żQű·NTś€˙aü…")éäđeĺäĺ°rspľ¸7>‚ÜĽ~˙MĹż8˙i«X@\Á^Ł·¶ßVţŐüż˝˙´LţFĆŃĘ ř×^Ń‚X8ß¶×8ţm`w‚ô[ç\śś<\{­Ü]]ß´ţűxĹżŰoČ d…˛8ďdő>Ä.ík:¤– §TÚčG7'l¨sIva~`µSW@ZĆ`…ůsM([ă¸Đk«÷Ü‘óËŽ"Óî`7ľ=}W č,ŹÔŹš±'k•®ťźy7Ý´=ýX/Ú÷|VyÎŹCwwsTCÓ´řlĽťŰéüŽ1Ú#?—ćÖĂß*µ>Żă]#vmÁŃ1]âÁÝ-}ďĐ@_×%|Ď sv,2í{8tşĎ.Ů$b†:ĺ2•ŤĚđg­9źÂŰ7MŇŮs%ÜjÎŁcľË˘Vh‰E0röÇE’łÝÄŘqQĎt;ÝăjÍzg˛ă!S>ŃtĂńÓŇűÓzŰdÂĐÖ{*Ú†ö/ÉTű!DľQ—"ÎőcXbîĐc‰ÜÇ cYşAŞB¶©łzžž6ćx®"°" xŘĚ\4›&Ó.m¶śO­Z"Ťđ8q¤»Ł/ö¬Nđ[Mĺg©ł}b5;ކV‚çzÍŚÍ×s’\f™ÉśdÎÓŽwR;ďćŔźb3ŇjňĚ#Ëđµ«j«é8µ,{ß÷ě›lę˛×`Ô2…ýĽ‘eŻĺ$‹#ş¦‚ó8< śĽX«ËYżč“Ć“6Ň„JSŚ›==`].¦ĹöőCO&ăZ˝—ĐňF›±:‰ßŤRÇ„kRjŹr'áă…dŞšŃAubŤżkŽÚ@<ÁĐŕW¶>x{ţř1nök˛”n;@§á„ůdHşžcЬyźžž°%č.›ű[0?ý53Ď1 ÎBQ­´FÁŔý¶j8N“VŻá‚˝r©éK×S‹^šÇEZňőNĐęÍK5ĐxÚýştMş|jöGšŻýŚY;!'Ć/ý­ë gsG‰ćVAŃ"ź€Ö8áŢ.Š/6=¦5i踏uEŽ—Ĺl¸ÚÜćX¸âkRłW8ęŠ]EťâëE¬<5´řŚ%°¶nől^ h}ěŰÍ*´Ůć‚)ĺżŃ=9?[sökîÍţ´3Í—l¸-óć&ů–xz•ĂšŐß`Ôˇď±Ë˙Ĺeů;ą’{––sňš‰ #ŃZ8ŃGÜRü˝T4 Ç`áe'ĂŢÓŘĽç,vVJ™×i™&-§XúŁě…•ŹmŘÄ»ÍăÝČ™áŮňyd§ uľ®Ý ő"ő‹ç!Żó]s,!KNójż?$Ƕ˛eŇm)ë‡ĺb¶+âE€ S€fóśÁF,·üLJĄR¶Dᤡ,ś}5˘Ś(ŐQôąŠS[í9•ź"{đkM”|‰a;0őŕ ńŃŕĄ{ľS%Ďůj­B(@ę[Ůűhżâ)'ŕωigŢT®řő`¸ÇĆđr%ĺ|ďaă±!ńü‹×€üęçNĹAÖšł{Ç&×r¸( ­0˙Řjˇžę Ĺ‘ËÎV›ęHő™‚ť×ď‰FWj´%¨Xţ§äüb2÷~ hTbŃ.‘d7#«ü€•t©DÚŤć 'Ą¶O‰f0~ő1eVqźĂ¦lůáť}O¨ˇť™{I¬P"_°@»#Ä«1Ż~.Z_š–ţ…„şH= ővhßô‚Ý_Lc~%S’0ÁŽŞ6˝Ě¬ Ů9hźą VrëşË é´ő÷ 4Ă™Ŕ¨—Ś61λţ:ćŽo‡ ÷qôX3 ,P%ßýW˙}č5ůÇuč׋+ľX“—”÷÷Š€ěI€0âŮÓ٧cuqő őçňÎßý XÔ±Ôxe‡Ş1śÁäý»`ŢجqzßŔ´N+µ)_&v)„ĘL [?˛Ś‘ŐbA[[w€¬ Ŕ&iţhĘ9ęLÍ0ésÁ'ż]5—ÇľI'- E±LEČ.(ż_¸M˛Ž..ëʍ„JúřúŹ8źÔĺ<Âë&BüTö/µ]¶2KµMs{¬ž‘`ŕĺ~mÍ­Ć9î‚6Ž=•çg™&Q~¨<†ýďëĎl®a‹¤9ůŻj!ßĂźâš´,«©7ŠŢŹnő*±HůšVJŚ"łâm OÍŕĎ­'ŘK뼌lŇŚČý.#qăÇ<ÍĆdôGáµŃ#dž`%áĘCýtw¨•ŢBWŔcŠŕ–Ń-ç…Ž.O‘ůhľü9ČŻHčüV«%ě˙öĂÓżµ†a—´kZő< {źâ)›voçň`*}l®6…¦ŘV“ätł^¬*NC˘ ĚfnĎÔ‰Łą–¨n¬©!|ft啜ŁÔ¨ż‡äď%LĐĚąś'‡ŇŹ’ÝVg®‡˙|Ő÷ąńâďM¶Śđ?ŽżvŞ]÷ź”îB†+ţä#Ę?­Ţ{-€ ô.§f“`ÂÇ´u‰:MđN×üN8Ď“Ó"ułěÓgóŚĚł9ĚMĂ8˙“5ČŚ´|›€Ł÷xŘÉ ţVKŠĎÓ±€ÓżB<üý*9~ÁGĹŹ' ‘Úµ:e^âŔXÍAö’–ĐşŇ,iLIřjcgűžŻ&o FŻn4{`ô¨p:fYÜ`ČXKÜŔÝđúebΫŠw:ˆ‹…řšşźĂU^Gvłú¸rř»Ü’R.ęw·ʱĹÁ,çO¸ťż6ĄąP m›ŕý;jV¬á'Yę=Ň3XAę7pľQ#ú%˛Q™›ĐúÄt×Ů /¸ä tg×cMc’™|ĐŃËŹa­ěĎŇ–­˘4ńě!Ó «RÔÜ2ŕdŢ–ÖŹ%i7ŔĹÜó†¨ďţµ»´żĆŞé¸ §k[«é19 ‘ÔV1to. rYĺ2ĺç‘Eż”Ř!źőlý˛ xô=ˇeÜz] Ż€59ścŁ d‚K1Z‰, e}*Kv®ó[Ńps!ŤHĚştI& 9*T™Ń˙š9˝>–ăső-snłfĚc=Ó¸›ÚK› ¬´–6Ú¦Ľ™ňµźŕŚEcË^X‚m0tWZ<ç)*dÍV¬ž-/Śyź1y9REň FížĂ«î đÄjąŮ&řł8şl÷ĚŇeßM2…Żř¤¨7çĄpÁOô&źRgż7¦>+IrN \ř\ŠVËgöü3`Ř ˘µ}Lń=yÄ864ڧ©o¤‹~¸pnđĘR›Ăp©9TĹ?/}áŁç):ĺ؇c†8J(}r<·yŚ’˝äL03á%“bEŕi¨“L’U*—Ž>+Mc»¦Z».FĆšłeôŻ€›ßĄPčĎs­»ä¬Ţř9Ńá·Šľş1µFY‚ž |şŤ˛+ Řë€g$Zvš°K$x!$¦÷ŔČ"Ř›ëOŚô¬ap_Ťe›Î…ËŚEő>Áą˙Ad]˝GĹŔ@a’žŰ«/Ő¦IÓbŻM†ý»‘®ËiĄő÷‚ťŽGÝ‹Tż ENKPëîMkúh“¶aëvHaSó9ěsˇ©ĂZ‚U1är \#7aHŰ(;ľĘňÄMkŻá3ń#@{ŚÇĚŰĐ«PŰ Um«’dŁřş(óŐ©T}EŚ([ýŁhkvAź·‰“G{nb¸Z ý2B®tFrň‘ćü"Ś$˘Ď¬±}Ě<ü'”©Ź…ĄOÂ&Ü6NźäH5ÉkôFłż=żűU"6Ţčnl÷禍śČoöÝÜeşă×&šăT3ř‡@‰!¦4^źËŃpŮ®ÜëÁ!â@Vëżô1ěkR˘Ů†gŞ%ë;~^éX~Ôéš#̶OWĘĽsÂ}µß±ę™z8Xą¬Đ~ůWNéöĎţc5Ř™˘c•× śľĆ®ča‚UHÓbʏh™ň×”Q ŰŠŞŘµ˛2feQ ňN38˙˝ .‘M*“4R†€˛o“·Ó•_}Űç,®úâşâĹďÚsšrBRţ\˝šLýd}Źq‡…;ĽĹ–¬wf*G‰Ą? #bă(˘Îţ rF%µ‰|YAŁ‹Ů ~wٵĆ(BëÂď;Ô«‹L­oK»mPO¤`|ĄôȲYű>XF·ËEŮG(ci.ć [ű#ĂTn\ÍM•Ť§ŕŔŽčű(ްá/ä^+ç âÎţneŮrť˘‘źj˙ůDŔÄĘĘÓä±Í›ö#0ĺwĽNJ‘|ì¡ ϙǫcmCţDtŤ—$ÍčFÄł»Ôχś¤Ć®ŇńÉ^|ຯQ;´1Ţ~¶Úť9F_Ě@Ąbýö ›^;AfSÚ­†´¶#mĂ j«‚@űë—ß¶Ę÷ÍśHŢŽ>żk-;T‚)ݤąđaQ.}¤qżĹ1éśQAkÁĘO Ŕ˛ë»t‹’nl­Ă}b Ônš·;ĘP¨,+OA•©ŐBL˝řJńů Că‹TÓÄ&±w˙»Ş06–„/arµkô¤`­łöSО…zĹw#!Ą–+‚˛R…‚µ5sřŐř¬@ÖţĺźZ2ľ@|óOZ çč{'Ááч?S22"úXGvăĽ1¸ľąH"¬.?Śë¬sذGÔ{ěć G„O–ÜęÇO€ř$v‹ÖŮ pvgŚÇŞ–Ţ"와!d÷}„üT—wBe ™ťŰv8Fţ×µŤ8ćžs΂Ě?czB’č •G˛¤ †Š=gĄČYzÂÎyy»Sevśś›†îŹ`FzĚÉÝءӠ.ŮaćRüÓţĚľŰ4˝y­I,*b“ ÇJżŃ&ŢC`ËÜ‘ĘJ|Ú:+Ć­ľYktĹ›ËĘÜRŢ“PŠšÄřNä7ĚÎFćÇ×B˛:z„fI„·q*ç`iľs(ó’ŐÉů™ „Ë Y%ă”ŘąĽn¦m×Ë{´ăŰšT~’YJăŮެ€Jŕ»?ČAPšxVz6§É?€oČcÁňBŕÔWXčNLú®šűrТĄŚ·/ľ\Îî&Rč^Ń%± ŐBo{Ě–˘ńcG”§ŘŚ>›Z˙íÇ…U ľŕčÖT‹Gš‘šçB×_ܱî7O˝ÂŚŽN‹˝HŢńžž6ٹĸ§ŮćÎÄ&é±–ëë˛ÝĹUµŞ„ŚÇý”Ą0á‘ęśc^R¤kĆD˘í…H`†…,Îďěéîý­3;ŕuď¸ÁÉúQ_Łr»l+Jj+òÜʢÚP°G °ˇf°¸~čýěňŠC™ý¬„ăun˘ÜŘă¸bsH!˝H釹5ĹěĘ®î#ĺBŚ$„•mčóĺΩňzĚ’gú¦¨é(r:j‡qŐŢaq-ŰŞ¨v–ä6¸^\®ő%b=ÍoTl«qŘŤĆëŇő»Í5öÎkLś~÷–‡–:AEDJWÜDüz“ŃĽ†MaÓ'dă$‘ůř–Pđ5Ű+€ŹVVy·Ń†,Ô`čâÂ]ę;¦o7$5d6.zTř|Šb꾏0’z°ŢďýşÜ^›đ,ĺˇPŃ÷nŻť1ŽŮ°üX˘ŰfymAČĄ´¶,Ź{Wź0÷X\l[Żo(bŽ`ËEuá[wál!X´×x—݇6[ŃKpݦłH%˙ ĎŽWł*X.ß5®%‚ň°Hařl'×˝xČG­ţǰjä-+5†ëŹâŁđvg˘Ě}AĽqUڧ`·uťî‡÷?¬äĹyzĘÖ]µ>ĂN~­·z÷>˛ŚkHVFSw-[îřKFT¸T‚V¶Ě=Úoź}GţŮá'ަĺöםĂﶽݮQFü÷±ľň°ý°#©,S ?D…Ů–‹ććĺ†Ć¨ŕąĚR¶ĂańĹ ]0– ˝ŘÁÇm. ł„ÄŮ" wQ9n†pˇřŹ(fµ÷k\×ďÜf5—ľ$®đ ´~˝őŐ+ťĐ˝= PJ‘µř†)ű­›Ĺ§?ý‹ö~m•f{Ü5ÁÔë2Ţ%©ąŢ÷_â®­‰ä ™'™·ÉŞ´ÚŐu2H‹úIŚ–ćtŘF.'Ŕeďţ4OK©Ť©ŕU^xˇ#­z˛ÜSµ‘Ź& ~ÜÂŞď.~Öj¨€Ů/¸0ĆřÂňĐóÜÂ'¸-Hă˙Ú´>V%µîĎ{ÂŹeČŽ^6ömAĚž2ŮŠl•LĹۉĘc7‚wvî’]p.Üć«ŮaĽqý°Ťtmˇ,¤‰+ő ·=âଠ:jŰ9&“7ꆗ›ń–âĐ*NR¶1ÝŁi1'ň˘ż}}.q3š=ňĄôUÝvŠé+“şn¦łľĄĄ.Ă «&]Xĺ,ş .ĘÖŕ×Z¶Ü;!ęôŰauçéÍčJ¸+XŠ“Ť¤»ĽŞv ŔÁ×áý¶m”ÜnÍŚz ¤Ń`˝Áśtp«ŁôÇ?V¤ŘNĽž>k‰©h.ÝmĽ ’.ÓŕE”ş[°l`Ë”ú]őđLLlüŞRY·.Î"Ăř§Gl’ÔA’Üćő9é•!úuÜ"ď[ş?2ĎÔ}ĆZD „xyx\ć=^I¬ţĎŹ;Ml•’đ&GĵŕZ ů íÁŤ˛ ţq~_Iž(ÓĚĺÄQ˝Y:3X őţľD»ďzĆ”fîPgbÜ eᯛ0¶xm!›BipjžCç8uŠîj“mËP…ŕł?)FsłDlÓ´Oϱqi±ě$OD2ÝtťŮËĚ6Ú[Ńu˛˝[Ęnä]ń/ďnPđă”Űł^Ă™¦5ă¨vD-î‡RŠ… ćńĺj}Öâ!\|čşűAĂmĄ¨ Ź|“™śqşž%ĽÍ!ץSúÂyŠÚjqČ}tí<˙Ě2[á˘4úŠuĐ”őH6{ŕ˛6%Šf0ň‘‡!—–$:SćvÓŤb3˙\x¤vaîtnĺäůú+3ę8MóUĄĎä]÷7U ¤Ť^Ô Ó1ˇŮ˝ÁČţ vź:<ČwęS(÷ü†©MşŐżŤ/L€‹_ÔÄXDă—,ÎďČ»̶qőňŠŐ.S0Î"âýCs@ZČ…ćÔ˛$+Ť&ôÓĽ¬çŚó§Bç¬!EÜM'ŔZÓVü’›pŃ ýÎjC‚­NČ·ďC±Ľů˛ç«őjÁy01­ę9©jâ9ą­¦ž9lq)Ţ ;_:3;C2`Â>˙PYĐůs@¸Çî÷đ€8ŕ&ľwş€ĘHŕZoBîä:ÇR‚=87˙‘†¦€óŚí¤şä5CŹŕ[é/)™¬–Ř .7źF°ĽĚÍ­”ÖqmÔö×ÁfĽ" Łâ.ŕş• Ĺ§^+úKŻă%)*›fňŚ3GěÉB‡4ô&ůüxÜÎ&oŐ{BLex¤Żö)FĆůw‚©0_Ëł(Î’ŕGw0Q=miŮÚ[9Q†ł/45•UCËs× e»Łö©§śĹʦ–ůq‰‡*4„QF¤ę­\ÔqîÔşýĂ(Ó*4ÉUX;zn{šdąę_:‡^?ú˘Îuo ˇnńZň˛ZŐ˘í©ę‰ż# ˇî2Ԇ†—îM@űŃlń Gż.çÓěL@ŻNrö¬šBŻCFâ˙ËPB3ń,䜫ۇ;©ôvzČGBƍ쓼Qů.Üąpđx@˘vp?˝é{r Ćăx…9@ĂěQ âĄcĽěČńŻ÷"vç´*ŕ6¨{Ţ.]¨íZ©^ŞhMy ‹ Ä…ńČ"ąúó>őb6 Ëâh´wMź¨®Ű—„KfA,±~ŹJ.KŞÍUFÁÇĂ8ĽË@Đ ?BŠNٱŹíőţ’6Z/<Ô%›pxŚ…ˇ-÷aďKpÖd9őĐ>㵡ĂŔTX¶*\¦ĚT*rLÚç“'Ťy=očl›čÁ¶gkÁq¨Óś9ôOŻĂ×dlâ^ZSĺáOgý{m=|“ţĂ~†ČźO&18.§-¦Ź;0R˘3¶k¤\~“SžŞôhŠ»ÁîX<0kKÇ>7Ňř‡®Uť‘ÇT©ą´”Y¨tzľíč°ˇ:µµŇôŻ˘…ßEc8-*ôá2_2źęeË\ríÂřŮ”f×ä}őźW5Ů„Ň nĐÉMagVWˇ« 1[Ł)hIł« Ş —­.PŽm§+›Ó"j\ÍVĄŻëĹbŰ&ČÍžŽ¤é=¨y»MŽ' XŞ|ŁFN[Ö3…U»’Űźłn…ůh{ÄKcă,%«çaß3m,`j[·ä¤O»ł‘šk˘Oý˘Y>ű×'Lîś›äd]Ü2G€łŕ)sďőGËú§ęź·C¬–Şů:‡8rŹ›1q=«j±%ÓOEéH83%‹Ĺ˘ÝRpł3;4Ŕá^ Ž·ş%éŕt%;9Kkľl~F˙Vî[‡GmŞi¦ĄyH¤ó]Jy[)Â׊őA×Őś Oŕű…ĺú‚Čyq™ČŠUŁ–‡ żÜn†l3—G€p'­<ťtHAt/úS_’ŤWŤdOű&‚pŐŁŕ "vĂ —G„Şţť&ľçůb…÷ e_÷‡,JҸźsŁć×—ąő/ę6ś¦„ ,«ABĎyĂmšŽ{f@Á‡G'ú;+婚K?Wj­pN€GŁę!í`%¶;"ŠĎ©„ŠS!ĘIv”^ć‰'˙Ăâh(÷/*ĆłŹYý˘Ą^V‘ubő]ń~UÁᡄëO˘GéA6O’gUľµĹČtźí(2'VĚ~Ögm"lŹúÜ–Içé0TgXˇ~) )ÄËcźŰĘořC?‘'h •,iř«qeOH_fÔŰáj‘/ç[ęČcYqň˛Ľĺéô82g’{ Z WćxŃ» QN•MÝÉĎ…Ă–ňµë®đX‡îj"˘¶ß@4‘Ź[Ë+śŰ|m>d¤&xÜrĘd î~äŐĺ:Ťć$ŻĎ¤Š,śŹj‘3ü€ěAýÖ?˝®_+8ŽŐ° ‰4=Z EP6Š’Ô‡Ťß|Ô/—bç@ÄíśDV ÎAÚk°Ł(őÍřT@“3/~ú=)Ĺ#s~ť3ăN—\BąumL˙Všu\—ßÖ¦ĹĹC-¨ě¨ĎKé8˝JÂ÷<*ő)ĚžńĺzŐŢ­Ď<ńľéůő·1űŽI;˝L@ăđ¦E*ŹÖúžHÁŔÄ/ą~űĆcűÜ9Ă…ľ|č´Ëčłµµ ÖJ*÷ŔŠŽ.Ő¤Á–0Îř{Ďő6ąo p^śu¶őęc¸ˇz ¬ {Á]ŘĚ"÷ ŁÓ ÖâQO(P ©v!fçrĹ#ĐRSĹKîźý–hquűcáşĆâŤm~ăQKĚĺÁ«j´ ĺě}“řŤŃűŢ©ˇ—ZUhEy˙0·~yµµ ű‹}Ľp)z`rŔŚ€€Ç7ŢI˝,Wż*ň?íí­«’‡(ŽZR.Oŕ^\‘N@ăˇP—Ú#50kŘ`ëäĽĹ˘ę5®úľ<¦†vŞBD !/Ťî>ř¶ˇöŔÔz0¨»ĽY~•MŽO¬Żćt[ĽSHĐR 3ű“Śş–Â;żzCÎn™l˙ĎŚXÚňŔP–C#ú×ÔÍąäýđC+ł,ę]ąłśT¤ŽˇyfśÍ«ZŹ“†^ÜBn5˝ĘË …yŤ6Ybs4ÝŁ&Ŕ˘ş™ąÁ×’F=Ô#ŕŕú%«Kî‡äw“©këźîś…·Ę´°ŕŞŞ ٬C/¨rŹ#©yX?SW#מýónŚÂaËíĘcđĹB:ÖäĂ\™`l<6¨¸)Ý(źÔ ¶8É™4EŮ="Ë/+$:ű®}¤vV˘7čh¤-Ü ĐwIŐ;̉ÄMâÇŠŻT ~WŐô2+ćŽŘ8ă¤#ě¸ęÄşc5pî·Ú…fť±Áň­ śŻO51**ŰŇt´šÚű5±Ť¨®şKż]¨ľ9•QZ«ž¨qäŃCĄT€ëX_ćČ«Wś˙TLN·$xDč&3†żCyĆčľDîízúłĚ F˲ýAB‡'I‰DS`źkÎý[ęTz¦_Ęö'BŦ:ć÷2ŔőŻźńE/ëÔ„·s𬹤( €äŤ‡ 0Đ›Ä`.ɺǣ’:v±B8\őÚhWüž“ĺŽě‚‹*Ě{V-Ü+Â7‹°ŠńĄŠǦÔPďSv®°Ľmâű'=7Ö«Ű–¦ZS»%?ÁJÄëł Ô¬™öЦéBŹ9Ł5m eü¨iYY®÷¶Ű ěľF ĽĆŁóK"3>tĹĹ,Ëźßp˘Îť<Ůą€Ő*ý`{÷µÉ đÂ?“!Źę-mŻqcŮ`pYbyă—9Ő3kç1´‡O'Ü˝ľqĺKŠFR`vdx«…ywŕ‘«xŢ{¸$étţ^^r> «‘ą¶ Űhső,`ÁéD·ĂĺÚ1–d3*ťzĹr° ;’ÉŘÝ”Îč.Ţë%ŔŔIđn&3ĆŔ°Ü Úó¬E{zrIú.ŢżřgE=eíV1¶Éž™ÚŐW9đ+*@Ż–ČJd-YÖÚ‡‚3/„< ok[o4ăg );˝ĹçÇa˛źé<‹‚Ş˘sŁĎ˝LŇş'ˇ¶ŘëѵažĹ‘qóĆŤźŤŐý8?j~á—ěF—úVŠAĐÝěÖß7éŔî—‹W¸% şe:j·é_âĺ± Sź°…ë¬,ąi/­ě÷0Ó®¤peĘíFa¨ăşuS[ř}˛đÄíWKiy,DŮw¶pş“•]'r$ý:ĺh€ íWŚŇŠ×-¨‹ë„$[ŇÁűAŘ›:SĄ5ŽN|‘÷ĺÄ6á€Lű°­iZSî!ńĺ1á6"–§Ř^ŽÚ‘™Á7ĹóÓC)†6@PSP,´nŇZľ? %1ö-ěťđŕ’)›dgŤ|w˛çd(ě_„âr› h´Řx˛ZoěđŐçČSRó#}›ŞÝ‚,±úĹ ˙ĽT¸•:1÷Ç»ó2o4«Ů’Ë–íŢü  ŕţ°í¤÷Č&XôĄÇĂ5ŔÂz¨wÍ‘= ĂŠ&Ną‡H¸®ŇÚŘ<ŐĘź´Ś{˙O¤h|BxíÝÔíÝÝÝwűďЀ믽Hëáőж±'ćd_ĆćĘ1µ–aw2Z=<Ö=•\‚”)G?M T1>7éązkńľŻű °| ´2ŃÉŚđ*ďgň›z4FBŇĐ\ďđĘ­%ÜPŰäŚÍ1·ź>µÇÖżťFmń2Sş“OőČóÎŃóĆ­ :3fŠĎR¦ß@'Ýď,ˇóľĐÁˇŮňĐS7GUlP^Z–Ů?áĚ˙Ů «›TŠZFŔp2ŤŇş¬+"›´}źoB?ż“LÄŻy Ŕ¸ŹĎĂo±ô=ĺ;ř`ÉThbR#R×0C1ęđ¸»iчú$é¸é]Z:ôGx"Ęň‚`%“7áGá~HfµOĐkľýbłŮ‘%ÔÔÝŕ,ťĆC ´Â»ömŐ-+‘žż‘DŹâ¨Niĺ•wUŐ ĎY÷c¤ÁHşÁn|GłgQź%oJ…#?Źşo°šçÚáÚĺÔŚ;LtC27:żńpŻŘlöĺÚŔ|ř[<˛j6ąŁé*5+xG`H;ŚóQaćľf/ž6»ň‚”53˙ŁIôX’—É+^O_˛4-űÉňR2A6Ď?˝ëeÜ>üáA|Aňc„ň«0鱴Χ>Łi <V›řď:\I9ímÍřľ óĂśăšő -ž‹‰ŮJ*z’0“Ţăé)y핳„ü©nźGČ.ľS% ‚0¶tDŤ!Ďe ·z#ĆÖK |ĂyđËĺž™_j…´łŰ˝eŐUVć¶Ô>ŤŢX|ł‰ DÍęŃř/m÷]é/wµ¤‰‘eżĎNož+ެćJĹĽkĺŐ|Ň~;ÁY.ŐIsŻ[©«V $ 2Ąh˘BqE—ZĎäôntâS WD?3Óë^Yy8Čo7Ą/äs<ÄîtáĐtż^„¦%išĄV^‰(«đë§Ôń$;ú‹¦qŁcĚ)Ú;rž‚ aۨ¶Ăl˛oĂ9ŔW$ßŘ,>Úô©tÇżDČŞS©Ťś—k»P¨ÜĐë1Sĺ¨ lĂ+\+/Fúż»ě»µ©[ě 鉷±:zěď€TW;&ę§_űm8ţ‡Ę˙řŔĘdá qr°pý€ňż‘Jendstream endobj 74 0 obj << /Type /Font /Subtype /Type1 /Encoding 487 0 R /FirstChar 46 /LastChar 116 /Widths 488 0 R /BaseFont /WOWAIH+URWPalladioL-Bold /FontDescriptor 72 0 R >> endobj 72 0 obj << /Ascent 708 /CapHeight 672 /Descent -266 /FontName /WOWAIH+URWPalladioL-Bold /ItalicAngle 0 /StemV 123 /XHeight 471 /FontBBox [-152 -301 1000 935] /Flags 4 /CharSet (/period/one/two/three/J/N/O/R/a/d/e/l/n/o/p/s/t) /FontFile 73 0 R >> endobj 488 0 obj [250 0 0 500 500 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 389 0 0 0 833 833 0 0 722 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 0 0 611 500 0 0 0 0 0 0 333 0 611 556 611 0 0 444 333 ] endobj 70 0 obj << /Length1 1638 /Length2 9678 /Length3 532 /Length 10542 /Filter /FlateDecode >> stream xÚíueT\ݲ-!Á‚{ăîÁ!¸»Ó@ MC ÜÝ58ÁB‚[€ŕîîN ¸»?ľ|÷ÜsÇą÷×»ç×oʱÇŘ«ŞÖ¬Y5תMGĄŞÁ&naozoubăbç| ĐR×QB @ °˝"›ş˝đlćC§Ł“„€N`{¨Đ ô ˛HĚÜÜ.AAAt:€¤˝ leí`|Ć`baaý§ĺŻ€™Ű?<Ď;ÁVPýó‡ bď`‚:=Cü_oÔNÖ €%¨jI(ĘIĹź‹°CďaĎ^Ug3Ř 6AALK{ň÷`nµ˙Uš#ű3–¸#pt™ČŐäđ—‹ŕ‚Ůźż`G€ uzî“= 5‡8[üEŕŮni˙‡Ěţ9ÂîŮ÷ ¦jďčäh;8žłŞJ˝˙›§“5ĐéŻÜŽŕg7ŔŢň9ŇÂŢÜůŻ’ţřžaž˝N@0Ôŕruú+—`vt€Ýžs?9ŔŔh8;‚ˇV˙dŔ €¬€0 ČŃńćűŻîüłNŔ©čŕqűłŰţOÔr;9‚ –ěč\ÜĎ9Íťžs[ˇč9¨Ą=€‹óo»…łĂ?|. Řź1ţufžI-ěˇ7€ČťCŮŢé9%€ń˙NeöźČ˙‰˙-˙[äý߉űŻý—Küż˝Ď˙ ýŢQÚţlücĆ č‹Ú!n˙SüżFę€ţ&ů?ÂČ9ź[!µz–“ťóo#Řń=Řdˇ v2·X!Ď}úcׂZ€`0ô¬çźVظ89˙ŧi 6·…ţŐxľż] ¨Ĺżr–čsUq Uq–˙>S˙Ä©>kď¤éćđLí?JQ˛·řĎĹ_(ö®€Ol\üü6nžç+ÇÍäĺńü2ţâúçZ č» žËćäúSüĽ˙\ý Ś4ÔÜŢâŻÓ˘á„Z<°˙4üGŔśArRĎ•ssqńţťËÜ{VűĎ$xnĹ?Ö.ä 2Gź›¶7 °IIKu*'Ěę”2hoĺBět(¬ŇĚËő)µońN Yüfz_Č^=üö±Ţmj×áaCžył·•ÂĐ’:Ě!ó¤ajËĹY˘o|òéÇa\‘ş§ńéhRqIźźS{smPMݸŕ…|¸‘†vtĹäCă’ëG{é€éež\Ť˙»îuů—Ý=úří«K†Îľžî®–ä¶ R–ĚčtB.Hôá>2IEőµŠĄż×i˙Xo1xcćő~ţA^ʼn$0­ćj¦Ç»§8éЦďJż_šď#×/6˝îĺŠ!ȠỸ¤Ĺ QĽŕă°ZëKíˇŮ¨ĄK·2ÇxOzQ®}®+D×—¦:|¤}¶˛đú§«™"\>;ę;%boZzo>učĽ×6đş;7OŽ/ĺ¸dnⲚhá{Ă8ŕZÜ´”^jňjńŔ!”?ÚQ§pĘĽrŐ¤pťźń ¦ĹRéŻŇ]ăĄHď?ĎK™ňýŘK78ŮŚ#ePnĚ!ŻĘŽ3Á­2ÓÜŃ\Ö|Xę­q@“$Ł(ń¶ťcf•č?H¸ů "ők뮌&ۢŮwzóMŁFÜ î·¨Z›á…Úňbáx¬4(°<šy¨ćóÝőíJˇÁË{‹HŁ‚}.:RłúKâ’Ó`čŃ@t ¸źSËECôąĚTîQ20«˝Çççś&şŞ,ÖĂ· u9ÜW轫˝Žç!T'ËéřĹń)íLM¬kJv“ąIO3ŽřăĘ4ŚŹ¶á“M,ÔaxTŚ_{+~îAu~đj:—Ŕü Ë—iˇRý\]YÁ1C˘ş'Dlź»+g d}«9»=ëŔŐNĆůîĐşQŽĹI«©TGĺ$†40Iµ¨ZŹ_Ös“Ěáí*űŐ˝žńÉ|gL4câcŚT‚8Třd_őaŚŇŤôÝ/i}ąŔpüÄ·RăăÜÂúj2ć©”đOH±iŹ\Ůx‡j„€ {˙rĐ»äGu´ľt$łîBň¬u—ŚŹWë[áěóŽĂ2‹ńó¨,—ńńĄ1BH‹ĂôżĽÓ¬©4©óîŠVb`Lm—ľŇX/Ď Ĺ»Ň..&<©ÂÉŢđÝyŞyđĘ?vGs´)h‰«i ¬ťŮýÄ]#ŇĚ}{cxźçĎĐQ*ßvv¸e*đ˛đńFwŞ gl˝(ńšĺ 1Gx^ZN¬ŻváńŻcg6|ľśę ׌ţŤűFş©LrĂ3Đ€ĺ0QJĘC]sQQ’eIx%őa7Ď©»%?~nVÍЦ?źbÇ1JDjém^ýEP‡ö>kĽPŞ+Ć 7Ń9}!%YjÚ66Ë«VǤcIŔň)˙eş¸v®XŔđĐŤćoÍn;B zśG˙[b¶ä FµLĹÁL,Ŕ,Ő ÝRšdŇ©µÂy’h[8ĽD=”^ćńŐ2 µî±aC;újß5f÷YoČŤKłFŃúĹ8íă=ŰQŔţmŚĐ) fđĹuXúTńÂ1[A5ááˇĺÓGĆ3?ÄPHNöĐ•<ŚoHÍ¤Şśúaů¨–Ún)ÍHÉÔúC±›÷“żq‡Ż$ćŘZ…| Ĺc5iai•ÂDH4¨G­ř®t'Ť‘ 'ŞőDuˇ‚şvuJä/éb,K!p®u`Ý©ĎL“3o|n?őő*+`‰3Ś%›°>źÉ»`‘?g|ńsfÂúRęR‰µń±? sbVW@Fu[*f0¦OČë!żZ^mö¤G–--rť]ŐĘŕ‹É"3<÷P“ŚZoq]¶WľN¦Rh«—hţ'\ę3.«Ť8*Aě¶~ĚŻQRCđúémM]šHqĆjŁD\Ű-)>ř†ş— ’#~4O\4{3ć$ĂĺKłľ  ¸µ/®ą[ÎÍmGť/ÓĘSŠýŃZ]N}űj¶ĽD¶%ą—ăă- %ąnĉĽMź–§Ĺőf+hÇAśOŰ-Üz©řʰĘÇë¶eńćšLŇţHkzőţçÜa)ď‰ŮĘŤď^2'mc/Ź@ě~s©íe!®siFéŞTK2YńN×Ýn‘ăÄĹłkż aäEďäĂ"ůz}UËrí¦{Ł[/Ͷm…üşT?‡d;…$|-ž1B!Żk¸v(‰´ÚR©ŁĐ-řWúDüĽt°>w6%Y–u™x`A§Ú"ž˛ň,˙­č˘şb?[x#.xP©o“'Śp-¸D€c­mŚş•Ľ†Ň6@ťó°4zŁ•égŽgŹú¸ę>ôY^(ćĐfÂť·ŤE%1hÁűžÂcE7łW¨·†Íµ*¸űä8ękĹj¶©ß…ŞĐR‘÷÷•ˇgŹ {bĄÝţĄîikµ­vz4Řľ±ŁĆE˙7Ąo (ą E˝s ŞnÍ™-ÁGuXĽ+'ůµü6*‚«G—ˇvЧJsľqäĐ,km¸D Mb§ß±µGÖžLĄ™ćrěÍĐQżĂ˘x¬ ˝~=Şm˘Đ#Vz }”ňbµ o'6Kx$Éwűľ85\˝ŹžĐíóîzbb‡eAő$^Ž %T[J ŢOWÍ|¸ΩÉŔźx ‹{đŻ]›ÓłŘ[ $N~-OcŞ“„sNޤG÷y—đAU˝|ű—`f·Â%0·עčAÝRăaÉ«Ąş'×ó#´'ŽI‚Ũ›Fčw†ďîâ¤ßhŠę*Đ3_L!ý2Ťá@ńůţBÇ l¶D̸ đ•ŢGŤU—:ţŕX#d<Y«·ËL^$Lć'Ő­2 MĺO݉)ˇ<]ťÁĆ ţä÷-ă’ ś±Ä^ŞŘČĄSőé0J¬ţ®Q5šş9ŮHřQśĘ0ëm„Ëęą×¬ÓDB ź«ĺ:¤Č4Ô mpüőě“Ç>aĂłămG"‘yď–± o¦kŃź0dëôlÎ Á‚łJr'l×ÎĐD#BşxH™Ż¤B]z,őwŰDPNĐ ąh˛E››+• ťj ż(»ěe-‚Bk˛o#K·»Ş#@\Łż‹g‹§ôĚ+Ě kĐ ĚČôŽť+¤Ŕ §ÄąµÚW†"Ě›@oťJ:QsŽץ2ct‡vÜO)B$šD f#/Qi{Ĺ‹|űľ0l+îëmtŮ˝ÓY“K,*ąU„Ľ Xąěśă’Łąŕ^ŹZ¤Tîýť2Ë2ů†›®[@t\i/+’ś•ŞľÖd×ÖüÂgÚtyë¨gÜ©.AŃëuÓŚÖéíILşÁnxPPV~FĄůÉDiŻ0é iîňË÷m—űŚLO*KÁ8!ů8Ć˝Rż˝óÜz ,8Š9bĺvf8ă÷’šrµŽäU~‚b’´ł^"ś×ś{·Ţ÷ŠňŽIŰŰŤ’ OžťOAMĎ’›?ĺÁ´A'bŮč×ňpYr5ćí´~9yń+…iM GëobžÓ™pD\K߄ݤ:‹ ˘á’—wšäµÝŃ~F2Ŕáçv.Âř˛!wŞiEë¬zg'AGNÁ€čfW29“µL*ĚŻ¸ś5 í$ďX‘˝y‹¤™`xA895­š#hŤĚř©¨š¸ž„?ÝíÂ4ő^řŢć“`Z´(ÁĺČYLo|˝sŞČ¨±oT\Śţî2ddÇâ…~-Ĺ.H)*®°tÇv‰Lď‹‘BĄľçĐĽł´Î¬ýťť¶ű‘UE\7Šë6xTc芡ÔŘOď§O5Çľ1‹Jlđ‘[sg|d5Í Ę`íđY|÷řěµóŠŽňÂŹµŚóÄćäß÷ /Ó 0÷Gٵ˺jn–Ŕ[檎µ*…bIqqŘBËń[+ u¤·$Ż­w.zPO*–˘!ŚîěĆf5źLfĐ'!±Ź‡)Eľ1uˇČř˘ÔÍVÔVYđ9„ëFüćďź4DşBQ‡§)̢^S>óĺ_d´ODжLÉ“ó Żď–s7˛yŮ:żŹz_ě4†&íţ Ő™äâőîßUňGoŮŘđľ©HfŚŻ‹4GžNäs÷Ťeźăbz˛ÖUHüjĽ4i[Îx]éľäńŮD…śz|ŮŮ«GĺŢ8ŤśĂˇČS€RBĄýLáá¸ÇęŤQP›|_Ťb†řęb »…łÖ\J•¸Ş­l •7.'q®ZôŻŞo–~¸Ź$Č]zmuęj-×:ödé]­›T˘đřˇŃ±XtĂWb}ŕűŮ{ÓŔ—‘ž/'ĽŤlÂ›Ű Q™¨–T>?ŠÁ|ŮŹn­BM3+ę.ěéu‰54Ú=Ńę_“E´Ľźµ…Í»~[3ת ×ř•AR„ĺTK’@$źZ°ŻĆGZ9 'šĹÎĹ‘Â)¶]U/#›R4kş«‘Ł 1•şÄ}%4ťb#K@ź*ŐŠřĄĹĺâ™qĽ>P Ě+B‚l7ˇúexYŠE“7÷w8ѫРéhísâďł#ý3߇Cxáżş„Đ"„tˇ…Ăłű}~ˇĹJś–PšÝ®†ß^“Fđˇ”`µĘńĹ»–Ę  r¤|čYr´OĘĎńkŹÝŔW3ŹbޡÂę"uţë‹EÁĺ€jľ¶ë^”ZŘřĺK7äi+ÓlٱzŃĚHbe7zµ^Tß9ö°1˝Ƌü—Ŕł˘ĹlQ¶Řď@YĆ$†(ó‹Ŕráú+ü`ďďr`s<ŕ÷1ť™řŚůń“tű׉m†NËZŰs3°ąN޵\*ˇâH{}>+ayăŚŘÜ» Ě«Żęeíţîž7^ŐĽ<|ě<ÖÂýݦÉ-†“¦ßy^|ťé¤f&çăżá’S ΛĘM “ř·jDž^çn»nőבĐc†–˘˛QXîÚDhĎ’óü> Ykëń'dŰSŁdČ®m;ŚŔlĂŞĎânš:Ő¤»¬ BĆg }ĺůCR»"ÝI&‰WŚR“ł RŚ «U"ߪ§’éÓ”ŢévÁ˘q}­/%qzE†DŽ—¸Ń!<…ř;ňsŹ®Ţ5i;ˇź@ýÜçÝ*ź[>˘LTxŠxÚ•(éŃEoíE=ŻĽ(ĹĘ2±F®‡Üľ’|ZňL—Ń´‚ęĎ÷©Ó(Řůŕ¬i˙-FłűŇădY‰/«&C!ü75Ë$e‘ÝC¬¬˛ý˙Dľ9řˬčNŚh©I\oNyh6|ěÝ$nËŕ+˘"Ő!ĺ8r§äź’t÷j&E=”ĹYõifz÷dOăuËωi1ŽbÍ~ZŚôVŇÓ‹ľdO?L‡‹÷˝ťá~O‡Š_s°(Qˇ˛bŇĺt :őM˛2á6Ń$1[üŞ4ş #ˇŘóÜ©Ě+M_˝%o"ŤÓŁ7buéBĄCŞd)Č1c 0(v±KĹ8N[­3Ňślh©Ů° @îöţ‹U §ł‰'ťě_¦ ŔŁLÎ\"ÍÚ÷Ćą/čŤË›Ňp¦*$hŚY’©!.%Řđ®3Ö’ŘrŕŘpĚ]đ- ߬Ԭ7Ź`úîĐ~Ź1Šá]Ň(Ö :V"lö>ÎóĎÔ3HWsĎ.âă×v®en >©žŹÓV4jmHB@=ěČc>+ş‘7B`:l Teśîń$š:M˙7ë8ŻŇ  –?!2ÁAĺĎmÂ"1Íáą<ě߲Uaö1jŠă-8ŘĘÎ~%EýîéśľĄd“ĺ\ĺxďŔU­W‘,`‰†‰X2îżßľ˛§ĎWp;@(Çy„úä°»`ÄŹ©^ś)zć´Ş:·Uˬ‹“úŰ€<ĘD×.ú í(´#éÍůÓ*j`¦ýŇ˝‰]˘B¨ Wś4]ÓŠI{Ůg~NcţöÜĄî:;@`ĹÔýWĂŇZ‹ŮY¬ËnJ)ěf—Ô'¤¬/ ˘v×26/áŤnşŐŠąű[zfŞ ¸đCŞąJrk­ęs ”Ł%…z>´§ëľyş+‘8‡óoßx}h ÉT2@ľ%A:OéŽ|+‡ćĹZ&É0˘’˛j¤[ O˝ňá›­X˛ś×žŔ1J|„ů<˙ťŹŘk-ĽÇąřŽE3u︽ -°4'+Y•Č}VÇ­á˝ĺ€(Â.»%C{9c ăuĆ«¸eKh˝Kš¶ËîBĚýĄŰ,v#‘„HXő‰˙SÔ ’Ą#ő‡ÜĂzţH‡o5¶ŢŁýšňôĄuAĘJ‰Ä×xß;rYŰđ¦Űb‡|fŢ€‘A[Ď•;’Ř%łŠ;.x;ú998‹®§řqŹű_ŠëĽ& Ă,róŕçţpť˝TRŢíâěť1ˇ­ß×7ň¤Ď—…•PŢŘÔ{C°”΋‡¦°Ď>*7Ü|N8Ę·!m“l¨–”l¦Ę?w;śm”ŇőďÝs3ކĚ^>`Ї+Í3˛ rÁe:űŕîOj+Ç0˝[ß´ü^*c-ÖÍ6[LŘ$^啝ƌ>ťH—ô/âŮxű&ę× ŕćp¶¤ŹXi”YĹ&磧ůú=a40xQŢć>kŹřäĎ€ŤčăfŚtňŻ‘‚ą{CµńYF°Ç¶źir,;˛ŢĆş}$a$·6¨dôůÇ×­evŁ=¤¶^çaýë˝i^łŔĄŻ-ëÁ…Ü×yŞł‘ˇzv<Ł´:D·iýţY®'ę ÂőËPKDTć…Šł=dËż‹»8+Ąqš))í°ÓšTî˝5 ‹‹»_ż3ĚŘČ©3‚^Đ,Íűž0ýŇWgl~zéľ'Ćâ)·Ľ’Ůâ‰d|wŘs˙z(úöŕk'úT)ĹÍĘq–•}7ÁK“Áld]Ďčšßቝ}YFW>Í%ok“B—ś”$[eko&¦Ýŕ‚fĂ+So'j·č6»ĂżŚn.ž^n†ť©Ű§öuCą®G{Úđ1öÎőĆÄ‹,2ĐL›ÉŘťę‡>˘ŔVZzź”u–×dŰř0u÷‹:Kئ6Ňq1%™_O5 ÖµjľTý6€+`:Ü5='Żż0ô›Äö«ÍX7‹\í<›­€†¬"ÎăúÄźhË/đÇ\m4-°d¦µInd0¨O'rámcĘ[ɬůX)1ЉĄŠŕŰŻ‚ávÖŞ±ńţ/k;mŘěn“Đť\*?čHó¬áçN d׾Ş1ŢcަÄA)TŢÖá,ďÁŘ´·]&Zx±–j,M3Ýú˘ŕ­7‚ŚtđҸ} YxQđąůër#ghťo™ĄO˝ľ"śĚą, G˘ćO ÉNb˙ŞGaŰ»…‡śp§µÄŠă$3)Ąâ)_ĐX4Á%Ąg•”~çDŇÍ/ŻËJýe/ô¦KW·ĺu (e6E^ľ–—°öŢÇýéĄ@ë§ iV†—O;l¸Č‹ ÚÁ#ti`¨Ůť‚Ĺxó6Iĺcßnʏ˛ĂXSŔ““,BIJQB+ďůu ě¦ImŽ„Lęá«««îČ»÷żČNS…;–>~ᬩTś(¶$>@A¶™ ,ÖyđÂ>†V*í×!ˇß˘öčRî¶ăŢí˘ě(lŠŢ˘ HS ĆíĎahČPîƱÁ1ĚZ¤DŃ3żáŠ}HŇiŇý©1&˝%ŃcŞ„@J¸îđd÷Eň\l‡IÔ?k†`ďÂďË,˘Z˙˘iĎ&VAâ.I•ěŕAR‡Śß% ¤gŤ%]yެ›…ŹŰýć(ď(±đŁŤţ•đ„™Ţ^"ľÝ5>Ž·ÝňJ$N±Ĺüö´¬yčYě+6ć34j:˝ůÔ¦Xůź¶YđlŠ--/-wŁů|âŃ*ëhÝć š,ŐÜeőn›XecD*3żŃçáĐ=íŇ‹»h”Lt˛č./{ËçîHů2¨ÓH8ó'`Ě݉úˇ–‹ úGa»”O¨©°ďEpLОjYú#šăk) ¶ŐÄŽ˝BRÇďŕ-¦’äř<Ňń&ó-GkąˇÇNŁEuÚE¤ Ođ$~ădIEý*&ńĂŠ  z„€DyWéŃ~őĆr– ÉKtµ‚®{ôR“ É;‰ücłË´x5Ům2-eŇŹRdóF7¦~K†R·‚ńMäŘí„»ÚuBB‡¤ řšÉďřďĆž^DK4x/Ä´AĽ™ëZľd*6…(É%î' ^0bm‚_µľ1U=đĐÂ-ßJÂHô"ö÷g¨R?‚'ÁěIÇ{ŇPÚý•Ďó˛7ß‹©TQĄĄ[)°VŠ#@…cf´Ţ5#†9÷;&µ€ř,ڍťs(HáŤuüi5±Lď͡“ó0}QCMRGń;= !„YŃ\Ę(b/d.űv6·´ĆÇM2§gOq" ‰xO)ŕń·«ş%˘źpĆŕF˝Ň9…nP– ŢŃ ‘ĐůÇ8±¬Ú«r•2ÄďC…ţo©DłĐVÚ“6™‹µ7íý¬ž˙Ž{/Ę5E]óB˘Î8X&UyçęŤU2 µĹmRݱ™Ň f ÖŞśľÓ»Dâ"ÚŞv[=Ă’ß'e•§ĺŐă%×ĚG|ޤ1ť'ź_¤Ö‹ÍTaâVŕDŹĺúĽËśŻ8•^%Łä7 o-6$¨ć6SBsH˙1±‡řź®S ĺy/M¬©+‚=Ŕj×Đ沵.ač{đ“ToCî˝ćUôÍ„Ľř.íVî÷ZPb\JŠ˘'“ďSŇ­î~n+lISž÷µ¸8*!aÜEýŽ1D×ô8‰H›uÁx7ޱÉÎŹygŚ9â‹u÷µé—O­ĎFď†áÜi5GÓ˘8AĂ …¨žZÍ Âiox[ą‘ú:ý˛ŠJ˝ÂŠŚÖ´CĂS¤ß>ěßßgó1Ŕéq0wp–ÓśđŇMÔ%&čŢń)öľ™±eÉ^Ć0‰ń ţIĺí7iăşYŘ4íŰPJâšřč.Vô] çüަ)%!I9ĺÂĄ1™ä“üňéĂ©śłďš ńWuOm|Q4dA:%şź›vtuůą\Đ5:}:„đ©‘ü Jŕ–^vÓ⸝ ŰĚPŢ]ôůłTż@42%ű­\yb J0ô ľâą­=A=Á ŠÖ ŘĄ Ťl[d·M‘źU–ą±6`…ě$J­˝ +oęŹ'˙řŐµsž.gpżD5ŐC÷Ę×h~ó0÷tU9í¤….›Őź(˙ ×Čň}})óČÝ Ľ ü¦Ý{y9©DŻ»Ý§LÜ”"ŚKĽSĺ AĚ« p×oť·>ąlüŁŃ1_A=.hŁ ŐwBď=­Ăr(ďěő”¸íd»Łc•bÖ~—Že'hńWĘŻŕaĐTËkóeö%řŤĐs+« Ćeźm"9ţÜąťÝę4Á”c¨™ÄÍĹöY|xő91AZĄÁĚ!7·,ł6 ™Ëâv0ą3䊉ŤQD逳ô:'Ú`° [%%ɸBh—éÓŃvé/F(4óSŃÓ>gńIôj0ѬżŘ> Č1Ůg]“L´‰ęď™üMËÇçĽ&,·¤fIŤÁbßžo tŘ˙€C€G˙É]ĘZő—÷f[*cH.śăpół[ău™dÁon@xcsôĎ\QSÜĘs%Ó¬$í!ůŞ#6Ď&3ł+$4UŢŁ:°źs´žFń0t˙!şOÜőmVč˙IVşđ%úµň;32ÖţÝĐJÚ$¨­nJbAŹś<ńE~żÍŐ á’Šą)óŐI ¦ľ`ĹGĂ€‹ăČB˙7mh¦EîŹć;xŕĹŹ-5ĂuúÂvLDáŮăvlľwČ\”!p÷î?5ůq=j÷ŹÍ¨#ęw›Ç”ÖąÓ–©Yąžö#Źź@Ô"÷‹ŚçŚŞäëNč®ß\‰'=ş"ěě ßĐc BÉşs‡[–â8S-óź‚‘“©ňŹ ”›cđšů˙¬ xŤÁ>ő†WůÍ )7k3l[¦éx´€´î†ÚúĽ\ĎŠ5ńgo0`˝Ľ;%ÜAíɨy#µ‡řŘ€o˛ú1űŽĂŚüü‚¦t‘_,†™™8ĺ"®¬˝Ćô!Óă÷:ÎśO»¨ĆÔĺVôŁeˇilpÍ9<‚CÁ)A‘Ľ†Č’íÚbxś8ź{鎧2nťr˛#÷t)YEîăé·QžÜóĺg"Z}0„¦˘Ť¤Ž+ !e9_D? GdüŽŠ‰îá!čńĄý|¶ô%—ĺ>Jô´†¬×” .ŁćßKMĚ‘•ń¶ĺ}‹yďHďΕ̰S\9 ­\”1]l‹›Űőic»éfţ•›ţK¦ĹŔ/&Á¨— ÁDĆŮ‹ă]ęD PQ?öŐŢŐ÷·‚?Ňq˛QŠQčq§A†‹dظß6@'L–GmQgZV.}|ŰęDFoĹc9ö”˘~âľőİ@>Yµ[(Y„Ł!ŞčG™ÖHXă!UU5ů(˛?šăÇ%q§p(IĄ›Uo‚(Ĺ8­.K:×?Ąý0Ć\#WúZý9MŤ§\Łú¶<¦D˝’źd/ňKžo,şlQÝŠ1U»&q@}ä;Âń_ţ=|˝źn1G(qGËW‡Ůö7ƶNŢY]Q7V=%kM\…Ął‰ă}=×ZK Ó%&‚W«)za±ÚEÓ_`‡;Ý%N™ŁiŽć{=?ŞY—~k˘?XX•o¶ĄÍö¸/úeŃÖ3D†yP%íUďŰxă˘?Ńăuđ8N>Đß5«Ą©DPéź§Š ŚĄ8ş/Él*óó=ľŢĺ÷óýHh+Řewoďą¶˛a‰űigf3CęZNňĺ}F2JJž{ßMÍjăΗ:ĽGţď䡨X#ślõ° ÷[.ô¸ź˝Ö#Č[kťi»RBŠÜ ĘjÚĘ›A†§F57"9ÄŰé7¬Źa5¬ĽämcDgă’BČâŹţgxÇüOÂĐď3“[Ź\µ}_đ·} ÜŚ kŠ\Sşw‘µ±;ë Ľ€(ÂMÖ2jý)iͦ`<.—…u’#îĄ\:–˛P?ÎË““úěQ9fÁÓ"âB.˛°ÉŠöÂO*ŇĘî°ÎŘŢ÷Ń>ęĚw¬Ł/Šjťg>†gűĺ}ČKuÇŤp©· ´Klč {‡‘—l©npąÎ#–Ę#âÂЇą)×6‘ło‰ű@öćĄďk§PĂĚyŁż”!O®]}SŠŇÄoqww5ă4.N/|rńzĘ®u)AĎ˙ý‘„ţ·É\ŤÍěÉm‰‰&Ľ-·› ¶LľĎäŁlqď§uť…h iŠ-xűŁĽś‰>¶‰űpîţx@ě1ZŘv FŕĐ`ŘĄhW¬F¸ÁĹž.ám°_OÝëÉCX^´MXŽÄEĺn})çá©WvĘFVý7é$Ş 9ëACKbąăk:ÁÉ•żŤM ŐRV\§ĺńă:AřÍ*Š!Ü[Ö`Ý_ŃČN_°?ţZc6ž_15rňTř4ź/ŔíÓ;dt3¸l÷ňtňBŸ±Ů†·Ýޏ±E´qÍa‰ô*ť¦±ú:SĹ´»źôÂQh´°Đőy+ôŞź¸ËĂ> endobj 69 0 obj << /Ascent 716 /CapHeight 681 /Descent -282 /FontName /PASPAO+URWPalladioL-Roma /ItalicAngle 0 /StemV 84 /XHeight 469 /FontBBox [-166 -283 1021 943] /Flags 4 /CharSet (/J/O/P/a/c/d/e/j/n/o/p/r/t) /FontFile 70 0 R >> endobj 489 0 obj [333 0 0 0 0 786 604 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 0 444 611 479 0 0 0 0 234 0 0 0 582 546 601 0 395 0 326 ] endobj 75 0 obj << /Type /Pages /Count 6 /Parent 490 0 R /Kids [62 0 R 77 0 R 83 0 R 132 0 R 136 0 R 152 0 R] >> endobj 170 0 obj << /Type /Pages /Count 6 /Parent 490 0 R /Kids [156 0 R 172 0 R 198 0 R 210 0 R 230 0 R 245 0 R] >> endobj 269 0 obj << /Type /Pages /Count 6 /Parent 490 0 R /Kids [256 0 R 271 0 R 283 0 R 295 0 R 369 0 R 481 0 R] >> endobj 490 0 obj << /Type /Pages /Count 18 /Kids [75 0 R 170 0 R 269 0 R] >> endobj 491 0 obj << /Type /Outlines /First 3 0 R /Last 11 0 R /Count 3 >> endobj 59 0 obj << /Title 60 0 R /A 57 0 R /Parent 11 0 R /Prev 55 0 R >> endobj 55 0 obj << /Title 56 0 R /A 53 0 R /Parent 11 0 R /Prev 51 0 R /Next 59 0 R >> endobj 51 0 obj << /Title 52 0 R /A 49 0 R /Parent 11 0 R /Prev 47 0 R /Next 55 0 R >> endobj 47 0 obj << /Title 48 0 R /A 45 0 R /Parent 11 0 R /Prev 43 0 R /Next 51 0 R >> endobj 43 0 obj << /Title 44 0 R /A 41 0 R /Parent 11 0 R /Prev 39 0 R /Next 47 0 R >> endobj 39 0 obj << /Title 40 0 R /A 37 0 R /Parent 11 0 R /Prev 35 0 R /Next 43 0 R >> endobj 35 0 obj << /Title 36 0 R /A 33 0 R /Parent 11 0 R /Prev 31 0 R /Next 39 0 R >> endobj 31 0 obj << /Title 32 0 R /A 29 0 R /Parent 11 0 R /Prev 27 0 R /Next 35 0 R >> endobj 27 0 obj << /Title 28 0 R /A 25 0 R /Parent 11 0 R /Prev 23 0 R /Next 31 0 R >> endobj 23 0 obj << /Title 24 0 R /A 21 0 R /Parent 11 0 R /Prev 19 0 R /Next 27 0 R >> endobj 19 0 obj << /Title 20 0 R /A 17 0 R /Parent 11 0 R /Prev 15 0 R /Next 23 0 R >> endobj 15 0 obj << /Title 16 0 R /A 13 0 R /Parent 11 0 R /Next 19 0 R >> endobj 11 0 obj << /Title 12 0 R /A 9 0 R /Parent 491 0 R /Prev 7 0 R /First 15 0 R /Last 59 0 R /Count -12 >> endobj 7 0 obj << /Title 8 0 R /A 5 0 R /Parent 491 0 R /Prev 3 0 R /Next 11 0 R >> endobj 3 0 obj << /Title 4 0 R /A 1 0 R /Parent 491 0 R /Next 7 0 R >> endobj 492 0 obj << /Names [(0) 68 0 R (1.0) 2 0 R (10) 118 0 R (1000) 462 0 R (1001) 463 0 R (1002) 464 0 R (1003) 465 0 R (1004) 466 0 R (1005) 467 0 R (1006) 468 0 R (1007) 469 0 R (1008) 470 0 R (1009) 471 0 R (1010) 472 0 R (1011) 473 0 R (1012) 474 0 R (1013) 475 0 R (1014) 476 0 R (1015) 477 0 R (1016) 478 0 R (1017) 479 0 R (1018) 130 0 R (1020) 484 0 R (1021) 485 0 R (1022) 486 0 R (104) 174 0 R (105) 175 0 R (106) 122 0 R (108) 178 0 R (109) 179 0 R (110) 180 0 R (111) 181 0 R (112) 182 0 R (113) 183 0 R (114) 184 0 R (115) 185 0 R (116) 186 0 R (117) 187 0 R (118) 188 0 R (119) 189 0 R (12) 158 0 R (120) 192 0 R (121) 193 0 R (122) 194 0 R (123) 195 0 R (124) 196 0 R (127) 200 0 R (13) 159 0 R (14) 119 0 R (16) 160 0 R (17) 120 0 R (174) 202 0 R (175) 123 0 R (177) 203 0 R (178) 124 0 R (180) 204 0 R (181) 205 0 R (182) 206 0 R (183) 207 0 R (184) 208 0 R (185) 212 0 R (186) 125 0 R (188) 213 0 R (189) 214 0 R (19) 161 0 R (190) 215 0 R (191) 216 0 R (192) 217 0 R (193) 218 0 R (194) 219 0 R (195) 220 0 R (196) 221 0 R (197) 222 0 R (198) 223 0 R (199) 126 0 R (2.0) 6 0 R (20) 162 0 R (201) 224 0 R (202) 225 0 R (203) 226 0 R (206) 227 0 R (21) 121 0 R (23) 163 0 R (234) 232 0 R (24) 164 0 R (25) 165 0 R (26) 166 0 R (262) 234 0 R (27) 167 0 R (290) 236 0 R (3.0) 10 0 R (3.1.1) 14 0 R (3.10.1) 50 0 R (3.11.1) 54 0 R (3.12.1) 58 0 R (3.2.1) 18 0 R (3.3.1) 22 0 R (3.4.1) 26 0 R (3.5.1) 30 0 R (3.6.1) 34 0 R (3.7.1) 38 0 R (3.8.1) 42 0 R (3.9.1) 46 0 R (30) 168 0 R (318) 127 0 R (320) 238 0 R (321) 239 0 R (322) 240 0 R (323) 241 0 R (326) 242 0 R (354) 247 0 R (382) 249 0 R (410) 251 0 R (438) 253 0 R (466) 259 0 R (494) 261 0 R (522) 263 0 R (550) 265 0 R (578) 267 0 R (607) 274 0 R (635) 276 0 R (666) 278 0 R (694) 280 0 R (723) 286 0 R (754) 290 0 R (801) 292 0 R (836) 128 0 R (838) 299 0 R (839) 300 0 R (840) 301 0 R (841) 302 0 R (842) 303 0 R (843) 304 0 R (844) 305 0 R (845) 306 0 R (846) 307 0 R (847) 308 0 R (848) 309 0 R (849) 310 0 R (850) 311 0 R (851) 312 0 R (852) 313 0 R (853) 314 0 R (854) 315 0 R (855) 316 0 R (856) 317 0 R (857) 318 0 R (858) 319 0 R (859) 320 0 R (860) 321 0 R (861) 322 0 R (862) 323 0 R (863) 324 0 R (864) 325 0 R (865) 326 0 R (866) 327 0 R (867) 328 0 R (868) 329 0 R (869) 330 0 R (870) 331 0 R (871) 332 0 R (872) 333 0 R (873) 334 0 R (874) 335 0 R (875) 336 0 R (876) 337 0 R (877) 338 0 R (878) 339 0 R (879) 340 0 R (880) 341 0 R (881) 342 0 R (882) 343 0 R (883) 344 0 R (884) 345 0 R (885) 346 0 R (886) 347 0 R (887) 348 0 R (888) 349 0 R (889) 350 0 R (890) 351 0 R (891) 352 0 R (892) 353 0 R (893) 354 0 R (894) 355 0 R (895) 356 0 R (896) 357 0 R (897) 358 0 R (898) 359 0 R (899) 360 0 R (900) 361 0 R (901) 362 0 R (902) 363 0 R (903) 364 0 R (904) 365 0 R (905) 366 0 R (906) 367 0 R (907) 372 0 R (908) 298 0 R (909) 373 0 R (910) 374 0 R (911) 375 0 R (912) 376 0 R (913) 377 0 R (914) 378 0 R (915) 379 0 R (916) 380 0 R (917) 381 0 R (918) 382 0 R (919) 383 0 R (920) 384 0 R (921) 385 0 R (922) 386 0 R (923) 387 0 R (924) 388 0 R (925) 389 0 R (926) 390 0 R (927) 391 0 R (928) 392 0 R (929) 393 0 R (930) 394 0 R (931) 395 0 R (932) 396 0 R (933) 397 0 R (934) 398 0 R (935) 399 0 R (936) 400 0 R (937) 401 0 R (938) 402 0 R (939) 403 0 R (940) 404 0 R (941) 405 0 R (942) 406 0 R (943) 407 0 R (944) 408 0 R (945) 409 0 R (946) 410 0 R (947) 411 0 R (948) 412 0 R (949) 413 0 R (950) 414 0 R (951) 415 0 R (952) 416 0 R (953) 417 0 R (954) 418 0 R (955) 419 0 R (956) 420 0 R (957) 421 0 R (958) 422 0 R (959) 423 0 R (960) 424 0 R (961) 129 0 R (963) 425 0 R (964) 426 0 R (965) 427 0 R (966) 428 0 R (967) 429 0 R (968) 430 0 R (969) 431 0 R (970) 432 0 R (971) 433 0 R (972) 434 0 R (973) 435 0 R (974) 436 0 R (975) 437 0 R (976) 438 0 R (977) 439 0 R (978) 440 0 R (979) 441 0 R (980) 442 0 R (981) 443 0 R (982) 444 0 R (983) 445 0 R (984) 446 0 R (985) 447 0 R (986) 448 0 R (987) 449 0 R (988) 450 0 R (989) 451 0 R (990) 452 0 R (991) 453 0 R (992) 454 0 R (993) 455 0 R (994) 456 0 R (995) 457 0 R (996) 458 0 R (997) 459 0 R (998) 460 0 R (999) 461 0 R (Doc-Start) 67 0 R (configure) 148 0 R (openjade131fixes) 150 0 R (openjade132fixes) 149 0 R (page.1) 66 0 R (page.10) 297 0 R (page.11) 371 0 R (page.12) 483 0 R (page.2) 79 0 R (page.3) 85 0 R (page.4) 134 0 R (page.5) 138 0 R (page.6) 154 0 R (page.7) 258 0 R (page.8) 273 0 R (page.9) 285 0 R (platforms) 147 0 R (table.1) 169 0 R (table.10) 252 0 R (table.11) 254 0 R (table.12) 260 0 R (table.13) 262 0 R (table.14) 264 0 R (table.15) 266 0 R (table.16) 268 0 R (table.17) 275 0 R (table.18) 277 0 R (table.19) 279 0 R (table.2) 201 0 R (table.20) 281 0 R (table.21) 287 0 R (table.22) 291 0 R (table.23) 293 0 R (table.3) 228 0 R (table.4) 233 0 R (table.5) 235 0 R (table.6) 237 0 R (table.7) 243 0 R (table.8) 248 0 R (table.9) 250 0 R] /Limits [(0) (table.9)] >> endobj 493 0 obj << /Kids [492 0 R] >> endobj 494 0 obj << /Dests 493 0 R >> endobj 495 0 obj << /Type /Catalog /Pages 490 0 R /Outlines 491 0 R /Names 494 0 R /PageMode /None /URI << /Base () >> /ViewerPreferences << >> /OpenAction 61 0 R >> endobj 496 0 obj << /Producer (pdfTeX-0.14h) /Author (OpenJade Project) /Title () /Subject () /Creator (LaTeX with hyperref package) /Producer (pdfTeX14.h) /Keywords () /Creator (TeX) /CreationDate (D:20021201161700) >> endobj xref 0 497 0000000080 65535 f 0000000009 00000 n 0000009068 00000 n 0000083626 00000 n 0000000048 00000 n 0000000083 00000 n 0000011858 00000 n 0000083542 00000 n 0000000122 00000 n 0000000154 00000 n 0000014384 00000 n 0000083431 00000 n 0000000193 00000 n 0000000240 00000 n 0000014627 00000 n 0000083357 00000 n 0000000282 00000 n 0000000325 00000 n 0000014810 00000 n 0000083270 00000 n 0000000367 00000 n 0000000404 00000 n 0000015054 00000 n 0000083183 00000 n 0000000446 00000 n 0000000484 00000 n 0000017514 00000 n 0000083096 00000 n 0000000526 00000 n 0000000574 00000 n 0000021145 00000 n 0000083009 00000 n 0000000616 00000 n 0000000655 00000 n 0000021328 00000 n 0000082922 00000 n 0000000697 00000 n 0000000728 00000 n 0000024110 00000 n 0000082835 00000 n 0000000770 00000 n 0000000796 00000 n 0000024905 00000 n 0000082748 00000 n 0000000838 00000 n 0000000870 00000 n 0000027904 00000 n 0000082661 00000 n 0000000912 00000 n 0000000944 00000 n 0000040833 00000 n 0000082574 00000 n 0000000987 00000 n 0000001017 00000 n 0000051053 00000 n 0000082487 00000 n 0000001060 00000 n 0000001092 00000 n 0000055285 00000 n 0000082413 00000 n 0000001135 00000 n 0000001172 00000 n 0000001553 00000 n 0000001669 00000 n 0000002893 00000 n 0000001223 00000 n 0000002716 00000 n 0000002775 00000 n 0000002834 00000 n 0000081551 00000 n 0000070718 00000 n 0000081380 00000 n 0000070268 00000 n 0000058073 00000 n 0000070097 00000 n 0000081915 00000 n 0000003474 00000 n 0000003299 00000 n 0000003010 00000 n 0000003415 00000 n 0000000086 00000 f 0000057982 00000 n 0000009127 00000 n 0000004782 00000 n 0000003544 00000 n 0000009009 00000 n 0000000089 00000 f 0000057888 00000 n 0000005108 00000 n 0000000116 00000 f 0000057798 00000 n 0000005257 00000 n 0000005406 00000 n 0000005555 00000 n 0000005704 00000 n 0000005852 00000 n 0000006000 00000 n 0000006148 00000 n 0000006296 00000 n 0000006446 00000 n 0000006596 00000 n 0000006747 00000 n 0000006898 00000 n 0000007049 00000 n 0000007200 00000 n 0000007351 00000 n 0000007502 00000 n 0000007653 00000 n 0000007804 00000 n 0000007955 00000 n 0000008106 00000 n 0000008256 00000 n 0000008405 00000 n 0000008556 00000 n 0000008706 00000 n 0000008858 00000 n 0000000176 00000 f 0000057705 00000 n 0000014323 00000 n 0000014566 00000 n 0000014749 00000 n 0000014993 00000 n 0000017453 00000 n 0000021084 00000 n 0000021267 00000 n 0000024049 00000 n 0000024845 00000 n 0000027843 00000 n 0000040772 00000 n 0000050992 00000 n 0000054513 00000 n 0000009592 00000 n 0000009412 00000 n 0000009234 00000 n 0000009531 00000 n 0000011918 00000 n 0000010318 00000 n 0000009664 00000 n 0000011797 00000 n 0000010513 00000 n 0000010670 00000 n 0000010827 00000 n 0000010984 00000 n 0000011141 00000 n 0000011305 00000 n 0000011469 00000 n 0000011633 00000 n 0000015420 00000 n 0000020840 00000 n 0000025149 00000 n 0000028208 00000 n 0000012372 00000 n 0000012192 00000 n 0000012014 00000 n 0000012311 00000 n 0000015603 00000 n 0000014203 00000 n 0000012444 00000 n 0000014445 00000 n 0000014505 00000 n 0000014688 00000 n 0000014871 00000 n 0000014932 00000 n 0000015115 00000 n 0000015176 00000 n 0000015237 00000 n 0000015298 00000 n 0000015359 00000 n 0000015481 00000 n 0000015542 00000 n 0000082028 00000 n 0000018622 00000 n 0000017210 00000 n 0000015711 00000 n 0000017330 00000 n 0000017391 00000 n 0000000190 00000 f 0000057617 00000 n 0000017575 00000 n 0000017636 00000 n 0000017697 00000 n 0000017759 00000 n 0000017821 00000 n 0000017883 00000 n 0000017945 00000 n 0000018007 00000 n 0000018069 00000 n 0000018130 00000 n 0000018191 00000 n 0000018253 00000 n 0000000288 00000 f 0000057521 00000 n 0000018315 00000 n 0000018377 00000 n 0000018438 00000 n 0000018499 00000 n 0000018561 00000 n 0000021697 00000 n 0000020720 00000 n 0000018756 00000 n 0000020901 00000 n 0000020962 00000 n 0000021023 00000 n 0000021206 00000 n 0000021389 00000 n 0000021450 00000 n 0000021512 00000 n 0000021574 00000 n 0000021636 00000 n 0000025332 00000 n 0000023868 00000 n 0000021831 00000 n 0000023988 00000 n 0000024171 00000 n 0000024232 00000 n 0000024293 00000 n 0000024354 00000 n 0000024415 00000 n 0000024476 00000 n 0000024538 00000 n 0000024599 00000 n 0000024661 00000 n 0000024722 00000 n 0000024784 00000 n 0000024965 00000 n 0000025026 00000 n 0000025087 00000 n 0000025210 00000 n 0000025271 00000 n 0000028391 00000 n 0000027357 00000 n 0000025440 00000 n 0000027477 00000 n 0000027538 00000 n 0000027599 00000 n 0000027660 00000 n 0000027721 00000 n 0000027782 00000 n 0000027965 00000 n 0000028025 00000 n 0000028085 00000 n 0000028147 00000 n 0000028269 00000 n 0000028330 00000 n 0000031083 00000 n 0000030475 00000 n 0000028499 00000 n 0000030595 00000 n 0000030656 00000 n 0000030717 00000 n 0000030778 00000 n 0000030839 00000 n 0000030900 00000 n 0000030961 00000 n 0000031022 00000 n 0000033598 00000 n 0000032811 00000 n 0000031179 00000 n 0000032931 00000 n 0000032992 00000 n 0000033053 00000 n 0000033114 00000 n 0000033174 00000 n 0000033234 00000 n 0000033295 00000 n 0000033356 00000 n 0000033417 00000 n 0000033478 00000 n 0000033538 00000 n 0000082145 00000 n 0000036310 00000 n 0000035643 00000 n 0000033694 00000 n 0000035763 00000 n 0000035824 00000 n 0000035884 00000 n 0000035944 00000 n 0000036005 00000 n 0000036066 00000 n 0000036127 00000 n 0000036188 00000 n 0000036249 00000 n 0000038691 00000 n 0000038146 00000 n 0000036419 00000 n 0000038266 00000 n 0000038327 00000 n 0000038387 00000 n 0000000000 00000 f 0000057428 00000 n 0000038447 00000 n 0000038508 00000 n 0000038569 00000 n 0000038630 00000 n 0000045144 00000 n 0000040531 00000 n 0000038813 00000 n 0000040651 00000 n 0000040712 00000 n 0000040894 00000 n 0000040955 00000 n 0000041016 00000 n 0000041078 00000 n 0000041139 00000 n 0000041200 00000 n 0000041262 00000 n 0000041324 00000 n 0000041385 00000 n 0000041447 00000 n 0000041509 00000 n 0000041570 00000 n 0000041631 00000 n 0000041692 00000 n 0000041753 00000 n 0000041815 00000 n 0000041877 00000 n 0000041939 00000 n 0000042000 00000 n 0000042062 00000 n 0000042123 00000 n 0000042184 00000 n 0000042245 00000 n 0000042306 00000 n 0000042367 00000 n 0000042429 00000 n 0000042491 00000 n 0000042551 00000 n 0000042613 00000 n 0000042674 00000 n 0000042736 00000 n 0000042798 00000 n 0000042859 00000 n 0000042921 00000 n 0000042982 00000 n 0000043044 00000 n 0000043105 00000 n 0000043167 00000 n 0000043228 00000 n 0000043290 00000 n 0000043351 00000 n 0000043412 00000 n 0000043474 00000 n 0000043536 00000 n 0000043598 00000 n 0000043660 00000 n 0000043720 00000 n 0000043782 00000 n 0000043844 00000 n 0000043906 00000 n 0000043968 00000 n 0000044030 00000 n 0000044092 00000 n 0000044154 00000 n 0000044215 00000 n 0000044277 00000 n 0000044339 00000 n 0000044401 00000 n 0000044463 00000 n 0000044525 00000 n 0000044587 00000 n 0000044649 00000 n 0000044711 00000 n 0000044773 00000 n 0000044835 00000 n 0000044897 00000 n 0000044959 00000 n 0000045021 00000 n 0000045083 00000 n 0000054573 00000 n 0000047528 00000 n 0000045278 00000 n 0000047648 00000 n 0000047709 00000 n 0000047771 00000 n 0000047832 00000 n 0000047894 00000 n 0000047956 00000 n 0000048018 00000 n 0000048080 00000 n 0000048142 00000 n 0000048203 00000 n 0000048265 00000 n 0000048327 00000 n 0000048389 00000 n 0000048451 00000 n 0000048513 00000 n 0000048575 00000 n 0000048637 00000 n 0000048699 00000 n 0000048761 00000 n 0000048823 00000 n 0000048885 00000 n 0000048947 00000 n 0000049009 00000 n 0000049071 00000 n 0000049133 00000 n 0000049195 00000 n 0000049257 00000 n 0000049319 00000 n 0000049381 00000 n 0000049443 00000 n 0000049504 00000 n 0000049566 00000 n 0000049628 00000 n 0000049690 00000 n 0000049752 00000 n 0000049814 00000 n 0000049876 00000 n 0000049938 00000 n 0000050000 00000 n 0000050062 00000 n 0000050124 00000 n 0000050186 00000 n 0000050248 00000 n 0000050310 00000 n 0000050372 00000 n 0000050434 00000 n 0000050496 00000 n 0000050558 00000 n 0000050620 00000 n 0000050682 00000 n 0000050744 00000 n 0000050806 00000 n 0000050868 00000 n 0000050930 00000 n 0000051114 00000 n 0000051175 00000 n 0000051236 00000 n 0000051298 00000 n 0000051359 00000 n 0000051420 00000 n 0000051481 00000 n 0000051543 00000 n 0000051604 00000 n 0000051666 00000 n 0000051727 00000 n 0000051789 00000 n 0000051851 00000 n 0000051913 00000 n 0000051974 00000 n 0000052036 00000 n 0000052097 00000 n 0000052159 00000 n 0000052220 00000 n 0000052282 00000 n 0000052344 00000 n 0000052406 00000 n 0000052468 00000 n 0000052530 00000 n 0000052591 00000 n 0000052653 00000 n 0000052715 00000 n 0000052777 00000 n 0000052839 00000 n 0000052901 00000 n 0000052963 00000 n 0000053025 00000 n 0000053087 00000 n 0000053149 00000 n 0000053211 00000 n 0000053273 00000 n 0000053335 00000 n 0000053397 00000 n 0000053459 00000 n 0000053521 00000 n 0000053583 00000 n 0000053645 00000 n 0000053707 00000 n 0000053769 00000 n 0000053831 00000 n 0000053893 00000 n 0000053955 00000 n 0000054017 00000 n 0000054079 00000 n 0000054141 00000 n 0000054203 00000 n 0000054265 00000 n 0000054327 00000 n 0000054389 00000 n 0000054451 00000 n 0000055530 00000 n 0000055104 00000 n 0000054694 00000 n 0000055224 00000 n 0000055346 00000 n 0000055407 00000 n 0000055468 00000 n 0000055638 00000 n 0000070522 00000 n 0000081783 00000 n 0000082262 00000 n 0000082339 00000 n 0000083697 00000 n 0000088544 00000 n 0000088583 00000 n 0000088621 00000 n 0000088790 00000 n trailer << /Size 497 /Root 495 0 R /Info 496 0 R >> startxref 89011 %%EOF openjade-1.3.2/releasenotes.ps0100664000076400007640000134762107572433040014474 0ustar ianian%!PS-Adobe-3.0 %%Title: (releasenotes.pdf) %%Version: 1 3 %%Creator: (LaTeX with hyperref package) %%CreationDate: (D:20021201161700) %%For: (OpenJade Project) %%DocumentData: Clean7Bit %%LanguageLevel: 2 %%BoundingBox: 0 0 610 789 %%Pages: 18 %%DocumentProcessColors: (atend) %%DocumentNeededResources: (atend) %%DocumentSuppliedResources: %%+ procset (Adobe Acrobat - PDF operators) 1.2 0 %%+ procset (Adobe Acrobat - type operators) 1.2 0 %%+ procset (Adobe Acrobat - general image support) 1.2 0 %%+ procset (Adobe Acrobat - monochrome image support) 1.2 0 %%+ procset (Adobe Acrobat - color image support) 1.2 0 %%EndComments %%BeginDefaults %%EndDefaults %%BeginProlog %%EndProlog %%BeginSetup %%BeginResource: l2check %%Copyright: Copyright 1993 Adobe Systems Incorporated. All Rights Reserved. systemdict /languagelevel known { systemdict /languagelevel get 1 eq } { true } ifelse { initgraphics /Helvetica findfont 18 scalefont setfont 72 600 moveto (Error: Your printer driver needs to be configured) dup show 72 580 moveto (for printing to a PostScript Language Level 1 printer.) dup show exch = = /Helvetica-Bold findfont 16 scalefont setfont 72 520 moveto (Windows and Unix) show /Times-Roman findfont 16 scalefont setfont 72 500 moveto (Select ŞLanguage Level 1ş in the PostScript options section) show 72 480 moveto (of the Acrobat print dialog.) show /Helvetica-Bold findfont 16 scalefont setfont 72 440 moveto (Macintosh) show /Times-Roman findfont 16 scalefont setfont 72 420 moveto (In the Chooser, select your printer driver.) show 72 400 moveto (Then select your printer and click the Setup button.) show 72 380 moveto (Follow any on-screen dialogs that may appear.) show showpage quit } if %%EndResource /currentpacking where{pop currentpacking true setpacking}if %%BeginResource: procset pdfvars %%Copyright: Copyright 1987-1999 Adobe Systems Incorporated. All Rights Reserved. %%Version: 4.0 2 %%Title: definition of dictionary of variables used by PDF & PDFText procsets userdict /PDF 160 dict put userdict /PDFVars 86 dict dup begin put /_save 0 def /_cshow 0 def /InitAll 0 def /TermAll 0 def /DocInitAll 0 def /DocTermAll 0 def /_lp /none def /_doClip 0 def /sfc 0 def /_sfcs 0 def /_sfc 0 def /ssc 0 def /_sscs 0 def /_ssc 0 def /_fcs 0 def /_scs 0 def /_fp 0 def /_sp 0 def /AGM_MAX_CS_COMPONENTS 10 def /_fillColors [ 0 1 AGM_MAX_CS_COMPONENTS { array } for ] def /_strokeColors [ 0 1 AGM_MAX_CS_COMPONENTS { array } for ] def /_fc null def /_sc null def /DefaultGray [/DeviceGray] def /DefaultRGB [/DeviceRGB] def /DefaultCMYK [/DeviceCMYK] def /_inT false def /_tr -1 def /_rise 0 def /_ax 0 def /_cx 0 def /_ld 0 def /_tm matrix def /_ctm matrix def /_mtx matrix def /_hy (-) def /_fScl 0 def /_hs 1 def /_pdfEncodings 2 array def /_baselineadj 0 def /_fTzero false def /_Tj 0 def /_italMtx [1 0 .212557 1 0 0] def /_italMtx_WMode1 [1 -.212557 0 1 0 0] def /_italMtxType0 [1 0 .1062785 1 0 0] def /_italMtx_WMode1Type0 [1 -.1062785 0 1 0 0] def /_basefont 0 def /_basefonto 0 def /_pdf_oldCIDInit null def /_pdf_FontDirectory 30 dict def /_categories 10 dict def /_sa? true def /_op? false def /_OP? false def /_opmode 0 def /_ColorSep5044? false def /_tmpcolr? [] def /_tmpop? {} def /_processColors 0 def /_defaulttransfer currenttransfer def /_defaultflatness currentflat def /_defaulthalftone null def /_defaultcolortransfer null def /_defaultblackgeneration null def /_defaultundercolorremoval null def /_defaultcolortransfer null def end %%EndResource PDFVars begin PDF begin %%BeginResource: procset pdfutil %%Copyright: Copyright 1993-1999 Adobe Systems Incorporated. All Rights Reserved. %%Version: 4.0 2 %%Title: Basic utilities used by other PDF procsets /bd {bind def} bind def /ld {load def} bd /bld { dup length dict begin { null def } forall bind end def } bd /dd { PDFVars 3 1 roll put } bd /xdd { exch dd } bd /Level2? systemdict /languagelevel known { systemdict /languagelevel get 2 ge } { false } ifelse def /Level3? systemdict /languagelevel known {systemdict /languagelevel get 3 eq } { false } ifelse def /getifknown { 2 copy known { get true } { pop pop false } ifelse } bd /here { currentdict exch getifknown } bd /isdefined? { where { pop true } { false } ifelse } bd /StartLoad { dup dup not { /_save save dd } if } bd /EndLoad { if not { _save restore } if } bd %%EndResource %%BeginResource: procset pdf %%Version: 4.0 3 %%Copyright: Copyright 1998-1999 Adobe Systems Incorporated. All Rights Reserved. %%Title: General operators for PDF, common to all Language Levels. [/b/B/b*/B*/BDC/BI/BMC/BT/BX/c/cm/cs/CS/d/d0/d1/Do/DP/EI/EMC/ET/EX/f/f*/g/G/gs /h/i/j/J/k/K/l/m/M/MP/n/q/Q/re/rg/RG/ri/s/S/sc/SC/scn/SCN/sg/Tc/Td/TD/Tf/Tj/TJ /TL/Tm/Tr/Ts/Tw/Tz/T*/v/w/W/W*/y/'/" /applyInterpFunc/applystitchFunc/domainClip/EF/encodeInput/gsDI/ilp/icl /initgs/int/limit/PS/rangeClip/RC/rf/makePat/csfamily /? /! /| /: /+ /GetGlyphDirectory ] {null def} bind forall /v { currentpoint 6 2 roll c } bd /y { 2 copy c } bd /h/closepath ld /d/setdash ld /j/setlinejoin ld /J/setlinecap ld /M/setmiterlimit ld /w/setlinewidth ld /i { dup 0 eq { pop _defaultflatness } if setflat } bd /gsDI { begin /OP here { /_OP? xdd } if /op here { /_op? xdd } { /OP here { /_op? xdd } if } ifelse /OPM here { /_opmode xdd } if /Font here { aload pop Tf } if /LW here { w } if /LC here { J } if /LJ here { j } if /ML here { M } if /D here { aload pop d } if end } bd /ilp { /_lp /none dd } bd /icl { /_doClip 0 dd } bd /W { /_doClip 1 dd } bd /W* { /_doClip 2 dd } bd /n { {{} {clip} {eoclip}} _doClip get exec icl newpath } bd /s { h S } bd /B { q f Q S } bd /B* { q f* Q S } bd /b { h B } bd /b* { h B* } bd /q/save ld /Q { restore ilp } bd /GetCSFamily { dup type /arraytype eq {0 get} if } bd /GetCompsDict 11 dict begin /DeviceGray { pop 1 } bd /DeviceRGB { pop 3 } bd /DeviceCMYK { pop 4 } bd /CIEBasedA { pop 1 } bd /CIEBasedABC { pop 3 } bd /CIEBasedDEF { pop 3 } bd /CIEBasedDEFG { pop 4 } bd /DeviceN { 1 get length } bd /Separation { pop 1 } bd /Indexed { pop 1 } bd /Pattern { pop 0 } bd currentdict end def /GetComps { GetCompsDict 1 index GetCSFamily get exec } bd /cs { dup _fcs eq { pop } { dup /_fcs xdd GetComps _fillColors exch get /_fc xdd /_fp null dd } ifelse } bd /CS { dup _scs eq { pop } { dup /_scs xdd GetComps _strokeColors exch get /_sc xdd /_sp null dd } ifelse } bd /sc { _fc astore pop ilp } bd /SC { _sc astore pop ilp } bd /g { DefaultGray cs sc } bd /rg { DefaultRGB cs sc } bd /k { DefaultCMYK cs sc } bd /G { DefaultGray CS SC } bd /RG { DefaultRGB CS SC } bd /K { DefaultCMYK CS SC } bd /cm { _mtx astore concat } bd /re { 4 2 roll m 1 index 0 rlineto 0 exch rlineto neg 0 rlineto h } bd /RC/rectclip ld /EF/execform ld /PS { cvx exec } bd /initgs { /DefaultGray [/DeviceGray] dd /DefaultRGB [/DeviceRGB] dd /DefaultCMYK [/DeviceCMYK] dd 0 g 0 G [] 0 d 0 j 0 J 10 M 1 w true setSA /_op? false dd /_OP? false dd /_opmode 0 dd /_defaulttransfer load settransfer 0 i /RelativeColorimetric ri newpath } bd /int { dup 2 index sub 3 index 5 index sub div 6 -2 roll sub mul exch pop add exch pop } bd /limit { dup 2 index le { exch } if pop dup 2 index ge { exch } if pop } bd /domainClip { Domain aload pop 3 2 roll limit } [/Domain] bld /applyInterpFunc { 0 1 DimOut 1 sub { dup C0 exch get exch dup C1 exch get exch 3 1 roll 1 index sub 3 index N exp mul add exch currentdict /Range_lo known { dup Range_lo exch get exch Range_hi exch get 3 2 roll limit } { pop } ifelse exch } for pop } [/DimOut /C0 /C1 /N /Range_lo /Range_hi] bld /encodeInput { NumParts 1 sub 0 1 2 index { dup Bounds exch get 2 index gt { exit } { dup 3 index eq { exit } { pop } ifelse } ifelse } for 3 2 roll pop dup Bounds exch get exch dup 1 add Bounds exch get exch 2 mul dup Encode exch get exch 1 add Encode exch get int } [/NumParts /Bounds /Encode] bld /rangeClip { exch dup Range_lo exch get exch Range_hi exch get 3 2 roll limit } [/Range_lo /Range_hi] bld /applyStitchFunc { Functions exch get exec currentdict /Range_lo known { 0 1 DimOut 1 sub { DimOut 1 add -1 roll rangeClip } for } if } [/Functions /Range_lo /DimOut] bld %%EndResource %%BeginResource: procset pdflev2 %%Version: 4.0 5 %%Copyright: Copyright 1987-1999 Adobe Systems Incorporated. All Rights Reserved. %%LanguageLevel: 2 %%Title: PDF operators, with code specific for Level 2 /_defaulthalftone currenthalftone dd /_defaultblackgeneration currentblackgeneration dd /_defaultundercolorremoval currentundercolorremoval dd /_defaultcolortransfer [currentcolortransfer] dd /initialize { _defaulthalftone sethalftone /_defaultblackgeneration load setblackgeneration /_defaultundercolorremoval load setundercolorremoval _defaultcolortransfer aload pop setcolortransfer false setoverprint <> setuserparams } bd /terminate { } bd /m/moveto ld /l/lineto ld /c/curveto ld /setSA/setstrokeadjust ld /defineRes/defineresource ld /findRes/findresource ld currentglobal true systemdict /setglobal get exec [/Function /ExtGState /Form /Shading /FunctionDictionary /MadePattern /PatternPrototype /DataSource] { /Generic /Category findresource dup length dict copy /Category defineresource pop } forall systemdict /setglobal get exec /ri { /findcolorrendering isdefined? { mark exch findcolorrendering counttomark 2 eq { type /booleantype eq { dup type /nametype eq { dup /ColorRendering resourcestatus { pop pop dup /DefaultColorRendering ne { /ColorRendering findresource setcolorrendering } if } if } if } if } if cleartomark } { pop } ifelse } bd /_sfcs {_fcs setcolorspace} bind dd /_sscs {_scs setcolorspace} bind dd /_sfc { _fc aload pop _fp null eq { setcolor } { _fp setpattern } ifelse } bind dd /_ssc { _sc aload pop _sp null eq { setcolor} { _sp setpattern } ifelse } bind dd /scn { dup type /dicttype eq { dup /_fp xdd /PaintType get 1 eq { /_fc _fillColors 0 get dd ilp } { /_fc _fillColors _fcs 1 get GetComps get dd sc } ifelse } { sc } ifelse } bd /SCN { dup type /dicttype eq { dup /_sp xdd /PaintType get 1 eq { /_sc _strokeColors 0 get dd ilp } { /_sc _strokeColors _scs 1 get GetComps get dd SC } ifelse } { SC } ifelse } bd /gs { begin /SA here { setstrokeadjust } if /BG here { setblackgeneration } if /UCR here { setundercolorremoval } if /FL here { i } if /RI here { ri } if /TR here { dup xcheck { settransfer } { aload pop setcolortransfer } ifelse } if /sethalftonephase isdefined? { /HTP here { sethalftonephase } if } if /HT here { sethalftone } if currentdict gsDI end } bd /sfc { _op? setoverprint _lp /fill ne { _sfcs _sfc /_lp /fill dd } if } dd /ssc { _OP? setoverprint _lp /stroke ne { _sscs _ssc /_lp /stroke dd } if } dd /f { { { sfc fill } {gsave sfc fill grestore clip newpath icl ilp} {gsave sfc fill grestore eoclip newpath icl ilp} } _doClip get exec } bd /f* { { { sfc eofill } {gsave sfc eofill grestore clip newpath icl ilp} {gsave sfc eofill grestore eoclip newpath icl ilp} } _doClip get exec } bd /S { { { ssc stroke } {gsave ssc stroke grestore clip newpath icl ilp} {gsave ssc stroke grestore eoclip newpath icl ilp} } _doClip get exec } bd /rf { { { sfc rectfill } {gsave sfc rectfill grestore clip newpath icl ilp} {gsave sfc rectfill grestore eoclip newpath icl ilp} } _doClip get exec } bd /knownColorants? { pop false } bd /makePat { gsave dup /Matrix get concat matrix makepattern grestore /MadePattern defineRes pop } bd %%EndResource %%BeginResource: procset spots %%Version: 4.0 1 %%Copyright: Copyright 1987-1999 Adobe Systems Incorporated. All Rights Reserved. %%Title: Predefined (named) spot functions for PDF 21 dict dup begin /CosineDot { 180 mul cos exch 180 mul cos add 2 div } bd /Cross { abs exch abs 2 copy gt { exch } if pop neg } bd /Diamond { abs exch abs 2 copy add .75 le { dup mul exch dup mul add 1 exch sub } { 2 copy add 1.23 le { .85 mul add 1 exch sub } { 1 sub dup mul exch 1 sub dup mul add 1 sub } ifelse } ifelse } bd /Double { exch 2 div exch 2 { 360 mul sin 2 div exch } repeat add } bd /DoubleDot { 2 { 360 mul sin 2 div exch } repeat add } bd /Ellipse { abs exch abs 2 copy 3 mul exch 4 mul add 3 sub dup 0 lt { pop dup mul exch .75 div dup mul add 4 div 1 exch sub } { dup 1 gt {pop 1 exch sub dup mul exch 1 exch sub .75 div dup mul add 4 div 1 sub } { .5 exch sub exch pop exch pop } ifelse } ifelse } bd /EllipseA { dup mul .9 mul exch dup mul add 1 exch sub } bd /EllipseB { dup 5 mul 8 div mul exch dup mul exch add sqrt 1 exch sub } bd /EllipseC { dup mul exch dup mul .9 mul add 1 exch sub } bd /InvertedDouble { exch 2 div exch 2 { 360 mul sin 2 div exch } repeat add neg } bd /InvertedDoubleDot { 2 { 360 mul sin 2 div exch } repeat add neg } bd /InvertedEllipseA { dup mul .9 mul exch dup mul add 1 sub } bd /InvertedEllipseC { dup mul exch dup mul .9 mul add 1 sub } bd /InvertedSimpleDot { dup mul exch dup mul add 1 sub } bd /Line { exch pop abs neg } bd /LineX { pop } bd /LineY { exch pop } bd /Rhomboid { abs exch abs 0.9 mul add 2 div } bd /Round { abs exch abs 2 copy add 1 le { dup mul exch dup mul add 1 exch sub } { 1 sub dup mul exch 1 sub dup mul add 1 sub } ifelse } bd /SimpleDot { dup mul exch dup mul add 1 exch sub } bd /Square { abs exch abs 2 copy lt { exch } if pop neg } bd end { /Function defineRes pop } forall %%EndResource %%BeginResource: procset pdftext %%Version: 4.0 2 %%Copyright: Copyright 1987-1998 Adobe Systems Incorporated. All Rights Reserved. %%Title: Text operators for PDF PDF /PDFText 75 dict dup begin put /docinitialize { /resourcestatus where { pop /CIDParams /ProcSet resourcestatus { pop pop false /CIDParams /ProcSet findresource /SetBuildCompatible get exec } if } if PDF begin PDFText /_pdfDefineIdentity-H known { PDFText /_pdfDefineIdentity-H get exec} if end } bd /initialize { PDFText begin /_intT false dd 0 Tr } bd /terminate { end } bd /_safeput { Level2? not { 2 index load dup dup length exch maxlength ge { dup length 5 add dict copy 3 index xdd } { pop } ifelse } if 3 -1 roll load 3 1 roll put } bd /pdf_has_composefont? systemdict /composefont known def /CopyFont { { 1 index /FID ne 2 index /UniqueID ne and { def } { pop pop } ifelse } forall } bd /Type0CopyFont { exch dup length dict begin CopyFont [ exch FDepVector { dup /FontType get 0 eq { 1 index Type0CopyFont /_pdfType0 exch definefont } { /_pdfBaseFont exch 2 index exec } ifelse exch } forall pop ] /FDepVector exch def currentdict end } bd /cHexEncoding [/c00/c01/c02/c03/c04/c05/c06/c07/c08/c09/c0A/c0B/c0C/c0D/c0E/c0F/c10/c11/c12 /c13/c14/c15/c16/c17/c18/c19/c1A/c1B/c1C/c1D/c1E/c1F/c20/c21/c22/c23/c24/c25 /c26/c27/c28/c29/c2A/c2B/c2C/c2D/c2E/c2F/c30/c31/c32/c33/c34/c35/c36/c37/c38 /c39/c3A/c3B/c3C/c3D/c3E/c3F/c40/c41/c42/c43/c44/c45/c46/c47/c48/c49/c4A/c4B /c4C/c4D/c4E/c4F/c50/c51/c52/c53/c54/c55/c56/c57/c58/c59/c5A/c5B/c5C/c5D/c5E /c5F/c60/c61/c62/c63/c64/c65/c66/c67/c68/c69/c6A/c6B/c6C/c6D/c6E/c6F/c70/c71 /c72/c73/c74/c75/c76/c77/c78/c79/c7A/c7B/c7C/c7D/c7E/c7F/c80/c81/c82/c83/c84 /c85/c86/c87/c88/c89/c8A/c8B/c8C/c8D/c8E/c8F/c90/c91/c92/c93/c94/c95/c96/c97 /c98/c99/c9A/c9B/c9C/c9D/c9E/c9F/cA0/cA1/cA2/cA3/cA4/cA5/cA6/cA7/cA8/cA9/cAA /cAB/cAC/cAD/cAE/cAF/cB0/cB1/cB2/cB3/cB4/cB5/cB6/cB7/cB8/cB9/cBA/cBB/cBC/cBD /cBE/cBF/cC0/cC1/cC2/cC3/cC4/cC5/cC6/cC7/cC8/cC9/cCA/cCB/cCC/cCD/cCE/cCF/cD0 /cD1/cD2/cD3/cD4/cD5/cD6/cD7/cD8/cD9/cDA/cDB/cDC/cDD/cDE/cDF/cE0/cE1/cE2/cE3 /cE4/cE5/cE6/cE7/cE8/cE9/cEA/cEB/cEC/cED/cEE/cEF/cF0/cF1/cF2/cF3/cF4/cF5/cF6 /cF7/cF8/cF9/cFA/cFB/cFC/cFD/cFE/cFF] def /modEnc { /_enc xdd /_icode 0 dd counttomark 1 sub -1 0 { index dup type /nametype eq { _enc _icode 3 -1 roll put _icode 1 add } if /_icode xdd } for cleartomark _enc } bd /trEnc { /_enc xdd 255 -1 0 { exch dup -1 eq { pop /.notdef } { Encoding exch get } ifelse _enc 3 1 roll put } for pop _enc } bd /TE { /_i xdd StandardEncoding 256 array copy modEnc _pdfEncodings exch _i exch put } bd /TZ { /_usePDFEncoding xdd findfont dup length 6 add dict begin { 1 index /FID ne { def } { pop pop } ifelse } forall /pdf_origFontName FontName def /FontName exch def _usePDFEncoding 0 ge { /Encoding _pdfEncodings _usePDFEncoding get def pop } { _usePDFEncoding -1 eq { counttomark 0 eq { pop } { Encoding 256 array copy modEnc /Encoding exch def } ifelse } { 256 array trEnc /Encoding exch def } ifelse } ifelse pdf_EuroProcSet pdf_origFontName known { pdf_origFontName pdf_AddEuroGlyphProc } if FontName currentdict end definefont pop } bd /Level2? systemdict /languagelevel known {systemdict /languagelevel get 2 ge} {false} ifelse def Level2? { /_pdfFontStatus { currentglobal exch /Font resourcestatus {pop pop true} {false} ifelse exch setglobal } bd } { /_pdfFontStatusString 50 string def _pdfFontStatusString 0 (fonts/) putinterval /_pdfFontStatus { FontDirectory 1 index known { pop true } { _pdfFontStatusString 6 42 getinterval cvs length 6 add _pdfFontStatusString exch 0 exch getinterval { status } stopped {pop false} { { pop pop pop pop true} { false } ifelse } ifelse } ifelse } bd } ifelse Level2? { /_pdfCIDFontStatus { /CIDFont /Category resourcestatus { pop pop /CIDFont resourcestatus {pop pop true} {false} ifelse } { pop false } ifelse } bd } if /_pdfString100 100 string def /_pdfComposeFontName { dup length 1 eq { 0 get 1 index type /nametype eq { _pdfString100 cvs length dup dup _pdfString100 exch (-) putinterval _pdfString100 exch 1 add dup _pdfString100 length exch sub getinterval 2 index exch cvs length add 1 add _pdfString100 exch 0 exch getinterval exch pop true } { pop pop false } ifelse } { false } ifelse dup {exch cvn exch} if } bd /_pdfConcatNames { exch _pdfString100 cvs length dup dup _pdfString100 exch (-) putinterval _pdfString100 exch 1 add dup _pdfString100 length exch sub getinterval 3 -1 roll exch cvs length add 1 add _pdfString100 exch 0 exch getinterval cvn } bind def /_pdfTextTempString 50 string def /_pdfRegOrderingArray [(Adobe-Japan1) (Adobe-CNS1) (Adobe-Korea1) (Adobe-GB1)] def /_pdf_CheckSupplements { 1 index _pdfTextTempString cvs false _pdfRegOrderingArray { 2 index exch anchorsearch { pop pop pop true exit} { pop } ifelse } forall exch pop { /CIDFont findresource /CIDSystemInfo get /Supplement get exch /CMap findresource /CIDSystemInfo get dup type /dicttype eq {/Supplement get} {pop 0 } ifelse ge } { pop pop true } ifelse } bind def pdf_has_composefont? { /_pdfComposeFont { 2 copy _pdfComposeFontName not { 2 index } if (pdf) exch _pdfConcatNames dup _pdfFontStatus { dup findfont 5 2 roll pop pop pop true} { 4 1 roll 1 index /CMap resourcestatus { pop pop true } {false} ifelse 1 index true exch { _pdfCIDFontStatus not {pop false exit} if } forall and { 1 index 1 index 0 get _pdf_CheckSupplements { 3 -1 roll pop 2 index 3 1 roll composefont true } { pop pop exch pop false } ifelse } { _pdfComposeFontName { dup _pdfFontStatus { exch pop 1 index exch findfont definefont true } { pop exch pop false } ifelse } { exch pop false } ifelse } ifelse { true } { dup _pdfFontStatus { dup findfont true } { pop false } ifelse } ifelse } ifelse } bd } { /_pdfComposeFont { _pdfComposeFontName not { dup } if dup _pdfFontStatus {exch pop dup findfont true} { 1 index dup type /nametype eq {pop} {cvn} ifelse eq {pop false} { dup _pdfFontStatus {dup findfont true} {pop false} ifelse } ifelse } ifelse } bd } ifelse /_pdfStyleDicts 4 dict dup begin /Adobe-Japan1 4 dict dup begin Level2? { /Serif /HeiseiMin-W3-83pv-RKSJ-H _pdfFontStatus {/HeiseiMin-W3} { /HeiseiMin-W3 _pdfCIDFontStatus {/HeiseiMin-W3} {/Ryumin-Light} ifelse } ifelse def /SansSerif /HeiseiKakuGo-W5-83pv-RKSJ-H _pdfFontStatus {/HeiseiKakuGo-W5} { /HeiseiKakuGo-W5 _pdfCIDFontStatus {/HeiseiKakuGo-W5} {/GothicBBB-Medium} ifelse } ifelse def /HeiseiMaruGo-W4-83pv-RKSJ-H _pdfFontStatus {/HeiseiMaruGo-W4} { /HeiseiMaruGo-W4 _pdfCIDFontStatus {/HeiseiMaruGo-W4} { /Jun101-Light-RKSJ-H _pdfFontStatus { /Jun101-Light } { SansSerif } ifelse } ifelse } ifelse /RoundSansSerif exch def /Default Serif def } { /Serif /Ryumin-Light def /SansSerif /GothicBBB-Medium def { (fonts/Jun101-Light-83pv-RKSJ-H) status }stopped {pop}{ { pop pop pop pop /Jun101-Light } { SansSerif } ifelse /RoundSansSerif exch def }ifelse /Default Serif def } ifelse end def /Adobe-Korea1 4 dict dup begin /Serif /HYSMyeongJo-Medium def /SansSerif /HYGoThic-Medium def /RoundSansSerif SansSerif def /Default Serif def end def /Adobe-GB1 4 dict dup begin /Serif /STSong-Light def /SansSerif /STHeiti-Regular def /RoundSansSerif SansSerif def /Default Serif def end def /Adobe-CNS1 4 dict dup begin /Serif /MKai-Medium def /SansSerif /MHei-Medium def /RoundSansSerif SansSerif def /Default Serif def end def end def /TZzero { /_fyAdj xdd /_wmode xdd /_styleArr xdd /_regOrdering xdd 3 copy _pdfComposeFont { 5 2 roll pop pop pop } { [ 0 1 _styleArr length 1 sub { _styleArr exch get _pdfStyleDicts _regOrdering 2 copy known { get exch 2 copy known not { pop /Default } if get } { pop pop pop /Unknown } ifelse } for ] exch pop 2 index 3 1 roll _pdfComposeFont {3 -1 roll pop} { findfont dup /FontName get exch } ifelse } ifelse dup /WMode 2 copy known { get _wmode ne } { pop pop _wmode 1 eq} ifelse _fyAdj 0 ne or { exch _wmode _pdfConcatNames _fyAdj _pdfConcatNames dup _pdfFontStatus { exch pop dup findfont false} { exch true } ifelse } { dup /FontType get 0 ne } ifelse { dup /FontType get 3 eq _wmode 1 eq and { _pdfVerticalRomanT3Font dup length 10 add dict copy begin /_basefont exch dup length 3 add dict begin {1 index /FID ne {def}{pop pop} ifelse } forall /Encoding Encoding dup length array copy dup 16#27 /quotesingle put dup 16#60 /grave put _regOrdering /Adobe-Japan1 eq {dup 16#5c /yen put dup 16#a5 /yen put dup 16#b4 /yen put} if def FontName currentdict end definefont def /Encoding _basefont /Encoding get def /_fauxfont true def } { dup length 3 add dict begin {1 index /FID ne {def}{pop pop} ifelse } forall FontType 0 ne { /Encoding Encoding dup length array copy dup 16#27 /quotesingle put dup 16#60 /grave put _regOrdering /Adobe-Japan1 eq {dup 16#5c /yen put} if def /_fauxfont true def } if } ifelse /WMode _wmode def /BaseLineAdj _fyAdj def dup dup /FontName exch def currentdict end definefont pop } { pop } ifelse /_pdf_FontDirectory 3 1 roll _safeput } bd /swj { dup 4 1 roll dup length exch stringwidth exch 5 -1 roll 3 index mul add 4 1 roll 3 1 roll mul add 6 2 roll /_cnt 0 dd {1 index eq {/_cnt _cnt 1 add dd} if} forall pop exch _cnt mul exch _cnt mul 2 index add 4 1 roll 2 index add 4 1 roll pop pop } bd /jss { 4 1 roll { pop pop (0) exch 2 copy 0 exch put gsave exch false charpath currentpoint 5 index setmatrix stroke 3 -1 roll 32 eq { moveto 5 index 5 index rmoveto currentpoint } if grestore moveto 2 copy rmoveto } exch cshow 6 {pop} repeat } def /jsfTzero { { pop pop (0) exch 2 copy 0 exch put exch show 32 eq { 4 index 4 index rmoveto } if 2 copy rmoveto } exch cshow 5 {pop} repeat } def /jsp { { pop pop (0) exch 2 copy 0 exch put 32 eq dup {currentfont /Encoding get dup length 33 ge {32 get /space eq and}{pop}ifelse }if { exch 5 index 5 index 5 index 5 -1 roll widthshow } { false charpath } ifelse 2 copy rmoveto } exch cshow 5 {pop} repeat } bd /trj { _cx 0 fWModeProc 32 _ax 0 fWModeProc 6 5 roll } bd /pjsf { trj sfc fawidthshowProc } bd /pjss { trj _ctm ssc jss } bd /pjsc { trj jsp } bd /_Tjdef [ /pjsf load /pjss load { dup currentpoint 3 2 roll pjsf newpath moveto pjss } bind { trj swj rmoveto } bind { dup currentpoint 4 2 roll gsave pjsf grestore 3 1 roll moveto pjsc } bind { dup currentpoint 4 2 roll currentpoint gsave newpath moveto pjss grestore 3 1 roll moveto pjsc } bind { dup currentpoint 4 2 roll gsave dup currentpoint 3 2 roll pjsf newpath moveto pjss grestore 3 1 roll moveto pjsc } bind /pjsc load ] def /BT { /_inT true dd _ctm currentmatrix pop matrix _tm copy pop 0 _rise _baselineadj add translate _hs 1 scale 0 0 moveto } bd /ET { /_inT false dd _tr 3 gt {clip} if _ctm setmatrix newpath } bd /Tr { _inT { _tr 3 le {currentpoint newpath moveto} if } if dup /_tr xdd _Tjdef exch get /_Tj xdd } bd /Tj { userdict /$$copystring 2 index put _Tj } bd /iTm { _ctm setmatrix _tm concat 0 _rise _baselineadj add translate _hs 1 scale } bd /Tm { _tm astore pop iTm 0 0 moveto } bd /Td { _mtx translate _tm _tm concatmatrix pop iTm 0 0 moveto } bd /TD { dup /_ld xdd Td } bd /_nullProc {} bd /Tf { dup 1000 div /_fScl xdd _pdf_FontDirectory 2 index 2 copy known {get exch 3 -1 roll pop} {pop pop} ifelse Level2? { selectfont } { exch findfont exch scalefont setfont} ifelse currentfont dup /_nullProc exch /WMode known { 1 index /WMode get 1 eq {pop /exch} if } if load /fWModeProc xdd dup /FontType get 0 eq dup _cx 0 ne and { /jsfTzero } { /awidthshow } ifelse load /fawidthshowProc xdd /_fTzero xdd dup /BaseLineAdj known { dup /BaseLineAdj get _fScl mul } { 0 } ifelse /_baselineadj xdd dup /_pdfT3Font known { 0 } {_tr} ifelse _Tjdef exch get /_Tj xdd _intT {currentpoint iTm moveto} if pop } bd /TL { neg /_ld xdd } bd /Tw { /_cx xdd _cx 0 ne _fTzero and { /jsfTzero } { /awidthshow } ifelse load /fawidthshowProc xdd } bd /Tc { /_ax xdd } bd /Ts { /_rise xdd currentpoint iTm moveto } bd /Tz { 100 div /_hs xdd iTm } bd /Tk { exch pop _fScl mul neg 0 fWModeProc rmoveto } bd /T* { 0 _ld Td } bd /' { T* Tj } bd /" { exch Tc exch Tw ' } bd /TJ { { dup type /stringtype eq { Tj } { 0 exch Tk } ifelse } forall } bd /T- { _hy Tj } bd /d0/setcharwidth ld /d1 { setcachedevice /sfc{}dd /ssc{}dd } bd /nND {{/.notdef} repeat} bd /T3Defs { /BuildChar { 1 index /Encoding get exch get 1 index /BuildGlyph get exec } def /BuildGlyph { exch begin GlyphProcs exch get exec end } def /_pdfT3Font true def } bd /_pdfBoldRomanWidthProc { stringwidth 1 index 0 ne { exch .03 add exch }if setcharwidth 0 0 } bd /_pdfType0WidthProc { dup stringwidth 0 0 moveto 2 index true charpath pathbbox 0 -1 7 index 2 div .88 setcachedevice2 pop 0 0 } bd /_pdfType0WMode1WidthProc { dup stringwidth pop 2 div neg -0.88 2 copy moveto 0 -1 5 -1 roll true charpath pathbbox setcachedevice } bd /_pdfBoldBaseFont 11 dict begin /FontType 3 def /FontMatrix[1 0 0 1 0 0]def /FontBBox[0 0 1 1]def /Encoding cHexEncoding def /_setwidthProc /_pdfBoldRomanWidthProc load def /_bcstr1 1 string def /BuildChar { exch begin _basefont setfont _bcstr1 dup 0 4 -1 roll put dup _setwidthProc 3 copy moveto show _basefonto setfont moveto show end }bd currentdict end def pdf_has_composefont? { /_pdfBoldBaseCIDFont 11 dict begin /CIDFontType 1 def /CIDFontName /_pdfBoldBaseCIDFont def /FontMatrix[1 0 0 1 0 0]def /FontBBox[0 0 1 1]def /_setwidthProc /_pdfType0WidthProc load def /_bcstr2 2 string def /BuildGlyph { exch begin _basefont setfont _bcstr2 1 2 index 256 mod put _bcstr2 0 3 -1 roll 256 idiv put _bcstr2 dup _setwidthProc 3 copy moveto show _basefonto setfont moveto show end }bd currentdict end def /_pdfDefineIdentity-H { /Identity-H /CMap resourcestatus { pop pop } { /CIDInit/ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo 3 dict begin /Registry (Adobe) def /Ordering (Identity) def /Supplement 0 def currentdict end def /CMapName /Identity-H def /CMapVersion 1 def /CMapType 1 def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000> 0 endcidrange endcmap CMapName currentdict/CMap defineresource pop end end } ifelse } def } if /_pdfVerticalRomanT3Font 10 dict begin /FontType 3 def /FontMatrix[1 0 0 1 0 0]def /FontBBox[0 0 1 1]def /_bcstr1 1 string def /BuildChar { exch begin _basefont setfont _bcstr1 dup 0 4 -1 roll put dup _pdfType0WidthProc moveto show end }bd currentdict end def /MakeBoldFont { dup /ct_SyntheticBold known { dup length 3 add dict begin CopyFont /ct_StrokeWidth .03 0 FontMatrix idtransform pop def /ct_SyntheticBold true def currentdict end definefont } { dup dup length 3 add dict begin CopyFont /PaintType 2 def /StrokeWidth .03 0 FontMatrix idtransform pop def /dummybold currentdict end definefont dup /FontType get dup 9 ge exch 11 le and { _pdfBoldBaseCIDFont dup length 3 add dict copy begin dup /CIDSystemInfo get /CIDSystemInfo exch def /_Type0Identity /Identity-H 3 -1 roll [ exch ] composefont /_basefont exch def /_Type0Identity /Identity-H 3 -1 roll [ exch ] composefont /_basefonto exch def currentdict end /CIDFont defineresource } { _pdfBoldBaseFont dup length 3 add dict copy begin /_basefont exch def /_basefonto exch def currentdict end definefont } ifelse } ifelse } bd /MakeBold { 1 index _pdf_FontDirectory 2 index 2 copy known {get} {exch pop} ifelse findfont dup /FontType get 0 eq { dup /WMode known {dup /WMode get 1 eq }{false} ifelse version length 4 ge and {version 0 4 getinterval cvi 2015 ge } {true} ifelse {/_pdfType0WidthProc} {/_pdfType0WMode1WidthProc} ifelse _pdfBoldBaseFont /_setwidthProc 3 -1 roll load put {MakeBoldFont} Type0CopyFont definefont } { dup /_fauxfont known not 1 index /SubstMaster known not and { _pdfBoldBaseFont /_setwidthProc /_pdfBoldRomanWidthProc load put MakeBoldFont } { 2 index 2 index eq { exch pop } { dup length dict begin CopyFont currentdict end definefont } ifelse } ifelse } ifelse pop pop dup /dummybold ne {/_pdf_FontDirectory exch dup _safeput } { pop } ifelse }bd /MakeItalic { _pdf_FontDirectory exch 2 copy known {get} {exch pop} ifelse dup findfont dup /FontInfo 2 copy known { get /ItalicAngle 2 copy known {get 0 eq } { pop pop true} ifelse } { pop pop true} ifelse { exch pop dup /FontType get 0 eq Level2? not and { dup /FMapType get 6 eq } { false } ifelse { dup /WMode 2 copy known { get 1 eq { _italMtx_WMode1Type0 } { _italMtxType0 } ifelse } { pop pop _italMtxType0 } ifelse } { dup /WMode 2 copy known { get 1 eq { _italMtx_WMode1 } { _italMtx } ifelse } { pop pop _italMtx } ifelse } ifelse makefont dup /FontType get 42 eq Level2? not or { dup length dict begin CopyFont currentdict end } if 1 index exch definefont pop /_pdf_FontDirectory exch dup _safeput } { pop 2 copy ne { /_pdf_FontDirectory 3 1 roll _safeput } { pop pop } ifelse } ifelse }bd /MakeBoldItalic { /dummybold exch MakeBold /dummybold MakeItalic }bd Level2? { /pdf_CopyDict {1 index length add dict copy} def } { /pdf_CopyDict { 1 index length add dict 1 index wcheck { copy } { begin {def} forall currentdict end } ifelse } def } ifelse /pdf_AddEuroGlyphProc { currentdict /CharStrings known { CharStrings /Euro known not { dup /CharStrings CharStrings 1 pdf_CopyDict begin /Euro pdf_EuroProcSet 4 -1 roll get def currentdict end def /pdf_PSBuildGlyph /pdf_PSBuildGlyph load def /pdf_PathOps /pdf_PathOps load def /Symbol eq { /Encoding Encoding dup length array copy dup 160 /Euro put def } if } { pop } ifelse } { pop } ifelse } def /pdf_PathOps 4 dict dup begin /m {moveto} def /l {lineto} def /c {curveto} def /cp {closepath} def end def /pdf_PSBuildGlyph { gsave 8 -1 roll pop 7 1 roll currentdict /PaintType 2 copy known {get 2 eq}{pop pop false} ifelse dup 9 1 roll { currentdict /StrokeWidth 2 copy known { get 2 div 5 1 roll 4 -1 roll 4 index sub 4 1 roll 3 -1 roll 4 index sub 3 1 roll exch 4 index add exch 4 index add 5 -1 roll pop } { pop pop } ifelse } if setcachedevice pdf_PathOps begin exec end { currentdict /StrokeWidth 2 copy known { get } { pop pop 0 } ifelse setlinewidth stroke } { fill } ifelse grestore } def /pdf_EuroProcSet 13 dict def pdf_EuroProcSet begin /Courier-Bold { 600 0 6 -12 585 612 { 385 274 m 180 274 l 179 283 179 293 179 303 c 179 310 179 316 180 323 c 398 323 l 423 404 l 197 404 l 219 477 273 520 357 520 c 409 520 466 490 487 454 c 487 389 l 579 389 l 579 612 l 487 612 l 487 560 l 449 595 394 612 349 612 c 222 612 130 529 98 404 c 31 404 l 6 323 l 86 323 l 86 304 l 86 294 86 284 87 274 c 31 274 l 6 193 l 99 193 l 129 77 211 -12 359 -12 c 398 -12 509 8 585 77 c 529 145 l 497 123 436 80 356 80 c 285 80 227 122 198 193 c 360 193 l cp 600 0 m } pdf_PSBuildGlyph } def /Courier-BoldOblique /Courier-Bold load def /Courier { 600 0 17 -12 578 584 { 17 204 m 97 204 l 126 81 214 -12 361 -12 c 440 -12 517 17 578 62 c 554 109 l 501 70 434 43 366 43 c 266 43 184 101 154 204 c 380 204 l 400 259 l 144 259 l 144 270 143 281 143 292 c 143 299 143 307 144 314 c 418 314 l 438 369 l 153 369 l 177 464 249 529 345 529 c 415 529 484 503 522 463 c 522 391 l 576 391 l 576 584 l 522 584 l 522 531 l 473 566 420 584 348 584 c 216 584 122 490 95 369 c 37 369 l 17 314 l 87 314 l 87 297 l 87 284 88 272 89 259 c 37 259 l cp 600 0 m } pdf_PSBuildGlyph } def /Courier-Oblique /Courier load def /Helvetica { 556 0 24 -19 541 703 { 541 628 m 510 669 442 703 354 703 c 201 703 117 607 101 444 c 50 444 l 25 372 l 97 372 l 97 301 l 49 301 l 24 229 l 103 229 l 124 67 209 -19 350 -19 c 435 -19 501 25 509 32 c 509 131 l 492 105 417 60 343 60 c 267 60 204 127 197 229 c 406 229 l 430 301 l 191 301 l 191 372 l 455 372 l 479 444 l 194 444 l 201 531 245 624 348 624 c 433 624 484 583 509 534 c cp 556 0 m } pdf_PSBuildGlyph } def /Helvetica-Oblique /Helvetica load def /Helvetica-Bold { 556 0 12 -19 563 710 { 563 621 m 537 659 463 710 363 710 c 216 710 125 620 101 462 c 51 462 l 12 367 l 92 367 l 92 346 l 92 337 93 328 93 319 c 52 319 l 12 224 l 102 224 l 131 58 228 -19 363 -19 c 417 -19 471 -12 517 18 c 517 146 l 481 115 426 93 363 93 c 283 93 254 166 246 224 c 398 224 l 438 319 l 236 319 l 236 367 l 457 367 l 497 462 l 244 462 l 259 552 298 598 363 598 c 425 598 464 570 486 547 c 507 526 513 517 517 509 c cp 556 0 m } pdf_PSBuildGlyph } def /Helvetica-BoldOblique /Helvetica-Bold load def /Symbol { 750 0 20 -12 714 685 { 714 581 m 650 645 560 685 465 685 c 304 685 165 580 128 432 c 50 432 l 20 369 l 116 369 l 115 356 115 347 115 337 c 115 328 115 319 116 306 c 50 306 l 20 243 l 128 243 l 165 97 300 -12 465 -12 c 560 -12 635 25 685 65 c 685 155 l 633 91 551 51 465 51 c 340 51 238 131 199 243 c 555 243 l 585 306 l 184 306 l 183 317 182 326 182 336 c 182 346 183 356 184 369 c 614 369 l 644 432 l 199 432 l 233 540 340 622 465 622 c 555 622 636 580 685 520 c cp 750 0 m } pdf_PSBuildGlyph } def /Times-Bold { 500 0 16 -14 478 700 { 367 308 m 224 308 l 224 368 l 375 368 l 380 414 l 225 414 l 230 589 257 653 315 653 c 402 653 431 521 444 457 c 473 457 l 473 698 l 444 697 l 441 679 437 662 418 662 c 393 662 365 700 310 700 c 211 700 97 597 73 414 c 21 414 l 16 368 l 69 368 l 69 359 68 350 68 341 c 68 330 68 319 69 308 c 21 308 l 16 262 l 73 262 l 91 119 161 -14 301 -14 c 380 -14 443 50 478 116 c 448 136 l 415 84 382 40 323 40 c 262 40 231 77 225 262 c 362 262 l cp 500 0 m } pdf_PSBuildGlyph } def /Times-BoldItalic { 500 0 9 -20 542 686 { 542 686 m 518 686 l 513 673 507 660 495 660 c 475 660 457 683 384 683 c 285 683 170 584 122 430 c 58 430 l 34 369 l 105 369 l 101 354 92 328 90 312 c 34 312 l 9 251 l 86 251 l 85 238 84 223 84 207 c 84 112 117 -14 272 -14 c 326 -14 349 9 381 9 c 393 9 393 -10 394 -20 c 420 -20 l 461 148 l 429 148 l 416 109 362 15 292 15 c 227 15 197 55 197 128 c 197 162 204 203 216 251 c 378 251 l 402 312 l 227 312 l 229 325 236 356 241 369 c 425 369 l 450 430 l 255 430 l 257 435 264 458 274 488 c 298 561 337 654 394 654 c 437 654 484 621 484 530 c 484 516 l 516 516 l cp 500 0 m } pdf_PSBuildGlyph } def /Times-Italic { 500 0 23 -10 595 692 { 399 317 m 196 317 l 199 340 203 363 209 386 c 429 386 l 444 424 l 219 424 l 246 514 307 648 418 648 c 448 648 471 638 492 616 c 529 576 524 529 527 479 c 549 475 l 595 687 l 570 687 l 562 674 558 664 542 664 c 518 664 474 692 423 692 c 275 692 162 551 116 424 c 67 424 l 53 386 l 104 386 l 98 363 93 340 90 317 c 37 317 l 23 279 l 86 279 l 85 266 85 253 85 240 c 85 118 137 -10 277 -10 c 370 -10 436 58 488 128 c 466 149 l 424 101 375 48 307 48 c 212 48 190 160 190 234 c 190 249 191 264 192 279 c 384 279 l cp 500 0 m } pdf_PSBuildGlyph } def /Times-Roman { 500 0 10 -12 484 692 { 347 298 m 171 298 l 170 310 170 322 170 335 c 170 362 l 362 362 l 374 403 l 172 403 l 184 580 244 642 308 642 c 380 642 434 574 457 457 c 481 462 l 474 691 l 449 691 l 433 670 429 657 410 657 c 394 657 360 692 299 692 c 204 692 94 604 73 403 c 22 403 l 10 362 l 70 362 l 69 352 69 341 69 330 c 69 319 69 308 70 298 c 22 298 l 10 257 l 73 257 l 97 57 216 -12 295 -12 c 364 -12 427 25 484 123 c 458 142 l 425 101 384 37 316 37 c 256 37 189 84 173 257 c 335 257 l cp 500 0 m } pdf_PSBuildGlyph } def end currentdict readonly pop end %%EndResource PDFText begin [39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis /Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute /egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde /oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex /udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls /registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash /.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef /.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash /questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef /guillemotleft/guillemotright/ellipsis/space/Agrave/Atilde/Otilde/OE/oe /endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide /.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright /fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand /Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex /Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex /Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla /hungarumlaut/ogonek/caron 0 TE [1/dotlessi/caron 39/quotesingle 96/grave 127/bullet/Euro/bullet/quotesinglbase/florin/quotedblbase/ellipsis /dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE /bullet/Zcaron/bullet/bullet/quoteleft/quoteright/quotedblleft /quotedblright/bullet/endash/emdash/tilde/trademark/scaron /guilsinglright/oe/bullet/zcaron/Ydieresis/space/exclamdown/cent/sterling /currency/yen/brokenbar/section/dieresis/copyright/ordfeminine /guillemotleft/logicalnot/hyphen/registered/macron/degree/plusminus /twosuperior/threesuperior/acute/mu/paragraph/periodcentered/cedilla /onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters /questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla /Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis /Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash /Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave /aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute /ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde /ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute /ucircumflex/udieresis/yacute/thorn/ydieresis 1 TE end %%BeginResource: pdfimage.prc %%Copyright: Copyright 1987-1993 Adobe Systems Incorporated. All Rights Reserved. PDF /PDFImage 38 dict put PDF /PDFIVars 20 dict put PDF /PDFImage get begin /initialize { PDFImage begin } bd /terminate { end } bd /nulldict 0 dict def /gv { PDFIVars exch get } bd /pv { PDFIVars 3 1 roll put } bd /BI { save /savelevel exch pv mark } bd /EI { /savelevel gv restore } bd end %%EndResource %%BeginResource: pdfimg2.prc %%Version: 4.0 4 %%Copyright: Copyright 1987-1993 Adobe Systems Incorporated. All Rights Reserved. PDF /PDFImage get begin Level2? StartLoad { /ID { 5 counttomark 2 idiv dup 3 1 roll add dict begin { def } repeat cleartomark currentdict end begin /ImageType here { pop } { /ImageType 1 def } ifelse /ImageMatrix [ Width 0 0 Height neg 0 Height ] def /ImageMask here { not } { true } ifelse { /ImageMask false def } if ImageMask not { ColorSpace setcolorspace } if /Intent here { ri } if SLBApplies? { ApplySLB } { mark /DataSource here { } { currentfile } ifelse /Filter here { dup type /arraytype eq { length } { pop 1 } ifelse 1 sub 0 1 3 -1 roll { /DecodeParms here { dup type /arraytype eq { 1 index get } if dup null eq { pop } { exch } ifelse } if Filter dup type /arraytype eq { exch get } { exch pop } ifelse filter dup } for } if /DataSource exch def currentdict /ImageMask here not {false} if { sfc imagemask } { image } ifelse counttomark { dup status dup currentfile ne and { dup flushfile closefile } { pop } ifelse } repeat pop }ifelse end } [/Width /Height /ImageMask /ColorSpace /Filter] bld /SLBApplies? { { languagelevel 3 lt {stop} if currentsystemparams /SourceListBypass known not {stop} if currentsystemparams /SourceListBypass get not {stop} if currentdict /Filter known not {stop} if Filter /CCITTFaxDecode ne {stop} if currentdict /DecodeParms known not {stop} if DecodeParms /K known not {stop} if DecodeParms /K get -1 ne {stop} if } stopped not } [/DecodeParms] bld /ApplySLB { { /UncompressedLength Width DecodeParms /EncodedByteAlign getifknown { { 7 add 3 bitshift } if } if Height mul def /DataSource dup here { } {currentfile} ifelse 5 dict begin /Filter Filter def /DecodeParms DecodeParms def /Intent 3 def /AsyncRead false def /CloseSource false def currentdict end /ReusableStreamDecode filter def currentdict /ImageMask here not {false} if { sfc imagemask } { image } ifelse } exec } [/Width /DecodeParms /Height] bld currentdict readonly pop } EndLoad end %%EndResource currentdict readonly pop end end /currentpacking where {pop setpacking}if PDFVars/DocInitAll{[ PDFText]{/docinitialize get exec}forall }put PDFVars/InitAll{[PDF PDFText PDFImage]{/initialize get exec}forall initgs}put PDFVars/TermAll{[PDFImage PDFText PDF]{/terminate get exec}forall}put PDFVars begin PDF begin PDFVars/DocInitAll get exec PDFVars/InitAll get exec %%IncludeResource Times-Roman [ 0 /.notdef/dotaccent/fi/fl/fraction/hungarumlaut /Lslash/lslash/ogonek/ring/.notdef/breve /minus/.notdef/Zcaron/zcaron/caron/dotlessi /dotlessj/ff/ffi/ffl/.notdef 30 /grave /quotesingle/space/exclam/quotedbl/numbersign/dollar /percent/ampersand/quoteright/parenleft/parenright/asterisk /plus/comma/hyphen/period/slash/zero /one/two/three/four/five/six /seven/eight/nine/colon/semicolon/less /equal/greater/question/at/A/B /C/D/E/F/G/H /I/J/K/L/M/N /O/P/Q/R/S/T /U/V/W/X/Y/Z /bracketleft/backslash/bracketright/asciicircum/underscore/quoteleft /a/b/c/d/e/f /g/h/i/j/k/l /m/n/o/p/q/r /s/t/u/v/w/x /y/z/braceleft/bar/braceright/asciitilde /.notdef/.notdef/.notdef/quotesinglbase/florin/quotedblbase /ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron /guilsinglleft/OE/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/quotedblleft/quotedblright/bullet/endash /emdash/tilde/trademark/scaron/guilsinglright/oe /.notdef/.notdef/Ydieresis/.notdef/exclamdown/cent /sterling/currency/yen/brokenbar/section/dieresis /copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered /macron/degree/plusminus/twosuperior/threesuperior/acute /mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine /guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave /Aacute/Acircumflex/Atilde/Adieresis/Aring/AE /Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave /Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve /Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash /Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn /germandbls/agrave/aacute/acircumflex/atilde/adieresis /aring/ae/ccedilla/egrave/eacute/ecircumflex /edieresis/igrave/iacute/icircumflex/idieresis/eth /ntilde/ograve/oacute/ocircumflex/otilde/odieresis /divide/oslash/ugrave/uacute/ucircumflex/udieresis /yacute/thorn/ydieresis /N81/Times-Roman -1 TZ %%IncludeResource Times-Bold [ 0 /.notdef/dotaccent/fi/fl/fraction/hungarumlaut /Lslash/lslash/ogonek/ring/.notdef/breve /minus/.notdef/Zcaron/zcaron/caron/dotlessi /dotlessj/ff/ffi/ffl/.notdef 30 /grave /quotesingle/space/exclam/quotedbl/numbersign/dollar /percent/ampersand/quoteright/parenleft/parenright/asterisk /plus/comma/hyphen/period/slash/zero /one/two/three/four/five/six /seven/eight/nine/colon/semicolon/less /equal/greater/question/at/A/B /C/D/E/F/G/H /I/J/K/L/M/N /O/P/Q/R/S/T /U/V/W/X/Y/Z /bracketleft/backslash/bracketright/asciicircum/underscore/quoteleft /a/b/c/d/e/f /g/h/i/j/k/l /m/n/o/p/q/r /s/t/u/v/w/x /y/z/braceleft/bar/braceright/asciitilde /.notdef/.notdef/.notdef/quotesinglbase/florin/quotedblbase /ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron /guilsinglleft/OE/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/quotedblleft/quotedblright/bullet/endash /emdash/tilde/trademark/scaron/guilsinglright/oe /.notdef/.notdef/Ydieresis/.notdef/exclamdown/cent /sterling/currency/yen/brokenbar/section/dieresis /copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered /macron/degree/plusminus/twosuperior/threesuperior/acute /mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine /guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave /Aacute/Acircumflex/Atilde/Adieresis/Aring/AE /Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave /Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve /Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash /Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn /germandbls/agrave/aacute/acircumflex/atilde/adieresis /aring/ae/ccedilla/egrave/eacute/ecircumflex /edieresis/igrave/iacute/icircumflex/idieresis/eth /ntilde/ograve/oacute/ocircumflex/otilde/odieresis /divide/oslash/ugrave/uacute/ucircumflex/udieresis /yacute/thorn/ydieresis /N90/Times-Bold -1 TZ %%IncludeResource Helvetica-Bold [ 0 /.notdef/dotaccent/fi/fl/fraction/hungarumlaut /Lslash/lslash/ogonek/ring/.notdef/breve /minus/.notdef/Zcaron/zcaron/caron/dotlessi /dotlessj/ff/ffi/ffl/.notdef 30 /grave /quotesingle/space/exclam/quotedbl/numbersign/dollar /percent/ampersand/quoteright/parenleft/parenright/asterisk /plus/comma/hyphen/period/slash/zero /one/two/three/four/five/six /seven/eight/nine/colon/semicolon/less /equal/greater/question/at/A/B /C/D/E/F/G/H /I/J/K/L/M/N /O/P/Q/R/S/T /U/V/W/X/Y/Z /bracketleft/backslash/bracketright/asciicircum/underscore/quoteleft /a/b/c/d/e/f /g/h/i/j/k/l /m/n/o/p/q/r /s/t/u/v/w/x /y/z/braceleft/bar/braceright/asciitilde /.notdef/.notdef/.notdef/quotesinglbase/florin/quotedblbase /ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron /guilsinglleft/OE/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/quotedblleft/quotedblright/bullet/endash /emdash/tilde/trademark/scaron/guilsinglright/oe /.notdef/.notdef/Ydieresis/.notdef/exclamdown/cent /sterling/currency/yen/brokenbar/section/dieresis /copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered /macron/degree/plusminus/twosuperior/threesuperior/acute /mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine /guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave /Aacute/Acircumflex/Atilde/Adieresis/Aring/AE /Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave /Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve /Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash /Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn /germandbls/agrave/aacute/acircumflex/atilde/adieresis /aring/ae/ccedilla/egrave/eacute/ecircumflex /edieresis/igrave/iacute/icircumflex/idieresis/eth /ntilde/ograve/oacute/ocircumflex/otilde/odieresis /divide/oslash/ugrave/uacute/ucircumflex/udieresis /yacute/thorn/ydieresis /N87/Helvetica-Bold -1 TZ %%IncludeResource Times-Italic [ 0 /.notdef/dotaccent/fi/fl/fraction/hungarumlaut /Lslash/lslash/ogonek/ring/.notdef/breve /minus/.notdef/Zcaron/zcaron/caron/dotlessi /dotlessj/ff/ffi/ffl/.notdef 30 /grave /quotesingle/space/exclam/quotedbl/numbersign/dollar /percent/ampersand/quoteright/parenleft/parenright/asterisk /plus/comma/hyphen/period/slash/zero /one/two/three/four/five/six /seven/eight/nine/colon/semicolon/less /equal/greater/question/at/A/B /C/D/E/F/G/H /I/J/K/L/M/N /O/P/Q/R/S/T /U/V/W/X/Y/Z /bracketleft/backslash/bracketright/asciicircum/underscore/quoteleft /a/b/c/d/e/f /g/h/i/j/k/l /m/n/o/p/q/r /s/t/u/v/w/x /y/z/braceleft/bar/braceright/asciitilde /.notdef/.notdef/.notdef/quotesinglbase/florin/quotedblbase /ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron /guilsinglleft/OE/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/quotedblleft/quotedblright/bullet/endash /emdash/tilde/trademark/scaron/guilsinglright/oe /.notdef/.notdef/Ydieresis/.notdef/exclamdown/cent /sterling/currency/yen/brokenbar/section/dieresis /copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered /macron/degree/plusminus/twosuperior/threesuperior/acute /mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine /guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave /Aacute/Acircumflex/Atilde/Adieresis/Aring/AE /Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave /Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve /Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash /Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn /germandbls/agrave/aacute/acircumflex/atilde/adieresis /aring/ae/ccedilla/egrave/eacute/ecircumflex /edieresis/igrave/iacute/icircumflex/idieresis/eth /ntilde/ograve/oacute/ocircumflex/otilde/odieresis /divide/oslash/ugrave/uacute/ucircumflex/udieresis /yacute/thorn/ydieresis /N117/Times-Italic -1 TZ %%IncludeResource Courier [ 0 /.notdef/dotaccent/fi/fl/fraction/hungarumlaut /Lslash/lslash/ogonek/ring/.notdef/breve /minus/.notdef/Zcaron/zcaron/caron/dotlessi /dotlessj/ff/ffi/ffl/.notdef 30 /grave /quotesingle/space/exclam/quotedbl/numbersign/dollar /percent/ampersand/quoteright/parenleft/parenright/asterisk /plus/comma/hyphen/period/slash/zero /one/two/three/four/five/six /seven/eight/nine/colon/semicolon/less /equal/greater/question/at/A/B /C/D/E/F/G/H /I/J/K/L/M/N /O/P/Q/R/S/T /U/V/W/X/Y/Z /bracketleft/backslash/bracketright/asciicircum/underscore/quoteleft /a/b/c/d/e/f /g/h/i/j/k/l /m/n/o/p/q/r /s/t/u/v/w/x /y/z/braceleft/bar/braceright/asciitilde /.notdef/.notdef/.notdef/quotesinglbase/florin/quotedblbase /ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron /guilsinglleft/OE/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/quotedblleft/quotedblright/bullet/endash /emdash/tilde/trademark/scaron/guilsinglright/oe /.notdef/.notdef/Ydieresis/.notdef/exclamdown/cent /sterling/currency/yen/brokenbar/section/dieresis /copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered /macron/degree/plusminus/twosuperior/threesuperior/acute /mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine /guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave /Aacute/Acircumflex/Atilde/Adieresis/Aring/AE /Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave /Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve /Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash /Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn /germandbls/agrave/aacute/acircumflex/atilde/adieresis /aring/ae/ccedilla/egrave/eacute/ecircumflex /edieresis/igrave/iacute/icircumflex/idieresis/eth /ntilde/ograve/oacute/ocircumflex/otilde/odieresis /divide/oslash/ugrave/uacute/ucircumflex/udieresis /yacute/thorn/ydieresis /N177/Courier -1 TZ %%IncludeResource Courier-Bold [ 0 /.notdef/dotaccent/fi/fl/fraction/hungarumlaut /Lslash/lslash/ogonek/ring/.notdef/breve /minus/.notdef/Zcaron/zcaron/caron/dotlessi /dotlessj/ff/ffi/ffl/.notdef 30 /grave /quotesingle/space/exclam/quotedbl/numbersign/dollar /percent/ampersand/quoteright/parenleft/parenright/asterisk /plus/comma/hyphen/period/slash/zero /one/two/three/four/five/six /seven/eight/nine/colon/semicolon/less /equal/greater/question/at/A/B /C/D/E/F/G/H /I/J/K/L/M/N /O/P/Q/R/S/T /U/V/W/X/Y/Z /bracketleft/backslash/bracketright/asciicircum/underscore/quoteleft /a/b/c/d/e/f /g/h/i/j/k/l /m/n/o/p/q/r /s/t/u/v/w/x /y/z/braceleft/bar/braceright/asciitilde /.notdef/.notdef/.notdef/quotesinglbase/florin/quotedblbase /ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron /guilsinglleft/OE/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/quotedblleft/quotedblright/bullet/endash /emdash/tilde/trademark/scaron/guilsinglright/oe /.notdef/.notdef/Ydieresis/.notdef/exclamdown/cent /sterling/currency/yen/brokenbar/section/dieresis /copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered /macron/degree/plusminus/twosuperior/threesuperior/acute /mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine /guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave /Aacute/Acircumflex/Atilde/Adieresis/Aring/AE /Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave /Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve /Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash /Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn /germandbls/agrave/aacute/acircumflex/atilde/adieresis /aring/ae/ccedilla/egrave/eacute/ecircumflex /edieresis/igrave/iacute/icircumflex/idieresis/eth /ntilde/ograve/oacute/ocircumflex/otilde/odieresis /divide/oslash/ugrave/uacute/ucircumflex/udieresis /yacute/thorn/ydieresis /N289/Courier-Bold -1 TZ %%IncludeResource Courier-Oblique [ 0 /.notdef/dotaccent/fi/fl/fraction/hungarumlaut /Lslash/lslash/ogonek/ring/.notdef/breve /minus/.notdef/Zcaron/zcaron/caron/dotlessi /dotlessj/ff/ffi/ffl/.notdef 30 /grave /quotesingle/space/exclam/quotedbl/numbersign/dollar /percent/ampersand/quoteright/parenleft/parenright/asterisk /plus/comma/hyphen/period/slash/zero /one/two/three/four/five/six /seven/eight/nine/colon/semicolon/less /equal/greater/question/at/A/B /C/D/E/F/G/H /I/J/K/L/M/N /O/P/Q/R/S/T /U/V/W/X/Y/Z /bracketleft/backslash/bracketright/asciicircum/underscore/quoteleft /a/b/c/d/e/f /g/h/i/j/k/l /m/n/o/p/q/r /s/t/u/v/w/x /y/z/braceleft/bar/braceright/asciitilde /.notdef/.notdef/.notdef/quotesinglbase/florin/quotedblbase /ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron /guilsinglleft/OE/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/quotedblleft/quotedblright/bullet/endash /emdash/tilde/trademark/scaron/guilsinglright/oe /.notdef/.notdef/Ydieresis/.notdef/exclamdown/cent /sterling/currency/yen/brokenbar/section/dieresis /copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered /macron/degree/plusminus/twosuperior/threesuperior/acute /mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine /guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave /Aacute/Acircumflex/Atilde/Adieresis/Aring/AE /Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave /Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve /Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash /Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn /germandbls/agrave/aacute/acircumflex/atilde/adieresis /aring/ae/ccedilla/egrave/eacute/ecircumflex /edieresis/igrave/iacute/icircumflex/idieresis/eth /ntilde/ograve/oacute/ocircumflex/otilde/odieresis /divide/oslash/ugrave/uacute/ucircumflex/udieresis /yacute/thorn/ydieresis /N191/Courier-Oblique -1 TZ PDFVars/TermAll get exec end end %%EndSetup %%Page: 1 1 %%BeginPageSetup userdict /pgsave save put PDFVars begin PDF begin PDFVars/InitAll get exec 1.14301 1.47949 translate %%BeginResource: font WOWAIH+URWPalladioL-Bold %!PS-AdobeFont-1.0: URWPalladioL-Bold 1.05 %%CreationDate: Wed Dec 22 1999 % Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development % (URW)++,Copyright 1999 by (URW)++ Design & Development % See the file PUBLIC (Aladdin Free Public License) for license conditions. % As a special exception, permission is granted to include this font % program in a Postscript or PDF file that consists of a document that % contains text to be displayed or printed using this font, regardless % of the conditions or license applying to the document itself. 12 dict begin /FontInfo 10 dict dup begin /version (1.05) readonly def /Notice ((URW)++,Copyright 1999 by (URW)++ Design & Development. See the file PUBLIC (Aladdin Free Public License) for license conditions. As a special exception, permission is granted to include this font program in a Postscript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def /Copyright (Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development) readonly def /FullName (URW Palladio L Bold) readonly def /FamilyName (URW Palladio L) readonly def /Weight (Bold) readonly def /ItalicAngle 0.0 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /FontName /WOWAIH+URWPalladioL-Bold def /PaintType 0 def /WMode 0 def /FontBBox {-152 -301 1000 935} readonly def /FontType 1 def /FontMatrix [0.001 0.0 0.0 0.001 0.0 0.0] readonly def /Encoding StandardEncoding def /UniqueID 5021142 def currentdict end currentfile eexec d9d66f633b846a989b9974b0179fc6cc445bc2c03103c68570a7b354a4a280ae 6fbf7f9888e039ab60fcaf852eb4ce3afeb979d5ea70fde44a2ae5c8c0166c27 bf9665eea11c7d2329c1a211dd26bb372be5822f5ea70d99eb578c7befd44cdf 045a363056e5e1cc51525ea6fc061dcebb337208eff729802376a2801424f670 0e7e6397b28f15bc10b40012b0a3eaeb2693e8f7f627c4c9c7c6c5bff105c1e4 1b2b9e8f09253b76040d268b80719e1b3f5a55aa45acb42b05eeb99f8b643ce3 f4b6449ed5a733594f70cccd7bdb073e630c93a502476ceba5741beee5938fce 3e77996a2c56ebae52b2701debc95e363e995aceedfd1cf8edc72768951885b9 84f82225b3bb8e9522e784197b8af13d70b2cd113f7501cd9333eb9a28cd9d56 824e9a3a689741d4577777676015723d17033d2815122b32062451e15dd271ba 6831fbb953f03db40513901ce59accfd6c2d6f05e2b6c8aac7ee97d4c56b8f52 bcadc9dc83d5c7c45f5c6e60df9f9471d42b1d6f45ef98ebe41997bef7d56981 8f9ae898afa16089a91654adb0ae2631539262c43bc5206d6cb73867b19edff9 024f9c3c7d790946f34742a688bfd183a1307649a36f782daeaa2d8e581c911c b42485441fce5ffbf911f1d9988fc5c601d09514633b415378648ca65f2d6f40 f7cc23901787522154cc33941615849c4e5f2600be11ce10b78ae007ec0e5137 4c66ef207977c2c2ce5fd8e70a74da9968c71790516f1489fb5a2585df9f5e06 9552f391999992e23975398fa0f539a299ef090b9ca16e940104614a4fa8c6d3 495975f6adca90522557b3f02facdab68ebffbb8579876f09895d723e482ddf4 fdae645cd275f3a8de44aad1d4c2987b6cd35fbb18312851d858e2f382fc606e 41b7b9393ea57a7fb9903ce835bf1f8e67c15ec8af980d14fab1a56ef1a62e14 5433a36160111440de43d4c8f28013504abfa5be40dfa52d34af251629a70368 73b22ec87849070cc52fe3b74d259e603996aaf50d77304a8b6631c652e482d4 c36a5ea242b3f6a979331bb593edf29f2d9dc6b35bb39a5876e5378e71cf09bd 151e4b759d53762bb109de5d452919de87197c14a816e6970c6476c8a4f1be28 e6fbcdd677d4379e9d96a978eda97a0f256534a641017c46f0637a6886cf10e1 ebd75689d3cad47f1ed6096f825036bfe59a50a550f0fcc978efe560113a6231 60ae7dff1beb6846a97f44ba6196dff0e9aaab0f3f34ea25a98abc50de2c1812 47cd8a7e2f2bfb159544b845133fcd3b9f46d1c48462a806e9e614d5eb37b65f bde52075686731382196cac3ae3161ebf89944f88a19a5cdcca280c5a47cedde b826b08ac1581b76be95036d3797df9d68406c79a4b51adf64776ae9bcaa6d51 1362e7a00fdf2c9a6d40f64dda4b706fab728b6f6fa9302b4455661480719e97 cfb7a10536081e4e417984862dad762591f1e352eb919871cfb4fedf2d37d006 a7d7607348daa1c6f67333c87a1b4699d58d1cfb2764e513e6716c45b649c739 ae2e22ccc185021d70816ed400efd37352b030bc26ec540629204632c7f9af09 9af1eab3652298661db3b1ccf3e7a28cd7e943952e826c1bb1fb0afb847e1b74 7f9d607b30f8a7eff092aeb20c9a785cbebac7352f57c70ed2e462a148b91bfb 72fa938a8960413ee329553fe07a791a5fee14044962f0b4269f80fd7b5e55dc 55ba956be348681cf88ce442026aa09f828e59584bf2c83d91a39ea1e3b673dc 2bf79331e978b15b5319d49535c58b915e7a0f7cbf0c84ea4c5d588badea3617 d518a5849cb4888a353080a6446c0d86a6f09f1e07c0f6db1fd83f056774cc7f 2283b249b075479604cebb928edbf84bc2f29b7ecece6266769bb9a4f91f4258 3c00360a382ef21a8dd920396f7f52b7d55f17e08f3348cb30d76bdaa84d2e93 3c94c99d13e74f199a8a4ecc0de847abed596854d54dc3cf3de605bcdeb62136 9386e40207b269ab40cc83daf836ed4b747aefddba2549852043b5a93b8c7da6 d16f64c3cf84d27035973291df8304fab487aa4b4ca279ca5ccdc91b6740a2f0 8d727fa2aefcbe4ac82dafeef86eb672aa048a64683c37cddda453154ef41fea 71e4e811982e4ecbc123e41d496a78f5cfb472230cda008f37fbd309a2a61d75 c661613d01155e2002bae8b740656a0448ba53e11a43ecb11d072c68d2131be1 c7c43cb9d97189a5cb1c34b70a65bc238af4a8e0f7466729aaf0217ed7ba6583 a6c2eb5f2781310b9f71ef1d05a876c0b1c926563979cad433b91341797ac8d4 e9842a2027e8d5c45ac7d42782421d7028420f0a116296b88223795969c30221 5684e0a2a8a1cffab24939d4c910429811f3515cc01b842228d954c8279b7c45 c8e09683e858b3fca768b1748f63604885e6e3173c865ca81ea20093b619e519 42c0292d48c76344a84198f452d33121547aa7528316aeeb13219da6c56d6de1 46aae9f76d27c19d65b3bb2b33da3fa441a239a35712bc8478b4a1b2d58c5844 2527fd1b230401a550980bf6c9e75ef02f7e3f51d6e7d60a9c421889066a22ab 0399a95fb6020b097082e73509b70f0c64694b73bff79c84be687e7a805f13cf 0eb2428c5d5ca1f39bcd75166a0b047ccc1069527f86804da275d8c6f885ea23 1eda30e866859bf0f2368f5dfd963bf8ffa5642f9420861ad4edd4fbeb504050 fd0e50af70aab831f5c62811238f2315a9e94e8d31831ec6e569358f9dce277b 8098be634fd17b2a2f4306ac9c0e2c687d1d9acbdda602c8687473c07f467120 6794d6ead1708aee4f5a948ba3817de8e54f71fac584426f531f4a3f9c4a74e5 65a2b8163cba42b126909def1519a72244f9643b01ff403643f1d606fee1 0691d19ed84fe52ea9624fe1606c7a7611c1cb836d64f1e7b0aff653300eef14 d754133a2722778b45b63e3700a128e7bddffc2e7286d91c9fa2fe4f84bd87fb b390b65362ad2b23e0a53bcce2c44b2c415bea7b5eac41cc092d15e2cad1d316 d5df926c4455fe7fcbe124cb47c28d01a91b6d47370fed9e0f297d698cca8215 ba271a098f840fea95c9144800c3756db044e20d49152a88334556aa35018a64 dbd11d7a52fdffe8a2ab92bed886b0533c7e662e0ac6e2de0e5f9094e55f65dd 77e8263b96774698f86a71f96165aa3efb39b7b13c5fcc011f38e34f42317366 d9ada698082680809e2bb7409c559024f341aeb4afaf1ac8fc2cc8723542d521 51b2f874a2e692cf24d571ef958527cc1df6ab5c1abd2bb2058bef8ac58bb4c2 07f5e12e9a87ff6ed8e4ae72e7fb4bf784caac6dffa20748f95fddc8f878d765 5957f1d1d3fa9403c3058db83abf6919be5d15edde7dec31ef95988956b49d6c 99d4a15b609e3060835e8631ff601db345cbb8b5cf00cd1f4076f9e49d83b5a3 031c1634bcd70891f4c6dc1acabdf29591d77a4d761534980723762dae96d641 e85c4f6d5103f1251866c074b7425c2118fe676a598f6b2736afa1d10257b1cc 9ec7cceaa4d28ddb3d69b3608029b01ab333b3fe8ecfd578ad35d29d67322c1a f323c63072485546d90faeebaccabd47da6108a00bbd73f421cda74ac8881170 8114bed8e14433e80b5a68b6057ebcafdc6605d02d28b276999a7f2d6550f404 7bf98acb58a7468a9ce101c7581a26f39e92fd141e9226eef3cdb60ecd429c36 59018cdbfa86b92f41fc4462b93e2491410f2f84d2b3dd432333f94569953435 b8b97ca79880f464d9dc14efb3888abd7e59b0e525d8cdae263201fad2b0b9ae 270f31a408d74fdd0e56f4f0a3a02d479c48d6093e8ea76a09eec1e2d8677ffa 7bec2529e2fedc87ab035de9d52e26802a04965bdc89a31c2dfba99570b17ddc 5173711c8896c89df171951724eaa44dd3589b9cd2da87cd9f7af2b59cd5e1af cd76df92698db4e5a265e698d07f80ac6cca445be321f4d17b6ccf318f0c2e9e d7da003eb87428c0ac61fca14a499cead4abddeedbdba3cba579ee2a786e2289 353980885fe5ef054d5ae538348f537368927e2d176e71e3c1d4269ef71aa5d0 2a87dc7a9650b7a1963205cfc495ed215c9e3b594423eea794709221d78ba685 0cb0365ffcc37fca5988b9bbcd4a3b1e88ce1201024931731c7b897158873ca0 a32864f26254305adab7854d7ea199d77c77cd5e0e0d21cd6beb762890210600 581e061573d60ea7e6959c692b18f12a4aab80ed856f45943d2297325558082d 24b4bb524fbb56170e9ade70628cd87ff4f5a806000dfcd5b9bcabe51ebc2d79 169f8c87f6884a7b560fab7f8db05b9d39771fab49e859365617b446dc924912 df20fc08252f2486f108053a082a3b64dc74d969793511ff8d446b11ca69c5af 62ba55f071d361aee717ef7ee889b1b276abc7c7a4945773fe7b22e15db6d9c4 679a6c10cbbfc762d24bdf3b39be6eeac0d922f55a3deda70bb1f85eafc52594 e303b1e41c02fa97a2306c9f09012386b8834e0e47a0177289e1022a1cba21bc 9b46803490d254dc2080059c16882a65c8e629eb596b60faba0dad0bbb184e93 68ad94468a36bf21b4a250224e7b3d5b21b97e8a2493afe5658be31a95ccc438 6d38f48d32b8594a7d9a84f255cb9fa208d57d885bc7418cef2866127a60c776 f97ecff94c2307eb3c44ec877fcf73e0edfb471c521eb0c757cc9eb5fc10d8a7 3fceb4755c6afff4c00c1e197dd410d5f1996e9bb66724ebe80b5f05f98041c1 3a2a98357af1cce46d69a9e547fef217e907c79db9cf3744eb03feba08935fe0 7797622d10372015a8cda28aedde6e02e37abf96d67092f8ae7deb6d0bee5087 694ca9a46cdbd8a513a8e3c3c6eb4f03d3849619eb4d84fef013c5b4bf8cca17 dd74b6d9c1403ea94c9b96cc5168abad8fdea9a92b4c3e511ebe5f047ee68288 bf3de1225d981c287fa9b5d0f6d2ac9b7bbbd561f2b3c590bf9140f7bbfa9fb6 289f8496fff2fe5d5dd1c32dfc80408d750304e9f6124239b2702aaa0a8f27ec 86192e30a5239a449b656d8c0c6594b95b3d8edc0acd268de68310f453de293d 2571377bc9c45114130923586825e363007fb219527f2029fe2439769d67debd c8ad8c861e90e53221c5184562603f7b03b0c29a6665aa6064c8dda09746911f 301288c57c3a65abcf6737a433deaa3482339ebd636289b8f3964c88a29a856c c209ec385d5b2263775dfaba79257c6496f5915596b31948b3d449e9670a34ee 76fe6eb0b3a2cf8caf784224cce088fc7543c3f9a71394b4bfa8ced0c41664df 7b5bbb015c15e7a5123f4ff7600ec58dc7ac4ab2e3ec2e57bb179cb698f65144 5f379e6e25c528c84eb94938bbfe8ef5684cf876b7310879760e6e7af5b06207 bc4d8321734432c716030af17a438014b5902a55ee220152c90348cf590a032f 5871c03e1cc8e03d38e2df046bd128d38054b6d66aea9a49aca9aa960b45b053 079246f09b1f8be89a518e43b6cfd10f1a79c610ade46912115330743692d0dd bfc91ceca3debeb081964c6150abbd5b3a4b88b8f217a9a849a3dede60059f4e 919d802dc6f42c4cc353e0457b6430162460848153c749ef0de6ec83878ce9c3 969a9a88c520381138ea6a07ce358d147ba0083d2d71c25cb1669f2f39c22f88 b276e5a25c3c8887d0a7f655409064ec926416066df91b6ad9660f9ed7046aee 29eb4e62793d2f9c20c90975e77a06a2ec0b71103aa9929cbee36a135b7ef3b0 61b413c76077c8d570392bc38dc18494265a4ccb9d4320925a4abcc1eea8 099d573c70a1a1e5d1a96a3131e15a75fa6929270fd0e58fc9ed82bf46ca2ba8 16edc69cc56be324c4a1b9942c4d3fd08828eb4bf50ccf3b7402d9a92a7508a9 a77ababeabce63b56651bf916047a445f621f81b213e5d8d7bcfa2b3d4d489a2 035c87b0749dbcc13ad34a1b3ce313ab29d50324bd304c362095501d1a372ba3 3ca9a42d4229904b192f339279f9f4d268dfaac15491f5685e59ac8145da9834 e3e620dc65a705c07ca3488e064bcffc4bfc6024a2e805b3a12c11780ac73158 49d7c09394bd4ea0c221c861b8a93035c591aa476af4893c6475a474561b6385 530d40bafa9e43247acd2f07481fe18ceed4c93adff57d3211a340d76e73bb82 a98f151ca288979d907126c6a6bcdf7dd623dc2b0d0d2512d7931ebc886b0527 17039570a75cb813b767f75d678008fab0329bdb6af0f2ae4e41457830f8d162 3c18f95b4ed5492982159489729acf9368f03d809a614613f59ed2c0e7e2ee6a 389f64f3c4ce59ecdfeac5b44ca32f7803b9200043e29a62aa6361ae5a39c14b 16c8b3afc8a6b2c9ea2feef1f900304c2feea730fed5cfaa5c76ebabe1c94999 a54bc260661fd4dce55956fa21d78d42742d2ec98bf1e4ed4cdf8dda7799ff2a 8aaf448a1e26236d8488ce4ec4ca405368adaf00bb2c95ba04c41432dfda1a57 52b5222edd9012b45cf0df0644b2e5b7af6c70de2a317df81f62e9625582a50f 194bf233190f3757f9c838d08ce835765ab686d2ec1dce1b89a216620005afe3 dc207c637f63a1f68c6d5a2c2369388cd31aa4e523b36a2ab5f41baf1d677157 6b4d367aa58db1bdcb2be91c762df8e6d8f1e3decf77a703341f4d5879bbb0d3 5c8de0627ca7548fba62f36118324bdedb4814f7b292d5faa6a668b2585a3d60 06683222f07bb1f0706139a482e6b4f79ec50cd4abc417f3ba55d92248b5156a 3552ad8347a2660b90a70a8821e9a558d7caeed313a075a6c97a4fb2c2ca4e89 f6003274118d0b8d1e0d11ff7e8207fa3ce3be935702f8a3915cad9206027739 c05323b1566b3bc263484034c1a9df71c8538b03cf18809bac4063103b89a932 c946455256de821247f764d8453e3ca8412546a9758d208d0bc66c9ef7240dc2 2b6dc3135262e39bb855e9bd68c4c0728a5b37f88f7b480e1f03c603cb972cd1 f065ff19a49e62d96060aa5a5c0b69d59ca802bae9ca40d99a5669040c113927 3fe87ce3320e5f9293fd46a564338a199d1e14840e3ca440c28a02b74f3bde32 f3c81073d38052da8e93dc36a30aba189bf3857b573fa8cf56f6ee7f4b964661 b50f46b5b9122c6e13c6998e54e7b0ad52bb9a04f317d1fedb15ff4b43d5c43b 8e91d7f3661947a42b29d02be31dad53bb4fe9559a1ca5c61b5bdad5552ecbf1 cf69a910ffb7d2434fcd4d15acf079c90d08dd772c7ff822ba1ecc93399bc8e2 11b2c0a6fc53b3ab02e040a3f059ca0e8e2cf9c1fcb83639dc8c4507247efeb6 dfcdad43df7e35ec37115a2f0da9cdf50cd73f6c2195631ddd1d4d796f240076 e58835dd03d5f3749ea3ef3cba6ea052c17429f4726be308f48c614c3a521443 8114b90d88e8ff4d28500bb12eef0f2a79365178735ce26d07c9dd13949e5c2a 26da29571ca62e3109d941376cb2a01ab70c6c09f144f2b1e3965efe2a505684 52705862625628c872520e26863facd4000d71140ae2c89bb02ea0f73a2399f6 ca5070d2e18cc12104f2031fece094e8f7a1adbb5120e89bcae7bae30aa0c052 9ab20e08cc8357c89f9969bf2d6e447cff631c126f3577e87ade93970c0771c0 ba35651bbf5e83d90ae8b1f6694680b8d150f7aecd3cd38d8f91dd4ba99f6b8d 3231a55a91fbfa121b97c81ba0b7dfd54d44dc4dc927df14a579f626ff45fc23 c55c07515319d718e815a11532516051c178942d7efc38fae4b62e88ac4205cf 5dea1ab069b05148cf54c8e0a982c6ce3738d894770ad27f2baa1a8ac49d55d3 11d7b27e7b190ee510c1cd4bd3f70bd38d7374a987fee1026815ba84e13a9804 4f77c9ef13c7b14a754fd0e07c68a90b3a059dd72b814a8c332c88e38324bbd2 d4042e32532e7fe495cf892af4bfee6c45d4b46c6326be2e10d76446e2a35da1 f237dbe7e9e01f3713a969bb9dfe862b2ad2529022e46d3e61f8c996a63aa3d6 16b447b0d88b533418d9f9bff7c22433634b804e051583f49a74cf39d36ff3d4 18f69f1e56264b8e31f7850bb961e933eaf370c7a2fc2cd4ab714bca85fe11e8 b69d3b0f641b86d4e871ded13e0c59cb7c3428a0251b99019c45d8173012b6f4 7a07b737d5878954a4a0cd44b60414acd0efdffe2b0bce248470f2ac7ad0f7c0 b5153a1f591896d74f11a9786e8ace48c65da0b40da4da7ddbc11698a5cdfdb0 fa39ef1a6ae32e06c7e21bcfe5ab34b483593a036f894a479a500bce794a950d cd2c82a067dd138a2812ac5e29dc0d719830bc70894edd4b1438df1d925e630d d8ecd079bfb689d57bf7fd8227de2ef96e2f3b05d6a1d7aa6feb9874f3c3d2ca 2697559e5d186e7ad9b06698106e73a0d0a9ade785514c6a66a660e36e1fcc24 d0140c805cd17539b41f7e28c9c8aefa5694adba674282b95dd5aaf050f44198 ba633d86baf3939fcc2e5e9270d21ac3ae7bf66b68968fc48745d92844d2b4cd 19efdb0aa29186bcc078558c9e4d2a2f1aed77491e2942f7998afd5a64d6903f 2fa8f539b3e788f5699f7aa3f08a29dd7e262af25789c5a097614d396ffd78d7 4eb62dce0a1beb5b231f21bfe50bfd07ad5eb80b441e6de0e47d36fa3bd756de 09e1d675952603592d66345f12f1a5c751973514e0f6dda8ec681add1ee5ca86 2e4b48756b1cbc32ed52f9fef389f81d4182c6ee5953ce8778a0b3275f88 2a675d8664950cd5b17514f186829790feccbcafb8ced061107b099f55c62f00 0c9ffd7b20818d1840f1d03569670b8dbc2c2d0efe508205e326c60a81f2cf50 42d99b153ab4fd7099da47494bf4b0e5badb6e56f7c5bbcab1b747f48149ed4d c73c9aa54fed686370eb8bd3975dc34867810e55fa377dfa6880f5263868bea8 4b26c9f61b97baf65e8c0187dd3ca688b4a11defdd04c707f3ff28fb5a4facc6 683954278b0211b61ec14f5991f086bb630953775d1c3523cab620c1d7c4403d 49dbb6803fd753a9e426992ed6bc8befeead4fdd192ebbc1f3a1419789198116 202901b611d9294aa700958c6611d567eece1e42fefedda0078e7789333eb7c9 76f638ac7d852b7b2250f6cfbb5669c9112fbf7351d95bde1d4bf32f18fc1651 1464cbb791f2c16a1fdbb9f9eb4963f09bb20b7d268041c67d49540d28445fbf 1d1a4e428a911ba89e8b12b4d67f849a66a0f70b15b6e24f51f3b7fc5c872a10 8147af8d8cf35568ffc50587de88bd47622ff45117a06964bae0981a94f541c1 000c25c814acc264876a1529a6f37c5b5b3d1b4947c058a4fbf53e96dcdd3c1d a93098ef446d61fe8769e1a4ccc62f8fa3a5997ba4276413efc65a52899b1171 97690e8cd7ed3f9424b8b7edcec9cb450a2cd44f6aca8a6279180a4873c30995 6ed1f96b8147f9bc3680d9d81daa412bd969f9a70b54dc9b054e97386886ecec 7219c96c60f7565b29f58249523544bb1360d1fb5cbb1c06af6dc5bb601d5e33 d227ca5e4cedc8ab4e19a43154b67291ef3903c1ab8fe6c60c04848290000d6d a7c35479dc67a6deba0245645fc1c6e3704b073c83a71bb0af4c69d43ef8d34c ebd5eb52249bdeadfadfc8bce85d2a7e4cf939ddc479252d94554753cc6d7f48 5e4e870bc7c4bf3cb01aa002b9839348e3a4c495ea195fba53766189335decea 4b16d6ee1a03e87891837b822bc091a27912f60de02e09f6edd77429ed2eca8d e433c390470e429a803095b2e72760eff221bc395bb223ba6ab44c3de99624db 1b364e6474ba273e630f6e92b775b1065b7905fb03e72387826a14d181ba65a0 eff7022d08ba44b97eba36863832373e5d5c3d51d8462855e235cbf72f4302e3 5caedbdc63e52a8313d907f8f9b77f9884f052d1db422d245201fbd6463f31d3 7081a4709dbc3a4a5914e16f20deb6e28405da733ca5d31727e4ddb392685584 b5bdc9308f35a246efddb2cf4f83a1c7028db9a3509f974f409fa0b95e779f2e 909679d70fe48ebe9cbe849a02868bc24dd755ffe818e62f7df9f907c77340e6 edd70b291772b25d1e6f7285d52ca712c8d5c8917c242c02a331ee280cecaea7 fe970e5717b5a8d824714345e89db88f82bf737ab469730545f4f64353ebb08a e39bc8b715a541515ba68d3264df63396181c46327c16278ebda432267b7341e 9afd5f6e12d0a46d985999b648a29114beb6794ef818060f4c05089b6c965b5c a2f739c797029baa9d1fd7ee9405cb29e40f0b7768244a2ebbb9310aca9ef051 93524c4e85aaa0dea39346c08c4908e723d17040ead128db37141aca92ac6d51 3c830acb43b26371195013f74fc07e862198ab521e4d2dbcc1f6c1b64632b2fd bec9fe7c7b0bd419c0e0c90be23562352d63b00ce64e574010172423bf5a5400 120544c4920cc2b761f94727df477d8db770172691501beefe834e9627551d1b 7ed85a415293ee84ef32c05c133394a8f6d2c97a4145731d81485b19921ee504 ef3c83ce7f93531283c6275e3b1e2c1f59b4eb9149b34720b3d4ea807d07f16e 915503cbebd83b173d6aef2574ad64e365c0d66a993abaf34bb243bc19de3909 da113265320efa2c42e085c3f897f0d49d1161eaccc4de5819ae04c06d141b21 64031d611a41dc693b0b1e461c5432a91f363429cae52817c005cb1c0d2451e7 12783bf1258c579969c9bf448f92e9eb110e4a01476be68e839dd0aa23c9e729 f35a6dc7d1869e4e04940f45d197098dba0c8becfb51d65779019e678cc8bafc 026639ce00ed9fd50d81fecaf31dc72e407853d1aa87fb74fc58f85457165dc6 e9c62889c3fb5d8d1371edb85efae402433ed368de1c327dd059d1774e270c1f 4ae58375113402dedaeb7af44416e90772adbe89eb2297a025219d0b26577b7c 6a261200be54b387539858f28c3c108c0e6fd94ce8c664049cfd9cfbb246a971 a093d8e5027d67a89eb217a15b8ece65c6efadb667852739e02647d111a69cae ad0a64ada40fb98c1f251cb49eae29a3ae0601db63f00aeb68d2e9acb79888af 725fdd44f3b23f8fbacf1e5ffbea4427762335c05debcf002cae6436cc5b6fe2 6688d3a4adf9e542e38b64d473a4a2410ce61adacdce2ca7ddef86bd9cd96761 02b0b9e22a4744edbf299db408b7b0b38ced7d8c2c8b7eb292d0e4eceb60c79f 9df0f8e92b88699d0521a0f85893cca9c6d128b2fce38477dd9e6268868588c7 f45f09194096200a65571e7c455d56202345aec403ced5991eaff6938c0e68d4 afbfe14b9497864d90bfea74fd3b43a178c86f9a97423815f5fa2c09ba5a3286 52b62e5192ddcd272649bd4eb7b77185936fc36877858877c03c1100d8ebf3ce ca4aade5dcbb3f0cfea2733c64a9abc729be68ee00506e55529ef6da24c856de 07b4746bdc1ba4a84f7b70846e33ce5f285f32fc4e53a52e9527d01989a45b55 43596f832a953f8f0cf61f332f2b6db3041565fda3ea07e2c04226045642be31 a8b0c78ee18b0db5aa7d03b116f7188c5e525f5352e91955bd434ce34b887b63 2df95672602e1556207b8e2cf3f01970d9db197ed12d51b0342a0216a769bb5f 0967ca8890a11706f748014cd294e91f19f83e7c0f58421a0c354f1be654 f48818dd76a3f20e743ff42b04a1190b5887bd0e0d2491ab13fcb507ab79fd04 21c5c06b9d5930211c90c3d5cc60f3f1a0e8b2bc9afd5067315e4118d72cdd82 3a76fc1fa1caba526ee65f6439f9fa6f27f7636521ed4f71c63297b03c9f7f76 b44ee925c8ac127519070a7aed414d6fa40aec9e8a3d579cec7737f9d9cc8533 d802226d4929ee7c9dc63ea8f9780763e889b13fb2bf917dad83878518dffb3e ea998267fb51cf42eead7bb0a609268b6a21389ccfdc5fc3af1e9de106e3cc7a f6a944a15528ab3c9a630b8ea584a415a12fd2cde2a2b3ff27cfa13968009542 5ad8b4dce63a5845cc77126df2d9369fb597cbfaa9a695db4862edd2ce093194 75804faf2417789ccea510ab3e173171554de156e4428ba4ca6248b0dfc87205 11e9754f3d3e68b5d7652489fae2dbdc31e336ba7a1d1c0f5d1533474c1d9275 7d1eaeaa55b4601bfefc1c4a2c31fa7f4f89d337209ec858b9ffc4729bab30eb 4f11749324c15349a500674aa342e00623e976b4b5d9c27c58aa432f300714be d0094a83839f08e6b36a1fa87b9a81a3249fcd0540edbd9496769cd6df319af7 4e141e414cb9decd58eb2544350bce56376867a62c71764f88644c6e5835216e d2dd1b36fccc46801181866c29fdf3dd6c73c55a1e990a07f8b008fcfef55c2f e859135dbb27457fb4cae16197347611dfe63da3c7cfd847c628286cb4eb6ca0 d55ad7c5a20198f18ceedede8d9a2dac227580abbcbf4e94c8b8863191f877df ba47b592047831b16841b250cd148557d72dd7e683bf122b3df892ccd2285166 6b910bec1f0b5a22e5745fe8ef47a6cb0143d1a6daab758bd7fa7dda251456c6 8f04bf28cd915c67f516ea2341d5a1054e5317b85e3a9fe6b541f50ec43b6fb3 c4233a2d3adc4ce7e99514b2dbddb9b6128e6c913c88111c0d80957fd3383841 30b535d0579d727dad1e967d54e3e2f2e41bf98a30b01c327764e690a5557fb4 e93abf4ffa23649dca59e2ecefb861adfe90aef8aa8daf25d1ab3d3f06a19831 04fd0583f6b3b0e85e66c882c0aab748dd2e47363fc5afede35069e38da417b8 a345d4c31d23b01f6712a2aee10e47046adb1de7fff9453f98ff1e80852ce91b 5b27fe97e1d595e787e96359ee9d23c7e547ee9f976d08bcdc3ad62b13e1af63 b076ecb3c414a4334f57acf1ab49d651ba461a600c56eab620d9380d5f603d17 9ba7b402e60bea64c8dff7212d71a06bd70910d097dedf81f7703ce2aab39253 1104adae188a6685f022a0ead9838923342d8b23ae0864de92fc7ea1f45b8702 18aa6aa9078d16c83f84bcdfc2a202f15b5e590ee0fab34d734bf44cecb039b8 6f475db68a6afa0948db499370837b8318de7c223c704b2759bcb427205fd7f4 c7241abf43b26dd53d90d015838f8040dce919a3ad39bd4e52785fa63388e0ee 37c82618bcf2be11f46911b331e7b96a859dee2e0336df3ce8efdfcf82b6294a 4c6824bea3b960c86c7db62ecb4edd7544fd3ff04efec96fa9a521664eec4f30 a1261a0096ab6580b12d648ed51eaedc70ffabd0d0d68492768c7f55e9952987 100afc0ec03cf109be3ebffbffd90935690c9d68c21b261542210824a36ca060 33f543ed44ca2702a5374368c306abe1470d0fbda920f3d8c391a5fddf2318f6 d505e8fa521f1c1f0a492095e0c27ccaa30e0db63f02f11dc0ce8a94bce51184 307257ba246edc7d49fc9547ea6a83d9a5ab60c1dd6175ab87e1a511a61643a6 07cdd14f0bf896e4f211796791c6d077e0df80aebbf9dad1b8299609c0414a81 03419158b5611852afd2765424bf0d8dee255eb31c297c5262acaa578e03c06f 6975de2564f315213f7d941d5ce972140fa9a2d687e06f23a0d0ece4f8f90353 a86b68f77c160bb67320fd37d39688480b738c446c51f462b87f59f1a762f47d 9f89d1c1d46a76c9e616263cc0dfe0f27b1c0c1ba35fea5af6530fea04e876a0 58e9efc4e9da426fef3b4842d68a11be072bb0a39e5bcf0fddee7fd76fec56bc 71f36e8f256567cc438c97f08a2ce8e503cb939c29b301b699297540c4783828 307492cf79b71d5c830e0e62e28082e677b00cf9d1fb7198c9bd40c6d9ffdc50 96e10cf92540078fb66c2b1f015c7400c5acc78b118a7f57b019633dde954666 7a1f31a1841e7fc5cb11e357cc9ac3805e2f27731ff2317cca1dc39934d9394e 3ed5ccfcc4200f1cb1fb38c13aba8ff3ccdeca34d9e43df94060b48d51c330b4 aec63813cfc2afd816a7e58ca87bac3f740d73c76adf3bb6553d03e7aa40ab75 a5951a39739c6d5a54ba58f115a12c0d8323ec3d2e875859dcda7354dadd17e7 c4e82b25dc96329c47e58a0e5014e973c023617d81617714c64f96b8faa40ae7 70616ff74646df196e1c9bd16e590b017da60ab915c03956146f0846a7b68835 6b3c79239c4db9902640d935fdec762592e82b209525f9e353896165de4cc11b 7b345d335b1a481fe3db8ae445d3165e157d570aa60159064f494aa466b653d7 3cf8e8251b5c7ba4c53ecf763245a9d02f2b65cbbd876f6c3128a4c6d9003273 d1823ac7b461e0fb63d769e0e61736b29f482180233708b5d1b0e274da2d7d8d 0dc3f149f643ec607e699175352be0b75082681eb59e46c0e16b4e20336be36f 57fa2e39a58ea63476727f6166c9c4de6e2f9d0e6324904cc1193cb1ac665c60 97637e1ca933e7ff893e919287b0f7d1f6f7f7f7bd6cbd0120f39bc408df87b2 4a17688fec601d8ecdd5aa0f53db0703e49ab9c87676f9deb307774b71824c1f c8cc81cf06ad29fcb657727953353bb16b9c7469e82c8e80635d559c8f3878aa c62a7dd1fa5c08085152dfbfc778a0b018e04fe1318f9f6067ced2ed6c12 58f6d20bb8785ae96f9b9ca433be7cbb5c064759f585312344efe15985bf1029 b38878f2b28870b4e121c7af5cc55e26fd5d810eb209d6708cd65cb9920f55d3 5f594afc435eb5653419739e6108a0d97ed1b35c69b87e4289332a867ed4b18d ecbba6be8053b3caa117bf08c7b2214f4541344b3a388bdc7aecc0106201e9a1 8e245f040c683425a35c23b78a82abe03821f162a96cfb13d6ffe686b1cfd04b 8adb060f2031209a185b98bf66ab89b6547bc8fcf4858b10429316affa7f1574 75ced605e22cc5fa5ba26fa37a1145ab38520ea4230723af2b00295534756b3f f4b8580081426edf8979a40ba8c9ff3ccf743e2cfd06600045a1cf7d1f75e91d 63de9117c460df01fd67e1bc9d3ab6c0b47f70449834174bdc35deb5dd739d93 2737b41b39363674768050216378a1f2adb70531b1c2cbb35b44b36acee4540f a534d9582ca1d14d30a2a1241301c5c8ae34f36df371ed5f33863ee042a08ca2 b4e9e6a65fd4fdf36e202be9f54089add48309bcb6ec12009e0b9d83e438c954 8631fa49d3f8afe68f05259eb32821ec74089dcf13d6bd0eb63eeb42351b0878 91575842a8989efb62f1429246a17e99c511fdce6c87f9f940d7427c884cfe3c 1ceb445581c55bd25d51283d153d2d6791bd5532949fbbbab7167b4930d6ca31 cea352b2d7b877d9939e4b064d574202d079ce9996a1bbacd4183797738bcc82 1df0bd229539650ee2553e5c3974fc06a928f657cb5c66dad736caa105dbaa77 c79c8eb03a549ebb7946504e06dcd5e24f81ccf461b56acb91108503640b9dc1 cb55747ed71de3c5f258dbbfb8983f1d9e3b9e96ceb7d5a5acb1391600970ff7 b93552fb54647cc790ec13dba8559469eb33df63504ead3894c82a96520b0032 8ca866d39fc4e0be16233cab8cfc2b2756f263766d48e3b35cea99d7a230f98f e4bf1324c0fef0859894525f97acf0a55b3f6521ad16f55896b134956e807e3e 9831a60d0ed54a6c6e31ed655a03ba22e2c886679ef68793306d69f21b59b52e 617c67c54dc091fd884650224fcbef5caa54711f4df427572b229f4f64a36887 d9ab72acf0cbc6bd71e773ba5061e4085740ba2d6e76e7e4654eb4ddbccfb2d2 fec667 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndResource [ 0 /.notdef/dotaccent/fi/fl/fraction/hungarumlaut /Lslash/lslash/ogonek/ring/.notdef/breve /minus/.notdef/Zcaron/zcaron/caron/dotlessi /dotlessj/ff/ffi/ffl/.notdef 30 /grave /quotesingle/space/exclam/quotedbl/numbersign/dollar /percent/ampersand/quoteright/parenleft/parenright/asterisk /plus/comma/hyphen/period/slash/zero /one/two/three/four/five/six /seven/eight/nine/colon/semicolon/less /equal/greater/question/at/A/B /C/D/E/F/G/H /I/J/K/L/M/N /O/P/Q/R/S/T /U/V/W/X/Y/Z /bracketleft/backslash/bracketright/asciicircum/underscore/quoteleft /a/b/c/d/e/f /g/h/i/j/k/l /m/n/o/p/q/r /s/t/u/v/w/x /y/z/braceleft/bar/braceright/asciitilde /.notdef/.notdef/.notdef/quotesinglbase/florin/quotedblbase /ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron /guilsinglleft/OE/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/quotedblleft/quotedblright/bullet/endash /emdash/tilde/trademark/scaron/guilsinglright/oe /.notdef/.notdef/Ydieresis/.notdef/exclamdown/cent /sterling/currency/yen/brokenbar/section/dieresis /copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered /macron/degree/plusminus/twosuperior/threesuperior/acute /mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine /guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave /Aacute/Acircumflex/Atilde/Adieresis/Aring/AE /Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave /Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve /Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash /Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn /germandbls/agrave/aacute/acircumflex/atilde/adieresis /aring/ae/ccedilla/egrave/eacute/ecircumflex /edieresis/igrave/iacute/icircumflex/idieresis/eth /ntilde/ograve/oacute/ocircumflex/otilde/odieresis /divide/oslash/ugrave/uacute/ucircumflex/udieresis /yacute/thorn/ydieresis /N74/WOWAIH+URWPalladioL-Bold -1 TZ %%BeginResource: font PASPAO+URWPalladioL-Roma %!PS-AdobeFont-1.0: URWPalladioL-Roma 1.05 %%CreationDate: Wed Dec 22 1999 % Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development % (URW)++,Copyright 1999 by (URW)++ Design & Development % See the file PUBLIC (Aladdin Free Public License) for license conditions. % As a special exception, permission is granted to include this font % program in a Postscript or PDF file that consists of a document that % contains text to be displayed or printed using this font, regardless % of the conditions or license applying to the document itself. 12 dict begin /FontInfo 10 dict dup begin /version (1.05) readonly def /Notice ((URW)++,Copyright 1999 by (URW)++ Design & Development. See the file PUBLIC (Aladdin Free Public License) for license conditions. As a special exception, permission is granted to include this font program in a Postscript or PDF file that consists of a document that contains text to be displayed or printed using this font, regardless of the conditions or license applying to the document itself.) readonly def /Copyright (Copyright (URW)++,Copyright 1999 by (URW)++ Design & Development) readonly def /FullName (URW Palladio L Roman) readonly def /FamilyName (URW Palladio L) readonly def /Weight (Roman) readonly def /ItalicAngle 0.0 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /FontName /PASPAO+URWPalladioL-Roma def /PaintType 0 def /WMode 0 def /FontBBox {-166 -283 1021 943} readonly def /FontType 1 def /FontMatrix [0.001 0.0 0.0 0.001 0.0 0.0] readonly def /Encoding StandardEncoding def /UniqueID 5021141 def currentdict end currentfile eexec d9d66f633b846a989b9974b0179fc6cc445bc2c03103c68570a7b354a4a280ae 6fbf7f9888e039ab60fcaf852eb4ce3afeb979d5ea70fde44a2ae5c8c0166c27 bf9665eea11c7d2329c1a211dd26bb372be5822f5ea70d99eb578c7befd44cdf 045a363056e5e1cc51525ea6fc061dcebb337208eff729802376a2801424f670 0e7e6397b28f15bc10b40012b0a3eaeb2693e8f7f627c4c9c7c6c5bff105c1e4 1b2b9e8f09253b76040d268b80719e1b3f5a55aa45acb756b8e2bf5b37627e46 dafd4a4f741a859bb5f7d7c77fc7aa96ee6ac93c06ca829b81fe31e32d59c6de b1bf3b6ccc5c3c9296dc86d01487f08ab668f656cdd88eb816aedd1efa47f014 ff598e78c978df18f8f66057351bc96b48015af2e09e3e318053e952e9ad4037 bfc7eef9cbfd7bc35746565b7efbf241639793ae357220843147fadb929fbd24 01c88a382f00bf79554d125c543455330002b0fe6d229830470c78541e78dad5 3e7c1a619b91215ae025f81561441bfc9ada446035b8eb9c3d69ba746ad0ccaa 049d1fe4d905df3f48d22900e02a23fb23f6b571ddc8b2cf7008431c1ead7f6b d92a2c42caed94f9714f44e3ce31fbaf23a064aa2a7f13d6e5378e28539f0009 323a0755e58ba7564a408b142c230672a423da6a6e54ed162afbf8fadfa75b0b fc648d5da6ec31251b62b9f619ad9460876eefcb8f9d2369ca3055820306533f 3c1d47d5a2ef97619fc2c780bcd9540a820748369ffdab9d52492f130c0ac3c8 e0c87377da6c21f1de429c15aa939877876f84605f6785b5adea97321bf29def 3692af535eefe801975f94645272142128a3fec8b1bceb6e57b83520b5c4dd69 36db8cdef6e49b8944ca31c59f8790cd3fed58f1182d9ac6dcb2d75b4881b430 c67db769b4745ea54233cdfd5600bb2a96209a83fd04c13d4aa4ae27ded97d25 93f6fda5f64711ec7a2899ac98bd8d8879a6a348265832994c3bad80e1d12291 cb05924302b780443a76a09e1c27e8dcdcd87ffe3be17de0421a47733c2bd723 9c876942155834190f65598810af8cad9842f8a1e3bbd2ae3348bd8fc9189fe2 ed5643ec4d87148775121702eeb7639acd80ef4f07542bbbc09f98f81fb91a1c 89c691bf38ce4239b11c1c0d9a6b864753e204c0bccb093e139f9d6104fe0584 df022c621f86e5bfe2e047fd560e8a89b3872c87f7811e9ebca9cf182472841a 88e7c421e5ce69dad123b88d4e6c0fd85c86c74435bfcae28c2b5cad57d91a9b 4473906d044085b5336b066c6d9ce994d2b333f470ad32d3bc28ba2d699b7ae6 2b689cd50ce2d458501ebcd2381f3430c3059edca22d9f15ca03cd18cb160e59 c0e960f79010dc1e9ec40ba6914f9fb7951cb4d5aafaa135c17d5d64cd848a32 c71a5c856cc9c94f24b6c9af854b83771678c0b0b4c6a4d9c05ade69e5c04697 8751f11d2b8ddccbdeb88c4e218bdbe5e056b965ea185e8df96b9fe97ee23dd4 5aadbfe02b427222b9920e8f4e2836c05abeff261124dc587c5defefba7f57f2 8e24a5373c30b5e3de704856db7836d1d5829443c253b45f7f3efa1dbeb4d8e7 2532c2593550eb0df54d9a9023452df54e52b2d14ccd6f6eec6b703f4300d555 7019cd90c60aa2a5a6416617a6d6afdf832b4dbbee2065a7c3099520a0fb7ea0 4cc88522f0ffafb42abf6e443cc5934c35e1576099082701fce199811dd294cc 46c3a1889b7d6498a0f0c355f94e92659245514fb48ea19588ba2944bf5068d2 f6b9321ad914ea4e82b712d7809e872c87d13f9dd30928904494416e3df1d015 50fdd11f791b3ce3455a4985ed699f01d3cd324dbbfed9dbe2e0970ef2443dbc 653eaa60868049afd2c3508c385f2ecade863c97fe52087181251ad87a3bd34a 2cb7f628fef7e2e78b2eda73ce47dc93cbda072bf693cc93ae903b04dc70ceb1 26e37f9b68dc21542228a4fba8df907229c1ccf681450f0bf41741c5db9bf5f5 bad37d218b1c3735fb7d517c344afec68f3016c14b5541515438e1f36dbc13e1 1854a23af95cfca48327c3ae4393c1f3eee76365a67c3b6481cf7f0a74b12628 c0f838ad7ed830886303207df666d3e2e0c51436e2109eba9af8ccd5c58b548f e6133745bdaf43e4730e8575200f70d3ae26f23322b5f5b1ad9f6617f74471ea a474c6bfa593d9d8515c6acaa51ee95f038e3e44de07043aa4b9f586c3332f56 ec6531d2a744c59062139575862edb989744e06ec1d1d83451a800295766162b 7ba50b9c4156a24084cecdf954e654c66d1761528870007cca3a83192d97b128 519e4ccc9e0f20d821f125dd9b4396f2684bf4963fc18b0142b9651b2647fe0c de1a2258f05cbac20ae0c9f80ec6f3c888f976be53a8e2f5d224fefc2def84ec fa903bf2060e87ff1ef88a9cd5aadbf02da65bb417eeee66ff7728f306820389 6c931c86081b9870a584f81c6c2378c79ffe0303af1b0861c65d9ee861f61d00 9032fefce1449f0e80bdcbcfcf477a2c30a72ec227b208ab4396872f92559815 8f2e622588b3f477531712cf5ad2c3154fd5480e88e9beeb2499bf34a46c864a 4695c580449bcafd90bcaba4ef9bea75b2334b6d01167e103b260c08c5e2b71a e4ebb377d4c725afedfecbd2e444d7994ff2820f805120ddc1fa1f621b1c51ca 8910beec97ab3161cef742d92e6155a7ed352738aad1b59b8a9bb23d42180423 07e484efc0157825f1bb8d2784f150b9180ecccc77586e39586db7cb534d1d0b 259066ae6c0078b7695bead59a29d4d73780fa7bc9c84e874b160f4127d1975f 2ccf7f0a72701a3c871a725d803630c901b119fd2a9e94e2dd99cf4dad685eed 19831a142a95840fc5849db4c1990e870e808812cd82b634562e96b8ef8c 66bfbf49c4c5b41e4e69f5d4a862142b7a895f9db67f41582d0c8174604408e0 f60883f13152d70d8c76e0bb114f84862e6b822a1206998814ca2627286b9560 76bd1b11d1b68e3e2978c2661e7181897aad031b618cb8bed3f5be7f28a19700 a5452c092484fa6faab5fbdea2a2c207daaf55a44d91b8c0b4b022fa0cd8b0ad 48bf97b97292a18070a03d6e1acff8bb118dfa9cd64a24137f2da6c21103da9b eaa7e70b4c0c5cb3807efabfdcf9f836d1436fef3d36cc0fd6ece0ef01bcd9ee c871afd57fd3d8b2b8bb46ba0b2a96e810decf6c6db8f03151eb9f03e231531b 8ea85aa74fb443296734d6b7f9a7e71d119318932e563c8827cc340ac4350dd2 ff1a3ea9f8f7b1132bf87958f958b10401452de8670512ae5aa12b655b91d504 3df8419dcf881e4a57135ce1ee3d8a6c8d67e74fb71f2025db83b2808cbcf670 68f475601ade4876d3fd2b0a21e719d5677db0e64c7650df6fd8a7f94139edb2 51936aa43d02f839dd161168565e07ecf797e106c1cb188fa1fdddd0f955a08e 8d8263146f07fee07acd9a4a3b90ee6ad37a34c12b4f9586db6610fc1e7cdf58 9ec83bc8b52d78b387b210f1f08ea9b1e0a06082f5508386711b833e46fcb289 f3fed3dbeb40aec6836cddc6d66851e7c27026085b91c9d740efbbdc8337ae3a 855b73cb1f315c3f857eba17fea216b3f9fe632a666964ef77572b7fb2d43655 82e4b187b4dcd0dee307c32699453037732f54afc0baf6068997cf3b2e26e96b 6f0556d49923d63173c465d725223c0f1efeb789f812d0565f4bc740aef26efe 447e2c668bc0d2196294fe173ea579acdcd5ceb4ec0a94c48f803cf8d3d3e917 2bdb50096c934921208a8e3bb6ae1652ca25b42aeee769a1b59d15d30b7292fd 83b6e1d7405964ebdb1f1997466eb09b29b743721932eed4cf9c8fc97fad356e 02cc507e81cadd7262fa3d6c4d69326d31dc3fed9625ddbbeeadb867ddb7ff06 78f4ef08ff2fd416dc8ef9bb6eac27ac7a411bab23a8b984b10a9e09d504e360 902f0680ac09575b8ad8ad405ea6850c70147753e076b73687915d05705f3876 14114867b579f69e34040e2aff508ce7af4b0d544e7bc695988933c5c4875e4b 83c31dfcbfd24365a1d195c876577c21918d904df26c22f2ce06915aea5d9222 0852631ccf8bef92621606ce2cfa8c707e2bd307d51d7ed874d3948549355b2c 66e26ca8608765c46eba73e3fd9780a42ed36a33e97f6d1a429efc799ddb5a62 5864ca94cd5ba274fd97632c6c0f0067967a1a39c2569d54081804f5fd98dab7 20996e76c827664c5aeac13e06f1086ea20848a8e5e5d3dfb2424b7cc4514be3 1fc56f48648689b5a0fa8daee8ccc5b3cc8c653116d0e6aad719a820f2262adf 2abae1e46eb10e8d9cc3e9f704859d7495d9e1ad240c5c1e3e022ae5617f57b2 253f632fe978ddaf5e0a70c2137b983b1a54e4a618276284cf0b0724c84017a8 81ca94a329ede84cec59e4c56d3c57e14995a8adfa51cc6c3a84d3dff5d4c7cc d9314923f532e28edc1f4ec3d0e698d82bd4373225c6385265f0b26f3b72a686 43d844b4f853852e5654a33560bdee0efa73596387c452421ec87ef9be08c47f 7d1c871be42e5ceda6afb08bed690723bc291f6f4bd470436d8b76e381f808ea 32f31c59449f4b5e9d0297f0907ab25ac2c4f468cbae6939d00ecf6779f35cd7 820b221fe0b71a0ca584024c9645755995007ed97ac659acb1b0c3d46b8c6b8c 53adf57d33e98c6c33a6a423c7dd79831fedd65bc403afd0a9a11d8b481d512a e89bca5bd92b4a41edf74bd6546a647368ab407dd69e00021831ddab3d794484 c4a85b8f0097dee9bd4a567a08e6ee8d270015a2c4dc01cb803f2d05c45154ef 8c5e57e07cf0a0966ecf94f269208fb8cc62857042f747a1d4b6294f2a0c3175 54a76ded2743fc862c057f3328a845297214868cf511a1b5c054cf08bb2a1599 0754137d17bc7a036d8aed54591271acc1809460a8dc42308e7330aa18015ef8 e9f24c2853ec5daaaa0a3cf688cfe964095ab61eea65500d048e92a7aee96bcc 291c59a35d4bb25a3830cdcf5b4a754557d86ffb6d567aef67b192c60678e869 d053cdf727ae5e7d1459bc80b42fec5e2b570691b761fe3254e9d2cfece08d08 7e6e2768709a41da13f0f31275df573e4edbb8e19df495be97e6fc940b9b5b0e ecd02e56afc5b6fdf9dd69e7635073b64fa7a640961e9292103bde93e7df94db b7fdc31bfa1ab11267eee9f5c707f1b261e4663f88287a2e5e62b57b5fd70ad4 6c91feee98a88190b7897005153f22be6722679f38b101a1170de27c5d366346 3e29782318583b8eee53f2982a3f0e7ed580da42b0a34756e6d38d3fbfd54a1a 5cce363de2eab031aabb172d7e6b75468e46aa74d108457a7b07751aab03f8ea d182f797777f48918bc9d58d2a0da9dc23ef7d741dd9fcbbaf9acc9290c79fe2 4f1a82b57e5424bff39434e3f7580b36099a5f4f1d22d2de757ec74ffc5e9b1d 2f70a87d381f424fc2f34bf902f0c767716a5d86a42d4ac9b54c9d41e0dcb52e 647555d998b341506b4885217f13300d19a2518fe3b3ab668213fe1a05c5591e edc1b75251bff8576f1c9cc5c0e5213fd3cc0115898f910f38fd25ce03f740c9 69fcd8fc6085a176cfc7cf7e387414e4a017f9fae43f47c36e5544a536065bda b11cb8c655a72354626722c510d6e242e10824eb3fb4e3d4a824349a563d628b c5b81d682ab64f0ab582af6c983d4950ae2043610480ad246981537724494274 23f94cc4dccfa7d52dea507e5d026aae08682590f7cfefd3404fb795ec4d0857 aa5d6620c95021df41f664f6dcf35e935a614069343e1a056dd350a3cede 442b5434a2e68b180cb1d3458f56f419acd8cfcad7acce883401a9768824045b 88c5088b012e82869a09552c199d0894aea08b8fc25115c2b59b1671ae16e0b3 5e28093cbfb2d35b1e1d04a56ef39f058f8098bcd2f87cea850cd7fe407f893d 523eb783e2dca887b020b435c1f8c806b672d2f60b7905d66760a048f140b93f 9e8d194e795b2651c80781d92e8ad166e9bbf5a50b61f3a8dca03f2d91ac6148 2896278e63f585b03db9f715877fac490369631461acd157d7939ddad2cb5f8c 0a6f1295c15c74de5516e8d98416d772984988c4219051a2214b3bfd198d6f5a 35673d4a83705e9d91a2fb90e4270ef7a952afc2837ac35b7df97ec3d3b49dcc 3433352e33683dca0cd61d64cd7396d63c7df86581752544d7d4da92feab1517 1d2239da6049d53d1a83c0538df2f8a5eee878e7cab71a260e89ae072d1e66ea 6a8e5e8456d81d33e6f388e1c1c78318392deb511f27a0b6c1ee8c0ec10fb99f 32bdd5f25425f6b11805152716480c7db84356b19c7447961734401f5430a6b2 402d0fc042a567c7b2297bd559f2e8a6dc5eb9b6812f1f199c88649d3b6c4934 19c4728cc33dd503e68d9ac75859f81bc3312e178238b9d99aeab380fa35189e 07011e9324df8e45d0dc7f56984b4c597e90148e4ccb1faf40bb31bf70a2c9ad a5241d9e76d09ba6b49afc99d60610a5699fd683e7832862fcaef0977262ad81 650fb59d4b8be6222bd41fa86dfd91484e6fcd36d3a56369a3d88389e9903fae 5f92c8a1b089a00191fb71043266bf61cf78034c21ee6906f0992088fb4d8398 96fb0cd79852892b755378bdd7d6eaf1eb537122bfbcd3d6402faa54ca242f0d 9cc02f1bed5f60f5c9977d820e70cb6446c8c48b82ffee4c84a9a10f1f076e48 4045cbb025716c0e57b9bd48478b6a1e8fcb1a90e70336502358bacf8910da32 fd992adfbda97f43f98d5e4c9c8fe491582588cc4588b3481e1d0e91160d1fba ea10ae402ff2c0689d9b74386a24222d4cfd10a6657a6f83dcb394f2d8951ef1 c42eeda302d6e6205b6916d02975313e16be56fc5ea2ed09265d2aeeb0bd9b11 d5b14216235e2c944cbc1c5103dd946a34e22a5deeb61a6b2f116a2fd9f535dd cef9dfb5e2becf0e81e924ac9063ff9034dd53aa5986f04d17be7ff0a4839e59 5b9c517aa0a8353269b6c4e19ee407ff50f4d224b1bb55e4436c6564c7022e05 d180df588df93b6925100d074e11c6d2880423b7548337e211b10c9b5c28a6de 7b0329006e4af46a848a8d0e630028317c6ffe3a2db30ec928544114db706b48 d8a91dd007ac7d759ce74d6a9f75b373fc7031b459b197408466080e03add276 01ecc2dfeb5a9335a6facb174930ef07ff70eadb5d360e52b0879e3ff37e86e0 50d9e7b62a581199e65b1d8e5f59136d8fed9bef89c39637f4fffd5007859e6f ddfc381a5725953b4b89397e924525bddf5fc2af9a36305e36c2a2ddc690256d 2085b1d5fca9165caead2464d8d80ff6c61f4410be7699ff1a049f88a34b3f02 6df847160d6a0b00195df9c651aa32cabf27c7d8ed04b4a6311588b431ada2b6 67b9a1a64e8f433bc771c29c5837fffbad42f40083c2e412ee5e6ca5394d5b05 fa1a04f498c68d3a49078a7e2cb48a4327cf4f98e05d5313aa0122df71ab6b40 97497eeb38f0274f938c63da36a3577710e1bf34f0a215736c4c7662527f92eb 86b8bf729b4b7467486c673efc9f867cfa5cfc66cb3f02ea2e6627c292001d28 a40628f89d0c92de664f6eb976b3085676eadb90fcf679d810bb18423e8ab4d5 1a3836f3298ecc4d66732271a2c75cb9368d70abb56b7fd0ca544acb26aeb786 4e4d9519f85b14acc3a22cc114d6c191ceb89a2ae4721c6ec0f48620b2a6e943 712e439faac3f534c3ca302f30a802f8d53613f0ca0b415712161c0ea8797c36 3271f8a0ddadb0c676757f9dd3565ac9c9cfff5a359f0f94b0bbbdc8f916dd9c 3414085aedec2ed48949ce87bef5068b17d035e4498f6a975c519697625036d9 ef72eed8c120ae25caf0ebfc32ab5db46cd7200ba7fd0f17418b4dda28877b6b 86761329f3717a831b6b4927d6eab9c986de46449de191796ba0403d5f92014f 0c6d53d75a253ec545e319d8936fbd2212db0269be8b2d96770f9b1f9faa5ff4 d0f2a55ac78a23726c41865da4e5ec2cc741d4717d84e48ff0be0d9c1da98d39 a2ebcdb6939f5d72fec1bc9bb1492be948713a9178cd771a281d685bb22880a9 9235c48f5562f956cd518ae2b2927c68e34660a4be38f6816b2cd916f549a9da 21f3cfcdb92e145d9bb7031a79a6455acad831ff22861e17e2f6896603072adb b1f388eb83160566db82f5fb92674dd223d544568af2b59932ebe10d64f5fbe3 e3039d622d1d229d18860923ddda81f127a8e35a5228be090d89f6838beb402b 7d49dedf9ebf7d045efbeec7fc12cd8ffaeda9c40ad5ae1ef9dff088330f676f c6160b5fcca005587d8fb5e68b9516c4c99f5df780bead3ab69689dd74164d43 c048b6f9cbd3d6037a860086d88bb299fad3b6e725e5c68ba3d0e5dcf2f6e58a f26122c2d5ec588931baf8d0c7c1150debf459d141a864169d0860be1c2efe74 b9cd770672dfbfc8ff4e57dee148c1350e58eca8c4ad2dd5e5949c130d20cbad 9ea9f25416e255b5a3b35de65b00a629ef39ea60f41db9f5cb5c7c49d40d8f7c 49b6a14138e2628de0c4f100d8b16ecc88e003da138093f46524b0f515d1786a 54640f0247d6561af9470e9422f2d3a2016b90b0c01c6820a50f98904c95ae4c 69faa9398b6d6850919383c30bb6c46a2d6dfa960a747694b27b16574533e115 a2d306a0b60cb96528fc0ed098926e1e4f3ab711deeb7205942d56e876d3 bf340fdd04b566609e79c9848e0168e486db5d57149b3280cba72b3406153236 b7a28d20f308c43a95299545f27ea902f484d7ef76de5dce8d07a5d43b48d40d 3de3b9062debfa016cf35b329bbf9117411197aa294d99144ef52364bbef0096 9c9fae72201f827cf41845be0bf8afae8348f559d6ad28e028e84a58025b1f47 e53e0b124a48cb687fec13bc7e4b248254896cbe4e014a9beeba38f5a48c21ec 09333bf65b6d8554c6980f2f85f93a98044f77c9ef13c7414e70d18e2984ff74 48028cde5d94c034f4f8863948e55fb6a1424799fb170cf7f7c68dfb46e31cf2 993b95c3dd77a330b5b24cd3a8ce673919ed06056ad485aa57fd7e10f06eb24d ecb7040afa07c7581feac213fbea06e94be53ffa08384521cc92ecd90d53471f ea922d0027d864988eef25619eab1340719657bd58bc53d145e742bd90605586 02238917e270ff6b92a343f440e91d043f839fd716ebf582a3d80351cadc60b7 33e50fa695ea1ab37072edfd43571c36769b6559680f45b2f405589f1513c637 efa4ef95a80220fe72248fe394ff0e9cc2ad41e8c5d2d214e8bf0c3e924cbf63 71e84540487c1d89f3910c2d2af308222559dabf07bd914abc6b9f012d4c70bf bf0b66ea8f369480927308b2b729247adbd9a6bd66517a4859fabd2c48903eb2 9eac610ada000a7d6d9caac5234d5f579f25f6f6c8b0d9fb1b359eb83e522342 7536940f5bd9fb3f8086075cafaa40cda782878dcd1076b0d3514f2eeb8c2fd4 3f2c55668185aa03631141554c39c1b593ccd10c045215c334aa21432f7b87cf c3379e3a613355debab6116d53bf50d681063ea6a439f193e4f1dd4f52f79095 71cd4f5b063685528c3842b0c5aeefecb4b82888b0702b8643f60a51a6ed3190 6f0aae5f86d4fb8342a5f062f69b935148e81c557c4e1b77f5441cda5d64f960 82dd5c44fa3993d3bd1d10c217ea56b73b3bee1bba6501b5d4ac153cd1ff098f 42ba7fdb90c16c7f2ab7bfa39e4cbd884d4994a7ec9407f5280fe5690cc03763 d050ed7c5513b0e7960d957e19837fd227b352ef0116cf0ec79c14ff5afd4dea e3a5330bc8a57e29ae4c4fbfc64d85b6442f844f2fd7d0b9789d902a8634ac0e 223841d87218c21f110ecd864bed08172cd2ffce0795af5937ee7475ce269618 c727b596c3c119e92e2623176c2a4c686c87ae283e6f3b63483ad8a2aeb5805c 2d43a1c7eb4f03d3849619eb4d84fef013c5b4bf8cca17d75bf952b2759825cc 4836dd015b037c08031775b8a3004f409fb6f7b0164faf03accd9da7833a213f 9f08dfc29694e52aaa56e56f82678a4327eb6ca34eb5a6a8b1c5cce403da3b3f 75110f5fb3a4f452bb1eb3476551dce81b58c71a40d7aed32a610fe049571574 3c9519ad6a1824b3c26b5f595cade6f1edafb2f2b0b4d2adf82aef35640e731b 90c4f19a0999b940d7b30e13b1118fd1a2803c9ed4d2b1f245e01c1f36626e38 19e7dcba9450a2be1f6ea11be2f6896603072adbcd36fff8986eb0a40b5f6822 b1877c6951f86ebeafe1c5725c894669ff44c8baa2fc54f78ff9d34a41ea24e7 a2acb665959298984c7d293b34ff96e72458ec8813c0142f72dd544a34124182 69a5d5920294d27652fb28885860f09618562cdb8261fbd05a8ce52e360efb5e 0ecf810ffba9bde380b680e4c83727f93da2d651734760a892395c9d3e4b8ec7 b654d317d67f016b4990cfb9b7335aafb1b259a7b19dc09bc75c5cf204e6802e ac46a0352a8472ee26110dfdbbe911de9b74149c5f5242d3cb253c36a84cc837 d76b2ba0de0d5f9309712901fd044f3aab455eb7d85772d6243a891f19ad2393 8fc52c0aea6475a5c8bd0998ad8896a1b03dae0e909e1d1ed4364a9cce538499 30d83cbd6e93f7b7ffc1358e23d31c8657ad589ae660c3c5c5827a77db585df2 fff4cc6c35511abc86943245de79556111871679f33d6ad71ffbf5c9832bb409 035d601cac8f4eb2f16f8765614227c71c390c313efab6f107f10f868f5484ea 21898dc1de852e6bd0984ad73f4e47f96b61ba0f88e99544e109918ab0bdca93 1d77a978c4da25a1ccecad509c077c58f78173615c900af9fdda92fffcf7b2d6 744c0f0a489fca954a0c135d6646b9ae2acffb374247724a3901fd546d465b4a 4944957efbeaff9e13e90690a80df614f24e9d390ef78669c5e6573a80a22d36 d08f90a965c7707608d027b4fb3b467d688aa11ffb6f594d326d48e679190a0f ae0eb69a8b45912e16bf834da5b13327538d51a4bad1812a8116e602c7fa4a91 54690e3f2ed8bd1af09ac4e8a0bd65c5d2cc5f0e4927b5d413a21080dcfdfed0 80f13e5f04e0230ea11d6366af685f88d99f32705ffb5c319091904c06c3006f 857ef419616a0d2e3d646143431c318824fdeede269c08ea3961649c0309cf1e 532885a495990a9b384b9a9f3542c8532923e209e8f48a84a163cfec2ce14395 6a8ecac7d4e624353575e13d49dd5af366220d2b6fc2a5fc5b4deecafd111614 267b7a44683d07e37fe59f2d9928889665258b1f0deee59a79bbf8a64d1c43a6 e632208bbbbe8fbca23f602f13b2f4140a0a7de0827fa4cf2e4bf7b7687f1681 d103d7dfc415017c2e5851a1124872141881665d08232c5a14a7ef671899b059 7c5aa584aa00411d4359b3ac5e1a129d34e4e1db2aded1742638e8d15a5b5960 f824bd17a8455f537a947b9726cbdf96e91804815203bed8972a2e4b94bdb2fc 07702e19f4192fc29ad6067c60d1cc7ab83fec19c5abd83bed157b1ac50f9b0a 3df60af84e3c2f621c38c0caea89b224966e6b589895a6c7494a19f5a5ca6af7 f917dd620663602af7f1b3230e5a39c9141e775c84f5f08df1178337c108 60a87afe63e91469dc77bfb5ceb75a3d6d2918ed8ba0d26d2d81fb0531381f88 00fc7abc5436137cb6ecf062228cb9eabed14de2329ccbde222b4c31ffec8df0 ff65223efcdc28f428501de2740a781e2fab047819d47cc58d026d6d6cab0a90 a6891cc6a139cebfdd92309966a5ff87059721a58539efa64ebe9014bee383bc b284120d2ed537344e37f91b322cbe72e847bdf0d0a61bb7f92268f4b0486e93 2c0fcf6c832eba5b2cf6fbf217e907c79db9cf3744eb03feba08935fe0779d10 b81170d73b4afd4adb5445a882910d626241291fdc1348552670790dd6ee29fe acb73088df117bea075ecb22b06726d0af899b2d00bea13339cd87980e868d34 5c0543c256401430119ac825f0d5049dfa74a19f38bb8d85eb581eba032c3efb 399326e705dc06ff7aa54ad78c84c0800d3bd58f5d44f0b16c88afa1a33f9a3d 8c9de68e908fc73316c4cf81249af3dda3a22bfc8e3ff2bb720559bd94414751 83c822192f9f9d3abf46bf63c8cfc8e9f747ce7492ba1d2324498e5e610a40e7 17323278ef04e4e8bd3c0d0ea5f7795acb2b9e64cbe329398e0b4b87185e84a0 dc0dd2c55218ba6e3f822ee0c8e046fa39b89cba2a11a006aa062613d6655cdc 1c1013abe465f12966efc18ef370ed03556776c935e852185d3a41912feb4ded 8ebc133a7d0d6405f1e03f6dde38addc00268818b1ca06d65396cbe1331b5050 5f773eecd0a1823142fb4bee4321589fb95f034428d652481bd9cad556fdd12a b549ae12560af2619ed622144eb55301f23ab090ad52ba1f361aeb8da3a48191 0a48a8b7df5e291421c2541984b98d3c179841e3831ec735c87bfa0ecf701f13 cf95afeee0ce2dece4d1e7dbf13c67f722bbb3ff9755d3f78a9c2d4114a9f455 e1958a5819180151b23ea80964e0c523c393a66d13d6c5411fa154630881f8da d054b1929cfa5f5acca7b3a562e7562dfeec3fa3dc6672bd90cd1c0eedb3457e b981ca85f9765ad3bb7234766520142f16f17126fbbe519b4f8ded215af4993e 02d198737add47e54e338735fe12ea3682833f7726856b39c56dfc6f7de1e906 e466137be9d7e59d443c692249430bfc9d970698a4702ec9f9886ae0bbe9a3b7 14fe7c36cf7f97cd8e915d11a05ce18afd61323a310a92bcc88468cf05e784e1 c49bea443b4c32274e5102564ee5865cf25db5a6f56c373ea119e89cf92c7cfe 8ab52c53341dc1d10d18f3d2433b0541c3fe83f3200173a57b3d2065e6f35ffa 7ca251ec8169abec83116100d77604270d2c9849bd9c7f9b18685e7a2ccc0138 403f02f9c90fde07b9f21bb5e53993133164571822967313f6499c0f4e3bca11 0bf1f1b9eda0d0492a39f2a819a7311c8ad4b1c2a77b4f452f4e7a72c491c846 8f80522afb2cc3d009a8b51775d7778ba082a471a4997a138c76b969c03938c2 42e459ce7f8a1dade750e43178d7aa03ae4a0313720ace32871fe1e505a0fa19 c9ed656f63ae46b6d5078a6395348fa3af0587d4e1f7ab4d8e541341bf7a7a78 5f00305eaa9ca7ff767e09072e4b9ff642262d01acfe1a26e65fd9b56ad8f1fa ad5f54016b3279395647a55933d4fe48aac8e930688a25647c65cb96d86e0f8f 4703fafe0d904ede9e0acb8ae513fdee8b7afeed197cd0a7c1ed5124847302c2 845cc54c6daa5117ecf5312e9c3e8c7f5becb922c87d3317b0a8e817b0043121 7a68f6497c7c8d59aff22d1a8ab4b83496f18ec50d05910ffd535542dec3a99c 16f1db21836a7423bf21dd9f92c466f0feb825390201e5b31ef93b13fa2c8758 e38f0574a31077b844e28b3762d2a5b1d18ecff1ffa7ffd715a538327f90c291 cd5df9ccde6d0bf2d4f96c2128e4e90ec114e8c203e4e718e4f82b6c2ecf8d7e aed62367a9d7b32e616dfcd4813b114bbb6f386458803a3b0cca19c5630d6395 38927f61d836c0bb1fa3280125c40d60a177873de8e8b1eb72956e11f1fbb379 28106237b620da015a1094e59c236eedb62e426bb405b4722d209f3697b5b193 314b314b744016909d590f37b91ae979612411044710832489fbe9a61ac10f7a 8d02fe6fb107185cc1d3e474d0a784b8c8012068dcc6 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndResource [ 0 /.notdef/dotaccent/fi/fl/fraction/hungarumlaut /Lslash/lslash/ogonek/ring/.notdef/breve /minus/.notdef/Zcaron/zcaron/caron/dotlessi /dotlessj/ff/ffi/ffl/.notdef 30 /grave /quotesingle/space/exclam/quotedbl/numbersign/dollar /percent/ampersand/quoteright/parenleft/parenright/asterisk /plus/comma/hyphen/period/slash/zero /one/two/three/four/five/six /seven/eight/nine/colon/semicolon/less /equal/greater/question/at/A/B /C/D/E/F/G/H /I/J/K/L/M/N /O/P/Q/R/S/T /U/V/W/X/Y/Z /bracketleft/backslash/bracketright/asciicircum/underscore/quoteleft /a/b/c/d/e/f /g/h/i/j/k/l /m/n/o/p/q/r /s/t/u/v/w/x /y/z/braceleft/bar/braceright/asciitilde /.notdef/.notdef/.notdef/quotesinglbase/florin/quotedblbase /ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron /guilsinglleft/OE/.notdef/.notdef/.notdef/.notdef /.notdef/.notdef/quotedblleft/quotedblright/bullet/endash /emdash/tilde/trademark/scaron/guilsinglright/oe /.notdef/.notdef/Ydieresis/.notdef/exclamdown/cent /sterling/currency/yen/brokenbar/section/dieresis /copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered /macron/degree/plusminus/twosuperior/threesuperior/acute /mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine /guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave /Aacute/Acircumflex/Atilde/Adieresis/Aring/AE /Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave /Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve /Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash /Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn /germandbls/agrave/aacute/acircumflex/atilde/adieresis /aring/ae/ccedilla/egrave/eacute/ecircumflex /edieresis/igrave/iacute/icircumflex/idieresis/eth /ntilde/ograve/oacute/ocircumflex/otilde/odieresis /divide/oslash/ugrave/uacute/ucircumflex/udieresis /yacute/thorn/ydieresis /N71/PASPAO+URWPalladioL-Roma -1 TZ %%EndPageSetup 0 0 609.71398 789.04098 RC 1 0 0 1 71.73098 729.26499 cm 0 g 0 G 1 0 0 1 466.25199 0 cm 0 g 0 G 1 0 0 1 -466.25199 -28.25799 cm BT /N71 23.90998 Tf 0 0 Td (OpenJade)Tj [-250 ]TJ (Pr)Tj [18 ]TJ (oject)Tj /N74 23.90998 Tf 0 -29.99499 Td (Release)Tj [-250 ]TJ (Notes)Tj ET 1 0 0 1 0 -43.22099 cm q []0 d 0 J 0.99598 w 0 0.49798 m 466.25199 0.49798 l S Q 1 0 0 1 0 -33.88299 cm BT /N74 35.86599 Tf 0 0 Td (OpenJade)Tj [-250 ]TJ (1.3.2)Tj ET 1 0 0 1 0 -575.08599 cm 0 g 0 G 1 0 0 1 409.13198 0 cm q 1 0 0 1 0 0 cm q 1 0 0 1 0 0 cm q 57.11999 0 0 13.43998 0 0 cm _op? setoverprint BI /Width 119 /Height 28 /Filter [/ASCII85Decode /LZWDecode ] /BitsPerComponent 8 /Decode [0 1 0 1 0 1] /ColorSpace DefaultRGB ID J3Vsg3$]7K#D>EP:q1$o*=mro@So+\<\5,H7Uo<*jE<[.O@Wn[3@'nb-^757;Rp>H >q_R=AlC^cenm@9:1mM9K8+be?n_QeP^ NBX7IVU(pbg>rO\@YEBLZl;D2X%'5E,$(^D-Gp8$el+#d)5;mS^!pri)`7]?>IDn\ (MdjX%8"=lDtoifmfrfm3,;Y8-?B'3b1)V/R]_!3T[)gYqC"7Bq5I'<@+?8]N[^(B ?ZQ!6(=r@UKQ"=^1IZ&\$KL>q>YOg+*4:*U_NsEkPJrp^[P^d pqFnOqXD9KF9_Y#%C;/?6#C'Zn%:I#Iq#ofUj]M8uifFd7cO5S1?Emn@*(Q8C]E8@c7mA0;P?=amiO<)9M4@ %'`FkZtgs\o4sqI_X4BW)`A5^CG7Ru,gtL1YY7qO4cf2BX?Q)o0SrJd%/PS$NEdOo 9<[ENn[l/D4G;*6KGul!$<-O.+HqaFq:%4>#4BKOUY`=A1+ZieaRn0hrm7rkUJ.m' nfi&'X8QR\0[l2S)m=AMb,IspHSU0%srf,$Sb`rFC)`@ &Td>;>S&,]0_iE`"LJ\]%gU-tJ/!8Du hSQ:9SP!:YDc_3_OOf&>YVZ8UI;PGt-YfoLP,ZLmRmQu)oSiApMF3ig1N(Tf)i<\1 H5=&cE"^3NE+%&5*T^ZsR,5R`Q")UZT8[*<27NT0kBn_\d/Z*-"?HWq+a4_%a'KW[laae^j Kn6"N)Kf3SV1NH%+2(aOP7&?W4:Z@:^PD$\La4DY&FfucL$J$G3l-K2KRjmbcOf#> $rK`=kWZlf%L?4*K.6dD5,RD*U;7C4EJ09?36`;i4BXHpOPUQoNu=RQbDIPd3'67\ 80^6B=`JaO8(db^j91$q;@Z#a=UcP87#@%(/k/Cb*@'WuOciU;8kDoG5X5~> EI Q Q Q 1 0 0 1 57.11999 0 cm 0 g 0 G PDFVars/TermAll get exec end end userdict /pgsave get restore showpage %%PageTrailer %%EndPage %%Page: 2 2 %%BeginPageSetup userdict /pgsave save put PDFVars begin PDF begin PDFVars/InitAll get exec 1.14301 1.47949 translate %%EndPageSetup 0 0 609.71398 789.04098 RC 1 0 0 1 71.73098 729.26499 cm 0 g 0 G 1 0 0 1 466.25199 0 cm 0 g 0 G 1 0 0 1 -466.25199 -20.92098 cm BT /N81 9.96299 Tf 0 0 Td (Cop)Tj [10 ]TJ (yright)Tj [-250 ]TJ (\251)Tj [-250 ]TJ (2002)Tj [-250 ]TJ (by)Tj [-250 ]TJ (OpenJade)Tj [-249 ]TJ (Project)Tj 0 -12.95199 Td (Release)Tj [-250 ]TJ (1.3.2)Tj [-250 ]TJ (Edition)Tj 0 -12.95098 Td (Published)Tj [-250 ]TJ (December)Tj [-250 ]TJ (2002)Tj ET 1 0 0 1 0 -659.52699 cm 0 g 0 G 1 0 0 1 466.25199 0 cm 0 g 0 G PDFVars/TermAll get exec end end userdict /pgsave get restore showpage %%PageTrailer %%EndPage %%Page: 3 3 %%BeginPageSetup userdict /pgsave save put PDFVars begin PDF begin PDFVars/InitAll get exec 1.14301 1.47949 translate %%EndPageSetup 0 0 609.71398 789.04098 RC save 1 0 0 1 71.73098 729.26499 cm 0 g 0 G 1 0 0 1 466.25199 0 cm 0 g 0 G 1 0 0 1 -466.25199 -21.59899 cm BT /N87 14.58599 Tf 0 0 Td (T)Tj [80 ]TJ (ab)Tj [10 ]TJ (le)Tj [-278 ]TJ (of)Tj [-278 ]TJ (Contents)Tj /N90 9.96299 Tf 47.82099 -20.24499 Td (OpenJ)Tj [15 ]TJ (ade)Tj [-250 ]TJ (1.3.2)Tj [-250 ]TJ (Release)Tj [-250 ]TJ (Not)Tj [1 ]TJ (es)Tj ET 1 0 0 1 174.34599 -20.24499 cm 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N90 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 1 0 0 1 0.49798 0 cm BT /N90 9.96299 Tf 0 0 Td (1)Tj /N81 9.96299 Tf -389.53898 -15.34298 Td (Applications)Tj [-250 ]TJ (of)Tj [-250 ]TJ (OpenJade)Tj ET 1 0 0 1 -284.43299 -15.34298 cm 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 1 0 0 1 0.49798 0 cm BT /N81 9.96299 Tf 0 0 Td (1)Tj -389.53898 -12.95098 Td (Obtaining)Tj [-250 ]TJ (OpenJade)Tj ET 1 0 0 1 -306.84899 -12.95098 cm 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 1 0 0 1 0.49798 0 cm BT /N81 9.96299 Tf 0 0 Td (1)Tj -389.53898 -12.95199 Td (Supported)Tj [-250 ]TJ (Platforms)Tj ET 1 0 0 1 -306.84899 -12.95199 cm 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 1 0 0 1 0.49798 0 cm BT /N81 9.96299 Tf 0 0 Td (1)Tj -389.53898 -12.95098 Td (Building)Tj [-250 ]TJ (OpenJade)Tj [-250 ]TJ (from)Tj [-250 ]TJ (Sou)Tj [1 ]TJ (rce)Tj ET 1 0 0 1 -259.52699 -12.95098 cm 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 1 0 0 1 0.49798 0 cm BT /N81 9.96299 Tf 0 0 Td (2)Tj -389.53898 -12.95199 Td (Binary)Tj [-250 ]TJ (Distrib)Tj [20 ]TJ (utions)Tj ET 1 0 0 1 -306.84899 -12.95199 cm 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 1 0 0 1 0.49798 0 cm BT /N81 9.96299 Tf 0 0 Td (3)Tj -389.53898 -12.95098 Td (Installation)Tj ET 1 0 0 1 -344.20899 -12.95098 cm 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 1 0 0 1 0.49798 0 cm BT /N81 9.96299 Tf 0 0 Td (3)Tj -389.53898 -12.95098 Td (Support)Tj ET 1 0 0 1 -356.66299 -12.95098 cm 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 1 0 0 1 0.49798 0 cm BT /N81 9.96299 Tf 0 0 Td (4)Tj -389.53898 -12.95199 Td (V)Tj [111 ]TJ (ersion)Tj [-250 ]TJ (1.3.2)Tj ET 1 0 0 1 -334.24699 -12.95199 cm 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 1 0 0 1 0.49798 0 cm BT /N81 9.96299 Tf 0 0 Td (4)Tj -389.53898 -12.95098 Td (V)Tj [111 ]TJ (ersion)Tj [-250 ]TJ (1.3.1)Tj ET 1 0 0 1 -334.24699 -12.95098 cm 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 1 0 0 1 0.49798 0 cm BT /N81 9.96299 Tf 0 0 Td (5)Tj -389.53898 -12.95199 Td (V)Tj [111 ]TJ (ersion)Tj [-250 ]TJ (1.3)Tj ET 1 0 0 1 -341.71899 -12.95199 cm 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 1 0 0 1 0.49798 0 cm BT /N81 9.96299 Tf 0 0 Td (10)Tj -384.55799 -12.95098 Td (V)Tj [111 ]TJ (ersion)Tj [-250 ]TJ (1.2.2)Tj ET 1 0 0 1 -329.26599 -12.95098 cm 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 1 0 0 1 0.49798 0 cm BT /N81 9.96299 Tf 0 0 Td (11)Tj -384.55799 -12.95199 Td (Jade)Tj [-250 ]TJ (V)Tj [111 ]TJ (ersion)Tj [-250 ]TJ (1.2.1)Tj ET 1 0 0 1 -309.33999 -12.95199 cm 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 1 0 0 1 0.49798 0 cm BT /N81 9.96299 Tf 0 0 Td (11)Tj ET 1 0 0 1 -456.28898 -480.79499 cm 0 g 0 G 1 0 0 1 457.94299 0 cm BT /N117 9.96299 Tf 0 0 Td (iii)Tj ET 1 0 0 1 8.30799 0 cm 0 g 0 G restore PDFVars/TermAll get exec end end userdict /pgsave get restore showpage %%PageTrailer %%EndPage %%Page: 4 4 %%BeginPageSetup userdict /pgsave save put PDFVars begin PDF begin PDFVars/InitAll get exec 1.14301 1.47949 translate %%EndPageSetup 0 0 609.71398 789.04098 RC 1 0 0 1 71.73098 729.26499 cm 0 g 0 G 1 0 0 1 466.25199 0 cm 0 g 0 G 1 0 0 1 -466.25199 -680.44799 cm 0 g 0 G BT /N117 9.96299 Tf 0 0 Td (iv)Tj ET 1 0 0 1 466.25199 0 cm 0 g 0 G PDFVars/TermAll get exec end end userdict /pgsave get restore showpage %%PageTrailer %%EndPage %%Page: 5 5 %%BeginPageSetup userdict /pgsave save put PDFVars begin PDF begin PDFVars/InitAll get exec 1.14301 1.47949 translate %%EndPageSetup 0 0 609.71398 789.04098 RC save 1 0 0 1 71.73098 729.26499 cm 0 g 0 G 1 0 0 1 466.25199 0 cm 0 g 0 G 1 0 0 1 -466.25199 -21.59899 cm BT /N87 14.58599 Tf 0 0 Td (List)Tj [-278 ]TJ (of)Tj [-278 ]TJ (T)Tj [80 ]TJ (ab)Tj [10 ]TJ (les)Tj /N81 9.96299 Tf 47.82099 -20.24499 Td (1.)Tj [-250 ]TJ (Platforms)Tj [-250 ]TJ (on)Tj [-250 ]TJ (which)Tj [-250 ]TJ (OpenJ)Tj [1 ]TJ (ade)Tj [-250 ]TJ (1.3.2)Tj [-250 ]TJ (is)Tj [-250 ]TJ (kno)Tj [25 ]TJ (wn)Tj [-250 ]TJ (to)Tj [-250 ]TJ (b)Tj [20 ]TJ (uild.)Tj ET 1 0 0 1 276.46299 -20.24499 cm 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 1 0 0 1 0.49798 0 cm BT /N81 9.96299 Tf 0 0 Td (1)Tj -413.44898 -12.95199 Td (2.)Tj [-250 ]TJ (OpenJade)Tj [-250 ]TJ (speci\002c)Tj [-250 ]TJ (con\002gu)Tj [1 ]TJ (re)Tj [-250 ]TJ (options)Tj ET 1 0 0 1 -257.03599 -12.95199 cm 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 1 0 0 1 0.49798 0 cm BT /N81 9.96299 Tf 0 0 Td (3)Tj -413.44898 -12.95098 Td (3.)Tj [-250 ]TJ (Changes)Tj [-250 ]TJ (for)Tj [-250 ]TJ (release)Tj [-250 ]TJ (1.3.2)Tj ET 1 0 0 1 -301.86799 -12.95098 cm 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 1 0 0 1 0.49798 0 cm BT /N81 9.96299 Tf 0 0 Td (4)Tj -413.44898 -12.95199 Td (4.)Tj [-250 ]TJ (Changes)Tj [-250 ]TJ (for)Tj [-250 ]TJ (release)Tj [-250 ]TJ (1.3.1)Tj ET 1 0 0 1 -301.86799 -12.95199 cm 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.48999 0 cm 0 g 0 G 0 g 0 G BT /N81 9.96299 Tf 0 0 Td (.)Tj ET 1 0 0 1 2.49099 0 cm 0 g 0 G 1 0 0 1 0.49798 0 cm BT /N81 9.96299 Tf 0 0 Td (5)Tj ET 1 0 0 1 -461.26998 -599.74899 cm 0 g 0 G 1 0 0 1 461.82798 0 cm BT /N117 9.96299 Tf 0 0 Td (v)Tj ET 1 0 0 1 4.42298 0 cm 0 g 0 G restore PDFVars/TermAll get exec end end userdict /pgsave get restore showpage %%PageTrailer %%EndPage %%Page: 6 6 %%BeginPageSetup userdict /pgsave save put PDFVars begin PDF begin PDFVars/InitAll get exec 1.14301 1.47949 translate %%EndPageSetup 0 0 609.71398 789.04098 RC 1 0 0 1 71.73098 729.26499 cm 0 g 0 G 1 0 0 1 466.25199 0 cm 0 g 0 G 1 0 0 1 -466.25199 -680.44799 cm 0 g 0 G BT /N117 9.96299 Tf 0 0 Td (vi)Tj ET 1 0 0 1 466.25199 0 cm 0 g 0 G PDFVars/TermAll get exec end end userdict /pgsave get restore showpage %%PageTrailer %%EndPage %%Page: 7 7 %%BeginPageSetup userdict /pgsave save put PDFVars begin PDF begin PDFVars/InitAll get exec 1.14301 1.47949 translate %%EndPageSetup 0 0 609.71398 789.04098 RC 1 0 0 1 71.73098 729.26499 cm 0 g 0 G 1 0 0 1 466.25199 0 cm 0 g 0 G 1 0 0 1 -466.25199 -21.59899 cm BT /N87 14.58599 Tf 0 0 Td (OpenJade)Tj [-278 ]TJ (1.3.2)Tj [-278 ]TJ (Release)Tj [-278 ]TJ (Notes)Tj /N81 9.96299 Tf 47.82099 -25.21798 Td (OpenJade)Tj [-250 ]TJ (is)Tj [-250 ]TJ (a)Tj [-250 ]TJ (suite)Tj [-250 ]TJ (of)Tj [-250 ]TJ (tool)Tj [1 ]TJ (s)Tj [-250 ]TJ (for)Tj [-250 ]TJ (v)Tj [25 ]TJ (alidating,)Tj [-250 ]TJ (processing)Tj [-250 ]TJ (and)Tj [-250 ]TJ (applying)Tj [-250 ]TJ (DSSSL)Tj [-250 ]TJ (\(Docume)Tj [1 ]TJ (nt)Tj [-250 ]TJ (Style)Tj [-250 ]TJ (Semantics)Tj 0 -12.95098 Td (and)Tj [-250 ]TJ (Speci\002cation)Tj [-250 ]TJ (Language)Tj [1 ]TJ (\))Tj [-250 ]TJ (style)Tj [-250 ]TJ (sheets)Tj [-250 ]TJ (to)Tj [-250 ]TJ (SGML)Tj [-250 ]TJ (and)Tj [-250 ]TJ (XML)Tj [-250 ]TJ (documents.)Tj 0 -17.93299 Td (OpenJade)Tj [-250 ]TJ (is)Tj [-250 ]TJ (a)Tj [-250 ]TJ (project)Tj [-250 ]TJ (under)Tj [1 ]TJ (tak)Tj [10 ]TJ (en)Tj [-250 ]TJ (by)Tj [-250 ]TJ (the)Tj [-250 ]TJ (DSSSL)Tj [-250 ]TJ (community)Tj [-250 ]TJ (to)Tj [-250 ]TJ (maintain)Tj [-250 ]TJ (and)Tj [-250 ]TJ (e)Tj [15 ]TJ (xtend)Tj [-250 ]TJ (Ja)Tj [1 ]TJ (mes)Tj [-250 ]TJ (Clark')Tj [55 ]TJ (s)Tj [-250 ]TJ (Jade,)Tj 0 -12.95098 Td (as)Tj [-250 ]TJ (well)Tj [-250 ]TJ (as)Tj [-250 ]TJ (the)Tj [-250 ]TJ (related)Tj [-250 ]TJ (SP)Tj [-250 ]TJ (s)Tj [1 ]TJ (uite)Tj [-250 ]TJ (of)Tj [-250 ]TJ (SGML/XML)Tj [-250 ]TJ (processing)Tj [-250 ]TJ (tools.)Tj [-250 ]TJ (OpenJade)Tj [-250 ]TJ (and)Tj [-250 ]TJ (Open)Tj [1 ]TJ (SP)Tj [-250 ]TJ (are)Tj [-250 ]TJ (distrib)Tj [20 ]TJ (uted)Tj 0 -12.95199 Td (under)Tj [-250 ]TJ (the)Tj [-250 ]TJ (same)Tj [-250 ]TJ (license)Tj [-250 ]TJ (as)Tj [-249 ]TJ (Jade.)Tj /N87 12.05499 Tf -47.82099 -34.67498 Td (Applications)Tj [-278 ]TJ (of)Tj [-278 ]TJ (OpenJade)Tj /N81 9.96299 Tf 47.82099 -18.97898 Td (Man)Tj [15 ]TJ (y)Tj [-250 ]TJ (dif)Tj [25 ]TJ (ferent)Tj [-250 ]TJ (projects,)Tj [-250 ]TJ (or)Tj [18 ]TJ (g)Tj [5 ]TJ (a)Tj [1 ]TJ (nizations)Tj [-250 ]TJ (and)Tj [-250 ]TJ (companies)Tj [-250 ]TJ (mak)Tj [10 ]TJ (e)Tj [-250 ]TJ (use)Tj [-250 ]TJ (of)Tj [-250 ]TJ (OpenJade)Tj [-250 ]TJ (to)Tj [-250 ]TJ (publis)Tj [1 ]TJ (h)Tj [-250 ]TJ (documentation.)Tj 0 -12.95098 Td (The)Tj [-250 ]TJ (SGML/XML)Tj [-250 ]TJ (back)Tj [10 ]TJ (end)Tj [-250 ]TJ (en)Tj [1 ]TJ (ables)Tj [-250 ]TJ (the)Tj [-250 ]TJ (generation)Tj [-250 ]TJ (of)Tj [-250 ]TJ ("w)Tj [10 ]TJ (orld)Tj [-250 ]TJ (wide)Tj [-250 ]TJ (web)Tj [-250 ]TJ (ready")Tj [-250 ]TJ (documents)Tj [-249 ]TJ (while)Tj [-250 ]TJ (the)Tj [-250 ]TJ (T)Tj [70 ]TJ (eX)Tj 0 -12.95098 Td (back)Tj [10 ]TJ (end)Tj [-250 ]TJ (allo)Tj [25 ]TJ (ws)Tj [-250 ]TJ (high)Tj [-250 ]TJ (quality)Tj [-249 ]TJ ("ready)Tj [-250 ]TJ (for)Tj [-250 ]TJ (press")Tj [-250 ]TJ (output)Tj [-250 ]TJ (to)Tj [-250 ]TJ (be)Tj [-250 ]TJ (obtained.)Tj [-250 ]TJ (The)Tj [-250 ]TJ (FreeBSD)Tj [-250 ]TJ (Han)Tj [1 ]TJ (dbook)Tj [-250 ]TJ (\(second)Tj 0 -12.95199 Td (edition\))Tj [-250 ]TJ (ISBN:)Tj [-250 ]TJ (1571763031)Tj [-250 ]TJ (i)Tj [1 ]TJ (s)Tj [-250 ]TJ (one)Tj [-250 ]TJ (such)Tj [-250 ]TJ (e)Tj [15 ]TJ (xample)Tj [-250 ]TJ (of)Tj [-250 ]TJ (a)Tj [-250 ]TJ (book)Tj [-250 ]TJ (created)Tj [-250 ]TJ (using)Tj [-250 ]TJ (OpenJade.)Tj /N87 12.05499 Tf -47.82099 -40.57798 Td (Obtaining)Tj [-278 ]TJ (OpenJade)Tj /N81 9.96299 Tf 47.82099 -18.97898 Td (OpenJade)Tj [-250 ]TJ (is)Tj [-250 ]TJ (a)Tj [-250 ]TJ (project)Tj [-250 ]TJ (hoste)Tj [1 ]TJ (d)Tj [-250 ]TJ (at)Tj [-250 ]TJ (sourcefor)Tj [18 ]TJ (ge.net)Tj [-250 ]TJ (and)Tj [-250 ]TJ (is)Tj [-250 ]TJ (a)Tj [20 ]TJ (v)Tj [25 ]TJ (ailable)Tj [-250 ]TJ (from)Tj [-250 ]TJ (the)Tj [-250 ]TJ (OpenJade)Tj [-250 ]TJ (w)Tj [1 ]TJ (eb)Tj [-250 ]TJ (site)Tj [-250 ]TJ (at)Tj 0 -12.95098 Td (http://openjade.sourcefor)Tj [18 ]TJ (ge)Tj [1 ]TJ (.net)Tj [-250 ]TJ (or)Tj [-250 ]TJ (directly)Tj [-250 ]TJ (from)Tj [-250 ]TJ (the)Tj [-250 ]TJ (OpenJade)Tj [-250 ]TJ (project)Tj [-250 ]TJ (page)Tj [-250 ]TJ (at)Tj 0 -12.95098 Td (http://sourcefor)Tj [18 ]TJ (ge.net/proj)Tj [1 ]TJ (ects/openjade)Tj 0 -17.93299 Td (OpenJade)Tj [-250 ]TJ (is)Tj [-250 ]TJ (pro)Tj [15 ]TJ (vided)Tj [-250 ]TJ (in)Tj [-250 ]TJ (sour)Tj [1 ]TJ (ce)Tj [-250 ]TJ (code)Tj [-250 ]TJ (form.)Tj [-250 ]TJ (Ho)Tj [25 ]TJ (we)Tj [25 ]TJ (v)Tj [15 ]TJ (er)Tj [-250 ]TJ (as)Tj [-250 ]TJ (a)Tj [-250 ]TJ (courtesy)Tj [-250 ]TJ (to)Tj [-250 ]TJ (W)Tj [40 ]TJ (in32)Tj [-250 ]TJ (users)Tj [-250 ]TJ (where)Tj [-249 ]TJ (de)Tj [25 ]TJ (v)Tj [15 ]TJ (elopment)Tj 0 -12.95199 Td (tools)Tj [-250 ]TJ (are)Tj [-250 ]TJ (not)Tj [-250 ]TJ (al)Tj [10 ]TJ (w)Tj [10 ]TJ (ays)Tj [-250 ]TJ (a)Tj [20 ]TJ (v)Tj [25 ]TJ (aila)Tj [1 ]TJ (ble,)Tj [-250 ]TJ (a)Tj [-250 ]TJ (binary)Tj [-250 ]TJ (release)Tj [-250 ]TJ (for)Tj [-250 ]TJ (the)Tj [-250 ]TJ (W)Tj [40 ]TJ (in32)Tj [-250 ]TJ (platform)Tj [-250 ]TJ (is)Tj [-250 ]TJ (usually)Tj [-250 ]TJ (a)Tj [20 ]TJ (v)Tj [26 ]TJ (ailable.)Tj /N87 12.05499 Tf -47.82099 -40.57699 Td (Suppor)Tj [-20 ]TJ (ted)Tj [-278 ]TJ (Platf)Tj [20 ]TJ (orms)Tj /N81 9.96299 Tf 47.82099 -18.97898 Td (OpenJade)Tj [-250 ]TJ (is)Tj [-250 ]TJ (intended)Tj [-250 ]TJ (to)Tj [-250 ]TJ (be)Tj [-249 ]TJ (as)Tj [-250 ]TJ (portable)Tj [-250 ]TJ (as)Tj [-250 ]TJ (possible.)Tj [-250 ]TJ (It)Tj [-250 ]TJ (should)Tj [-250 ]TJ (be)Tj [-250 ]TJ (possible)Tj [-250 ]TJ (to)Tj [-250 ]TJ (compile)Tj [-249 ]TJ (and)Tj [-250 ]TJ (b)Tj [20 ]TJ (uild)Tj [-250 ]TJ (on)Tj [-250 ]TJ (most)Tj 0 -12.95199 Td (contemporary)Tj [-250 ]TJ (UNIX)Tj [-250 ]TJ (type)Tj [-250 ]TJ (pla)Tj [1 ]TJ (tforms.)Tj [-250 ]TJ (In)Tj [-250 ]TJ (addition)Tj [-250 ]TJ (OpenJade)Tj [-250 ]TJ (will)Tj [-250 ]TJ (also)Tj [-250 ]TJ (b)Tj [20 ]TJ (uild)Tj [-250 ]TJ (on)Tj [-250 ]TJ (Microso)Tj [1 ]TJ (ft')Tj [55 ]TJ (s)Tj [-250 ]TJ (W)Tj [40 ]TJ (in32)Tj [-250 ]TJ (based)Tj 0 -12.95098 Td (operating)Tj [-250 ]TJ (systems.)Tj 0 -17.93299 Td (OpenJade)Tj [-250 ]TJ (is)Tj [-250 ]TJ (kno)Tj [25 ]TJ (wn)Tj [-250 ]TJ (to)Tj [-250 ]TJ (compi)Tj [1 ]TJ (le)Tj [-250 ]TJ (with)Tj [-250 ]TJ (both)Tj [-250 ]TJ (the)Tj [-250 ]TJ (GNU)Tj [-250 ]TJ (gcc)Tj [-250 ]TJ (c++)Tj [-250 ]TJ (compiler)Tj [-250 ]TJ (and)Tj [-250 ]TJ (Microsoft)Tj [-250 ]TJ (V)Tj [61 ]TJ (isual)Tj [-250 ]TJ (C++.)Tj [-250 ]TJ (Other)Tj 0 -12.95098 Td (compilers)Tj [-250 ]TJ (ha)Tj [20 ]TJ (v)Tj [15 ]TJ (e)Tj [-250 ]TJ (not)Tj [-250 ]TJ (been)Tj [-250 ]TJ (e)Tj [15 ]TJ (xte)Tj [1 ]TJ (nsi)Tj [25 ]TJ (v)Tj [15 ]TJ (ely)Tj [-250 ]TJ (tested.)Tj 0 -17.93299 Td (OpenJade)Tj [-250 ]TJ (has)Tj [-250 ]TJ (been)Tj [-250 ]TJ (success)Tj [1 ]TJ (fully)Tj [-250 ]TJ (b)Tj [20 ]TJ (uilt)Tj [-250 ]TJ (with)Tj [-250 ]TJ (the)Tj [-250 ]TJ (follo)Tj [25 ]TJ (wing)Tj [-250 ]TJ (GNU)Tj [-250 ]TJ (compilers:)Tj [-250 ]TJ (Red)Tj [-250 ]TJ (Hat)Tj [-249 ]TJ (g++)Tj [-250 ]TJ (2.96,)Tj [-250 ]TJ (GCC)Tj [-250 ]TJ (g++)Tj 0 -12.95098 Td (2.95.3,)Tj [-250 ]TJ (GCC)Tj [-250 ]TJ (g++)Tj [-250 ]TJ (3.2)Tj 0 -17.93299 Td (OpenJade)Tj [-250 ]TJ (has)Tj [-250 ]TJ (been)Tj [-250 ]TJ (b)Tj [20 ]TJ (uilt)Tj [-250 ]TJ (on)Tj [-250 ]TJ (a)Tj [-249 ]TJ (number)Tj [-250 ]TJ (of)Tj [-250 ]TJ (architectures)Tj [-250 ]TJ (including)Tj [-250 ]TJ (Intel)Tj [-250 ]TJ (i386)Tj [-250 ]TJ (and)Tj [-250 ]TJ (ia64,)Tj [-250 ]TJ (Al)Tj [1 ]TJ (pha)Tj [-250 ]TJ (AXP)Tj [111 ]TJ (,)Tj [-250 ]TJ (Sparc,)Tj 0 -12.95199 Td (PPC)Tj [-250 ]TJ (and)Tj [-250 ]TJ (S/390,)Tj [-250 ]TJ (S/390x.)Tj 0 -17.93199 Td (The)Tj [-250 ]TJ (follo)Tj [25 ]TJ (wing)Tj [-250 ]TJ (table)Tj [-250 ]TJ (detail)Tj [1 ]TJ (s)Tj [-250 ]TJ (kno)Tj [25 ]TJ (wn)Tj [-250 ]TJ (successful)Tj [-250 ]TJ (b)Tj [20 ]TJ (uilds)Tj /N90 9.96299 Tf 0 -27.89599 Td (T)Tj [92 ]TJ (able)Tj [-250 ]TJ (1.)Tj [-250 ]TJ (Platf)Tj [25 ]TJ (orms)Tj [-250 ]TJ (on)Tj [-250 ]TJ (whic)Tj [1 ]TJ (h)Tj [-250 ]TJ (OpenJ)Tj [15 ]TJ (ade)Tj [-250 ]TJ (1.3.2)Tj [-250 ]TJ (is)Tj [-250 ]TJ (kno)Tj [10 ]TJ (wn)Tj [-250 ]TJ (to)Tj [-250 ]TJ (b)Tj [20 ]TJ (uild.)Tj ET 1 0 0 1 47.82099 -527.17999 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -12.17498 cm BT /N87 9.96299 Tf 0 0 Td (Ar)Tj [20 ]TJ (c)Tj [10 ]TJ (h.)Tj [-2724 ]TJ (OS)Tj [-9054 ]TJ (Compiler)Tj [-6166 ]TJ (Notes)Tj ET 1 0 0 1 0 -3.38699 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -12.17399 cm BT /N81 9.96299 Tf 0 0 Td (alpha)Tj [-3084 ]TJ (Debian)Tj [-250 ]TJ (3.0)Tj [-6111 ]TJ (GNU)Tj [-250 ]TJ (gcc)Tj [-250 ]TJ (3.2)Tj ET 1 0 0 1 -47.82099 -103.93299 cm 0 g 0 G 1 0 0 1 461.26998 0 cm BT /N117 9.96299 Tf 0 0 Td (1)Tj ET 1 0 0 1 4.98199 0 cm 0 g 0 G PDFVars/TermAll get exec end end userdict /pgsave get restore showpage %%PageTrailer %%EndPage %%Page: 8 8 %%BeginPageSetup userdict /pgsave save put PDFVars begin PDF begin PDFVars/InitAll get exec 1.14301 1.47949 translate %%EndPageSetup 0 0 609.71398 789.04098 RC 1 0 0 1 71.73098 729.26499 cm 0 g 0 G 1 0 0 1 0 3.58699 cm BT /N117 9.96299 Tf 0 0 Td (OpenJ)Tj [35 ]TJ (ade)Tj [-250 ]TJ (1.3.2)Tj [-250 ]TJ (Release)Tj [-250 ]TJ (Notes)Tj ET 1 0 0 1 466.25199 -3.58699 cm 0 g 0 G 1 0 0 1 -418.43099 -11.35699 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -12.17399 cm BT /N87 9.96299 Tf 0 0 Td (Ar)Tj [20 ]TJ (c)Tj [10 ]TJ (h.)Tj [-2724 ]TJ (OS)Tj [-9054 ]TJ (Compiler)Tj [-6166 ]TJ (Notes)Tj /N81 9.96299 Tf 0 -15.16398 Td (arm)Tj [-3695 ]TJ (Debian)Tj [-250 ]TJ (3.0)Tj [-6111 ]TJ (GNU)Tj [-250 ]TJ (gcc)Tj [-250 ]TJ (3.2)Tj 0 -15.16299 Td (hppa)Tj [-3306 ]TJ (Debian)Tj [-250 ]TJ (3.0)Tj [-6111 ]TJ (GNU)Tj [-250 ]TJ (gcc)Tj [-250 ]TJ (3.2)Tj 0 -15.16299 Td (i386)Tj [-3472 ]TJ (Debian)Tj [-250 ]TJ (3.0)Tj [-6111 ]TJ (GNU)Tj [-250 ]TJ (gcc)Tj [-250 ]TJ (3.2)Tj 52.30398 -28.11399 Td (Red)Tj [-250 ]TJ (Hat)Tj [-250 ]TJ (Linux)Tj [-250 ]TJ (7.3)Tj [-3056 ]TJ (Red)Tj [-250 ]TJ (H)Tj [1 ]TJ (at)Tj [-250 ]TJ (gcc)Tj [-250 ]TJ (2.96)Tj 0 -15.16299 Td (Red)Tj [-250 ]TJ (Hat)Tj [-250 ]TJ (Linux)Tj [-250 ]TJ (7.3)Tj [-3056 ]TJ (GNU)Tj [-250 ]TJ (g)Tj [1 ]TJ (cc)Tj [-250 ]TJ (3.2)Tj 0 -15.16398 Td (SuSE)Tj [-250 ]TJ (Linux)Tj [-250 ]TJ (8.1)Tj [-4138 ]TJ (GNU)Tj [-250 ]TJ (g)Tj [1 ]TJ (cc)Tj [-250 ]TJ (3.2)Tj -52.30398 -15.16299 Td (ia64)Tj [-3528 ]TJ (Debian)Tj [-250 ]TJ (3.0)Tj [-6111 ]TJ (GNU)Tj [-250 ]TJ (gcc)Tj [-250 ]TJ (3.2)Tj 0 -15.16299 Td (m68k)Tj [-2972 ]TJ (Debian)Tj [-250 ]TJ (3.0)Tj [-6111 ]TJ (GNU)Tj [-250 ]TJ (gcc)Tj [-250 ]TJ (3.2)Tj 0 -15.16299 Td (mips,)Tj 0 -12.95098 Td (mipsel)Tj 52.30398 12.95098 Td (Debian)Tj [-250 ]TJ (3.0)Tj [-6112 ]TJ (GNU)Tj [-250 ]TJ (g)Tj [1 ]TJ (cc)Tj [-250 ]TJ (3.2)Tj -52.30398 -28.11399 Td (po)Tj [25 ]TJ (werpc)Tj [-1832 ]TJ (Debian)Tj [-250 ]TJ (3.0)Tj [-6111 ]TJ (GNU)Tj [-250 ]TJ (gcc)Tj [-250 ]TJ (3.2)Tj 0 -15.16398 Td (s390)Tj [-3361 ]TJ (Debian)Tj [-250 ]TJ (3.0)Tj [-6111 ]TJ (GNU)Tj [-250 ]TJ (gcc)Tj [-250 ]TJ (3.2)Tj 0 -15.16299 Td (sparc)Tj [-3140 ]TJ (Debian)Tj [-250 ]TJ (3.0)Tj [-6111 ]TJ (GNU)Tj [-250 ]TJ (gcc)Tj [-250 ]TJ (3.2)Tj ET 1 0 0 1 0 -211.24798 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -19.92498 cm BT /N81 9.96299 Tf 0 0 Td (Please)Tj [-250 ]TJ (report)Tj [-250 ]TJ (an)Tj [15 ]TJ (y)Tj [-250 ]TJ (successf)Tj [1 ]TJ (ul)Tj [-250 ]TJ (b)Tj [20 ]TJ (uilds)Tj [-250 ]TJ (not)Tj [-250 ]TJ (mentioned)Tj [-250 ]TJ (abo)Tj [15 ]TJ (v)Tj [15 ]TJ (e)Tj [-250 ]TJ (to)Tj 0 -12.95199 Td (<)Tj /N177 8.96598 Tf 5.61898 0 Td (openjade-devel@lists.sou)Tj [-1 ]TJ (rceforge.net)Tj /N81 9.96299 Tf 193.67298 0 Td (>,)Tj [-250 ]TJ (including)Tj [-250 ]TJ (an)Tj [15 ]TJ (y)Tj [-250 ]TJ (dif)Tj [25 ]TJ (fs/patches)Tj [-249 ]TJ (you)Tj [-250 ]TJ (ha)Tj [20 ]TJ (v)Tj [15 ]TJ (e)Tj [-250 ]TJ (used.)Tj /N87 12.05499 Tf -247.11299 -40.57699 Td (Building)Tj [-278 ]TJ (OpenJade)Tj [-278 ]TJ (fr)Tj [20 ]TJ (om)Tj [-278 ]TJ (Sour)Tj [20 ]TJ (ce)Tj /N81 9.96299 Tf 47.82099 -18.97898 Td (OpenJade)Tj [-250 ]TJ (requires)Tj [-250 ]TJ (40Mb)Tj [-250 ]TJ (to)Tj [-249 ]TJ (50Mb)Tj [-250 ]TJ (of)Tj [-250 ]TJ (disk)Tj [-250 ]TJ (space)Tj [-250 ]TJ (to)Tj [-250 ]TJ (b)Tj [20 ]TJ (uild.)Tj [-250 ]TJ (An)Tj [-250 ]TJ (installation)Tj [-250 ]TJ (will)Tj [-250 ]TJ (require)Tj [-249 ]TJ (around)Tj [-250 ]TJ (15Mb)Tj [-250 ]TJ (to)Tj 0 -12.95199 Td (20Mb)Tj [-250 ]TJ (depending)Tj [-250 ]TJ (on)Tj [-250 ]TJ (architect)Tj [1 ]TJ (ure.)Tj 0 -17.93199 Td (OpenJade)Tj [-250 ]TJ (mak)Tj [10 ]TJ (es)Tj [-250 ]TJ (use)Tj [-250 ]TJ (of)Tj [-250 ]TJ (the)Tj [-249 ]TJ (GNU)Tj [-250 ]TJ (softw)Tj [10 ]TJ (are)Tj [-250 ]TJ (con\002guration)Tj [-250 ]TJ (tools)Tj [-250 ]TJ (\(autoconf,)Tj [-250 ]TJ (libtool,)Tj [-250 ]TJ (autom)Tj [1 ]TJ (ak)Tj [10 ]TJ (e)Tj [-250 ]TJ (etc\).)Tj [-250 ]TJ (The)Tj 0 -12.95199 Td (GNU)Tj [-250 ]TJ (C++)Tj [-250 ]TJ (compiler)Tj [-250 ]TJ (and)Tj [-250 ]TJ (ma)Tj [1 ]TJ (k)Tj [10 ]TJ (e)Tj [-250 ]TJ (utility)Tj [-250 ]TJ (should)Tj [-250 ]TJ (also)Tj [-250 ]TJ (be)Tj [-250 ]TJ (used.)Tj [-250 ]TJ (The)Tj [-250 ]TJ (steps)Tj [-250 ]TJ (required)Tj [-250 ]TJ (to)Tj [-250 ]TJ (b)Tj [20 ]TJ (uild)Tj [-249 ]TJ (the)Tj [-250 ]TJ (OpenJade)Tj [-250 ]TJ (tools)Tj 0 -12.95098 Td (\()Tj /N90 9.96299 Tf 3.31698 0 Td (onsgmls)Tj /N81 9.96299 Tf 34.32099 0 Td (,)Tj /N90 9.96299 Tf 4.98098 0 Td (openjade)Tj /N81 9.96299 Tf 38.74499 0 Td (,)Tj /N90 9.96299 Tf 4.98098 0 Td (osgmlnorm)Tj /N81 9.96299 Tf 48.14898 0 Td (,)Tj /N90 9.96299 Tf 4.98098 0 Td (ospam)Tj /N81 9.96299 Tf 27.67599 0 Td (,)Tj /N90 9.96299 Tf 4.98199 0 Td (ospent)Tj /N81 9.96299 Tf 27.67599 0 Td (,)Tj /N90 9.96299 Tf 4.98098 0 Td (osx)Tj /N81 9.96299 Tf 13.83799 0 Td (\))Tj [-250 ]TJ (and)Tj [-250 ]TJ (libraries)Tj [-250 ]TJ (are)Tj [-250 ]TJ (as)Tj [-250 ]TJ (follo)Tj [25 ]TJ (w)Tj [1 ]TJ (s:)Tj /N177 8.96598 Tf -218.62799 -21.61898 Td (gzip)Tj [-600 ]TJ (-d)Tj [-600 ]TJ (openjade-1.3.2.)Tj [-1 ]TJ (tar.gz)Tj [-600 ]TJ (|)Tj [-600 ]TJ (tar)Tj [-600 ]TJ (xvf)Tj [-600 ]TJ (-)Tj 0 -11.65699 Td (cd)Tj [-600 ]TJ (openjade-1.3.2)Tj 0 -11.65599 Td (./configure)Tj [-600 ]TJ ([)Tj /N191 8.06999 Tf 69.93699 0 Td (options...)Tj /N177 8.96598 Tf 48.41899 0 Td (])Tj -118.35598 -11.65599 Td (make)Tj /N81 9.96299 Tf 0 -22.91398 Td (Y)Tj [110 ]TJ (ou)Tj [-250 ]TJ (may)Tj [-250 ]TJ (need)Tj [-250 ]TJ (to)Tj [-250 ]TJ (switch)Tj [-250 ]TJ (to)Tj [-250 ]TJ (th)Tj [1 ]TJ (e)Tj [-250 ]TJ (super)Tj [-250 ]TJ (user)Tj /N90 9.96299 Tf 166.30499 0 Td (r)Tj [18 ]TJ (oot)Tj /N81 9.96299 Tf 20.01399 0 Td (to)Tj [-250 ]TJ (complete)Tj [-250 ]TJ (the)Tj [-250 ]TJ (installation)Tj /N177 8.96598 Tf -186.31898 -21.61898 Td (make)Tj [-600 ]TJ (install)Tj /N81 9.96299 Tf 0 -22.91398 Td (If)Tj [-250 ]TJ (you)Tj [-250 ]TJ (wish)Tj [-250 ]TJ (to)Tj [-250 ]TJ (install)Tj [-250 ]TJ (man)Tj [-250 ]TJ (p)Tj [1 ]TJ (ages)Tj [-250 ]TJ (for)Tj [-250 ]TJ (the)Tj [-250 ]TJ (v)Tj [25 ]TJ (arious)Tj [-250 ]TJ (commands)Tj [-250 ]TJ (you)Tj [-250 ]TJ (should)Tj [-250 ]TJ (then)Tj [-250 ]TJ (do)Tj /N177 8.96598 Tf 0 -21.61898 Td (make)Tj [-600 ]TJ (install-man)Tj /N81 9.96299 Tf 0 -22.91398 Td (The)Tj /N90 9.96299 Tf 17.98199 0 Td (con\002gur)Tj [18 ]TJ (e)Tj /N81 9.96299 Tf 42.16198 0 Td (script)Tj [-250 ]TJ (supports)Tj [-250 ]TJ (man)Tj [15 ]TJ (y)Tj [-250 ]TJ (options)Tj [1 ]TJ (.)Tj [-250 ]TJ (These)Tj [-250 ]TJ (can)Tj [-250 ]TJ (be)Tj [-250 ]TJ (displayed)Tj [-250 ]TJ (using)Tj [-250 ]TJ (the)Tj [-250 ]TJ (command)Tj /N177 8.96598 Tf -60.14399 -21.61898 Td (./configure)Tj [-600 ]TJ (--help)Tj ET 1 0 0 1 -47.82099 -425.74398 cm 0 g 0 G BT /N117 9.96299 Tf 0 0 Td (2)Tj ET 1 0 0 1 466.25199 0 cm 0 g 0 G PDFVars/TermAll get exec end end userdict /pgsave get restore showpage %%PageTrailer %%EndPage %%Page: 9 9 %%BeginPageSetup userdict /pgsave save put PDFVars begin PDF begin PDFVars/InitAll get exec 1.14301 1.47949 translate %%EndPageSetup 0 0 609.71398 789.04098 RC 1 0 0 1 71.73098 729.26499 cm 0 g 0 G 1 0 0 1 345.13699 3.58699 cm BT /N117 9.96299 Tf 0 0 Td (OpenJ)Tj [35 ]TJ (ade)Tj [-250 ]TJ (1.3.2)Tj [-250 ]TJ (Release)Tj [-250 ]TJ (Note)Tj [1 ]TJ (s)Tj ET 1 0 0 1 121.11499 -3.58699 cm 0 g 0 G 1 0 0 1 -418.43099 -20.92098 cm BT /N81 9.96299 Tf 0 0 Td (In)Tj [-250 ]TJ (addition)Tj [-250 ]TJ (to)Tj [-250 ]TJ (the)Tj [-250 ]TJ (standard)Tj [-250 ]TJ (o)Tj [1 ]TJ (ptions,)Tj [-250 ]TJ (the)Tj [-250 ]TJ (follo)Tj [25 ]TJ (wing)Tj [-250 ]TJ (table)Tj [-250 ]TJ (describes)Tj [-250 ]TJ (options)Tj [-250 ]TJ (speci\002c)Tj [-250 ]TJ (to)Tj [-249 ]TJ (openjade.)Tj /N90 9.96299 Tf 0 -27.89599 Td (T)Tj [92 ]TJ (able)Tj [-250 ]TJ (2.)Tj [-250 ]TJ (OpenJ)Tj [15 ]TJ (ade)Tj [-250 ]TJ (speci\002c)Tj [-249 ]TJ (con\002gur)Tj [18 ]TJ (e)Tj [-250 ]TJ (options)Tj ET 1 0 0 1 0 -40.27899 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -12.17498 cm BT /N87 9.96299 Tf 0 0 Td (Option)Tj [-7278 ]TJ (Defau)Tj [1 ]TJ (lt)Tj [-7111 ]TJ (Explanation)Tj ET 1 0 0 1 0 -3.38699 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -12.17399 cm BT /N177 8.96598 Tf 0 0 Td (--enable-)Tj 0 -12.95199 Td (spincludedir=path)Tj /N81 9.96299 Tf 104.60699 12.95199 Td (/usr/include/OpenSP)Tj [-2222 ]TJ (De\002ne)Tj [-250 ]TJ (the)Tj [-250 ]TJ (p)Tj [1 ]TJ (ath)Tj [-250 ]TJ (where)Tj [-250 ]TJ (the)Tj [-250 ]TJ (OpenSP)Tj [-250 ]TJ (include)Tj [-250 ]TJ (\002les)Tj 104.60798 -12.95199 Td (may)Tj [-250 ]TJ (be)Tj [-250 ]TJ (found.)Tj /N177 8.96598 Tf -209.21499 -28.11399 Td (--enable-)Tj 0 -12.95199 Td (splibdir=path)Tj /N81 9.96299 Tf 104.60699 12.95199 Td (/usr/lib)Tj [-7666 ]TJ (De\002ne)Tj [-250 ]TJ (the)Tj [-249 ]TJ (path)Tj [-250 ]TJ (where)Tj [-250 ]TJ (the)Tj [-250 ]TJ (OpenSP)Tj [-250 ]TJ (library)Tj [-250 ]TJ (\(libosp\))Tj 104.60798 -12.95199 Td (may)Tj [-250 ]TJ (be)Tj [-250 ]TJ (found.)Tj /N177 8.96598 Tf -209.21499 -28.11399 Td (--disable-mif)Tj /N81 9.96299 Tf 104.60699 0 Td (MIF)Tj [-250 ]TJ (support)Tj [-250 ]TJ (is)Tj [-250 ]TJ (enabled)Tj [-1195 ]TJ (disable)Tj [-250 ]TJ (sup)Tj [1 ]TJ (port)Tj [-250 ]TJ (for)Tj [-250 ]TJ (FrameMak)Tj [10 ]TJ (er)Tj [-250 ]TJ (MIF)Tj [-250 ]TJ (output)Tj [-250 ]TJ (\(the)Tj /N177 8.96598 Tf 104.60798 -12.95199 Td (-t)Tj [-600 ]TJ (mif)Tj /N81 9.96299 Tf 34.76998 0 Td (option\))Tj [-250 ]TJ (to)Tj /N90 9.96299 Tf 41.51399 0 Td (openjade)Tj /N81 9.96299 Tf 38.74398 0 Td (.)Tj /N177 8.96598 Tf -324.24299 -15.16299 Td (--disable-html)Tj /N81 9.96299 Tf 104.60699 0 Td (html)Tj [-250 ]TJ (support)Tj [-250 ]TJ (enabled)Tj [-2056 ]TJ (disable)Tj [-250 ]TJ (sup)Tj [1 ]TJ (port)Tj [-250 ]TJ (for)Tj [-250 ]TJ (HTML+CSS)Tj [-250 ]TJ (output)Tj [-250 ]TJ (\(the)Tj /N177 8.96598 Tf 281.80198 0 Td (-t)Tj -177.19398 -12.95098 Td (html)Tj /N81 9.96299 Tf 24.00999 0 Td (to)Tj /N90 9.96299 Tf 10.24198 0 Td (openjade)Tj /N81 9.96299 Tf 38.74398 0 Td (\).)Tj /N177 8.96598 Tf -282.21099 -15.16299 Td (--enable-default-)Tj 0 -12.95199 Td (catalog=)Tj /N191 8.96598 Tf 43.03799 0 Td (pathlist)Tj /N81 9.96299 Tf 61.56898 12.95199 Td (Not)Tj [-250 ]TJ (enabled)Tj [-5640 ]TJ (Pro)Tj [15 ]TJ (vide)Tj [-250 ]TJ (one)Tj [-249 ]TJ (or)Tj [-250 ]TJ (more)Tj [-250 ]TJ (def)Tj [10 ]TJ (ault)Tj [-250 ]TJ (catalog)Tj [-250 ]TJ (\002les)Tj [-250 ]TJ (or)Tj [-250 ]TJ (sysids,)Tj 104.60798 -12.95199 Td (e.g.)Tj [-250 ]TJ (/usr/local/lib/sgml/cat)Tj [1 ]TJ (alog)Tj /N177 8.96598 Tf -209.21499 -28.11399 Td (--enable-default-)Tj 0 -12.95199 Td (search-)Tj 0 -12.95098 Td (path=)Tj /N191 8.96598 Tf 26.89898 0 Td (pathlist)Tj /N81 9.96299 Tf 77.70799 25.90299 Td (Not)Tj [-250 ]TJ (enabled)Tj [-5640 ]TJ (Pro)Tj [15 ]TJ (vide)Tj [-250 ]TJ (a)Tj [-250 ]TJ (de)Tj [1 ]TJ (f)Tj [10 ]TJ (ault)Tj [-250 ]TJ (v)Tj [25 ]TJ (alue)Tj [-250 ]TJ (for)Tj /N177 8.96598 Tf 212.84098 0 Td (SGML_SEARCH_PATH)Tj ET 1 0 0 1 0 -221.66899 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -19.92498 cm BT /N81 9.96299 Tf 0 0 Td (Please)Tj [-250 ]TJ (refer)Tj [-250 ]TJ (to)Tj [-250 ]TJ (the)Tj [-250 ]TJ (system)Tj [-249 ]TJ (documentation)Tj [-250 ]TJ (for)Tj [-250 ]TJ (details)Tj [-250 ]TJ (on)Tj [-250 ]TJ (b)Tj [20 ]TJ (uilding)Tj [-250 ]TJ (on)Tj [-250 ]TJ (the)Tj [-250 ]TJ (W)Tj [40 ]TJ (in32)Tj [-250 ]TJ (platfo)Tj [1 ]TJ (rm.)Tj /N87 12.05499 Tf -47.82099 -40.57798 Td (Binar)Tj [-10 ]TJ (y)Tj [-278 ]TJ (Distrib)Tj [20 ]TJ (utions)Tj /N81 9.96299 Tf 47.82099 -18.97898 Td (Although)Tj [-244 ]TJ (the)Tj [-245 ]TJ (OpenJ)Tj [1 ]TJ (ade)Tj [-245 ]TJ (project)Tj [-244 ]TJ (does)Tj [-244 ]TJ (not)Tj [-245 ]TJ (mak)Tj [10 ]TJ (e)Tj [-244 ]TJ (binary)Tj [-244 ]TJ (distrib)Tj [20 ]TJ (utions)Tj [-245 ]TJ (a)Tj [20 ]TJ (v)Tj [25 ]TJ (ailabl)Tj [1 ]TJ (e,)Tj [-245 ]TJ (OpenJade)Tj [-244 ]TJ (has)Tj [-244 ]TJ (been)Tj [-245 ]TJ (a)Tj [-244 ]TJ (part)Tj [-245 ]TJ (of)Tj 0 -12.95098 Td (man)Tj [15 ]TJ (y)Tj [-250 ]TJ (softw)Tj [10 ]TJ (are)Tj [-250 ]TJ (distrib)Tj [20 ]TJ (ution)Tj [1 ]TJ (s,)Tj [-250 ]TJ (including)Tj [-250 ]TJ (the)Tj [-250 ]TJ (major)Tj [-250 ]TJ (Linux)Tj [-250 ]TJ (distrib)Tj [20 ]TJ (utions)Tj [-250 ]TJ (as)Tj [-250 ]TJ (well)Tj [-250 ]TJ (as)Tj [-250 ]TJ (Fre)Tj [1 ]TJ (eBSD.)Tj [-250 ]TJ (Expect)Tj 0 -12.95199 Td (pre-compiled)Tj [-250 ]TJ (and)Tj [-250 ]TJ (packaged)Tj [-249 ]TJ (v)Tj [15 ]TJ (ersions)Tj [-250 ]TJ (of)Tj [-250 ]TJ (the)Tj [-250 ]TJ (latest)Tj [-250 ]TJ (v)Tj [15 ]TJ (ersion)Tj [-250 ]TJ (of)Tj [-250 ]TJ (OpenJade)Tj [-250 ]TJ (to)Tj [-250 ]TJ (be)Tj [-250 ]TJ (a)Tj [20 ]TJ (v)Tj [25 ]TJ (ailable)Tj [-249 ]TJ (from)Tj [-250 ]TJ (your)Tj 0 -12.95098 Td (distrib)Tj [20 ]TJ (utor)Tj [-250 ]TJ (in)Tj [-250 ]TJ (due)Tj [-250 ]TJ (course.)Tj /N87 12.05499 Tf -47.82099 -40.57798 Td (Installation)Tj /N81 9.96299 Tf 47.82099 -18.97898 Td (In)Tj [-250 ]TJ (addition)Tj [-250 ]TJ (to)Tj [-250 ]TJ (the)Tj [-250 ]TJ (OpenJade)Tj [-249 ]TJ (e)Tj [15 ]TJ (x)Tj [15 ]TJ (ecutables)Tj [-250 ]TJ (and)Tj [-250 ]TJ (libraries)Tj [-250 ]TJ (you)Tj [-250 ]TJ (will)Tj [-250 ]TJ (also)Tj [-250 ]TJ (need)Tj [-250 ]TJ (v)Tj [25 ]TJ (arious)Tj [-250 ]TJ (DTD)Tj [1 ]TJ (s)Tj [-250 ]TJ (and)Tj [-250 ]TJ (stylesheets.)Tj 0 -12.95098 Td (Some)Tj [-250 ]TJ (DTDs)Tj [-250 ]TJ (and)Tj [-250 ]TJ (associated)Tj [-249 ]TJ (\002les)Tj [-250 ]TJ (\(entity)Tj [-250 ]TJ (de\002nitions\))Tj [-250 ]TJ (are)Tj [-250 ]TJ (a)Tj [20 ]TJ (v)Tj [25 ]TJ (ailable)Tj [-250 ]TJ (in)Tj [-250 ]TJ (the)Tj /N177 8.96598 Tf 285.38598 0 Td (pubtext)Tj /N81 9.96299 Tf 40.14898 0 Td (directory)Tj [-250 ]TJ (of)Tj [-250 ]TJ (the)Tj -325.53498 -12.95199 Td (distrib)Tj [20 ]TJ (ution.)Tj [-250 ]TJ (Ho)Tj [25 ]TJ (we)Tj [25 ]TJ (v)Tj [15 ]TJ (er)Tj [40 ]TJ (,)Tj [-250 ]TJ (more)Tj [-250 ]TJ (a)Tj [1 ]TJ (uthoritati)Tj [25 ]TJ (v)Tj [15 ]TJ (e)Tj [-250 ]TJ (sources)Tj [-250 ]TJ (should)Tj [-250 ]TJ (be)Tj [-250 ]TJ (referenced)Tj [-250 ]TJ (to)Tj [-250 ]TJ (ensure)Tj [-250 ]TJ (that)Tj [-250 ]TJ (u)Tj [1 ]TJ (p-to-date)Tj [-250 ]TJ (v)Tj [15 ]TJ (ersions)Tj 0 -12.95098 Td (are)Tj [-250 ]TJ (used.)Tj [-250 ]TJ (If)Tj [-250 ]TJ (you)Tj [-250 ]TJ (wish)Tj [-250 ]TJ (to)Tj [-250 ]TJ (proce)Tj [1 ]TJ (ss)Tj [-250 ]TJ (XML)Tj [-250 ]TJ (\002les,)Tj [-250 ]TJ (then)Tj [-250 ]TJ (suitable)Tj [-250 ]TJ (SGML)Tj [-250 ]TJ (declarations)Tj [-250 ]TJ (for)Tj [-250 ]TJ (v)Tj [25 ]TJ (al)Tj [1 ]TJ (id)Tj [-250 ]TJ (XML)Tj [-250 ]TJ (documents)Tj 0 -12.95098 Td (should)Tj [-250 ]TJ (be)Tj [-250 ]TJ (used.)Tj [-250 ]TJ (Ag)Tj [5 ]TJ (ain,)Tj [-250 ]TJ (a)Tj [-250 ]TJ (sam)Tj [1 ]TJ (ple)Tj [-250 ]TJ (set)Tj [-250 ]TJ (of)Tj [-250 ]TJ (declarations)Tj [-250 ]TJ (\()Tj /N177 8.96598 Tf 209.40199 0 Td (xml.dcl)Tj /N81 9.96299 Tf 37.65899 0 Td (\))Tj [-250 ]TJ (is)Tj [-250 ]TJ (pro)Tj [15 ]TJ (vided)Tj [-250 ]TJ (in)Tj [-250 ]TJ (the)Tj /N177 8.96598 Tf 77.60798 0 Td (pubtext)Tj /N81 9.96299 Tf 37.65899 0 Td (,)Tj [-250 ]TJ (b)Tj [20 ]TJ (ut)Tj [-250 ]TJ (more)Tj -362.32798 -12.95199 Td (complete)Tj [-250 ]TJ (or)Tj [-250 ]TJ (recent)Tj [-250 ]TJ (v)Tj [15 ]TJ (ersions)Tj [-249 ]TJ (may)Tj [-250 ]TJ (be)Tj [-250 ]TJ (a)Tj [20 ]TJ (v)Tj [25 ]TJ (ailable)Tj [-250 ]TJ (from)Tj [-250 ]TJ (other)Tj [-250 ]TJ (sources.)Tj 0 -17.93299 Td (OpenJade)Tj [-249 ]TJ (supports)Tj [-249 ]TJ (the)Tj [-250 ]TJ (st)Tj [1 ]TJ (andard)Tj [-250 ]TJ (SGML)Tj [-249 ]TJ (catalog)Tj [-249 ]TJ (f)Tj [10 ]TJ (acility;)Tj [-249 ]TJ (it)Tj [-249 ]TJ (is)Tj [-250 ]TJ (recommended)Tj [-249 ]TJ (that)Tj [-249 ]TJ (you)Tj [-249 ]TJ (set)Tj [-250 ]TJ (up)Tj [-249 ]TJ (and)Tj [-249 ]TJ (use)Tj [-249 ]TJ (such)Tj [-250 ]TJ (a)Tj 0 -12.95098 Td (catalog)Tj [-250 ]TJ (system.)Tj [-250 ]TJ (Generally)Tj [-249 ]TJ (speaking)Tj [-250 ]TJ (you)Tj [-250 ]TJ (will)Tj [-250 ]TJ (create)Tj [-250 ]TJ (your)Tj [-250 ]TJ (o)Tj [25 ]TJ (wn)Tj [-250 ]TJ (DSSSL)Tj [-250 ]TJ (stylesheets)Tj [-250 ]TJ (fo)Tj [1 ]TJ (r)Tj [-250 ]TJ (use)Tj [-250 ]TJ (with)Tj [-250 ]TJ (OpenJade,)Tj ET 1 0 0 1 -47.82099 -349.91799 cm 0 g 0 G 1 0 0 1 461.26998 0 cm BT /N117 9.96299 Tf 0 0 Td (3)Tj ET 1 0 0 1 4.98199 0 cm 0 g 0 G PDFVars/TermAll get exec end end userdict /pgsave get restore showpage %%PageTrailer %%EndPage %%Page: 10 10 %%BeginPageSetup userdict /pgsave save put PDFVars begin PDF begin PDFVars/InitAll get exec 1.14301 1.47949 translate %%EndPageSetup 0 0 609.71398 789.04098 RC 1 0 0 1 71.73098 729.26499 cm 0 g 0 G 1 0 0 1 0 3.58699 cm BT /N117 9.96299 Tf 0 0 Td (OpenJ)Tj [35 ]TJ (ade)Tj [-250 ]TJ (1.3.2)Tj [-250 ]TJ (Release)Tj [-250 ]TJ (Notes)Tj ET 1 0 0 1 466.25199 -3.58699 cm 0 g 0 G 1 0 0 1 -418.43099 -20.92098 cm BT /N81 9.96299 Tf 0 0 Td (ho)Tj [25 ]TJ (we)Tj [25 ]TJ (v)Tj [15 ]TJ (er)Tj [40 ]TJ (,)Tj [-250 ]TJ (users)Tj [-250 ]TJ (of)Tj [-250 ]TJ (the)Tj [-250 ]TJ (O)Tj [35 ]TJ (ASIS)Tj [-250 ]TJ (D)Tj [1 ]TJ (ocBook)Tj [-250 ]TJ (DTD)Tj [-250 ]TJ (should)Tj [-250 ]TJ (be)Tj [-250 ]TJ (a)Tj [15 ]TJ (w)Tj [10 ]TJ (are)Tj [-250 ]TJ (that)Tj [-250 ]TJ (e)Tj [15 ]TJ (xtensi)Tj [25 ]TJ (v)Tj [15 ]TJ (e,)Tj [-250 ]TJ (and)Tj [-250 ]TJ (modular)Tj [40 ]TJ (,)Tj [-250 ]TJ (st)Tj [1 ]TJ (ylesheets)Tj 0 -12.95199 Td (are)Tj [-250 ]TJ (a)Tj [20 ]TJ (v)Tj [25 ]TJ (ailable)Tj [-250 ]TJ (from)Tj [-250 ]TJ (the)Tj [-250 ]TJ (DocB)Tj [1 ]TJ (ook)Tj [-250 ]TJ (project)Tj [-250 ]TJ (at)Tj [-250 ]TJ (http://docbook.sourcefor)Tj [18 ]TJ (ge.net.)Tj 0 -17.93199 Td (If)Tj [-250 ]TJ (you)Tj [-250 ]TJ (wish)Tj [-250 ]TJ (to)Tj [-250 ]TJ (mak)Tj [10 ]TJ (e)Tj [-250 ]TJ (use)Tj [-250 ]TJ (of)Tj [-250 ]TJ (th)Tj [1 ]TJ (e)Tj [-250 ]TJ (T)Tj [70 ]TJ (eX)Tj [-250 ]TJ (back)Tj [10 ]TJ (end)Tj [-250 ]TJ (you)Tj [-250 ]TJ (will)Tj [-250 ]TJ (require)Tj [-250 ]TJ (an)Tj [-250 ]TJ (up)Tj [-250 ]TJ (to)Tj [-250 ]TJ (date)Tj [-250 ]TJ (distrib)Tj [20 ]TJ (ution)Tj [-250 ]TJ (o)Tj [1 ]TJ (f)Tj [-250 ]TJ (laT)Tj [70 ]TJ (eX)Tj [-250 ]TJ (such)Tj [-250 ]TJ (as)Tj 0 -12.95199 Td (teT)Tj [70 ]TJ (eX,)Tj [-250 ]TJ (T)Tj [70 ]TJ (eXli)Tj [25 ]TJ (v)Tj [15 ]TJ (e)Tj [-250 ]TJ (or)Tj [-250 ]TJ (fpT)Tj [70 ]TJ (eX.)Tj [-250 ]TJ (In)Tj [-250 ]TJ (a)Tj [1 ]TJ (ddition)Tj [-250 ]TJ (you)Tj [-250 ]TJ (will)Tj [-250 ]TJ (also)Tj [-250 ]TJ (require)Tj [-250 ]TJ (the)Tj [-250 ]TJ (jadete)Tj [15 ]TJ (x)Tj [-250 ]TJ (package,)Tj [-250 ]TJ (a)Tj [20 ]TJ (v)Tj [25 ]TJ (ailabl)Tj [1 ]TJ (e)Tj [-250 ]TJ (from)Tj 0 -12.95098 Td (http://jadete)Tj [15 ]TJ (x.sourcefor)Tj [18 ]TJ (ge.n)Tj [1 ]TJ (et.)Tj /N87 12.05499 Tf -47.82099 -40.57798 Td (Suppor)Tj [-20 ]TJ (t)Tj /N81 9.96299 Tf 47.82099 -18.97898 Td (If,)Tj [-250 ]TJ (after)Tj [-250 ]TJ (reading)Tj [-250 ]TJ (the)Tj [-250 ]TJ (docume)Tj [1 ]TJ (ntation,)Tj [-250 ]TJ (you)Tj [-250 ]TJ (still)Tj [-250 ]TJ (ha)Tj [20 ]TJ (v)Tj [15 ]TJ (e)Tj [-250 ]TJ (a)Tj [-250 ]TJ (problem,)Tj [-250 ]TJ (then)Tj [-250 ]TJ (you)Tj [-250 ]TJ (may)Tj [-250 ]TJ (require)Tj [-250 ]TJ (som)Tj [1 ]TJ (e)Tj [-250 ]TJ (additional)Tj [-250 ]TJ (help.)Tj 0 -12.95098 Td (The)Tj [-250 ]TJ (OpenJade)Tj [-250 ]TJ (project)Tj [-250 ]TJ (is)Tj [-250 ]TJ (a)Tj [-250 ]TJ (v)Tj [21 ]TJ (olunteer)Tj [-250 ]TJ (ef)Tj [25 ]TJ (fort)Tj [-250 ]TJ (and)Tj [-250 ]TJ (as)Tj [-250 ]TJ (such)Tj [-250 ]TJ (does)Tj [-250 ]TJ (not)Tj [-250 ]TJ (pro)Tj [15 ]TJ (vide)Tj [-250 ]TJ (an)Tj [15 ]TJ (y)Tj [-250 ]TJ (formal)Tj [-250 ]TJ (supp)Tj [1 ]TJ (ort.)Tj [-250 ]TJ (Instead,)Tj [-250 ]TJ (you)Tj 0 -12.95199 Td (should)Tj [-250 ]TJ (look)Tj [-250 ]TJ (to)Tj [-250 ]TJ (the)Tj [-250 ]TJ (communi)Tj [1 ]TJ (ty)Tj [-250 ]TJ (for)Tj [-250 ]TJ (support.)Tj [-250 ]TJ (Once)Tj [-250 ]TJ (part)Tj [-250 ]TJ (of)Tj [-250 ]TJ (the)Tj [-250 ]TJ (community)Tj [65 ]TJ (,)Tj [-250 ]TJ (you,)Tj [-250 ]TJ (in)Tj [-250 ]TJ (turn,)Tj [-250 ]TJ (will)Tj [-249 ]TJ (be)Tj [-250 ]TJ (able)Tj [-250 ]TJ (to)Tj [-250 ]TJ (play)Tj 0 -12.95098 Td (your)Tj [-250 ]TJ (part)Tj [-250 ]TJ (in)Tj [-250 ]TJ (helping)Tj [-250 ]TJ (those)Tj [-250 ]TJ (th)Tj [1 ]TJ (at)Tj [-250 ]TJ (come)Tj [-250 ]TJ (after)Tj [-250 ]TJ (you.)Tj [-250 ]TJ (Here)Tj [-250 ]TJ (are)Tj [-250 ]TJ (some)Tj [-250 ]TJ (pointers)Tj [-250 ]TJ (to)Tj [-250 ]TJ (obtaining)Tj [-250 ]TJ (he)Tj [1 ]TJ (lp:)Tj ET 1 0 0 1 0 -183.09399 cm 0 g 0 G BT /N81 7.96998 Tf 0 0 Td (\225)Tj ET 1 0 0 1 2.78898 0 cm 0 g 0 G 0 g 0 G 0 g 0 G 1 0 0 1 7.17298 0 cm BT /N81 9.96299 Tf 0 0 Td (If)Tj [-250 ]TJ (you)Tj [-250 ]TJ (obtained)Tj [-250 ]TJ (your)Tj [-250 ]TJ (OpenJade)Tj [-250 ]TJ (to)Tj [1 ]TJ (ols)Tj [-250 ]TJ (in)Tj [-250 ]TJ (binary)Tj [-250 ]TJ (form)Tj [-250 ]TJ (from)Tj [-250 ]TJ (your)Tj [-250 ]TJ (operating)Tj [-250 ]TJ (system)Tj [-250 ]TJ (distrib)Tj [20 ]TJ (utor)Tj [-249 ]TJ (and)Tj [-250 ]TJ (you)Tj 0 -12.95098 Td (ha)Tj [20 ]TJ (v)Tj [15 ]TJ (e)Tj [-250 ]TJ (a)Tj [-250 ]TJ (b)Tj [20 ]TJ (uild)Tj [-250 ]TJ (related)Tj [-250 ]TJ (problem)Tj [-250 ]TJ (-)Tj [-250 ]TJ (su)Tj [1 ]TJ (ch)Tj [-250 ]TJ (as)Tj [-250 ]TJ (openjade)Tj [-250 ]TJ (crashing,)Tj [-250 ]TJ (then)Tj [-250 ]TJ (your)Tj [-250 ]TJ (\002rst)Tj [-250 ]TJ (port)Tj [-250 ]TJ (of)Tj [-250 ]TJ (call)Tj [-250 ]TJ (should)Tj [-249 ]TJ (be)Tj [-250 ]TJ (your)Tj 0 -12.95199 Td (distrib)Tj [20 ]TJ (utor)Tj [55 ]TJ (.)Tj ET 1 0 0 1 -9.96199 -43.83499 cm 0 g 0 G BT /N81 7.96998 Tf 0 0 Td (\225)Tj ET 1 0 0 1 2.78898 0 cm 0 g 0 G 0 g 0 G 0 g 0 G 1 0 0 1 7.17298 0 cm BT /N81 9.96299 Tf 0 0 Td (If)Tj [-250 ]TJ (you)Tj [-250 ]TJ (ha)Tj [20 ]TJ (v)Tj [15 ]TJ (e)Tj [-250 ]TJ (a)Tj [-250 ]TJ (problem)Tj [-250 ]TJ (with)Tj [-250 ]TJ (the)Tj [-250 ]TJ (us)Tj [1 ]TJ (age)Tj [-250 ]TJ (of)Tj [-250 ]TJ (openjade)Tj [-250 ]TJ (and)Tj [-250 ]TJ (tools,)Tj [-250 ]TJ (or)Tj [-250 ]TJ (general)Tj [-250 ]TJ (queries)Tj [-250 ]TJ (about)Tj [-250 ]TJ (DSSSL)Tj [-249 ]TJ (then)Tj [-250 ]TJ (you)Tj 0 -12.95199 Td (should)Tj [-250 ]TJ (try)Tj [-250 ]TJ (the)Tj [-250 ]TJ (DSSSL)Tj [-250 ]TJ (mailing)Tj [-249 ]TJ (list,)Tj [-250 ]TJ (see)Tj [-250 ]TJ (http://www)Tj [65 ]TJ (.mulberrytech.com/dsssl/dssslis)Tj [1 ]TJ (t/)Tj [-250 ]TJ (for)Tj [-250 ]TJ (details.)Tj ET 1 0 0 1 -9.96199 -30.88398 cm 0 g 0 G BT /N81 7.96998 Tf 0 0 Td (\225)Tj ET 1 0 0 1 2.78898 0 cm 0 g 0 G 0 g 0 G 0 g 0 G 1 0 0 1 7.17298 0 cm BT /N81 9.96299 Tf 0 0 Td (If)Tj [-250 ]TJ (you)Tj [-250 ]TJ (are)Tj [-250 ]TJ (using)Tj [-250 ]TJ (the)Tj [-250 ]TJ (DocBook)Tj [-250 ]TJ (DT)Tj [1 ]TJ (D)Tj [-250 ]TJ (and)Tj [-250 ]TJ (especially)Tj [-250 ]TJ (if)Tj [-250 ]TJ (you)Tj [-250 ]TJ (are)Tj [-250 ]TJ (also)Tj [-250 ]TJ (using)Tj [-250 ]TJ (the)Tj [-250 ]TJ (Modular)Tj [-250 ]TJ (DocBo)Tj [1 ]TJ (ok)Tj [-250 ]TJ (DSSSL)Tj 0 -12.95199 Td (stylesheets,)Tj [-250 ]TJ (then)Tj [-250 ]TJ (the)Tj [-250 ]TJ (docbook-a)Tj [1 ]TJ (pps)Tj [-250 ]TJ (mailing)Tj [-250 ]TJ (list)Tj [-250 ]TJ (is)Tj [-250 ]TJ (the)Tj [-250 ]TJ (place)Tj [-250 ]TJ (to)Tj [-250 ]TJ (go.)Tj [-250 ]TJ (See)Tj 0 -12.95098 Td (http://www)Tj [65 ]TJ (.oasis-open.or)Tj [18 ]TJ (g/docb)Tj [1 ]TJ (ook/mailinglist/)Tj [-250 ]TJ (for)Tj [-250 ]TJ (details.)Tj ET 1 0 0 1 -9.96199 -43.83599 cm 0 g 0 G BT /N81 7.96998 Tf 0 0 Td (\225)Tj ET 1 0 0 1 2.78898 0 cm 0 g 0 G 0 g 0 G 0 g 0 G 1 0 0 1 7.17298 0 cm BT /N81 9.96299 Tf 0 0 Td (If)Tj [-250 ]TJ (you)Tj [-250 ]TJ (ha)Tj [20 ]TJ (v)Tj [15 ]TJ (e)Tj [-250 ]TJ (a)Tj [-250 ]TJ (patch)Tj [-250 ]TJ (or)Tj [-250 ]TJ (b)Tj [20 ]TJ (ug)Tj [-250 ]TJ (\002x)Tj [-250 ]TJ (for)Tj [-250 ]TJ (Op)Tj [1 ]TJ (enJade,)Tj [-250 ]TJ (or)Tj [-250 ]TJ (are)Tj [-250 ]TJ (trying)Tj [-250 ]TJ (to)Tj [-250 ]TJ (use)Tj [-250 ]TJ (the)Tj [-250 ]TJ (OpenSP)Tj [-250 ]TJ (API)Tj [-250 ]TJ (then)Tj [-250 ]TJ (the)Tj 0 -12.95199 Td (openjade-de)Tj [25 ]TJ (v)Tj [15 ]TJ (el)Tj [-250 ]TJ (mailing)Tj [-250 ]TJ (list)Tj [-250 ]TJ (i)Tj [1 ]TJ (s)Tj [-250 ]TJ (the)Tj [-250 ]TJ (appropriate)Tj [-250 ]TJ (forum.)Tj -9.96199 -17.93199 Td (Please)Tj [-250 ]TJ (choose)Tj [-250 ]TJ (only)Tj [-250 ]TJ (one)Tj [-250 ]TJ (mai)Tj [1 ]TJ (ling)Tj [-250 ]TJ (list)Tj [-250 ]TJ (to)Tj [-250 ]TJ (post)Tj [-250 ]TJ (to,)Tj [-250 ]TJ (as)Tj [-250 ]TJ (cross-posting)Tj [-250 ]TJ (is)Tj [-250 ]TJ (generally)Tj [-250 ]TJ (fro)Tj [25 ]TJ (wn)Tj [1 ]TJ (ed)Tj [-250 ]TJ (upon.)Tj [-250 ]TJ (The)Tj [-250 ]TJ (v)Tj [25 ]TJ (arious)Tj 0 -12.95199 Td (mailing)Tj [-242 ]TJ (lists)Tj [-242 ]TJ (are)Tj [-242 ]TJ (arc)Tj [1 ]TJ (hi)Tj [25 ]TJ (v)Tj [15 ]TJ (ed)Tj [-242 ]TJ (and)Tj [-242 ]TJ (searchable.)Tj [-242 ]TJ (It)Tj [-242 ]TJ (is)Tj [-242 ]TJ (al)Tj [10 ]TJ (w)Tj [10 ]TJ (ays)Tj [-242 ]TJ (w)Tj [10 ]TJ (orth)Tj [-242 ]TJ (searc)Tj [1 ]TJ (hing)Tj [-242 ]TJ (for)Tj [-242 ]TJ (your)Tj [-242 ]TJ (problem)Tj [-242 ]TJ (\002rst,)Tj [-242 ]TJ (as)Tj [-242 ]TJ (it)Tj [-242 ]TJ (is)Tj [-242 ]TJ (often)Tj 0 -12.95098 Td (the)Tj [-250 ]TJ (case)Tj [-250 ]TJ (that)Tj [-250 ]TJ (someone)Tj [-250 ]TJ (has)Tj [-249 ]TJ (had)Tj [-250 ]TJ (the)Tj [-250 ]TJ (same)Tj [-250 ]TJ (problem)Tj [-250 ]TJ (before.)Tj /N87 12.05499 Tf -47.82099 -40.57798 Td (V)Tj [50 ]TJ (er)Tj [15 ]TJ (sion)Tj [-278 ]TJ (1.3.2)Tj /N90 9.96299 Tf 47.82099 -18.97898 Td (Released)Tj [-250 ]TJ (December)Tj [-250 ]TJ (2002.)Tj /N81 9.96299 Tf 110.66398 0 Td (This)Tj [-250 ]TJ (release)Tj [-250 ]TJ (allo)Tj [25 ]TJ (ws)Tj [-250 ]TJ (openja)Tj [1 ]TJ (de)Tj [-250 ]TJ (to)Tj [-250 ]TJ (be)Tj [-250 ]TJ (b)Tj [20 ]TJ (uilt)Tj [-250 ]TJ (ag)Tj [5 ]TJ (ainst)Tj [-250 ]TJ (the)Tj [-250 ]TJ (most)Tj [-250 ]TJ (recent)Tj [-250 ]TJ (OpenSP)Tj -110.66398 -12.95098 Td (release)Tj [-250 ]TJ (-)Tj [-250 ]TJ (v)Tj [15 ]TJ (ersion)Tj [-250 ]TJ (1.5.)Tj [-250 ]TJ (It)Tj [-250 ]TJ (also)Tj [-249 ]TJ (contains)Tj [-250 ]TJ (some)Tj [-250 ]TJ (\002x)Tj [15 ]TJ (es)Tj [-250 ]TJ (for)Tj [-250 ]TJ (the)Tj [-250 ]TJ (MIF)Tj [-250 ]TJ (back)Tj [10 ]TJ (end)Tj [-250 ]TJ (which)Tj [-250 ]TJ (were)Tj [-250 ]TJ (omi)Tj [1 ]TJ (tted)Tj [-250 ]TJ (from)Tj [-250 ]TJ (the)Tj [-250 ]TJ (1.3.1)Tj 0 -12.95199 Td (release.)Tj [-250 ]TJ (OpenSP)Tj [-250 ]TJ (is)Tj [-250 ]TJ (no)Tj [25 ]TJ (w)Tj [-250 ]TJ (dis)Tj [1 ]TJ (trib)Tj [20 ]TJ (uted)Tj [-250 ]TJ (in)Tj [-250 ]TJ (a)Tj [-250 ]TJ (separate)Tj [-250 ]TJ (package)Tj [-250 ]TJ (and)Tj [-250 ]TJ (made)Tj [-250 ]TJ (a)Tj [20 ]TJ (v)Tj [25 ]TJ (ailable)Tj [-250 ]TJ (on)Tj [-250 ]TJ (its)Tj [-249 ]TJ (o)Tj [25 ]TJ (wn)Tj [-250 ]TJ (release)Tj [-250 ]TJ (c)Tj [15 ]TJ (ycle)Tj /N90 9.96299 Tf 0 -27.89498 Td (T)Tj [92 ]TJ (able)Tj [-250 ]TJ (3.)Tj [-250 ]TJ (Changes)Tj [-250 ]TJ (f)Tj [25 ]TJ (or)Tj [-250 ]TJ (r)Tj [18 ]TJ (eleas)Tj [1 ]TJ (e)Tj [-250 ]TJ (1.3.2)Tj ET 1 0 0 1 -9.96199 -182.52598 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -12.17399 cm BT /N87 9.96299 Tf 0 0 Td (Item)Tj [-278 ]TJ (1)Tj [-7610 ]TJ (MIF)Tj [-278 ]TJ (B)Tj [1 ]TJ (ac)Tj [20 ]TJ (kend)Tj [-278 ]TJ (Fix)Tj [10 ]TJ (es)Tj ET 1 0 0 1 0 -3.38699 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -12.17498 cm BT /N81 9.96299 Tf 0 0 Td (References)Tj [-6058 ]TJ (G.)Tj [-250 ]TJ (Ses)Tj [1 ]TJ (hadri)Tj [-250 ]TJ (et)Tj [-250 ]TJ (al.)Tj 0 -15.16299 Td (Cate)Tj [15 ]TJ (gory)Tj [-6849 ]TJ (Softw)Tj [11 ]TJ (are)Tj [-250 ]TJ (Bug)Tj 0 -15.16299 Td (Problem)Tj [-7111 ]TJ (Issues)Tj [-249 ]TJ (with)Tj [-250 ]TJ (page)Tj [-250 ]TJ (size)Tj [-250 ]TJ (and)Tj [-250 ]TJ (page)Tj [-250 ]TJ (header/footers)Tj ET 1 0 0 1 -47.82099 -147.61599 cm 0 g 0 G BT /N117 9.96299 Tf 0 0 Td (4)Tj ET 1 0 0 1 466.25199 0 cm 0 g 0 G PDFVars/TermAll get exec end end userdict /pgsave get restore showpage %%PageTrailer %%EndPage %%Page: 11 11 %%BeginPageSetup userdict /pgsave save put PDFVars begin PDF begin PDFVars/InitAll get exec 1.14301 1.47949 translate %%EndPageSetup 0 0 609.71398 789.04098 RC 1 0 0 1 71.73098 729.26499 cm 0 g 0 G 1 0 0 1 345.13699 3.58699 cm BT /N117 9.96299 Tf 0 0 Td (OpenJ)Tj [35 ]TJ (ade)Tj [-250 ]TJ (1.3.2)Tj [-250 ]TJ (Release)Tj [-250 ]TJ (Note)Tj [1 ]TJ (s)Tj ET 1 0 0 1 121.11499 -3.58699 cm 0 g 0 G 1 0 0 1 -418.43099 -11.35699 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -12.17399 cm BT /N87 9.96299 Tf 0 0 Td (Item)Tj [-278 ]TJ (1)Tj [-7610 ]TJ (MIF)Tj [-278 ]TJ (B)Tj [1 ]TJ (ac)Tj [20 ]TJ (kend)Tj [-278 ]TJ (Fix)Tj [10 ]TJ (es)Tj /N81 9.96299 Tf 0 -15.16398 Td (Resolution)Tj [-6166 ]TJ (Fix)Tj [-250 ]TJ (to)Tj [-249 ]TJ (mak)Tj [10 ]TJ (e)Tj [-250 ]TJ (sure)Tj [-250 ]TJ (that)Tj [-250 ]TJ (right)Tj [-250 ]TJ (header)Tj [-250 ]TJ (is)Tj [-250 ]TJ (sho)Tj [25 ]TJ (wn)Tj [-250 ]TJ (in)Tj [-250 ]TJ (documents)Tj [-250 ]TJ (and)Tj [-250 ]TJ (tha)Tj [1 ]TJ (t)Tj [-250 ]TJ (document)Tj 104.60699 -12.95098 Td (page)Tj [-250 ]TJ (size)Tj [-250 ]TJ (is)Tj [-250 ]TJ (initialised)Tj [-250 ]TJ (corre)Tj [1 ]TJ (ctly)Tj [65 ]TJ (.)Tj ET 1 0 0 1 0 -31.50199 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -0.39898 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -12.17399 cm BT /N87 9.96299 Tf 0 0 Td (Item)Tj [-278 ]TJ (2)Tj [-7610 ]TJ (Suppo)Tj [1 ]TJ (r)Tj [-20 ]TJ (t)Tj [-278 ]TJ (f)Tj [20 ]TJ (or)Tj [-278 ]TJ (b)Tj [20 ]TJ (uilding)Tj [-278 ]TJ (OpenSP)Tj [-278 ]TJ (1.5)Tj ET 1 0 0 1 0 -3.38699 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -12.17498 cm BT /N81 9.96299 Tf 0 0 Td (References)Tj [-6058 ]TJ (Ian)Tj [-250 ]TJ (Ca)Tj [1 ]TJ (stle,)Tj [-250 ]TJ (Karl)Tj [-250 ]TJ (Eichw)Tj [10 ]TJ (alder)Tj 0 -15.16299 Td (Cate)Tj [15 ]TJ (gory)Tj [-6849 ]TJ (Softw)Tj [10 ]TJ (a)Tj [1 ]TJ (re)Tj [-250 ]TJ (Bug)Tj 0 -15.16299 Td (Problem)Tj [-7111 ]TJ (OpenSP)Tj [-249 ]TJ (is)Tj [-250 ]TJ (no)Tj [25 ]TJ (w)Tj [-250 ]TJ (at)Tj [-250 ]TJ (v)Tj [15 ]TJ (ersion)Tj [-250 ]TJ (1.5)Tj [-250 ]TJ (which)Tj [-250 ]TJ (has)Tj [-250 ]TJ (man)Tj [15 ]TJ (y)Tj [-250 ]TJ (impro)Tj [15 ]TJ (v)Tj [15 ]TJ (ements)Tj [-250 ]TJ (o)Tj [15 ]TJ (v)Tj [15 ]TJ (er)Tj [-250 ]TJ (1.3.)Tj [1 ]TJ (4)Tj 0 -15.16299 Td (Resolution)Tj [-6166 ]TJ (It)Tj [-250 ]TJ (is)Tj [-250 ]TJ (d)Tj [1 ]TJ (esirable)Tj [-250 ]TJ (to)Tj [-250 ]TJ (use)Tj [-250 ]TJ (OpenSP)Tj [-250 ]TJ (1.5)Tj [-250 ]TJ (which)Tj [-250 ]TJ (has)Tj [-250 ]TJ (man)Tj [15 ]TJ (y)Tj [-250 ]TJ (impro)Tj [15 ]TJ (v)Tj [15 ]TJ (ements)Tj [-250 ]TJ (o)Tj [15 ]TJ (v)Tj [16 ]TJ (er)Tj [-250 ]TJ (v)Tj [15 ]TJ (ersion)Tj 104.60699 -12.95098 Td (1.3.4)Tj [-250 ]TJ (which)Tj [-250 ]TJ (shipped)Tj [-250 ]TJ (with)Tj [-250 ]TJ (openjad)Tj [1 ]TJ (e)Tj [-250 ]TJ (1.3.1.)Tj [-250 ]TJ (Ho)Tj [25 ]TJ (we)Tj [25 ]TJ (v)Tj [15 ]TJ (er)Tj [40 ]TJ (,)Tj [-250 ]TJ (it)Tj [-250 ]TJ (is)Tj [-250 ]TJ (a)Tj [15 ]TJ (wkw)Tj [10 ]TJ (ard)Tj [-250 ]TJ (ha)Tj [20 ]TJ (ving)Tj [-250 ]TJ (to)Tj 0 -12.95199 Td (ha)Tj [20 ]TJ (v)Tj [15 ]TJ (e)Tj [-250 ]TJ (tw)Tj [10 ]TJ (o)Tj [-250 ]TJ (v)Tj [15 ]TJ (ersions)Tj [-250 ]TJ (of)Tj [-250 ]TJ (OpenSP)Tj [-250 ]TJ (at)Tj [-250 ]TJ (th)Tj [1 ]TJ (e)Tj [-250 ]TJ (same)Tj [-250 ]TJ (time.)Tj [-250 ]TJ (OpenJade)Tj [-250 ]TJ (1.4)Tj [-250 ]TJ (is)Tj [-250 ]TJ (not)Tj [-250 ]TJ (ready)Tj [-250 ]TJ (for)Tj 0 -12.95098 Td (release)Tj [-250 ]TJ (yet,)Tj [-250 ]TJ (so)Tj [-250 ]TJ (v)Tj [15 ]TJ (ersion)Tj [-250 ]TJ (1.3.2)Tj [-250 ]TJ (will)Tj [-249 ]TJ (link)Tj [-250 ]TJ (ag)Tj [5 ]TJ (ainst)Tj [-250 ]TJ (OpenSP)Tj [-250 ]TJ (1.5)Tj [-250 ]TJ (and)Tj [-250 ]TJ (later)Tj [-250 ]TJ (-)Tj [-250 ]TJ (and)Tj [-250 ]TJ (no)Tj 0 -12.95199 Td (longer)Tj [-250 ]TJ (includes)Tj [-250 ]TJ (the)Tj [-250 ]TJ (old)Tj [-250 ]TJ (v)Tj [15 ]TJ (ersion)Tj [-250 ]TJ (1)Tj [1 ]TJ (.3.4)Tj [-250 ]TJ (of)Tj [-250 ]TJ (OpenSP)Tj [111 ]TJ (.)Tj ET 1 0 0 1 0 -100.68199 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -0.39898 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -12.17399 cm BT /N87 9.96299 Tf 0 0 Td (Item)Tj [-278 ]TJ (3)Tj [-7610 ]TJ (Corre)Tj [1 ]TJ (ct)Tj [-278 ]TJ (de\002nition)Tj [-278 ]TJ (of)Tj [-278 ]TJ ("attrib)Tj [20 ]TJ (ute")Tj [-278 ]TJ (in)Tj [-278 ]TJ (b)Tj [20 ]TJ (uiltin.dsl)Tj ET 1 0 0 1 0 -3.38699 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -12.17399 cm BT /N81 9.96299 Tf 0 0 Td (References)Tj [-6058 ]TJ (T)Tj [80 ]TJ (oby)Tj [-250 ]TJ (Sp)Tj [1 ]TJ (eight,)Tj [-250 ]TJ (Debian)Tj [-250 ]TJ (Bug)Tj [-250 ]TJ (#145242)Tj 0 -15.16398 Td (Cate)Tj [15 ]TJ (gory)Tj [-6849 ]TJ (Softw)Tj [10 ]TJ (a)Tj [1 ]TJ (re)Tj [-250 ]TJ (Bug)Tj 0 -15.16299 Td (Problem)Tj [-7111 ]TJ (The)Tj [-250 ]TJ (de\002)Tj [1 ]TJ (nition)Tj [-250 ]TJ (of)Tj [-250 ]TJ ("attrib)Tj [20 ]TJ (ute")Tj [-250 ]TJ (\(ISO/IEC)Tj [-250 ]TJ (10179:1996,)Tj [-250 ]TJ (section)Tj [-250 ]TJ (10.2.5\))Tj [-249 ]TJ (for)Tj [-250 ]TJ (SGML)Tj 104.60699 -12.95098 Td (property)Tj [-250 ]TJ (operations)Tj [-250 ]TJ (w)Tj [10 ]TJ (as)Tj [-250 ]TJ (not)Tj [-250 ]TJ (corr)Tj [1 ]TJ (ect.)Tj -104.60699 -15.16299 Td (Resolution)Tj [-6166 ]TJ (The)Tj [-250 ]TJ (de\002)Tj [1 ]TJ (nition)Tj [-250 ]TJ (has)Tj [-250 ]TJ (been)Tj [-250 ]TJ (corrected)Tj [-250 ]TJ (in)Tj [-250 ]TJ (accordance)Tj [-250 ]TJ (with)Tj [-250 ]TJ (the)Tj [-250 ]TJ (standar)Tj [1 ]TJ (d.)Tj ET 1 0 0 1 0 -61.82899 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -0.39799 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -12.17399 cm BT /N87 9.96299 Tf 0 0 Td (Item)Tj [-278 ]TJ (4)Tj [-7610 ]TJ (XML)Tj [-278 ]TJ (b)Tj [1 ]TJ (ac)Tj [20 ]TJ (kend)Tj [-278 ]TJ (doesn't)Tj [-278 ]TJ (quote)Tj [-278 ]TJ ("&")Tj [-278 ]TJ (in)Tj [-278 ]TJ (attrib)Tj [20 ]TJ (ute)Tj [-278 ]TJ (v)Tj [20 ]TJ (alues)Tj ET 1 0 0 1 0 -3.38798 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -12.17399 cm BT /N81 9.96299 Tf 0 0 Td (References)Tj [-6058 ]TJ (T)Tj [80 ]TJ (oby)Tj [-250 ]TJ (Sp)Tj [1 ]TJ (eight,)Tj [-250 ]TJ (Debian)Tj [-250 ]TJ (Bug)Tj [-250 ]TJ (#147073)Tj 0 -15.16299 Td (Cate)Tj [15 ]TJ (gory)Tj [-6849 ]TJ (Softw)Tj [10 ]TJ (a)Tj [1 ]TJ (re)Tj [-250 ]TJ (Bug)Tj 0 -15.16299 Td (Problem)Tj [-7111 ]TJ (When)Tj [-250 ]TJ (u)Tj [1 ]TJ (sing)Tj [-250 ]TJ (OpenJade)Tj [-250 ]TJ (with)Tj [-250 ]TJ (the)Tj [-250 ]TJ (XML)Tj [-250 ]TJ (or)Tj [-250 ]TJ (SGML)Tj [-250 ]TJ (back)Tj [10 ]TJ (end)Tj [-250 ]TJ (to)Tj [-250 ]TJ (output)Tj [-250 ]TJ (a)Tj [1 ]TJ (ttrib)Tj [20 ]TJ (ute)Tj 104.60699 -12.95199 Td (v)Tj [25 ]TJ (alues)Tj [-250 ]TJ (containing)Tj [-250 ]TJ (the)Tj [-250 ]TJ ('&')Tj [-250 ]TJ (chara)Tj [1 ]TJ (cter)Tj [40 ]TJ (,)Tj [-250 ]TJ (the)Tj [-250 ]TJ (output)Tj [-250 ]TJ (is)Tj [-250 ]TJ (not)Tj [-250 ]TJ (well-formed.)Tj -104.60699 -15.16299 Td (Resolution)Tj [-6166 ]TJ (Fix)Tj [15 ]TJ (ed)Tj [-250 ]TJ (t)Tj [1 ]TJ (he)Tj [-250 ]TJ (T)Tj [35 ]TJ (ransform)Tj [-250 ]TJ (FO)Tj [40 ]TJ (T)Tj [-250 ]TJ (Builder)Tj [-250 ]TJ (so)Tj [-250 ]TJ (that)Tj [-250 ]TJ (for)Tj [-250 ]TJ (XML)Tj [-250 ]TJ (output)Tj [-250 ]TJ (the)Tj [-250 ]TJ ('&')Tj [-249 ]TJ (character)Tj [-250 ]TJ (is)Tj 104.60699 -12.95098 Td (properly)Tj [-250 ]TJ (quoted.)Tj ET 1 0 0 1 0 -74.77899 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 -47.82099 -42.57099 cm BT /N87 12.05499 Tf 0 0 Td (V)Tj [50 ]TJ (er)Tj [15 ]TJ (sion)Tj [-278 ]TJ (1.3.1)Tj /N90 9.96299 Tf 47.82099 -18.97898 Td (Released)Tj [-250 ]TJ (J)Tj [15 ]TJ (anuary)Tj [-250 ]TJ (2002.)Tj /N81 9.96299 Tf 102.79399 0 Td (This)Tj [-250 ]TJ (release)Tj [-250 ]TJ (is)Tj [-250 ]TJ (primarily)Tj [-249 ]TJ (a)Tj [-250 ]TJ (maintenance)Tj [-250 ]TJ (release.)Tj [-250 ]TJ (It)Tj [-250 ]TJ (deli)Tj [25 ]TJ (v)Tj [15 ]TJ (ers)Tj [-250 ]TJ (tw)Tj [10 ]TJ (o)Tj [-250 ]TJ (k)Tj [10 ]TJ (e)Tj [15 ]TJ (y)Tj [-250 ]TJ (adv)Tj [25 ]TJ (antages)Tj -102.79399 -12.95098 Td (o)Tj [15 ]TJ (v)Tj [15 ]TJ (er)Tj [-250 ]TJ (the)Tj [-250 ]TJ (OpenJade)Tj [-250 ]TJ (1.3)Tj [-250 ]TJ (release)Tj [1 ]TJ (:)Tj [-250 ]TJ (Support)Tj [-250 ]TJ (for)Tj [-250 ]TJ (contemporary)Tj [-250 ]TJ (platforms)Tj [-250 ]TJ (\(operating)Tj [-250 ]TJ (system)Tj [1 ]TJ (s)Tj [-250 ]TJ (and)Tj [-250 ]TJ (compilers\))Tj 0 -12.95098 Td (and)Tj [-250 ]TJ (incorporates)Tj [-250 ]TJ (the)Tj [-250 ]TJ (v)Tj [25 ]TJ (arious)Tj [-249 ]TJ (patches)Tj [-250 ]TJ (and)Tj [-250 ]TJ (impro)Tj [15 ]TJ (v)Tj [15 ]TJ (ements,)Tj [-250 ]TJ (especially)Tj [-250 ]TJ (to)Tj [-250 ]TJ (the)Tj [-250 ]TJ (T)Tj [70 ]TJ (eX)Tj [-250 ]TJ (back)Tj [10 ]TJ (en)Tj [1 ]TJ (d,)Tj [-250 ]TJ (which)Tj [-250 ]TJ (ha)Tj [20 ]TJ (v)Tj [15 ]TJ (e)Tj [-250 ]TJ (been)Tj 0 -12.95199 Td (e)Tj [15 ]TJ (xtensi)Tj [25 ]TJ (v)Tj [15 ]TJ (ely)Tj [-250 ]TJ (used)Tj [-250 ]TJ (o)Tj [15 ]TJ (v)Tj [15 ]TJ (er)Tj [-250 ]TJ (the)Tj [-250 ]TJ (last)Tj [-249 ]TJ (fe)Tj [25 ]TJ (w)Tj [-250 ]TJ (years.)Tj [-250 ]TJ (Probably)Tj [-250 ]TJ (the)Tj [-250 ]TJ (biggest)Tj [-250 ]TJ (bene\002t)Tj [-250 ]TJ (to)Tj [-250 ]TJ (T)Tj [70 ]TJ (eX)Tj [-250 ]TJ (back)Tj [10 ]TJ (end)Tj [-250 ]TJ (us)Tj [1 ]TJ (ers)Tj [-250 ]TJ (are)Tj [-250 ]TJ (the)Tj 0 -12.95098 Td (enhanced)Tj [-250 ]TJ (table)Tj [-250 ]TJ (support)Tj [-250 ]TJ (and)Tj [-250 ]TJ (i)Tj [1 ]TJ (mpro)Tj [15 ]TJ (v)Tj [15 ]TJ (ed)Tj [-250 ]TJ (tw)Tj [10 ]TJ (o)Tj [-250 ]TJ (sided)Tj [-250 ]TJ (output)Tj [-250 ]TJ (support)Tj [-250 ]TJ (\(in)Tj [-250 ]TJ (conjunction)Tj [-250 ]TJ (with)Tj [-250 ]TJ (imp)Tj [1 ]TJ (ro)Tj [15 ]TJ (v)Tj [15 ]TJ (ements)Tj [-250 ]TJ (to)Tj [-250 ]TJ (the)Tj 0 -12.95199 Td (companion)Tj [-250 ]TJ (jadete)Tj [15 ]TJ (x)Tj [-250 ]TJ (package\))Tj [1 ]TJ (.)Tj 0 -17.93299 Td (The)Tj [-250 ]TJ (follo)Tj [25 ]TJ (wing)Tj [-250 ]TJ (table)Tj [-250 ]TJ (details)Tj [-249 ]TJ (the)Tj [-250 ]TJ (major)Tj [-250 ]TJ (impro)Tj [15 ]TJ (v)Tj [15 ]TJ (ements)Tj [-250 ]TJ (in)Tj [-250 ]TJ (Openjade)Tj [-250 ]TJ (1.3.1)Tj /N90 9.96299 Tf 0 -27.89498 Td (T)Tj [92 ]TJ (able)Tj [-250 ]TJ (4.)Tj [-250 ]TJ (Changes)Tj [-250 ]TJ (f)Tj [25 ]TJ (or)Tj [-250 ]TJ (r)Tj [18 ]TJ (eleas)Tj [1 ]TJ (e)Tj [-250 ]TJ (1.3.1)Tj ET 1 0 0 1 47.82099 -141.94699 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -12.17498 cm BT /N87 9.96299 Tf 0 0 Td (Item)Tj [-278 ]TJ (1)Tj [-7610 ]TJ (Suppo)Tj [1 ]TJ (r)Tj [-20 ]TJ (t)Tj [-278 ]TJ (f)Tj [20 ]TJ (or)Tj [-278 ]TJ (MacOS)Tj [-278 ]TJ (X/)Tj [-278 ]TJ (Darwin)Tj ET 1 0 0 1 0 -3.38699 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 -47.82099 -103.64199 cm 0 g 0 G 1 0 0 1 461.26998 0 cm BT /N117 9.96299 Tf 0 0 Td (5)Tj ET 1 0 0 1 4.98199 0 cm 0 g 0 G PDFVars/TermAll get exec end end userdict /pgsave get restore showpage %%PageTrailer %%EndPage %%Page: 12 12 %%BeginPageSetup userdict /pgsave save put PDFVars begin PDF begin PDFVars/InitAll get exec 1.14301 1.47949 translate %%EndPageSetup 0 0 609.71398 789.04098 RC 1 0 0 1 71.73098 729.26499 cm 0 g 0 G 1 0 0 1 0 3.58699 cm BT /N117 9.96299 Tf 0 0 Td (OpenJ)Tj [35 ]TJ (ade)Tj [-250 ]TJ (1.3.2)Tj [-250 ]TJ (Release)Tj [-250 ]TJ (Notes)Tj ET 1 0 0 1 466.25199 -3.58699 cm 0 g 0 G 1 0 0 1 -418.43099 -11.35699 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -12.17399 cm BT /N87 9.96299 Tf 0 0 Td (Item)Tj [-278 ]TJ (1)Tj [-7610 ]TJ (Suppo)Tj [1 ]TJ (r)Tj [-20 ]TJ (t)Tj [-278 ]TJ (f)Tj [20 ]TJ (or)Tj [-278 ]TJ (MacOS)Tj [-278 ]TJ (X/)Tj [-278 ]TJ (Darwin)Tj ET 1 0 0 1 0 -2.98899 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -12.17498 cm BT /N81 9.96299 Tf 0 0 Td (References)Tj [-6058 ]TJ (Fink)Tj [-250 ]TJ (P)Tj [1 ]TJ (roject;)Tj [-250 ]TJ (K)Tj [35 ]TJ (ogul\351,)Tj [-250 ]TJ (Ryo)Tj 0 -15.16299 Td (Cate)Tj [15 ]TJ (gory)Tj [-6849 ]TJ (Softw)Tj [10 ]TJ (a)Tj [1 ]TJ (re)Tj [-250 ]TJ (Bug)Tj 0 -15.16299 Td (Problem)Tj [-7111 ]TJ (OpenJa)Tj [1 ]TJ (de)Tj [-250 ]TJ (1.3)Tj [-250 ]TJ (does)Tj [-250 ]TJ (not)Tj [-250 ]TJ (b)Tj [20 ]TJ (uild)Tj [-250 ]TJ (and)Tj [-250 ]TJ (run)Tj [-250 ]TJ (on)Tj [-250 ]TJ (the)Tj [-250 ]TJ (Mac)Tj [-250 ]TJ (OS)Tj [-250 ]TJ (X/Darwin)Tj [-250 ]TJ (plat)Tj [1 ]TJ (form)Tj 0 -15.16299 Td (Resolution)Tj [-6166 ]TJ (OpenJa)Tj [1 ]TJ (de)Tj [-250 ]TJ (1.3.1)Tj [-250 ]TJ (has)Tj [-250 ]TJ (been)Tj [-250 ]TJ (enhanced)Tj [-250 ]TJ (to)Tj [-250 ]TJ (support)Tj [-250 ]TJ (Mac)Tj [-250 ]TJ (OS)Tj [-250 ]TJ (X/Darwin)Tj [-250 ]TJ (1.4)Tj [1 ]TJ (.)Tj [-250 ]TJ (The)Tj 104.60699 -12.95098 Td (autoconf)Tj [-250 ]TJ (con\002guration)Tj [-250 ]TJ (system)Tj [-250 ]TJ (h)Tj [1 ]TJ (as)Tj [-250 ]TJ (been)Tj [-250 ]TJ (upgraded)Tj [-250 ]TJ (and)Tj [-250 ]TJ (also)Tj [-250 ]TJ (includes)Tj [-250 ]TJ (speci\002c)Tj 0 -12.95199 Td (platform)Tj [-250 ]TJ (support.)Tj [-250 ]TJ (Some)Tj [-250 ]TJ (minor)Tj [-250 ]TJ (c)Tj [1 ]TJ (ode)Tj [-250 ]TJ (alterations)Tj [-250 ]TJ (to)Tj [-250 ]TJ (impro)Tj [15 ]TJ (v)Tj [15 ]TJ (e)Tj [-250 ]TJ (code)Tj [-250 ]TJ (portability)Tj 0 -12.95098 Td (\(C++)Tj [-250 ]TJ (style)Tj [-250 ]TJ (changes\).)Tj [-250 ]TJ (Note)Tj [-250 ]TJ (tha)Tj [1 ]TJ (t)Tj [-250 ]TJ (the)Tj [-250 ]TJ (POSIX)Tj [-250 ]TJ (locale)Tj [-250 ]TJ (feature)Tj [-250 ]TJ (is)Tj [-250 ]TJ (not)Tj [-250 ]TJ (a)Tj [20 ]TJ (v)Tj [25 ]TJ (ailable)Tj [-250 ]TJ (on)Tj 0 -12.95199 Td (this)Tj [-250 ]TJ (platform.)Tj ET 1 0 0 1 0 -100.68199 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -0.39799 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -12.17498 cm BT /N87 9.96299 Tf 0 0 Td (Item)Tj [-278 ]TJ (2)Tj [-7610 ]TJ (UNIX)Tj [-277 ]TJ (on-line)Tj [-278 ]TJ (man)Tj [10 ]TJ (ual)Tj [-278 ]TJ (pa)Tj [10 ]TJ (g)Tj [-10 ]TJ (es)Tj ET 1 0 0 1 0 -3.38699 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -12.17399 cm BT /N81 9.96299 Tf 0 0 Td (References)Tj [-6058 ]TJ (None)Tj 0 -15.16299 Td (Cate)Tj [15 ]TJ (gory)Tj [-6849 ]TJ (Docum)Tj [1 ]TJ (entation)Tj [-250 ]TJ (Bug)Tj 0 -15.16398 Td (Problem)Tj [-7111 ]TJ (No)Tj [-250 ]TJ (on-l)Tj [1 ]TJ (ine)Tj [-250 ]TJ (manual)Tj [-250 ]TJ (\(man\))Tj [-250 ]TJ (pages)Tj [-250 ]TJ (a)Tj [20 ]TJ (v)Tj [25 ]TJ (ailable)Tj [-250 ]TJ (on)Tj [-250 ]TJ (UNIX)Tj [-250 ]TJ (platforms)Tj 0 -15.16299 Td (Resolution)Tj [-6166 ]TJ (OpenJa)Tj [1 ]TJ (de)Tj [-250 ]TJ (1.3.1)Tj [-250 ]TJ (no)Tj [25 ]TJ (w)Tj [-250 ]TJ (has)Tj [-250 ]TJ (a)Tj [-250 ]TJ (man)Tj [-250 ]TJ (page)Tj [-250 ]TJ (for)Tj [-250 ]TJ (e)Tj [25 ]TJ (v)Tj [15 ]TJ (ery)Tj [-250 ]TJ (command.)Tj [-250 ]TJ (Additional)Tj [1 ]TJ (ly)Tj [65 ]TJ (,)Tj [-250 ]TJ (if)Tj 104.60699 -12.95098 Td (OpenJade)Tj [-250 ]TJ (is)Tj [-250 ]TJ (used)Tj [-250 ]TJ (as)Tj [-250 ]TJ (a)Tj [-250 ]TJ (replacem)Tj [1 ]TJ (ent)Tj [-250 ]TJ (for)Tj [-250 ]TJ (Jade,)Tj [-250 ]TJ (then)Tj [-250 ]TJ (compatibility)Tj [-250 ]TJ (man)Tj [-250 ]TJ (pages)Tj [-250 ]TJ (are)Tj 0 -12.95199 Td (included)Tj [-250 ]TJ (\(i.e.)Tj [-250 ]TJ (man)Tj [-250 ]TJ (jade)Tj [-250 ]TJ (is)Tj [-250 ]TJ (synon)Tj [15 ]TJ (y)Tj [1 ]TJ (mous)Tj [-250 ]TJ (with)Tj [-250 ]TJ (man)Tj [-250 ]TJ (openjade\).)Tj ET 1 0 0 1 0 -74.77999 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -0.39799 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -12.17498 cm BT /N87 9.96299 Tf 0 0 Td (Item)Tj [-278 ]TJ (3)Tj [-7610 ]TJ (Upgra)Tj [1 ]TJ (de)Tj [-278 ]TJ (GNU)Tj [-278 ]TJ (sour)Tj [20 ]TJ (ce)Tj [-278 ]TJ (con\002guration)Tj [-278 ]TJ (tools)Tj ET 1 0 0 1 0 -3.38699 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -12.17399 cm BT /N81 9.96299 Tf 0 0 Td (References)Tj [-6058 ]TJ (V)Tj [111 ]TJ (ariou)Tj [1 ]TJ (s)Tj [-250 ]TJ (sourcefor)Tj [18 ]TJ (ge)Tj [-250 ]TJ (problem)Tj [-250 ]TJ (reports,)Tj [-250 ]TJ (SuSE)Tj [-250 ]TJ (Linux)Tj [-250 ]TJ (7.3,)Tj [-250 ]TJ (Red)Tj [-250 ]TJ (Hat)Tj [-250 ]TJ (7.2,)Tj [-249 ]TJ (Red)Tj [-250 ]TJ (Hat)Tj 104.60699 -12.95199 Td (Bugzilla)Tj [-250 ]TJ (#46212)Tj -104.60699 -15.16299 Td (Cate)Tj [15 ]TJ (gory)Tj [-6849 ]TJ (Softw)Tj [10 ]TJ (a)Tj [1 ]TJ (re)Tj [-250 ]TJ (Bug)Tj 0 -15.16299 Td (Problem)Tj [-7111 ]TJ (The)Tj [-250 ]TJ (so)Tj [1 ]TJ (urce)Tj [-250 ]TJ (con\002guration)Tj [-250 ]TJ (system)Tj [-250 ]TJ (is)Tj [-250 ]TJ (based)Tj [-250 ]TJ (on)Tj [-250 ]TJ (old)Tj [-250 ]TJ (v)Tj [15 ]TJ (ersions)Tj [-250 ]TJ (of)Tj [-250 ]TJ (libto)Tj [1 ]TJ (ol)Tj [-250 ]TJ (and)Tj 104.60699 -12.95098 Td (autoconf.)Tj [-250 ]TJ (In)Tj [-250 ]TJ (addition,)Tj [-250 ]TJ (there)Tj [-250 ]TJ (are)Tj [-250 ]TJ (p)Tj [1 ]TJ (roblems)Tj [-250 ]TJ (with)Tj [-250 ]TJ (the)Tj [-250 ]TJ (generated)Tj [-250 ]TJ (Mak)Tj [10 ]TJ (e\002le)Tj [-250 ]TJ (\002les)Tj 0 -12.95199 Td (such)Tj [-250 ]TJ (that)Tj [-250 ]TJ (installation)Tj [-250 ]TJ (directo)Tj [1 ]TJ (ries)Tj [-250 ]TJ (are)Tj [-250 ]TJ (not)Tj [-250 ]TJ (created.)Tj -104.60699 -15.16299 Td (Resolution)Tj [-6166 ]TJ (Upgrad)Tj [1 ]TJ (ed)Tj [-243 ]TJ (to)Tj [-243 ]TJ (autoconf)Tj [-243 ]TJ (2.52)Tj [-243 ]TJ (and)Tj [-243 ]TJ (libtool)Tj [-243 ]TJ (1.4.)Tj [-243 ]TJ (Upgraded)Tj [-243 ]TJ (the)Tj [-243 ]TJ (v)Tj [25 ]TJ (arious)Tj [-243 ]TJ (support)Tj [-243 ]TJ (\002les.)Tj 104.60699 -12.95098 Td (Included)Tj [-250 ]TJ (elements)Tj [-250 ]TJ (of)Tj [-250 ]TJ (automak)Tj [10 ]TJ (e)Tj [-249 ]TJ (support.)Tj [-250 ]TJ (Made)Tj [-250 ]TJ (the)Tj [-250 ]TJ (Mak)Tj [10 ]TJ (e\002les)Tj [-250 ]TJ (more)Tj [-250 ]TJ (rob)Tj [20 ]TJ (ust.)Tj 0 -12.95199 Td (These)Tj [-250 ]TJ (changes)Tj [-250 ]TJ (should)Tj [-250 ]TJ (f)Tj [10 ]TJ (acilitat)Tj [1 ]TJ (e)Tj [-250 ]TJ (porting)Tj [-250 ]TJ (to)Tj [-250 ]TJ (ne)Tj [25 ]TJ (w/updated)Tj [-250 ]TJ (en)Tj [40 ]TJ (vironments)Tj [-250 ]TJ (\(i.e.)Tj 0 -12.95098 Td (those)Tj [-250 ]TJ (supported)Tj [-250 ]TJ (by)Tj [-250 ]TJ (ne)Tj [25 ]TJ (wer)Tj [-250 ]TJ (v)Tj [15 ]TJ (ersion)Tj [1 ]TJ (s)Tj [-250 ]TJ (of)Tj [-250 ]TJ (autoconf\).)Tj [-250 ]TJ (W)Tj [80 ]TJ (ork)Tj [-250 ]TJ (has)Tj [-250 ]TJ (been)Tj [-250 ]TJ (done)Tj [-250 ]TJ (to)Tj 0 -12.95199 Td (enhance)Tj [-250 ]TJ (some)Tj [-250 ]TJ (of)Tj [-250 ]TJ (the)Tj [-250 ]TJ (custom)Tj [-250 ]TJ (aut)Tj [1 ]TJ (oconf)Tj [-250 ]TJ (tests)Tj [-250 ]TJ (to)Tj [-250 ]TJ (impro)Tj [15 ]TJ (v)Tj [15 ]TJ (e)Tj [-250 ]TJ (reliability)Tj [65 ]TJ (.)Tj ET 1 0 0 1 0 -139.53698 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -0.39799 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -12.17498 cm BT /N87 9.96299 Tf 0 0 Td (Item)Tj [-278 ]TJ (4)Tj [-7610 ]TJ (Suppo)Tj [1 ]TJ (r)Tj [-20 ]TJ (t)Tj [-278 ]TJ (f)Tj [20 ]TJ (or)Tj [-278 ]TJ (XML)Tj [-278 ]TJ (Byte)Tj [-278 ]TJ (Or)Tj [20 ]TJ (der)Tj [-278 ]TJ (Marks)Tj [-278 ]TJ (\(BOM\))Tj ET 1 0 0 1 0 -3.38699 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -12.17399 cm BT /N81 9.96299 Tf 0 0 Td (References)Tj [-6058 ]TJ (Source)Tj [-249 ]TJ (F)Tj [15 ]TJ (or)Tj [18 ]TJ (ge)Tj [-250 ]TJ (b)Tj [20 ]TJ (ug)Tj [-250 ]TJ (#442560)Tj [-250 ]TJ (\(T)Tj [70 ]TJ (erje)Tj [-250 ]TJ (Bless/Liam)Tj [-250 ]TJ (Quinn\))Tj 0 -15.16299 Td (Cate)Tj [15 ]TJ (gory)Tj [-6849 ]TJ (Softw)Tj [10 ]TJ (a)Tj [1 ]TJ (re)Tj [-250 ]TJ (Bug)Tj 0 -15.16398 Td (Problem)Tj [-7111 ]TJ (Since)Tj [-249 ]TJ (OpenJade)Tj [-250 ]TJ (1.3)Tj [-250 ]TJ (w)Tj [10 ]TJ (as)Tj [-250 ]TJ (released,)Tj [-250 ]TJ (a)Tj [-250 ]TJ (second)Tj [-250 ]TJ (edition)Tj [-250 ]TJ (of)Tj [-250 ]TJ (the)Tj [-250 ]TJ (XML)Tj [-250 ]TJ (1)Tj [1 ]TJ (.0)Tj 104.60699 -12.95098 Td (speci\002cation)Tj [-250 ]TJ (has)Tj [-250 ]TJ (been)Tj [-250 ]TJ (release)Tj [1 ]TJ (d)Tj [-250 ]TJ (\(REC-xml-20001006\).)Tj [-250 ]TJ (This)Tj [-250 ]TJ (speci\002cation)Tj 0 -12.95098 Td (introduced)Tj [-250 ]TJ (the)Tj [-250 ]TJ (concept)Tj [-250 ]TJ (of)Tj [-250 ]TJ (Byte)Tj [-250 ]TJ (O)Tj [1 ]TJ (rder)Tj [-250 ]TJ (Marks)Tj [-250 ]TJ (to)Tj [-250 ]TJ (increase)Tj [-250 ]TJ (the)Tj [-250 ]TJ (sophistication)Tj [-250 ]TJ (of)Tj 0 -12.95199 Td (the)Tj [-250 ]TJ (detection)Tj [-250 ]TJ (of)Tj [-250 ]TJ (the)Tj [-250 ]TJ (character)Tj [-250 ]TJ (e)Tj [1 ]TJ (ncoding)Tj [-250 ]TJ (system.)Tj [-250 ]TJ (OpenJade)Tj [-250 ]TJ (1.3)Tj [-250 ]TJ (w)Tj [10 ]TJ (ould)Tj [-250 ]TJ (not)Tj 0 -12.95098 Td (recognize)Tj [-250 ]TJ (these,)Tj [-250 ]TJ (and)Tj [-250 ]TJ (rejected)Tj [-250 ]TJ (a)Tj [1 ]TJ (n)Tj [15 ]TJ (y)Tj [-250 ]TJ (XML)Tj [-250 ]TJ (\002le)Tj [-250 ]TJ (which)Tj [-250 ]TJ (included)Tj [-250 ]TJ (these)Tj [-250 ]TJ (as)Tj [-250 ]TJ (in)Tj [40 ]TJ (v)Tj [25 ]TJ (alid.)Tj -104.60699 -15.16299 Td (Resolution)Tj [-6166 ]TJ (XML)Tj [-250 ]TJ (1)Tj [1 ]TJ (.0)Tj [-250 ]TJ (Byte)Tj [-250 ]TJ (Order)Tj [-250 ]TJ (Marks)Tj [-250 ]TJ (are)Tj [-250 ]TJ (no)Tj [25 ]TJ (w)Tj [-250 ]TJ (accepted)Tj [-250 ]TJ (as)Tj [-250 ]TJ (v)Tj [25 ]TJ (alid)Tj [-250 ]TJ (XML.)Tj ET 1 0 0 1 0 -100.68299 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -0.39799 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -12.17399 cm BT /N87 9.96299 Tf 0 0 Td (Item)Tj [-278 ]TJ (5)Tj [-7610 ]TJ (Fix)Tj [-278 ]TJ (m)Tj [1 ]TJ (issing)Tj [-278 ]TJ (white)Tj [-278 ]TJ (space)Tj [-278 ]TJ (pr)Tj [20 ]TJ (ob)Tj [10 ]TJ (lem)Tj [-278 ]TJ (in)Tj [-278 ]TJ (pr)Tj [20 ]TJ (ocessing)Tj [-278 ]TJ (in)Tj [1 ]TJ (struction)Tj [-278 ]TJ (\003o)Tj [15 ]TJ (w)Tj 104.60699 -12.95199 Td (object)Tj ET 1 0 0 1 0 -16.33898 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -12.17399 cm BT /N81 9.96299 Tf 0 0 Td (References)Tj [-6058 ]TJ (Source)Tj [-249 ]TJ (F)Tj [15 ]TJ (or)Tj [18 ]TJ (ge)Tj [-250 ]TJ (Ref)Tj [-250 ]TJ (#505113,)Tj [-250 ]TJ (#505124)Tj [-250 ]TJ (\(Markus)Tj [-250 ]TJ (Hoenicka\))Tj ET 1 0 0 1 -47.82099 -100.58399 cm 0 g 0 G BT /N117 9.96299 Tf 0 0 Td (6)Tj ET 1 0 0 1 466.25199 0 cm 0 g 0 G PDFVars/TermAll get exec end end userdict /pgsave get restore showpage %%PageTrailer %%EndPage %%Page: 13 13 %%BeginPageSetup userdict /pgsave save put PDFVars begin PDF begin PDFVars/InitAll get exec 1.14301 1.47949 translate %%EndPageSetup 0 0 609.71398 789.04098 RC 1 0 0 1 71.73098 729.26499 cm 0 g 0 G 1 0 0 1 345.13699 3.58699 cm BT /N117 9.96299 Tf 0 0 Td (OpenJ)Tj [35 ]TJ (ade)Tj [-250 ]TJ (1.3.2)Tj [-250 ]TJ (Release)Tj [-250 ]TJ (Note)Tj [1 ]TJ (s)Tj ET 1 0 0 1 121.11499 -3.58699 cm 0 g 0 G 1 0 0 1 -418.43099 -11.35699 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -12.17399 cm BT /N87 9.96299 Tf 0 0 Td (Item)Tj [-278 ]TJ (5)Tj [-7610 ]TJ (Fix)Tj [-278 ]TJ (m)Tj [1 ]TJ (issing)Tj [-278 ]TJ (white)Tj [-278 ]TJ (space)Tj [-278 ]TJ (pr)Tj [20 ]TJ (ob)Tj [10 ]TJ (lem)Tj [-278 ]TJ (in)Tj [-278 ]TJ (pr)Tj [20 ]TJ (ocessing)Tj [-278 ]TJ (in)Tj [1 ]TJ (struction)Tj [-278 ]TJ (\003o)Tj [15 ]TJ (w)Tj 104.60699 -12.95199 Td (object)Tj /N81 9.96299 Tf -104.60699 -15.16299 Td (Cate)Tj [15 ]TJ (gory)Tj [-6849 ]TJ (Softw)Tj [10 ]TJ (a)Tj [1 ]TJ (re)Tj [-250 ]TJ (Bug)Tj 0 -15.16299 Td (Problem)Tj [-7111 ]TJ (No)Tj [-250 ]TJ (whi)Tj [1 ]TJ (te)Tj [-250 ]TJ (space)Tj [-250 ]TJ (w)Tj [10 ]TJ (as)Tj [-250 ]TJ (emitted)Tj [-250 ]TJ (between)Tj [-250 ]TJ (the)Tj [-250 ]TJ (public-id)Tj [-250 ]TJ (and)Tj [-250 ]TJ (the)Tj [-250 ]TJ (syst)Tj [1 ]TJ (em-id)Tj [-250 ]TJ (causing)Tj 104.60699 -12.95199 Td (a)Tj [-250 ]TJ (malformed)Tj [-250 ]TJ (XML)Tj [-250 ]TJ (\002le)Tj [-250 ]TJ (to)Tj [-250 ]TJ (be)Tj [-250 ]TJ (gen)Tj [1 ]TJ (erated.)Tj -104.60699 -15.16299 Td (Resolution)Tj [-6166 ]TJ (Fix)Tj [15 ]TJ (ed)Tj [-250 ]TJ (O)Tj [1 ]TJ (penJade)Tj [-250 ]TJ (to)Tj [-250 ]TJ (output)Tj [-250 ]TJ (a)Tj [-250 ]TJ (space)Tj [-250 ]TJ (between)Tj [-250 ]TJ (the)Tj [-250 ]TJ (public-id)Tj [-250 ]TJ (and)Tj [-250 ]TJ (the)Tj [-250 ]TJ (s)Tj [1 ]TJ (ystem-id.)Tj ET 1 0 0 1 0 -74.77999 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -0.39799 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -12.17498 cm BT /N87 9.96299 Tf 0 0 Td (Item)Tj [-278 ]TJ (6)Tj [-7610 ]TJ (Jadet)Tj [1 ]TJ (e)Tj [15 ]TJ (x)Tj [-278 ]TJ (is)Tj [-278 ]TJ (no)Tj [15 ]TJ (w)Tj [-278 ]TJ (distrib)Tj [20 ]TJ (uted)Tj [-278 ]TJ (independentl)Tj [15 ]TJ (y)Tj ET 1 0 0 1 0 -3.38699 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -12.17399 cm BT /N81 9.96299 Tf 0 0 Td (References)Tj [-6058 ]TJ (None)Tj 0 -15.16299 Td (Cate)Tj [15 ]TJ (gory)Tj [-6849 ]TJ (Softw)Tj [10 ]TJ (a)Tj [1 ]TJ (re)Tj [-250 ]TJ (Bug)Tj 0 -15.16398 Td (Problem)Tj [-7111 ]TJ (OpenJa)Tj [1 ]TJ (de)Tj [-250 ]TJ (1.3)Tj [-250 ]TJ (shipped)Tj [-250 ]TJ (with)Tj [-250 ]TJ (Jadete)Tj [15 ]TJ (x)Tj [-250 ]TJ (2.7.)Tj [-250 ]TJ (Jadete)Tj [15 ]TJ (x)Tj [-250 ]TJ (is)Tj [-250 ]TJ (de)Tj [25 ]TJ (v)Tj [15 ]TJ (eloped)Tj [-250 ]TJ (and)Tj [-250 ]TJ (rel)Tj [1 ]TJ (eased)Tj 104.60699 -12.95098 Td (separately)Tj [-250 ]TJ (from)Tj [-250 ]TJ (OpenJade.)Tj -104.60699 -15.16299 Td (Resolution)Tj [-6166 ]TJ (Remo)Tj [15 ]TJ (v)Tj [15 ]TJ (e)Tj [1 ]TJ (d)Tj [-250 ]TJ (jadete)Tj [15 ]TJ (x)Tj [-250 ]TJ (\002les.)Tj [-250 ]TJ (Jadete)Tj [15 ]TJ (x)Tj [-250 ]TJ (can)Tj [-250 ]TJ (be)Tj [-250 ]TJ (obtained)Tj [-250 ]TJ (from)Tj 104.60699 -12.95199 Td (http://jadete)Tj [15 ]TJ (x.sourcefor)Tj [18 ]TJ (ge.net)Tj ET 1 0 0 1 0 -74.77999 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -0.39799 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -12.17498 cm BT /N87 9.96299 Tf 0 0 Td (Item)Tj [-278 ]TJ (7)Tj [-7610 ]TJ (Suppo)Tj [1 ]TJ (r)Tj [-20 ]TJ (t)Tj [-278 ]TJ (f)Tj [20 ]TJ (or)Tj [-278 ]TJ (FreeBSD)Tj [-278 ]TJ (4.4)Tj ET 1 0 0 1 0 -3.38699 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -12.17399 cm BT /N81 9.96299 Tf 0 0 Td (References)Tj [-6058 ]TJ (FreeB)Tj [1 ]TJ (SD)Tj [-250 ]TJ (4.4)Tj [-250 ]TJ (openjade)Tj [-250 ]TJ (port)Tj 0 -15.16299 Td (Cate)Tj [15 ]TJ (gory)Tj [-6849 ]TJ (Softw)Tj [10 ]TJ (a)Tj [1 ]TJ (re)Tj [-250 ]TJ (Bug)Tj 0 -15.16299 Td (Problem)Tj [-7111 ]TJ (OpenJa)Tj [1 ]TJ (de)Tj [-250 ]TJ (1.3)Tj [-250 ]TJ (w)Tj [10 ]TJ (ould)Tj [-250 ]TJ (not)Tj [-250 ]TJ (b)Tj [20 ]TJ (uild)Tj [-250 ]TJ (on)Tj [-250 ]TJ (FreeBSD)Tj [-250 ]TJ (4.x)Tj 0 -15.16398 Td (Resolution)Tj [-6166 ]TJ (The)Tj [-250 ]TJ (sou)Tj [1 ]TJ (rce)Tj [-250 ]TJ (con\002guration)Tj [-250 ]TJ (system)Tj [-250 ]TJ (has)Tj [-250 ]TJ (been)Tj [-250 ]TJ (enhanced)Tj [-250 ]TJ (to)Tj [-250 ]TJ (support)Tj [-250 ]TJ (Fre)Tj [1 ]TJ (eBSD)Tj [-250 ]TJ (out)Tj 104.60699 -12.95098 Td (of)Tj [-250 ]TJ (the)Tj [-250 ]TJ (box.)Tj [-250 ]TJ (Note)Tj [-250 ]TJ (that)Tj [-250 ]TJ (the)Tj [-250 ]TJ (POSIX)Tj [-249 ]TJ (locale)Tj [-250 ]TJ (feature)Tj [-250 ]TJ (of)Tj [-250 ]TJ (OpenJade)Tj [-250 ]TJ (is)Tj [-250 ]TJ (not)Tj [-250 ]TJ (a)Tj [20 ]TJ (v)Tj [25 ]TJ (ailable)Tj 0 -12.95098 Td (under)Tj [-250 ]TJ (FreeBSD.)Tj ET 1 0 0 1 0 -74.77999 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -0.39799 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -12.17498 cm BT /N87 9.96299 Tf 0 0 Td (Item)Tj [-278 ]TJ (8)Tj [-7610 ]TJ (Allo)Tj [15 ]TJ (w)Tj [-277 ]TJ (non)Tj [-278 ]TJ (alpha)Tj [-278 ]TJ (n)Tj [10 ]TJ (umeric)Tj [-278 ]TJ (c)Tj [10 ]TJ (haracter)Tj [15 ]TJ (s)Tj [-278 ]TJ (in)Tj [-278 ]TJ (T)Tj [80 ]TJ (ab)Tj [10 ]TJ (le)Tj [-278 ]TJ (of)Tj [-278 ]TJ (Con)Tj [1 ]TJ (tents)Tj ET 1 0 0 1 0 -3.38699 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -12.17399 cm BT /N81 9.96299 Tf 0 0 Td (References)Tj [-6058 ]TJ (Red)Tj [-250 ]TJ (Ha)Tj [1 ]TJ (t)Tj [-250 ]TJ (Bugzilla)Tj [-250 ]TJ (#31525)Tj 0 -15.16299 Td (Cate)Tj [15 ]TJ (gory)Tj [-6849 ]TJ (Softw)Tj [10 ]TJ (a)Tj [1 ]TJ (re)Tj [-250 ]TJ (Bug)Tj 0 -15.16299 Td (Problem)Tj [-7361 ]TJ (Certa)Tj [1 ]TJ (in)Tj [-250 ]TJ (non)Tj [-250 ]TJ (alpha-numeric)Tj [-250 ]TJ (characters)Tj [-250 ]TJ (\(such)Tj [-250 ]TJ (as)Tj [-250 ]TJ ($\))Tj [-250 ]TJ (do)Tj [-250 ]TJ (not)Tj [-250 ]TJ (appear)Tj [-249 ]TJ (correctly)Tj [-250 ]TJ (in)Tj 104.60699 -12.95199 Td (the)Tj [-250 ]TJ (table)Tj [-250 ]TJ (of)Tj [-250 ]TJ (contents.)Tj [-250 ]TJ (This)Tj [-250 ]TJ (probl)Tj [1 ]TJ (em)Tj [-250 ]TJ (is)Tj [-250 ]TJ (con\002ned)Tj [-250 ]TJ (to)Tj [-250 ]TJ (the)Tj [-250 ]TJ (T)Tj [70 ]TJ (eX)Tj [-250 ]TJ (back)Tj [10 ]TJ (end.)Tj -104.60699 -15.16299 Td (Resolution)Tj [-6166 ]TJ (Specia)Tj [1 ]TJ (l)Tj [-250 ]TJ (characters)Tj [-250 ]TJ (are)Tj [-250 ]TJ (no)Tj [25 ]TJ (w)Tj [-250 ]TJ (correctly)Tj [-250 ]TJ (escaped)Tj [-250 ]TJ (in)Tj [-250 ]TJ (the)Tj [-250 ]TJ (T)Tj [70 ]TJ (eX)Tj [-250 ]TJ (output)Tj [-249 ]TJ (\002le.)Tj ET 1 0 0 1 0 -61.82798 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -0.39898 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -12.17399 cm BT /N87 9.96299 Tf 0 0 Td (Item)Tj [-278 ]TJ (9)Tj [-7610 ]TJ (Suppo)Tj [1 ]TJ (r)Tj [-20 ]TJ (t)Tj [-278 ]TJ (f)Tj [20 ]TJ (or)Tj [-278 ]TJ (latest)Tj [-278 ]TJ (Win32)Tj [-278 ]TJ (b)Tj [20 ]TJ (uild)Tj [-278 ]TJ (en)Tj [40 ]TJ (vir)Tj [20 ]TJ (onments)Tj ET 1 0 0 1 0 -3.38699 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -12.17498 cm BT /N81 9.96299 Tf 0 0 Td (References)Tj [-6058 ]TJ (None)Tj 0 -15.16299 Td (Cate)Tj [15 ]TJ (gory)Tj [-6849 ]TJ (Softw)Tj [10 ]TJ (a)Tj [1 ]TJ (re)Tj [-250 ]TJ (Bug)Tj 0 -15.16299 Td (Problem)Tj [-7111 ]TJ (OpenJa)Tj [1 ]TJ (de)Tj [-250 ]TJ (1.3)Tj [-250 ]TJ (does)Tj [-250 ]TJ (not)Tj [-250 ]TJ (b)Tj [20 ]TJ (uild)Tj [-250 ]TJ (with)Tj [-250 ]TJ (V)Tj [60 ]TJ (isual)Tj [-250 ]TJ (C++)Tj [-250 ]TJ (6.0)Tj 0 -15.16299 Td (Resolution)Tj [-6166 ]TJ (Fix)Tj [-250 ]TJ (C+)Tj [1 ]TJ (+)Tj [-250 ]TJ (style)Tj [-250 ]TJ (to)Tj [-250 ]TJ (be)Tj [-250 ]TJ (compatible)Tj [-250 ]TJ (with)Tj [-250 ]TJ (V)Tj [60 ]TJ (isual)Tj [-250 ]TJ (C++.)Tj [-250 ]TJ (Update)Tj [-250 ]TJ (b)Tj [20 ]TJ (uil)Tj [1 ]TJ (d)Tj [-250 ]TJ (en)Tj [40 ]TJ (vironment.)Tj 104.60699 -12.95098 Td (OpenJade)Tj [-250 ]TJ (1.3.1)Tj [-250 ]TJ (should)Tj [-250 ]TJ (run)Tj [-250 ]TJ (in)Tj [-250 ]TJ (all)Tj [-250 ]TJ (W)Tj [41 ]TJ (indo)Tj [25 ]TJ (ws)Tj [-250 ]TJ (32)Tj [-250 ]TJ (en)Tj [40 ]TJ (vironments)Tj [-250 ]TJ (from)Tj [-250 ]TJ (W)Tj [40 ]TJ (indo)Tj [25 ]TJ (ws)Tj 0 -12.95199 Td (95)Tj [-250 ]TJ (through)Tj [-250 ]TJ (W)Tj [40 ]TJ (indo)Tj [25 ]TJ (ws)Tj [-250 ]TJ (NT)Tj [-250 ]TJ (to)Tj [-250 ]TJ (W)Tj [40 ]TJ (indo)Tj [25 ]TJ (w)Tj [1 ]TJ (s)Tj [-250 ]TJ (XP)Tj [111 ]TJ (.)Tj ET 1 0 0 1 0 -74.77899 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -0.39898 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -12.17399 cm BT /N87 9.96299 Tf 0 0 Td (Item)Tj [-278 ]TJ (10)Tj [-7054 ]TJ (Enhan)Tj [1 ]TJ (cements)Tj [-278 ]TJ (f)Tj [20 ]TJ (or)Tj [-278 ]TJ (Software)Tj [-278 ]TJ (P)Tj [30 ]TJ (ac)Tj [20 ]TJ (ka)Tj [10 ]TJ (ging)Tj ET 1 0 0 1 0 -3.38699 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -12.17498 cm BT /N81 9.96299 Tf 0 0 Td (References)Tj [-6058 ]TJ (SuSE)Tj [-250 ]TJ (L)Tj [1 ]TJ (inux)Tj [-250 ]TJ (7.3)Tj 0 -15.16299 Td (Cate)Tj [15 ]TJ (gory)Tj [-6849 ]TJ (Softw)Tj [10 ]TJ (a)Tj [1 ]TJ (re)Tj [-250 ]TJ (Bug)Tj 0 -15.16299 Td (Problem)Tj [-7111 ]TJ (Numer)Tj [1 ]TJ (ous)Tj [-250 ]TJ (patches)Tj [-250 ]TJ (need)Tj [-250 ]TJ (to)Tj [-250 ]TJ (be)Tj [-250 ]TJ (applied)Tj [-250 ]TJ (to)Tj [-250 ]TJ (OpenJade)Tj [-250 ]TJ (1.3)Tj [-250 ]TJ (to)Tj [-250 ]TJ (enable)Tj [-250 ]TJ (pa)Tj [1 ]TJ (ckages)Tj [-250 ]TJ (to)Tj 104.60699 -12.95098 Td (be)Tj [-250 ]TJ (b)Tj [20 ]TJ (uilt)Tj [-250 ]TJ (\(RPM\))Tj ET 1 0 0 1 -47.82099 -155.29798 cm 0 g 0 G 1 0 0 1 460.90199 0 cm BT /N117 9.96299 Tf 0 0 Td (7)Tj ET 1 0 0 1 5.34999 0 cm 0 g 0 G PDFVars/TermAll get exec end end userdict /pgsave get restore showpage %%PageTrailer %%EndPage %%Page: 14 14 %%BeginPageSetup userdict /pgsave save put PDFVars begin PDF begin PDFVars/InitAll get exec 1.14301 1.47949 translate %%EndPageSetup 0 0 609.71398 789.04098 RC 1 0 0 1 71.73098 729.26499 cm 0 g 0 G 1 0 0 1 0 3.58699 cm BT /N117 9.96299 Tf 0 0 Td (OpenJ)Tj [35 ]TJ (ade)Tj [-250 ]TJ (1.3.2)Tj [-250 ]TJ (Release)Tj [-250 ]TJ (Notes)Tj ET 1 0 0 1 466.25199 -3.58699 cm 0 g 0 G 1 0 0 1 -418.43099 -11.35699 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -12.17399 cm BT /N87 9.96299 Tf 0 0 Td (Item)Tj [-278 ]TJ (10)Tj [-7054 ]TJ (Enhan)Tj [1 ]TJ (cements)Tj [-278 ]TJ (f)Tj [20 ]TJ (or)Tj [-278 ]TJ (Software)Tj [-278 ]TJ (P)Tj [30 ]TJ (ac)Tj [20 ]TJ (ka)Tj [10 ]TJ (ging)Tj /N81 9.96299 Tf 0 -15.16398 Td (Resolution)Tj [-6166 ]TJ (Enhanc)Tj [1 ]TJ (e)Tj [-250 ]TJ (Mak)Tj [10 ]TJ (e\002les)Tj [-250 ]TJ (to)Tj [-250 ]TJ (ensure)Tj [-250 ]TJ (that)Tj [-250 ]TJ (packages)Tj [-250 ]TJ (are)Tj [-250 ]TJ (easy)Tj [-250 ]TJ (to)Tj [-250 ]TJ (b)Tj [20 ]TJ (uild)Tj [-250 ]TJ (\(in)Tj [1 ]TJ (cluding)Tj 104.60699 -12.95098 Td (addition)Tj [-250 ]TJ (of)Tj /N177 8.96598 Tf 45.93798 0 Td (DESTDIR)Tj /N81 9.96299 Tf 40.14898 0 Td (en)Tj [40 ]TJ (vironment)Tj [-250 ]TJ (v)Tj [25 ]TJ (ariable\).)Tj [-250 ]TJ (It)Tj [-250 ]TJ (shou)Tj [1 ]TJ (ld)Tj [-250 ]TJ (no)Tj [25 ]TJ (w)Tj [-250 ]TJ (be)Tj [-250 ]TJ (possible)Tj [-250 ]TJ (to)Tj -86.08699 -12.95098 Td (b)Tj [20 ]TJ (uild)Tj [-250 ]TJ (RPM)Tj [-250 ]TJ (packages)Tj [-250 ]TJ (and)Tj [-250 ]TJ (BSD)Tj [-250 ]TJ (po)Tj [1 ]TJ (rts)Tj [-250 ]TJ (without)Tj [-250 ]TJ (resorting)Tj [-250 ]TJ (to)Tj [-250 ]TJ (patches.)Tj ET 1 0 0 1 0 -44.45399 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -0.39799 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -12.17498 cm BT /N87 9.96299 Tf 0 0 Td (Item)Tj [-278 ]TJ (11)Tj [-7054 ]TJ (Suppo)Tj [1 ]TJ (r)Tj [-20 ]TJ (t)Tj [-278 ]TJ (f)Tj [20 ]TJ (or)Tj [-278 ]TJ (ne)Tj [15 ]TJ (wer)Tj [-278 ]TJ (GNU)Tj [-278 ]TJ (C++)Tj [-278 ]TJ (compiler)Tj [15 ]TJ (s)Tj ET 1 0 0 1 0 -3.38699 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -12.17399 cm BT /N81 9.96299 Tf 0 0 Td (References)Tj [-6058 ]TJ (SuSE)Tj [-250 ]TJ (L)Tj [1 ]TJ (inux)Tj [-250 ]TJ (7.3)Tj [-250 ]TJ (\(Andreas)Tj [-250 ]TJ (Schw)Tj [10 ]TJ (ab\),)Tj [-250 ]TJ (Red)Tj [-250 ]TJ (Hat)Tj [-250 ]TJ (Linux)Tj [-250 ]TJ (7.2,)Tj [-250 ]TJ (Connecti)Tj [25 ]TJ (v)Tj [25 ]TJ (a)Tj [-250 ]TJ (L)Tj [1 ]TJ (inux)Tj 0 -15.16299 Td (Cate)Tj [15 ]TJ (gory)Tj [-6849 ]TJ (Softw)Tj [10 ]TJ (a)Tj [1 ]TJ (re)Tj [-250 ]TJ (Bug)Tj 0 -15.16299 Td (Problem)Tj [-7111 ]TJ (C++)Tj [-250 ]TJ (i)Tj [1 ]TJ (s)Tj [-250 ]TJ (a)Tj [-250 ]TJ (shifting)Tj [-250 ]TJ (tar)Tj [18 ]TJ (get.)Tj [-250 ]TJ (Ne)Tj [25 ]TJ (w)Tj [-250 ]TJ (compilers/standards)Tj [-250 ]TJ (demand)Tj [-250 ]TJ (ch)Tj [1 ]TJ (anges.)Tj 0 -15.16299 Td (Resolution)Tj [-6166 ]TJ (V)Tj [111 ]TJ (ariou)Tj [1 ]TJ (s)Tj [-250 ]TJ (enhancements)Tj [-250 ]TJ (to)Tj [-250 ]TJ (allo)Tj [25 ]TJ (w)Tj [-250 ]TJ (OpenJade)Tj [-250 ]TJ (to)Tj [-250 ]TJ (b)Tj [20 ]TJ (uild)Tj [-250 ]TJ (with)Tj [-250 ]TJ (the)Tj [-250 ]TJ (ne)Tj [25 ]TJ (w)Tj [-250 ]TJ (G)Tj [1 ]TJ (NU)Tj [-250 ]TJ (GCC)Tj 104.60699 -12.95199 Td (3.0)Tj [-250 ]TJ (and)Tj [-250 ]TJ (the)Tj [-250 ]TJ (soon)Tj [-250 ]TJ (to)Tj [-250 ]TJ (be)Tj [-250 ]TJ (released)Tj [-250 ]TJ (G)Tj [1 ]TJ (NU)Tj [-250 ]TJ (GCC)Tj [-250 ]TJ (3.1)Tj [-250 ]TJ (c++)Tj [-250 ]TJ (compilers)Tj ET 1 0 0 1 0 -61.82798 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -0.39898 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -12.17399 cm BT /N87 9.96299 Tf 0 0 Td (Item)Tj [-278 ]TJ (12)Tj [-7054 ]TJ (Suppo)Tj [1 ]TJ (r)Tj [-20 ]TJ (t)Tj [-278 ]TJ (f)Tj [20 ]TJ (or)Tj [-278 ]TJ (jadete)Tj [15 ]TJ (x)Tj [-278 ]TJ (3.4)Tj [-278 ]TJ (and)Tj [-278 ]TJ (greater)Tj [-278 ]TJ (macr)Tj [20 ]TJ (os)Tj [-278 ]TJ (f)Tj [20 ]TJ (or)Tj [-278 ]TJ (tw)Tj [20 ]TJ (o)Tj [-277 ]TJ (sided)Tj [-278 ]TJ (suppor)Tj [-20 ]TJ (t)Tj ET 1 0 0 1 0 -3.38699 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -12.17498 cm BT /N81 9.96299 Tf 0 0 Td (References)Tj [-6058 ]TJ (Source)Tj [1 ]TJ (for)Tj [18 ]TJ (ge)Tj [-250 ]TJ (patch)Tj [-250 ]TJ (#439755,)Tj [-250 ]TJ (http://iNde)Tj [25 ]TJ (v)Tj [65 ]TJ (.iNsu.COM/openjade/)Tj [-250 ]TJ (\(F)Tj [1 ]TJ (rancis)Tj [-250 ]TJ (J.)Tj 104.60699 -12.95098 Td (Lacoste\))Tj -104.60699 -15.16299 Td (Cate)Tj [15 ]TJ (gory)Tj [-6849 ]TJ (Softw)Tj [10 ]TJ (a)Tj [1 ]TJ (re)Tj [-250 ]TJ (Bug)Tj 0 -15.16299 Td (Problem)Tj [-7111 ]TJ (T)Tj [80 ]TJ (w)Tj [10 ]TJ (o)Tj [-246 ]TJ (Sided)Tj [-246 ]TJ (output)Tj [-247 ]TJ (support)Tj [-246 ]TJ (with)Tj [-246 ]TJ (the)Tj [-247 ]TJ (T)Tj [70 ]TJ (eX)Tj [-246 ]TJ (back)Tj [10 ]TJ (end)Tj [-246 ]TJ (is)Tj [-247 ]TJ (unreliable)Tj [-246 ]TJ (in)Tj [-246 ]TJ (OpenJade)Tj [-247 ]TJ (1.3)Tj 104.60699 -12.95199 Td (and)Tj [-250 ]TJ (Jadete)Tj [15 ]TJ (x)Tj [-250 ]TJ (2.x.)Tj -104.60699 -15.16299 Td (Resolution)Tj [-6366 ]TJ (Enhanc)Tj [1 ]TJ (e)Tj [-250 ]TJ (the)Tj [-250 ]TJ (T)Tj [70 ]TJ (eX)Tj [-250 ]TJ (back)Tj [10 ]TJ (end)Tj [-250 ]TJ (tw)Tj [10 ]TJ (o)Tj [-250 ]TJ (sided)Tj [-250 ]TJ (output)Tj [-250 ]TJ (support)Tj [-250 ]TJ (and)Tj [-250 ]TJ (bring)Tj [-250 ]TJ (into)Tj [-250 ]TJ (l)Tj [1 ]TJ (ine)Tj [-250 ]TJ (with)Tj 106.59999 -12.95098 Td (adv)Tj [25 ]TJ (ances)Tj [-250 ]TJ (in)Tj [-250 ]TJ (the)Tj [-250 ]TJ (jadete)Tj [15 ]TJ (x)Tj [-250 ]TJ (late)Tj [15 ]TJ (x)Tj [-249 ]TJ (front)Tj [-250 ]TJ (end.)Tj [-250 ]TJ (T)Tj [80 ]TJ (w)Tj [10 ]TJ (o)Tj [-250 ]TJ (e)Tj [15 ]TJ (xtension)Tj [-250 ]TJ (characteristics)Tj [-250 ]TJ (are)Tj 0 -12.95199 Td (introduced)Tj [-250 ]TJ (to)Tj [-250 ]TJ (allo)Tj [25 ]TJ (w)Tj [-250 ]TJ (control)Tj [-250 ]TJ (o)Tj [1 ]TJ (f)Tj /N177 8.96598 Tf 121.22399 0 Td (two-side)Tj /N81 9.96299 Tf 45.52899 0 Td (and)Tj /N177 8.96598 Tf -166.75299 -12.95098 Td (two-side-start-on-righ)Tj [-1 ]TJ (t)Tj /N81 9.96299 Tf 123.73599 0 Td (.)Tj [-250 ]TJ (This)Tj [-250 ]TJ (also)Tj [-250 ]TJ (\002x)Tj [15 ]TJ (es)Tj [-250 ]TJ (the)Tj [-250 ]TJ ("blank)Tj [-250 ]TJ (pa)Tj [1 ]TJ (ge)Tj [-250 ]TJ (at)Tj [-250 ]TJ (the)Tj [-250 ]TJ (end)Tj [-250 ]TJ (of)Tj -123.73599 -12.95199 Td (the)Tj [-250 ]TJ (document")Tj [-250 ]TJ (problem.)Tj [-250 ]TJ (The)Tj [-250 ]TJ (f)Tj [1 ]TJ (ollo)Tj [25 ]TJ (wing)Tj [-250 ]TJ (ne)Tj [25 ]TJ (w)Tj [-250 ]TJ (characteristics)Tj [-250 ]TJ (are)Tj [-250 ]TJ (a)Tj [20 ]TJ (v)Tj [25 ]TJ (ailable:)Tj /N177 8.96598 Tf 0 -12.95098 Td ("UNREGISTERED::OpenJad)Tj [-1 ]TJ (e//Characteristic::page-two-side?")Tj 0 -12.95098 Td ("UNREGISTERED::OpenJad)Tj [-1 ]TJ (e//Characteristic::two-side-start-)Tj 0 -12.95199 Td (on-right?")Tj ET 1 0 0 1 0 -191.34199 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -0.39799 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -12.17498 cm BT /N87 9.96299 Tf 0 0 Td (Item)Tj [-278 ]TJ (13)Tj [-7054 ]TJ (Pre)Tj [15 ]TJ (ve)Tj [1 ]TJ (nt)Tj [-278 ]TJ (incorrect)Tj [-278 ]TJ (g)Tj [-10 ]TJ (eneration)Tj [-278 ]TJ (of)Tj [-278 ]TJ (ligatures)Tj [-278 ]TJ (in)Tj [-278 ]TJ (the)Tj [-278 ]TJ (T)Tj [60 ]TJ (eX)Tj [-277 ]TJ (Bac)Tj [20 ]TJ (kend)Tj ET 1 0 0 1 0 -3.38699 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -12.17399 cm BT /N81 9.96299 Tf 0 0 Td (References)Tj [-6058 ]TJ (Red)Tj [-250 ]TJ (Ha)Tj [1 ]TJ (t)Tj [-250 ]TJ (Bugzilla)Tj [-250 ]TJ (#11497,)Tj [-250 ]TJ (#11779)Tj 0 -15.16398 Td (Cate)Tj [15 ]TJ (gory)Tj [-6849 ]TJ (Softw)Tj [10 ]TJ (a)Tj [1 ]TJ (re)Tj [-250 ]TJ (Bug)Tj 0 -15.16299 Td (Problem)Tj [-7111 ]TJ (Certa)Tj [1 ]TJ (in)Tj [-250 ]TJ (sequences)Tj [-250 ]TJ (of)Tj [-250 ]TJ (characters)Tj [-250 ]TJ (\(such)Tj [-250 ]TJ (as)Tj [-250 ]TJ (--\))Tj [-250 ]TJ (are)Tj [-250 ]TJ (not)Tj [-250 ]TJ (correctly)Tj [-250 ]TJ (e)Tj [1 ]TJ (scaped)Tj [-250 ]TJ (in)Tj [-250 ]TJ (the)Tj 104.60699 -12.95098 Td (T)Tj [70 ]TJ (eX)Tj [-250 ]TJ (back)Tj [10 ]TJ (end,)Tj [-250 ]TJ (so)Tj [-250 ]TJ (that)Tj [-250 ]TJ (T)Tj [70 ]TJ (eX)Tj [-250 ]TJ (incorre)Tj [1 ]TJ (ctly)Tj [-250 ]TJ (creates)Tj [-250 ]TJ (lig)Tj [5 ]TJ (atures)Tj [-250 ]TJ (out)Tj [-250 ]TJ (of)Tj [-250 ]TJ (them)Tj [-250 ]TJ (\(so)Tj [-250 ]TJ (that)Tj [-250 ]TJ (--)Tj 0 -12.95199 Td (becomes)Tj [-250 ]TJ (an)Tj [-250 ]TJ (em)Tj [-250 ]TJ (dash)Tj [-250 ]TJ (\227\).)Tj -104.60699 -15.16299 Td (Resolution)Tj [-6166 ]TJ (OpenJa)Tj [1 ]TJ (de)Tj [-250 ]TJ (1.3.1)Tj [-250 ]TJ (no)Tj [25 ]TJ (w)Tj [-250 ]TJ (correctly)Tj [-250 ]TJ (escapes)Tj [-250 ]TJ (these)Tj [-250 ]TJ (character)Tj [-250 ]TJ (sequences)Tj [1 ]TJ (.)Tj [-250 ]TJ (This)Tj [-250 ]TJ (is)Tj [-250 ]TJ (a)Tj 104.60699 -12.95098 Td (particular)Tj [-250 ]TJ (problem)Tj [-250 ]TJ (when)Tj [-250 ]TJ (repres)Tj [1 ]TJ (enting)Tj [-250 ]TJ (program)Tj [-250 ]TJ (code)Tj [-250 ]TJ (where)Tj [-250 ]TJ (sequences)Tj [-250 ]TJ (such)Tj [-250 ]TJ (as)Tj 0 -12.95098 Td (--)Tj [-250 ]TJ (are)Tj [-250 ]TJ (often)Tj [-250 ]TJ (operators.)Tj ET 1 0 0 1 0 -100.68299 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -0.39799 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -12.17498 cm BT /N87 9.96299 Tf 0 0 Td (Item)Tj [-278 ]TJ (14)Tj [-7054 ]TJ (Impr)Tj [20 ]TJ (o)Tj [21 ]TJ (ved)Tj [-278 ]TJ (time)Tj [-278 ]TJ (string)Tj [-278 ]TJ (handling)Tj ET 1 0 0 1 0 -3.38699 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -12.17399 cm BT /N81 9.96299 Tf 0 0 Td (References)Tj [-6058 ]TJ (http:/)Tj [1 ]TJ (/iNde)Tj [25 ]TJ (v)Tj [65 ]TJ (.iNsu.COM/openjade/)Tj [-250 ]TJ (\(Francis)Tj [-250 ]TJ (J.)Tj [-250 ]TJ (Lacoste\))Tj 0 -15.16299 Td (Cate)Tj [15 ]TJ (gory)Tj [-6849 ]TJ (Softw)Tj [10 ]TJ (a)Tj [1 ]TJ (re)Tj [-250 ]TJ (Bug)Tj 0 -15.16299 Td (Problem)Tj [-7111 ]TJ (OpenJa)Tj [1 ]TJ (de)Tj [-250 ]TJ (1.3)Tj [-250 ]TJ (does)Tj [-250 ]TJ (not)Tj [-250 ]TJ (support)Tj [-250 ]TJ (the)Tj /N177 8.96598 Tf 244.34199 0 Td (\(time<=?\))Tj /N81 9.96299 Tf 50.90899 0 Td (comparison)Tj ET 1 0 0 1 -47.82099 -146.07299 cm 0 g 0 G BT /N117 9.96299 Tf 0 0 Td (8)Tj ET 1 0 0 1 466.25199 0 cm 0 g 0 G PDFVars/TermAll get exec end end userdict /pgsave get restore showpage %%PageTrailer %%EndPage %%Page: 15 15 %%BeginPageSetup userdict /pgsave save put PDFVars begin PDF begin PDFVars/InitAll get exec 1.14301 1.47949 translate %%EndPageSetup 0 0 609.71398 789.04098 RC 1 0 0 1 71.73098 729.26499 cm 0 g 0 G 1 0 0 1 345.13699 3.58699 cm BT /N117 9.96299 Tf 0 0 Td (OpenJ)Tj [35 ]TJ (ade)Tj [-250 ]TJ (1.3.2)Tj [-250 ]TJ (Release)Tj [-250 ]TJ (Note)Tj [1 ]TJ (s)Tj ET 1 0 0 1 121.11499 -3.58699 cm 0 g 0 G 1 0 0 1 -418.43099 -11.35699 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -12.17399 cm BT /N87 9.96299 Tf 0 0 Td (Item)Tj [-278 ]TJ (14)Tj [-7054 ]TJ (Impr)Tj [20 ]TJ (o)Tj [21 ]TJ (ved)Tj [-278 ]TJ (time)Tj [-278 ]TJ (string)Tj [-278 ]TJ (handling)Tj /N81 9.96299 Tf 0 -15.16398 Td (Resolution)Tj [-6166 ]TJ (V)Tj [111 ]TJ (ariou)Tj [1 ]TJ (s)Tj [-250 ]TJ (b)Tj [20 ]TJ (ugs)Tj [-250 ]TJ (\002x)Tj [15 ]TJ (ed)Tj [-250 ]TJ (in)Tj [-250 ]TJ (the)Tj [-250 ]TJ (time)Tj [-250 ]TJ (string)Tj [-250 ]TJ (support)Tj [-250 ]TJ (of)Tj [-250 ]TJ (OpenJade.)Tj [-250 ]TJ (It)Tj [-250 ]TJ (is)Tj [-250 ]TJ (no)Tj [26 ]TJ (w)Tj [-250 ]TJ (possible)Tj 104.60699 -12.95098 Td (to)Tj [-250 ]TJ (compare)Tj [-250 ]TJ (time,)Tj [-250 ]TJ (date)Tj [-250 ]TJ (and)Tj [-250 ]TJ (date)Tj [1 ]TJ (time.)Tj [-250 ]TJ (Also)Tj [-250 ]TJ (partial)Tj [-250 ]TJ (formats)Tj [-250 ]TJ (\(such)Tj [-250 ]TJ (as)Tj 0 -12.95098 Td (YY)Tj [111 ]TJ (-MM-DD,)Tj [-250 ]TJ (YYYY)Tj [111 ]TJ (-MM)Tj [-250 ]TJ (or)Tj [-250 ]TJ (HH:)Tj [1 ]TJ (MM\))Tj [-250 ]TJ (are)Tj [-250 ]TJ (no)Tj [25 ]TJ (w)Tj [-250 ]TJ (supported)Tj ET 1 0 0 1 0 -44.45399 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -0.39799 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -12.17498 cm BT /N87 9.96299 Tf 0 0 Td (Item)Tj [-278 ]TJ (15)Tj [-7054 ]TJ (Impr)Tj [20 ]TJ (o)Tj [21 ]TJ (vements)Tj [-278 ]TJ (in)Tj [-278 ]TJ (handling)Tj /N289 8.96598 Tf 230.98199 0 Td (sosofo-append)Tj ET 1 0 0 1 0 -3.38699 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -12.17399 cm BT /N81 9.96299 Tf 0 0 Td (References)Tj [-6058 ]TJ (http:/)Tj [1 ]TJ (/iNde)Tj [25 ]TJ (v)Tj [65 ]TJ (.iNsu.COM/openjade/)Tj [-250 ]TJ (\(Francis)Tj [-250 ]TJ (J.)Tj [-250 ]TJ (Lacoste\))Tj 0 -15.16299 Td (Cate)Tj [15 ]TJ (gory)Tj [-6849 ]TJ (Softw)Tj [10 ]TJ (a)Tj [1 ]TJ (re)Tj [-250 ]TJ (Bug)Tj 0 -15.16299 Td (Problem)Tj [-7111 ]TJ (sosofo)Tj [1 ]TJ (-append)Tj [-250 ]TJ (has)Tj [-250 ]TJ (problems)Tj [-250 ]TJ (with)Tj [-250 ]TJ (memory/stack)Tj [-250 ]TJ (usage)Tj [-250 ]TJ (when)Tj [-250 ]TJ (han)Tj [1 ]TJ (dling)Tj [-250 ]TJ (lar)Tj [18 ]TJ (ge)Tj 104.60699 -12.95199 Td (lists)Tj [-250 ]TJ (of)Tj [-250 ]TJ (sosofo)Tj -104.60699 -15.16299 Td (Resolution)Tj [-6366 ]TJ (The)Tj [-250 ]TJ (\002x)Tj [-249 ]TJ (optimizes)Tj /N177 8.96598 Tf 178.82798 0 Td (sosofo-append)Tj /N81 9.96299 Tf 72.42898 0 Td (to)Tj [-250 ]TJ (reduce)Tj [-250 ]TJ (its)Tj [-250 ]TJ (memory)Tj [-250 ]TJ (and)Tj [-250 ]TJ (s)Tj [1 ]TJ (tack)Tj [-250 ]TJ (usage)Tj -144.65699 -12.95098 Td (when)Tj [-250 ]TJ (using)Tj [-250 ]TJ (it)Tj [-250 ]TJ (to)Tj [-250 ]TJ (b)Tj [20 ]TJ (uild)Tj [-250 ]TJ (long)Tj [-250 ]TJ (lis)Tj [1 ]TJ (t)Tj [-250 ]TJ (of)Tj [-250 ]TJ (sosofo)Tj [-250 ]TJ (:)Tj /N177 8.96598 Tf 0 -12.95199 Td (\(let)Tj [-600 ]TJ (loop)Tj [-600 ]TJ (\()Tj [-600 ]TJ (\(res)Tj [-600 ]TJ (\(empt)Tj [-1 ]TJ (y-sosofo\)\))Tj 0 -12.95098 Td (\(nl)Tj [-1200 ]TJ (\(node-list-rest)Tj [-600 ]TJ (\()Tj [-1 ]TJ (children)Tj [-600 ]TJ (\(current-node\)\)\)\)\))Tj 0 -12.95199 Td (\(loop)Tj [-600 ]TJ (\(sosofo-append)Tj [-600 ]TJ (r)Tj [-1 ]TJ (es)Tj [-600 ]TJ (\(process-node-list)Tj 0 -12.95098 Td (\(node-list-first)Tj [-600 ]TJ (nl\)\)\))Tj [-7801 ]TJ (\(node-list-rest)Tj [-600 ]TJ (nl\)\)\))Tj ET 1 0 0 1 0 -139.53698 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -0.39799 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -12.17498 cm BT /N87 9.96299 Tf 0 0 Td (Item)Tj [-278 ]TJ (16)Tj [-7054 ]TJ (Impr)Tj [20 ]TJ (o)Tj [21 ]TJ (ved)Tj [-278 ]TJ (T)Tj [80 ]TJ (ab)Tj [10 ]TJ (le)Tj [-278 ]TJ (handling)Tj [-278 ]TJ (in)Tj [-278 ]TJ (T)Tj [60 ]TJ (eX)Tj [-278 ]TJ (Bac)Tj [20 ]TJ (kend)Tj ET 1 0 0 1 0 -3.38699 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -12.17399 cm BT /N81 9.96299 Tf 0 0 Td (References)Tj [-6058 ]TJ (http:/)Tj [1 ]TJ (/iNde)Tj [25 ]TJ (v)Tj [65 ]TJ (.iNsu.COM/openjade/)Tj [-250 ]TJ (\(Francis)Tj [-250 ]TJ (J.)Tj [-250 ]TJ (Lacoste\))Tj 0 -15.16299 Td (Cate)Tj [15 ]TJ (gory)Tj [-6849 ]TJ (Softw)Tj [10 ]TJ (a)Tj [1 ]TJ (re)Tj [-250 ]TJ (Bug)Tj 0 -15.16299 Td (Problem)Tj [-7111 ]TJ (T)Tj [80 ]TJ (able)Tj [-250 ]TJ (h)Tj [1 ]TJ (andling)Tj [-250 ]TJ (in)Tj [-250 ]TJ (the)Tj [-250 ]TJ (T)Tj [70 ]TJ (eX)Tj [-250 ]TJ (back)Tj [10 ]TJ (end)Tj [-250 ]TJ (has)Tj [-250 ]TJ (numerous)Tj [-250 ]TJ (problems.)Tj 0 -15.16398 Td (Resolution)Tj [-6366 ]TJ (Suppor)Tj [1 ]TJ (t)Tj [-250 ]TJ (for)Tj [-250 ]TJ (tables)Tj [-250 ]TJ (in)Tj [-250 ]TJ (the)Tj [-250 ]TJ (T)Tj [70 ]TJ (eX)Tj [-250 ]TJ (back)Tj [10 ]TJ (end)Tj [-250 ]TJ (has)Tj [-250 ]TJ (been)Tj [-250 ]TJ (impro)Tj [15 ]TJ (v)Tj [15 ]TJ (ed)Tj [-250 ]TJ (with:)Tj ET 1 0 0 1 116.56298 -58.44099 cm 0 g 0 G BT /N81 7.96998 Tf 0 0 Td (\225)Tj ET 1 0 0 1 2.78898 0 cm 0 g 0 G 0 g 0 G 0 g 0 G 1 0 0 1 7.17298 0 cm BT /N81 9.96299 Tf 0 0 Td (Support)Tj [-250 ]TJ (for)Tj [-250 ]TJ (nested)Tj [-250 ]TJ (tables.)Tj ET 1 0 0 1 -9.96199 -25.90299 cm 0 g 0 G BT /N81 7.96998 Tf 0 0 Td (\225)Tj ET 1 0 0 1 2.78898 0 cm 0 g 0 G 0 g 0 G 0 g 0 G 1 0 0 1 7.17298 0 cm BT /N177 8.96598 Tf 0 0 Td (cell-after-column-mar)Tj [-1 ]TJ (gin:)Tj /N81 9.96299 Tf 136.98599 0 Td (and)Tj /N177 8.96598 Tf -146.94799 -12.95098 Td (cell-before-column-margi)Tj [-1 ]TJ (n:)Tj /N81 9.96299 Tf 142.36599 0 Td (w)Tj [10 ]TJ (asn')Tj [18 ]TJ (t)Tj [-250 ]TJ (really)Tj [-250 ]TJ (w)Tj [10 ]TJ (orking.)Tj ET 1 0 0 1 -9.96199 -38.85398 cm 0 g 0 G BT /N81 7.96998 Tf 0 0 Td (\225)Tj ET 1 0 0 1 2.78898 0 cm 0 g 0 G 0 g 0 G 0 g 0 G 1 0 0 1 7.17298 0 cm BT /N81 9.96299 Tf 0 0 Td (Ro)Tj [25 ]TJ (w)Tj [-250 ]TJ (spanning)Tj [-250 ]TJ (w)Tj [10 ]TJ (as)Tj [-250 ]TJ (brok)Tj [10 ]TJ (en.)Tj [-250 ]TJ (This)Tj [-249 ]TJ (\002x)Tj [-250 ]TJ (only)Tj [-250 ]TJ (supports)Tj /N177 8.96598 Tf 199.62998 0 Td ('start)Tj /N81 9.96299 Tf 34.76998 0 Td (ro)Tj [25 ]TJ (w)Tj -244.36199 -12.95199 Td (alignment)Tj [-250 ]TJ (though.)Tj ET 1 0 0 1 -9.96199 -38.85398 cm 0 g 0 G BT /N81 7.96998 Tf 0 0 Td (\225)Tj ET 1 0 0 1 2.78898 0 cm 0 g 0 G 0 g 0 G 0 g 0 G 1 0 0 1 7.17298 0 cm BT /N81 9.96299 Tf 0 0 Td (P)Tj [15 ]TJ (aragraphs)Tj [-250 ]TJ (in)Tj [-250 ]TJ (cell)Tj [-250 ]TJ (spanning)Tj [-250 ]TJ (m)Tj [1 ]TJ (ultiple)Tj [-250 ]TJ (column)Tj [-250 ]TJ (are)Tj [-250 ]TJ (no)Tj [25 ]TJ (w)Tj [-250 ]TJ (w)Tj [10 ]TJ (orking.)Tj ET 1 0 0 1 -9.96199 -25.90299 cm 0 g 0 G BT /N81 7.96998 Tf 0 0 Td (\225)Tj ET 1 0 0 1 2.78898 0 cm 0 g 0 G 0 g 0 G 0 g 0 G 1 0 0 1 7.17298 0 cm BT /N81 9.96299 Tf 0 0 Td (Support)Tj [-250 ]TJ (for)Tj [-250 ]TJ (the)Tj /N177 8.96598 Tf 62.81399 0 Td (row-alignment:)Tj /N81 9.96299 Tf 77.80799 0 Td (characteristic.)Tj ET 1 0 0 1 -9.96199 -25.90299 cm 0 g 0 G BT /N81 7.96998 Tf 0 0 Td (\225)Tj ET 1 0 0 1 2.78898 0 cm 0 g 0 G 0 g 0 G 0 g 0 G 1 0 0 1 7.17298 0 cm BT /N81 9.96299 Tf 0 0 Td (Support)Tj [-250 ]TJ (for)Tj /N177 8.96598 Tf 48.14898 0 Td (cell-background?)Tj /N81 9.96299 Tf 88.56799 0 Td (and)Tj /N177 8.96598 Tf 16.87699 0 Td (background-color)Tj /N81 9.96299 Tf 88.56698 0 Td (properties)Tj ET 1 0 0 1 -126.52499 -16.33898 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -0.39799 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -12.17498 cm BT /N87 9.96299 Tf 0 0 Td (Item)Tj [-278 ]TJ (17)Tj [-7054 ]TJ (Suppo)Tj [1 ]TJ (r)Tj [-20 ]TJ (t)Tj [-278 ]TJ (f)Tj [20 ]TJ (or)Tj /N289 8.96598 Tf 161.61299 0 Td ('asis)Tj /N87 9.96299 Tf 29.66799 0 Td (and)Tj /N289 8.96598 Tf 20.48298 0 Td ('asis-wrap)Tj ET 1 0 0 1 0 -3.38699 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -12.17399 cm BT /N81 9.96299 Tf 0 0 Td (References)Tj [-6058 ]TJ (http:/)Tj [1 ]TJ (/iNde)Tj [25 ]TJ (v)Tj [65 ]TJ (.iNsu.COM/openjade/)Tj [-250 ]TJ (\(Francis)Tj [-250 ]TJ (J.)Tj [-250 ]TJ (Lacoste\))Tj 0 -15.16299 Td (Cate)Tj [15 ]TJ (gory)Tj [-6849 ]TJ (Softw)Tj [11 ]TJ (are)Tj [-250 ]TJ (Bug)Tj 0 -15.16398 Td (Problem)Tj [-7111 ]TJ (The)Tj /N177 8.96598 Tf 122.58999 0 Td (lines:)Tj /N81 9.96299 Tf 34.76899 0 Td (characteristic)Tj [-250 ]TJ (in)Tj [-250 ]TJ (the)Tj [-250 ]TJ (paragraph)Tj [-249 ]TJ (\003o)Tj [25 ]TJ (w)Tj [-250 ]TJ (object)Tj [-250 ]TJ (does)Tj [-250 ]TJ (not)Tj [-250 ]TJ (support)Tj [-250 ]TJ (the)Tj /N177 8.96598 Tf -52.75199 -12.95098 Td ('asis)Tj /N81 9.96299 Tf 29.38999 0 Td (and)Tj /N177 8.96598 Tf 16.87699 0 Td ('asis-wrap)Tj /N81 9.96299 Tf 56.28898 0 Td (v)Tj [25 ]TJ (alues.)Tj ET 1 0 0 1 -47.82099 -158.32699 cm 0 g 0 G 1 0 0 1 461.26998 0 cm BT /N117 9.96299 Tf 0 0 Td (9)Tj ET 1 0 0 1 4.98199 0 cm 0 g 0 G PDFVars/TermAll get exec end end userdict /pgsave get restore showpage %%PageTrailer %%EndPage %%Page: 16 16 %%BeginPageSetup userdict /pgsave save put PDFVars begin PDF begin PDFVars/InitAll get exec 1.14301 1.47949 translate %%EndPageSetup 0 0 609.71398 789.04098 RC 1 0 0 1 71.73098 729.26499 cm 0 g 0 G 1 0 0 1 0 3.58699 cm BT /N117 9.96299 Tf 0 0 Td (OpenJ)Tj [35 ]TJ (ade)Tj [-250 ]TJ (1.3.2)Tj [-250 ]TJ (Release)Tj [-250 ]TJ (Notes)Tj ET 1 0 0 1 466.25199 -3.58699 cm 0 g 0 G 1 0 0 1 -418.43099 -11.35699 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 0 -12.17399 cm BT /N87 9.96299 Tf 0 0 Td (Item)Tj [-278 ]TJ (17)Tj [-7054 ]TJ (Suppo)Tj [1 ]TJ (r)Tj [-20 ]TJ (t)Tj [-278 ]TJ (f)Tj [20 ]TJ (or)Tj /N289 8.96598 Tf 161.61299 0 Td ('asis)Tj /N87 9.96299 Tf 29.66899 0 Td (and)Tj /N289 8.96598 Tf 20.48298 0 Td ('asis-wrap)Tj /N81 9.96299 Tf -211.76499 -15.16398 Td (Resolution)Tj [-6416 ]TJ (This)Tj [-250 ]TJ (a)Tj [1 ]TJ (dds)Tj [-250 ]TJ (support)Tj [-250 ]TJ (for)Tj [-250 ]TJ (the)Tj /N177 8.96598 Tf 209.20399 0 Td ('asis)Tj /N81 9.96299 Tf 29.38999 0 Td (and)Tj /N177 8.96598 Tf 16.87699 0 Td ('asis-wrap)Tj /N81 9.96299 Tf 56.28898 0 Td (v)Tj [25 ]TJ (alues)Tj [-250 ]TJ (for)Tj [-250 ]TJ (the)Tj [-250 ]TJ (paragraph')Tj [55 ]TJ (s)Tj -207.15299 -12.95098 Td (lines:)Tj [-250 ]TJ (characteristic.)Tj ET 1 0 0 1 0 -31.50199 cm q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q q []0 d 0 J 0.39799 w 0 0.19898 m 418.43099 0.19898 l S Q 1 0 0 1 -47.82099 -42.57099 cm BT /N87 12.05499 Tf 0 0 Td (V)Tj [50 ]TJ (er)Tj [15 ]TJ (sion)Tj [-278 ]TJ (1.3)Tj /N90 9.96299 Tf 47.82099 -18.97799 Td (Released)Tj [-250 ]TJ (October)Tj [-250 ]TJ (1999.)Tj /N81 9.96299 Tf 102.375 0 Td (V)Tj [111 ]TJ (ersion)Tj [-250 ]TJ (1.3)Tj [-250 ]TJ (added)Tj [-250 ]TJ (man)Tj [15 ]TJ (y)Tj [-250 ]TJ (impro)Tj [15 ]TJ (v)Tj [15 ]TJ (e)Tj [1 ]TJ (ments)Tj [-250 ]TJ (to)Tj [-250 ]TJ (increase)Tj [-250 ]TJ (the)Tj [-250 ]TJ (scope)Tj [-250 ]TJ (of)Tj [-250 ]TJ (the)Tj -102.375 -12.95199 Td (implementation)Tj [-250 ]TJ (of)Tj [-250 ]TJ (DSSSL)Tj [1 ]TJ (.)Tj [-250 ]TJ (Changes)Tj [-250 ]TJ (include:)Tj ET 1 0 0 1 47.82099 -59.82499 cm 0 g 0 G BT /N81 7.96998 Tf 0 0 Td (\225)Tj ET 1 0 0 1 2.78898 0 cm 0 g 0 G 0 g 0 G 0 g 0 G 1 0 0 1 7.17298 0 cm BT /N81 9.96299 Tf 0 0 Td (The)Tj [-250 ]TJ (SGML)Tj [-250 ]TJ (back)Tj [10 ]TJ (end)Tj [-250 ]TJ (will)Tj [-250 ]TJ (no)Tj [25 ]TJ (w)Tj [-250 ]TJ (em)Tj [1 ]TJ (it)Tj [-250 ]TJ (linebreaks)Tj [-250 ]TJ (when)Tj [-250 ]TJ (used)Tj [-250 ]TJ (as)Tj /N177 8.96598 Tf 240.37699 0 Td (-t)Tj [-600 ]TJ (sgml-raw)Tj /N81 9.96299 Tf 59.17799 0 Td (.)Tj ET 1 0 0 1 -9.96199 -17.93299 cm 0 g 0 G BT /N81 7.96998 Tf 0 0 Td (\225)Tj ET 1 0 0 1 2.78898 0 cm 0 g 0 G 0 g 0 G 0 g 0 G 1 0 0 1 9.66398 0 cm BT /N81 9.96299 Tf 0 0 Td (Jade)Tj [-250 ]TJ (can)Tj [-250 ]TJ (bind)Tj [-250 ]TJ (v)Tj [25 ]TJ (ariables)Tj [-250 ]TJ (to)Tj [-250 ]TJ (ar)Tj [1 ]TJ (bitrary)Tj [-250 ]TJ (v)Tj [25 ]TJ (alues)Tj [-250 ]TJ (on)Tj [-250 ]TJ (the)Tj [-250 ]TJ (command)Tj [-250 ]TJ (line)Tj [-250 ]TJ (with)Tj [-250 ]TJ (the)Tj /N177 8.96598 Tf 290.85598 0 Td (-V)Tj /N81 9.96299 Tf 13.25 0 Td (option.)Tj ET 1 0 0 1 -12.45298 -17.93299 cm 0 g 0 G BT /N81 7.96998 Tf 0 0 Td (\225)Tj ET 1 0 0 1 2.78898 0 cm 0 g 0 G 0 g 0 G 0 g 0 G 1 0 0 1 9.66398 0 cm BT /N81 9.96299 Tf 0 0 Td (The)Tj /N177 8.96598 Tf 17.98199 0 Td (prlabs1)Tj /N81 9.96299 Tf 40.14999 0 Td (module)Tj [-250 ]TJ (of)Tj [-250 ]TJ (the)Tj [-250 ]TJ (SGML)Tj [-250 ]TJ (property)Tj [-249 ]TJ (set)Tj [-250 ]TJ (is)Tj [-250 ]TJ (supported.)Tj ET 1 0 0 1 -12.45298 -17.93299 cm 0 g 0 G BT /N81 7.96998 Tf 0 0 Td (\225)Tj ET 1 0 0 1 2.78898 0 cm 0 g 0 G 0 g 0 G 0 g 0 G 1 0 0 1 9.66398 0 cm BT /N81 9.96299 Tf 0 0 Td (Style)Tj [-250 ]TJ (sheet)Tj /N177 8.96598 Tf 45.93699 0 Td (extensions.dsl)Tj /N81 9.96299 Tf 77.80799 0 Td (lists)Tj [-250 ]TJ (all)Tj [-250 ]TJ (kno)Tj [25 ]TJ (wn)Tj [-250 ]TJ (e)Tj [15 ]TJ (xternal)Tj [-250 ]TJ (proce)Tj [1 ]TJ (dures)Tj [-250 ]TJ (ready)Tj [-250 ]TJ (for)Tj [-250 ]TJ (easy)Tj [-250 ]TJ (inclusion)Tj [-250 ]TJ (as)Tj [-250 ]TJ (an)Tj /N177 8.96598 Tf -126.23599 -12.95098 Td (external-specificati)Tj [-1 ]TJ (on)Tj /N81 9.96299 Tf 118.35598 0 Td (.)Tj ET 1 0 0 1 -12.45298 -30.88398 cm 0 g 0 G BT /N81 7.96998 Tf 0 0 Td (\225)Tj ET 1 0 0 1 2.78898 0 cm 0 g 0 G 0 g 0 G 0 g 0 G 1 0 0 1 9.66398 0 cm BT /N81 9.96299 Tf 0 0 Td (External)Tj [-250 ]TJ (procedure)Tj [-250 ]TJ (with)Tj [-250 ]TJ (publi)Tj [1 ]TJ (c)Tj [-250 ]TJ (identi\002er)Tj /N177 8.96598 Tf 8.26899 -16.63699 Td ("UNREGISTERED::OpenJad)Tj [-1 ]TJ (e//Procedure::expt")Tj /N81 9.96299 Tf -10.75999 -17.93299 Td (to)Tj [-250 ]TJ (pro)Tj [15 ]TJ (vide)Tj [-250 ]TJ (inte)Tj [15 ]TJ (gral)Tj [-250 ]TJ (po)Tj [25 ]TJ (wers)Tj [-250 ]TJ (of)Tj [-250 ]TJ (qua)Tj [1 ]TJ (ntities.)Tj ET 1 0 0 1 -12.45298 -52.50299 cm 0 g 0 G BT /N81 7.96998 Tf 0 0 Td (\225)Tj ET 1 0 0 1 2.78898 0 cm 0 g 0 G 0 g 0 G 0 g 0 G 1 0 0 1 9.66398 0 cm BT /N81 9.96299 Tf 0 0 Td (External)Tj [-250 ]TJ (procedure)Tj [-250 ]TJ (with)Tj [-250 ]TJ (publi)Tj [1 ]TJ (c)Tj [-250 ]TJ (identi\002er)Tj /N177 8.96598 Tf 8.26899 -16.63699 Td ("UNREGISTERED::OpenJad)Tj [-1 ]TJ (e//Procedure::sgml-parse")Tj /N81 9.96299 Tf -10.75999 -17.93299 Td (allo)Tj [25 ]TJ (ws)Tj [-250 ]TJ (to)Tj [-250 ]TJ (parse)Tj [-250 ]TJ (w)Tj [65 ]TJ (.r)Tj [55 ]TJ (.t.)Tj [-250 ]TJ (an)Tj [-250 ]TJ (archite)Tj [1 ]TJ (cture.)Tj ET 1 0 0 1 -12.45298 -52.50299 cm 0 g 0 G BT /N81 7.96998 Tf 0 0 Td (\225)Tj ET 1 0 0 1 2.78898 0 cm 0 g 0 G 0 g 0 G 0 g 0 G 1 0 0 1 9.66398 0 cm BT /N81 9.96299 Tf 0 0 Td (Jade)Tj [-250 ]TJ (supports)Tj /N177 8.96598 Tf 56.44799 0 Td (force!)Tj /N81 9.96299 Tf 34.76899 0 Td (for)Tj [-250 ]TJ (inherited)Tj [-250 ]TJ (characteristics)Tj [1 ]TJ (.)Tj ET 1 0 0 1 -12.45298 -17.93299 cm 0 g 0 G BT /N81 7.96998 Tf 0 0 Td (\225)Tj ET 1 0 0 1 2.78898 0 cm 0 g 0 G 0 g 0 G 0 g 0 G 1 0 0 1 9.66398 0 cm BT /N81 9.96299 Tf 0 0 Td (Jade)Tj [-250 ]TJ (supports)Tj [-250 ]TJ (character)Tj [-250 ]TJ (prope)Tj [1 ]TJ (rties.)Tj ET 1 0 0 1 -12.45298 -17.93199 cm 0 g 0 G BT /N81 7.96998 Tf 0 0 Td (\225)Tj ET 1 0 0 1 2.78898 0 cm 0 g 0 G 0 g 0 G 0 g 0 G 1 0 0 1 9.66398 0 cm BT /N81 9.96299 Tf 0 0 Td (Jade)Tj [-250 ]TJ (supports)Tj /N177 8.96598 Tf 56.44799 0 Td (special-query-expressio)Tj [-1 ]TJ (ns)Tj /N81 9.96299 Tf 134.49499 0 Td (.)Tj ET 1 0 0 1 -12.45298 -17.93299 cm 0 g 0 G BT /N81 7.96998 Tf 0 0 Td (\225)Tj ET 1 0 0 1 2.78898 0 cm 0 g 0 G 0 g 0 G 0 g 0 G 1 0 0 1 9.66398 0 cm BT /N81 9.96299 Tf 0 0 Td (Jade)Tj [-250 ]TJ (can)Tj [-250 ]TJ (bind)Tj [-250 ]TJ (v)Tj [25 ]TJ (ariables)Tj [-250 ]TJ (to)Tj [-250 ]TJ (st)Tj [1 ]TJ (ring)Tj [-250 ]TJ (v)Tj [25 ]TJ (alues)Tj [-250 ]TJ (on)Tj [-250 ]TJ (the)Tj [-250 ]TJ (command)Tj [-250 ]TJ (line.)Tj ET 1 0 0 1 -12.45298 -17.93299 cm 0 g 0 G BT /N81 7.96998 Tf 0 0 Td (\225)Tj ET 1 0 0 1 2.78898 0 cm 0 g 0 G 0 g 0 G 0 g 0 G 1 0 0 1 9.66398 0 cm BT /N81 9.96299 Tf 0 0 Td (All)Tj [-250 ]TJ (standard)Tj [-250 ]TJ (color)Tj [-250 ]TJ (spaces)Tj [-250 ]TJ (su)Tj [1 ]TJ (pported.)Tj ET 1 0 0 1 -12.45298 -17.93299 cm 0 g 0 G BT /N81 7.96998 Tf 0 0 Td (\225)Tj ET 1 0 0 1 2.78898 0 cm 0 g 0 G 0 g 0 G 0 g 0 G 1 0 0 1 9.66398 0 cm BT /N81 9.96299 Tf 0 0 Td (Jade)Tj [-250 ]TJ (ignores)Tj [-250 ]TJ (duplicate)Tj [-250 ]TJ (k)Tj [10 ]TJ (e)Tj [15 ]TJ (yw)Tj [10 ]TJ (or)Tj [1 ]TJ (ds)Tj [-250 ]TJ (in)Tj [-250 ]TJ (mak)Tj [10 ]TJ (e)Tj [-250 ]TJ (e)Tj [15 ]TJ (xpressions,)Tj [-250 ]TJ (as)Tj [-250 ]TJ (mandated)Tj [-250 ]TJ (by)Tj [-250 ]TJ (DSSSL.)Tj ET 1 0 0 1 -12.45298 -17.93199 cm 0 g 0 G BT /N81 7.96998 Tf 0 0 Td (\225)Tj ET 1 0 0 1 2.78898 0 cm 0 g 0 G 0 g 0 G 0 g 0 G 1 0 0 1 9.66398 0 cm BT /N81 9.96299 Tf 0 0 Td (External)Tj [-250 ]TJ (procedure)Tj [-250 ]TJ (with)Tj [-250 ]TJ (publi)Tj [1 ]TJ (c)Tj [-250 ]TJ (identi\002er)Tj /N177 8.96598 Tf 8.26899 -16.63798 Td ("UNREGISTERED::OpenJad)Tj [-1 ]TJ (e//Procedure::language")Tj /N81 9.96299 Tf -10.75999 -17.93299 Td (to)Tj [-250 ]TJ (create)Tj [-250 ]TJ (a)Tj [-250 ]TJ (language)Tj [-250 ]TJ (object)Tj [-250 ]TJ (by)Tj [-250 ]TJ (r)Tj [1 ]TJ (eference)Tj [-250 ]TJ (to)Tj [-250 ]TJ (a)Tj [-250 ]TJ (POSIX)Tj [-250 ]TJ (locale.)Tj ET 1 0 0 1 -12.45298 -52.50399 cm 0 g 0 G BT /N81 7.96998 Tf 0 0 Td (\225)Tj ET 1 0 0 1 2.78898 0 cm 0 g 0 G 0 g 0 G 0 g 0 G 1 0 0 1 9.66398 0 cm BT /N81 9.96299 Tf 0 0 Td (Language-dependent)Tj [-250 ]TJ (procedure)Tj [1 ]TJ (s)Tj [-250 ]TJ (of)Tj [-250 ]TJ (the)Tj [-250 ]TJ (e)Tj [15 ]TJ (xpression)Tj [-250 ]TJ (language:)Tj /N177 8.96598 Tf 243.86399 0 Td (language?,)Tj [-278 ]TJ (current-language,)Tj -246.35499 -12.95098 Td (declare-default-lang)Tj [-1 ]TJ (uage,)Tj [-277 ]TJ (with)Tj [-1 ]TJ (-language,)Tj [-278 ]TJ (define-language,)Tj [-278 ]TJ (char?,)Tj 0 -12.95098 Td (char<=?,)Tj [-278 ]TJ (char>=?,)Tj [-278 ]TJ (char-ci=?,)Tj [-278 ]TJ (char-ci?,)Tj [-278 ]TJ (char-ci<=?,)Tj [-278 ]TJ (char-ci<=?,)Tj 0 -12.95199 Td (char-upcase,)Tj [-278 ]TJ (char-downcase,)Tj [-278 ]TJ (string-ci=?,)Tj [-278 ]TJ (string-eq)Tj [-1 ]TJ (uiv?,)Tj [-277 ]TJ (stri)Tj [-1 ]TJ (ng?,)Tj 0 -12.95098 Td (string<=?,)Tj [-278 ]TJ (string>=?,)Tj [-278 ]TJ (string-ci?,)Tj [-278 ]TJ (string-ci<=?)Tj [-1 ]TJ (,)Tj [-277 ]TJ (string-c)Tj [-1 ]TJ (i>=?.)Tj ET 1 0 0 1 -60.27398 -173.22999 cm 0 g 0 G BT /N117 9.96299 Tf 0 0 Td (10)Tj ET 1 0 0 1 466.25199 0 cm 0 g 0 G PDFVars/TermAll get exec end end userdict /pgsave get restore showpage %%PageTrailer %%EndPage %%Page: 17 17 %%BeginPageSetup userdict /pgsave save put PDFVars begin PDF begin PDFVars/InitAll get exec 1.14301 1.47949 translate %%EndPageSetup 0 0 609.71398 789.04098 RC 1 0 0 1 71.73098 729.26499 cm 0 g 0 G 1 0 0 1 345.13699 3.58699 cm BT /N117 9.96299 Tf 0 0 Td (OpenJ)Tj [35 ]TJ (ade)Tj [-250 ]TJ (1.3.2)Tj [-250 ]TJ (Release)Tj [-250 ]TJ (Note)Tj [1 ]TJ (s)Tj ET 1 0 0 1 121.11499 -3.58699 cm 0 g 0 G 1 0 0 1 -418.43099 -20.92098 cm 0 g 0 G BT /N81 7.96998 Tf 0 0 Td (\225)Tj ET 1 0 0 1 2.78898 0 cm 0 g 0 G 0 g 0 G 0 g 0 G 1 0 0 1 9.66398 0 cm BT /N81 9.96299 Tf 0 0 Td (The)Tj [-250 ]TJ (style-sheet.dtd)Tj [-250 ]TJ (deri)Tj [25 ]TJ (v)Tj [15 ]TJ (ed)Tj [-250 ]TJ (fr)Tj [1 ]TJ (om)Tj [-250 ]TJ (the)Tj [-250 ]TJ (DSSSL)Tj [-250 ]TJ (architecture)Tj [-250 ]TJ (has)Tj [-250 ]TJ (been)Tj [-250 ]TJ (e)Tj [15 ]TJ (xtended)Tj [-250 ]TJ (\(in)Tj [-250 ]TJ (a)Tj [-250 ]TJ (backw)Tj [11 ]TJ (ard)Tj -2.49099 -12.95199 Td (compatible)Tj [-250 ]TJ (w)Tj [10 ]TJ (ay\))Tj [-250 ]TJ (to)Tj [-250 ]TJ (include)Tj [-250 ]TJ (the)Tj [-249 ]TJ (declaration)Tj [-250 ]TJ (element)Tj [-250 ]TJ (type)Tj [-250 ]TJ (forms)Tj [-250 ]TJ (supported)Tj [-250 ]TJ (by)Tj [-250 ]TJ (Jade.)Tj [-250 ]TJ (The)Tj [-250 ]TJ (p)Tj [1 ]TJ (ublic)Tj 0 -12.95098 Td (identi\002er)Tj [-250 ]TJ (for)Tj [-250 ]TJ (the)Tj [-250 ]TJ (dtd)Tj [-250 ]TJ (is)Tj /N177 8.96598 Tf 10.75999 -16.63798 Td ("-//OpenJade//DTD)Tj [-600 ]TJ (DSSS)Tj [-1 ]TJ (L)Tj [-600 ]TJ (Style)Tj [-600 ]TJ (Sheet//EN")Tj ET 1 0 0 1 -12.45298 -65.45498 cm 0 g 0 G BT /N81 7.96998 Tf 0 0 Td (\225)Tj ET 1 0 0 1 2.78898 0 cm 0 g 0 G 0 g 0 G 0 g 0 G 1 0 0 1 9.66398 0 cm BT /N177 8.96598 Tf 0 0 Td (char-repertoire)Tj /N81 9.96299 Tf 80.69699 0 Td (,)Tj /N177 8.96598 Tf 4.98199 0 Td (add-name-chars)Tj /N81 9.96299 Tf 77.80799 0 Td (and)Tj /N177 8.96598 Tf 16.87599 0 Td (add-separator-chars)Tj /N81 9.96299 Tf 104.70799 0 Td (declaration)Tj [-250 ]TJ (element)Tj [-250 ]TJ (type)Tj -287.56199 -12.95098 Td (forms)Tj [-250 ]TJ (are)Tj [-250 ]TJ (supported.)Tj [-250 ]TJ (When)Tj [-250 ]TJ (gi)Tj [25 ]TJ (v)Tj [15 ]TJ (en)Tj [-249 ]TJ (the)Tj /N177 8.96598 Tf 149.83699 0 Td (-s)Tj /N81 9.96299 Tf 13.25099 0 Td (command)Tj [-250 ]TJ (line)Tj [-250 ]TJ (\003ag,)Tj [-250 ]TJ (Jade)Tj [-250 ]TJ (doe)Tj [1 ]TJ (sn')Tj [18 ]TJ (t)Tj [-250 ]TJ (use)Tj [-250 ]TJ (its)Tj [-250 ]TJ (b)Tj [20 ]TJ (uilt)Tj [-250 ]TJ (in)Tj [-250 ]TJ (character)Tj -163.08799 -12.95199 Td (repertoire.)Tj ET 1 0 0 1 -12.45298 -43.83499 cm 0 g 0 G BT /N81 7.96998 Tf 0 0 Td (\225)Tj ET 1 0 0 1 2.78898 0 cm 0 g 0 G 0 g 0 G 0 g 0 G 1 0 0 1 9.66398 0 cm BT /N81 9.96299 Tf 0 0 Td (Most)Tj [-250 ]TJ (of)Tj [-250 ]TJ (the)Tj [-250 ]TJ (deri)Tj [25 ]TJ (v)Tj [15 ]TJ (ed)Tj [-250 ]TJ (procedures)Tj [-249 ]TJ (in)Tj [-250 ]TJ (the)Tj [-250 ]TJ (query)Tj [-250 ]TJ (language:)Tj /N177 8.96598 Tf 217.90098 0 Td (current-root)Tj /N81 9.96299 Tf 64.55799 0 Td (,)Tj /N177 8.96598 Tf 4.98098 0 Td (node-list-reduce)Tj /N81 9.96299 Tf 86.07699 0 Td (,)Tj /N177 8.96598 Tf -376.00799 -12.95199 Td (node-list-contains?)Tj /N81 9.96299 Tf 102.21699 0 Td (,)Tj /N177 8.96598 Tf 4.98098 0 Td (node-list-remove-dup)Tj [-1 ]TJ (licates)Tj /N81 9.96299 Tf 145.25498 0 Td (,)Tj /N177 8.96598 Tf 4.98199 0 Td (node-list-union)Tj /N81 9.96299 Tf 80.69699 0 Td (,)Tj /N177 8.96598 Tf -338.13198 -12.95098 Td (node-list-intersecti)Tj [-1 ]TJ (on)Tj /N81 9.96299 Tf 118.35598 0 Td (,)Tj /N177 8.96598 Tf 4.98199 0 Td (node-list-difference)Tj /N81 9.96299 Tf 107.59599 0 Td (,)Tj /N177 8.96598 Tf 4.98098 0 Td (node-list-symmetric-)Tj [-1 ]TJ (difference)Tj /N81 9.96299 Tf 161.39498 0 Td (,)Tj /N177 8.96598 Tf -397.30999 -12.95199 Td (node-list-union-map)Tj /N81 9.96299 Tf 102.21699 0 Td (,)Tj /N177 8.96598 Tf 4.98098 0 Td (node-list-some?)Tj /N81 9.96299 Tf 80.69799 0 Td (,)Tj /N177 8.96598 Tf 4.98098 0 Td (node-list-every?)Tj /N81 9.96299 Tf 86.07699 0 Td (,)Tj /N177 8.96598 Tf 4.98098 0 Td (node-list-filter)Tj /N81 9.96299 Tf 86.07699 0 Td (,)Tj /N177 8.96598 Tf -370.01199 -12.95098 Td (node-list->list)Tj /N81 9.96299 Tf 80.69799 0 Td (,)Tj /N177 8.96598 Tf 4.98098 0 Td (node-list-tail)Tj /N81 9.96299 Tf 75.31698 0 Td (,)Tj /N177 8.96598 Tf 4.98199 0 Td (node-list-head)Tj /N81 9.96299 Tf 75.31698 0 Td (,)Tj /N177 8.96598 Tf 4.98199 0 Td (node-list-sublist)Tj /N81 9.96299 Tf 91.45698 0 Td (,)Tj /N177 8.96598 Tf -337.73399 -12.95199 Td (node-list-count)Tj /N81 9.96299 Tf 80.69799 0 Td (,)Tj /N177 8.96598 Tf 4.98098 0 Td (node-list-last)Tj /N81 9.96299 Tf 75.31698 0 Td (,)Tj /N177 8.96598 Tf 4.98199 0 Td (node-list-property)Tj /N81 9.96299 Tf 96.83699 0 Td (,)Tj /N177 8.96598 Tf 4.98098 0 Td (origin)Tj /N81 9.96299 Tf 32.27899 0 Td (,)Tj /N177 8.96598 Tf -300.07499 -12.95098 Td (origin-to-subnode-re)Tj [-1 ]TJ (l)Tj /N81 9.96299 Tf 112.97698 0 Td (,)Tj /N177 8.96598 Tf 4.89799 0 Td (tree-root)Tj /N81 9.96299 Tf 48.41799 0 Td (,)Tj /N177 8.96598 Tf 4.89898 0 Td (grove-root)Tj /N81 9.96299 Tf 53.79798 0 Td (,)Tj /N177 8.96598 Tf 4.89799 0 Td (source)Tj /N81 9.96299 Tf 32.27899 0 Td (,)Tj /N177 8.96598 Tf 4.89898 0 Td (subtree)Tj /N81 9.96299 Tf 37.65798 0 Td (,)Tj /N177 8.96598 Tf 4.89898 0 Td (subgrove)Tj /N81 9.96299 Tf 43.03799 0 Td (,)Tj /N177 8.96598 Tf 4.89898 0 Td (ancestors)Tj /N81 9.96299 Tf 48.41799 0 Td (,)Tj /N177 8.96598 Tf -405.97799 -12.95098 Td (grove-root-path)Tj /N81 9.96299 Tf 80.69799 0 Td (,)Tj /N177 8.96598 Tf 4.98098 0 Td (rsiblings)Tj /N81 9.96299 Tf 48.41799 0 Td (,)Tj /N177 8.96598 Tf 4.98199 0 Td (ipreced)Tj /N81 9.96299 Tf 37.65798 0 Td (,)Tj /N177 8.96598 Tf 4.98199 0 Td (ifollow)Tj /N81 9.96299 Tf 37.65899 0 Td (,)Tj /N177 8.96598 Tf 4.98098 0 Td (grove-before?)Tj /N81 9.96299 Tf 69.93798 0 Td (,)Tj /N177 8.96598 Tf 4.98098 0 Td (sort-in-tree-order)Tj /N81 9.96299 Tf 96.83699 0 Td (,)Tj /N177 8.96598 Tf -396.11499 -12.95199 Td (tree-before?)Tj /N81 9.96299 Tf 64.55799 0 Td (,)Tj /N177 8.96598 Tf 4.98199 0 Td (tree-before)Tj /N81 9.96299 Tf 59.17799 0 Td (,)Tj /N177 8.96598 Tf 4.98098 0 Td (property-lookup)Tj /N81 9.96299 Tf 80.69699 0 Td (,)Tj /N177 8.96598 Tf 4.98199 0 Td (select-by-property)Tj /N81 9.96299 Tf 96.83599 0 Td (,)Tj /N177 8.96598 Tf -316.21299 -12.95098 Td (select-by-null-property)Tj /N81 9.96299 Tf 123.73498 0 Td (,)Tj /N177 8.96598 Tf 4.98199 0 Td (select-by-missing-prope)Tj [-1 ]TJ (rty)Tj /N81 9.96299 Tf 139.875 0 Td (,)Tj /N177 8.96598 Tf 4.98098 0 Td (attribute)Tj /N81 9.96299 Tf 48.41899 0 Td (,)Tj /N177 8.96598 Tf 4.98098 0 Td (referent)Tj /N81 9.96299 Tf 43.03898 0 Td (,)Tj /N177 8.96598 Tf -370.01199 -12.95199 Td (q-element)Tj /N81 9.96299 Tf 48.41799 0 Td (,)Tj /N177 8.96598 Tf 4.98098 0 Td (q-class)Tj /N81 9.96299 Tf 37.65899 0 Td (,)Tj /N177 8.96598 Tf 4.98098 0 Td (q-sdata)Tj /N81 9.96299 Tf 37.65899 0 Td (.)Tj /N87 12.05499 Tf -191.48199 -40.57798 Td (V)Tj [50 ]TJ (er)Tj [15 ]TJ (sion)Tj [-278 ]TJ (1.2.2)Tj /N90 9.96299 Tf 47.82099 -18.97799 Td (Released)Tj [-250 ]TJ (J)Tj [15 ]TJ (une)Tj [-250 ]TJ (1999.)Tj /N81 9.96299 Tf 87.84999 0 Td (The)Tj [-250 ]TJ (\002rst)Tj [-250 ]TJ (release)Tj [-250 ]TJ (of)Tj [-250 ]TJ (OpenJad)Tj [1 ]TJ (e.)Tj -87.84999 -17.93299 Td (Changes)Tj [-250 ]TJ (in)Tj [-250 ]TJ (OpenJade)Tj [-250 ]TJ (1.2.2)Tj ET 1 0 0 1 -12.45298 -234.89999 cm 0 g 0 G BT /N81 7.96998 Tf 0 0 Td (\225)Tj ET 1 0 0 1 2.78898 0 cm 0 g 0 G 0 g 0 G 0 g 0 G 1 0 0 1 9.66398 0 cm BT /N81 9.96299 Tf 0 0 Td (The)Tj [-250 ]TJ (HTML)Tj [-250 ]TJ (and)Tj [-250 ]TJ (MIF)Tj [-250 ]TJ (back)Tj [10 ]TJ (ends)Tj [-249 ]TJ (are)Tj [-250 ]TJ (no)Tj [25 ]TJ (w)Tj [-250 ]TJ (enabled)Tj [-250 ]TJ (by)Tj [-250 ]TJ (def)Tj [10 ]TJ (ault.)Tj ET 1 0 0 1 -12.45298 -17.93199 cm 0 g 0 G BT /N81 7.96998 Tf 0 0 Td (\225)Tj ET 1 0 0 1 2.78898 0 cm 0 g 0 G 0 g 0 G 0 g 0 G 1 0 0 1 9.66398 0 cm BT /N81 9.96299 Tf 0 0 Td (The)Tj [-250 ]TJ (T)Tj [70 ]TJ (eX)Tj [-250 ]TJ (back)Tj [10 ]TJ (end)Tj [-250 ]TJ (has)Tj [-250 ]TJ (support)Tj [-250 ]TJ (fo)Tj [1 ]TJ (r)Tj [-250 ]TJ (PDF)Tj [-250 ]TJ (bookmarks.)Tj [-250 ]TJ (This)Tj [-250 ]TJ (is)Tj [-250 ]TJ (supported)Tj [-250 ]TJ (by)Tj [-250 ]TJ (the)Tj [-250 ]TJ (ne)Tj [25 ]TJ (w)Tj [-250 ]TJ (v)Tj [15 ]TJ (ersion)Tj [-250 ]TJ (of)Tj [-250 ]TJ (ja)Tj [1 ]TJ (dete)Tj [15 ]TJ (x)Tj -2.49099 -12.95199 Td (which)Tj [-250 ]TJ (is)Tj [-250 ]TJ (included.)Tj ET 1 0 0 1 -12.45298 -30.88499 cm 0 g 0 G BT /N81 7.96998 Tf 0 0 Td (\225)Tj ET 1 0 0 1 2.78898 0 cm 0 g 0 G 0 g 0 G 0 g 0 G 1 0 0 1 9.66398 0 cm BT /N81 9.96299 Tf 0 0 Td (Prede\002ned)Tj [-250 ]TJ (character)Tj [-250 ]TJ (names)Tj /N177 8.96598 Tf 112.03898 0 Td (line-feed)Tj /N81 9.96299 Tf 50.90899 0 Td (and)Tj /N177 8.96598 Tf 16.87599 0 Td (carriage-return)Tj /N81 9.96299 Tf 83.18798 0 Td (for)Tj [-250 ]TJ (the)Tj [-250 ]TJ (character)Tj [-250 ]TJ (numbers)Tj [-250 ]TJ (10)Tj [-250 ]TJ (an)Tj [1 ]TJ (d)Tj -265.50299 -12.95098 Td (13.)Tj ET 1 0 0 1 -12.45298 -30.88398 cm 0 g 0 G BT /N81 7.96998 Tf 0 0 Td (\225)Tj ET 1 0 0 1 2.78898 0 cm 0 g 0 G 0 g 0 G 0 g 0 G 1 0 0 1 9.66398 0 cm BT /N81 9.96299 Tf 0 0 Td (standard-chars)Tj [-250 ]TJ (and)Tj [-250 ]TJ (map-sdat)Tj [1 ]TJ (a-entity)Tj [-250 ]TJ (declaration)Tj [-250 ]TJ (element)Tj [-250 ]TJ (type)Tj [-250 ]TJ (forms)Tj [-250 ]TJ (are)Tj [-250 ]TJ (supported.)Tj ET 1 0 0 1 -12.45298 -17.93199 cm 0 g 0 G BT /N81 7.96998 Tf 0 0 Td (\225)Tj ET 1 0 0 1 2.78898 0 cm 0 g 0 G 0 g 0 G 0 g 0 G 1 0 0 1 9.66398 0 cm BT /N81 9.96299 Tf 0 0 Td (Style)Tj [-250 ]TJ (language)Tj [-250 ]TJ (additions:)Tj [-250 ]TJ (m)Tj [1 ]TJ (ap-constructor)Tj [55 ]TJ (.)Tj ET 1 0 0 1 -12.45298 -17.93299 cm 0 g 0 G BT /N81 7.96998 Tf 0 0 Td (\225)Tj ET 1 0 0 1 2.78898 0 cm 0 g 0 G 0 g 0 G 0 g 0 G 1 0 0 1 9.66398 0 cm BT /N177 8.96598 Tf 0 0 Td (+)Tj /N81 9.96299 Tf 7.86999 0 Td (and)Tj /N177 8.96598 Tf 16.87699 0 Td (-)Tj /N81 9.96299 Tf 7.87098 0 Td (return)Tj [-250 ]TJ (a)Tj /N177 8.96598 Tf 33.19499 0 Td (length-spec)Tj /N81 9.96299 Tf 61.66799 0 Td (if)Tj [-250 ]TJ (an)Tj [15 ]TJ (y)Tj [-250 ]TJ (of)Tj [-250 ]TJ (there)Tj [-250 ]TJ (ar)Tj [18 ]TJ (guments)Tj [-250 ]TJ (is)Tj [-250 ]TJ (a)Tj /N177 8.96598 Tf 118.36599 0 Td (length-spec)Tj /N81 9.96299 Tf 59.17799 0 Td (.)Tj ET 1 0 0 1 -12.45298 -17.93299 cm 0 g 0 G BT /N81 7.96998 Tf 0 0 Td (\225)Tj ET 1 0 0 1 2.78898 0 cm 0 g 0 G 0 g 0 G 0 g 0 G 1 0 0 1 9.66398 0 cm BT /N81 9.96299 Tf 0 0 Td (Most)Tj [-250 ]TJ (of)Tj [-250 ]TJ (the)Tj [-250 ]TJ (DSSSL)Tj [-250 ]TJ (non-core)Tj [-250 ]TJ (e)Tj [16 ]TJ (xpression)Tj [-250 ]TJ (language:)Tj /N177 8.96598 Tf 204.88999 0 Td (c...r)Tj /N81 9.96299 Tf 26.89898 0 Td (,)Tj /N177 8.96598 Tf 4.98098 0 Td (assoc)Tj /N81 9.96299 Tf 26.89898 0 Td (,)Tj /N177 8.96598 Tf 4.98199 0 Td (keyword->string)Tj /N81 9.96299 Tf 80.69699 0 Td (,)Tj /N177 8.96598 Tf -351.83898 -12.95098 Td (string->keyword)Tj /N81 9.96299 Tf 80.69799 0 Td (,)Tj /N177 8.96598 Tf 4.98098 0 Td (exact?)Tj /N81 9.96299 Tf 32.27899 0 Td (,)Tj /N177 8.96598 Tf 4.98098 0 Td (inexact?)Tj /N81 9.96299 Tf 43.03898 0 Td (,)Tj /N177 8.96598 Tf 4.98098 0 Td (zero?)Tj /N81 9.96299 Tf 26.89898 0 Td (,)Tj /N177 8.96598 Tf 4.98199 0 Td (positive?)Tj /N81 9.96299 Tf 48.41799 0 Td (,)Tj /N177 8.96598 Tf 4.98098 0 Td (negative?)Tj /N81 9.96299 Tf 48.41899 0 Td (,)Tj /N177 8.96598 Tf 4.98098 0 Td (odd?)Tj /N81 9.96299 Tf 21.51899 0 Td (,)Tj /N177 8.96598 Tf 4.98199 0 Td (even?)Tj /N81 9.96299 Tf 26.89898 0 Td (,)Tj /N177 8.96598 Tf 4.98098 0 Td (exp)Tj /N81 9.96299 Tf 16.13899 0 Td (,)Tj /N177 8.96598 Tf 4.98199 0 Td (log)Tj /N81 9.96299 Tf 16.13899 0 Td (,)Tj /N177 8.96598 Tf -405.27999 -12.95199 Td (sin)Tj /N81 9.96299 Tf 16.13999 0 Td (,)Tj /N177 8.96598 Tf 4.98098 0 Td (cos)Tj /N81 9.96299 Tf 16.13999 0 Td (,)Tj /N177 8.96598 Tf 4.98098 0 Td (tan)Tj /N81 9.96299 Tf 16.13899 0 Td (,)Tj /N177 8.96598 Tf 4.98199 0 Td (asin)Tj /N81 9.96299 Tf 21.51899 0 Td (,)Tj /N177 8.96598 Tf 4.98098 0 Td (acos)Tj /N81 9.96299 Tf 21.51998 0 Td (,)Tj /N177 8.96598 Tf 4.98098 0 Td (atan)Tj /N81 9.96299 Tf 21.51899 0 Td (,)Tj /N177 8.96598 Tf 4.98199 0 Td (expt)Tj /N81 9.96299 Tf 21.51899 0 Td (,)Tj /N177 8.96598 Tf 4.98098 0 Td (exact->inexact)Tj /N81 9.96299 Tf 75.31799 0 Td (,)Tj /N177 8.96598 Tf 4.98098 0 Td (inexact->exact)Tj /N81 9.96299 Tf 75.31698 0 Td (,)Tj /N177 8.96598 Tf -324.98098 -12.95098 Td (quantity->number)Tj /N81 9.96299 Tf 86.07798 0 Td (,)Tj /N177 8.96598 Tf 4.96699 0 Td (string->list)Tj /N81 9.96299 Tf 64.55799 0 Td (,)Tj /N177 8.96598 Tf 4.96699 0 Td (list->string)Tj /N81 9.96299 Tf 64.55799 0 Td (,)Tj /N177 8.96598 Tf 4.96699 0 Td (map)Tj /N81 9.96299 Tf 16.13899 0 Td (,)Tj /N177 8.96598 Tf 4.96699 0 Td (time?)Tj /N81 9.96299 Tf 32.27899 0 Td (,)Tj /N177 8.96598 Tf 4.96699 0 Td (time<=?)Tj /N81 9.96299 Tf 37.65899 0 Td (,)Tj /N177 8.96598 Tf 4.96699 0 Td (time>=?)Tj /N81 9.96299 Tf 37.65899 0 Td (.)Tj ET 1 0 0 1 -60.27398 -181.83799 cm 0 g 0 G 1 0 0 1 456.28898 0 cm BT /N117 9.96299 Tf 0 0 Td (11)Tj ET 1 0 0 1 9.96299 0 cm 0 g 0 G PDFVars/TermAll get exec end end userdict /pgsave get restore showpage %%PageTrailer %%EndPage %%Page: 18 18 %%BeginPageSetup userdict /pgsave save put PDFVars begin PDF begin PDFVars/InitAll get exec 1.14301 1.47949 translate %%EndPageSetup 0 0 609.71398 789.04098 RC 1 0 0 1 71.73098 729.26499 cm 0 g 0 G 1 0 0 1 0 3.58699 cm BT /N117 9.96299 Tf 0 0 Td (OpenJ)Tj [35 ]TJ (ade)Tj [-250 ]TJ (1.3.2)Tj [-250 ]TJ (Release)Tj [-250 ]TJ (Notes)Tj ET 1 0 0 1 466.25199 -3.58699 cm 0 g 0 G 1 0 0 1 -466.25199 -20.92098 cm BT /N87 12.05499 Tf 0 0 Td (Jade)Tj [-278 ]TJ (V)Tj [50 ]TJ (er)Tj [15 ]TJ (sion)Tj [-278 ]TJ (1.2.1)Tj /N90 9.96299 Tf 47.82099 -18.97898 Td (Released)Tj [-243 ]TJ (October)Tj [-243 ]TJ (199)Tj [1 ]TJ (8.)Tj /N81 9.96299 Tf 102.16499 0 Td (Jade)Tj [-243 ]TJ (1.2.1)Tj [-243 ]TJ (w)Tj [10 ]TJ (as)Tj [-243 ]TJ (the)Tj [-243 ]TJ (\002)Tj [1 ]TJ (nal)Tj [-243 ]TJ (release)Tj [-243 ]TJ (of)Tj [-243 ]TJ (jade)Tj [-243 ]TJ (from)Tj [-243 ]TJ (James)Tj [-243 ]TJ (Clark.)Tj [-243 ]TJ (Ope)Tj [1 ]TJ (nJade)Tj [-243 ]TJ (is)Tj [-243 ]TJ (based)Tj [-243 ]TJ (on)Tj -102.16499 -12.95199 Td (this)Tj [-250 ]TJ (code)Tj [-250 ]TJ (base.)Tj ET 1 0 0 1 0 -659.52699 cm 0 g 0 G BT /N117 9.96299 Tf 0 0 Td (12)Tj ET 1 0 0 1 466.25199 0 cm 0 g 0 G PDFVars/TermAll get exec end end userdict /pgsave get restore showpage %%PageTrailer %%EndPage %%Trailer %%DocumentProcessColors: Cyan Magenta Yellow Black %%DocumentNeededResources: %%+ font Courier-Oblique %%+ font Times-Roman %%+ font Courier-Bold %%+ font Times-Bold %%+ font Helvetica-Bold %%+ font Times-Italic %%+ font Courier %%EOF openjade-1.3.2/releasenotes.html0100664000076400007640000014162207572433035015012 0ustar ianianOpenJade 1.3.2

Chapter 1. OpenJade 1.3.2 Release Notes

OpenJade is a suite of tools for validating, processing and applying DSSSL (Document Style Semantics and Specification Language) style sheets to SGML and XML documents.

OpenJade is a project undertaken by the DSSSL community to maintain and extend James Clark's Jade, as well as the related SP suite of SGML/XML processing tools. OpenJade and OpenSP are distributed under the same license as Jade.

Arch.OSCompilerNotes
alphaDebian 3.0GNU gcc 3.2 
armDebian 3.0GNU gcc 3.2 
hppaDebian 3.0GNU gcc 3.2 
i386Debian 3.0GNU gcc 3.2 
Red Hat Linux 7.3Red Hat gcc 2.96 
Red Hat Linux 7.3GNU gcc 3.2 
SuSE Linux 8.1GNU gcc 3.2 
ia64Debian 3.0GNU gcc 3.2 
m68kDebian 3.0GNU gcc 3.2 
mips, mipselDebian 3.0GNU gcc 3.2 
powerpcDebian 3.0GNU gcc 3.2 
s390Debian 3.0GNU gcc 3.2 
sparcDebian 3.0GNU gcc 3.2 

Please report any successful builds not mentioned above to , including any diffs/patches you have used.


Building OpenJade from Source

OpenJade requires 40Mb to 50Mb of disk space to build. An installation will require around 15Mb to 20Mb depending on architecture.

OpenJade makes use of the GNU software configuration tools (autoconf, libtool, automake etc). The GNU C++ compiler and make utility should also be used. The steps required to build the OpenJade tools (onsgmls, openjade, osgmlnorm, ospam, ospent, osx) and libraries are as follows:

gzip -d openjade-1.3.2.tar.gz | tar xvf -
cd openjade-1.3.2
./configure [options…]
make
You may need to switch to the super user root to complete the installation

make install
If you wish to install man pages for the various commands you should then do

make install-man
The configure script supports many options. These can be displayed using the command

./configure --help
In addition to the standard options, the following table describes options specific to openjade.

Please refer to the system documentation for details on building on the Win32 platform.


Version 1.3.2


Version 1.3.1

The following table details the major improvements in Openjade 1.3.1

Table 1-4. Changes for release 1.3.1

Item 1Support for MacOS X/ Darwin

References

Fink Project; Kogulé, Ryo

Category

Software Bug

Problem

OpenJade 1.3 does not build and run on the Mac OS X/Darwin platform

Resolution

OpenJade 1.3.1 has been enhanced to support Mac OS X/Darwin 1.4. The autoconf configuration system has been upgraded and also includes specific platform support. Some minor code alterations to improve code portability (C++ style changes). Note that the POSIX locale feature is not available on this platform.

Item 2UNIX on-line manual pages

References

None

Category

Documentation Bug

Problem

No on-line manual (man) pages available on UNIX platforms

Resolution

OpenJade 1.3.1 now has a man page for every command. Additionally, if OpenJade is used as a replacement for Jade, then compatibility man pages are included (i.e. man jade is synonymous with man openjade).

Item 3Upgrade GNU source configuration tools

References

Various sourceforge problem reports, SuSE Linux 7.3, Red Hat 7.2, Red Hat Bugzilla #46212

Category

Software Bug

Problem

The source configuration system is based on old versions of libtool and autoconf. In addition, there are problems with the generated Makefile files such that installation directories are not created.

Resolution

Upgraded to autoconf 2.52 and libtool 1.4. Upgraded the various support files. Included elements of automake support. Made the Makefiles more robust. These changes should facilitate porting to new/updated environments (i.e. those supported by newer versions of autoconf). Work has been done to enhance some of the custom autoconf tests to improve reliability.

Item 4Support for XML Byte Order Marks (BOM)

References

Source Forge bug #442560 (Terje Bless/Liam Quinn)

Category

Software Bug

Problem

Since OpenJade 1.3 was released, a second edition of the XML 1.0 specification has been released (REC-xml-20001006). This specification introduced the concept of Byte Order Marks to increase the sophistication of the detection of the character encoding system. OpenJade 1.3 would not recognize these, and rejected any XML file which included these as invalid.

Resolution

XML 1.0 Byte Order Marks are now accepted as valid XML.

Item 5Fix missing white space problem in processing instruction flow object

References

Source Forge Ref #505113, #505124 (Markus Hoenicka)

Category

Software Bug

Problem

No white space was emitted between the public-id and the system-id causing a malformed XML file to be generated.

Resolution

Fixed OpenJade to output a space between the public-id and the system-id.

Item 6Jadetex is now distributed independently

References

None

Category

Software Bug

Problem

OpenJade 1.3 shipped with Jadetex 2.7. Jadetex is developed and released separately from OpenJade.

Resolution

Removed jadetex files. Jadetex can be obtained from http://jadetex.sourceforge.net

Item 7Support for FreeBSD 4.4

References

FreeBSD 4.4 openjade port

Category

Software Bug

Problem

OpenJade 1.3 would not build on FreeBSD 4.x

Resolution

The source configuration system has been enhanced to support FreeBSD out of the box. Note that the POSIX locale feature of OpenJade is not available under FreeBSD.

Item 8Allow non alpha numeric characters in Table of Contents

References

Red Hat Bugzilla #31525

Category

Software Bug

Problem

Certain non alpha-numeric characters (such as $) do not appear correctly in the table of contents. This problem is confined to the TeX backend.

Resolution

Special characters are now correctly escaped in the TeX output file.

Item 9Support for latest Win32 build environments

References

None

Category

Software Bug

Problem

OpenJade 1.3 does not build with Visual C++ 6.0

Resolution

Fix C++ style to be compatible with Visual C++. Update build environment. OpenJade 1.3.1 should run in all Windows 32 environments from Windows 95 through Windows NT to Windows XP.

Item 10Enhancements for Software Packaging

References

SuSE Linux 7.3

Category

Software Bug

Problem

Numerous patches need to be applied to OpenJade 1.3 to enable packages to be built (RPM)

Resolution

Enhance Makefiles to ensure that packages are easy to build (including addition of DESTDIR environment variable). It should now be possible to build RPM packages and BSD ports without resorting to patches.

Item 11Support for newer GNU C++ compilers

References

SuSE Linux 7.3 (Andreas Schwab), Red Hat Linux 7.2, Connectiva Linux

Category

Software Bug

Problem

C++ is a shifting target. New compilers/standards demand changes.

Resolution

Various enhancements to allow OpenJade to build with the new GNU GCC 3.0 and the soon to be released GNU GCC 3.1 c++ compilers

Item 12Support for jadetex 3.4 and greater macros for two sided support

References

Sourceforge patch #439755, http://iNdev.iNsu.COM/openjade/ (Francis J. Lacoste)

Category

Software Bug

Problem

Two Sided output support with the TeX backend is unreliable in OpenJade 1.3 and Jadetex 2.x.

Resolution

Enhance the TeX backend two sided output support and bring into line with advances in the jadetex latex front end. Two extension characteristics are introduced to allow control of two-side and two-side-start-on-right. This also fixes the "blank page at the end of the document" problem. The following new characteristics are available:


  "UNREGISTERED::OpenJade//Characteristic::page-two-side?"

  "UNREGISTERED::OpenJade//Characteristic::two-side-start-on-right?"

Item 13Prevent incorrect generation of ligatures in the TeX Backend

References

Red Hat Bugzilla #11497, #11779

Category

Software Bug

Problem

Certain sequences of characters (such as --) are not correctly escaped in the TeX backend, so that TeX incorrectly creates ligatures out of them (so that -- becomes an em dash —).

Resolution

OpenJade 1.3.1 now correctly escapes these character sequences. This is a particular problem when representing program code where sequences such as -- are often operators.

Item 14Improved time string handling

References

http://iNdev.iNsu.COM/openjade/ (Francis J. Lacoste)

Category

Software Bug

Problem

OpenJade 1.3 does not support the (time<=?) comparison

Resolution

Various bugs fixed in the time string support of OpenJade. It is now possible to compare time, date and datetime. Also partial formats (such as YY-MM-DD, YYYY-MM or HH:MM) are now supported

Item 15Improvements in handling sosofo-append

References

http://iNdev.iNsu.COM/openjade/ (Francis J. Lacoste)

Category

Software Bug

Problem

sosofo-append has problems with memory/stack usage when handling large lists of sosofo

Resolution

The fix optimizes sosofo-append to reduce its memory and stack usage when using it to build long list of sosofo :


    (let loop ( (res (empty-sosofo))
        (nl  (node-list-rest (children (current-node)))))
	    (loop (sosofo-append res (process-node-list
        (node-list-first nl)))
            (node-list-rest nl)))

Item 16Improved Table handling in TeX Backend

References

http://iNdev.iNsu.COM/openjade/ (Francis J. Lacoste)

Category

Software Bug

Problem

Table handling in the TeX backend has numerous problems.

Resolution

Support for tables in the TeX backend has been improved with:

  • Support for nested tables.

  • cell-after-column-margin: and cell-before-column-margin: wasn't really working.

  • Row spanning was broken. This fix only supports 'start row alignment though.

  • Paragraphs in cell spanning multiple column are now working.

  • Support for the row-alignment: characteristic.

  • Support for cell-background? and background-color properties

Item 17Support for 'asis and 'asis-wrap

References

http://iNdev.iNsu.COM/openjade/ (Francis J. Lacoste)

Category

Software Bug

Problem

The lines: characteristic in the paragraph flow object does not support the 'asis and 'asis-wrap values.

Resolution

This adds support for the 'asis and 'asis-wrap values for the paragraph's lines: characteristic.


Version 1.3